:root{--font-display: "Bricolage Grotesque", "Segoe UI", system-ui, sans-serif;--font-body: "Figtree", "Segoe UI", system-ui, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, Consolas, monospace;--bg: #F4F6FB;--surface: #FFFFFF;--surface-2: #EEF1F8;--ink: #111833;--muted: #4D5673;--faint: #C9CFDE;--line: #E1E5EF;--primary: #2743C4;--primary-hover: #1F37A6;--on-primary: #FFFFFF;--primary-soft: #E6EBFB;--primary-text: #2743C4;--mark: #FFE45C;--mark-ink: #111833;--mark-soft: color-mix(in srgb, var(--mark) 22%, var(--surface));--mark-line: color-mix(in srgb, var(--mark) 55%, var(--surface));--ok: #0E7A55;--ok-soft: #E1F3EB;--bad: #C0352B;--bad-soft: #FBE7E5;--warn: #9A5B00;--warn-soft: #FFF1D6;--pair-0: #2743C4;--pair-1: #0E7A55;--pair-2: #9A5B00;--pair-3: #7A4FD0;--s: var(--primary);--s-soft: var(--primary-soft);--s-ink: var(--primary-text);--radius-sm: 8px;--radius: 12px;--radius-lg: 16px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-7: 48px;--shadow-card: 0 1px 3px rgb(17 24 51 / .06);--shadow-dialog: 0 20px 50px rgb(17 24 51 / .22);--backdrop: rgb(17 24 51 / .45)}[data-subject]{--s: var(--s-base, var(--primary));--s-soft: color-mix(in srgb, var(--s) 13%, var(--surface));--s-ink: color-mix(in srgb, var(--s) 68%, var(--ink))}[data-subject=catala]{--s: #D9472F;--s-soft: #FCE8E3;--s-ink: #9A2B18}[data-subject=castellano]{--s: #D99A00;--s-soft: #FDF2D3;--s-ink: #6E4E00}[data-subject=english]{--s: #2F6FE0;--s-soft: #E3ECFC;--s-ink: #1B4799}[data-subject=italiano]{--s: #12946A;--s-soft: #DCF2E9;--s-ink: #0A5E42}[data-subject=economia-de-lempresa]{--s: #7A4FD0;--s-soft: #EFE9FB;--s-ink: #55309F}[data-subject=geografia]{--s: #0F8A8A;--s-soft: #DDF2F1;--s-ink: #0A5F5F}:root[data-theme=dark]{color-scheme:dark;--bg: #0D1017;--surface: #151A23;--surface-2: #1D2331;--ink: #E7EBF3;--muted: #A3ADBF;--faint: #3A4356;--line: #272E3C;--primary: #8EA4FF;--primary-hover: #A9BAFF;--on-primary: #0D1017;--primary-soft: #1F2744;--primary-text: #AFC0FF;--mark: #FFD84D;--mark-ink: #1A1600;--mark-soft: color-mix(in srgb, var(--mark) 9%, var(--surface));--mark-line: color-mix(in srgb, var(--mark) 32%, var(--surface));--ok: #4CC795;--ok-soft: #10291F;--bad: #FF7A6E;--bad-soft: #33171A;--warn: #F2B64B;--warn-soft: #2E2210;--pair-0: #8EA4FF;--pair-1: #4CC795;--pair-2: #F2B64B;--pair-3: #B69CF5;--shadow-card: 0 1px 3px rgb(0 0 0 / .4);--shadow-dialog: 0 20px 50px rgb(0 0 0 / .6);--backdrop: rgb(0 0 0 / .6)}:root[data-theme=dark] [data-subject]{--s-soft: color-mix(in srgb, var(--s) 22%, var(--surface));--s-ink: color-mix(in srgb, var(--s) 55%, #FFFFFF)}:root{font-family:var(--font-body);color:var(--ink);background:var(--bg);font-synthesis:none;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{margin:0;background:var(--bg);font-size:15px;line-height:1.5}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}h1,h2,h3,p{margin-top:0}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.02em;line-height:1.2;text-wrap:balance}h1{font-size:clamp(1.8rem,3.4vw,2.3rem);font-weight:800}h2{font-size:1.15rem;font-weight:700}h3{font-size:1rem}p{line-height:1.6}ul,ol{margin:0;padding:0;list-style:none}mark{background:var(--mark);color:var(--mark-ink);padding:0 .2em;border-radius:3px;box-decoration-break:clone;-webkit-box-decoration-break:clone}kbd{font:600 .72rem var(--font-mono);border:1px solid currentColor;border-radius:4px;padding:0 5px;opacity:.8}code{font-family:var(--font-mono);font-size:.85em;background:var(--surface-2);padding:.1em .35em;border-radius:4px}svg{flex:none}svg.lucide{stroke-width:1.8}:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.brand{font-family:var(--font-display);font-size:2.6rem;font-weight:800;letter-spacing:-.045em;color:var(--ink)}.brand span{background:linear-gradient(transparent 58%,var(--mark) 58%,var(--mark) 94%,transparent 94%)}.eyebrow{font-size:.8rem;font-weight:600;color:var(--muted);margin-bottom:var(--space-1)}.muted{color:var(--muted)}.small{font-size:.86rem}.lead-text{color:var(--muted);max-width:70ch;margin-bottom:var(--space-5)}.subhead{margin:var(--space-6) 0 var(--space-3)}.spaced{margin-top:var(--space-5)}.tag{display:inline-flex;align-items:center;gap:4px;font-size:.74rem;font-weight:700;padding:3px 8px;border-radius:6px;background:var(--surface-2);color:var(--muted);white-space:nowrap;font-family:var(--font-body);letter-spacing:0}.tag.mark{background:var(--mark);color:var(--mark-ink)}.tag.ok{background:var(--ok-soft);color:var(--ok)}.tag.bad{background:var(--bad-soft);color:var(--bad)}.tag.warn{background:var(--warn-soft);color:var(--warn)}.button{border:0;border-radius:10px;padding:11px 18px;font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);transition:background .15s,filter .15s;white-space:nowrap;text-align:center}.button.sm{padding:8px 12px;font-size:.88rem;border-radius:8px}.button:disabled{opacity:.45;cursor:not-allowed}.primary{background:var(--primary);color:var(--on-primary)}.primary:hover:not(:disabled){background:var(--primary-hover)}.secondary{background:var(--primary-soft);color:var(--primary-text)}.secondary:hover:not(:disabled),.danger:hover:not(:disabled){filter:brightness(.96)}.ghost{background:var(--surface);color:var(--ink);border:1px solid var(--line)}.ghost:hover:not(:disabled){background:var(--surface-2)}.danger{background:var(--bad-soft);color:var(--bad)}.full{width:100%}.text-button{border:0;background:none;color:var(--primary-text);font-weight:600;padding:0}.text-button.small{font-size:.84rem}.icon-button{border:0;background:none;color:var(--muted);padding:6px;border-radius:8px;display:inline-grid;place-items:center}.icon-button:hover{background:var(--surface-2);color:var(--ink)}.back-link{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-weight:600;font-size:.9rem;margin-bottom:var(--space-4)}.back-link:hover{color:var(--ink)}.alert{display:flex;gap:var(--space-2);align-items:center;border-radius:10px;padding:12px 15px;background:var(--bad-soft);color:var(--bad);margin:14px 0;font-weight:500}.alert .text-button{margin-left:auto;color:var(--bad);text-decoration:underline}.notice{display:flex;gap:var(--space-2);align-items:flex-start;background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--mark);border-radius:var(--radius);padding:12px 16px;color:var(--muted);margin-bottom:var(--space-5)}.empty{padding:var(--space-4) 0;color:var(--muted)}.empty p{margin-bottom:var(--space-3)}.loading{padding:70px 20px;text-align:center;color:var(--muted)}.fullscreen{min-height:100vh;display:grid;place-items:center;align-content:center;gap:var(--space-3)}.fullscreen svg{color:var(--primary)}.skeleton-block{display:grid;gap:12px;padding:var(--space-5) 0}.skeleton{height:16px;border-radius:6px;background:linear-gradient(90deg,var(--surface-2),var(--surface),var(--surface-2));background-size:200% 100%;animation:shimmer 1.4s linear infinite}@keyframes shimmer{to{background-position:-200% 0}}.spin{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.subject-badge{display:inline-grid;place-items:center;flex:none;border-radius:10px;background:var(--s-soft);color:var(--s-ink);font:800 1.05rem var(--font-display);width:38px;height:38px}.subject-badge.sm{width:26px;height:26px;border-radius:7px;font-size:.82rem}.subject-badge.lg{width:52px;height:52px;border-radius:14px;font-size:1.45rem}.subject-badge.tile{background:transparent}.subject-badge.tile svg{width:100%;height:75%;border-radius:22%;box-shadow:0 0 0 1px var(--line)}.subject-badge.sm.tile svg{border-radius:4px}.level-pips{display:inline-flex;gap:3px;vertical-align:middle;margin-right:6px}.level-pips i{width:14px;height:6px;border-radius:3px;background:var(--faint)}.level-pips i.on{background:var(--s, var(--primary))}.progress-bar{height:7px;background:var(--surface-2);border-radius:10px;overflow:hidden}.progress-bar span{height:100%;display:block;background:var(--s, var(--primary));border-radius:inherit;transition:width .4s}.segments{display:flex;gap:3px;flex:1;min-width:0}.segments i{flex:1;height:7px;border-radius:3px;background:var(--surface-2)}.segments i.ok{background:var(--ok)}.segments i.bad{background:var(--bad)}.segments i.current{background:var(--primary)}.score-ring{--p: 0;height:140px;width:140px;flex:0 0 140px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--s, var(--primary)) calc(var(--p) * 1%),var(--surface-2) 0)}.score-ring>div{width:110px;height:110px;border-radius:50%;background:var(--surface);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.score-ring strong{font:800 2.4rem var(--font-display);line-height:1;letter-spacing:-.04em;font-variant-numeric:tabular-nums}.score-ring span{font-size:.78rem;color:var(--muted)}.auth-card label,.form-grid label,.settings-form label{display:grid;gap:6px;font-size:.9rem;font-weight:600;align-content:start}:where(input:not([type=radio]):not([type=checkbox]),select,textarea){background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:11px 13px;color:var(--ink);width:100%}input:hover,select:hover:not(:disabled),textarea:hover{border-color:var(--faint)}input::placeholder,textarea::placeholder{color:var(--muted);opacity:.75}textarea{resize:vertical;line-height:1.7}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4);margin-bottom:var(--space-4)}.form-grid small{font-weight:400}.auth-shell{min-height:100vh;display:grid;grid-template-columns:1fr 1fr;background:var(--surface)}.auth-aside{background:var(--bg);border-right:1px solid var(--line);padding:var(--space-7) clamp(30px,6vw,90px);display:flex;flex-direction:column;justify-content:space-between;min-height:100vh}.auth-aside h1{font-size:clamp(2.4rem,4.2vw,4rem);line-height:1.08;margin:0 0 var(--space-5);letter-spacing:-.035em}.auth-aside h1 mark{padding:0 .06em}.auth-aside p{max-width:460px;color:var(--muted);font-size:1.05rem}.aside-foot{font-size:.82rem;font-weight:600;color:var(--muted)}.auth-panel{display:flex;align-items:center;justify-content:center;padding:var(--space-7) var(--space-5)}.auth-card{width:min(100%,420px)}.auth-card h2{font-size:2rem;margin-bottom:var(--space-2)}.auth-card .muted{margin-bottom:var(--space-6)}.auth-card form{display:grid;gap:18px}.auth-switch{text-align:center;color:var(--muted);margin-top:26px}.auth-switch a{font-weight:600;color:var(--primary-text)}.app-shell{display:grid;grid-template-columns:236px minmax(0,1fr);min-height:100vh}.sidebar{background:var(--surface);border-right:1px solid var(--line);padding:26px 14px 18px;display:flex;flex-direction:column;gap:var(--space-6);position:sticky;top:0;height:100vh}.sidebar .brand{padding:0 12px}.sidebar nav{display:grid;gap:2px}.nav-link{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:9px;color:var(--muted);font-weight:600;font-size:.92rem}.nav-link:hover{background:var(--surface-2);color:var(--ink)}.nav-link.active{background:var(--primary-soft);color:var(--primary-text)}.sidebar-bottom{margin-top:auto;display:grid;gap:4px}.dev-flag{margin:0 0 6px;padding:6px 10px;border-radius:8px;background:var(--warn-soft);color:var(--warn);font:700 .78rem var(--font-body);text-align:center}.mobile-header .dev-flag{margin:0;padding:3px 8px}.theme-toggle{border:0;background:none;width:100%;text-align:left}.mobile-actions{display:flex;align-items:center;gap:8px}.segmented{display:inline-flex;flex-wrap:wrap;gap:4px;padding:4px;background:var(--surface-2);border-radius:10px;margin-bottom:var(--space-2)}.segmented button{border:0;background:none;border-radius:7px;padding:7px 14px;font-weight:600;font-size:.88rem;color:var(--muted)}.segmented button.on{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-card)}.chip-info.streak svg{color:var(--warn)}.chip-info.streak.cold svg{color:var(--muted)}.sidebar-user{display:flex;align-items:center;gap:11px;border-radius:10px;padding:10px;font-size:.88rem}.sidebar-user:hover{background:var(--surface-2)}.sidebar-user>span:last-child{display:grid}.sidebar-user small{color:var(--muted)}.avatar{height:36px;width:36px;flex:0 0 36px;border-radius:50%;display:grid;place-items:center;background:var(--primary-soft);color:var(--primary-text);font-weight:700}.avatar.large{height:72px;width:72px;font-size:1.8rem;margin:0 auto 14px}.main-wrap{min-width:0}.content{max-width:1440px;margin:auto;padding:36px clamp(24px,4vw,56px) 90px}.mobile-header,.mobile-nav{display:none}.section-head{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:var(--space-5);flex-wrap:wrap}.section-head h1{margin:0}.section-row{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3);flex-wrap:wrap;margin:var(--space-6) 0 12px}.section-row h2{margin:0}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:20px;min-width:0}.panel h2{font-size:1.02rem;margin-bottom:var(--space-3);display:flex;align-items:center;gap:8px}.panel-title{display:flex;justify-content:space-between;align-items:baseline}.panel-title a{font-size:.86rem;color:var(--primary-text);font-weight:600}.two-columns{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4);margin-top:var(--space-5)}.big-number{font:800 2.4rem var(--font-display);letter-spacing:-.03em;margin:0;line-height:1.1;font-variant-numeric:tabular-nums}.list-row,.plain-list li{display:flex;justify-content:space-between;gap:18px;align-items:center;border-top:1px solid var(--line);padding:11px 0;font-size:.9rem}.list-row strong,.plain-list b{white-space:nowrap;font-variant-numeric:tabular-nums}.plain-list{margin:var(--space-3) 0}.stat-line{display:block;padding:11px 0;border-top:1px solid var(--line)}.stat-line>div:first-child{display:flex;justify-content:space-between;gap:var(--space-3);font-size:.9rem;margin-bottom:8px}.stat-line strong{display:inline-flex;align-items:center;gap:8px}.stat-line span{color:var(--muted);font-variant-numeric:tabular-nums}.welcome{display:flex;justify-content:space-between;gap:20px;align-items:flex-end;flex-wrap:wrap;margin-bottom:var(--space-5)}.welcome h1{margin:0}.today{text-transform:lowercase;color:var(--muted);font-size:.9rem;margin-bottom:2px}.today:first-letter{text-transform:uppercase}.chips{display:flex;gap:var(--space-2);flex-wrap:wrap}.chip-info{display:inline-flex;align-items:center;gap:6px;background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:6px 12px;font-size:.88rem}.chip-info.done{background:var(--ok-soft);border-color:transparent;color:var(--ok)}.dash-grid{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:var(--space-5);align-items:start}.dash-side{display:grid;gap:var(--space-4)}.dash-side .panel{display:grid;gap:var(--space-2)}.plan-card{background:var(--surface);border:1.5px solid var(--primary);border-radius:var(--radius-lg);padding:22px 24px}.plan-card h2{font-size:1.35rem;font-weight:800;margin:4px 0 6px;line-height:1.35}.plan-card p{margin:0}.area-block .section-row{margin-top:var(--space-5)}.continue-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--space-3)}.continue-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:18px;display:flex;flex-direction:column;gap:14px}.continue-card .continue-foot{margin-top:auto}.continue-head{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center}.continue-head h3{margin:0}.continue-head p{margin:0;font-size:.82rem;color:var(--muted)}.continue-head strong{font:700 1.05rem var(--font-display);font-variant-numeric:tabular-nums}.continue-foot{display:flex;gap:var(--space-2);align-items:center;justify-content:space-between;flex-wrap:wrap}.next-label{font-size:.84rem;color:var(--muted);flex:1;min-width:150px}.last-exam{display:flex;align-items:center;gap:12px;padding:4px 0}.last-exam b{font:800 2rem var(--font-display);letter-spacing:-.03em}.last-exam span{flex:1;color:var(--muted);font-size:.86rem;line-height:1.3}.onboarding{max-width:980px}.onboarding h1{max-width:24ch;margin-bottom:var(--space-5)}.onboarding-grid{display:grid;grid-template-columns:1.2fr 1fr;gap:var(--space-4);align-items:start}.scope-list{display:grid;gap:12px;margin-bottom:var(--space-4)}.scope-list li{border-left:3px solid var(--mark);padding-left:12px}.scope-list b{display:block}.subject-picker{display:flex;gap:var(--space-5);flex-wrap:wrap;margin-bottom:var(--space-5)}.picker-group{display:grid;gap:6px}.picker-label{font-size:.76rem;font-weight:700;color:var(--muted)}.picker-row{display:flex;gap:6px;flex-wrap:wrap}.picker-item{display:inline-flex;align-items:center;gap:8px;padding:6px 12px 6px 6px;border-radius:11px;border:1.5px solid var(--line);background:var(--surface);font-weight:600;font-size:.9rem}.picker-item:hover{border-color:var(--s)}.picker-item.active{border-color:var(--s);background:var(--s-soft);color:var(--s-ink)}.picker-pct{font:600 .74rem var(--font-mono);color:var(--muted)}.path{max-width:860px}.path-head{display:flex;align-items:center;gap:16px;margin-bottom:14px;flex-wrap:wrap}.path-head h2{font-size:1.5rem;margin:0}.path-head p{margin:0}.path-head>div{flex:1}.path>.progress-bar{margin-bottom:var(--space-5)}.units{display:grid;gap:var(--space-4)}.unit{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:18px 18px 8px}.unit.completed{border-color:color-mix(in srgb,var(--s) 40%,var(--line))}.unit.locked .lessons{opacity:.6}.unit.empty-unit{background:transparent;border-style:dashed;padding-bottom:18px}.unit-head{display:flex;gap:14px;align-items:flex-start}.unit-head h3{margin:0 0 2px;font-size:1.08rem}.unit-head p{margin:0;font-size:.86rem;color:var(--muted)}.unit-head>div:nth-child(2){flex:1}.unit-no{width:34px;height:34px;flex:none;border-radius:10px;display:grid;place-items:center;background:var(--s-soft);color:var(--s-ink);font:800 1rem var(--font-display)}.unit.completed .unit-no{background:var(--s);color:var(--surface)}.empty-unit .unit-no{background:var(--surface-2);color:var(--muted)}.unit-pct{font:600 .82rem var(--font-mono);color:var(--muted)}.unit-locked-note{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:12px;padding:10px 12px;background:var(--surface-2);border-radius:10px;font-size:.86rem;color:var(--muted)}.unit-locked-note span{flex:1;min-width:200px}.lessons{margin-top:10px;position:relative}.lesson-row{position:relative;border-top:1px solid var(--line)}.lesson-link,.lesson-row.empty,.lesson-row.control{display:flex;align-items:center;gap:14px;padding:12px 6px}.lesson-link{border-radius:10px}a.lesson-link:hover{background:var(--surface-2)}.lesson-row.next a.lesson-link{background:var(--mark-soft)}.node{width:32px;height:32px;flex:none;border-radius:50%;display:grid;place-items:center;border:2px solid var(--line);background:var(--surface);color:var(--muted);font:700 .86rem var(--font-display)}.available .node,.control.available .node{border-color:var(--s);color:var(--s-ink)}.in_progress .node{border-color:var(--s);background:var(--s-soft);color:var(--s-ink)}.mastered .node,.control.passed .node{border-color:var(--s);background:var(--s);color:var(--surface)}.lesson-row.empty .node{border-style:dashed}.lesson-info{flex:1;display:grid;gap:2px;min-width:0}.lesson-info b{font-weight:600;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.lesson-info span{display:flex;align-items:center;gap:4px;font-size:.82rem;color:var(--muted);flex-wrap:wrap}.lesson-row.empty .lesson-info b,.lesson-row.locked .lesson-info b{color:var(--muted)}.next-mark{font-size:.72rem;font-weight:700;font-family:var(--font-body)}.row-arrow{color:var(--muted)}.writing-link{display:flex;align-items:center;gap:14px;margin-top:var(--space-4);padding:16px 18px;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface)}.writing-link:hover{border-color:var(--s)}.writing-link div{flex:1;display:grid}.writing-link span{font-size:.86rem;color:var(--muted)}.lesson-head{display:flex;gap:16px;align-items:center;margin-bottom:var(--space-5)}.lesson-head h1{margin:0 0 4px}.lesson-head p{margin:0}.lesson-grid{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(280px,1fr);gap:var(--space-5);align-items:start}.theory{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:24px 26px}.theory p{max-width:68ch;font-size:1.02rem}.theory h3{display:flex;align-items:center;gap:6px;margin:var(--space-5) 0 var(--space-2);font-size:.95rem}.examples li,.mistakes li{padding:8px 12px;border-radius:8px;margin-bottom:6px}.examples li{background:var(--ok-soft)}.mistakes li{background:var(--bad-soft)}.levels{display:grid;gap:var(--space-3)}.lesson-main{min-width:0}.lesson-side{display:grid;gap:var(--space-4);position:sticky;top:var(--space-5);min-width:0}.theory.compact{padding:18px 20px}.theory.compact p{font-size:.92rem}.lesson-study>h2{margin:0 0 var(--space-2)}.skip-to-practice{display:none;font-weight:600;font-size:.9rem;margin-bottom:8px}#practica{scroll-margin-top:80px}.study{display:grid;gap:10px}.study-tools{display:flex;justify-content:space-between;align-items:center}.study-tools .text-button{display:inline-flex;align-items:center;gap:6px}.study-section{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg)}.study-section>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:12px;padding:16px 20px;font:700 1.05rem var(--font-display)}.study-section>summary::-webkit-details-marker{display:none}.study-section>summary:after{content:"";margin-left:auto;width:9px;height:9px;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:rotate(45deg);transition:transform .15s}.study-section[open]>summary:after{transform:rotate(225deg)}.study-section>summary:hover{color:var(--primary-text)}.study-section>summary:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:var(--radius-lg)}.study-no{flex:none;width:28px;height:28px;border-radius:8px;display:grid;place-items:center;background:var(--s-soft, var(--primary-soft));color:var(--s-ink, var(--primary-text));font-size:.85rem}.study-body{padding:0 20px 20px 60px;display:grid;gap:12px}.study-body p{margin:0;line-height:1.65;max-width:72ch}.study-list,.study-steps{margin:0;padding-left:20px;display:grid;gap:6px;line-height:1.6}.study-list{list-style:disc}.study-list li::marker{color:var(--s, var(--primary));font-weight:700}.study-steps{list-style:none;padding-left:0;gap:0}.study-steps li{position:relative;padding:0 0 10px 24px}.study-steps li:last-child{padding-bottom:0}.study-steps li:before{content:"";position:absolute;left:3px;top:.55em;width:9px;height:9px;border-radius:50%;background:var(--s, var(--primary))}.study-steps li:not(:last-child):after{content:"";position:absolute;left:7px;top:calc(.55em + 9px);bottom:-.55em;width:2px;background:var(--line)}.study-worked{border:1px solid var(--line);border-radius:var(--radius-sm);padding:12px 14px;display:grid;gap:10px;background:var(--surface)}.study-worked-q{font-weight:700}.study-worked-result{background:var(--ok-soft);color:var(--ok);border-radius:var(--radius-sm);padding:8px 12px;font-weight:600}.study-table{width:100%;border-collapse:collapse;font-size:.92rem}.study-table th{text-align:left;font-size:.8rem;color:var(--muted);padding:8px 10px;border-bottom:1px solid var(--line)}.study-table td{padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:top}.study-example{border-left:3px solid var(--s, var(--primary));background:var(--surface-2);border-radius:0 var(--radius-sm) var(--radius-sm) 0;padding:10px 14px;display:grid;gap:4px}.study-example-text{font-style:italic}.study-example-note{font-size:.9rem;color:var(--muted)}.lang-sample{display:inline;padding:0 .12em;box-shadow:inset 0 -.5em 0 var(--mark-line);color:inherit;font-weight:500;font-style:normal;box-decoration-break:clone;-webkit-box-decoration-break:clone}.lang-sample.bad{box-shadow:inset 0 -.5em color-mix(in srgb,var(--bad) 22%,var(--surface));color:var(--bad)}.lang-sample.ok{box-shadow:inset 0 -.5em color-mix(in srgb,var(--ok) 22%,var(--surface));color:var(--ok)}.lang-sample.short{white-space:nowrap}.study-formula{background:var(--surface-2);border-radius:var(--radius-sm);padding:12px 16px;text-align:center}.study-formula-expr{margin:0;font-family:"Cambria Math","STIX Two Math",Georgia,serif;font-size:1.15rem;line-height:1.5;overflow-x:auto}.study-formula-where{margin:4px 0 0;font-size:.85rem;color:var(--muted)}.study-definition{border:1px solid var(--line);border-left:3px solid var(--ink);background:var(--surface);padding:10px 14px;display:grid;gap:2px}.study-definition p{margin:0;line-height:1.6}.study-tip,.study-warn{display:flex;gap:8px;align-items:flex-start;border-radius:var(--radius-sm);padding:10px 12px}.study-tip{background:var(--mark-soft)}.study-warn{background:var(--warn-soft)}.study-tip svg,.study-warn svg{flex:none;margin-top:3px}.study-warn svg{color:var(--warn)}.study-exam{border:1px dashed var(--line);border-radius:var(--radius-sm);padding:12px 14px;display:grid;gap:6px}.study-exam .rule-label{display:flex;align-items:center;gap:6px}.study-exam-q{font-weight:600}.study-exam summary{cursor:pointer;font-weight:600;font-size:.9rem;color:var(--primary-text)}.study-exam details p{margin-top:6px}.syllabus{display:grid;gap:var(--space-5);margin-top:var(--space-4)}.syllabus-unit h2{display:flex;align-items:center;gap:12px;margin:0 0 6px}.syllabus-unit>p{margin:0 0 var(--space-3)}.syllabus-lessons{list-style:none;margin:0;padding:0;display:grid;gap:8px}.syllabus-lessons a{display:flex;align-items:center;gap:14px;padding:14px 18px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);color:inherit;text-decoration:none}.syllabus-lessons a:hover{border-color:var(--primary)}.syllabus-lesson{display:grid;gap:2px;flex:1;min-width:0}.syllabus-lessons .lesson-no{flex:none;width:28px;height:28px;border-radius:50%;display:grid;place-items:center;border:2px solid var(--s, var(--primary));font-weight:700;font-size:.85rem}.nowrap{white-space:nowrap;display:inline-flex;align-items:center;gap:4px}.levels h2{margin:0}.level-card{display:flex;gap:12px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:14px}.level-card>div{flex:1;display:grid;gap:2px}.level-card span{font-size:.84rem;color:var(--muted)}.level-card.locked{opacity:.6}.level-card.recommended{border:1.5px solid var(--primary)}.level-no{width:34px;height:34px;border-radius:50%;flex:none;display:grid;place-items:center;background:var(--s-soft);color:var(--s-ink);font:800 .95rem var(--font-display)}.level-card.passed .level-no{background:var(--s);color:var(--surface)}.level-card.locked .level-no{background:var(--surface-2);color:var(--muted)}.player{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:var(--space-5);align-items:start}.player-main{display:grid;gap:var(--space-4);min-width:0}.player-head{display:grid;gap:14px}.player-head .back-link{margin:0}.as-button{border:0;background:none;padding:0;justify-self:start}.player-title{display:flex;align-items:center;gap:14px}.player-title>div{flex:1;min-width:0}.player-title .eyebrow{margin:0}.player-title h1{font-size:1.6rem;margin:0}.player-count{font:700 1.4rem var(--font-mono);font-variant-numeric:tabular-nums;white-space:nowrap}.player-count small{font-size:.9rem;color:var(--muted)}.player-head .segments i{height:8px}.exercise-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:28px 32px 22px;display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-5);box-shadow:var(--shadow-card)}.player.wide{grid-template-columns:minmax(0,1fr)}.player.wide .player-side{position:static;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));align-items:start}.player.wide .reading-split{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr)}.player.wide .exercise-card .reading-text{position:sticky;top:var(--space-4);max-height:calc(100vh - 2 * var(--space-4))}.exercise-card .exercise-statement{font-size:1.55rem}.card-actions{display:flex;justify-content:space-between;align-items:center;gap:12px;border-top:1px solid var(--line);padding-top:18px}.card-actions .button{min-width:160px}.player-side{display:grid;gap:var(--space-3);position:sticky;top:var(--space-5)}.side-panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:16px 18px}.side-panel h2{display:flex;align-items:center;gap:8px;font-size:.95rem;margin-bottom:10px}.side-panel p{margin:0 0 8px}.side-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-bottom:12px}.side-stats div{background:var(--surface-2);border-radius:10px;padding:8px 6px;display:grid;justify-items:center;gap:0;font-size:.74rem;color:var(--muted)}.side-stats b{font:800 1.3rem var(--font-display);color:var(--ink);font-variant-numeric:tabular-nums}.side-stats .ok{background:var(--ok-soft);color:var(--ok)}.side-stats .bad{background:var(--bad-soft);color:var(--bad)}.side-stats .ok b{color:var(--ok)}.side-stats .bad b{color:var(--bad)}.need-bar{height:6px;border-radius:3px;background:var(--surface-2);overflow:hidden;margin-bottom:8px}.need-bar span{display:block;height:100%;background:var(--ok);border-radius:inherit;transition:width .3s}.theory-side p{font-size:.9rem;line-height:1.55}.theory-side .examples li{font-size:.86rem;padding:6px 10px}.keys ul{display:grid;gap:8px;font-size:.86rem;color:var(--muted)}.keys li{display:flex;justify-content:space-between;gap:10px}.crumb{display:inline-flex;align-items:center;gap:8px;font-weight:600}.summary-page{max-width:1000px;display:grid;gap:var(--space-4)}.summary-page .two-columns{margin-top:0}.summary-hero{display:flex;gap:28px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:28px 32px}.summary-hero.passed{border-color:color-mix(in srgb,var(--s, var(--primary)) 45%,var(--line))}.summary-hero .eyebrow{display:flex;align-items:center;gap:6px}.summary-hero h1{margin:2px 0 4px}.unlocked h2,.mistake-list h2{display:flex;align-items:center;gap:8px}.unlocked li{padding:4px 0}.mistake-list li{display:flex;gap:10px;padding:10px 0;border-top:1px solid var(--line)}.mistake-list li>svg{color:var(--bad);margin-top:3px}.mistake-list li div{display:grid;gap:2px}.mistake-list span{font-size:.88rem;color:var(--muted)}.perfect{display:flex;align-items:center;gap:8px;color:var(--ok);font-weight:600}.summary-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}.exercise{display:grid;gap:18px;min-width:0}.exercise-statement{font-size:1.4rem;line-height:1.4;margin:0;text-wrap:pretty;white-space:pre-line}.options{display:grid;gap:9px}.option{text-align:left;display:flex;gap:13px;align-items:flex-start;width:100%;border:1.5px solid var(--line);border-radius:var(--radius);padding:12px 14px;background:var(--surface);color:var(--ink);font-size:1rem;transition:border-color .12s,background .12s}.option:not(:disabled):hover{border-color:color-mix(in srgb,var(--primary) 55%,var(--line))}.option-key{display:grid;place-items:center;width:28px;height:28px;flex:0 0 28px;border-radius:7px;border:1px solid var(--line);color:var(--muted);font:600 .8rem var(--font-mono)}.option-text{flex:1;padding-top:2px}.option-why{display:block;font-size:.88rem;color:var(--muted);margin-top:4px}.option-result{display:inline-flex;align-items:center;gap:4px;font-size:.82rem;font-weight:700;white-space:nowrap;padding-top:4px}.option.selected{border-color:var(--primary);background:var(--primary-soft)}.option.selected .option-key{background:var(--primary);color:var(--on-primary);border-color:transparent}.option.correct{border-color:var(--ok);background:var(--ok-soft)}.option.correct .option-key{background:var(--ok);color:var(--surface);border-color:transparent}.option.correct .option-result{color:var(--ok)}.option.incorrect{border-color:var(--bad);background:var(--bad-soft)}.option.incorrect .option-key{background:var(--bad);color:var(--surface);border-color:transparent}.option.incorrect .option-result{color:var(--bad)}.option.dim{opacity:.55}.option:disabled{cursor:default}.answer-input{font-size:1.05rem}.answer-input.inline{display:inline-block;width:auto;min-width:7ch;max-width:100%;padding:4px 10px;margin:0 4px;font:600 1.2rem var(--font-body);border:0;border-bottom:2.5px solid var(--primary);border-radius:6px 6px 0 0;background:var(--primary-soft);vertical-align:baseline}.answer-input.ok{border-color:var(--ok);background:var(--ok-soft);color:var(--ok)}.answer-input.bad{border-color:var(--bad);background:var(--bad-soft);color:var(--bad)}.answer-science{display:grid;gap:10px}.answer-unit-row{display:flex;align-items:center;gap:10px}.answer-unit-row input{flex:1;min-width:0}.answer-unit{font:600 1.05rem var(--font-body);color:var(--muted);white-space:nowrap}.symbol-keys{display:flex;flex-wrap:wrap;gap:6px}.symbol-keys button{min-width:42px;height:38px;padding:0 10px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink);font:600 1.25rem var(--font-body);cursor:pointer}.symbol-keys button:hover:not(:disabled){border-color:var(--primary);color:var(--primary-text)}.symbol-keys button:disabled{opacity:.5;cursor:default}.ordering{display:grid;gap:14px}.answer-line{min-height:58px;display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:10px;border:1.5px dashed var(--faint);border-radius:var(--radius);background:var(--surface)}.answer-line.ok{border:1.5px solid var(--ok);background:var(--ok-soft)}.answer-line.bad{border:1.5px solid var(--bad);background:var(--bad-soft)}.placeholder{color:var(--muted);font-size:.9rem;padding:0 4px}.chip-pool{display:flex;flex-wrap:wrap;gap:8px}.chip{border:1.5px solid var(--line);background:var(--surface);border-radius:10px;padding:8px 12px;font-size:1rem;box-shadow:0 1px 0 var(--line)}.chip:not(:disabled):hover{border-color:var(--primary)}.chip:disabled{opacity:.3;cursor:default}.chip.placed{background:var(--primary-soft);border-color:transparent;color:var(--primary-text)}.chip.placed:disabled{opacity:1}.token-line{display:flex;flex-wrap:wrap;gap:6px;font-size:1.15rem;margin:0}.token{border:1.5px solid transparent;background:var(--surface);border-bottom:2px dotted var(--faint);border-radius:8px;padding:6px 10px;font-size:inherit}.token:not(:disabled):hover{border-color:var(--primary)}.token.selected{border-color:var(--primary);background:var(--primary-soft)}.token.correct{background:var(--mark);color:var(--mark-ink);border-color:transparent}.token.incorrect{background:var(--bad-soft);color:var(--bad);border-color:var(--bad);text-decoration:line-through}.token:disabled{cursor:default}.token-fix{margin-left:6px;font-weight:700}.matching{display:grid;grid-template-columns:1fr 1fr;gap:12px}.match-col{display:grid;gap:8px;align-content:start}.match-item{display:flex;align-items:center;gap:8px;text-align:left;border:1.5px solid var(--line);background:var(--surface);border-radius:10px;padding:11px 12px;font-size:.98rem;min-height:48px}.match-item:not(:disabled):hover{border-color:var(--primary)}.match-item.selected{border-color:var(--primary);background:var(--primary-soft)}.match-item.paired{--pair: var(--pair-0);border-color:var(--pair);background:color-mix(in srgb,var(--pair) 10%,var(--surface))}.match-item.c1{--pair: var(--pair-1)}.match-item.c2{--pair: var(--pair-2)}.match-item.c3{--pair: var(--pair-3)}.match-item.correct{border-color:var(--ok);background:var(--ok-soft)}.match-item.incorrect{border-color:var(--bad);background:var(--bad-soft)}.pair-no{width:22px;height:22px;flex:none;display:grid;place-items:center;border-radius:50%;background:var(--pair, var(--muted));color:var(--surface);font:700 .74rem var(--font-mono)}.match-item.correct .pair-no{background:var(--ok)}.match-item.incorrect .pair-no{background:var(--bad)}.short-answer{display:grid;gap:12px}.short-answer textarea{min-height:110px;font-size:1rem}.short-actions{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}.model-answer{border:1px solid var(--line);border-left:4px solid var(--mark);border-radius:var(--radius);padding:14px 16px;background:var(--surface);display:grid;gap:8px}.model-answer p{margin:0}.rule-label{font:600 .72rem var(--font-mono);letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}.key-points{display:grid;gap:6px}.key-points label{display:flex;gap:10px;align-items:flex-start;padding:9px 12px;border:1.5px solid var(--line);border-radius:10px;cursor:pointer;font-size:.95rem}.key-points label.on{border-color:var(--ok);background:var(--ok-soft)}.key-points input{margin-top:3px;accent-color:var(--ok)}.open-exercise textarea{min-height:260px;font-size:1rem}.word-count{font:600 .84rem var(--font-mono);color:var(--muted);margin:6px 0 0}.word-count.warn{color:var(--warn)}.word-count.ok{color:var(--ok)}.feedback{border-radius:var(--radius);padding:14px 16px;border:1px solid var(--line);background:var(--surface);display:grid;gap:8px}.feedback strong{display:flex;align-items:center;gap:var(--space-2)}.feedback.success strong{color:var(--ok)}.feedback.retry strong{color:var(--bad)}.feedback p{margin:0}.feedback .rule{display:flex;gap:8px;align-items:flex-start}.feedback .rule svg{margin-top:4px;color:var(--warn)}.reading-split{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:var(--space-5);align-items:start}.reading-text{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:20px 22px;max-height:70vh;overflow:auto;position:sticky;top:80px}.reading-text h3{margin-bottom:10px}.same-text{display:inline-block;margin:0 0 10px;padding:3px 10px;border-radius:999px;background:var(--mark-soft);font-size:.8rem;font-weight:600}.skip-to-question{display:none;font-size:.85rem;font-weight:600;margin-bottom:8px}.reading-text p{display:grid;grid-template-columns:20px 1fr;gap:6px;line-height:1.75;margin-bottom:12px}.reading-text p:before{content:attr(data-n);font:600 .72rem var(--font-mono);color:var(--muted);padding-top:5px}.exercise-card .reading-text{position:static;max-height:55vh}.review-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:var(--space-4);max-width:900px;align-items:start}.review-card{display:grid;gap:var(--space-2);align-content:start}.task-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:var(--space-4)}.task-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:18px;display:flex;flex-direction:column;gap:var(--space-2)}.task-card .eyebrow{margin:0}.task-text{font-size:.98rem;margin:0}.task-foot{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:space-between;margin-top:auto;padding-top:6px}.history-list{display:grid;gap:6px}.history-list a{display:grid;grid-template-columns:minmax(0,1fr) auto 70px 60px;gap:12px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:12px 14px;font-size:.9rem}.history-list a:hover{border-color:var(--faint)}.history-list a>span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.history-score{font:600 .86rem var(--font-mono);text-align:right}.history-list time{color:var(--muted);font-size:.82rem;text-align:right}.writing-grid{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:var(--space-5);align-items:start}.writing-editor{display:grid;gap:var(--space-3)}.task-title{font-size:1.2rem;line-height:1.45;font-family:var(--font-body);font-weight:600;letter-spacing:0;margin:0}.task-reading{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:14px 18px}.task-reading summary{cursor:pointer;font-weight:700}.task-reading p{margin:10px 0 0;line-height:1.7;max-width:70ch}.task-tip{margin:0;padding:10px 14px;border-left:3px solid var(--mark);background:var(--surface);border-radius:0 var(--radius-sm) var(--radius-sm) 0;color:var(--muted);font-size:.92rem}.writing-editor textarea{min-height:380px;font-size:1.02rem;padding:16px}.editor-foot{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.rubric-panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:18px;position:sticky;top:24px}.rubric-list li{padding:10px 0;border-top:1px solid var(--line)}.rubric-list b{display:flex;justify-content:space-between;gap:8px}.rubric-list b span{font:600 .8rem var(--font-mono);color:var(--muted)}.rubric-list p{margin:2px 0 0;font-size:.86rem;color:var(--muted)}.grading-state{display:flex;align-items:center;gap:10px;background:var(--primary-soft);color:var(--primary-text);border-radius:var(--radius);padding:14px 16px;margin-bottom:var(--space-4);font-weight:600}.submission-page .panel{margin-top:var(--space-4)}.result-hero{display:flex;gap:28px;align-items:center;background:var(--surface);border:1px solid var(--line);padding:24px;border-radius:var(--radius-lg)}.result-hero h2{font-size:1.5rem;margin:0 0 8px}.criteria{flex:1;display:grid;gap:12px;min-width:0}.criterion>div:first-child{display:flex;justify-content:space-between;font-size:.92rem;margin-bottom:6px}.criterion>div:first-child span{font:600 .84rem var(--font-mono)}.criterion p{font-size:.86rem;color:var(--muted);margin:6px 0 0}.error-list li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 0;border-top:1px solid var(--line)}.error-list .frag{background:var(--bad-soft);color:var(--bad);padding:1px 6px;border-radius:4px;text-decoration:line-through}.error-list p{width:100%;margin:0;font-size:.86rem;color:var(--muted)}.bullet li{position:relative;padding:6px 0 6px 16px;font-size:.92rem}.bullet li:before{content:"";position:absolute;left:2px;top:15px;width:6px;height:6px;border-radius:50%;background:var(--primary)}.improved summary{cursor:pointer;font-weight:700}.improved p{margin:12px 0 0;white-space:pre-wrap}.student-text p{max-width:70ch}.self-assess{display:grid;gap:var(--space-4)}.criterion-pick{border:0;padding:0;margin:0}.criterion-pick legend{margin-bottom:8px;font-size:.95rem}.level-options{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:6px}.level-options label{display:grid;gap:2px;border:1.5px solid var(--line);border-radius:10px;padding:10px;cursor:pointer;font-size:.84rem}.level-options label.on{border-color:var(--primary);background:var(--primary-soft)}.level-options input{position:absolute;opacity:0;pointer-events:none}.level-options label:focus-within{outline:2px solid var(--primary);outline-offset:2px}.level-options b{font:800 1.1rem var(--font-display)}.level-options span{color:var(--muted)}.config-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:var(--space-4)}.config-card{padding:22px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg)}.config-icon{display:grid;place-items:center;height:44px;width:44px;border-radius:11px;background:var(--primary-soft);color:var(--primary-text);margin-bottom:14px}.config-card h3{margin-bottom:4px}.config-card p{color:var(--muted);font-variant-numeric:tabular-nums}.timer{display:inline-flex;align-items:center;gap:var(--space-2);border-radius:10px;padding:8px 14px;background:var(--surface);border:1px solid var(--line);font:600 1.1rem var(--font-mono);font-variant-numeric:tabular-nums}.timer.urgent{background:var(--warn-soft);color:var(--warn);border-color:transparent}.exam-layout{display:grid;grid-template-columns:minmax(0,1fr) 272px;gap:var(--space-5);align-items:start}.exam-progress{display:flex;justify-content:space-between;gap:10px;font-size:.86rem;color:var(--muted);font-weight:600;margin-bottom:12px}.question-card{border:1px solid var(--line);background:var(--surface);border-radius:var(--radius-lg);padding:26px}.question-card .reading-text{position:static;max-height:none}.exam-side{position:sticky;top:var(--space-5);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:18px;display:grid;gap:var(--space-4)}.exam-side-head{display:flex;justify-content:space-between;align-items:baseline}.exam-side-head h2{font-size:1rem;margin:0}.exam-side-head span{font:600 .82rem var(--font-mono);color:var(--muted)}.exam-nav{display:grid;grid-template-columns:repeat(6,1fr);gap:6px}.exam-nav button{min-height:36px;aspect-ratio:1;padding:0;border-radius:var(--radius-sm);border:1.5px solid var(--line);background:var(--surface);color:var(--muted);font:600 .8rem var(--font-mono)}.exam-nav button:hover{border-color:var(--faint)}.exam-nav button.done{background:var(--primary-soft);border-color:transparent;color:var(--primary-text)}.exam-nav button.writing{border-style:dashed}.exam-nav button.current{border-color:var(--ink);color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}.exam-actions{display:flex;justify-content:space-between;gap:12px;margin-top:18px}.dialog{border:0;border-radius:var(--radius-lg);padding:26px;width:min(440px,calc(100vw - 32px));background:var(--surface);color:var(--ink);box-shadow:var(--shadow-dialog)}.dialog::backdrop{background:var(--backdrop)}.dialog h2{font-size:1.35rem;margin-bottom:var(--space-4)}.dialog p{color:var(--muted);font-size:.92rem;margin-bottom:var(--space-3)}.dialog-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-2);margin-bottom:var(--space-4)}.dialog-stats div{background:var(--surface-2);border-radius:10px;padding:10px;text-align:center;font-size:.78rem;color:var(--muted)}.dialog-stats b{display:block;font:800 1.35rem var(--font-display);color:var(--ink);font-variant-numeric:tabular-nums}.dialog-jump{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:var(--space-5)}.dialog-jump button{border:1px solid var(--line);background:var(--surface);border-radius:7px;padding:5px 10px;font:600 .78rem var(--font-mono)}.dialog-jump button:hover{background:var(--surface-2)}.dialog-actions{display:flex;gap:var(--space-2);justify-content:flex-end;flex-wrap:wrap}.result-metrics{display:flex;gap:20px;flex-wrap:wrap;color:var(--muted);margin-bottom:6px}.result-metrics b{font-size:1.15rem;color:var(--ink);font-variant-numeric:tabular-nums}.writing-result{display:flex;align-items:center;gap:12px;padding:10px 0;border-top:1px solid var(--line)}.writing-result span{flex:1}.review-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin:var(--space-6) 0 var(--space-3)}.review-head h2{margin:0}.filter-chips{display:flex;gap:6px;flex-wrap:wrap}.filter-chips button{border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:6px 12px;font-size:.86rem;font-weight:600;color:var(--muted)}.filter-chips button[aria-pressed=true]{background:var(--ink);color:var(--surface);border-color:var(--ink)}.review-item{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:8px}.review-item summary{list-style:none;display:flex;gap:12px;align-items:center;padding:12px 14px;cursor:pointer;font-size:.92rem}.review-item summary::-webkit-details-marker{display:none}.review-body{padding:0 14px 14px 56px;display:grid;gap:4px;font-size:.9rem}.review-body p{margin:0}.review-body .yours{color:var(--bad)}.review-body .right{color:var(--ok)}.review-body small{color:var(--muted)}.status-dot{width:28px;height:28px;flex:0 0 28px;border-radius:50%;display:inline-grid;place-items:center}.status-dot.right{background:var(--ok-soft);color:var(--ok)}.status-dot.wrong{background:var(--bad-soft);color:var(--bad)}.status-dot.blank{background:var(--surface-2);color:var(--muted)}.result-actions{display:flex;gap:12px;margin-top:22px;flex-wrap:wrap}.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-3)}.metric{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;min-width:0;display:flex;flex-direction:column}.metric span{font-size:.84rem;color:var(--muted);font-weight:600}.metric strong{font:800 1.8rem var(--font-display);letter-spacing:-.03em;margin-top:2px;font-variant-numeric:tabular-nums}.metric small{color:var(--muted)}.progress-group{margin-bottom:var(--space-3)}.progress-group .eyebrow{margin:var(--space-3) 0 0}.subject-line:hover strong{color:var(--s-ink)}.table-wrap{overflow-x:auto}.data-table{width:100%;border-collapse:collapse;font-size:.9rem}.data-table th,.data-table td{text-align:left;padding:9px 8px;border-top:1px solid var(--line)}.data-table th{font-size:.8rem;color:var(--muted);font-weight:600;border-top:0}.data-table .num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;white-space:nowrap}.data-table .bar-cell{width:35%;min-width:90px}.activity-chart .bars{display:grid;grid-template-columns:repeat(14,1fr);gap:5px;align-items:end;height:160px}.bar-col{display:grid;grid-template-rows:auto 1fr auto;justify-items:center;height:100%;gap:4px}.bar-col i{align-self:end;width:100%;max-width:24px;min-height:2px;border-radius:4px 4px 2px 2px;background:var(--primary)}.bar-col i.zero{background:var(--surface-2)}.bar-value{font:600 .68rem var(--font-mono);color:var(--muted);align-self:end}.bar-col small{font:600 .7rem var(--font-mono);color:var(--muted)}.settings-grid{display:grid;gap:var(--space-4);align-items:start}.settings-grid{grid-template-columns:minmax(0,1.4fr) minmax(260px,1fr)}.profile-page{display:grid;gap:var(--space-4);max-width:960px}.profile-head{display:flex;align-items:center;gap:var(--space-4)}.profile-head .avatar.large{margin:0;height:56px;width:56px;flex-basis:56px;font-size:1.4rem}.profile-who{flex:1;min-width:0}.profile-who h2,.profile-who p{margin:0}.profile-actions{display:flex;gap:8px;flex-wrap:wrap}.settings-row{display:grid;grid-template-columns:260px minmax(0,1fr);gap:var(--space-6);align-items:start}.settings-label h2{margin:0 0 6px}.settings-label p{margin:0}.settings-body,.settings-form{display:grid;gap:var(--space-4);min-width:0}.settings-body .form-grid{margin-bottom:0}.settings-form .half{max-width:calc(50% - var(--space-4) / 2)}.settings-body .segmented{justify-self:start}.saved-note{margin-left:12px;color:var(--ok);font-weight:600}.settings-form{display:grid;gap:var(--space-4)}.key-field{display:flex;gap:6px;align-items:center}.model-row{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:end}.tier-head{display:flex;justify-content:space-between;align-items:center;gap:var(--space-3);border-top:1px solid var(--line);padding-top:var(--space-4)}.tier-head h2{margin:0;font-size:1rem}.settings-form label.tier-row{grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:var(--space-3);align-items:center}.tier-row>span{display:grid;gap:2px}.tier-row small{font-weight:400;line-height:1.45}.settings-side{display:grid;gap:var(--space-4);min-width:0}.usage-table{width:100%;border-collapse:collapse;font-size:.88rem;font-variant-numeric:tabular-nums}.usage-table th{text-align:left;font-size:.76rem;color:var(--muted);font-weight:600;padding:6px 8px;border-bottom:1px solid var(--line)}.usage-table td{padding:8px;border-bottom:1px solid var(--line)}.usage-table td:not(:first-child),.usage-table th:not(:first-child){text-align:right}.bad-text{color:var(--bad)}.retry-panel{border-left:4px solid var(--warn);display:grid;gap:var(--space-2)}.retry-panel p{margin:0}.proposal{margin-bottom:var(--space-4)}.criterion p.adjusted-note{color:var(--warn);font-weight:600;font-size:.85rem}.invite-result{display:grid;gap:var(--space-2);margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px solid var(--line)}.invite-result p{display:flex;align-items:center;gap:8px;margin:0;font-weight:600;color:var(--ok)}.invite-result input{flex:1;min-width:0}.invite-list{list-style:none;margin:0 0 var(--space-3);padding:0;display:grid}.invite-list li{display:flex;flex-wrap:wrap;gap:var(--space-2);align-items:center;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--line)}.invite-list li>span:first-child{display:grid;min-width:0}.invite-actions{display:flex;gap:6px;flex-wrap:wrap}.form-message{display:flex;align-items:center;gap:8px;margin:0;font-weight:600}.form-message.ok{color:var(--ok)}.form-message.bad{color:var(--bad)}.settings-actions{display:flex;gap:8px;flex-wrap:wrap}.mock-card{display:flex;flex-direction:column;gap:var(--space-2);border-top:4px solid var(--s)}.mock-card h3,.mock-card p{margin:0}.mock-card-head{display:flex;align-items:center;gap:var(--space-2)}.mock-card-actions{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap;margin-top:auto;padding-top:var(--space-2)}.mock-head-actions{display:flex;align-items:center;gap:var(--space-3)}.mock-instructions{display:grid;gap:4px;padding-left:34px;list-style:disc}.mock-layout{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:var(--space-5);align-items:start}.mock-layout.single{grid-template-columns:minmax(0,1fr);max-width:860px}.mock-reading{position:sticky;top:var(--space-5);max-height:calc(100vh - 48px);overflow-y:auto;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:24px 26px}.mock-reading h2{font-family:var(--font-display);font-size:1.35rem;margin:0 0 var(--space-3);text-wrap:balance}.mock-reading p:not(.eyebrow){position:relative;line-height:1.75;margin:0 0 var(--space-3)}.mock-passage{background:var(--surface-2);border-radius:var(--radius-sm);padding:14px 18px;margin:var(--space-3) 0}.mock-passage h3{font-size:1rem;margin:0 0 var(--space-2)}.mock-passage p{line-height:1.75;margin:0 0 var(--space-2)}.mock-passage.sticky{position:sticky;top:8px;z-index:2;max-height:42vh;overflow-y:auto;box-shadow:0 6px 16px -10px #00000059}.mock-passage mark.gap{background:var(--mark);color:var(--mark-ink);border-radius:4px;padding:0 3px;font-weight:600;white-space:nowrap}.mock-passage mark.gap:not(.filled){background:var(--surface);border:1px dashed var(--line);font-weight:500}.mock-passage-toggle summary{cursor:pointer;font-size:.9rem;color:var(--primary);margin:4px 0}.para-num{position:absolute;left:-20px;top:2px;font:600 .72rem var(--font-mono);color:var(--faint)}.mock-questions{display:grid;gap:var(--space-5);min-width:0}.mock-section{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-3)}.mock-review,.mock-item,.mock-group{min-width:0}.mock-section>header{display:flex;justify-content:space-between;align-items:center;gap:var(--space-3);border-bottom:2px solid var(--ink);padding-bottom:8px}.mock-section>header h2{font-size:1.1rem;margin:0}.mock-item,.mock-group{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;display:grid;gap:var(--space-2);scroll-margin-top:80px}.mock-group .mock-item{border:0;border-top:1px dashed var(--line);border-radius:0;padding:12px 0 0}.mock-q-head{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:baseline}.mock-q-head b{font:700 .9rem var(--font-mono);color:var(--primary-text)}.mock-q-head p{margin:0;line-height:1.5;white-space:pre-line}.mock-q-head>span{font:600 .78rem var(--font-mono);color:var(--muted);white-space:nowrap}.mock-choices,.mock-options,.key-points{display:grid;gap:6px;border:0;padding:0;margin:0}.mock-choices label,.mock-options label,.key-points label{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border:1px solid var(--line);border-radius:var(--radius-sm);cursor:pointer;background:var(--surface)}.mock-choices label.on,.mock-options label.on,.key-points label.on{border-color:var(--primary);background:var(--primary-soft)}.mock-choices input,.mock-options input,.key-points input{width:auto;margin-top:3px;accent-color:var(--primary)}.mock-options label{display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:10px}.mock-options label span{grid-column:2;color:var(--muted);font-size:.92rem}.choose-blocks{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.choose-count{margin:0;font-size:.92rem}.choose-item{display:flex;justify-content:space-between;align-items:center;gap:var(--space-3);padding:12px 16px;border:1px dashed var(--line);border-radius:var(--radius)}.choose-item p{margin:0;color:var(--muted);line-height:1.45}.choose-item.on{display:grid;justify-items:start;border:0;padding:0}.choose-item.on>.mock-item,.choose-item.on>.mock-group{justify-self:stretch}@media(max-width:600px){.choose-item:not(.on){flex-direction:column;align-items:flex-start}}.key-points legend{font-weight:600;font-size:.9rem;margin-bottom:6px}.table-scroll{overflow-x:auto}.mock-table{width:100%;border-collapse:collapse;min-width:480px;font-size:.92rem}.mock-table th{text-align:left;font-size:.8rem;color:var(--muted);font-weight:600;padding:6px 8px;border-bottom:1px solid var(--line)}.mock-table td{padding:6px 8px;border-bottom:1px solid var(--line)}.mock-table input{padding:7px 10px}.mock-table .given{font-weight:700;background:var(--mark-soft);color:var(--mark-ink);padding:2px 6px;border-radius:4px}.mock-table.result .ok{color:var(--ok);font-weight:600}.mock-table.result .bad{color:var(--bad)}.mock-table.result .bad small{display:block;color:var(--ok);font-weight:600}.table-exercise{display:grid;gap:10px;min-width:0}.table-exercise .table-scroll{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface)}.exercise-table{width:100%;border-collapse:collapse;font-size:1rem}.exercise-table th{text-align:left;font-size:.8rem;color:var(--muted);font-weight:600;padding:8px 10px;border-bottom:1px solid var(--line);background:var(--surface-2)}.exercise-table td{padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:top}.exercise-table tr:last-child td{border-bottom:0}.exercise-table input{min-width:8.5rem;padding:8px 10px;font-weight:600}.exercise-table input.ok{border-color:var(--ok);background:var(--ok-soft);color:var(--ok)}.exercise-table input.bad{border-color:var(--bad);background:var(--bad-soft);color:var(--bad);text-decoration:line-through}.exercise-table .given{display:inline-block;margin-top:7px;font-weight:700;background:var(--mark-soft);color:var(--mark-ink);padding:2px 7px;border-radius:4px}.cell-solution{display:block;margin-top:4px;font-size:.88rem;font-weight:700;color:var(--ok)}.cell-solution:before{content:"→ "}@media(max-width:600px){.exercise-table th,.exercise-table td{padding:6px}.exercise-table input{min-width:6.5rem;padding:7px 8px}}.group-statement{font-weight:600;margin-bottom:4px!important}.mock-submit{display:flex;justify-content:space-between;align-items:center;gap:var(--space-3);padding:16px 0;border-top:1px solid var(--line)}.mock-sections{display:grid;gap:var(--space-3);flex:1;min-width:0}.mock-sections p{margin:0}.inline-form{display:flex;gap:var(--space-2);align-items:center;max-width:280px}.inline-form input{width:110px}.mock-review{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius)}.mock-review>summary{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:12px;align-items:start;padding:12px 14px;font-size:.92rem;cursor:pointer;list-style:none}.mock-review>summary::-webkit-details-marker{display:none}.mock-review>summary p{margin:0}.mock-review:not([open])>summary{color:var(--muted)}.review-passage{padding:0 14px 8px 56px}.review-body.graded{gap:var(--space-3)}.answer-box,.solution-box{border-radius:var(--radius-sm);padding:10px 12px}.answer-box{background:var(--surface-2)}.solution-box{background:var(--ok-soft);border-left:3px solid var(--ok)}.answer-box p:not(.eyebrow),.solution-box p:not(.eyebrow){line-height:1.55}.teacher-says{line-height:1.55}.graded-points{list-style:none;margin:0;padding:0;display:grid;gap:6px}.graded-points li{display:grid;grid-template-columns:18px minmax(0,1fr);gap:8px;align-items:start;line-height:1.45}.graded-points li>svg{margin-top:2px}.graded-points li.covered>svg{color:var(--ok)}.graded-points li.partial>svg{color:var(--warn)}.graded-points li.missing>svg{color:var(--bad)}.graded-wrong ul,.error-list{margin:4px 0 0;padding-left:18px}.improve summary{cursor:pointer;color:var(--primary);font-size:.88rem}.improve p{margin:6px 0 0;line-height:1.55}.pre{white-space:pre-line}.rubric-scores{list-style:none;margin:0;padding:0;display:grid;gap:8px}.rubric-scores li{display:flex;justify-content:space-between;gap:12px;line-height:1.45}.grading-ring{width:120px;height:120px;flex:0 0 120px;border-radius:50%;display:grid;place-items:center;background:var(--surface-2);color:var(--muted)}.retry-grading{display:grid;gap:8px;justify-items:start}.result-filter{margin:var(--space-5) 0 var(--space-3)}.result-filter .count{font-size:.78rem;opacity:.7;margin-left:4px}.spelling-list{margin-top:var(--space-4)}.spelling-list summary{cursor:pointer;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}.spelling-list ul{margin:var(--space-3) 0 0;padding-left:18px;display:grid;gap:4px}.spelling-none{display:flex;gap:6px;align-items:center;margin-top:var(--space-4)}.mock-score{font:600 .82rem var(--font-mono);white-space:nowrap;color:var(--muted)}.mock-review .table-scroll{padding:0 14px 14px}.status-dot.partial{background:var(--warn-soft);color:var(--warn)}.short-review{gap:var(--space-3)}.compare{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3)}.compare>div{background:var(--surface-2);border-radius:var(--radius-sm);padding:10px 12px}.compare p:not(.eyebrow){margin:0;line-height:1.55}.short-review .button{justify-self:start}.teacher-note{border:1px solid var(--line);border-left:4px solid var(--primary);border-radius:var(--radius);padding:14px 16px;background:var(--surface);display:grid;gap:12px;color:var(--ink)}.teacher-note p{margin:0;line-height:1.55}.teacher-head{display:flex;align-items:center;gap:10px}.teacher-avatar{flex:none;width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:var(--primary);color:var(--surface)}.teacher-who{display:grid;line-height:1.2;min-width:0}.teacher-who b{font-size:.95rem;color:var(--primary-text)}.teacher-who span{font-size:.85rem;color:var(--muted)}.ai-chip{margin-left:auto;flex:none;font:700 .7rem/1 var(--font-mono, monospace);letter-spacing:.06em;padding:5px 8px;border-radius:999px;border:1px solid var(--primary);background:var(--primary-soft);color:var(--primary-text);cursor:pointer}.ai-chip:hover,.ai-chip[aria-expanded=true]{background:var(--primary);color:var(--surface)}.teacher-info{background:var(--surface-2);border-radius:var(--radius-sm);padding:10px 12px;font-size:.88rem;display:grid;gap:6px}.teacher-info ul{margin:0;padding-left:18px;display:grid;gap:4px;list-style:disc}.teacher-info p{margin:0}.teacher-foot{font-size:.82rem;color:var(--muted);border-top:1px solid var(--line);padding-top:10px}.teacher-status{display:inline-flex;align-items:center;gap:4px;font-size:.76rem;font-weight:700;padding:2px 8px;border-radius:999px;white-space:nowrap}.covered>.teacher-status{background:var(--ok-soft);color:var(--ok)}.partial>.teacher-status{background:var(--warn-soft);color:var(--warn)}.missing>.teacher-status{background:var(--bad-soft);color:var(--bad)}.teacher-wrong{background:var(--warn-soft);border-radius:var(--radius-sm);padding:10px 12px}.teacher-wrong .rule-label{display:flex;align-items:center;gap:6px;color:var(--warn)}.teacher-wrong ul{margin:4px 0 0;padding-left:18px}.teacher-examples{margin:4px 0 0;padding-left:18px;display:grid;gap:4px}.teacher-tip{background:var(--mark-soft);border-radius:var(--radius-sm);padding:8px 12px}.teacher-note details summary{cursor:pointer;font-weight:600;font-size:.92rem;color:var(--primary-text)}.teacher-note details p{margin-top:8px;padding:10px 12px;background:var(--surface-2);border-radius:var(--radius-sm)}.ask-teacher{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px}.ask-teacher .form-message{flex-basis:100%;margin:0}.button.teacher-button{background:var(--surface);color:var(--primary-text);border:1.5px dashed var(--primary)}.button.teacher-button:hover:not(:disabled){background:var(--primary-soft);border-style:solid}.button.teacher-button[aria-busy=true]{border-style:solid;background:var(--primary-soft)}.feedback .teacher-note,.feedback .ask-teacher{margin-top:12px}.key-points-block{display:grid;gap:8px}.key-points-block>p{margin:0}.key-points .kp-row{display:flex;gap:10px;align-items:center;justify-content:space-between;padding:9px 12px;border:1.5px solid var(--line);border-radius:10px;font-size:.95rem;background:var(--surface)}.key-points .kp-row.on{border-color:var(--ok);background:var(--ok-soft)}.key-points .kp-row.off{border-color:var(--bad);background:var(--bad-soft)}.kp-body{display:grid;gap:4px;min-width:0;flex:1}.kp-answer{display:flex;gap:6px;flex:none}.kp-choice{min-width:48px;padding:6px 12px;border:1.5px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink);font:inherit;font-weight:600;cursor:pointer}.kp-choice:disabled{cursor:default;opacity:.7}.kp-choice.yes.chosen{border-color:var(--ok);background:var(--ok);color:var(--surface)}.kp-choice.no.chosen{border-color:var(--bad);background:var(--bad);color:var(--surface)}.short-hint{margin:0;color:var(--muted);font-size:.95rem}.kp-review{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;font-size:.86rem;color:var(--muted);font-weight:400}.teacher-note q,.kp-disagree{flex-basis:100%;color:var(--warn);font-weight:600}.kp-review q{quotes:"«" "»";font-style:italic}.send-note{display:flex;gap:8px;align-items:flex-start;font-size:.88rem;color:var(--muted);margin:0}.grading-state span{font-weight:400}.grading-state b{font-weight:700}@media(max-width:1100px){.app-shell{grid-template-columns:208px minmax(0,1fr)}.content{padding-left:28px;padding-right:28px}.dash-grid{grid-template-columns:1fr}.dash-side{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.exam-layout{grid-template-columns:minmax(0,1fr) 240px}.player{grid-template-columns:1fr}.player-side{position:static;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));align-items:start}}@media(max-width:900px){.lesson-grid,.writing-grid,.onboarding-grid,.reading-split,.settings-grid,.settings-row{grid-template-columns:1fr}.settings-row{gap:var(--space-3)}.settings-form .half{max-width:none}.profile-head{flex-wrap:wrap}.rubric-panel{position:static;max-height:45vh}.reading-text,.exercise-card .reading-text,.player.wide .exercise-card .reading-text{position:static;max-height:none;overflow:visible}.skip-to-question{display:inline-block}.player.wide .reading-split,.mock-layout{grid-template-columns:1fr}.mock-reading{position:static;max-height:none}}@media(max-width:850px){.sidebar{display:none}.app-shell{display:block}.mobile-header{position:sticky;top:0;z-index:10;height:60px;padding:0 20px;background:var(--surface);display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.mobile-nav{position:fixed;bottom:0;left:0;right:0;background:var(--surface);display:flex;justify-content:space-around;padding:8px 4px max(10px,env(safe-area-inset-bottom));border-top:1px solid var(--line);z-index:10}.mobile-nav a{display:grid;justify-items:center;gap:2px;color:var(--muted);flex:1;min-width:0;padding:4px 0}.mobile-nav a.active{color:var(--primary-text)}.mobile-nav small{font-size:.75rem;font-weight:600}.content{padding:24px 20px 100px}.auth-shell{grid-template-columns:1fr}.auth-aside{min-height:0;padding:28px 24px;border-right:0;border-bottom:1px solid var(--line);gap:var(--space-5)}.auth-aside h1{font-size:2.1rem;margin:0}.auth-aside .aside-foot,.auth-aside p{display:none}.auth-panel{padding:36px 24px}.exam-layout{grid-template-columns:1fr}.exam-side{position:static}.exam-nav{grid-template-columns:repeat(auto-fill,minmax(40px,1fr))}.keys{display:none}}@media(max-width:750px){.metric-grid{grid-template-columns:repeat(2,1fr)}.two-columns,.form-grid{grid-template-columns:1fr}.history-list a{grid-template-columns:minmax(0,1fr) auto}.history-list time,.history-list .history-score{display:none}}@media(max-width:600px){.content{padding:20px 16px 100px}.exercise-statement{font-size:1.2rem}.focus-body{padding:22px 16px}.exercise-card{padding:20px 18px 16px}.exercise-card .exercise-statement{font-size:1.25rem}.card-actions>span{display:none}.card-actions .button{flex:1}.player-title h1{font-size:1.25rem}.summary-hero{flex-direction:column;align-items:flex-start;padding:22px}.question-card,.theory{padding:18px}.study-body{padding:0 16px 16px}.study-section>summary{padding:14px 16px}.study-table.stack thead{display:none}.study-table.stack,.study-table.stack tbody,.study-table.stack tr,.study-table.stack td{display:block}.study-table.stack tr{border:1px solid var(--line);border-radius:var(--radius-sm);padding:10px 12px;margin-bottom:8px}.study-table.stack td{border:0;padding:3px 0}.study-table.stack td:first-child{font-weight:700;padding-bottom:6px}.study-table.stack td+td:before{content:attr(data-label);display:block;font-size:.75rem;color:var(--muted)}.lesson-side{position:static}.skip-to-practice{display:inline-block}.matching{gap:8px}.match-item{font-size:.9rem;padding:10px}.result-hero{flex-direction:column;align-items:flex-start}.exam-actions{flex-wrap:wrap}.exam-actions .button,.dialog-actions .button{flex:1}.model-row,.settings-form label.tier-row{grid-template-columns:1fr}.path-head .button{width:100%}.subject-picker{flex-wrap:nowrap;overflow-x:auto;gap:var(--space-4);margin-inline:-16px;padding:0 16px 6px;scrollbar-width:none}.picker-row{flex-wrap:nowrap}.picker-item{white-space:nowrap}.unit-head{flex-wrap:wrap}.unit-meta{flex-basis:100%;padding-left:48px}.compare{grid-template-columns:1fr}.mock-review .review-body,.review-passage{padding-left:14px}.mock-q-head{grid-template-columns:auto minmax(0,1fr)}.mock-q-head>span{grid-column:2}.mock-head-actions{width:100%;justify-content:space-between}}.writing-link.is-next{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.page-note{display:flex;align-items:center;gap:6px;margin:0 0 var(--space-4)}.page-tabs{margin:0 0 var(--space-3)}.page-tabs .count,.subject-chips .count{font:600 .75rem var(--font-mono);color:var(--muted);margin-left:4px}.page-tabs button.on .count{color:var(--primary-text)}.subject-chips{margin:var(--space-2) 0 var(--space-4)}.subject-chips button{display:inline-flex;align-items:center;gap:6px}.subject-chips button[aria-pressed=true] .count{color:var(--surface);opacity:.8}.row-group{background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--s, var(--line));border-radius:var(--radius);margin-bottom:var(--space-3);overflow:hidden}.row-group-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:12px 16px}.row-group-head h2,.row-group-head h3{font-size:1.02rem;margin:0}.subject-block{margin-top:var(--space-5)}.subject-block-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:var(--space-3)}.subject-block-head h2{margin:0;font-size:1.2rem}.row-group-parts{margin-left:auto}.fold>summary{cursor:pointer;list-style:none}.fold>summary::-webkit-details-marker{display:none}.fold-icon{margin-left:auto;color:var(--muted);transition:transform .15s}.fold[open] .fold-icon{transform:rotate(180deg)}.item-rows{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}.item-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:12px;padding:10px 16px}.item-row+.item-row{border-top:1px solid var(--line)}.item-row:hover{background:var(--surface-2)}.item-title{font-weight:600;min-width:0}.item-actions{display:flex;align-items:center;gap:10px;justify-content:flex-end}.task-row{grid-template-columns:minmax(0,1fr) auto auto auto}.task-statement{font-weight:500;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.45}@media(max-width:700px){.row-group-parts{margin-left:0;width:100%}.item-row,.task-row{grid-template-columns:minmax(0,1fr) auto}.item-row .muted.small{grid-column:1}.item-actions{grid-column:1 / -1;justify-content:flex-start}}.summary-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:var(--space-3)}.subject-summary{background:var(--surface);border:1px solid var(--line);border-top:4px solid var(--s, var(--line));border-radius:var(--radius);padding:16px;display:flex;flex-direction:column;gap:10px}.subject-summary header{display:flex;align-items:center;gap:10px}.subject-summary h2{font-size:1.05rem;margin:0}.subject-summary p{margin:0}.summary-stats{display:grid;grid-template-columns:1fr 1fr;gap:8px}.summary-stats div{background:var(--surface-2);border-radius:var(--radius-sm);padding:8px 10px;display:grid}.summary-stats b{font:700 1.3rem var(--font-mono)}.summary-stats small{font-size:.8rem;color:var(--muted)}.summary-stats span{font-size:.78rem;color:var(--muted)}.subject-summary .summary-actions{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;margin-top:auto}@media(max-width:700px){.subject-chips{flex-wrap:nowrap;overflow-x:auto;margin-inline:-16px;padding:2px 16px 6px;scrollbar-width:none}.subject-chips::-webkit-scrollbar{display:none}.subject-chips button{flex:none}}.form-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.form-actions .saved-note{margin-left:0}.field-error{color:var(--bad);font-weight:600}.all-toggle{margin:-8px 0 var(--space-3)}.subject-chooser{display:grid;gap:var(--space-3);margin:var(--space-3) 0}.chooser-group{border:0;padding:0;margin:0;display:grid;gap:8px}.chooser-group legend{font-weight:700;font-size:.92rem;margin-bottom:6px;padding:0}.chooser-group legend .muted{font-weight:400;margin-left:6px}.chooser-row{display:flex;flex-wrap:wrap;gap:8px}.chooser-item{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;border:1.5px solid var(--line);border-radius:12px;background:var(--surface);cursor:pointer;font-weight:600;font-size:.92rem}.chooser-item input{position:absolute;opacity:0;pointer-events:none}.chooser-item:has(input:focus-visible){outline:3px solid var(--primary-soft);outline-offset:2px}.chooser-item.on{border-color:var(--s, var(--primary));background:var(--surface-2)}.chooser-check{color:var(--ok)}.onboarding .subject-chooser{margin:var(--space-2) 0}.chooser-item.fixed{cursor:default}.chooser-item .tag{font-size:.72rem}.chooser-ask{margin:4px 0 0}.exam-chooser .segmented{margin-bottom:0;justify-self:start}.exam-chooser select{max-width:100%}.segmented button:disabled{opacity:.45;cursor:not-allowed}.check-line{display:flex;align-items:flex-start;gap:8px;font-size:.9rem;color:var(--muted);cursor:pointer}.check-line input{margin-top:3px;flex:none}.unlock-switch strong{color:var(--ink)}.mock-table .given.long{background:none;font-weight:400;color:var(--ink);padding:0;line-height:1.45}.mock-table td:not(:first-child){width:1%}.mock-table td:not(:first-child) input{min-width:110px}.mock-table:has(.given.long){min-width:0}.figure{margin:4px 0 0;display:grid;gap:8px}.figure-frame{position:relative}.figure-open{display:block;width:100%;padding:0;border:0;background:none;cursor:zoom-in;position:relative;text-align:inherit}.figure-plate{background:#fff;border:1px solid var(--line);border-radius:12px;overflow:hidden}.figure-plate svg{display:block;width:100%;height:auto;max-height:520px}.figure-plate.loading{aspect-ratio:16 / 9;background:var(--surface-2)}.figure-plate[data-mode=study] .practice,.figure-plate[data-mode=practice] .study{display:none}.figure-zoom{position:absolute;right:8px;bottom:8px;display:grid;place-items:center;width:32px;height:32px;border-radius:8px;background:color-mix(in srgb,var(--surface) 88%,transparent);color:var(--muted);border:1px solid var(--line)}.figure-open:hover .figure-zoom,.figure-open:focus-visible .figure-zoom{color:var(--ink)}.figure figcaption{display:flex;flex-wrap:wrap;justify-content:space-between;gap:4px 16px;color:var(--muted);font-size:.9rem}.figure-dialog{width:min(1100px,100vw);max-width:100vw;max-height:100dvh;padding:0;border:0;border-radius:16px;background:var(--surface)}.figure-dialog::backdrop{background:#080c18b8}.figure-scroll{overflow:auto;max-height:calc(100dvh - 16px);padding:48px 12px 12px}.figure-plate.big svg{max-height:none;min-width:720px}.figure-close{position:absolute;top:8px;right:8px;z-index:1}.figure-missing{margin:0}@media(max-width:640px){.figure-dialog{border-radius:0;height:100dvh}}.lesson-top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:var(--space-4)}.lesson-top .back-link{margin-bottom:0;min-width:0}.lesson-top .back-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lesson-nav{display:flex;gap:6px;flex:none}.lesson-nav .disabled{opacity:.4;pointer-events:none}@media(max-width:480px){.lesson-nav .nav-text{display:none}}.practice-bar{position:sticky;bottom:12px;z-index:5;margin-top:var(--space-5);display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--s, var(--primary));border-radius:var(--radius);padding:10px 12px 10px 16px;box-shadow:var(--shadow-card)}.practice-bar-text{display:grid;gap:2px;min-width:0}.practice-bar-text small{font-size:.82rem}@media(max-width:850px){.practice-bar{bottom:76px}}@media(max-width:480px){.practice-bar-text small{display:none}.practice-bar .button{padding-inline:14px}}.subject-page .path-head h1{margin:0;font-size:1.6rem}.subject-page .page-tabs{margin:var(--space-4) 0}.next-hint{margin:6px 0 0}.subject-rows ul{list-style:none;margin:0;padding:0;display:grid;gap:8px}.subject-row{display:grid;grid-template-columns:auto minmax(0,1fr) minmax(80px,180px) 3.2em auto;align-items:center;gap:12px;padding:10px 14px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);color:var(--ink)}.subject-row:hover{border-color:var(--s, var(--primary))}.subject-row-name{display:grid;min-width:0}.subject-row-name small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.subject-row-pct{text-align:right;font-weight:700;font-variant-numeric:tabular-nums}@media(max-width:560px){.subject-row{grid-template-columns:auto minmax(0,1fr) 3em auto}.subject-row-bar{display:none}}.next-card{background:var(--surface);border:1px solid var(--line);border-left:5px solid var(--s, var(--primary));border-radius:var(--radius);padding:18px 20px;display:grid;gap:12px}.next-card .eyebrow{margin:0}.next-card-body{display:flex;align-items:center;gap:14px}.next-card-body h2{margin:0 0 2px;font-size:1.25rem}.next-card-body p{margin:0}.next-card-actions{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.part-subjects{display:flex;flex-wrap:wrap;gap:6px 14px;margin:0;padding:0 16px 10px}.part-subjects span{display:inline-flex;align-items:center;gap:6px}.part-pick{padding:0 16px 10px;display:grid;gap:8px}.part-pick p{margin:0}.part-pick-chips button{display:inline-flex;align-items:center;gap:6px}.exam-block+.exam-block{margin-top:12px}.exam-block-name{margin:0 0 6px;font-size:.8rem;font-weight:700;color:var(--muted)}.photo-picker{display:grid;gap:10px;margin:12px 0}.photo-preview{max-width:100%;max-height:420px;border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--surface);object-fit:contain}.photo-actions{display:flex;flex-wrap:wrap;gap:8px}.photo-actions label{cursor:pointer;display:inline-flex;align-items:center;gap:6px}.photo-actions label.disabled{opacity:.5;pointer-events:none}.measure-inputs{border:1px solid var(--line);border-radius:var(--radius-sm);padding:10px 14px;display:grid;gap:8px;margin:12px 0}.measure-inputs legend{font-weight:600;font-size:.9rem;padding:0 4px}.measure-inputs label{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.measure-field{display:inline-flex;align-items:center;gap:6px}.measure-field input{width:7rem}.drawing-note{display:grid;gap:4px;margin:8px 0}.drawing-compare{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;align-items:start}.drawing-compare figure{margin:0;display:grid;gap:6px}.drawing-compare figcaption{font-size:.85rem;color:var(--muted)}.measure-table{margin-top:12px}.mock-drawing{display:grid;gap:6px}.test-picker{border:0;padding:0;margin:0 0 12px}.test-picker legend{font-weight:700;margin-bottom:6px}.mock-options label.disabled{opacity:.55;cursor:not-allowed}a.chip-info{text-decoration:none;color:inherit}.grades{display:grid;gap:var(--space-4)}.grades .lead-text{margin-bottom:0}.grades-toolbar{display:flex;flex-wrap:wrap;gap:12px 24px;align-items:center;justify-content:space-between}.grades-toolbar .text-button{display:inline-flex;align-items:center;gap:6px}.grades-goal{display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:.9rem;font-weight:600}.grades-goal .segmented{margin:0}.segmented.sm{padding:3px;gap:2px;margin:0}.segmented.sm button{padding:4px 10px;font-size:.8rem}.segmented button[aria-pressed=true]{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-card)}.grades-layout{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:20px;align-items:start}.grades-form{display:grid;gap:var(--space-4);min-width:0}.grades-part-head{display:flex;flex-wrap:wrap;gap:4px 16px;align-items:baseline;justify-content:space-between;margin-bottom:6px}.grades-part-head h2{margin:0;font-size:1.05rem}.grades-part .check-line{margin-top:4px}.grades-part.is-exempt .grades-rows{opacity:.4;pointer-events:none}.grades-row{display:grid;gap:10px;padding-block:14px;border-top:1px solid var(--line)}.grades-row:first-child{border-top:0}.grades-row-head{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px}.grades-row-head .segmented{margin-left:auto}.grades-name{font-weight:600}.grades-weight{font:600 .74rem var(--font-mono);color:var(--muted)}.grades-mock{border:1px dashed var(--faint);background:none;border-radius:6px;padding:2px 8px;font-size:.76rem;font-weight:600;color:var(--muted)}.grades-mock:hover{border-color:var(--primary);color:var(--primary-text)}.grade-input{display:flex;align-items:center;gap:14px}.grade-input input[type=range]{flex:1;min-width:0;accent-color:var(--primary);height:24px;margin:0}:where(input).grade-num{width:74px;flex:none;text-align:center;font:700 1.05rem var(--font-display);font-variant-numeric:tabular-nums;padding:7px 6px}.grade-num[aria-invalid=true]{border-color:var(--bad)}.grade-bonus{font:600 .82rem var(--font-mono);color:var(--ok);white-space:nowrap}.grades-need{margin:0;font-size:.9rem;color:var(--muted)}.grades-need mark{font:800 1.15rem var(--font-display);font-variant-numeric:tabular-nums}.grades-extras{display:grid;gap:16px}.grades-extra{display:grid;gap:8px}.grades-extra .check-line{color:var(--ink);font-weight:600}.grades-result{position:sticky;top:20px;display:grid;gap:18px}.grades-status{display:inline-flex;align-items:center;gap:6px;font-size:.8rem;font-weight:700;padding:4px 10px;border-radius:999px}.grades-status:before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}.grades-status.ok{background:var(--ok-soft);color:var(--ok)}.grades-status.bad{background:var(--bad-soft);color:var(--bad)}.grades-status.need{background:var(--primary-soft);color:var(--primary-text)}.grades-headline{margin:0;font:700 1.3rem/1.3 var(--font-display);letter-spacing:-.02em;text-wrap:balance}.grades-headline mark{font-weight:800;padding:0 .15em}.grades-sub{margin:6px 0 0}.grades-fails{display:grid;gap:6px;font-size:.88rem;color:var(--bad);padding-left:18px;list-style:disc}.grades-bars{display:grid;gap:14px}.grades-bar-label{display:flex;justify-content:space-between;align-items:baseline;gap:10px;font-size:.88rem;margin-bottom:5px}.grades-bar-label b{font:800 1.05rem var(--font-display);font-variant-numeric:tabular-nums}.grades-track{position:relative;height:10px;border-radius:5px;background:var(--surface-2)}.grades-track.labels{margin-bottom:16px}.grades-fill{position:absolute;inset:0 auto 0 0;border-radius:5px;background:var(--primary);transition:width .2s ease}.grades-fill.ok{background:var(--ok)}.grades-fill.bad{background:var(--bad)}.grades-fill.striped,.grades-legend i{background-image:repeating-linear-gradient(135deg,transparent 0 5px,color-mix(in srgb,var(--surface) 40%,transparent) 5px 9px)}.grades-tick{position:absolute;top:-4px;bottom:-4px;width:2px;border-radius:1px;background:var(--ink);opacity:.55}.grades-tick.goal{background:var(--primary);opacity:1}.grades-tick-label{position:absolute;top:14px;transform:translate(-50%);font:600 .68rem var(--font-mono);color:var(--muted);white-space:nowrap}.grades-legend{margin:0;font-size:.78rem;color:var(--muted);display:flex;gap:8px;align-items:center}.grades-legend i{width:22px;height:8px;border-radius:4px;background-color:var(--primary);flex:none}.grades-lines{display:grid;gap:6px;font-size:.88rem;border-top:1px solid var(--line);padding-top:14px}.grades-lines>div{display:flex;justify-content:space-between;gap:10px}.grades-lines>div>span:last-child{font-variant-numeric:tabular-nums;font-weight:600;white-space:nowrap}.grades-lines .plus>span:last-child{color:var(--ok)}.grades-lines .off{color:var(--muted)}.grades-lines .total{font-weight:700;border-top:1px solid var(--line);padding-top:8px;margin-top:2px}.grades-lines .total>span:last-child{font:800 1.1rem var(--font-display)}.grades-how{font-size:.9rem}.grades-how summary{cursor:pointer;font-weight:600;color:var(--primary-text)}.grades-how ul{margin:10px 0 0;padding-left:18px;list-style:disc;display:grid;gap:6px;color:var(--muted)}.grades-how a{color:var(--primary-text);font-weight:600}.grades-strip{display:none}@media(max-width:1000px){.grades-layout{grid-template-columns:minmax(0,1fr)}.grades-result{position:static}.grades-strip{display:flex;position:sticky;top:12px;z-index:5;order:-1;grid-column:1 / -1;justify-content:space-between;align-items:center;gap:12px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:10px 14px;box-shadow:var(--shadow-card);font:700 .95rem/1.3 var(--font-display)}.grades-strip.ok{border-color:color-mix(in srgb,var(--ok) 40%,var(--line))}.grades-strip.bad{border-color:color-mix(in srgb,var(--bad) 40%,var(--line))}.grades-strip button{border:0;background:var(--primary-soft);color:var(--primary-text);font:600 .82rem var(--font-body);border-radius:8px;padding:6px 10px;white-space:nowrap}}@media(max-width:850px){.grades-strip{top:68px}}@media(max-width:520px){.grades-row-head .segmented{margin-left:0;width:100%}.grades-row-head .segmented button{flex:1}}.drawing-checks{display:grid;gap:6px;margin-top:var(--space-4);padding:14px 16px;border-radius:var(--radius);background:var(--mark-soft)}.drawing-checks h3{margin:0;font-size:.98rem}.drawing-checks p{margin:0}.drawing-checks ul{display:grid;gap:6px;margin-top:4px}.drawing-checks label{display:flex;gap:8px;align-items:flex-start;cursor:pointer}.drawing-checks input{margin-top:4px;accent-color:var(--primary);flex:none}
