*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#101113;--bg-gradient-start:#15171a;--bg-2:#15171a;--surface:#1c1f23;--surface-hover:#24282d;--surface-active:#2b3036;--choice-bg:#20242a;--choice-bg-hover:#272d34;--border:#343940;--border-subtle:#282d32;--border-focus:#38bdf8;--text:#f4f1ea;--text-dim:#c7c1b5;--text-muted:#a9a296;--text-placeholder:#786f63;--accent:#38bdf8;--accent-hover:#7dd3fc;--accent-active:#0ea5e9;--accent-contrast:#061017;--accent-glow:#38bdf847;--accent-glow-soft:#38bdf81f;--tutor-user-bg:#38bdf817;--tutor-ai-bg:#f4f1ea0e;--success:#4ade80;--success-bg:#4ade801f;--success-glow:#4ade8047;--danger:#fb7185;--danger-bg:#f871711f;--danger-glow:#f871714d;--warning:#facc15;--warning-bg:#facc151f;--study-good:#2dd4bf;--study-bad:#f97373;--green:#4ade80;--green-bg:#4ade801f;--red:#fb7185;--red-bg:#f871711f;--yellow:#facc15;--radius:8px;--radius-lg:8px;--radius-md:8px;--radius-sm:8px;--radius-xs:6px;--shadow-card:0 8px 20px #00000038;--shadow-card-hover:0 12px 28px #00000047;--shadow-elevated:0 18px 42px #0000005c;--shadow-inner:inset 0 1px 2px #00000038;--shadow-glow:0 0 20px var(--accent-glow);--shadow-glow-success:0 0 24px var(--success-glow);--radius-pill:999px;--accent-grad:linear-gradient(90deg, var(--accent), var(--success));--elev-3:0 16px 38px #00000047;--metric-bg:#ffffff05;--font-sans:ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-mono:ui-monospace, "SF Mono", "SFMono-Regular", Menlo, Monaco, Consolas, monospace;--space-xs:4px;--space-sm:8px;--space-md:16px;--space-lg:24px;--space-xl:32px;--space-2xl:48px;--space-fluid-md:clamp(14px, 2vw, 18px);--space-fluid-lg:clamp(18px, 3vw, 28px);--space-fluid-xl:clamp(24px, 4vw, 40px);--touch-min:44px}:root[data-theme=light]{--bg:#f6f5f2;--bg-gradient-start:#eeece6;--bg-2:#efede8;--surface:#fff;--surface-hover:#f1f4f7;--surface-active:#e8edf2;--choice-bg:#fff;--choice-bg-hover:#f7fafc;--border:#d4d9df;--border-subtle:#e2e5e9;--border-focus:#0284c7;--text:#15171a;--text-dim:#43474d;--text-muted:#626973;--text-placeholder:#8b929c;--accent:#0284c7;--accent-hover:#0369a1;--accent-active:#075985;--accent-contrast:#f7fbff;--accent-glow:#0284c733;--accent-glow-soft:#0284c717;--success:#16834a;--success-bg:#16834a17;--success-glow:#16834a2e;--danger:#dc2626;--danger-bg:#dc262617;--danger-glow:#dc262629;--warning:#a16207;--warning-bg:#a162071a;--study-good:#0f766e;--study-bad:#b91c1c;--green:#16834a;--green-bg:#16834a17;--red:#dc2626;--red-bg:#dc262617;--yellow:#a16207;--shadow-card:0 8px 20px #141b2214;--shadow-card-hover:0 14px 28px #141b221f;--shadow-elevated:0 18px 42px #141b222e;--shadow-inner:inset 0 1px 2px #141b221f;--elev-3:0 16px 38px #141b2229;--metric-bg:#141b2208;--tutor-user-bg:#0284c714;--tutor-ai-bg:#15171a0a}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility}body{font-family:var(--font-sans);background:var(--bg);background-image:linear-gradient(180deg, var(--bg-gradient-start) 0%, var(--bg) 230px);color:var(--text);-webkit-tap-highlight-color:transparent;background-attachment:fixed;min-height:100vh;font-size:16px;line-height:1.55}.app{max-width:1120px;padding:clamp(20px, 4vw, 36px) clamp(16px, 3vw, 24px) var(--space-2xl);padding-bottom:calc(var(--space-2xl) + env(safe-area-inset-bottom,0px));min-height:100vh;margin:0 auto}.phase{max-width:900px;margin:0 auto;animation:.3s fadeIn}.phase>*+*{margin-top:var(--space-lg)}.phase>.btn-back+h2,.phase>h2+.stat,.phase>h2+.hint{margin-top:var(--space-sm)}.phase>.study-toolbar+.progress-section,.phase>.progress-section+.feedback-section,.phase>.feedback-section+.direction-label,.phase>.direction-label+.question-card,.phase>.question-card+.feedback-section,.phase>.feedback-section+.choices,.phase>.question-card+.choices,.phase>.choices+.feedback-section,.phase>.type-input-section+.feedback-section{margin-top:var(--space-md)}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.header{text-align:center;padding:clamp(24px, 5vw, 44px) 0 var(--space-xl)}.header.compact{padding:var(--space-md) 0 var(--space-md)}.header-top{justify-content:space-between;align-items:center;gap:var(--space-md);min-width:0;display:flex}.header h1{letter-spacing:0;font-size:clamp(24px,4vw,28px);font-weight:750;line-height:1.2}.header-top h1{margin:0}.subtitle{color:var(--text-muted);margin-top:var(--space-xs);font-size:15px;font-weight:500}.header-actions{align-items:center;gap:var(--space-sm);flex-wrap:wrap;flex-shrink:0;min-width:0;display:flex}.login-theme-action{margin-bottom:var(--space-sm);justify-content:flex-end;display:flex}.theme-toggle{color:var(--text-muted)}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.phase h2{letter-spacing:0;font-size:24px;font-weight:680;line-height:1.2}.page-phase,.setup-phase,.review-set-phase,.summary-phase{max-width:980px}.page-head{justify-content:space-between;align-items:flex-end;gap:var(--space-md);min-width:0;display:flex}.page-title-block{min-width:0}.page-head h2{align-items:center;gap:10px;min-width:0;display:flex}.page-head h2 span{overflow-wrap:anywhere;min-width:0}.page-head h2 svg,.page-eyebrow svg{color:var(--accent);flex:none}.page-eyebrow{color:var(--text-muted);text-transform:uppercase;letter-spacing:0;margin-bottom:5px;font-size:12px;font-weight:750;line-height:1.3}.page-meta{color:var(--text-muted);margin-top:5px;font-size:14px;line-height:1.45}.page-actions{justify-content:flex-end;align-items:center;gap:var(--space-sm);flex-wrap:wrap;flex:none;display:flex}.surface-panel{background:color-mix(in srgb, var(--surface) 92%, var(--bg) 8%);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-fluid-lg);box-shadow:0 1px 0 #ffffff09, var(--shadow-card)}.surface-panel>*+*{margin-top:var(--space-md)}.section-head{justify-content:space-between;align-items:center;gap:var(--space-sm);display:flex}.section-head h3{color:var(--text);align-items:center;gap:8px;font-size:16px;line-height:1.3;display:inline-flex}.section-head h3 svg{color:var(--accent)}.section-meta{color:var(--text-muted);font-size:12px;font-weight:700}.question-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);text-align:center;box-shadow:0 1px 0 #ffffff0a, var(--shadow-card);justify-content:center;align-items:center;min-height:clamp(130px,20vh,190px);padding:clamp(24px,4vw,36px);transition:all .3s;animation:.25s fadeIn;display:flex;position:relative}.question-card-actions{top:var(--space-sm);right:var(--space-sm);align-items:center;gap:4px;display:inline-flex;position:absolute}.study-star,.study-shuffle,.study-delete{color:var(--text-muted);font-size:24px}.study-shuffle.active{color:var(--accent)}.study-star.starred{color:#fbbf24}.study-delete:hover{color:var(--danger)}.question-card:hover{box-shadow:var(--shadow-card-hover)}.question-card.card-mastered{border-color:var(--success);box-shadow:var(--shadow-glow-success);animation:.8s masteryCelebrate}.flashcard-stage{gap:var(--space-md);display:grid}.flashcard-card{min-height:clamp(190px,32vh,320px)}.flashcard-card.revealable{cursor:pointer}.flashcard-card.revealable:hover{border-color:var(--border-focus);box-shadow:var(--shadow-card-hover), 0 0 0 1px var(--accent-glow-soft)}.flashcard-card.revealable:focus-visible{outline:2px solid var(--border-focus);outline-offset:3px}.flashcard-card.revealed{justify-content:center;align-items:stretch;gap:var(--space-lg);text-align:left;flex-direction:column}.flashcard-card.revealed .prompt{text-align:center;width:100%}.flashcard-answer{border:1px solid var(--border);border-radius:var(--radius);background:color-mix(in srgb, var(--surface-hover) 48%, var(--surface) 52%);padding:var(--space-fluid-lg);text-align:left;animation:.18s fadeIn}.flashcard-answer.in-card{border-color:color-mix(in srgb, var(--success) 44%, var(--border));background:color-mix(in srgb, var(--success-bg) 58%, var(--surface-hover));width:min(100%,720px);margin:0 auto}.flashcard-answer-label{margin-bottom:var(--space-sm);color:var(--text-muted);text-transform:uppercase;font-size:12px;font-weight:760}.flashcard-answer p{color:var(--text);overflow-wrap:anywhere;margin:0;font-size:clamp(16px,1.6vw,20px);line-height:1.5}.flashcard-reveal{justify-self:center;min-width:min(100%,260px)}.flashcard-actions{justify-content:center;gap:var(--space-sm);grid-template-columns:repeat(2,minmax(0,220px));display:grid}@keyframes masteryCelebrate{0%{border-color:var(--border);transform:scale(1)}30%{border-color:var(--success);box-shadow:0 0 32px var(--success-glow);transform:scale(1.02)}to{transform:scale(1)}}.prompt{letter-spacing:0;max-width:46ch;margin:0 auto;font-size:clamp(20px,2vw,24px);font-weight:650;line-height:1.38}.long-prompt-card{text-align:left;align-items:flex-start}.long-prompt-card .prompt{max-width:62ch;font-size:clamp(16px,1.55vw,19px);line-height:1.5}.summary-card{background:color-mix(in srgb, var(--surface-hover) 52%, var(--surface) 48%);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-fluid-lg);text-align:center;transition:all .2s}.summary-card:hover{border-color:var(--border-focus);box-shadow:var(--shadow-card);transform:translateY(-2px)}.summary-value{letter-spacing:0;font-size:36px;font-weight:750;line-height:1}.summary-value.val-green{color:var(--success)}.summary-value.val-yellow{color:var(--warning)}.summary-value.val-red{color:var(--danger)}.summary-label{color:var(--text-muted);margin-top:var(--space-xs);font-size:13px;font-weight:500}.deck-card{background:linear-gradient(180deg, color-mix(in srgb, var(--surface) 82%, var(--surface-hover) 18%) 0%, var(--surface) 100%);border:1px solid var(--border);border-radius:var(--radius-sm);align-items:center;transition:background .18s,border-color .18s,box-shadow .18s,transform .18s;display:flex;position:relative;overflow:hidden}.deck-card:before{content:"";background:var(--accent);opacity:.7;align-self:stretch;width:3px}.deck-card:hover{border-color:var(--accent);box-shadow:var(--shadow-card);transform:translateY(-1px)}.deck-info{justify-content:space-between;align-items:center;gap:var(--space-md);padding:var(--space-fluid-md) var(--space-fluid-lg);cursor:pointer;min-height:76px;color:var(--text);font:inherit;flex:1;transition:background .2s;display:flex}.deck-info:hover{background:var(--surface-hover)}.deck-info>div{align-items:center;gap:var(--space-sm);flex-wrap:wrap;min-width:0;display:flex}.deck-name{color:var(--text);font-size:16px;font-weight:700;line-height:1.35}.deck-count{color:var(--text-dim);background:var(--bg-2);border:1px solid var(--border-subtle);text-align:right;border-radius:999px;flex-shrink:0;padding:5px 10px;font-size:13px;font-weight:650}.deck-subline{color:var(--text-muted);font-size:12px;font-weight:650;line-height:1.3}.deck-missed{color:var(--danger);background:var(--danger-bg);border-radius:20px;padding:4px 10px;font-size:12px;font-weight:600}.deck-badge{border-radius:var(--radius-pill);white-space:nowrap;border:1px solid #0000;align-items:center;gap:4px;padding:4px 10px;font-size:12px;font-weight:650;display:inline-flex}.deck-badge.live-doc{color:var(--accent);background:var(--accent-glow-soft);border-color:color-mix(in srgb, var(--accent) 38%, transparent)}.deck-badge.review-count{color:var(--warning);background:var(--warning-bg);border-color:color-mix(in srgb, var(--warning) 38%, transparent)}.history-card{background:color-mix(in srgb, var(--surface-hover) 45%, var(--surface) 55%);border:1px solid var(--border);border-radius:var(--radius-sm);padding:var(--space-fluid-md) var(--space-fluid-lg);border-left:4px solid var(--text-muted);transition:all .2s}.history-card:hover{border-color:var(--border-focus);transform:translate(4px)}.history-card.hist-green{border-left-color:var(--success)}.history-card.hist-yellow{border-left-color:var(--warning)}.history-card.hist-red{border-left-color:var(--danger)}.history-header{justify-content:space-between;align-items:flex-start;gap:var(--space-sm);margin-bottom:var(--space-sm);display:flex}.history-header strong{font-size:15px;font-weight:600}.history-date{color:var(--text-muted);font-size:12px}.history-stats{gap:var(--space-md);color:var(--text-dim);flex-wrap:wrap;font-size:13px;display:flex}.choices{gap:var(--space-md);grid-template-columns:1fr;display:grid}.choice{background:var(--choice-bg);border:1px solid var(--border);border-radius:calc(var(--radius) - 2px);color:var(--text);text-align:left;cursor:pointer;-webkit-user-select:none;user-select:none;border-left:3px solid #0000;align-items:center;gap:12px;width:100%;min-height:64px;padding:16px 20px;font-size:15px;line-height:1.5;transition:transform .18s,border-color .18s,box-shadow .18s,background .18s;display:flex;box-shadow:0 1px 2px #00000014}.choices .choice{animation:.18s both slideUp}.choices .choice:first-child{animation-delay:10ms}.choices .choice:nth-child(2){animation-delay:20ms}.choices .choice:nth-child(3){animation-delay:30ms}.choices .choice:nth-child(4){animation-delay:40ms}.choice:hover:not(:disabled){background:var(--choice-bg-hover);border-color:var(--accent);transform:translateY(-1px);box-shadow:0 6px 18px #00000038}.choice:active:not(:disabled){transform:translateY(0);box-shadow:0 2px 4px #0000001a}.choice:disabled{cursor:default;opacity:1}.choice.selected{border-color:var(--accent);border-left-color:var(--accent);background:color-mix(in srgb, var(--choice-bg) 82%, var(--accent) 18%);box-shadow:0 0 0 1px var(--accent)}.choice.correct{border-color:var(--study-good);border-left-color:var(--study-good);background:color-mix(in srgb, var(--choice-bg) 78%, var(--study-good) 22%);box-shadow:0 0 0 1px color-mix(in srgb, var(--study-good) 72%, transparent);transform:none}.choice.wrong{border-color:var(--study-bad);border-left-color:var(--study-bad);background:color-mix(in srgb, var(--choice-bg) 80%, var(--study-bad) 20%);box-shadow:0 0 0 1px color-mix(in srgb, var(--study-bad) 72%, transparent);transform:none}.choice-letter{border:1px solid color-mix(in srgb, var(--border) 72%, white 28%);width:32px;height:32px;color:var(--text);background:#ffffff12;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;font-size:13px;font-weight:800;line-height:1;transition:all .2s;display:flex;box-shadow:inset 0 1px #ffffff08}.choice:hover:not(:disabled) .choice-letter,.choice.selected .choice-letter{border-color:color-mix(in srgb, var(--accent) 72%, white 28%);color:#e8f7ff;background:#38bdf829}.choice.correct .choice-letter{background:var(--study-good);border-color:var(--study-good);color:#06100a}.choice.wrong .choice-letter{background:var(--study-bad);border-color:var(--study-bad);color:#fff}.choice-text{overflow-wrap:anywhere;flex:1;min-width:0;line-height:1.48}.radio-group{gap:var(--space-sm);flex-direction:column;display:flex}.radio{align-items:center;gap:var(--space-sm);padding:var(--space-fluid-md) var(--space-md);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;-webkit-user-select:none;user-select:none;min-height:var(--touch-min);font-size:15px;transition:all .2s;display:flex}.radio:hover{background:var(--surface-hover);border-color:var(--border-focus)}.radio.active{border-color:var(--accent);background:var(--accent-glow-soft);box-shadow:0 0 0 1px var(--accent)}.radio:has(input:focus-visible){box-shadow:0 0 0 3px var(--accent-glow), 0 0 0 1px var(--accent);outline:none}.radio input[type=radio],.radio input[type=checkbox]{opacity:0;pointer-events:none;width:0;height:0;position:absolute}.radio input[type=checkbox]+span:before{content:"☐";margin-right:4px;font-size:16px}.radio.active input[type=checkbox]+span:before{content:"☑"}.btn{justify-content:center;align-items:center;gap:var(--space-xs);border-radius:var(--radius-sm);cursor:pointer;-webkit-user-select:none;user-select:none;min-height:var(--touch-min);min-width:var(--touch-min);border:none;padding:12px 22px;font-size:15px;font-weight:650;transition:all .2s;display:inline-flex}.btn:hover{transform:translateY(-1px)}.btn:active{transform:translateY(0)}.btn.primary{background:var(--accent);color:var(--accent-contrast);box-shadow:0 4px 14px var(--accent-glow-soft)}.btn.primary:hover:not(:disabled){background:var(--accent-hover);box-shadow:0 6px 20px var(--accent-glow)}.btn.primary:active:not(:disabled){background:var(--accent-active)}.btn:disabled,.btn.primary:disabled,.btn.secondary:disabled{background:var(--surface-active);border:1px solid var(--border);color:var(--text-placeholder);box-shadow:none;opacity:1;cursor:not-allowed;transform:none}.btn.secondary{background:var(--surface);color:var(--text);border:1px solid var(--border)}.btn.secondary:hover:not(:disabled){background:var(--surface-hover);border-color:var(--border-focus)}.btn.big{width:100%;padding:16px 20px;font-size:17px}.btn.small{min-height:36px;padding:8px 16px;font-size:13px}@media (hover:none){.btn.small{min-height:44px}}.btn-row{gap:var(--space-sm);flex-wrap:wrap;align-items:stretch;display:flex}.btn-row .btn{flex:1;min-width:min(220px,100%)}.btn-icon{color:var(--text-muted);padding:var(--space-sm);cursor:pointer;border-radius:var(--radius-xs);min-width:var(--touch-min);min-height:var(--touch-min);background:0 0;border:none;justify-content:center;align-items:center;font-size:18px;transition:all .2s;display:inline-flex}.btn-icon:hover{background:var(--surface);color:var(--text)}.btn-icon.danger:hover{background:var(--danger-bg);color:var(--danger)}.settings-btn{font-size:20px}.btn-back{color:var(--accent);cursor:pointer;padding:var(--space-xs) 0 var(--space-md);align-items:center;gap:var(--space-xs);min-height:var(--touch-min);background:0 0;border:none;font-size:15px;font-weight:500;transition:all .2s;display:inline-flex}.btn-back:hover{opacity:.8;transform:translate(-2px)}.btn:focus-visible,.btn-icon:focus-visible,.text-input:focus-visible,.choice:focus-visible,textarea:focus-visible,.type-input:focus-visible{box-shadow:0 0 0 3px var(--accent-glow);outline:none}.text-input{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);width:100%;color:var(--text);min-height:var(--touch-min);font-size:15px;font-family:var(--font-sans);padding:12px 16px;transition:all .2s}.text-input:hover{border-color:var(--border-focus)}.text-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow);outline:none}textarea{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);width:100%;color:var(--text);padding:var(--space-md);resize:vertical;font-size:14px;font-family:var(--font-mono);line-height:1.6;transition:all .2s}textarea:hover{border-color:var(--border-focus)}textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow);outline:none}textarea::placeholder{color:var(--text-placeholder)}.type-input{width:100%;padding:var(--space-md) var(--space-lg);background:var(--surface);border:2px solid var(--border);border-radius:var(--radius);color:var(--text);resize:vertical;min-height:120px;font-size:16px;line-height:1.6;font-family:var(--font-sans);transition:all .2s}.type-input:hover{border-color:var(--border-focus)}.type-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow);outline:none}.type-input::placeholder{color:var(--text-placeholder)}.progress-section{gap:var(--space-sm);flex-direction:column;display:flex}.progress-strip{gap:var(--space-sm);grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;display:grid}.metric{border:1px solid var(--border-subtle);border-radius:var(--radius);background:var(--metric-bg);min-width:0;padding:8px 12px}.metric strong{font-variant-numeric:tabular-nums;font-size:18px;font-weight:750;line-height:1.1;display:block}.metric .metric-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:0;white-space:nowrap;text-overflow:ellipsis;font-size:11px;font-weight:650;display:block;overflow:hidden}.metric-mastered strong{color:var(--success)}.metric-learning strong{color:var(--warning)}.metric-remaining strong{color:var(--text-dim)}.metric-due strong{color:var(--accent)}.progress-bar-master{text-align:center;color:var(--text-muted);letter-spacing:0;font-size:13px;font-weight:600}.progress-track{background:var(--surface);height:10px;box-shadow:var(--shadow-inner);border-radius:5px;position:relative;overflow:hidden}.progress-fill{border-radius:5px;height:100%;transition:width .4s;position:absolute;top:0}.mastered-fill{background:linear-gradient(90deg, var(--success), #86efac);z-index:2}.learning-fill{z-index:1;background:linear-gradient(90deg,#facc158c,#facc1552)}.stat{color:var(--text-dim);font-size:13px;font-weight:500}.streak-badge{text-align:center;color:var(--accent);letter-spacing:0;padding:2px 0;font-size:17px;font-weight:680;animation:.6s streakPulse}.streak-badge.streak-hot{color:var(--warning);text-shadow:0 0 16px #facc1557}.streak-badge.streak-fire{color:var(--danger);text-shadow:0 0 20px #f8717180;animation:.6s streakPulse,1s infinite alternate fireGlow}@keyframes streakPulse{0%,to{transform:scale(1)}50%{transform:scale(1.04)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes fireGlow{0%{text-shadow:0 0 12px #f8717166}to{text-shadow:0 0 24px #f87171b3}}.direction-label{text-align:center;color:var(--text-muted);letter-spacing:0;text-transform:none;flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;padding:0;font-size:12px;font-weight:650;display:flex}.direction-label span{border:1px solid var(--border-subtle);background:color-mix(in srgb, var(--surface) 72%, transparent);border-radius:999px;align-items:center;min-height:24px;padding:3px 9px;display:inline-flex}.direction-label span+span{color:var(--text-dim);font-weight:500}.direction-label .streak-chip{color:var(--warning,#f59e0b);border-color:color-mix(in srgb, var(--warning,#f59e0b) 45%, transparent);align-items:center;gap:4px;font-weight:700;display:inline-flex}.direction-label .streak-chip.streak-milestone{animation:.4s ease-out streak-pulse}@keyframes streak-pulse{0%{box-shadow:0 0 0 0 color-mix(in srgb, var(--warning,#f59e0b) 55%, transparent);transform:scale(1)}50%{transform:scale(1.18);box-shadow:0 0 0 6px #0000}to{transform:scale(1);box-shadow:0 0 #0000}}.kbd-hint{background:var(--surface);border-radius:var(--radius-xs);color:var(--text-dim);border:1px solid var(--border);letter-spacing:0;text-transform:none;padding:4px 10px;font-size:11px;font-weight:500}.feedback-section{text-align:center;flex-direction:column;align-items:center;gap:6px;animation:.2s fadeIn;display:flex}.feedback{letter-spacing:0;font-size:18px;font-weight:680}.feedback.correct{color:var(--study-good)}.feedback.wrong{color:var(--study-bad)}.feedback.loading-state{background:var(--surface);color:var(--text-muted);align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);justify-content:center;font-size:15px;display:inline-flex}.correct-answer{color:var(--text-dim);max-width:65ch;font-size:14px}.correct-answer strong{color:var(--text)}.your-answer{color:var(--study-bad);max-width:65ch;font-size:13px}.type-correct-answer{background:var(--success-bg);border-radius:var(--radius-sm);padding:var(--space-sm) var(--space-md);border:1px solid #4ade8038;font-size:14px}.type-correct-answer strong{color:var(--text)}.mastery-progress{font-size:15px}.mastery-count{color:var(--warning);font-weight:600}.mastery-done{color:var(--success);letter-spacing:0;align-items:center;gap:8px;font-size:15px;font-weight:750;animation:.4s masteryPop;display:inline-flex}.mastery-done:before{content:"✓";font-size:14px}@keyframes masteryPop{0%{opacity:0;transform:scale(.8)}50%{transform:scale(1.15)}to{opacity:1;transform:scale(1)}}.auto-hint{opacity:.6;margin-left:var(--space-xs);font-size:11px;font-weight:500}.feedback-actions{justify-content:center;width:min(100%,420px);margin-top:2px;display:flex}.feedback-actions .btn{min-width:min(100%,220px)}.next-card-note{color:var(--text-muted);font-size:13px;font-weight:650}.llm-badge{opacity:.7;color:var(--text-muted);font-size:12px;font-weight:400}.tutor-panel{text-align:left;background:color-mix(in srgb, var(--surface) 94%, var(--bg) 6%);border:1px solid var(--border);border-radius:var(--radius-md);width:min(100%,720px);padding:var(--space-md);gap:var(--space-sm);flex-direction:column;display:flex}.tutor-panel:not([open]){background:0 0;border-color:#0000;width:min(100%,420px);padding:0}.tutor-panel-header{color:var(--text);cursor:pointer;align-items:center;gap:8px;font-size:14px;font-weight:700;list-style:none;display:inline-flex}.tutor-panel-header::-webkit-details-marker{display:none}.tutor-panel:not([open]) .tutor-panel-header{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text-dim);padding:8px 12px}.tutor-loading{width:100%}.tutor-explanation,.tutor-bubble{white-space:pre-wrap;font-size:14px;line-height:1.55}.tutor-explanation{color:var(--text)}.tutor-error{color:var(--danger);font-size:14px}.tutor-reasoning{border-left:2px solid var(--border);padding-left:var(--space-sm)}.tutor-reasoning-header{color:var(--text-muted);cursor:pointer;align-items:center;gap:6px;font-size:13px;font-weight:600;list-style:none;display:inline-flex}.tutor-reasoning-header::-webkit-details-marker{display:none}.tutor-reasoning-header:after{content:"▸";font-size:11px;transition:transform .15s}.tutor-reasoning[open] .tutor-reasoning-header:after{transform:rotate(90deg)}.tutor-reasoning-text{color:var(--text-muted);white-space:pre-wrap;margin-top:6px;font-size:13px;font-style:italic;line-height:1.5}.tutor-chat{gap:var(--space-sm);flex-direction:column;display:flex}.tutor-chat-label{color:var(--text-muted);font-size:13px;font-weight:600}.tutor-chat-history{gap:var(--space-sm);scrollbar-width:thin;scrollbar-color:var(--border) transparent;flex-direction:column;max-height:min(34vh,300px);padding-right:4px;display:flex;overflow-y:auto}.tutor-chat-history::-webkit-scrollbar{width:8px}.tutor-input::-webkit-scrollbar{width:8px}.tutor-chat-history::-webkit-scrollbar-track{background:0 0}.tutor-input::-webkit-scrollbar-track{background:0 0}.tutor-chat-history::-webkit-scrollbar-thumb{background:var(--border);border-radius:999px}.tutor-input::-webkit-scrollbar-thumb{background:var(--border);border-radius:999px}.tutor-chat-turns{flex-direction:column;gap:8px;display:flex}.tutor-bubble{border-radius:var(--radius-sm);border:1px solid var(--border);flex-direction:column;gap:4px;padding:10px 12px;display:flex}.tutor-user{background:var(--tutor-user-bg);color:var(--text)}.tutor-ai{background:var(--tutor-ai-bg);color:var(--text)}.tutor-bubble-label{color:var(--text-muted);text-transform:uppercase;font-size:11px;font-weight:700;line-height:1}.tutor-input{resize:vertical;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);width:100%;min-height:76px;color:var(--text);font:inherit;padding:12px 14px}.tutor-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow-soft);outline:none}.tutor-chat .btn{align-self:flex-end}.summary-grid{gap:var(--space-md);grid-template-columns:repeat(2,1fr);display:grid}.missed-section{gap:var(--space-sm);flex-direction:column;display:flex}.missed-section h3{color:var(--danger);font-size:15px;font-weight:600}.missed-list{gap:var(--space-xs);flex-direction:column;list-style:none;display:flex}.missed-list li{background:var(--danger-bg);padding:12px var(--space-md);border-radius:var(--radius-sm);border-left:3px solid var(--danger);font-size:14px;transition:all .2s}.missed-list li:hover{transform:translate(4px)}.review-queue{gap:var(--space-sm);padding:var(--space-md);border:1px solid var(--border);border-radius:var(--radius-sm);background:color-mix(in srgb, var(--surface) 92%, var(--bg) 8%);box-shadow:var(--shadow-card);flex-direction:column;display:flex}.review-queue.compact{width:min(100%,960px);margin:0 auto}.review-queue-head{justify-content:space-between;align-items:center;gap:var(--space-md);display:flex}.review-queue h3{color:var(--text);align-items:center;gap:8px;margin:0;font-size:15px;font-weight:700;line-height:1.3;display:inline-flex}.review-queue h3 svg{color:#fbbf24}.review-queue p{color:var(--text-muted);margin:2px 0 0;font-size:12px}.review-queue-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;list-style:none;display:grid}.review-queue-list li{border:1px solid var(--border-subtle);border-radius:var(--radius-xs);background:color-mix(in srgb, var(--surface-hover) 84%, transparent);justify-content:space-between;align-items:center;gap:10px;min-width:0;padding:9px 10px;display:flex}.review-queue-list li.missed{border-left:3px solid var(--danger)}.review-queue-list li.starred{border-left:3px solid #fbbf24}.review-term{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--text);font-size:13px;font-weight:600;overflow:hidden}.review-tag{color:var(--text-muted);text-transform:uppercase;letter-spacing:0;flex:none;align-items:center;gap:4px;font-size:11px;display:inline-flex}.review-tag svg{color:currentColor}.review-more{text-align:center}.review-set-phase{width:min(100%,980px)}.review-set-title{justify-content:space-between;align-items:flex-end;gap:var(--space-md);display:flex}.review-flashcards{gap:var(--space-md);grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));display:grid}.review-flashcard{gap:var(--space-sm);min-height:180px;padding:var(--space-lg);border:1px solid var(--border);border-left:4px solid var(--danger);border-radius:var(--radius-sm);background:var(--surface);box-shadow:var(--shadow-card);flex-direction:column;display:flex}.review-flashcard.starred{border-left-color:#fbbf24}.review-flashcard-meta{justify-content:space-between;align-items:center;gap:var(--space-sm);color:var(--text-muted);font-size:12px;display:flex}.review-flashcard h3{color:var(--text);margin:0;font-size:20px;line-height:1.25}.review-flashcard p{color:var(--text-muted);margin:0;font-size:15px;line-height:1.55}.empty-state{text-align:center;color:var(--text-muted);padding:var(--space-2xl) 0;font-size:15px}.empty-icon{margin-bottom:var(--space-md);opacity:.5;font-size:56px}.state-card{background:var(--surface);border:2px dashed var(--border);border-radius:var(--radius);padding:var(--space-fluid-xl);text-align:center;color:var(--text-muted)}.deck-list{flex-direction:column;gap:12px;display:flex}.home-phase{max-width:980px}.home-phase h2{margin-bottom:2px;font-size:26px}.resume-section,.deck-section{width:100%}.resume-list{gap:var(--space-sm);flex-direction:column;display:flex}.history-list{gap:var(--space-md);flex-direction:column;display:flex}.field{gap:var(--space-sm);flex-direction:column;display:flex}.field>label{color:var(--text);font-size:14px;font-weight:500;display:block}.hint{color:var(--text-muted);margin:0;font-size:14px;line-height:1.5}.hint-inline{color:var(--text-muted);font-size:13px;font-weight:400}.hint code{background:var(--surface);border-radius:var(--radius-xs);color:var(--accent);font-size:13px;font-family:var(--font-mono);padding:3px 8px}.option-group{gap:var(--space-sm);flex-direction:column;display:flex}.option-group>label{color:var(--text);font-size:14px;font-weight:600;display:block}.type-input-section{gap:var(--space-md);flex-direction:column;display:flex}.type-actions{justify-content:flex-end;align-items:center;gap:var(--space-sm);flex-wrap:wrap;display:flex}.type-actions .btn{min-width:min(100%,160px)}.study-loading-shell{gap:var(--space-md);flex-direction:column;display:flex}.study-direction-skeleton{border-radius:999px;width:min(280px,72%);height:30px;margin:0 auto}.study-question-skeleton{min-height:clamp(180px,30vh,260px)}.study-choice-skeleton{pointer-events:none;min-height:72px}.login-form{gap:var(--space-md);flex-direction:column;display:flex}.credential-row{min-height:var(--touch-min);align-items:center;gap:var(--space-sm);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);width:fit-content;max-width:100%;color:var(--text-dim);overflow-wrap:anywhere;padding:8px 12px;font-weight:650;display:inline-flex}.auth-phase{max-width:560px}.auth-panel{padding:clamp(22px,4vw,34px)}.form-panel,.settings-panel,.setup-panel{gap:var(--space-md);flex-direction:column;display:flex}.setup-grid{gap:var(--space-md);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.setup-layout{gap:var(--space-md);grid-template-columns:minmax(0,1.45fr) minmax(280px,.85fr);align-items:start;display:grid}.setup-main,.setup-rail{gap:var(--space-md);flex-direction:column;min-width:0;display:flex}.launch-stats{gap:var(--space-sm);flex-direction:column;display:flex}.launch-stats>*+*{margin-top:0}.launch-stat-row{justify-content:space-between;align-items:center;gap:var(--space-sm);color:var(--text-muted);font-size:14px;display:flex}.launch-stat-row strong{color:var(--text);font-variant-numeric:tabular-nums;font-weight:750}.setup-rail .review-queue-list{grid-template-columns:1fr}.mode-cards{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.mode-card{border:1px solid var(--border);border-radius:var(--radius);background:var(--choice-bg);cursor:pointer;min-height:var(--touch-min);-webkit-user-select:none;user-select:none;flex-direction:column;gap:4px;padding:14px;transition:border-color .18s,background .18s,box-shadow .18s;display:flex;position:relative}.mode-card:hover{border-color:var(--border-focus);background:var(--choice-bg-hover)}.mode-card.active{border-color:var(--accent);background:var(--accent-glow-soft);box-shadow:0 0 0 1px var(--accent)}.mode-card:has(input:focus-visible){box-shadow:0 0 0 3px var(--accent-glow), 0 0 0 1px var(--accent)}.mode-card input[type=radio]{opacity:0;pointer-events:none;width:0;height:0;position:absolute}.mode-card-title{align-items:center;gap:8px;font-size:15px;font-weight:700;display:inline-flex}.mode-card-title svg{color:var(--accent);flex:none}.mode-card-hint{color:var(--text-muted);font-size:12.5px;line-height:1.4}.user-footer{padding-top:var(--space-sm);border-top:1px solid var(--border);justify-content:flex-end;align-items:center;gap:var(--space-md);flex-wrap:wrap;display:flex}.resume-banner{justify-content:space-between;align-items:center;gap:var(--space-md);background:linear-gradient(180deg, color-mix(in srgb, var(--accent-glow-soft) 72%, var(--surface) 28%) 0%, color-mix(in srgb, var(--surface) 86%, var(--accent-glow-soft) 14%) 100%);border:1px solid color-mix(in srgb, var(--accent) 58%, var(--border) 42%);border-left:4px solid var(--warning);border-radius:var(--radius);padding:var(--space-fluid-md) var(--space-fluid-lg);display:flex;box-shadow:0 1px #ffffff0a}.resume-info{min-width:0}.resume-info strong{margin-bottom:var(--space-xs);align-items:center;gap:8px;min-width:0;font-size:16px;font-weight:600;display:inline-flex}.resume-info strong svg{color:var(--warning);flex:none}.resume-meta{color:var(--text-muted);overflow-wrap:anywhere;font-size:13px;display:block}.resume-actions{gap:var(--space-sm);flex-wrap:wrap;display:flex}.resume-actions .btn{flex:unset;padding:10px 20px;font-size:14px}.user-badge{background:var(--surface);border:1px solid var(--border);color:var(--text-dim);cursor:pointer;min-height:var(--touch-min);align-items:center;gap:var(--space-xs);border-radius:24px;min-width:0;max-width:180px;padding:6px 14px;font-size:13px;font-weight:500;transition:all .2s;display:inline-flex}.user-badge-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:140px;overflow:hidden}.user-badge:hover{border-color:var(--accent);color:var(--text);background:var(--surface-hover)}.embed-badge{cursor:default;flex-shrink:0;font-size:18px}.embed-section{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-fluid-md) var(--space-fluid-lg)}.embed-section>*+*{margin-top:var(--space-sm)}.embed-section a{color:var(--accent);text-decoration:underline;transition:opacity .2s}.embed-section a:hover{opacity:.8}.embed-loading{align-items:center;gap:var(--space-sm);color:var(--text-muted);font-size:14px;display:flex}.spinner{border:2px solid var(--surface-hover);border-top-color:var(--accent);border-radius:50%;flex-shrink:0;width:18px;height:18px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.embed-ready{color:var(--success);padding:var(--space-xs) 0;font-size:14px;font-weight:500}.embed-error{color:var(--danger);padding:var(--space-xs) 0;font-size:14px;font-weight:500}.choices-2 .choice{min-height:64px;font-size:16px}.study-toolbar{grid-template-columns:var(--touch-min) minmax(0, 1fr) auto var(--touch-min);z-index:50;box-shadow:none;background:0 0;border:0;align-items:center;gap:10px;padding:0 0 10px;display:grid;position:relative}.study-phase{padding-top:0;padding-bottom:var(--space-lg);max-width:960px;overflow-x:hidden}.toolbar-meta{text-align:left;min-width:0;padding:0}.toolbar-deck-name{white-space:nowrap;text-overflow:ellipsis;letter-spacing:0;font-size:16px;font-weight:680;overflow:hidden}.toolbar-mode-label{color:var(--text-muted);margin:0;font-size:13px;font-weight:500;line-height:1.35}.toolbar-controls,.toolbar-choice-controls{justify-content:center;align-items:center;gap:6px;min-width:0;display:inline-flex}.toolbar-controls{border:1px solid var(--border-subtle);border-radius:var(--radius);background:color-mix(in srgb, var(--bg-2) 72%, transparent);padding:4px}.toolbar-choice-controls{border-left:1px solid var(--border-subtle);padding-left:6px}.toolbar-chip{border:1px solid var(--border);border-radius:var(--radius-xs);background:color-mix(in srgb, var(--surface) 82%, transparent);min-height:32px;color:var(--text-muted);cursor:pointer;justify-content:center;align-items:center;gap:4px;padding:5px 9px;font-size:12px;font-weight:700;line-height:1;transition:background .18s,border-color .18s,color .18s;display:inline-flex}.toolbar-chip.compact{width:32px;padding:5px 0}.toolbar-chip:hover{border-color:var(--border-focus);color:var(--text);background:var(--surface-hover)}.toolbar-chip.active{border-color:var(--accent);color:var(--accent);background:var(--accent-glow-soft)}.toolbar-btn{color:var(--text-muted);padding:var(--space-sm);border-radius:var(--radius-xs);cursor:pointer;min-width:var(--touch-min);min-height:var(--touch-min);background:0 0;border:none;justify-content:center;align-items:center;font-size:18px;transition:all .2s;display:inline-flex}.toolbar-btn:hover{background:color-mix(in srgb, var(--surface-hover) 74%, transparent);color:var(--text)}.toolbar-btn.active{background:var(--accent-glow-soft);color:var(--accent)}.card-enter{animation:.22s both cardEnter}@keyframes cardEnter{0%{opacity:0;transform:translateY(10px)scale(.985)}to{opacity:1;transform:translateY(0)scale(1)}}.feedback-pop{animation:.28s cubic-bezier(.34,1.56,.64,1) both feedbackPop}@keyframes feedbackPop{0%{opacity:0;transform:scale(.85)}60%{transform:scale(1.06)}to{opacity:1;transform:scale(1)}}.streak-pulse{animation:.45s ease-out streakChipPulse}@keyframes streakChipPulse{0%{transform:scale(1)}50%{transform:scale(1.16)}to{transform:scale(1)}}.toast-container{top:calc(var(--space-md) + env(safe-area-inset-top,0px));z-index:1000;gap:var(--space-sm);pointer-events:none;flex-direction:column;display:flex;position:fixed;left:50%;transform:translate(-50%)}.toast{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-md) var(--space-lg);box-shadow:var(--shadow-elevated);pointer-events:auto;max-width:min(400px,90vw);font-size:14px;font-weight:500;animation:.3s toastSlideIn}.toast.success{border-color:var(--success);background:var(--success-bg);color:var(--success)}.toast.error{border-color:var(--danger);background:var(--danger-bg);color:var(--danger)}.toast.info{border-color:var(--accent);background:var(--accent-glow-soft);color:var(--text)}@keyframes toastSlideIn{0%{opacity:0;transform:translateY(-16px)}to{opacity:1;transform:translateY(0)}}.dialog-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1000;padding:var(--space-md);background:#0009;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.dialog{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-fluid-xl);width:100%;max-width:400px;box-shadow:var(--shadow-elevated);animation:.2s scaleIn}.dialog-title{margin-bottom:var(--space-sm);font-size:18px;font-weight:700}.dialog-message{color:var(--text-dim);margin-bottom:var(--space-lg);font-size:15px;line-height:1.5}.dialog-actions{gap:var(--space-sm);justify-content:flex-end;display:flex}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.auto-advance-bar{z-index:100;background:#38bdf829;border-radius:0;height:3px;position:fixed;top:0;left:0;right:0}.auto-advance-fill{background:linear-gradient(90deg, var(--accent), var(--accent-hover));height:100%;animation:linear forwards shrink}@keyframes shrink{0%{width:100%}to{width:0%}}.import-preview{border-radius:var(--radius-sm);padding:var(--space-sm) var(--space-md);font-size:13px;font-weight:500}.import-preview-ok{background:var(--success-bg);color:var(--success);border:1px solid #4ade8040}.import-preview-warn{background:var(--danger-bg);color:var(--danger);border:1px solid #f8717140}.import-skipped-list{margin-top:var(--space-xs);flex-direction:column;gap:4px;list-style:none;display:flex}.import-skipped-list li{opacity:.85;padding-left:var(--space-sm);word-break:break-word;border-left:2px solid;font-size:12px}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes slideUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.skeleton{background:linear-gradient(90deg, var(--surface) 25%, var(--surface-hover) 50%, var(--surface) 75%);border-radius:var(--radius);border:1px solid var(--border);box-shadow:none;background-size:200% 100%;animation:1.5s infinite shimmer}.loading-pulse{animation:1.5s ease-in-out infinite pulse}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.phase,.streak-badge,.card-enter,.feedback-pop,.streak-pulse,.direction-label .streak-chip.streak-milestone,.question-card.card-mastered,.mastery-done{animation:none}.progress-fill{transition:none}.choices .choice{animation:none}.choice:hover:not(:disabled){transform:none}.auto-advance-fill,.loading-pulse,.skeleton{animation:none}}@media (width<=640px){.phase>*+*{margin-top:var(--space-md)}.app{padding:clamp(20px, 4vw, 36px) clamp(16px, 3vw, 24px) var(--space-xl);padding-bottom:calc(var(--space-xl) + env(safe-area-inset-bottom,0px))}.header{padding:var(--space-md) 0 var(--space-sm)}.header.study-header{display:none}.header-top{flex-direction:column;align-items:flex-start}.header-actions{justify-content:space-between;align-items:flex-start;width:100%}.user-badge{max-width:min(100%,240px)}.user-badge-name{max-width:min(52vw,160px)}.header h1{font-size:22px}.subtitle{font-size:13px}.phase h2{font-size:20px}.question-card{padding:var(--space-md);border-radius:var(--radius);align-items:stretch;gap:var(--space-sm);flex-direction:column;min-height:118px}.question-card-actions{flex:none;order:-1;align-self:flex-end;position:static}.prompt{width:100%;font-size:19px}.long-prompt-card .prompt{font-size:15px;line-height:1.45}.flashcard-card{min-height:180px}.flashcard-actions{grid-template-columns:1fr}.choice{padding:var(--space-sm) var(--space-md);min-height:60px;font-size:14px}.choice-letter{width:32px;height:32px;font-size:13px}.summary-grid{gap:var(--space-sm)}.summary-card{padding:var(--space-md)}.summary-value{font-size:28px}.deck-info{padding:var(--space-sm) var(--space-md);flex-direction:column;align-items:flex-start}.deck-count{text-align:left}.btn.big{padding:14px;font-size:16px}.btn-row,.resume-actions,.dialog-actions,.user-footer,.page-head,.resume-banner{flex-direction:column;align-items:stretch}.page-actions{justify-content:stretch}.page-actions .btn{width:100%}.surface-panel{padding:var(--space-md)}.setup-grid,.mode-cards{grid-template-columns:1fr}.btn-row .btn,.resume-actions .btn,.dialog-actions .btn{width:100%;min-width:0}.history-header{flex-direction:column}.history-stats{gap:var(--space-sm)}.summary-grid{grid-template-columns:1fr}.review-queue-head{flex-direction:column;align-items:stretch}.review-queue-list{grid-template-columns:1fr}.kbd-hint{display:none}.choices-4{grid-template-columns:1fr;gap:10px}.choices-4 .choice{gap:10px;min-height:64px;padding:12px}.study-toolbar{grid-template-columns:var(--touch-min) minmax(0, 1fr) var(--touch-min);padding-top:calc(8px + env(safe-area-inset-top,0px));background:linear-gradient(180deg, var(--bg) 72%, color-mix(in srgb, var(--bg) 0%, transparent));-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);position:sticky;top:0}.toolbar-meta{text-align:center}.toolbar-controls{flex-wrap:wrap;grid-area:2/1/auto/-1;justify-self:center;width:min(100%,360px)}.study-phase{padding-top:0;padding-bottom:var(--space-lg)}.progress-strip{gap:6px}.metric{padding:5px 8px}.metric strong{font-size:15px}.metric .metric-label{font-size:9px}.progress-bar-master{font-size:12px}.direction-label{font-size:11px}.feedback{font-size:16px}}@media (width<=900px){.setup-layout{grid-template-columns:1fr}}@media (width>=641px) and (width<=1024px){.app{padding:clamp(20px, 4vw, 36px) clamp(16px, 3vw, 24px) var(--space-2xl)}.summary-grid{grid-template-columns:repeat(4,1fr)}.choices-4{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}}@media (width>=1025px){.summary-grid{grid-template-columns:repeat(4,1fr)}.app{padding:clamp(20px, 4vw, 36px) clamp(16px, 3vw, 24px) calc(var(--space-2xl) + 20px)}.choices-4{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}}.game-phase>*+*{margin-top:var(--space-md,16px)}.game-hud{grid-template-columns:var(--touch-min) minmax(0, 1fr) auto minmax(0, auto) var(--touch-min)}.game-hud .boss-hp-track{width:clamp(120px,18vw,220px)}.game-hud .sprint-deadline{width:clamp(180px,26vw,260px)}.game-hud .game-hud-stats{align-items:center;gap:14px;margin-left:auto;display:inline-flex}.game-hud-timer{font-variant-numeric:tabular-nums;color:var(--text-muted,var(--text));font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.game-hud-score{color:var(--accent);font-weight:700}.game-hud-streak{color:var(--warning,#fbbf24);border:1px solid color-mix(in srgb, var(--warning,#fbbf24) 45%, transparent);border-radius:var(--radius-pill);background:var(--warning-bg);text-shadow:0 0 12px #facc154d;align-items:center;gap:4px;padding:2px 9px;font-weight:700;animation:.45s ease-out streakChipPulse;display:inline-flex}.games-panel-heading{margin-bottom:12px}.games-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;display:grid}.game-card{border:1px solid var(--border,#94a3b840);background:linear-gradient(180deg, color-mix(in srgb, var(--surface) 82%, var(--surface-hover) 18%) 0%, var(--surface) 100%);color:var(--text);text-align:left;cursor:pointer;font:inherit;border-radius:12px;flex-direction:column;align-items:flex-start;gap:6px;padding:14px;transition:border-color .18s,transform .18s,box-shadow .18s;display:flex;position:relative;overflow:hidden}.game-card:before{content:"";background:var(--accent-grad);opacity:.85;height:3px;position:absolute;inset:0 0 auto}.game-card:hover:not(:disabled){border-color:var(--accent);box-shadow:var(--shadow-card);transform:translateY(-2px)}.game-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.game-card:disabled{opacity:.55;cursor:not-allowed}.game-card:disabled:before{opacity:.3}.game-card-head{align-items:center;gap:8px;font-weight:700;display:inline-flex}.game-card-head svg{color:var(--accent)}.game-card-tier{text-transform:uppercase;letter-spacing:.06em;color:var(--accent);border:1px solid color-mix(in srgb, var(--accent) 45%, transparent);border-radius:var(--radius-pill);background:var(--accent-glow-soft);padding:1px 8px;font-size:.72rem}.game-card-desc{color:var(--text-muted,inherit);font-size:.85rem}.games-retention{flex-direction:column;gap:6px;margin-top:14px;font-size:.9rem;display:flex}.games-retention input[type=range]{accent-color:var(--accent);max-width:320px}.boss-hp-track{border-radius:var(--radius-pill);background:var(--surface-2,#94a3b833);border:1px solid var(--border,#94a3b840);max-width:220px;height:14px;box-shadow:var(--shadow-inner);flex:120px;position:relative;overflow:visible}.boss-hp-fill{border-radius:var(--radius-pill);background:linear-gradient(90deg, var(--danger), #f59e0b);height:100%;box-shadow:0 0 10px var(--danger-glow);transition:width .45s cubic-bezier(.22,1,.36,1);position:relative}.boss-hp-fill:after{content:"";border-radius:var(--radius-pill);opacity:.7;background:#ffffff8c;width:4px;height:100%;position:absolute;top:0;right:0}.boss-hp-fill.shatter{opacity:0;transition:opacity .4s,width .45s cubic-bezier(.22,1,.36,1)}.boss-damage-float{color:var(--danger);text-shadow:0 0 10px var(--danger-glow);font-size:15px;font-weight:800;animation:.7s ease-out forwards boss-damage-rise;position:absolute;top:-20px;right:0}@keyframes boss-damage-rise{0%{opacity:1;transform:translateY(0)scale(1.15)}to{opacity:0;transform:translateY(-16px)scale(1)}}.ladder-rungs{align-items:flex-end;gap:5px;display:inline-flex}.ladder-rung{background:var(--surface-2,#94a3b840);border:1px solid var(--border-subtle);transform-origin:bottom;border-radius:3px;width:16px;height:7px}.ladder-rung:nth-child(2){height:12px}.ladder-rung:nth-child(3){height:17px}.ladder-rung.passed{background:var(--success);border-color:color-mix(in srgb, var(--success) 60%, transparent);opacity:.75}.ladder-rung.active{background:var(--accent);border-color:var(--accent);box-shadow:0 0 10px var(--accent-glow);animation:.4s cubic-bezier(.34,1.56,.64,1) rungClimb}@keyframes rungClimb{0%{opacity:.5;transform:scaleY(.4)}to{opacity:1;transform:scaleY(1)}}.ladder-scaffold{letter-spacing:.12em;color:var(--text-muted,inherit);padding:4px 2px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:1.05rem}.game-type-input{width:100%}.match-board{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.match-tile{border:1px solid var(--border,#94a3b840);background:linear-gradient(180deg, color-mix(in srgb, var(--surface) 84%, var(--surface-hover) 16%) 0%, var(--surface) 100%);min-height:92px;color:var(--text);font:inherit;cursor:pointer;border-radius:10px;padding:10px;font-size:.85rem;transition:transform .12s,border-color .12s,opacity .25s,box-shadow .12s;box-shadow:0 1px 2px #0000001a}.match-tile:hover:not(:disabled){border-color:var(--border-focus);transform:translateY(-1px)}.match-tile:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.match-tile.selected{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent), 0 0 14px var(--accent-glow-soft);transform:scale(1.03)}.match-tile.mismatch{border-color:var(--danger);background:var(--danger-bg,#fb71851f);box-shadow:0 0 0 1px var(--danger);animation:.3s tileShake}@keyframes tileShake{0%,to{transform:translate(0)}25%{transform:translate(-4px)}50%{transform:translate(4px)}75%{transform:translate(-2px)}}.match-tile.reveal-partner{border-color:var(--success);box-shadow:0 0 0 1px var(--success), 0 0 14px var(--success-glow);animation:.3s partnerPop}@keyframes partnerPop{0%{transform:scale(1)}50%{transform:scale(1.05)}to{transform:scale(1)}}.match-tile.cleared{visibility:hidden}.match-tile-text{-webkit-line-clamp:4;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.match-board-label{text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted,inherit);font-size:.78rem}.match-interstitial{text-align:center;padding:32px 0}.match-interstitial h3{margin-bottom:8px}.match-interstitial p,.sprint-setup h2{margin-bottom:16px}.sprint-setup .option-group+.option-group{margin-top:16px}.sprint-deadline{flex:140px;align-items:center;gap:10px;max-width:260px;display:inline-flex}.sprint-deadline-label{font-variant-numeric:tabular-nums;white-space:nowrap;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85rem}.sprint-deadline-track{border-radius:var(--radius-pill);background:var(--surface-2,#94a3b833);height:9px;box-shadow:var(--shadow-inner);flex:1;overflow:hidden;container-type:inline-size}.sprint-deadline-fill{border-radius:var(--radius-pill);background:linear-gradient(90deg, var(--accent) 0%, var(--accent) 55%, var(--warning) 80%, var(--danger) 97%);background-repeat:no-repeat;background-size:100cqw 100%;height:100%;transition:width .25s linear}.sprint-paused-overlay{text-align:center;padding:60px 0}.sprint-paused-overlay h3{margin-bottom:16px}.sprint-change-setup{margin-top:12px}.game-recap{background:color-mix(in srgb, var(--surface) 92%, var(--bg) 8%);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-fluid-lg);box-shadow:var(--elev-3)}.game-recap-heading{align-items:center;gap:10px;font-size:clamp(24px,3vw,30px);animation:.32s cubic-bezier(.34,1.56,.64,1) both feedbackPop;display:inline-flex}.game-recap-heading svg{color:var(--warning)}.game-recap-heading:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.game-recap-stats{gap:var(--space-sm);grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;margin:16px 0;display:grid}.game-recap-stat{border:1px solid var(--border-subtle);border-radius:var(--radius);background:var(--metric-bg);flex-direction:column;min-width:0;padding:10px 12px;display:flex}.game-recap-value{color:var(--accent);font-variant-numeric:tabular-nums;font-size:1.4rem;font-weight:750}.game-recap-label{color:var(--text-muted,inherit);text-transform:uppercase;letter-spacing:0;font-size:.78rem;font-weight:650}.game-recap-target,.game-recap-best,.game-recap-nudge{margin:6px 0;font-size:.9rem}.game-recap-best.new-best{color:var(--success);font-weight:700}.game-recap-nudge{color:var(--text-muted,inherit);font-style:italic}.game-recap-list{margin-top:16px}.game-recap-list h3{align-items:center;gap:6px;margin-bottom:8px;font-size:.95rem;display:inline-flex}.game-recap-list ul{margin:0;padding:0;list-style:none}.game-recap-list li{border-bottom:1px solid var(--border,#94a3b826);justify-content:space-between;align-items:center;gap:10px;padding:8px 0;display:flex}.game-recap-row-main{flex-direction:column;gap:2px;min-width:0;display:flex}.game-recap-row-main .review-term{align-items:center;gap:6px;font-weight:600;display:inline-flex}.game-recap-definition{color:var(--text-muted,inherit);font-size:.85rem}.game-recap-override-tag{color:var(--warning,#fbbf24);font-size:.75rem}.replayed-check{color:var(--success)}.game-recap-actions{flex-wrap:wrap;gap:10px;margin-top:20px;display:flex}.game-replay-label{color:var(--text-muted,inherit);margin-bottom:12px;font-size:.9rem}.game-replay-exit{margin-top:14px}.history-mode{text-transform:uppercase;letter-spacing:.06em;border:1px solid var(--border,#94a3b84d);color:var(--text-muted,inherit);border-radius:999px;padding:2px 8px;font-size:.72rem}@media (prefers-reduced-motion:reduce){.boss-damage-float{opacity:0;animation:none}.boss-hp-fill,.sprint-deadline-fill,.match-tile{transition:none}.ladder-rung.active,.match-tile.mismatch,.match-tile.reveal-partner,.game-recap-heading,.game-hud-streak{animation:none}.match-tile.selected{transform:none}}@media (width<=640px){.match-board{grid-template-columns:repeat(3,minmax(0,1fr))}.match-tile{min-height:80px;font-size:.8rem}.game-recap-stats{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-flow:row}.game-hud{grid-template-columns:var(--touch-min) minmax(0, 1fr) var(--touch-min)}.game-hud .game-hud-stats{grid-area:2/1/auto/-1;justify-self:center;margin-left:0}.game-hud .boss-hp-track,.game-hud .sprint-deadline,.game-hud .ladder-rungs,.game-hud .match-board-label{text-align:center;grid-area:3/1/auto/-1;justify-self:center;width:min(100%,360px)}.game-hud .ladder-rungs{width:auto}}.source-phase{max-width:980px}.source-tabs{align-items:center;gap:8px;margin-bottom:14px;display:flex}.source-tab{background:var(--surface);color:var(--text-dim);border:1px solid var(--border);font:inherit;cursor:pointer;border-radius:8px;padding:7px 14px;font-size:.85rem}.source-tab.active{color:var(--text);border-color:var(--accent);background:var(--surface-raised,var(--surface))}.source-edit-btn{margin-left:auto}.source-doc-layout{align-items:flex-start;gap:16px;display:flex}.source-doc-text{white-space:pre-wrap;overflow-wrap:anywhere;background:var(--surface);border:1px solid var(--border);border-radius:12px;flex:1;min-width:0;padding:18px 20px;font-size:.95rem;line-height:1.65}.source-anchor{cursor:pointer;color:inherit;border-radius:3px;padding:0 1px}.source-anchor:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.anchor-exact,.anchor-relocated{background:color-mix(in srgb, var(--accent) 22%, transparent)}.anchor-fuzzy{background:#d9a5144d}.anchor-ambiguous{background:#d9a5144d;box-shadow:inset 0 -2px #d9a514}.anchor-stacked{background:color-mix(in srgb, var(--accent) 40%, transparent)}.span-flash{animation:1.2s ease-out span-flash-pulse}@keyframes span-flash-pulse{0%{background:color-mix(in srgb, var(--accent) 70%, transparent)}to{background:color-mix(in srgb, var(--accent) 22%, transparent)}}.source-status-badge{background:var(--surface);border:1px solid var(--border);color:var(--text-dim);border-radius:999px;margin-left:8px;padding:2px 8px;font-size:.7rem}.source-status-badge.status-fuzzy,.source-status-badge.status-ambiguous{color:#d9a514;border-color:#d9a514}.source-status-badge.status-orphaned{border-color:var(--danger);color:var(--danger)}.source-margin-rail{flex-direction:column;flex-shrink:0;gap:10px;width:230px;display:flex}.margin-note{background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:8px;padding:10px 12px;font-size:.8rem}.margin-note-head{margin-bottom:6px;font-weight:600}.margin-note-diff{overflow-wrap:anywhere;margin-bottom:8px}.margin-note-before{color:var(--text-dim);text-decoration:line-through}.margin-note-after{color:var(--text)}.margin-note-actions{flex-wrap:wrap;gap:6px;display:flex}@media (width<=760px){.source-doc-layout{flex-direction:column}.source-margin-rail{width:100%}}.source-selection-toolbar{z-index:70;background:var(--surface);border:1px solid var(--border);border-radius:10px;gap:6px;padding:6px;display:flex;position:fixed;box-shadow:0 6px 24px #00000059}.source-select-banner{background:color-mix(in srgb, var(--accent) 12%, transparent);border:1px solid var(--accent);border-radius:8px;justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px;padding:8px 12px;font-size:.85rem;display:flex}.source-editor textarea{resize:vertical;width:100%;min-height:320px;font-size:.9rem;line-height:1.55}.source-review-list{flex-direction:column;gap:12px;display:flex}.source-review-row{padding:14px 16px}.source-review-head{align-items:center;gap:10px;margin-bottom:6px;display:flex}.source-review-tag{color:#d9a514;border:1px solid #d9a514;border-radius:999px;align-items:center;gap:4px;padding:2px 8px;font-size:.72rem;display:inline-flex}.source-review-tag.orphaned{border-color:var(--danger);color:var(--danger)}.source-review-def{color:var(--text-dim);margin-bottom:10px;font-size:.85rem}.source-review-quote{color:var(--text-dim);margin-bottom:10px;font-size:.8rem;font-style:italic}.source-review-excerpts,.card-edit-excerpts{flex-wrap:wrap;gap:10px;margin-bottom:12px;display:flex}.card-edit-excerpt{border:1px solid var(--border);border-radius:8px;flex:1;min-width:180px;padding:8px 10px;font-size:.8rem}.card-edit-excerpt.old{border-left:3px solid var(--danger)}.card-edit-excerpt.new{border-left:3px solid var(--success)}.card-edit-excerpt-label{color:var(--text-dim);text-transform:uppercase;margin-bottom:4px;font-size:.7rem;font-weight:600;display:block}.card-edit-excerpt p{overflow-wrap:anywhere;margin:0}.source-popover{max-width:480px}.source-popover-card{border-bottom:1px solid var(--border);margin-bottom:12px;padding-bottom:12px}.source-popover-card:last-of-type{border-bottom:none}.source-popover-term{align-items:center;margin-bottom:6px;display:flex}.source-popover-def{color:var(--text-dim);margin-bottom:10px;font-size:.88rem}.source-overlay-backdrop{z-index:80}.source-overlay-panel{background:var(--bg);border:1px solid var(--border);border-radius:14px;flex-direction:column;width:min(860px,94vw);max-height:86vh;display:flex}.source-overlay-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.source-overlay-title{align-items:center;gap:8px;font-weight:600;display:inline-flex}.source-overlay-body{padding:14px 16px;overflow-y:auto}.source-panel{padding:12px 16px}.source-panel-row{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.source-review-count{color:#d9a514;align-items:center;gap:5px;font-size:.8rem;display:inline-flex}.import-source-section{margin-bottom:16px}.import-source-section summary{cursor:pointer;margin-bottom:8px;font-size:.9rem;font-weight:600}.import-source-section textarea{width:100%}.course-context-panel{padding:12px 16px}.course-context-section summary{cursor:pointer;font-size:.9rem;font-weight:600}.course-context-body{flex-direction:column;gap:8px;margin-top:10px;display:flex}.course-context-body textarea{width:100%}.course-context-recap{white-space:pre-wrap;margin:0;font-size:.9rem}.btn.danger,.btn.small.danger{color:var(--danger);border-color:var(--danger)}.admin-form-panel{margin-bottom:var(--space-md)}.admin-form{flex-direction:column;gap:8px;display:flex}.admin-select{appearance:auto;cursor:pointer}.admin-form-flags{flex-wrap:wrap;gap:10px;margin-top:6px;display:flex}.admin-form-actions{margin-top:var(--space-sm);justify-content:flex-end;gap:10px;display:flex}.admin-provider-list{flex-direction:column;gap:10px;list-style:none;display:flex}.admin-provider{border:1px solid var(--border-subtle);border-radius:var(--radius-sm);background:color-mix(in srgb, var(--surface-hover) 84%, transparent);padding:12px 14px}.admin-provider.disabled{opacity:.6}.admin-provider-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.admin-provider-title{align-items:center;gap:8px;min-width:0;display:inline-flex}.admin-badge{text-transform:uppercase;letter-spacing:.06em;border:1px solid var(--border,#94a3b84d);color:var(--text-muted,inherit);border-radius:999px;align-items:center;gap:4px;padding:2px 8px;font-size:.72rem;display:inline-flex}.admin-badge.primary-badge{border-color:color-mix(in srgb, var(--accent) 58%, var(--border) 42%);color:var(--accent)}.admin-provider-actions{align-items:center;gap:6px;display:inline-flex}.admin-provider-meta{color:var(--text-muted,inherit);flex-wrap:wrap;gap:6px 14px;margin-top:8px;font-size:.85rem;display:flex}.admin-meta-item{align-items:center;gap:5px;min-width:0;display:inline-flex}.admin-meta-url{font-family:var(--font-mono);overflow-wrap:anywhere;font-size:.78rem}.admin-meta-key{font-family:var(--font-mono);font-size:.78rem}.admin-test-result{color:var(--text-muted,inherit);align-items:center;gap:8px;margin-top:10px;font-size:.85rem;display:inline-flex}.admin-test-result.ok{color:var(--success)}.admin-test-result.failed{color:var(--danger)}.import-review-progress{color:var(--text-muted,inherit);white-space:nowrap;font-size:.85rem}.import-review-batch{justify-content:flex-end;margin-bottom:14px;display:flex}.import-review-list{flex-direction:column;gap:12px;display:flex}.import-review-item{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.import-review-main{flex:1;min-width:0}.import-review-term{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.import-review-confidence{color:var(--accent);border:1px solid var(--accent);border-radius:999px;align-items:center;gap:4px;padding:1px 8px;font-size:.75rem;display:inline-flex}.import-review-definition{margin:8px 0 0;font-size:.92rem}.import-review-source{margin-top:10px;font-size:.85rem}.import-review-source summary{cursor:pointer;color:var(--text-muted,inherit)}.import-review-source blockquote{border-left:3px solid var(--accent);color:var(--text-muted,inherit);white-space:pre-wrap;overflow-wrap:anywhere;max-height:220px;margin:8px 0 0;padding:8px 12px;overflow-y:auto}.import-review-actions{flex-direction:column;flex-shrink:0;gap:8px;display:flex}@media (width<=640px){.import-review-item{flex-direction:column}.import-review-actions{flex-flow:wrap}}.import-queue-banner{border-color:var(--accent);color:var(--accent);align-items:center;gap:8px;margin-bottom:16px;display:inline-flex}.smart-import-toggle{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;font-size:.9rem;display:inline-flex}.smart-import-toggle span{color:var(--accent);align-items:center;gap:6px;display:inline-flex}.import-smart-progress{align-items:center;gap:10px;display:flex}.import-smart-progress .btn{margin-left:auto}
