@font-face{font-family:OMEH;src:url('./assets/fonts/noto-sans-regular.woff') format('woff');font-weight:400;font-display:swap}
@font-face{font-family:OMEH;src:url('./assets/fonts/noto-sans-bold.woff') format('woff');font-weight:700;font-display:swap}
:root{color-scheme:dark;--bg:#0d1011;--surface:#171c1d;--surface-2:#202728;--border:#343e3e;--text:#f3f5ed;--muted:#b5c1ba;--lime:#c5f36b;--purple:#b5a0ec;--amber:#ffd16a;--dock-height:240px}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:OMEH,Arial,sans-serif;font-size:15px;line-height:1.55;padding-bottom:calc(var(--dock-height) + 22px)}button,input,select{font:inherit}button,a,input,select{touch-action:manipulation}a{color:inherit;text-underline-offset:4px}button{cursor:pointer}button:disabled{cursor:default;opacity:.5}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid var(--amber);outline-offset:4px}input[type=checkbox]{accent-color:var(--lime);width:18px;height:18px}input[type=range]{accent-color:var(--lime);width:100px}input[type=password],input[type=text],select{background:#111718;border:1px solid #54605b;border-radius:8px;color:var(--text);padding:10px 12px;font-size:16px;max-width:100%}label{display:flex;gap:8px;align-items:center}h1,h2,h3,p{margin-top:0}h2{font-size:27px;line-height:1.2;letter-spacing:-.035em;margin-bottom:10px}h3{font-size:18px;line-height:1.3;margin-bottom:8px}p{margin-bottom:14px}.wrap{width:min(1240px,calc(100% - 64px));margin:auto}.site-header{display:flex;gap:23px;align-items:center;padding:22px 0;border-bottom:1px solid var(--border)}.brand img{width:142px;height:58px;object-fit:contain;display:block}.resource-title{display:grid;gap:2px;border-left:1px solid var(--border);padding-left:22px}.resource-title strong{font-size:17px}.resource-title span{font-size:12px;color:var(--muted)}.site-links{margin-left:auto;display:flex;gap:20px;font-size:12px;color:var(--muted)}.site-links a{text-decoration:none}.site-links a:hover{color:var(--lime)}.eyebrow{color:var(--purple);text-transform:uppercase;letter-spacing:.13em;font-size:11px;font-weight:700;margin:0 0 8px}.course-heading{display:flex;gap:35px;justify-content:space-between;align-items:center;padding:29px 0 24px}.course-heading h1{font-size:43px;line-height:1.1;letter-spacing:-.05em;margin:0 0 8px}.title-dot{color:var(--lime)}.course-subtitle{color:var(--muted);margin:0;font-size:14px}.course-progress{width:255px;max-width:100%;font-size:12px}.course-progress>div:first-child{display:flex;justify-content:space-between;gap:10px;margin-bottom:8px}.course-progress small{display:block;color:var(--muted);font-size:11px;margin-top:7px}.progress-track{height:5px;background:#2e3732;border-radius:6px;overflow:hidden}.progress-track span{display:block;height:100%;width:0;background:var(--lime);transition:width .2s}.stage-nav{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin-bottom:24px}.stage-button{min-height:60px;display:flex;align-items:center;gap:10px;padding:12px 14px;border:1px solid var(--border);border-radius:10px;background:var(--surface);color:var(--muted);text-align:left;font-size:13px}.stage-button[aria-current=step]{background:#27351d;border-color:#526f30;color:var(--lime)}.stage-number{flex-shrink:0;display:grid;place-items:center;width:25px;height:25px;border-radius:50%;background:#303a35;font-size:11px;font-weight:700}.stage-button[aria-current=step] .stage-number{background:var(--lime);color:#1c2911}.lesson-content{min-height:300px}.welcome-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:26px}.welcome-copy{padding:24px 0 8px}.welcome-copy h2{font-size:37px;max-width:520px}.welcome-copy p{max-width:570px;color:var(--muted)}.welcome-copy h2 em{font-style:normal;color:var(--lime)}.button{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:44px;padding:10px 17px;border:1px solid #45524c;border-radius:8px;background:#232b27;color:var(--text);font-size:13px;text-decoration:none;line-height:1.3}.button:hover{background:#303b33}.button.primary{background:var(--lime);color:#1a2810;border-color:var(--lime);font-weight:700}.button.primary:hover{background:#d5ff8e}.button.purple{background:#39304e;border-color:#79679b;color:#e2d7ff}.button.text-button{border-color:transparent;background:transparent;padding-left:0;color:var(--muted)}.button.compact{min-height:36px;padding:7px 12px;font-size:12px}.button-row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.song-card{padding:24px;border:1px solid var(--border);border-radius:16px;background:linear-gradient(135deg,#252c1f,var(--surface));display:flex;flex-direction:column;justify-content:space-between;gap:22px}.song-card .song-icon{height:75px;display:flex;gap:5px;align-items:flex-end;color:var(--lime)}.song-icon i{display:block;background:currentColor;width:17px;border-radius:5px}.song-icon i:nth-child(1){height:36px}.song-icon i:nth-child(2){height:51px}.song-icon i:nth-child(3){height:69px}.song-icon i:nth-child(4){height:51px}.song-icon i:nth-child(5){height:36px}.song-meta{font-size:12px;color:var(--muted)}.song-card h3{font-size:27px;margin:7px 0}.mini-tags{display:flex;gap:7px;flex-wrap:wrap;font-size:11px}.mini-tags span,.badge{display:inline-block;background:#303b30;color:#d1dec8;border-radius:5px;padding:4px 8px;font-size:11px}.badge.purple{background:#352b48;color:#dccfff}.badge.amber{background:#423922;color:#ffe1a0}.lesson-layout{display:grid;grid-template-columns:215px minmax(0,1fr);gap:24px}.section-list{display:grid;gap:7px;align-content:start}.section-list-title{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.1em;margin-bottom:4px}.section-button{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;text-align:left;padding:11px 12px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--muted);font-size:12px}.section-button small{display:block;color:#a6b5a9;font-size:11px;margin-top:2px}.section-button[aria-current=true]{background:#30293e;border-color:#756294;color:#eee6ff}.section-button .complete-mark{color:var(--lime);font-size:14px}.task-panel{min-width:0}.task-panel>.eyebrow{margin-top:0}.task-intro{color:var(--muted);font-size:14px;max-width:800px}.instruction{padding:15px 18px;border-left:3px solid var(--lime);background:#1c251c;border-radius:0 10px 10px 0;margin:15px 0 18px;font-size:14px}.instruction strong{color:var(--lime)}.score-paper{background:#fbfaf5;color:#202e26;border-radius:12px;padding:13px 13px 5px;margin-top:14px}.score-heading{font-size:11px;display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;padding:0 5px;color:#4c5b4f}.score-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.score-grid svg{display:block;width:100%;height:auto;overflow:visible}.score-grid .staff-line{stroke:#9ca79b;stroke-width:.8}.score-grid .bar-line{stroke:#4d594e;stroke-width:1.2}.score-grid .final-bar-line{stroke:#25372b;stroke-width:3}.score-grid .bar-number{fill:#596951;font-size:12px;font-family:OMEH,Arial,sans-serif}.score-grid .time-signature{font-family:Georgia,serif;font-weight:700;font-size:25px;fill:#25342a;text-anchor:middle}.score-grid .notehead,.score-grid .rhythm-dot,.score-grid .rhythm-flag,.score-grid .note-beam{fill:#1a2a1d}.score-grid .open-head{fill:#fbfaf5;stroke:#1a2a1d;stroke-width:1.5}.score-grid .note-stem{stroke:#1a2a1d;stroke-width:1.4}.score-grid .note-highlight{fill:transparent}.score-grid .is-current .note-highlight{fill:#d8f59d}.score-grid .printed-note-name{font-size:16px;font-family:OMEH,Arial,sans-serif;fill:#243d28;text-anchor:middle;font-weight:700}.score-grid .printed-finger{font-size:13px;font-family:OMEH,Arial,sans-serif;fill:#5c6e59;text-anchor:middle}.score-grid.hide-note-names .printed-note-name,.score-grid.hide-fingers .printed-finger{visibility:hidden}.score-grid.hide-note-names.hide-fingers svg{margin-bottom:-27px}.hint-controls{display:flex;align-items:center;gap:18px;flex-wrap:wrap;font-size:12px;color:var(--muted);padding:8px 0}.hint-controls label{min-height:36px}.player-controls{background:var(--surface);border:1px solid var(--border);border-radius:11px;padding:13px 15px;margin-top:14px}.player-main{display:flex;gap:9px;flex-wrap:wrap}.player-settings{display:flex;gap:16px;align-items:center;flex-wrap:wrap;padding-top:11px;margin-top:11px;border-top:1px solid var(--border);font-size:12px;color:var(--muted)}.player-settings label{min-height:30px}.tempo-control input{width:105px}.tempo-control output{min-width:58px;color:var(--text);font-variant-numeric:tabular-nums}.pulse-row{display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap;margin-top:13px}.beat-dots{display:flex;gap:6px}.beat-dot{width:29px;height:29px;border-radius:50%;background:#303930;display:grid;place-items:center;font-size:12px;color:var(--muted)}.beat-dot.active{background:var(--amber);color:#34270a}.practice-status{font-size:13px;color:var(--muted);min-height:23px;flex:1}.rhythm-tip{font-size:13px;color:var(--muted);padding:12px 0 4px}.rhythm-tip strong{color:#e8eddc}.next-row{display:flex;gap:12px;justify-content:space-between;align-items:center;flex-wrap:wrap;margin-top:23px;padding-top:18px;border-top:1px solid var(--border)}.next-row small{color:var(--muted);font-size:11px}.reading-help{margin:20px 0;border-top:1px solid var(--border);padding-top:14px;font-size:13px}.reading-help summary{cursor:pointer;color:var(--muted);padding:5px 0}.reading-help p{max-width:880px;color:var(--muted);margin:12px 0 0}.note-position{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:9px;margin:20px 0}.position-item{padding:19px 8px;text-align:center;border:1px solid var(--border);border-radius:10px;background:var(--surface)}.position-item strong{display:block;font-size:28px;color:var(--lime);line-height:1.2}.position-item span{font-size:12px;color:var(--muted)}.position-item small{display:block;color:var(--purple);font-size:11px;margin-top:7px}.support-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:18px 0}.support-box{padding:20px;border-radius:12px;background:var(--surface);border:1px solid var(--border)}.support-box p,.support-box li{font-size:13px;color:var(--muted)}.support-box p:last-child{margin-bottom:0}.support-box ol,.support-box ul{padding-left:20px;margin-bottom:0}.support-box li{margin-top:7px}.support-box .button{margin-top:8px}.downloads{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--muted);margin-top:15px}.feedback{padding:16px 18px;background:#1e291e;border:1px solid #455e36;border-radius:10px;margin-top:16px}.feedback h3{font-size:16px}.feedback-counts{display:flex;gap:24px;flex-wrap:wrap;margin:12px 0}.feedback-counts strong{font-size:25px;color:var(--lime);display:block;font-variant-numeric:tabular-nums}.feedback-counts span{font-size:11px;color:var(--muted);display:block}.feedback p{font-size:12px;color:var(--muted);margin-bottom:0}.teacher-panel{margin-top:24px;padding:22px;border:1px solid #5e526f;background:#221f2a;border-radius:12px}.teacher-panel h3{color:#e0d1fa}.teacher-panel p{color:var(--muted);font-size:13px}.teacher-panel form{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end}.teacher-panel form label{display:grid;gap:5px;font-size:12px;flex:1;min-width:180px}.teacher-panel form input{width:100%}.teacher-panel .form-status{width:100%;font-size:12px;color:var(--amber);margin:7px 0 0;min-height:19px}.certificate-ready{display:flex;gap:18px;align-items:center;flex-wrap:wrap}.certificate-symbol{width:66px;height:78px;border:2px solid var(--lime);border-radius:6px;position:relative;flex-shrink:0}.certificate-symbol:before{content:'';position:absolute;left:13px;right:13px;top:18px;height:3px;background:var(--lime);box-shadow:0 11px 0 #536a3b}.certificate-symbol:after{content:'';position:absolute;bottom:13px;left:22px;width:18px;height:18px;background:var(--amber);border-radius:50%}.notice{background:#342d1d;border-left:3px solid var(--amber);padding:13px 16px;border-radius:0 8px 8px 0;font-size:13px;color:#f1deaf}.site-footer{display:flex;gap:10px;justify-content:space-between;flex-wrap:wrap;font-size:11px;color:var(--muted);border-top:1px solid var(--border);padding:18px 0;margin-top:32px}.site-footer a{text-decoration:none}.loading-message{padding:35px 0;color:var(--muted)}.skip-link{position:absolute;top:0;left:10px;transform:translateY(-110%);z-index:100;background:var(--lime);color:#192710;padding:12px}.skip-link:focus{transform:none}.piano-dock{position:fixed;z-index:20;bottom:0;left:0;right:0;background:#13191a;border-top:1px solid #596b45;box-shadow:0 -12px 35px #0005;padding:12px 0 8px}.dock-inner{width:min(1240px,calc(100% - 48px));margin:auto}.dock-toolbar{display:flex;gap:10px;justify-content:space-between;align-items:center;flex-wrap:wrap}.piano-identity{display:flex;gap:9px;align-items:center;min-width:0}.piano-identity strong{font-size:14px;white-space:nowrap}.piano-identity>span:last-child{font-size:11px;color:var(--muted)}.sound-indicator{width:7px;height:7px;border-radius:50%;background:#6c7770;flex-shrink:0}.sound-indicator.ready{background:var(--lime)}.dock-actions{display:flex;gap:7px;flex-wrap:wrap}.dock-second-row{display:flex;gap:15px;align-items:center;font-size:11px;color:var(--muted);margin:6px 0 8px;min-height:25px}.dock-second-row>span{flex:1}.dock-second-row select{font-size:12px;padding:3px 5px;max-width:180px}.volume-label{margin-left:auto;white-space:nowrap}.volume-label input{width:75px}#liveNote{font-size:15px;color:var(--lime);width:60px;text-align:right;white-space:nowrap}.keyboard{position:relative;display:grid;grid-template-columns:repeat(15,minmax(0,1fr));gap:2px;padding:3px;background:#070b09;border-radius:6px}.piano-key{touch-action:none;user-select:none;-webkit-user-select:none;border:0;padding:0;position:relative}.piano-key.white{height:86px;background:#f0f1e8;color:#283327;border-radius:0 0 4px 4px;display:flex;align-items:center;justify-content:flex-end;flex-direction:column;padding-bottom:5px}.piano-key.white.lesson-note{box-shadow:inset 0 -4px 0 #b0c19b}.piano-key .key-name{font-size:11px;line-height:1.2}.piano-key .finger-number{font-size:10px;color:#4c6049;line-height:1.3;min-height:13px}.piano-key.black{position:absolute;top:3px;height:51px;width:4%;margin-left:-2%;background:#1c2422;border:1px solid #030805;border-radius:0 0 4px 4px;z-index:2}.piano-key.white.is-guide{background:#d7c9fa}.piano-key.white.is-playing{background:var(--lime)}.piano-key.black.is-playing{background:#91bb40}.keyboard.hide-names .key-name,.keyboard.hide-fingers .finger-number{visibility:hidden}.dock-footer{display:flex;gap:10px;justify-content:space-between;flex-wrap:wrap;font-size:10px;color:var(--muted);padding-top:5px}#transportReadout{color:var(--amber);font-weight:700}.toast{position:fixed;top:18px;left:50%;transform:translateX(-50%);z-index:50;background:var(--lime);color:#16240e;border-radius:9px;padding:12px 20px;max-width:calc(100% - 30px);box-shadow:0 5px 30px #0006;font-size:13px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}[hidden]{display:none!important}
@media(min-width:1150px){.score-grid.full-score{grid-template-columns:repeat(4,minmax(0,1fr))}.score-grid.full-score svg{min-width:0}}
@media(max-width:900px){.wrap{width:calc(100% - 40px)}.resource-title span{display:none}.site-links{gap:12px}.stage-button{padding:10px;gap:7px;font-size:12px}.lesson-layout{grid-template-columns:175px minmax(0,1fr);gap:16px}.course-heading h1{font-size:37px}.piano-identity>span:last-child{display:none}.welcome-copy h2{font-size:31px}.dock-inner{width:calc(100% - 32px)}}
@media(max-width:720px){.wrap{width:calc(100% - 30px)}.site-header{gap:13px;padding:14px 0}.brand img{width:110px;height:45px}.resource-title{padding-left:12px}.resource-title strong{font-size:13px}.site-links a:last-child{display:none}.site-links{font-size:11px;margin-left:auto}.course-heading{gap:15px;padding:23px 0 20px;align-items:flex-start}.course-heading h1{font-size:32px}.course-progress{width:160px;margin-top:8px}.course-progress>div:first-child{display:grid;gap:2px}.course-progress small{display:none}.course-subtitle{font-size:12px}.stage-nav{gap:5px;margin-bottom:19px}.stage-button{padding:9px 4px;flex-direction:column;gap:5px;text-align:center;font-size:10px;line-height:1.3;min-height:76px}.stage-number{width:23px;height:23px}.lesson-layout{display:block}.section-list{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;margin-bottom:18px}.section-list-title{grid-column:1/-1}.section-button{padding:8px;font-size:11px;min-height:50px}.section-button .section-name{display:none}.section-button small{font-size:10px;margin:0}.section-list.joins{grid-template-columns:repeat(3,minmax(0,1fr))}.welcome-grid{grid-template-columns:1fr}.welcome-copy{padding-top:8px}.welcome-copy h2{font-size:29px}.song-card{gap:13px;padding:20px}.song-card .song-icon{display:none}.support-grid{gap:11px}.support-box{padding:16px}.dock-toolbar{align-items:center}.piano-identity{flex:1}.dock-actions{gap:5px}.dock-actions .button{font-size:10px;padding:7px 9px;min-height:35px}.dock-second-row{font-size:10px;gap:8px;margin-bottom:7px}.dock-second-row>span{max-width:calc(100% - 155px);line-height:1.3}.volume-label{font-size:10px;gap:5px}.volume-label input{width:65px}#liveNote{width:37px;font-size:13px}.keyboard .white{height:76px}.keyboard .black{height:46px}.dock-footer{font-size:9px}.score-grid{grid-template-columns:1fr 1fr}.player-settings{gap:12px}.player-settings label{font-size:11px}.piano-dock{padding-top:9px}.dock-inner{width:calc(100% - 20px)}.keyboard .key-name{font-size:10px}.keyboard .finger-number{font-size:10px}}
@media(max-width:480px){.site-links{display:none}.resource-title{margin-left:auto}.course-heading{display:block}.course-heading h1{font-size:33px}.course-progress{width:100%;display:grid;grid-template-columns:1fr 100px;align-items:center;gap:10px;margin-top:15px}.course-progress>div:first-child{display:flex;margin:0;font-size:10px}.stage-button{font-size:9px;min-height:71px}.score-grid{grid-template-columns:1fr}.score-paper{padding:10px 9px 2px}.score-heading{font-size:10px}.task-panel h2{font-size:24px}.task-intro,.instruction{font-size:13px}.instruction{padding:13px}.support-grid{grid-template-columns:1fr}.position-item{padding:13px 4px}.position-item strong{font-size:23px}.position-item span,.position-item small{font-size:10px}.dock-toolbar{flex-wrap:nowrap;gap:5px}.piano-identity strong{font-size:12px}.dock-actions .button{padding:7px;font-size:9px;min-height:34px}.stop-button span{display:none}.dock-second-row{flex-wrap:wrap;gap:5px;min-height:27px}.dock-second-row>span{font-size:9px;max-width:calc(100% - 133px)}.volume-label input{width:55px}.volume-label{font-size:9px}#liveNote{font-size:11px;width:30px}.dock-footer>span:first-child{display:none}.dock-footer{justify-content:flex-end;font-size:10px}.keyboard .white{height:70px}.keyboard .black{height:42px}.keyboard .key-name{font-size:9px}.keyboard .finger-number{font-size:9px}.button-row .button,.player-main .button{flex:1;min-width:110px}.hint-controls{gap:13px}.teacher-panel{padding:17px}.teacher-panel form{display:block}.teacher-panel form .button{margin-top:12px;width:100%}.section-button{padding:8px 6px}.site-footer{font-size:10px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
@media(max-width:720px){.stage-button{font-size:11px;min-height:82px}.dock-actions .button{font-size:11px;min-height:38px}.dock-second-row{font-size:11px}.dock-second-row>span{font-size:11px}.volume-label{font-size:11px}.dock-footer{font-size:11px}}
@media(max-width:480px){.piano-identity{display:none}.dock-toolbar{justify-content:flex-end}.dock-actions{width:100%}.dock-actions .button{flex:1;padding:8px;font-size:11px;min-height:40px}.dock-actions .stop-button{flex:0 0 40px}.keyboard{grid-template-columns:repeat(5,minmax(0,1fr))}.piano-key.white:not(.mobile-visible),.piano-key.black{display:none}.piano-key.black[data-note="68"],.piano-key.black[data-note="70"],.piano-key.black[data-note="73"]{display:block;width:12%;margin-left:-6%}.piano-key.black[data-note="68"]{left:20%!important}.piano-key.black[data-note="70"]{left:40%!important}.piano-key.black[data-note="73"]{left:80%!important}.keyboard .key-name{font-size:12px}.keyboard .finger-number{font-size:11px}.dock-second-row>span{font-size:10px}.stage-button{font-size:11px}}
@media(pointer:coarse){.button,.button.compact,.dock-actions .button{min-height:44px}}
.all-songs{margin-left:auto;white-space:nowrap}.all-songs+.site-links{margin-left:0}.library-heading{padding:28px 0 0}.library-heading h1{font-size:23px;letter-spacing:-.035em;margin:0}.library-intro{display:grid;grid-template-columns:1.4fr .6fr;gap:40px;align-items:center;padding:24px 0 29px}.library-intro h2{font-size:42px;line-height:1.15;letter-spacing:-.045em;margin-bottom:15px}.library-intro h2 em{font-style:normal;color:var(--lime)}.library-intro p{max-width:650px;color:var(--muted);margin:0;font-size:14px}.library-note{border-left:1px solid var(--border);padding-left:30px}.library-note strong{font-size:14px;display:block;margin-bottom:5px}.library-note p{font-size:12px}.library-note-icon{color:var(--purple);font-size:33px;line-height:1;display:block;margin-bottom:10px}.ability-filters{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:0 0 29px}.ability-filter{text-align:left;border:1px solid var(--border);background:var(--surface);border-radius:10px;color:var(--muted);padding:14px 17px;min-height:75px}.ability-filter strong{display:block;font-size:13px;color:var(--text);margin-bottom:3px}.ability-filter span{font-size:11px}.ability-filter[aria-pressed=true]{background:#29351e;border-color:#769248;color:var(--lime)}.ability-filter[aria-pressed=true] strong{color:var(--lime)}.library-section-heading{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:16px}.library-section-heading h3{font-size:22px;letter-spacing:-.025em;margin:0}.library-section-heading>span{font-size:12px;color:var(--muted)}.song-library-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:23px}.library-song{border:1px solid var(--border);border-radius:15px;overflow:hidden;background:var(--surface)}.song-art{height:170px;display:flex;flex-direction:column;justify-content:space-between;padding:16px 22px;background:#27351e;color:var(--lime);text-decoration:none;position:relative;overflow:hidden}.song-art.twinkle{background:#30263f;color:#dbc8ff}.song-art-top{display:flex;justify-content:space-between;font-size:10px;text-transform:uppercase;letter-spacing:.1em;position:relative;z-index:1}.song-art-bottom{font-size:11px;position:relative;z-index:1}.melody-art{position:absolute;left:25%;right:13%;top:45px;height:80px;background:repeating-linear-gradient(to bottom,transparent 0,transparent 13px,#ffffff1a 13px,#ffffff1a 14px)}.melody-art i{position:absolute;width:16px;height:12px;border-radius:50%;background:currentColor;top:37px;transform:rotate(-14deg)}.melody-art i:after{content:'';position:absolute;right:1px;bottom:5px;width:2px;height:32px;transform:rotate(14deg);background:currentColor}.melody-art i:nth-child(1){left:7%}.melody-art i:nth-child(2){left:30%}.melody-art i:nth-child(3){left:55%;top:30px}.melody-art i:nth-child(4){left:80%;top:23px}.twinkle .melody-art i:nth-child(3),.twinkle .melody-art i:nth-child(4){top:9px}.melody-art b{position:absolute;left:4%;right:5%;bottom:-4px;word-spacing:20px;font-size:10px;letter-spacing:4px;font-weight:400;color:#ffffff8c}.library-song-copy{padding:22px 24px}.library-song-copy h3{font-size:24px;letter-spacing:-.03em;margin:7px 0 5px}.library-song-copy p{font-size:13px;color:var(--muted);max-width:490px}.library-song-copy .library-composer{font-size:11px;margin-bottom:14px}.song-progress-label{font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:var(--purple)}.song-progress-label.complete{color:var(--lime)}.skill-list{list-style:none;display:flex;gap:8px 20px;flex-wrap:wrap;padding:0;margin:17px 0 22px;font-size:11px;color:var(--muted)}.skill-list li:before{content:'✓';color:var(--lime);margin-right:6px}.library-song-copy>.button{width:100%}.library-bottom{display:grid;grid-template-columns:1.3fr .7fr;gap:35px;padding:25px 0;margin-top:25px;border-top:1px solid var(--border)}.library-bottom h3{font-size:16px}.library-bottom p,.library-bottom summary{font-size:12px;color:var(--muted)}.library-bottom p{margin-bottom:10px}.library-bottom details{border-left:1px solid var(--border);padding-left:25px}.library-bottom summary{cursor:pointer}.empty-collection{background:var(--surface);border:1px dashed #65577a;border-radius:12px;padding:30px;text-align:center;color:var(--muted)}.empty-collection>span{font-size:35px;color:var(--purple)}.empty-collection p{max-width:520px;margin:7px auto 20px;font-size:14px}.note-position.six-notes{grid-template-columns:repeat(6,minmax(0,1fr))}
@media(max-width:900px){.library-intro h2{font-size:35px}.library-intro{gap:20px}.library-note{padding-left:20px}.library-song-copy{padding:20px}.ability-filter{padding:12px}.all-songs+.site-links{display:none}}
@media(max-width:720px){.library-intro{grid-template-columns:1fr}.library-note{display:none}.library-intro h2{font-size:32px}.library-heading{padding-top:22px}.library-heading h1{font-size:21px}.ability-filters{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.ability-filter{min-height:66px}.library-song-copy h3{font-size:21px}.library-song-copy{padding:17px}.song-art{height:145px;padding:14px 16px}.library-bottom{grid-template-columns:1fr;gap:10px}.library-bottom details{border-left:0;border-top:1px solid var(--border);padding:15px 0 0}.library-intro p{font-size:13px}.all-songs{font-size:11px;min-height:40px;padding:8px 10px}.library-section-heading>span{font-size:11px}.library-section-heading h3{font-size:19px}.melody-art{left:15%;right:15%}}
@media(max-width:520px){.song-library-grid{grid-template-columns:1fr}.song-art{height:155px}.library-song-copy h3{font-size:23px}.library-intro h2{font-size:30px}.library-heading h1{font-size:19px}.library-section-heading{align-items:flex-end}.library-section-heading>span{max-width:65px;text-align:right}.resource-title{display:none}.all-songs{margin-left:auto}.note-position.six-notes{grid-template-columns:repeat(3,minmax(0,1fr))}.section-list.joins{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:480px){.keyboard{grid-template-columns:repeat(var(--mobile-keys,5),minmax(0,1fr))}.keyboard .piano-key.black{display:none!important}.keyboard .piano-key.black.mobile-key{display:block!important;left:var(--mobile-left)!important;width:calc(60% / var(--mobile-keys,5));margin-left:calc(-30% / var(--mobile-keys,5))}.piano-key.white:not(.mobile-visible){display:none}.library-intro{padding-bottom:22px}}
.ui-icon{display:block;width:32px;height:32px;flex-shrink:0}.visual-steps{display:flex;gap:14px;margin:0 0 16px}.visual-steps>span{display:flex;flex-direction:column;align-items:center;gap:7px;color:var(--lime);min-width:62px}.visual-steps>span:nth-child(2){color:var(--purple)}.visual-steps>span:nth-child(3){color:var(--amber)}.visual-steps .ui-icon{width:53px;height:53px;padding:12px;background:#ffffff08;border:1px solid #ffffff15;border-radius:15px}.visual-steps small{font-size:10px;color:var(--muted)}.library-note{padding-left:24px}.song-art{height:242px;padding:17px 22px}.song-art-top{z-index:3;justify-content:flex-start;gap:7px}.song-art-top>span{border:1px solid #ffffff24;border-radius:30px;background:#0d1011a8;padding:4px 9px;color:#f6f7ef;backdrop-filter:blur(6px)}.song-art-bottom{z-index:3;background:#0d1011b3;align-self:flex-start;border-radius:5px;padding:4px 8px;font-size:10px;color:#e4ecda}.song-illustration{position:absolute;inset:0;overflow:hidden;background:#211c31}.song-illustration.beethoven{background:radial-gradient(ellipse at 20% 90%,#48532c 0,#252c1d 40%,#121714 80%)}.song-art-image{position:absolute;width:100%;height:100%;inset:0;object-fit:cover;object-position:center;transition:transform .4s ease}.beethoven .song-art-image{left:43%;width:57%;object-position:50% 19%;height:100%}.starlight .song-art-image{object-position:65% 0%}.artwork-shade{position:absolute;inset:0;background:linear-gradient(90deg,#11180df5 0%,#162014c7 25%,#0d101135 64%,#0d101108),linear-gradient(0deg,#0d10116e,transparent 40%)}.starlight .artwork-shade{background:linear-gradient(90deg,#1d1628e6 0%,#22172b99 30%,#1610200a 75%),linear-gradient(0deg,#0d101166,transparent 45%)}.artwork-feature{position:absolute;z-index:2;left:23px;right:48%;bottom:70px;display:grid;gap:8px}.artwork-feature>span{font-size:9px;text-transform:uppercase;letter-spacing:.15em;color:#d9e3cd}.artwork-feature>strong{font-size:32px;line-height:1.05;letter-spacing:-.04em;color:var(--lime)}.artwork-feature>small{font-size:11px;color:#d9e3cd;line-height:1.4;max-width:135px}.starlight .artwork-feature>strong{color:#f1dcff}.starlight .artwork-feature>span,.starlight .artwork-feature>small{color:#e4d8ee}.artwork-symbol{position:absolute;left:23px;top:58px;color:#c5f36b66;z-index:2}.artwork-symbol .ui-icon{width:22px;height:22px}.starlight .artwork-symbol{color:var(--amber)}.song-art:hover .song-art-image{transform:scale(1.025)}.illustrated-song-card{padding:0;display:block;overflow:hidden}.illustrated-song-card>.song-illustration{position:relative;height:220px;border-bottom:1px solid var(--border)}.illustrated-song-card .artwork-feature{bottom:30px}.illustrated-song-card .artwork-symbol{top:22px}.song-card-information{padding:19px 23px 22px}.song-card-information h3{font-size:25px}.song-card-information .song-meta{margin-bottom:12px}.course-heading>div:not(.course-progress):not(.course-artwork){flex:1;min-width:0}.course-heading .course-progress{flex-shrink:0}.course-artwork{width:132px;height:100px;flex:0 0 132px;border-radius:12px;overflow:hidden;border:1px solid var(--border);position:relative}.course-artwork .song-illustration{position:absolute}.artwork-thumbnail .song-art-image{width:100%;left:0;object-position:50% 18%}.artwork-thumbnail.starlight .song-art-image{object-position:70% 50%}.artwork-thumbnail .artwork-feature,.artwork-thumbnail .artwork-symbol{display:none}.artwork-thumbnail .artwork-shade{background:linear-gradient(0deg,#0d10112b,transparent)}.stage-number{width:34px;height:34px;position:relative;border-radius:10px}.stage-number .ui-icon{width:22px;height:22px}.stage-number>small{position:absolute;right:-5px;top:-5px;display:grid;place-items:center;width:15px;height:15px;border-radius:50%;background:#0d1011;border:1px solid #617252;color:#dce8cf;font-size:8px;font-weight:700}.stage-button[aria-current=step] .stage-number>small{color:var(--lime);border-color:#8bab58}.stage-button{gap:12px}.site-header .brand img{object-fit:contain}
@media(max-width:1100px){.song-art{height:225px}.artwork-feature{left:20px;right:44%;bottom:62px}.artwork-feature>strong{font-size:29px}.artwork-feature>small{font-size:10px}.course-artwork{width:105px;height:92px;flex-basis:105px}.course-heading{gap:22px}.stage-button{gap:8px}}
@media(max-width:900px){.library-note .visual-steps{gap:7px}.visual-steps>span{min-width:50px}.visual-steps .ui-icon{width:45px;height:45px;padding:10px}.library-note strong{font-size:12px}.artwork-feature>strong{font-size:26px}.artwork-feature{left:17px;right:43%}.song-art{padding:14px 16px}.song-art-top{font-size:9px}.song-art-top>span{padding:4px 7px}.song-art-bottom{font-size:9px}.course-heading h1{font-size:35px}.course-heading .course-progress{width:190px}.course-artwork{width:92px;height:88px;flex-basis:92px}.stage-number{width:29px;height:29px}.stage-number .ui-icon{width:20px;height:20px}}
@media(max-width:720px){.song-art{height:213px}.artwork-feature>strong{font-size:25px}.artwork-feature>small{max-width:115px}.artwork-feature{right:40%;bottom:60px}.song-art-top{gap:4px}.song-art-top>span{font-size:8px;letter-spacing:.04em}.beethoven .song-art-image{left:40%;width:60%}.artwork-symbol{top:52px;left:18px}.course-heading.with-art{display:grid;grid-template-columns:83px minmax(0,1fr);gap:12px 17px;align-items:center}.course-artwork{width:83px;height:83px;flex-basis:83px}.course-heading .course-progress{width:100%;grid-column:1/-1;margin-top:3px;display:grid;grid-template-columns:1fr 130px;align-items:center;gap:12px}.course-heading .course-progress>div:first-child{display:flex;margin:0;font-size:11px}.course-heading h1{font-size:31px}.course-subtitle{font-size:12px}.illustrated-song-card>.song-illustration{height:235px}.stage-button{gap:8px}.stage-number{width:30px;height:30px}.song-card-information{padding:18px 20px}}
@media(max-width:520px){.song-art{height:240px}.artwork-feature{left:23px;right:46%;bottom:66px}.artwork-feature>strong{font-size:31px}.artwork-feature>small{font-size:11px;max-width:135px}.song-art-top>span{font-size:9px}.song-art-bottom{font-size:10px}.beethoven .song-art-image{left:43%;width:57%}.artwork-symbol{left:23px;top:60px}.course-heading h1{font-size:28px}.course-artwork{width:77px;height:84px}.course-heading.with-art{grid-template-columns:77px minmax(0,1fr);gap:12px}.course-heading .course-progress{grid-template-columns:1fr 100px}.stage-button{font-size:10px}.illustrated-song-card .artwork-feature{bottom:29px}.illustrated-song-card .artwork-symbol{top:24px}}
@media print{body{background:white;color:black;padding:0}.piano-dock,.site-header,.stage-nav,.player-controls,.hint-controls,.section-list,.next-row,.site-footer,.teacher-panel,.course-artwork{display:none!important}.wrap{width:100%}.score-paper{padding:0}.score-grid{grid-template-columns:repeat(4,1fr)}.score-grid svg{break-inside:avoid}.course-heading{padding:0 0 15px;display:block!important}.course-heading h1,.task-panel h2{color:black}.course-progress{display:none!important}}

/* Booklet supports: colour is optional; notation and names remain the primary cues. */
.score-grid .note-tie{fill:none;stroke:#27382b;stroke-width:1.8}
.score-grid.use-note-colours .notehead{fill:var(--note-colour);stroke:#26332a;stroke-width:1.1}
.score-grid.use-note-colours .open-head{fill:#fffdf7;stroke:#26332a;stroke-width:1.5}
.score-grid .open-head{fill:#fffdf7}
.keyboard.use-note-colours .white.lesson-note{box-shadow:inset 0 -7px 0 var(--note-colour)}
.keyboard .key-name small{font-size:8px;margin-left:1px;color:#68705f}
.position-item sub{font-size:12px;vertical-align:baseline;color:var(--muted)}
.note-position{grid-template-columns:repeat(auto-fit,minmax(74px,1fr))}
.illustrated .song-art-image{object-position:65% 50%}
.illustrated .artwork-feature>strong{color:#d5e6ba}
.illustrated .artwork-shade{background:linear-gradient(90deg,#151b20ed,#151b20aa 30%,#151b2000 65%)}
.artwork-thumbnail.illustrated .song-art-image{width:180%;left:-80%;object-fit:cover}
.keyboard-scroll{overflow-x:auto;overscroll-behavior-inline:contain;border-radius:6px}
@media(max-width:480px){.keyboard{min-width:calc(var(--mobile-keys,5)*39px)}.piano-key.white:not(.mobile-visible){display:none}.piano-key.white.mobile-visible{display:flex}.keyboard .piano-key.black.mobile-key{left:var(--mobile-left)!important}.keyboard-scroll{max-width:100%}}

.score-grid .score-rest .printed-note-name{font-size:10px;font-weight:600;fill:#66705f}

.score-grid .note-colour-ring{display:none}.score-grid.use-note-colours .note-colour-ring{display:block;fill:var(--note-colour);stroke:none}

/* Separate-hand practice and the aligned two-stave performance score. */
.hand-practice{margin:15px 0 18px;padding:14px;border:1px solid #4e485e;border-radius:12px;background:#201e28}.hand-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.hand-option{min-height:49px;padding:10px;border:1px solid #635c72;border-radius:9px;background:#292535;color:#e7deef;font-weight:700;font-size:13px}.hand-option small{color:var(--muted);margin-right:7px}.hand-option[aria-pressed=true]{background:#c5f36b;color:#172410;border-color:#c5f36b}.hand-option[aria-pressed=true] small{color:#45572b}.hand-practice p,.other-hand{font-size:12px;color:var(--muted);margin:11px 0 0}.performance-form{display:flex;flex-wrap:wrap;gap:9px;margin:17px 0}.performance-form>span{flex:1;min-width:108px;border:1px solid #625776;padding:12px 14px;border-radius:10px;background:#26212f}.performance-form strong,.performance-form small{display:block}.performance-form strong{color:#d9c8f2;font-size:13px}.performance-form small{color:var(--muted);font-size:11px}.score-grid .staff-hand-label{font:700 11px OMEH,Arial,sans-serif;fill:#49651e;text-anchor:end}.score-grid [data-staff-hand=left] .staff-hand-label{fill:#75529b}.score-grid .chord-label{font-size:10px}.score-grid .note-accidental{font-size:17px;fill:#26332a}.score-grid.grand-score{grid-template-columns:repeat(2,minmax(0,1fr))}.hand-feedback{display:flex;gap:12px;flex-wrap:wrap;margin:12px 0}.hand-feedback>span{background:#ffffff08;border-radius:6px;padding:8px 10px;font-size:12px;color:var(--muted)}.hand-feedback strong{color:var(--lime)}
.keyboard{grid-template-columns:repeat(var(--desktop-keys,15),minmax(0,1fr));min-width:calc(var(--desktop-keys,15)*28px)}.piano-key.white:not(.desktop-visible),.piano-key.black:not(.desktop-visible){display:none}.piano-key.black{width:calc(60% / var(--desktop-keys,15));margin-left:calc(-30% / var(--desktop-keys,15))}.piano-key.white.is-guide-left{background:#f4d98e}.piano-key.white.is-playing{background:var(--lime)}
@media(min-width:1150px){.score-grid.grand-score.full-score{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:600px){.score-grid.grand-score{grid-template-columns:1fr}.hand-option{font-size:11px;padding:9px 5px}.hand-option small{margin-right:4px}.performance-form>span{min-width:100px}}
@media(max-width:480px){.keyboard{grid-template-columns:repeat(var(--mobile-keys,5),minmax(0,1fr));min-width:calc(var(--mobile-keys,5)*39px)}.piano-key.white:not(.mobile-visible){display:none}.piano-key.white.mobile-visible{display:flex}.keyboard .piano-key.black.mobile-key{width:calc(60% / var(--mobile-keys,5));margin-left:calc(-30% / var(--mobile-keys,5))}}
@media print{.hand-practice,.performance-form{display:none}.score-grid.grand-score{grid-template-columns:repeat(3,minmax(0,1fr))}}

.ability-filters{grid-template-columns:repeat(5,minmax(0,1fr))}@media(max-width:720px){.ability-filters{grid-template-columns:repeat(2,minmax(0,1fr))}.ability-filter:last-child{grid-column:1/-1}}

/* Keep the denser pop melody bars readable in the existing score view. */
.score-grid.dense-score,.score-grid.dense-score.full-score,.score-grid.grand-score.dense-score.full-score{grid-template-columns:repeat(2,minmax(0,1fr))}
@media(max-width:720px){.score-grid.dense-score,.score-grid.dense-score.full-score,.score-grid.grand-score.dense-score.full-score{grid-template-columns:1fr}}
@media print{.score-grid.dense-score,.score-grid.grand-score.dense-score{grid-template-columns:repeat(2,minmax(0,1fr))}}
