:root{--font-display: "Fraunces", Georgia, serif;--font-body: "IBM Plex Sans", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace;--bg: #f7f7f4;--surface: #ffffff;--surface-2: #fbfbf8;--surface-3: #efefe9;--surface-disabled: #f6f6f3;--text: #1c1d22;--text-soft: #555861;--text-muted: #6e727e;--border: #cfd0ca;--border-soft: #e2e2dc;--border-hover: #989ba8;--divider: #ececea;--accent: #3547a8;--accent-contrast: #fff;--accent-bg: #e9edfb;--good: #1a7f37;--good-bg: #e7f6ec;--danger: #b00020;--danger-bg: #fdecef;--danger-soft: #b3423a;--inverse-bg: #1c1d22;--inverse-text: #fff;--inverse-soft: #ddd;--card-line: rgba(53, 71, 168, .07);--shadow: rgba(28, 29, 34, .05);--on-verdict: #fff;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-pill: 999px;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-md: 1.05rem;--text-lg: 1.2rem;--text-xl: 1.4rem;--text-2xl: 2rem;--text-4xl: clamp(2.75rem, 9vw, 3.5rem);--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2.5rem;--shadow-card: 0 2px 10px var(--shadow);--highlight: #e0a52e;--highlight-ink: #7a5a12;--highlight-bg: #fbf1d6;--rule-pitch: 28px;--margin-line: rgba(176, 0, 32, .14);--margin-x: 40px;--ruling-lines: repeating-linear-gradient( to bottom, transparent 0, transparent calc(var(--rule-pitch) - 1px), var(--card-line) calc(var(--rule-pitch) - 1px), var(--card-line) var(--rule-pitch) );--ruling-margin: linear-gradient( to right, transparent var(--margin-x), var(--margin-line) var(--margin-x), var(--margin-line) calc(var(--margin-x) + 1px), transparent calc(var(--margin-x) + 1px) );--ruling: var(--ruling-margin), var(--ruling-lines);color-scheme:light;font-family:var(--font-body);line-height:1.5;color:var(--text);background:var(--bg)}:root[data-theme=dark]{--bg: #15161c;--surface: #1e2027;--surface-2: #232530;--surface-3: #2b2d3a;--surface-disabled: #262834;--text: #ebecf0;--text-soft: #b6b9c4;--text-muted: #979aa7;--border: #3c3f50;--border-soft: #363950;--border-hover: #676c85;--divider: #2a2c39;--accent: #93a5ff;--accent-contrast: #131735;--accent-bg: #1d2340;--good: #43bd68;--good-bg: #16301d;--danger: #ff7285;--danger-bg: #38181e;--danger-soft: #e08a83;--inverse-bg: #ebecf0;--inverse-text: #15161c;--inverse-soft: #444;--card-line: rgba(147, 165, 255, .14);--shadow: rgba(0, 0, 0, .35);--on-verdict: #15161c;--highlight: #f0c65a;--highlight-ink: #f0c65a;--highlight-bg: #2e2712;--margin-line: rgba(255, 114, 133, .18);color-scheme:dark}*{box-sizing:border-box}body{margin:0}main{max-width:640px;margin:var(--space-6) auto;padding:0 var(--space-5)}.app-header{display:flex;justify-content:space-between;align-items:center}h1{font-family:var(--font-display);font-weight:700;letter-spacing:-.01em;margin-bottom:var(--space-4)}h2,h3{font-family:var(--font-display);font-weight:600}.theme-toggle{border:none;background:none;font-size:var(--text-lg);min-width:44px;min-height:44px;display:inline-flex;align-items:center;justify-content:center;padding:0}button{font:inherit;cursor:pointer;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);color:var(--text);padding:var(--space-2) var(--space-4);transition:background .15s,border-color .15s}button:hover{border-color:var(--border-hover)}input,textarea,select{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-2)}.hint{color:var(--text-soft);font-size:var(--text-sm)}.error{color:var(--danger)}.ok{color:var(--good)}.error-box{display:flex;align-items:center;gap:var(--space-4)}.save-warning{color:var(--danger);background:var(--danger-bg);border:1px solid var(--danger);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);margin:0 0 var(--space-3);font-size:.85rem}.level-picker{display:grid;grid-template-columns:repeat(6,1fr);gap:var(--space-2);margin-bottom:var(--space-5)}@media (max-width: 520px){.level-picker{grid-template-columns:repeat(3,1fr)}}.level{display:flex;flex-direction:column;align-items:center;padding:var(--space-2) var(--space-2)}.level strong{font-size:var(--text-md)}.level span{font-size:var(--text-xs);color:var(--text-soft)}.level-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--accent);margin-left:var(--space-1);vertical-align:middle}.level.active .level-dot{background:var(--inverse-text)}.level.active{background:var(--inverse-bg);border-color:var(--inverse-bg);color:var(--inverse-text)}.level.active span{color:var(--inverse-soft)}.generate-bar{display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--space-3);margin:var(--space-4) 0 var(--space-5);padding:var(--space-4);background:var(--surface);border:1px solid var(--border-soft);border-radius:var(--radius-md)}.generate-bar label{display:flex;flex-direction:column;font-size:var(--text-sm);color:var(--text-soft);gap:var(--space-1)}.generate-bar input[type=number]{width:80px}.generate-bar .error,.generate-bar .ok{flex-basis:100%;margin:0;font-size:var(--text-sm)}.lobby h2{margin-bottom:var(--space-1)}.start{background:var(--accent);border-color:var(--accent);color:var(--accent-contrast);font-weight:600;padding:var(--space-2) var(--space-4)}.start:hover:not(:disabled){background:color-mix(in srgb,var(--accent) 85%,var(--text));border-color:transparent}.answer-buttons .right:hover{background:color-mix(in srgb,var(--good) 88%,var(--text));border-color:transparent}.answer-buttons .wrong:hover{background:color-mix(in srgb,var(--danger) 88%,var(--text));border-color:transparent}.level.active:hover{border-color:var(--inverse-bg)}.link:hover,.theme-toggle:hover{color:var(--text)}.link.danger:hover{color:var(--danger)}button:active:not(:disabled){transform:translateY(1px)}.deck-count{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase}.progress-row{display:flex;justify-content:space-between;align-items:center;color:var(--text-soft);margin-bottom:var(--space-3)}.link{border:none;background:none;color:var(--text-soft);text-decoration:underline;padding:var(--space-1)}.flashcard{display:block;width:100%;cursor:pointer;text-align:center;perspective:1200px}.card-inner{display:grid;transform-style:preserve-3d;transition:transform .4s cubic-bezier(.2,.7,.3,1)}.flashcard.flipped .card-inner{transform:rotateY(180deg)}.card-face{grid-area:1 / 1;backface-visibility:hidden;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:220px;padding:var(--space-5);border:1px solid var(--border-soft);border-radius:var(--radius-lg);background-color:var(--surface);background-image:var(--ruling);box-shadow:var(--shadow-card)}.card-face.back{transform:rotateY(180deg);background-color:var(--surface-2)}.lang{display:inline-block;font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.08em;color:var(--accent);border:1px solid var(--border-soft);border-radius:var(--radius-pill);padding:.1rem var(--space-2);margin-bottom:var(--space-3);background:var(--surface)}.term{font-family:var(--font-display);font-size:var(--text-2xl);font-weight:600;letter-spacing:-.01em;margin:var(--space-2) 0}.card-face .term{font-size:var(--text-4xl);line-height:1.1}.example{color:var(--text-soft);font-style:italic}.tap-hint{margin-top:var(--space-5);font-size:var(--text-sm);color:var(--text-muted)}.reveal{width:100%;margin-top:var(--space-4);padding:var(--space-3)}.answer-buttons{display:flex;gap:var(--space-3);margin-top:var(--space-4)}.answer-buttons button{flex:1;padding:var(--space-3);font-weight:600}.answer-buttons .right{background:var(--good);border-color:var(--good);color:var(--on-verdict)}.answer-buttons .wrong{background:var(--danger);border-color:var(--danger);color:var(--on-verdict)}.kbd-hint{margin-top:var(--space-4);text-align:center;font-size:var(--text-xs);color:var(--text-muted)}@media (hover: none) and (pointer: coarse){.kbd-hint{display:none}}.summary{text-align:center;padding:var(--space-5) 0}.summary .actions{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-3);margin-top:var(--space-4)}.stamp{display:flex;justify-content:center;color:var(--accent);margin:0 auto var(--space-3);transform:rotate(-8deg);animation:stamp-press .42s cubic-bezier(.2,1.3,.4,1) both}@keyframes stamp-press{0%{opacity:0;transform:rotate(-8deg) scale(1.5)}60%{opacity:1;transform:rotate(-8deg) scale(.92)}to{opacity:1;transform:rotate(-8deg) scale(1)}}.secondary{background:var(--surface-3)}.panel{border:1px solid var(--border-soft);border-radius:var(--radius-md);padding:var(--space-4);background:var(--surface)}.panel h3{margin:0 0 var(--space-1)}.muted{color:var(--text-muted);font-size:var(--text-sm);margin:var(--space-1) 0 var(--space-2)}.exercise-bar{display:flex;flex-direction:column;gap:var(--space-2)}.exercise-bar .generate-bar{margin:0}.exercise{padding:var(--space-5);border:1px solid var(--border-soft);border-radius:var(--radius-lg);background-color:var(--surface);background-image:var(--ruling);box-shadow:var(--shadow-card)}.exercise .term{font-size:var(--text-xl);margin:var(--space-2) 0 var(--space-4)}.field-label{display:block;font-size:var(--text-sm);color:var(--text-soft);margin-bottom:var(--space-2)}.answer-input{width:100%;padding:var(--space-2) var(--space-3);resize:vertical}.answer-input:disabled{background:var(--surface-disabled);color:var(--text-soft)}@keyframes feedback-in{0%{opacity:0;transform:translateY(4px)}}.feedback{margin-top:var(--space-4);padding:var(--space-4);border-radius:var(--radius-md);animation:feedback-in .18s ease-out}.feedback.is-right{background:var(--good-bg);border:1px solid var(--good)}.feedback.is-wrong{background:var(--danger-bg);border:1px solid var(--danger)}.verdict{margin:0 0 var(--space-2);font-weight:600}.feedback.is-right .verdict{color:var(--good)}.feedback.is-wrong .verdict{color:var(--danger)}.solution{margin:0 0 var(--space-3)}.panel-actions{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-2)}.lesson-actions .start,.lesson-actions .secondary{flex:1 1 0}button:disabled{opacity:.5;cursor:not-allowed}.badge{font-size:var(--text-xs);font-weight:400;color:var(--text-soft)}.feedback-note{margin:0 0 var(--space-2);font-style:italic;color:var(--text-soft)}.options{display:flex;flex-direction:column;gap:var(--space-2);margin:var(--space-2) 0}.option{text-align:left;padding:var(--space-2) var(--space-3)}.option.correct{background:var(--good-bg);border-color:var(--good)}.option.wrong{background:var(--danger-bg);border-color:var(--danger)}:focus-visible{outline:2px solid var(--accent);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}.breakdown{margin:var(--space-3) 0}.breakdown-list{list-style:none;padding:0;margin:var(--space-2) 0 0}.breakdown-list li{display:flex;justify-content:space-between;gap:var(--space-4);padding:var(--space-1) 0;border-bottom:1px solid var(--divider)}.bd-word{font-weight:600}.bd-tr{color:var(--text-soft)}.tabs{display:flex;gap:var(--space-2);margin-bottom:var(--space-5);border-bottom:1px solid var(--border-soft)}.tab{display:flex;align-items:center;gap:var(--space-2);border:none;border-bottom:2px solid transparent;border-radius:0;background:none;color:var(--text-soft);font-weight:600;padding:var(--space-2) var(--space-4)}.tab .icon{flex-shrink:0}.tab:hover{border-color:transparent;color:var(--text)}.tab.active{color:var(--text);border-bottom-color:var(--accent)}.app-footer{display:flex;align-items:center;gap:var(--space-3);margin-top:var(--space-6);padding-top:var(--space-4);border-top:1px solid var(--border-soft);font-size:var(--text-xs);color:var(--text-soft)}.app-footer span{font-family:var(--font-mono, monospace);text-transform:uppercase;letter-spacing:.08em;border:1px solid var(--border-soft);border-radius:var(--radius-pill);padding:1px 8px}@media (max-width: 640px){.tabs{position:fixed;bottom:0;left:0;right:0;z-index:20;margin:0;gap:0;background:var(--bg);border-top:1px solid var(--border-soft);border-bottom:none;padding-bottom:env(safe-area-inset-bottom,0)}.tab{flex:1;flex-direction:column;gap:2px;padding:var(--space-2) var(--space-1);border-bottom:none;border-top:2px solid transparent;font-size:var(--text-xs)}.tab.active{border-bottom-color:transparent;border-top-color:var(--accent);color:var(--accent)}main{padding-bottom:calc(66px + env(safe-area-inset-bottom,0))}}.custom-topic{display:flex;gap:var(--space-2);margin:var(--space-4) 0 var(--space-5)}.custom-topic input{flex:1}.grammar-surprise{display:inline-flex;align-items:center;gap:var(--space-1);margin-bottom:var(--space-5)}.placement-fill{display:flex;gap:var(--space-2);margin-top:var(--space-3)}.placement-fill input{flex:1}.placement-review-title{margin:var(--space-5) 0 var(--space-2)}.placement-review{list-style:none;margin:0 0 var(--space-4);padding:0;text-align:left}.placement-review .review-row{display:flex;gap:var(--space-2);padding:var(--space-2) 0;border-top:1px solid var(--border)}.review-mark{font-weight:700;flex:none}.review-row.is-right .review-mark{color:var(--good)}.review-row.is-wrong .review-mark{color:var(--danger)}.review-body{flex:1}.review-prompt{margin:0}.review-level{font-size:var(--text-xs);color:var(--text-muted);font-variant-numeric:tabular-nums}.review-answers{display:flex;flex-wrap:wrap;gap:var(--space-1) var(--space-3);margin:var(--space-1) 0 0;font-size:var(--text-sm)}.review-correct{color:var(--good)}.review-yours{color:var(--danger)}.topic-chips{display:flex;flex-wrap:wrap;gap:var(--space-2)}.topic-chip{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-radius:var(--radius-pill)}.chip-count{font-size:var(--text-xs);background:var(--accent);color:var(--accent-contrast);border-radius:var(--radius-pill);padding:.05rem var(--space-2)}.topic-view h2{margin:var(--space-2) 0 var(--space-4)}.search{width:100%;margin-bottom:var(--space-4)}.empty-topic{padding:var(--space-4) 0}.phrase-list{list-style:none;padding:0;margin:0 0 var(--space-4)}.phrase-list li{padding:var(--space-2) 0;border-bottom:1px solid var(--divider)}.phrase-main{display:flex;justify-content:space-between;gap:var(--space-4)}.phrase-ex{margin:var(--space-1) 0 0;font-size:var(--text-sm);color:var(--text-muted);font-style:italic}.row-actions{display:flex;gap:var(--space-2)}.progress-row .row-actions>.link:last-child{margin-left:var(--space-3)}@media (hover: hover) and (pointer: fine){.phrase-list .row-actions,.reading-grid .row-actions{opacity:0;transition:opacity .1s}.phrase-list li:hover .row-actions,.phrase-list li:focus-within .row-actions,.reading-grid li:hover .row-actions,.reading-grid li:focus-within .row-actions{opacity:1}}.link.danger{color:var(--danger-soft)}.phrase-delete{margin-left:auto;font-size:var(--text-sm);flex-shrink:0}.item-editor{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-4);border:1px solid var(--border-soft);border-radius:var(--radius-md);background:var(--surface-2)}.editor-field{display:flex;flex-direction:column;gap:var(--space-1);font-size:var(--text-sm);color:var(--text-soft)}.editor-actions{display:flex;gap:var(--space-2)}.speak-btn{display:inline-flex;align-items:center;gap:var(--space-2);vertical-align:middle;border:none;background:none;color:var(--text-soft);padding:var(--space-2);margin:calc(-1 * var(--space-1)) 0;border-radius:var(--radius-sm)}.speak-btn:hover{color:var(--accent);border-color:transparent}.speak-btn svg{width:18px;height:18px;flex-shrink:0}.home{display:flex;flex-direction:column;gap:var(--space-5)}.review-hero{border:1px solid var(--border-soft);border-radius:var(--radius-lg);background-color:var(--surface);background-image:var(--ruling);box-shadow:var(--shadow-card);padding:var(--space-5);text-align:center}.hero-eyebrow{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);margin:0}.hero-count{font-family:var(--font-display);font-size:var(--text-4xl);font-weight:700;line-height:1.1;margin:var(--space-1) 0 var(--space-2);color:var(--accent)}.hero-count span{font-size:var(--text-base);font-weight:600;color:var(--text-soft)}.hero-new{color:var(--highlight-ink);font-weight:600}.hero-count.all-done{font-size:var(--text-2xl);color:var(--good)}.review-hero .start{margin-top:var(--space-3)}.welcome{border:1px solid var(--border-soft);border-radius:var(--radius-lg);background-color:var(--surface);box-shadow:var(--shadow-card);padding:var(--space-5);text-align:center;display:flex;flex-direction:column;align-items:center;gap:var(--space-3)}.welcome h2{margin:0}.welcome .level-picker{justify-content:center}.onboarding .lede{max-width:46ch}.onboarding-question{font-family:var(--font-display);font-weight:600;font-size:var(--text-lg);margin-top:var(--space-2)}.onboarding .actions{flex-wrap:wrap;justify-content:center}.onboarding-session .hero-eyebrow{text-align:center;margin-bottom:var(--space-3)}.auth-screen{max-width:420px;margin:0 auto;padding:var(--space-6) var(--space-5) 5rem;display:flex;flex-direction:column;justify-content:center;min-height:80vh}.auth-card{gap:var(--space-4)}.auth-tabs{display:flex;gap:var(--space-1);padding:var(--space-1);background:var(--surface-2, var(--bg));border:1px solid var(--border-soft);border-radius:var(--radius-pill);width:100%}.auth-tab{flex:1;border:none;background:none;border-radius:var(--radius-pill);padding:var(--space-2) var(--space-3);font-weight:600;color:var(--text-soft)}.auth-tab.active{background:var(--accent);color:#fff}.auth-form{display:flex;flex-direction:column;gap:var(--space-3);width:100%;text-align:left}.auth-field{display:flex;flex-direction:column;gap:var(--space-1)}.auth-field span{font-size:var(--text-sm);font-weight:600;color:var(--text-soft)}.auth-field input{border:1px solid var(--border);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);background:var(--surface);color:var(--text);font:inherit}.auth-field input:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.auth-hint{font-size:var(--text-xs);margin:0}.auth-error-row{margin:0;min-height:var(--text-sm)}.auth-form .start{margin-top:var(--space-2)}.logout-btn{font-size:var(--text-sm)}.home-level,.home-progress{display:flex;flex-direction:column;gap:var(--space-2)}.home-level .level-picker{margin-bottom:var(--space-2)}.home-level .secondary{align-self:flex-start}.stat-row{margin:var(--space-2) 0}.stat-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:var(--space-1) var(--space-4)}.stat-label{font-weight:600;font-size:var(--text-sm)}.stat-bar{position:relative;height:8px;border-radius:var(--radius-pill);background:var(--surface-3);margin-top:var(--space-2);overflow:hidden}.stat-bar-studied,.stat-bar-mastered{position:absolute;inset:0 auto 0 0;height:100%;border-radius:var(--radius-pill);transition:width .3s}.stat-bar-studied{background:color-mix(in srgb,var(--accent) 40%,var(--surface-3))}.stat-bar-mastered{background:var(--accent)}.lesson-paragraph{max-width:60ch}.lesson h3{margin-top:var(--space-5)}.tips{list-style:none;padding:var(--space-4);margin:var(--space-2) 0 var(--space-5);border:1px solid var(--accent);border-radius:var(--radius-md);background:var(--accent-bg);display:flex;flex-direction:column;gap:var(--space-2)}.tips li{font-size:var(--text-sm)}.topic-chip.generated{border-color:var(--accent)}.word-note{font-size:var(--text-sm);color:var(--danger-soft);margin:var(--space-1) 0 0}.listening-question{font-weight:600;margin:0 0 var(--space-1)}.tap-word{border:none;background:none;padding:0;font:inherit;color:inherit;border-radius:3px;cursor:pointer;border-bottom:1px dotted var(--border)}.tap-word:hover{background:var(--accent-bg);border-color:transparent;border-bottom-color:var(--accent)}.save-word-panel{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2) var(--space-3);padding:var(--space-3) var(--space-4);border:1px solid var(--accent);border-radius:var(--radius-md);background:var(--accent-bg);margin:var(--space-3) 0}.card-audio-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2) var(--space-4)}.read-aloud{display:inline-flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm)}.listening-player{margin:var(--space-3) 0 var(--space-4)}.player-buttons{display:flex;gap:var(--space-3);margin-top:var(--space-2)}.listening-script{font-size:var(--text-lg)}.transcript{margin:var(--space-2) 0 var(--space-3);padding:var(--space-2) var(--space-3);border-left:3px solid var(--accent);background:var(--surface-2);border-radius:0 var(--radius-sm) var(--radius-sm) 0}.transcript p{margin:0 0 var(--space-1)}.reading-text p{max-width:62ch;line-height:1.65}.reading-questions{padding-left:var(--space-5);display:flex;flex-direction:column;gap:var(--space-5);margin:var(--space-3) 0 var(--space-5)}.question-text{font-weight:600;margin:0 0 var(--space-2)}.option.selected{border-color:var(--accent);background:var(--accent-bg)}.reading-title{font-family:var(--font-display);font-weight:600}.lesson-actions{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-2)}.reading-score{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--good);flex-shrink:0}.milestone{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--highlight-ink);font-weight:600}.reading-progress{margin:var(--space-1) 0 0}.topic-footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-2);margin-top:var(--space-1)}.writing-task{font-weight:600;margin:0 0 var(--space-1)}.writing-correction{display:flex;flex-direction:column;gap:var(--space-2);margin:var(--space-3) 0}.writing-issues{list-style:none;padding:0;margin:0}.writing-issues li{padding:var(--space-2) var(--space-3);border-left:3px solid var(--danger);background:var(--surface-2);border-radius:0 var(--radius-sm) var(--radius-sm) 0;margin-bottom:var(--space-2)}.writing-issues li p{margin:0 0 var(--space-1)}.writing-issues del{color:var(--danger-soft)}.writing-history-list{list-style:none;padding:0;margin:var(--space-2) 0 0}.writing-history-list>li{padding:var(--space-2) 0;border-bottom:1px solid var(--divider)}.writing-history-detail{margin:var(--space-2) 0 var(--space-3)}.level-up{border-color:var(--highlight);background:var(--highlight-bg)}.level-up p{margin:0 0 var(--space-2)}.exam-passage{background-color:var(--surface-2);background-image:var(--ruling);border:1px solid var(--border-soft);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);margin-bottom:var(--space-4)}.exam-breakdown{display:flex;flex-direction:column;gap:var(--space-2);width:100%;max-width:320px;margin:var(--space-4) auto var(--space-5)}.exam-breakdown-row{display:flex;justify-content:space-between;font-size:var(--text-sm)}.exam-breakdown-score{font-family:var(--font-mono);color:var(--text-soft)}.exam-config{display:flex;flex-direction:column;align-items:center;gap:var(--space-3);margin:var(--space-4) 0}.exam-presets{display:flex;gap:var(--space-2)}.chip{display:inline-flex;align-items:center;min-height:44px;border-radius:var(--radius-pill);padding:var(--space-2) var(--space-4);font-size:var(--text-sm)}.icon{vertical-align:-.2em}.header-controls{display:flex;align-items:center;gap:var(--space-2)}.level-chip-root{position:relative}.level-chip{font-family:var(--font-mono);font-weight:600;font-size:var(--text-sm);border-radius:var(--radius-pill);padding:var(--space-1) var(--space-3);min-height:36px}.level-pop{position:absolute;right:0;top:calc(100% + var(--space-1));z-index:20;min-width:220px;display:flex;flex-direction:column;padding:var(--space-1);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-card)}.level-option{text-align:left;border:none;background:none;padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm)}.level-option:hover{background:var(--accent-bg);border-color:transparent}.level-option.is-current{background:var(--accent);color:var(--accent-contrast)}.level-option strong{font-family:var(--font-mono);margin-right:var(--space-2)}.syllabus-head{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-3)}.syllabus-head .stat-bar{flex:1;margin-top:0}.syllabus-group{margin-bottom:var(--space-5)}.syllabus-group-title{font-family:var(--font-mono);font-size:var(--text-xs);font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-soft);margin:0 0 var(--space-2)}.syllabus{list-style:none;counter-reset:syllabus;padding:0;margin:0;display:flex;flex-direction:column}.syllabus li{counter-increment:syllabus;border-bottom:1px solid var(--divider)}.syllabus-item{width:100%;display:flex;align-items:center;gap:var(--space-3);text-align:left;border:none;background:none;border-radius:var(--radius-sm);padding:var(--space-2) var(--space-2)}.syllabus-item:before{content:counter(syllabus);font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-muted);min-width:1.5em;text-align:right}.syllabus-item:hover{background:var(--accent-bg);border-color:transparent}.syllabus-state{color:var(--text-muted)}.syllabus-state.read{color:var(--accent)}.syllabus-state.done{color:var(--good);font-weight:700}.syllabus-name{flex:1}.syllabus-status{font-size:var(--text-xs);font-family:var(--font-mono);letter-spacing:.06em;color:var(--text-muted)}.next-lesson{margin-top:var(--space-4)}.topic-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:var(--space-3);margin-bottom:var(--space-4)}.topic-card{display:flex;flex-direction:column;gap:var(--space-2);text-align:left;padding:var(--space-3) var(--space-4);border:1px solid var(--border-soft);border-radius:var(--radius-md);background:var(--surface);box-shadow:var(--shadow-card)}.topic-card .stat-bar{margin-top:0}.topic-card-head{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-2)}.topic-card-name{font-family:var(--font-display);font-weight:600;display:inline-block;text-transform:lowercase}.topic-card-name:first-letter{text-transform:uppercase}.topic-card-due{font-size:var(--text-xs);font-family:var(--font-mono);color:var(--text-soft)}.hub h2{margin-bottom:var(--space-1)}.hub .lede{margin-top:0;margin-bottom:var(--space-4)}.hub-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:var(--space-3)}.hub-card{display:flex;align-items:flex-start;gap:var(--space-3);text-align:left;padding:var(--space-4);border:1px solid var(--border-soft);border-radius:var(--radius-md);background:var(--surface);box-shadow:var(--shadow-card);transition:border-color .15s ease,transform .15s ease}.hub-card:hover{border-color:var(--accent);transform:translateY(-1px)}.hub-card-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:40px;height:40px;border-radius:var(--radius-md);background:var(--accent-bg);color:var(--accent)}.hub-card-text{display:flex;flex-direction:column;gap:2px;min-width:0}.hub-card-title{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-2);font-family:var(--font-display);font-weight:600}.hub-card-badge{font-family:var(--font-mono);font-size:var(--text-xs);font-weight:600;color:var(--highlight-ink);background:var(--highlight-bg);border-radius:var(--radius-pill);padding:.05rem .5rem}.hub-card-blurb{font-size:var(--text-sm)}.hub-back{display:inline-flex;align-items:center;border:none;background:none;color:var(--text-soft);font-weight:600;font-size:var(--text-sm);padding:0;margin-bottom:var(--space-4)}.hub-back:hover{color:var(--accent)}.reading-grid{list-style:none;padding:0;margin:var(--space-3) 0 0;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:var(--space-3)}.reading-card{position:relative;display:flex;flex-direction:column;border:1px solid var(--border-soft);border-radius:var(--radius-md);background:var(--surface);box-shadow:var(--shadow-card)}.reading-card-body{flex:1;display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-1);text-align:left;border:none;background:none;padding:var(--space-3) var(--space-4);border-radius:var(--radius-md)}.reading-meta{font-size:var(--text-xs);font-family:var(--font-mono);color:var(--text-muted)}.reading-card-actions{position:absolute;top:var(--space-2);right:var(--space-2)}input[type=checkbox],input[type=radio],input[type=number],progress{accent-color:var(--accent)}.streak-line{color:var(--highlight-ink);font-weight:600}.streak-line .icon{color:var(--highlight)}.topic-group{margin:var(--space-4) 0 var(--space-2);font-size:var(--text-sm);text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);font-family:var(--font-mono);font-weight:500}.topic-title{text-transform:lowercase}.topic-title:first-letter{text-transform:uppercase}.count-presets{display:flex;align-items:flex-end;gap:var(--space-1)}.danger-zone summary{cursor:pointer;font-size:var(--text-sm);color:var(--text-muted)}.danger-zone[open] summary{margin-bottom:var(--space-2)}.lobby.placement,.summary.placement-result{display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--space-3)}.lobby.placement .actions{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-3)}.chip.is-on{background:var(--accent);border-color:var(--accent);color:var(--accent-contrast)}.exam-skills{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-2) var(--space-4)}.exam-skill{display:inline-flex;align-items:center;gap:var(--space-1);font-size:var(--text-sm)}.exam-mistakes{width:100%;text-align:left;margin-bottom:var(--space-5)}.leech-hint{color:var(--danger-soft);font-size:var(--text-sm);margin:0 0 var(--space-2)}.exam-history{margin-top:var(--space-6);text-align:left}.exam-history-list{list-style:none;padding:0;margin:var(--space-2) 0 0;display:flex;flex-direction:column;gap:var(--space-2)}.exam-history-list li{display:flex;align-items:center;gap:var(--space-3)}.exam-history-date{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-muted);min-width:4.5rem}.exam-history-list .stat-bar{flex:1;margin-top:0}.exam-history-score{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--text-soft);min-width:3rem;text-align:right}@keyframes shimmer{to{background-position:-200% 0}}.skeleton{border-radius:var(--radius-sm);background:linear-gradient(90deg,var(--surface-3) 25%,var(--surface-2) 50%,var(--surface-3) 75%);background-size:200% 100%;animation:shimmer 1.2s infinite}.skeleton-hero{height:180px;border-radius:var(--radius-lg)}.skeleton-row{height:2.4rem;margin-bottom:var(--space-2)}.theme-switching,.theme-switching *{transition:none!important}@media (prefers-reduced-motion: reduce){*,*:before,*:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
