:root{--surface:#f7f1e3;--surface-rgb:247, 241, 227;--surface-panel:#efe6d1;--surface-deep:#e2d5b8;--canvas-backdrop:#eee4cc;--canvas-backdrop-rgb:238, 228, 204;--pf-sky-1:#86d0f2;--pf-sky-2:#9ad9f6;--pf-sky-3:#aee2f8;--pf-sky-4:#c3ebfa;--pf-sky-5:#d7f2fb;--pf-sun:#fff3b8;--pf-cloud:#fff;--pf-cloud-shade:#d8eef9;--pf-ridge-far:#a6d8e8;--pf-ridge-near:#86c4da;--pf-skyline:#6fb0d8;--pf-window:#d4f0fb;--pf-tower-lit:#5fa8d3;--pf-tower-shade:#4a8fbf;--pf-tower-belt:#2f6f9f;--pf-lowland:#a8dc72;--pf-lowland-edge:#8ccb55;--pf-tuft:#6ab030;--pf-wall-base:#2b6e2a;--pf-wall-forest:#1f5a24;--pf-rim-1:#d3ee86;--pf-rim-2:#86cf47;--pf-rim-3:#58ae3a;--pf-rim-4:#3a8f30;--pf-outline:#1d3a17;--pf-grass:#7cc23a;--pf-grass-hi:#a5de52;--pf-grass-notch:#6ab030;--pf-sand:#dccf8a;--tk-sky-1:#8cc4e4;--tk-sky-2:#cfe7f0;--tk-sky-3:#eef3ec;--tk-cloud:#fff;--tk-peak-far:#b4c5ce;--tk-peak-near:#92a9b6;--tk-haze:#eef3ec;--tk-bluff:#7c786d;--tk-bluff-crest:#5f9b4b;--tk-hall:#8a2f22;--tk-post:#a3341f;--tk-roof:#c0392b;--tk-roof-edge:#7a1f16;--tk-finial:#e8b84a;--tk-river-top:#46c6ba;--tk-river-bottom:#1c8f95;--tk-boulder:#8b877a;--tk-wall-light:#8d887a;--tk-wall-mid-low:#5e5c53;--tk-wall-dark:#3a3b36;--tk-wall-mid-high:#65625a;--tk-wall-light-high:#928d7f;--tk-strata-light:#ece6d6;--tk-strata-dark:#2c2b27;--tk-fringe-dark:#4d8a42;--tk-fringe-light:#6aa352;--tk-outline:#2a2925;--tk-rim:#c9722a;--tk-grid-label:#f7f1e3;--al-sky-1:#4d5f9e;--al-sky-2:#8b78b0;--al-sky-3:#e39aa6;--al-sky-4:#f8c79a;--al-sky-5:#ffe3ae;--al-sky-6:#f6dcd8;--al-streak:#fff0e6;--al-sun-core:#fff2c0;--al-sun-glow:#fff0b8;--al-range-far:#8571ad;--al-range-near:#5f5190;--al-cypress:#363070;--al-cloud-1:#fff1dc;--al-cloud-2:#f9dcc8;--al-cloud-3:#f1c4bd;--al-cloud-4:#e6b4b8;--al-cloud-5:#f6dcd8;--al-cloud-highlight:#fffbe0;--al-wall-1:#2f2a66;--al-wall-2:#4b4180;--al-wall-3:#9a7fb0;--al-wall-4:#f4d6d6;--al-wall-top-1:#2a2560;--al-wall-top-2:#433a82;--al-wall-top-3:#6a5a9c;--al-tree-texture:#1f1b52;--al-glow-top:#7f6fb0;--al-mist-band:#ffd9d0;--al-outline:#231f55;--al-rim:#f2b04a;--al-grid:#3a2f55;--al-grid-label:#fff8ee;--tt-sky-1:#a9ddf0;--tt-sky-2:#d4efe6;--tt-sky-3:#eaf6dd;--tt-sun-core:#fffdf0;--tt-far-hills:#c2e3d2;--tt-near-hills:#a1d3b6;--tt-cable:#4b5a52;--tt-pylon:#3a4a42;--tt-cabin-warm:#f2d68a;--tt-basin:#a9cdd2;--tt-tower:#a6cad4;--tt-tower-stroke:#6f97a6;--tt-tower-shade:#7fa9b8;--tt-rows-base:#7fc06a;--tt-rows-dark:#74bd5f;--tt-rows-light:#8fd07a;--tt-wall-light:#66b052;--tt-wall-deep:#2e7a3c;--tt-lip:#b4e592;--tt-shadow:#1f5e2b;--tt-outline:#1c4a22;--tt-rim:#c9722a;--tt-grid-label:#f7f1e3;--ink:#241d15;--ink-muted:#6b6151;--ink-soft:#857a65;--ink-dim:#a89a80;--accent:#1c7a63;--accent-rgb:28, 122, 99;--accent-ink:#f7f1e3;--accent-bright:#145c4a;--beak:#c98a3c;--beak-rgb:200, 138, 60;--good:#2c8f61;--good-rgb:44, 143, 97;--good-dim:#1c6543;--warn:#a8672a;--warn-strong:#8a5320;--danger:#a3341f;--danger-rgb:163, 52, 31;--danger-strong:#832718;--demo-rgb:168, 108, 32;--grid-rgb:60, 52, 42;--ink-rgb:36, 29, 21;--gate-ok-rgb:150, 118, 40;--gate-unheard-rgb:130, 122, 108;--gate-glow-rgb:196, 140, 30;--line:#241d151f;--line-soft:#241d150f;--line-strong:#241d1533;--radius-pill:999px;--radius-lg:20px;--radius-md:14px;--radius-sm:8px;--shadow-sticker:6px 6px 0 #241d151f;--shadow-sticker-pro:6px 6px 0 #c88a3c59;--shadow-sticker-jade:8px 8px 0 var(--accent);--font:"Hanken Grotesk", system-ui, -apple-system, "Segoe UI", sans-serif;--font-display:"Fraunces", "Iowan Old Style", serif;--font-mono:ui-monospace, monospace;--text-xs:.75rem;--text-sm:.85rem;--text-base:1rem;--text-lg:1.2rem;--text-xl:1.4rem;--text-2xl:2.2rem;--text-3xl:2.8rem;--nav-mobile-h:72px;--nav-mobile-pct:9%;--nav-sidebar-w:232px;--stage-margin-desktop:28px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-7:40px;--space-8:56px}*{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--surface);color:var(--ink);font-family:var(--font);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}html{scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}.app{min-height:100dvh;padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);background:var(--surface);color:var(--ink);font-family:var(--font);justify-content:center;align-items:flex-start;gap:16px;display:flex}.app-game{padding-bottom:calc(var(--nav-mobile-h) + env(safe-area-inset-bottom))}@media (width<=719px){html:has(.app-game){overscroll-behavior:none;height:100%}body:has(.app-game){overscroll-behavior:none;height:100%}#root:has(.app-game){overscroll-behavior:none;height:100%}.app-game{overscroll-behavior:none;flex-direction:column;align-items:stretch;gap:0;height:100dvh;max-height:100dvh;padding-bottom:0;overflow:hidden}.app-game .app-main{flex-direction:column;flex:1 1 0;order:1;align-items:center;width:100%;min-height:0;display:flex;overflow:hidden}.app-game .game-nav{order:2;flex:0 0 var(--nav-mobile-pct);width:100%;height:var(--nav-mobile-pct);min-height:52px;max-height:96px;margin:0;padding-bottom:0;position:relative;bottom:auto;left:auto;right:auto}.app-game .game-nav-items{flex:auto;height:auto;min-height:0}.app-game .frame{flex:auto;width:100%;height:100%;min-height:0;max-height:100%;overflow:hidden}.app-game .frame:has(.game-stage){flex-direction:column;display:flex}:is(.app-game .frame:has(.game-stage)>.game-screen,.app-game .frame:has(.game-stage)>.game-stage,.app-game .frame:has(.game-stage)>.visualiser-screen){flex:auto;min-height:0;max-height:100%;overflow:hidden}.app-game .frame:has(.settings-screen,.howto-screen,.progress-screen,.profile-screen,.gameover-screen,.calibrate-screen){-webkit-overflow-scrolling:touch;overflow-y:auto}}@media (width>=720px){.app-game{padding-bottom:env(safe-area-inset-bottom);padding-left:calc(var(--nav-sidebar-w) + env(safe-area-inset-left))}.app-game:has(.calibrate-screen){align-items:stretch}.app-game:has(.calibrate-screen) .app-main{min-height:calc(100dvh - env(safe-area-inset-top) - env(safe-area-inset-bottom));flex:auto}.app-game:has(.calibrate-screen) .frame{flex-direction:column;flex:auto;width:100%;min-height:0;display:flex}}.app-main{flex-direction:column;align-items:center;width:100%;display:flex}@media (width>=720px){.app{background:radial-gradient(60% 55% at 50% 35%, color-mix(in srgb, var(--accent) 10%, transparent), transparent 70%), var(--surface);position:relative}}.frame,.stage{width:100%;max-width:420px;max-width:min(420px, calc((100svh - var(--nav-mobile-h)) * 9 / 16));margin-inline:auto;container:frame/inline-size}@media (width>=720px){.frame,.stage{max-width:min(900px,100%)}}:is(.frame:has(.game-stage),.game-stage){max-width:none}.game-stage canvas,.playhome-canvas{aspect-ratio:auto;width:100%;height:100%}.frame:has(.lab-screen){max-width:100%}.frame:not(:has(.stage)){padding:0 16px 16px}.frame:has(.settings-screen,.progress-screen,.profile-screen,.howto-screen,.gameover-screen){padding:0 16px 16px}.frame:has(.howto-screen,.profile-screen){max-width:640px}.frame:has(.settings-screen){max-width:640px}@media (width>=720px){.frame:has(.settings-screen){max-width:min(720px, calc(100vw - var(--nav-sidebar-w) - 64px))}}.frame:has(.progress-screen){max-width:640px}@media (width>=720px){.frame:has(.progress-screen){max-width:min(1080px, calc(100vw - var(--nav-sidebar-w) - 64px))}}.frame:has(.gameover-screen){max-width:640px}@media (width>=720px){.frame:has(.gameover-screen){max-width:min(1080px, calc(100vw - var(--nav-sidebar-w) - 64px))}}.stage{margin-top:16px;position:relative}.screen{text-align:center;flex-direction:column;align-items:stretch;gap:14px;margin-top:16px;display:flex;position:relative}.game-screen,.game-stage{margin-top:0}@media (width>=720px){.game-screen{padding-top:24px}}.screen h1{font-family:var(--font-display);letter-spacing:.04em;font-size:2.2rem}.screen h2{font-family:var(--font-display);font-size:1.4rem}.screen h3{font-family:var(--font-display);color:var(--ink-muted);font-size:1rem}.screen p{line-height:1.5}.tagline,.note{color:var(--ink-muted);text-align:center;font-size:.9rem;font-style:italic}.prompt{color:var(--accent)}.error{color:var(--danger)}.menu{flex-direction:column;gap:8px;display:flex}.screen button{border-radius:var(--radius-pill);border:1px solid var(--line);color:var(--ink);cursor:pointer;background:0 0;padding:12px 20px;font-size:1rem}.screen button:hover:not(:disabled){border-color:var(--ink-soft);color:var(--ink)}.screen button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.screen button.primary{background:var(--accent);color:var(--accent-ink);border:none}.screen button.primary:hover:not(:disabled){background:color-mix(in srgb, var(--accent) 88%, white)}.screen button.link{color:var(--ink-muted);border:none;padding:6px;font-size:.85rem}.screen button.link:hover:not(:disabled){color:var(--ink);text-decoration:underline}.pace-row{align-items:center;gap:6px;display:flex}.pace-label{color:var(--ink-muted);margin-right:4px;font-size:.85rem}.screen button.pace{color:var(--ink-muted);padding:6px 14px;font-size:.85rem}.screen button.pace.active{border-color:var(--accent);color:var(--accent)}.dev-toggle{align-self:center;color:var(--ink-dim)!important;padding:4px 10px!important;font-size:11px!important}.dev-toggle:hover:not(:disabled){color:var(--ink-muted)!important}.tone-list,.facts{text-align:left;color:var(--ink-muted);flex-direction:column;gap:8px;font-size:.9rem;list-style:none;display:flex}.tone-list li{align-items:baseline;gap:8px;display:flex}.terms-bullets{text-align:left;color:var(--ink-muted);flex-direction:column;gap:8px;margin:0;padding-left:1.25em;font-size:.9rem;list-style:outside;display:flex}.terms-bullets li{padding-left:4px}.syllable{color:var(--ink);font-size:1.2rem}.hanzi{color:var(--ink);font-size:1.1rem}.calibrate-screen{margin-top:0;flex:auto;justify-content:center;width:100%;max-width:460px;height:100%;min-height:0;margin-inline:auto}.calibrate-screen.is-preview{justify-content:flex-start;gap:var(--space-2);padding:var(--space-3) var(--space-4) max(var(--space-4), env(safe-area-inset-bottom))}.calibrate-preview-stage{flex:auto;justify-content:center;width:100%;max-width:340px;min-height:120px;margin:0 auto;display:flex;overflow:hidden}.calibrate-preview-stage canvas{aspect-ratio:auto;border-radius:var(--radius-md);width:100%;height:100%}.calibrate-screen.is-preview .param-help{line-height:1.35}.calibrate-screen h2{font-size:var(--text-2xl)}.meter{border-radius:var(--radius-pill);background:var(--line-soft);height:8px;overflow:hidden}.meter-fill{background:var(--accent);height:100%;transition:width 60ms linear;display:block}.big{font-size:1.3rem}.readout{font-family:var(--font-display);font-variant-numeric:tabular-nums;font-size:3rem}.slider{gap:var(--space-1);text-align:left;color:var(--ink-muted);flex-direction:column;font-size:12px;display:flex}.slider input[type=range]{width:100%}.hud{pointer-events:none;flex-direction:column;align-items:center;gap:8px;padding:12px;display:flex;position:absolute;inset:0}.hud-top{font-variant-numeric:tabular-nums;align-self:stretch;align-items:center;gap:10px;display:flex}.hud-top .score{font-size:1.2rem;position:relative}.points-pop{white-space:nowrap;color:var(--good);pointer-events:none;margin-left:6px;font-size:.9rem;animation:1.1s ease-out forwards points-rise;position:absolute;top:0;left:100%}@keyframes points-rise{0%{opacity:0;transform:translateY(6px)scale(.9)}25%{opacity:1;transform:translateY(-2px)scale(1.05)}to{opacity:0;transform:translateY(-18px)scale(1)}}.hud-top .hearts{color:var(--danger);gap:2px;margin-left:auto;display:inline-flex}.heart svg{width:16px;height:16px;display:block}.heart.breaking{transform-origin:50%;animation:.9s ease-out forwards heart-break}@keyframes heart-break{0%{opacity:1;color:#fff;transform:scale(1.5)rotate(0)}30%{opacity:1;color:var(--danger-strong);transform:scale(1.15)rotate(-12deg)}to{opacity:0;transform:scale(.6)rotate(18deg)translateY(14px)}}.hud-top .combo{color:var(--accent)}@media (width<=719px){.hud-top .score{font-size:1.6rem;font-weight:700}.heart svg{width:20px;height:20px}.hud-top .combo{font-size:1.1rem;font-weight:700}}.hud-syllable{border-radius:var(--radius-lg,16px);background:var(--surface-panel,var(--surface));border:1px solid var(--line);pointer-events:none;opacity:.9;flex-direction:row;align-items:stretch;margin-top:-10px;padding:10px 4px;display:flex;box-shadow:0 2px 10px #0000001f}.hud-syllable-col{flex-direction:column;justify-content:center;align-items:center;gap:2px;min-width:0;padding:0 12px;display:flex}.hud-syllable-col+.hud-syllable-col{border-left:1px solid var(--line)}.hud-syllable-col-translation{max-width:120px;color:var(--ink-muted);text-align:center;font-size:.85rem;line-height:1.25}.hud-syllable-col-word .syllable{font-size:1.6rem;font-weight:700}.hud-syllable-col-word .hanzi{color:var(--ink-muted);font-size:1.1rem}.hud-syllable .cue{color:var(--ink-muted);font-size:.85rem}.hud-syllable-col-tone{justify-content:space-evenly;gap:4px}.hud-syllable-col-tone .tone-marks-speaker{width:20px;height:20px;color:var(--ink-soft);display:inline-flex}.hud-syllable-col-tone .tone-marks-speaker svg{width:100%;height:100%}.hud-syllable-col-tone .tone-marks-row{align-items:center;gap:4px;display:flex}.hud-syllable-col-tone .tone-mark-glyph{width:22px;height:16px;display:inline-flex}.hud-syllable-col-tone .tone-mark-glyph svg{width:100%;height:100%}.hud-status{color:var(--ink-soft);text-align:center;margin-top:6px;margin-bottom:4px;font-size:.85rem}.hud-bottom{flex-direction:column;align-items:center;margin-top:auto;display:flex}.phase-banner{border-radius:var(--radius-pill);background:rgba(var(--surface-rgb), .7);margin-top:6px;padding:4px 14px;font-size:.9rem}.phase-banner.listen{color:var(--warn)}.phase-banner.your-turn{color:var(--good);background:var(--surface-panel);animation:.25s ease-out your-turn-pop}.mic-status{z-index:3;border-radius:var(--radius-pill);text-align:center;max-width:90%;color:var(--danger);background:rgba(var(--surface-rgb), .92);border:1px solid rgba(var(--danger-rgb), .4);align-items:center;gap:8px;padding:6px 14px;font-size:.82rem;display:flex;position:absolute;top:12px;left:50%;transform:translate(-50%)}.mic-status__dot{background:var(--danger);border-radius:50%;flex:none;width:8px;height:8px}.mic-status__dot[data-recovering=true]{background:var(--warn);animation:1s ease-in-out infinite mic-status-pulse}@keyframes mic-status-pulse{0%,to{opacity:.35}50%{opacity:1}}@keyframes your-turn-pop{0%{opacity:.4;transform:scale(1.25)}to{opacity:1;transform:scale(1)}}.listening-bars{vertical-align:middle;align-items:flex-end;gap:2px;height:10px;margin-left:6px;display:inline-flex}.listening-bar{background:var(--accent);transform-origin:bottom;border-radius:1px;width:2px;height:100%}@media (prefers-reduced-motion:no-preference){.listening-bar{animation:.9s ease-in-out infinite listening-bar-pulse}.listening-bar:first-child{animation-delay:0s}.listening-bar:nth-child(2){animation-delay:.15s}.listening-bar:nth-child(3){animation-delay:.3s}.listening-bar:nth-child(4){animation-delay:.45s}}@keyframes listening-bar-pulse{0%,to{opacity:.6;transform:scaleY(.35)}50%{opacity:1;transform:scaleY(1)}}.recal-card{border-radius:var(--radius-md);background:rgba(var(--surface-rgb), .7);color:var(--ink-muted);margin-top:12px;padding:10px 16px;font-size:.9rem}.recal-actions{justify-content:center;gap:8px;margin-top:8px;display:flex}.recal-applied{background:rgba(var(--accent-rgb), .16);border:1px solid var(--accent);color:var(--ink)}.feedback-card{border-radius:var(--radius-md);background:rgba(var(--surface-rgb), .7);color:var(--ink-muted);margin-top:12px;padding:10px 16px;font-size:.9rem;position:relative}.feedback-chips{flex-wrap:wrap;justify-content:center;gap:8px;margin-top:8px;display:flex}.feedback-chip{border-radius:var(--radius-pill);border:1px solid var(--line);background:rgba(var(--surface-rgb), .6);color:var(--ink);font:inherit;cursor:pointer;padding:6px 14px}.feedback-chip:hover{border-color:var(--accent);color:var(--accent)}.feedback-mailto{margin-top:8px;font-size:.85rem}.feedback-close{border:1px solid var(--line);width:22px;height:22px;color:var(--ink-muted);cursor:pointer;background:0 0;border-radius:50%;font-size:1rem;line-height:1;position:absolute;top:6px;right:6px}.feedback-close:hover{color:var(--ink);border-color:var(--ink-soft)}.toast,.hint{border-radius:var(--radius-pill);background:rgba(var(--surface-rgb), .7);color:var(--ink-muted);margin-top:6px;padding:6px 14px;font-size:.85rem}.browser-hint{margin:0 0 var(--space-3);border-radius:var(--radius-md,12px);background:var(--surface);border:1px solid var(--line);color:var(--ink-soft);font-size:var(--text-sm);align-items:flex-start;gap:10px;padding:10px 12px;line-height:1.35;display:flex}.browser-hint__text{flex:auto}.browser-hint__link{color:var(--accent);font:inherit;cursor:pointer;background:0 0;border:none;padding:0;font-weight:600;text-decoration:underline;display:inline}.browser-hint__dismiss{color:var(--ink-soft);cursor:pointer;background:0 0;border:none;border-radius:6px;flex:none;padding:2px 4px;font-size:.95rem;line-height:1}.browser-hint__dismiss:hover{color:var(--ink)}.browser-hint-modal-body{color:var(--ink-muted);margin:var(--space-2) 0 var(--space-4)}.browser-hint-modal-cta{width:100%;margin-bottom:var(--space-2)}.browser-hint-video-card{text-align:center;flex-direction:column;height:min(620px,82dvh);display:flex}.browser-hint-video-frame{border-radius:var(--radius-md);min-height:0;margin:var(--space-3) 0;border:1px solid var(--line);background:var(--surface-panel);flex:auto;overflow:hidden}.browser-hint-video-frame video{object-fit:contain;width:100%;height:100%;display:block}.browser-hint-steps{text-align:left;color:var(--ink-muted);font-size:var(--text-sm);gap:var(--space-1);flex-direction:column;flex:none;margin:0;padding-left:1.2em;display:flex}.app-toast{top:var(--space-3);z-index:120;border-radius:var(--radius-pill);background:var(--surface);border:1px solid var(--line);max-width:min(90vw,420px);color:var(--ink-soft);font-size:var(--text-sm);text-align:center;padding:10px 18px;position:fixed;left:50%;transform:translate(-50%);box-shadow:0 4px 16px #0000001f}.app-toast-positive{border-color:var(--accent);color:var(--ink)}.unheard-toast{animation:1.2s ease-out forwards unheard-fade}@keyframes unheard-fade{0%{opacity:0}15%,70%{opacity:1}to{opacity:0}}.mismatch-toast{background:rgba(var(--danger-rgb), .16);color:var(--ink);animation:1.2s ease-out forwards unheard-fade}.praise-toast{background:color-mix(in srgb, var(--accent) 16%, transparent);color:var(--ink);animation:1.2s ease-out forwards unheard-fade}@media (prefers-reduced-motion:reduce){.points-pop,.heart.breaking,.unheard-toast,.mismatch-toast,.praise-toast,.phase-banner.your-turn,.vis-accuracy.tier-bad,.vis-wrong-toast.is-shown{animation-duration:.01ms;animation-iteration-count:1}.listening-bar{opacity:.85;animation:none;transform:scaleY(.7)}}.screen.gameover-screen{gap:var(--space-4);padding-bottom:var(--space-4)}.go-header{justify-content:space-between;align-items:center;gap:var(--space-3);text-align:left;padding:var(--space-5) var(--space-4) var(--space-4);border:2px solid var(--ink);border-radius:var(--radius-lg);box-shadow:var(--shadow-sticker);background:#fff;flex-direction:row;display:flex;position:relative}.go-bird{pointer-events:none;width:76px;height:auto;position:absolute;top:-34px;left:-14px;transform:rotate(-6deg)}.go-header-score{flex:auto;min-width:0;padding-left:56px}.go-eyebrow{font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);margin:0 0 2px;font-weight:700}.go-score-line{align-items:baseline;gap:var(--space-2);margin:0;display:flex}.go-score{font-family:var(--font-display);font-size:var(--text-2xl);font-variant-numeric:tabular-nums;color:var(--ink);font-weight:600;line-height:1}@media (width<=719px){.go-score{font-size:var(--text-3xl)}.go-bird{width:92px}.go-header{padding:var(--space-6) var(--space-4) var(--space-5)}}.go-score-unit{font-size:var(--text-sm);color:var(--ink-soft)}.go-best{font-size:var(--text-sm);color:var(--ink-muted);margin:4px 0 0}.go-challenge{font-size:var(--text-sm);color:var(--accent);margin:4px 0 0;font-weight:600}.go-header-actions{gap:var(--space-3);flex-shrink:0;align-items:center;display:flex}.go-header-actions .go-btn-primary{display:none}.go-share-cluster{align-items:center;gap:var(--space-1);flex-direction:column-reverse;display:flex}.go-share-copied{text-align:center;white-space:nowrap;font-size:var(--text-xs);margin:0}.go-grid,.go-col{gap:var(--space-4);flex-direction:column;display:flex}.go-col:empty{display:none}.go-card{text-align:left;padding:var(--space-4);border:2px solid var(--ink);border-radius:var(--radius-lg);box-shadow:var(--shadow-sticker);background:#fff}.go-coach{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 10%, #fff);box-shadow:4px 4px 0 var(--accent);gap:var(--space-2);flex-direction:column;display:flex}.go-coach-head{align-items:center;gap:var(--space-2);display:flex}.go-coach-mark{display:inline-flex}.go-coach-icon{width:24px;height:18px;color:var(--accent)}.go-coach-eyebrow{font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--accent);font-weight:700}.go-coach-title{font-family:var(--font-display);font-size:var(--text-lg);color:var(--ink);margin:0}.go-coach-body{font-size:var(--text-sm);color:var(--ink-muted);margin:0}.go-coach .go-btn-primary{margin-top:var(--space-1);align-self:center}.go-coach .go-subtle-link{text-align:center;font-size:var(--text-xs);align-self:stretch}.go-fine-tune{align-items:center;gap:var(--space-1);margin-top:var(--space-3);flex-direction:column;display:flex}.go-fine-tune-prompt{font-size:var(--text-xs);color:var(--ink-soft);text-align:center;margin:0}.go-fine-tune .go-subtle-link{text-align:center;font-size:var(--text-xs)}.go-tones{gap:var(--space-2);flex-direction:column;display:flex}.go-tone-tile-weak{border:2px solid var(--danger)}.go-rank-row{align-items:center;gap:var(--space-3);border-color:var(--beak);box-shadow:var(--shadow-sticker-pro);display:flex}.go-rank-num{flex-direction:column;flex-shrink:0;align-items:center;display:flex}.go-rank-num strong{font-family:var(--font-display);font-size:var(--text-xl);color:var(--ink);font-variant-numeric:tabular-nums}@media (width<=719px){.go-rank-num strong{font-size:var(--text-2xl)}}.go-rank-num small{font-size:var(--text-xs);color:var(--ink-soft)}.go-rank-copy{flex-direction:column;flex:auto;gap:2px;min-width:0;display:flex}.go-rank-copy strong{font-size:var(--text-sm);color:var(--ink)}.go-rank-copy small{font-size:var(--text-xs);color:var(--ink-soft)}.go-rank-view{font-size:var(--text-sm);color:var(--accent);background:0 0;border:none;flex-shrink:0;padding:0;font-weight:700}.go-board-cta{border-color:var(--beak);box-shadow:var(--shadow-sticker-pro);gap:var(--space-2);flex-direction:column;display:flex}.go-board-cta-title{font-family:var(--font-display);font-size:var(--text-lg);color:var(--ink);margin:0}.go-board-cta-body{font-size:var(--text-sm);color:var(--ink-muted);margin:0}.go-btn-gold{--gold:#c98a3c;--gold-deep:#a86c20;border:1px solid var(--gold-deep);border-radius:var(--radius-pill);background:linear-gradient(180deg, #dca24b, var(--gold));color:#fffdf7;font-weight:700;font-size:var(--text-sm);box-shadow:inset 0 1px 0 #fff6, 0 3px 16px color-mix(in srgb, var(--gold) 45%, transparent);align-self:flex-start;padding:10px 20px}.screen button.go-btn-gold{border:1px solid var(--gold-deep);background:linear-gradient(180deg, #dca24b, var(--gold));color:#fffdf7;box-shadow:inset 0 1px 0 #fff6, 0 3px 16px color-mix(in srgb, var(--gold) 45%, transparent)}.screen button.go-btn-gold:hover:not(:disabled){border-color:var(--gold-deep);color:#fffdf7}.go-board-link{align-self:flex-start}.go-subtle-link{font-size:var(--text-sm);color:var(--ink-muted);text-align:left;background:0 0;border:none;padding:0;font-weight:600;text-decoration:underline}.go-recal{gap:var(--space-2);flex-direction:column;display:flex}.go-recal-copy{font-size:var(--text-sm);color:var(--ink-muted);margin:0}.go-recal-actions{gap:var(--space-2);display:flex}.go-feedback{gap:var(--space-3);flex-direction:column;display:flex;position:relative}.go-feedback .feedback-close{top:var(--space-2);right:var(--space-2);color:var(--ink-soft);font-size:var(--text-sm);background:0 0;border:none;padding:4px;line-height:1;position:absolute}.go-feedback-q{color:var(--ink);margin:0;font-weight:700}.go-feedback-chips{gap:var(--space-2);flex-wrap:wrap;display:flex}.go-chip{border:1px solid var(--line);border-radius:var(--radius-pill);background:var(--surface-panel);font-size:var(--text-sm);padding:8px 14px}.go-feedback .feedback-mailto{font-size:var(--text-xs);margin:0}.go-feedback .feedback-mailto a{color:var(--ink-muted)}.go-btn-primary{border:2px solid var(--ink);border-radius:var(--radius-pill);background:var(--accent);color:var(--accent-ink);font-weight:700;font-size:var(--text-base);padding:12px 24px}.screen button.go-btn-primary{border:2px solid var(--ink);background:var(--accent);color:var(--accent-ink)}.screen button.go-btn-primary:hover:not(:disabled){border-color:var(--ink);background:color-mix(in srgb, var(--accent) 88%, white);color:var(--accent-ink)}.go-btn-primary:disabled{opacity:.7}.screen button.go-subtle-link{color:var(--ink-muted);background:0 0;border:none;padding:0}.screen button.go-subtle-link:hover:not(:disabled){color:var(--ink);border:none}.go-btn-ghost{border:1px solid var(--line);border-radius:var(--radius-pill);color:var(--ink-soft);font-weight:600;font-size:var(--text-base);background:0 0;padding:12px 24px}@media (width<=719px){.go-btn-primary,.go-btn-ghost,.screen button.go-btn-gold{min-height:52px;font-size:var(--text-lg);padding:15px 26px}}.go-footer{z-index:2;justify-content:center;gap:var(--space-3);padding:var(--space-5) 0 var(--space-3);isolation:isolate;background:0 0;display:flex;position:sticky;bottom:0}.go-footer:before{content:"";z-index:0;pointer-events:none;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);position:absolute;inset:0;-webkit-mask-image:linear-gradient(#0000 0%,#000 42% 100%);mask-image:linear-gradient(#0000 0%,#000 42% 100%)}.go-footer>*{z-index:1;position:relative}.go-footer .go-btn-ghost{flex:none}.go-footer .go-btn-primary{flex:none;width:fit-content}@media (width>=900px){.screen.gameover-screen{max-width:1200px;margin-inline:auto}.go-header{flex-direction:row;justify-content:space-between;align-items:center}.go-coach{box-shadow:var(--shadow-sticker-jade)}.go-header-actions .go-btn-primary{display:inline-flex}.go-share-cluster{gap:var(--space-2);flex-direction:row}.go-grid{flex-direction:row;align-items:flex-start}.go-col{flex:1 1 0}.go-col:nth-child(2){flex:1.15 1 0}.go-tones .pause-accuracy-grid{gap:var(--space-3);grid-template-columns:repeat(2,1fr)}.go-tones .pause-tone-card{padding:var(--space-3) var(--space-2);gap:var(--space-2)}.go-tones .pause-tone-icon{width:36px;height:27px}.go-tones .pause-tone-bar{height:7px}.go-tones .pause-tone-pct{font-size:var(--text-sm);font-weight:600}.go-footer{display:none}}.screen button.gameover-share{--gold:#c98a3c;--gold-deep:#a86c20;justify-content:center;align-items:center;gap:var(--space-2);color:#fffdf7;border:1px solid var(--gold-deep);border-radius:var(--radius-pill);background:linear-gradient(180deg, #dca24b, var(--gold));width:auto;box-shadow:inset 0 1px 0 #fff6, 0 3px 16px color-mix(in srgb, var(--gold) 45%, transparent);padding:12px 20px;font-size:.95rem;font-weight:700;animation:.5s cubic-bezier(.2,.9,.25,1) both gameover-share-pop;display:inline-flex;position:relative;overflow:hidden}.screen button.gameover-share:active{transform:scale(.98)}.screen button.gameover-share:after{content:"";background:linear-gradient(115deg,#0000 35%,#fff9 50%,#0000 65%);animation:2.2s ease-in-out .4s both gameover-share-shine;position:absolute;inset:0;transform:translate(-130%)}.screen button.gameover-share svg{width:1.2em;height:1.2em}@keyframes gameover-share-pop{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}@keyframes gameover-share-shine{to{transform:translate(130%)}}@media (prefers-reduced-motion:reduce){.screen button.gameover-share{animation:none}.screen button.gameover-share:after{display:none}}.challenge-score{color:var(--accent);font-size:1.2rem;font-weight:800}.breakdown{flex-direction:column;gap:6px;display:flex}.breakdown-row{align-items:center;gap:var(--space-2);font-size:.9rem;display:flex}.breakdown-row .bar{border-radius:var(--radius-pill);background:var(--line-soft);flex:1;height:8px;overflow:hidden}.breakdown-row .bar-fill{background:var(--accent);height:100%;display:block}.breakdown-row .pct{text-align:right;font-variant-numeric:tabular-nums;width:44px}.breakdown-row .unheard{color:var(--ink-dim);font-size:.75rem}.breakdown-row .mismatched{color:rgb(var(--danger-rgb));font-size:.75rem}.stage canvas{aspect-ratio:9/16;border-radius:var(--radius-md);width:100%;display:block}.overlay{cursor:pointer;justify-content:center;align-items:center;gap:var(--space-3);background:rgba(var(--surface-rgb), .75);border-radius:var(--radius-md);text-align:center;padding:var(--space-6);flex-direction:column;display:flex;position:absolute;inset:0}.overlay button{padding:var(--space-3) 28px;border-radius:var(--radius-pill);background:var(--accent);color:var(--surface);cursor:pointer;border:none;font-size:1.1rem}.overlay>button:hover:not(:disabled){background:color-mix(in srgb, var(--accent) 88%, white)}.overlay button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.overlay .error{color:var(--danger)}.mic-stop{border-radius:var(--radius-pill);border:1px solid rgba(var(--danger-rgb), .4);background:rgba(var(--surface-rgb), .6);color:var(--danger);cursor:pointer;padding:6px 12px;font-size:12px;position:absolute;top:10px;right:10px}.mic-stop:hover:not(:disabled){border-color:var(--danger-strong);color:var(--danger-strong);background:rgba(var(--danger-rgb), .12)}.mic-stop:focus-visible{outline:2px solid var(--danger-strong);outline-offset:2px}.ref-tones{flex-direction:column;gap:4px;display:flex}.ref-tone-buttons{gap:6px;display:flex}.ref-tone-buttons button{border-radius:var(--radius-sm);border:1px solid rgba(var(--accent-rgb), .35);background:rgba(var(--accent-rgb), .1);color:var(--accent);cursor:pointer;flex:1;padding:8px 0;font-size:14px}.ref-tone-buttons button:hover:not(:disabled){border-color:var(--accent);background:rgba(var(--accent-rgb), .18);color:var(--accent-bright)}.ref-tone-buttons button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.reset-button{border-radius:var(--radius-sm);border:1px solid var(--line);color:var(--ink-muted);cursor:pointer;background:0 0;padding:8px;font-size:12px}.reset-button:hover:not(:disabled){border-color:var(--ink-soft);color:var(--ink)}.reset-button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (width<=700px){.app{flex-direction:column;justify-content:flex-start;align-items:center}}.lab-screen{text-align:left;align-items:stretch;gap:0;width:100%;max-width:1760px;height:100dvh;min-height:0;margin-inline:auto;overflow:hidden}.lab-header{border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:20px;padding:12px 4px;display:flex}.lab-screen .lab-exit{border:1px solid var(--line-strong);border-radius:var(--radius-pill);color:var(--ink-muted);font-size:var(--text-sm);cursor:pointer;background:0 0;padding:6px 12px}.lab-screen .lab-exit:hover{color:var(--ink);border-color:var(--ink-soft)}.lab-title{font-family:var(--font-display);font-size:var(--text-xl);color:var(--ink);margin:0;font-weight:600}.lab-tabs{flex-wrap:wrap;flex:auto;gap:2px;display:flex}.lab-tabs .tab{font-size:var(--text-sm);color:var(--ink-muted);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;border-radius:0;padding:8px 14px}.lab-tabs .tab:hover{color:var(--ink)}.lab-tabs .tab.active{color:var(--ink);border-bottom-color:var(--accent);font-weight:600}.lab-width{align-items:center;gap:10px;display:flex}.lab-width .choice-option{font-size:var(--text-xs);flex:none;padding:4px 10px}.lab-screen .lab-exit:focus-visible,.lab-tabs .tab:focus-visible,.lab-screen .chip:focus-visible,.lab-screen .word-item:focus-visible,.lab-screen .pair-cell:focus-visible,.tgroup summary:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.lab-body{flex-direction:column;flex:auto;min-height:0;padding-top:14px;display:flex}.lab-grid{flex:auto;gap:16px;min-height:0;display:grid}.lab-grid-play{grid-template-columns:240px minmax(340px,440px) minmax(320px,1fr)}.lab-grid-pairs{grid-template-columns:minmax(420px,1fr) minmax(340px,440px)}.lab-pane{background:var(--surface-panel);border-radius:var(--radius-md);flex-direction:column;gap:12px;min-width:0;min-height:0;padding:14px;display:flex;overflow-y:auto}.lab-pane h3,.lab-pane h4{font-family:var(--font-display);color:var(--ink);margin:0;font-weight:600}.lab-pane h3{font-size:var(--text-lg)}.lab-pane h4{font-size:var(--text-base)}.pane-head{flex-direction:column;gap:8px;display:flex}.lab-empty{color:var(--ink-muted);font-size:var(--text-sm);margin:0;line-height:1.5}.chips{flex-wrap:wrap;gap:6px;display:flex}.lab-screen .chip{border:1px solid var(--line-strong);border-radius:var(--radius-pill);color:var(--ink-muted);font-size:var(--text-xs);cursor:pointer;background:0 0;padding:4px 11px}.lab-screen .chip.active{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.word-list{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.lab-screen .word-item{border-radius:var(--radius-sm);width:100%;color:var(--ink-muted);text-align:left;cursor:pointer;background:0 0;border:none;grid-template-columns:2em 1fr auto;align-items:baseline;gap:8px;padding:6px 8px;display:grid}.lab-screen .word-item:hover{background:rgba(var(--ink-rgb), .05)}.lab-screen .word-item.active{background:var(--surface);color:var(--ink);box-shadow:inset 3px 0 0 var(--accent)}.word-hanzi{color:var(--ink);font-size:1.15rem}.word-tone{font-size:var(--text-xs);font-variant-numeric:tabular-nums;color:var(--ink-soft)}.gate-stage{flex-direction:column;align-self:center;gap:10px;width:100%;max-width:420px;display:flex}.result-card{background:var(--surface);border-radius:var(--radius-sm);grid-template-columns:repeat(2,1fr);gap:8px 16px;margin:0;padding:10px 12px;display:grid}.result-card dt{font-size:var(--text-xs);color:var(--ink-soft)}.result-card dd{font-size:var(--text-base);font-variant-numeric:tabular-nums;color:var(--ink);margin:0}.result-sub{font-size:var(--text-xs);color:var(--ink-soft)}.lab-fold{width:100%;max-width:420px;font-size:var(--text-sm);color:var(--ink-muted);align-self:center}.lab-fold>summary{cursor:pointer;border-top:1px solid var(--line);color:var(--ink-muted);padding:6px 0}.lab-fold-body{flex-direction:column;gap:10px;padding-top:8px;display:flex}.game-settings-row{align-items:center;gap:10px;display:flex}.game-settings-row .param-name{flex:0 0 90px}.game-settings-row .choice{flex:auto}.lab-fold .choice-option{font-size:var(--text-xs);flex:none;padding:4px 10px}.pair-gallery{overflow:hidden}.pair-scroll{flex-direction:column;gap:22px;min-height:0;padding-right:4px;display:flex;overflow-y:auto}.pair-combo{flex-direction:column;gap:8px;display:flex}.pair-cols{grid-template-columns:1fr 1fr;gap:10px;display:grid}.pair-cols-head{z-index:1;background:var(--surface-panel);padding:2px 0;position:sticky;top:0}.pair-word{font-size:var(--text-sm);color:var(--ink-muted);margin:8px 0 4px}.pair-hanzi{color:var(--ink);font-size:1.2rem}.lab-screen .pair-cell{border-radius:var(--radius-sm);background:var(--surface);text-align:left;cursor:pointer;border:none;flex-direction:column;gap:4px;padding:6px;display:flex}.lab-screen .pair-cell:hover{box-shadow:0 0 0 1px var(--line-strong)}.lab-screen .pair-cell.active{box-shadow:0 0 0 2px var(--accent)}.lab-screen .pair-cell canvas{aspect-ratio:210/150;background:var(--canvas-backdrop);border-radius:4px;width:100%;height:auto}.lab-screen .pair-cell.missing{border:1px dashed var(--line-strong);cursor:default;background:0 0;justify-content:center;align-items:center;min-height:90px}.lab-pane-tuning{padding:0}.tuning-panel{font-size:var(--text-sm);font-variant-numeric:tabular-nums;color:var(--ink-muted)}.tuning-head{z-index:2;background:var(--surface-panel);border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:14px;display:flex;position:sticky;top:0}.tuning-head h3{margin:0}.tuning-sub{margin:2px 0 0}.tuning-panel .row{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.tgroup{border-bottom:1px solid var(--line);padding:0 14px}.tgroup>summary{cursor:pointer;align-items:center;gap:10px;padding:12px 0;list-style:none;display:flex}.tgroup>summary::-webkit-details-marker{display:none}.tgroup>summary:before{content:"";border-right:2px solid var(--ink-soft);border-bottom:2px solid var(--ink-soft);width:6px;height:6px;transition:transform .15s;transform:rotate(-45deg)}.tgroup[open]>summary:before{transform:rotate(45deg)}.tgroup-title{font-family:var(--font-display);font-size:var(--text-base);color:var(--ink);font-weight:600}.tgroup-moved{border-radius:var(--radius-pill);background:var(--warn);color:var(--accent-ink);font-size:var(--text-xs);margin-left:auto;padding:1px 8px}.tgroup>.param-help{margin:0 0 8px}.tgroup[open]{padding-bottom:12px}.tuning-panel .knob{border-left:2px solid #0000;padding:6px 0 6px 10px}.tuning-panel .knob.moved{border-left-color:var(--warn-strong)}.knob-top{align-items:baseline;gap:8px;display:flex}.knob-val{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--ink);margin-left:auto}.tuning-panel .param-name{color:var(--ink)}.tuning-panel input[type=range]{width:100%;accent-color:var(--accent)}.tuning-panel .knob>.param-help{max-height:0;font-size:var(--text-xs);color:var(--ink-soft);margin:0;line-height:1.45;transition:max-height .15s;overflow:hidden}.tuning-panel .knob:hover>.param-help,.tuning-panel .knob:focus-within>.param-help{max-height:12em;margin-top:4px}.knob-toggle{cursor:pointer;align-items:center;gap:8px;display:flex}.tuning-panel .revert{border:1px solid var(--warn-strong);border-radius:var(--radius-pill);color:var(--warn-strong);font-size:var(--text-xs);cursor:pointer;background:0 0;padding:0 6px}.diff{background:var(--surface-deep);border-radius:var(--radius-sm);color:var(--good-dim);white-space:pre-wrap;margin:0;padding:8px;font-size:11px;line-height:1.5;overflow-x:auto}.lab-screen.lab-page-scroll{height:auto;overflow:visible}.lab-page-scroll .lab-header{z-index:5;background:var(--surface);position:sticky;top:0}.lab-page-scroll .word-grid{max-height:none;padding-right:0;overflow:visible}@media (width<=1100px){.lab-screen{height:auto;overflow:visible}.lab-grid-play,.lab-grid-pairs{grid-template-columns:1fr}.lab-pane,.pair-scroll{overflow-y:visible}}@media (width>=720px){.app-game:has(.lab-screen){padding-left:env(safe-area-inset-left);padding-bottom:env(safe-area-inset-bottom)}.app-game:has(.lab-screen) .game-nav{display:none}.app-game:has(.lab-screen) .app-main{width:100%}}.word-gates{flex-direction:column;gap:12px;display:flex}.word-grid{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:14px;max-height:72vh;padding-right:6px;display:grid;overflow-y:auto}.word-card{background:var(--surface-panel);border-radius:var(--radius-md);flex-direction:column;gap:2px;padding:8px;display:flex}.word-card canvas{background:var(--canvas-backdrop);border-radius:var(--radius-sm,6px);cursor:pointer}.tone-average-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.lab-screen .tone-average-grid{grid-template-columns:repeat(2,minmax(280px,1fr))}.tone-average-card canvas{aspect-ratio:320/220;cursor:default;width:100%;height:auto}.settings-screen{text-align:left;align-items:stretch;gap:14px;max-width:420px}@media (width>=720px){.settings-screen{max-width:none}}.setting{gap:var(--space-2);flex-direction:column;display:flex}.settings-screen .setting-card{padding:var(--space-4);border-radius:var(--radius-lg);border:2px solid var(--ink);background:var(--surface-panel);box-shadow:var(--shadow-sticker);gap:var(--space-3)}.settings-screen .setting-card-head{align-items:center;gap:10px;display:flex}.settings-screen .setting-card>section{margin-top:var(--space-2)}.settings-screen .setting-card .choice{flex-direction:row}.settings-screen .setting-icon{width:28px;height:28px;color:var(--accent);flex-shrink:0;justify-content:center;align-items:center;display:flex}.settings-screen .setting-icon svg{width:22px;height:22px}.settings-screen h4{margin-bottom:var(--space-2)}.setting h3{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);margin:0;font-size:13px}.settings-screen .setting-card h3{letter-spacing:normal;text-transform:none;color:var(--ink);font-size:1rem;font-weight:800}.settings-screen .setting-callout{border-radius:var(--radius-md);border:2px solid color-mix(in srgb, var(--accent) 32%, transparent);background:color-mix(in srgb, var(--accent) 11%, var(--surface));color:var(--ink);margin:0;padding:14px 16px;font-size:.9rem;line-height:1.5}.settings-screen .setting-callout-empty{border-color:color-mix(in srgb, var(--ink) 18%, transparent);background:var(--surface);color:var(--ink-muted)}.setting-actions{gap:var(--space-2);flex-wrap:wrap;display:flex}.settings-screen .setting-actions-row{flex-wrap:nowrap}.settings-screen .setting-actions-row button{flex:1 1 0;min-width:0;padding:10px;font-size:.82rem}.setting .param-help{color:var(--ink-dim);margin:0;margin-top:var(--space-2);font-size:12px;line-height:1.5}.choice{flex-wrap:wrap;gap:6px;display:flex}.choice-option{padding:var(--space-2) 10px;border-radius:var(--radius-md);border:1px solid var(--line);color:var(--ink-muted);cursor:pointer;background:0 0;flex:auto;font-size:13px}.choice-option:hover:not(:disabled):not(.active){border-color:var(--ink-soft);color:var(--ink)}.choice-option:disabled{opacity:.4;cursor:not-allowed}.choice-option:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.choice-option.active{border-color:var(--accent);background:rgba(var(--accent-rgb), .12);color:var(--accent-bright)}.level-select-screen .choice-option{border:2px solid var(--ink);box-shadow:3px 3px 0 var(--ink);color:var(--ink);background:0 0}.level-select-screen .choice-option:hover:not(:disabled):not(.active){filter:brightness(.94);border-color:var(--ink);color:var(--ink)}.level-select-screen .choice-option:disabled{box-shadow:none}.level-select-screen .proficiency-choice .choice-option{flex:1 1 0}.level-select-screen .choice-mix-row{width:100%}.level-select-screen .choice-option-mix{flex:100%;justify-content:center;align-items:center;gap:6px;width:100%;display:inline-flex}.level-select-screen .choice-option-mix-icon{width:16px;height:16px}.level-select-screen .playhome-menu{max-width:none;margin-top:var(--space-6)}.level-select-screen .level-section-note{margin-top:var(--space-3)}.level-select-screen{border-radius:var(--radius-md);background:var(--canvas-backdrop);border:1px solid var(--line)}.level-select-screen .playhome-menu .primary{border:2px solid var(--ink);width:100%;box-shadow:3px 3px 0 var(--ink)}.level-select-screen .playhome-menu .primary:disabled{box-shadow:none;opacity:.5;cursor:not-allowed}.settings-screen .choice-option.active,.level-select-screen .choice-option.active{border-color:var(--accent-bright);background:var(--accent-bright);color:var(--accent-ink);font-weight:700}.settings-screen .danger{border-color:rgba(var(--danger-rgb), .5);color:var(--danger)}.visualiser-screen{gap:12px;overflow:hidden}@media (width>=720px){.visualiser-screen{padding-top:24px}}.visualiser-body{flex-direction:column;flex:auto;align-items:stretch;gap:10px;min-height:0;display:flex;position:relative}.visualiser-screen .stage{flex:auto;width:100%;min-width:0;max-width:none;min-height:0;margin-top:0}.vis-canvas-column{flex-direction:column;flex:auto;gap:10px;min-width:0;min-height:0;display:flex}.vis-canvas-clear{display:none}.visualiser-screen .stage canvas{aspect-ratio:auto;width:100%;height:100%}.tone-mark-icon{color:currentColor;width:18px;height:13.5px}.vis-top-bar{flex:none;grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;padding:12px 12px 0;display:grid}.vis-top-bar .vis-readouts{grid-column:2}.vis-top-bar>button{flex:none;grid-column:3;justify-self:end;padding:8px 14px}.vis-top-bar .vis-mute-group{grid-column:1;justify-self:start}.vis-mute-group{flex-direction:column;gap:4px;display:flex}.vis-mute-group .vis-mute{border-radius:var(--radius-pill);justify-content:center;align-items:center;width:40px;height:40px;padding:0;display:flex}.vis-mute-icon{color:currentColor;width:20px;height:20px}.vis-mute.muted{border-color:rgba(var(--danger-rgb), .4);color:var(--danger)}.vis-mute-error{text-align:left;max-width:120px;margin:0;font-size:11px}.vis-side-panel{flex-direction:row;flex:none;align-self:stretch;align-items:center;gap:10px;min-width:0;padding:0 12px 8px;display:flex;overflow:hidden}.vis-readouts{flex-direction:row;justify-content:center;align-items:stretch;gap:8px;min-width:0;display:flex}.vis-accuracy{border-radius:var(--radius-md);background:var(--surface-panel);border:1px solid var(--line);text-align:center;flex-direction:column;flex:1 1 0;justify-content:center;align-items:center;gap:2px;min-width:0;max-width:112px;padding:8px 10px;display:flex;position:relative}.vis-wrong-toast{border-radius:var(--radius-pill);background:rgba(var(--danger-rgb), .16);color:var(--danger);white-space:nowrap;pointer-events:none;visibility:hidden;margin-left:6px;padding:2px 8px;font-size:10px;font-weight:600;position:absolute;top:50%;left:100%;transform:translateY(-50%)}.vis-wrong-toast.is-shown{visibility:visible;animation:1.2s ease-out forwards unheard-fade}.vis-accuracy.tier-bad{border:2px solid var(--danger);padding:7px 9px;animation:.2s ease-out vis-tone-shake}@keyframes vis-tone-shake{0%{transform:translate(0)}15%{transform:translate(-6px)}35%{transform:translate(5px)}55%{transform:translate(-4px)}75%{transform:translate(2px)}to{transform:translate(0)}}.vis-accuracy-label{letter-spacing:.1em;text-transform:uppercase;color:var(--ink-dim);font-size:9px;font-weight:600}.vis-accuracy-value{font-size:20px;font-weight:700;line-height:1.1}.vis-accuracy-value.tier-good{color:var(--good)}.vis-accuracy-value.tier-ok{color:rgb(var(--gate-ok-rgb))}.vis-accuracy-value.tier-bad{color:var(--danger)}.vis-accuracy-value.vis-accuracy-empty{color:var(--ink-dim)}.vis-accuracy-tries{color:var(--ink-dim);font-size:10px}.vis-filter-group{flex-direction:column;flex:none;gap:4px;display:flex}.vis-filter-group .vis-filter-btn{border-radius:var(--radius-md);border:1px solid var(--accent);background:rgba(var(--accent-rgb), .08);cursor:pointer;justify-content:center;align-items:center;gap:6px;width:auto;min-width:56px;padding:8px 10px;display:flex}.vis-filter-icon{width:22px;height:17px;color:var(--accent)}.vis-filter-btn .tone-mark-icon{width:22px;height:16.5px;color:var(--accent)}.vis-filter-chevron{width:12px;height:12px;color:var(--accent);flex-shrink:0;transition:transform .15s}.word-rail-wrap{flex:auto;align-items:center;min-width:0;min-height:59px;display:flex}.vis-side-panel.is-free .vis-filter-group .vis-filter-btn{gap:4px;height:59px;padding:4px 6px}.vis-side-panel.is-free .vis-filter-icon{width:63.1579px;height:50px}.vis-free-hint{color:var(--ink-muted);text-align:left;margin:0;font-size:.8rem;font-style:italic}.word-rail{scrollbar-width:thin;scrollbar-color:var(--ink-dim) transparent;-webkit-overflow-scrolling:touch;flex-direction:row;flex:auto;gap:8px;min-width:0;padding:2px;display:flex;overflow:auto hidden}.word-rail::-webkit-scrollbar{height:4px}.word-rail::-webkit-scrollbar-thumb{background:var(--ink-dim);border-radius:2px}.word-rail::-webkit-scrollbar-track{background:0 0}.word-rail .word-chip{flex:none;width:auto;padding:10px 8px}.tone-popover-backdrop{background:rgba(var(--ink-rgb), .45);z-index:5;justify-content:center;align-items:flex-start;padding-top:10%;display:flex;position:absolute;inset:0}.tone-popover{border-radius:var(--radius-md);background:var(--surface);border:1px solid var(--line);flex-direction:column;width:min(88%,320px);display:flex;overflow:hidden;box-shadow:0 8px 24px #00000040}.tone-popover-tabs{border-bottom:1px solid var(--line);display:flex}.tone-popover-tabs .tone-popover-tab{color:var(--ink-dim);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;border-radius:0;flex:1 1 0;padding:12px 10px;font-size:13px;font-weight:600}.tone-popover-tabs .tone-popover-tab.active{color:var(--ink);border-bottom-color:var(--accent)}.tone-popover-list{flex-direction:column;gap:8px;padding:12px;display:flex}.tone-popover-list .tone-popover-row{border-radius:var(--radius-md);border:1px solid var(--line);width:100%;color:var(--ink);text-align:left;cursor:pointer;background:0 0;align-items:center;gap:10px;padding:10px 12px;font-size:14px;display:flex}.tone-popover-list .tone-popover-row.active{border-color:var(--accent);background:rgba(var(--accent-rgb), .1)}.tone-popover-list .tone-popover-row.is-locked{color:var(--ink-dim);justify-content:space-between}.tone-popover-row .pro-badge,.word-chip .pro-badge{white-space:nowrap;color:var(--surface);background:var(--warn);border:2px solid var(--ink);border-radius:var(--radius-pill);margin-left:auto;padding:3px 9px;font-size:.68rem;font-weight:800}.tone-popover-row-icon{background:rgba(var(--accent-rgb), .12);width:26px;height:26px;color:var(--accent);border-radius:999px;flex:none;justify-content:center;align-items:center;display:flex}.tone-popover-row-icon-free{color:var(--ink-dim);background:var(--surface-panel);font-size:15px}.tone-popover-wordlists{flex-direction:column;gap:10px;padding:14px;display:flex}.tone-popover-desc{color:var(--ink-dim);margin:0;font-size:13px;line-height:1.5}.word-list-row{border-radius:var(--radius-md);background:var(--surface-panel);color:var(--ink-dim);justify-content:space-between;align-items:center;padding:12px 14px;display:flex}.word-list-row.is-locked{border-style:dashed;border-color:color-mix(in srgb, var(--ink) 28%, transparent);background:color-mix(in srgb, var(--surface-panel) 50%, var(--surface));color:var(--ink-dim)}.word-list-soon{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-dim);font-size:10px;font-weight:700}.calibrate-overlay{background:linear-gradient(to bottom, rgba(var(--surface-rgb), .95) 40%, rgba(var(--surface-rgb), 0));flex-direction:column;align-items:center;gap:6px;padding:14px 12px 18px;display:flex;position:absolute;top:0;left:0;right:0}.calibrate-overlay .note,.calibrate-overlay .big{margin:0}.tone-pill{border-radius:999px;flex:none;justify-content:center;align-items:center;width:42px;height:42px;padding:0;font-size:19px;font-weight:600;display:flex}.tone-pill.tone-pill-free{font-size:11px;font-weight:500}.tone-pill.is-locked{opacity:.55;position:relative}.tone-pill-lock{font-size:10px;line-height:1;position:absolute;bottom:-4px;right:-4px}.word-chip{border-radius:var(--radius-md);flex-direction:column;flex:none;align-items:center;gap:2px;min-width:44px;line-height:1.2;display:flex}.word-chip-hanzi{font-size:15px}.word-chip-pinyin{color:var(--ink-dim);font-size:11px}.choice-option.active .word-chip-pinyin{color:inherit}.word-chip.active{background:var(--accent);color:var(--accent-ink);border:none}.word-chip.is-locked{border-style:dashed;border-color:color-mix(in srgb, var(--ink) 28%, transparent);background:color-mix(in srgb, var(--surface-panel) 50%, var(--surface));color:var(--ink-dim)}.word-chip-lock{font-size:12px}.visualiser-panel{display:none}@media (width>=720px){.visualiser-body{flex-direction:row;align-items:stretch;gap:28px;display:flex}.vis-top-bar{display:none}.vis-canvas-column{flex:1 1 0;align-items:center;gap:12px;min-width:0}.vis-canvas-clear{flex:none;justify-content:center;align-items:flex-start;gap:10px;width:100%;display:flex}.visualiser-screen .stage{flex:auto;width:100%;max-width:none;min-height:0;margin-top:0}.visualiser-screen .stage canvas{aspect-ratio:auto;width:100%;height:100%}.vis-top-bar,.vis-side-panel,.word-rail,.tone-popover-backdrop{display:none}.visualiser-panel{text-align:left;background:0 0;flex-direction:column;flex:1 1 0;align-self:stretch;align-items:stretch;gap:16px;min-width:0;min-height:0;padding:0;display:flex;position:static;overflow:hidden}.visualiser-panel .vis-readouts{flex:none;justify-content:stretch;gap:12px}.visualiser-panel .vis-accuracy{flex:1 1 0;gap:4px;max-width:none;min-height:96px;padding:16px 14px}.visualiser-panel .vis-wrong-toast{margin-left:0;position:static;transform:none}.visualiser-panel .vis-accuracy-label{letter-spacing:.12em;font-size:11px}.visualiser-panel .vis-accuracy-value{letter-spacing:-.02em;font-size:40px}.visualiser-panel .vis-accuracy-tries{font-size:12px}.visualiser-panel .vis-tone-picker{border-radius:var(--radius-md);background:var(--surface);border:1px solid var(--line);flex-direction:column;flex:none;width:100%;display:flex;overflow:hidden}.visualiser-panel .tone-rail-pills{flex-wrap:wrap;justify-content:center;gap:10px;padding:12px;display:flex}.visualiser-panel .tone-pill{width:48px;height:48px;padding:0;font-size:22px}.visualiser-panel .tone-pill .tone-mark-icon{width:24px;height:18px}.visualiser-panel .tone-pill.tone-pill-free{font-size:12px}.visualiser-panel .word-strip{scrollbar-width:thin;scrollbar-color:var(--ink-dim) transparent;flex:auto;grid-template-columns:repeat(2,1fr);grid-auto-rows:min-content;align-content:start;gap:8px 12px;min-height:0;display:grid;overflow-y:auto}.visualiser-panel .word-chip{flex-direction:row;justify-content:flex-start;gap:8px;width:100%;min-width:0;padding:8px 10px}}.howto-section{gap:var(--space-2);text-align:left;flex-direction:column;display:flex}.howto-section h3{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);margin:0;font-size:13px}.contour-spark{color:var(--accent);opacity:.85;flex:none}.tone-list li{align-items:center}.tutorial-card{text-align:center;flex-direction:column;gap:10px;padding:24px}.tutorial-card h3{margin:0;font-size:18px}.walkthrough-pip{margin:0 auto;display:block}.silent-gate-steps{margin:0 0 var(--space-4);gap:var(--space-4);width:100%;color:var(--ink);flex-direction:column;padding:0;list-style:none;display:flex}.silent-gate-step{align-items:center;gap:var(--space-4);text-align:left;display:flex}.silent-gate-icon svg{flex:none;width:48px;height:48px;display:block}.silent-gate-text{flex-direction:column;gap:2px;display:flex}.silent-gate-step:first-child .silent-gate-icon svg{transform-origin:50% 10%;animation:1.1s ease-in-out infinite silent-gate-ring}.silent-gate-step:nth-child(2) .silent-gate-icon svg{animation:1.1s ease-in-out infinite silent-gate-pulse}.silent-gate-step:nth-child(3) .battery-bar{animation:1.6s ease-in-out infinite silent-gate-charge}.silent-gate-step:nth-child(3) .battery-bar-1{animation-delay:.2s}.silent-gate-step:nth-child(3) .battery-bar-2{animation-delay:.4s}.silent-gate-step:nth-child(3) .battery-bar-3{animation-delay:.6s}@keyframes silent-gate-charge{0%,15%{opacity:.15}35%,80%{opacity:1}to{opacity:.15}}@keyframes silent-gate-pulse{0%,to{opacity:.85;transform:scale(1)}50%{opacity:1;transform:scale(1.12)}}@keyframes silent-gate-ring{0%,to{transform:rotate(0)}15%{transform:rotate(-12deg)}30%{transform:rotate(10deg)}45%{transform:rotate(-7deg)}60%{transform:rotate(4deg)}75%,to{transform:rotate(0)}}.silent-gate-steps--still svg,.silent-gate-steps--still .battery-bar{animation:none!important}@media (prefers-reduced-motion:reduce){.silent-gate-steps svg,.silent-gate-steps .battery-bar{animation:none!important}}.frame:has(.landing){max-width:100%}.landing{text-align:left;flex-direction:column;gap:4.5rem;width:100%;max-width:72rem;margin-inline:auto;display:flex}@media (width>=901px){.landing{gap:7rem}}.landing-nav{z-index:10;width:100vw;padding:10px max(16px, env(safe-area-inset-left));background:color-mix(in srgb, var(--surface-panel) 88%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw);position:sticky;top:0}.nav-inner{justify-content:space-between;align-items:center;gap:var(--space-3);width:100%;max-width:72rem;margin-inline:auto;display:flex;position:relative}.landing-nav.nav-menu-open{z-index:110;background:var(--surface-panel);border-bottom-color:#0000}.nav-brand{align-items:center;gap:var(--space-2);cursor:pointer;font:inherit;color:inherit;background:0 0;border:none;flex:none;padding:0;text-decoration:none;display:flex}.nav-brand:hover .nav-name{color:var(--accent)}.nav-brand:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius-sm)}.nav-logo{border-radius:var(--radius-sm);display:block}.nav-name{letter-spacing:.06em;font-weight:700;font-size:var(--text-sm);color:var(--ink);white-space:nowrap}.landing-nav-links{gap:var(--space-4);scrollbar-width:none;max-width:min(52vw,600px);padding-inline:var(--space-2);display:none;position:absolute;left:50%;overflow-x:auto;transform:translate(-50%)}.landing-nav-links::-webkit-scrollbar{display:none}.landing-nav-links a{color:var(--ink-muted);font-size:var(--text-sm);white-space:nowrap;text-decoration:none}.landing-nav-links a:hover{color:var(--ink)}.landing-nav-links a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.nav-actions{align-items:center;gap:var(--space-2);flex:none;margin-left:auto;display:flex}.nav-cta,.nav-cta-shady{position:relative}.nav-cta-shady:before{content:"";border-radius:var(--radius-pill);background:var(--ink);position:absolute;inset:0;transform:translate(3px,3px)}.nav-cta-btn{z-index:1;align-items:center;gap:var(--space-2);border:2px solid var(--ink);border-radius:var(--radius-pill);background:var(--accent);color:var(--accent-ink);font-size:var(--text-base);letter-spacing:.02em;cursor:pointer;white-space:nowrap;padding:12px 22px;font-weight:700;display:inline-flex;position:relative}.nav-cta-btn:hover:not(:disabled){background:color-mix(in srgb, var(--accent) 88%, white)}.nav-cta-btn:focus-visible{outline:2px solid var(--accent-bright);outline-offset:3px}.nav-cta-btn:disabled{opacity:.55;cursor:not-allowed}.nav-cta-chevron{width:14px;height:14px;transition:transform .15s}.nav-cta-btn[aria-expanded=true] .nav-cta-chevron{transform:rotate(180deg)}.nav-cta-menu{z-index:3;min-width:196px;padding:var(--space-1);border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface-panel);box-shadow:0 8px 24px color-mix(in srgb, var(--ink) 20%, transparent);position:absolute;top:calc(100% + 10px);right:0}.nav-cta-item{align-items:center;gap:var(--space-3);border-radius:var(--radius-sm);width:100%;color:var(--ink);font:inherit;font-size:var(--text-sm);text-align:left;cursor:pointer;background:0 0;border:none;margin-bottom:.5rem;padding:10px 12px;text-decoration:none;display:flex}.nav-cta-item:hover:not(:disabled){background:color-mix(in srgb, var(--accent) 12%, transparent)}.nav-cta-item:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.nav-cta-item-disabled{opacity:.55;cursor:not-allowed}.nav-cta-soon{color:var(--ink-muted);font-style:italic;font-size:var(--text-xs)}.nav-cta-icon{width:18px;height:18px;color:var(--accent);flex-shrink:0}.nav-hamburger{border-radius:var(--radius-sm);width:40px;height:40px;color:var(--ink-muted);cursor:pointer;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:none}.nav-hamburger:hover{color:var(--ink);background:var(--surface-panel)}.nav-hamburger:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.nav-hamburger-icon{width:22px;height:22px}.nav-shady{width:min(280px,100%);position:relative}.nav-shady:before{content:"";border-radius:var(--radius-pill);background:var(--ink);position:absolute;inset:0;transform:translate(3px,3px)}.nav-mobile-menu .nav-shady-btn{z-index:1;border:2px solid var(--ink);border-radius:var(--radius-pill);background:var(--accent-bright);width:100%;color:var(--accent-ink);font:inherit;font-size:var(--text-base);text-align:center;cursor:pointer;padding:14px 28px;font-weight:700;text-decoration:none;display:block;position:relative}.nav-mobile-menu .nav-shady-btn:hover{background:var(--accent)}.nav-mobile-menu .nav-shady-btn:focus-visible{outline:2px solid var(--accent-bright);outline-offset:3px}.nav-mobile-menu{z-index:100;justify-content:center;align-items:center;gap:var(--space-3);padding:88px var(--space-6) var(--space-6);background:var(--surface-panel);flex-direction:column;display:flex;position:fixed;inset:0}@media (width>=901px){.nav-landing .landing-nav-links{display:flex}.nav-landing .nav-hamburger{display:none}}.nav-menu-open .nav-brand,.nav-menu-open .nav-actions{z-index:1;position:relative}@media (width<=900px){.nav-landing .nav-hamburger{display:inline-flex}.nav-cta-btn{font-size:var(--text-sm);padding:10px 18px}}.hero-row{text-align:center;align-items:center;gap:var(--space-6);flex-direction:column;display:flex}@media (width>=901px){.hero-row{text-align:left;flex-direction:row;align-items:center;gap:56px}.hero-row .landing-hero{text-align:left;flex:56%;align-items:flex-start;min-width:0;padding-top:0}.hero-row .landing-demo{flex:40%;max-width:380px}}.landing-hero{text-align:center;align-items:center;gap:var(--space-4);padding-top:var(--space-4);flex-direction:column;scroll-margin-top:88px;display:flex}.landing-hero h1{letter-spacing:0;text-wrap:balance;font-size:clamp(2.3rem,5.2vw + 1rem,3.6rem);line-height:1.08}.section-eyebrow{font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin:0;font-weight:600}.hero-pitch{color:var(--ink-muted);font-size:var(--text-lg);max-width:52ch;line-height:1.6}.hero-actions{justify-content:center;gap:var(--space-3);margin-top:var(--space-2);flex-wrap:wrap;display:flex}@media (width>=901px){.hero-actions{justify-content:flex-start}}.hero-requirement{text-align:center;color:var(--ink-dim);grid-column:1/-1}@media (width>=901px){.hero-requirement{text-align:left}}section.hero-cards,div.hero-cards{gap:var(--space-4);grid-template-columns:1fr;display:grid}@media (width>=640px){section.hero-cards,div.hero-cards{grid-template-columns:1fr 1fr}}.hero-card,.roadmap-item,.home-screen-platform,.tone-average-card{border-top:2px solid var(--line-strong);border-radius:0 0 var(--radius-sm) var(--radius-sm);background:var(--surface-panel);transition:border-color .2s,transform .2s,background-color .2s}.hero-card:hover,.roadmap-item:hover,.home-screen-platform:hover,.tone-average-card:hover{border-top-color:var(--accent);transform:translateY(-3px)}.hero-card{align-items:flex-start;gap:var(--space-2);padding:var(--space-6);flex-direction:column;display:flex}.hero-card h3{font-size:var(--text-xl);margin:0}.hero-card p:not(.section-eyebrow){color:var(--ink-muted);line-height:1.6}.hero-card button{margin-top:var(--space-2);transition:transform .15s,background-color .15s,border-color .15s}.hero-card:hover button.primary,.hero-card:hover button:not(.primary){transform:translateY(-1px)}.hero-card-media{flex:1}.hero-card-media .hero-card-thumb,.hero-card-media>button{align-self:center}.hero-card-thumb{border-radius:var(--radius-sm);border:1px solid var(--line);width:auto;max-width:100%;height:auto;max-height:320px;margin-top:auto}.hero-card-accent{border-top-color:var(--accent);background:rgba(var(--accent-rgb), .06)}.hero-card-accent:hover{background:rgba(var(--accent-rgb), .1)}.landing button:not(.nav-cta-btn):not(.nav-hamburger):not(.nav-shady-btn):not(.primary):not(.close-x):not(.update-banner-link){font-size:var(--text-base);border-radius:var(--radius-pill);border:1px solid var(--line);color:var(--ink);cursor:pointer;background:0 0;align-items:center;padding:12px 20px;text-decoration:none;display:inline-flex}.landing button:not(.nav-cta-btn):not(.nav-hamburger):not(.nav-shady-btn):not(.primary):not(.close-x):not(.update-banner-link):hover:not(:disabled){border-color:var(--ink-soft);color:var(--ink)}.landing button:not(.nav-cta-btn):not(.nav-hamburger):not(.nav-shady-btn):not(.primary):not(.close-x):not(.update-banner-link):focus-visible{outline:2px solid var(--accent);outline-offset:2px}.landing button.primary{font-size:var(--text-base);border-radius:var(--radius-pill);background:var(--accent);color:var(--accent-ink);cursor:pointer;border:none;padding:12px 20px}.landing button.primary:hover:not(:disabled){background:color-mix(in srgb, var(--accent) 88%, white)}.visualiser-cta{align-self:center}.visualiser-row{align-items:center;gap:var(--space-5);flex-direction:column;display:flex}.visualiser-text{gap:var(--space-4);text-align:center;flex-direction:column;align-items:center;display:flex}@media (width>=901px){.visualiser-row{flex-direction:row;align-items:center;gap:56px}.visualiser-text{text-align:left;flex:50%;align-items:flex-start;min-width:0}.visualiser-row .visualiser-figure{flex:40%}.visualiser-row .visualiser-demo{flex:50%}.visualiser-cta{font-size:var(--text-lg);align-self:flex-start;padding:16px 32px}}.visualiser-demo{justify-content:center;width:100%;display:flex}.visualiser-demo .demo-canvas{max-width:550px}.visualiser-figure{width:100%;max-width:340px}.visualiser-figure .tone-average-card{width:100%}.visualiser-caption{margin:var(--space-3) 0 0;text-align:center;font-size:var(--text-sm)!important;color:var(--ink-dim)!important}.landing-section-panel{padding:var(--space-7);border-radius:var(--radius-md);background:var(--surface-panel)}@media (width>=901px){.landing-section-panel{padding:var(--space-8) 64px}}.landing button.link{color:var(--ink-muted);font-size:var(--text-sm);text-align:left;border:none;align-self:flex-start;padding:6px 0}.landing button.link:hover:not(:disabled){color:var(--ink);text-decoration:underline}.landing-section{gap:var(--space-5);flex-direction:column;scroll-margin-top:88px;display:flex}.landing-section h2{font-size:var(--text-2xl);margin-bottom:var(--space-3)}.why-this-works-content{gap:var(--space-6);flex-direction:column;align-items:center;display:flex}@media (width>=901px){.why-this-works-content{flex-direction:row;justify-content:space-between;align-items:center;gap:4rem}.why-this-works-text{flex:55%;min-width:0}.why-this-works-content .visualiser-figure{flex:35%;min-width:0}}.title-multiline{white-space:pre-line}.landing-section h3{font-size:var(--text-base);color:var(--ink)}.landing-section p{color:var(--ink-muted);max-width:60ch;line-height:1.6}.landing-section p.note{max-width:unset}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.landing-section-cta{align-self:flex-start}.quote-row{gap:var(--space-6);flex-direction:column-reverse;display:flex}.quote-row-text{gap:var(--space-4);flex-direction:column;align-items:flex-start;display:flex}@media (width>=901px){.quote-row{flex-direction:row;align-items:center;gap:64px}.quote-row-text{flex:55%;min-width:0}.landing-quote{flex:40%}}.landing-quote{padding:var(--space-4) 0 var(--space-4) var(--space-6);border-left:3px solid var(--accent);color:var(--ink);font-size:var(--text-2xl);text-wrap:balance;margin:0;font-style:italic;line-height:1.45}.landing-quote cite{margin-top:var(--space-4);font-size:var(--text-sm);color:var(--ink-dim);font-style:normal;display:block}.pricing-feature-list{gap:var(--space-2);color:var(--ink-muted);flex-direction:column;margin:0;padding:0;line-height:1.6;list-style:none;display:flex}.pricing-feature-list li{padding-left:1.4em;position:relative}.pricing-feature-list li:before{content:"✓";color:var(--accent);position:absolute;left:0}.landing-faq{gap:var(--space-3);flex-direction:column;width:100%;display:flex}.landing-faq-item{border-top:2px solid var(--line-strong);padding:var(--space-4) 0;transition:border-color .2s}.landing-faq-item[open]{border-top-color:var(--accent)}.landing-faq-item summary{cursor:pointer;color:var(--ink);font-weight:600;list-style:none}.landing-faq-item summary::-webkit-details-marker{display:none}.landing-faq-item summary:before{content:"+";width:1.2em;color:var(--accent);display:inline-block}.landing-faq-item[open] summary:before{content:"−"}.landing-faq-item p{margin:var(--space-2) 0 0 1.2em;color:var(--ink-muted);max-width:60ch;line-height:1.6}.leaderboard-row{gap:var(--space-6);flex-direction:column;align-items:center;display:flex}.leaderboard-row-text{gap:var(--space-4);flex-direction:column;align-items:flex-start;display:flex}.leaderboard-shot{border-radius:var(--radius-md);border:1px solid var(--line);width:100%;max-width:520px;height:auto}@media (width>=901px){.leaderboard-row{flex-direction:row;align-items:center;gap:56px}.leaderboard-row-text{flex:45%;min-width:0}.leaderboard-shot{flex:50%;max-width:560px}}.roadmap-header{gap:var(--space-5);flex-direction:column;display:flex}.roadmap-header-text{gap:var(--space-4);flex-direction:column;display:flex}.roadmap-header-form{gap:var(--space-2);flex-direction:column;display:flex}@media (width>=901px){.roadmap-header{flex-direction:row;justify-content:space-between;align-items:center;gap:56px}.roadmap-header-text{flex:55%;min-width:0}.roadmap-header-form{flex:320px;max-width:360px}.roadmap-header-form .coming-soon-form{flex-wrap:nowrap}}.coming-soon-form{gap:var(--space-3);flex-wrap:wrap;align-items:center;display:flex}.coming-soon-form input{border-radius:var(--radius-md);border:1px solid var(--line-strong);color:var(--ink);font-size:var(--text-base);background:0 0;flex:240px;padding:10px 14px;transition:border-color .15s,color .15s}.coming-soon-form input:hover{border-color:var(--ink-soft)}.coming-soon-form input:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.coming-soon-form button.primary{border-radius:var(--radius-pill);transition:border-color .15s,color .15s}.coming-soon-form button.primary:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.coming-soon-disclaimer{color:var(--ink-muted);font-size:var(--text-xs);text-align:left;font-style:normal}.newsletter-success,.newsletter-error{border-radius:var(--radius-md);font-size:var(--text-sm);text-align:left;border:2px solid;padding:10px 14px;font-weight:600}.newsletter-success{border-color:var(--accent);color:var(--accent);background:rgba(var(--accent-rgb), .1)}.newsletter-error{border-color:var(--danger);color:var(--danger);background:rgba(var(--danger-rgb), .1)}.tone-average-grid{gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(200px,1fr));display:grid}.real-speech-row{gap:var(--space-6);flex-direction:column;align-items:center;display:flex}.real-speech-text{gap:var(--space-4);flex-direction:column;display:flex}.real-speech-data{gap:var(--space-3);flex-direction:column;display:flex}@media (width>=901px){.real-speech-row{flex-direction:row;gap:56px}.real-speech-text{flex:45%;min-width:0}.real-speech-data{flex:50%;min-width:0}.real-speech-data .tone-average-grid{grid-template-columns:repeat(2,1fr)}}.tag-pills{gap:var(--space-2);margin:var(--space-2) 0 0;flex-wrap:wrap;padding:0;list-style:none;display:flex}.tag-pills-centered{margin-top:var(--space-6);justify-content:center}.tag-pills li{border:1px solid var(--line);border-radius:var(--radius-pill);color:var(--ink-muted);font-size:var(--text-sm);padding:6px 14px;transition:border-color .15s,color .15s,background-color .15s}.tag-pills-centered li{border-color:var(--accent)}.tag-pills li:hover{border-color:var(--accent);color:var(--ink);background:rgba(var(--accent-rgb), .08)}.roadmap-grid{gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(180px,1fr));width:100%;display:grid}.roadmap-item{padding:var(--space-4) var(--space-5)}.roadmap-label{margin:0 0 var(--space-1);font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-dim);font-weight:600}.roadmap-title{color:var(--ink);font-size:var(--text-base);margin:0}.tone-average-card{align-items:center;gap:var(--space-4);padding:var(--space-5);flex-direction:column;margin:0;display:flex}.tone-average-card canvas{border-radius:var(--radius-sm);background:var(--canvas-backdrop);width:100%;height:auto;display:block}.tone-average-card figcaption{align-items:center;gap:var(--space-1);text-align:center;font-size:var(--text-sm);flex-direction:column;display:flex}.tone-average-card .syllable{font-size:var(--text-lg);color:var(--ink)}.tone-average-card .hanzi{font-size:var(--text-base);color:var(--ink)}.tone-average-card .cue{color:var(--ink-muted)}.landing-demo{align-items:center;width:100%}@media (width>=901px){.landing-demo{align-items:stretch}}.demo-canvas{border-radius:var(--radius-md);border:1px solid var(--line-soft);width:100%;max-width:380px;height:auto;display:block}.demo-placeholder{background:var(--canvas-backdrop)}.demo-static{gap:var(--space-4);color:var(--accent);flex-wrap:wrap;display:flex}.demo-static figcaption{color:var(--ink-muted);font-size:var(--text-sm);text-align:center}.mobile-row{gap:var(--space-6);flex-direction:column;display:flex}.mobile-text{gap:var(--space-4);flex-direction:column;display:flex}.mobile-video{aspect-ratio:502/1080;border-radius:var(--radius-md);border:1px solid var(--line);background:var(--surface-panel);align-self:center;width:min(280px,100%);overflow:hidden}.mobile-video video{object-fit:cover;width:100%;height:100%;display:block}@media (width>=901px){.mobile-row{justify-content:center;align-items:center;gap:56px}.mobile-text{flex:2 50%;min-width:0}.mobile-video{flex:1 0 auto}}.mobile-platforms{margin-top:var(--space-8);gap:var(--space-4);flex-direction:column;display:flex}.mobile-platforms h3{margin:0}.home-screen-guide{gap:var(--space-4);flex-direction:column;display:flex}@media (width>=640px){.home-screen-guide{flex-direction:row}}.home-screen-platform{gap:var(--space-3);padding:var(--space-4);flex-direction:column;flex:1 1 0;display:flex}.home-screen-platform h4{font-size:var(--text-sm);text-transform:uppercase;letter-spacing:.06em;color:var(--ink-soft);margin:0}.home-screen-step-list{gap:var(--space-3);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.home-screen-step-list li{align-items:center;gap:var(--space-3);color:var(--ink-muted);font-size:var(--text-sm);display:flex}.home-screen-step-icon{border-radius:var(--radius-sm);background:rgba(var(--accent-rgb), .14);width:32px;height:32px;color:var(--accent);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.home-screen-step-icon svg{width:18px;height:18px}.landing-footer{--footer-bg:var(--surface-panel);--footer-accent:var(--accent);width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw);margin-bottom:calc(-1 * max(16px, env(safe-area-inset-bottom)));background:var(--footer-bg);color:color-mix(in srgb, var(--ink) 75%, transparent);padding:40px max(24px, env(safe-area-inset-left));padding-bottom:calc(40px + max(16px, env(safe-area-inset-bottom)))}.footer-grid,.footer-bottom{max-width:72rem;margin-inline:auto}.footer-grid{justify-content:space-between;gap:var(--space-6);margin-bottom:var(--space-5);flex-wrap:wrap;display:flex}.footer-brand{max-width:32em}.footer-blurb{color:var(--ink);margin:0 0 var(--space-2)}.footer-builtby{color:color-mix(in srgb, var(--ink) 65%, transparent);font-size:var(--text-sm);margin:0}.footer-builtby-link{color:color-mix(in srgb, var(--ink) 75%, transparent);transition:color .15s}.footer-builtby-link:hover{color:var(--footer-accent)}.footer-connect h3{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.06em;color:color-mix(in srgb, var(--ink) 50%, transparent);margin:0 0 var(--space-3);font-weight:600}.footer-connect ul{gap:var(--space-3);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.footer-link{color:color-mix(in srgb, var(--ink) 75%, transparent);font-size:var(--text-sm);align-items:center;gap:10px;text-decoration:none;transition:color .15s;display:inline-flex}.footer-link-icon{background:color-mix(in srgb, var(--ink) 10%, transparent);width:32px;height:32px;color:color-mix(in srgb, var(--ink) 70%, transparent);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;transition:color .15s,background-color .15s;display:inline-flex}.footer-link-icon svg{width:16px;height:16px}.footer-link:hover{color:var(--ink)}.footer-link:hover .footer-link-icon{background:color-mix(in srgb, var(--ink) 15%, transparent);color:var(--footer-accent)}.footer-link:focus-visible{outline:2px solid var(--footer-accent);outline-offset:2px}.footer-bottom{justify-content:space-between;align-items:center;gap:var(--space-2);border-top:1px solid color-mix(in srgb, var(--ink) 10%, transparent);padding-top:var(--space-4);font-size:var(--text-xs);color:color-mix(in srgb, var(--ink) 55%, transparent);flex-flow:wrap;display:flex}.footer-attribution{text-align:right;max-width:28em;margin:0}.footer-copyright,.footer-legal{margin:0}.footer-legal-link{font:inherit;font-size:inherit;color:inherit;cursor:pointer;background:0 0;border:none;padding:0;text-decoration:underline}.footer-legal-link:hover{color:var(--footer-accent)}.hud-controls{pointer-events:auto;flex:none;align-items:center;gap:0;display:flex}.hud-button{padding:var(--space-2);margin:calc(var(--space-2) * -1) 0;color:var(--ink);cursor:pointer;opacity:.75;background:0 0;border:none;flex:none;place-items:center;transition:opacity .12s;display:grid}.hud-button:hover:not(:disabled),.hud-button:active{opacity:1}.hud-button:focus-visible{opacity:1;outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius-sm)}.hud-button svg{width:26px;height:26px}.resume-button{justify-content:center;align-items:center;gap:var(--space-2);display:inline-flex}.resume-button svg{width:18px;height:18px}.options-reveal{justify-content:center;align-self:stretch;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-radius:var(--radius-pill);border:1px solid var(--line);color:var(--ink-dim);cursor:pointer;background:0 0;font-size:14px;display:inline-flex}.options-reveal svg{width:17px;height:17px}.options-reveal:hover:not(:disabled){border-color:var(--ink-soft);color:var(--ink-muted)}.options-reveal:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.pause-menu{cursor:default;padding:var(--space-4);background:color-mix(in srgb, var(--ink) 45%, transparent);overflow-y:auto}.pause-card{align-items:stretch;gap:var(--space-4);width:100%;max-width:400px;max-height:100%;padding:var(--space-5);border-radius:var(--radius-md);background:var(--surface);box-shadow:0 12px 32px color-mix(in srgb, var(--ink) 25%, transparent);text-align:left;flex-direction:column;display:flex;overflow-y:auto}.pause-header{justify-content:space-between;align-items:flex-start;gap:var(--space-3);display:flex}.pause-badge{border-radius:var(--radius-pill);background:color-mix(in srgb, var(--accent) 16%, transparent);color:var(--accent-bright);letter-spacing:.08em;text-transform:uppercase;align-items:center;gap:6px;padding:6px 14px;font-size:13px;font-weight:700;display:inline-flex}.pause-badge svg{width:14px;height:14px}.pause-score{text-align:right;flex-direction:column;align-items:flex-end;display:flex}.pause-score-num{font-family:var(--font-display);color:var(--ink);font-size:2rem;line-height:1}.pause-score-caption{color:var(--ink-muted);font-size:12px}.pause-accuracy{gap:var(--space-2);flex-direction:column;display:flex}.pause-accuracy-label{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);margin:0;font-size:11px;font-weight:600}.pause-accuracy-grid{gap:var(--space-2);grid-template-columns:repeat(4,1fr);display:grid}.pause-tone-card{padding:var(--space-2) 4px;border-radius:var(--radius-sm);background:var(--surface-panel);flex-direction:column;align-items:center;gap:6px;display:flex}.pause-tone-icon{width:28px;height:21px;color:var(--ink-muted)}.pause-tone-bar{border-radius:var(--radius-pill);background:var(--surface-deep);width:100%;height:5px;overflow:hidden}.pause-tone-bar-fill{border-radius:var(--radius-pill);background:var(--accent);height:100%}.pause-tone-pct{font-variant-numeric:tabular-nums;color:var(--ink-muted);font-size:11px}.acc-subhead{margin:var(--space-3) 0 var(--space-1);color:var(--ink-soft);font-size:12px;font-weight:600}.tone-acc-group{flex-direction:column;gap:6px;display:flex}.tone-acc-group-label{color:var(--ink-muted);margin:0;font-size:11px}.tone-acc-pairs{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.tone-acc-pair{align-items:center;gap:var(--space-2);padding:6px var(--space-2);border-radius:var(--radius-sm);background:var(--surface-panel);grid-template-columns:auto 1fr 3.2em;display:grid}.tone-acc-pair .pause-tone-pct{text-align:right}.tone-acc-pair-label{gap:2px;display:inline-flex}.tone-acc-pair-mark svg{width:22px;height:16px;display:block}.tone-acc-more{color:var(--accent);cursor:pointer;background:0 0;border:0;align-self:flex-start;padding:0;font-size:12px}.pause-action-row{gap:var(--space-2);display:flex}.pause-card .pause-secondary{padding:var(--space-3) var(--space-2);border-radius:var(--radius-pill);border:1px solid var(--line);color:var(--ink);cursor:pointer;background:0 0;flex:1;justify-content:center;align-items:center;gap:6px;font-size:14px;font-weight:600;display:inline-flex}.pause-secondary svg{width:16px;height:16px}.pause-secondary:hover:not(:disabled){border-color:var(--ink-soft);background:color-mix(in srgb, var(--ink) 5%, transparent)}.pause-secondary:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.pause-card .pause-quit{border-color:color-mix(in srgb, var(--danger) 40%, transparent);color:var(--danger)}.pause-quit:hover:not(:disabled){border-color:var(--danger-strong);color:var(--danger-strong);background:color-mix(in srgb, var(--danger) 10%, transparent)}.pause-divider{border:none;border-top:1px dashed var(--line);margin:0}.pause-card .pause-settings-toggle{align-items:center;gap:var(--space-2);padding:var(--space-3);border-radius:var(--radius-sm);border:1px solid var(--line);color:var(--ink);cursor:pointer;background:0 0;font-size:15px;font-weight:700;display:inline-flex}.pause-settings-toggle svg:first-child{width:18px;height:18px;color:var(--ink-muted)}.pause-settings-toggle:hover{border-color:var(--ink-soft)}.pause-settings-toggle:focus-visible,.pause-settings-toggle[aria-expanded=true]{border-color:var(--accent)}.pause-settings-chevron{width:16px;height:16px;color:var(--ink-muted);margin-left:auto}.pause-settings-body{gap:var(--space-4);flex-direction:column;display:flex}.pause-settings-body h4{margin:0 0 var(--space-1);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);font-size:12px}.pause-settings-body .param-help{margin:var(--space-1) 0 0;color:var(--ink-dim);font-size:12px;line-height:1.45}.pause-settings-body .choice-option{padding:7px var(--space-2);border-radius:var(--radius-sm);border:1px solid var(--line);color:var(--ink-muted);background:0 0;font-size:12px}.pause-settings-body .choice-option:hover:not(:disabled):not(.active){border-color:var(--ink-soft);color:var(--ink)}.pause-settings-body .choice-option:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.pause-settings-body .choice-option.active{background:var(--accent);color:var(--accent-ink);border-color:#0000;font-weight:600}.switch-row{justify-content:space-between;align-items:center;gap:var(--space-3);cursor:pointer;display:flex}.switch-row-disabled{cursor:default;opacity:.5}.switch-text{flex-direction:column;display:flex}.switch-label{color:var(--ink);font-weight:700}.switch-sublabel{color:var(--ink-muted);font-size:12px}button.switch-track{border-radius:var(--radius-pill);background:var(--surface-deep);cursor:pointer;border:none;flex-shrink:0;width:44px;height:26px;padding:0;position:relative}.switch-track:disabled{cursor:not-allowed}.switch-track:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button.switch-track.switch-on{background:var(--accent)}.switch-knob{background:var(--surface);width:20px;height:20px;box-shadow:0 1px 3px color-mix(in srgb, var(--ink) 30%, transparent);border-radius:50%;transition:transform .15s;position:absolute;top:3px;left:3px}.switch-on .switch-knob{transform:translate(18px)}.confirm{color:var(--good)}.prompts{align-self:center}.game-nav{z-index:20;background:var(--surface-panel);display:flex;position:fixed}.game-nav-brand{align-items:center;gap:var(--space-2);color:inherit;flex:none;text-decoration:none;display:flex}.game-nav-brand:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius-sm)}.game-nav-brand:hover .nav-name{color:var(--accent)}.game-nav-items{display:flex}.game-nav-item{color:var(--ink-muted);font:inherit;cursor:pointer;border-radius:var(--radius-md);background:0 0;border:none;align-items:center;display:flex}.game-nav-item:hover:not(:disabled){color:var(--ink);background:color-mix(in srgb, var(--ink) 6%, transparent)}.game-nav-item:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.game-nav-item-active,.game-nav-item-active:hover:not(:disabled){color:var(--accent);background:color-mix(in srgb, var(--accent) 14%, transparent)}.game-nav-item-disabled{cursor:not-allowed;opacity:.6}.game-nav-item-disabled:hover{color:var(--ink-muted);background:0 0}.game-nav-icon{flex-shrink:0;width:20px;height:20px}.game-nav-label{white-space:nowrap}.game-nav-badge{color:var(--ink-dim);font-style:italic;font-size:var(--text-xs)}.game-nav{border-top:1px solid var(--line);flex-direction:column;padding-bottom:0;bottom:0;left:0;right:0}.game-nav-brand{display:none}.game-nav-items{height:var(--nav-mobile-h);flex-direction:row;justify-content:space-around}.game-nav-item{font-size:var(--text-xs);flex-direction:column;flex:1;justify-content:center;gap:2px;padding:6px 4px}.game-nav-badge{display:none}@media (width>=720px){.game-nav{width:var(--nav-sidebar-w);align-items:stretch;gap:var(--space-6);padding:var(--space-5) var(--space-4);padding-left:max(var(--space-4), env(safe-area-inset-left));border-top:none;border-right:1px solid var(--line);flex-direction:column;top:0;bottom:0;left:0}.game-nav-brand{padding-inline:var(--space-2);display:flex}.game-nav-items{justify-content:flex-start;gap:var(--space-1);flex-direction:column;height:auto}.game-nav-item{justify-content:flex-start;gap:var(--space-3);width:100%;font-size:var(--text-sm);flex-direction:row;flex:none;padding:10px 12px}.game-nav-badge{margin-left:auto;display:inline}}.playhome-stage{justify-content:center;align-items:center;display:flex}@media (width>=720px){.playhome-stage{padding-top:24px}}.playhome-canvas{aspect-ratio:9/16;border-radius:var(--radius-md);background:var(--canvas-backdrop);border:1px solid var(--line);justify-content:center;align-items:center;width:100%;display:flex;position:relative;overflow:hidden}.playhome-overlay{text-align:center;padding:var(--space-6);flex-direction:column;align-items:center;gap:14px;display:flex}.playhome-overlay h1{font-family:var(--font-display);margin:0}@media (width<=719px){.playhome-overlay{gap:var(--space-3);padding:var(--space-5) var(--space-6)}.playhome-overlay h1{font-size:var(--text-2xl);margin:0 0 -4px}}.playhome-home-link{display:none}@media (width<=719px){.playhome-home-link{top:var(--space-3);left:var(--space-3);z-index:2;padding:var(--space-1);display:inline-flex;position:absolute}.playhome-home-link img{border-radius:var(--radius-sm);display:block}}.playhome-mascot{width:min(340px,85%);height:auto}.playhome-overlay{position:static}.playhome-overlay .update-banner{box-sizing:border-box;top:var(--space-3);left:var(--space-3);right:var(--space-3);z-index:2;width:auto;max-width:none;position:absolute}@media (width<=719px){.playhome-overlay .update-banner{left:calc(var(--space-3) * 2 + var(--space-1) * 2 + 60px);min-height:calc(60px + var(--space-1) * 2)}}.game-stage .playhome-loop{border-radius:var(--radius-md);border:1px solid var(--line);width:min(420px,100%);height:auto;display:block}.playhome-menu{width:100%;max-width:220px}.playhome-menu button{justify-content:center;align-items:center;gap:8px;display:inline-flex}@media (width<=719px){.playhome-mascot{width:min(220px,55%)}.game-stage .playhome-loop{width:min(240px,62%)}.playhome-menu{max-width:280px}.playhome-menu button{min-height:48px;font-size:var(--text-base)}}.mode-select-cards{flex-direction:column;gap:10px;width:100%;max-width:280px;display:flex}.screen button.mode-card{border-radius:var(--radius-md);text-align:center;cursor:pointer;width:100%;height:108px;font:inherit;color:var(--accent-ink);box-sizing:border-box;border:1px solid #0000;flex-direction:column;justify-content:center;align-items:center;gap:6px;padding:12px 14px;display:flex}.screen button.mode-card:hover:not(:disabled){filter:brightness(.94);color:var(--accent-ink);border-color:#0000}.screen button.mode-card:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.screen button.mode-card:disabled{opacity:.6;cursor:not-allowed}.mode-card-title{width:100%;font-family:var(--font-display);text-align:center;justify-content:center;align-items:center;gap:6px;font-size:1rem;font-weight:600;display:flex}.mode-card-lock{flex-shrink:0;width:14px;height:14px}.mode-card-desc{text-align:center;width:100%;color:color-mix(in srgb, var(--accent-ink) 82%, transparent);font-size:.75rem;font-style:italic;line-height:1.35}.screen button.mode-card-classic{background:var(--accent);border-color:var(--accent-bright)}.screen button.mode-card-drill{background:var(--beak);border-color:color-mix(in srgb, var(--beak) 70%, var(--ink))}.screen button.mode-card-learn{background:var(--good);border-color:var(--good-dim)}.screen button.mode-card-pairs{background:var(--ink);border-color:var(--accent-bright)}.tone-pair-selection .pair-combo-grid{row-gap:var(--space-4);column-gap:var(--space-2);box-sizing:border-box;width:100%;min-width:0;margin-bottom:var(--space-4);grid-template-columns:repeat(5,1fr);display:grid}.tone-pair-selection .pair-combo-tile{background-color:var(--accent);aspect-ratio:1;border-radius:var(--radius-md);border:2px solid var(--ink);min-width:0;color:var(--ink);cursor:pointer;box-sizing:border-box;box-shadow:3px 3px 0 var(--ink);justify-content:center;align-items:center;gap:2px;padding:4px;display:flex}.tone-pair-selection .pair-combo-tile:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.tone-pair-selection .pair-combo-tile:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.tone-pair-selection .pair-combo-tile:disabled{opacity:.4;cursor:not-allowed}.tone-pair-selection .pair-combo-tone-icon{color:currentColor;flex:0 auto;width:clamp(18px,7vw,30px);min-width:0}.tone-pair-selection .pair-combo-shuffle{width:100%;padding:var(--space-2) 14px;font-size:var(--text-base);border-radius:var(--radius-pill);border:2px solid var(--ink);background:var(--beak);color:var(--ink);cursor:pointer;justify-content:center;align-items:center;gap:8px;margin-top:4px;font-weight:600;display:flex}.tone-pair-selection .pair-combo-shuffle:hover:not(:disabled){filter:brightness(.94)}.tone-pair-selection .pair-combo-shuffle:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.tone-pair-selection .pair-combo-shuffle:disabled{opacity:.6;cursor:not-allowed}.tone-pair-selection .pair-combo-shuffle-icon{width:20px;height:20px}.badge{font-size:var(--text-xs);border-radius:var(--radius-pill);white-space:nowrap;align-items:center;gap:3px;padding:2px 8px;font-weight:600;display:inline-flex}.badge-free{color:var(--good-dim);background:color-mix(in srgb, var(--good) 16%, transparent)}.badge-soon{color:var(--warn-strong);background:color-mix(in srgb, var(--warn) 16%, transparent)}.badge-new{color:var(--accent-ink);background:var(--accent);letter-spacing:.02em;text-transform:uppercase;padding:1px 7px;font-size:.65rem;font-weight:700}.badge-outcome-finished{color:var(--good-dim);background:color-mix(in srgb, var(--good) 16%, transparent)}.badge-outcome-out_of_hearts{color:rgb(var(--danger-rgb));background:color-mix(in srgb, var(--danger) 14%, transparent)}.badge-outcome-quit{color:var(--ink-muted);background:var(--line-soft)}.stat-row{gap:var(--space-2);margin:var(--space-4) 0;grid-template-columns:repeat(4,1fr);display:grid}.stat-tile{padding:var(--space-3) var(--space-2);border-radius:var(--radius-md);background:var(--surface-panel);border:1px solid var(--line);flex-direction:column;align-items:center;gap:2px;display:flex}.stat-num{font-family:var(--font-display);font-size:var(--text-xl);font-variant-numeric:tabular-nums}.stat-label{font-size:var(--text-xs);color:var(--ink-muted)}.teaser-row{gap:var(--space-3);margin-bottom:var(--space-4);grid-template-columns:1fr 1fr;display:grid}.teaser-card{padding:var(--space-4) var(--space-3);border-radius:var(--radius-md);background:var(--surface-panel);border:1px solid var(--line);cursor:pointer;text-align:center;font:inherit;color:inherit;flex-direction:column;align-items:center;gap:4px;display:flex;position:relative}.teaser-card-soon{border:1px dashed var(--warn)}.teaser-card-live{cursor:default;justify-content:center}.teaser-sub{font-size:var(--text-xs);color:var(--ink-muted)}.teaser-card .teaser-cta{margin-top:4px}.teaser-icon{font-size:1.4rem}.teaser-big{font-family:var(--font-display);font-size:var(--text-lg)}.teaser-label{font-size:var(--text-xs);color:var(--ink-muted)}.teaser-badge-top{align-self:flex-start}.teaser-bar{border-radius:var(--radius-pill);background:var(--line-soft);width:100%;height:6px;display:block;overflow:hidden}.teaser-bar-fill{background:var(--warn);height:100%;display:block}.plan-usage{font-size:var(--text-sm);margin-bottom:4px}.plan-usage-bar .teaser-bar-fill{background:var(--accent)}.progress-card{margin-bottom:var(--space-4);padding:var(--space-4);border-radius:var(--radius-md);background:var(--surface-panel);border:1px solid var(--line)}.progress-card-soon{border:1px dashed var(--warn)}.progress-card-header{justify-content:space-between;align-items:center;gap:var(--space-2);margin-bottom:var(--space-2);display:flex}.progress-card-header h3{font-size:var(--text-base);margin:0}.progress-card-cta{text-align:center;width:100%;margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px dashed var(--line-strong);color:var(--accent);font-weight:600;display:block}.progress-card-cta-soon{text-align:center;width:100%;margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px dashed var(--line-strong);display:block}.progress-card .tone-average-grid{gap:var(--space-2);grid-template-columns:1fr;display:grid}.progress-card .tone-average-grid .tone-average-card canvas{width:100%;height:auto}@media (width>=720px){.progress-card .tone-average-grid{grid-template-columns:1fr 1fr}}.leaderboard-preview{flex-direction:column;gap:6px;display:flex}.leaderboard-row{align-items:center;gap:var(--space-3);font-size:var(--text-base);border-bottom:1px solid var(--line-soft);padding:11px 0;display:flex}.leaderboard-rank{flex-shrink:0;width:32px;font-weight:700}.leaderboard-name{flex:1;justify-content:center;align-items:center;gap:6px;min-width:0;display:flex}.leaderboard-pro-badge-group{flex-shrink:0;align-items:center;gap:4px;margin-left:-31px;display:inline-flex}.leaderboard-name:has(.leaderboard-pro-badge-group){margin-left:31px}.leaderboard-pro-badge{border-radius:var(--radius-pill);background:var(--beak);color:var(--accent-ink);font-weight:700;font-size:var(--text-xs);padding:1px 8px}.leaderboard-pro-badge-bird{object-fit:contain;border-radius:50%;width:36px;height:36px;padding:2px;position:relative;top:-8px;left:21px;transform:rotate(337deg)}.leaderboard-score{font-variant-numeric:tabular-nums;font-weight:600}@media (width<=719px){.leaderboard-preview{gap:var(--space-1)}.leaderboard-row{font-size:var(--text-lg);padding:14px 0}.leaderboard-rank{width:40px;font-size:var(--text-lg)}.leaderboard-score{font-size:var(--text-lg);font-weight:700}}.leaderboard-you{color:var(--accent)}.leaderboard-ghost{border:1px solid var(--accent);border-radius:var(--radius-md);padding:8px var(--space-3);background:color-mix(in srgb, var(--accent) 12%, var(--surface));color:var(--ink)}.leaderboard-ghost .leaderboard-name em{color:var(--accent-bright);font-style:italic;font-weight:600}.leaderboard-ghost-pinned{border-bottom:1px solid var(--accent)}.leaderboard-gap{text-align:center;color:var(--ink-muted);letter-spacing:.15em;padding:2px 0}.leaderboard-locked-row{color:var(--ink-muted);justify-content:space-between}.leaderboard-locked-row .pro-badge{white-space:nowrap;color:var(--surface);background:var(--warn);border:2px solid var(--ink);border-radius:var(--radius-pill);padding:3px 9px;font-size:.68rem;font-weight:800}.leaderboard-pinned{border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);background:var(--accent);color:var(--accent-ink);border-bottom:none;font-weight:600}.leaderboard-pinned.leaderboard-you{color:var(--accent-ink)}.leaderboard-sheet{border:2px solid var(--beak);box-shadow:var(--shadow-sticker-pro,0 20px 60px #0000004d)}.leaderboard-sheet-subtitle{margin:0 0 var(--space-3)}.leaderboard-sheet-body{min-height:40vh;max-height:68dvh;overflow-y:auto}.leaderboard-footer{justify-content:space-between;align-items:center;gap:var(--space-3);margin-top:var(--space-4);padding-top:var(--space-3);border-top:1px solid var(--line-soft);display:flex}.leaderboard-footer-note{flex:1;margin:0}.progress-screen .acc-tabs.leaderboard-period-tabs{margin-bottom:var(--space-3);flex:none}.leaderboard-view-full-link{width:100%;margin-top:var(--space-3);padding-top:var(--space-3);border:0;border-top:1px solid var(--line-soft);color:var(--accent);text-align:center;cursor:pointer;background:0 0;font-size:.9rem;font-weight:600;display:block}.leaderboard-share{--gold:#c98a3c;--gold-deep:#a86c20;border:1px solid var(--gold-deep);background:linear-gradient(180deg, #dca24b, var(--gold));color:#fffdf7;border-radius:var(--radius-pill);padding:var(--space-2) var(--space-4);cursor:pointer;white-space:nowrap;box-shadow:inset 0 1px 0 #fff6, 0 3px 16px color-mix(in srgb, var(--gold) 45%, transparent);flex-shrink:0;font-weight:700}.screen button.leaderboard-share{border:1px solid var(--gold-deep);background:linear-gradient(180deg, #dca24b, var(--gold));color:#fffdf7;box-shadow:inset 0 1px 0 #fff6, 0 3px 16px color-mix(in srgb, var(--gold) 45%, transparent)}.screen button.leaderboard-share:hover:not(:disabled){border-color:var(--gold-deep);color:#fffdf7}.run-history-list{gap:var(--space-2);flex-direction:column;display:flex}.run-history-row{align-items:center;gap:var(--space-2);font-size:var(--text-sm);border-bottom:1px solid var(--line-soft);grid-template-columns:3.5rem 3rem 1fr auto;padding:6px 0;display:grid}.run-history-date{color:var(--ink-muted)}.run-history-score{font-variant-numeric:tabular-nums;font-weight:600}.run-history-detail{color:var(--ink-muted)}.progress-screen .sticker-card{border:2px solid var(--ink);border-radius:var(--radius-lg);background:var(--surface-panel);box-shadow:var(--shadow-sticker)}.progress-screen .sticker-card-pro{box-shadow:var(--shadow-sticker-pro)}.progress-screen .pro-badge{white-space:nowrap;color:var(--surface);background:var(--warn);border:2px solid var(--ink);border-radius:var(--radius-pill);padding:4px 12px;font-size:.72rem;font-weight:800}.progress-screen .soon-badge{white-space:nowrap;color:var(--ink-dim);background:var(--surface);border:2px solid var(--line-strong);border-radius:var(--radius-pill);padding:4px 12px;font-size:.72rem;font-weight:800}.progress-overview{flex-direction:column;gap:24px;margin-bottom:40px;display:flex}.overview-cards{flex-wrap:wrap;gap:20px;display:flex}.streak-card,.level-card{flex-direction:column;flex:320px;gap:8px;padding:28px 26px;display:flex}.level-card{gap:10px}.progress-screen .level-card .level-bar-fill{background:linear-gradient(90deg,#f2c75c,#e0a526)}.progress-screen .level-card .level-big{color:var(--ink)}.streak-flame{font-size:1.8rem}.streak-big,.level-big{font-size:2.8rem;font-weight:900;line-height:1}.streak-label,.level-sub{color:var(--ink-muted);font-size:.85rem}.streak-warning{color:var(--warn-strong);margin-top:6px;font-size:.78rem}.level-head{justify-content:space-between;align-items:center;gap:10px;display:flex}.level-label{color:var(--ink-muted);text-transform:uppercase;letter-spacing:.06em;font-size:.8rem;font-weight:700}.level-bar{border-radius:var(--radius-pill);border:2px solid var(--ink);background:#241d151a;width:100%;height:10px;display:block;overflow:hidden}.level-bar-fill{background:var(--warn);height:100%;display:block}.progress-screen .stat-row{flex-wrap:wrap;grid-template-columns:none;gap:16px;margin:0;display:flex}.progress-screen .stat-tile{text-align:center;border:2px solid var(--ink);background:var(--surface-panel);border-radius:16px;flex:160px;gap:2px;padding:22px 12px}.progress-screen .stat-num{font-family:var(--font);font-size:2.2rem;font-weight:900}.progress-screen .stat-label{color:var(--ink-muted);text-transform:uppercase;letter-spacing:.06em;font-size:.8rem}@media (width>=720px){.overview-cards{grid-template-columns:1fr 1fr;gap:20px;display:grid}.streak-card,.level-card{flex:unset;min-width:0}.progress-screen .stat-row{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;display:grid}.progress-screen .stat-tile{flex:unset;min-width:0}}.progress-screen .progress-card{margin-bottom:40px;padding:32px clamp(24px,3vw,40px)}.progress-screen .progress-card-header{margin-bottom:20px}.progress-screen .progress-card-header h3{font-family:var(--font);font-size:1.4rem;font-weight:800}.progress-screen .progress-card .progress-card-cta{box-sizing:border-box;text-align:center;margin-top:22px;margin-inline:0;border-top:2px dashed var(--line-strong);width:100%;color:var(--ink);justify-content:center;align-items:center;margin-bottom:0;padding:20px 0 0;font-size:.95rem;font-weight:700;text-decoration:none;display:flex}.progress-screen .progress-card .progress-card-cta:hover:not(:disabled){color:var(--accent);text-decoration:none}.progress-screen .acc-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px;margin-bottom:26px;display:flex}.progress-screen .acc-tabs{border:2px solid var(--ink);border-radius:var(--radius-pill);background:#241d150f;flex:280px;gap:4px;min-width:0;padding:4px;display:flex}.progress-screen .acc-tab{border-radius:var(--radius-pill);min-width:0;color:var(--ink-muted);font:inherit;cursor:pointer;background:0 0;border:2px solid #0000;flex:1 1 0;padding:10px 14px;font-size:.88rem;font-weight:700;line-height:1.25;transition:background .12s,color .12s,border-color .12s,box-shadow .12s}.progress-screen .acc-tab:hover:not(:disabled):not(.acc-tab-active){color:var(--ink);background:color-mix(in srgb, var(--surface) 80%, transparent);border-color:#0000}.progress-screen .acc-tab-active{background:var(--ink);border-color:var(--ink);color:var(--surface);box-shadow:2px 2px #241d1524}.progress-screen .acc-tab:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.progress-screen .breakdown{gap:16px}.progress-screen .breakdown-row{grid-template-columns:90px 1fr 56px;align-items:center;gap:18px;font-size:.95rem;display:grid}.progress-screen .breakdown-row .syllable{font-weight:700}.progress-screen .breakdown-row .bar{border:2px solid var(--ink);border-radius:var(--radius-pill);background:#241d1514;height:12px}.progress-screen .breakdown-row .pct{width:auto;font-weight:700}.progress-screen .tone-pills{gap:10px;width:100%;margin-bottom:20px;display:flex}.progress-screen .tone-pill{border-radius:var(--radius-pill);border:2px solid var(--ink);width:auto;min-width:0;height:auto;color:var(--ink);font:inherit;cursor:pointer;background:0 0;flex:1 1 0;padding:10px 12px;font-size:.88rem;font-weight:700}.progress-screen .tone-pill-active{color:var(--surface)}.acc-chart{background:var(--surface);border:2px solid var(--ink);border-radius:12px;width:100%;height:300px;padding:12px;position:relative}.acc-chart canvas{width:100%!important;height:100%!important}.badge-solid{white-space:nowrap;color:var(--surface);border:2px solid var(--ink);border-radius:var(--radius-pill);padding:4px 12px;font-size:.72rem;font-weight:800}.badge-solid-jade{background:var(--accent)}.run-badge{white-space:nowrap;color:var(--surface);border-radius:var(--radius-pill);justify-self:end;padding:4px 10px;font-size:.72rem;font-weight:700}.run-badge-out_of_hearts{background:var(--danger)}.run-badge-finished{background:var(--good)}.run-badge-quit,.run-badge-restart{background:var(--ink-muted)}.progress-screen .run-history-row{border-bottom:1px solid var(--line-strong);grid-template-columns:90px 90px 1fr 120px;align-items:center;gap:16px;padding:12px 0;display:grid}.progress-screen .run-history-date{font-weight:700}.progress-screen .run-history-score{font-variant-numeric:tabular-nums}.progress-screen .run-history-detail{color:var(--ink-muted)}.progress-screen .leaderboard-row{border-bottom:1px solid var(--line-strong);grid-template-columns:32px 1fr 100px;align-items:center;gap:14px;display:grid}.progress-screen .leaderboard-locked-row{justify-content:space-between;align-items:center;display:flex}.progress-screen .leaderboard-name{font-weight:600}.progress-screen .leaderboard-score{text-align:right;font-variant-numeric:tabular-nums;font-weight:700}.progress-screen .leaderboard-you{color:var(--accent);font-weight:800}.pricing-section{flex-direction:column;gap:18px;margin-top:8px;scroll-margin-top:20px;display:flex}.pricing-head{text-align:center;max-width:640px;margin:0 auto}.pricing-head h2{font-family:var(--font);margin:0 0 10px;font-size:clamp(1.8rem,3vw,2.4rem);font-weight:800}.pricing-cards{flex-wrap:wrap;gap:24px;margin-top:8px;display:flex}.price-card{flex-direction:column;flex:340px;gap:18px;padding:32px;display:flex}.price-card-head h3{font-family:var(--font);align-items:center;gap:8px;margin:0 0 4px;font-size:1.5rem;font-weight:800;display:flex}.price-card-current{outline:2px solid var(--ink);outline-offset:-2px}.progress-screen .sticker-card.price-card-pro{background:var(--accent);color:var(--accent-ink);box-shadow:6px 6px 0 var(--ink)}.progress-screen .price-card-pro .price-tag-note,.progress-screen .price-card-pro .price-foot{color:color-mix(in srgb, var(--accent-ink) 72%, transparent)}.progress-screen .price-card-pro .price-card-head-pro h3{color:var(--ink)}.progress-screen .price-card-pro .price-cta{background:var(--surface);color:var(--ink);box-shadow:4px 4px 0 var(--ink)}.progress-screen .price-card-pro .price-cta:hover{box-shadow:6px 6px 0 var(--ink)}.progress-screen .price-card-pro .price-cta:active{box-shadow:1px 1px 0 var(--ink)}.price-card-head-pro{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px;display:flex}.price-card-head-pro h3{margin:0}.price-tag{font-size:1.4rem;font-weight:900}.price-tag-note{color:var(--ink-dim);font-size:.8rem;font-weight:500}.price-list{flex-direction:column;gap:12px;margin:0;padding:0;font-size:.95rem;list-style:none;display:flex}.price-list li{padding-left:26px;position:relative}.price-list li:before{content:"✓";color:var(--accent);font-weight:800;position:absolute;left:0}.price-list-pro li:before{color:var(--beak)}.price-list-soon{color:var(--ink-soft)}.price-list-soon:before{color:var(--ink-soft)!important}.price-cta{text-align:center;border-radius:var(--radius-pill);background:var(--surface);width:100%;color:var(--ink);font-family:var(--font);box-shadow:4px 4px 0 var(--accent);cursor:pointer;border:none;margin-top:8px;padding:16px;font-size:1rem;font-weight:800;transition:transform .12s,box-shadow .12s;display:block}.price-cta:hover{box-shadow:6px 6px 0 var(--accent);transform:translate(-1px,-1px)}.price-cta:active{box-shadow:1px 1px 0 var(--accent);transform:translate(2px,2px)}@media (prefers-reduced-motion:reduce){.price-cta{transition:none}.price-cta:hover,.price-cta:active{transform:none}}.progress-screen button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.acc-chart-loading{background:var(--surface)}.price-foot{color:var(--ink-dim);text-align:center;margin:0;font-size:.78rem}@media (width<=520px){.progress-screen .progress-card{padding:24px 18px}.progress-screen .stat-tile{flex-basis:40%}.progress-screen .run-history-row{grid-template-columns:1fr auto;grid-template-areas:"date badge""score detail";gap:2px 12px}.progress-screen .run-history-date{grid-area:date}.progress-screen .run-history-score{grid-area:score;font-size:1.05rem;font-weight:800}.progress-screen .run-history-detail{grid-area:detail;place-self:center end}.progress-screen .run-badge{grid-area:badge}}.profile-hero-card{padding:0;overflow:hidden}.profile-hero{padding:var(--space-4);background:linear-gradient(150deg, var(--accent), var(--accent-bright));color:var(--accent-ink);position:relative}.profile-hero-eyebrow{margin:0 0 var(--space-3);letter-spacing:.14em;opacity:.75;font-size:11px;font-weight:700}.profile-hero-row{align-items:center;gap:var(--space-3);min-width:0;display:flex}.profile-avatar{background:color-mix(in srgb, var(--accent-ink) 82%, var(--accent));border:2px solid color-mix(in srgb, var(--accent-ink) 50%, transparent);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:52px;height:52px;display:flex;overflow:hidden}.profile-avatar-pro{border-color:var(--beak)}.profile-avatar img{object-fit:contain;width:78%;height:78%}.profile-hero-id{min-width:0}.profile-hero-name{font-family:var(--font-display);white-space:nowrap;text-overflow:ellipsis;margin:0;font-weight:600;overflow:hidden}.profile-hero-pills{align-items:center;gap:var(--space-2);font-size:var(--text-xs);margin-top:4px;display:flex}.profile-hero-pill{border-radius:var(--radius-pill);background:color-mix(in srgb, var(--accent-ink) 20%, transparent);padding:2px 8px}.profile-hero-plan{opacity:.85}.profile-hero-badge{top:var(--space-3);right:var(--space-3);border-radius:var(--radius-pill);background:var(--beak);color:var(--accent-ink);font-weight:700;font-size:var(--text-xs);padding:2px 10px;position:absolute}.profile-screen .profile-earlybird-sticker{justify-content:space-between;align-items:center;gap:var(--space-3);width:100%;padding:var(--space-4);margin-bottom:var(--space-4);border-radius:var(--radius-md);border:1px solid var(--beak);background:color-mix(in srgb, var(--beak) 8%, var(--surface-panel));box-shadow:var(--shadow-sticker-pro);text-align:left;font:inherit;color:inherit;cursor:pointer;display:flex}.profile-earlybird-copy{flex-direction:column;gap:2px;display:flex}.profile-earlybird-title{font-family:var(--font-display);font-weight:600}.profile-earlybird-arrow{font-size:var(--text-xl);color:var(--beak);flex-shrink:0}.profile-celebration{text-align:center;background:color-mix(in srgb, var(--accent) 8%, var(--surface-panel))}.profile-celebration-title{font-family:var(--font-display);margin:0 0 var(--space-2);font-weight:600}.account-board-name{font-family:var(--font-display);font-weight:600}.account-rename-locked{color:var(--ink-muted);background:var(--line-soft)}.account-rename-form{gap:var(--space-2);display:flex}.account-hairline{height:1px;margin:var(--space-3) 0;background:var(--line)}.account-signout{margin-left:auto;display:block}.account-form{gap:var(--space-3);flex-direction:column;display:flex}.account-field{font-size:var(--text-sm);color:var(--ink-muted);flex-direction:column;gap:4px;display:flex}.account-field input{border-radius:var(--radius-md);border:1px solid var(--line-strong);color:var(--ink);font-size:var(--text-base);background:0 0;padding:10px 14px}.account-field input:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.account-consent{font-size:var(--text-sm);color:var(--ink-muted);align-items:center;gap:8px;display:flex}.account-links{gap:var(--space-2);margin-top:var(--space-2);flex-wrap:wrap;display:flex}.account-legal{font-size:var(--text-xs);color:var(--ink-soft);font-style:normal;line-height:1.4}.account-legal a{color:var(--accent);text-decoration:underline}.account-message{border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);font-size:var(--text-sm);text-align:left;margin-top:var(--space-2);font-style:normal}.account-message-error{background:color-mix(in srgb, var(--danger) 12%, transparent);border:1px solid color-mix(in srgb, var(--danger) 40%, transparent);color:var(--danger-strong)}.account-message-info{background:color-mix(in srgb, var(--accent) 12%, transparent);border:1px solid color-mix(in srgb, var(--accent) 35%, transparent);color:var(--accent-bright)}.modal-backdrop{padding:var(--space-4);z-index:100;background:#00000073;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-card{width:100%;max-width:380px;max-height:90vh;padding:var(--space-6) var(--space-5) var(--space-5);border-radius:var(--radius-md);background:var(--surface);position:relative;overflow-y:auto;box-shadow:0 20px 60px #0000004d}.modal-card button{cursor:pointer;font:inherit}.modal-close{top:var(--space-3);right:var(--space-3);width:28px;height:28px;color:var(--ink-muted);background:0 0;border:none;border-radius:50%;font-size:1.2rem;line-height:1;position:absolute}.modal-close:hover{color:var(--ink)}.screen button.modal-close,.screen button.modal-close:hover:not(:disabled){border:none}.screen button.close-x,.modal-card button.close-x,.landing button.close-x{cursor:pointer;width:28px;height:28px;min-height:0;color:var(--ink-soft);background:0 0;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;padding:0;font-family:inherit;font-size:1.2rem;line-height:1;display:inline-flex}.screen button.close-x:hover:not(:disabled),.screen button.close-x:focus-visible,.modal-card button.close-x:hover:not(:disabled),.landing button.close-x:hover:not(:disabled),.landing button.close-x:focus-visible{background:var(--accent);color:var(--accent-ink);border:none}.modal-backdrop:has(.modal-card--sheet){align-items:flex-end;height:100dvh;padding:0;bottom:auto}.modal-card--sheet{border-radius:var(--radius-lg) var(--radius-lg) 0 0;width:100%;max-width:480px;padding-top:var(--space-3);max-height:92dvh;padding-bottom:max(var(--space-5), env(safe-area-inset-bottom))}@media (width>=720px){.modal-backdrop:has(.modal-card--sheet){padding:var(--space-4);align-items:center}.modal-card--sheet{border-radius:var(--radius-md);padding-top:var(--space-6);max-height:90dvh;padding-bottom:var(--space-5)}.join-modal-handle{display:none}}.join-modal-handle{border-radius:var(--radius-pill);background:var(--line-soft);width:40px;height:4px;margin:0 auto var(--space-4)}.join-modal{text-align:center}.join-modal-trophy{margin:0 0 var(--space-2);font-size:2.5rem;line-height:1}.join-modal-title{font-family:var(--font-display);margin:0 0 var(--space-2)}.join-modal-projection{font-size:var(--text-sm);color:var(--ink-soft);margin:0 0 var(--space-4)}.join-modal-posting-row{justify-content:space-between;align-items:center;gap:var(--space-3);border:2px solid var(--ink);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);margin:0 0 var(--space-4);text-align:left;background:#fff;display:flex}.join-modal-posting-info{min-width:0}.join-modal-posting-label{font-size:var(--text-xs);letter-spacing:.04em;text-transform:uppercase;color:var(--ink-muted);margin:0;font-weight:700}.join-modal-posting-name{text-overflow:ellipsis;white-space:nowrap;margin:2px 0 0;font-weight:700;overflow:hidden}.join-modal-name-pill{border:1px solid var(--line);border-radius:var(--radius-pill);font-size:var(--text-xs);color:var(--ink-muted);white-space:nowrap;cursor:default;flex-shrink:0;padding:6px 14px}.share-name-input{box-sizing:border-box;width:100%;margin:0 0 var(--space-4);border:2px solid var(--ink);border-radius:var(--radius-md);color:var(--ink);font:inherit;text-align:center;background:#fff;padding:12px 16px;font-size:16px}.join-modal-post-btn{--gold:#c98a3c;--gold-deep:#a86c20;border:1px solid var(--gold-deep);border-radius:var(--radius-pill);background:linear-gradient(180deg, #dca24b, var(--gold));width:100%;box-shadow:inset 0 1px 0 #fff6, 0 3px 16px color-mix(in srgb, var(--gold) 45%, transparent);color:#fffdf7;font-weight:700;font-size:var(--text-base);margin:0 0 var(--space-3);padding:14px 20px}.screen button.join-modal-post-btn{border:1px solid var(--gold-deep);background:linear-gradient(180deg, #dca24b, var(--gold));color:#fffdf7;box-shadow:inset 0 1px 0 #fff6, 0 3px 16px color-mix(in srgb, var(--gold) 45%, transparent)}.screen button.join-modal-post-btn:hover:not(:disabled){border-color:var(--gold-deep);color:#fffdf7}.join-modal-post-btn:disabled{opacity:.7;cursor:not-allowed}.join-modal-dismiss-btn{border:1px solid var(--line);border-radius:var(--radius-pill);width:100%;color:var(--ink-soft);background:0 0;padding:12px 20px}.join-modal-dismiss-btn:hover:not(:disabled){border-color:var(--ink-soft);color:var(--ink)}.modal-eyebrow{color:var(--warn-strong);font-weight:700;font-size:var(--text-sm);margin:0 0 4px}.modal-price{font-family:var(--font-display);font-size:var(--text-2xl);margin:var(--space-2) 0}.modal-price-note{font-size:var(--text-sm);color:var(--ink-muted);font-family:var(--font)}.modal-body{font-size:var(--text-sm);color:var(--ink-soft);margin-bottom:var(--space-4)}.modal-features{margin:0 0 var(--space-4);font-size:var(--text-sm);text-align:left;flex-direction:column;gap:8px;padding:0;list-style:none;display:flex}.modal-features li{gap:8px;display:flex}.modal-features li:before{content:"✓";color:var(--accent);flex-shrink:0;font-weight:800}.modal-pay{border-radius:var(--radius-pill);background:var(--accent);width:100%;color:var(--accent-ink);font-size:var(--text-base);text-align:center;cursor:pointer;border:none;padding:12px 20px;text-decoration:none;display:block}.modal-pay:hover{background:color-mix(in srgb, var(--accent) 88%, white)}.modal-notify-form button{border-radius:var(--radius-pill);background:var(--accent);color:var(--accent-ink);white-space:nowrap;border:none;padding:10px 18px}.modal-notify-form button:hover:not(:disabled){background:color-mix(in srgb, var(--accent) 88%, white)}.modal-create-account{border-radius:var(--radius-pill);width:100%;font-size:var(--text-base);margin-bottom:var(--space-2);border:none;padding:12px 20px}.modal-divider{align-items:center;gap:var(--space-3);color:var(--ink-dim);font-size:var(--text-xs);margin:var(--space-3) 0;display:flex}.modal-divider:before,.modal-divider:after{content:"";background:var(--line);flex:1;height:1px}.modal-notify-form{gap:var(--space-2);display:flex}.modal-notify-form input{flex:1;min-width:0}.modal-notify-note{text-align:center;font-size:var(--text-xs);color:var(--ink-dim);margin-top:var(--space-3)}.loading-screen{justify-content:center;align-items:center;gap:var(--space-5);text-align:center;flex-direction:column;min-height:60vh;display:flex}.loading-pip{display:block}.loading-label{max-width:24ch}.tutorial-done-overlay{justify-content:center}.tutorial-done-pip{display:block}.tutorial-done-overlay .note{max-width:26ch}.frame:has(.legal-screen){max-width:720px}.legal-screen{text-align:left;align-items:stretch}.legal-back-link{color:var(--ink-muted);background:0 0;border:none;align-self:flex-start;align-items:center;gap:4px;padding:6px;font-size:.85rem;text-decoration:none;display:inline-flex}.legal-back-link:hover{color:var(--ink);text-decoration:underline}.legal-back-link svg{width:16px;height:16px}.legal-body{gap:var(--space-4);flex-direction:column;max-width:68ch;display:flex}.legal-body h1{font-family:var(--font-display);letter-spacing:.02em;font-size:2rem}.legal-body h2{font-family:var(--font-display);margin-top:var(--space-2);font-size:1.3rem}.legal-body h3{font-family:var(--font-display);color:var(--ink-muted);font-size:1rem}.legal-body p{color:var(--ink-muted);line-height:1.6}.legal-body strong{color:var(--ink)}.legal-body a{color:var(--accent)}.legal-body hr{border:none;border-top:1px solid var(--line);margin:var(--space-2) 0}.confetti-canvas{pointer-events:none;z-index:150;position:fixed;inset:0}.hsm-card{text-align:center}.hsm-trophy{margin:0 0 var(--space-2);font-size:3rem;line-height:1}.hsm-eyebrow{color:var(--warn-strong);font-weight:700;font-size:var(--text-sm);text-transform:uppercase;letter-spacing:.04em;margin:0 0 var(--space-1)}.hsm-score{font-family:var(--font-display);font-size:var(--text-2xl);margin:0 0 var(--space-2)}@media (width<=719px){.hsm-score{font-size:var(--text-3xl)}}.hsm-rank{font-size:var(--text-sm);color:var(--ink-soft);margin:0 0 var(--space-4)}.hsm-join-btn{width:100%;margin:0 0 var(--space-3)}.hsm-actions{align-items:stretch;gap:var(--space-3);display:flex}.hsm-action-btn{flex:1}.hsm-share-btn{border:1px solid var(--gold-deep,#a86c20);border-radius:var(--radius-pill);background:linear-gradient(180deg, #dca24b, var(--beak));color:#fffdf7;font-weight:700;font-size:var(--text-base);justify-content:center;align-items:center;gap:8px;padding:12px 20px;display:inline-flex}.hsm-share-btn svg{width:18px;height:18px}.hsm-share-btn:disabled{opacity:.7;cursor:not-allowed}.warming{cursor:default;background:rgba(var(--surface-rgb), .92)}.warming p{color:var(--ink-muted);margin:0}.warming-dots{gap:var(--space-2);display:flex}.warming-dots span{background:var(--accent);opacity:.35;border-radius:50%;width:8px;height:8px;animation:1.05s ease-in-out infinite warming-pulse}.warming-dots span:nth-child(2){animation-delay:.15s}.warming-dots span:nth-child(3){animation-delay:.3s}@keyframes warming-pulse{50%{opacity:1}}.warming--still .warming-dots span{opacity:.6;animation:none}@media (prefers-reduced-motion:reduce){.warming-dots span{opacity:.6;animation:none}}.feedback-tab{z-index:90;writing-mode:vertical-rl;border:1px dashed var(--line-strong);border-radius:0 var(--radius-sm) var(--radius-sm) 0;background:var(--surface);color:var(--ink-muted);font:inherit;font-size:var(--text-xs);letter-spacing:.04em;cursor:pointer;border-right:none;padding:12px 7px;font-weight:600;position:fixed;top:58%;right:0;transform:rotate(180deg);box-shadow:-2px 2px 8px #241d1514}.feedback-tab:hover{color:var(--ink);border-color:var(--ink-soft)}.feedback-header{align-items:center;gap:var(--space-3);margin:0 var(--space-6) var(--space-5) 0;display:flex}.feedback-avatar{background:var(--surface-deep);object-fit:contain;border-radius:50%;flex:none;width:52px;height:52px;padding:6px}.feedback-title{font-family:var(--font-display);font-size:var(--text-lg);color:var(--ink);margin:0}.feedback-byline{font-size:var(--text-sm);color:var(--ink-muted);margin:2px 0 0}.feedback-label{margin:0 0 var(--space-2);font-size:var(--text-sm);color:var(--ink);font-weight:600;display:block}.feedback-textarea{box-sizing:border-box;width:100%;margin:0 0 var(--space-4);border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--surface-panel);color:var(--ink);font:inherit;resize:vertical;padding:10px 12px;font-size:16px;display:block}.feedback-textarea:focus{outline:2px solid var(--accent);outline-offset:1px}.feedback-ratings{margin:0 0 var(--space-5);justify-content:space-between;align-items:flex-end;display:flex}.modal-card .feedback-rating{border-radius:var(--radius-md);filter:grayscale(.7);opacity:.6;background:0 0;border:2px solid #0000;justify-content:center;align-items:flex-end;width:56px;height:56px;padding:0 0 5px;line-height:0;transition:transform .12s,filter .12s,opacity .12s;display:flex}.feedback-rating img{object-fit:contain}.modal-card .feedback-rating:hover,.modal-card .feedback-rating.is-selected{filter:none;opacity:1}.modal-card .feedback-rating.is-selected{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 8%, transparent);transform:scale(1.08)}.modal-card .feedback-send{border-radius:var(--radius-pill);background:var(--accent);width:100%;color:var(--accent-ink);font-weight:700;font-size:var(--text-base);text-transform:uppercase;letter-spacing:.04em;border:none;padding:14px 20px}.modal-card .feedback-send:disabled{opacity:.5;cursor:not-allowed}.feedback-error{margin:0 0 var(--space-3);font-size:var(--text-sm);color:var(--danger-strong)}.feedback-thanks{margin:0 0 var(--space-4);font-size:var(--text-base);color:var(--ink);text-align:center}@media (prefers-reduced-motion:reduce){.modal-card .feedback-rating{transition:none}}.player-shape-controls{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:8px;display:flex}.player-shape-legend{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.player-shape-key{border-top:2.5px solid var(--ink-muted);vertical-align:middle;width:18px;height:0;display:inline-block}.player-shape-key-now{border-top-color:var(--ink)}.player-shape-key-then{border-top:2px dashed var(--ink);opacity:.6}.update-banner{--tilt:-1.6deg;align-items:center;gap:var(--space-2) var(--space-3);width:100%;max-width:320px;padding:var(--space-3) var(--space-4);text-align:left;background:var(--surface);border:1.5px solid var(--ink);border-radius:var(--radius-md);box-shadow:4px 4px 0 rgba(var(--ink-rgb), .18);transform:rotate(var(--tilt));flex-wrap:wrap;transition:transform .16s,box-shadow .16s;animation:.52s cubic-bezier(.2,.9,.3,1.25) .25s both update-banner-slap;display:flex}.update-banner:hover{box-shadow:6px 6px 0 var(--accent);transform:rotate(0)translate(-1px,-1px)}.update-banner:active{box-shadow:1px 1px 0 var(--accent);transform:rotate(0)translate(3px,3px)}.update-banner .badge-new{animation:.7s ease-in-out .8s both update-banner-wiggle;display:inline-block}.update-banner-text{font-size:var(--text-sm);color:var(--ink-muted);flex-direction:column;flex:160px;gap:2px;display:flex}.update-banner-text strong{font-family:var(--font-display);font-size:var(--text-base);color:var(--ink)}.screen button.update-banner-link,.landing button.update-banner-link{border-radius:var(--radius-pill);text-align:left;min-height:0;font-family:inherit;font-size:var(--text-sm);color:var(--accent);cursor:pointer;background:0 0;border:none;flex-basis:auto;margin-left:-10px;padding:4px 10px;font-weight:600;text-decoration:none;transition:background .16s,color .16s;display:inline-flex}.screen button.update-banner-link:hover:not(:disabled),.screen button.update-banner-link:focus-visible,.landing button.update-banner-link:hover:not(:disabled),.landing button.update-banner-link:focus-visible{background:var(--accent);color:var(--accent-ink)}.update-banner .close-x{align-self:flex-start;margin:-4px -8px 0 0}@media (width<=719px){.playhome-overlay:has(.update-banner){padding-top:84px}}@keyframes update-banner-slap{0%{opacity:0;box-shadow:12px 14px 0 rgba(var(--ink-rgb), .08);transform:translateY(-14px)rotate(4deg)scale(1.08)}to{opacity:1;transform:rotate(var(--tilt));box-shadow:4px 4px 0 rgba(var(--ink-rgb), .18)}}@keyframes update-banner-wiggle{0%,to{transform:rotate(0)}20%{transform:rotate(-9deg)scale(1.1)}45%{transform:rotate(7deg)scale(1.1)}70%{transform:rotate(-4deg)}}@media (prefers-reduced-motion:reduce){.update-banner,.update-banner .badge-new{animation:none}.update-banner,.update-banner-link,.update-banner .close-x{transition:none}}.update-banner--bar{--tilt:0deg;max-width:none;padding:var(--space-2) var(--space-4);gap:var(--space-3);box-shadow:3px 3px 0 rgba(var(--ink-rgb), .18);flex-wrap:nowrap}.landing>.update-banner--bar{margin-block:calc(var(--space-4) - 4.5rem) calc(var(--space-2) - 4.5rem)}@media (width>=901px){.landing>.update-banner--bar{margin-block:calc(var(--space-4) - 7rem) calc(var(--space-2) - 7rem)}}.update-banner--bar .update-banner-text{align-items:baseline;gap:0 var(--space-2);flex-flow:wrap}.update-banner--bar .update-banner-text strong{font-size:var(--text-sm)}.screen button.update-banner--bar .update-banner-link,.update-banner--bar button.update-banner-link{white-space:nowrap;flex-shrink:0;margin-left:0}@media (width<=719px){.update-banner--bar{flex-wrap:wrap}}.options-group{gap:var(--space-3);flex-direction:column;display:flex}.options-group h3{font-size:var(--text-lg);margin:0}.options-grid{gap:var(--space-4);grid-template-columns:1fr;display:grid}@media (width>=640px){.options-grid{grid-template-columns:1fr 1fr}}@media (width>=901px){.options-grid-modes{grid-template-columns:repeat(4,1fr)}.options-grid-settings{grid-template-columns:repeat(3,1fr)}}.options-grid .hero-card{padding:var(--space-5)}.options-choices{font-size:var(--text-sm);color:var(--accent);margin:0;font-weight:600}.vis-settings{border-bottom:1px solid var(--line);flex-direction:column;gap:16px;padding:16px 16px 18px;display:flex}.vis-setting-head{justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:8px;display:flex}.vis-setting-label{color:var(--ink);font-size:13px;font-weight:600}.vis-setting-value{color:var(--ink-muted);text-align:right;font-size:12px}.vis-setting-chips{flex-wrap:wrap;gap:8px;display:flex}.vis-setting-chips .vis-setting-chip{border:1px solid var(--line-strong);border-radius:var(--radius-pill);min-height:36px;color:var(--ink-dim);cursor:pointer;background:0 0;padding:6px 14px;font-size:13px;font-weight:600}.vis-setting-chips .vis-setting-chip.active{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.vis-setting-chips .vis-setting-chip.is-locked{opacity:.55}.vis-setting-chips .vis-setting-chip:focus-visible,.vis-pair-grid .vis-pair-tile:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.vis-setting-desc{color:var(--ink-muted);margin:-2px 0 10px;font-size:12px;line-height:1.45}.vis-practice-head{padding:16px 16px 4px}.vis-practice-head .vis-setting-desc{margin:6px 0 0}@media (width>=720px){.vis-setting-desc{font-size:14px}.vis-practice-head{padding:20px 20px 6px}}.tone-popover-tab .vis-tab-pick{vertical-align:middle;color:var(--accent);margin-left:6px}.vis-free-desc{color:var(--ink-muted);margin:0;padding:16px;font-size:13px;line-height:1.5}@media (width>=720px){.vis-free-desc{padding:20px;font-size:15px}}.vis-pair-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;padding:16px;display:grid}.vis-pair-grid .vis-pair-tile{justify-content:center;align-items:center;gap:2px;min-width:0;height:40px;padding:0 4px;display:flex;position:relative}.vis-pair-grid .vis-pair-tile .tone-mark-icon{flex:0 auto;min-width:0}.vis-pair-grid .vis-pair-tile.is-locked{opacity:.55}@media (width>=720px){.vis-settings{gap:20px;padding:20px 20px 22px}.vis-setting-label{font-size:15px}.vis-setting-value{font-size:14px}.vis-setting-chips{gap:10px}.vis-setting-chips .vis-setting-chip{min-height:42px;padding:8px 18px;font-size:15px}.tone-popover-tabs .tone-popover-tab{padding:14px 12px;font-size:15px}.vis-pair-grid{gap:10px;padding:20px}.vis-pair-grid .vis-pair-tile{height:50px}.vis-pair-grid .vis-pair-tile .tone-mark-icon{width:22px;height:16.5px}.visualiser-panel .tone-rail-pills{padding:20px}}.count-badge{box-sizing:border-box;background:var(--good);color:#fff;pointer-events:none;border-radius:999px;justify-content:center;align-items:center;min-width:18px;height:18px;padding:0 5px;font-size:11px;font-style:normal;font-weight:700;line-height:1;display:flex;position:absolute;top:-7px;right:-5px}:is(.choice-option:has(>.count-badge),.mode-card:has(>.count-badge),.tone-popover-row:has(>.count-badge),.tone-pill:has(>.count-badge),.pair-combo-tile:has(>.count-badge),.vis-pair-tile:has(>.count-badge)){position:relative}.tone-popover-row .count-badge{top:50%;right:12px;transform:translateY(-50%)}.inapp-prompt-backdrop{z-index:89;background:rgba(var(--ink-rgb), .25);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);position:fixed;inset:0}.inapp-prompt{z-index:90;width:calc(100% - 2 * var(--space-3));max-width:380px;padding:var(--space-3) var(--space-4);padding-right:calc(var(--space-4) + 20px);text-align:left;background:var(--surface);border:1.5px solid var(--ink);border-radius:var(--radius-md);box-shadow:4px 4px 0 rgba(var(--ink-rgb), .18);color:var(--ink);font-size:var(--text-sm);line-height:1.35;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}.inapp-prompt__title{margin-bottom:2px;display:block}.inapp-prompt__body,.inapp-prompt__hint{margin:0 0 var(--space-2);color:var(--ink-soft)}.inapp-prompt__hint{color:var(--ink);font-weight:600}.inapp-prompt__close{color:var(--ink-soft);cursor:pointer;background:0 0;border:none;padding:4px;font-size:.95rem;position:absolute;top:6px;right:8px}.inapp-prompt__actions{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.inapp-prompt__btn{border:1.5px solid var(--ink);border-radius:var(--radius-md);color:var(--ink);font:inherit;cursor:pointer;background:0 0;padding:6px 12px;font-weight:600;text-decoration:none;display:inline-block}.inapp-prompt__btn--primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.inapp-prompt__link{color:var(--ink-soft);font:inherit;cursor:pointer;background:0 0;border:none;padding:0;text-decoration:underline}#setting-theme{--theme-gold:#e0a526;--theme-gold-ink:#6b4a00}.theme-xp-pill{border:1.5px solid var(--ink);background:var(--theme-gold);color:var(--theme-gold-ink);font-weight:700;font-size:var(--text-sm);box-shadow:2px 2px 0 var(--ink);white-space:nowrap;border-radius:999px;margin-left:auto;padding:3px 10px}.theme-collection-count{margin:var(--space-2) 0 var(--space-3);color:var(--ink-muted);font-size:var(--text-sm)}.theme-grid{gap:var(--space-3);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.settings-screen button.theme-card{min-height:0;padding:var(--space-2);text-align:left;border:1.5px solid var(--ink);border-radius:var(--radius-md);background:var(--surface);box-shadow:3px 3px 0 var(--ink);flex-direction:column;align-items:stretch;gap:4px;transition:transform .12s,box-shadow .12s;display:flex}.settings-screen button.theme-card:hover:not(:disabled){border-color:var(--ink);box-shadow:4px 5px 0 var(--ink);transform:translate(-1px,-2px)}.settings-screen button.theme-card:active{box-shadow:1px 1px 0 var(--ink);transform:translate(2px,2px)}.theme-card.is-equipped{outline:3px solid var(--accent);outline-offset:2px}.theme-card-art{border-radius:calc(var(--radius-md) - 4px);display:block;position:relative;overflow:hidden}.theme-card-canvas{width:100%;height:auto;display:block}.theme-card.is-locked .theme-card-lock{background:radial-gradient(circle,#00000059 0%,#0000 60%)}.theme-card-lock{color:#fff;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.theme-card-lock svg{filter:drop-shadow(0 2px 2px #00000080);width:30px;height:30px}.theme-card-badge{background:var(--accent);color:#fff;letter-spacing:.03em;text-transform:uppercase;border-radius:999px;padding:2px 8px;font-size:11px;font-weight:700;position:absolute;top:6px;left:6px}.theme-card-name{font-family:var(--font-display);color:var(--ink);font-weight:700}.theme-card-status{font-size:var(--text-sm);color:var(--ink-muted)}.theme-card.is-locked .theme-card-status{color:var(--theme-gold-ink);font-weight:600}.theme-xpbar{border:1px solid var(--ink);background:var(--line);border-radius:999px;height:8px;overflow:hidden}.theme-xpbar-fill{background:linear-gradient(90deg,#f2c75c,#e0a526);height:100%}.theme-modal{--theme-gold:#e0a526;--theme-gold-ink:#6b4a00;text-align:center}.theme-modal-title{font-family:var(--font-display);margin:0 0 var(--space-3)}.theme-modal-stage{border:1.5px solid var(--ink);border-radius:var(--radius-md);box-shadow:3px 3px 0 var(--ink);overflow:hidden}.theme-modal-canvas{width:100%;height:auto;display:block}.theme-modal-blurb{margin:var(--space-3) 0;color:var(--ink-muted)}.theme-modal-cta{width:100%}.theme-modal-locked{color:var(--theme-gold-ink)}.theme-modal-locked p{margin:0 0 var(--space-2)}.theme-modal-locked svg{vertical-align:-2px;width:16px;height:16px}.theme-card-pro{position:absolute;top:6px;right:6px}.theme-pro-badge{border:1.5px solid var(--ink);color:#4a3300;letter-spacing:.04em;text-transform:uppercase;vertical-align:middle;background:linear-gradient(135deg,#f6d77a,#e0a526);border-radius:999px;padding:2px 8px;font-family:system-ui,sans-serif;font-size:11px;font-weight:800;display:inline-block}.theme-card.is-pro{background:linear-gradient(180deg, var(--surface), #e0a5261f)}.level-xp{font-size:var(--text-sm);color:#6b4a00;font-weight:700}.go-xp{align-items:center;gap:4px var(--space-3);margin:var(--space-3) 0;padding:var(--space-3) var(--space-4);border:1.5px solid var(--ink);border-radius:var(--radius-md);background:var(--surface);box-shadow:3px 3px 0 var(--ink);grid-template-columns:auto 1fr;display:grid}.go-xp-gain{border:1.5px solid var(--ink);color:#4a3300;white-space:nowrap;background:linear-gradient(135deg,#f6d77a,#e0a526);border-radius:999px;grid-row:span 2;padding:4px 12px;font-weight:800}.go-xp-level{font-family:var(--font-display);font-weight:700}.go-xp-bar{border:1px solid var(--ink);background:var(--line);border-radius:999px;height:8px;display:block;overflow:hidden}.go-xp-bar-fill{background:linear-gradient(90deg,#f2c75c,#e0a526);height:100%;display:block}.go-xp-sub{font-size:var(--text-sm);color:var(--ink-muted);grid-column:1/-1}.go-xp.is-level-up{animation:.52s cubic-bezier(.2,1.4,.4,1) both go-xp-pop}.go-xp.is-level-up .go-xp-level{color:var(--accent)}@keyframes go-xp-pop{0%{transform:scale(.92)}to{transform:scale(1)}}@media (prefers-reduced-motion:reduce){.go-xp.is-level-up{animation:none}}.go-xp-chip{align-items:center;gap:6px;margin:6px 0 0;display:inline-flex}.go-xp-chip>span:first-child{border:1.5px solid var(--ink);color:#4a3300;box-shadow:2px 2px 0 var(--ink);background:linear-gradient(135deg,#f6d77a,#e0a526);border-radius:999px;padding:3px 10px;font-weight:800}.go-xp-chip-up{color:var(--accent);font-weight:800}.hud-top .score,.hud-top .hearts,.hud-top .combo,.hud-status{border-radius:var(--radius-pill);background:rgba(var(--surface-rgb), .86);padding:3px 10px;box-shadow:0 1px 3px #241d152e}.hud-top .hearts{padding:5px 8px}.hud-status{color:var(--ink)}.hud .hud-button{background:rgba(var(--surface-rgb), .86);opacity:1;border-radius:50%;margin:0;box-shadow:0 1px 3px #241d152e}.points-pop{border-radius:var(--radius-pill);background:rgba(var(--surface-rgb), .9);padding:1px 8px;font-weight:800}.toast{background:rgba(var(--surface-rgb), .92);color:var(--ink);border:1.5px solid #241d1540;padding:9px 20px;font-size:1.05rem;font-weight:700;box-shadow:0 3px 10px #241d1533}.praise-toast{color:#fff;background:linear-gradient(135deg, var(--good), var(--accent));border:2px solid var(--ink);box-shadow:3px 3px 0 var(--ink);font-size:1.25rem;font-weight:800;animation:1.3s cubic-bezier(.2,1.5,.4,1) forwards badge-pop}.praise-toast:before{content:"✨ "}.mismatch-toast{background:linear-gradient(rgba(var(--danger-rgb), .16), rgba(var(--danger-rgb), .16)), rgba(var(--surface-rgb), .96);color:var(--ink);border:2px solid var(--danger);box-shadow:3px 3px 0 var(--danger);font-size:1.1rem;font-weight:800;animation:1.3s ease-out forwards badge-nudge}@keyframes badge-pop{0%{opacity:0;transform:scale(.6)translateY(8px)}18%{opacity:1;transform:scale(1.12)translateY(0)}30%,75%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.96)translateY(-6px)}}@keyframes badge-nudge{0%{opacity:0;transform:translateY(8px)}15%{opacity:1;transform:translateY(0)}20%{transform:translate(-3px)}25%{transform:translate(3px)}30%,75%{opacity:1;transform:translate(0)}to{opacity:0}}.phase-banner{background:rgba(var(--surface-rgb), .92);font-size:1.05rem;font-weight:700;box-shadow:0 2px 6px #241d152e}@media (prefers-reduced-motion:reduce){.praise-toast,.mismatch-toast{animation:none}}
