:root{--bg:#f7f5f0;--surface:#fff;--surface-2:#efece4;--text:#1d1f24;--muted:#6a6f7a;--border:#ddd8cc;--primary:#2848a8;--primary-text:#fff;--good:#1f8a4c;--bad:#c0392b;--warn:#b7791f;--again:#c0392b;--hard:#b7791f;--goodb:#1f8a4c;--easy:#2867b2;--radius:14px;--tap:52px;--nav-h:64px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#14161b;--surface:#1d2027;--surface-2:#272b34;--text:#eceef2;--muted:#9aa1ad;--border:#343946;--primary:#6c8cff;--primary-text:#0b0d12;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--bg:#14161b;--surface:#1d2027;--surface-2:#272b34;--text:#eceef2;--muted:#9aa1ad;--border:#343946;--primary:#6c8cff;--primary-text:#0b0d12;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--text);margin:0}body{-webkit-tap-highlight-color:transparent;font:17px/1.45 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}#root{min-height:100dvh}.app{max-width:640px;padding:12px 14px calc(var(--nav-h) + 24px + env(safe-area-inset-bottom));margin:0 auto}h1{margin:8px 0 12px;font-size:1.5rem}h2{margin:20px 0 8px;font-size:1.15rem}a{color:var(--primary)}.muted{color:var(--muted)}.small{font-size:.85rem}.row{align-items:center;gap:10px;display:flex}.row.wrap{flex-wrap:wrap}.spread{justify-content:space-between}.grow{flex:1;min-width:0}.stack>*+*{margin-top:10px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px}.list{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.list>*+*{border-top:1px solid var(--border)}.item{min-height:var(--tap);color:inherit;align-items:center;gap:12px;padding:8px 14px;text-decoration:none;display:flex}button,.btn{font:inherit;min-height:var(--tap);border:1px solid var(--border);background:var(--surface-2);color:var(--text);cursor:pointer;touch-action:manipulation;border-radius:12px;justify-content:center;align-items:center;gap:8px;padding:0 18px;text-decoration:none;display:inline-flex}button:disabled{opacity:.5}.nowrap{white-space:nowrap}.primary{background:var(--primary);color:var(--primary-text);border-color:#0000;font-weight:600}.block{width:100%}.ghost{background:0 0;border-color:#0000}.icon{min-width:var(--tap);padding:0}.danger{color:var(--bad)}input[type=text],input[type=password],input[type=number],input:not([type]),textarea,select{font:inherit;width:100%;min-height:var(--tap);border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:12px;padding:10px 12px;font-size:18px}textarea{min-height:120px;font-family:ui-monospace,monospace;font-size:14px}label.field{display:block}label.field>span{color:var(--muted);margin-bottom:4px;font-size:.9rem;display:block}.check{border:2px solid var(--border);border-radius:9px;flex:none;place-items:center;width:30px;height:30px;display:grid}.check.on{background:var(--good);border-color:var(--good);color:#fff}.done-text{color:var(--muted);text-decoration:line-through}.pill{background:var(--surface-2);border-radius:999px;padding:2px 10px;font-size:.8rem;display:inline-block}.big-number{font-size:2.2rem;font-weight:700;line-height:1}.tabbar{height:calc(var(--nav-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:var(--surface);border-top:1px solid var(--border);z-index:10;justify-content:center;display:flex;position:fixed;bottom:0;left:0;right:0}.tabbar nav{width:100%;max-width:640px;display:flex}.tabbar a{color:var(--muted);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;font-size:.75rem;text-decoration:none;display:flex}.tabbar a .ico{font-size:1.35rem}.tabbar a.active{color:var(--primary);font-weight:600}.syncdot{border-radius:50%;width:10px;height:10px;display:inline-block}.weekdays{gap:6px;display:flex}.weekdays button{border-radius:50%;min-width:40px;min-height:40px;padding:0}.weekdays button.on{background:var(--primary);color:var(--primary-text)}.heatmap{grid-template-rows:repeat(7,1fr);grid-auto-flow:column;gap:3px;display:grid;overflow-x:auto}.heatmap div{background:var(--surface-2);border-radius:3px;width:14px;height:14px}.error{color:var(--bad)}.banner{background:var(--surface-2);border-radius:12px;margin-bottom:12px;padding:10px 14px}.counts{gap:10px;font-weight:700;display:flex}.c-new{color:var(--easy)}.c-learn{color:var(--bad)}.c-review{color:var(--good)}.review-card{text-align:center;flex-direction:column;justify-content:center;min-height:38vh;font-size:1.15rem;display:flex}.review-card hr{border:0;border-top:1px solid var(--border);width:100%;margin:16px 0}.big{font-size:1.7rem;font-weight:600;line-height:1.25}.fr{font-family:Georgia,Iowan Old Style,serif}.face .big .icon,.back .big .icon{vertical-align:middle}.example{background:var(--surface-2);border-radius:10px;padding:8px 12px}.es-note{background:color-mix(in srgb, var(--warn) 12%, var(--surface));text-align:left;border-radius:10px;padding:8px 12px;font-size:.95rem}.es-note.false-friend{background:color-mix(in srgb, var(--bad) 15%, var(--surface))}.es-note .md p{margin:0}.ipa{font-family:Charis SIL,Doulos SIL,serif}.typed{text-align:center;font-size:1.3rem!important}.typed-result{border-radius:10px;padding:8px;font-size:1.3rem}.typed-result.ok{color:var(--good)}.typed-result.accent{color:var(--warn)}.typed-result.bad{color:var(--bad)}.typed-result s,.blank-result s{color:var(--muted)}.cloze{font-size:1.35rem;line-height:2.2}input.blank{text-align:center;background:var(--surface-2);border-width:0 0 2px;border-radius:6px 6px 0 0;width:auto;min-height:40px;padding:2px 6px;font-family:inherit;font-size:1.15rem;display:inline-block}.blank-result{border-radius:6px;padding:2px 6px}.blank-result.ok{background:color-mix(in srgb, var(--good) 20%, transparent)}.blank-result.accent{background:color-mix(in srgb, var(--warn) 25%, transparent)}.blank-result.bad{background:color-mix(in srgb, var(--bad) 20%, transparent)}.warn{color:var(--warn)}.answer-bar{left:0;right:0;bottom:calc(var(--nav-h) + env(safe-area-inset-bottom));z-index:5;background:var(--bg);border-top:1px solid var(--border);max-width:640px;margin:0 auto;padding:8px 14px 4px;position:fixed}.review-page{padding-bottom:190px}.xl{min-height:64px;font-size:1.15rem}.ratings{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.rate{color:#fff;border:0;flex-direction:column;gap:0;min-height:68px;padding:0 4px;font-weight:600}.rate.again{background:var(--again)}.rate.hard{background:var(--hard)}.rate.good{background:var(--goodb)}.rate.easy{background:var(--easy)}.rate.suggested{outline:3px solid var(--text);outline-offset:2px}.accentbar{flex-wrap:wrap;justify-content:center;gap:5px;margin-bottom:8px;display:flex}.accentbar button{border-radius:10px;min-width:40px;min-height:44px;padding:0 6px;font-size:1.15rem}.accentbar button.on{background:var(--primary);color:var(--primary-text)}.pill-btn{border-radius:999px;min-height:40px;padding:0 12px}.md p:first-child{margin-top:0}.md p:last-child{margin-bottom:0}.md table{border-collapse:collapse;max-width:100%;margin:8px 0;font-size:.95rem;display:block;overflow-x:auto}.md{overflow-wrap:break-word}.md table td,.md table th{overflow-wrap:normal;word-break:normal;min-width:3.5em}.md table td:first-child{white-space:nowrap}.md th,.md td{border:1px solid var(--border);text-align:left;padding:4px 8px}.exercise-text{font-size:1.25rem;line-height:2.1}.conj{border-collapse:collapse;width:100%}.conj td{vertical-align:middle;padding:4px 6px}.conj td:first-child{text-align:right;width:34%}.conj input{min-height:46px}.choices{gap:8px;display:grid}.choice{text-align:left;justify-content:flex-start;min-height:56px;font-size:1.1rem}.choice.sel{border:2px solid var(--primary);background:color-mix(in srgb, var(--primary) 12%, var(--surface))}.choice.ok{border:2px solid var(--good);background:color-mix(in srgb, var(--good) 15%, var(--surface));opacity:1}.choice.bad{border:2px solid var(--bad);background:color-mix(in srgb, var(--bad) 12%, var(--surface));opacity:1}.gap{border-bottom:2px solid var(--primary);padding:0 6px;font-weight:600}.wo-answer{border:2px dashed var(--border);border-radius:12px;flex-wrap:wrap;align-items:center;gap:6px;min-height:64px;padding:8px;display:flex}.wo-answer.ok{border-color:var(--good);border-style:solid}.wo-answer.bad{border-color:var(--bad);border-style:solid}.wo-pool{flex-wrap:wrap;gap:8px;display:flex}.chip{border-radius:10px;min-height:48px;padding:0 14px;font-family:Georgia,serif;font-size:1.1rem}.chip:disabled{opacity:.25}.feedback{border-radius:var(--radius);margin-top:12px;padding:12px 14px}.feedback.ok{background:color-mix(in srgb, var(--good) 14%, var(--surface))}.feedback.bad{background:color-mix(in srgb, var(--bad) 12%, var(--surface))}.feedback.pending{background:var(--surface-2)}.progress{background:var(--surface-2);border-radius:3px;height:6px;margin:8px 0 14px;overflow:hidden}.progress>div{background:var(--primary);height:100%;transition:width .2s}.tip-box{background:color-mix(in srgb, var(--warn) 12%, var(--surface));border-left:4px solid var(--warn);border-radius:10px;padding:10px 14px}.examples{gap:6px;display:grid}.examples .ex-item{background:var(--surface-2);border-radius:10px;padding:8px 12px}.lesson-body h3{margin:18px 0 6px}.viz-root{--series-1:#2a78d6}@media (prefers-color-scheme:dark){:root:where(:not([data-theme=light])) .viz-root{--series-1:#3987e5}}:root[data-theme=dark] .viz-root{--series-1:#3987e5}.viz-bar{fill:var(--series-1)}.viz-bar.on{fill:color-mix(in srgb, var(--series-1) 80%, var(--text))}.viz-grid{stroke:var(--border);stroke-width:1px;opacity:.6}.viz-baseline{stroke:var(--muted);stroke-width:1px}.viz-axis{fill:var(--muted);font-size:10px}.viz-tip{min-height:1.4em;color:var(--text)}.viz-table{border-collapse:collapse;width:100%;margin-top:8px}.viz-table td,.viz-table th{text-align:left;border-bottom:1px solid var(--border);padding:4px 6px}.tiles{grid-template-columns:1fr 1fr;gap:10px;display:grid}.dialogue{gap:8px;display:grid}.dl{flex-direction:column;max-width:88%;display:flex}.dl.left{align-self:flex-start}.dl.right{align-self:flex-end;align-items:flex-end;margin-left:auto}.dl .who{color:var(--muted);margin:0 6px 2px}.dl .bubble{background:var(--surface-2);cursor:pointer;border-radius:14px;padding:6px 4px 6px 12px}.dl.right .bubble{background:color-mix(in srgb, var(--primary) 14%, var(--surface))}.dl.playing .bubble{outline:2px solid var(--primary)}.dl .bubble .icon{vertical-align:middle;min-width:32px;min-height:32px}.gloss{all:unset;border-bottom:2px dotted var(--primary);cursor:pointer}.vocab-list{gap:4px;display:grid}.unit{margin-top:10px}.unit>summary{cursor:pointer;min-height:var(--tap);padding:0 4px;list-style:none}.unit>summary::-webkit-details-marker{display:none}.lesson-row .dot{text-align:center;width:22px;color:var(--muted);font-size:1.2rem}.lesson-row .dot.done{color:var(--good)}.lesson-row .dot.started{color:var(--warn)}.lesson-row.next{background:color-mix(in srgb, var(--primary) 8%, var(--surface))}.continue{border:2px solid color-mix(in srgb, var(--primary) 40%, var(--border));margin-bottom:4px}.continue .btn{width:100%}
