@import"https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;500;600;700&family=Orbitron:wght@400;500;600;700;800;900&display=swap";:root{--primary: #E63946;--primary-light: rgba(230, 57, 70, .08);--secondary: #FFB703;--bg: #F5F5F7;--surface: #FFFFFF;--text: #1D1D1F;--text-secondary: #86868B;--border: #D2D2D7;--radius: 14px;--font: "Noto Sans SC", -apple-system, sans-serif}[data-theme=warm]{--primary: #6366F1;--primary-light: rgba(99, 102, 241, .08);--secondary: #F43F5E;--bg: #EEEFFF;--border: #C7D2FE}[data-theme=dark]{--primary: #38BDF8;--primary-light: rgba(56, 189, 248, .1);--secondary: #34D399;--bg: #0F172A;--surface: #1E293B;--text: #F1F5F9;--text-secondary: #94A3B8;--border: #334155}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:var(--font);line-height:1.6;min-height:100dvh;-webkit-tap-highlight-color:transparent;transition:background .3s,color .3s}body.dashboard-mode{overflow:hidden}body.dashboard-mode .nav-bar{display:none}body.dashboard-mode .container{max-width:none;margin:0;padding:0}.nav-bar{background:var(--surface);border-bottom:1px solid var(--border);padding:14px 16px;position:sticky;top:0;z-index:100;transition:background .3s}.nav-inner{max-width:460px;margin:auto;display:flex;justify-content:space-between;align-items:center}.nav-title{font-weight:800;font-size:1rem}.nav-btn{background:none;border:1px solid var(--border);border-radius:8px;padding:4px 10px;font-size:.8rem;color:var(--text-secondary);cursor:pointer}.container{max-width:460px;margin:auto;padding:20px 16px 80px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:24px 20px;box-shadow:0 2px 10px #0000000a;transition:background .3s,border .3s}.section-badge{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:999px;font-size:.8rem;font-weight:700;margin-bottom:16px}.progress-bar{height:6px;background:var(--border);border-radius:3px;margin-bottom:20px;overflow:hidden}.progress-fill{height:100%;background:var(--primary);transition:width .4s ease}.q-title{font-size:1.15rem;font-weight:700;line-height:1.5;margin-bottom:20px}.img-group{display:flex;gap:10px;margin-bottom:20px}.img-group.single{display:block}.img-group img{flex:1;min-width:0;border-radius:10px;border:1px solid var(--border);display:block;object-fit:cover}.img-group.single img{width:100%;max-height:300px;object-fit:contain;background:#fafafa}.opt-btn{width:100%;text-align:left;padding:16px;margin-bottom:10px;border:2px solid var(--border);border-radius:var(--radius);background:var(--surface);font-size:1rem;font-weight:600;cursor:pointer;color:var(--text);transition:all .2s}.opt-btn:active{transform:scale(.98)}.opt-btn.correct{border-color:#10b981;background:#10b98114}.opt-btn.wrong{border-color:#ef4444;background:#ef444414}.feedback{margin-top:14px;padding:14px;border-radius:10px;background:var(--primary-light);font-size:.95rem;line-height:1.5}.cloze-text{font-size:1.15rem;line-height:2.4;margin-bottom:20px}.blank{display:inline-block;min-width:80px;height:34px;margin:0 4px;border-bottom:2px dashed var(--primary);text-align:center;color:var(--primary);font-weight:800;cursor:pointer;vertical-align:middle;border-radius:4px;background:var(--primary-light);padding:0 8px;transition:all .2s}.blank.filled{background:var(--primary);color:#fff;border-bottom:none;border-radius:6px}.overlay{position:fixed;inset:0;background:#00000073;z-index:200;opacity:0;pointer-events:none;transition:opacity .3s}.overlay.open{opacity:1;pointer-events:auto}.sheet{position:fixed;bottom:0;left:0;right:0;background:var(--surface);border-radius:24px 24px 0 0;padding:28px 20px calc(20px + env(safe-area-inset-bottom));z-index:201;transform:translateY(100%);transition:transform .35s cubic-bezier(.16,1,.3,1);box-shadow:0 -8px 30px #00000026}.sheet.open{transform:translateY(0)}.sheet-handle{width:36px;height:4px;background:var(--border);border-radius:2px;margin:0 auto 20px}.sheet-title{font-weight:700;color:var(--text-secondary);margin-bottom:14px;text-align:center}.sheet-opt{width:100%;padding:16px;margin-bottom:10px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);font-size:1.05rem;font-weight:600;cursor:pointer;color:var(--text);transition:all .2s}.sheet-opt:active{background:var(--border)}.reason-box{margin-bottom:18px;padding:16px;border:1px solid var(--border);border-radius:var(--radius);background:var(--primary-light)}.reason-label{display:block;font-weight:700;margin-bottom:8px;font-size:.95rem}.reason-textarea{width:100%;min-height:80px;border:1px solid var(--border);border-radius:10px;padding:10px 12px;font-size:.95rem;resize:vertical;color:var(--text);background:var(--surface);font-family:var(--font)}.reason-textarea:focus{outline:none;border-color:var(--primary)}.reason-hint{margin-top:6px;font-size:.8rem;color:var(--text-secondary)}.action-btn{width:100%;padding:16px;border:none;border-radius:var(--radius);background:var(--primary);color:#fff;font-size:1.1rem;font-weight:700;cursor:pointer;margin-top:16px;transition:all .2s;box-shadow:0 4px #00000014}.action-btn:active{transform:translateY(2px);box-shadow:none}.action-btn:disabled{opacity:.4;pointer-events:none}.theme-row{display:flex;justify-content:center;gap:12px;margin-bottom:20px}.theme-pill{width:34px;height:34px;border-radius:50%;border:3px solid white;cursor:pointer;box-shadow:0 2px 8px #0000001a;transition:.2s}.theme-pill.active{transform:scale(1.2);box-shadow:0 0 12px #0003}.stars{font-size:3rem;text-align:center;margin:12px 0}.chart-box{margin-top:20px;padding:12px;background:var(--bg);border-radius:var(--radius)}.admin-table{width:100%;border-collapse:collapse;font-size:.82rem;margin-top:16px}.admin-table th,.admin-table td{border-bottom:1px solid var(--border);padding:10px 6px;text-align:left;vertical-align:top}.admin-table th{font-weight:800;white-space:nowrap}.hidden{display:none!important}@keyframes fadeUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.anim{animation:fadeUp .4s ease}.dashboard-fit{--dash-bg-deep: #030814;--dash-bg-primary: #061026;--dash-bg-secondary: #0a1a3a;--dash-bg-card: rgba(10, 30, 70, .6);--dash-bg-card-hover: rgba(15, 45, 90, .7);--dash-bg-table-header: rgba(20, 60, 120, .8);--dash-bg-table-row: rgba(10, 35, 75, .4);--dash-bg-table-row-alt: rgba(15, 45, 90, .3);--dash-accent-cyan: #00d4ff;--dash-accent-blue: #1e90ff;--dash-accent-light-blue: #4facfe;--dash-accent-green: #00e676;--dash-accent-orange: #ff9100;--dash-accent-red: #ff5252;--dash-accent-yellow: #ffd740;--dash-glow-cyan: 0 0 15px rgba(0, 212, 255, .4);--dash-glow-blue: 0 0 15px rgba(30, 144, 255, .3);--dash-glow-green: 0 0 10px rgba(0, 230, 118, .4);--dash-text-bright: #ffffff;--dash-text-primary: #e0f2fe;--dash-text-secondary: #94c5e8;--dash-text-muted: #5a8ab8;--dash-border-dim: rgba(0, 212, 255, .15);--dash-border-light: rgba(0, 212, 255, .3);--dash-border-glow: rgba(0, 212, 255, .5)}.dashboard-fit{position:fixed;inset:0;background:radial-gradient(ellipse 80% 60% at 50% 0%,rgba(0,100,200,.15),transparent 50%),radial-gradient(ellipse 60% 40% at 0% 100%,rgba(0,212,255,.08),transparent),radial-gradient(ellipse 60% 40% at 100% 100%,rgba(30,144,255,.08),transparent),linear-gradient(180deg,var(--dash-bg-deep) 0%,var(--dash-bg-primary) 50%,var(--dash-bg-secondary) 100%);overflow:hidden;font-family:Noto Sans SC,-apple-system,sans-serif}.dashboard-fit:before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(0,212,255,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(0,212,255,.03) 1px,transparent 1px);background-size:50px 50px;pointer-events:none;z-index:0}.dashboard-view{background:transparent;min-height:100%;padding:16px 24px 20px;position:relative;display:flex;flex-direction:column;gap:12px}.dashboard-toolbar{position:absolute;right:28px;top:20px;display:flex;gap:10px;z-index:20}.dashboard-toolbtn{padding:8px 16px;border-radius:6px;border:1px solid var(--dash-border-light);background:#000a14cc;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:var(--dash-neon-cyan);font-weight:600;font-size:.8rem;font-family:Fira Code,monospace;cursor:pointer;transition:all .2s ease;text-transform:uppercase;letter-spacing:.05em;position:relative;overflow:hidden}.dashboard-toolbtn:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(0,240,255,.2),transparent);transition:left .4s ease}.dashboard-toolbtn:hover{border-color:var(--dash-neon-cyan);box-shadow:var(--dash-glow-cyan);color:var(--dash-text-bright)}.dashboard-toolbtn:hover:before{left:100%}.dashboard-toolbtn:active{transform:scale(.97)}.dashboard-header{text-align:center;padding:16px 0 12px;position:relative}.dashboard-header:after{content:"";position:absolute;bottom:0;left:50%;transform:translate(-50%);width:60%;max-width:600px;height:1px;background:linear-gradient(90deg,transparent,var(--dash-neon-cyan),var(--dash-neon-purple),transparent);box-shadow:0 0 10px var(--dash-neon-cyan)}.dashboard-title{font-family:Orbitron,sans-serif;font-size:2.4rem;font-weight:800;letter-spacing:.15em;text-transform:uppercase;background:linear-gradient(135deg,var(--dash-neon-cyan) 0%,var(--dash-neon-blue) 40%,var(--dash-neon-purple) 70%,var(--dash-neon-pink) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:6px;position:relative;animation:titleShine 4s ease-in-out infinite}@keyframes titleShine{0%,to{filter:brightness(1) drop-shadow(0 0 20px rgba(0,240,255,.5))}50%{filter:brightness(1.2) drop-shadow(0 0 30px rgba(0,240,255,.7))}}.dashboard-subtitle{font-family:Fira Code,monospace;color:var(--dash-neon-cyan);font-size:.85rem;letter-spacing:.3em;text-transform:uppercase;opacity:.8}.dashboard-fit{--dash-bg-deep: #020617;--dash-bg-primary: #0a1628;--dash-bg-secondary: #0f172a;--dash-bg-card: rgba(15, 30, 60, .7);--dash-bg-card-hover: rgba(25, 50, 90, .8);--dash-bg-table-header: rgba(20, 60, 110, .9);--dash-bg-table-row: rgba(15, 40, 75, .5);--dash-bg-table-row-alt: rgba(20, 50, 85, .4);--dash-accent-cyan: #06b6d4;--dash-accent-blue: #0ea5e9;--dash-accent-light-blue: #38bdf8;--dash-accent-green: #22c55e;--dash-accent-orange: #f59e0b;--dash-accent-red: #ef4444;--dash-accent-yellow: #eab308;--dash-glow-cyan: 0 0 20px rgba(6, 182, 212, .3);--dash-glow-blue: 0 0 15px rgba(14, 165, 233, .25);--dash-text-bright: #f8fafc;--dash-text-primary: #e2e8f0;--dash-text-secondary: #94a3b8;--dash-text-muted: #64748b;--dash-border-dim: rgba(6, 182, 212, .1);--dash-border-light: rgba(6, 182, 212, .25);--dash-border-glow: rgba(6, 182, 212, .4)}.dashboard-fit{position:fixed;inset:0;background:radial-gradient(ellipse 70% 50% at 50% 0%,rgba(14,165,233,.12),transparent 60%),radial-gradient(ellipse 50% 30% at 10% 90%,rgba(6,182,212,.06),transparent),radial-gradient(ellipse 50% 30% at 90% 90%,rgba(56,189,248,.06),transparent),linear-gradient(180deg,var(--dash-bg-deep) 0%,var(--dash-bg-primary) 40%,var(--dash-bg-secondary) 100%);overflow:hidden;font-family:Noto Sans SC,-apple-system,sans-serif}.dashboard-fit:before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(6,182,212,.02) 1px,transparent 1px),linear-gradient(90deg,rgba(6,182,212,.02) 1px,transparent 1px);background-size:60px 60px;pointer-events:none;z-index:0}.dashboard-stage{position:absolute;left:0;top:0;width:1920px;height:1080px;transform-origin:top left;z-index:2}.dashboard-view{background:transparent;min-height:100%;padding:20px 32px 24px;position:relative;display:flex;flex-direction:column;gap:16px}.dashboard-header{text-align:center;padding:20px 0 16px;position:relative}.dashboard-header:after{content:"";position:absolute;bottom:0;left:50%;transform:translate(-50%);width:80%;max-width:800px;height:2px;background:linear-gradient(90deg,transparent,var(--dash-accent-cyan),var(--dash-accent-blue),transparent)}.dashboard-title{font-size:2.2rem;font-weight:800;letter-spacing:.1em;color:var(--dash-text-bright);margin-bottom:8px;text-shadow:0 0 30px rgba(6,182,212,.3)}.dashboard-subtitle{color:var(--dash-accent-cyan);font-size:.9rem;letter-spacing:.2em;text-transform:uppercase;opacity:.8}.stats-row{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;margin-bottom:4px}.stat-box{background:var(--dash-bg-card);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:12px;padding:20px;text-align:center;border:1px solid var(--dash-border-dim);position:relative;overflow:hidden;transition:all .3s ease}.stat-box:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,transparent,var(--dash-accent-cyan),transparent);opacity:.6}.stat-box:hover{border-color:var(--dash-border-light);background:var(--dash-bg-card-hover);transform:translateY(-2px)}.stat-box:nth-child(1):before{background:linear-gradient(90deg,transparent,var(--dash-accent-cyan),transparent)}.stat-box:nth-child(2):before{background:linear-gradient(90deg,transparent,var(--dash-accent-green),transparent)}.stat-box:nth-child(3):before{background:linear-gradient(90deg,transparent,var(--dash-accent-orange),transparent)}.stat-box:nth-child(4):before{background:linear-gradient(90deg,transparent,var(--dash-accent-blue),transparent)}.stat-icon{font-size:1.6rem;margin-bottom:8px;display:block}.stat-number{font-size:2.4rem;font-weight:800;font-variant-numeric:tabular-nums;color:var(--dash-text-bright);line-height:1.1;margin-bottom:4px}.stat-box:nth-child(1) .stat-number{color:var(--dash-accent-cyan);text-shadow:0 0 20px rgba(6,182,212,.4)}.stat-box:nth-child(2) .stat-number{color:var(--dash-accent-green);text-shadow:0 0 20px rgba(34,197,94,.4)}.stat-box:nth-child(3) .stat-number{color:var(--dash-accent-orange);text-shadow:0 0 20px rgba(245,158,11,.4)}.stat-box:nth-child(4) .stat-number{color:var(--dash-accent-blue);text-shadow:0 0 20px rgba(14,165,233,.4)}.stat-desc{font-size:.75rem;color:var(--dash-text-secondary);letter-spacing:.05em}.dashboard-grid{display:grid;grid-template-columns:1fr 380px;gap:20px;flex:1;min-height:0}.panel{background:var(--dash-bg-card);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-radius:12px;border:1px solid var(--dash-border-dim);position:relative;overflow:hidden;display:flex;flex-direction:column}.panel:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,var(--dash-accent-cyan),var(--dash-accent-blue),transparent);opacity:.7}.panel-title{font-size:1rem;font-weight:700;padding:16px 20px;color:var(--dash-text-bright);border-bottom:1px solid var(--dash-border-dim);display:flex;align-items:center;gap:10px;flex-shrink:0}.panel-title:before{content:"";width:4px;height:18px;background:linear-gradient(180deg,var(--dash-accent-cyan),var(--dash-accent-blue));border-radius:2px}.data-table-container{flex:1;overflow:auto;padding:0}.data-table{width:100%;border-collapse:collapse;font-size:.9rem}.data-table th{background:var(--dash-bg-table-header);color:var(--dash-accent-cyan);font-weight:600;padding:14px 12px;text-align:center;border-bottom:1px solid var(--dash-border-light);white-space:nowrap;position:sticky;top:0;z-index:1}.data-table td{padding:12px;text-align:center;border-bottom:1px solid rgba(6,182,212,.08);color:var(--dash-text-primary)}.data-table tr:nth-child(2n){background:var(--dash-bg-table-row-alt)}.data-table tr:hover{background:#06b6d414}.data-table .index-col{width:50px;color:var(--dash-text-muted);font-weight:500}.data-table .name-col{text-align:left;font-weight:500;color:var(--dash-text-bright)}.status-badge{display:inline-flex;align-items:center;justify-content:center;padding:4px 12px;border-radius:4px;font-size:.8rem;font-weight:600;min-width:70px}.status-badge.excellent{background:#22c55e26;color:#4ade80;border:1px solid rgba(34,197,94,.3)}.status-badge.good{background:#f59e0b26;color:#fbbf24;border:1px solid rgba(245,158,11,.3)}.status-badge.poor{background:#ef444426;color:#f87171;border:1px solid rgba(239,68,68,.3)}.status-cards{display:flex;flex-direction:column;gap:16px;padding:16px;flex:1}.status-card{background:linear-gradient(135deg,#0f1e3ccc,#0a1932e6);border:1px solid var(--dash-border-dim);border-radius:12px;padding:20px;position:relative;overflow:hidden;transition:all .3s ease}.status-card:before{content:"";position:absolute;top:0;left:0;width:100%;height:3px}.status-card:hover{border-color:var(--dash-border-light);transform:translateY(-2px)}.status-card.excellent:before{background:linear-gradient(90deg,var(--dash-accent-green),transparent)}.status-card.good:before{background:linear-gradient(90deg,var(--dash-accent-orange),transparent)}.status-card.poor:before{background:linear-gradient(90deg,var(--dash-accent-red),transparent)}.status-card-header{display:flex;align-items:center;gap:10px;margin-bottom:12px}.status-card-icon{width:36px;height:36px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:1.2rem}.status-card.excellent .status-card-icon{background:#22c55e33}.status-card.good .status-card-icon{background:#f59e0b33}.status-card.poor .status-card-icon{background:#ef444433}.status-card-title{font-size:.85rem;color:var(--dash-text-secondary);font-weight:500}.status-card-main{font-size:1.8rem;font-weight:700;margin-bottom:12px}.status-card.excellent .status-card-main{color:#4ade80}.status-card.good .status-card-main{color:#fbbf24}.status-card.poor .status-card-main{color:#f87171}.status-card-stats{display:flex;align-items:baseline;gap:8px}.status-card-percent{font-size:2rem;font-weight:800;color:var(--dash-text-bright)}.status-card-count{font-size:.85rem;color:var(--dash-text-secondary)}.dashboard-toolbar{position:absolute;right:32px;top:24px;display:flex;gap:12px;z-index:20}.dashboard-toolbtn{padding:10px 18px;border-radius:6px;border:1px solid var(--dash-border-light);background:#0a1e3ccc;color:var(--dash-accent-cyan);font-weight:600;font-size:.85rem;cursor:pointer;transition:all .2s ease}.dashboard-toolbtn:hover{background:#06b6d426;border-color:var(--dash-accent-cyan)}.live-indicator{position:absolute;right:32px;top:80px;display:flex;align-items:center;gap:8px;color:var(--dash-accent-green);font-size:.8rem;font-weight:500}.live-indicator:before{content:"";width:8px;height:8px;background:var(--dash-accent-green);border-radius:50%;box-shadow:0 0 10px var(--dash-accent-green);animation:livePulse 2s ease-in-out infinite}@keyframes livePulse{0%,to{opacity:1}50%{opacity:.4}}.refresh-info{text-align:center;color:var(--dash-text-muted);font-size:.8rem;padding:12px;display:flex;align-items:center;justify-content:center;gap:10px;flex-shrink:0}.back-btn{display:block;margin:0 auto;padding:12px 28px;background:transparent;color:var(--dash-accent-cyan);border:1px solid var(--dash-accent-cyan);border-radius:6px;font-weight:600;font-size:.9rem;cursor:pointer;transition:all .25s ease}.back-btn:hover{background:#06b6d426;box-shadow:var(--dash-glow-cyan)}.data-table-container::-webkit-scrollbar,.status-cards::-webkit-scrollbar{width:6px;height:6px}.data-table-container::-webkit-scrollbar-track,.status-cards::-webkit-scrollbar-track{background:#06b6d40d;border-radius:3px}.data-table-container::-webkit-scrollbar-thumb,.status-cards::-webkit-scrollbar-thumb{background:var(--dash-border-light);border-radius:3px}.data-table-container::-webkit-scrollbar-thumb:hover,.status-cards::-webkit-scrollbar-thumb:hover{background:var(--dash-accent-cyan)}@media(max-width:1400px){.dashboard-grid{grid-template-columns:1fr 320px}}@media(max-width:1200px){.dashboard-grid{grid-template-columns:1fr}.stats-row{grid-template-columns:repeat(2,1fr)}}.dashboard-grid{display:grid;grid-template-columns:340px 1fr 340px;gap:16px;flex:1;min-height:0}.panel{background:linear-gradient(160deg,#001428d9,#050a19e6);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-radius:12px;padding:18px;border:1px solid var(--dash-border-dim);position:relative;overflow:hidden;display:flex;flex-direction:column}.panel:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent,var(--dash-neon-cyan),var(--dash-neon-purple),transparent);opacity:.7}.panel:after{content:"";position:absolute;top:0;left:0;width:2px;height:60px;background:linear-gradient(180deg,var(--dash-neon-cyan),transparent)}.panel:hover{border-color:var(--dash-border-light)}.panel-title{font-family:Orbitron,sans-serif;font-size:.85rem;font-weight:700;margin-bottom:14px;display:flex;align-items:center;gap:10px;color:var(--dash-text-bright);letter-spacing:.1em;text-transform:uppercase;flex-shrink:0}.panel-title:before{content:"";width:6px;height:6px;background:var(--dash-neon-cyan);border-radius:1px;box-shadow:var(--dash-glow-cyan);animation:indicatorBlink 1.5s ease-in-out infinite}@keyframes indicatorBlink{0%,to{opacity:1;box-shadow:var(--dash-glow-cyan)}50%{opacity:.5;box-shadow:0 0 5px var(--dash-neon-cyan)}}.key-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:14px;flex-shrink:0}.key-box{background:#00f0ff08;border:1px solid rgba(0,240,255,.1);border-radius:8px;padding:12px 10px;text-align:center;transition:all .25s ease;position:relative;overflow:hidden}.key-box:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,var(--dash-neon-cyan),transparent);opacity:0;transition:opacity .25s ease}.key-box:hover{background:#00f0ff14;border-color:#00f0ff40;transform:translateY(-2px)}.key-box:hover:before{opacity:1}.key-label{font-size:.65rem;color:var(--dash-text-muted);margin-bottom:4px;letter-spacing:.05em;text-transform:uppercase}.key-value{font-family:Orbitron,sans-serif;font-size:1.5rem;font-weight:700;color:var(--dash-neon-cyan);text-shadow:0 0 15px rgba(0,240,255,.5)}.worst-box{background:linear-gradient(135deg,#ef444414,#b91c1c0d);border:1px solid rgba(239,68,68,.2);border-radius:10px;padding:14px;position:relative;flex-shrink:0}.worst-box:before{content:"";position:absolute;top:0;left:0;width:3px;height:100%;background:linear-gradient(180deg,var(--dash-neon-red),transparent);border-radius:10px 0 0 10px}.worst-title{font-weight:700;color:#fca5a5;margin-bottom:6px;font-size:.9rem;display:flex;align-items:center;gap:8px;text-shadow:0 0 10px rgba(239,68,68,.3)}.worst-title:before{content:"!";width:18px;height:18px;background:var(--dash-neon-red);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:800;color:#fff;box-shadow:var(--dash-glow-red);animation:alertPulse 1s ease-in-out infinite}@keyframes alertPulse{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}.worst-sub{font-size:.8rem;color:var(--dash-text-secondary);margin-bottom:10px}.worst-names{display:flex;flex-wrap:wrap;gap:6px}.worst-tag{padding:5px 10px;border-radius:4px;background:#ef444426;border:1px solid rgba(239,68,68,.3);color:#fca5a5;font-size:.75rem;font-weight:500;transition:all .2s ease}.worst-tag:hover{background:#ef444440;box-shadow:0 0 10px #ef444433}.student-list{display:flex;flex-wrap:wrap;gap:6px;flex:1;overflow-y:auto;padding-right:4px;align-content:flex-start}.student-list::-webkit-scrollbar{width:3px}.student-list::-webkit-scrollbar-track{background:#00f0ff0d;border-radius:2px}.student-list::-webkit-scrollbar-thumb{background:var(--dash-neon-cyan);border-radius:2px}.student-tag{background:linear-gradient(135deg,#3b82f626,#a855f726);border:1px solid rgba(139,92,246,.25);padding:6px 12px;border-radius:6px;font-size:.8rem;color:var(--dash-text-primary);transition:all .2s ease;white-space:nowrap}.student-tag:hover{background:linear-gradient(135deg,#3b82f640,#a855f740);border-color:#8b5cf680;box-shadow:0 0 15px #a855f733;transform:translateY(-1px)}.activity-stats{display:flex;flex-direction:column;gap:16px;flex:1;overflow-y:auto}.activity-item{padding:14px;background:#00f0ff05;border-radius:10px;border:1px solid rgba(0,240,255,.08);transition:all .2s ease}.activity-item:hover{background:#00f0ff0d;border-color:#00f0ff26}.activity-name{font-size:.85rem;color:var(--dash-text-bright);margin-bottom:10px;font-weight:600;display:flex;justify-content:space-between;align-items:center;letter-spacing:.02em}.activity-name span{font-family:Orbitron,sans-serif;font-size:.75rem;color:var(--dash-neon-cyan);font-weight:500;text-shadow:0 0 10px rgba(0,240,255,.3)}.score-bar{height:24px;background:#0006;border-radius:4px;overflow:hidden;display:flex;position:relative;border:1px solid rgba(255,255,255,.05)}.score-bar:before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(90deg,transparent,transparent 10px,rgba(255,255,255,.02) 10px,rgba(255,255,255,.02) 11px);pointer-events:none}.score-segment{height:100%;display:flex;align-items:center;justify-content:center;font-family:Orbitron,sans-serif;font-size:.7rem;font-weight:700;color:#fff;transition:all .8s cubic-bezier(.4,0,.2,1);position:relative;min-width:24px;text-shadow:0 1px 2px rgba(0,0,0,.5)}.score-segment.excellent{background:linear-gradient(135deg,var(--dash-neon-green) 0%,#16a34a 100%);box-shadow:inset 0 1px #ffffff4d,inset 0 -1px #0003}.score-segment.good{background:linear-gradient(135deg,var(--dash-neon-orange) 0%,#ea580c 100%);box-shadow:inset 0 1px #ffffff4d,inset 0 -1px #0003}.score-segment.poor{background:linear-gradient(135deg,var(--dash-neon-red) 0%,#dc2626 100%);box-shadow:inset 0 1px #ffffff4d,inset 0 -1px #0003}.score-legend{display:flex;justify-content:space-between;margin-top:10px;font-size:.7rem;color:var(--dash-text-muted)}.legend-item{display:flex;align-items:center;gap:6px;transition:color .2s ease}.legend-item:hover{color:var(--dash-text-secondary)}.legend-dot{width:8px;height:8px;border-radius:2px;box-shadow:0 0 6px currentColor}.legend-dot.excellent{background:var(--dash-neon-green);color:var(--dash-neon-green)}.legend-dot.good{background:var(--dash-neon-orange);color:var(--dash-neon-orange)}.legend-dot.poor{background:var(--dash-neon-red);color:var(--dash-neon-red)}.recommendation-grid{display:flex;flex-direction:column;gap:10px;flex:1;overflow-y:auto}.recommendation-card{border-radius:8px;padding:14px;border-left:3px solid;background:#0003;transition:all .25s ease;position:relative}.recommendation-card:before{content:"";position:absolute;inset:0;border-radius:8px;opacity:0;transition:opacity .25s ease}.recommendation-card:hover{transform:translate(4px)}.recommendation-card:hover:before{opacity:1}.recommendation-card.warning{border-color:var(--dash-neon-red)}.recommendation-card.warning:before{background:linear-gradient(90deg,rgba(239,68,68,.1),transparent)}.recommendation-card.success{border-color:var(--dash-neon-green)}.recommendation-card.success:before{background:linear-gradient(90deg,rgba(34,197,94,.1),transparent)}.recommendation-card.info{border-color:var(--dash-neon-blue)}.recommendation-card.info:before{background:linear-gradient(90deg,rgba(59,130,246,.1),transparent)}.recommendation-title{font-size:.85rem;font-weight:700;margin-bottom:6px;color:var(--dash-text-bright)}.recommendation-content{font-size:.8rem;color:var(--dash-text-secondary);line-height:1.5}.refresh-info{text-align:center;color:var(--dash-text-muted);font-size:.75rem;padding:10px;display:flex;align-items:center;justify-content:center;gap:10px;letter-spacing:.05em;flex-shrink:0}.refresh-info:before{content:"LIVE";padding:3px 8px;background:#22c55e33;border:1px solid rgba(34,197,94,.4);border-radius:4px;color:var(--dash-neon-green);font-size:.65rem;font-weight:700;letter-spacing:.1em;animation:livePulse 2s ease-in-out infinite}@keyframes livePulse{0%,to{opacity:1}50%{opacity:.6}}.back-btn{display:block;margin:12px auto 0;padding:10px 24px;background:transparent;color:var(--dash-neon-cyan);border:1px solid var(--dash-neon-cyan);border-radius:6px;font-family:Fira Code,monospace;font-weight:600;font-size:.85rem;cursor:pointer;transition:all .25s ease;text-transform:uppercase;letter-spacing:.1em;position:relative;overflow:hidden;flex-shrink:0}.back-btn:before{content:"";position:absolute;inset:0;background:var(--dash-neon-cyan);transform:translate(-100%);transition:transform .3s ease;z-index:-1}.back-btn:hover{color:var(--dash-bg-deep);box-shadow:var(--dash-glow-cyan)}.back-btn:hover:before{transform:translate(0)}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton{background:linear-gradient(90deg,#00f0ff0d 25%,#00f0ff1a,#00f0ff0d 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:4px}@media(max-width:1600px){.dashboard-grid{grid-template-columns:300px 1fr 300px}}@media(max-width:1400px){.dashboard-grid{grid-template-columns:1fr 1fr}.stats-row{grid-template-columns:repeat(2,1fr)}}@media(max-width:1000px){.dashboard-grid{grid-template-columns:1fr}}

/* ================= Combobox (可输入 + 自动展开下拉框) ================= */
.combobox-container {
  position: relative;
  width: 100%;
  margin-bottom: 16px;
}

.combobox-input-wrap {
  position: relative;
  display: flex;
  align-items: center;
}

.combobox-input {
  width: 100%;
  box-sizing: border-box;
  padding-right: 36px !important;
  cursor: text;
}

.combobox-arrow {
  position: absolute;
  right: 12px;
  top: 50%;
  transform: translateY(-50%);
  pointer-events: none;
  font-size: 0.8rem;
  color: var(--text-secondary, #64748b);
  transition: transform 0.2s ease;
}

.combobox-container.open .combobox-arrow {
  transform: translateY(-50%) rotate(180deg);
}

.combobox-dropdown {
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  right: 0;
  background: var(--surface, #ffffff);
  border: 1px solid var(--border, #e2e8f0);
  border-radius: 12px;
  box-shadow: 0 10px 25px rgba(0, 0, 0, 0.1);
  max-height: 220px;
  overflow-y: auto;
  z-index: 1000;
  padding: 6px;
  display: none;
  animation: comboFadeIn 0.15s ease-out;
}

@keyframes comboFadeIn {
  from { opacity: 0; transform: translateY(-4px); }
  to { opacity: 1; transform: translateY(0); }
}

.combobox-container.open .combobox-dropdown {
  display: block;
}

.combobox-item {
  padding: 8px 12px;
  border-radius: 8px;
  font-size: 0.9rem;
  color: var(--text, #1e293b);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: space-between;
  transition: all 0.15s ease;
}

.combobox-item:hover, .combobox-item.focused {
  background: rgba(99, 102, 241, 0.1);
  color: var(--primary, #4f46e5);
}

.combobox-item.selected {
  background: var(--primary, #4f46e5);
  color: #ffffff;
  font-weight: 700;
}

.combobox-item.create-new {
  border-top: 1px dashed var(--border, #e2e8f0);
  margin-top: 4px;
  padding-top: 10px;
  color: #059669;
  font-weight: 700;
  background: #f0fdf4;
}

.combobox-item.create-new:hover {
  background: #dcfce7;
  color: #047857;
}

.combobox-empty {
  padding: 12px;
  text-align: center;
  color: var(--text-secondary, #64748b);
  font-size: 0.85rem;
}

[data-theme="dark"] .combobox-dropdown {
  background: var(--surface, #1e293b);
  border-color: var(--border, #334155);
}

[data-theme="dark"] .combobox-item {
  color: var(--text, #f1f5f9);
}

[data-theme="dark"] .combobox-item:hover,
[data-theme="dark"] .combobox-item.focused {
  background: rgba(56, 189, 248, 0.15);
  color: var(--primary, #38bdf8);
}

[data-theme="dark"] .combobox-item.create-new {
  background: rgba(5, 150, 105, 0.15);
  color: #34d399;
  border-color: #334155;
}

[data-theme="dark"] .combobox-item.create-new:hover {
  background: rgba(5, 150, 105, 0.25);
  color: #6ee7b7;
}

/* ================= 全局输入框/下拉框高质感升级 ================= */
.reason-textarea {
  min-height: 42px !important;
  height: 42px;
  line-height: 1.5;
  padding: 9px 14px !important;
  font-size: 0.95rem;
  border: 1.5px solid var(--border) !important;
  border-radius: 10px !important;
  background: var(--surface) !important;
  color: var(--text) !important;
  transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1) !important;
  box-sizing: border-box;
}

textarea.reason-textarea {
  height: auto !important;
  min-height: 84px !important;
}

.reason-textarea:hover {
  border-color: var(--text-secondary) !important;
}

.reason-textarea:focus {
  outline: none !important;
  border-color: var(--primary) !important;
  box-shadow: 0 0 0 3.5px var(--primary-light), 0 1px 3px rgba(0,0,0,0.04) !important;
  background: var(--surface) !important;
}

select.reason-textarea {
  padding-right: 36px !important;
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='%2386868b' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M19 9l-7 7-7-7'%3E%3C/path%3E%3C/svg%3E") !important;
  background-repeat: no-repeat !important;
  background-position: right 12px center !important;
  background-size: 14px 14px !important;
  cursor: pointer;
}

/* ================= 1. 卡片分类归箱组件 (Category Sorter) ================= */
.category-sorter-wrap {
  margin-bottom: 20px;
}
.sorter-pool-title {
  font-size: 0.88rem;
  font-weight: 700;
  color: var(--text-secondary);
  margin-bottom: 8px;
  display: flex;
  justify-content: space-between;
  align-items: center;
}
.sorter-pool {
  background: var(--bg);
  border: 1.5px dashed var(--border);
  border-radius: 12px;
  padding: 12px;
  min-height: 72px;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 16px;
  transition: all 0.2s ease;
}
.sorter-item {
  background: var(--surface);
  border: 1.5px solid var(--border);
  border-radius: 8px;
  padding: 8px 12px;
  font-size: 0.88rem;
  font-weight: 600;
  color: var(--text);
  cursor: pointer;
  box-shadow: 0 2px 5px rgba(0,0,0,0.04);
  transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1);
  display: inline-flex;
  align-items: center;
  gap: 6px;
  user-select: none;
}
.sorter-item:hover {
  transform: translateY(-2px);
  border-color: var(--primary);
  box-shadow: 0 4px 10px rgba(0,0,0,0.08);
}
.sorter-item.active {
  border-color: var(--primary);
  background: var(--primary-light);
  color: var(--primary);
  transform: scale(1.03);
  box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.2);
}
.buckets-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
  gap: 10px;
  margin-bottom: 16px;
}
.bucket-card {
  background: var(--surface);
  border: 2px solid var(--border);
  border-radius: 12px;
  padding: 12px 10px;
  min-height: 120px;
  display: flex;
  flex-direction: column;
  cursor: pointer;
  transition: all 0.2s ease;
  position: relative;
}
.bucket-card:hover, .bucket-card.target-hover {
  border-color: var(--bucket-color, var(--primary));
  box-shadow: 0 4px 14px rgba(0,0,0,0.06);
}
.bucket-header {
  font-weight: 800;
  font-size: 0.95rem;
  margin-bottom: 8px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  color: var(--bucket-color, var(--primary));
  border-bottom: 1.5px solid rgba(0,0,0,0.06);
  padding-bottom: 6px;
}
.bucket-count {
  font-size: 0.72rem;
  background: var(--bg);
  padding: 2px 6px;
  border-radius: 10px;
  color: var(--text-secondary);
}
.bucket-chips {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.bucket-chip {
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: 6px;
  padding: 5px 8px;
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--text);
  display: flex;
  align-items: center;
  justify-content: space-between;
  cursor: pointer;
  transition: all 0.15s ease;
}
.bucket-chip:hover {
  background: #fee2e2;
  border-color: #ef4444;
  color: #b91c1c;
}
.bucket-chip-remove {
  font-size: 0.75rem;
  opacity: 0.6;
}

/* ================= 2. 判断 + 即席说理复合题型 (Judgment Reason) ================= */
.judgment-reason-wrap {
  margin-bottom: 18px;
}
.reason-drawer {
  background: var(--surface);
  border: 1.5px solid var(--border);
  border-radius: 12px;
  padding: 14px;
  margin-top: 14px;
  animation: drawerSlide 0.25s cubic-bezier(0.16, 1, 0.3, 1);
}
@keyframes drawerSlide {
  from { opacity: 0; transform: translateY(-8px); }
  to { opacity: 1; transform: translateY(0); }
}

/* ================= 3. 多主体星级评价与寄语卡 (Star Evaluation) ================= */
.star-eval-card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 14px;
  padding: 16px;
  margin-bottom: 16px;
  box-shadow: 0 2px 8px rgba(0,0,0,0.03);
}
.star-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 10px 0;
  border-bottom: 1px solid rgba(0,0,0,0.05);
}
.star-row:last-child {
  border-bottom: none;
}
.star-label {
  font-weight: 700;
  font-size: 0.9rem;
  color: var(--text);
  flex: 1;
  padding-right: 10px;
}
.star-group {
  display: flex;
  gap: 6px;
}
.star-btn {
  font-size: 1.6rem;
  cursor: pointer;
  color: #d1d5db;
  transition: all 0.15s cubic-bezier(0.175, 0.885, 0.32, 1.275);
  line-height: 1;
  user-select: none;
}
.star-btn.active {
  color: #f59e0b;
  transform: scale(1.1);
  filter: drop-shadow(0 2px 4px rgba(245, 158, 11, 0.3));
}
.parent-comment-box {
  background: #fffbeb;
  border: 1.5px dashed #f59e0b;
  border-radius: 10px;
  padding: 12px;
  margin-top: 12px;
}
[data-theme="dark"] .parent-comment-box {
  background: rgba(245, 158, 11, 0.1);
}

/* ================= 4. 儿童手绘涂鸦板 (Drawing Board) ================= */
.drawing-board-wrap {
  margin-bottom: 20px;
}
.canvas-container {
  background: #ffffff;
  border: 2px solid var(--border);
  border-radius: 12px;
  touch-action: none;
  overflow: hidden;
  box-shadow: inset 0 2px 6px rgba(0,0,0,0.04);
}
.canvas-elem {
  width: 100%;
  height: 220px;
  display: block;
  background: #ffffff;
  cursor: crosshair;
}
.canvas-toolbar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 8px 10px;
  background: var(--bg);
  border-top: 1px solid var(--border);
  gap: 6px;
  flex-wrap: wrap;
}
.canvas-colors {
  display: flex;
  gap: 6px;
  align-items: center;
}
.color-dot {
  width: 22px;
  height: 22px;
  border-radius: 50%;
  border: 2px solid #fff;
  box-shadow: 0 0 0 1px #d1d5db;
  cursor: pointer;
  transition: transform 0.15s ease;
}
.color-dot.active {
  transform: scale(1.2);
  box-shadow: 0 0 0 2px var(--primary);
}
.canvas-actions {
  display: flex;
  gap: 6px;
}
.canvas-btn {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 6px;
  padding: 4px 10px;
  font-size: 0.78rem;
  font-weight: 600;
  cursor: pointer;
  color: var(--text);
  transition: all 0.15s ease;
}
.canvas-btn:hover {
  background: var(--border);
}
.canvas-btn.active {
  background: var(--primary);
  color: #fff;
  border-color: var(--primary);
}

/* ================= 5. 结构化多字段实践任务卡 (Practice Card) ================= */
.practice-card-wrap {
  margin-bottom: 20px;
}
.practice-field-item {
  margin-bottom: 14px;
}
.practice-field-label {
  font-weight: 700;
  font-size: 0.88rem;
  color: var(--text);
  margin-bottom: 6px;
  display: flex;
  align-items: center;
  gap: 6px;
}
.practice-field-num {
  display: inline-flex;
  width: 20px;
  height: 20px;
  background: var(--primary);
  color: #fff;
  border-radius: 50%;
  font-size: 0.75rem;
  align-items: center;
  justify-content: center;
  font-weight: 800;
}

/* ================= 6. 多选题目交互增强样式 (Multi Choice) ================= */
.multi-opt-btn {
  user-select: none;
  transition: all 0.18s cubic-bezier(0.16, 1, 0.3, 1);
}
.multi-opt-btn.selected {
  border-color: var(--primary) !important;
  background: var(--primary-light) !important;
  color: var(--primary) !important;
  transform: scale(1.01);
  box-shadow: 0 0 0 2px rgba(99, 102, 241, 0.2);
}
.multi-check-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  border-radius: 4px;
  font-size: 1.1rem;
  line-height: 1;
  transition: all 0.15s ease;
}
.multi-opt-btn.selected .multi-check-icon {
  color: var(--primary) !important;
  transform: scale(1.1);
}

/* ================= 7. 选项自定义补充输入抽屉样式 (Custom Option Input) ================= */
.custom-opt-wrapper {
  margin-bottom: 12px;
  width: 100%;
}
.custom-opt-wrapper .opt-btn {
  margin-bottom: 0 !important;
}
.custom-opt-drawer {
  background: #f8fafc;
  border: 1.5px solid var(--primary);
  border-top: none;
  border-radius: 0 0 12px 12px;
  padding: 12px 16px;
  margin-top: -4px;
  animation: drawerSlide 0.22s cubic-bezier(0.16, 1, 0.3, 1);
  box-shadow: 0 4px 14px rgba(99, 102, 241, 0.08);
  box-sizing: border-box;
}
.custom-opt-drawer .custom-input-label {
  font-size: 0.84rem;
  font-weight: 700;
  color: var(--primary);
  margin-bottom: 8px;
  display: flex;
  align-items: center;
  gap: 6px;
}
.custom-opt-drawer .custom-input-field {
  width: 100%;
  box-sizing: border-box;
  padding: 10px 14px;
  border: 1.5px solid #cbd5e1;
  border-radius: 8px;
  font-size: 0.92rem;
  color: #1e293b;
  outline: none;
  transition: all 0.2s ease;
  background: #ffffff;
}
.custom-opt-drawer .custom-input-field:focus {
  border-color: var(--primary);
  box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.15);
}



