.practice-page{--lab-ink:#253f35;--lab-paper:#fffdf8;--lab-sage:#dce7d5;--lab-apricot:#f2c5a4;color:var(--lab-ink);background:#f4f0e6;padding-bottom:70px}
.practice-intro{padding-top:65px;padding-bottom:55px;display:flex;align-items:flex-end;justify-content:space-between;gap:40px}.practice-intro h1{font-size:clamp(42px,5vw,70px)}.practice-intro>p{max-width:360px;font-size:17px;line-height:1.8;margin:0}.practice-intro .eyebrow{color:#7c6c54}
.practice-app{max-width:1320px;margin:0 auto;background:var(--lab-paper);border:1px solid #d7dece;border-radius:14px;box-shadow:0 16px 50px -40px #233e2f60;padding:24px;position:relative}
.lab-toolbar{display:flex;align-items:flex-end;gap:20px;justify-content:space-between}.song-choice{font-size:10px;letter-spacing:.08em;text-transform:uppercase;display:grid;gap:7px;flex:1;max-width:360px}.song-choice select{font-size:16px;letter-spacing:0;text-transform:none;padding:9px 35px 9px 12px;border:1px solid #ccd3c2;border-radius:6px;color:inherit;background:#f8faf4;width:100%;min-height:45px}
.lab-modes{display:flex;gap:4px;background:#edf1e6;border-radius:8px;padding:4px}.lab-modes button{border:0;background:transparent;padding:10px 16px;color:#53634c;font-size:12px;border-radius:5px;min-height:40px}.lab-modes button[aria-pressed=true]{background:#253f35;color:white}
.lab-primary,.lab-secondary{display:inline-flex;align-items:center;justify-content:center;min-height:42px;border-radius:6px;padding:8px 14px;font-size:12px;line-height:1.4;white-space:nowrap;border:1px solid #cbd4c3;color:#344c3d;background:transparent}.lab-primary{background:#253f35;border-color:#253f35;color:#fffdf8}.lab-secondary[aria-pressed=true]{background:#e1eacf;border-color:#82996e}.lab-secondary:disabled{opacity:.5;cursor:default}
.lab-song-meta{display:flex;align-items:center;justify-content:space-between;gap:15px;font-size:11px;color:#68735e;padding:16px 0 6px}.lab-score{height:180px;background:#fffdf8;border-bottom:1px solid #e5e7dd;display:flex;align-items:center;justify-content:center;overflow:hidden}.lab-score svg{height:100%;width:100%;max-width:1000px;display:block;color:#253f35}
.lab-controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:14px 0}.tempo-control{display:flex;gap:8px;align-items:center;font-size:11px;margin:0 8px}.tempo-control input{width:92px;accent-color:#50704d}.tempo-control output{width:24px;font-variant-numeric:tabular-nums}
.lab-guidance{display:flex;gap:15px;align-items:center;min-height:46px;border-top:1px solid #e5e7dd;padding:8px 0}.lab-guidance p{font-size:12px;margin:0;flex:1}.lab-progress{width:115px;background:#e5eadd;height:4px;border-radius:2px;overflow:hidden}.lab-progress span{display:block;width:100%;height:100%;background:#76966d;transform:scaleX(0);transform-origin:left;transition:transform .16s ease}#note-counter{font-size:11px;font-variant-numeric:tabular-nums;min-width:42px}
.lab-keyboard-scroll{overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:thin;scrollbar-color:#93a388 #e4e6dc;border-radius:6px;touch-action:pan-x;position:relative;background:#26382e;box-shadow:0 3px 0 #26382e;padding-top:8px}
#lab-keyboard{--key-width:52px;position:relative;width:calc(var(--key-width)*52);height:195px;touch-action:pan-x;user-select:none}
.lab-key{position:absolute;border:1px solid #bac2b4;top:0;bottom:0;border-radius:0 0 5px 5px;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:5px;padding:8px 1px 11px;touch-action:none;font-family:var(--sans);transition:background .08s ease;transform:none!important}
.lab-key.white{width:var(--key-width);height:100%;background:linear-gradient(#fafaf3,#fffdf7);z-index:1;color:#253f35}.lab-key.black{width:calc(var(--key-width)*.62);height:61%;background:linear-gradient(90deg,#19251e,#354239);border-color:#17261c;z-index:2;color:#fffaf0;box-shadow:0 5px 2px #13201955;transform:translateX(-50%)!important}
.lab-key>span{font-size:11px}.lab-key>small{font-size:9px;opacity:.6}.lab-key .key-hint{position:absolute;bottom:47px;font-size:9px;letter-spacing:0;padding:3px 4px;background:#253f35;color:white;border-radius:3px;line-height:1.1;display:none}.lab-key.black .key-hint{bottom:37px;background:#f2c5a4;color:#253f35;font-size:8px}.lab-key.expected .key-hint{display:block}.lab-key.white.expected{background:#e3edda;box-shadow:inset 0 0 0 2px #718b5e}.lab-key.black.expected{background:#5a774b;box-shadow:inset 0 0 0 2px #b6cc9f}.lab-key.white.pressed{background:#efba91}.lab-key.black.pressed{background:#9b6544}.lab-key.miss{outline:2px solid #bb785b;outline-offset:-3px}
.keyboard-tools{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-top:14px;flex-wrap:wrap}.keyboard-tools>div{display:flex;gap:5px}.keyboard-tools .lab-secondary{font-size:10px;min-height:36px;padding:6px 11px}.keyboard-octave{font-size:10px;display:flex;align-items:center;gap:8px}.keyboard-octave select{font-size:11px;padding:5px;background:#fffdf8;color:#253f35;border:1px solid #cbd4c3;border-radius:4px}
.lab-result{position:absolute;inset:75px 15% auto;background:#f4f8ec;border:1px solid #bacdae;border-radius:14px;padding:35px;text-align:center;z-index:8;box-shadow:0 15px 50px #253f3520}.lab-result[hidden]{display:none}.lab-result h2{font-size:40px}.lab-result p{font-size:14px;margin:20px 0}.practice-explainer{max-width:1320px;display:grid;grid-template-columns:repeat(3,1fr);gap:45px;padding-top:70px;padding-bottom:65px}.practice-explainer .chapter-tag{font-size:10px;color:#876447}.practice-explainer h3{font-size:25px;line-height:1.3;margin:16px 0}.practice-explainer p,.lab-help p{font-size:14px;line-height:1.9;color:#5a6857}.lab-help{max-width:1320px;border-top:1px solid #d5ddcd;padding-top:50px}.lab-help h2{font-size:35px;margin-bottom:35px}.lab-help h3{font-size:24px;margin-bottom:15px}.lab-help .two-col{gap:60px}.lab-help .btn{margin-top:20px}
.turn-phone{display:none}.practice-app:focus-within{scroll-margin-top:95px}.practice-app.is-focused{position:fixed;inset:0;z-index:150;max-width:none;border-radius:0;overflow-y:auto;padding:16px max(18px,env(safe-area-inset-left));display:flex;flex-direction:column;justify-content:center}.practice-app.is-focused .practice-workspace{width:100%;max-width:1350px;margin:auto}.practice-app.is-focused .lab-score{height:clamp(120px,25vh,250px)}.practice-app.is-focused #lab-keyboard{height:clamp(130px,30vh,260px)}
@media(max-width:1100px){.practice-app{margin:0 22px;padding:18px}.lab-controls{gap:7px}.lab-primary,.lab-secondary{font-size:11px;padding:8px 10px}.lab-modes button{padding:8px 11px}.tempo-control{margin:0}.lab-toolbar{gap:12px}.practice-explainer{gap:25px}}
@media(max-width:700px){.practice-intro{padding-top:40px;padding-bottom:30px;display:block}.practice-intro>p{font-size:14px;margin-top:20px}.practice-app{margin:0 15px;padding:16px}.practice-explainer{grid-template-columns:1fr;gap:20px;padding-top:45px}.practice-explainer h3{margin:10px 0}.lab-help .two-col{gap:25px}.lab-toolbar{flex-wrap:wrap}.song-choice{max-width:none;min-width:100%}.lab-modes{flex:1}.lab-modes button{flex:1;font-size:10px}.lab-song-meta{font-size:10px}.lab-score{height:130px}.lab-controls .lab-secondary,.lab-controls .lab-primary{font-size:10px;min-height:36px}.lab-guidance{flex-wrap:wrap;gap:8px}.lab-guidance p{flex-basis:100%;font-size:11px}.lab-progress{flex:1}.lab-result{inset:100px 5% auto;padding:24px}.lab-result h2{font-size:30px}.keyboard-octave{display:none}}
@media(max-width:700px) and (orientation:portrait){.practice-app:not(.allow-portrait) .practice-workspace{display:none}.practice-app:not(.allow-portrait) .turn-phone{display:flex;min-height:330px;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:20px}.turn-phone h2{font-size:31px;margin:24px 0 16px}.turn-phone p{font-size:13px;max-width:260px}.phone-symbol{width:68px;height:35px;border:2px solid #718b5e;border-radius:7px;background:#e4eddb;position:relative;transform:rotate(-8deg)}.phone-symbol:after{content:'';position:absolute;width:4px;height:4px;border-radius:50%;background:#718b5e;right:4px;top:14px}}
@media(orientation:landscape) and (max-height:550px){
 .practice-intro{padding:20px 24px}.practice-intro h1{font-size:28px}.practice-intro h1 br{display:none}.practice-intro .eyebrow{font-size:8px;margin-bottom:8px}.practice-intro>p{font-size:11px;max-width:300px}.practice-app{margin:0 12px;padding:12px}.lab-toolbar{gap:10px;align-items:center}.song-choice{font-size:8px;max-width:260px;gap:3px;min-width:0}.song-choice select{font-size:12px;min-height:34px;padding:6px}.lab-modes button{font-size:10px;padding:6px 10px;min-height:30px}.lab-modes{padding:2px}.lab-toolbar>.lab-secondary{font-size:10px;min-height:33px}.lab-song-meta{padding:5px 0;font-size:9px}.lab-score{height:112px}.lab-controls{padding:6px 0;gap:6px}.lab-controls .lab-primary,.lab-controls .lab-secondary{min-height:31px;padding:5px 8px;font-size:9px}.tempo-control{font-size:9px;gap:4px}.tempo-control input{width:60px}.lab-guidance{min-height:27px;padding:4px 0;gap:8px;flex-wrap:nowrap}.lab-guidance p{font-size:10px;flex-basis:auto}.lab-progress{width:60px;flex:initial}.lab-keyboard-scroll{padding-top:5px}#lab-keyboard{height:135px;--key-width:48px}.lab-key>span{font-size:10px}.lab-key>small{font-size:8px}.lab-key .key-hint{bottom:43px;font-size:8px}.lab-key.black .key-hint{bottom:31px}.keyboard-tools{padding-top:7px;gap:5px}.keyboard-tools .lab-secondary{font-size:9px;min-height:29px;padding:5px 8px}.keyboard-octave{display:none}.practice-app.is-focused{padding:8px max(14px,env(safe-area-inset-left));justify-content:flex-start}.practice-app.is-focused .lab-score{height:90px}.practice-app.is-focused #lab-keyboard{height:120px}.practice-app.is-focused .practice-workspace{margin:0 auto}.lab-result{inset:50px 20% auto;padding:20px}.lab-result h2{font-size:27px}.lab-result p{margin:12px 0;font-size:12px}}
@media(prefers-reduced-motion:reduce){.lab-progress span,.lab-key{transition:none}}
@media print{.site-header,.site-footer,.practice-intro,.lab-toolbar,.lab-controls,.lab-guidance,.lab-keyboard-scroll,.keyboard-tools,.practice-explainer,.lab-help,.preview-marker{display:none}.practice-app{border:0;box-shadow:none}}
@media(orientation:landscape) and (max-height:430px){.practice-app.is-focused .song-choice{font-size:0;gap:0}.practice-app.is-focused .song-choice select{font-size:12px}.practice-app.is-focused .lab-score{height:78px}.practice-app.is-focused #lab-keyboard{height:108px}.practice-app.is-focused .lab-song-meta{padding:3px 0}.practice-app.is-focused .lab-controls{padding:4px 0}.practice-app.is-focused .lab-toolbar{min-height:34px}.practice-app.is-focused .keyboard-tools{padding-top:5px}}
