:root{--bg:#f6f7f9;--surface:#fff;--text:#1a1d21;--muted:#6b7280;--border:#d9dde3;--accent:#1f6feb;--error:#b42318;--ok:#1a7f37;--warn:#9a6700;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:16px;line-height:1.5}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}:root:not([data-theme=light]){--bg:#14171a;--surface:#1d2126;--text:#e8eaed;--muted:#9aa3ad;--border:#333a42;--accent:#59a0ff;--error:#ff8a80;--ok:#4ade80;--warn:#fbbf24}}:root[data-theme=dark]{--bg:#14171a;--surface:#1d2126;--text:#e8eaed;--muted:#9aa3ad;--border:#333a42;--accent:#59a0ff;--error:#ff8a80;--ok:#4ade80;--warn:#fbbf24}:root[data-font=large]{font-size:18px}:root[data-font=larger]{font-size:20px}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);margin:0}.app{flex-direction:column;min-height:100dvh;display:flex}header{border-bottom:1px solid var(--border);background:var(--surface);align-items:center;gap:.75rem;padding:.75rem 1rem;display:flex}header .muted{margin-left:auto;font-size:.875rem}.centered{flex:1;justify-content:center;align-items:center;padding:1rem;display:flex}.card{border:1px solid var(--border);background:var(--surface);border-radius:.75rem;flex-direction:column;gap:.875rem;width:100%;max-width:26rem;padding:1.5rem;display:flex}h1,h2{margin:0;font-size:1.375rem}.muted{color:var(--muted);margin:0;font-size:.9375rem}.error{color:var(--error);margin:0;font-size:.9375rem}label{flex-direction:column;gap:.375rem;font-size:.875rem;display:flex}input,textarea{border:1px solid var(--border);background:var(--bg);color:var(--text);border-radius:.5rem;padding:.75rem;font-family:inherit;font-size:1rem}input:focus-visible,textarea:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:.5rem;min-height:2.75rem;padding:.625rem 1rem;font-family:inherit;font-size:1rem;font-weight:500}button:disabled{opacity:.6;cursor:default}.tabs{gap:.375rem;display:flex}button.tab{border:1px solid var(--border);background:var(--bg);color:var(--muted);flex:1;font-weight:400}button.tab.active{border-color:var(--accent);background:var(--surface);color:var(--text);font-weight:500}button.link{min-height:auto;color:var(--accent);background:0 0;padding:.25rem;font-weight:400}button.link.danger{color:var(--error);margin-left:auto}.home,.train{flex-direction:column;flex:1;align-items:center;gap:1rem;padding:1rem;display:flex}.card.wide{max-width:44rem}.row{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.small{font-size:.8125rem}.badge{border:1px solid var(--border);border-radius:999px;padding:.25rem .625rem;font-size:.875rem;font-weight:600}.badge.passed{border-color:var(--ok);color:var(--ok)}.topics{flex-direction:column;gap:.25rem;margin:0;padding:0;list-style:none;display:flex}button.topic{border:1px solid var(--border);background:var(--bg);width:100%;color:var(--text);text-align:left;justify-content:space-between;align-items:center;gap:.75rem;padding:.75rem;font-weight:400;display:flex}button.topic .title{flex-direction:column;gap:.125rem;display:flex}button.topic .score{font-variant-numeric:tabular-nums;font-weight:600}.instruction{margin:0;font-weight:500}.lead-in{background:var(--bg);border-radius:.5rem;margin:0;padding:.625rem .75rem;font-size:.9375rem}.tag{background:var(--accent);color:#fff;border-radius:.25rem;padding:.0625rem .375rem;font-size:.75rem;font-weight:600;display:inline-block}.gap-text{margin:0;line-height:2.2}.dialogue p{margin:0 0 .625rem;line-height:2.2}.dialogue .speaker{font-weight:600}.gap-input{border:1px solid var(--border);border-bottom:2px solid var(--accent);background:var(--surface);width:7rem;color:var(--text);border-radius:.375rem;padding:.25rem .5rem;font-family:inherit;font-size:1rem}.gap-input.wide{width:100%;margin-top:.25rem}.inflect{white-space:nowrap}.inflect .prompt{color:var(--muted);margin-left:.25rem;font-size:.875rem}.choices{vertical-align:middle;flex-wrap:wrap;gap:.25rem;display:inline-flex}button.choice{border:1px solid var(--border);background:var(--surface);min-height:2rem;color:var(--text);padding:.25rem .5rem;font-size:.9375rem;font-weight:400}button.choice.picked{border-color:var(--accent);background:var(--accent);color:#fff}.bank{flex-wrap:wrap;gap:.375rem;display:flex}.bank .word{border:1px solid var(--border);background:var(--bg);border-radius:.375rem;padding:.25rem .625rem}.bank .word.used{opacity:.45;text-decoration:line-through}button.chip{border:1px solid var(--border);background:var(--surface);min-height:2.25rem;color:var(--text);border-radius:.5rem;padding:.375rem .75rem;font-size:1rem;font-weight:400}button.chip.held{border-color:var(--accent);background:var(--accent);color:#fff}button.chip.spent{opacity:.4;text-decoration:line-through}.hint{min-height:1.25rem;margin:0}button.slot{border:1px solid var(--border);border-bottom:2px solid var(--accent);background:var(--surface);min-width:5.5rem;min-height:2rem;color:var(--text);vertical-align:baseline;border-radius:.375rem;padding:.125rem .5rem;font-size:1rem;font-weight:400}button.slot .placeholder{color:var(--muted)}.gap-wrap{align-items:baseline;gap:.25rem;display:inline-flex}.gap-wrap .fix{color:var(--ok);white-space:nowrap;font-weight:600}button.slot.filled{font-weight:500}button.slot.correct{border-color:var(--ok);border-bottom-color:var(--ok);color:var(--ok)}button.slot.wrong,button.slot.blank{border-color:var(--error);border-bottom-color:var(--error);color:var(--error)}button.slot.missing_diacritics{border-color:var(--warn);border-bottom-color:var(--warn);color:var(--warn)}.corrections{flex-direction:column;gap:.25rem;margin:0;padding:0;list-style:none;display:flex}.corrections li{align-items:baseline;gap:.5rem;font-size:.9375rem;display:flex}.corrections .n{color:var(--muted);min-width:1.25rem}.corrections .given{color:var(--error);text-decoration:line-through}.corrections .expected{color:var(--ok);font-weight:500}.items{flex-direction:column;gap:1rem;margin:0;padding-left:1.25rem;display:flex}.items .source{margin:0}.items .frame{margin:.25rem 0 0;line-height:2.2}.items .cue{margin:.25rem 0}.gap-input.correct{border-color:var(--ok)}.gap-input.wrong{border-color:var(--error)}.gap-input.missing_diacritics{border-color:var(--warn)}button.choice.picked.correct{border-color:var(--ok);background:var(--ok);color:#fff}button.choice.picked.wrong,button.choice.picked.blank{border-color:var(--error);background:var(--error);color:#fff}button.choice.picked.missing_diacritics{border-color:var(--warn);background:var(--warn);color:#fff}button.choice.answer:not(.picked){border-color:var(--ok);color:var(--ok);border-style:dashed;font-weight:600}.sticky-bar{z-index:10;width:min(100%,44rem);padding:.75rem;padding-bottom:calc(.75rem + env(safe-area-inset-bottom));border-top:1px solid var(--border);background:var(--surface);flex-direction:column;gap:.5rem;display:flex;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.train.answering{padding-bottom:9rem}.sticky-bar .actions{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.sticky-bar .actions button{flex:1}.result{border:1px solid var(--border);background:var(--surface);border-radius:.75rem;flex-direction:column;gap:.75rem;width:100%;max-width:44rem;padding:1rem;display:flex}.verdict{margin:0;font-size:1.125rem}.verdict.passed strong{color:var(--ok)}.verdict.review{color:var(--muted);font-size:.9375rem}.clock{font-variant-numeric:tabular-nums;font-size:1.125rem;font-weight:600}.exam-tasks{flex-wrap:wrap;gap:.375rem;display:flex}.exam-task{border:1px solid var(--border);background:var(--surface);min-width:2.75rem;color:var(--text);cursor:pointer;border-radius:6px;padding:.375rem .5rem;font-weight:500}.exam-task.done{border-color:var(--ok);color:var(--ok)}.exam-task.current{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.readiness{flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.readiness li{border-left:3px solid var(--border);background:var(--bg);border-radius:4px;grid-template-columns:1fr auto auto;align-items:baseline;gap:.25rem .75rem;padding:.5rem .625rem;display:grid}.readiness li.ready{border-left-color:var(--ok)}.readiness li.borderline{border-left-color:var(--warn)}.readiness li.failing{border-left-color:var(--error)}.readiness li.unknown{border-left-color:var(--border);color:var(--muted)}.readiness .name{font-weight:500}.readiness .percent{font-variant-numeric:tabular-nums;font-weight:600}.readiness .standing{color:var(--muted);font-size:.8125rem}.readiness .note{grid-column:1/-1}.sittings{flex-direction:column;gap:.375rem;margin:0;padding:0;list-style:none;display:flex}.sittings li{border-left:3px solid var(--border);background:var(--bg);border-radius:4px;grid-template-columns:1fr auto;align-items:baseline;gap:.125rem .75rem;padding:.5rem .625rem;display:grid}.sittings li.passed{border-left-color:var(--ok)}.sittings li.failed{border-left-color:var(--error)}.sittings .label{font-weight:500}.sittings .percent{font-variant-numeric:tabular-nums;font-weight:600}.sittings .muted{grid-column:1/-1}.traps{border:1px solid var(--border);border-left:3px solid var(--warn);background:var(--surface);border-radius:6px;flex-direction:column;gap:.75rem;padding:.75rem .875rem;display:flex}.traps h3{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:0;font-size:.8125rem}.trap{flex-direction:column;gap:.25rem;display:flex}.trap .said{margin:0;font-weight:500}.trap .where{color:var(--muted);font-variant-numeric:tabular-nums;font-weight:400}.trap .why{margin:0;font-size:.9375rem}.breakdown{flex-direction:column;gap:.25rem;margin:0;padding:0;list-style:none;display:flex}.breakdown li{border-left:3px solid var(--border);background:var(--bg);border-radius:.25rem;grid-template-columns:1.5rem minmax(0,1fr) auto;align-items:baseline;gap:.5rem;padding:.375rem .5rem;font-size:.9375rem;display:grid}.breakdown li.correct{border-left-color:var(--ok)}.breakdown li.wrong,.breakdown li.blank{border-left-color:var(--error)}.breakdown li.missing_diacritics{border-left-color:var(--warn)}.breakdown li.needs_review{border-left-color:var(--accent)}.breakdown .n{color:var(--muted);font-variant-numeric:tabular-nums}.breakdown .given{overflow-wrap:anywhere;font-weight:500}.breakdown .none{color:var(--muted);font-weight:400}.breakdown .label{color:var(--muted);font-size:.8125rem}.breakdown .expected{color:var(--ok);grid-column:2/-1}.result .actions{gap:.5rem;display:flex}.result .actions button{flex:1}button.secondary,a.button.secondary{border:1px solid var(--border);background:var(--surface);color:var(--text)}.markdown{font-size:.9375rem}.markdown h3{margin:1rem 0 .375rem;font-size:1.0625rem}.markdown h4{color:var(--muted);margin:.875rem 0 .25rem;font-size:.9375rem}.markdown p{margin:.5rem 0}.markdown ul{margin:.5rem 0;padding-left:1.25rem}.markdown code{background:var(--bg);border-radius:.25rem;padding:.0625rem .25rem;font-size:.875rem}.table-wrap{margin:.5rem 0;overflow-x:auto}.markdown table{border-collapse:collapse;width:100%;font-size:.875rem}.markdown th,.markdown td{border:1px solid var(--border);text-align:left;vertical-align:top;padding:.375rem .5rem}.markdown th{background:var(--bg)}.add-word{gap:.5rem;display:flex}.add-word input{border:1px solid var(--border);background:var(--surface);min-width:0;color:var(--text);font:inherit;border-radius:.5rem;flex:1;padding:.5rem .625rem}.words{flex-direction:column;gap:.25rem;margin:0;padding:0;list-style:none;display:flex}.words li{background:var(--bg);border-radius:.5rem;align-items:baseline;gap:.5rem;padding:.5rem;display:flex}.words .lemma{font-weight:500}.words .pos{margin-left:0}.words .known-toggle,.words .remove{margin-left:auto}.words .known-toggle~.remove{margin-left:0}.words .remove{font-size:1.125rem;line-height:1}.words .known-toggle{white-space:nowrap;font-size:.8125rem}.undo{border-top:1px solid var(--border);margin-top:1rem;padding-top:.75rem}.undo>.link{font-size:.875rem}.undo .words{margin-top:.5rem}.words .sentence{overflow-wrap:anywhere;flex-basis:100%;order:1;font-style:italic}.functional-list{word-spacing:.125rem;margin:.5rem 0 .75rem;line-height:1.6}.words li.pending{flex-direction:column;align-items:stretch;gap:.375rem}.words .met{font-weight:500}.words.phrases li{align-items:center}.words .order{text-align:right;font-variant-numeric:tabular-nums;min-width:2.5em}.words .phrase-text{flex-direction:column;flex:1;gap:.125rem;min-width:0;display:flex}.words .stage{white-space:nowrap}.words .stage.due{color:var(--accent);font-weight:500}.words .phrase-progress{white-space:nowrap;align-items:baseline;gap:.375rem;display:inline-flex}.words.phrases li{flex-wrap:wrap}.words .edit-toggle{font-size:1rem;line-height:1}.words li.hidden-phrase .phrase-text{opacity:.55}.phrase-editor{flex-direction:column;flex-basis:100%;gap:.5rem;margin-top:.25rem;display:flex}.phrase-editor textarea{box-sizing:border-box;resize:vertical;width:100%}.phrase-editor .check-links{margin:0}.word-filter{flex-wrap:wrap;align-items:center;gap:.5rem;margin:.5rem 0 .75rem;display:flex}.today-plan{grid-template-columns:1fr 1fr;gap:.5rem;margin:0 0 .75rem;display:grid}.today-plan .stat{border:1px solid var(--border);border-radius:8px;flex-direction:column;gap:.125rem;padding:.5rem .75rem;display:flex}.today-plan .stat strong{font-size:1.5rem;line-height:1.2}.today-plan .stat.due{border-color:var(--accent)}.words .candidates{flex-wrap:wrap;align-items:center;gap:.375rem;display:flex}.shelf{flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.book{border:1px solid var(--border);background:var(--bg);border-radius:.5rem;align-items:center;gap:.75rem;padding:.75rem;display:flex}.book .cover{background:color-mix(in srgb, var(--accent) 16%, transparent);width:2.75rem;height:3.75rem;color:var(--accent);object-fit:cover;border-radius:.25rem;flex:none;place-items:center;font-size:1.5rem;font-weight:600;display:grid;overflow:hidden}.book .about{flex-direction:column;flex:1;gap:.125rem;min-width:0;display:flex}.book .go{flex-direction:column;align-items:flex-end;gap:.375rem;display:flex}.book .score{font-variant-numeric:tabular-nums;font-weight:600}.book .failed{color:var(--error)}.book .bar{background:var(--border);border-radius:999px;height:.25rem;margin-top:.25rem;overflow:hidden}.book .bar .fill{background:var(--accent);height:100%;display:block}.book .remove{align-self:flex-start;margin-top:.25rem;font-size:.8125rem}.book .remove-confirm{color:var(--muted)}.parts{flex-direction:column;gap:.375rem;margin:1rem 0 0;padding:0;list-style:none;display:flex}.part{border:1px solid var(--border);background:var(--bg);border-radius:.5rem;align-items:center;gap:.75rem;padding:.625rem .75rem;display:flex}.part .about{flex-direction:column;flex:1;gap:.125rem;min-width:0;display:flex}.part .go{flex:none}.part .failed{color:var(--error)}.part .bar{background:var(--border);border-radius:999px;height:.25rem;margin-top:.25rem;overflow:hidden}.part .bar .fill{background:var(--accent);height:100%;display:block}.gate-words{flex-direction:column;gap:.375rem;margin:.75rem 0 1rem;padding:0;list-style:none;display:flex}.gate-word{border:1px solid var(--border);background:var(--bg);border-radius:.5rem;grid-template-columns:1fr auto;gap:.25rem .75rem;padding:.5rem .75rem;display:grid}.gate-word .about{flex-direction:column;gap:.125rem;min-width:0;display:flex}.gate-word .mark{white-space:nowrap;flex:none;align-self:start}.gate-word.learning{border-color:var(--accent)}.gate-word .mark.taken{border-color:var(--accent);color:var(--accent)}.gate-word .examples{color:var(--muted);flex-direction:column;grid-column:1/-1;gap:.125rem;margin:.125rem 0 0;padding:0;font-size:.875rem;list-style:none;display:flex}.gate-word .examples label{flex-direction:row;align-items:baseline;gap:.375rem;display:flex}.gate-word .excerpt mark{background:color-mix(in srgb, var(--accent) 22%, transparent);color:inherit}.gate-actions{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem}.upload{margin-top:1rem}.upload label.button{border:1px solid var(--border);cursor:pointer;border-radius:.5rem;padding:.5rem .875rem;font-size:.9375rem;display:inline-block}.upload label.button:hover{border-color:var(--accent);color:var(--accent)}.upload input[type=file]{display:none}.preview .language{border:none;flex-direction:column;gap:.25rem;margin:.75rem 0;padding:0;display:flex}.preview .language label{flex-direction:row;align-items:center;gap:.375rem;font-weight:400;display:flex}.split{flex-direction:column;gap:.5rem;margin:.75rem 0 0;padding:0;list-style:none;display:flex}.split li{border:1px solid var(--border);border-radius:.5rem;flex-direction:column;gap:.25rem;padding:.625rem .75rem;display:flex}.split .head{flex-wrap:wrap;align-items:baseline;gap:.5rem;display:flex}.split .excerpt{overflow-wrap:anywhere}.split .actions{flex-wrap:wrap;justify-content:flex-start;gap:.75rem;margin-top:.25rem;display:flex}.split .actions .link{flex:none;font-size:.8125rem}.split li.skipped{opacity:.55}@media (width<=30rem){.book{flex-wrap:wrap}.book .go{flex-direction:row;justify-content:space-between;align-items:center;width:100%}.part{flex-wrap:wrap}.part .go,.part .go button{width:100%}}.reading .prose{margin:0 0 .875rem;font-size:1.0625rem;line-height:1.75}.reading-sheet.paged{column-fill:auto;height:clamp(16rem,100dvh - 23rem,46rem);overflow:hidden}.reading-sheet.paged .prose{margin:0 0 .875rem}@media (width<=40rem){.reading-sheet.paged{height:clamp(14rem,100dvh - 28rem,46rem)}}.reading .chunk{white-space:nowrap}.reading-actions{margin-top:1.25rem}.reader-head{flex-direction:column;align-items:flex-start;gap:.25rem;margin-bottom:1rem;display:flex}.reader-head h2{margin:0;font-size:1.25rem}.reader-head h2 .muted{font-weight:400}.paragraph-play{width:1.25rem;height:1.25rem;min-height:0;color:var(--muted);vertical-align:.1em;opacity:0;cursor:pointer;background:0 0;border:0;border-radius:999px;place-items:center;margin:0 .375rem 0 -.125rem;padding:0;font-size:.625rem;line-height:1;transition:opacity .12s;display:inline-grid}.reading-paragraph:hover .paragraph-play,.paragraph-play:focus-visible{opacity:1}.paragraph-play:hover{background:color-mix(in srgb, var(--accent) 16%, transparent);color:var(--accent)}@media (hover:none){.paragraph-play{opacity:.45}}.page-turn{grid-template-columns:auto 1fr auto;align-items:center;gap:.75rem;margin-top:1rem;display:grid}.page-where{justify-items:center;gap:.25rem;display:grid}.page-where input{width:100%}.reading button.icon{border-radius:999px;min-width:2.75rem;height:2.75rem;padding:0;font-size:1.375rem;line-height:1}.player-bar{z-index:5;padding:.625rem 1.5rem calc(.625rem + env(safe-area-inset-bottom));border-top:1px solid var(--border);border-radius:0 0 var(--radius,12px) var(--radius,12px);background:color-mix(in srgb, var(--surface) 92%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);gap:.25rem;margin:1rem -1.5rem -1.5rem;display:grid;position:sticky;bottom:0}.player-bar p{text-align:center;margin:0}.player-controls{flex-wrap:wrap;justify-content:center;align-items:center;gap:.5rem;display:flex}.player-controls .play{border-radius:999px;width:3.25rem;height:3.25rem;padding:0;font-size:1.125rem}.player-controls .speed{align-items:center;gap:.125rem;display:inline-flex}.player-controls .speed-value{font-variant-numeric:tabular-nums;min-width:3.75rem}.reading .sentence.speaking{background:color-mix(in srgb, var(--accent) 14%, transparent);border-radius:.25rem}.reading .sentence.speaking:has(.said){background:color-mix(in srgb, var(--accent) 9%, transparent)}.reading .said{background:color-mix(in srgb, var(--accent) 30%, transparent);border-radius:.125rem}.voice-settings{flex-direction:column;gap:.5rem;margin-bottom:.75rem;display:flex}.voice-settings .row{flex-wrap:wrap;justify-content:flex-start;gap:1rem}.voice-settings label{flex-direction:row;align-items:center;gap:.375rem;font-size:.9375rem;display:inline-flex}.voice-settings select{max-width:18rem}.voice-settings input{width:5rem}button.word{min-height:0;color:inherit;font:inherit;line-height:inherit;cursor:pointer;background:0 0;border:none;border-radius:.125rem;padding:0}.word.learning{-webkit-text-decoration:underline dotted color-mix(in srgb, var(--accent) 70%, transparent);text-decoration:underline dotted color-mix(in srgb, var(--accent) 70%, transparent);text-underline-offset:.2em;text-decoration-thickness:.1em}.mark-learning[aria-pressed=false] .word.learning{text-decoration:none}button.word:hover,button.word:focus-visible{background:color-mix(in srgb, var(--accent) 16%, transparent);outline:none}.popup-backdrop{z-index:20;padding:1rem;padding-bottom:calc(1rem + env(safe-area-inset-bottom));background:#00000073;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.popup{border:1px solid var(--border);background:var(--surface);border-radius:.75rem;flex-direction:column;gap:.625rem;width:min(100%,30rem);max-height:70vh;padding:1rem;display:flex;overflow-y:auto}@media (width>=40rem){.popup-backdrop{align-items:center}}.popup h2{margin:0;font-size:1.25rem}.senses{flex-direction:column;gap:.75rem;margin:0;padding:0;list-style:none;display:flex}.senses li{background:var(--bg);border-radius:.5rem;flex-direction:column;gap:.25rem;padding:.625rem;display:flex}.senses .lemma{font-weight:600}.senses .ipa{color:var(--muted);margin:0;font-size:.875rem}.senses .meaning{margin:0}.sense-actions{align-items:center;gap:.75rem;margin-top:.25rem;display:flex}.fragment{flex-direction:column;gap:.5rem;margin-top:.25rem;display:flex}.fragment-words{flex-wrap:wrap;gap:.375rem;display:flex}.fragment-words .chip{border:1px solid var(--border);min-height:2.25rem;color:inherit;font:inherit;background:0 0;border-radius:999px;padding:.25rem .625rem}.fragment-words .chip.picked{background:color-mix(in srgb, var(--accent) 22%, transparent);border-color:var(--accent)}.fragment-text{margin:0;font-style:italic}.sense-actions .source{color:var(--muted);font-size:.8125rem}.senses li.fits{border-left:3px solid var(--accent);background:color-mix(in srgb, var(--accent) 10%, var(--bg))}.senses .why{font-style:italic}.senses .form{margin:0;font-style:italic}.context{border-top:1px solid var(--border);flex-direction:column;gap:.25rem;margin-top:.75rem;padding-top:.75rem;display:flex}.context .meaning{margin:0;font-weight:500}.context button{align-self:flex-start}.translating-sentence{margin:0 0 .5rem;font-style:italic}.word-card{flex-direction:column;gap:.625rem;display:flex}.word-card h2{margin:0;font-size:1.375rem}.word-card .card-head{align-items:baseline}.word-card .card-tags{align-items:baseline;gap:.5rem;display:inline-flex}.word-card .ipa{color:var(--muted);margin:0;font-size:.875rem}.word-card .met-form{margin:0;font-style:italic}.word-card .meanings{flex-direction:column;gap:.125rem;margin:0;padding-left:1.125rem;display:flex}.word-card .meaning-single{margin:0}.word-card .note{flex-direction:column;gap:.375rem;display:flex}.word-card .note textarea{box-sizing:border-box;resize:vertical;width:100%}.word-card .note .sense-actions{margin-top:0}.word-card .forms>.link{font-size:.875rem}.word-card .form-section{margin-top:.5rem}.word-card .form-section>.muted{margin:0 0 .25rem}.word-card .form-section table{border-collapse:collapse;width:100%}.word-card .form-section th{width:45%;color:var(--muted);text-align:left;vertical-align:baseline;padding:.1875rem .5rem .1875rem 0;font-size:.8125rem;font-weight:400}.word-card .form-section td{vertical-align:baseline;padding:.1875rem 0}.word-card .card-phrases{margin-top:.25rem}.word-card .card-phrases li{align-items:baseline}.card-sub{margin:-.375rem 0 0}.card-section{border-top:1px solid var(--border);flex-direction:column;gap:.375rem;padding-top:.75rem;display:flex}.card-section>h3{color:var(--muted);letter-spacing:.04em;text-transform:uppercase;margin:0;font-size:.75rem;font-weight:600}.card-section>.sense-actions{margin-top:0}.card-section>button.link{text-align:left;align-self:flex-start}.card-foot{border-top:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:.75rem;padding-top:.75rem;display:flex}.card-foot .source{color:var(--muted);font-size:.8125rem}.readings{flex-direction:column;gap:.375rem;display:flex}.readings .why{margin:0;font-style:italic}.popup-bar{justify-content:flex-end}.phrase-card{flex-direction:column;gap:.75rem;display:flex}.phrase-card .card-head{align-items:flex-start;gap:.5rem}.phrase-card .heading-with-audio{align-items:flex-start}.phrase-card .sentence{margin:0;font-size:1.125rem;line-height:1.4}.phrase-card .note{flex-direction:column;gap:.375rem;display:flex}.phrase-card .note textarea{box-sizing:border-box;resize:vertical;width:100%}.phrase-card .note .sense-actions{margin-top:0}.phrase-card .targets{flex-direction:column;gap:.375rem;display:flex}.phrase-card .note .sense-actions{flex-wrap:wrap}.phrase-card .check-links{margin-left:auto}.phrase-card .candidate{border:1px solid var(--border);border-left:3px solid var(--warn);background:var(--surface);border-radius:6px;flex-direction:column;gap:.5rem;padding:.75rem .875rem;display:flex}.phrase-card .candidate p{margin:0}.phrase-card .candidate-title{font-weight:600}.phrase-card .sense-actions.wrap{flex-wrap:wrap}.phrase-card .candidate .fields{flex-direction:column;gap:.375rem;display:flex}.phrase-card .candidate .fields textarea{box-sizing:border-box;resize:vertical;flex:1;width:100%;min-width:0}.phrase-card .candidate .fields .row{align-items:flex-start}.phrase-card .stranger{color:var(--warn)}.phrase-card .lineage p,.phrase-card .lineage ul{margin:0}.phrase-card .lineage ul{padding-left:1.25rem}.phrase-card .lineage .link{text-align:left}.words .phrase-text{text-align:left;color:inherit;align-items:flex-start;text-decoration:none}.elsewhere{border-top:1px solid var(--border);padding-top:.75rem}.elsewhere>.link{font-size:.875rem}.elsewhere .met{flex-direction:column;gap:.625rem;margin:.5rem 0 0;padding:0;list-style:none;display:flex}.elsewhere .met li{flex-direction:column;align-items:flex-start;gap:.125rem;display:flex}.elsewhere .met .sentence{overflow-wrap:anywhere;margin:0}.elsewhere .met .link{font-size:.8125rem}.examples ul{flex-direction:column;gap:.375rem;margin:.25rem 0 0;padding-left:1rem;display:flex}.examples li{font-size:.875rem;line-height:1.45}.drill{gap:.75rem}.drill-prompt{margin:0;font-size:1.25rem;font-weight:500}.drill-verdict{flex-direction:column;gap:.25rem;display:flex}.drill-sentence{border-left:2px solid var(--border);color:var(--muted);margin:.25rem 0 0;padding-left:.75rem;line-height:1.5}.card .actions{gap:.5rem;display:flex}.card .actions button{flex:1}.drill-line{align-items:flex-start;gap:.5rem;display:flex}.drill-line>p{flex:1}button.speak{border:1px solid var(--border);background:var(--surface);min-width:2.75rem;color:var(--text);flex:none;justify-content:center;align-items:center;padding:.375rem;line-height:1;display:inline-flex}button.speak.failed{border-color:var(--error)}.record{flex-direction:column;align-items:center;gap:.25rem;display:flex}button.record-button{border-radius:50%;justify-content:center;align-items:center;width:4.5rem;height:4.5rem;padding:0;display:inline-flex;position:relative}button.record-button.live{background:var(--error);border-color:var(--error);color:#fff}button.record-button.live:before,button.record-button.live:after{content:"";border:2px solid var(--error);pointer-events:none;border-radius:50%;animation:1.6s ease-out infinite record-pulse;position:absolute;inset:0}button.record-button.live:after{animation-delay:.8s}button.record-button.busy{animation:1.2s ease-in-out infinite record-breathe}.record-state{min-height:1.25em}.regrade{margin-top:.75rem}.regrade p{margin:0 0 .375rem}@keyframes record-pulse{0%{opacity:.7;transform:scale(1)}to{opacity:0;transform:scale(1.8)}}@keyframes record-breathe{50%{opacity:.5}}@media (prefers-reduced-motion:reduce){button.record-button.live:before,button.record-button.live:after,button.record-button.busy{animation:none}}.heard{margin:0;line-height:1.5}.drill-prompt.quiet{color:var(--muted);font-size:1rem;font-weight:400}.drill-answer{margin:0;font-size:1.125rem;font-weight:500;line-height:1.45}.drill-ask{justify-content:center;padding:1.5rem 0 .5rem;display:flex}.drill-repeat{border-top:1px solid var(--border);text-align:center;flex-direction:column;align-items:center;gap:.5rem;padding-top:.75rem;display:flex}.drill-repeat p{margin:0}.drill-repeat .said{text-align:left;align-self:stretch}.said{border:1px solid var(--border);border-radius:8px;margin:0;padding:.5rem .75rem;line-height:1.5}.said p{margin:0}.said .small{color:var(--muted)}.said.passed{border-color:var(--ok)}.said.passed .small{color:var(--ok)}.said.almost{border-color:var(--warn)}.said.almost .small{color:var(--warn)}.said.failed{border-color:var(--error)}.said.failed .small{color:var(--error)}.grades{grid-template-columns:repeat(auto-fit,minmax(0,1fr));gap:.5rem;display:grid}button.grade{flex-direction:column;align-items:center;gap:.125rem;padding:.5rem .25rem;line-height:1.2;display:flex}button.grade .small{opacity:.8}.voice-verdict{margin:0;line-height:1.5}.voice-verdict.passed strong{color:var(--ok)}.voice-verdict.almost strong{color:var(--warn)}.voice-verdict.failed strong{color:var(--error)}.heading-with-audio{align-items:center;gap:.5rem;display:flex}.assembly{flex-direction:column;gap:.75rem;display:flex}.assembly-line{border:1px dashed var(--border);border-radius:.5rem;flex-wrap:wrap;align-items:center;gap:.375rem;min-height:3rem;margin:0;padding:.5rem;display:flex}.assembly-pool{flex-wrap:wrap;gap:.375rem;margin:0;display:flex}.token{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border);cursor:pointer;border-radius:.5rem;padding:.5rem .75rem;font-size:1rem;line-height:1.2}.token:disabled{cursor:default;opacity:.7}.token.picked{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.choice-list{flex-direction:column;gap:.5rem;display:flex}.option{width:100%;font:inherit;text-align:left;color:var(--text);background:var(--surface);border:1px solid var(--border);cursor:pointer;border-radius:.5rem;padding:.75rem;font-size:1rem;line-height:1.4}.option:disabled{cursor:default}.option.picked{border-color:var(--accent)}.option.right{border-color:var(--ok);box-shadow:inset 0 0 0 1px var(--ok)}.option.wrong{border-color:var(--error);box-shadow:inset 0 0 0 1px var(--error)}.option.dim{opacity:.55}mark.diff{color:inherit;text-underline-offset:3px;background:0 0;font-weight:600;text-decoration:underline;text-decoration-thickness:2px}.option.right mark.diff{-webkit-text-decoration-color:var(--ok);text-decoration-color:var(--ok)}.option.wrong mark.diff{-webkit-text-decoration-color:var(--error);text-decoration-color:var(--error)}.drill-card{gap:.75rem}.drill-topic{gap:.5rem}.drill-topic h2{margin:0}.drill-sentence{margin:0;font-size:1.25rem;line-height:1.6}.drill-sentence .gap{border-bottom:2px solid var(--accent);text-align:center;min-width:3em;display:inline-block}.drill-sentence .gap.filled{font-weight:600}.drill-verdict{margin:0;font-weight:600}.drill-verdict.ok{color:var(--ok)}.drill-table{border-collapse:collapse;font-size:.9375rem}.drill-table th{color:var(--muted);text-align:left;padding:.25rem 1rem .25rem .5rem;font-weight:400}.drill-table td{padding:.25rem .5rem}.drill-table tr.asked{box-shadow:inset 2px 0 0 var(--accent)}.drill-table tr.asked td{font-weight:600}.drill-mistakes{margin:0 0 .75rem;padding-left:1.25rem;line-height:1.7}.topic-sections{flex-direction:column;gap:.5rem;margin:.75rem 0;padding:0;list-style:none;display:flex}.topic-sections li{flex-wrap:wrap;justify-content:space-between;gap:.25rem .75rem;font-size:.9375rem;display:flex}.topic-sections .score{font-variant-numeric:tabular-nums;color:var(--muted)}.topic-head .now{color:var(--accent);font-size:.8125rem}.search{border:1px solid var(--border);background:var(--bg);width:100%;color:var(--text);font:inherit;border-radius:.5rem;margin-bottom:.75rem;padding:.625rem .75rem}.topic-card{padding-bottom:0}.topic-head{width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:.75rem;padding:0 0 .875rem;display:flex}.topic-head .title{flex-direction:column;gap:.125rem;display:flex}.topic-head .score{color:var(--muted);font-variant-numeric:tabular-nums;margin-left:auto}.topic-body{border-top:1px solid var(--border);padding-bottom:1rem}.setting{flex-direction:column;gap:.5rem;margin-top:.75rem;display:flex}.setting-label{color:var(--muted);font-size:.875rem}.choices{flex-wrap:wrap;gap:.375rem;display:flex}.choices .choice.on,.level-filter .choice.on{border-color:var(--accent);color:var(--accent);font-weight:600}.mistake{gap:.625rem}.mistake-context{background:var(--bg);border-radius:.5rem;margin:0;padding:.625rem .75rem;line-height:1.6}.mistake-context .blank{color:var(--accent);letter-spacing:.05em;font-weight:600}.mistake .given{color:var(--error);font-style:italic}.range{margin-bottom:.25rem}.chart{background:var(--bg);border-radius:.5rem;align-items:flex-end;gap:1px;height:5rem;margin:.5rem 0 .25rem;padding:.25rem;display:flex}.chart-day{flex:1 1 0;align-items:flex-end;height:100%;display:flex}.bar{border-radius:1px;width:100%;min-height:2px}.bar.good{background:var(--ok)}.bar.weak{background:var(--warn)}.bar.empty{background:var(--border);height:2px!important}.bar.plain{background:var(--accent)}.columns{background:var(--bg);border-radius:.5rem;align-items:stretch;gap:1px;height:5rem;margin:.5rem 0 .25rem;padding:.25rem;display:flex}.columns.labelled{height:7.5rem}.columns.staggered{height:8.5rem}.column{min-width:0;color:var(--muted);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:2px;flex-direction:column;flex:1 1 0;align-items:stretch;padding:0;display:flex}.column.on{background:var(--surface);outline:1px solid var(--accent)}.column .count,.column .date{text-align:center;white-space:nowrap;font-variant-numeric:tabular-nums;height:.9rem;font-size:.625rem;line-height:.9rem;position:relative}.column .count{color:var(--text)}.staggered .column .count{height:1.8rem}.staggered .column .count>span,.staggered .column .date{overflow:visible}.staggered .column .count>span{position:absolute;bottom:0;left:50%;transform:translate(-50%)}.staggered .column .count>span.raised{top:0;bottom:auto}.staggered .column .date{justify-content:center;width:100%;display:flex}.column .area{flex:1;align-items:flex-end;display:flex}.column .bar.empty{width:100%}.stack{flex-direction:column-reverse;gap:1px;width:100%;min-height:2px;display:flex}.stack .seg{border-radius:1px;flex-basis:0;min-height:1px}.seg.good{background:var(--ok)}.seg.weak{background:var(--warn)}.seg.plain{background:var(--accent)}.seg.pl_to_ru,.legend .swatch.pl_to_ru{background:color-mix(in srgb, var(--accent) 45%, transparent)}.seg.ru_to_pl,.legend .swatch.ru_to_pl{background:var(--accent)}.column-detail{min-height:1.25rem;margin:0}.legend{color:var(--muted);flex-wrap:wrap;gap:.25rem .75rem;margin:.5rem 0 0;padding:0;list-style:none;display:flex}.legend li{align-items:center;gap:.3rem;display:flex}.legend .swatch{border-radius:2px;width:.7rem;height:.7rem}.card h3{margin:.75rem 0 0;font-size:.9375rem;font-weight:500}.section-title{margin:.5rem 0 0;font-size:1.125rem}.counts{flex-direction:column;gap:.375rem;margin:.25rem 0 .75rem;padding:0;list-style:none;display:flex}.counts li{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:0 .75rem;display:flex}.counts strong{font-variant-numeric:tabular-nums}.books-read li{padding:.25rem 0}.meter{background:var(--border);border-radius:999px;flex-basis:100%;height:.25rem;overflow:hidden}.meter .fill{background:var(--accent);height:100%;display:block}.lesson{border-color:var(--accent)}.plan{flex-direction:column;gap:.375rem;margin:.5rem 0 0;padding:0;list-style:none;display:flex}.plan-item{border:1px solid var(--border);background:var(--bg);width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;border-radius:.5rem;align-items:center;gap:.75rem;padding:.75rem;display:flex}.plan-item>span:first-child{flex-direction:column;gap:.125rem;display:flex}.plan-item .badge{margin-left:auto}.history{flex-direction:column;gap:.25rem;margin:.5rem 0 0;padding:0;list-style:none;display:flex}.history li{background:var(--bg);border-radius:.5rem;align-items:baseline;gap:.625rem;padding:.5rem;display:flex}.history .when{color:var(--muted);flex:0 0 4.5rem;font-size:.8125rem}.history .what{flex:auto}.history .score{font-variant-numeric:tabular-nums;margin-left:auto}.history .score.passed{color:var(--ok)}.history .badge{margin-left:auto}a.button{background:var(--accent);color:#fff;text-align:center;border-radius:.5rem;min-height:2.75rem;padding:.625rem 1rem;font-size:1rem;font-weight:500;line-height:1.5rem;text-decoration:none;display:inline-block}.words li{flex-wrap:wrap}.words .note,.words .note-edit{flex:1 0 100%}.words .note{color:var(--muted);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;min-height:0;padding:.25rem 0;font-size:.8125rem}.words .note-edit{gap:.375rem;padding-top:.25rem;display:flex}.words .note-edit input{border:1px solid var(--border);background:var(--surface);min-width:0;color:var(--text);font:inherit;border-radius:.375rem;flex:auto;padding:.375rem .5rem;font-size:.875rem}.words .note-edit button{min-height:0;padding:.375rem .75rem;font-size:.875rem}.audio-player{flex-wrap:wrap;align-items:center;gap:.75rem;margin-bottom:1rem;display:flex}.audio-plays{color:var(--muted);font-size:.875rem}.items.matching .stem{margin-bottom:.5rem}.items.matching .letter{font-weight:600}.items.transposed .options{flex-wrap:wrap;gap:.5rem;display:flex}.items.transposed .option{min-width:2.5rem}.shell{min-height:100dvh;display:flex}.sidebar{border-right:1px solid var(--border);background:var(--surface);flex-direction:column;flex:0 0 15rem;align-self:flex-start;gap:1.5rem;height:100dvh;padding:1.25rem .875rem;display:flex;position:sticky;top:0;overflow-y:auto}.brand{align-items:center;gap:.625rem;padding:0 .5rem;display:flex}.brand-mark{background:var(--accent);color:#fff;border-radius:.5rem;place-items:center;width:2rem;height:2rem;font-weight:600;display:grid}.brand-name{letter-spacing:.01em;font-size:1.0625rem;font-weight:600}.sidebar nav{flex-direction:column;gap:.125rem;display:flex}.nav-item{width:100%;color:var(--text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:.5rem;align-items:center;gap:.625rem;padding:.625rem .75rem;font-size:.9375rem;display:flex}.nav-item:hover{background:var(--bg)}.nav-item.on{background:var(--bg);font-weight:600}.nav-item.on .nav-icon{color:var(--accent)}.nav-icon{text-align:center;width:1.25rem;color:var(--muted)}.nav-text{flex-direction:column;gap:.0625rem;min-width:0;display:flex}.nav-note{text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:.75rem;font-weight:400;overflow:hidden}.nav-item.on .nav-note{font-weight:400}.nav-item[data-group=reference]{border-top:1px solid var(--border);border-radius:0 0 .5rem .5rem;margin-top:.75rem;padding-top:1rem}.account{margin-top:auto;position:relative}.account-button{gap:.5rem}.avatar{background:var(--accent);color:#fff;border-radius:50%;flex:0 0 1.75rem;place-items:center;height:1.75rem;font-size:.8125rem;font-weight:600;display:grid}.account-email{text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:.875rem;overflow:hidden}.account-menu{border:1px solid var(--border);background:var(--surface);border-radius:.5rem;padding:.25rem;position:absolute;bottom:calc(100% + .375rem);left:0;right:0;box-shadow:0 8px 24px #0000002e}.account-menu button{width:100%;color:var(--text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:.375rem;padding:.5rem .625rem;font-size:.875rem}.account-menu button:hover{background:var(--bg)}.workspace{flex-direction:column;flex:1;min-width:0;display:flex}.topbar{border-bottom:1px solid var(--border);background:var(--surface);align-items:center;gap:.75rem;padding:.625rem .875rem;display:flex}.hamburger{color:var(--text);cursor:pointer;background:0 0;border:0;border-radius:.375rem;padding:.375rem .5rem;font-size:1.25rem;line-height:1}.topbar-title{font-weight:600}.content{flex-direction:column;flex:1;align-items:center;gap:1rem;padding:1.25rem 1rem 2.5rem;display:flex}.scrim{z-index:1;cursor:pointer;background:#0006;border:0;padding:0;position:fixed;inset:0}@media (width>=900px){.topbar{display:none}.content{padding:2rem 1.5rem 3rem}}@media (width<=899px){.sidebar{z-index:2;width:16rem;transition:transform .2s;position:fixed;inset:0 auto 0 0;transform:translate(-100%)}.drawer-open .sidebar{transform:none}}@media (prefers-reduced-motion:reduce){.sidebar{transition:none}}.content>.app{display:contents}.content>.app>header{display:none}.content>.app>main{flex-direction:column;align-items:center;gap:1rem;width:100%;display:flex}.level{border:1px solid var(--border);min-width:2.25em;color:var(--muted);text-align:center;border-radius:.25rem;padding:0 .375rem;font-size:.75rem;font-weight:600;line-height:1.5;display:inline-block}.level-filter{flex-wrap:wrap;gap:.375rem;display:flex}.level-filter .count{color:var(--muted);margin-left:.25rem;font-weight:400}.filter-result{color:var(--muted);margin:.75rem 0}.filter-result strong{color:var(--text);font-variant-numeric:tabular-nums}.card-activity-summary{flex-wrap:wrap;gap:1rem;margin:.75rem 0;display:flex}.card-activity-summary>div,.card-activity-summary>button{flex-direction:column;min-width:5rem;display:flex}.card-activity-summary>button{color:var(--text);text-align:left;cursor:pointer;background:0 0;border:0;padding:0}.card-activity-summary strong{font-variant-numeric:tabular-nums;font-size:1.5rem}.card-activity-summary span{color:var(--muted);font-size:.8rem}.card-details{border-top:1px solid var(--border);margin-top:1rem;padding-top:.5rem}.card-details ul{margin:0;padding:0;list-style:none}.card-details li{border-bottom:1px solid var(--border);flex-direction:column;gap:.15rem;padding:.5rem 0;display:flex}.card-details .link{text-align:left;align-self:flex-start}.activity-calendar{grid-template-columns:repeat(7,minmax(0,1fr));gap:.25rem;margin:.75rem 0;display:grid}.activity-weekday{text-align:center;color:var(--muted);font-size:.75rem}.activity-day{border:1px solid var(--border);background:var(--bg);min-height:2.5rem;color:var(--muted);cursor:pointer;border-radius:.35rem;flex-direction:column;justify-content:center;align-items:center;display:flex}.activity-day small{font-size:.65rem}.activity-day.active{background:color-mix(in srgb, var(--accent) 22%, var(--bg));color:var(--text)}.activity-day.on{outline:2px solid var(--accent)}.meter{background:var(--border);border-radius:999px;width:100%;height:.375rem;overflow:hidden}.meter>span{background:var(--accent);height:100%;display:block}.meter.full>span{background:var(--ok)}.plan-item .progress{flex-direction:column;flex:1;gap:.375rem;display:flex}.plan-item .progress .row{gap:.5rem}.drill-head{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.drill-head-end{align-items:center;gap:.75rem;display:inline-flex}.phrase-fix .fields{flex-direction:column;gap:.375rem;margin-bottom:.75rem;display:flex}.phrase-fix textarea{box-sizing:border-box;width:100%}.waking-notice{border:1px solid var(--border);background:var(--surface);max-width:calc(100% - 32px);color:var(--warn);z-index:50;border-radius:8px;padding:8px 14px;font-size:.9rem;position:fixed;bottom:16px;left:50%;transform:translate(-50%);box-shadow:0 2px 8px #00000026}
