:root{--bg: #f4f2ee;--surface: #ffffff;--surface-sunken: #edeae4;--border: #e2ded5;--border-strong: #cec8bb;--text: #1b1917;--muted: #6c665c;--accent: #0f7360;--accent-hover: #0b5c4d;--accent-text: #ffffff;--accent-soft: #e2f1ec;--accent-border: #b6ddd1;--error: #a3372a;--error-soft: #f7e7e4;--shadow-sm: 0 1px 2px rgb(27 25 23 / .05);--shadow-md: 0 8px 28px rgb(27 25 23 / .12);--focus: 0 0 0 3px rgb(15 115 96 / .28);--radius: 10px;--radius-lg: 14px;color-scheme:light}@media(prefers-color-scheme:dark){:root{--bg: #15161a;--surface: #1d1f25;--surface-sunken: #24262d;--border: #2f323a;--border-strong: #434752;--text: #e9e7e2;--muted: #9b968d;--accent: #4cc4a6;--accent-hover: #6fd6bc;--accent-text: #06231c;--accent-soft: #17342d;--accent-border: #245043;--error: #e08a7a;--error-soft: #3a2320;--shadow-sm: 0 1px 2px rgb(0 0 0 / .4);--shadow-md: 0 10px 30px rgb(0 0 0 / .5);--focus: 0 0 0 3px rgb(76 196 166 / .3);color-scheme:dark}}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:16px/1.5 system-ui,-apple-system,Segoe UI,sans-serif}.app{max-width:720px;margin:0 auto;padding:24px 16px;min-height:100vh;min-height:100dvh;display:flex;flex-direction:column}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:24px;display:flex;flex-direction:column;gap:16px;margin:auto 0}.panel h1{margin:0;font-size:1.5rem}label{display:flex;flex-direction:column;gap:6px;font-size:.875rem;color:var(--muted)}select,input{font:inherit;padding:10px 12px;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);color:var(--text);transition:border-color .12s ease,box-shadow .12s ease}select:focus,input:focus{outline:none;border-color:var(--accent);box-shadow:var(--focus)}:focus-visible{outline:none;box-shadow:var(--focus);border-radius:var(--radius)}button{font:inherit;padding:10px 16px;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);color:var(--text);cursor:pointer;box-shadow:var(--shadow-sm);transition:background .12s ease,border-color .12s ease,color .12s ease}button:hover:not(:disabled){border-color:var(--accent-border);background:var(--accent-soft);color:var(--accent)}button:disabled{opacity:.5;cursor:not-allowed}button.primary{background:var(--accent);color:var(--accent-text);border-color:var(--accent);font-weight:600}button.primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover);color:var(--accent-text)}.chat{display:flex;flex-direction:column;flex:1;gap:12px;min-height:0}.chat-header{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap;padding-bottom:12px;border-bottom:1px solid var(--border)}.meta{color:var(--muted);font-size:.875rem;margin-left:8px}.messages{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:12px;padding:4px;min-height:0}.bubble{max-width:82%;padding:12px 14px;border-radius:14px;white-space:pre-wrap;overflow-wrap:anywhere}.bubble.tutor{align-self:flex-start;background:var(--surface);border:1px solid var(--border)}.bubble.learner{align-self:flex-end}.speak{margin-top:8px;padding:4px 10px;font-size:.8125rem;border-radius:6px}.cursor{display:inline-block;width:2px;height:1em;margin-left:2px;background:var(--muted);vertical-align:text-bottom;animation:blink 1s steps(2,start) infinite}@keyframes blink{to{visibility:hidden}}.composer{display:flex;gap:8px}.composer input{flex:1;min-width:0}.hint{color:var(--muted);font-size:.875rem;margin:0}.centered{text-align:center;margin:auto}.error{color:var(--error);font-size:.875rem;margin:0}.usage{color:var(--muted);font-size:.75rem;font-family:ui-monospace,monospace;margin:0;text-align:right}.mic{display:inline-flex;align-items:center;gap:8px;white-space:nowrap}.mic-glyph{color:var(--muted);font-size:.75rem}.mic.listening{border-color:var(--accent);color:var(--accent)}.mic.listening .mic-glyph{color:var(--accent);animation:pulse 1.2s ease-in-out infinite}@media(prefers-reduced-motion:reduce){.mic.listening .mic-glyph,.cursor{animation:none}}.bubble.interim{opacity:.6;font-style:italic}.notice{margin:0;padding:8px 12px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--muted);font-size:.8125rem}.notice.subtle{border:none;background:none;padding:0 2px}.toggles{display:flex;flex-wrap:wrap;gap:16px}.toggle{flex-direction:row;align-items:center;gap:6px;font-size:.8125rem;cursor:pointer}.toggle input{width:auto;padding:0;accent-color:var(--accent)}.turn{display:flex;flex-direction:column;gap:4px}.feedback,.feedback-status{align-self:flex-end;max-width:82%;text-align:left}.feedback-status{margin:0;font-size:.75rem;color:var(--muted)}.feedback-status.good{color:var(--accent)}.feedback-toggle{padding:2px 6px;border:none;background:none;color:var(--muted);font-size:.75rem}.feedback-toggle:hover{color:var(--text)}.feedback-body{display:flex;flex-direction:column;gap:12px;margin-top:4px;padding:12px;border:1px solid var(--border);border-radius:10px;background:var(--surface);font-size:.875rem}.correction-line{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px}.was{text-decoration:line-through;text-decoration-color:var(--error);color:var(--muted)}.now{color:var(--accent);font-weight:600}.arrow{color:var(--muted)}.tag{font-size:.6875rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);border:1px solid var(--border);border-radius:4px;padding:1px 5px}.why{margin:4px 0 0;color:var(--muted)}.label{display:block;font-size:.6875rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-bottom:4px}.alternative{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px}.alternative .label{flex-basis:100%;margin:0}.vocab ul{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:4px}.vocab em{color:var(--muted);font-style:normal;font-size:.8125rem}.gloss{color:var(--muted)}.speak.inline{padding:0 6px;margin:0 0 0 4px;font-size:.75rem;border:none;background:none;color:var(--muted)}.speak.inline:hover{color:var(--accent)}.header-actions{display:flex;gap:8px}.badge{display:inline-block;margin-left:6px;padding:0 6px;border-radius:10px;background:var(--accent);color:var(--accent-text);font-size:.75rem;font-weight:600}.overlay{flex:1;min-height:0;overflow-y:auto;background:var(--bg)}.review{width:100%;max-width:720px;min-height:100%;margin:0 auto;background:transparent;border:none;border-radius:0;padding:20px 20px 48px;display:flex;flex-direction:column;gap:20px}.review-header{position:sticky;top:0;background:var(--bg);padding:12px 0;z-index:1;display:flex;justify-content:space-between;align-items:center}.review-card{display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center;padding:20px 0}.review-term{font-size:1.75rem;font-weight:600}.review-reading{color:var(--muted);font-size:.9375rem}.review-gloss{font-size:1.125rem;padding-top:8px;border-top:1px solid var(--border);width:100%}.reveal{margin-top:8px}.review-grades{display:flex;gap:8px;width:100%;margin-top:8px}.grade{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:10px 8px}.grade .interval{font-size:.6875rem;color:var(--muted);font-variant-numeric:tabular-nums}.grade.again:hover:not(:disabled){border-color:var(--error);color:var(--error)}.grade.easy:hover:not(:disabled),.grade.good:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.review-empty{padding:24px 0;text-align:center}button.link{border:none;background:none;color:var(--muted);text-decoration:underline;padding:4px;align-self:center;font-size:.875rem}button.link:hover{color:var(--text)}.password-field{display:flex;flex-direction:column;gap:6px}.password-input{position:relative;display:flex;min-width:0}.password-input input{flex:1;padding-right:66px}.password-toggle{position:absolute;top:50%;right:5px;transform:translateY(-50%);padding:5px 10px;border:none;background:none;color:var(--muted);font-size:.8125rem;min-width:52px}.password-toggle:hover{color:var(--accent)}button.link.inline{display:inline;padding:0;align-self:auto;font-size:inherit}.resume{display:flex;flex-direction:column;gap:6px}.resume-row{display:flex;flex-wrap:wrap;gap:8px}.resume-row button{padding:8px 12px}label .hint{margin-top:2px}.speak-language{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.speak-language .label{margin:0}.lang{font-size:.8125rem;color:var(--muted)}.lang.active{color:var(--accent);font-weight:600}.switch{position:relative;width:40px;height:22px;padding:0;border-radius:999px;background:var(--border);border:1px solid var(--border);flex:none}.switch:hover:not(:disabled){border-color:var(--muted)}.switch.on{background:var(--accent);border-color:var(--accent)}.switch-thumb{position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:var(--surface);box-shadow:0 1px 2px #0000004d;transition:transform .15s ease}.switch.on .switch-thumb{transform:translate(18px)}@media(prefers-reduced-motion:reduce){.switch-thumb{transition:none}}.patterns{border-top:1px solid var(--border);padding-top:16px;font-size:.875rem}.patterns ul{margin:0 0 8px;padding:0;list-style:none;display:flex;flex-direction:column;gap:10px}.pattern-label{font-weight:600}.pattern-example{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin-top:2px;font-size:.8125rem}.review-cloze{font-size:1.25rem;line-height:1.5}.review-context{padding-top:8px;border-top:1px solid var(--border);width:100%;color:var(--muted);font-size:.9375rem}.rate{width:90px;padding:0;accent-color:var(--accent)}.remove{font-size:.75rem;margin-top:4px}.translate .composer input{flex:1}.translation{display:flex;flex-direction:column;gap:12px;border-top:1px solid var(--border);padding-top:16px}.translation-main{font-size:1.5rem;font-weight:600;line-height:1.4}.translation-reading{color:var(--muted);margin-top:-8px}.translation-literal{font-size:.875rem;color:var(--muted)}.chat-body{display:flex;gap:12px;flex:1;min-height:0}.chat-main{display:flex;flex-direction:column;flex:1;gap:12px;min-height:0}.sidebar{display:flex;flex-direction:column;gap:6px;flex:none;border-right:1px solid var(--border);padding-right:12px;transition:width .15s ease}.sidebar.open{width:148px}.sidebar.collapsed{width:60px}@media(prefers-reduced-motion:reduce){.sidebar{transition:none}}.sidebar-actions{display:flex;flex-direction:column;gap:6px}.sidebar-actions button{display:flex;align-items:center;gap:8px;padding:8px 10px;font-size:.875rem;text-align:left;white-space:nowrap;overflow:hidden;min-width:0}.sidebar-label{min-width:0;overflow:hidden;text-overflow:ellipsis}.glyph{flex:none;width:16px;text-align:center;color:var(--muted)}.sidebar.collapsed .sidebar-label{display:none}.sidebar.collapsed .sidebar-actions button{position:relative;justify-content:center;padding:10px 6px}.sidebar.collapsed .sidebar-actions .badge{position:absolute;top:2px;right:2px;margin:0;padding:0 4px;font-size:.6875rem}.sidebar-toggle{align-self:flex-end;padding:4px 10px;border:none;background:none;color:var(--muted);font-size:1rem;line-height:1}.sidebar-toggle:hover{color:var(--text)}@media(max-width:700px){.app{padding:16px 12px;padding-left:max(12px,env(safe-area-inset-left));padding-right:max(12px,env(safe-area-inset-right));padding-bottom:max(16px,env(safe-area-inset-bottom))}.bubble,.feedback,.feedback-status{max-width:92%}.panel{padding:20px 16px}.overlay{padding:0;align-items:stretch}.review{max-width:none;border-radius:0;border:none;overflow-y:auto;padding:20px 16px max(20px,env(safe-area-inset-bottom))}}@media(max-width:460px){.mic-label{display:none}.mic{padding:10px 12px}.composer{gap:6px}.chat-header .meta{display:block;margin-left:0}.toggles{gap:10px 14px}.review-term{font-size:1.5rem}.review-cloze{font-size:1.125rem}.translation-main{font-size:1.25rem}.review-grades{gap:6px}.grade{padding:10px 4px}.sidebar-actions button,.header-actions button{min-height:44px}}.review-term,.review-cloze,.review-gloss,.review-context,.translation-main,.translation-literal,.was,.now,.pattern-example,.fix-gap,.fix-original,.fix-answer,.fix-why,.produce-gloss,.script-example,.passage-title,.passage-line,.passage-gloss,.shelf-title,.why{overflow-wrap:anywhere}.hamburger{display:none;position:relative;z-index:22;flex-direction:column;justify-content:center;gap:4px;width:40px;height:40px;padding:0;flex:none}.bar{display:block;width:18px;height:2px;margin:0 auto;background:var(--text);border-radius:2px;transition:transform .15s ease,opacity .15s ease}.hamburger.open .bar:nth-child(1){transform:translateY(6px) rotate(45deg)}.hamburger.open .bar:nth-child(2){opacity:0}.hamburger.open .bar:nth-child(3){transform:translateY(-6px) rotate(-45deg)}@media(prefers-reduced-motion:reduce){.bar{transition:none}}.badge.dot{position:absolute;top:4px;right:4px;width:8px;height:8px;min-width:0;padding:0;margin:0;border-radius:50%}.chat-title{flex:1;min-width:0}.sidebar-backdrop{display:none}@media(max-width:700px){.hamburger{display:flex}.sidebar-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:color-mix(in srgb,var(--bg) 70%,transparent);z-index:20}.sidebar,.sidebar.open,.sidebar.collapsed{position:fixed;top:0;left:0;bottom:0;width:220px;max-width:80vw;z-index:21;background:var(--surface);border-right:1px solid var(--border);padding:16px 12px;padding-top:calc(max(16px,env(safe-area-inset-top)) + 56px);overflow-y:auto;transition:transform .18s ease,visibility .18s}.sidebar.collapsed{transform:translate(-100%);visibility:hidden}.sidebar.open{transform:translate(0);visibility:visible}.sidebar.collapsed .sidebar-label,.sidebar.open .sidebar-label{display:inline}.sidebar.collapsed .sidebar-actions button{justify-content:flex-start;padding:8px 10px}.sidebar.collapsed .sidebar-actions .badge{position:static;padding:0 6px}.sidebar-toggle{display:none}.sidebar-actions button{min-height:44px}@media(prefers-reduced-motion:reduce){.sidebar,.sidebar.open,.sidebar.collapsed{transition:none}}}@media(min-width:701px){.sidebar{position:static}}.bubble.learner{background:var(--accent-soft);border:1px solid var(--accent-border)}.bubble.tutor{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-sm)}.bubble{border-radius:var(--radius-lg)}.messages{padding:4px 2px}.sidebar-actions button{border-color:transparent;background:transparent;box-shadow:none;border-radius:var(--radius)}.sidebar-actions button:hover:not(:disabled){background:var(--accent-soft);border-color:var(--accent-border)}.sidebar-actions button:hover:not(:disabled) .glyph{color:var(--accent)}.sidebar-actions button.active{background:var(--accent-soft);border-color:var(--accent-border)}.sidebar-actions button.active .glyph{color:var(--accent)}.sidebar{border-right-color:var(--border)}.chat-header{border-bottom-color:var(--border)}.review,.feedback-body{box-shadow:var(--shadow-md);border-radius:var(--radius-lg)}.feedback-body{box-shadow:var(--shadow-sm)}.notice{background:var(--surface);border-color:var(--border);border-radius:var(--radius)}.error{color:var(--error)}.grade{border-radius:var(--radius)}.grade.again{border-color:var(--border-strong);color:var(--muted)}.grade.again:hover:not(:disabled){background:var(--error-soft);border-color:var(--error);color:var(--error)}.grade.good:hover:not(:disabled),.grade.easy:hover:not(:disabled){background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.grade.easy{border-color:var(--accent-border);color:var(--accent)}.badge{background:var(--accent);color:var(--accent-text);box-shadow:var(--shadow-sm)}.seg.active,.lang.active{color:var(--accent)}.review-term,.translation-main{letter-spacing:-.01em}.review-gloss,.review-context{border-top-color:var(--border)}.composer input{background:var(--surface)}.interim{background:var(--surface-sunken);border:1px dashed var(--border-strong)}.call{display:flex;flex-direction:column;gap:12px;min-height:0;flex:1}.call-header{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}.call-turns{display:flex;flex-direction:column;gap:10px;overflow-y:auto;min-height:180px;max-height:46vh;padding:2px}.call-turn{position:relative;padding:12px 14px;border-radius:var(--radius-lg);max-width:88%}.call-turn.mine{align-self:flex-end;background:var(--accent-soft);border:1px solid var(--accent-border)}.call-turn.theirs{align-self:flex-start;background:var(--surface);border:1px solid var(--rule, var(--border));box-shadow:var(--shadow-sm)}.call-headline{font-size:1.125rem;line-height:1.4;overflow-wrap:anywhere}.call-secondary{margin-top:4px;font-size:.875rem;color:var(--muted);overflow-wrap:anywhere}.call-turn.interim{opacity:.6;font-style:italic}.call-controls{display:flex;align-items:center;gap:8px;padding-top:4px}.call-composer{display:flex;gap:8px;flex:1}.call-composer input{flex:1;min-width:0}.call-controls .mic{padding:14px 28px;font-size:1rem}.call-start,.call-invite{display:flex;flex-direction:column;align-items:center;gap:14px;padding:12px 0;text-align:center}.qr{width:100%;max-width:300px;height:auto;border-radius:var(--radius-lg);border:1px solid var(--border);background:#fff;padding:10px}.join-url{font-family:ui-monospace,monospace;font-size:.75rem;color:var(--muted);overflow-wrap:anywhere}.today{margin:0;font-size:.8125rem;color:var(--muted);display:flex;gap:10px;flex-wrap:wrap;align-items:baseline}.today.done{color:var(--accent);font-weight:600}.today .meta{margin:0}.review-question{margin:4px 0 0;font-size:.9375rem;color:var(--muted)}.starters{display:flex;flex-direction:column;gap:8px;margin:auto 0;padding:8px 0}.starter{display:flex;flex-direction:column;align-items:flex-start;gap:2px;text-align:left;padding:12px 14px;border-radius:var(--radius-lg);white-space:normal}.starter-text{font-size:1.0625rem;overflow-wrap:anywhere}.starter-gloss{font-size:.8125rem;color:var(--muted);overflow-wrap:anywhere}.starter:hover:not(:disabled) .starter-gloss{color:inherit}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.stat{display:flex;flex-direction:column;gap:2px;padding:14px 12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.stat-value{font-size:1.5rem;font-weight:600;font-variant-numeric:tabular-nums;line-height:1.1}.level-row{display:flex;align-items:baseline;gap:8px}.level-row .label{margin:0}.mode-switch{display:flex;gap:6px}.listening{display:flex;flex-direction:column;gap:14px;padding:8px 0}.listening-play{align-self:center;padding:12px 24px}.listening-result{display:flex;flex-direction:column;gap:8px;align-items:flex-start}.listening-answer{margin:0;font-size:1.25rem;overflow-wrap:anywhere}.listening-gloss{margin:0;color:var(--muted);font-size:.9375rem;overflow-wrap:anywhere}.fix{display:flex;flex-direction:column;gap:12px;padding:8px 0;align-items:flex-start}.fix-type{font-size:.6875rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);border:1px solid var(--border);border-radius:4px;padding:1px 5px}.fix-gap,.fix-original{margin:0;font-size:1.25rem;line-height:1.5;width:100%}.fix-original{text-decoration:line-through;text-decoration-color:var(--error);color:var(--muted)}.fix-prompt{margin:0;color:var(--muted);font-size:.9375rem}.fix-result{display:flex;flex-direction:column;gap:8px;align-items:flex-start;width:100%}.fix-answer{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;font-size:1.125rem}.fix-why{margin:0;color:var(--muted);font-size:.9375rem}.produce,.script{display:flex;flex-direction:column;gap:12px;padding:8px 0;align-items:flex-start;width:100%}.produce-gloss{margin:0;font-size:1.25rem;line-height:1.5}.script-symbol{margin:0 auto;font-size:4rem;line-height:1.2}.script-example{margin:0;font-size:1.0625rem}.passage,.shelf{display:flex;flex-direction:column;gap:12px;align-items:flex-start;width:100%}.passage-title{margin:0;font-size:1.375rem;line-height:1.4}.passage-body{margin:0;padding-left:1.25rem;display:flex;flex-direction:column;gap:12px;width:100%}.passage-line{background:none;border:none;padding:0;margin:0;text-align:left;font:inherit;color:inherit;font-size:1.125rem;line-height:1.7;cursor:pointer}.passage-line:hover{color:var(--accent)}.passage-gloss{margin:4px 0 0;color:var(--muted);font-size:.9375rem}.shelf-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px;width:100%}.shelf-item{display:flex;flex-direction:column;gap:2px;align-items:flex-start;width:100%;text-align:left;padding:10px 12px}.shelf-title{font-size:1.0625rem}.next-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px;width:100%}.next-item{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:12px 14px;font-size:1.0625rem}.next-glyph{font-size:1.125rem;width:1.5rem;text-align:center;flex:none}.trend{display:flex;flex-direction:column;gap:6px;width:100%;padding-top:12px;border-top:1px solid var(--border)}.chart{margin:4px 0 0;width:100%}.chart-bars{display:flex;align-items:flex-end;gap:2px;height:48px;width:100%}.chart-bar{flex:1;min-width:0;background:var(--accent);border-radius:2px 2px 0 0}.chart-bar.empty{background:var(--border)}.weak-sounds{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;color:var(--muted);font-size:.9375rem}.units{display:flex;flex-direction:column;gap:6px}.unit-list{display:flex;flex-direction:column;gap:8px}.unit{display:flex;flex-direction:column;align-items:flex-start;gap:4px;text-align:left;padding:12px 14px;border-radius:var(--radius-lg);white-space:normal}.unit-title{font-weight:600;overflow-wrap:anywhere}.unit-goal{font-size:.875rem;color:var(--muted);overflow-wrap:anywhere}.unit-phrases{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}.unit-phrase{display:flex;flex-direction:column;gap:1px;padding:4px 8px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-sunken)}.unit-phrase-text{font-size:.9375rem;overflow-wrap:anywhere}.unit-phrase-gloss{font-size:.75rem;color:var(--muted);overflow-wrap:anywhere}.unit:hover:not(:disabled) .unit-goal,.unit:hover:not(:disabled) .unit-phrase-gloss{color:inherit}.placement{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border:1px solid var(--accent-border);background:var(--accent-soft);border-radius:var(--radius)}.placement-status{margin:0;font-size:.875rem;flex:1 1 200px}.placement-status .meta{margin:0}.placement-actions{display:flex;gap:8px;flex-wrap:wrap}.placement.result{flex-direction:column;align-items:stretch}.placement-level{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}.placement-level-value{font-size:1.75rem;font-weight:700;color:var(--accent);font-variant-numeric:tabular-nums;line-height:1}.placement-evidence{margin:0;flex:1 1 240px;font-size:.9375rem;overflow-wrap:anywhere}.toggle.standalone{margin-top:4px}.toggle input:disabled,.toggle:has(input:disabled){cursor:not-allowed;opacity:.6}.speaking{display:flex;flex-direction:column;gap:12px;align-items:flex-start}.speaking-sentence{margin:0;font-size:1.25rem;line-height:1.5;overflow-wrap:anywhere}.speaking-controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap}button.recording{background:var(--error);border-color:var(--error);color:#fff}button.recording:before{content:"";display:inline-block;width:9px;height:9px;margin-right:8px;border-radius:50%;background:currentColor;animation:pulse 1.4s ease-in-out infinite}@keyframes pulse{50%{opacity:.25}}@media(prefers-reduced-motion:reduce){button.recording:before{animation:none}}.score{display:flex;flex-direction:column;gap:14px;width:100%}.score-overall{display:flex;align-items:baseline;gap:10px}.score-value{font-size:2.5rem;font-weight:700;line-height:1;font-variant-numeric:tabular-nums}.score-parts{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.score-part{display:flex;flex-direction:column;gap:2px;padding:10px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-sunken)}.score-part-value{font-size:1.375rem;font-weight:600;font-variant-numeric:tabular-nums}.good{color:var(--accent)}.fair{color:var(--text)}.weak{color:var(--error)}.score-words ul{list-style:none;margin:4px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}.score-words li{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.score-heard{margin:0;font-size:.8125rem;color:var(--muted);overflow-wrap:anywhere}.score-heard .label{display:inline;margin:0}.bubble-reading,.starter-reading,.unit-phrase-reading,.speaking-reading{font-size:.8125rem;color:var(--muted);font-style:italic;overflow-wrap:anywhere}.bubble-reading{margin-top:4px}.bubble.tutor .bubble-reading{padding-top:4px;border-top:1px solid var(--border)}.speaking-reading{margin:-6px 0 0;font-size:.9375rem}.starter:hover:not(:disabled) .starter-reading,.unit:hover:not(:disabled) .unit-phrase-reading{color:inherit}.bubble.transcribing{opacity:.75}.bubble.transcribing .dots{letter-spacing:2px;animation:dots-pulse 1s ease-in-out infinite}@keyframes dots-pulse{0%,to{opacity:.35}50%{opacity:1}}.account .account-field{display:flex;flex-direction:column;gap:6px}.account .account-field select{padding:10px 12px;border-radius:10px;border:1px solid var(--border);background:var(--bg);color:var(--text);font:inherit;max-width:360px}.account-actions{display:flex;align-items:center;gap:12px}
