:root{--surface:#f7f1e3;--surface-rgb:247, 241, 227;--surface-panel:#efe6d1;--surface-deep:#e2d5b8;--canvas-backdrop:#eee4cc;--canvas-backdrop-rgb:238, 228, 204;--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;--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(.howto-screen,.gameover-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))}}.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:.8rem;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}.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)}.hud-syllable{flex-direction:column;align-items:center;gap:2px;margin-top:8px;display:flex}.hud-syllable .syllable{font-size:2rem}.hud-syllable .english{color:var(--ink-muted);letter-spacing:.01em;font-size:.95rem}.hud-syllable .tone-num,.hud-syllable .cue{color:var(--ink-muted);font-size:.85rem}.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}@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}.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)}}.gate-log{border-radius:var(--radius-sm);width:100%;font-family:var(--font-mono);text-align:left;background:rgba(var(--surface-rgb), .78);color:var(--ink-muted);pointer-events:none;margin-top:6px;padding:6px 8px;font-size:.65rem;line-height:1.35}.gate-log-panel{flex-direction:column;gap:6px;width:100%;margin:10px 0;display:flex}.gate-log-panel textarea{border:1px solid var(--line-strong);border-radius:var(--radius-sm);width:100%;height:150px;font-family:var(--font-mono);white-space:pre;background:var(--surface);color:var(--ink-muted);resize:vertical;padding:6px;font-size:.62rem;line-height:1.35}.screen.gameover-screen{justify-content:space-evenly;height:100%}.gameover-scores{gap:var(--space-3);width:100%;max-width:380px;margin:var(--space-1) auto 0;justify-content:center;align-items:stretch;display:flex}.scorecard{border-radius:var(--radius-md);border:1px solid var(--line);background:var(--surface-panel);flex-direction:column;flex:1 1 0;justify-content:center;align-items:center;gap:4px;padding:12px 16px;display:flex}.scorecard-label{letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);font-size:10px;font-weight:700}.scorecard-value{font-family:var(--font-display);font-variant-numeric:tabular-nums;color:var(--ink);font-size:2.2rem;font-weight:600;line-height:1}.scorecard-best{--gold:#c98a3c;--gold-deep:#a86c20;border-color:color-mix(in srgb, var(--gold) 55%, transparent);background:linear-gradient(180deg, color-mix(in srgb, var(--gold) 18%, var(--surface)), color-mix(in srgb, var(--gold) 7%, var(--surface)));box-shadow:inset 0 1px 0 #ffffff8c, 0 2px 12px color-mix(in srgb, var(--gold) 22%, transparent)}.scorecard-best .scorecard-label{color:var(--gold-deep)}.scorecard-best.is-new{border-color:var(--gold-deep);background:linear-gradient(180deg, #dca24b, var(--gold));box-shadow:inset 0 1px 0 #fff6, 0 3px 16px color-mix(in srgb, var(--gold) 45%, transparent);animation:.5s cubic-bezier(.2,.9,.25,1) both scorecard-pop;position:relative;overflow:hidden}.scorecard-best.is-new .scorecard-label{color:#fffcf4eb}.scorecard-best.is-new .scorecard-value{color:#fffdf7}.scorecard-best.is-new:after{content:"";background:linear-gradient(115deg,#0000 35%,#fff9 50%,#0000 65%);animation:2s ease-in-out .35s both scorecard-shine;position:absolute;inset:0;transform:translate(-130%)}@keyframes scorecard-pop{0%{opacity:0;transform:scale(.88)}to{opacity:1;transform:scale(1)}}@keyframes scorecard-shine{to{transform:translate(130%)}}@media (prefers-reduced-motion:reduce){.scorecard-best.is-new{animation:none}.scorecard-best.is-new:after{display:none}}.gameover-accuracy{width:100%}.gameover-ctas{gap:var(--space-3);flex-direction:row;align-items:stretch;width:100%;max-width:460px;margin-inline:auto;display:flex}.gameover-cta-block{justify-content:space-between;align-items:center;gap:var(--space-2);flex-direction:column;flex:1 1 0;display:flex}.screen button.gameover-cta{width:100%;padding:10px 16px;font-size:.9rem}.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}.dev-panel{font-variant-numeric:tabular-nums;background:var(--surface-panel);border-radius:var(--radius-md);flex-direction:column;gap:10px;width:260px;padding:12px;font-size:12px;display:flex}.dev-panel table{border-collapse:collapse;width:100%}.dev-panel td{padding:2px 4px}.dev-panel td:last-child{text-align:right;color:var(--accent)}.dev-panel label{color:var(--ink-muted);flex-direction:column;gap:2px;display:flex}.dev-panel input[type=range]{width:100%}.dev-panel .param-name{color:var(--ink)}.dev-panel .param-help{color:var(--ink-dim);font-size:11px;line-height:1.4}@media (width<=700px){.app{flex-direction:column;justify-content:flex-start;align-items:center}.dev-panel{width:100%;max-width:420px}}.lab-screen{text-align:left;align-items:stretch;gap:12px;width:100%;max-width:1800px;margin-inline:auto}.lab-header{flex-wrap:wrap;align-items:center;gap:16px;display:flex}.lab-tabs{gap:6px;display:flex}.lab-tabs .tab{border-radius:var(--radius-sm);border:1px solid var(--line);color:var(--ink-muted);cursor:pointer;background:0 0;padding:4px 10px;font-size:12px}.lab-tabs .tab.active{border-color:var(--accent);color:var(--ink)}.lab-split{flex-wrap:wrap;align-items:flex-start;gap:16px;display:flex}.lab-play-grid{grid-template-columns:260px minmax(360px,440px) 1fr;align-items:stretch;gap:20px;height:calc(100svh - 160px);min-height:0;display:grid}.lab-stage{flex-direction:column;align-items:stretch;gap:10px;min-height:0;display:flex;overflow-y:auto}.lab-picker{flex-direction:column;gap:10px;height:100%;min-height:0;display:flex}.lab-idle{flex-direction:column;align-self:center;gap:10px;width:100%;max-width:420px;display:flex}.lab-controls{flex:320px}.word-gates>.lab-controls{flex:none}.gate-picker{flex-direction:column;gap:10px;height:100%;min-height:0;display:flex}.gate-picker-list{flex-direction:column;flex:1;gap:4px;width:100%;min-height:0;max-height:calc(100vh - 260px);display:flex;overflow:hidden auto}.gate-picker-item{text-align:left;border-radius:var(--radius-sm,6px);color:var(--ink-muted);box-sizing:border-box;background:0 0;width:100%;padding:6px 10px}.gate-picker-item.active{background:var(--surface-panel);color:var(--ink)}.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-checkbox{cursor:pointer;align-items:center;gap:6px;display:flex}.game-settings-compact .choice-option{flex:none;padding:4px 10px;font-size:12px}.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))}.tone-average-card canvas{aspect-ratio:320/220;cursor:default;width:100%;height:auto}.tuning-panel{font-variant-numeric:tabular-nums;column-count:2;background:var(--surface-panel);border-radius:var(--radius-md);color:var(--ink-muted);column-gap:24px;padding:12px;font-size:12px}.tuning-panel section{break-inside:avoid;margin-bottom:16px}.tuning-panel h4{color:var(--ink);text-transform:uppercase;letter-spacing:.08em;margin:0 0 2px;font-size:11px}.tuning-panel section{flex-direction:column;gap:8px;display:flex}.tuning-panel .knob{border-left:2px solid #0000;flex-direction:column;gap:2px;padding-left:8px;display:flex}.tuning-panel .knob.moved{border-left-color:var(--warn-strong)}.tuning-panel .param-name{color:var(--ink)}.tuning-panel .param-help{color:var(--ink-dim);font-size:11px;line-height:1.4}.tuning-panel input[type=range]{width:100%}.tuning-panel .revert{color:var(--warn-strong);cursor:pointer;background:0 0;border:none;margin-left:6px;padding:0 4px}.tuning-panel .row{align-items:center;gap:6px;display:flex}.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}.dev-panel .param-help.warn{color:var(--warn-strong)}@media (width<=900px){.lab-split{flex-direction:column;align-items:stretch}.lab-play-grid{grid-template-columns:1fr}.tuning-panel{column-count:1}}.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-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}.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;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)}.settings-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-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-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}.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}.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;padding:0;display:flex;position:static}.visualiser-panel .vis-readouts{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;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{grid-template-columns:repeat(2,1fr);grid-auto-rows:min-content;gap:8px 12px;display:grid}.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}.frame:has(.landing){max-width:100%}.landing{text-align:left;flex-direction:column;gap:8rem;width:100%;max-width:72rem;margin-inline:auto;display:flex}.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,420px);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{gap:var(--space-4);grid-template-columns:1fr;display:grid}@media (width>=640px){section.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-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){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):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):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-6);border-radius:var(--radius-md);background:var(--surface-panel)}.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-4);flex-direction:column;scroll-margin-top:88px;display:flex}.landing-section h2{font-size:var(--text-2xl);margin-bottom:var(--space-2)}.why-this-works-content{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:4rem;display:flex}.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}.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,.mobile-instructions{gap:var(--space-4);flex-direction:column;display:flex}@media (width>=901px){.mobile-row{flex-direction:row;align-items:flex-start;gap:56px}.mobile-text,.mobile-instructions{flex:50%;min-width:0}}.home-screen-guide{gap:var(--space-4);flex-direction:column;flex:50%;min-width:0;display:flex}.home-screen-platform{gap:var(--space-3);padding:var(--space-4);flex-direction:column;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}.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}.switch-text{flex-direction:column;display:flex}.switch-label{color:var(--ink);font-weight:700}.switch-sublabel{color:var(--ink-muted);font-size:12px}.pause-card .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}.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-mascot{width:min(340px,85%);height:auto}.playhome-menu{width:100%;max-width:220px}.playhome-menu button{justify-content:center;align-items:center;gap:8px;display:inline-flex}.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;font-size:1rem;font-weight:600}.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)}.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 .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-sm);border-bottom:1px solid var(--line-soft);padding:4px 0;display:flex}.leaderboard-rank{flex-shrink:0;width:24px}.leaderboard-name{flex:1}.leaderboard-score{font-variant-numeric:tabular-nums;font-weight:600}.leaderboard-you{color:var(--accent)}.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-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{background:color-mix(in srgb, var(--surface-panel) 50%, var(--surface));border-style:dashed;border-color:color-mix(in srgb, var(--ink) 28%, transparent);box-shadow:none;cursor:default}.progress-screen .level-card .level-big{color:var(--ink-soft)}.progress-screen .level-card .level-sub,.progress-screen .level-card .level-label{color:var(--ink-dim)}.progress-screen .level-card .level-bar{border-color:color-mix(in srgb, var(--ink) 22%, transparent);background:#241d150d}.progress-screen .level-card .level-bar-fill{background:var(--ink-dim)}.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{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:36px 1fr 100px;align-items:center;gap:14px;padding:10px 0;display:grid}.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);margin:0 0 4px;font-size:1.5rem;font-weight:800}.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-identity{align-items:center;gap:var(--space-3);display:flex}.profile-avatar{background:color-mix(in srgb, var(--accent) 18%, var(--surface));width:40px;height:40px;color:var(--accent);font-family:var(--font-display);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-weight:700;display:flex}.profile-name{font-weight:600}.earlybird-card{padding:var(--space-5) var(--space-4);border-radius:var(--radius-md);background:var(--surface-panel);border:2px solid var(--accent);text-align:left}.earlybird-price{font-family:var(--font-display);font-size:var(--text-2xl);margin:var(--space-2) 0 var(--space-3)}.earlybird-features{margin:0 0 var(--space-4);font-size:var(--text-sm);flex-direction:column;gap:8px;padding:0;list-style:none;display:flex}.earlybird-features li{align-items:center;gap:6px;display:flex}.earlybird-features li .badge{margin-left:auto}.earlybird-feature-live{color:var(--good-dim)}.earlybird-cta{width:100%}.earlybird-note{text-align:center;margin-top:var(--space-2)}.earlybird-notify{text-align:center;width:100%;display:block}.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);border:1px solid var(--line);width:28px;height:28px;color:var(--ink-muted);background:0 0;border-radius:50%;font-size:1.2rem;line-height:1;position:absolute}.modal-close:hover{color:var(--ink);border-color:var(--ink-soft)}.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);opacity:.6;cursor:not-allowed;border:none;padding:12px 20px}.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-pay-note{text-align:center;font-size:var(--text-xs);color:var(--ink-dim);margin:4px 0 var(--space-3)}.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}
