:root{--color-ground:#0e0e12;--color-rail:#0a0a0d;--color-surface:#13131a;--color-raised:#16161e;--color-tile:#1c1c25;--color-line:#2c2c38;--color-staff:#3a3a48;--color-off:#2a2a36;--color-text:#f2efea;--color-text-2:#cfcbd6;--color-muted:#8e8a96;--color-amber:#ffb547;--color-mint:#5ee6a8;--color-coral:#ff7a6b;--color-violet:#8c7bff;--color-on-accent:#1a1205;--color-ivory:#ede8e0;--color-ivory-line:#b9b2a6;--color-ebony:#17171d;--font-display:"Unbounded", system-ui, sans-serif;--font-body:"Schibsted Grotesk", system-ui, -apple-system, sans-serif;--radius-sm:8px;--radius-md:12px;--radius-lg:14px;--radius-pill:999px;--dur-state:.12s;--dur-key:.15s;--dur-panel:.22s;--rail-w:72px;--coach-w:272px;--bg:var(--color-ground);--surface:var(--color-surface);--surface-2:var(--color-tile);--ink:var(--color-text);--ink-soft:var(--color-text-2);--ink-faint:var(--color-muted);--line:var(--color-line);--accent:var(--color-amber);--accent-ink:var(--color-on-accent);--accent-soft:#ffb5471f;--ok:var(--color-mint);--ok-soft:#5ee6a81f;--bad:var(--color-coral);--bad-soft:#ff7a6b1f;--warn:var(--color-coral);--warn-soft:#ff7a6b1a;--target:var(--color-amber);--demo:var(--color-violet);--key-white:var(--color-ivory);--key-black:var(--color-ebony);--radius:var(--radius-lg);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--color-ground);color:var(--color-text);font-family:var(--font-body);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;touch-action:manipulation;overscroll-behavior:none;font-size:16px;line-height:1.5}a{color:var(--color-text);text-decoration:none}h1,h2,.display{font-family:var(--font-display);letter-spacing:-.02em;font-weight:600}h1{margin:0 0 8px;font-size:28px;line-height:1.2}h2{letter-spacing:-.01em;margin:0 0 12px;font-size:18px;font-weight:500;line-height:1.3}h3{margin:16px 0 8px;font-size:15px;font-weight:600}p{margin:0 0 12px}.muted{color:var(--color-muted)}.small{font-size:13px;line-height:1.4}.block{display:block}.center{text-align:center}.ok{color:var(--color-mint);font-weight:600}.dim{opacity:.25}.label{letter-spacing:.12em;text-transform:uppercase;color:var(--color-muted);font-size:12px;font-weight:600}.label.amber{color:var(--color-amber)}:focus-visible{outline:2px solid var(--color-amber);outline-offset:2px}.icon{flex-shrink:0;display:block}.app{height:100%;display:flex}.rail{width:var(--rail-w);background:var(--color-rail);padding:max(20px, env(safe-area-inset-top)) 0 20px max(0px, env(safe-area-inset-left));border-right:1px solid #22222b;flex-direction:column;flex-shrink:0;align-items:center;gap:8px;display:flex}.brand{background:var(--color-amber);width:40px;height:40px;color:var(--color-on-accent);font-family:var(--font-display);border-radius:20px;place-items:center;margin-bottom:16px;font-size:17px;font-weight:600;display:grid}.tab{border-radius:var(--radius-lg);width:48px;height:48px;color:var(--color-muted);transition:color var(--dur-state), background var(--dur-state);flex-direction:column;justify-content:center;align-items:center;gap:2px;display:flex}.tab:hover{color:var(--color-text-2)}.tab.on{background:var(--color-tile);color:var(--color-amber)}.tab-label{font-size:11px;font-weight:500;display:none}.main{flex:1;min-width:0;height:100%;overflow:hidden}.screen{-webkit-overflow-scrolling:touch;height:100%;padding:max(24px, env(safe-area-inset-top)) max(28px, env(safe-area-inset-right)) 48px 28px;overflow-y:auto}.screen>*{max-width:1040px;margin-left:auto;margin-right:auto}@media (width<=760px),(orientation:portrait) and (width<=1100px){.app{flex-direction:column-reverse}.rail{width:100%;padding:4px 4px max(4px, env(safe-area-inset-bottom));border-top:1px solid #22222b;border-right:0;flex-direction:row;justify-content:space-around}.brand{display:none}.tab{width:auto;min-width:64px;height:52px;padding:0 8px}.tab.on{background:0 0}.tab-label{display:block}.main{flex:1;height:auto;min-height:0}}@media (width<=760px){.screen{padding:max(16px, env(safe-area-inset-top)) 16px 32px}}.btn{appearance:none;border:1px solid var(--color-staff);border-radius:var(--radius-md);min-height:48px;font:inherit;cursor:pointer;color:var(--color-text);white-space:nowrap;transition:background var(--dur-state), color var(--dur-state), border-color var(--dur-state);background:0 0;justify-content:center;align-items:center;gap:8px;padding:0 20px;font-size:15px;font-weight:500;display:inline-flex}.btn:hover:not(:disabled){border-color:var(--color-muted)}.btn.primary{background:var(--color-amber);color:var(--color-on-accent);border-color:#0000;font-weight:600}.btn.primary:hover:not(:disabled){background:#ffc266}.btn.secondary{background:0 0}.btn.danger{color:var(--color-coral);border-color:#ff7a6b66}.btn.small{min-height:44px;padding:0 16px;font-size:14px}.btn:disabled{opacity:.4;cursor:default}.link{color:var(--color-text-2);font:inherit;cursor:pointer;min-height:44px;text-decoration:underline;-webkit-text-decoration-color:var(--color-staff);text-decoration-color:var(--color-staff);text-underline-offset:4px;background:0 0;border:0;align-items:center;padding:8px 4px;display:inline-flex}.link:hover{color:var(--color-text)}.link.danger{color:var(--color-coral)}.link.small{white-space:nowrap;font-size:13px}.actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:12px;margin-top:24px;display:flex}.seg{border:1px solid var(--color-line);border-radius:var(--radius-pill);gap:2px;padding:3px;display:inline-flex}.seg button{font:inherit;border-radius:var(--radius-pill);min-height:36px;color:var(--color-text-2);cursor:pointer;transition:background var(--dur-state), color var(--dur-state);background:0 0;border:0;padding:0 14px;font-size:13px;font-weight:500}.seg button.on{background:var(--color-amber);color:var(--color-on-accent);font-weight:600}.seg button:disabled{opacity:.5}.chip{border:1px solid var(--color-line);font:inherit;border-radius:var(--radius-pill);min-height:36px;color:var(--color-text-2);cursor:pointer;white-space:nowrap;transition:background var(--dur-state), color var(--dur-state);background:0 0;align-items:center;gap:6px;padding:0 14px;font-size:13px;font-weight:500;display:inline-flex}.chip.on{background:var(--color-amber);color:var(--color-on-accent);border-color:#0000;font-weight:600}.chip:disabled{opacity:.5}.pill{border:1px solid var(--color-line);color:var(--color-text-2);border-radius:var(--radius-pill);align-items:center;gap:8px;padding:7px 14px;font-size:13px;font-weight:500;display:inline-flex}.dot{background:var(--color-muted);border-radius:4px;flex-shrink:0;width:8px;height:8px;display:inline-block}.dot.mint{background:var(--color-mint)}.dot.amber{background:var(--color-amber)}.dot.coral{background:var(--color-coral)}.dot.violet{background:var(--color-violet)}select,input[type=email],input[type=password],input[type=search]{font:inherit;border-radius:var(--radius-md);border:1px solid var(--color-line);background:var(--color-surface);min-height:44px;color:var(--color-text);padding:0 14px;font-size:15px}input[type=range]{accent-color:var(--color-amber)}.switch{appearance:none;background:var(--color-off);cursor:pointer;width:44px;height:26px;transition:background var(--dur-state);border-radius:13px;flex-shrink:0;margin:9px 0;position:relative}.switch:after{content:"";background:var(--color-muted);width:20px;height:20px;transition:transform var(--dur-state), background var(--dur-state);border-radius:10px;position:absolute;top:3px;left:3px}.switch:checked{background:var(--color-amber)}.switch:checked:after{background:var(--color-on-accent);transform:translate(18px)}.alert{background:var(--bad-soft);color:var(--color-coral);border-radius:var(--radius-md);margin:12px 0;padding:12px 16px;font-size:14px}.tip{color:var(--color-text-2);align-items:flex-start;gap:8px;font-size:14px;line-height:1.55;display:flex}.tip .icon{color:var(--color-muted);margin-top:1px}.card{background:var(--color-raised);border-radius:var(--radius-lg);margin-bottom:16px;padding:24px}.callout{color:var(--color-text);flex-direction:row;align-items:flex-start;gap:16px;display:flex}.callout>.icon{color:var(--color-text-2);margin-top:2px}.callout strong{margin-bottom:2px;font-weight:600;display:block}.callout span{color:var(--color-text-2);font-size:14px}a.callout:hover{background:var(--color-tile)}.coach-card{background:var(--color-raised);border-radius:var(--radius-lg);flex-direction:column;gap:8px;padding:18px;display:flex}.coach-card .label{align-items:center;gap:8px;display:flex}.coach-title{font-family:var(--font-display);letter-spacing:-.01em;font-size:16px;font-weight:500;line-height:1.3}.coach-body{color:var(--color-text-2);margin:0;font-size:14px;line-height:1.55}.badge{border-radius:36px;place-items:center;width:72px;height:72px;margin:0 auto 16px;display:grid}.badge-mint{background:var(--ok-soft);color:var(--color-mint)}.badge-amber{background:var(--accent-soft);color:var(--color-amber)}.badge-violet{color:var(--color-violet);background:#8c7bff24}.badge-muted{background:var(--color-tile);color:var(--color-text-2)}.segments{flex-wrap:wrap;gap:4px;display:flex}.segments span{background:var(--color-off);border-radius:3px;flex:1;min-width:12px;max-width:48px;height:6px}.segments .s-good{background:var(--color-mint)}.segments .s-now{background:var(--color-amber)}.segments .s-work{background:var(--color-coral)}.segments .s-missed{border:1px dashed var(--color-coral);background:0 0}.mini-seg{gap:3px;display:inline-flex}.mini-seg span{background:var(--color-off);border-radius:3px;width:14px;height:5px}.mini-seg .on{background:var(--color-mint)}.today-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:24px;display:flex}.stats{align-items:center;gap:24px;display:flex}.stat{flex-direction:column;align-items:center;display:flex}.stat-n{font-family:var(--font-display);font-size:24px;font-weight:600}.ring{--p:0;background:conic-gradient(var(--color-mint) calc(var(--p) * 360deg), var(--color-off) 0);border-radius:50%;place-items:center;width:80px;height:80px;display:grid}.ring span{background:var(--color-ground);width:68px;height:68px;font-family:var(--font-display);text-align:center;border-radius:50%;place-items:center;font-size:18px;font-weight:600;line-height:1;display:grid}.ring small{font-family:var(--font-body);color:var(--color-muted);margin-top:2px;font-size:11px;font-weight:500;display:block}.section-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin:32px 0 12px;display:flex}.section-head h1,.section-head h2{margin:0}.length-pick{align-items:center;gap:8px;display:flex}.hero{background:var(--color-raised);border-radius:var(--radius-lg);flex-wrap:wrap;align-items:center;gap:24px;padding:28px;display:flex}.hero-body{flex-direction:column;flex:1;gap:8px;min-width:220px;display:flex}.hero-title{font-family:var(--font-display);letter-spacing:-.02em;font-size:24px;font-weight:600;line-height:1.2}.hero .btn{min-width:160px}.plan{flex-direction:column;gap:8px;margin:12px 0 0;padding:0;list-style:none;display:flex}.plan-item{background:var(--color-surface);border-radius:var(--radius-lg);align-items:center;gap:16px;padding:12px 16px;display:flex}.plan-item.done{opacity:.6}.plan-icon{border-radius:var(--radius-md);background:var(--color-tile);width:40px;height:40px;color:var(--color-text-2);flex-shrink:0;place-items:center;display:grid}.plan-item.done .plan-icon{color:var(--color-mint)}.plan-body{flex:1;min-width:0}.plan-title{font-weight:600}.plan-min{white-space:nowrap}.unit{margin-top:40px}.unit-head{align-items:flex-start;gap:16px;margin-bottom:16px;display:flex}.unit-head h2{margin-bottom:4px}.unit-head p{margin:0}.unit-num{font-family:var(--font-display);color:var(--color-muted);min-width:32px;padding-top:3px;font-size:13px;font-weight:600}.unit-progress{white-space:nowrap;margin-left:auto;padding-top:3px}.lessons{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.lesson-row{border-radius:var(--radius-lg);color:var(--color-text);margin-left:var(--off,0px);max-width:calc(100% - var(--off,0px));transition:background var(--dur-state);align-items:center;gap:16px;padding:8px 12px;display:flex}.lesson-row:hover{background:var(--color-surface)}.lesson-row.locked{opacity:.45;pointer-events:none}.lesson-state{background:var(--color-tile);width:52px;height:52px;color:var(--color-muted);border:1px solid var(--color-line);border-radius:26px;flex-shrink:0;place-items:center;display:grid}.lesson-row.done .lesson-state{background:var(--ok-soft);color:var(--color-mint);border-color:#0000}.lesson-row.next .lesson-state{background:var(--color-amber);width:68px;height:68px;color:var(--color-on-accent);border:0;border-radius:34px;margin:0 -8px}.lesson-name{flex-direction:column;flex:1;min-width:0;font-weight:600;display:flex}.lesson-name .small{color:var(--color-muted);font-weight:400}.lesson-row.next .lesson-name{font-size:17px}@media (width<=760px){.lesson-row{--off:0px!important}}.search{margin:16px 0 8px;position:relative}.search input{width:100%;padding-left:44px}.search .icon{color:var(--color-muted);pointer-events:none;position:absolute;top:50%;left:14px;transform:translateY(-50%)}.tiles{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;margin-bottom:16px;display:grid}.tile{background:var(--color-raised);border-radius:var(--radius-lg);transition:background var(--dur-state);flex-direction:column;display:flex;overflow:hidden}.tile:hover{background:var(--color-tile)}.tile-cover{background:var(--color-surface);height:72px;display:block}.tile-cover svg{width:100%;height:100%;display:block}.tile-main{color:var(--color-text);flex-direction:column;flex:1;gap:4px;padding:14px 16px 8px;display:flex}.tile-title{font-weight:600;line-height:1.3}.tile-foot{flex-wrap:wrap;align-items:center;gap:8px;padding:0 12px 8px 16px;display:flex}.tile-foot .chip{pointer-events:none;min-height:28px;padding:0 10px;font-size:12px}.tile-foot .link{margin-left:auto}.song-list{flex-direction:column;gap:6px;margin:0 0 16px;padding:0;list-style:none;display:flex}.song-row{background:var(--color-surface);border-radius:var(--radius-lg);align-items:center;gap:12px;min-height:56px;padding:8px 12px 8px 16px;display:flex}.song-row a:first-child{color:var(--color-text);flex-direction:column;flex:1;min-width:0;display:flex}.song-title{font-weight:600}.best{color:var(--color-mint);white-space:nowrap;font-size:13px;font-weight:600}.path-mini{color:var(--color-mint);white-space:nowrap;font-size:12px;font-weight:600}.row{border-top:1px solid var(--color-line);justify-content:space-between;align-items:center;gap:16px;min-height:44px;padding:12px 0;display:flex}.card h2+.row,.card h2+label.row{border-top:0}.row-actions{flex-wrap:wrap;gap:8px;display:flex}.auth{flex-direction:column;gap:12px;max-width:420px;display:flex}.screen.fullscreen,.app.fullscreen .screen{padding-top:max(16px, env(safe-area-inset-top))}.lesson-head{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:16px;display:flex}.back{border-radius:var(--radius-md);width:44px;height:44px;color:var(--color-text-2);flex-shrink:0;place-items:center;display:grid}.back:hover{background:var(--color-surface);color:var(--color-text)}.lesson-title{flex:1;min-width:0}.lesson-title .title{font-family:var(--font-display);letter-spacing:-.01em;font-size:18px;font-weight:600}.lesson-title .small{text-transform:uppercase;letter-spacing:.12em;font-size:11px;font-weight:600}.step-dots{flex-wrap:wrap;justify-content:flex-end;gap:4px;max-width:50%;display:flex}.sd{background:var(--color-off);cursor:pointer;border:0;border-radius:3px;width:20px;height:6px;padding:0}.sd.done{background:var(--color-mint)}.sd.now{background:var(--color-amber)}.step{background:var(--color-raised);border-radius:var(--radius-lg);padding:28px}.step>h2{font-family:var(--font-display);font-size:22px;font-weight:600}.step.finish{text-align:center;padding:40px 28px}.step.finish h2{font-size:24px}.lead{color:var(--color-text-2);font-size:17px}.prose{color:var(--color-text-2);font-size:16px;line-height:1.6}.prose strong{color:var(--color-text);font-weight:600}.prose ul{margin:0 0 12px;padding-left:22px}.prose li{margin:4px 0}.hear-row{flex-wrap:wrap;gap:8px;margin:8px 0 16px;display:flex}.staff-pic{flex-direction:column;align-items:flex-start;gap:8px;margin:16px 0;display:flex}.staff-pic .sheet{background:var(--color-surface);border-radius:var(--radius-md);width:100%;padding:8px 4px}.options{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:8px;margin:16px 0;display:grid}.option{font:inherit;border-radius:var(--radius-md);border:1px solid var(--color-line);background:var(--color-surface);min-height:52px;color:var(--color-text);cursor:pointer;text-align:left;transition:border-color var(--dur-state), background var(--dur-state);padding:12px 16px;font-weight:500}.option:hover:not(:disabled){border-color:var(--color-muted)}.option.right{border-color:var(--color-mint);background:var(--ok-soft)}.option.wrong{border-color:var(--color-coral);background:var(--bad-soft)}.option.reveal{border-style:dashed;border-color:var(--color-mint)}.explain{border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text-2);padding:14px 16px;font-size:15px}.explain strong{color:var(--color-text)}.explain.ok{font-weight:400}.explain.ok strong{color:var(--color-mint)}.explain.bad strong{color:var(--color-coral)}.prompt-big{font-family:var(--font-display);text-align:center;margin:16px 0 8px;font-size:26px;font-weight:500}.prompt-big strong{color:var(--color-amber);font-weight:600}.progress-dots{flex-wrap:wrap;justify-content:center;gap:4px;margin:12px 0;display:flex}.progress-dots span{background:var(--color-off);border-radius:3px;width:16px;height:5px}.progress-dots .d-done{background:var(--color-mint)}.progress-dots .d-now{background:var(--color-amber)}.done-box{text-align:center;padding:16px}.mic-gate{text-align:center;color:var(--color-text-2);flex-direction:column;align-items:center;gap:12px;padding:24px;display:flex}.read-card{background:var(--color-surface);border-radius:var(--radius-md);max-width:280px;margin:0 auto;padding:8px 4px}.countdown{font-family:var(--font-display);font-size:80px;font-weight:600}.play-step-head{flex-wrap:wrap;align-items:baseline;gap:12px;margin-bottom:12px;display:flex}.play-step-head h2{font-family:var(--font-display);margin:0;font-size:20px;font-weight:600}.step-next{background:var(--color-raised);border-radius:var(--radius-lg);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:12px;padding:12px 16px;display:flex}.practice{flex-direction:column;gap:12px;min-height:0;display:flex}.practice-bar{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.bar-spacer{flex:1}.tempo{color:var(--color-text-2);align-items:center;gap:8px;font-size:13px;font-weight:500;display:flex}.tempo input{width:120px}.practice-main{flex-direction:column;flex:1;gap:12px;min-height:0;display:flex}.stage{border-radius:var(--radius-lg);flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.sheet-scroll{background:var(--color-surface);-webkit-overflow-scrolling:touch;flex:1;min-height:140px;max-height:52vh;padding:12px 4px 8px;position:relative;overflow-y:auto}.keybed{background:var(--color-rail);flex-shrink:0;padding:0}.coach{flex-direction:column;gap:16px;display:flex}.coach-top{justify-content:space-between;align-items:center;display:flex}.coach-aids{flex-direction:column;display:flex}.coach-actions{flex-direction:column;gap:8px;display:flex}.coach-actions .btn{width:100%}.coach-hint{color:var(--color-muted);font-size:13px}.coach-hint b{color:var(--color-text);font-weight:600}.feedback{min-height:24px;color:var(--color-text-2);flex-wrap:wrap;align-items:center;gap:8px;font-size:14px;line-height:1.55;display:flex}.fb-bad{color:var(--color-text)}.fb-good{color:var(--color-mint)}.fb-info{color:var(--color-text)}.step .feedback{text-align:center;border-radius:var(--radius-md);justify-content:center;padding:8px 12px}.step .feedback.fb-bad{background:var(--bad-soft)}.step .feedback.fb-good{background:var(--ok-soft)}@media (width>=1000px){.practice-main{flex-direction:row;align-items:stretch}.stage{min-width:560px}.coach{width:var(--coach-w);background:var(--color-rail);border-radius:var(--radius-lg);flex-shrink:0;padding:24px;overflow-y:auto}}@media (width<=999px){.coach{background:var(--color-rail);border-radius:var(--radius-lg);grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px 16px;padding:16px;display:grid}.coach>*{grid-column:1/-1}.coach-top{order:-2}.coach-actions{flex-flow:wrap;order:-1}.coach-actions .btn{flex:160px;width:auto}.coach>.coach-card{grid-column:1}.coach>.coach-aids{grid-column:2}.coach-hint{display:none}.practice .practice-main .sheet-scroll{max-height:34vh}}@media (width<=600px){.coach>.coach-card,.coach>.coach-aids{grid-column:1/-1}}.practice-screen{padding-bottom:max(16px, env(safe-area-inset-bottom));flex-direction:column;display:flex}.practice-screen>*{width:100%;max-width:none}.practice-screen>.lesson-head{flex-shrink:0;margin-bottom:8px}.practice-screen .practice{flex:1;min-height:0}.practice-screen .sheet-scroll{max-height:none}.lesson-play .sheet-scroll{max-height:46vh}.lesson-play>*{max-width:none}.results{flex-direction:column;gap:16px;display:flex}.results-head{align-items:center;gap:16px;display:flex}.score-big{font-family:var(--font-display);color:var(--color-text);font-size:44px;font-weight:600;line-height:1}.results .segments{margin-top:4px}.insights{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.insight{padding:0}.more-notes{color:var(--color-text-2);flex-direction:column;gap:8px;margin:0;padding:0;font-size:13px;list-style:none;display:flex}.more-notes li{align-items:baseline;gap:8px;display:flex}.ladder-note{color:var(--color-text-2);font-size:13px}.sheet{-webkit-user-select:none;user-select:none;width:100%}.sheet-svg svg{display:block;overflow:visible}.sheet-svg svg path,.sheet-svg svg rect{fill:var(--color-text-2);stroke:var(--color-text-2)}.sheet-svg svg text{fill:var(--color-muted)}.sheet-svg svg .vf-chord-sym text,.sheet-svg svg .chord-sym text{fill:var(--color-text-2)}.sheet-svg svg .vf-stave path{fill:none;stroke:var(--color-staff)}.sheet-svg svg .vf-stavebarline rect,.sheet-svg svg .vf-stave rect{fill:var(--color-staff);stroke:none}.sheet-svg svg .vf-clef path,.sheet-svg svg .vf-timesignature path,.sheet-svg svg .vf-keysignature path{fill:var(--color-text-2);stroke:none}.sheet-svg .lh path{fill:#b6abff;stroke:#b6abff}.sheet-svg .faded path,.sheet-svg .faded text{fill:#4a4858!important;stroke:#4a4858!important}.sheet-svg [data-st] path,.sheet-svg [data-st] text{transition:fill var(--dur-state), stroke var(--dur-state)}.sheet-svg [data-st=correct] path,.sheet-svg [data-st=correct] text{fill:var(--color-mint)!important;stroke:var(--color-mint)!important}.sheet-svg [data-st=late] path,.sheet-svg [data-st=late] text{opacity:.8;fill:var(--color-coral)!important;stroke:var(--color-coral)!important}.sheet-svg [data-st=wrong] path,.sheet-svg [data-st=wrong] text{fill:var(--color-coral)!important;stroke:var(--color-coral)!important}.sheet-svg [data-st=missed] path{stroke-dasharray:2 2;fill:none!important;stroke:var(--color-coral)!important}.sheet-svg [data-st=missed] text{fill:var(--color-coral)!important}.sheet-svg [data-st=target] path,.sheet-svg [data-st=target] text{fill:var(--color-amber)!important;stroke:var(--color-amber)!important}.sheet-svg [data-st=demo] path{fill:var(--color-violet)!important;stroke:var(--color-violet)!important}.sheet-cursor{background:var(--color-amber);pointer-events:none;border-radius:1px;width:2px;transition:left 60ms linear;position:absolute}.sheet-cursor:before{content:"";background:#ffb54717;border-radius:10px;width:52px;position:absolute;top:0;bottom:0;left:-25px}.sheet-selection{border-radius:var(--radius-sm);pointer-events:none;background:#8c7bff1f;border:1px solid #8c7bff59;position:absolute}.sheet-svg{position:relative}.piano{-webkit-user-select:none;user-select:none;touch-action:none;background:var(--color-rail);width:100%;position:relative}.key{transition:background var(--dur-key);justify-content:center;align-items:flex-end;display:flex;position:absolute;top:0}.key.white{background:var(--color-ivory);border-right:1px solid var(--color-ivory-line);z-index:1;border-radius:0 0 6px 6px;height:100%}.key.black{background:var(--color-ebony);z-index:2;border-radius:0 0 5px 5px;height:62%}.piano-input .key{cursor:pointer}.key-label{color:#6b655a;pointer-events:none;text-align:center;padding-bottom:8px;font-size:11px;font-weight:500;line-height:1.1}.key.black .key-label{color:var(--color-text-2);font-size:10px}.k-on.white{background:#f6e3c2}.k-on.black{box-shadow:inset 0 0 0 2px var(--color-amber)}.k-target.white,.k-hint.white{background:var(--color-amber)}.k-target.black,.k-hint.black{background:var(--color-ebony);box-shadow:inset 0 0 0 2px var(--color-amber)}.k-target.black .key-label,.k-hint.black .key-label{color:var(--color-amber)}.k-hint{animation:1.2s ease-in-out infinite pulse}.k-correct.white{background:var(--color-mint)!important}.k-correct.black{box-shadow:inset 0 0 0 2px var(--color-mint);background:var(--color-ebony)!important}.k-wrong.white{background:var(--color-coral)!important}.k-wrong.black{box-shadow:inset 0 0 0 2px var(--color-coral);background:var(--color-ebony)!important}.k-demo.white{background:#c9c1ff}.k-demo.black{box-shadow:inset 0 0 0 2px var(--color-violet)}.white.k-target .key-label,.white.k-hint .key-label,.white.k-correct .key-label,.white.k-wrong .key-label{color:var(--color-on-accent);font-size:13px;font-weight:600}@keyframes pulse{50%{opacity:.75}}@media (prefers-reduced-motion:reduce){.k-hint{animation:none}.sheet-cursor{transition:none}}.heard{font-family:var(--font-display);text-align:center;min-height:60px;margin:12px 0;font-size:40px;font-weight:600}.events{border-collapse:collapse;width:100%;margin-top:16px;font-size:14px}.events td,.events th{text-align:left;border-top:1px solid var(--color-line);padding:8px}.hands-figure{width:100%;max-width:420px;margin:8px auto 12px;display:block}.hand-palm,.hand-finger{fill:var(--color-tile);stroke:var(--color-staff);stroke-width:1.5px}.hand-badge{fill:var(--color-amber)}.hand-num{fill:var(--color-on-accent);font-size:13px;font-weight:700;font-family:var(--font-body)}.hand-label{fill:var(--color-text-2);font-size:13px;font-family:var(--font-body);font-weight:600}.echo-row{flex-wrap:wrap;justify-content:center;gap:8px;margin:16px 0 4px;display:flex}.echo-dot{border-radius:var(--radius-md);background:var(--color-surface);min-width:48px;height:48px;color:var(--color-muted);border:1px solid var(--color-line);place-items:center;font-size:17px;font-weight:600;display:grid}.echo-dot.d-done{background:var(--ok-soft);color:var(--color-mint);border-color:#0000}.echo-dot.d-now{border-color:var(--color-amber);color:var(--color-amber)}.rhythm .read-card{max-width:none}.tap-pad{border-radius:var(--radius-lg);border:1px dashed var(--color-staff);background:var(--color-surface);width:100%;max-width:520px;height:96px;color:var(--color-muted);font:inherit;font-family:var(--font-display);letter-spacing:.1em;cursor:pointer;touch-action:manipulation;flex-direction:column;justify-content:center;align-items:center;margin:16px auto;font-size:22px;font-weight:600;transition:background 60ms;display:flex}.tap-pad span{font-family:var(--font-body);letter-spacing:0;margin-top:4px;font-size:12px;font-weight:500;display:block}.tap-pad:not(:disabled){border:1px solid var(--color-amber);color:var(--color-amber)}.tap-pad.p1:not(:disabled){background:var(--accent-soft)}.tap-pad:disabled{cursor:default}.sr-items{flex-wrap:wrap;justify-content:center;gap:8px;padding:0;list-style:none;display:flex}.sr-items li{border-radius:var(--radius-pill);border:1px solid var(--color-line);align-items:center;gap:6px;padding:4px 12px;font-size:13px;font-weight:500;display:inline-flex}.sr-items li:before{content:"";background:var(--color-mint);border-radius:4px;width:8px;height:8px}.sr-items li.bad:before{background:var(--color-coral)}.finish .callout{text-align:left;flex-direction:column;gap:12px;max-width:560px;margin:24px auto}.finish .callout .btn{align-self:flex-start}.path{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px;display:flex}.path-step{border:1px solid var(--color-line);width:36px;height:36px;font:inherit;color:var(--color-muted);cursor:pointer;background:0 0;border-radius:18px;place-items:center;font-size:13px;font-weight:600;display:grid}.path-step.done{background:var(--ok-soft);color:var(--color-mint);border-color:#0000}.path-step.now{background:var(--color-amber);color:var(--color-on-accent);border-color:#0000}.path-step:disabled{opacity:.45;cursor:default}.meter{background:var(--color-off);border-radius:3px;height:6px;margin:8px 0;overflow:hidden}.meter span,.meter div{background:var(--color-mint);border-radius:3px;height:100%;transition:width 80ms;display:block}.level-card{flex-wrap:wrap;align-items:center;gap:24px;display:flex}.level-badge{background:var(--color-tile);width:64px;height:64px;color:var(--color-text);font-family:var(--font-display);border-radius:32px;place-items:center;font-size:24px;font-weight:600;display:grid}.level-body{flex:1;min-width:180px}.level-title{font-family:var(--font-display);font-size:18px;font-weight:500}.skills{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;display:grid}.skill{flex-direction:column;gap:4px;margin:0;padding:20px;display:flex}.skill p{margin:4px 0 8px}.skill-head{justify-content:space-between;align-items:center;gap:8px;font-weight:600;display:flex}.skill-head>span{white-space:nowrap;align-items:center;gap:8px;display:inline-flex}.skill-head strong{text-align:right}.skill-head .icon{color:var(--color-muted)}.skill .btn{align-self:flex-start}.row-btns{flex-wrap:wrap;gap:8px;display:flex}.spark{align-items:flex-end;gap:3px;height:34px;margin:4px 0 8px;display:flex}.spark span{border-top:2px solid var(--color-mint);background:#5ee6a82e;border-radius:2px 2px 0 0;flex:1;max-width:14px;min-height:3px}.calendar{gap:4px;display:flex;overflow-x:auto}.cal-col{flex-direction:column;gap:4px;display:flex}.cal-day{background:var(--color-off);border-radius:4px;width:16px;height:16px}.cal-day.l1{background:#5ee6a84d}.cal-day.l2{background:#5ee6a899}.cal-day.l3{background:var(--color-mint)}.cal-day.future{visibility:hidden}.achievements{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:8px;display:grid}.ach{background:var(--color-surface);border-radius:var(--radius-md);opacity:.5;flex-direction:column;gap:4px;padding:16px;display:flex}.ach.earned{opacity:1;background:var(--color-raised)}.ach-icon{color:var(--color-muted);margin-bottom:4px}.ach.earned .ach-icon{color:var(--color-mint)}a.stat{color:inherit}@media (width<=760px){.lesson-head .path{justify-content:flex-start;width:100%}}.spots{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;display:grid}.spot{background:var(--color-raised);border-radius:var(--radius-lg);color:var(--color-text);transition:background var(--dur-state);flex-direction:column;gap:6px;min-height:44px;padding:18px;display:flex}.spot:hover{background:var(--color-tile)}.spot .label{align-items:center;gap:8px;display:flex}.spot-title{font-family:var(--font-display);font-size:16px;font-weight:500;line-height:1.3}.spot-go{color:var(--color-text-2);align-items:center;gap:4px;margin-top:auto;padding-top:8px;font-size:14px;font-weight:600;display:inline-flex}.aid-acc{flex-direction:column;gap:8px;padding:8px 0;display:flex}.aid-acc .seg{flex-wrap:wrap;align-self:flex-start}.rec-live{text-align:center;flex-direction:column;align-items:center;gap:12px;padding:24px 0;display:flex}.rec-live .label{align-items:center;gap:8px;display:flex}.rec-live .meter{width:min(420px,100%);height:8px}.rec-note{font-family:var(--font-display);color:var(--color-amber);min-height:64px;font-size:64px;font-weight:600;line-height:1}.hum-edit{flex-direction:column;gap:16px;display:flex}.hum-edit .sheet-scroll{max-height:40vh}.chips-row{gap:6px;padding:4px 2px 8px;display:flex;overflow-x:auto}.note-chip{border-radius:var(--radius-md);border:1px solid var(--color-line);background:var(--color-surface);min-width:52px;min-height:52px;color:var(--color-text);font:inherit;cursor:pointer;flex-direction:column;flex-shrink:0;justify-content:center;align-items:center;gap:2px;font-weight:600;display:flex}.note-chip small{color:var(--color-muted);font-size:11px;font-weight:500}.note-chip.on{border-color:var(--color-amber);color:var(--color-amber)}.edit-bar{flex-direction:column;gap:12px;margin:0;display:flex}.edit-btns{flex-wrap:wrap;gap:8px;display:flex}.hum-settings{margin:0}.hum-settings input[type=search]{width:min(320px,60%)}.hum-settings input[type=range]{width:min(260px,50%)}.section-head .row-btns{margin-left:auto}.path-switch{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;max-width:720px;margin:0 0 32px;display:grid}.path-opt{text-align:left;border:1px solid var(--color-line);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);font:inherit;cursor:pointer;transition:border-color var(--dur-state), background var(--dur-state);flex-direction:column;align-items:flex-start;gap:4px;padding:12px 14px;display:flex}.path-opt .path-title{font-family:var(--font-display);font-size:15px;font-weight:600}.path-opt.on{border-color:var(--color-amber);background:#ffb54714}.stage-head{border-top:1px solid var(--color-line);flex-direction:column;gap:4px;margin-top:8px;padding:8px 0 16px;display:flex}.unit:first-of-type .stage-head{border-top:0;margin-top:0}.unit-num.stage-chords{color:var(--color-violet)}@media (width<=600px){.path-switch{grid-template-columns:1fr}}.label.mint{color:var(--color-mint)}.label.coral{color:var(--color-coral)}.btn.ghost{color:var(--color-text-2);background:0 0;border-color:#0000}.btn.ghost:hover:not(:disabled){color:var(--color-text);border-color:var(--color-line)}.icon-btn{border-radius:var(--radius-pill);border:1px solid var(--color-line);width:44px;height:44px;color:var(--color-text);cursor:pointer;background:0 0;flex:none;place-items:center;display:grid}.icon-btn.hidden{visibility:hidden}.onb{background:var(--color-ground);width:100%;height:100%;padding-top:env(safe-area-inset-top);flex-direction:column;display:flex}.onb-top{align-items:center;gap:16px;width:100%;max-width:900px;margin:0 auto;padding:20px 40px 0;display:flex}.onb-bar{border-radius:var(--radius-pill);background:var(--color-off);flex:1;height:8px;overflow:hidden}.onb-bar span{background:var(--color-amber);border-radius:inherit;height:100%;transition:width var(--dur-panel) ease-out;display:block}.onb-body{min-height:0;animation:onb-in var(--dur-panel) ease-out;flex:1;overflow-y:auto}@keyframes onb-in{0%{opacity:0;transform:translate(16px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.onb-body{animation:none}}.onb-step{flex-direction:column;gap:24px;max-width:760px;margin:0 auto;padding:32px 40px 48px;display:flex}.onb-head h1{margin-bottom:8px;font-size:32px}.onb-head p{max-width:600px;margin:0;font-size:16px}.onb-foot{padding:16px 40px calc(16px + env(safe-area-inset-bottom));border-top:1px solid var(--color-line);justify-content:flex-end;align-items:center;gap:12px;width:100%;max-width:900px;margin:0 auto;display:flex}.onb-go{gap:8px;min-width:180px;min-height:52px;font-size:16px}.onb-field{font-family:var(--font-display);border-radius:var(--radius-lg);border:1px solid var(--color-line);background:var(--color-surface);color:var(--color-text);max-width:480px;padding:16px 20px;font-size:24px}.onb-field:focus{border-color:var(--color-amber);outline:none}.choice-list{flex-direction:column;gap:8px;max-width:560px;display:flex}.choice-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px;display:grid}.choice{text-align:left;border:1px solid var(--color-line);border-radius:var(--radius-md);background:var(--color-surface);width:100%;min-height:64px;color:var(--color-text);font:inherit;cursor:pointer;transition:border-color var(--dur-state), background var(--dur-state);align-items:center;gap:14px;padding:14px 16px;display:flex}.choice:hover{border-color:var(--color-muted)}.choice.on{border-color:var(--color-amber);background:#ffb54714}.choice-icon{border-radius:var(--radius-pill);background:var(--color-tile);width:40px;height:40px;color:var(--color-text-2);flex:none;place-items:center;display:grid}.choice.on .choice-icon{color:var(--color-amber)}.choice-text{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.choice-title{font-size:16px;font-weight:600}.choice-box{border:1.5px solid var(--color-staff);width:24px;height:24px;color:var(--color-on-accent);border-radius:6px;flex:none;place-items:center;display:grid}.choice.on .choice-box{background:var(--color-amber);border-color:var(--color-amber)}.welcome{text-align:center;justify-content:center;align-items:center;gap:20px;padding:40px 20px}.welcome-keys{width:min(420px,90%)}.welcome-brand{letter-spacing:-.02em;margin:8px 0 0;font-size:56px}.welcome-lead{max-width:520px;margin:0;font-size:18px}.welcome-go{min-width:240px;min-height:56px;font-size:18px}.mic-panel{border-radius:var(--radius-lg);background:var(--color-surface);border:1px solid var(--color-line);align-items:center;gap:16px;max-width:560px;min-height:88px;padding:20px;display:flex}.mic-panel.live{border-color:var(--color-mint)}.mic-panel.ok{border-color:var(--color-mint);background:var(--ok-soft)}.mic-big{font-family:var(--font-display);font-size:20px;font-weight:600}.mic-dot{border-radius:var(--radius-pill);background:var(--color-mint);width:40px;height:40px;color:var(--color-on-accent);flex:none;place-items:center;display:grid}.mic-meter{border-radius:var(--radius-pill);background:var(--color-off);flex:none;align-items:flex-end;width:12px;height:40px;display:flex;overflow:hidden}.mic-meter span{background:var(--color-mint);transform-origin:bottom;width:100%;height:100%;transition:transform 80ms linear;display:block}.check-dots{gap:6px;display:flex}.check-dots span{border-radius:var(--radius-pill);background:var(--color-off);width:18px;height:8px}.check-dots span.now{background:var(--color-amber);width:32px}.check-dots span.ok{background:var(--color-mint)}.check-dots span.miss{background:var(--color-coral)}.check-staff{background:var(--color-surface);border-radius:var(--radius-lg);max-width:360px;padding:8px 16px}.check-msg{color:var(--color-coral);min-height:24px;font-weight:600}.check-msg.ok{color:var(--color-mint)}.check-actions{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.center-step{text-align:center;align-items:center}.level-badge{border-radius:var(--radius-pill);border:2px solid var(--color-amber);width:120px;height:120px;font-family:var(--font-display);color:var(--color-amber);place-items:center;font-size:48px;font-weight:600;display:grid}.insights{text-align:left;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;width:100%;max-width:560px;display:grid}.insights ul{margin:0;padding-left:18px}.plan-list{flex-direction:column;gap:8px;max-width:600px;display:flex}.plan-item{border-radius:var(--radius-md);background:var(--color-surface);border:1px solid var(--color-line);align-items:flex-start;gap:14px;padding:14px 16px;display:flex}.onb-auth{max-width:420px}.onb-auth input{font-size:16px}@media (width<=700px){.onb-top{padding:12px 16px 0}.onb-step{padding:24px 16px 32px}.onb-head h1{font-size:26px}.onb-foot{padding:12px 16px calc(12px + env(safe-area-inset-bottom))}.onb-foot .onb-go{flex:1}.welcome-brand{font-size:44px}}.note-chip.preset{text-align:left;align-items:flex-start;min-width:150px;max-width:220px;padding:8px 12px}.note-chip.preset small{white-space:normal}.chart-field{flex-direction:column;gap:8px;display:flex}.chart-field textarea{font-family:var(--font-display);border-radius:var(--radius-md);border:1px solid var(--color-line);background:var(--color-ground);color:var(--color-text);resize:vertical;padding:12px 14px;font-size:18px;line-height:1.5}.chart-field textarea:focus{border-color:var(--color-amber);outline:none}.style-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:8px;display:grid}.genre-chips{flex-wrap:wrap;gap:8px;margin:0 0 24px;display:flex}.kb-size{flex-direction:column;gap:12px;display:flex}.kb-size .choice{min-height:52px;padding:10px 14px}.kb-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;display:grid}.kb-end{border-radius:var(--radius-pill);background:var(--color-tile);width:40px;height:40px;color:var(--color-mint);flex:none;place-items:center;display:grid}.kb-settings{border-bottom:1px solid var(--color-line);flex-direction:column;gap:12px;padding:12px 0;display:flex}.stage{position:relative}.cheer-layer{z-index:5;pointer-events:none;justify-content:center;height:0;display:flex;position:absolute;inset:0 0 auto}.cheer{font-family:var(--font-display);letter-spacing:-.01em;border-radius:var(--radius-pill);white-space:nowrap;background:#0e0e12d1;padding:6px 18px;font-size:30px;font-weight:700;animation:.9s cubic-bezier(.2,1.4,.4,1) forwards cheer-pop;position:absolute;top:18px}.cheer-perfect{color:var(--color-mint);box-shadow:0 0 0 2px #5ee6a880}.cheer-great{color:var(--color-amber);box-shadow:0 0 0 2px #ffb54773}.cheer-good{color:var(--color-text)}.cheer-late{color:var(--color-coral);font-size:22px}.cheer-wrong{color:var(--color-coral);font-size:24px;animation-name:cheer-shake}@keyframes cheer-pop{0%{opacity:0;transform:translateY(14px)scale(.6)}25%{opacity:1;transform:translateY(0)scale(1.15)}45%{transform:scale(1)}80%{opacity:1;transform:translateY(-6px)}to{opacity:0;transform:translateY(-18px)}}@keyframes cheer-shake{0%{opacity:0;transform:translate(0)}15%{opacity:1;transform:translate(-8px)}30%{transform:translate(8px)}45%{transform:translate(-5px)}60%{opacity:1;transform:translate(0)}to{opacity:0}}.streak{border-radius:var(--radius-pill);color:var(--color-amber);font-family:var(--font-display);background:#ffb54724;align-items:center;gap:6px;padding:6px 12px;font-size:18px;font-weight:700;animation:.3s ease-out streak-bump;display:inline-flex;position:absolute;top:18px;right:18px}.streak.hot{background:var(--color-amber);color:var(--color-on-accent)}@keyframes streak-bump{0%{transform:scale(1.35)}to{transform:scale(1)}}.sheet-svg .vf-stavenote[data-st=correct]{transform-box:fill-box;transform-origin:50%;animation:.42s cubic-bezier(.2,1.6,.4,1) note-pop}.sheet-svg .vf-stavenote[data-st=wrong]{transform-box:fill-box;transform-origin:50%;animation:.32s ease-out note-shake}@keyframes note-pop{0%{transform:scale(1)}40%{transform:scale(1.45)}to{transform:scale(1)}}@keyframes note-shake{0%,to{transform:translate(0)}30%{transform:translate(-4px)}60%{transform:translate(4px)}}.key.k-correct{animation:.45s ease-out key-glow}@keyframes key-glow{0%{filter:brightness(1.5)}to{filter:none}}.results-hero{flex-direction:column;align-items:center;gap:6px;padding:4px 0 8px;display:flex}.results-headline{font-family:var(--font-display);font-size:26px;font-weight:700;animation:.5s cubic-bezier(.2,1.4,.4,1) .15s both cheer-in}@keyframes cheer-in{0%{opacity:0;transform:scale(.6)}to{opacity:1;transform:scale(1)}}.stars{gap:6px;display:inline-flex}.star path{fill:var(--color-off)}.star.on{animation:.45s cubic-bezier(.2,1.6,.4,1) both star-in}.star.on path{fill:var(--color-amber)}@keyframes star-in{0%{opacity:0;transform:scale(0)rotate(-40deg)}to{opacity:1;transform:none}}.confetti{pointer-events:none;z-index:1000;width:100vw;height:100vh;position:fixed;inset:0}@media (prefers-reduced-motion:reduce){.cheer,.streak,.star.on,.results-headline,.sheet-svg .vf-stavenote[data-st],.key.k-correct{animation:none!important}}.cheer-anchor{z-index:5;height:0;position:relative}.cheer-anchor .cheer-layer{top:-8px}.lesson-complete{text-align:center;flex-direction:column;align-items:center;gap:12px;padding:48px 24px 16px;display:flex}.run-card-wrap{z-index:6;background:#0a0a0db8;place-items:center;padding:16px;animation:.22s ease-out fade-in;display:grid;position:absolute;inset:0}.run-card{text-align:center;background:var(--color-raised);border:1px solid var(--color-line);border-radius:20px;flex-direction:column;align-items:center;gap:10px;min-width:min(420px,100%);padding:28px 36px;animation:.38s cubic-bezier(.2,1.4,.4,1) cheer-in;display:flex}.run-score{font-family:var(--font-display);font-size:56px;font-weight:700;line-height:1}.run-score span{color:var(--color-muted);margin-left:4px;font-size:18px}.run-card-actions{flex-wrap:wrap;justify-content:center;gap:10px;margin-top:8px;display:flex}.run-card-actions .btn{gap:8px;min-height:52px}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@media (orientation:landscape) and (width>=900px){.screen.lesson{padding-bottom:max(16px, env(safe-area-inset-bottom));flex-direction:column;display:flex}.screen.lesson>*{width:100%;max-width:1180px}.screen.lesson>.lesson-head{flex-shrink:0}.screen.lesson>.step:not(.finish){flex-direction:column;flex:1 0 auto;justify-content:center;padding:36px 56px;display:flex}.step>h2{margin-bottom:16px;font-size:30px}.lead,.step .prose p,.step .prose li{font-size:19px;line-height:1.55}.prompt-big{font-size:36px}.read-card{max-width:400px}.options .option{min-height:64px;font-size:18px}.step .feedback{min-height:40px;font-size:17px}.step .actions .btn,.done-box .btn{min-width:200px;min-height:56px;font-size:17px}.screen.lesson.lesson-play{overflow:hidden}.lesson-play .play-step{flex-direction:column;flex:1;gap:8px;min-height:0;display:flex}.lesson-play .play-step-head{flex-shrink:0;align-items:baseline;gap:12px;display:flex}.lesson-play .play-step-head h2{margin:0;font-size:20px}.lesson-play .practice{flex:1;min-height:0}.lesson-play .sheet-scroll,.practice .practice-main .sheet-scroll{max-height:none}.lesson-play .step-next{flex-shrink:0;margin-top:0}}.step-dots{flex-wrap:nowrap;flex:240px;gap:3px;max-width:420px}.sd{width:auto;height:10px;transition:background var(--dur-panel);border-radius:5px;flex:1}@media (orientation:landscape) and (width>=900px){.screen.lesson>.step .piano{height:170px!important}.coach{min-height:0;overflow-y:auto}.coach>.coach-top{order:0}.coach>.coach-card,.coach>.results{order:1}.coach>.coach-actions,.coach>.link{order:2}.coach>.coach-aids{order:3}.coach>.coach-hint{order:4}}@media (orientation:landscape) and (height<=720px){.lesson-head{margin-bottom:8px}.screen.fullscreen,.app.fullscreen .screen{padding-top:max(10px, env(safe-area-inset-top))}.coach-card{padding:14px}.coach{gap:12px}}.song-art{font-family:var(--font-display);letter-spacing:.02em;color:#fff;background:linear-gradient(135deg, hsl(var(--h) 70% 52%), hsl(calc(var(--h) + 40) 65% 34%));border-radius:12px;flex:none;place-items:center;font-weight:600;display:inline-grid;box-shadow:inset 0 0 0 1px #ffffff14}.song-picker{flex-direction:column;gap:10px;display:flex}.song-grid{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px;display:grid}.song-pick{text-align:left;border:1px solid var(--color-line);border-radius:var(--radius-md);background:var(--color-surface);min-height:72px;color:var(--color-text);font:inherit;cursor:pointer;transition:border-color var(--dur-state), background var(--dur-state), transform var(--dur-state);align-items:center;gap:12px;padding:10px 12px;display:flex;position:relative}.song-pick:hover:not(:disabled){border-color:var(--color-muted)}.song-pick:active:not(:disabled){transform:scale(.98)}.song-pick.on{border-color:var(--color-amber);background:#ffb54714}.song-pick:disabled{opacity:.45;cursor:default}.song-pick-text{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.song-pick-title{white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.song-pick-check{border:1.5px solid var(--color-line);width:24px;height:24px;color:var(--color-on-accent);border-radius:50%;flex:none;place-items:center;display:grid}.song-pick.on .song-pick-check{background:var(--color-amber);border-color:#0000;animation:.25s ease-out note-pop}.kind-tag{letter-spacing:.02em;color:var(--color-violet);font-size:11px;font-weight:600}.kind-tag.melody{color:var(--color-mint)}.song-picker-foot{margin:4px 0 0}.songs-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:20px;display:flex}.songs-head h1{margin:4px 0 6px}.songs-actions{background:linear-gradient(transparent, var(--color-ground) 30%);justify-content:flex-end;padding:12px 0;position:sticky;bottom:0}.songs-next{border-radius:var(--radius-lg);background:var(--color-raised);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:16px;padding:16px 18px;display:flex}.path-hint{flex-wrap:wrap;align-items:center;gap:14px;display:flex}.path-hint>div{flex:220px}.song-route{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.route-item{border-radius:var(--radius-lg);background:var(--color-raised);border:1px solid #0000;align-items:center;gap:16px;padding:14px 16px;display:flex}.route-item.ready{background:linear-gradient(90deg, #5ee6a814, var(--color-raised) 60%);border-color:#5ee6a866}.route-body{flex-direction:column;flex:1;gap:6px;min-width:0;display:flex}.route-title{font-size:17px;font-weight:600}.song-route.compact .route-title{font-size:15px}.route-bar{background:var(--color-tile);border-radius:99px;height:8px;overflow:hidden}.route-bar>span{border-radius:inherit;background:linear-gradient(90deg, var(--color-amber), #ffd58a);height:100%;transition:width .6s;display:block}.route-item.ready .route-bar>span{background:var(--color-mint)}.route-note{color:var(--color-text-2)}.route-lock{width:40px;height:40px;color:var(--color-muted);flex:none;place-items:center;display:grid}.route-item .btn{flex:none}.link-quiet{color:var(--color-text-2);align-items:center;gap:2px;text-decoration:none;display:inline-flex}.unlock-chip{color:var(--color-coral);background:#ff7a6b1f;border-radius:99px;align-items:center;gap:5px;width:fit-content;margin-top:6px;padding:3px 9px;font-size:12px;font-weight:600;display:inline-flex}.lesson-row.done .unlock-chip{color:var(--color-mint);background:#5ee6a81f}.unlock-card{border-radius:var(--radius-lg);text-align:left;background:var(--color-raised);border:1px solid var(--color-amber);align-items:center;gap:16px;width:100%;max-width:560px;margin-top:18px;padding:16px 18px;animation:.5s .6s both unlock-in;display:flex;box-shadow:0 0 40px #ffb5472e}@keyframes unlock-in{0%{opacity:0;transform:translateY(12px)scale(.94)}70%{transform:translateY(0)scale(1.03)}to{opacity:1;transform:none}}.unlock-card>div{flex:1}.unlock-title{font-family:var(--font-display);margin:2px 0;font-size:20px}.goal-callout{align-items:flex-start;gap:14px;display:flex}@media (width<=640px){.route-item,.unlock-card{flex-wrap:wrap}}
