:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--bg:#fdfdfc;--surface:#fff;--ink:#2a2420;--muted:#6e6459;--line:#e5e2db;--accent:#b3261e;--accent-ink:#fff;--accent-soft:#f6e1da;--good:#2c6e36;--good-soft:#e0eedd;--warn:#8f5a00;--warn-soft:#f7ead0;--bad:#b3261e;--bad-soft:#f8e0dc;--gold:#c26a05;--heat-0:#eeebe5;--heat-1:#f0c4b4;--heat-2:#e08e78;--heat-3:#c7503f;--heat-4:#8f1f18;--nav-height:3.25rem;font-family:system-ui,-apple-system,PingFang SC,Noto Sans SC,Noto Sans CJK SC,Microsoft YaHei,sans-serif;line-height:1.5}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}:root:not([data-theme=light]){--bg:#0b0a09;--surface:#151412;--ink:#efe8dc;--muted:#a99e90;--line:#2d2a26;--accent:#ef7a6a;--accent-ink:#2a100c;--accent-soft:#46231d;--good:#84c98c;--good-soft:#233527;--warn:#e0ae5a;--warn-soft:#3a2e19;--bad:#f28b7d;--bad-soft:#472320;--gold:#e7a14a;--heat-0:#242220;--heat-1:#5a2b24;--heat-2:#8f3b30;--heat-3:#c9594a;--heat-4:#f39281}}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0b0a09;--surface:#151412;--ink:#efe8dc;--muted:#a99e90;--line:#2d2a26;--accent:#ef7a6a;--accent-ink:#2a100c;--accent-soft:#46231d;--good:#84c98c;--good-soft:#233527;--warn:#e0ae5a;--warn-soft:#3a2e19;--bad:#f28b7d;--bad-soft:#472320;--gold:#e7a14a;--heat-0:#242220;--heat-1:#5a2b24;--heat-2:#8f3b30;--heat-3:#c9594a;--heat-4:#f39281}*,:before,:after{box-sizing:border-box}body{background:var(--bg);min-height:100dvh;color:var(--ink);margin:0}main{width:min(44rem,100%);margin:0 auto;padding:1rem}h2,h3{line-height:1.25}h2{font-size:1.25rem}h3{font-size:1.0625rem}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button{font:inherit;min-height:2.5rem;color:var(--ink);background:var(--surface);border:1px solid var(--line);cursor:pointer;padding:.375rem 1rem;transition:background-color .12s,border-color .12s,transform 80ms}button:hover:not(:disabled){border-color:var(--muted)}button:active:not(:disabled){transform:translateY(1px)}button:disabled{cursor:default;opacity:.6}button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:600}button.primary:hover:not(:disabled){border-color:var(--accent);filter:brightness(1.08)}button.link{min-height:0;color:inherit;text-underline-offset:.15em;background:0 0;border:none;padding:0;font-size:.875rem;text-decoration:underline;transition:none}input,select,textarea{font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--line);padding:.5rem .625rem}input[type=checkbox]{accent-color:var(--accent)}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:-1px;border-color:#0000}progress{appearance:none;background:var(--line);border:none;width:100%;height:.5rem;display:block;overflow:hidden}progress::-webkit-progress-bar{background:var(--line)}progress::-webkit-progress-value{background:var(--accent);transition:width .2s}progress::-moz-progress-bar{background:var(--accent)}.topbar{z-index:2;padding:.5rem 1rem;padding-top:max(.5rem, env(safe-area-inset-top));background:color-mix(in srgb, var(--bg) 88%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);align-items:center;gap:1rem;display:flex;position:sticky;top:0}.brand{color:var(--accent);font-size:1.625rem;font-weight:700}.tabs{flex:1;justify-content:space-evenly;gap:.25rem;display:flex}.tabs button{color:var(--muted);background:0 0;border:none;align-items:center;gap:.375rem;padding:.25rem .625rem;display:flex}.tabs button:hover:not([aria-current=page]){color:var(--ink)}.tabs button[aria-current=page]{color:var(--accent);background:var(--accent-soft);font-weight:600}.tabs .glyph{font-size:1.125rem;line-height:1}.tabs .streak{font-variant-numeric:tabular-nums;opacity:.6;align-items:center;gap:.125rem;margin-left:.25rem;display:inline-flex}.tabs .streak.lit{opacity:1}.topbar-actions{gap:.125rem;margin-left:auto;display:flex}.icon-button{width:2.5rem;color:var(--muted);background:0 0;border-color:#0000;place-items:center;padding:0;font-size:1.25rem;display:grid}.icon-button:hover:not([aria-current=page]){color:var(--ink);border-color:#0000}.icon-button[aria-current=page]{color:var(--accent)}@media (width<=40rem){.app{flex-direction:column;display:flex;position:fixed;inset:0}.app>main{overscroll-behavior-y:contain;flex:1;min-height:0;overflow-y:auto}.topbar{-webkit-backdrop-filter:none;backdrop-filter:none;background:var(--bg);justify-content:space-between}.tabs{z-index:2;height:var(--nav-height);background:var(--surface);border-top:1px solid var(--line);justify-content:space-around;gap:0;padding:.25rem;position:fixed;inset:auto 0 0}.tabs button{background:0 0;flex:1;grid-template-columns:auto auto;place-content:center;place-items:center;gap:.125rem .25rem;padding:.125rem;font-size:.6875rem;display:grid}.tabs .glyph{grid-column:1/-1}.tabs .streak{margin-left:0}.tabs button[aria-current=page]{background:0 0}.tabs .glyph{font-size:1.375rem}.topbar+main{padding-bottom:calc(var(--nav-height) + 1rem)}.topbar+main .lookup{bottom:calc(var(--nav-height) + .5rem)}}.welcome{text-align:center;align-content:center;justify-items:center;min-height:100dvh;display:grid}.welcome h1{color:var(--accent);margin:0;font-size:5rem;line-height:1.1}.tagline{color:var(--muted);margin:.25rem 0 0}.auth{text-align:left;background:var(--surface);border:1px solid var(--line);gap:.75rem;width:min(22rem,100%);margin-top:1.5rem;padding:1.25rem;display:grid}.auth h2{text-align:center;margin:0}.auth label{gap:.25rem;font-size:.875rem;display:grid}.auth button.link{justify-self:center}.status{color:var(--muted);text-align:center;font-size:.875rem}.hint{color:var(--muted)}.error{color:var(--bad);margin:0;font-size:.875rem}.notice{background:var(--warn-soft);padding:.5rem .75rem;font-size:.875rem}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.sync{margin:1.5rem 0 .5rem;font-size:.75rem}.sync.offline,.sync.error{color:var(--warn)}.today,.progress,.settings,.reading,.passage{width:min(36rem,100%);margin:.5rem auto}.today-head h2{margin:0;font-size:1.5rem}.today-head p{margin:.125rem 0 .5rem}.streak-card{background:var(--surface);border:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem 1rem;margin:1rem 0;padding:.75rem 1rem;display:flex}.streak-card p{margin:0}.streak-card strong{font-size:1.25rem}.week{gap:.375rem;margin:0;padding:0;list-style:none;display:flex}.week li{color:var(--muted);justify-items:center;gap:.125rem;font-size:.6875rem;display:grid}.week .dot{background:var(--heat-0);place-items:center;width:1.5rem;height:1.5rem;font-size:.75rem;display:grid}.week .active .dot{background:var(--accent);color:var(--accent-ink)}.week .now{color:var(--ink);font-weight:700}.week .now:not(.active) .dot{box-shadow:inset 0 0 0 2px var(--accent)}.checklist{gap:.5rem;margin:0;padding:0;list-style:none;display:grid}.checklist button{text-align:left;grid-template-columns:auto 1fr auto;align-items:center;gap:.75rem;width:100%;padding:.75rem 1rem;display:grid}.checklist button.done{background:0 0}.checklist button:disabled{opacity:1}.checklist .check{border:2px solid var(--line);place-items:center;width:1.75rem;height:1.75rem;font-weight:700;display:grid}.checklist .done .check{background:var(--good);border-color:var(--good);color:var(--surface)}.checklist .label{font-weight:600;display:grid}.checklist .detail{color:var(--muted);font-size:.875rem;font-weight:400}.checklist .chevron{color:var(--muted);font-size:1.5rem;line-height:1}.flagged-study{width:100%;margin-top:.75rem}.stats{grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:.5rem;margin:0;display:grid}.stats div{background:var(--surface);border:1px solid var(--line);padding:.625rem .875rem}.stats dt{color:var(--muted);font-size:.8125rem}.stats dd{font-variant-numeric:tabular-nums;margin:0;font-size:1.5rem;font-weight:600}.progress h2{margin:1.75rem 0 .625rem}.calendar{grid-template-rows:repeat(7,auto);grid-auto-columns:1fr;grid-auto-flow:column;gap:3px;display:grid}.calendar button{aspect-ratio:1;background:var(--heat-0);border:none;min-height:0;padding:0;transition:none}.calendar button[aria-pressed=true]{outline:2px solid var(--ink);outline-offset:1px}.calendar .shade-1{background:var(--heat-1)}.calendar .shade-2{background:var(--heat-2)}.calendar .shade-3{background:var(--heat-3)}.calendar .shade-4{background:var(--heat-4)}.calendar-legend{color:var(--muted);justify-content:flex-end;align-items:center;gap:3px;margin:.375rem 0 0;font-size:.75rem;display:flex}.calendar-legend i{background:var(--heat-0);width:.75rem;height:.75rem}.calendar-legend i.shade-1{background:var(--heat-1)}.calendar-legend i.shade-2{background:var(--heat-2)}.calendar-legend i.shade-3{background:var(--heat-3)}.calendar-legend i.shade-4{background:var(--heat-4)}.calendar-legend span:first-child{margin-right:.25rem}.calendar-legend span:last-child{margin-left:.25rem}.calendar-detail{margin:.625rem 0 0;font-size:.875rem}.deck-list,.day-list{background:var(--surface);border:1px solid var(--line);margin:0;padding:0;list-style:none}.deck-list li,.day-list li{padding:.625rem .875rem}.deck-list li+li,.day-list li+li{border-top:1px solid var(--line)}.deck-list li{grid-template-columns:4.5rem 1fr auto;align-items:center;gap:.125rem .75rem;display:grid}.deck-name{font-weight:600}.deck-count{color:var(--muted);font-variant-numeric:tabular-nums;font-size:.875rem}.readiness-score{text-align:right;min-width:2.75rem;color:var(--ink);font-size:1rem;font-weight:600}.readiness-note{margin:.5rem 0 0;font-size:.8125rem}.deck-detail{grid-column:2/-1;font-size:.8125rem}.day-list li{gap:.125rem;display:grid}.day-date{font-weight:600}.day-list .hint{font-size:.875rem}.settings h2{margin:0 0 .75rem;font-size:1.5rem}.settings fieldset{background:var(--surface);border:1px solid var(--line);gap:.625rem;margin:0 0 .75rem;padding:2.5rem 1rem .875rem;display:grid;position:relative}.settings legend{padding:0;font-weight:600;position:absolute;top:.625rem;left:1rem}.settings .hint{margin:0;font-size:.875rem}.settings .inline{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.25rem 1rem;display:flex}.settings .inline input{width:5rem}.settings .inline input[type=time]{width:8rem}.settings .speak-bar{margin:0}.settings select{max-width:100%}.level-picker{flex-wrap:wrap;gap:.375rem;display:flex}.level-picker button{color:var(--muted);padding:.25rem .75rem}.level-picker button[aria-pressed=true]{color:var(--accent);background:var(--accent-soft);border-color:var(--accent);font-weight:600}.account{overflow-wrap:anywhere;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;margin:0;display:flex}.session{width:min(26rem,100%);padding-top:env(safe-area-inset-top);margin:0 auto}.session-bar{color:var(--muted);justify-content:space-between;align-items:baseline;margin:.25rem 0 .5rem;font-size:.875rem;display:flex}.session-progress{height:.375rem;margin-bottom:1rem}.card{text-align:center;background:var(--surface);border:1px solid var(--line);gap:.75rem;padding:1.25rem;display:grid}.card p{margin:0}.card button[type=submit]{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);min-height:2.75rem;font-weight:600}.card-word{font-size:3.5rem;line-height:1.2}.card input{text-align:center;font-size:1.25rem}.badges{justify-content:center;gap:.25rem;min-height:1.25rem;display:flex}.badge{background:var(--good-soft);color:var(--good);justify-self:center;padding:0 .5rem;font-size:.75rem}.badge.flagged,.badge.major{background:var(--bad-soft);color:var(--bad)}.badge.minor{background:var(--warn-soft);color:var(--warn)}.card .feedback{padding:.625rem .75rem}.card .feedback.correct{background:var(--good-soft)}.card .feedback.tone{background:var(--warn-soft)}.card .feedback.wrong{background:var(--bad-soft)}.feedback.correct strong{color:var(--good)}.feedback.tone strong{color:var(--warn)}.feedback.wrong strong{color:var(--bad)}.feedback .miss{-webkit-text-decoration:underline wavy var(--bad);text-decoration:underline wavy var(--bad)}.feedback .hint{margin:.25rem 0 0}.feedback .rating{color:var(--muted);margin:.25rem 0 0;font-size:.875rem}.session-done{padding-block:2rem}.prompt .blank{color:var(--gold)}.handwriting{justify-items:center;gap:.5rem;display:grid}.writing-grid{border:1px solid color-mix(in srgb, currentColor 35%, transparent);background:linear-gradient(to right, transparent calc(50% - .5px), color-mix(in srgb, currentColor 15%, transparent) calc(50% - .5px), color-mix(in srgb, currentColor 15%, transparent) calc(50% + .5px), transparent calc(50% + .5px)), linear-gradient(to bottom, transparent calc(50% - .5px), color-mix(in srgb, currentColor 15%, transparent) calc(50% - .5px), color-mix(in srgb, currentColor 15%, transparent) calc(50% + .5px), transparent calc(50% + .5px));touch-action:none;-webkit-user-select:none;user-select:none}.handwriting-actions{gap:1.5rem;display:flex}.credit{color:var(--muted);margin:0;font-size:.75rem}.credit a{color:inherit}.passage-list{gap:.5rem;margin:.5rem 0;padding:0;list-style:none;display:grid}.passage-list button{text-align:left;gap:.125rem;width:100%;padding:.625rem .875rem;display:grid}.passage-list .title{font-size:1.25rem}.passage-list .hint{font-size:.875rem}.passage-item{grid-template-columns:1fr auto}.passage-item>.hint{grid-column:1/-1}.passage-item .completion{font-variant-numeric:tabular-nums;align-self:center;font-weight:600}.grammar-list{gap:1.5rem;margin:1rem 0;padding:0;list-style:none;display:grid}.grammar-list h3{margin:0;font-size:1.125rem}.grammar-list p{margin:.25rem 0}.reading h2{margin:1.5rem 0 0;font-size:1.125rem}.reading h2:first-child{margin-top:0}.passage h2{margin:0;font-size:1.5rem}.passage h2+.hint{margin-top:.125rem}.passage h3{margin-top:2rem}.passage-text{font-size:1.375rem;line-height:1.9}.passage-text .token{min-height:0;color:inherit;cursor:pointer;background:0 0;border:none;margin:0;padding:0;transition:none}.passage-text .token:hover{background:color-mix(in srgb, currentColor 8%, transparent)}.passage-text .token:active{transform:none}.passage-text .token[aria-pressed=true]{background:color-mix(in srgb, var(--gold) 25%, transparent)}button.speak{vertical-align:middle;border-color:var(--line);background:0 0;min-height:0;margin:0 .375rem 0 0;padding:.3125rem .4375rem;font-size:1rem;line-height:1}button.speak[aria-pressed=true]{background:color-mix(in srgb, var(--gold) 20%, transparent)}.card-word button.speak{margin:0 0 0 .5rem}.speak-bar{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.lookup{z-index:1;border:1px solid var(--line);background:var(--surface);gap:.5rem;padding:.625rem 2rem .625rem .875rem;display:grid;position:sticky;bottom:.5rem}.lookup p{margin:0}.lookup .close{position:absolute;top:.5rem;right:.75rem}.lookup-word{font-size:1.5rem}.lookup-status{font-size:.875rem}.lookup-status button:not(.link){min-height:0;padding:.125rem .75rem}.grammar p{margin:.125rem 0}.grammar q{margin-right:.5rem}.question-status{color:var(--muted);margin:0 0 .25rem;font-size:.8125rem}.question-status.right{color:var(--good)}.questions{gap:1.25rem;padding-left:1.25rem;display:grid}.question p{margin:.25rem 0}.options{flex-wrap:wrap;gap:.5rem;margin:.5rem 0;display:flex}.options button{padding:.25rem .875rem;font-size:1.125rem}.options button.right,.cloze-sentence .blank.right{outline:2px solid var(--good)}.options button.wrong,.cloze-sentence .blank.wrong{outline:2px solid var(--bad)}.cloze-sentence{font-size:1.25rem}.cloze-sentence .blank{color:var(--gold);padding:0 .25rem}.mode-switch{gap:.25rem;margin:.5rem 0;display:flex}.mode-switch button{min-height:2rem;color:var(--muted);padding:.125rem .875rem}.mode-switch button[aria-pressed=true]{color:var(--accent);background:var(--accent-soft);border-color:var(--accent)}.cloze-keyboard{gap:.5rem;display:flex}.cloze-keyboard input{width:8rem;padding:.25rem .5rem;font-size:1.25rem}.cloze-handwriting{display:grid}.listen-bar{margin:1rem 0 .25rem}.listen-bar button.speak{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);padding:.625rem 1.5rem;font-size:1.25rem}.transcript{margin:1.5rem 0 1rem}.translations .notice{margin:.5rem 0}.translation-list{gap:1.5rem;padding-left:1.25rem;display:grid}.exercise{gap:.5rem;display:grid}.exercise p{margin:0}.exercise .source{font-size:1.25rem;line-height:1.8}.exercise textarea{width:100%}.exercise-actions{align-items:baseline;gap:1rem;display:flex}.exercise mark{background:var(--bad-soft);color:inherit}.grading{gap:.5rem;display:grid}.your-translation{border-left:3px solid var(--line);padding:.5rem}.scores{gap:.25rem;margin:0;display:grid}.scores div{grid-template-columns:9rem 1fr;gap:.5rem;display:grid}.scores dd{margin:0}.scores .score{font-weight:700}.translation-errors{gap:.5rem;margin:0;padding-left:1.25rem;display:grid}@media (prefers-reduced-motion:reduce){*{transition:none!important}}
