.screen--adult{--hud-red: #c94f3d}.screen--adult .hud{min-width:210px}.screen--adult .hud-row{display:flex;justify-content:space-between;align-items:baseline;gap:12px}.screen--adult .hud .clarity-fill{transition:width 90ms linear,background-color .12s linear}.screen--adult .hud .clarity-fill--strong{background:var(--success)}.screen--adult .hud .clarity-fill--ok{background:var(--warn)}.screen--adult .hud .clarity-fill--low{background:var(--hud-red)}.screen--adult .hud-gate-warn{color:var(--hud-red);font-size:var(--text-sm);font-weight:600}.screen--adult .hud-cents{position:relative;height:16px;border-radius:4px;background:#4a3f6614;overflow:hidden}.screen--adult .hud-cents__tick{position:absolute;top:0;bottom:0;left:50%;width:2px;margin-left:-1px;background:#4a3f664d}.screen--adult .hud-cents__needle{position:absolute;top:0;right:0;bottom:0;left:0;transition:transform 90ms linear,opacity .12s linear;will-change:transform}.screen--adult .hud-cents__needle:before{content:"";position:absolute;top:2px;bottom:2px;left:50%;width:2px;margin-left:-1px;border-radius:1px;background:var(--ink)}.screen--adult .hud-cents--idle .hud-cents__needle{opacity:0}.screen--adult .hud-raw{color:var(--ink-soft);opacity:.8;font-size:var(--text-sm)}.screen--adult .hud-almost{display:flex;justify-content:center;align-items:stretch;gap:10px;margin-top:8px;font-size:var(--text-md);font-weight:500;animation:hud-almost-fade 1.8s ease forwards}.screen--adult .hud-almost__cell{display:inline-flex;flex-direction:column;align-items:center;line-height:1.2}.screen--adult .hud-almost__tag{font-size:12px;font-weight:500;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-soft)}.screen--adult .hud-almost__cell strong{font-size:22px}.screen--adult .hud-almost__cell--heard strong{color:var(--hud-red)}.screen--adult .hud-almost__cell--expected strong{color:var(--ink)}.screen--adult .hud-almost__sep{align-self:center;color:var(--ink-soft)}@keyframes hud-almost-fade{0%,78%{opacity:1}to{opacity:0}}@media (prefers-reduced-motion: reduce){.screen--adult .hud-almost{animation:none}.screen--adult .hud-cents__needle,.screen--adult .hud .clarity-fill,.screen--adult .notation-cursor{transition:none}}.screen--adult .notation{flex:none;align-self:stretch;overflow-x:auto;overflow-y:visible;background:var(--surface-card);border-radius:var(--r-md);box-shadow:var(--shadow-1);padding:72px 0 6px;-webkit-overflow-scrolling:touch}.screen--adult .notation svg{display:block;overflow:visible}.screen--adult .notation-line{stroke:var(--hairline);stroke-width:1}.screen--adult .notation-bar{stroke:var(--hairline-strong);stroke-width:1}.screen--adult .notation-bar--final{stroke-width:3}.screen--adult .notation-clef{fill:var(--plum);font-family:var(--font)}.screen--adult .notation-cursor{transition:transform .18s ease}.screen--adult .notation-cursor line{stroke:var(--coral);stroke-width:2;opacity:.55}.screen--adult .notation-head{fill:var(--plum)}.screen--adult .notation-head--hollow{fill:var(--surface-card);stroke:var(--plum);stroke-width:1.6}.screen--adult .notation-note--played{opacity:.4}.screen--adult .notation-note--current .notation-head{fill:var(--coral)}.screen--adult .notation-note--current .notation-head--hollow{fill:var(--surface-card);stroke:var(--coral);stroke-width:2}.screen--adult .notation-halo{fill:var(--coral);opacity:.18}.screen--adult .notation-accidental{fill:var(--plum);font-size:var(--text-sm);font-family:var(--font)}.screen--adult .notation-lyric{fill:var(--ink-soft);font-size:11.5px;font-family:var(--font)}.screen--adult .notation-lyric--active{fill:var(--plum);font-weight:600}.screen--adult .mode-tabs{display:inline-flex;background:var(--ink-veil);border-radius:var(--r-lg);padding:3px}.screen--adult .mode-tab{min-height:36px;padding:6px 16px;border-radius:calc(var(--r-lg) - 3px);font-size:var(--text-md);font-weight:600;color:var(--ink-soft)}.screen--adult .mode-tab--active{background:var(--surface-card);color:var(--ink);box-shadow:var(--shadow-1)}.screen--adult .tempo-view{flex:1;display:flex;flex-direction:column;gap:12px;min-height:0}.screen--adult .tempo-gate{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;text-align:center;max-width:520px;margin:0 auto}.screen--adult .tempo-gate h2{margin:0;font-size:var(--text-xl)}.screen--adult .tempo-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.screen--adult .tempo-toolbar .spacer,.screen--adult .perform-progress .spacer{flex:1}.screen--adult .score-toggle{min-width:36px;min-height:36px;font-size:18px;padding:4px 8px;border-radius:var(--r-sm);color:var(--ink-soft)}.screen--adult .score-toggle--on{background:var(--sky-veil, color-mix(in srgb, var(--sky) 18%, transparent));color:var(--sky-deep, var(--sky))}.screen--adult .phrase-chips{display:flex;gap:6px}.screen--adult .phrase-chip{min-width:40px;min-height:36px;border-radius:var(--r-sm);background:var(--ink-veil);font-weight:600;font-size:var(--text-md);color:var(--ink-soft)}.screen--adult .phrase-chip--active{background:var(--ink);color:var(--surface-card)}.screen--adult .ladder{display:flex;gap:8px;align-items:center}.screen--adult .ladder-caption{font-size:11px;color:var(--ink-faint, color-mix(in srgb, var(--ink) 35%, transparent));font-weight:500;letter-spacing:.02em;margin-right:2px}.screen--adult .rung{display:flex;flex-direction:column;align-items:center;gap:1px;font-variant-numeric:tabular-nums;padding:5px 14px;border-radius:var(--r-lg);background:var(--ink-veil);color:var(--ink-soft)}.screen--adult .rung-pct{font-size:var(--text-md);font-weight:700;line-height:1.1}.screen--adult .rung-bpm{font-size:11px;opacity:.75;line-height:1}.screen--adult .rung--current{background:var(--ink);color:var(--surface-card);font-weight:700}.screen--adult .rung--passed{background:var(--success);color:var(--plum-deep)}.screen--adult .rung--top{background:transparent;color:var(--success);font-weight:700}.screen--adult .tempo-stage{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;min-height:0}.screen--adult .tempo-live{display:flex;flex-direction:column;align-items:center;gap:12px}.screen--adult .beat-pulse{width:26px;height:26px;border-radius:50%;background:var(--ink);opacity:.25}.screen--adult .beat-pulse--on{animation:beat-pop .18s ease-out}@keyframes beat-pop{0%{transform:scale(1.45);opacity:.9}to{transform:scale(1);opacity:.25}}.screen--adult .tempo-status{margin:0;font-size:var(--text-lg);color:var(--ink-soft)}.screen--adult .count-in-num{font-size:80px;font-weight:900;line-height:1;color:var(--ink);animation:count-in-pop .2s ease-out}@keyframes count-in-pop{0%{transform:scale(1.5);opacity:.5}to{transform:scale(1);opacity:1}}.screen--adult .tempo-progress-row{display:flex;align-items:center;gap:8px}.screen--adult .note-progress{width:160px;height:4px;border-radius:2px;background:var(--ink-veil);overflow:hidden}.screen--adult .note-progress__fill{height:100%;background:var(--ink-soft);border-radius:2px;transition:width 80ms linear}.screen--adult .note-counter{font-size:var(--text-sm);font-variant-numeric:tabular-nums;color:var(--ink-soft)}.screen--adult .note-lookahead{display:flex;gap:6px;align-items:center}.screen--adult .lookahead-chip{padding:3px 12px;border-radius:var(--r-lg);font-size:var(--text-sm);font-weight:600;background:var(--ink-veil)}.screen--adult .lookahead-chip--next{color:var(--ink);opacity:.75}.screen--adult .lookahead-chip--later{color:var(--ink-soft);opacity:.4}.screen--adult .grade-flash{display:flex;flex-direction:column;align-items:center;font-size:var(--text-xxl);font-weight:800;animation:grade-in .7s ease forwards}.screen--adult .grade-flash small{font-size:var(--text-sm);font-weight:500;color:var(--ink-soft)}.screen--adult .grade-flash--perfect{color:var(--success)}.screen--adult .grade-flash--good{color:var(--ink)}.screen--adult .grade-flash--okay{color:var(--warn)}.screen--adult .grade-flash--miss{color:var(--hud-red)}@keyframes grade-in{0%{transform:scale(.7);opacity:0}15%{transform:scale(1.05);opacity:1}80%{opacity:1}to{opacity:0}}.screen--adult .tempo-summary{display:flex;flex-direction:column;align-items:center;gap:10px}.screen--adult .verdict{margin:0;font-size:var(--text-xl);font-weight:700}.screen--adult .verdict--pass{color:var(--success)}.screen--adult .verdict--fail{color:var(--warn)}.screen--adult .bands-line{margin:0;font-size:var(--text-md);color:var(--ink-soft);font-variant-numeric:tabular-nums}.screen--adult .note-strip{display:flex;gap:4px;flex-wrap:wrap;justify-content:center;max-width:70vw}.screen--adult .note-cell{width:16px;height:16px;border-radius:4px}.screen--adult .note-cell--perfect{background:var(--success)}.screen--adult .note-cell--good{background:var(--sky)}.screen--adult .note-cell--okay{background:var(--warn)}.screen--adult .note-cell--miss{background:var(--hud-red)}.screen--adult .dyn-band-chip{display:inline-flex;align-items:center;padding:2px 10px;border-radius:var(--r-lg);font-size:var(--text-sm);font-weight:600;letter-spacing:.03em;text-transform:lowercase}.screen--adult .dyn-band-chip--soft{background:color-mix(in srgb,var(--plum-soft) 18%,transparent);color:var(--plum)}.screen--adult .dyn-band-chip--medium{background:color-mix(in srgb,var(--sky) 28%,transparent);color:var(--plum-deep)}.screen--adult .dyn-band-chip--loud{background:color-mix(in srgb,var(--sun) 40%,transparent);color:var(--plum-deep)}.screen--adult .dyn-grade-chip{display:inline-flex;align-items:center;padding:1px 8px;border-radius:var(--r-lg);font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:lowercase;margin-left:6px;vertical-align:middle}.screen--adult .dyn-grade-chip--soft{background:color-mix(in srgb,var(--plum-soft) 22%,transparent);color:var(--plum)}.screen--adult .dyn-grade-chip--medium{background:color-mix(in srgb,var(--sky) 30%,transparent);color:var(--plum-deep)}.screen--adult .dyn-grade-chip--loud{background:color-mix(in srgb,var(--sun) 45%,transparent);color:var(--plum-deep)}.screen--adult .dyn-cal-done{font-size:var(--text-sm);color:var(--success);font-weight:600}.screen--adult .dyn-counts-line{font-variant-numeric:tabular-nums}.screen--adult .evenness-toggle{font-size:var(--text-sm);padding:4px 12px;min-height:36px}.screen--adult .evenness-toggle--on{background:color-mix(in srgb,var(--sky) 22%,transparent);color:var(--sky-deep, var(--plum-deep));border-color:var(--sky)}.screen--adult .evenness-summary{display:flex;flex-direction:column;align-items:center;gap:4px;margin:4px 0}.screen--adult .tier-badge{display:inline-flex;align-items:center;padding:3px 12px;border-radius:var(--r-lg);font-size:var(--text-sm);font-weight:700;letter-spacing:.04em;text-transform:lowercase}.screen--adult .tier-badge--even{background:color-mix(in srgb,var(--success) 22%,transparent);color:var(--success)}.screen--adult .tier-badge--developing{background:color-mix(in srgb,var(--sun) 32%,transparent);color:var(--plum-deep)}.screen--adult .tier-badge--uneven{background:color-mix(in srgb,var(--warn) 28%,transparent);color:var(--plum-deep)}.screen--adult .evenness-sub{font-size:var(--text-sm);color:var(--ink-soft);font-variant-numeric:tabular-nums}.screen--adult .note-cell--even{background:color-mix(in srgb,var(--sky) 45%,transparent)}.screen--adult .note-cell--uneven{background:var(--warn)}.screen--adult .perform-view{display:flex;flex-direction:column;align-items:center;gap:8px;padding:8px 0}.screen--adult .perform-progress{display:flex;gap:6px;align-items:center}.screen--adult .perform-phrase-pip{width:10px;height:10px;border-radius:50%;background:var(--ink-faint, color-mix(in srgb, var(--ink) 15%, transparent));transition:background .2s}.screen--adult .perform-phrase-pip--active{background:var(--sky);transform:scale(1.3)}.screen--adult .perform-phrase-pip--done{background:var(--success)}.screen--adult .perform-stars{display:flex;gap:10px;font-size:40px;line-height:1}.screen--adult .perform-star{color:color-mix(in srgb,var(--ink) 20%,transparent);transition:color .3s,transform .3s}.screen--adult .perform-star--lit{color:var(--sun, #f0b429);transform:scale(1.15)}.screen--adult .perform-phrase-list{display:flex;flex-direction:column;gap:4px;width:100%;max-width:400px;margin:4px 0}.screen--adult .perform-phrase-row{display:flex;align-items:center;gap:8px;font-size:var(--text-sm)}.screen--adult .perform-phrase-label{flex:1;color:var(--ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.screen--adult .perform-phrase-scores{font-variant-numeric:tabular-nums;color:var(--ink-soft);font-size:11px}.screen--adult .perform-summary{gap:10px}.screen--adult .rec-arm{display:inline-flex;align-items:center;gap:6px;font-size:var(--text-sm);color:var(--ink-soft);min-height:36px}.screen--adult .rec-arm--locked{opacity:.5}.screen--adult .rec-empty{font-size:var(--text-sm);color:var(--warn);font-weight:600}.rec-banner{position:fixed;left:max(16px,env(safe-area-inset-left));right:max(16px,env(safe-area-inset-right));bottom:max(16px,env(safe-area-inset-bottom));z-index:55;display:flex;align-items:center;gap:12px;padding:12px 16px;border-radius:var(--r-md);background:var(--surface-card);box-shadow:var(--shadow-3);border:1px solid var(--hairline)}.rec-banner__label{display:inline-flex;align-items:center;gap:8px;font-size:var(--text-md);font-weight:600;color:var(--ink)}.rec-banner .spacer{flex:1}.rec-banner .btn{min-height:44px}.rec-banner--empty .rec-banner__label{color:var(--warn)}.screen--adult .rec-live{display:inline-flex;align-items:center;gap:8px;font-size:var(--text-sm);font-weight:600}.screen--adult .rec-dot{width:12px;height:12px;border-radius:50%;background:var(--hud-red);animation:rec-blink 1.2s ease infinite}@keyframes rec-blink{0%,to{opacity:1}50%{opacity:.35}}.screen--adult .hud--idle .hud-row,.screen--adult .hud--idle .hud-cents,.screen--adult .hud--idle .clarity-track,.screen--adult .hud--idle .hud-raw{opacity:.35}.screen--adult .hud-listening{font-size:var(--text-sm);color:var(--ink-soft);font-style:italic}.screen--adult .kbd-strip,.play-kid .kbd-strip{display:flex;justify-content:center}.screen--adult .kbd-strip svg,.play-kid .kbd-strip svg{width:min(100%,920px)}.info-dot{position:relative;display:inline-flex;align-items:center;justify-content:center;padding:10px;margin:-10px;cursor:default;vertical-align:middle}.info-dot__icon{font-size:13px;line-height:1;color:var(--ink-soft);opacity:.6;-webkit-user-select:none;user-select:none}.info-dot__tip{display:none;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);background:var(--ink, #2d2340);color:var(--surface-card, #fff);font-size:12px;line-height:1.4;font-weight:400;padding:7px 11px;border-radius:8px;white-space:pre-wrap;max-width:260px;min-width:160px;text-align:left;pointer-events:none;z-index:100;box-shadow:0 4px 14px #0000002e}.info-dot__tip:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:6px solid transparent;border-top-color:var(--ink, #2d2340)}.info-dot:hover .info-dot__tip,.info-dot:focus .info-dot__tip,.info-dot:focus-within .info-dot__tip{display:block}@media (prefers-reduced-motion: reduce){.screen--adult .beat-pulse--on,.screen--adult .grade-flash,.screen--adult .rec-dot,.screen--adult .count-in-num{animation:none}.screen--adult .note-progress__fill{transition:none}}@font-face{font-family:"Baloo 2";font-style:normal;font-weight:400 800;font-display:swap;src:url(/fonts/baloo2-latin.woff2) format("woff2")}:root{--cream: #fdf4e3;--card: #fff7e8;--plum: #4a3f66;--plum-soft: #6f6490;--plum-deep: #352c4d;--coral: #f2876b;--sun: #f7c873;--sage: #9bc4a0;--sky: #8fb8de;--lilac: #c49bd6;--rose: #f2a3b3;--teal: #7fcdc4;--meadow: #8fcb72;--gold: #f0b429;--amber: #f4a950;--surface: var(--cream);--surface-card: var(--card);--ink: var(--plum);--ink-soft: var(--plum-soft);--primary: var(--coral);--on-primary: #fff7f0;--success: var(--gold);--warn: var(--amber);--hairline: rgba(74, 63, 102, .28);--hairline-strong: rgba(74, 63, 102, .45);--ink-veil: rgba(74, 63, 102, .07);--font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-display: "Baloo 2", var(--font);--text-sm: 13px;--text-md: 15px;--text-lg: 17px;--text-xl: 20px;--text-xxl: 24px;--text-display: clamp(34px, 6vw, 52px);--r-sm: 10px;--r-md: 16px;--r-lg: 22px;--r-blob: 46% 54% 50% 50% / 52% 48% 55% 45%;--shadow-1: 0 2px 8px rgba(74, 63, 102, .08);--shadow-2: 0 3px 10px rgba(74, 63, 102, .12);--shadow-3: 0 6px 18px rgba(74, 63, 102, .14);--dur-quick: .12s;--dur-soft: .26s;--dur-slow: .5s;--ease-pop: cubic-bezier(.3, 1.6, .5, 1)}.screen--adult{--surface: #f4f1ec;--surface-card: #fdfbf7;--ink: #3d3458;--primary: var(--plum);--on-primary: #fdfbf7;color:var(--ink)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%;margin:0}body{font-family:var(--font);color:var(--ink);background:var(--surface);overscroll-behavior:none;-webkit-user-select:none;user-select:none;touch-action:manipulation}button{font-family:inherit;color:inherit;border:none;cursor:pointer;background:none;padding:0}.screen{height:100%;display:flex;flex-direction:column;padding:max(12px,env(safe-area-inset-top)) max(20px,env(safe-area-inset-right)) max(12px,env(safe-area-inset-bottom)) max(20px,env(safe-area-inset-left));overflow:hidden auto}.screen--adult{background:var(--surface)}.topbar{display:flex;align-items:center;gap:12px;min-height:52px;flex:none}.topbar .spacer{flex:1}.topbar-title{font-size:var(--text-xl);font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar--kid .topbar-title{font-family:var(--font-display)}.topbar-progress{display:flex;align-items:center;gap:10px;min-width:0}.topbar-progress .count{font-size:var(--text-sm);font-variant-numeric:tabular-nums;color:var(--ink-soft);white-space:nowrap}.progress-track{width:clamp(60px,14vw,140px);height:5px;border-radius:3px;background:var(--ink-veil);overflow:hidden}.progress-fill{height:100%;border-radius:inherit;background:var(--success);transition:width var(--dur-soft) ease}.hint{font-size:var(--text-lg);color:var(--ink-soft)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;min-width:44px;padding:10px 22px;border-radius:var(--r-lg);font-size:var(--text-lg);font-weight:600;background:var(--surface-card);box-shadow:var(--shadow-3);transition:transform var(--dur-quick) ease}.btn:active{transform:scale(.96)}.btn--primary{background:var(--primary);color:var(--on-primary)}.btn--big{min-height:64px;font-size:22px;padding:14px 34px;border-radius:32px}.btn--ghost{box-shadow:none;background:var(--ink-veil)}.home{background:radial-gradient(circle at 12% 18%,rgba(247,200,115,.35),transparent 32%),radial-gradient(circle at 88% 76%,rgba(143,184,222,.28),transparent 36%),var(--surface)}.home-body{flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:28px;min-height:0}.home h1{font-family:var(--font-display);font-size:var(--text-display);margin:0;letter-spacing:.5px}.home h1 .note{display:inline-block;transform:rotate(-12deg)}.profile-row{display:flex;gap:36px;flex-wrap:wrap;justify-content:center}.profile-card{width:clamp(180px,28vw,250px);aspect-ratio:5 / 6;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;font-family:var(--font-display);font-size:26px;font-weight:700;color:var(--ink);box-shadow:var(--shadow-3);transition:transform .14s ease;border-radius:var(--r-blob)}.profile-card:active{transform:scale(.95) rotate(-1.5deg)}.profile-card .avatar{font-size:64px;line-height:1}.profile-card--kid{background:linear-gradient(160deg,#ffe3b3,#ffc9a3)}.profile-card--adult{background:linear-gradient(160deg,#dcebdd,#bcd9ee)}.gate-hold{position:relative;overflow:hidden}.gate-hold .gate-fill{position:absolute;top:0;right:0;bottom:0;left:0;transform-origin:left;background:#4a3f662e;transform:scaleX(0)}.gate-hold.holding .gate-fill{animation:gate-fill 3s linear forwards}@keyframes gate-fill{to{transform:scaleX(1)}}.worlds{display:flex;flex-direction:column;gap:22px;padding:10px 0 28px}.world{border-radius:28px;padding:18px 20px;box-shadow:var(--shadow-3)}.world--kid{border-radius:36px 44px 38px 46px/44px 36px 46px 38px}.world h2{margin:0 0 12px;font-size:var(--text-xxl);display:flex;align-items:center;gap:10px}.world--kid h2{font-family:var(--font-display)}.world--locked{opacity:.55;filter:saturate(.55)}.world--locked h2 .lock{font-size:var(--text-xl)}.world .song-grid{display:flex;flex-wrap:wrap;gap:14px}.song-tile{min-height:64px;min-width:150px;max-width:220px;flex:1;padding:12px 16px;border-radius:20px;background:#fffcf4d9;font-size:var(--text-lg);font-weight:600;display:flex;align-items:center;justify-content:space-between;gap:8px;box-shadow:var(--shadow-2);transition:transform var(--dur-quick) ease;text-align:left}.song-tile:active{transform:scale(.96)}.song-tile .done{font-size:var(--text-xl)}.song-tile--kid{border-radius:18px 24px 20px 26px/24px 18px 26px 20px;font-size:19px;min-height:72px}.screen--adult .song-tile{background:var(--surface-card);font-weight:500}.world--tint-0{background:linear-gradient(150deg,#ffeccb,#ffd9a8)}.world--tint-1{background:linear-gradient(150deg,#ddeede,#c2e3c6)}.world--tint-2{background:linear-gradient(150deg,#d8e8f7,#c0d8f0)}.world--tint-3{background:linear-gradient(150deg,#ecdcf4,#ddc6ec)}.screen--adult .world{background:var(--surface-card)}.play-kid{display:flex;flex-direction:column;height:100%;background:radial-gradient(circle at 85% 12%,rgba(247,200,115,.3),transparent 30%),var(--surface)}.play-stage{flex:1;display:flex;align-items:stretch;justify-content:center;position:relative;min-height:0}.lane{position:relative;width:min(240px,30vw);margin:0 auto}.lane--preview{opacity:.45}.stage-cta{position:absolute;top:0;right:0;bottom:0;left:0;z-index:4;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;background:radial-gradient(ellipse at center,rgba(253,244,227,.85),transparent 72%)}.stage-cta--demo{justify-content:flex-start;padding-top:10px;background:none;pointer-events:none}.lane-note{position:absolute;left:50%;bottom:130px;width:64px;height:64px;margin-left:-32px;border-radius:50% 48% 52% 50%/48% 52% 50% 50%;display:flex;align-items:center;justify-content:center;font-size:26px;font-weight:800;color:#4a3f66eb;box-shadow:var(--shadow-2);will-change:transform;transition:transform .3s cubic-bezier(.55,.085,.68,.53),opacity .3s ease-in}.lane-note--pop{animation:note-pop .24s ease-out forwards}@keyframes note-pop{0%{transform:translateY(94px) scale(1.45);opacity:1}to{transform:translateY(94px) scale(2.1);opacity:0}}.lane-note--shake{animation:note-shake .2s ease-in-out}.lane-note--shake:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;background:var(--warn);pointer-events:none;animation:amber-flash .2s ease forwards}@keyframes note-shake{0%,to{transform:translateY(94px) scale(1.45) translate(0)}16%{transform:translateY(94px) scale(1.45) translate(-4px)}33%{transform:translateY(94px) scale(1.45) translate(4px)}50%{transform:translateY(94px) scale(1.45) translate(-4px)}66%{transform:translateY(94px) scale(1.45) translate(4px)}83%{transform:translateY(94px) scale(1.45) translate(-3px)}}@keyframes amber-flash{0%,to{opacity:0}40%{opacity:.45}}.lane-target{position:absolute;left:50%;bottom:8px;width:120px;height:120px;margin-left:-60px;border-radius:50%;border:5px dashed rgba(74,63,102,.35);display:flex;align-items:center;justify-content:center;will-change:transform;animation:target-bounce .28s ease-out}.lane-target .glyph{font-size:56px;font-weight:800}.lane-target.pulse{animation:target-bounce .28s ease-out,almost-pulse .7s ease;border-color:var(--warn)}.lane-target.pulse:after{content:"";position:absolute;top:-14px;right:-14px;bottom:-14px;left:-14px;border-radius:50%;border:5px solid var(--warn);pointer-events:none;animation:almost-ring .7s ease forwards;will-change:transform,opacity}@keyframes almost-ring{0%{transform:scale(.85);opacity:0}35%{transform:scale(1);opacity:.4}to{transform:scale(1.3);opacity:0}}@keyframes target-bounce{0%{transform:scale(1.3);border-color:#4a3f66d9}55%{transform:scale(.93)}to{transform:scale(1);border-color:#4a3f6659}}@keyframes almost-pulse{0%{transform:scale(1)}35%{transform:scale(1.12)}to{transform:scale(1)}}.advance-burst{position:absolute;left:50%;bottom:68px;width:0;height:0;z-index:3;pointer-events:none}.advance-burst .cheer-ring{position:absolute;left:-60px;top:-60px;width:120px;height:120px;border-radius:50%;border:6px solid var(--coral);will-change:transform,opacity;animation:cheer-ring .26s ease-out forwards}@keyframes cheer-ring{0%{transform:scale(.65);opacity:1}to{transform:scale(1.5);opacity:0}}.advance-burst .spark{position:absolute;left:-6px;top:-6px;width:12px;height:12px;border-radius:50%;will-change:transform,opacity;animation:spark-fly .38s ease-out forwards}@keyframes spark-fly{0%{transform:translate(0) scale(.65);opacity:1}35%{opacity:1}to{transform:translate(var(--spark-x),var(--spark-y)) scale(1);opacity:0}}.almost-bubble{position:absolute;left:50%;bottom:150px;transform:translate(-50%);background:var(--warn);color:#fff8ec;font-size:var(--text-xl);font-weight:700;padding:8px 18px;border-radius:18px 22px/22px 18px;will-change:transform,opacity;animation:bubble-in 1.6s ease forwards;white-space:nowrap}@keyframes bubble-in{0%{opacity:0;transform:translate(-50%) scale(.7)}12%{opacity:1;transform:translate(-50%) scale(1.04)}18%,80%{opacity:1;transform:translate(-50%) scale(1)}to{opacity:0;transform:translate(-50%) scale(.9)}}.lyric-line{text-align:center;font-size:var(--text-xl);font-weight:600;color:var(--ink-soft);min-height:30px;flex:none;padding:4px 0}.phrase-stars{display:flex;align-items:center;gap:8px;font-size:var(--text-xxl);min-height:32px}.phrase-stars .star{opacity:.25;transition:opacity var(--dur-soft) ease}.phrase-stars .star.lit{opacity:1;animation:star-pop var(--dur-slow) var(--ease-pop)}@keyframes star-pop{0%{transform:scale(.2) rotate(-30deg)}to{transform:scale(1) rotate(0)}}.play-adult{display:flex;flex-direction:column;height:100%;gap:10px}.adult-center{flex:1;display:flex;align-items:center;justify-content:center;gap:36px;min-height:0}.adult-target{font-size:88px;font-weight:700;line-height:1;min-width:160px;text-align:center}.adult-target small{display:block;font-size:var(--text-md);font-weight:500;color:var(--ink-soft);margin-top:6px}.adult-target.pulse{animation:almost-pulse .7s ease;color:var(--warn)}.hud{font-variant-numeric:tabular-nums;font-size:var(--text-md);color:var(--ink-soft);display:flex;flex-direction:column;gap:6px;min-width:170px}.hud .clarity-track{height:8px;border-radius:4px;background:#4a3f661f;overflow:hidden}.hud .clarity-fill{height:100%;background:var(--success);transition:width 90ms linear}.kbd-strip{flex:none;width:100%}.kbd-strip svg{display:block;width:100%;height:auto}.kbd-strip .key-bounce{transform-box:fill-box;transform-origin:center;animation:key-press var(--dur-quick) ease-out}@keyframes key-press{0%,to{transform:translateY(0)}45%{transform:translateY(3px)}}.kbd-strip .key-press-shade{opacity:0;animation:key-shade var(--dur-quick) ease-out}@keyframes key-shade{0%,to{opacity:0}45%{opacity:.22}}.celebration{position:fixed;top:0;right:0;bottom:0;left:0;background:#4a3f6640;display:flex;align-items:center;justify-content:center;z-index:50}.celebration .card{background:var(--surface-card);border-radius:40px 48px 42px 50px/48px 40px 50px 42px;padding:40px 56px;text-align:center;box-shadow:var(--shadow-3);animation:card-pop .48s var(--ease-pop);display:flex;flex-direction:column;gap:18px;align-items:center}.celebration h2{margin:0;font-size:40px}.celebration--kid h2{font-family:var(--font-display)}@keyframes card-pop{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}.celebration .burst-star{position:absolute;left:50%;top:50%;font-size:44px;will-change:transform,opacity;animation:star-fly 2.2s ease-out forwards}@keyframes star-fly{0%{transform:translate(0) scale(.4) rotate(0);opacity:0}12%{opacity:1}75%{opacity:1}to{transform:translate(var(--fly-x),var(--fly-y)) scale(1.25) rotate(var(--fly-r));opacity:0}}.celebration--kid .card{animation-delay:.35s;animation-fill-mode:both}.celebration--kid h2{font-size:52px}.settings-section{background:var(--surface-card);border-radius:var(--r-md);padding:16px 20px;margin-bottom:16px;box-shadow:var(--shadow-1)}.settings-section h2{font-size:var(--text-lg);margin:0 0 12px}.settings-row{display:flex;align-items:center;gap:12px;padding:6px 0;flex-wrap:wrap}.settings-row label{min-width:140px;font-size:var(--text-md)}.settings-row input[type=text],.settings-row select,.settings-row input[type=number]{font:inherit;padding:8px 10px;border-radius:var(--r-sm);border:1px solid var(--hairline);background:#fff;min-height:36px}.settings-note{font-size:var(--text-sm);color:var(--ink-soft)}.settings-row--presets{gap:10px;align-items:stretch}.preset-btn{flex:1;min-width:120px;display:flex;flex-direction:column;align-items:center;gap:3px;padding:12px 10px;border-radius:var(--r-md);border:2px solid var(--hairline);background:var(--ink-veil);cursor:pointer;text-align:center;transition:border-color .12s,background .12s}.preset-btn--active{border-color:var(--primary);background:var(--surface-card);box-shadow:var(--shadow-1)}.preset-label{font-size:var(--text-md);font-weight:700;color:var(--ink)}.preset-bands{font-size:var(--text-sm);font-variant-numeric:tabular-nums;font-weight:600;color:var(--ink)}.preset-legend{font-size:11px;color:var(--ink-soft)}.update-toast{position:fixed;left:50%;bottom:calc(14px + env(safe-area-inset-bottom));transform:translate(-50%);z-index:60;display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:var(--r-lg);background:var(--surface-card);box-shadow:var(--shadow-3);animation:toast-in var(--dur-soft) var(--ease-pop)}@keyframes toast-in{0%{transform:translate(-50%) translateY(20px);opacity:0}to{transform:translate(-50%) translateY(0);opacity:1}}.mic-error{background:var(--sun);color:var(--plum);border-radius:var(--r-md);padding:12px 18px;font-weight:600;text-align:center}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
