.pr{--lc: var(--lesson3, var(--primary));--lc-bg: var(--lesson3-bg, var(--bg));--lc-ink: var(--lesson3-ink, var(--text));--on-lc: var(--on-lesson3, var(--on-lesson, var(--on-primary)));--r-ok: var(--ok);--r-ok-bg: var(--ok-bg);--r-ok-ink: var(--ok-ink, var(--text));--r-near: var(--near, var(--warn));--r-near-bg: var(--near-bg, var(--warn-bg));--r-near-ink: var(--near-ink, var(--text));--r-bad: var(--bad);--r-bad-bg: var(--bad-bg);--r-bad-ink: var(--bad-ink, var(--text));display:flex;flex-direction:column;min-height:100vh;min-height:100dvh;max-width:480px;margin:0 auto;padding:calc(8px + env(safe-area-inset-top)) 16px 0;background:var(--lc-bg);color:var(--text);box-shadow:0 0 0 100vmax var(--lc-bg);clip-path:inset(0 -100vmax)}.pr[data-exercise="1"]{--lc: var(--lesson1, var(--primary));--lc-bg: var(--lesson1-bg, var(--bg));--lc-ink: var(--lesson1-ink, var(--text));--on-lc: var(--on-lesson1, var(--on-lesson, var(--on-primary)))}.pr[data-exercise="2"]{--lc: var(--lesson2, var(--primary));--lc-bg: var(--lesson2-bg, var(--bg));--lc-ink: var(--lesson2-ink, var(--text));--on-lc: var(--on-lesson2, var(--on-lesson, var(--on-primary)))}.pr-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.pr-count{font-weight:800;font-variant-numeric:tabular-nums;color:var(--lc-ink)}.pr-bar{height:8px;border-radius:4px;background:var(--surface);overflow:hidden;margin:4px 0 8px}.pr-bar>div{height:100%;background:var(--lc);transition:width .2s}.pr-body{flex:1;display:flex;flex-direction:column;align-items:center;gap:12px;padding:8px 0;text-align:center}.pr-foot{position:sticky;bottom:calc(12px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:12px;padding:8px 0 0;background:linear-gradient(transparent,var(--lc-bg) 20%)}.pr .btn.big{min-height:56px;width:100%;font-size:1.1rem}.pr{--btn-bg: var(--lesson3, var(--primary));--btn-fg: var(--on-lesson3, var(--on-primary))}.pr[data-exercise="1"]{--btn-bg: var(--lesson1-ink, var(--primary));--btn-fg: var(--lesson1-bg, var(--on-primary))}.pr[data-exercise="2"]{--btn-bg: var(--lesson2-ink, var(--primary));--btn-fg: var(--lesson2-bg, var(--on-primary))}.pr .btn.primary{background:var(--btn-bg);border-color:var(--btn-bg);color:var(--btn-fg)}.pr-card{width:100%;background:var(--surface);border-radius:20px;padding:12px 16px;display:flex;flex-direction:column;align-items:center;gap:4px}.pr-vi{font-size:2rem;font-weight:800;line-height:1.3;margin:24px 0 0;overflow-wrap:anywhere}.pr-vi.small{font-size:1.25rem;font-weight:500;margin:8px 0 0;color:var(--text-dim)}.pr-han{font-size:3.25rem;line-height:1.3;overflow-wrap:anywhere}.pr-han.sm{font-size:1.75rem}.pr-pinyin{font-size:1.4rem;color:var(--text-dim)}.pr-spk{width:48px;height:48px;min-height:48px;padding:0;border-radius:50%;font-size:1.4rem}.pr-listen{min-height:64px;width:100%;font-size:1.25rem}.pr-ring{position:relative;width:96px;height:96px}.pr-ring svg{width:96px;height:96px;transform:rotate(-90deg)}.pr-ring .track{stroke:var(--surface)}.pr-ring .arc{stroke:var(--lc);transition:stroke .2s}.pr-ring.warn .arc{stroke:var(--r-near)}.pr-ring.bad .arc{stroke:var(--r-bad)}.pr-ring .num{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:2.5rem;font-weight:800;font-variant-numeric:tabular-nums}.pr-ring.timeup .num{font-size:1rem;text-align:center;padding:0 8px}.pr-note{font-size:1rem;color:var(--text-dim)}.pr-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.pr-grades{display:flex;flex-direction:column;gap:24px;width:100%;margin-top:8px}.pr-grade{min-height:56px;width:100%;font-size:1.1rem;border-width:2px}.pr-grade.ok{border-color:var(--r-ok);background:var(--r-ok-bg);color:var(--r-ok-ink)}.pr-grade.warn{border-color:var(--r-near);background:var(--r-near-bg);color:var(--r-near-ink)}.pr-grade.bad{border-color:var(--r-bad);background:var(--r-bad-bg);color:var(--r-bad-ink)}.pr-grade.picked{font-weight:800;outline:3px solid var(--text);outline-offset:2px}.pr-grade:disabled{opacity:.55}.pr-plus{font-weight:700;color:var(--r-ok-ink)}.pr-opts{display:flex;flex-direction:column;gap:12px;width:100%;text-align:left}.pr-opt{display:flex;gap:8px;align-items:center;justify-content:flex-start;text-align:left;min-height:56px;height:auto;padding:8px 14px;width:100%}.pr-opt .lbl{font-weight:800;min-width:1.4em}.pr-opt.ok{border-color:var(--r-ok);background:var(--r-ok-bg);color:var(--r-ok-ink)}.pr-opt.bad{border-color:var(--r-bad);background:var(--r-bad-bg);color:var(--r-bad-ink)}.pr-opt.faded{opacity:.5}.pr-opt.han{font-size:1.5rem}.pr-fb{width:100%;text-align:left;border-radius:16px;padding:12px 16px;border:2px solid var(--line);background:var(--surface)}.pr-fb.ok{border-color:var(--r-ok);background:var(--r-ok-bg);color:var(--r-ok-ink)}.pr-fb.bad{border-color:var(--r-bad);background:var(--r-bad-bg);color:var(--r-bad-ink)}.pr-fb b{font-size:1.2rem}.pr-fb-head{display:flex;align-items:center;gap:12px}.pr-sticker{line-height:1;font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif;-webkit-user-select:none;user-select:none;display:inline-block}.pr-sticker.xl{font-size:4.5rem}.pr-sticker.lg{font-size:3rem}.pr-pop{animation:pr-pop .35s ease-out both}.pr-wiggle{animation:pr-wiggle .6s ease-in-out 1}.pr-bubble{display:flex;align-items:center;gap:10px;padding:8px 16px;border-radius:999px;background:var(--surface);border:2px solid var(--r-ok);color:var(--text);animation:pr-pop .35s ease-out both}.pr-bubble .pr-sticker{font-size:2rem}.pr-bubble-zh{display:block;font-size:2rem;font-weight:800;line-height:1.2}.pr-bubble-py{display:block;font-size:1rem;color:var(--text-dim)}.pr-badge{display:inline-block;font-size:1rem;border:1px solid var(--r-near);color:var(--r-near-ink);background:var(--r-near-bg);border-radius:8px;padding:0 8px}.pr-chip{display:inline-block;border-radius:999px;padding:4px 16px;font-weight:800;font-size:1.25rem;background:var(--score-bg, var(--surface));color:var(--score-ink, var(--text))}.pr-chip.streak{background:var(--streak-bg, var(--surface));color:var(--streak-ink, var(--text))}.pr-score{font-size:3.5rem;font-weight:800;line-height:1.1}.pr-praise-ring{display:grid;place-items:center;border-radius:999px;background:var(--surface);padding:8px 24px;animation:pr-pop .35s ease-out both}.pr-fails{list-style:none;padding:0;margin:0;width:100%;text-align:left}.pr-fails li{padding:8px 0;border-top:1px solid var(--line)}.pr-center{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;text-align:center}.pr .confirm{width:100%}@keyframes pr-pop{0%{transform:scale(.4);opacity:0}70%{transform:scale(1.15)}to{transform:scale(1);opacity:1}}@keyframes pr-wiggle{0%,to{transform:rotate(0)}25%{transform:rotate(-8deg)}75%{transform:rotate(8deg)}}@media (prefers-reduced-motion: reduce){.pr-pop,.pr-wiggle,.pr-bubble,.pr-praise-ring{animation:none}}.pr-undo{position:fixed;left:16px;right:16px;bottom:calc(12px + env(safe-area-inset-bottom));max-width:448px;margin:0 auto;z-index:40;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 8px 8px 16px;min-height:52px;border-radius:14px;background:var(--surface);color:var(--text);border:2px solid var(--lc)}.pr-line{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:flex-start;width:100%;min-height:64px;padding:8px;border:2px dashed var(--line);border-radius:16px;background:var(--surface)}.pr-line.ok{border:2px solid var(--r-ok);background:var(--r-ok-bg)}.pr-line.bad{border:2px solid var(--r-bad);background:var(--r-bad-bg)}.pr-bank{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;width:100%;min-height:56px}.pr-tok{min-height:48px;min-width:44px;padding:4px 14px;font-size:1.125rem;border-radius:12px;overflow-wrap:anywhere}.pr-tok.zh{font-size:1.5rem}.pr-tok.on{background:var(--surface-2, var(--surface));border-color:var(--lc)}.pr-pylist{display:flex;flex-wrap:wrap;gap:8px 12px}.pr-pyitem{display:inline-flex;flex-direction:column;align-items:center}.pr-pyitem .hanzi{font-size:1.5rem}.pr-pyitem .pr-pinyin{font-size:1rem}.pr-xp{font-weight:800;font-size:1rem;padding:2px 10px;border-radius:999px;background:var(--score-bg, var(--surface));color:var(--score-ink, var(--text));animation:pr-float 1.2s ease-out both}.pr-gift{width:100%;border:2px solid var(--lc);border-radius:20px;padding:12px 16px;background:var(--surface);display:flex;flex-direction:column;align-items:center;gap:4px;animation:pr-pop .5s ease-out both}@keyframes pr-float{0%{transform:translateY(12px);opacity:0}30%{opacity:1}to{transform:translateY(-4px);opacity:1}}@media (prefers-reduced-motion: reduce){.pr-xp,.pr-gift{animation:none}}.pr[data-exercise="4"]{--lc: var(--lesson4, var(--primary));--lc-bg: var(--lesson4-bg, var(--bg));--lc-ink: var(--lesson4-ink, var(--text));--on-lc: var(--on-lesson4, var(--on-primary));--btn-bg: var(--lesson4, var(--primary));--btn-fg: var(--on-lesson4, var(--on-primary))}.pr[data-exercise="5"]{--lc: var(--lesson5, var(--primary));--lc-bg: var(--lesson5-bg, var(--bg));--lc-ink: var(--lesson5-ink, var(--text));--on-lc: var(--on-lesson5, var(--on-primary));--btn-bg: var(--lesson5, var(--primary));--btn-fg: var(--on-lesson5, var(--on-primary))}.pr-retry{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:4px 0}.pr-retrynote{margin:4px 0 0;text-align:center}.pr[data-exercise="6"]{--lc: var(--lesson6, var(--primary));--lc-bg: var(--lesson6-bg, var(--bg));--lc-ink: var(--lesson6-ink, var(--text));--on-lc: var(--on-lesson6, var(--on-primary));--btn-bg: var(--lesson6, var(--primary));--btn-fg: var(--on-lesson6, var(--on-primary))}.pr-cells{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;width:100%}.pr-cell{min-height:56px;min-width:56px;padding:4px 12px;border-radius:12px;border:2px dashed var(--lc);background:var(--surface);color:var(--text);font:inherit;cursor:pointer;display:inline-flex;flex-direction:column;align-items:center;justify-content:center}.pr-cell.open{border-style:solid}.pr-cell .hanzi{font-size:1.5rem}.pr-cell .pr-pinyin{font-size:1rem}.pr-cell:focus-visible{outline:3px solid var(--primary);outline-offset:2px}.pr-lockreason{font-size:1rem;color:var(--text-dim);margin:-12px 0 0;text-align:center}.pr[data-exercise="7"]{--lc: var(--lesson7, var(--primary));--lc-bg: var(--lesson7-bg, var(--bg));--lc-ink: var(--lesson7-ink, var(--text));--on-lc: var(--on-lesson7, var(--on-primary));--btn-bg: var(--lesson7, var(--primary));--btn-fg: var(--on-lesson7, var(--on-primary))}.pr-type{width:100%;min-height:56px;box-sizing:border-box;padding:10px 12px;font-size:1.5rem;line-height:1.4;border:2px solid var(--lc);border-radius:12px;background:var(--surface);color:var(--text);resize:vertical;font-family:inherit}.pr-type:focus-visible{outline:3px solid var(--primary);outline-offset:2px}.pr-typelabel{font-size:1rem;font-weight:700;color:var(--lc-ink)}.pr-chars{display:flex;flex-wrap:wrap;gap:6px;justify-content:center}.pr-ch{min-width:44px;min-height:56px;padding:2px 6px;border-radius:10px;display:inline-flex;flex-direction:column;align-items:center;justify-content:center;font-size:1.5rem;border:2px solid transparent}.pr-ch small{font-size:1rem;line-height:1}.pr-ch.ok{background:var(--ok-bg);color:var(--ok-ink)}.pr-ch.bad{color:var(--bad-ink);background:var(--bad-bg);text-decoration:underline;text-decoration-color:var(--bad);text-decoration-thickness:3px}.pr-ch.missing{border:2px dashed var(--bad);color:var(--bad-ink)}.home{background:linear-gradient(180deg,var(--lesson2-bg) 0,transparent 220px);padding-top:8px}.home-mascot{display:flex;align-items:center;gap:14px}.home-bubble{position:relative;flex:1;margin:0;padding:12px 14px;font-size:1.1rem;font-weight:600;background:var(--surface);border:1px solid var(--line);border-radius:18px}.home-bubble:before{content:"";position:absolute;left:-9px;top:50%;margin-top:-8px;border:8px solid transparent;border-right-color:var(--line);border-left:0}.home-bubble:after{content:"";position:absolute;left:-7px;top:50%;margin-top:-7px;border:7px solid transparent;border-right-color:var(--surface);border-left:0}.home-chips{display:flex;flex-wrap:wrap;gap:8px}.home-chip{display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:0 14px;border-radius:999px;font-size:1rem;font-weight:700}.home-chip b{font-size:1.25rem}.home-chip.streak{background:var(--streak-bg);color:var(--streak-ink);border:1px solid var(--streak)}.home-chip.score{background:var(--score-bg);color:var(--score-ink);border:1px solid var(--score)}.home-chip.restart{background:var(--surface-2);color:var(--text);border:1px solid var(--line)}.home-score{display:flex;flex-direction:column;gap:4px}.home-scorerow{display:flex;justify-content:space-between;align-items:baseline;font-weight:600}.home-num{font-size:1.75rem}.home-week{list-style:none;display:grid;grid-template-columns:repeat(7,1fr);gap:4px;padding:0;margin:8px 0 0}.home-day{display:flex;flex-direction:column;align-items:center;min-height:44px;padding:4px 0;border:1px solid var(--line);border-radius:10px;font-size:1rem;background:var(--surface)}.home-day.today{border:2px solid var(--primary);font-weight:700;background:var(--surface-2)}.home-day.future{opacity:.55}.home-dlabel{color:var(--text-dim);font-size:1rem}.home-cards{display:flex;flex-direction:column;gap:12px}.home-ex{--lc: var(--lesson1);--lbg: var(--lesson1-bg);--link: var(--lesson1-ink);position:relative;overflow:hidden;display:grid;grid-template-columns:auto 1fr;column-gap:12px;row-gap:6px;align-items:center;text-align:left;font:inherit;color:var(--link);background:var(--lbg);border:2px solid var(--lc);padding:20px 16px 16px}.home-ex.ex2{--lc: var(--lesson2);--lbg: var(--lesson2-bg);--link: var(--lesson2-ink)}.home-ex.ex3{--lc: var(--lesson3);--lbg: var(--lesson3-bg);--link: var(--lesson3-ink)}.home-ex:before{content:"";position:absolute;left:0;right:0;top:0;height:6px;background:var(--lc)}.home-ex>*{grid-column:2}.home-exicon{grid-column:1;grid-row:1 / span 2;width:56px;height:56px}.home-extitle{font-weight:800;font-size:1.2rem;color:var(--link)}.home-exsub{color:var(--link);font-size:1rem}.home-corner{position:absolute;right:12px;top:16px;grid-column:auto}.home-status{display:inline-block;justify-self:start;padding:4px 12px;border-radius:999px;font-weight:700;font-size:1rem;background:var(--surface-2);color:var(--text-dim)}.home-ex.partial .home-status{background:var(--near-bg);color:var(--near-ink);border:1px solid var(--near)}.home-ex.done{background:var(--ok-bg);border:3px solid var(--ok)}.home-ex.done .home-extitle,.home-ex.done .home-exsub{color:var(--ok-ink)}.home-ex.done .home-status{background:var(--ok-bg);color:var(--ok-ink);border:1px solid var(--ok)}.home-go{min-height:52px;width:100%;border:2px solid var(--link);background:var(--link);color:var(--lbg)}.home-ex.done .home-go{background:transparent;color:var(--ok-ink);border-color:var(--ok);min-height:48px}.home-note{font-size:1rem;color:var(--ok-ink)}.home-ex.locked{opacity:.55;border-style:dashed;cursor:pointer;min-height:44px;background:var(--surface)}.home-ex.locked:before{opacity:.5}.home-ex.locked .home-extitle,.home-ex.locked .home-exsub{color:var(--text)}.home-empty{text-align:center;display:flex;flex-direction:column;gap:8px;align-items:center;background:var(--surface-2)}.home-events{list-style:none;padding:0;margin:4px 0 0;display:flex;flex-direction:column;gap:6px}.home-bar{height:12px;border-radius:6px;background:var(--surface-2);border:1px solid var(--line);overflow:hidden}.home-barfill{height:100%;background:var(--primary);min-width:2px}.home-histhead{display:flex;align-items:center;gap:8px}.home-chip.week{background:var(--surface-2);color:var(--text);border:1px solid var(--line);font-weight:600}.home-ex.ex4{--lc: var(--lesson4);--lbg: var(--lesson4-bg);--link: var(--lesson4-ink)}.home-ex.ex5{--lc: var(--lesson5);--lbg: var(--lesson5-bg);--link: var(--lesson5-ink)}.home-xp{display:flex;flex-direction:column;gap:8px;background:var(--score-bg);border-color:var(--score);color:var(--score-ink)}.home-xprow{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.home-xp .home-bar{height:14px;background:var(--surface)}.home-xpfill{background:var(--score)}.home-count{font-weight:700;margin:0}.home-grid{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.home-sticker{width:100%;min-height:124px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:8px 4px;font:inherit;color:var(--text);text-align:center;background:var(--surface);border:2px solid var(--line);border-radius:14px;cursor:pointer}.home-sticker.locked{cursor:default;opacity:.6;background:var(--surface-2);border-style:dashed}.home-sticker.locked .sticker{filter:grayscale(1);opacity:.5}.home-sname{font-size:1rem;font-weight:700;line-height:1.2}.home-rarity{font-size:1rem;color:var(--text-dim);margin:0}.rar-common{border-color:var(--line)}.rar-rare{border-color:var(--lesson1);border-width:3px}.rar-legendary{border-color:var(--score);border-width:3px;box-shadow:0 0 0 3px var(--score-bg),0 0 14px var(--score)}.home-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;display:grid;place-items:center;padding:16px;background:#0000008c}.home-detail{width:100%;max-width:360px;display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center}.home-detail .btn{width:100%}.home-zh{font-size:2rem;margin:0}.home-giftlist{list-style:none;padding:0;margin:0;display:grid;gap:8px;width:100%}.home-goal{display:flex;flex-direction:column;gap:8px;background:var(--ok-bg);border-color:var(--ok);color:var(--ok-ink)}.home-goal .home-bar{height:14px;background:var(--surface)}.home-goalfill{background:var(--ok)}.home-goaldone{color:var(--ok-ink)}.home-title{font-size:1rem;font-weight:700;padding:2px 10px;border-radius:999px;background:var(--surface);color:var(--score-ink);border:1px solid var(--score)}.home-badge.earned{border-color:var(--score);background:var(--score-bg);color:var(--score-ink)}.home-badge.earned .home-rarity,.home-badge.earned .pinyin{color:var(--score-ink)}.home-badge.locked{opacity:.6;border-style:dashed;background:var(--surface-2);cursor:default}.home-badges .home-sticker{min-height:150px}.home-ex.ex6{--lc: var(--lesson6, #4d7c0f);--lbg: var(--lesson6-bg, #ecf8cf);--link: var(--lesson6-ink, #3a5a0a)}.home-ex.ex7{--lc: var(--lesson7, #8a5a2b);--lbg: var(--lesson7-bg, #f6e9dc);--link: var(--lesson7-ink, #5e3a16)}:root{--bg: #fff7ec;--surface: #ffffff;--surface-2: #fff0d9;--text: #2b2438;--text-dim: #62597a;--line: #eadfc9;--primary: #6d4aff;--on-primary: #ffffff;--lesson1: #2f7df6;--lesson1-bg: #e3efff;--lesson1-ink: #124a9e;--on-lesson1: #ffffff;--lesson2: #c04bd6;--lesson2-bg: #f8e6fc;--lesson2-ink: #7a1d8c;--on-lesson2: #ffffff;--lesson3: #f08a00;--lesson3-bg: #ffecd1;--lesson3-ink: #8a4a00;--on-lesson3: #2b1700;--lesson4: #0e7f72;--lesson4-bg: #dcf7f2;--lesson4-ink: #0b5c52;--on-lesson4: #ffffff;--lesson5: #c2255c;--lesson5-bg: #fde3ee;--lesson5-ink: #8a1440;--on-lesson5: #ffffff;--lesson6: #4d7c0f;--lesson6-bg: #ecf8cf;--lesson6-ink: #3a5a0a;--on-lesson6: #ffffff;--lesson7: #8a5a2b;--lesson7-bg: #f6e9dc;--lesson7-ink: #5e3a16;--on-lesson7: #ffffff;--xp: #6d4aff;--xp-bg: #ece7ff;--xp-ink: #3b22a8;--rarity-common: #7a8499;--rarity-common-bg: #eef0f5;--rarity-rare: #2f7df6;--rarity-rare-bg: #e3efff;--rarity-legend: #f5b400;--rarity-legend-bg: #fff1bf;--rarity-ink: #2b2438;--on-lesson: #ffffff;--ok: #1f9d55;--ok-bg: #dcf7e6;--ok-ink: #0d5a2d;--near: #e0a100;--near-bg: #fff3c4;--near-ink: #6b4a00;--bad: #e0453f;--bad-bg: #fde3e1;--bad-ink: #8f1f1a;--streak: #ff5a1f;--streak-bg: #ffe4d6;--streak-ink: #8a2a00;--score: #f5b400;--score-bg: #fff1bf;--score-ink: #6b4a00;--warn: #9a4a06;--warn-bg: #fff3c4;--grad-brand: linear-gradient(135deg, #6d4aff, #8d3fb0);--tabbar-h: 56px}@media (prefers-color-scheme: dark){:root{--bg: #14121f;--surface: #201d33;--surface-2: #2a2640;--text: #f4f1ff;--text-dim: #b8b2d6;--line: #3a3557;--primary: #a591ff;--on-primary: #14121f;--lesson1: #7db0ff;--lesson1-bg: #1d2a47;--lesson1-ink: #cfe2ff;--on-lesson1: #14121f;--lesson2: #e29af2;--lesson2-bg: #36203f;--lesson2-ink: #f5d6fb;--on-lesson2: #14121f;--lesson3: #ffb347;--lesson3-bg: #3b2a12;--lesson3-ink: #ffdba8;--on-lesson3: #14121f;--lesson4: #5fd8c8;--lesson4-bg: #12302c;--lesson4-ink: #c4f5ee;--on-lesson4: #0b1a18;--lesson5: #ff8fb8;--lesson5-bg: #3a1626;--lesson5-ink: #ffd3e3;--on-lesson5: #1a0a10;--lesson6: #b5e04a;--lesson6-bg: #26310f;--lesson6-ink: #e3f6a8;--on-lesson6: #141a05;--lesson7: #e0b184;--lesson7-bg: #33261b;--lesson7-ink: #f4dcc4;--on-lesson7: #1e130a;--xp: #a591ff;--xp-bg: #2a2450;--xp-ink: #ddd5ff;--rarity-common: #9aa3b8;--rarity-common-bg: #25283a;--rarity-rare: #7db0ff;--rarity-rare-bg: #1d2a47;--rarity-legend: #ffd04d;--rarity-legend-bg: #3a2f0d;--rarity-ink: #f4f1ff;--on-lesson: #14121f;--ok: #4cd485;--ok-bg: #14301f;--ok-ink: #bff2d4;--near: #ffd04d;--near-bg: #3a2f0d;--near-ink: #ffe9a8;--bad: #ff8a84;--bad-bg: #3a1a1a;--bad-ink: #ffd2cf;--streak: #ff8a5c;--streak-bg: #3d1e12;--streak-ink: #ffd5c2;--score: #ffd04d;--score-bg: #3a2f0d;--score-ink: #ffe9a8;--warn: #ffd04d;--warn-bg: #3a2f0d;--grad-brand: linear-gradient(135deg, #a591ff, #e29af2)}}*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--text)}body{font-family:system-ui,-apple-system,Segoe UI,sans-serif;font-size:17px;line-height:1.45;background:linear-gradient(180deg,var(--lesson2-bg) 0,transparent 220px) no-repeat,var(--bg)}[hidden]{display:none!important}h1{font-size:1.5rem;margin:8px 0 12px}h2{font-size:1.15rem;margin:0 0 8px}h3{margin:8px 0}p{margin:0 0 8px}.dim{color:var(--text-dim)}.small-text{font-size:1rem}.app{max-width:480px;margin:0 auto;min-height:100vh;min-height:100dvh;display:flex;flex-direction:column}.content{flex:1;padding:0 16px calc(var(--tabbar-h) + 24px + env(safe-area-inset-bottom));padding-top:env(safe-area-inset-top)}.page{display:flex;flex-direction:column;gap:12px}.page>h1,.pagehead h1{color:var(--primary)}.banners{position:sticky;top:0;z-index:20;padding-top:env(safe-area-inset-top)}.banners>*{margin:8px 16px 0}.brand{display:flex;align-items:center;gap:8px;margin:12px 0 4px;padding:8px 14px;border-radius:16px;font-size:1.25rem;font-weight:800;color:#fff;background:var(--grad-brand)}@media (prefers-color-scheme: dark){.brand{color:#14121f}}.sticker{display:inline-block;line-height:1;font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif;-webkit-user-select:none;user-select:none}.sticker--sm{font-size:24px}.sticker--md{font-size:40px}.sticker--lg{font-size:72px}.sticker--xl{font-size:96px}.sticker-bg{display:grid;place-items:center;border-radius:50%;background:var(--surface-2);box-shadow:0 2px 0 var(--line)}@keyframes pop{0%{transform:scale(.4);opacity:0}70%{transform:scale(1.15)}to{transform:scale(1);opacity:1}}@keyframes wiggle{0%,to{transform:rotate(0)}25%{transform:rotate(-8deg)}75%{transform:rotate(8deg)}}@keyframes bob{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes slideup{0%{transform:translateY(20px);opacity:0}}.anim-pop{animation:pop .35s ease-out both}.anim-wiggle{animation:wiggle .6s ease-in-out 1}.anim-bob{animation:bob 2.4s ease-in-out infinite}.badge{display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:2px 12px;border-radius:999px;font-weight:700;background:var(--surface-2)}.banner{border-radius:12px;padding:8px 12px;background:var(--warn-bg);border:1px solid var(--warn)}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:30;display:grid;grid-template-columns:repeat(3,1fr);max-width:480px;margin:0 auto;height:calc(var(--tabbar-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:var(--surface);border-top:0;border-radius:18px 18px 0 0;box-shadow:0 -4px 16px #0000001a}.tab{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;min-height:44px;margin:4px 6px;border:0;border-radius:14px;background:none;color:var(--text-dim);font:inherit;font-size:.875rem;cursor:pointer}.tab>span:first-child{font-size:1.5rem;line-height:1.2}.tab.on{color:var(--primary);font-weight:700;background:var(--surface-2);box-shadow:inset 0 -3px 0 var(--primary)}.tab.on>span:first-child{animation:pop .35s ease-out both}.dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--bad);margin-left:4px}.card{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:16px;box-shadow:0 2px 10px #6d4aff14}.card>h2{color:var(--primary)}.card.dimmed{opacity:.55}.item{position:relative;display:flex;flex-direction:column;gap:4px;list-style:none;border-left:8px solid var(--line)}.item.box-new{border-left-color:var(--lesson1);background:linear-gradient(90deg,var(--lesson1-bg),var(--surface) 45%)}.item.box-review{border-left-color:var(--lesson3);background:linear-gradient(90deg,var(--lesson3-bg),var(--surface) 45%)}.item.box-known{border-left-color:var(--ok);background:linear-gradient(90deg,var(--ok-bg),var(--surface) 45%)}.item .sticker-pos{position:absolute;top:8px;right:12px}.item .hanzi.list{padding-right:40px}.list{padding:0;margin:0;display:flex;flex-direction:column;gap:12px}.review{gap:6px;display:flex;flex-direction:column}.hanzi{font-family:Noto Sans SC,PingFang SC,Microsoft YaHei,sans-serif;line-height:1.3}.hanzi.list{font-size:1.5rem}.pinyin{font-size:1rem;color:var(--text-dim)}.tag{font-size:.875rem;color:var(--warn)}.btn{min-height:48px;min-width:44px;padding:0 16px;border:2px solid var(--line);border-radius:14px;background:var(--surface);color:var(--text);font:inherit;font-weight:600;cursor:pointer}.btn.primary{min-height:52px;background:var(--grad-brand);border-color:transparent;color:#fff;box-shadow:0 3px 10px #6d4aff4d}@media (prefers-color-scheme: dark){.btn.primary{color:#14121f}}.btn.small{min-height:44px;padding:0 12px;font-size:1rem}.btn.compact{min-height:44px}.btn.ghost{border-color:transparent;background:none;color:var(--primary)}.btn.danger{color:var(--bad);border-color:var(--bad);background:none}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:active{transform:scale(.97)}.btn:focus-visible,.tab:focus-visible,.seg:focus-visible,.input:focus-visible,.toastbtn:focus-visible{outline:3px solid var(--primary);outline-offset:2px}.actions{display:flex;flex-direction:column;gap:12px;margin-top:8px}.row{display:flex;gap:8px;align-items:center}.row.wrap{flex-wrap:wrap}.pagehead{display:flex;align-items:center;justify-content:space-between;gap:8px}.pagehead h1{margin:8px 0}.segmented{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;padding:4px;border:1px solid var(--line);border-radius:16px;background:var(--surface)}.seg{min-height:44px;border:0;border-radius:12px;background:none;color:var(--text);font:inherit;font-size:1rem;font-weight:600;cursor:pointer}.seg.on{background:var(--primary);color:var(--on-primary);font-weight:700}.seg.on.new{background:var(--lesson1);color:var(--on-lesson1)}.seg.on.review{background:var(--lesson3);color:var(--on-lesson3)}.seg.on.known{background:var(--ok);color:var(--on-lesson1)}.field{display:flex;flex-direction:column;gap:4px;font-weight:600}.input{width:100%;min-height:48px;padding:8px 12px;font:inherit;font-size:1rem;font-weight:400;border:2px solid var(--line);border-radius:12px;background:var(--surface-2);color:var(--text)}.input:focus{border-color:var(--primary)}.input.big{font-size:1.75rem;resize:vertical}.counter{text-align:right;font-size:.875rem;color:var(--text-dim);margin-top:-6px}.counter.bad{color:var(--bad-ink);font-weight:700}.formscreen{display:flex;flex-direction:column;gap:12px;background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:16px}.formhead{display:flex;align-items:center;gap:8px}.formhead h2{margin:0}.warnbox{background:var(--warn-bg);border:1px solid var(--warn);color:var(--text);border-radius:12px;padding:10px 12px}.errbox{background:var(--bad-bg);border:1px solid var(--bad);color:var(--bad-ink);border-radius:12px;padding:10px 12px}.okbox{background:var(--ok-bg);border:1px solid var(--ok);color:var(--ok-ink);border-radius:12px;padding:10px 12px;margin-top:8px}.errline{color:var(--bad-ink);font-weight:600;font-size:1rem}.reminder{display:flex;align-items:center;justify-content:space-between;gap:8px;background:var(--warn-bg);border:1px solid var(--warn);border-radius:12px;padding:8px 12px;min-height:56px}details{margin-top:6px}summary{min-height:44px;display:flex;align-items:center;cursor:pointer;font-weight:600}.confirm{margin-top:8px;padding:10px 12px;border:1px solid var(--bad);border-radius:12px;background:var(--bad-bg);color:var(--bad-ink);display:flex;flex-direction:column;gap:8px}.empty{text-align:center;padding:24px 8px;display:flex;flex-direction:column;align-items:center;gap:12px;background:var(--surface);border:2px dashed var(--line);border-radius:20px}.big-emoji{font-size:4rem}.preview{list-style:none;padding:0;margin:0 0 8px}.preview li{padding:2px 0}.toast{position:fixed;left:16px;right:16px;z-index:40;max-width:448px;margin:0 auto;bottom:calc(var(--tabbar-h) + 12px + env(safe-area-inset-bottom));display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--text);color:var(--bg);border-radius:14px;padding:8px 8px 8px 16px;min-height:48px;box-shadow:0 6px 18px #00000040;animation:slideup .25s ease-out}.toastbtn{min-height:44px;min-width:44px;padding:0 12px;border:0;background:none;color:inherit;font:inherit;font-weight:700;text-decoration:underline;cursor:pointer}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
