:root{--bg: #121212;--card: #181818;--line: #2c2c2c;--text: #f5f5f2;--muted: #b5b5ae;--neon: #c8ff3d;--bad: #ff5a4f;--amber: #e4b15a;--ink: #121212;--edge: #3a3a3a;--chip: #151515;--inset: #141414;--field: #101010;--well: #101010;--toggle: #1c1c1c;--faint: #8d8d8d;--neon-ink: #243000;--pack: #171717;--pack-edge: #343434;--pack-on: #5c5c5c;--result: #161616;--meaning: #d2d2d2;--amber-wash: #3a3420;--amber-panel: #241e14;--amber-line: #6a5430;--amber-ink: #f6ead4;--amber-muted: #c9a36a;--session: #14140f;--warm-line: #3a3428;--streak: #16140f;--flame-dim: #8a7044;--notice: #2a2418;--notice-soft: #f3e6cc;--model: #16180f;--model-line: #3d4a22;--meter: #2a2a2a;--alert: #2a1414;--alert-line: #a33b3b;--alert-ink: #ffd7d2;--ok-panel: #142216;--ok-line: #3f6b32;--ok-ink: #d9f5cf;--scrim: rgba(0, 0, 0, .62);--dock-glow: inset 0 1px 0 rgba(200, 255, 61, .35);--dock-shadow: 0 -12px 28px rgba(0, 0, 0, .45);color-scheme:dark;font-family:Segoe UI,PingFang SC,Noto Sans CJK SC,Microsoft YaHei,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}html[data-theme=light]{color-scheme:light;--bg: #f4f2ea;--card: #ffffff;--line: #e4e0d6;--text: #1a1a17;--muted: #5c5a54;--neon: #c8ff3d;--bad: #d23c32;--amber: #a56b12;--ink: #121212;--edge: #d7d3c8;--chip: #ffffff;--inset: #f7f5ef;--field: #ffffff;--well: #e8e4da;--toggle: #e7e4dc;--faint: #6e6c66;--neon-ink: #243000;--pack: #ffffff;--pack-edge: #d7d3c8;--pack-on: #1a1a17;--result: #ffffff;--meaning: #3a3934;--amber-wash: #f4e4bc;--amber-panel: #fff6e2;--amber-line: #e4c98a;--amber-ink: #3e2f14;--amber-muted: #7a5b2a;--session: #fffdf8;--warm-line: #eadfca;--streak: #fffaf1;--flame-dim: #b18445;--notice: #fff6e2;--notice-soft: #6d5730;--model: #f6fbe8;--model-line: #c9d98a;--meter: #e5e1d6;--alert: #fff1ef;--alert-line: #e7aaa4;--alert-ink: #6e261f;--ok-panel: #eef8ea;--ok-line: #8fbf7c;--ok-ink: #1d3d18;--scrim: rgba(28, 26, 20, .46);--dock-glow: inset 0 1px 0 rgba(180, 200, 40, .55);--dock-shadow: 0 -10px 28px rgba(40, 36, 24, .1)}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%;max-width:100%}html{overflow-x:clip}body{background:radial-gradient(880px 420px at 0% -10%,rgba(200,255,61,.07),transparent 58%),radial-gradient(640px 360px at 100% 0%,rgba(255,255,255,.035),transparent 50%),var(--bg);color:var(--text)}html[data-theme=light] body{background:radial-gradient(880px 420px at 0% -10%,rgba(198,224,60,.28),transparent 58%),radial-gradient(640px 360px at 100% 0%,rgba(255,255,255,.85),transparent 46%),var(--bg)}html[data-theme=light] .deck-well{box-shadow:0 12px 28px #28241814}button,p{font:inherit}.wrap{max-width:1120px;margin:0 auto;padding:calc(28px + env(safe-area-inset-top,0px)) calc(28px + env(safe-area-inset-right,0px)) calc(48px + env(safe-area-inset-bottom,0px)) calc(28px + env(safe-area-inset-left,0px))}.top{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:22px;flex-wrap:wrap}h1{margin:0;font-size:28px;font-weight:700;letter-spacing:-.03em}.tag{margin:6px 0 0;color:var(--muted);font-size:14px}.lang-switch{display:inline-flex;border:1px solid var(--edge);border-radius:999px;background:var(--chip);padding:3px}.lang-switch button{appearance:none;border:0;background:transparent;color:var(--text);font-size:14px;font-weight:700;padding:8px 16px;border-radius:999px;cursor:pointer;line-height:1.2}.lang-switch button small{display:block;font-size:11px;font-weight:600;opacity:.75;margin-top:2px}.lang-switch button.on{background:var(--neon);color:var(--ink)}.lang-switch button.on small{color:var(--neon-ink);opacity:.85}.top-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}.settings-open{appearance:none;display:grid;place-items:center;flex:0 0 auto;width:44px;height:44px;padding:0;background:var(--chip);color:var(--text);border:1px solid var(--edge);border-radius:999px;cursor:pointer}.settings-gear{display:block}.settings-open:hover,.settings-open[aria-expanded=true]{border-color:var(--neon);color:var(--neon)}.settings-backdrop{position:fixed;inset:0;z-index:40;display:flex;align-items:flex-end;justify-content:center;padding:calc(12px + env(safe-area-inset-top,0px)) calc(12px + env(safe-area-inset-right,0px)) calc(12px + env(safe-area-inset-bottom,0px)) calc(12px + env(safe-area-inset-left,0px));background:var(--scrim)}.settings-sheet{width:min(440px,100%);max-height:min(640px,calc(100dvh - 24px));overflow:auto;background:var(--card);border:1px solid var(--line);border-radius:22px;padding:18px 18px 20px}.settings-sheet:focus{outline:none}.settings-sheet:focus-visible{outline:2px solid var(--neon);outline-offset:3px}.settings-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.settings-head h2{margin:0;font-size:20px;letter-spacing:-.02em}.settings-head h2 small{color:var(--muted);font-size:14px;font-weight:600}.settings-close{appearance:none;background:transparent;color:var(--text);border:1px solid var(--edge);border-radius:999px;padding:6px 12px;cursor:pointer;line-height:1.15;text-align:center}.settings-close b{display:block;font-size:13px;font-weight:750}.settings-close small{display:block;margin-top:2px;color:var(--muted);font-size:11px;font-weight:600}.settings-sheet .reminder-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px 12px;margin-top:16px;padding:10px 12px;border:1px solid var(--line);border-radius:14px;background:var(--inset);min-width:0;max-width:100%}.settings-sheet .reminder-alert{margin-top:12px}.theme-block{margin-top:16px;padding:12px;border:1px solid var(--line);border-radius:14px;background:var(--inset)}.theme-label{margin:0 0 10px;line-height:1.2}.theme-label b{display:block;font-size:14px;font-weight:750}.theme-label small{display:block;margin-top:2px;color:var(--muted);font-size:12px;font-weight:600}.theme-switch{display:flex;border:1px solid var(--edge);border-radius:999px;background:var(--chip);padding:3px}.theme-switch button{appearance:none;flex:1 1 0;min-width:0;min-height:44px;border:0;background:transparent;color:var(--text);border-radius:999px;padding:8px 12px;cursor:pointer;line-height:1.15}.theme-switch button span{display:block;font-size:14px;font-weight:750}.theme-switch button small{display:block;margin-top:2px;font-size:11px;font-weight:600;opacity:.75}.theme-switch button.on{background:var(--neon);color:var(--ink)}.theme-switch button.on small{color:var(--neon-ink);opacity:.85}@media(min-width:721px){.settings-backdrop{align-items:center}}.stage{display:block}.card{background:var(--card);border:1px solid var(--line);border-radius:22px;padding:18px 18px 20px}.cat-card{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;overflow:hidden;min-height:0}.cat-hit{appearance:none;border:0;background:none;color:inherit;font:inherit;width:100%;margin:0;padding:0;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;flex:1}.cat-hit:focus-visible{outline:2px solid var(--neon);outline-offset:4px}.cat-card.listen,.cat-card.talk{box-shadow:inset 0 0 0 2px var(--neon)}.stage-light{position:absolute;width:280px;height:280px;border-radius:50%;top:48px;background:radial-gradient(circle,rgba(255,255,255,.05),transparent 68%);pointer-events:none}.cat-card.listen .stage-light{background:radial-gradient(circle,rgba(200,255,61,.16),transparent 68%)}.cat-svg{width:min(340px,100%);height:auto;position:relative;z-index:1}.nameplate{width:100%;margin-top:2px;background:var(--neon);color:var(--ink);border-radius:12px;padding:10px 14px;display:flex;justify-content:space-between;align-items:baseline;gap:12px;position:relative;z-index:1}.nameplate strong{font-size:18px}.nameplate span{font-size:13px;font-weight:700}.sets{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:18px}.set{appearance:none;border:1px solid var(--edge);background:transparent;color:var(--text);border-radius:999px;padding:6px 12px 5px;cursor:pointer;text-align:left;line-height:1.15}.set b{display:block;font-size:13px;font-weight:700}.set small{display:block;font-size:11px;color:var(--muted);font-weight:500}.set.on{background:var(--neon);border-color:var(--neon);color:var(--ink)}.set.on small{color:var(--neon-ink)}.set:hover{border-color:var(--neon)}.topline{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:8px;min-width:0}#setlabel{margin:0;min-width:0;font-size:15px;color:var(--muted);overflow-wrap:anywhere}#setlabel b{color:var(--text);font-size:16px;margin-right:6px}#progress{margin:0;color:var(--neon);font-weight:750;font-size:22px;font-variant-numeric:tabular-nums;letter-spacing:.02em}.sentence{margin:8px 0 0;font-size:clamp(28px,3.2vw,42px);line-height:1.4;font-weight:650;letter-spacing:.01em;min-height:2.8em;overflow-wrap:anywhere}.sentence .ok{background:#245c34;color:#f3f7f1;border-radius:6px;padding:0 .06em}.sentence .bad{background:var(--bad);color:#fff;border-radius:6px;padding:0 .06em}.sentence .unk{color:inherit;background:transparent;border-radius:6px;padding:0 .08em 1px;border-bottom:1.5px dashed #8A5A18}.meaning{margin:12px 0 0;color:var(--meaning);font-size:18px;line-height:1.45;min-height:1.45em;overflow-wrap:anywhere}.pace{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;margin-top:18px}.pace-label{margin:0;color:var(--muted);font-size:12px;line-height:1.2}.pace-label b{display:block;color:var(--text);font-size:14px}.pace-switch{display:inline-flex;border:1px solid var(--edge);border-radius:999px;background:var(--chip);padding:3px}.pace-switch button{appearance:none;border:0;background:transparent;color:var(--text);font-size:13px;font-weight:700;padding:6px 12px;border-radius:999px;cursor:pointer;line-height:1.15}.pace-switch button small{display:block;font-size:11px;font-weight:600;opacity:.75;margin-top:1px}.pace-switch button.on{background:var(--neon);color:var(--ink)}.pace-switch button.on small{color:var(--neon-ink);opacity:.85}.thumb-dock{display:contents}.actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}button.act{appearance:none;border-radius:12px;padding:10px 14px;cursor:pointer;line-height:1.15;text-align:center;min-width:92px}button.act b{display:block;font-size:16px;font-weight:750}button.act small{display:block;margin-top:3px;font-size:12px;font-weight:600;opacity:.8}button.primary{background:var(--neon);color:var(--ink);border:1px solid var(--neon);flex:1 1 140px}button.primary:hover{filter:brightness(1.06)}button.primary.live{box-shadow:inset 0 0 0 2px var(--neon-ink)}button.ghost{background:transparent;color:var(--text);border:1px solid var(--edge)}button.ghost:hover{border-color:var(--neon);color:var(--neon)}button.act:focus-visible,.set:focus-visible,.lang-switch button:focus-visible,.settings-open:focus-visible,.settings-close:focus-visible,.theme-switch button:focus-visible,.pace-switch button:focus-visible,.mode-switch button:focus-visible{outline:2px solid var(--neon);outline-offset:2px}button.act:disabled,.pace-switch button:disabled{opacity:.45;cursor:default;filter:none}.status-note{margin:14px 0 0;color:var(--neon);font-size:14px;line-height:1.45}.legend{margin:14px 0 0;color:var(--muted);font-size:13px;line-height:1.45}.sw{display:inline-block;width:10px;height:10px;border-radius:2px;margin:0 4px 0 8px;vertical-align:-1px}.sw.ok{background:var(--neon);margin-left:0}.sw.bad{background:var(--bad)}.sw.unk{background:transparent;border:1.5px dashed var(--amber);box-sizing:border-box}.result{margin-top:16px;border-top:1px solid var(--line);padding-top:14px;min-height:92px}.kicker{margin:0;color:var(--muted);font-size:12px;letter-spacing:.04em;text-transform:uppercase}#heard{margin:6px 0 0;font-size:18px;line-height:1.4}.fail-headline{font-weight:650;line-height:1.45}.heard-muted{margin:8px 0 0;color:var(--muted);font-size:14px;line-height:1.45}.fail-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}#score{margin:8px 0 0;font-size:20px;font-weight:750;font-variant-numeric:tabular-nums;min-height:1.2em}#score:empty{display:none;margin:0;min-height:0}#err{color:var(--bad);margin:8px 0 0}#err:empty{display:none}.browser-stack{display:flex;flex-direction:column;gap:10px;margin-bottom:16px;min-width:0;max-width:100%}.browser-stack:empty{display:none}.browser-banner,.model-interstitial{border-radius:16px;padding:14px 14px 12px}.browser-banner{background:var(--notice);border:1px solid var(--amber);color:var(--amber-ink)}.browser-banner .zh,.model-interstitial h2,.model-copy b,.unsure-tip b{margin:0;font-size:16px;font-weight:750;line-height:1.45}.browser-banner .en,.model-interstitial h2 small,.model-copy small,.unsure-tip small,.kicker-zh{display:block;margin:4px 0 0;font-size:13px;font-weight:600;line-height:1.45;color:var(--muted)}.browser-banner .en{color:var(--notice-soft)}.browser-copy{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:10px;min-width:0;max-width:100%}.browser-copy .url{margin:0;flex:1 1 180px;min-width:0;font-size:13px;line-height:1.4;overflow-wrap:anywhere;word-break:break-all;-webkit-user-select:text;user-select:text}.browser-copy .act{margin-top:8px}.model-interstitial{background:var(--model);border:1px solid var(--model-line);margin-bottom:16px}.model-interstitial h2 small{color:var(--muted);font-size:14px}.model-copy{margin:8px 0 0}.model-copy b{display:block;font-size:15px;font-weight:650}.model-meter{height:8px;border-radius:999px;background:var(--meter);overflow:hidden;margin:12px 0 6px}.model-meter>span{display:block;height:100%;background:var(--neon)}.model-meter-label{margin:0;color:var(--neon);font-size:14px;font-variant-numeric:tabular-nums}.model-actions{margin-top:12px}.streak-chrome{display:flex;flex-direction:column;gap:8px;margin:12px 0 8px}.streak-strip{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;padding:10px 12px;border:1px solid var(--warm-line);border-radius:14px;background:var(--streak)}.streak-flame{width:22px;height:30px;color:var(--amber);flex:0 0 auto;filter:drop-shadow(0 0 6px rgba(228,177,90,.4))}.streak-flame.is-dim{color:var(--flame-dim);filter:none;opacity:.72}.streak-count{display:inline-flex;align-items:baseline;gap:6px;color:var(--text);font-size:14px}.streak-count b{font-variant-numeric:tabular-nums;font-size:22px;font-weight:750;color:var(--amber);letter-spacing:-.02em}.streak-strip.is-quiet .streak-count b{color:var(--muted)}.streak-count span{font-weight:700}.streak-count small{color:var(--muted);font-size:12px}.streak-best{margin-left:auto}.streak-best b{color:var(--text);font-size:18px}.streak-strip.is-quiet .streak-best b{color:var(--text)}.reminder-toggle{appearance:none;width:42px;height:24px;border-radius:999px;border:1px solid var(--edge);background:var(--toggle);position:relative;padding:0;cursor:pointer;flex:0 0 auto}.reminder-toggle span{position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:var(--faint)}.reminder-toggle.on{background:var(--amber-wash);border-color:var(--amber)}.reminder-toggle.on span{left:20px;background:var(--amber)}.reminder-label{margin:0;flex:1 1 140px;line-height:1.2}.reminder-label b{display:block;font-size:14px;font-weight:750}.reminder-label small{display:block;margin-top:2px;color:var(--muted);font-size:12px;font-weight:600}.reminder-time{appearance:none;width:11rem;min-width:11rem;background:var(--field);color:var(--text);border:1px solid var(--edge);border-radius:10px;padding:8px 10px;font:inherit;font-weight:700;font-variant-numeric:tabular-nums;color-scheme:inherit}.reminder-note{flex:1 0 100%;margin:0;color:var(--muted);font-size:13px;line-height:1.45}.reminder-note .saved,.reminder-note .hint,.reminder-note small{display:block}.reminder-note .saved{color:var(--amber-ink);font-weight:650}.reminder-note small{margin-top:2px}.reminder-note .saved+small+.hint{margin-top:8px}.milestone-toast{border-radius:14px;padding:12px 14px;background:var(--amber-panel);border:1px solid var(--amber-line);color:var(--amber-ink);max-width:100%;overflow-wrap:anywhere}.milestone-toast .primary{margin:0;font-size:15px;font-weight:650;line-height:1.45}.milestone-toast .secondary{margin:4px 0 0;color:var(--amber-muted);font-size:13px;font-weight:600;line-height:1.45}.milestone-dismiss{appearance:none;margin-top:10px;background:transparent;color:var(--amber-ink);border:1px solid var(--amber-line);border-radius:999px;padding:6px 12px 5px;cursor:pointer;line-height:1.15;text-align:left}.milestone-dismiss b{display:block;font-size:13px;font-weight:750}.milestone-dismiss small{display:block;margin-top:2px;color:var(--amber-muted);font-size:11px;font-weight:600}.session-strip{display:flex;flex-wrap:wrap;align-items:flex-start;gap:8px 12px;margin:0 0 14px;padding:10px 12px;border:1px solid var(--warm-line);border-radius:14px;background:var(--session)}.session-counts{display:flex;flex-wrap:wrap;align-items:center;gap:8px;width:100%}.session-count{display:inline-flex;align-items:baseline;gap:6px;color:var(--text);font-size:14px}.session-count b{font-variant-numeric:tabular-nums;font-size:18px}.session-count small{color:var(--muted);font-size:12px}button.session-count.unsure{appearance:none;background:transparent;border:1px solid var(--amber-line);color:var(--amber);border-radius:999px;padding:4px 10px;cursor:pointer;font:inherit}button.session-count.unsure small{color:var(--amber-muted)}.session-stars{margin-left:auto;color:var(--neon);font-weight:750;font-size:16px;letter-spacing:.02em}.session-summary{width:100%}.session-summary p{margin:0;line-height:1.45}.session-summary .primary{font-size:14px}.session-summary .secondary{margin-top:2px;color:var(--muted);font-size:13px}.unsure-tip{width:100%;margin:0;padding:8px 10px;border-radius:10px;background:var(--amber-panel);color:var(--amber)}.session-reset{margin-left:auto}.feedback p{margin:8px 0 0;line-height:1.45}.feedback .primary{font-size:16px}.feedback .secondary{color:var(--muted);font-size:14px}.result.recognition{border-top-color:var(--amber-line)}.kicker.mic-heard{text-transform:none;letter-spacing:0;color:var(--amber);font-size:14px;font-weight:750}#heard.heard-muted{color:var(--muted)}.retry{margin-top:12px}button.session-count.unsure:focus-visible,.session-reset:focus-visible,.model-actions .act:focus-visible,.browser-stack .act:focus-visible,.reminder-toggle:focus-visible,.reminder-time:focus-visible,.milestone-dismiss:focus-visible{outline:2px solid var(--neon);outline-offset:2px}.reminder-card{margin-top:18px;min-width:0;max-width:100%}.reminder-card .legend small{display:block;margin-top:2px}.reminder-card #reminder-platform span,.reminder-card #reminder-note span{display:block}.reminder-card h2{margin:0;font-size:18px;letter-spacing:-.02em}.reminder-card h2 small{color:var(--muted);font-size:14px;font-weight:600}.reminder-card .reminder-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;margin-top:12px;min-width:0;max-width:100%}.reminder-card .reminder-row label{display:inline-flex;align-items:center;gap:8px;font-size:14px;font-weight:700;min-width:0}.reminder-card .reminder-row label small{display:block;color:var(--muted);font-size:12px;font-weight:600}.reminder-card .reminder-row input[type=time],.reminder-card .reminder-row select{background:var(--chip);color:var(--text);border:1px solid var(--edge);border-radius:10px;padding:8px 10px;font:inherit;max-width:100%}.reminder-card .reminder-row input[type=checkbox]{width:18px;height:18px;accent-color:var(--neon)}.reminder-card .legend{overflow-wrap:anywhere}.reminder-alert{margin:12px 0 0;padding:12px 14px;border-radius:14px;border:1px solid var(--alert-line);background:var(--alert);color:var(--alert-ink);font-size:15px;font-weight:700;line-height:1.45}.reminder-alert b,.reminder-alert small,.reminder-alert span{display:block}.reminder-alert small{margin-top:4px;font-weight:650}.reminder-alert.is-on{border-color:var(--ok-line);background:var(--ok-panel);color:var(--ok-ink)}@media(max-width:900px){.stage{display:flex;flex-direction:column;gap:14px}.wrap{padding:calc(14px + env(safe-area-inset-top,0px)) calc(14px + env(safe-area-inset-right,0px)) calc(28px + var(--dock-space, 0px) + env(safe-area-inset-bottom,0px)) calc(14px + env(safe-area-inset-left,0px))}h1{font-size:22px}.tag{overflow-wrap:anywhere}.cat-svg{width:min(280px,78vw)}.top,.top>div,.top-actions,.lang-switch,.nameplate,.nameplate strong,.nameplate span{min-width:0;max-width:100%}.browser-banner,.model-interstitial,.card,.streak-chrome,.session-strip{min-width:0;max-width:100%}.browser-banner,.model-interstitial{overflow-wrap:anywhere}}@media(max-width:720px){:root{--dock-space: calc(176px + env(safe-area-inset-bottom, 0px)) }h1{font-size:22px}.top{gap:10px;margin-bottom:12px;align-items:center}.tag{font-size:13px}.top-actions{gap:8px}.lang-switch{max-width:100%}.lang-switch button,.settings-close{min-height:44px;padding:6px 12px}.settings-open{width:44px;height:44px;min-height:44px;padding:0}.settings-backdrop{align-items:flex-end}.settings-sheet .reminder-row{display:grid;grid-template-columns:44px minmax(0,1fr);grid-template-areas:"toggle label" "time time" "note note";align-items:center;gap:8px;padding:8px 10px}.settings-sheet .reminder-time{width:100%;min-width:0;max-width:100%}.cat-svg{width:min(180px,48vw)}.cat-card{padding:12px 12px 14px}.nameplate{flex-wrap:wrap;gap:4px 12px}.nameplate span{margin-left:auto}.practice-card{display:flex;flex-direction:column;min-width:0;padding:14px 14px 16px}.practice-card>*{min-width:0;max-width:100%}.sets{flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x proximity;scroll-padding-inline:2px;scrollbar-width:none;margin-bottom:12px;padding-bottom:2px;-webkit-overflow-scrolling:touch}.sets::-webkit-scrollbar{display:none}.set{flex:0 0 auto;scroll-snap-align:start;min-height:44px;padding:8px 12px}#progress{flex-shrink:0}.sentence{font-size:clamp(22px,6.4vw,32px);min-height:0;margin-top:4px}.meaning{font-size:16px;min-height:0;margin-top:8px}.thumb-dock{display:block;position:fixed;z-index:6;left:0;right:0;bottom:0;width:auto;margin:0;padding:8px calc(12px + env(safe-area-inset-right,0px)) calc(8px + env(safe-area-inset-bottom,0px)) calc(12px + env(safe-area-inset-left,0px));border:0;border-top:1px solid var(--edge);border-radius:18px 18px 0 0;background:var(--inset);box-shadow:var(--dock-glow),var(--dock-shadow)}.thumb-dock .pace{margin-top:0;gap:6px 8px}.thumb-dock .pace-label{flex:0 0 auto}.thumb-dock .pace-switch{flex:1 1 180px;min-width:0;display:flex}.thumb-dock .pace-switch button{flex:1 1 0;min-width:0;min-height:44px;padding:6px 8px}.thumb-dock .actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}.thumb-dock #prev{order:1}.thumb-dock #next{order:2}.thumb-dock #hear{order:3}.thumb-dock #say{order:4}.thumb-dock button.act{min-width:0;min-height:44px;width:100%;padding:6px 8px}.thumb-dock button.act b{font-size:15px;line-height:1.1}.thumb-dock button.act small{font-size:11px;margin-top:1px;line-height:1.1}.streak-chrome{gap:6px;margin:10px 0 6px}.streak-strip{display:grid;grid-template-columns:auto minmax(0,1fr) minmax(0,1fr);align-items:center;gap:6px 8px;padding:8px 10px}.streak-flame{width:18px;height:24px}.streak-count{display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:6px;row-gap:0;align-items:baseline;min-width:0;font-size:13px}.streak-count b{grid-row:span 2;font-size:18px}.streak-count span,.streak-count small{min-width:0;overflow-wrap:anywhere}.streak-best{margin-left:0;justify-self:end}.streak-best b{font-size:18px}.reminder-toggle{grid-area:toggle;width:44px;height:44px;border-color:transparent;background:transparent}.reminder-toggle:before{content:"";position:absolute;left:1px;top:10px;width:42px;height:24px;box-sizing:border-box;border-radius:999px;border:1px solid var(--edge);background:var(--toggle)}.reminder-toggle.on{background:transparent;border-color:transparent}.reminder-toggle.on:before{background:var(--amber-wash);border-color:var(--amber)}.reminder-toggle span{top:13px;left:4px;z-index:1}.reminder-toggle.on span{left:24px}.reminder-label{grid-area:label;flex:none}.reminder-time{grid-area:time;width:100%;min-width:0;max-width:100%;min-height:44px;font-size:16px;padding:6px 8px}.reminder-note{grid-area:note;font-size:12px;overflow-wrap:anywhere}.milestone-dismiss{min-height:44px;padding:8px 14px;display:inline-flex;flex-direction:column;justify-content:center}.session-strip{gap:8px;padding:8px 10px}.session-counts{gap:8px}.session-count{font-size:13px;min-width:0}.session-count b{font-size:16px}button.session-count.unsure{min-height:44px;padding:8px 12px;max-width:100%}.session-stars{margin-left:0}.session-reset{margin-left:0;min-height:44px}.session-summary .primary,.session-summary .secondary,.unsure-tip{overflow-wrap:anywhere}.browser-stack{gap:8px;margin-bottom:10px}.browser-banner,.model-interstitial{padding:10px 12px}.browser-banner .zh,.model-interstitial h2{font-size:15px}.browser-stack .act,.model-actions .act,.fail-actions .act,.reminder-card .reminder-row label,.reminder-card .reminder-row input[type=time]{min-height:44px}.reminder-card .reminder-row input[type=time]{font-size:16px}.reminder-card .reminder-row input[type=checkbox]{width:22px;height:22px}button.act{max-width:100%}}@media(max-width:720px)and (max-height:560px){.tag{font-size:12px}.sentence{font-size:clamp(20px,5.6vw,28px)}.model-interstitial{margin-bottom:8px;padding:8px 10px}.model-interstitial h2{font-size:15px}.model-copy{margin-top:4px}.model-meter{margin:8px 0 4px}.model-actions{margin-top:6px}.model-actions .act b{font-size:14px;line-height:1.1}.model-actions .act small{margin-top:1px;line-height:1.1}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto}.flash-card.enter-next,.flash-card.enter-prev{animation:none}}.practice-card{background:transparent;border:0;padding:0;box-shadow:none;max-width:680px}.deck-bar{display:flex;align-items:stretch;justify-content:space-between;gap:12px;margin-bottom:12px;min-width:0}.pack-toggle{appearance:none;flex:1 1 auto;min-width:0;text-align:left;border:1px solid var(--pack-edge);background:var(--pack);color:var(--text);border-radius:16px;padding:8px 12px;cursor:pointer;min-height:44px}.pack-toggle .pack-kicker{display:block;color:var(--muted);font-size:11px;font-weight:700;letter-spacing:.04em}.pack-toggle small{display:block;margin-top:2px;color:var(--muted);font-size:12px;font-weight:600;overflow-wrap:anywhere}.pack-toggle.on{border-color:var(--pack-on)}#setlabel{display:block;margin:1px 0 0;color:var(--text);font-size:15px;font-weight:750;overflow-wrap:anywhere}#progress{margin:0;flex:0 0 auto;align-self:center;color:var(--text);font-size:15px;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:0}.deck-stage{position:relative}.deck-well{position:relative;overflow:hidden;border-radius:28px;background:var(--well);min-height:280px;touch-action:pan-y;box-shadow:0 16px 36px #00000047}.deck-peek{position:absolute;top:10px;bottom:10px;border-radius:12px;z-index:0}.flash-card{position:relative;z-index:1;min-height:280px;padding:28px 60px 22px;border-radius:28px;display:flex;flex-direction:column;justify-content:center;box-shadow:inset 0 1px #ffffff73;user-select:none;-webkit-user-select:none;cursor:grab}.flash-card.is-drag{cursor:grabbing;transition:none}@keyframes card-enter-next{0%{transform:translate3d(104%,0,0)}to{transform:translateZ(0)}}@keyframes card-enter-prev{0%{transform:translate3d(-104%,0,0)}to{transform:translateZ(0)}}.flash-card.enter-next{animation:card-enter-next .2s cubic-bezier(.2,.8,.2,1) both}.flash-card.enter-prev{animation:card-enter-prev .2s cubic-bezier(.2,.8,.2,1) both}.card-kicker{margin:0 0 16px;font-size:13px;font-weight:700;line-height:1.3;color:var(--card-soft)}.card-kicker span+span:before{content:" · ";font-weight:600}.flash-card .sentence{margin:0;min-height:0;color:var(--card-ink, var(--text));font-size:clamp(30px,5vw,46px);line-height:1.28;font-weight:680;letter-spacing:-.02em}.flash-card .sentence.pinyin{font-size:clamp(22px,3.5vw,34px);line-height:1.35;letter-spacing:0;font-weight:650;overflow-wrap:normal}.flash-card .meaning{margin:16px 0 0;padding-top:14px;border-top:1px solid rgba(28,24,18,.16);color:var(--card-soft, #4a453c);font-size:17px;line-height:1.45;font-weight:600;min-height:0}.card-pos{margin:18px 0 0;color:var(--card-soft);font-size:13px;font-weight:750;font-variant-numeric:tabular-nums;letter-spacing:.04em}.deck-arrows{position:absolute;inset:0;z-index:2;display:flex;align-items:center;justify-content:space-between;padding:0 8px;pointer-events:none}.deck-arrow{pointer-events:auto;appearance:none;width:44px;height:44px;border-radius:999px;border:1px solid rgba(255,255,255,.18);background:#1010109e;color:#f6f3ec;display:grid;place-items:center;padding:0;cursor:pointer}.deck-arrow:disabled{opacity:.32;cursor:default}.deck-arrow:focus-visible,.pack-toggle:focus-visible,.pack-tile:focus-visible{outline:2px solid var(--neon);outline-offset:2px}.pack-step-title{margin:0 0 12px;font-size:20px;letter-spacing:-.02em}.pack-step-title small{display:block;margin-top:3px;color:var(--muted);font-size:13px;font-weight:600}.pack-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.pack-tile{appearance:none;border:0;border-radius:18px;min-height:108px;padding:14px 12px 12px;text-align:left;cursor:pointer;display:flex;flex-direction:column;align-items:flex-start;box-shadow:inset 0 1px #fff6}.pack-tile b{display:block;font-size:15px;font-weight:750;line-height:1.3;overflow-wrap:anywhere}.pack-tile small{display:block;margin-top:4px;font-size:12px;font-weight:600;line-height:1.3;overflow-wrap:anywhere}.pack-count{margin-top:auto;padding-top:10px;font-size:12px;font-weight:750;font-variant-numeric:tabular-nums}.pack-tile.on{box-shadow:inset 0 0 0 2px #121212c7,inset 0 1px #fff6}.practice-card .pace{margin-top:14px}.practice-card .actions{margin-top:10px}.practice-card .actions .act{flex:1 1 160px}.practice-card .status-note{color:var(--muted);font-size:13px}#model-note:empty{display:none;margin:0}.match-tip{margin:8px 0 0;padding:8px 12px 10px;border:1px solid var(--line);border-radius:14px;background:var(--card)}.match-tip-kicker{margin:0;color:var(--muted);font-size:12px;font-weight:750;letter-spacing:.02em}.match-tip .legend{margin:6px 0 0;font-size:12px;line-height:1.4}.session-more summary{cursor:pointer;color:var(--muted);font-size:13px;font-weight:700;min-height:44px;display:flex;align-items:center;gap:8px}.session-more summary::-webkit-details-marker{display:none}.practice-card .result{margin-top:4px;border-top:0;padding:12px 14px;min-height:0;background:var(--result);border:1px solid var(--line);border-radius:16px}.day-task{display:flex;align-items:baseline;gap:8px;margin:8px 0 0;padding:6px 12px;width:fit-content;max-width:100%;border:1px solid var(--line);border-radius:999px;background:var(--card)}.day-task b{font-size:15px;font-weight:750;font-variant-numeric:tabular-nums}.day-task span{font-size:13px;font-weight:700}.day-task small{color:var(--muted);font-size:12px}.day-task.is-complete b{color:#c45a12}.thumb-dock .day-task{margin:0 0 6px;width:auto;border-radius:12px}.practice-card .session-strip{margin:10px 0 0}.practice-card .streak-chrome{margin:6px 2px 0}.practice-card .streak-footer .streak-strip{background:transparent;border:0;border-radius:0;padding:8px 2px 0;gap:8px 14px}.practice-card .streak-footer .streak-flame{width:16px;height:22px;filter:none}.practice-card .streak-footer .streak-count{font-size:13px;color:var(--muted)}.practice-card .streak-footer .streak-count b{font-size:16px}.session-more{width:100%}.session-more summary small{font-weight:600;color:var(--muted)}@media(min-width:720px){.pack-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.deck-well,.flash-card{min-height:320px}.practice-card{display:flex;flex-direction:column}.practice-card .deck-bar,.practice-card .deck-stage,.practice-card .pack-step,.practice-card .pace,.practice-card .actions,.practice-card .match-tip{order:1}.practice-card .result,.practice-card .day-task{order:2}.practice-card .session-strip,.practice-card .streak-chrome{order:3}}@media(max-width:900px){.cat-card{flex-direction:row;align-items:center;justify-content:flex-start;padding:8px 10px 8px 4px}.cat-hit{flex-direction:row;align-items:center;justify-content:flex-start;width:100%}.cat-svg{width:84px}.cat-card .stage-light{display:none}.nameplate{flex:1;margin-top:0}.practice-card{max-width:none}}@media(max-width:720px){:root{--dock-space: calc(132px + env(safe-area-inset-bottom, 0px)) }.flash-card{padding:26px 52px 20px}.flash-card .sentence{font-size:clamp(28px,8vw,40px)}.flash-card .sentence.pinyin{font-size:clamp(20px,5.4vw,28px)}.thumb-dock .actions{grid-template-columns:1fr 1fr}.thumb-dock #hear,.thumb-dock #say{order:0}.wrap:has(.thumb-dock .day-task){--dock-space: calc(164px + env(safe-area-inset-bottom, 0px)) }.wrap:has(.thumb-dock .result){--dock-space: calc(228px + env(safe-area-inset-bottom, 0px)) }.wrap:has(.thumb-dock .result):has(.thumb-dock .day-task){--dock-space: calc(260px + env(safe-area-inset-bottom, 0px)) }.thumb-dock .result{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 10px;align-items:center;margin:0 0 6px;padding:8px 10px;border-radius:14px;border-left:3px solid var(--neon);background:var(--card);max-height:108px;overflow:auto}.thumb-dock .result.recognition{border-left-color:var(--amber)}.thumb-dock .result>.kicker{grid-column:1;grid-row:1;margin:0}.thumb-dock .result>#score{grid-column:2;grid-row:1;margin:0;font-size:16px;white-space:nowrap}.thumb-dock .result>#heard,.thumb-dock .result>.feedback,.thumb-dock .result>.heard-muted,.thumb-dock .result>.fail-actions{grid-column:1 / -1}.thumb-dock .result>#heard{margin:0;font-size:15px;line-height:1.35}.thumb-dock .result .feedback p{margin-top:2px}.thumb-dock .fail-actions{margin-top:6px}.thumb-dock .fail-actions .act{min-height:40px}}@media(max-width:720px)and (max-height:560px){.deck-well,.flash-card{min-height:220px}.flash-card .sentence{font-size:clamp(24px,6.5vw,32px)}}.hello{display:flex;flex-wrap:wrap;align-items:center;gap:10px 12px;margin-bottom:12px}.hello h1{margin:0;font-size:22px;flex:1 1 auto;min-width:0}.meow{margin:6px 0 0}.meow b{display:block;font-size:clamp(17px,2.2vw,22px);font-weight:650;line-height:1.4;letter-spacing:-.02em}.meow b.pinyin{font-size:clamp(16px,2vw,20px);letter-spacing:0;font-weight:650}.meow small{display:block;margin-top:4px;color:var(--muted);font-size:14px;font-weight:600;line-height:1.45}.hello .top-actions{flex:0 1 auto;align-self:center;margin-left:auto}.hello .lang-switch{flex:0 1 auto;align-self:center}.hello .settings-open{align-self:center}.notices{display:flex;flex-direction:column;gap:10px;margin-top:22px}.notices .browser-stack,.notices .model-interstitial{margin:0}.notices .status-note{margin:0;color:var(--muted);font-size:13px}.notice-line{margin:0;padding:12px 14px;border-radius:14px;border:1px solid var(--amber);background:var(--notice);color:var(--amber-ink);font-size:15px;font-weight:650;line-height:1.45}@media(max-width:720px){.hello{align-items:center;gap:8px;margin-bottom:8px;flex-wrap:nowrap}.hello h1{font-size:18px;white-space:nowrap}.meow b{font-size:16px}.hello .top-actions{flex:1 1 auto;margin-left:auto;min-width:0;flex-wrap:nowrap;justify-content:flex-end;gap:6px}.hello .lang-switch{display:flex;flex:1 1 auto;min-width:0}.hello .lang-switch button{flex:1 1 0;min-width:0;padding:4px 8px;font-size:13px}.hello .lang-switch button small{font-size:10px;margin-top:1px}.hello .settings-open{margin-left:0;align-self:center}}.mode-nav{margin:0 0 16px}.mode-switch{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--edge);border-radius:16px;background:var(--chip);padding:4px}.mode-switch button{appearance:none;border:0;background:transparent;color:var(--text);border-radius:12px;padding:10px 12px;cursor:pointer;font-weight:750;font-size:16px;line-height:1.15}.mode-switch button small{display:block;margin-top:2px;font-size:12px;font-weight:650;opacity:.72}.mode-switch button.on{background:var(--neon);color:var(--ink)}.mode-switch button.on small{color:var(--neon-ink);opacity:.85}.translate-dir{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.translate-dir .pace-label{flex:1 1 100%}.translate-switch{flex:1 1 280px;display:flex}.translate-switch button{flex:1 1 0;min-width:0}button.primary:disabled:hover{filter:none}button.ghost:disabled:hover{filter:none;color:var(--text);border-color:var(--edge)}.translate-swap{flex:0 0 auto;min-width:84px}.translate-hint{margin:12px 0 0;color:var(--muted);font-size:13px;font-weight:650}.translate-hint b{color:var(--text);margin-left:6px;font-weight:750}.translate-mismatch{margin:8px 0 0;color:var(--amber-ink);background:var(--amber-panel);border:1px solid var(--amber-line);border-radius:12px;padding:8px 10px;font-size:13px;font-weight:650;line-height:1.4}.translate-label{display:block;margin-top:14px;line-height:1.15}.translate-label b{font-size:14px;font-weight:750}.translate-label small{display:block;margin-top:2px;color:var(--muted);font-size:12px;font-weight:650}.translate-field{display:block;width:100%;min-height:128px;margin-top:8px;padding:14px;resize:vertical;border-radius:16px;border:1px solid var(--edge);background:var(--field);color:var(--text);font:inherit;font-size:16px;line-height:1.45;font-weight:600}.translate-field:focus{outline:2px solid var(--neon);outline-offset:1px}.translate-field:disabled{opacity:.7}.translate-count{margin:6px 0 0;text-align:right;color:var(--faint);font-size:12px;font-weight:650;font-variant-numeric:tabular-nums}.translate-count.warn{color:var(--amber)}.translate-live{margin-top:12px}.translate-status{margin:0;color:var(--muted);font-size:14px;font-weight:650;line-height:1.45}.translate-note{margin-top:0}.translate-out{padding:16px 16px 12px;border-radius:16px;background:var(--inset);border:1px solid var(--line)}.translate-kicker{display:flex;justify-content:space-between;gap:12px;margin:0;color:var(--muted);font-size:12px;font-weight:700}.translate-kicker b{color:var(--text);font-size:13px}.translate-line{margin:8px 0 0;font-size:clamp(26px,4vw,40px);font-weight:650;line-height:1.35;letter-spacing:-.02em;overflow-wrap:anywhere}.translate-card .actions .act{flex:1 1 140px}@media(min-width:721px){.translate-field{font-size:18px}}@media(max-width:720px){.translate-switch{flex-basis:100%}.translate-switch button{padding-left:8px;padding-right:8px}.mode-nav{margin-bottom:12px}}@media(max-width:520px),(max-width:720px)and (max-height:820px){.mode-nav{margin-bottom:8px}.mode-switch{padding:3px;border-radius:14px}.mode-switch button{min-height:44px;padding:6px 8px;font-size:15px;display:flex;align-items:baseline;justify-content:center;gap:6px}.mode-switch button small{display:inline;margin-top:0;font-size:12px}.deck-bar{margin-bottom:8px}.deck-well,.flash-card{min-height:168px}.flash-card{padding:16px 46px 12px}.card-kicker{margin-bottom:8px}.flash-card .meaning{margin-top:10px;padding-top:8px}.card-pos{margin-top:10px}.match-tip{margin-top:6px;padding:6px 10px 8px}.match-tip .legend{margin-top:4px}}@media(max-width:720px)and (max-height:560px){.thumb-dock .result{max-height:72px}.wrap:has(.thumb-dock .result){--dock-space: calc(196px + env(safe-area-inset-bottom, 0px)) }}.landing-replay{width:100%;margin-top:0}.help-block{margin-top:16px}.help-block .browser-banner{margin:0}.help-mail{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:12px 0 0}.help-mail b{font-size:15px}.help-mail small{color:var(--muted);font-size:13px;font-weight:650}.help-mail a{color:inherit;font-weight:750;overflow-wrap:anywhere}.landing{position:fixed;inset:0;z-index:30;display:flex;align-items:center;justify-content:center;overflow:auto;padding:calc(28px + env(safe-area-inset-top,0px)) calc(20px + env(safe-area-inset-right,0px)) calc(28px + env(safe-area-inset-bottom,0px)) calc(20px + env(safe-area-inset-left,0px));background:radial-gradient(720px 380px at 50% -8%,rgba(200,255,61,.1),transparent 60%),var(--bg)}html[data-theme=light] .landing{background:radial-gradient(720px 380px at 50% -8%,rgba(198,224,60,.34),transparent 60%),var(--bg)}html:has(.landing){overflow:hidden}.landing-card{width:min(420px,100%);display:flex;flex-direction:column;align-items:center;text-align:center}.landing .cat-card{width:min(220px,64vw);margin:0;background:transparent;border:0;box-shadow:none;padding:0 0 4px;flex-direction:column;align-items:center;justify-content:flex-end}.landing .cat-hit{flex-direction:column;align-items:center;width:100%}.landing .cat-svg{width:min(200px,56vw)}.landing .stage-light{display:none}.landing .nameplate{width:100%;margin-top:4px;flex:none}.landing-copy{width:100%;max-width:360px;margin-top:12px}.landing h1{margin:0;font-size:clamp(28px,7vw,36px)}.landing .meow b,.landing .meow small{text-wrap:balance}.landing-start{width:min(280px,100%);margin-top:22px;min-height:52px}@media(max-height:700px){.landing .cat-svg{width:min(148px,42vw)}.landing h1{font-size:26px}.landing-start{margin-top:14px}}
