:root{color:#223b35;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;--ink:#223b35;--muted:#62716a;--teal:#17675b;--line:#d9dfd6;--card:#fffef9;--error:#a83430;background:#f5f3ed;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{min-width:360px;margin:0}h1,h2,h3{line-height:1.25}p{line-height:1.65}button,input,select{font:inherit}button,select,input[type=number]{min-height:44px}button{border:1px solid var(--line);background:var(--card);color:var(--ink);cursor:pointer;border-radius:10px;padding:10px 16px;font-weight:600;line-height:1.3}button:hover:not(:disabled){border-color:var(--teal);background:#edf3ec}button:disabled{opacity:.5;cursor:not-allowed}button.primary{background:var(--teal);border-color:var(--teal);color:#fff}button.primary:hover:not(:disabled){background:#105548}button.danger{color:#9e3830}label{flex-direction:column;gap:8px;font-size:14px;font-weight:550;display:flex}label:has(>input[type=checkbox]){flex-direction:row;align-items:center;min-height:44px}input[type=checkbox]{width:20px;height:20px;accent-color:var(--teal);margin:0}input[type=range]{accent-color:var(--teal);width:100%;min-height:44px;margin:0}input[type=number],select{border:1px solid var(--line);color:var(--ink);background:#fff;border-radius:10px;width:100%;max-width:100%;padding:10px}input[aria-invalid=true]{border-color:var(--error)}fieldset{border:0;min-width:0;margin:0;padding:0}legend{margin-bottom:8px;font-size:14px;font-weight:550}:focus-visible{outline-offset:3px;outline:3px solid #ca8a24}a{color:var(--teal)}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.piano-keyboard{--piano-white-width:56px;color:#183b3b;min-width:0;max-width:100%}.piano-keyboard__controls{flex-wrap:wrap;justify-content:center;align-items:center;gap:8px 12px;display:flex}.piano-keyboard__controls button{color:#183b3b;min-width:44px;min-height:44px;font:inherit;cursor:pointer;background:#fffdf8;border:1px solid #9daaa5;border-radius:10px;padding:8px 12px}.piano-keyboard kbd{font:inherit;font-size:14px}.piano-keyboard__controls kbd{margin-inline-start:4px;font-weight:700}.piano-keyboard__controls strong{font-variant-numeric:tabular-nums;white-space:nowrap}.piano-keyboard__description{color:#53645e;margin:12px 0;font-size:14px;line-height:1.5}.piano-keyboard__scroll{overscroll-behavior-x:contain;box-sizing:border-box;border-radius:10px;min-width:0;max-width:100%;padding:6px 4px 12px;overflow-x:auto}.piano-keyboard__keys{width:calc(8 * var(--piano-white-width));height:196px;margin-inline:auto;position:relative}.piano-keyboard .piano-keyboard__key{box-sizing:border-box;min-width:44px;min-height:44px;font:inherit;cursor:pointer;touch-action:pan-x;-webkit-user-select:none;user-select:none;border:1px solid #77867f;border-radius:0 0 9px 9px;flex-direction:column;justify-content:flex-end;align-items:center;gap:5px;padding:10px 0;font-size:14px;font-weight:600;line-height:1.2;display:flex;position:absolute;top:0}.piano-keyboard .piano-keyboard__key--white{z-index:1;width:var(--piano-white-width);color:#183b3b;background:#fffdf8;height:196px;box-shadow:inset 0 -5px #dedfd5}.piano-keyboard .piano-keyboard__key--black{z-index:2;color:#fffdf8;background:#263c38;width:44px;height:118px;box-shadow:inset 0 -5px #122822}.piano-keyboard .piano-keyboard__key.is-held{color:#fff;background:#096c66;box-shadow:inset 0 -5px #084d47}.piano-keyboard .piano-keyboard__key.is-highlighted{outline-offset:-5px;outline:3px dashed #b86c12}.piano-keyboard__cue{font-size:16px;position:absolute;top:8px}.piano-keyboard button:focus-visible,.piano-keyboard__scroll:focus-visible{outline-offset:3px;outline:3px solid #008a83}.piano-keyboard .piano-keyboard__key:focus-visible{z-index:3;outline-offset:-4px}.piano-keyboard button:disabled{cursor:not-allowed;opacity:.55}.notation-card{color:#182320;background:#fffefb;border:1px solid #d8ded8;border-radius:16px;min-width:0;padding:16px}.notation-svg svg{width:100%;height:auto;display:block;overflow:visible}.staff-note .notation-svg{max-width:340px;margin-inline:auto}.revealed-pitch{text-align:center;margin:0;font-weight:700}.notation-card button{min-height:44px;padding:8px 16px}.melody-measures{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.melody-measures[hidden]{display:none}.melody-measure{min-width:0}.measure-label{color:#4e5b55;margin:0;font-size:14px}.notation-outcomes{flex-wrap:wrap;gap:8px 16px;margin:0;padding:0;font-size:14px;list-style:none;display:flex}.notation-outcomes [aria-current]{text-underline-offset:3px;font-weight:700;text-decoration:underline}@media (width<=639px){.melody-measures{grid-template-columns:minmax(0,1fr);gap:0}}.app-shell{max-width:1200px;margin:auto;padding:0 24px}.app-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:16px;padding:24px 0;display:flex}.brand{text-align:left;color:var(--ink);background:0 0;border:0;padding:0;font-size:23px;font-weight:750}.brand span{letter-spacing:1.7px;color:var(--muted);margin-top:5px;font-size:10px;display:block}.app-header nav{gap:8px;display:flex}main{min-height:75vh;padding:32px 0 48px}.hero-copy{margin:12px 0 28px}.hero-copy h1{letter-spacing:-1.3px;margin:12px 0;font-size:clamp(28px,4vw,40px);line-height:1.15}.hero-copy p{color:var(--muted)}.eyebrow{letter-spacing:1.8px;color:var(--teal);font-size:12px;font-weight:750}.panel{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:24px}.setup-grid{grid-template-columns:320px minmax(0,1fr);gap:24px;display:grid}.setup-controls{flex-direction:column;gap:16px;display:flex}.setup-controls h2{margin:0}.score-preview{flex-direction:column;justify-content:center;min-width:0;display:flex}.score-preview h2{letter-spacing:-.7px;font-size:28px;line-height:1.25}.score-preview>p{color:var(--muted)}.shortcut-guide{border-top:1px solid var(--line);margin-top:24px;padding-top:20px;font-size:14px}.shortcut-guide p{line-height:1.6}.device-controls{flex-wrap:wrap;align-items:center;gap:12px;margin-top:16px;font-size:14px;display:flex}.device-controls>p{color:var(--muted);flex-basis:100%;margin:4px 0}.device-setup{margin-top:24px}.device-setup details{border-top:1px solid var(--line);padding:16px 0}summary{cursor:pointer;align-items:center;min-height:44px;font-weight:650;display:flex}details[open]>summary{margin-bottom:12px}.range-controls{flex-wrap:wrap;gap:16px;display:flex}.range-controls label{flex:1;min-width:180px}.range-controls button{margin-top:8px}.subtle{color:var(--muted);margin-left:8px;font-size:14px;font-weight:400}.sound-controls{border-top:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:24px;margin-top:20px;padding-top:20px;display:flex}.sound-controls label{font-size:14px}.sound-controls input[type=range]{width:130px}.product-roadmap{color:var(--muted);grid-template-columns:1fr 1fr;gap:40px;padding:24px 8px;font-size:14px;display:grid}.product-roadmap h2{color:var(--ink);font-size:17px}.onboarding-banner{background:#e5efea;border-radius:16px;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:24px;padding:20px 24px;display:flex}.onboarding-banner>div{flex:1;min-width:220px}.onboarding-banner h2{margin:0;font-size:18px}.onboarding-banner p{margin-bottom:0;font-size:14px}.mode-cards{grid-template-columns:1fr 1fr;gap:8px;display:grid}.mode-cards label{border:1px solid var(--line);cursor:pointer;border-radius:12px;flex-direction:column;gap:4px;padding:12px 8px;display:flex;position:relative}.mode-cards input{width:14px;height:14px;min-height:0;position:absolute;top:8px;right:8px}.mode-cards label.selected{border-color:var(--teal);background:#eef6f2}.mode-cards small{color:var(--muted);font-size:12px}.start-button{width:100%}.fine-print{color:var(--muted);font-size:13px;line-height:1.6}.validation{color:var(--error);margin:0;font-size:14px}.notice{background:#e5efea;border:1px solid #b7d3c9;border-radius:12px;margin:0 0 24px;padding:16px 20px}.warning{background:#fff0d4;border-color:#e6c786}.section-heading{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;display:flex}.section-heading h1{margin:0}.practice-view{max-width:1100px;margin:auto}.practice-context{text-transform:capitalize;color:var(--muted)}.active-score{margin-top:16px;padding:24px 16px}.count-in{text-align:center;font-variant-numeric:tabular-nums;min-height:36px;margin:12px 0;font-size:24px;font-weight:700}.stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:24px 0;display:grid}.stats>div{background:var(--card);border:1px solid var(--line);border-radius:12px;min-width:0;padding:16px}.stats dt{color:var(--muted);min-height:32px;font-size:13px}.stats dd{font-variant-numeric:tabular-nums;overflow-wrap:anywhere;margin:8px 0 0;font-size:25px;font-weight:650}.answer-feedback{text-align:center;min-height:26px;margin-top:24px;font-size:18px}.actions{flex-wrap:wrap;gap:12px;margin-top:24px;display:flex}.results{max-width:900px;margin:32px auto}.results h1{font-size:30px}.empty{text-align:center;padding:48px 16px}.history{padding:0;list-style:none}.history-row{border-top:1px solid var(--line);padding:24px 0}.history-row h2{font-size:20px}.history-row>p{color:var(--muted);font-size:14px}.tutorial-staves{grid-template-columns:1fr 1fr;gap:16px;display:grid}.tutorial,.calibration,.help{max-width:950px;margin:auto}.tutorial h1,.help h1,.calibration h1{font-size:30px}.help p,.tutorial p,.calibration p{max-width:75ch;line-height:1.75}.help h2{margin-top:32px;font-size:20px}.tap-button{background:var(--teal);color:#fff;width:min(320px,100%);min-height:120px;margin:24px auto;font-size:32px;font-weight:700;display:block}footer{text-align:center;color:var(--muted);border-top:1px solid var(--line);padding:24px 0;font-size:13px}@media (width<=1023px){.setup-grid{grid-template-columns:1fr}.setup-controls{grid-template-columns:1fr 1fr;align-items:start;display:grid}.setup-controls h2,.setup-controls fieldset,.setup-controls .start-button,.setup-controls .fine-print,.setup-controls .validation{grid-column:1/-1}.setup-controls>input[type=range]{align-self:center}.score-preview{min-height:360px}}@media (width<=639px){.app-shell{padding:0 16px}.app-header{padding:16px 0}.brand{font-size:20px}.brand span{letter-spacing:1px;font-size:8px}.app-header nav{gap:0}.app-header nav button{padding:10px}main{padding-top:24px}.panel{padding:20px 16px}.setup-controls{display:flex}.score-preview h2{font-size:25px}.product-roadmap{grid-template-columns:1fr;gap:8px}.stats{gap:8px}.stats>div{padding:10px 8px}.stats dd{font-size:19px}.stats dt{min-height:38px;font-size:12px}.sound-controls{gap:16px}.tutorial-staves{grid-template-columns:1fr}.onboarding-banner{padding:20px 16px}.section-heading h1{font-size:25px}.results h1{font-size:26px}.range-controls label{min-width:100%}}
