:root{--primary: #2563EB;--primary-light: #3B82F6;--primary-dark: #1D4ED8;--accent: #0EA5E9;--success: #10B981;--danger: #EF4444;--warning: #F59E0B;--gray-50: #F8FAFC;--gray-100: #F1F5F9;--gray-200: #E2E8F0;--gray-300: #CBD5E1;--gray-400: #94A3B8;--gray-500: #64748B;--gray-600: #475569;--gray-700: #334155;--gray-800: #1E293B;--gray-900: #0F172A;--radius: 10px;--shadow-sm: 0 1px 3px rgba(0,0,0,.06);--shadow: 0 4px 12px rgba(0,0,0,.08);--shadow-lg: 0 8px 30px rgba(0,0,0,.12)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;background:var(--gray-50);color:var(--gray-800);line-height:1.6}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}button{cursor:pointer;font-family:inherit}input,select,textarea{font-family:inherit;font-size:14px}.auth-page{display:flex;align-items:center;justify-content:center;min-height:100vh;background:linear-gradient(135deg,#eef2ff,#e0f2fe,#f0fdf4)}.auth-card{background:#fff;border-radius:16px;padding:48px 40px;width:420px;box-shadow:var(--shadow-lg)}.auth-card .logo{text-align:center;margin-bottom:32px}.auth-card .logo h1{font-size:28px;color:var(--primary);font-weight:700;display:flex;align-items:center;justify-content:center;gap:8px}.auth-card .logo p{color:var(--gray-500);font-size:14px;margin-top:4px}.form-group{margin-bottom:20px}.form-group label{display:block;font-size:13px;font-weight:600;color:var(--gray-700);margin-bottom:6px}.form-group input,.form-group select{width:100%;padding:10px 14px;border:1.5px solid var(--gray-200);border-radius:8px;font-size:14px;transition:border-color .2s;background:var(--gray-50)}.form-group input:focus,.form-group select:focus{outline:none;border-color:var(--primary);background:#fff}.input-with-btn{display:flex;gap:10px}.input-with-btn input{flex:1}.input-with-btn button{white-space:nowrap;padding:10px 16px;border:none;background:var(--primary);color:#fff;border-radius:8px;font-size:13px;font-weight:500}.input-with-btn button:disabled{background:var(--gray-300);cursor:not-allowed}.btn-primary{width:100%;padding:12px;border:none;background:var(--primary);color:#fff;border-radius:8px;font-size:15px;font-weight:600;transition:background .2s}.btn-primary:hover{background:var(--primary-dark)}.btn-primary:disabled{background:var(--gray-300);cursor:not-allowed}.auth-footer{text-align:center;margin-top:20px;font-size:13px;color:var(--gray-500)}.auth-footer a{color:var(--primary);font-weight:500;cursor:pointer}.login-tabs{display:flex;border-bottom:2px solid var(--gray-100);margin-bottom:24px;position:relative}.login-tab{flex:1;text-align:center;padding:10px 0;font-size:14px;font-weight:500;color:var(--gray-400);cursor:pointer;position:relative;transition:color .25s;background:none;border:none;outline:none}.login-tab:hover{color:var(--gray-600)}.login-tab.active{color:var(--primary);font-weight:600}.login-panel{display:none}.login-panel.active{display:block}.agreement-row{display:flex;align-items:flex-start;gap:8px;margin-bottom:20px;font-size:12px;color:var(--gray-500)}.agreement-row input[type=checkbox]{margin-top:2px;flex-shrink:0;accent-color:var(--primary)}.agreement-row a{font-size:12px}.login-tab.active:after{content:"";position:absolute;bottom:-2px;left:20%;right:20%;height:2px;background:var(--primary);border-radius:1px}.steps{display:flex;align-items:center;justify-content:center;gap:8px;margin-bottom:24px}.step-item{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--gray-400)}.step-item .dot{width:22px;height:22px;border-radius:50%;background:var(--gray-100);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600}.step-item.active{color:var(--primary)}.step-item.active .dot{background:var(--primary);color:#fff}.step-item.done .dot{background:var(--success);color:#fff}.step-line{width:40px;height:2px;background:var(--gray-200)}.waiting-page{display:flex;align-items:center;justify-content:center;min-height:100vh;background:linear-gradient(135deg,#eef2ff,#e0f2fe,#f0fdf4)}.waiting-card{background:#fff;border-radius:16px;padding:60px 48px;width:520px;box-shadow:var(--shadow-lg);text-align:center}.waiting-card .icon{font-size:64px;margin-bottom:24px}.waiting-card h2{font-size:22px;color:var(--gray-800);margin-bottom:12px}.waiting-card p{color:var(--gray-500);font-size:14px;line-height:1.8;margin-bottom:24px}.waiting-card .btn-back{display:inline-block;padding:10px 28px;background:var(--gray-100);color:var(--gray-600);border:none;border-radius:8px;font-size:14px}.waiting-card .btn-back:hover{background:var(--gray-200)}.slider-captcha{-webkit-user-select:none;user-select:none}.slider-track{position:relative;height:40px;background:var(--gray-100);border-radius:8px;overflow:hidden;border:1px solid var(--gray-200)}.slider-fill{position:absolute;top:0;left:0;height:100%;width:0;background:linear-gradient(90deg,#d1fae5,#a7f3d0);border-radius:8px 0 0 8px;transition:width .05s}.slider-text{position:absolute;top:0;left:0;right:0;height:100%;display:flex;align-items:center;justify-content:center;font-size:13px;color:var(--gray-400);pointer-events:none;z-index:1}.slider-thumb{position:absolute;top:3px;left:3px;width:34px;height:34px;background:#fff;border:1.5px solid var(--gray-300);border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:14px;color:var(--gray-400);cursor:grab;z-index:2;box-shadow:0 1px 4px #0000001a;transition:box-shadow .15s}.slider-thumb.dragging{cursor:grabbing}.slider-track.verified .slider-fill{background:linear-gradient(90deg,#d1fae5,#6ee7b7)}.slider-track.verified .slider-text{color:#065f46;font-weight:600}.slider-track.verified .slider-thumb{background:#10b981;color:#fff;border-color:#10b981}.app-layout{display:flex;min-height:100vh}.app-sidebar{width:220px;background:#fff;border-right:1px solid var(--gray-200);padding:24px 0;flex-shrink:0;position:fixed;top:0;left:0;bottom:0;z-index:10}.app-sidebar .brand{padding:0 20px 24px;border-bottom:1px solid var(--gray-100)}.app-sidebar .brand h2{font-size:18px;color:var(--primary);display:flex;align-items:center;gap:8px}.app-sidebar .brand span{font-size:12px;color:var(--gray-400)}.sidebar-nav{padding:16px 12px;display:flex;flex-direction:column;gap:2px}.sidebar-nav .nav-item{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:8px;font-size:14px;color:var(--gray-600);cursor:pointer;transition:all .15s}.sidebar-nav .nav-item:hover{background:var(--gray-50);color:var(--gray-900);text-decoration:none}.sidebar-nav .nav-item.active{background:#eff6ff;color:var(--primary);font-weight:600}.sidebar-nav .nav-item .icon{font-size:18px;width:22px;text-align:center}.sidebar-user{position:absolute;bottom:20px;left:12px;right:12px;display:flex;align-items:center;gap:10px;padding:12px;background:var(--gray-50);border-radius:10px}.sidebar-user .avatar{width:36px;height:36px;border-radius:50%;background:var(--primary);color:#fff;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:600;flex-shrink:0}.sidebar-user .info{flex:1;min-width:0}.sidebar-user .info .name{font-size:13px;font-weight:600;color:var(--gray-800)}.sidebar-user .info .role{font-size:11px;color:var(--gray-400)}.app-main{margin-left:220px;flex:1;padding:28px 36px}.app-main .page-header{margin-bottom:28px}.app-main .page-header h1{font-size:22px;color:var(--gray-900);font-weight:700}.app-main .page-header p{color:var(--gray-500);font-size:13px;margin-top:4px}.card{background:#fff;border-radius:var(--radius);padding:20px 24px;box-shadow:var(--shadow-sm);border:1px solid var(--gray-100)}.badge{display:inline-block;padding:2px 8px;border-radius:10px;font-size:11px;font-weight:500}.badge-success{background:#d1fae5;color:#065f46}.badge-warning{background:#fef3c7;color:#92400e}.badge-danger{background:#fee2e2;color:#991b1b}.badge-info{background:#dbeafe;color:#1e40af}.badge-purple{background:#f3e8ff;color:#6b21a8}.badge-gray{background:var(--gray-100);color:var(--gray-600)}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border-radius:8px;border:1px solid var(--gray-200);background:#fff;color:var(--gray-600);font-size:13px;transition:all .15s}.btn:hover{border-color:var(--primary);color:var(--primary)}.btn-solid{background:var(--primary);border-color:var(--primary);color:#fff}.btn-solid:hover{background:var(--primary-dark);color:#fff}.btn-sm{padding:4px 10px;font-size:12px}.tabs{display:flex;gap:4px;border-bottom:2px solid var(--gray-100);margin-bottom:20px}.tab-item{padding:10px 18px;font-size:14px;color:var(--gray-500);cursor:pointer;border:none;background:none;position:relative;font-weight:500}.tab-item:hover{color:var(--gray-700)}.tab-item.active{color:var(--primary);font-weight:600}.tab-item.active:after{content:"";position:absolute;bottom:-2px;left:20%;right:20%;height:2px;background:var(--primary)}.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a80;z-index:200;display:flex;align-items:center;justify-content:center}.modal{background:#fff;border-radius:14px;width:480px;max-width:92vw;max-height:86vh;overflow-y:auto;padding:26px 30px;box-shadow:var(--shadow-lg)}.modal h3{font-size:17px;margin-bottom:18px}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:22px}.toast-wrap{position:fixed;top:24px;left:50%;transform:translate(-50%);z-index:300;display:flex;flex-direction:column;gap:8px;align-items:center}.toast-item{padding:10px 20px;border-radius:8px;font-size:13px;color:#fff;background:var(--gray-800);box-shadow:var(--shadow)}.toast-item.success{background:var(--success)}.toast-item.error{background:var(--danger)}.empty-tip{text-align:center;color:var(--gray-400);font-size:13px;padding:40px 0}.section-title{font-size:17px;font-weight:700;color:var(--gray-800);margin:24px 0 14px;display:flex;align-items:center;justify-content:space-between;gap:8px}.section-title a{font-size:13px;font-weight:400}.stats-row{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin:20px 0 28px}.stat-card{background:#fff;border-radius:var(--radius);padding:20px;box-shadow:var(--shadow-sm);border:1px solid var(--gray-100)}.stat-card .label{font-size:12px;color:var(--gray-500);margin-bottom:8px}.stat-card .value{font-size:28px;font-weight:700;color:var(--gray-900)}.stat-card .change{font-size:12px;color:var(--success);margin-top:4px}.book-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:20px;margin-bottom:32px}.book-card{background:#fff;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-sm);border:1px solid var(--gray-100);transition:transform .2s,box-shadow .2s;cursor:pointer}.book-card:hover{transform:translateY(-2px);box-shadow:var(--shadow)}.book-card .cover{height:160px;display:flex;align-items:center;justify-content:center;font-size:48px;color:#fff;position:relative}.book-card .cover.blue{background:linear-gradient(135deg,#667eea,#764ba2)}.book-card .cover.green{background:linear-gradient(135deg,#11998e,#38ef7d)}.book-card .cover.orange{background:linear-gradient(135deg,#f093fb,#f5576c)}.book-card .cover.teal{background:linear-gradient(135deg,#4facfe,#00f2fe)}.book-card .cover .book-label{position:absolute;top:12px;right:12px;padding:3px 10px;background:#ffffff40;color:#fff;border-radius:12px;font-size:11px;font-weight:500;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.book-card .body{padding:16px}.book-card .body h3{font-size:15px;font-weight:600;color:var(--gray-800);margin-bottom:6px}.book-card .body p{font-size:12px;color:var(--gray-500)}.book-card .body .meta{display:flex;justify-content:space-between;margin-top:12px;font-size:12px;color:var(--gray-400)}.book-card .body .meta .tag{padding:2px 8px;background:#eef2ff;color:var(--primary);border-radius:4px;font-size:11px}.chapter-panel{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow-sm);border:1px solid var(--gray-100);overflow:hidden}.chapter-header{padding:20px 24px;display:flex;align-items:center;gap:16px;border-bottom:1px solid var(--gray-100)}.chapter-header .back-btn{padding:8px 12px;border:1px solid var(--gray-200);border-radius:8px;background:#fff;color:var(--gray-600);font-size:13px;cursor:pointer}.chapter-header .back-btn:hover{background:var(--gray-50)}.chapter-header .book-info h2{font-size:18px;color:var(--gray-800)}.chapter-header .book-info p{font-size:12px;color:var(--gray-500);margin-top:2px}.chapter-list{padding:8px}.chapter-item{display:flex;align-items:center;padding:14px 16px;border-radius:8px;cursor:pointer;transition:background .15s}.chapter-item:hover{background:var(--gray-50)}.chapter-item .ch-icon{width:40px;height:40px;border-radius:10px;background:#eef2ff;display:flex;align-items:center;justify-content:center;font-size:18px;margin-right:14px;color:var(--primary);flex-shrink:0}.chapter-item .ch-info{flex:1;min-width:0}.chapter-item .ch-info h4{font-size:14px;font-weight:600;color:var(--gray-800)}.chapter-item .ch-info span{font-size:12px;color:var(--gray-400)}.chapter-item .ch-progress{width:100px;height:6px;background:var(--gray-200);border-radius:3px;overflow:hidden}.chapter-item .ch-progress .bar{height:100%;background:var(--primary);border-radius:3px}.chapter-item .ch-count{font-size:12px;color:var(--gray-400);margin-left:12px;white-space:nowrap}.diff-stars{display:inline-flex;gap:1px;align-items:center;vertical-align:middle}.diff-stars .star{font-size:14px;color:var(--gray-300);-webkit-user-select:none;user-select:none}.diff-stars .star.on{color:#f59e0b}@media(max-width:768px){.stats-row{grid-template-columns:repeat(2,1fr)}}.quiz-layout{max-width:780px;margin:0 auto}.quiz-topbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding:12px 20px;background:#fff;border-radius:var(--radius);box-shadow:var(--shadow-sm);border:1px solid var(--gray-100)}.quiz-topbar .progress-text{font-size:14px;font-weight:600;color:var(--gray-800)}.quiz-topbar .progress-text span{color:var(--primary)}.quiz-topbar .timer{font-size:14px;color:var(--gray-500);display:flex;align-items:center;gap:6px}.quiz-progress-bar{height:4px;background:var(--gray-200);border-radius:2px;margin-bottom:24px;overflow:hidden}.quiz-progress-bar .fill{height:100%;background:var(--primary);border-radius:2px;transition:width .4s}.question-card{background:#fff;border-radius:var(--radius);padding:32px;box-shadow:var(--shadow-sm);border:1px solid var(--gray-100);margin-bottom:20px}.question-card .q-type{display:inline-block;padding:3px 10px;background:#eef2ff;color:var(--primary);border-radius:6px;font-size:11px;font-weight:600;margin-bottom:12px}.question-card .q-text{font-size:16px;color:var(--gray-800);line-height:1.8;overflow-wrap:break-word;word-break:break-word}.question-card .q-text .formula{display:block;padding:16px;margin:12px 0;background:var(--gray-50);border-radius:8px;font-size:18px;color:var(--gray-900);max-width:100%;box-sizing:border-box;overflow-wrap:break-word;word-break:break-word}.question-card .q-source{font-size:12px;color:var(--gray-400);margin-top:12px}.question-card .q-images{margin-top:12px;text-align:center}.question-card .q-images img{max-width:100%;height:auto;border-radius:8px;border:1px solid var(--gray-200)}.answer-section{background:#fff;border-radius:var(--radius);padding:28px 32px;box-shadow:var(--shadow-sm);border:1px solid var(--gray-100);margin-bottom:20px}.answer-section h3{font-size:15px;font-weight:600;color:var(--gray-700);margin-bottom:14px}.answer-tabs{display:flex;gap:8px;margin-bottom:16px}.answer-tab{padding:7px 18px;border:1.5px solid var(--gray-200);border-radius:8px;background:#fff;font-size:13px;color:var(--gray-600);cursor:pointer}.answer-tab.active{border-color:var(--primary);color:var(--primary);background:#eef2ff}.answer-textarea{width:100%;min-height:120px;padding:14px;border:1.5px solid var(--gray-200);border-radius:8px;font-size:14px;resize:vertical;background:var(--gray-50);line-height:1.8}.answer-textarea:focus{outline:none;border-color:var(--primary);background:#fff}.upload-zone{border:2px dashed var(--gray-300);border-radius:8px;padding:32px;text-align:center;color:var(--gray-400);cursor:pointer;transition:border-color .2s}.upload-zone:hover{border-color:var(--primary);color:var(--primary)}.upload-zone .upload-icon{font-size:36px;margin-bottom:8px}.upload-zone p{font-size:13px}.quiz-actions{display:flex;gap:12px;justify-content:flex-end}.result-inline{margin-top:20px;padding:20px 24px;border-radius:var(--radius);border:1.5px solid var(--gray-200)}.result-inline.correct{border-color:#86efac;background:#f0fdf4}.result-inline.wrong{border-color:#fca5a5;background:#fef2f2}.result-inline .result-header{display:flex;align-items:center;gap:8px;margin-bottom:12px;font-size:15px;font-weight:600}.result-inline .correct-answer{font-size:14px;color:var(--gray-700);margin-bottom:8px}.result-inline .explanation{font-size:13px;color:var(--gray-500);line-height:1.8;padding-top:12px;border-top:1px solid var(--gray-200)}.review-status{margin-top:18px;padding-top:16px;border-top:1px dashed var(--gray-200)}.review-status .rs-title{font-size:12px;color:var(--gray-500);margin-bottom:10px;display:flex;align-items:center;gap:6px}.review-status .rs-title .rs-hint{color:var(--gray-300);font-weight:400}.review-status .rs-options{display:flex;flex-wrap:wrap;gap:8px}.review-status .rs-option{padding:6px 14px;border:1.5px solid var(--gray-200);border-radius:20px;background:#fff;font-size:12px;color:var(--gray-600);cursor:pointer;transition:all .15s}.review-status .rs-option:hover{border-color:var(--primary);color:var(--primary)}.review-status .rs-option.selected{border-color:var(--primary);background:#eef2ff;color:var(--primary);font-weight:600}.results-container{max-width:800px;margin:0 auto}.results-summary{background:linear-gradient(135deg,#eef2ff,#e0f2fe);border-radius:var(--radius);padding:28px 32px;margin-bottom:24px;display:flex;align-items:center;gap:32px}.results-summary .score-circle{width:120px;height:120px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0}.results-summary .score-circle .inner{width:96px;height:96px;border-radius:50%;background:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center}.results-summary .score-circle .inner .num{font-size:32px;font-weight:700;color:var(--primary)}.results-summary .score-circle .inner .unit{font-size:11px;color:var(--gray-400)}.results-summary .detail-stats{flex:1}.results-summary .detail-stats h2{font-size:20px;color:var(--gray-800);margin-bottom:12px}.results-summary .detail-stats .stat-row{display:flex;gap:24px}.results-summary .detail-stats .stat-item{text-align:center}.results-summary .detail-stats .stat-item .n{font-size:22px;font-weight:700}.results-summary .detail-stats .stat-item .l{font-size:12px;color:var(--gray-500)}.status-pill{display:inline-flex;align-items:center;gap:4px;padding:2px 10px;border-radius:12px;font-size:11px;font-weight:600;white-space:nowrap}.status-pill.correct{background:#d1fae5;color:#065f46}.status-pill.unanswered{background:var(--gray-100);color:var(--gray-500)}.status-pill.wrong{background:#fee2e2;color:#991b1b}.status-pill.self_fixed{background:#fef3c7;color:#92400e}.status-pill.hint_fixed{background:#dbeafe;color:#1e40af}.status-pill.still_stuck{background:#ede9fe;color:#5b21b6}.type-pill{display:inline-flex;align-items:center;gap:4px;padding:2px 10px;border-radius:12px;font-size:11px;font-weight:600;white-space:nowrap}.type-pill.online{background:#ecfdf5;color:#065f46;border:1px solid #A7F3D0}.type-pill.offline{background:#f5f3ff;color:#5b21b6;border:1px solid #DDD6FE}.rec-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px;flex-wrap:wrap}.rec-filters{display:flex;gap:6px;background:var(--gray-100);padding:4px;border-radius:8px}.rec-filter{padding:6px 16px;border:none;border-radius:6px;background:transparent;font-size:13px;color:var(--gray-500);cursor:pointer}.rec-filter.active{background:#fff;color:var(--primary);font-weight:600;box-shadow:0 1px 3px #00000014}.rec-status-select{padding:7px 12px;border:1.5px solid var(--gray-200);border-radius:8px;font-size:13px;background:#fff;color:var(--gray-600)}.rec-group{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow-sm);border:1px solid var(--gray-100);margin-bottom:12px;overflow:hidden}.rec-group .rg-header{display:flex;align-items:center;gap:12px;padding:16px 20px;cursor:pointer;transition:background .15s}.rec-group .rg-header:hover{background:var(--gray-50)}.rec-group .rg-q{flex:1;min-width:0}.rec-group .rg-question{font-size:14px;color:var(--gray-700);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rec-group .rg-meta{font-size:12px;color:var(--gray-400);margin-top:2px}.rec-group .rg-count{font-size:12px;color:var(--gray-400);flex-shrink:0;white-space:nowrap}.rec-group .rg-redo{padding:3px 10px;font-size:11px;color:var(--primary);background:#eff6ff;border:1px solid #BFDBFE;border-radius:6px;cursor:pointer;white-space:nowrap;flex-shrink:0}.rec-group .rg-redo:hover{background:#dbeafe}.rec-group .rg-arrow{font-size:11px;color:var(--gray-400);transition:transform .2s}.rec-group.open .rg-arrow{transform:rotate(90deg)}.rec-group .rg-body{display:none;padding:0 20px 16px;border-top:1px solid var(--gray-100)}.rec-group.open .rg-body{display:block}.rec-item{display:flex;align-items:center;gap:12px;padding:12px 4px;border-bottom:1px dashed var(--gray-100);font-size:13px}.rec-item:last-child{border-bottom:none}.rec-item .ri-date{color:var(--gray-400);font-size:12px;width:80px;flex-shrink:0}.rec-item .ri-note{flex:1;font-size:12px;color:var(--gray-500);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:right}.mistakes-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:24px}.mistakes-stat{background:#fff;border-radius:var(--radius);padding:20px;box-shadow:var(--shadow-sm);border:1px solid var(--gray-100);display:flex;align-items:center;gap:16px}.mistakes-stat .ms-icon{width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:24px}.mistakes-stat .ms-icon.red{background:#fee2e2}.mistakes-stat .ms-icon.orange{background:#fef3c7}.mistakes-stat .ms-icon.green{background:#d1fae5}.mistakes-stat .ms-info .ms-label{font-size:12px;color:var(--gray-500)}.mistakes-stat .ms-info .ms-value{font-size:24px;font-weight:700;color:var(--gray-900)}.mistakes-toolbar{display:flex;align-items:center;gap:12px;margin-bottom:20px;flex-wrap:wrap}.mistakes-toolbar select{padding:8px 14px;border:1.5px solid var(--gray-200);border-radius:8px;background:#fff;font-size:13px;color:var(--gray-700);min-width:140px}.mistakes-toolbar select:focus{outline:none;border-color:var(--primary)}.mistakes-toolbar .search-box{flex:1;min-width:200px;padding:8px 14px;border:1.5px solid var(--gray-200);border-radius:8px;font-size:13px;background:var(--gray-50)}.mistakes-toolbar .search-box:focus{outline:none;border-color:var(--primary);background:#fff}.mistake-group{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow-sm);border:1px solid var(--gray-100);margin-bottom:16px;overflow:hidden}.mg-header{display:flex;align-items:center;padding:16px 20px;cursor:pointer;border-bottom:1px solid var(--gray-100);transition:background .15s}.mg-header:hover{background:var(--gray-50)}.mg-header .mg-arrow{font-size:12px;color:var(--gray-400);margin-right:10px;transition:transform .2s}.mistake-group.open .mg-arrow{transform:rotate(90deg)}.mg-header .mg-kp{font-size:15px;font-weight:600;color:var(--gray-800);flex:1}.mg-header .mg-count{font-size:12px;color:var(--gray-400);margin-right:16px}.mg-header .mg-actions{display:flex;gap:8px}.mg-header .mg-actions button{padding:5px 14px;border-radius:6px;font-size:12px;font-weight:500;border:1px solid var(--gray-200);background:#fff;color:var(--gray-600);cursor:pointer;transition:all .15s}.mg-header .mg-actions button:hover{background:var(--gray-50)}.mg-header .mg-actions button.primary{background:var(--primary);color:#fff;border-color:var(--primary)}.mg-header .mg-actions button.primary:hover{background:var(--primary-dark)}.mg-body{display:none;padding:8px}.mistake-group.open .mg-body{display:block}.mistake-item{display:flex;align-items:flex-start;padding:14px 16px;border-radius:8px;transition:background .15s;gap:12px}.mistake-item:hover{background:var(--gray-50)}.mi-status{width:28px;height:28px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:14px;margin-top:2px}.mi-status.wrong{background:#fee2e2}.mi-status.mastered{background:#d1fae5}.mi-content{flex:1}.mi-content .mi-stem{font-size:14px;color:var(--gray-800);line-height:1.6}.mi-content .mi-meta{font-size:12px;color:var(--gray-400);margin-top:4px;display:flex;gap:12px;align-items:center}.mi-content .mi-meta .mi-tag{padding:1px 6px;border-radius:4px;font-size:11px}.mi-content .mi-meta .mi-tag.source{background:#eef2ff;color:var(--primary)}.mi-content .mi-meta .mi-tag.diff{background:#fef3c7;color:#92400e}.mi-actions{display:flex;gap:6px;flex-shrink:0;margin-top:2px}.mi-actions button{padding:5px 12px;border-radius:6px;font-size:12px;border:1px solid var(--gray-200);background:#fff;color:var(--gray-600);cursor:pointer;transition:all .15s;white-space:nowrap}.mi-actions button:hover{background:var(--gray-50)}.mi-actions button.redo{color:var(--primary);border-color:var(--primary)}.mi-actions button.redo:hover{background:#eef2ff}.mi-actions button.master{color:var(--success);border-color:var(--success)}.mi-actions button.master:hover{background:#f0fdf4}.mistakes-empty{text-align:center;padding:60px 20px;color:var(--gray-400)}.mistakes-empty .me-icon{font-size:48px;margin-bottom:16px}.mistakes-empty p{font-size:14px}.off-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;z-index:9991;background:#0f172a8c;display:none;align-items:center;justify-content:center}.off-modal-overlay.active{display:flex}.off-modal{background:#fff;border-radius:16px;width:600px;max-width:94vw;max-height:86vh;overflow-y:auto;padding:28px 32px;box-shadow:var(--shadow-lg)}.off-modal .om-close{border:none;background:var(--gray-100);width:30px;height:30px;border-radius:8px;cursor:pointer;color:var(--gray-500);font-size:14px}.off-modal .om-close:hover{background:var(--gray-200)}.om-row{margin-bottom:16px}.om-row label{display:block;font-size:12px;font-weight:600;color:var(--gray-600);margin-bottom:6px}.om-row select,.om-row input[type=text],.om-row input[type=date]{width:100%;padding:9px 12px;border:1.5px solid var(--gray-200);border-radius:8px;font-size:13px;background:var(--gray-50);color:var(--gray-700)}.om-row select:focus,.om-row input:focus{outline:none;border-color:var(--primary);background:#fff}.om-questions{border:1px solid var(--gray-200);border-radius:10px;max-height:190px;overflow-y:auto}.om-question{display:flex;align-items:center;gap:10px;padding:10px 14px;cursor:pointer;border-bottom:1px solid var(--gray-50);font-size:13px;color:var(--gray-700);transition:background .12s}.om-question:last-child{border-bottom:none}.om-question:hover{background:var(--gray-50)}.om-question.selected{background:#eef2ff;color:var(--primary);font-weight:500}.om-question .oq-no{font-size:11px;color:var(--gray-400);flex-shrink:0}.om-question .oq-sub-badge{font-size:11px;color:var(--primary);background:#eef2ff;padding:1px 7px;border-radius:10px;flex-shrink:0;font-weight:600}.om-empty{padding:24px;text-align:center;color:var(--gray-400);font-size:13px}.om-status{display:flex;flex-wrap:wrap;gap:8px}.om-status .rs-option{padding:6px 14px;border:1.5px solid var(--gray-200);border-radius:20px;background:#fff;font-size:12px;color:var(--gray-600);cursor:pointer;transition:all .15s}.om-status .rs-option:hover{border-color:var(--primary);color:var(--primary)}.om-status .rs-option.selected{border-color:var(--primary);background:#eef2ff;color:var(--primary);font-weight:600}.om-footer{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.plan-container{max-width:700px}.plan-card{background:#fff;border-radius:var(--radius);padding:28px;box-shadow:var(--shadow-sm);border:1px solid var(--gray-100);margin-bottom:20px}.plan-card h3{font-size:16px;font-weight:600;color:var(--gray-800);margin-bottom:16px}.plan-row{display:flex;align-items:center;gap:16px;margin-bottom:16px}.plan-row label{font-size:13px;color:var(--gray-600);width:80px;flex-shrink:0}.plan-row .radio-group{display:flex;gap:12px}.radio-btn{padding:8px 20px;border:1.5px solid var(--gray-200);border-radius:8px;background:#fff;font-size:13px;color:var(--gray-600);cursor:pointer;transition:all .15s}.radio-btn.active{border-color:var(--primary);color:var(--primary);background:#eef2ff;font-weight:600}.plan-row select{padding:8px 14px;border:1.5px solid var(--gray-200);border-radius:8px;background:#fff;color:var(--gray-700);font-size:13px;min-width:100px;max-width:380px}.plan-row select:focus{outline:none;border-color:var(--primary)}.number-input{display:flex;align-items:center;gap:8px}.number-input button{width:32px;height:32px;border:1.5px solid var(--gray-200);border-radius:8px;background:#fff;font-size:16px;color:var(--gray-600);display:flex;align-items:center;justify-content:center;cursor:pointer}.number-input button:hover{background:var(--gray-50);border-color:var(--gray-300)}.number-input span{font-size:20px;font-weight:700;color:var(--gray-800);min-width:40px;text-align:center}.plan-summary{padding:16px 20px;background:#f0f9ff;border:1px solid #BAE6FD;border-radius:8px;margin-top:16px}.plan-summary p{font-size:13px;color:var(--gray-700)}.plan-summary p strong{color:var(--primary)}.plan-btn-row{display:flex;gap:12px;margin-top:20px}.plan-btn-row button{padding:10px 28px;border-radius:8px;font-size:14px;font-weight:500;border:none;cursor:pointer}.btn-outline{border:1.5px solid var(--gray-200)!important;background:#fff;color:var(--gray-600)}.btn-outline:hover{background:var(--gray-50)}.btn-outline:disabled{opacity:.6;cursor:not-allowed}.plan-filter-row{display:flex;align-items:flex-start;gap:16px;margin-bottom:16px}.plan-filter-row label{font-size:13px;color:var(--gray-600);width:80px;flex-shrink:0;padding-top:8px}.plan-filter-row .filter-body{flex:1}.plan-diff-picker{display:flex;gap:6px;align-items:center}.plan-diff-picker .p-star{cursor:pointer;font-size:22px;color:var(--gray-300);transition:color .15s;-webkit-user-select:none;user-select:none}.plan-diff-picker .p-star.on{color:#f59e0b}.plan-diff-picker .p-star:hover{color:#fbbf24}.plan-diff-picker .p-diff-label{font-size:12px;color:var(--gray-500);margin-left:8px}.plan-diff-picker .p-diff-clear{font-size:11px;color:var(--gray-400);cursor:pointer;margin-left:8px;text-decoration:underline}.plan-diff-picker .p-diff-clear:hover{color:var(--primary)}.plan-status-filter{display:flex;flex-wrap:wrap;gap:8px}.plan-status-chip{padding:5px 14px;border:1.5px solid var(--gray-200);border-radius:16px;font-size:12px;color:var(--gray-600);background:#fff;cursor:pointer;transition:all .15s;-webkit-user-select:none;user-select:none}.plan-status-chip.selected{border-color:var(--primary);color:var(--primary);background:#eef2ff;font-weight:500}.plan-status-count{display:flex;align-items:center;gap:8px;margin-top:8px;font-size:12px;color:var(--gray-500)}.plan-status-count input{width:60px;padding:4px 8px;border:1.5px solid var(--gray-200);border-radius:6px;font-size:12px;text-align:center}.plan-status-count input:focus{outline:none;border-color:var(--primary)}.plan-level-input{width:100%;max-width:300px;padding:8px 14px;border:1.5px solid var(--gray-200);border-radius:8px;font-size:13px;background:var(--gray-50)}.plan-level-input:focus{outline:none;border-color:var(--primary);background:#fff}.plan-level-hint{font-size:11px;color:var(--gray-400);margin-top:4px}.task-list{margin-top:20px}.task-day-card{background:#fff;border-radius:var(--radius);padding:20px 24px;box-shadow:var(--shadow-sm);border:1px solid var(--gray-100);margin-bottom:12px}.task-day-card .day-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.task-day-card .day-header h4{font-size:15px;font-weight:600}.task-day-card .day-header .status{font-size:12px;padding:3px 10px;border-radius:12px}.status-done{background:#d1fae5;color:#065f46}.status-today{background:#dbeafe;color:#1e40af}.status-future{background:var(--gray-100);color:var(--gray-500)}.task-progress{height:6px;background:var(--gray-200);border-radius:3px;overflow:hidden;margin-bottom:8px}.task-progress .bar{height:100%;border-radius:3px;transition:width .3s}.task-progress .bar.blue{background:var(--primary)}.task-progress .bar.green{background:var(--success)}.task-meta{font-size:12px;color:var(--gray-400);display:flex;justify-content:space-between}.task-start-btn{margin-top:12px;padding:8px 24px;background:var(--primary);color:#fff;border:none;border-radius:8px;font-size:13px;font-weight:500;cursor:pointer}.task-start-btn:hover{background:var(--primary-dark)}.task-actions{display:flex;gap:8px;margin-top:12px}.task-action-btn{padding:6px 16px;border:1.5px solid var(--gray-200);border-radius:8px;font-size:12px;color:var(--gray-600);background:#fff;cursor:pointer;transition:all .15s}.task-action-btn:hover{background:var(--gray-50);border-color:var(--gray-300)}.task-action-btn.preview-btn:hover{border-color:var(--primary);color:var(--primary)}.task-action-btn.print-btn:hover{border-color:var(--success);color:var(--success)}.preview-overlay{position:fixed;top:0;left:0;right:0;bottom:0;z-index:9992;background:#0f172a8c;display:none;align-items:center;justify-content:center}.preview-overlay.active{display:flex}.preview-modal{background:#fff;border-radius:16px;width:560px;max-width:94vw;max-height:86vh;overflow-y:auto;padding:28px 32px;box-shadow:var(--shadow-lg)}.preview-modal .pv-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.preview-modal .pv-header h3{font-size:17px;color:var(--gray-800)}.preview-modal .pv-close{border:none;background:var(--gray-100);width:30px;height:30px;border-radius:8px;cursor:pointer;color:var(--gray-500);font-size:14px}.preview-modal .pv-close:hover{background:var(--gray-200)}.pv-meta{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:16px}.pv-meta-item{font-size:12px;color:var(--gray-500);padding:4px 12px;background:var(--gray-50);border-radius:6px}.pv-meta-item strong{color:var(--gray-700)}.pv-question-list{border:1px solid var(--gray-200);border-radius:10px;overflow:hidden}.pv-question-item{padding:14px 18px;border-bottom:1px solid var(--gray-100)}.pv-question-item:last-child{border-bottom:none}.pv-question-item .pvq-no{font-size:11px;color:var(--gray-400);margin-bottom:4px}.pv-question-item .pvq-stem{font-size:14px;color:var(--gray-800);line-height:1.7}.pv-question-item .pvq-images{margin-top:8px;text-align:center}.pv-question-item .pvq-images img{max-width:100%;height:auto;border-radius:6px;border:1px solid var(--gray-200)}.pv-question-item .pvq-diff{margin-top:6px}.print-overlay{position:fixed;top:0;left:0;right:0;bottom:0;z-index:9993;background:#0f172a8c;display:none;align-items:center;justify-content:center}.print-overlay.active{display:flex}.print-modal{background:#fff;border-radius:16px;width:480px;max-width:94vw;padding:28px 32px;box-shadow:var(--shadow-lg)}.print-modal .pr-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.print-modal .pr-header h3{font-size:17px;color:var(--gray-800)}.print-modal .pr-close{border:none;background:var(--gray-100);width:30px;height:30px;border-radius:8px;cursor:pointer;color:var(--gray-500);font-size:14px}.print-modal .pr-close:hover{background:var(--gray-200)}.pr-layout-options{display:flex;gap:12px;margin-bottom:20px}.pr-layout-opt{flex:1;padding:16px 12px;border:2px solid var(--gray-200);border-radius:12px;text-align:center;cursor:pointer;transition:all .15s}.pr-layout-opt:hover{border-color:var(--gray-300)}.pr-layout-opt.selected{border-color:var(--primary);background:#eef2ff}.pr-layout-opt .pr-num{font-size:24px;font-weight:700;color:var(--gray-800)}.pr-layout-opt .pr-label{font-size:12px;color:var(--gray-500);margin-top:4px}.pr-layout-opt.selected .pr-num,.pr-layout-opt.selected .pr-label{color:var(--primary)}.pr-footer{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.pr-footer button{padding:10px 24px;border-radius:8px;font-size:14px;font-weight:500;border:none;cursor:pointer}.pr-footer .pr-cancel{background:#fff;border:1.5px solid var(--gray-200)!important;color:var(--gray-600)}.pr-footer .pr-cancel:hover{background:var(--gray-50)}.pr-footer .pr-confirm{background:var(--primary);color:#fff}.pr-footer .pr-confirm:hover{background:var(--primary-dark)}#printArea{display:none}@media print{body *{visibility:hidden}#printArea{display:block;position:absolute;left:0;top:0;width:100%}#printArea *{visibility:visible}.print-page{page-break-after:always;padding:40px 50px}.print-page:last-child{page-break-after:auto}.print-page .pp-header{font-size:11px;color:#999;border-bottom:1px solid #eee;padding-bottom:8px;margin-bottom:20px}.print-page .pp-no{font-size:13px;color:#666;margin-bottom:8px}.print-page .pp-stem{font-size:15px;color:#333;line-height:1.8;margin-bottom:16px}.print-page .pp-images{margin-top:8px;text-align:center}.print-page .pp-images img{max-width:100%;height:auto;border-radius:4px;border:1px solid #ddd}.print-page .pp-answer-area{border:1px dashed #ccc;min-height:120px;border-radius:8px;padding:12px;font-size:12px;color:#999}.print-layout-2 .print-page{display:flex;flex-direction:column;gap:30px;min-height:calc(100vh - 80px)}.print-layout-4 .print-page{display:grid;grid-template-columns:1fr 1fr;gap:20px}.print-layout-4 .print-page .pp-answer-area{min-height:80px}.print-page .pp-item{margin-bottom:16px}.print-layout-4 .print-page .pp-item{margin-bottom:0}}.block-title{font-size:18px;font-weight:700;color:var(--gray-800);margin-bottom:20px}.member-hero{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:16px;padding:32px;color:#fff;margin-bottom:32px}.member-hero-top{display:flex;align-items:center;gap:16px}.member-hero-icon{width:64px;height:64px;border-radius:50%;background:#fff3;display:flex;align-items:center;justify-content:center;font-size:32px}.member-hero-info{flex:1}.member-hero-type{font-size:20px;font-weight:700;margin-bottom:4px}.member-hero-sub{font-size:14px;opacity:.9}.member-hero-days{text-align:right}.member-hero-days .label{font-size:13px;opacity:.8}.member-hero-days .value{font-size:28px;font-weight:700}.member-hero-bottom{margin-top:20px;padding-top:20px;border-top:1px solid rgba(255,255,255,.2);display:flex;gap:24px}.member-hero-bottom .label{font-size:12px;opacity:.8}.member-hero-bottom .value{font-size:14px;font-weight:600;margin-top:4px}.packages-block{margin-bottom:32px}.package-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.package-card{position:relative;background:#fff;border-radius:16px;padding:28px;box-shadow:var(--shadow-sm);border:2px solid var(--gray-100)}.package-card.recommended{box-shadow:var(--shadow-md);border-color:var(--primary)}.package-card.pkg-year{border-color:#f59e0b}.package-badge{position:absolute;top:-12px;left:50%;transform:translate(-50%);background:var(--primary);color:#fff;padding:4px 16px;border-radius:12px;font-size:12px;font-weight:600}.package-head{text-align:center;margin-bottom:20px}.package-icon{font-size:40px;margin-bottom:12px}.package-name{font-size:18px;font-weight:700;color:var(--gray-800)}.package-tagline{font-size:13px;color:var(--gray-500);margin-top:4px}.package-price{text-align:center;margin-bottom:16px}.package-price .cur{font-size:14px;color:var(--gray-500)}.package-price .num{font-size:48px;font-weight:700;color:var(--primary)}.pkg-year .package-price .num{color:#f59e0b}.package-price .unit{font-size:14px;color:var(--gray-500)}.package-hint{background:#fef3c7;border-radius:8px;padding:8px 12px;text-align:center;font-size:13px;color:#92400e;margin-bottom:12px}.package-features{margin-bottom:8px}.benefit-item{display:flex;align-items:center;gap:10px;padding:10px 0;font-size:14px;color:var(--gray-700)}.benefit-item .mark{font-size:16px;color:var(--success)}.benefit-item.off,.benefit-item.off .mark{color:var(--gray-400)}.benefit-item.highlight{color:var(--primary)}.pkg-year .benefit-item.highlight{color:#f59e0b}.benefit-item .strong{font-weight:700}.package-btn{width:100%;margin-top:20px;padding:12px;border:2px solid var(--primary);background:#fff;color:var(--primary);border-radius:10px;font-size:15px;font-weight:600;cursor:pointer;transition:all .2s}.package-btn:hover{background:var(--primary);color:#fff}.package-btn.solid{border:none;background:var(--primary);color:#fff}.pkg-year .package-btn{border-color:#f59e0b;color:#f59e0b}.pkg-year .package-btn:hover{background:#f59e0b;color:#fff}.pay-card{padding:32px}.pay-method-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.pay-method-item{border:2px solid var(--gray-100);border-radius:12px;padding:20px;cursor:pointer;display:flex;align-items:center;gap:16px;transition:all .2s}.pay-method-item:hover,.pay-method-item.active{border-color:var(--success)}.pay-method-item:last-child:hover,.pay-method-item:last-child.active{border-color:#1677ff}.pay-logo{width:48px;height:48px;border-radius:12px;color:#fff;font-size:24px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.pay-logo-wechat{background:#07c160}.pay-logo-alipay{background:#1677ff}.pay-name{font-size:16px;font-weight:600;color:var(--gray-800)}.pay-desc{font-size:13px;color:var(--gray-500);margin-top:2px}.qr-zone{margin-top:32px;text-align:center;padding:40px;background:var(--gray-50);border-radius:12px}.qr-box{width:200px;height:200px;margin:0 auto 20px;background:#fff;border-radius:12px;display:flex;flex-direction:column;align-items:center;justify-content:center;box-shadow:var(--shadow-sm)}.qr-icon{font-size:60px;margin-bottom:8px}.qr-tip{font-size:13px;color:var(--gray-500)}.qr-amount{font-size:16px;font-weight:600;color:var(--gray-800);margin-bottom:8px}.qr-hint{font-size:14px;color:var(--gray-500)}.qr-order{margin-top:20px;font-size:13px;color:var(--gray-400)}.qr-actions{margin-top:16px}.pay-go-btn{padding:12px 48px;background:var(--success);color:#fff;border:none;border-radius:10px;font-size:15px;font-weight:600;cursor:pointer}.pay-go-btn:disabled{opacity:.6;cursor:not-allowed}.pay-note{margin-top:24px;padding:16px;background:#eef2ff;border-radius:8px;font-size:13px;color:#1e40af}.pay-result-card{text-align:center;padding:60px 40px}.pay-result-icon{font-size:72px;margin-bottom:20px}.pay-result-title{font-size:24px;color:var(--gray-800);margin-bottom:12px}.pay-result-desc{font-size:14px;color:var(--gray-500);margin-bottom:32px;line-height:1.8}.pay-result-pkg{color:var(--primary)}.pay-result-detail{background:var(--gray-50);border-radius:12px;padding:24px;margin-bottom:32px;text-align:left}.pay-result-row{display:flex;justify-content:space-between;margin-bottom:12px;font-size:14px}.pay-result-row:last-child{margin-bottom:0}.pay-result-row .k{color:var(--gray-500)}.pay-result-row .v{color:var(--gray-800);font-weight:500}.pay-result-row .v.amount{color:var(--danger);font-weight:700;font-size:18px}.pay-result-actions{display:flex;gap:12px;justify-content:center}.btn-outline-lg,.btn-solid-lg{padding:12px 32px;border-radius:10px;font-size:14px;font-weight:500;cursor:pointer}.btn-outline-lg{border:1.5px solid var(--gray-200);background:#fff;color:var(--gray-600)}.btn-outline-lg:hover{background:var(--gray-50)}.btn-solid-lg{border:none;background:var(--primary);color:#fff}.btn-solid-lg:hover{opacity:.9}.analytics-stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:24px}.btn-sm{padding:6px 16px;font-size:12px}.analytics-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:24px}.chart-card{background:#fff;border-radius:var(--radius);padding:24px;box-shadow:var(--shadow-sm);border:1px solid var(--gray-100)}.chart-card h3{font-size:15px;font-weight:600;color:var(--gray-800);margin-bottom:16px}.bar-chart{display:flex;align-items:flex-end;gap:12px;height:180px;padding-top:20px}.bar-chart .bar-group{flex:1;text-align:center}.bar-chart .bar-group .bar{width:100%;border-radius:6px 6px 0 0;transition:height .5s;background:var(--primary);min-height:4px;position:relative}.bar-chart .bar-group .bar:hover{opacity:.85}.bar-chart .bar-group .bar .val{position:absolute;top:-20px;left:50%;transform:translate(-50%);font-size:11px;font-weight:600;color:var(--gray-700);white-space:nowrap}.bar-chart .bar-group .label{font-size:11px;color:var(--gray-400);margin-top:6px}.error-item{display:flex;align-items:center;padding:12px 0;border-bottom:1px solid var(--gray-100)}.error-item:last-child{border-bottom:none}.error-item .err-rank{width:28px;height:28px;border-radius:50%;background:#fee2e2;color:var(--danger);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;margin-right:12px;flex-shrink:0}.error-item .err-rank.good{background:#d1fae5;color:var(--success)}.error-item .err-rank.warn{background:#fef3c7;color:var(--warning)}.error-item .err-rank.bad{background:#fee2e2;color:var(--danger)}.error-item .err-info{flex:1}.error-item .err-info h4{font-size:13px;font-weight:600;color:var(--gray-800)}.error-item .err-info span{font-size:11px;color:var(--gray-400)}.error-item .err-count{font-size:18px;font-weight:700;color:var(--danger)}.error-item .err-count small{font-size:11px;font-weight:400;color:var(--gray-400)}.streak-row{display:flex;gap:16px;align-items:center;margin-bottom:20px}.streak-badge{display:flex;align-items:center;gap:8px;padding:8px 16px;background:linear-gradient(135deg,#fef3c7,#fde68a);border-radius:12px}.streak-badge .fire{font-size:24px}.streak-badge .info .n{font-size:18px;font-weight:700;color:var(--gray-800)}.streak-badge .info .l{font-size:11px;color:var(--gray-500)}.settings-container{max-width:680px}.settings-card{background:#fff;border-radius:var(--radius);padding:24px 28px;box-shadow:var(--shadow-sm);border:1px solid var(--gray-100);margin-bottom:20px}.settings-card h3{font-size:15px;font-weight:600;color:var(--gray-800);margin-bottom:20px;padding-bottom:12px;border-bottom:1px solid var(--gray-100)}.setting-row{display:flex;align-items:center;justify-content:space-between;padding:14px 0;border-bottom:1px solid var(--gray-50)}.setting-row:last-child{border-bottom:none}.setting-row .setting-label{flex:1}.setting-row .setting-label .title{font-size:14px;color:var(--gray-800);font-weight:500}.setting-row .setting-label .desc{font-size:12px;color:var(--gray-400);margin-top:2px}.setting-row select{padding:6px 12px;border:1.5px solid var(--gray-200);border-radius:6px;font-size:13px;color:var(--gray-700);background:#fff}.toggle-switch{width:44px;height:24px;background:var(--gray-300);border-radius:12px;position:relative;cursor:pointer;transition:background .2s;flex-shrink:0}.toggle-switch.on{background:var(--primary)}.toggle-switch .knob{width:20px;height:20px;background:#fff;border-radius:50%;position:absolute;top:2px;left:2px;transition:left .2s;box-shadow:0 1px 3px #00000026}.toggle-switch.on .knob{left:22px}.settings-btn{padding:6px 16px;border:1px solid var(--gray-200);border-radius:6px;background:#fff;font-size:13px;color:var(--gray-500);cursor:pointer}.settings-btn:hover{background:var(--gray-50)}.settings-btn:disabled{opacity:.5;cursor:not-allowed}.settings-btn.primary{border:none;background:var(--primary);color:#fff}.settings-btn.primary:hover{opacity:.9}.settings-btn.renew{border:1.5px solid var(--primary);background:#eef2ff;color:var(--primary);font-weight:500}.settings-input{padding:6px 12px;border:1px solid var(--gray-200);border-radius:6px;font-size:13px;width:160px}.form-field{margin-bottom:16px}.form-field label{display:block;font-size:13px;color:var(--gray-600);margin-bottom:6px}.form-field .settings-input{width:100%;box-sizing:border-box}@media(max-width:900px){.analytics-grid,.analytics-stat-grid{grid-template-columns:1fr}}.tab-btn{padding:10px 20px;border:none;background:none;font-size:13px;color:var(--gray-500);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px;font-weight:500;transition:color .2s}.tab-btn:hover{color:var(--gray-800)}.tab-btn.active{color:var(--primary);border-bottom-color:var(--primary);font-weight:600}.tab-new-dot{display:inline-block;background:var(--danger);color:#fff;font-size:10px;font-weight:700;padding:1px 7px;border-radius:9px;margin-right:6px;vertical-align:2px;letter-spacing:.5px}.kp-panel .stat-card .change{color:var(--gray-400)}.stat-card .value small{font-size:14px;font-weight:500;color:var(--gray-500)}.filter-bar{display:flex;gap:12px;align-items:center;flex-wrap:wrap;background:#fff;border:1px solid var(--gray-100);border-radius:var(--radius);padding:14px 18px;box-shadow:var(--shadow-sm);margin-bottom:20px}.filter-bar .f-label{font-size:12px;color:var(--gray-500);font-weight:600}.filter-bar select{padding:8px 12px;border:1.5px solid var(--gray-200);border-radius:8px;background:var(--gray-50);color:var(--gray-700);font-size:13px;outline:none;transition:border-color .2s;min-width:150px}.filter-bar select:focus{border-color:var(--primary);background:#fff}.seg{display:inline-flex;border:1.5px solid var(--gray-200);border-radius:8px;overflow:hidden}.seg button{padding:8px 14px;border:none;background:#fff;font-size:12px;color:var(--gray-500);transition:all .15s}.seg button:hover{background:var(--gray-50)}.seg button.active{background:#eef2ff;color:var(--primary);font-weight:600}.filter-hint{font-size:12px;color:var(--gray-400)}.table-card{background:#fff;border:1px solid var(--gray-100);border-radius:var(--radius);box-shadow:var(--shadow-sm);overflow:hidden;margin-bottom:20px}.table-card .card-head{display:flex;justify-content:space-between;align-items:flex-end;padding:18px 24px 12px}.table-card .card-head h3{font-size:15px;font-weight:700;color:var(--gray-800)}.card-sub{font-size:12px;color:var(--gray-400);margin-left:10px;font-weight:400}.card-tip{font-size:12px;color:var(--gray-400)}.rank-table{width:100%;border-collapse:collapse;font-size:13px}.rank-table th{text-align:left;padding:12px 16px;font-size:12px;color:var(--gray-500);border-top:1px solid var(--gray-100);border-bottom:1px solid var(--gray-100);background:var(--gray-50);font-weight:600;white-space:nowrap;-webkit-user-select:none;user-select:none}.rank-table th.sortable{cursor:pointer}.rank-table th.sortable:hover{color:var(--primary)}.rank-table th .arrow{font-size:10px;color:var(--primary);margin-left:3px}.rank-table td{padding:14px 16px;border-bottom:1px solid var(--gray-100);vertical-align:middle}.rank-table tbody tr{cursor:pointer;transition:background .15s}.rank-table tbody tr:hover{background:var(--gray-50)}.rank-table tbody tr.active-row{background:#eef2ff}.kp-name{font-weight:600;color:var(--gray-800)}.kp-sub{font-size:11px;color:var(--gray-400)}.cell-num{font-weight:600;color:var(--gray-800);font-variant-numeric:tabular-nums}.cell-num.danger{color:var(--danger)}.density-cell{display:flex;align-items:center;gap:8px}.density-bar{width:70px;height:6px;background:var(--gray-200);border-radius:3px;overflow:hidden}.density-bar .fill{height:100%;border-radius:3px}.fill.high{background:var(--danger)}.fill.medium{background:var(--warning)}.fill.low{background:var(--success)}.density-pill{padding:2px 9px;border-radius:11px;font-size:11px;font-weight:600;white-space:nowrap}.density-pill.high{background:#fee2e2;color:#b91c1c}.density-pill.medium{background:#fef3c7;color:#92400e}.density-pill.low{background:#d1fae5;color:#065f46}.density-val{font-size:11px;color:var(--gray-400);font-variant-numeric:tabular-nums}.week-pill{display:inline-block;padding:2px 9px;border-radius:11px;font-size:11px;font-weight:600;background:#fef3c7;color:#92400e}.week-pill.warn{background:#fee2e2;color:#b91c1c}.week-pill.ok{background:#d1fae5;color:#065f46}.mini-chart{display:flex;align-items:flex-end;gap:3px;height:28px}.mini-chart .b{width:7px;border-radius:2px 2px 0 0;background:var(--primary);opacity:.85;min-height:2px}.detail-card{background:#fff;border:1px solid var(--gray-100);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:24px;margin-bottom:20px}.detail-head{display:flex;align-items:center;gap:12px;margin-bottom:4px}.detail-head h3{font-size:16px;font-weight:700;color:var(--gray-800);display:flex;align-items:center;gap:10px}.detail-meta{font-size:12px;color:var(--gray-500);margin-bottom:18px}.trend-grid{display:grid;grid-template-columns:3fr 2fr;gap:20px;margin-bottom:20px}.chart-card h4{font-size:13px;font-weight:600;color:var(--gray-700);margin-bottom:12px}.chart-legend{display:flex;gap:16px;margin-bottom:8px;font-size:11px;color:var(--gray-500)}.chart-legend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:4px;vertical-align:-1px}.chart-legend .lg-bar i{background:var(--primary)}.chart-legend .lg-line i{background:var(--accent);border-radius:50%}.trend-svg{width:100%;height:auto;display:block}.timeline{display:flex;flex-direction:column;gap:8px}.tl-row{display:flex;align-items:center;gap:10px}.tl-label{width:52px;font-size:11px;color:var(--gray-400);text-align:right;flex-shrink:0;font-variant-numeric:tabular-nums}.tl-dots{flex:1;display:flex;align-items:center;gap:4px;flex-wrap:wrap;min-height:14px}.tl-dots .dot{width:8px;height:8px;border-radius:50%;background:var(--primary);opacity:.85}.tl-dots .dot.hi{background:var(--danger)}.tl-dots .dot.ok{background:var(--success)}.tl-count{width:34px;font-size:11px;color:var(--gray-500);flex-shrink:0;text-align:right;font-variant-numeric:tabular-nums}.tl-note{font-size:11px;color:var(--gray-400);margin-top:8px;line-height:1.7}.tl-none{font-size:11px;color:var(--gray-300)}.q-list-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.q-list-head h4{font-size:13px;font-weight:600;color:var(--gray-700)}.q-rule{font-size:11px;color:var(--gray-400)}.btn-review{padding:8px 16px;border:none;background:var(--primary);color:#fff;border-radius:8px;font-size:12px;font-weight:500;transition:background .2s}.btn-review:hover{background:var(--primary-dark)}.q-row{display:flex;align-items:center;padding:12px 14px;border:1px solid var(--gray-100);border-radius:8px;margin-bottom:8px;background:#fff}.q-pos-row{display:flex;align-items:baseline;gap:12px;margin-bottom:3px;font-size:11px;color:var(--gray-400)}.q-pos{font-variant-numeric:tabular-nums}.q-diff{color:#f59e0b;letter-spacing:2px;font-size:12px}.q-meta-line{display:inline-flex;align-items:center;padding:2px 10px;border-radius:12px;background:#dbeafe;color:#1e40af;font-weight:600;white-space:nowrap;flex-shrink:0}.q-info{flex:1;min-width:0}.q-title{font-size:13px;font-weight:500;color:var(--gray-800);line-height:1.6;word-break:break-word}.q-subs{margin-top:8px;padding-top:8px;border-top:1px dashed var(--gray-100);display:flex;flex-direction:column;gap:6px}.q-sub{display:flex;align-items:baseline;gap:8px;font-size:12px;color:var(--gray-600);line-height:1.6}.ql-label{color:var(--primary);font-weight:600;flex-shrink:0;font-size:11px}.status-pill.pending{background:#fee2e2;color:#b91c1c}.status-pill.fixing{background:var(--gray-100);color:var(--gray-600)}.status-pill.mastered{background:#d1fae5;color:#065f46}@media(max-width:900px){.kp-panel .stats-row{grid-template-columns:repeat(2,1fr)}.trend-grid{grid-template-columns:1fr}}
