@font-face{font-family:satoshi;src:url(../media/Satoshi_Regular-s.p.09pbr55gst35t.otf)format("opentype");font-display:swap;font-weight:400;font-style:normal}@font-face{font-family:satoshi;src:url(../media/Satoshi_Medium-s.p.34gvz41culobd.otf)format("opentype");font-display:swap;font-weight:500;font-style:normal}@font-face{font-family:satoshi;src:url(../media/Satoshi_Bold-s.p.277jzqys-f9y3.otf)format("opentype");font-display:swap;font-weight:700;font-style:normal}@font-face{font-family:satoshi;src:url(../media/Satoshi_Black-s.p.2vp14rhbw7hb5.otf)format("opentype");font-display:swap;font-weight:900;font-style:normal}@font-face{font-family:satoshi Fallback;src:local(Arial);ascent-override:102.23%;descent-override:24.29%;line-gap-override:10.12%;size-adjust:98.8%}.XHsCoW_className{font-family:satoshi,satoshi Fallback}.XHsCoW_variable{--font-satoshi:"satoshi", "satoshi Fallback"}
:root{--color-bg:#f5f4ef;--color-surface:#fff;--color-surface-soft:#eeece5;--color-text:#22231f;--color-text-muted:#666961;--color-border:#ddddd5;--color-accent:#5d50dc;--color-accent-dark:#493dbf;--color-accent-soft:#ebe9ff;--color-success:#246345;--color-success-soft:#e0f3e8;--color-piano:#1c1e1b;--shadow-card:0 1px 2px #181a160d, 0 12px 36px #181a160f}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-satoshi), system-ui, sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;font-size:16px}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{color:inherit}a{color:inherit;text-decoration:none}::selection{color:#19182a;background:#c9c4ff}:focus-visible{outline-offset:3px;outline:3px solid #2c67d9}.skip-link{z-index:100;background:var(--color-text);color:#fff;border-radius:10px;padding:10px 14px;position:fixed;inset-block-start:12px;inset-inline-start:12px;transform:translateY(-180%)}.skip-link:focus{transform:translateY(0)}.app-shell{grid-template-columns:116px minmax(0,1fr);min-height:100vh;display:grid}.sidebar{z-index:30;border-inline-end:1px solid var(--color-border);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#ffffffbd;flex-direction:column;align-items:center;height:100vh;min-height:100vh;padding:26px 14px 22px;display:flex;position:sticky;inset-block-start:0}.brand,.mobile-brand{letter-spacing:-.05em;align-items:center;gap:10px;font-size:22px;font-weight:900;display:inline-flex}.sidebar .brand{flex-direction:column;gap:7px;font-size:17px}.logo-mark{background:var(--color-accent);border-radius:13px;justify-content:center;align-items:flex-end;gap:3px;width:42px;height:42px;display:inline-flex;position:relative;overflow:hidden;box-shadow:inset 0 0 0 1px #ffffff2e,0 5px 13px #3f31b938}.logo-mark span{background:#fff;border-radius:5px 5px 2px 2px;width:6px;display:block;transform:translateY(5px)}.logo-mark span:first-child{height:20px}.logo-mark span:nth-child(2){height:28px}.logo-mark span:nth-child(3){height:16px}.side-nav{flex-direction:column;flex:1;gap:8px;width:100%;margin-block-start:56px;display:flex}.nav-item{min-height:66px;color:var(--color-text-muted);border-radius:16px;flex-direction:column;justify-content:center;align-items:center;gap:5px;font-size:12px;font-weight:700;transition-property:color,background-color,transform;transition-duration:.13s;display:flex}.nav-item svg{stroke-width:2px;width:21px}.nav-item.active{background:var(--color-accent-soft);color:var(--color-accent-dark)}.main-content{width:100%;min-width:0;padding:0 clamp(20px,2.5vw,48px) 56px}.topbar{justify-content:space-between;align-items:center;min-height:104px;display:flex}.topbar h1{letter-spacing:-.035em;margin:2px 0 0;font-size:24px;line-height:1.15}.eyebrow{color:var(--color-text-muted);letter-spacing:.09em;text-transform:uppercase;margin:0;font-size:12px;font-weight:700;line-height:1.2}.topbar-actions{align-items:center;gap:12px;display:flex}.streak-pill{border:1px solid var(--color-border);min-height:46px;color:var(--color-text-muted);background:#ffffffb8;border-radius:99px;align-items:center;gap:9px;padding-inline:16px;font-size:14px;display:flex}.streak-pill strong{color:var(--color-text);font-variant-numeric:tabular-nums}.streak-pill svg{color:#cf542f;fill:#f2a181;width:18px}.profile-button{background:var(--color-text);color:#fff;cursor:pointer;border:0;border-radius:50%;place-items:center;width:46px;height:46px;display:grid}.profile-button svg{width:22px}.mobile-brand{display:none}.overview-grid{grid-template-columns:minmax(0,1.55fr) minmax(310px,.72fr);gap:20px;display:grid}.welcome-card,.progress-card,.course-card,.lesson-card,.game-card,.ear-card,.settings-card,.next-up{box-shadow:var(--shadow-card);border-radius:28px}.welcome-card{background:var(--color-accent);color:#fff;min-height:270px;padding:clamp(28px,4vw,50px);position:relative;overflow:hidden}.welcome-copy{z-index:2;max-width:610px;position:relative}.light-badge{align-items:center;gap:7px;margin-block-end:18px;font-size:13px;font-weight:700;display:inline-flex}.light-badge svg{width:16px}.welcome-card h2{letter-spacing:-.055em;text-wrap:balance;max-width:560px;margin:0;font-size:clamp(34px,4vw,58px);font-weight:700;line-height:1.02}.welcome-card p{color:#ffffffd4;text-wrap:pretty;max-width:570px;margin:16px 0 24px;font-size:16px;line-height:1.55}.primary-button,.next-button,.hear-button{cursor:pointer;border:0;border-radius:13px;justify-content:center;align-items:center;gap:9px;min-height:46px;font-size:14px;font-weight:700;transition-property:transform,background-color,color;transition-duration:.13s;display:inline-flex}.primary-button:active,.next-button:active:not(:disabled),.hear-button:active,.profile-button:active,.keyboard-controls button:active{transform:scale(.96)}.primary-button{color:var(--color-accent-dark);background:#fff;padding-inline:18px;box-shadow:0 8px 22px #18144b33}.primary-button svg{width:17px}.hero-notes{pointer-events:none;position:absolute;inset:0}.note{z-index:1;color:#ffffff2e;place-items:center;font-size:92px;font-weight:700;line-height:1;display:grid;position:absolute}.note-one{inset-block-start:24px;inset-inline-end:12%;transform:rotate(12deg)}.note-two{font-size:52px;inset-block-end:10px;inset-inline-end:31%;transform:rotate(-15deg)}.orbit{border:1px solid #ffffff24;border-radius:50%;position:absolute}.orbit-one{width:260px;height:260px;inset-block-start:-90px;inset-inline-end:-40px}.orbit-two{width:380px;height:380px;inset-block-start:-150px;inset-inline-end:-95px}.progress-card{background:var(--color-surface);flex-direction:column;min-height:270px;padding:28px;display:flex}.course-card{background:var(--color-surface);margin-block-start:20px;padding:clamp(20px,3vw,34px);scroll-margin-block-start:18px}.route-card{margin-block-start:0}.course-practice-link{background:var(--color-text);color:#fff;border-radius:13px;justify-content:center;align-items:center;gap:8px;min-height:46px;margin-block-start:18px;padding-inline:18px;font-size:13px;font-weight:700;transition-property:transform,background-color;transition-duration:.13s;display:inline-flex}.course-practice-link:active{transform:scale(.96)}.course-practice-link svg{width:16px}.keyboard-page-heading{margin-block-end:28px}.section-heading{justify-content:space-between;align-items:flex-start;gap:24px;display:flex}.section-heading h2{letter-spacing:-.045em;text-wrap:balance;margin:6px 0 8px;font-size:clamp(26px,3vw,38px);line-height:1.1}.section-heading p:last-child,.lesson-outcome{max-width:64ch;color:var(--color-text-muted);text-wrap:pretty;margin:0;line-height:1.5}.course-duration{background:var(--color-surface-soft);min-height:40px;color:var(--color-text-muted);border-radius:99px;flex:none;align-items:center;gap:7px;padding-inline:13px;font-size:12px;font-weight:700;display:inline-flex}.course-duration svg{width:16px}.phase-tabs{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-block:28px 18px;display:grid}.phase-tabs button{border:1px solid var(--color-border);text-align:start;cursor:pointer;background:#f8f7f3;border-radius:17px;min-width:0;min-height:96px;padding:14px;transition-property:border-color,background-color,transform;transition-duration:.13s}.phase-tabs button:active,.week-card:active,.start-drill-button:active,.drill-topline button:active,.session-timer button:active,.midi-actions button:active,.hand-setting label:active{transform:scale(.96)}.phase-tabs button[aria-pressed=true]{background:var(--color-accent-soft);border-color:#8f86e8}.phase-tabs span,.phase-tabs strong,.phase-tabs small{display:block}.phase-tabs span{color:var(--color-text-muted);letter-spacing:.07em;text-transform:uppercase;font-size:10px;font-weight:700}.phase-tabs strong{margin-block:5px 2px;font-size:14px;line-height:1.25}.phase-tabs small{color:var(--color-text-muted);font-size:11px}.phase-summary{background:var(--color-text);color:#fff;border-radius:17px;align-items:center;gap:14px;margin-block-end:12px;padding:16px 18px;display:flex}.phase-number{color:#a9a1ff;background:#373a34;border-radius:13px;flex:none;place-items:center;width:44px;height:44px;font-size:18px;font-weight:900;display:grid}.phase-summary h3{margin:0 0 3px;font-size:16px}.phase-summary p{color:#c8cbc4;margin:0;font-size:13px;line-height:1.4}.week-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.week-card{border:1px solid var(--color-border);text-align:start;cursor:pointer;background:#fff;border-radius:17px;min-height:152px;padding:17px;transition-property:border-color,background-color,transform;transition-duration:.13s}.week-card.selected{background:#f4f2ff;border-color:#8f86e8;box-shadow:inset 0 0 0 1px #8f86e8}.week-card-top{color:var(--color-text-muted);letter-spacing:.06em;text-transform:uppercase;justify-content:space-between;align-items:center;font-size:11px;font-weight:700;display:flex}.week-card-top svg{width:17px;color:var(--color-success)}.week-card>strong{margin-block:17px 5px;font-size:16px;line-height:1.25;display:block}.week-card>small{color:var(--color-text-muted);text-wrap:pretty;font-size:12px;line-height:1.42;display:block}.card-heading-row{justify-content:space-between;align-items:flex-start;display:flex}.card-heading-row h2{letter-spacing:-.035em;margin:6px 0 0;font-size:22px}.card-heading-row>svg{width:23px;color:var(--color-accent)}.progress-summary{align-items:center;gap:20px;margin-block:auto;display:flex}.progress-summary strong{margin-block-end:4px;font-size:17px;display:block}.progress-summary p{max-width:22ch;color:var(--color-text-muted);text-wrap:pretty;margin:0;font-size:13px;line-height:1.45}.progress-ring{--progress:0%;background:conic-gradient(var(--color-accent) var(--progress), var(--color-surface-soft) 0);border-radius:50%;flex:none;place-items:center;width:78px;height:78px;display:grid}.progress-ring:before{content:"";background:#fff;border-radius:50%;grid-area:1/1;width:60px;height:60px}.progress-ring span{z-index:1;font-variant-numeric:tabular-nums;grid-area:1/1;font-size:15px;font-weight:700}.week-row{grid-template-columns:repeat(7,1fr);gap:7px;display:grid}.day{aspect-ratio:1;background:var(--color-surface-soft);color:var(--color-text-muted);border-radius:10px;place-items:center;font-size:11px;font-weight:700;display:grid}.day.complete{background:var(--color-accent-soft);color:var(--color-accent-dark)}.day svg{width:14px}.lesson-card{background:var(--color-surface);margin-block-start:20px;padding:clamp(20px,3vw,34px);scroll-margin-block-start:18px}.lesson-header{justify-content:space-between;align-items:flex-end;gap:24px;display:flex}.lesson-header h2{letter-spacing:-.045em;margin:6px 0 0;font-size:clamp(26px,3vw,38px);line-height:1.1}.lesson-outcome{margin-block-start:9px;font-size:14px}.session-timer{background:var(--color-text);color:#fff;border-radius:17px;justify-content:space-between;align-items:center;gap:12px;min-width:170px;padding:10px 11px 10px 16px;display:flex}.session-timer>span{font-variant-numeric:tabular-nums;letter-spacing:-.025em;font-size:22px;font-weight:700}.session-timer>div{gap:6px;display:flex}.session-timer button{color:#fff;cursor:pointer;background:#393c36;border:0;border-radius:10px;place-items:center;width:36px;height:36px;transition-property:transform,background-color;transition-duration:.13s;display:grid}.session-timer button svg{width:15px}.practice-layout{grid-template-columns:minmax(0,1.15fr) minmax(320px,.85fr);gap:16px;margin-block:28px 18px;display:grid}.routine-panel,.drill-panel{background:#f6f5f1;border-radius:22px}.routine-panel{padding:22px}.routine-heading{justify-content:space-between;align-items:center;gap:16px;margin-block-end:13px;display:flex}.routine-heading h3{letter-spacing:-.03em;margin:4px 0 0;font-size:20px}.routine-heading>span{color:var(--color-text-muted);font-variant-numeric:tabular-nums;font-size:12px;font-weight:700}.routine-list{gap:8px;display:grid}.routine-list label{border:1px solid var(--color-border);cursor:pointer;background:#fff;border-radius:15px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;min-height:70px;padding:11px 13px;transition-property:border-color,background-color;transition-duration:.13s;display:grid;position:relative}.routine-list label.complete{background:var(--color-success-soft);border-color:#9cc7ac}.routine-list input{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.routine-list label:focus-within{outline-offset:3px;outline:3px solid #2c67d9}.routine-check{color:#fff;background:#fff;border:1px solid #b9bbb3;border-radius:8px;place-items:center;width:24px;height:24px;display:grid}.complete .routine-check{border-color:var(--color-success);background:var(--color-success)}.routine-check svg{stroke-width:2.5px;width:14px}.routine-copy strong,.routine-copy small{display:block}.routine-copy strong{font-size:13px}.routine-copy small{color:var(--color-text-muted);text-wrap:pretty;margin-block-start:3px;font-size:11px;line-height:1.4}.routine-minutes{color:var(--color-text-muted);white-space:nowrap;font-size:11px;font-weight:700}.drill-panel{background:var(--color-text);color:#fff;text-align:center;flex-direction:column;align-items:center;min-height:480px;padding:22px;display:flex}.drill-topline{justify-content:space-between;align-items:center;gap:12px;width:100%;display:flex}.drill-topline>span{color:#bfc2ba;align-items:center;gap:6px;font-size:11px;font-weight:700;display:inline-flex}.drill-topline>span svg{width:15px}.drill-topline button{color:#fff;cursor:pointer;background:#30332e;border:1px solid #4b4e47;border-radius:10px;min-height:36px;padding-inline:11px;font-size:11px;font-weight:700;transition-property:transform,background-color,border-color;transition-duration:.13s}.drill-topline button.active{background:#4c43a2;border-color:#8f86e8}.drill-note{color:#bdb6ff;background:#383b35;border-radius:31px;place-items:center;width:104px;height:104px;margin-block:35px 22px;display:grid;box-shadow:inset 0 0 0 1px #4b4e47}.drill-note strong{letter-spacing:-.07em;font-size:48px;line-height:1}.drill-note sup{margin-inline-start:2px;font-size:14px}.drill-note.complete{background:var(--color-success);color:#fff}.drill-note>svg{width:42px;height:42px}.drill-copy{max-width:42ch}.drill-copy .eyebrow{color:#aaa9a3}.drill-copy h3{letter-spacing:-.035em;text-wrap:balance;margin:6px 0;font-size:22px}.drill-copy>p:last-child{color:#bfc2ba;min-height:38px;margin:0;font-size:12px;line-height:1.45}.drill-progress{background:#3d403a;border-radius:99px;width:100%;height:7px;margin-block-start:auto;overflow:hidden}.drill-progress span{border-radius:inherit;background:#9188ff;height:100%;transition:width .15s cubic-bezier(.2,0,0,1);display:block}.drill-stats{color:#aaada6;font-variant-numeric:tabular-nums;justify-content:space-between;gap:12px;width:100%;margin-block:8px 16px;font-size:10px;display:flex}.start-drill-button{width:100%;min-height:46px;color:var(--color-text);cursor:pointer;background:#fff;border:0;border-radius:13px;justify-content:center;align-items:center;gap:8px;font-size:13px;font-weight:700;transition-property:transform,background-color;transition-duration:.13s;display:inline-flex}.start-drill-button svg{width:16px}.staff-prompt{width:min(100%,240px);color:var(--color-text);background:#fff;border-radius:20px;margin-block:28px 14px;padding:12px 14px 5px}.staff-prompt>span{color:var(--color-text-muted);letter-spacing:.08em;text-transform:uppercase;font-size:10px;font-weight:700}.staff-prompt svg{width:100%;height:112px;display:block;overflow:visible}.staff-prompt svg line{stroke:#8a8d84;stroke-width:1.2px}.staff-prompt svg ellipse{fill:var(--color-text);transform-origin:99px;transform:rotate(-17deg)}.staff-prompt svg .stem{stroke:var(--color-text);stroke-width:2px}.staff-prompt svg .ledger{stroke:var(--color-text);stroke-width:1.4px}.microphone-practice-bar{background:#f6f5f1;border:1px solid #d8d6cf;border-radius:19px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:16px;margin-block-end:18px;padding:17px 18px;display:grid}.microphone-practice-bar.listening{background:#edf7f1;border-color:#95bea5}.microphone-practice-bar.error,.microphone-practice-bar.unsupported{background:#fff3ef;border-color:#d9a998}.microphone-practice-icon{width:48px;height:48px;color:var(--color-text-muted);background:#fff;border-radius:15px;place-items:center;display:grid;box-shadow:0 4px 14px #1e1e1912}.listening .microphone-practice-icon{color:var(--color-success)}.error .microphone-practice-icon,.unsupported .microphone-practice-icon{color:#873d27}.microphone-practice-icon svg{width:21px}.microphone-practice-copy{min-width:0}.microphone-practice-copy h3{margin:4px 0 2px;font-size:16px}.microphone-practice-copy>p:not(.eyebrow){color:var(--color-text-muted);margin:0;font-size:12px;line-height:1.45}.microphone-practice-copy .microphone-error{color:#713a29;margin-block-start:6px}.microphone-practice-copy>small{color:var(--color-text-muted);margin-block-start:6px;font-size:10px;line-height:1.4;display:block}.microphone-meter{background:#deddd6;border-radius:99px;width:min(100%,380px);height:5px;margin-block-start:9px;overflow:hidden}.microphone-meter span{border-radius:inherit;background:var(--color-success);height:100%;transition:width 80ms linear;display:block}.microphone-practice-bar>button{background:var(--color-text);color:#fff;cursor:pointer;border:0;border-radius:12px;min-height:44px;padding-inline:16px;font-size:12px;font-weight:700;transition-property:transform,background-color;transition-duration:.13s}.microphone-practice-bar.listening>button{background:var(--color-success)}.microphone-practice-bar>button:active:not(:disabled){transform:scale(.96)}.microphone-practice-bar>button:disabled{cursor:wait;opacity:.68}.lesson-progress{width:min(210px,35%)}.lesson-progress>span{color:var(--color-text-muted);text-align:end;font-variant-numeric:tabular-nums;margin-block-end:7px;font-size:12px;font-weight:700;display:block}.lesson-progress-track{background:var(--color-surface-soft);border-radius:99px;height:7px;overflow:hidden}.lesson-progress-track span{border-radius:inherit;background:var(--color-accent);height:100%;transition:width .2s cubic-bezier(.2,0,0,1);display:block}.challenge{background:var(--color-accent-soft);border-radius:20px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:16px;margin-block:28px 18px;padding:18px;transition-property:background-color;transition-duration:.15s;display:grid}.challenge-correct{background:var(--color-success-soft)}.challenge-icon{width:50px;height:50px;color:var(--color-accent-dark);background:#fff;border-radius:15px;place-items:center;display:grid;box-shadow:0 4px 14px #1e1e1912}.challenge-correct .challenge-icon{color:var(--color-success)}.challenge-icon svg{width:22px}.challenge-copy>p{color:var(--color-text-muted);letter-spacing:.07em;text-transform:uppercase;margin:0 0 2px;font-size:11px;font-weight:700}.challenge-copy h3{letter-spacing:-.025em;margin:0;font-size:19px;line-height:1.25}.challenge-copy h3 span{color:var(--color-accent-dark)}.challenge-copy>span{color:var(--color-text-muted);margin-block-start:3px;font-size:13px;line-height:1.45;display:block}.next-button{background:var(--color-text);color:#fff;padding-inline:17px}.next-button svg{width:16px}.next-button:disabled{color:#777970;cursor:not-allowed;background:#d5d4ce}.keyboard-stage{background:var(--color-piano);border-radius:23px;overflow:hidden;box-shadow:0 18px 40px #14151324}.keyboard-toolbar{color:#fff;justify-content:space-between;align-items:center;gap:20px;min-height:64px;padding-inline:20px;display:flex}.keyboard-toolbar>div{align-items:center;gap:10px;display:flex}.keyboard-toolbar svg{width:18px}.keyboard-toolbar span{font-size:14px;font-weight:700}.keyboard-toolbar .range-label{color:#9b9f96;font-size:12px;font-weight:500}.sample-status{color:#c8cbc4;white-space:nowrap;background:#2a2d28;border-radius:99px;align-items:center;gap:6px;margin-inline-start:4px;padding:5px 9px;display:inline-flex;font-size:10px!important;font-weight:600!important}.sample-status i{background:#7b8177;border-radius:50%;width:6px;height:6px}.sample-status.sampled i{background:#79d39c}.sample-status.loading i{background:#e3b964}.sample-status.fallback{color:#ffd5c6}.sample-status.fallback i{background:#e47d59}.keyboard-controls{align-items:center;gap:8px;display:flex}.keyboard-controls button{color:#fff;cursor:pointer;background:#2a2d28;border:1px solid #444740;border-radius:10px;place-items:center;width:36px;height:36px;transition-property:transform,background-color;transition-duration:.13s;display:grid}.keyboard-controls button svg{width:16px}.label-toggle{color:#d6d8d2;cursor:pointer;align-items:center;gap:8px;min-height:40px;margin-inline-end:4px;font-size:12px;font-weight:600;display:flex}.label-toggle input{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.label-toggle>span{background:#555850;border-radius:99px;width:34px;height:20px;transition:background-color .13s;position:relative}.label-toggle>span:after{content:"";background:#fff;border-radius:50%;width:14px;height:14px;transition:transform .13s cubic-bezier(.2,0,0,1);position:absolute;inset-block-start:3px;inset-inline-start:3px}.label-toggle input:checked+span{background:#7e73ef}.label-toggle input:checked+span:after{transform:translate(14px)}.label-toggle input:focus-visible+span{outline-offset:3px;outline:3px solid #7ca4ff}.piano-wrap{padding-block-end:14px;position:relative}.scroll-cue{z-index:8;color:#c4c7bf;pointer-events:none;background:#141613c7;border-radius:99px;padding:5px 10px;font-size:10px;font-weight:600;position:absolute;inset-block-start:8px;inset-inline-start:50%;transform:translate(-50%)}.piano-viewport{overscroll-behavior-inline:contain;scrollbar-color:#5f625b #2b2e29;scrollbar-width:thin;overflow-x:auto;container-type:inline-size}.piano-viewport::-webkit-scrollbar{height:8px}.piano-viewport::-webkit-scrollbar-track{background:#2b2e29}.piano-viewport::-webkit-scrollbar-thumb{background:#656861;border-radius:99px}.piano{--minimum-white-key-width:32px;--white-key-width:clamp(var(--minimum-white-key-width), calc(100cqw / var(--visible-white-keys)), 58px);--black-key-width:calc(var(--white-key-width) * .64);--visible-white-keys:52;width:calc(var(--visible-white-keys) * var(--white-key-width));background:#d4d3ce;height:224px;margin-inline:auto;position:relative}.white-keys{height:216px;display:flex}.piano-key{cursor:pointer;-webkit-user-select:none;user-select:none;touch-action:manipulation;border:0;justify-content:flex-end;align-items:center;display:flex;position:relative}.white-key{width:var(--white-key-width);flex:0 0 var(--white-key-width);color:#6a6d65;background:linear-gradient(#fff 0% 78%,#f1f0eb 100%);border-inline-end:1px solid #c6c5bf;border-radius:0 0 7px 7px;flex-direction:column;height:216px;padding-block-end:11px;box-shadow:inset 0 -5px #deddd7}.white-key:first-child{border-inline-start:1px solid #c6c5bf}.black-key{z-index:3;width:var(--black-key-width);color:#d5d7d2;background:linear-gradient(100deg,#20221f 0%,#343732 68%,#171816 100%);border-radius:0 0 6px 6px;flex-direction:column;height:138px;padding-block-end:9px;position:absolute;inset-block-start:0;box-shadow:inset 0 -6px #0e0f0d,0 6px 7px #00000047}.piano-key.selected.white-key{color:var(--color-accent-dark);background:linear-gradient(#f0efff 0%,#ddd9ff 100%);box-shadow:inset 0 -5px #afa7ff}.piano-key.selected.black-key{background:linear-gradient(110deg,#5d50dc 0%,#786ced 100%);box-shadow:inset 0 -6px #3e32ac,0 6px 7px #00000040}.piano-key.microphone-detected.white-key{background:linear-gradient(#f0efff 0%,#d7d2ff 100%);box-shadow:inset 0 -5px #8e84f5,inset 0 0 0 3px #6f63e8}.piano-key.microphone-detected.black-key{background:linear-gradient(110deg,#6b5ee8 0%,#8a80f5 100%);box-shadow:inset 0 -6px #4337b5,0 0 0 3px #bcb6ff,0 6px 7px #00000040}.piano-key.target.white-key{z-index:2;outline-offset:-5px;outline:4px solid #e09b2d}.piano-key.target.black-key{z-index:5;outline-offset:-5px;outline:4px solid #f2bd68}.piano-key.target:before{content:"Next";z-index:2;color:#fff;background:#6f4510;border-radius:5px;padding:3px 5px;font-size:8px;font-weight:700;position:absolute;inset-block-end:48px;inset-inline-start:50%;transform:translate(-50%)}.black-key.target:before{inset-block-end:43px}.piano-key:active{transform:translateY(3px)}.piano-key:focus-visible{z-index:6;outline-offset:-4px;outline:3px solid #2c67d9}.key-label{align-items:baseline;gap:1px;font-size:12px;display:flex}.key-label strong{font-size:13px}.key-label small{font-size:9px}.black-key-label{margin-block-end:4px;font-size:9px;font-weight:600}.piano-key kbd{color:#53564f;background:#e4e3de;border-radius:5px;place-items:center;width:20px;height:20px;margin-block-start:7px;font-family:inherit;font-size:9px;font-weight:700;display:grid}.black-key kbd{color:#fff;background:#4c4f49;width:18px;height:18px;margin-block-start:3px}.note-detail-row{justify-content:space-between;align-items:center;gap:24px;padding:24px 4px 4px;display:flex}.selected-note{align-items:center;gap:16px;min-width:0;display:flex}.note-avatar{background:var(--color-accent-soft);width:62px;height:62px;color:var(--color-accent-dark);letter-spacing:-.05em;border-radius:18px;flex:none;place-items:center;font-size:25px;font-weight:900;display:grid}.note-avatar sup{margin-inline-start:2px;font-size:11px}.selected-note h3{letter-spacing:-.02em;margin:3px 0;font-size:19px}.selected-note h3 span{color:var(--color-text-muted);font-variant-numeric:tabular-nums;margin-inline-start:7px;font-size:13px;font-weight:500}.selected-note>div>p:last-child{color:var(--color-text-muted);margin:0;font-size:13px;line-height:1.4}.hear-button{background:var(--color-surface-soft);min-width:max-content;padding-inline:16px}.hear-button svg{width:17px}.shortcut-note{color:var(--color-text-muted);background:#f6f5f1;border-radius:14px;align-items:flex-start;gap:10px;margin-block-start:20px;padding:14px 16px;font-size:12px;line-height:1.5;display:flex}.shortcut-note svg{flex:none;width:17px;margin-block-start:1px}.shortcut-note kbd{color:var(--color-text);font-family:inherit;font-weight:700}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.game-card{background:var(--color-surface);padding:clamp(20px,3vw,34px);overflow:hidden}.game-header{justify-content:space-between;align-items:flex-start;gap:24px;margin-block-end:24px;display:flex}.game-header h2{letter-spacing:-.055em;text-wrap:balance;margin:6px 0 7px;font-size:clamp(30px,4vw,46px);line-height:1.05}.game-header>div:first-child>p:last-child{max-width:62ch;color:var(--color-text-muted);text-wrap:pretty;margin:0;line-height:1.5}.game-mic-status{border:1px solid var(--color-border);min-width:250px;min-height:58px;color:var(--color-text-muted);background:#f6f5f1;border-radius:17px;align-items:center;gap:11px;padding:10px 14px;display:flex}.game-mic-status.listening{background:var(--color-success-soft);color:var(--color-success);border-color:#94c2a6}.game-mic-status.error,.game-mic-status.unsupported{color:#873d27;background:#fff3ef;border-color:#d9a998}.game-mic-status>svg{flex:none;width:20px}.game-mic-status span,.game-mic-status strong,.game-mic-status small{display:block}.game-mic-status strong{font-size:12px}.game-mic-status small{color:var(--color-text-muted);margin-block-start:2px;font-size:10px;font-weight:500}.game-intro{background:var(--color-text);color:#fff;border-radius:22px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:18px;padding:20px;display:grid}.game-intro-icon{color:#ada6ff;background:#393c36;border-radius:18px;place-items:center;width:58px;height:58px;display:grid}.game-intro-icon svg{width:27px}.game-intro .eyebrow{color:#aeb1aa}.game-intro h3{letter-spacing:-.03em;margin:4px 0;font-size:20px}.game-intro p:last-child{color:#bdc0b8;max-width:64ch;margin:0;font-size:12px;line-height:1.5}.game-rule-pills{flex-wrap:wrap;justify-content:flex-end;gap:7px;max-width:360px;display:flex}.game-rule-pills span{color:#e1e3de;white-space:nowrap;background:#343730;border-radius:99px;align-items:center;gap:6px;min-height:32px;padding-inline:10px;font-size:10px;font-weight:700;display:inline-flex}.game-rule-pills svg{color:#a9a1ff;width:13px}.difficulty-picker{border:0;min-width:0;margin:28px 0 0;padding:0}.difficulty-picker legend{margin-block-end:11px;font-size:13px;font-weight:700}.difficulty-picker>div{grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;display:grid}.difficulty-picker button{border:1px solid var(--color-border);min-width:0;min-height:150px;color:var(--color-text);text-align:start;cursor:pointer;background:#f8f7f3;border-radius:18px;padding:15px;transition-property:transform,border-color,background-color;transition-duration:.13s}.difficulty-picker button:active{transform:scale(.96)}.difficulty-picker button.selected{background:var(--color-accent-soft);border-color:#8f86e8}.difficulty-picker button>span{color:var(--color-accent-dark);letter-spacing:.07em;text-transform:uppercase;font-size:11px;font-weight:800;display:block}.difficulty-picker button strong{margin-block-start:8px;font-size:15px;line-height:1.25;display:block}.difficulty-picker button small{min-height:46px;color:var(--color-text-muted);margin-block-start:5px;font-size:11px;line-height:1.4;display:block}.difficulty-picker button em{color:var(--color-text-muted);margin-block-start:10px;font-size:10px;font-style:normal;font-weight:700;display:block}.game-start-panel{border:1px solid var(--color-border);background:#f6f5f1;border-radius:20px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:16px;margin-block-start:18px;padding:18px;display:grid}.game-start-panel.listening{background:#edf7f1;border-color:#9cc6ac}.game-level-mark{background:var(--color-accent);color:#fff;border-radius:15px;place-items:center;width:50px;height:50px;font-size:20px;font-weight:900;display:grid}.game-start-panel h3{margin:4px 0 2px;font-size:17px}.game-start-panel p:not(.eyebrow){color:var(--color-text-muted);margin:0;font-size:12px;line-height:1.45}.game-start-panel .game-mic-error{color:#713a29;margin-block-start:5px}.game-primary-button,.game-secondary-button,.game-stop-button{cursor:pointer;border:0;border-radius:13px;justify-content:center;align-items:center;gap:8px;min-height:46px;padding-inline:18px;font-size:13px;font-weight:700;transition-property:transform,background-color;transition-duration:.13s;display:inline-flex}.game-primary-button{background:var(--color-text);color:#fff}.game-primary-button svg{width:17px}.game-primary-button:active:not(:disabled),.game-secondary-button:active,.game-stop-button:active{transform:scale(.96)}.game-primary-button:disabled{cursor:wait;opacity:.62}.game-secondary-button{border:1px solid var(--color-border);color:var(--color-text);background:#fff}.game-stop-button{color:#d5d7d2;background:#343730;min-height:38px;padding-inline:13px;font-size:11px}.game-countdown{background:var(--color-text);color:#fff;text-align:center;border-radius:24px;align-content:center;place-items:center;min-height:560px;display:grid;position:relative;overflow:hidden}.game-countdown p{z-index:1;color:#c5c8c0;letter-spacing:.1em;text-transform:uppercase;margin:0;font-size:13px;font-weight:700}.game-countdown>strong{z-index:1;color:#aaa2ff;letter-spacing:-.08em;font-variant-numeric:tabular-nums;margin-block:-4px;font-size:clamp(120px,20vw,210px);line-height:1}.game-countdown>span:last-child{z-index:1;color:#aeb1aa;font-size:12px}.countdown-rings span{border:1px solid #aca3ff38;border-radius:50%;width:300px;height:300px;position:absolute;inset-block-start:50%;inset-inline-start:50%;transform:translate(-50%,-50%)}.countdown-rings span:last-child{border-color:#aca3ff1a;width:480px;height:480px}.game-play-area{background:var(--color-text);color:#fff;border-radius:24px;overflow:hidden}.game-hud{border-block-end:1px solid #393c36;grid-template-columns:auto auto minmax(170px,1fr) auto;align-items:center;gap:24px;min-height:76px;padding-inline:22px;display:grid}.game-hearts{gap:5px;display:flex}.game-hearts svg{color:#ee735e;width:18px;transition:color .13s,opacity .13s,transform .13s}.game-hearts svg.lost{color:#555850;opacity:.55;transform:scale(.82)}.game-score span,.game-score strong{display:block}.game-score span{color:#9fa29b;letter-spacing:.08em;text-transform:uppercase;font-size:9px;font-weight:700}.game-score strong{font-variant-numeric:tabular-nums;margin-block-start:1px;font-size:18px}.game-progress>span{color:#b7bab2;text-align:end;font-variant-numeric:tabular-nums;margin-block-end:6px;font-size:10px;font-weight:700;display:block}.game-progress>div{background:#41443e;border-radius:99px;height:5px;overflow:hidden}.game-progress i{border-radius:inherit;background:#9288ff;height:100%;transition:width .13s cubic-bezier(.2,0,0,1);display:block}.game-streak{color:#c8c2ff;align-items:center;gap:7px;font-size:11px;display:flex}.game-streak svg{width:16px}.game-streak strong{color:#fff;font-variant-numeric:tabular-nums}.game-stage{background:radial-gradient(circle at 50% 45%,#34304f 0%,#23251f 42%,#1c1e1b 75%);grid-template-columns:minmax(150px,.55fr) minmax(260px,1fr) minmax(170px,.55fr);align-items:center;gap:24px;min-height:430px;padding:clamp(30px,5vw,64px);display:grid;position:relative}.game-time-ring{background:radial-gradient(circle, #22241f 57%, transparent 59%), conic-gradient(#8f84ff var(--game-time), #41443e 0);border-radius:50%;justify-self:center;place-items:center;width:132px;height:132px;display:grid}.game-time-ring>span{letter-spacing:-.04em;font-variant-numeric:tabular-nums;font-size:30px;font-weight:900}.game-time-ring small{color:#aeb1aa;margin-inline-start:2px;font-size:11px}.game-target-copy{text-align:center}.game-target-copy .eyebrow{color:#aca6e8}.game-target-copy h3{color:#d7d9d3;margin:16px 0 0;font-size:15px;font-weight:600}.game-note-orb{background:linear-gradient(145deg,#7165eb,#4b3fc2);border:1px solid #ffffff29;border-radius:50%;align-content:center;place-items:center;width:clamp(180px,20vw,240px);height:clamp(180px,20vw,240px);margin:16px auto 0;display:grid;box-shadow:0 0 0 18px #7e73ef14,0 24px 70px #0d0c1e6b,inset 0 1px #ffffff38}.game-note-orb strong{letter-spacing:-.08em;font-size:clamp(78px,10vw,124px);line-height:.85}.game-note-orb sup{letter-spacing:0;margin-inline-start:5px;font-size:24px}.game-note-orb span{color:#ddd9ff;letter-spacing:.1em;text-transform:uppercase;margin-block-start:17px;font-size:10px;font-weight:700}.game-listening{justify-self:stretch}.game-level{background:#41443e;border-radius:99px;height:7px;display:block;overflow:hidden}.game-level i{border-radius:inherit;background:#79d39c;height:100%;transition:width 80ms linear;display:block}.game-listening small{color:#aeb1aa;text-align:center;margin-block-start:8px;font-size:10px;line-height:1.4;display:block}.game-round-footer{border-block-start:1px solid #393c36;grid-template-columns:minmax(200px,1fr) auto auto;align-items:center;gap:16px;min-height:76px;padding:14px 18px;display:grid}.game-feedback{color:#c7cac3;font-size:12px;line-height:1.4}.game-history{gap:6px;display:flex}.game-history span{color:#d4d7d0;background:#343730;border-radius:9px;align-items:center;gap:4px;min-height:30px;padding-inline:8px;font-size:9px;font-weight:700;display:inline-flex}.game-history span.correct{color:#bfe6cd}.game-history span.wrong,.game-history span.missed{color:#ffd0c1}.game-history svg{width:11px}.game-result{text-align:center;background:radial-gradient(circle at 50% 32%,#edeaff 0%,#f8f7f3 46%,#eeece5 100%);border-radius:24px;flex-direction:column;justify-content:center;align-items:center;min-height:540px;padding:40px 24px;display:flex}.game-result-icon{background:var(--color-accent);color:#fff;border-radius:23px;place-items:center;width:76px;height:76px;margin-block-end:18px;display:grid;box-shadow:0 14px 30px #493dbf3d}.game-result.lost .game-result-icon{background:#873d27}.game-result-icon svg{width:34px}.game-result h3{letter-spacing:-.055em;text-wrap:balance;margin:7px 0;font-size:clamp(32px,5vw,50px);line-height:1.05}.game-result>p:not(.eyebrow){max-width:52ch;color:var(--color-text-muted);margin:0;line-height:1.5}.game-result-stats{grid-template-columns:repeat(3,1fr);gap:10px;width:min(100%,520px);margin-block:30px;display:grid}.game-result-stats span{background:#ffffffc7;border-radius:16px;padding:16px}.game-result-stats strong,.game-result-stats small{display:block}.game-result-stats strong{font-variant-numeric:tabular-nums;font-size:24px}.game-result-stats small{color:var(--color-text-muted);text-transform:uppercase;margin-block-start:2px;font-size:10px;font-weight:700}.game-result>div:last-child{gap:9px;display:flex}.ear-card{background:var(--color-surface);margin-block-start:20px;padding:clamp(20px,3vw,34px);scroll-margin-block-start:18px}.ear-header{justify-content:space-between;align-items:flex-start;gap:24px;margin-block-end:24px;display:flex}.ear-header h2{letter-spacing:-.045em;text-wrap:balance;margin:6px 0 7px;font-size:clamp(26px,3vw,38px);line-height:1.1}.ear-header>div:first-child>p:last-child{max-width:58ch;color:var(--color-text-muted);text-wrap:pretty;margin:0;line-height:1.5}.ear-score{background:var(--color-surface-soft);text-align:center;border-radius:16px;min-width:92px;padding:12px 15px}.ear-score>span{color:var(--color-text-muted);letter-spacing:.08em;text-transform:uppercase;font-size:10px;font-weight:700;display:block}.ear-score strong{font-variant-numeric:tabular-nums;margin-block-start:2px;font-size:22px;display:block}.ear-score small{color:var(--color-text-muted);font-size:13px}.ear-training-grid{grid-template-columns:minmax(280px,.8fr) minmax(450px,1.35fr);gap:16px;display:grid}.mystery-note-card,.pitch-answer-card{border-radius:22px;min-height:320px}.mystery-note-card{background:var(--color-text);color:#fff;text-align:center;flex-direction:column;justify-content:center;align-items:center;padding:28px;display:flex;position:relative;overflow:hidden}.mystery-note-card:before,.mystery-note-card:after{content:"";pointer-events:none;border:1px solid #ffffff14;border-radius:50%;position:absolute}.mystery-note-card:before{width:250px;height:250px}.mystery-note-card:after{width:330px;height:330px}.sound-visualizer{z-index:1;align-items:center;gap:5px;height:64px;margin-block-end:18px;display:flex;position:relative}.sound-visualizer span{transform-origin:50%;background:#9288ff;border-radius:99px;width:5px;max-height:62px}.mystery-note-card>div:nth-child(2){z-index:1;position:relative}.mystery-note-card .eyebrow{color:#aaa9a3}.mystery-note-card h3{letter-spacing:-.035em;margin:5px 0;font-size:24px}.mystery-note-card p:last-child{color:#b7bab2;margin:0;font-size:13px}.mystery-play-button{z-index:1;min-height:46px;color:var(--color-text);cursor:pointer;background:#fff;border:0;border-radius:13px;justify-content:center;align-items:center;gap:9px;margin-block-start:22px;padding-inline:18px;font-size:14px;font-weight:700;transition-property:transform,background-color;transition-duration:.13s;display:inline-flex;position:relative}.mystery-play-button:active{transform:scale(.96)}.mystery-play-button svg{width:17px}.pitch-answer-card{background:#f6f5f1;flex-direction:column;padding:26px;display:flex}.answer-heading{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.answer-heading h3{letter-spacing:-.035em;margin:5px 0 0;font-size:22px}.answer-heading>span{color:var(--color-text-muted);white-space:nowrap;background:#fff;border-radius:99px;padding:6px 9px;font-size:10px;font-weight:700}.pitch-options{grid-template-columns:repeat(7,minmax(48px,1fr));gap:8px;margin-block:auto;padding-block:24px;display:grid}.pitch-options button{border:1px solid var(--color-border);cursor:pointer;background:#fff;border-radius:15px;min-width:0;min-height:78px;padding:8px 4px;transition-property:transform,border-color,background-color;transition-duration:.13s;position:relative}.pitch-options button strong{font-size:20px;display:block}.pitch-options button>span{color:var(--color-text-muted);font-size:11px}.pitch-options button>svg{width:13px;position:absolute;inset-block-start:6px;inset-inline-end:6px}.pitch-options button:disabled{cursor:default}.pitch-options button:disabled:not(.correct):not(.wrong){color:#767970;background:#ecebe6}.pitch-options button.correct{background:var(--color-success-soft);color:var(--color-success);border-color:#6aae86}.pitch-options button.wrong{color:#873d27;background:#fff0eb;border-color:#c9775e}.ear-feedback{min-height:42px;color:var(--color-text-muted);background:#fff;border-radius:11px;align-items:center;padding:10px 12px;display:flex}.ear-feedback.correct{background:var(--color-success-soft);color:var(--color-success)}.ear-feedback.incorrect{color:#713a29;background:#fff0eb}.ear-feedback p{align-items:center;gap:6px;margin:0;font-size:13px;line-height:1.45;display:flex}.ear-feedback svg{width:15px}.compare-feedback{justify-content:space-between;align-items:center;gap:16px;width:100%;display:flex}.compare-feedback>div{flex:none;gap:7px;display:flex}.compare-feedback button{color:#713a29;cursor:pointer;background:#fff;border:1px solid #dcaa99;border-radius:9px;min-height:34px;padding-inline:10px;font-size:11px;font-weight:700}.sample-credit{color:var(--color-text-muted);justify-content:space-between;align-items:center;gap:16px;padding:16px 3px 0;font-size:11px;line-height:1.45;display:flex}.sample-credit a{text-underline-position:from-font;text-decoration-skip-ink:auto;align-items:center;min-height:32px;font-weight:700;text-decoration:underline;text-decoration-thickness:from-font;display:inline-flex}.settings-card{background:var(--color-surface);margin-block-start:20px;padding:clamp(20px,3vw,34px);scroll-margin-block-start:18px}.settings-grid{grid-template-columns:minmax(0,1.65fr) minmax(260px,.65fr);align-items:end;gap:24px;display:grid}.hand-setting{border:0;min-width:0;margin:28px 0 0;padding:0}.hand-setting legend{margin-block-end:3px;font-size:13px;font-weight:700}.hand-setting>p{color:var(--color-text-muted);margin:0 0 11px;font-size:11px;line-height:1.4}.hand-setting>div{grid-template-columns:1fr 1fr;gap:8px;display:grid}.hand-setting label{border:1px solid var(--color-border);cursor:pointer;background:#f8f7f3;border-radius:16px;justify-content:space-between;align-items:center;gap:8px;min-height:72px;padding:12px;font-size:12px;font-weight:700;transition-property:transform,border-color,background-color;transition-duration:.13s;display:flex;position:relative}.hand-setting label.selected{background:var(--color-accent-soft);border-color:#8f86e8}.hand-setting label:focus-within{outline-offset:3px;outline:3px solid #2c67d9}.hand-setting input{clip:rect(0 0 0 0);clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}.hand-setting label svg{width:15px;color:var(--color-accent-dark)}.hand-setting>small{color:var(--color-text-muted);margin-block-start:8px;font-size:11px;display:block}.midi-panel{background:var(--color-text);color:#fff;border-radius:19px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:16px;margin-block-start:24px;padding:18px;display:grid}.midi-icon{color:#ada6ff;background:#393c36;border-radius:15px;place-items:center;width:48px;height:48px;display:grid}.midi-icon svg{width:21px}.midi-copy .eyebrow{color:#aeb1aa}.midi-copy h3{margin:4px 0 2px;font-size:16px}.midi-copy>p:not(.eyebrow){color:#bdc0b8;margin:0;font-size:12px;line-height:1.4}.midi-copy .midi-error{color:#ffd3c5;margin-block-start:7px}.midi-actions{flex-direction:column;align-items:stretch;gap:7px;max-width:300px;display:flex}.midi-actions button,.midi-actions select{border:1px solid #51544d;border-radius:11px;width:100%;min-height:42px;font-size:12px;font-weight:700}.midi-actions button{color:var(--color-text);cursor:pointer;background:#fff;border:0;padding-inline:15px;transition-property:transform,background-color;transition-duration:.13s}.midi-actions button:disabled{cursor:wait;opacity:.68}.midi-actions select{color:#fff;background:#30332e;padding-inline:10px}.midi-connected{color:#bfe6cd;justify-content:center;align-items:center;gap:6px;font-size:10px;font-weight:700;display:inline-flex}.midi-connected i{background:#79d39c;border-radius:50%;width:7px;height:7px}.settings-heading{justify-content:space-between;align-items:flex-start;gap:24px;display:flex}.settings-heading h2{letter-spacing:-.045em;text-wrap:balance;margin:6px 0 7px;font-size:clamp(26px,3vw,38px);line-height:1.1}.settings-heading>div:first-child>p:last-child{max-width:62ch;color:var(--color-text-muted);text-wrap:pretty;margin:0;line-height:1.5}.settings-icon{background:var(--color-accent-soft);width:48px;height:48px;color:var(--color-accent-dark);border-radius:15px;flex:none;place-items:center;display:grid}.settings-icon svg{width:21px}.keyboard-size-setting{border:0;min-width:0;margin:28px 0 0;padding:0}.keyboard-size-setting legend{margin-block-end:11px;font-size:13px;font-weight:700}.keyboard-size-options{grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;display:grid}.keyboard-size-options label{border:1px solid var(--color-border);cursor:pointer;background:#f8f7f3;border-radius:16px;align-items:center;gap:11px;min-height:72px;padding:13px;transition-property:border-color,background-color,transform;transition-duration:.13s;display:flex;position:relative}.keyboard-size-options label:active{transform:scale(.96)}.keyboard-size-options label.selected{background:var(--color-accent-soft);border-color:#8f86e8}.keyboard-size-options label:focus-within{outline-offset:3px;outline:3px solid #2c67d9}.keyboard-size-options input{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.size-radio{color:#fff;background:#fff;border:1px solid #bbbdb5;border-radius:50%;flex:none;place-items:center;width:24px;height:24px;display:grid}.selected .size-radio{border-color:var(--color-accent);background:var(--color-accent)}.size-radio svg{stroke-width:2.5px;width:13px}.size-copy{min-width:0;display:block}.size-copy strong,.size-copy small{display:block}.size-copy strong{white-space:nowrap;font-size:14px}.size-copy small{color:var(--color-text-muted);white-space:nowrap;margin-block-start:2px;font-size:11px}.current-keyboard-note{background:#f6f5f1;border-radius:14px;align-items:center;gap:12px;margin-block-start:16px;padding:14px 16px;display:flex}.current-keyboard-note>svg{width:20px;color:var(--color-accent-dark);flex:none}.current-keyboard-note strong,.current-keyboard-note span{display:block}.current-keyboard-note strong{font-size:13px}.current-keyboard-note span{color:var(--color-text-muted);margin-block-start:2px;font-size:12px;line-height:1.4}.next-up{border:1px solid var(--color-border);box-shadow:none;background:#ffffff73;justify-content:space-between;align-items:center;gap:24px;margin-block-start:20px;padding:28px 32px;display:flex}.next-up h2{letter-spacing:-.035em;margin:6px 0;font-size:22px}.next-up p:last-child{max-width:65ch;color:var(--color-text-muted);text-wrap:pretty;margin:0;line-height:1.5}.locked-pill{background:var(--color-surface-soft);min-width:max-content;color:var(--color-text-muted);border-radius:99px;padding:9px 13px;font-size:12px;font-weight:700}.course-card.route-card,.lesson-card.route-card,.game-card.route-card,.ear-card.route-card,.settings-card.route-card{margin-block-start:0}@media (hover:hover){.nav-item:hover{background:var(--color-surface-soft);color:var(--color-text)}.nav-item.active:hover{background:var(--color-accent-soft);color:var(--color-accent-dark)}.primary-button:hover{background:#f3f1ff}.hear-button:hover{background:#e5e3dd}.next-button:hover:not(:disabled){background:#383a35}.keyboard-controls button:hover{background:#3b3e38}.white-key:hover{background:#f2f1ff}.black-key:hover{background:linear-gradient(110deg,#353831 0%,#4d504a 100%)}.mystery-play-button:hover{background:#efedff}.pitch-options button:hover:not(:disabled){background:#f0eeff;border-color:#9d95ec}.sample-credit a:hover{color:var(--color-text)}.keyboard-size-options label:hover{background:#f2f0ff;border-color:#aaa5d8}.keyboard-size-options label.selected:hover{background:var(--color-accent-soft);border-color:#8f86e8}.phase-tabs button:hover,.week-card:hover{background:#f2f0ff;border-color:#aaa5d8}.phase-tabs button[aria-pressed=true]:hover,.week-card.selected:hover{background:var(--color-accent-soft);border-color:#8f86e8}.routine-list label:hover{border-color:#aaa5d8}.start-drill-button:hover,.midi-actions button:hover{background:#efedff}.drill-topline button:hover{background:#40443d}.session-timer button:hover{background:#4a4e46}.hand-setting label:hover{background:#f2f0ff;border-color:#aaa5d8}.microphone-practice-bar>button:hover:not(:disabled){background:#383a35}.microphone-practice-bar.listening>button:hover:not(:disabled){background:#1d5238}.course-practice-link:hover{background:#383a35}.difficulty-picker button:hover{background:#f2f0ff;border-color:#aaa5d8}.difficulty-picker button.selected:hover{background:var(--color-accent-soft);border-color:#8f86e8}.game-primary-button:hover{background:#383a35}.game-secondary-button:hover{background:#f1efe9}.game-stop-button:hover{background:#484b44}}@media (max-width:920px){.overview-grid{grid-template-columns:1fr}.progress-card{min-height:245px}.progress-summary p{max-width:none}.ear-training-grid{grid-template-columns:1fr}.mystery-note-card{min-height:290px}.keyboard-size-options{grid-template-columns:repeat(3,minmax(0,1fr))}.phase-tabs{grid-template-columns:repeat(2,minmax(0,1fr))}.practice-layout{grid-template-columns:1fr}.drill-panel{min-height:470px}.settings-grid{grid-template-columns:1fr;gap:0}.difficulty-picker>div{grid-template-columns:repeat(3,minmax(0,1fr))}.game-stage{grid-template-columns:150px minmax(250px,1fr)}.game-listening{grid-column:1/-1;justify-self:center;width:min(100%,360px)}}@media (max-width:720px){.app-shell{display:block}.sidebar{z-index:40;height:auto;min-height:0;padding:7px max(10px, env(safe-area-inset-right)) calc(7px + env(safe-area-inset-bottom)) max(10px, env(safe-area-inset-left));border-block-start:1px solid var(--color-border);border-inline-end:0;display:block;position:fixed;inset:auto 0 0}.sidebar .brand{display:none}.side-nav{grid-template-columns:repeat(7,1fr);gap:5px;margin:0;display:grid}.nav-item{border-radius:13px;min-height:56px;font-size:10px}.nav-item svg{width:19px}.main-content{padding:0 14px calc(92px + env(safe-area-inset-bottom))}.topbar{min-height:82px}.topbar>div:first-of-type{display:none}.mobile-brand{display:inline-flex}.mobile-brand .logo-mark{border-radius:11px;width:36px;height:36px}.streak-pill{min-height:40px;padding-inline:12px}.profile-button{width:40px;height:40px}.welcome-card{min-height:300px;padding:28px 24px}.welcome-card h2{max-width:10ch;font-size:clamp(34px,11vw,48px)}.welcome-card p{max-width:46ch}.note-one{opacity:.65;inset-inline-end:5%}.progress-card,.course-card,.lesson-card,.game-card,.ear-card,.settings-card{border-radius:22px}.lesson-header{flex-direction:column;align-items:flex-start}.session-timer{width:100%}.challenge{grid-template-columns:auto minmax(0,1fr);gap:12px;padding:15px}.challenge-icon{border-radius:13px;width:44px;height:44px}.next-button{grid-column:1/-1;width:100%}.keyboard-toolbar{flex-direction:column;justify-content:center;align-items:flex-start;gap:10px;min-height:112px;padding-block:14px}.keyboard-controls{width:100%}.label-toggle{margin-inline-end:auto}.sample-status{margin-inline-start:0}.piano{--white-key-width:42px;--black-key-width:27px}.note-detail-row{flex-direction:column;align-items:stretch}.hear-button{width:100%}.next-up{flex-direction:column;align-items:flex-start;padding:24px}.locked-pill{min-width:0}.ear-header{flex-direction:column;align-items:stretch}.ear-score{justify-content:space-between;align-items:center;display:flex}.ear-score strong{margin:0}.pitch-answer-card{padding:20px 14px}.pitch-options{grid-template-columns:repeat(4,1fr)}.pitch-options button{min-height:66px}.sample-credit,.compare-feedback{flex-direction:column;align-items:flex-start}.keyboard-size-options{grid-template-columns:repeat(2,minmax(0,1fr))}.week-grid{grid-template-columns:1fr}.week-card{min-height:132px}.midi-panel{grid-template-columns:auto minmax(0,1fr);align-items:start}.midi-actions{grid-column:1/-1;width:100%;max-width:none}.microphone-practice-bar{grid-template-columns:auto minmax(0,1fr);align-items:start}.microphone-practice-bar>button{grid-column:1/-1;width:100%}.game-header{flex-direction:column;align-items:stretch}.game-mic-status{width:100%;min-width:0}.game-intro{grid-template-columns:auto minmax(0,1fr)}.game-rule-pills{grid-column:1/-1;justify-content:flex-start;max-width:none}.difficulty-picker>div{grid-template-columns:repeat(2,minmax(0,1fr))}.game-start-panel{grid-template-columns:auto minmax(0,1fr)}.game-start-panel .game-primary-button{grid-column:1/-1;width:100%}.game-countdown{min-height:480px}.game-hud{grid-template-columns:1fr 1fr;gap:12px;padding-block:14px}.game-progress{grid-area:2/1/auto/-1}.game-streak{justify-self:end}.game-stage{grid-template-columns:1fr;gap:18px;min-height:500px;padding:34px 20px}.game-time-ring{width:100px;height:100px}.game-time-ring>span{font-size:24px}.game-note-orb{width:190px;height:190px}.game-round-footer{grid-template-columns:1fr auto}.game-history{grid-area:2/1/auto/-1;overflow-x:auto}}@media (max-width:430px){.streak-pill span{font-size:0}.streak-pill span strong{font-size:14px}.streak-pill span strong:after{content:" days"}.profile-button{display:none}.welcome-card h2{font-size:37px}.range-label{display:none}.sample-status{order:3;width:max-content}.keyboard-toolbar>div:first-child{flex-wrap:wrap}.lesson-card{padding-inline:14px}.lesson-header{padding-inline:4px}.challenge-copy h3{font-size:17px}.challenge-copy>span{font-size:12px}.selected-note{align-items:flex-start}.note-avatar{border-radius:15px;width:54px;height:54px}.answer-heading{flex-direction:column;align-items:flex-start}.pitch-options{grid-template-columns:repeat(4,1fr);gap:7px}.settings-heading{align-items:flex-start}.settings-icon{border-radius:13px;width:42px;height:42px}.section-heading{flex-direction:column}.phase-tabs{scroll-snap-type:x mandatory;padding-block-end:5px;display:flex;overflow-x:auto}.phase-tabs button{scroll-snap-align:start;min-width:185px}.phase-summary{align-items:flex-start}.routine-panel,.drill-panel{padding:16px}.routine-list label{grid-template-columns:auto minmax(0,1fr)}.routine-minutes{grid-column:2}.hand-setting>div{grid-template-columns:1fr}.microphone-practice-bar{padding:14px}.game-card{padding-inline:14px}.game-intro{text-align:center;grid-template-columns:1fr}.game-intro-icon{margin-inline:auto}.game-rule-pills{grid-column:auto;justify-content:center}.difficulty-picker>div{grid-template-columns:1fr}.difficulty-picker button,.difficulty-picker button small{min-height:0}.game-level-mark{display:none}.game-start-panel{text-align:center;grid-template-columns:1fr}.game-start-panel .game-primary-button{grid-column:auto}.game-round-footer{grid-template-columns:1fr}.game-stop-button{width:100%}.game-history{grid-area:auto}.game-result-stats{grid-template-columns:1fr}.game-result>div:last-child{flex-direction:column;width:100%}}@media (prefers-reduced-motion:no-preference){.game-countdown>strong{animation:.6s cubic-bezier(.2,0,0,1) game-count}.game-note-orb{animation:.14s cubic-bezier(.2,0,0,1) game-note-in}.game-history span:first-child{animation:.14s cubic-bezier(.2,0,0,1) game-history-in}.piano-key.key-press-a{animation:.14s cubic-bezier(.2,0,0,1) piano-key-press-a}.piano-key.key-press-b{animation:.14s cubic-bezier(.2,0,0,1) piano-key-press-b}.sound-visualizer.is-listening span{animation:.9s ease-in-out infinite alternate sound-wave}.sound-visualizer.is-listening .bar-2,.sound-visualizer.is-listening .bar-6{animation-delay:-220ms}.sound-visualizer.is-listening .bar-3,.sound-visualizer.is-listening .bar-5{animation-delay:-430ms}.sound-visualizer.is-listening .bar-4{animation-delay:-610ms}}@keyframes game-count{0%{filter:blur(4px);opacity:0;transform:scale(.25)}to{filter:blur();opacity:1;transform:scale(1)}}@keyframes game-note-in{0%{filter:blur(4px);opacity:0;transform:scale(.86)}to{filter:blur();opacity:1;transform:scale(1)}}@keyframes game-history-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes piano-key-press-a{0%{filter:brightness();transform:translateY(0)}45%{filter:brightness(1.12);transform:translateY(4px)}to{filter:brightness();transform:translateY(0)}}@keyframes piano-key-press-b{0%{filter:brightness();transform:translateY(0)}45%{filter:brightness(1.12);transform:translateY(4px)}to{filter:brightness();transform:translateY(0)}}@keyframes sound-wave{0%{opacity:.6;transform:scaleY(.38)}to{opacity:1;transform:scaleY(1)}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (forced-colors:active){.piano-key,.nav-item.active,.primary-button,.next-button,.hear-button,.week-card.selected,.phase-tabs button[aria-pressed=true],.routine-list label.complete{border:1px solid buttontext}.difficulty-picker button.selected,.game-primary-button,.game-note-orb,.microphone-practice-bar.listening{border:2px solid buttontext}}
