:root{--header-h:49px;--control-h:34px;--control-h-sm:28px;--radius:8px;--main-pad:clamp(16px, 4vw, 64px);--bg:#fbfaf8;--fg:#1f1d1a;--muted:#6d675f;--panel:#f1eee8;--line:#ded9d0;--accent:#2f6f5e;--accent-fg:#fff;--current:#fff1b8;--follow:#9a3412;--error:#b3261e;--good-bg:#d5e9ac;--bad-bg:#f6b8ad;--gold:#e0a100;--flame:#e8590c;--s0:#cfe3ff;--s1:#f6b8ad;--s2:#f7d2a6;--s3:#f6e8a2;--s4:#d5e9ac;--s5:#c3e6cd;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}:root:not([data-theme=light]){--bg:#1a1917;--fg:#ece8e0;--muted:#9b958a;--panel:#24221f;--line:#3a3733;--accent:#6cc3a8;--accent-fg:#11201b;--current:#4a4220;--follow:#e6c45a;--error:#ff8a80;--good-bg:#4d6a2b;--bad-bg:#7c3b33;--gold:#f2c14e;--flame:#ff8a4c;--s0:#2a4262;--s1:#7c3b33;--s2:#7b5c2e;--s3:#6f6528;--s4:#4d6a2b;--s5:#306b46;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--bg:#1a1917;--fg:#ece8e0;--muted:#9b958a;--panel:#24221f;--line:#3a3733;--accent:#6cc3a8;--accent-fg:#11201b;--current:#4a4220;--follow:#e6c45a;--error:#ff8a80;--good-bg:#4d6a2b;--bad-bg:#7c3b33;--gold:#f2c14e;--flame:#ff8a4c;--s0:#2a4262;--s1:#7c3b33;--s2:#7b5c2e;--s3:#6f6528;--s4:#4d6a2b;--s5:#306b46;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html{-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%}html[data-text=large]{font-size:118%}body{background:var(--bg);color:var(--fg);margin:0;font:1rem/1.5 -apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif}h1{margin:0 0 4px;font-size:1.6rem;font-weight:800}h2{margin:24px 0 8px;font-size:1.1rem;font-weight:800}.muted{color:var(--muted)}.small{font-size:.88rem}.center{text-align:center}button,a.button{--edge:color-mix(in srgb, var(--accent) 72%, #000);box-sizing:border-box;border:2px solid var(--edge);min-height:44px;font:inherit;letter-spacing:.02em;cursor:pointer;background:var(--accent);color:var(--accent-fg);border-bottom-width:5px;border-radius:14px;justify-content:center;align-items:center;gap:8px;padding:0 20px;font-weight:800;line-height:1.2;transition:transform 60ms,border-bottom-width 60ms,filter .12s;display:inline-flex}button:hover:not(:disabled),a.button:hover{filter:brightness(1.07)}button:active:not(:disabled),a.button:active{border-bottom-width:2px;transform:translateY(3px)}button:disabled{opacity:.45;cursor:default}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid color-mix(in srgb, var(--accent) 55%, transparent);outline-offset:2px}button.secondary,a.button.secondary{--edge:var(--line);background:var(--bg);color:var(--fg)}button.secondary:hover:not(:disabled),a.button.secondary:hover{background:var(--panel);filter:none}button.danger{--edge:color-mix(in srgb, var(--error) 70%, #000);background:var(--error);color:#fff}button.quiet{color:var(--fg);background:0 0;border-color:#0000;border-bottom-width:2px;font-weight:600}button.quiet:hover:not(:disabled){background:var(--panel);filter:none}button.quiet:active:not(:disabled){transform:none}button.quiet[aria-pressed=true]{background:color-mix(in srgb, var(--accent) 18%, transparent);color:var(--accent)}button.small,a.button.small{border-bottom-width:4px;min-height:40px;padding:0 12px;font-size:.88rem}button.block,a.button.block{text-transform:uppercase;width:100%;min-height:54px;font-size:1.05rem}input,select{font:inherit;border:2px solid var(--line);background:var(--bg);min-height:44px;color:var(--fg);border-radius:12px;padding:0 12px}input[type=range]{min-height:0;padding:0}.app{border-inline:1px solid var(--line);max-width:560px;min-height:100dvh;margin:0 auto;padding:0 16px 104px}.topbar{z-index:30;padding:calc(12px + env(safe-area-inset-top)) 0 12px;background:var(--bg);justify-content:center;align-items:center;gap:10px;display:flex;position:sticky;top:0}.pill{white-space:nowrap;background:var(--panel);border:2px solid var(--line);border-radius:999px;align-items:center;gap:6px;min-height:44px;padding:0 14px;font-weight:800;display:inline-flex}.pill.flame{color:var(--flame)}.pill.gold{color:var(--gold)}button.pill{background:var(--panel);min-height:44px;color:var(--fg);--edge:var(--line);border-bottom-width:4px}.nav{z-index:40;width:min(560px,100%);padding:8px 16px calc(8px + env(safe-area-inset-bottom));background:var(--bg);border-top:2px solid var(--line);justify-content:center;gap:8px;display:flex;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.nav button{min-height:56px;color:var(--muted);background:0 0;border:2px solid #0000;border-radius:14px;flex-direction:column;flex:1;gap:0;padding:4px 8px;font-size:.8rem;font-weight:800}.nav button .ico{font-size:1.5rem;line-height:1.2}.nav button[aria-current=page]{background:color-mix(in srgb, var(--accent) 16%, transparent);border-color:var(--accent);color:var(--accent)}.nav button:active:not(:disabled){border-bottom-width:2px;transform:none}.page{padding:8px 0 16px}.card{background:var(--panel);border:2px solid var(--line);border-radius:18px;margin:12px 0;padding:16px}.panel{background:var(--panel);border:2px solid var(--line);border-radius:14px;margin:12px 0;padding:14px}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.row.between{justify-content:space-between}.row.center{justify-content:center}.seg{justify-content:center;gap:6px;margin:4px 0 12px;display:flex}.notice{border-left:4px solid var(--follow);background:var(--panel);border-radius:0 12px 12px 0;margin:8px 0;padding:8px 12px;font-size:.92rem}.scrim{z-index:100;background:#00000080;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal{background:var(--bg);border:2px solid var(--line);border-radius:20px;gap:14px;width:min(420px,100%);padding:20px;display:grid}.modal h2{margin:0}.modal label{color:var(--muted);gap:4px;font-size:.9rem;font-weight:600;display:grid}.goal{align-items:center;gap:16px;display:flex}.ring{flex:none;width:64px;height:64px;position:relative}.ring svg{transform:rotate(-90deg)}.ring span{place-items:center;font-size:.85rem;font-weight:800;display:grid;position:absolute;inset:0}.levels{justify-content:center;gap:10px;padding:10px 6px 12px;display:flex}.node-wrap{justify-items:center;gap:4px;display:grid}.node{border-width:2px 2px 6px;border-radius:50%;width:58px;height:58px;padding:0;font-size:1.3rem;line-height:1.1}.node.sel{box-shadow:0 0 0 4px color-mix(in srgb, var(--accent) 30%, transparent);animation:1.4s ease-in-out infinite bob}.node.locked{--edge:var(--line);background:var(--panel);color:var(--muted)}.stars{letter-spacing:1px;color:var(--gold);font-size:.85rem}.stars .off{color:var(--line)}@keyframes bob{50%{transform:translateY(-5px)}}.start-card .toggle{justify-content:center;align-items:center;gap:8px;margin-top:12px;font-weight:600;display:flex}.toggle input{width:22px;height:22px;min-height:0;accent-color:var(--accent)}.lesson{flex-direction:column;max-width:560px;min-height:100dvh;margin:0 auto;padding:0 16px 200px;display:flex}.lesson-top{padding:calc(16px + env(safe-area-inset-top)) 0 16px;align-items:center;gap:12px;display:flex}.lesson-top .close{flex:none;width:44px;min-height:44px;padding:0;font-size:1.2rem}.bar{background:var(--line);border-radius:999px;flex:1;height:16px;overflow:hidden}.bar>div{background:var(--accent);border-radius:999px;min-width:16px;height:100%;transition:width .3s;position:relative}.bar>div:after{content:"";background:#ffffff59;border-radius:4px;height:4px;position:absolute;top:4px;left:8px;right:8px}.combo{color:var(--flame);text-align:right;min-width:56px;font-weight:800}.lesson-body{flex:1;align-content:start;gap:18px;padding-top:8px;display:grid}.prompt{text-align:center;margin:8px 0 0;font-size:1.4rem;font-weight:800}.speaker{justify-content:center;align-items:center;gap:12px;display:flex}.speaker .big{--edge:#145896;color:#fff;background:#1c7ed6;border-radius:28px;width:112px;height:112px;padding:0;font-size:2.6rem}.speaker .turtle{border-radius:16px;width:52px;height:52px;padding:0;font-size:1.5rem}.choices{grid-template-columns:1fr 1fr;gap:12px;display:grid}.choice{flex-direction:column;gap:0;min-height:72px;font-size:1.5rem;position:relative}.choice .key{opacity:.55;font-size:.7rem;font-weight:700;position:absolute;top:6px;left:10px}.choice.picked{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 16%, var(--bg));color:var(--accent);--edge:var(--accent)}.choice.right{background:var(--good-bg);--edge:var(--accent);color:var(--fg)}.choice.wrong{background:var(--bad-bg);--edge:var(--error);color:var(--fg)}.type-box{text-align:center;border-radius:16px;width:100%;min-height:64px;font-size:1.6rem}.lesson-footer{z-index:50;background:var(--bg);border-top:2px solid var(--line);padding:16px 16px calc(16px + env(safe-area-inset-bottom));transition:background-color .2s;position:fixed;bottom:0;left:0;right:0}.lesson-footer .inner{gap:12px;max-width:560px;margin:0 auto;display:grid}.lesson-footer.ok{background:var(--good-bg);border-color:var(--accent)}.lesson-footer.bad{background:var(--bad-bg);border-color:var(--error)}.fb strong{font-size:1.25rem;display:block}.fb .ans{font-size:1.1rem;font-weight:800}.fb .sub{opacity:.8;font-size:.9rem}.fb-actions{gap:10px;display:flex}.fb-actions button{text-transform:uppercase;flex:1;min-height:54px}.pop-in{animation:.25s ease-out pop}@keyframes pop{0%{opacity:0;transform:translateY(12px)}}.answer{gap:12px;display:grid}.answer .seg{margin:0}.answer-display{border:2px solid var(--line);background:var(--panel);border-radius:16px;place-items:center;min-height:72px;font-size:2.4rem;font-weight:800;display:grid}.keypad{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.keypad .key{min-height:58px;padding:0;font-size:1.5rem}.answer-row{border:2px solid var(--line);background:var(--panel);border-radius:16px;flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;min-height:72px;padding:10px;display:flex}.bank{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.chip{min-height:48px;padding:0 16px;font-size:1.1rem}.chip.used{opacity:.25}.match-grid{grid-template-columns:1fr 1fr;gap:12px 14px;display:grid}.match-grid .col{align-content:start;gap:12px;display:grid}.match-grid button{background:var(--bg);min-height:64px;color:var(--fg);--edge:var(--line);font-size:1.1rem}.match-grid button.num{font-size:1.6rem}.match-grid button.sel{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 16%, var(--bg));--edge:var(--accent);color:var(--accent)}.match-grid button.wrong{background:var(--bad-bg);--edge:var(--error);animation:.3s shake}.match-grid button.done{visibility:hidden}@keyframes shake{25%{transform:translate(-5px)}75%{transform:translate(5px)}}.flashcard{background:var(--panel);border:2px solid var(--line);text-align:center;border-radius:20px;align-content:center;gap:16px;min-height:280px;padding:24px 16px;display:grid}.flashcard .front{justify-items:center;display:grid}.flashcard .back{border-top:2px solid var(--line);justify-items:center;gap:6px;padding-top:16px;display:grid}.flashcard .digits{margin:0}.flashcard .play{--edge:#145896;color:#fff;background:#1c7ed6;border-radius:24px;width:96px;height:96px;padding:0;font-size:2.2rem}.results{text-align:center;padding-top:24px;position:relative;overflow:hidden}.results .trophy{font-size:5rem;animation:.5s ease-out pop}.results .xp-big{color:var(--gold);font-size:3rem;font-weight:800}.result-tiles{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px;margin:18px 0;display:grid}.result-tiles .tile{border:2px solid var(--line);background:var(--panel);border-radius:14px;padding:10px}.result-tiles .tile b{font-size:1.5rem;display:block}.confetti{opacity:.9;border-radius:2px;width:10px;height:16px;animation:2.4s linear forwards fall;position:absolute;top:-20px}@keyframes fall{to{transform:translateY(110vh)rotate(540deg)}}.digits{margin:8px 0 4px;font-size:3rem;font-weight:800;line-height:1.1}.big-word{font-size:1.5rem;font-weight:800}.parts{flex-wrap:wrap;align-items:center;gap:6px;margin:8px 0;display:flex}.part{border-radius:8px;padding:4px 10px;font-size:1.3rem;font-weight:800}.part.p0{background:var(--s0)}.part.p1{background:var(--s3)}.part.p2{background:var(--s5)}.part.p3{background:var(--s2)}.gap{width:14px}.notes{margin:8px 0 0;padding-left:20px}.time-hero{flex-wrap:wrap;align-items:center;gap:20px;margin:16px 0 0;display:flex}.time-hero .digits{margin:0}.stat-grid{grid-template-columns:repeat(2,1fr);gap:10px;display:grid}.stat-grid .panel{text-align:center;margin:0}.stat-grid b{font-size:1.8rem;display:block}table{border-collapse:collapse;width:100%}th,td{text-align:left;border-bottom:2px solid var(--line);padding:6px 8px}th{color:var(--muted);font-size:.88rem;font-weight:600}.meter{background:var(--line);border-radius:5px;min-width:80px;height:10px;overflow:hidden}.meter>div{background:var(--accent);height:100%}.tiles{grid-template-columns:1fr 1fr;gap:10px;margin-top:12px;display:grid}.tile-btn{text-align:left;justify-content:flex-start;align-items:center;min-height:76px;padding:8px 12px;font-size:1.05rem;line-height:1.15}.tile-btn .ico{font-size:1.6rem}.tile-btn small{opacity:.9;letter-spacing:0;margin-top:2px;font-size:.75rem;font-weight:500;display:block}.tile-btn:nth-child(odd):last-child{grid-column:1/-1}.tile-btn.listen{--edge:#145896;color:#fff;background:#1c7ed6}.tile-btn.read{--edge:#216f30;color:#fff;background:#2f9e44}.tile-btn.write{--edge:#881a40;color:#fff;background:#c2255c}.tile-btn.match{--edge:#7a2b8d;color:#fff;background:#ae3ec9}.tile-btn.cards{--edge:#a23e08;color:#fff;background:#e8590c}.tile-btn.time{--edge:#085d6b;color:#fff;background:#0c8599}.tile-btn.life{--edge:#432b89;color:#fff;background:#5f3dc4}.tile-btn.weak{--edge:#9d2222;color:#fff;background:#e03131}.next{border-color:var(--accent)}.toast{z-index:35;background:var(--s0);color:var(--fg);border:2px solid var(--line);text-align:center;border-radius:14px;margin:0 0 8px;padding:10px 14px;font-weight:700;animation:.25s ease-out pop;position:sticky;top:64px}.q-in{gap:18px;animation:.22s ease-out pop;display:grid}.prompt-card{text-align:center;border:2px solid var(--line);background:var(--panel);overflow-wrap:anywhere;border-radius:20px;padding:28px 12px;font-size:2.2rem;font-weight:800}.compare{gap:8px;margin-top:10px;display:flex}.compare button{flex:1}.examples{grid-template-columns:repeat(2,1fr);gap:10px;display:grid}.examples.one{grid-template-columns:1fr}.example{flex-direction:column;gap:0;min-height:64px;font-weight:600}.example b{font-size:1.3rem}.example span{opacity:.8;overflow-wrap:anywhere;font-size:.85rem;font-weight:500}.example.wide{text-align:left;align-items:flex-start;padding:8px 14px}.screen{animation:.2s ease-out fade}@keyframes fade{0%{opacity:0}}.week{grid-template-columns:repeat(7,1fr);align-items:end;gap:8px;display:grid}.week .day{justify-items:center;gap:2px;display:grid}.week .col-bar{background:var(--panel);border:2px solid var(--line);border-radius:10px;align-items:flex-end;width:100%;max-width:36px;height:90px;display:flex;overflow:hidden}.week .col-bar>div{background:var(--accent);border-radius:6px 6px 0 0;width:100%;min-height:0}.week .col-bar>div.hit{background:var(--gold)}.badges{grid-template-columns:repeat(2,1fr);gap:10px;display:grid}.badge{text-align:center;border:2px solid var(--line);background:var(--panel);border-radius:16px;justify-items:center;gap:2px;padding:12px 8px;display:grid}.badge .ico{font-size:2rem}.badge.locked{opacity:.55}.modal{max-height:92dvh;overflow-y:auto}.modal .check{color:var(--fg);align-items:center;gap:10px;font-size:1rem;font-weight:600;display:flex}.modal .check input{width:24px;height:24px;min-height:0;accent-color:var(--accent)}.button-like{border:2px solid var(--line);cursor:pointer;min-height:40px;color:var(--fg);background:var(--bg);border-bottom-width:4px;border-radius:14px;justify-content:center;align-items:center;padding:0 12px;font-size:.88rem;font-weight:800;display:inline-flex}:root{--nav-h:76px}.study-page{padding-bottom:190px}.study-card{text-align:center;justify-items:center;gap:6px;padding:4px 0;display:grid}.study-card .digits{margin:0}.digits-btn{color:var(--fg);border:0;border-bottom:3px dashed var(--line);letter-spacing:0;background:0 0;border-radius:12px;min-height:0;padding:0 12px;font-size:3.4rem;font-weight:800;line-height:1.15}.digits-btn:active:not(:disabled){border-bottom-width:3px;transform:none}.study-card .parts{justify-content:center}.study-card.dense .part{padding:2px 7px;font-size:.95rem}.study-card.dense .parts{gap:4px;margin:2px 0}.study-card.dense .big-word{font-size:1.15rem}.study-card.dense .pron{font-size:.8rem}.digits-btn.long{font-size:2.4rem}.study-card .time-hero{flex-wrap:nowrap;justify-content:center;gap:14px;margin:0}.study-card .time-hero .digits{font-size:2.6rem}.study-card .big-word{overflow-wrap:anywhere;font-size:1.6rem}.pron{color:var(--fg)}.formal{border-top:2px solid var(--line);width:100%;padding-top:8px}.tips{text-align:left;background:var(--panel);border:2px solid var(--line);border-radius:14px;align-items:center;gap:6px;width:100%;margin-top:2px;padding:6px 12px;display:flex}.tips .notes{flex:1;margin:0;padding-left:18px;font-size:.9rem;line-height:1.35}.tips .notes.clamp li{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.tips button{flex:none;min-height:40px}.study-dock{z-index:39;width:min(560px,100%);left:50%;bottom:calc(var(--nav-h) + env(safe-area-inset-bottom));background:var(--bg);border-top:2px solid var(--line);gap:8px;padding:8px 12px 10px;display:grid;position:fixed;transform:translate(-50%)}.strip{scrollbar-width:none;-webkit-overflow-scrolling:touch;gap:8px;padding:2px 2px 4px;display:flex;overflow-x:auto}.strip::-webkit-scrollbar{display:none}.chip-btn{border-bottom-width:4px;flex:none;min-height:44px;padding:0 14px;font-size:.95rem}.chip-btn[aria-pressed=true]{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 16%, var(--bg));color:var(--accent);--edge:var(--accent)}.chip-btn.pick{cursor:pointer;border:2px solid var(--line);background:var(--bg);color:var(--fg);white-space:nowrap;border-bottom-width:4px;border-radius:14px;justify-content:center;align-items:center;gap:6px;font-weight:800;display:inline-flex;position:relative}.chip-btn.pick input{opacity:0;cursor:pointer;border:0;width:100%;height:100%;min-height:0;padding:0;position:absolute;inset:0}.controls{grid-template-columns:56px 56px 1fr 1.5fr;gap:8px;display:grid}.controls button{text-transform:uppercase;min-height:60px;padding:0;font-size:1.1rem}.controls .prev,.controls .slow{font-size:1.3rem}.controls .play{--edge:#145896;color:#fff;background:#1c7ed6;font-size:1.6rem}.controls .next{font-size:1.2rem}.sheet-scrim{align-items:end;padding:0}.sheet{background:var(--bg);border:2px solid var(--line);width:min(560px,100%);padding:16px 16px calc(16px + env(safe-area-inset-bottom));border-bottom:0;border-radius:22px 22px 0 0;gap:12px;animation:.2s ease-out rise;display:grid}@keyframes rise{0%{opacity:0;transform:translateY(40px)}}a.button{--edge:color-mix(in srgb, var(--accent) 72%, #000);text-decoration:none}a.button.secondary{--edge:var(--line)}.support{text-align:center}@media (height<=520px){.speaker .big{width:72px;height:72px;font-size:1.8rem}.keypad .key{min-height:44px}.answer-display{min-height:52px;font-size:1.8rem}.lesson{padding-bottom:170px}:root{--nav-h:64px}.nav button{min-height:44px}.study-card .digits,.digits-btn{font-size:2.2rem}.controls button{min-height:48px}.nav button .ico{font-size:1.2rem}}@media (width<=400px){.topbar{gap:5px}.pill,button.pill{gap:3px;padding:0 8px;font-size:.88rem}}@media (width<=360px){.goal-pill{display:none}}@media (width<=480px){.digits{font-size:2.4rem}.app{border-inline:0}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
