*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--color-primary: #7C3AED;--color-primary-light: #A78BFA;--color-primary-dark: #5B21B6;--color-accent: #06B6D4;--color-success: #10B981;--color-warning: #F59E0B;--color-danger: #EF4444;--color-bg: #080818;--color-surface: rgba(255,255,255,.05);--color-surface-solid: #141432;--color-border: rgba(255,255,255,.08);--color-text: #F1F5F9;--color-text-2: #CBD5E1;--color-muted: #64748B;--grad-primary: linear-gradient(135deg, #7C3AED, #A855F7);--grad-accent: linear-gradient(135deg, #7C3AED, #EC4899);--grad-success: linear-gradient(135deg, #10B981, #06B6D4);--grad-warm: linear-gradient(135deg, #F59E0B, #EF4444);--grad-bg: linear-gradient(135deg, #080818 0%, #0F0F2D 60%, #0D0D26 100%);--glass-bg: rgba(255,255,255,.05);--glass-border: rgba(255,255,255,.1);--glass-blur: blur(12px);--font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-size-base: 16px;--font-size-label: 14px;--radius: 12px;--radius-lg: 20px;--radius-pill: 999px;--shadow: 0 4px 24px rgba(0,0,0,.4);--shadow-glow: 0 0 24px rgba(124,58,237,.25);--shadow-card: 0 8px 32px rgba(0,0,0,.3);--transition: .2s cubic-bezier(.4,0,.2,1)}html{scroll-behavior:smooth}body{font-family:var(--font);font-size:var(--font-size-base);background:var(--grad-bg);background-attachment:fixed;color:var(--color-text);line-height:1.6;min-height:100vh;-webkit-font-smoothing:antialiased}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#7c3aed66;border-radius:99px}h1,h2,h3{font-weight:700;letter-spacing:-.02em}.btn-primary{background:var(--grad-primary);color:#fff;border:none;border-radius:var(--radius-pill);padding:14px 28px;font-size:var(--font-size-base);font-weight:600;cursor:pointer;width:100%;transition:all var(--transition);box-shadow:0 4px 15px #7c3aed66;letter-spacing:.01em;font-family:var(--font)}.btn-primary:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 8px 25px #7c3aed80}.btn-primary:active:not(:disabled){transform:translateY(0)}.btn-primary:disabled{opacity:.4;cursor:not-allowed}.btn-secondary{background:transparent;color:var(--color-primary-light);border:1.5px solid rgba(124,58,237,.5);border-radius:var(--radius-pill);padding:12px 24px;font-size:var(--font-size-base);font-weight:500;cursor:pointer;transition:all var(--transition);font-family:var(--font)}.btn-secondary:hover:not(:disabled){background:#7c3aed26;border-color:var(--color-primary-light);transform:translateY(-1px)}.btn-secondary:disabled{opacity:.4;cursor:not-allowed}.annotation{position:relative;cursor:pointer}.annotation-grammar{border-bottom:2px solid var(--color-danger)}.annotation-lexical{border-bottom:2px solid var(--color-warning)}.annotation-cohesion{border-bottom:2px dashed var(--color-accent)}.annotation-task{background:#f59e0b33;border-radius:2px}.annotation-tooltip{display:none;position:absolute;bottom:100%;left:0;z-index:100;background:#1e1b4b;color:#fff;padding:10px 14px;border-radius:var(--radius);min-width:240px;font-size:13px;border:1px solid rgba(124,58,237,.3);box-shadow:var(--shadow-card)}.annotation:hover .annotation-tooltip{display:flex;flex-direction:column;gap:4px}.annotated-text{font-size:15px;line-height:1.9;padding:20px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-lg);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur)}.score-card{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-lg);padding:20px;-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur)}.score-overall{font-size:56px;font-weight:900;background:var(--grad-accent);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.vocab-card{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-lg);padding:28px;text-align:center;-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur)}.context-sentence{font-size:18px;line-height:1.9;margin-bottom:16px}.quality-buttons{display:flex;gap:8px;justify-content:center;margin-top:16px}.btn-hard{background:linear-gradient(135deg,#ef4444,#dc2626);color:#fff;border:none;border-radius:var(--radius-pill);padding:10px 22px;cursor:pointer;font-weight:600;transition:all var(--transition);font-family:var(--font)}.btn-ok{background:linear-gradient(135deg,#f59e0b,#d97706);color:#fff;border:none;border-radius:var(--radius-pill);padding:10px 22px;cursor:pointer;font-weight:600;transition:all var(--transition);font-family:var(--font)}.btn-easy{background:linear-gradient(135deg,#10b981,#059669);color:#fff;border:none;border-radius:var(--radius-pill);padding:10px 22px;cursor:pointer;font-weight:600;transition:all var(--transition);font-family:var(--font)}.btn-hard:hover,.btn-ok:hover,.btn-easy:hover{transform:translateY(-2px);box-shadow:0 6px 20px #0000004d}.auth-page{max-width:420px;margin:0 auto;padding:48px 24px;min-height:100vh;display:flex;flex-direction:column;justify-content:center}.auth-page h1{font-size:38px;font-weight:900;background:var(--grad-accent);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:4px;letter-spacing:-.03em}.auth-page>p:first-of-type{color:var(--color-muted);margin-bottom:32px;font-size:15px}.auth-page form{display:flex;flex-direction:column;gap:12px;margin:24px 0;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-lg);padding:28px;-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur)}.auth-page input{padding:14px 18px;background:#ffffff0d;border:1.5px solid rgba(255,255,255,.1);border-radius:var(--radius);font-size:var(--font-size-base);color:var(--color-text);font-family:var(--font);transition:border-color var(--transition)}.auth-page input::placeholder{color:var(--color-muted)}.auth-page input:focus{outline:none;border-color:var(--color-primary-light);background:#7c3aed0d}.auth-page button[type=submit]{background:var(--grad-primary);color:#fff;border:none;border-radius:var(--radius-pill);padding:14px;font-size:var(--font-size-base);font-weight:600;cursor:pointer;width:100%;transition:all var(--transition);box-shadow:0 4px 15px #7c3aed66;font-family:var(--font)}.auth-page button[type=submit]:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 8px 25px #7c3aed80}.auth-page button[type=submit]:disabled{opacity:.5;cursor:not-allowed}.auth-page a{color:var(--color-primary-light);text-decoration:none;font-weight:500}.auth-page a:hover{text-decoration:underline}.auth-page p:last-child{margin-top:16px;text-align:center;font-size:var(--font-size-label);color:var(--color-muted)}.error{color:var(--color-danger);font-size:14px}.oauth-divider{display:flex;align-items:center;gap:12px;margin:4px 0;color:var(--color-muted);font-size:var(--font-size-label)}.oauth-divider:before,.oauth-divider:after{content:"";flex:1;border-top:1px solid rgba(255,255,255,.08)}.oauth-google{margin:8px auto;display:flex;justify-content:center}.btn-facebook{width:100%;padding:12px 16px;background:#1877f2;color:#fff;border:none;border-radius:var(--radius-pill);font-size:var(--font-size-base);font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:10px;margin-top:8px;transition:all var(--transition);font-family:var(--font)}.btn-facebook:hover{background:#166fe5;transform:translateY(-1px)}.fb-icon{width:22px;height:22px;background:#fff;color:#1877f2;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:900;font-size:14px;flex-shrink:0}@media (min-width: 768px){.skill-grid{grid-template-columns:repeat(2,1fr)}.btn-primary{width:auto}}@media (min-width: 1280px){.skill-grid{grid-template-columns:repeat(4,1fr)}.dashboard{max-width:1200px;margin:0 auto}}.xp-card{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-lg);padding:24px;-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur)}.level-badge{display:inline-block;padding:4px 16px;border-radius:var(--radius-pill);font-size:13px;font-weight:700;color:#fff;margin-bottom:12px;letter-spacing:.05em;text-transform:uppercase}.level-0{background:linear-gradient(135deg,#94a3b8,#64748b)}.level-1{background:linear-gradient(135deg,#10b981,#059669)}.level-2{background:linear-gradient(135deg,#3b82f6,#2563eb)}.level-3{background:linear-gradient(135deg,#8b5cf6,#7c3aed)}.level-4{background:linear-gradient(135deg,#f59e0b,#d97706)}.level-5{background:linear-gradient(135deg,#ef4444,#ec4899)}.xp-bar-track{height:10px;background:#ffffff14;border-radius:var(--radius-pill);overflow:hidden}.xp-bar-fill{height:100%;background:var(--grad-primary);border-radius:var(--radius-pill);transition:width .5s cubic-bezier(.4,0,.2,1);box-shadow:0 0 12px #7c3aed80}.xp-numbers{margin-top:8px;font-size:var(--font-size-label);color:var(--color-muted)}.skill-history{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-lg);padding:24px;-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);margin-top:16px}.skill-history h2{font-size:16px;font-weight:700;margin-bottom:16px}.bar-chart{display:flex;align-items:flex-end;gap:12px;height:120px}.bar-col{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;height:100%;justify-content:flex-end}.bar-fill{width:100%;background:var(--grad-primary);border-radius:4px 4px 0 0;min-height:4px;transition:height .4s cubic-bezier(.4,0,.2,1);box-shadow:0 0 8px #7c3aed66}.bar-label{font-size:var(--font-size-label);color:var(--color-muted)}.milestone-section{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-lg);padding:24px;-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);margin-top:16px}.milestone-section h2{font-size:16px;font-weight:700;margin-bottom:16px}.milestone-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.badge-tile{background:#ffffff08;border:1px solid rgba(255,255,255,.07);border-radius:var(--radius);padding:16px 8px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:6px;transition:all var(--transition)}.badge-tile:hover{transform:translateY(-2px);border-color:#7c3aed4d}.badge-tile.badge-locked{opacity:.3}.badge-tile.badge-earned{border-color:#10b98166;background:#10b98114;box-shadow:0 0 16px #10b98126}.badge-icon{font-size:28px}.badge-label{font-size:12px;font-weight:600;line-height:1.3;color:var(--color-text-2)}.badge-date{font-size:11px;color:var(--color-muted)}.progress-page{max-width:600px;margin:0 auto;padding:20px 16px;display:flex;flex-direction:column;gap:16px}.progress-page>h1{font-size:24px;font-weight:800}.loading{display:flex;align-items:center;justify-content:center;min-height:40vh;color:var(--color-muted);font-weight:500}.dashboard{max-width:680px;margin:0 auto;padding:20px 16px;display:flex;flex-direction:column;gap:16px}.dashboard-header{display:flex;justify-content:space-between;align-items:center;padding:4px 0}.dashboard-header h1{font-size:30px;font-weight:900;letter-spacing:-.03em;background:var(--grad-accent);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.exam-countdown{display:flex;flex-direction:column;align-items:center;background:var(--grad-accent);color:#fff;border-radius:var(--radius);padding:8px 16px;box-shadow:var(--shadow-glow)}.countdown-number{font-size:28px;font-weight:800;line-height:1}.countdown-label{font-size:11px;opacity:.9;font-weight:500}.session-cta{background:var(--grad-accent);color:#fff;border-radius:var(--radius-lg);padding:24px;text-align:center;box-shadow:var(--shadow-glow);position:relative;overflow:hidden}.session-cta:before{content:"";position:absolute;top:-40%;right:-10%;width:200px;height:200px;background:#ffffff0f;border-radius:50%;pointer-events:none}.session-cta p{margin-bottom:14px;font-weight:600;font-size:17px}.session-cta .btn-primary{background:#fff3;color:#fff;border:1.5px solid rgba(255,255,255,.4);box-shadow:none;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);font-weight:700}.session-cta .btn-primary:hover:not(:disabled){background:#ffffff4d;box-shadow:none}.skill-scores{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-lg);padding:24px;-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur)}.skill-scores h2{font-size:12px;font-weight:700;margin-bottom:16px;color:var(--color-muted);text-transform:uppercase;letter-spacing:.1em}.skill-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.skill-card{background:#ffffff0a;border:1px solid rgba(255,255,255,.07);border-radius:var(--radius);padding:18px;transition:all var(--transition)}.skill-card:hover{transform:translateY(-2px);border-color:#7c3aed4d;background:#7c3aed14}.skill-name{font-size:12px;font-weight:700;color:var(--color-muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:6px}.skill-score{font-size:32px;font-weight:800;line-height:1.1;background:var(--grad-accent);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.skill-bar{height:3px;background:var(--grad-primary);border-radius:2px;margin-top:10px;max-width:100%;box-shadow:0 0 8px #7c3aed66}.streak-card{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-lg);padding:24px;-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);display:flex;flex-direction:column;align-items:center;gap:12px}.streak-main{display:flex;align-items:center;gap:12px}.streak-fire{font-size:36px;filter:drop-shadow(0 0 12px rgba(245,158,11,.6))}.streak-number{font-size:48px;font-weight:900;line-height:1;background:linear-gradient(135deg,#f59e0b,#ef4444);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.streak-label{font-size:var(--font-size-label);color:var(--color-muted);font-weight:500}.btn-freeze{background:#06b6d41a;color:var(--color-accent);border:1px solid rgba(6,182,212,.3);border-radius:var(--radius-pill);padding:8px 20px;font-size:14px;cursor:pointer;transition:all var(--transition);font-weight:500;font-family:var(--font)}.btn-freeze:hover:not(:disabled){background:#06b6d433;border-color:var(--color-accent);transform:translateY(-1px)}.btn-freeze:disabled{opacity:.4;cursor:not-allowed}.freeze-success{font-size:var(--font-size-label);color:var(--color-success);font-weight:600}.transcript-section{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-lg);padding:24px;-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);margin-top:16px}.transcript-section h3{font-size:12px;font-weight:700;margin-bottom:14px;color:var(--color-muted);text-transform:uppercase;letter-spacing:.1em}.transcript-text{font-size:15px;line-height:2}.word-token{cursor:pointer;border-radius:3px;padding:1px 2px;transition:all .1s}.word-token:hover{background:#7c3aed33;color:var(--color-primary-light)}.word-token.saved{color:var(--color-success);border-bottom:2px solid var(--color-success)}.word-panel{position:fixed;bottom:0;left:0;right:0;background:#12122a;border:1px solid rgba(124,58,237,.2);border-bottom:none;border-radius:24px 24px 0 0;padding:24px;box-shadow:0 -8px 40px #00000080;z-index:200;max-height:60vh;overflow-y:auto}.word-panel-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:14px}.word-panel-word{font-size:24px;font-weight:800}.word-panel-phonetic{font-size:14px;color:var(--color-muted);margin-top:2px}.word-panel-pos{display:inline-block;font-size:12px;background:#7c3aed33;color:var(--color-primary-light);padding:3px 10px;border-radius:var(--radius-pill);margin-bottom:10px;font-weight:600;border:1px solid rgba(124,58,237,.3)}.word-panel-meaning{font-size:15px;line-height:1.7;margin-bottom:10px}.word-panel-example{font-size:14px;color:var(--color-muted);font-style:italic;border-left:3px solid rgba(124,58,237,.4);padding-left:12px}.word-panel-context{font-size:13px;background:#ffffff08;border:1px solid rgba(255,255,255,.06);border-radius:var(--radius);padding:10px 14px;margin-top:10px}.word-panel-actions{display:flex;gap:10px;margin-top:18px}.btn-close-panel{background:#ffffff14;border:1px solid rgba(255,255,255,.1);font-size:20px;cursor:pointer;color:var(--color-muted);padding:8px 14px;line-height:1;border-radius:var(--radius);transition:all var(--transition)}.btn-close-panel:hover{background:#ffffff24}.btn-save-word{flex:1;background:linear-gradient(135deg,#10b981,#059669);color:#fff;border:none;border-radius:var(--radius-pill);padding:12px;font-size:var(--font-size-base);cursor:pointer;font-weight:700;transition:all var(--transition);box-shadow:0 4px 12px #10b98159;font-family:var(--font)}.btn-save-word:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 6px 18px #10b98166}.btn-save-word:disabled{opacity:.5;cursor:not-allowed}.panel-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;z-index:199;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.weekly-calendar{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-lg);padding:24px;-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur)}.weekly-calendar h3{font-size:12px;font-weight:700;margin-bottom:16px;color:var(--color-muted);text-transform:uppercase;letter-spacing:.1em}.calendar-row{display:grid;grid-template-columns:repeat(7,1fr);gap:8px}.calendar-day{display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 4px;border-radius:var(--radius);font-size:13px;transition:all var(--transition);border:1px solid transparent}.calendar-day-label{font-size:11px;color:var(--color-muted);font-weight:700;text-transform:uppercase}.calendar-day-icon{font-size:14px}.calendar-day--completed{background:#10b9811f;border-color:#10b98140}.calendar-day--missed{background:#ef44441a;border-color:#ef444433;color:var(--color-danger)}.calendar-day--today{background:#7c3aed26;border-color:#7c3aed66;color:var(--color-primary-light);font-weight:700;box-shadow:0 0 12px #7c3aed33}.calendar-day--future{background:#ffffff08;border-color:#ffffff0d;color:var(--color-muted)}.learning-plan-card{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-lg);padding:24px;-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);display:flex;flex-direction:column;gap:16px}.learning-plan-card h3{font-size:12px;font-weight:700;color:var(--color-muted);text-transform:uppercase;letter-spacing:.1em}.plan-days-to-goal{font-size:var(--font-size-base);color:var(--color-text-2)}.plan-week-progress{display:flex;flex-direction:column;gap:8px;font-size:var(--font-size-label);color:var(--color-text-2)}.plan-progress-bar{height:8px;background:#ffffff14;border-radius:var(--radius-pill);overflow:hidden}.plan-progress-fill{height:100%;background:var(--grad-primary);border-radius:var(--radius-pill);transition:width .5s cubic-bezier(.4,0,.2,1);box-shadow:0 0 8px #7c3aed66}.plan-forecast{display:flex;flex-direction:column;gap:8px}.plan-forecast-label{font-size:var(--font-size-label);color:var(--color-muted)}.plan-sparkline{display:flex;align-items:flex-end;gap:4px;height:48px}.plan-sparkline-bar{flex:1;background:var(--grad-primary);border-radius:3px 3px 0 0;opacity:.8;min-height:4px}.plan-forecast-bounds{display:flex;justify-content:space-between;font-size:12px;color:var(--color-muted)}.plan-rebalance{background:#f59e0b14;border:1px solid rgba(245,158,11,.2);border-radius:var(--radius);padding:14px;display:flex;flex-direction:column;gap:10px}.plan-rebalance p{font-size:var(--font-size-label);color:var(--color-text-2)}.plan-rebalance-ok{color:var(--color-success);font-size:var(--font-size-label);font-weight:600}.session-page{display:flex;flex-direction:column;gap:16px;padding:16px;max-width:680px;margin:0 auto}.session-progress{display:flex;gap:6px;flex-wrap:wrap}.step-indicator{font-size:12px;padding:5px 12px;border-radius:var(--radius-pill);background:#ffffff0f;color:var(--color-muted);border:1px solid transparent;font-weight:500}.step-indicator.active{background:#7c3aed33;color:var(--color-primary-light);border-color:#7c3aed66;font-weight:700}.step-indicator.done{background:#10b9811f;color:var(--color-success);border-color:#10b98140}.session-content{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-lg);padding:24px;-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur)}.session-complete{text-align:center;padding:48px 20px}.session-complete h2{font-size:26px;font-weight:800;margin-bottom:16px}.xp-earned{font-size:36px;font-weight:900;background:var(--grad-accent);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:14px}.new-milestones{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:14px}.milestone-badge{background:#f59e0b1f;border:1px solid rgba(245,158,11,.25);border-radius:var(--radius-pill);padding:5px 14px;font-size:13px;color:#f59e0b;font-weight:500}.drill-step,.vocab-step{display:flex;flex-direction:column;gap:16px}.drill-header{display:flex;justify-content:space-between;align-items:center}.drill-label{font-size:12px;font-weight:700;color:var(--color-primary-light);text-transform:uppercase;letter-spacing:.08em}.drill-counter{font-size:var(--font-size-label);color:var(--color-muted)}.drill-prompt{font-size:var(--font-size-base);line-height:1.8}.drill-options{display:flex;flex-direction:column;gap:8px}.drill-option{text-align:left;padding:14px 18px;border:1.5px solid rgba(255,255,255,.08);border-radius:var(--radius);background:#ffffff08;font-size:var(--font-size-base);cursor:pointer;transition:all var(--transition);color:var(--color-text-2);font-weight:500;font-family:var(--font)}.drill-option:hover:not(:disabled){border-color:#7c3aed66;background:#7c3aed14;color:var(--color-text);transform:translate(4px)}.drill-option.selected{border-color:var(--color-primary);background:#7c3aed26;color:var(--color-text)}.drill-option.correct{border-color:var(--color-success);background:#10b9811f;color:var(--color-success)}.drill-option.wrong{border-color:var(--color-danger);background:#ef44441a;color:var(--color-danger)}.drill-option:disabled{cursor:not-allowed}.drill-input{display:flex;gap:8px}.drill-input input{flex:1;padding:12px 16px;background:#ffffff0d;border:1.5px solid rgba(255,255,255,.1);border-radius:var(--radius);font-size:var(--font-size-base);color:var(--color-text);font-family:var(--font);transition:border-color var(--transition)}.drill-input input:focus{outline:none;border-color:var(--color-primary-light);background:#7c3aed0d}.drill-feedback{border-radius:var(--radius);padding:16px;display:flex;flex-direction:column;gap:8px;border:1px solid transparent}.feedback-correct{background:#10b9811a;border-color:#10b98133}.feedback-wrong{background:#ef44441a;border-color:#ef444433}.feedback-neutral{background:#ffffff0a;border-color:#ffffff14}.drill-explanation{font-size:var(--font-size-label);color:var(--color-muted)}.drill-complete{text-align:center;padding:24px 0}.drill-score{font-size:36px;font-weight:900;background:var(--grad-accent);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin:10px 0 18px}.step-placeholder{text-align:center;padding:20px 0;display:flex;flex-direction:column;gap:16px}.step-error{text-align:center;padding:20px 0;display:flex;flex-direction:column;gap:12px}.error-msg{color:var(--color-danger);font-size:var(--font-size-label);text-align:center;margin-top:8px}.real-content-step{display:flex;flex-direction:column;gap:16px}.real-content-step h3{font-size:18px;font-weight:700}.real-content-hint{font-size:var(--font-size-label);color:var(--color-muted)}.real-content-actions{display:flex;flex-direction:column;gap:0}.challenge-page{max-width:700px;margin:0 auto;padding:20px 16px}.challenge-tabs{display:flex;gap:8px;margin:16px 0;flex-wrap:wrap}.challenge-tab{padding:8px 18px;border:1px solid rgba(255,255,255,.08);border-radius:var(--radius-pill);background:#ffffff0a;cursor:pointer;font-size:var(--font-size-label);color:var(--color-muted);transition:all var(--transition);font-weight:500;font-family:var(--font)}.challenge-tab:hover{border-color:#7c3aed4d;color:var(--color-text)}.challenge-tab.active{background:var(--grad-primary);color:#fff;border-color:transparent;box-shadow:0 4px 12px #7c3aed59}.challenge-panel,.leaderboard-panel,.buddy-panel{margin-top:16px}.challenge-card{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-lg);padding:28px;-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur)}.challenge-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}.challenge-badge{background:var(--grad-primary);color:#fff;padding:3px 12px;border-radius:var(--radius-pill);font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase}.challenge-skill{font-size:var(--font-size-label);color:var(--color-muted)}.challenge-title{font-size:24px;font-weight:800;margin-bottom:10px}.challenge-desc{color:var(--color-muted);margin-bottom:14px;line-height:1.7}.challenge-target{font-size:var(--font-size-label);background:#ffffff0a;border:1px solid rgba(255,255,255,.07);padding:10px 14px;border-radius:var(--radius);margin-bottom:18px;color:var(--color-text-2)}.challenge-progress-wrap{margin-bottom:18px}.challenge-progress-row{display:flex;justify-content:space-between;font-size:var(--font-size-label);margin-bottom:8px;color:var(--color-text-2)}.challenge-progress-bar{height:10px;background:#ffffff14;border-radius:var(--radius-pill);overflow:hidden}.challenge-progress-fill{height:100%;background:var(--grad-primary);border-radius:var(--radius-pill);transition:width .4s cubic-bezier(.4,0,.2,1);box-shadow:0 0 8px #7c3aed66}.challenge-completed{color:var(--color-success);font-weight:700;margin-top:10px}.challenge-actions{display:flex;gap:12px}.leaderboard-list{display:flex;flex-direction:column;gap:10px;margin-top:16px}.leaderboard-row{display:flex;align-items:center;gap:12px;padding:14px 18px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);transition:all var(--transition)}.leaderboard-row:hover{transform:translate(4px);border-color:#7c3aed33}.leaderboard-row.rank-1{background:#fcd34d14;border-color:#fcd34d40;box-shadow:0 0 16px #fcd34d1a}.leaderboard-row.rank-2{background:#cbd5e10f;border-color:#cbd5e133}.leaderboard-row.rank-3{background:#fdba7414;border-color:#fdba7433}.leaderboard-rank{width:32px;text-align:center;font-size:20px}.leaderboard-name{flex:1;font-weight:600}.leaderboard-xp{font-weight:800;background:var(--grad-accent);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.leaderboard-empty{text-align:center;color:var(--color-muted);padding:32px 0}.my-rank{background:#7c3aed26;border:1px solid rgba(124,58,237,.3);color:var(--color-primary-light);padding:12px 18px;border-radius:var(--radius);margin-bottom:14px;font-weight:600}.buddy-panel h2{margin-bottom:8px;font-size:20px;font-weight:800}.buddy-desc{color:var(--color-muted);margin-bottom:24px}.buddy-card{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-lg);padding:28px;-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);display:flex;flex-direction:column;align-items:center;gap:12px;text-align:center}.buddy-avatar{width:64px;height:64px;background:var(--grad-primary);color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:26px;font-weight:800;box-shadow:0 0 20px #7c3aed66}.buddy-name{font-size:20px;font-weight:700}.buddy-level,.buddy-exam{font-size:var(--font-size-label);color:var(--color-muted)}.buddy-tip{color:var(--color-primary-light);font-weight:600}.buddy-empty{text-align:center;padding:32px 0;display:flex;flex-direction:column;gap:16px;align-items:center}.buddy-waiting{background:#10b98114;border:1px solid rgba(16,185,129,.2);border-radius:var(--radius);padding:18px 24px;text-align:center}.buddy-hint{color:var(--color-muted);font-size:var(--font-size-label)}.admin-page{max-width:960px;margin:0 auto;padding:20px 16px}.admin-tabs{display:flex;gap:4px;margin:16px 0;border-bottom:1px solid rgba(255,255,255,.08)}.admin-tab{padding:10px 18px;background:none;border:none;cursor:pointer;font-size:var(--font-size-label);color:var(--color-muted);border-bottom:2px solid transparent;margin-bottom:-1px;font-weight:500;transition:all var(--transition);font-family:var(--font)}.admin-tab.active{color:var(--color-primary-light);border-bottom-color:var(--color-primary);font-weight:700}.admin-tab-panel{padding:16px 0}.admin-toolbar{display:flex;gap:12px;align-items:center;margin-bottom:16px;flex-wrap:wrap}.admin-toolbar select{padding:8px 14px;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:var(--radius);font-size:var(--font-size-label);color:var(--color-text);font-family:var(--font)}.admin-form{background:#ffffff08;border:1px solid rgba(255,255,255,.08);border-radius:var(--radius-lg);padding:24px;margin-bottom:20px;display:flex;flex-direction:column;gap:14px}.admin-form h3{font-size:16px;font-weight:700}.admin-form label{display:flex;flex-direction:column;gap:6px;font-size:var(--font-size-label);color:var(--color-muted);font-weight:500}.admin-form input,.admin-form select,.admin-form textarea{padding:10px 14px;background:#ffffff0d;border:1.5px solid rgba(255,255,255,.1);border-radius:var(--radius);font-size:var(--font-size-base);color:var(--color-text);font-family:var(--font);width:100%;transition:border-color var(--transition)}.admin-form input:focus,.admin-form select:focus,.admin-form textarea:focus{outline:none;border-color:#7c3aed80;background:#7c3aed0a}.admin-form textarea{resize:vertical}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px}.admin-hint{color:var(--color-muted);font-size:var(--font-size-label);margin-bottom:16px}.admin-table{width:100%;border-collapse:collapse;background:#ffffff05;border-radius:var(--radius-lg);overflow:hidden;border:1px solid rgba(255,255,255,.06)}.admin-table th{background:#ffffff0a;padding:12px 16px;text-align:left;font-size:var(--font-size-label);color:var(--color-muted);font-weight:700;text-transform:uppercase;letter-spacing:.05em}.admin-table td{padding:12px 16px;border-top:1px solid rgba(255,255,255,.04);font-size:var(--font-size-label);vertical-align:top;color:var(--color-text-2)}.admin-table tr:hover td{background:#ffffff05}.table-title{max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.skill-badge{display:inline-block;padding:3px 10px;border-radius:var(--radius-pill);font-size:11px;font-weight:700;background:#7c3aed26;color:var(--color-primary-light);border:1px solid rgba(124,58,237,.25)}.skill-badge.skill-listening{background:#3b82f626;color:#93c5fd;border-color:#3b82f640}.skill-badge.skill-reading{background:#10b98126;color:#6ee7b7;border-color:#10b98140}.skill-badge.skill-writing{background:#f59e0b26;color:#fcd34d;border-color:#f59e0b40}.skill-badge.skill-speaking{background:#ec489926;color:#f9a8d4;border-color:#ec489940}.btn-danger-sm{padding:5px 12px;background:#ef44441a;color:var(--color-danger);border:1px solid rgba(239,68,68,.2);border-radius:var(--radius);font-size:12px;cursor:pointer;transition:all var(--transition);font-weight:600;font-family:var(--font)}.btn-danger-sm:hover{background:var(--color-danger);color:#fff}.pagination{display:flex;justify-content:center;align-items:center;gap:16px;margin-top:20px;font-size:var(--font-size-label);color:var(--color-muted)}.pagination button{padding:7px 16px;border:1px solid rgba(255,255,255,.1);border-radius:var(--radius);background:#ffffff0a;cursor:pointer;color:var(--color-text-2);font-family:var(--font);transition:all var(--transition)}.pagination button:hover:not(:disabled){border-color:#7c3aed66;color:var(--color-primary-light)}.pagination button:disabled{opacity:.3;cursor:default}.stats-section{margin-bottom:24px}.stats-section h3{margin-bottom:12px;font-size:16px;font-weight:700}.ai-config-row{display:flex;align-items:center;gap:16px;padding:14px 0;border-bottom:1px solid rgba(255,255,255,.05)}.ai-config-module{font-weight:700;min-width:180px;font-size:var(--font-size-label)}.ai-config-details{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.ai-provider-badge{background:var(--grad-primary);color:#fff;padding:3px 10px;border-radius:var(--radius-pill);font-size:12px;font-weight:600}.ai-model{font-size:12px;color:var(--color-muted);font-family:monospace}.ai-fallback{font-size:12px;color:var(--color-muted)}.admin-page h1{font-size:22px;font-weight:800;margin-bottom:4px}.admin-tabs{flex-wrap:wrap}.btn-secondary{padding:8px 16px;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:var(--radius);font-size:var(--font-size-label);color:var(--color-text-2);cursor:pointer;font-family:var(--font);transition:all var(--transition);font-weight:500}.btn-secondary:hover,.btn-secondary.active{background:#7c3aed1a;border-color:#7c3aed4d;color:var(--color-primary-light)}.btn-xs{padding:4px 10px;border-radius:var(--radius);font-size:11px;cursor:pointer;font-family:var(--font);font-weight:600;border:1px solid rgba(255,255,255,.1);background:#ffffff0d;color:var(--color-text-2);transition:all var(--transition)}.btn-xs:hover{background:#ffffff1a}.btn-xs.btn-success{background:#10b9811a;color:#6ee7b7;border-color:#10b98133}.btn-xs.btn-success:hover{background:#10b98140}.btn-xs.btn-danger{background:#ef44441a;color:var(--color-danger);border-color:#ef444433}.btn-xs.btn-danger:hover{background:#ef444440}.btn-xs.btn-warning{background:#f59e0b1a;color:#fcd34d;border-color:#f59e0b33}.btn-xs.btn-warning:hover{background:#f59e0b40}.action-cell{display:flex;gap:4px;flex-wrap:wrap;align-items:center}.alert-banner{background:#f59e0b1a;border:1px solid rgba(245,158,11,.25);border-radius:var(--radius);padding:10px 14px;font-size:var(--font-size-label);color:#fcd34d;margin-bottom:12px}.credit-card{background:#ffffff0a;border:1px solid rgba(255,255,255,.08);border-radius:var(--radius);padding:12px 18px;margin-bottom:16px;font-size:var(--font-size-label)}.credit-card.warning{background:#f59e0b14;border-color:#f59e0b40}.badge-warning{display:inline-block;background:#f59e0b26;color:#fcd34d;border:1px solid rgba(245,158,11,.3);border-radius:var(--radius-pill);padding:2px 10px;font-size:11px;font-weight:700;margin-left:8px}.badge-error{display:inline-block;background:#ef444426;color:var(--color-danger);border:1px solid rgba(239,68,68,.25);border-radius:var(--radius-pill);padding:2px 8px;font-size:11px;font-weight:700;margin-left:6px}.badge-action{display:inline-block;background:#7c3aed1f;color:var(--color-primary-light);border-radius:var(--radius-pill);padding:2px 9px;font-size:11px;font-weight:600}.badge-tier.premium{background:#f59e0b26;color:#fcd34d;border-radius:var(--radius-pill);padding:2px 9px;font-size:11px;font-weight:700}.badge-tier.free{background:#ffffff0f;color:var(--color-muted);border-radius:var(--radius-pill);padding:2px 9px;font-size:11px}.monitor-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px;margin-bottom:24px}.monitor-card{background:#ffffff0a;border:1px solid rgba(255,255,255,.06);border-radius:var(--radius);padding:16px;text-align:center}.monitor-card.monitor-error{background:#ef444414;border-color:#ef444433}.monitor-label{font-size:11px;color:var(--color-muted);font-weight:600;text-transform:uppercase;letter-spacing:.04em;margin-bottom:8px}.monitor-value{font-size:26px;font-weight:800;color:var(--color-text)}.resolved-row{opacity:.5}.table-detail{max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-family:monospace}.config-sections{display:flex;gap:8px;margin-bottom:20px;flex-wrap:wrap}.toggle-btn{padding:5px 14px;border-radius:var(--radius-pill);font-size:12px;font-weight:700;cursor:pointer;border:none;transition:all var(--transition);font-family:var(--font)}.toggle-btn.on{background:#10b98133;color:#6ee7b7}.toggle-btn.off{background:#ef44441f;color:var(--color-danger)}.toggle-row{flex-direction:row!important;align-items:center;justify-content:space-between;gap:12px}.admin-hint{font-size:var(--font-size-label);color:var(--color-muted);font-style:italic}.empty-hint{font-size:var(--font-size-label);color:var(--color-muted);padding:16px 0}.teacher-list{list-style:none;padding:0;display:flex;flex-direction:column;gap:8px}.teacher-list li{padding:10px 14px;background:#ffffff0a;border:1px solid rgba(255,255,255,.06);border-radius:var(--radius);font-size:var(--font-size-label)}.range-value{font-size:13px;font-weight:700;color:var(--color-primary-light);margin-left:8px}.cost-estimate{font-size:var(--font-size-label);color:#fcd34d;background:#f59e0b14;border:1px solid rgba(245,158,11,.2);border-radius:var(--radius);padding:8px 14px}.gen-job-panel{background:#ffffff08;border:1px solid rgba(255,255,255,.06);border-radius:var(--radius-lg);padding:20px;margin:20px 0}.job-status-bar{display:flex;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap}.job-status{display:inline-block;padding:3px 10px;border-radius:var(--radius-pill);font-size:12px;font-weight:700}.job-status.done,.job-status.approved{background:#10b98126;color:#6ee7b7}.job-status.running,.job-status.pending{background:#3b82f626;color:#93c5fd}.job-status.failed{background:#ef444426;color:var(--color-danger)}.item-status.pending_review{background:#f59e0b26;color:#fcd34d}.item-status.approved{background:#10b98126;color:#6ee7b7}.item-status.rejected{background:#ef44441f;color:var(--color-danger)}.gen-items-list{display:flex;flex-direction:column;gap:12px;max-height:500px;overflow-y:auto}.gen-item{background:#ffffff08;border:1px solid rgba(255,255,255,.07);border-radius:var(--radius);padding:14px}.gen-item.approved{border-color:#10b98133;background:#10b9810a}.gen-item.rejected{opacity:.5}.gen-item-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;font-size:12px;font-weight:600}.gen-item-preview{font-size:13px;color:var(--color-text-2);line-height:1.5;margin-bottom:10px}.gen-item-preview strong{display:block;color:var(--color-text);margin-bottom:4px}.gen-item-actions{display:flex;gap:8px}.admin-form h4{font-size:14px;font-weight:700;color:var(--color-text)}.teacher-page{max-width:960px;margin:0 auto;padding:20px 16px}.teacher-tabs{display:flex;gap:8px;margin:16px 0;flex-wrap:wrap}.teacher-tab{padding:8px 18px;border:1px solid rgba(255,255,255,.08);border-radius:var(--radius-pill);background:#ffffff0a;cursor:pointer;font-size:var(--font-size-label);color:var(--color-muted);transition:all var(--transition);font-weight:500;font-family:var(--font)}.teacher-tab.active{background:var(--grad-primary);color:#fff;border-color:transparent;box-shadow:0 4px 12px #7c3aed59}.teacher-panel{padding:4px 0}.teacher-toolbar{margin-bottom:16px}.teacher-empty{text-align:center;color:var(--color-muted);padding:40px 0}.class-list{display:flex;flex-direction:column;gap:12px}.class-card{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-lg);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);overflow:hidden;transition:all var(--transition)}.class-card:hover{border-color:#7c3aed33}.class-card.selected{border-color:#7c3aed66;box-shadow:var(--shadow-glow)}.class-card-header{display:flex;justify-content:space-between;align-items:flex-start;padding:18px 22px;cursor:pointer}.class-card-header:hover{background:#ffffff05}.class-name{font-size:17px;font-weight:700}.class-desc{font-size:var(--font-size-label);color:var(--color-muted);margin-top:3px}.class-meta{display:flex;flex-direction:column;align-items:flex-end;gap:4px;font-size:var(--font-size-label);color:var(--color-muted);flex-shrink:0}.class-invite{color:var(--color-primary-light);font-weight:600}.class-members,.class-toggle{font-size:12px}.class-teacher,.class-joined{font-size:var(--font-size-label);color:var(--color-muted)}.class-detail{border-top:1px solid rgba(255,255,255,.06);padding:18px 22px}.class-detail-tabs{display:flex;gap:8px;margin-bottom:16px}.class-detail-tabs button{padding:6px 16px;border:1px solid rgba(255,255,255,.08);border-radius:var(--radius-pill);background:#ffffff0a;cursor:pointer;font-size:13px;color:var(--color-muted);font-family:var(--font);transition:all var(--transition)}.class-detail-tabs button.active{background:#7c3aed33;color:var(--color-primary-light);border-color:#7c3aed66;font-weight:600}.empty-hint{color:var(--color-muted);font-size:var(--font-size-label);padding:16px 0;text-align:center}.students-list{overflow-x:auto}.assignments-panel{display:flex;flex-direction:column}.assignment-list{display:flex;flex-direction:column;gap:10px;margin-top:12px}.assignment-card{background:#ffffff08;border:1px solid rgba(255,255,255,.07);border-radius:var(--radius);padding:14px 18px;transition:all var(--transition)}.assignment-card:hover{border-color:#7c3aed33}.assignment-header{display:flex;align-items:center;gap:10px;margin-bottom:4px}.assignment-desc{font-size:var(--font-size-label);color:var(--color-muted);margin-bottom:6px}.assignment-meta{display:flex;gap:16px;font-size:12px;color:var(--color-muted)}.join-class-form{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-lg);padding:24px;-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);margin-bottom:24px}.join-class-form h3{margin-bottom:16px;font-weight:700}.join-row{display:flex;gap:10px;align-items:center}.invite-input{flex:1;padding:12px 16px;background:#ffffff0d;border:2px solid rgba(255,255,255,.1);border-radius:var(--radius);font-size:20px;font-family:monospace;text-align:center;letter-spacing:4px;text-transform:uppercase;color:var(--color-text);transition:border-color var(--transition)}.invite-input:focus{border-color:var(--color-primary);outline:none;background:#7c3aed0d}.success-msg{color:var(--color-success);font-weight:600;margin-top:12px}.invite-code-banner{background:#10b98114;border:1px solid rgba(16,185,129,.2);border-radius:var(--radius-lg);padding:20px;margin-bottom:20px;text-align:center}.invite-code{font-size:34px;font-weight:900;font-family:monospace;letter-spacing:8px;background:var(--grad-success);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;display:block;margin:10px 0}.invite-hint{font-size:var(--font-size-label);color:var(--color-muted)}.nav-phase2{display:flex;gap:10px;flex-wrap:wrap;margin:8px 0}.nav-phase2 a{padding:8px 16px;border:1px solid rgba(255,255,255,.08);border-radius:var(--radius-pill);background:#ffffff0a;text-decoration:none;color:var(--color-muted);font-size:var(--font-size-label);display:flex;align-items:center;gap:6px;transition:all var(--transition);font-weight:500}.nav-phase2 a:hover{border-color:#7c3aed4d;color:var(--color-primary-light);background:#7c3aed14;transform:translateY(-1px)}
