@font-face{font-family:Manrope;src:url('/assets/fonts/manrope.ttf') format('truetype');font-weight:200 800;font-style:normal;font-display:swap}@font-face{font-family:Prata;src:url('/assets/fonts/prata.ttf') format('truetype');font-weight:400;font-style:normal;font-display:swap}
:root{--bg:#111315;--sidebar:#16181b;--surface:#1b1e22;--surface-up:#22262a;--border:#2c3035;--text:#eceeea;--muted:#8b9299;--quiet:#626b73;--mint:#c9e7a8;--mint-deep:#293526;--lavender:#b5aae9;--ease:cubic-bezier(.2,.8,.2,1);font-family:Manrope,sans-serif;color:var(--text);font-size:13px;background:var(--bg);font-synthesis:none;color-scheme:dark}
*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{border:0;background:none;color:inherit;cursor:pointer}a{color:inherit;text-decoration:none}button,a,input{touch-action:manipulation;-webkit-tap-highlight-color:transparent}button,a{transition:background .22s var(--ease),color .22s var(--ease),border-color .22s var(--ease),transform .22s var(--ease),box-shadow .22s var(--ease)}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid var(--mint);outline-offset:5px}svg{width:19px;height:19px;display:block;flex-shrink:0}button svg{pointer-events:none}[hidden]{display:none!important}button:hover{color:#fff}button:active{transform:translateY(1px)}.sidebar{position:fixed;inset:0 auto 0 0;width:204px;padding:30px 18px 20px;border-right:1px solid #24272a;background:var(--sidebar);display:flex;flex-direction:column;z-index:12}.brand{display:flex;align-items:center;gap:11px;font-size:32px;font-weight:750;letter-spacing:-1.9px;width:fit-content;padding-left:10px}.brand>span:last-child{align-self:flex-start;font-size:9px;font-weight:500;margin:6px 0 0 -5px;letter-spacing:0;color:#87917e}.brand-icon{display:flex;align-items:flex-end;gap:3px;height:26px;width:24px;transform:rotate(-5deg)}.brand-icon i{width:6px;height:22px;background:var(--mint);border-radius:1px}.brand-icon i:nth-child(2){height:28px}.brand-icon i:nth-child(3){height:17px}.sidebar-subtitle{font-size:7px;letter-spacing:1.5px;color:#66716b;padding-left:10px;margin-top:12px}.nav-caption{font-size:7px;letter-spacing:1.5px;color:#656d73;margin:43px 10px 13px}.sidebar nav{display:grid;gap:6px}.nav-item{border:1px solid transparent;display:flex;align-items:center;gap:12px;padding:13px 12px;width:100%;font-size:11px;color:#91989b;text-align:left;border-radius:7px;font-weight:500}.nav-item svg{width:17px;height:17px}.nav-item.selected{background:#283127;border-color:#364232;color:#d5eabd}.nav-item:hover:not(.selected){background:#202429}.nav-count{margin-left:auto;border:1px solid #3d4546;border-radius:4px;font-size:8px;padding:2px 4px;color:#a0aca2}.nav-small-dot{margin-left:auto;width:5px;height:5px;border-radius:50%;background:var(--mint)}.recent-label{margin:33px 10px 13px;color:#636c71;font-size:7px;letter-spacing:1.5px}.recent-song{display:flex;gap:10px;align-items:center;text-align:left;padding:9px 10px;border-radius:6px;color:#b2b7b6}.recent-song:hover{background:#202428}.recent-art{width:31px;height:35px;border-radius:4px;font:20px Prata,Georgia,serif;display:grid;place-items:center;color:#c0b6de;background:#34303f;flex-shrink:0}.recent-art.sand{color:#cbbda2;background:#36342f}.recent-song>span:last-child{font-size:10px;line-height:1.5}.recent-song small{display:block;font-size:7px;color:#707a7c;margin-top:3px}.sidebar-bottom{margin-top:auto;padding-top:28px}.device-card{background:linear-gradient(125deg,#252c26,#1b211e);border:1px solid #354035;border-radius:9px;padding:15px 13px;width:100%;text-align:left;position:relative;overflow:hidden}.device-card:hover{border-color:#586952}.device-card-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:15px}.device-card-head svg{width:65px;height:27px;color:#b7c6ad}.device-card-head>i{width:5px;height:5px;background:var(--mint);border-radius:50%;box-shadow:0 0 10px #c9e7a855}.device-card strong{display:flex;align-items:center;justify-content:space-between;color:#d8e1d2;font-weight:600;font-size:10px}.device-card strong span{font-size:5px;letter-spacing:1px;color:#8a9b83;border:1px solid #43513e;padding:2px 3px;border-radius:3px}.device-card>div:nth-of-type(2){font-size:7px;color:#87927f;margin:6px 0 14px;display:flex;gap:5px}.device-card-footer{display:flex;justify-content:space-between;align-items:center;border-top:1px solid #3a4435;padding-top:11px;font-size:7px;color:#a8b89c}.device-card-footer svg{width:11px;height:11px}.sidebar-help{display:flex;align-items:center;gap:8px;color:#7c858a;font-size:9px;padding:24px 10px 0;width:100%}.sidebar-help svg{width:14px;height:14px}.sidebar-help>span:last-child{margin-left:auto}.sidebar-foot{border-top:1px solid #2a2f30;margin:24px 10px 0;padding-top:18px;color:#a0aaa3;font:16px/1.65 Prata,Georgia,serif;letter-spacing:-.4px}.sidebar-foot em{color:#66746b;font-style:normal}main{margin-left:204px;min-height:100dvh;padding:0 32px}.topbar{height:69px;border-bottom:1px solid #25292c;display:flex;align-items:center;justify-content:space-between}.breadcrumb{display:flex;gap:13px;align-items:center;font-size:10px;color:#6f797e}.breadcrumb strong{font-weight:500;color:#c1c7c7}.breadcrumb>span:nth-child(2){color:#444d51}.topbar-right{display:flex;align-items:center;gap:18px}.concept-badge{display:flex;align-items:center;gap:7px;font-size:7px;letter-spacing:1.2px;padding:7px 9px;border:1px solid #343c35;border-radius:4px;color:#b8c7aa;background:#20261f}.concept-badge i{width:4px;height:4px;background:#b4d28f;border-radius:50%}.top-help{color:#7f8a8b}.top-help svg{width:17px}.user-avatar{width:28px;height:28px;display:grid;place-items:center;background:#2a3031;border:1px solid #3d4443;border-radius:50%;font-size:10px;color:#c2cec1}.page{padding-top:28px;animation:page-in .45s var(--ease) both}.page-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:25px}.eyebrow{font-size:7px;letter-spacing:1.65px;color:#798985;font-weight:600}.page-heading h1{font-weight:550;font-size:29px;line-height:1.25;letter-spacing:-1.25px;margin:8px 0 0}.page-heading h1>span,.library-heading h1>span{color:var(--mint)}.heading-actions{display:flex;align-items:center;gap:20px}.demo-indicator{font-size:8px;color:#5b6968}.button{display:inline-flex;align-items:center;justify-content:center;gap:10px;font-size:10px;font-weight:650;padding:12px 16px;border:1px solid transparent;border-radius:6px;white-space:nowrap}.button svg{width:15px;height:15px}.button.light{background:#22282a;border-color:#343d3d;color:#ccd5cd}.button.light:hover{background:#2a3330;border-color:#53634a}.button.dark{background:var(--mint);color:#202b1e;border-color:var(--mint);box-shadow:0 3px 20px #c9e7a808}.button.dark:hover{background:#dcf5be;box-shadow:0 4px 25px #c9e7a818;transform:translateY(-1px)}.studio-layout{display:grid;grid-template-columns:minmax(0,1fr) 257px;gap:22px;align-items:start}.studio-column{min-width:0}.player{border:1px solid #353b3f;border-radius:11px;overflow:hidden;background:#1c2225;box-shadow:0 18px 50px #0000001f}.piece-header{display:flex;align-items:center;gap:15px;padding:17px 20px;background:#1d2225;border-bottom:1px solid #30373b}.piece-art{width:51px;height:56px;display:grid;place-items:center;background:linear-gradient(140deg,#4d4b60,#2c303a);border:1px solid #64627444;border-radius:5px;position:relative;overflow:hidden;flex-shrink:0}.piece-art span{font:30px Prata,Georgia,serif;color:#d7d1e6;z-index:1}.piece-art i{width:75px;height:75px;border:1px solid #a5a3ba44;border-radius:50%;position:absolute;left:13px;top:18px;box-shadow:0 0 0 8px #a5a3ba09,0 0 0 16px #a5a3ba07}.piece-title{min-width:0}.piece-composer{font-size:6px;letter-spacing:1.6px;color:#82928d}.piece-title h2{font-size:23px;line-height:1.3;font-weight:500;letter-spacing:-.8px;margin:4px 0 7px}.piece-details{font-size:8px;color:#8c989a;display:flex;align-items:center;gap:7px}.level-mark{height:9px;display:flex;gap:2px;align-items:flex-end}.level-mark i{width:2px;background:#a8bd94;height:3px}.level-mark i:nth-child(2){height:5px}.level-mark i:nth-child(3){height:7px}.level-mark i:nth-child(4){height:9px}.detail-dot{color:#4e5e5c}.icon-button{width:29px;height:29px;border-radius:5px;display:inline-flex;align-items:center;justify-content:center;color:#849293;flex-shrink:0}.icon-button:hover{background:#303b3c;color:#d7dfd6}.icon-button svg{width:16px;height:16px}.favorite-button{margin-left:auto}.favorite-button.selected{color:#c9e7a8}.favorite-button.selected svg{fill:#c9e7a826}.player-toolbar{padding:10px 15px;display:flex;align-items:center;justify-content:space-between;gap:10px;background:#192023;border-bottom:1px solid #2b3437}.view-switch{display:flex;gap:3px;padding:3px;background:#101719;border:1px solid #2d383b;border-radius:5px}.view-switch button{display:flex;align-items:center;gap:7px;font-size:8px;color:#7b8a8e;padding:7px 11px;border-radius:3px}.view-switch button.selected{background:#2b3538;color:#e1e6de;box-shadow:0 1px 4px #0003}.view-switch svg{width:13px;height:13px}.toolbar-right{display:flex;gap:18px;align-items:center}.hands-legend{display:flex;align-items:center;gap:6px;color:#718287;font-size:7px}.hands-legend i{width:5px;height:5px;border-radius:2px}.hands-legend i:nth-of-type(2){margin-left:9px}.left-color{background:var(--lavender)}.right-color{background:var(--mint)}.focus-button{display:flex;align-items:center;gap:6px;font-size:8px;color:#9aa6a4;padding:6px}.focus-button svg{width:13px;height:13px}.roll-area{height:clamp(210px,calc(100dvh - 545px),350px);position:relative;overflow:hidden;background:#10181b}.roll-area:before{content:'';position:absolute;inset:0;box-shadow:inset 0 45px 50px -35px #11181b;pointer-events:none;z-index:1}canvas{display:block;width:100%;height:100%}.roll-title{position:absolute;left:18px;top:15px;display:flex;align-items:center;gap:7px;font-size:6px;letter-spacing:1.2px;color:#6a8183;z-index:2}.live-indicator{width:4px;height:4px;background:#809990;border-radius:50%;box-shadow:0 0 8px #85c3a433}.phrase-divider{height:7px;width:1px;background:#364648;margin:0 3px}.roll-scale{position:absolute;right:18px;top:15px;font-size:7px;color:#4f666b;z-index:2}.waiting-badge{position:absolute;left:50%;bottom:18px;transform:translateX(-50%);background:#1b2b29f2;border:1px solid #436151;border-radius:6px;box-shadow:0 4px 25px #0003;display:flex;gap:10px;align-items:center;padding:9px 12px;z-index:2;white-space:nowrap;animation:badge-in .5s var(--ease)}.waiting-badge>span:nth-child(2){font-size:8px;color:#8da797}.waiting-badge strong{font-size:12px;color:#d5efbc;font-weight:600}.waiting-badge kbd{font-size:7px;color:#72927e;background:#2e4034;border:1px solid #4a5f47;padding:2px 5px;border-radius:3px;margin-left:4px}.wait-keys{display:flex;gap:2px;height:14px;align-items:flex-end}.wait-keys i{height:11px;width:3px;background:#b9d89c;border-radius:1px}.wait-keys i:nth-child(2){height:14px}.wait-keys i:nth-child(3){height:8px}.play-line{position:absolute;bottom:0;left:0;right:0;height:1px;background:#cae9b3;box-shadow:0 -1px 18px #b6e7b82e;pointer-events:none}.play-line>span{font-size:5px;letter-spacing:1.5px;color:#62827c;position:absolute;left:13px;bottom:8px}.play-line i{position:absolute;left:20%;right:20%;height:1px;background:#dbf9c8;filter:blur(.3px)}.piano-bed{padding:0 9px 8px;background:#0a1215}.keyboard{height:106px;position:relative;user-select:none;touch-action:none}.key{position:absolute;top:0;bottom:0;background:linear-gradient(90deg,#d8dfda,#f1f1e7 38%,#e1e5dd);border-right:1px solid #99a69f;border-bottom:5px solid #b6c4b9;border-radius:0 0 4px 4px;z-index:1;box-shadow:inset 0 8px 7px -6px #354c435c;transition:background .18s,border-color .18s,box-shadow .2s;touch-action:none}.key.black{height:65%;background:linear-gradient(100deg,#263236,#101b1d);border:1px solid #102023;border-bottom:5px solid #050f11;border-radius:0 0 4px 4px;z-index:2;box-shadow:1px 3px 2px #0005,inset 1px 0 0 #4b5b5b55}.key span{position:absolute;bottom:12px;left:0;right:0;font-size:8px;color:#52645b;text-align:center;pointer-events:none}.key.black span{font-size:6px;color:#687e7b;bottom:8px}.key.hint{background:linear-gradient(#c4e5ad,#a7d287);border-bottom-color:#719559;box-shadow:0 -8px 25px #b5e79a33}.key.hint span{color:#35552b;font-weight:650}.key.black.expected{background:#9abf82;border-color:#5f8059}.key.pressed{background:#bcf191;border-bottom-color:#739f51;box-shadow:0 0 25px #bcf1915c}.key.pressed span{color:#30551c}.piano-status{display:flex;align-items:center;justify-content:space-between;gap:8px;background:#141d20;padding:9px 16px;border-top:1px solid #283639;border-bottom:1px solid #303b3c;font-size:7px;color:#768d88}.piano-status>span{display:flex;align-items:center;gap:6px}.piano-status>span>i{width:4px;height:4px;background:#92b387;border-radius:50%;margin-right:2px}.status-divider{color:#3f5756;margin:0 5px}.piano-status button{display:flex;align-items:center;gap:5px;font-size:7px;color:#92a98b}.piano-status button svg{width:11px;height:11px}.transport{background:#1a2225;padding:15px 20px 11px}.transport-top{display:flex;justify-content:space-between;align-items:center}.play-controls{display:flex;gap:10px;align-items:center}.play-controls>.icon-button{width:23px}.play-button{width:41px;height:41px;display:grid;place-items:center;border-radius:50%;background:var(--mint);color:#293923;box-shadow:0 2px 12px #bde7a322}.play-button:hover{color:#1d2f16;background:#def8c3;box-shadow:0 2px 20px #bde7a343;transform:scale(1.04)}.play-button svg{width:17px;height:17px}.time{display:flex;gap:8px;align-items:center;font-size:9px;color:#6f8385;font-variant-numeric:tabular-nums;margin-left:9px}.time strong{font-weight:600;color:#d0dad2}.time>span:first-of-type{color:#405556}.transport-tools{display:flex;align-items:center;gap:10px}.loop-button{display:flex;gap:6px;align-items:center;font-size:9px;border:1px solid transparent;padding:7px;border-radius:5px;color:#82988c}.loop-button.selected{color:#b9d3a8;background:#29392b;border-color:#3c5038}.loop-button svg{width:14px;height:14px}.tool-dot{width:3px;height:3px;border-radius:50%;background:#b5d89c}.loop-button:not(.selected) .tool-dot{display:none}.transport-icon{display:flex;align-items:center;justify-content:center;color:#7e9492;width:22px;padding:0}.transport-icon svg{width:16px;height:16px}.transport-icon.selected{color:#d3ecb5}.transport-divider{height:15px;width:1px;background:#344342;margin:0 3px}.speed-button{display:flex;align-items:center;gap:12px;font-size:10px;color:#c3d0bf}.speed-button svg{width:12px;height:12px}.timeline-wrap{height:20px;position:relative;margin-top:13px;display:flex;align-items:center}.timeline-preview{position:absolute;inset:0;display:flex;align-items:center;gap:2px;pointer-events:none;overflow:hidden}.timeline-preview i{flex:1;min-width:2px;max-width:8px;border-radius:1px;background:#3d544b;height:var(--bar)}.timeline-preview i:nth-child(3n){background:#48514f}.timeline-wrap input{appearance:none;-webkit-appearance:none;width:100%;height:20px;margin:0;background:transparent;z-index:2;cursor:pointer;outline-offset:7px}.timeline-wrap input::-webkit-slider-thumb{appearance:none;width:3px;height:24px;border:0;border-radius:1px;background:#d0e9b7;box-shadow:0 0 8px #c9e7a840}.timeline-wrap input::-moz-range-thumb{width:3px;height:24px;border:0;border-radius:1px;background:#d0e9b7}.timeline-loop{position:absolute;top:0;bottom:0;left:9%;width:30%;background:#b7d39413;border:1px solid #b7d39455;border-radius:3px;pointer-events:none;z-index:1;display:flex;justify-content:space-between;padding:0 3px}.timeline-loop span{font-size:5px;color:#a6bb90;background:#283b2c;align-self:start;padding:1px 2px}.timeline-labels{display:flex;justify-content:space-between;font-size:6px;color:#56706f;margin-top:4px}.player-bottom{display:flex;align-items:center;gap:5px;font-size:7px;color:#606e71;padding:12px 1px}.player-bottom>span:first-child{margin-right:auto;display:flex;align-items:center;gap:5px}.player-bottom>span:first-child>span{margin:0 5px;color:#3d4e50}.player-bottom svg{width:10px;height:10px;color:#6f846f}.player-bottom kbd{font:6px Manrope,sans-serif;border:1px solid #354143;color:#80908a;background:#1d2627;padding:2px 4px;border-radius:3px}.phrase-strip{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 17px;background:#1b2022;border:1px solid #2e3838;border-radius:9px;margin-top:4px}.phrase-strip>div:first-child{display:flex;align-items:center;gap:11px}.phrase-number{font:22px Prata,Georgia,serif;color:#647c73;border-right:1px solid #37453e;padding-right:13px}.phrase-strip strong{font-size:10px;font-weight:600;display:block;color:#c4d0c2}.phrase-strip small{font-size:7px;display:block;color:#697e75;margin-top:5px}.phrase-buttons{display:flex;gap:5px}.phrase-buttons button{padding:7px 9px;border:1px solid #36433e;border-radius:4px;font-size:8px;color:#7d9185;display:flex;align-items:center;gap:5px}.phrase-buttons button.selected{background:#2f3e2a;color:#c8dfa8;border-color:#536d42}.phrase-buttons i{width:3px;height:3px;background:var(--mint);border-radius:50%}.practice-panel{background:#1c2023;border:1px solid #30363a;border-radius:10px;padding:19px}.panel-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:21px}.panel-title h3{font-size:13px;letter-spacing:-.35px;font-weight:600;margin:0}.panel-title svg{width:15px;height:15px}.field-caption{font-size:6px;letter-spacing:1.3px;color:#798c88;font-weight:600}.practice-modes{display:grid;gap:7px;margin-top:10px}.mode-card{display:flex;align-items:center;gap:10px;width:100%;padding:10px;border:1px solid #303b3b;border-radius:6px;text-align:left;color:#8b9a97}.mode-card:hover{background:#26312c}.mode-card.selected{border-color:#617a4e;background:#2a3728;color:#d5e4c2;box-shadow:inset 0 0 16px #bbdf9010}.mode-icon svg{width:17px;height:17px;color:#748b7b}.selected .mode-icon svg{color:#b6d197}.mode-card strong{font-size:10px;font-weight:600;display:block}.mode-card small{font-size:7px;color:#71897b;display:block;margin-top:4px}.mode-card.selected small{color:#9bb08b}.mode-card>i{width:10px;height:10px;border:1px solid #455952;border-radius:50%;margin-left:auto;position:relative;flex-shrink:0}.mode-card.selected>i{border-color:#9fbd7e}.mode-card.selected>i:after{content:'';position:absolute;inset:2px;background:#c9e7a8;border-radius:50%}.hand-caption{margin-top:23px}.hand-selector{display:flex;gap:5px;margin-top:10px}.hand-selector button{border:1px solid #36413e;border-radius:5px;padding:10px 4px;flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;font-size:7px;color:#6f877c}.hand-selector svg{width:15px;height:15px}.hand-selector button.selected{background:#2e3a2b;border-color:#61794b;color:#c0daaa}.hand-selector button:first-child.selected{background:#302d41;border-color:#686182;color:#c5b5eb}.tempo-section{border-top:1px solid #34403a;margin-top:23px;padding-top:20px}.tempo-title{display:flex;align-items:center;justify-content:space-between;gap:5px}.tempo-original{font-size:6px;color:#5e7869}.tempo-value{display:flex;justify-content:space-between;align-items:center;margin-top:12px}.tempo-value button{width:25px;height:25px;border:1px solid #3d4c41;border-radius:4px;background:#263029;color:#a0b292;font-size:14px;display:grid;place-items:center}.tempo-value>div{display:flex;align-items:baseline;gap:6px}.tempo-value strong{font-size:36px;line-height:1.2;font-weight:450;color:#d5e4ca;letter-spacing:-1.5px;font-variant-numeric:tabular-nums}.tempo-value>div>span{font-size:7px;color:#6d876e}.tempo-section>input{display:block;width:100%;height:3px;accent-color:#b7d28f;margin:15px 0 7px;cursor:pointer}.tempo-labels{display:flex;justify-content:space-between;font-size:6px;color:#5a7361}.session-score{margin-top:22px;padding-top:20px;border-top:1px solid #34403a}.session-score-title{display:flex;justify-content:space-between;align-items:center}.example-tag{font-size:5px;letter-spacing:1px;border:1px solid #344339;border-radius:3px;padding:3px;color:#69846f}.score-main{display:flex;justify-content:space-between;align-items:center;margin:10px 0 17px}.score-main>div:first-child>strong{font-size:39px;line-height:1.3;font-weight:450;letter-spacing:-2px;color:#d8e6c7;display:block}.score-main strong>span{font-size:20px;letter-spacing:-1px;margin-left:3px;color:#99ad86}.score-main>div:first-child>span{font-size:8px;color:#779079}.score-ring{width:52px;height:52px;position:relative}.score-ring>svg{width:52px;height:52px;transform:rotate(-90deg)}.score-ring circle{fill:none;stroke:#354334;stroke-width:3}.score-ring circle:last-child{stroke:#c9e7a8;stroke-dasharray:144.5;stroke-dashoffset:6;stroke-linecap:round}.score-ring>span{position:absolute;inset:0;display:grid;place-items:center;color:#bdd59e}.score-ring>span svg{width:19px;height:19px}.score-details{display:flex;gap:19px}.score-details>span{display:flex;align-items:center;gap:5px;font-size:7px;color:#829580;flex:1}.score-details strong{margin-left:auto;font-size:10px;font-weight:500;color:#c1d2b2}.success-dot,.miss-dot{width:4px;height:4px;border-radius:50%;background:#a9c58a}.miss-dot{background:#c09b80}.streak{display:flex;align-items:center;gap:9px;padding:12px 11px;border:1px solid #3d4b34;background:#2a3525;border-radius:6px;margin-top:18px}.streak>span:first-child{color:#d3d69b}.streak svg{width:17px;height:17px}.streak strong{display:block;font-size:9px;font-weight:600;color:#c8d7ae}.streak small{display:block;color:#899e76;font-size:7px;margin-top:3px}.streak-mini{margin-left:auto;color:#7d9467}.display-settings{display:flex;align-items:center;gap:7px;font-size:7px;color:#78957e;width:100%;margin-top:18px;padding:0}.display-settings>span:last-child{margin-left:auto}.display-settings svg{width:12px;height:12px}.main-footer{margin:24px 0 0;border-top:1px solid #252d2d;padding:19px 0;display:flex;align-items:center;justify-content:space-between}.main-footer>span:first-child{display:flex;gap:0;align-items:center;font-size:21px;font-weight:650;letter-spacing:-1px;color:#687d70}.footer-brand-dot{color:#9db486}.main-footer>span:first-child>span:last-child{font-size:6px;letter-spacing:1.3px;font-weight:500;margin-left:15px;color:#4f6559}.main-footer button{font-size:7px;color:#586f60;display:flex;align-items:center;gap:8px}.main-footer button svg{width:11px;height:11px}
/* The collection feels like a shelf of carefully typeset music editions. */
.library-heading{display:flex;justify-content:space-between;align-items:center;gap:30px;margin-bottom:30px}.library-heading h1{font:34px/1.35 Prata,Georgia,serif;letter-spacing:-1.5px;margin:12px 0 11px}.library-heading p{font-size:11px;color:#788b85;line-height:1.9;margin:0}.library-featured{border:1px solid #354038;border-radius:12px;overflow:hidden;min-height:285px;display:flex;position:relative;background:#1a211f;margin:30px 0 33px}.featured-text{position:relative;z-index:2;padding:30px 34px;width:47%;pointer-events:none}.featured-text button{pointer-events:auto;font-size:9px;padding:11px 13px}.featured-eyebrow{font-size:6px;letter-spacing:1.8px;color:#8fa97a}.featured-text h2{font:29px/1.4 Prata,Georgia,serif;letter-spacing:-.7px;color:#e2ecd8;margin:14px 0 10px}.featured-text p{font-size:9px;color:#95a78e;line-height:1.9;margin:0 0 20px}.featured-meta{display:flex;gap:9px;align-items:center;margin-top:23px;font-size:5px;letter-spacing:1.2px;color:#70876b}.featured-meta>span{font-size:8px;letter-spacing:0;color:#b3c5a4}.featured-meta i{width:20px;height:1px;background:#597347}.featured-art{position:absolute;inset:0 0 0 40%;overflow:hidden;perspective:1000px}.featured-art>img{position:absolute;width:100%;height:100%;object-fit:cover;object-position:center;opacity:.9}.featured-art:after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,#1a211f 0%,transparent 30%,transparent 90%,#1a211f55);pointer-events:none}.art-caption{position:absolute;bottom:19px;right:24px;color:#788977;font-size:5px;letter-spacing:1.4px;z-index:1}.book{position:absolute;width:180px;height:240px;box-shadow:10px 20px 40px #0007;border-radius:3px;padding:20px;z-index:1;border:1px solid #7a8d6444;transform:rotate(-9deg);background:#b5c99a;color:#233522}.book-front{left:35%;top:22px}.book-front>div:first-child{font-size:5px;letter-spacing:1.3px}.book-front>span{font:31px/1.35 Prata,serif;position:relative;top:25px}.book-front small{position:absolute;bottom:24px;font-size:5px;line-height:1.8}.book-front>b{font:70px Georgia,serif;position:absolute;bottom:4px;right:18px;opacity:.3}.book-back{left:12%;top:73px;transform:rotate(14deg);background:#b1a7c8;color:#30293e}.book-back>div{font-size:5px;letter-spacing:2px}.book-back>span{font:20px Prata,serif;margin-top:18px;display:block}.book-back p{font:27px/1.3 Prata,serif;margin:10px 0}.featured-circle{width:300px;height:300px;position:absolute;border:1px solid #73866544;border-radius:50%;top:25px;right:5%;box-shadow:0 0 0 30px #73866508,0 0 0 60px #73866504}.library-controls{display:flex;justify-content:space-between;align-items:center;gap:20px;border-bottom:1px solid #303c35}.library-tabs{display:flex;gap:25px;align-items:center}.library-tabs button{padding:14px 0;font-size:10px;display:flex;align-items:center;gap:6px;color:#79917f;border-bottom:2px solid transparent;white-space:nowrap}.library-tabs button>span{font-size:6px;border:1px solid #344b37;padding:2px 4px;border-radius:4px}.library-tabs button.selected{color:#c5ddb0;border-bottom-color:#bfdc9d}.library-search{display:flex;align-items:center;gap:8px;background:#202923;border:1px solid #354637;padding:9px 12px;border-radius:6px;margin-bottom:7px}.library-search svg{width:14px;height:14px;color:#708e73}.library-search input{outline:none;border:0;background:transparent;color:#c8d6bc;font-size:9px;width:155px}.library-search input::placeholder{color:#65826c}.library-sorting{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:22px 0}.difficulty-filters{display:flex;gap:7px;flex-wrap:wrap}.difficulty-filters button{border:1px solid #354038;border-radius:20px;padding:7px 12px;font-size:8px;color:#7c9280}.difficulty-filters .selected{background:#c5dfa1;border-color:#c5dfa1;color:#2a3923}.library-sorting>span{font-size:8px;color:#6a8370}.song-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.song-card{background:#1c2420;border:1px solid #344038;border-radius:9px;overflow:hidden;position:relative;animation:card-in .5s var(--ease) both;animation-delay:calc(var(--i)*30ms);transition:transform .35s var(--ease),border-color .35s,box-shadow .35s}.song-card:hover{transform:translateY(-5px);border-color:#657c54;box-shadow:0 15px 30px #0003}.cover-art{height:170px;position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center;background:var(--cover-bg,#303c32)}.cover-art:after{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 60% 20%,#ffffff09,transparent 75%);pointer-events:none}.cover-sheet{position:absolute;top:28px;width:119px;height:166px;background:var(--cover-paper,#98ac85);border:1px solid #e1e5cf22;padding:14px;transform:rotate(-9deg);box-shadow:8px 12px 25px #0004;transition:transform .5s var(--ease)}.song-card:hover .cover-sheet{transform:rotate(-4deg) translateY(-5px)}.cover-sheet>div:first-child{font-size:4px;letter-spacing:1px;color:var(--cover-ink,#263d2a);opacity:.7;max-width:80px;line-height:1.8}.cover-sheet>strong{font:23px/1.3 Prata,Georgia,serif;letter-spacing:-.7px;color:var(--cover-ink,#263d2a);display:block;margin-top:15px;position:relative;z-index:1;font-weight:400}.cover-sheet>span{position:absolute;left:14px;bottom:17px;font-size:4px;letter-spacing:1px;color:var(--cover-ink,#263d2a);opacity:.8}.cover-circle{position:absolute;width:190px;height:190px;border:1px solid #d4e0b121;border-radius:50%;left:51%;top:15px;box-shadow:0 0 0 13px #d4e0b107,0 0 0 26px #d4e0b105}.cover-staff{position:absolute;height:1px;background:var(--cover-ink,#263d2a);left:5px;right:5px;bottom:41px;opacity:.2;box-shadow:0 5px var(--cover-ink,#263d2a),0 10px var(--cover-ink,#263d2a),0 15px var(--cover-ink,#263d2a),0 20px var(--cover-ink,#263d2a);transform:rotate(-9deg)}.card-favorite{position:absolute;top:13px;right:13px;z-index:3;background:#15201965;border:1px solid #9caf7d33;color:#acb8a0;backdrop-filter:blur(8px)}.card-favorite.selected{color:#d5eab3}.card-favorite.selected svg{fill:#d5eab340}.card-content{padding:20px}.card-composer{font-size:6px;letter-spacing:1.25px;color:#7e947d;text-transform:uppercase}.card-content h3{font-size:17px;letter-spacing:-.6px;line-height:1.5;font-weight:500;color:#d8e2ce;margin:8px 0 8px;min-height:25px}.card-content p{font-size:8px;line-height:1.8;color:#839b84;min-height:29px;margin:0}.card-info{display:flex;justify-content:space-between;gap:10px;color:#677f66;font-size:7px;margin:17px 0}.difficulty-meter{display:flex;gap:3px;align-items:center}.difficulty-meter i{width:3px;height:7px;border-radius:1px;background:#3c4f39}.difficulty-meter i.filled{background:#b7d095}.difficulty-meter>span{margin-left:5px}.card-bottom{display:flex;align-items:center;justify-content:space-between;border-top:1px solid #344433;padding-top:13px;font-size:8px}.card-bottom>span{color:#70896f}.card-bottom>button{color:#c2dbad;display:flex;align-items:center;gap:10px}.card-bottom svg{width:14px;height:14px}.library-bottom{display:flex;align-items:center;justify-content:center;gap:15px;padding:37px 0 15px;color:#7b9775}.library-bottom svg{width:23px;height:23px;color:#8fab79}.library-bottom p{font-size:10px;line-height:1.8}.library-bottom p span{font-size:8px;color:#607a61}.empty-state{grid-column:1/-1;border:1px dashed #43523c;border-radius:10px;text-align:center;color:#819a75;padding:65px 20px;font-size:13px;line-height:2}.week-picker{display:flex;align-items:center;gap:20px;padding:11px 14px;border:1px solid #394936;border-radius:5px;color:#91a582;font-size:9px}.week-picker svg{width:12px;height:12px}.progress-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin:35px 0 25px}.progress-summary>div{padding:26px;background:#1e2820;border:1px solid #3a4835;border-radius:10px}.progress-summary>div>span{font-size:10px;color:#8ba07a}.progress-summary strong{display:block;font-size:45px;font-weight:450;letter-spacing:-2px;color:#d3e5b5;margin:17px 0 8px}.progress-summary strong span{font-size:14px;letter-spacing:0;margin-left:4px;color:#7d9865}.progress-summary small{font-size:8px;color:#728d63}.practice-chart{display:grid;grid-template-columns:1fr 1.1fr;padding:36px;background:#1b251d;border:1px solid #374a32;border-radius:10px;gap:35px}.practice-chart h2{font:25px Prata,serif;letter-spacing:-.6px;line-height:1.5;margin:13px 0;color:#d1dfb8}.practice-chart p{font-size:10px;color:#6e8a62}.week-chart{height:200px;display:flex;align-items:flex-end;gap:20px;padding-top:20px}.week-chart>div{flex:1;height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:12px}.week-chart i{height:var(--h);min-height:4px;background:#496143;width:100%;border-radius:5px 5px 2px 2px;animation:bar-grow 1s var(--ease) both;transform-origin:bottom}.week-chart .today i{background:#c1dba2;box-shadow:0 0 30px #c1dba215}.week-chart span{font-size:7px;color:#7d9671}.history-section{margin-top:40px}.history-section h2{font-size:19px;font-weight:500;letter-spacing:-.6px;color:#bccdab}.history-row{display:flex;align-items:center;gap:15px;padding:20px 5px;border-bottom:1px solid #30422b}.history-art{width:39px;height:45px;border-radius:4px;background:#344530;display:grid;place-items:center;font:24px Prata,serif;color:#b7c79d}.history-text strong{display:block;font-size:12px;font-weight:500;color:#c0d1a8}.history-text small{display:block;font-size:8px;color:#6e8a5d;margin-top:5px}.history-row>strong{margin-left:auto;font-weight:450;font-size:23px;color:#bed59b}.history-row button{font-size:9px;color:#9bb580;margin-left:25px}.concept-version{font-size:9px;letter-spacing:2px;color:#91a67c;border:1px solid #3d5033;padding:13px}.concept-intro{display:grid;grid-template-columns:1fr 1fr;gap:45px;background:#1e2920;border:1px solid #3c5133;border-radius:12px;padding:35px;margin:35px 0}.concept-intro h2{font:28px/1.5 Prata,serif;color:#d6e3bd;letter-spacing:-.7px;margin:0 0 15px}.concept-intro p{font-size:11px;line-height:2;color:#91a57d;margin:0}.palette{display:flex;align-items:center;gap:10px}.palette>span{height:150px;flex:1;background:var(--c);border-radius:6px;color:#8d9c80;border:1px solid #b6c39b33;padding:12px;font-size:9px;position:relative}.palette small{position:absolute;bottom:12px;left:12px;font-size:7px;writing-mode:vertical-rl;color:#212b1e88}.palette>span:first-child small{color:#6b815f}.reference-title{font-size:19px;font-weight:500;letter-spacing:-.6px;margin:40px 0 20px;color:#cadab1}.reference-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:17px}.reference-grid>a,.reference-note{border:1px solid #3e5136;border-radius:8px;padding:24px;background:#1c291e}.reference-grid>a:hover{border-color:#889c66;transform:translateY(-3px)}.reference-grid>a>span{font-size:6px;letter-spacing:1.3px;color:#738e5d}.reference-grid h3{font-size:18px;font-weight:500;color:#c8d9ae;letter-spacing:-.5px;margin:15px 0 10px}.reference-grid p{font-size:10px;line-height:1.9;color:#8b9f74;margin:0}.reference-note{background:#2f3b24}.reference-note>span{color:#b9ce8c}.scope-note{border-left:2px solid #b7cd8d;margin-top:35px;padding:8px 0 8px 23px}.scope-note strong{font-size:12px;color:#bfd29e}.scope-note p{font-size:10px;color:#7d9364;line-height:2;max-width:650px}dialog{background:#1d2424;border:1px solid #465547;border-radius:13px;color:#dbe5cf;padding:0;width:520px;max-width:calc(100% - 28px);max-height:85dvh;box-shadow:0 25px 120px #000b;animation:dialog-in .3s var(--ease)}dialog::backdrop{background:#070e0bd4;backdrop-filter:blur(8px)}.modal-top{padding:19px 24px;border-bottom:1px solid #354637;display:flex;justify-content:space-between;align-items:center}.modal-top .eyebrow{font-size:6px}#modal-content{padding:25px}#modal-content h2{font:26px/1.4 Prata,serif;color:#d4e3b9;margin:0 0 14px}#modal-content p{font-size:11px;line-height:1.9;color:#93a67e;margin:0 0 20px}#modal-content .button{margin-top:15px}.modal-fields{display:grid;grid-template-columns:1fr 1fr;gap:18px}.modal-fields label{font-size:9px;color:#8ca279}.modal-fields select{display:block;width:100%;background:#253525;border:1px solid #425d36;border-radius:5px;padding:10px;font-size:10px;color:#c4d9a8;margin-top:8px}.modal-demo{font-size:8px;line-height:1.9;padding:13px;border:1px solid #42533a;background:#273325;border-radius:5px;color:#87a06f}.toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);background:#c3dba3;border:1px solid #dcebc6;color:#27391e;border-radius:8px;padding:12px 20px;font-size:11px;box-shadow:0 10px 40px #0005;z-index:100;max-width:calc(100% - 25px);animation:toast-in .25s var(--ease);line-height:1.7}.focus-mode .sidebar,.focus-mode .topbar,.focus-mode .page-heading,.focus-mode .practice-panel,.focus-mode .player-bottom,.focus-mode .phrase-strip,.focus-mode .main-footer{display:none}.focus-mode main{margin:0;padding:18px}.focus-mode .page{padding:0}.focus-mode .studio-layout{grid-template-columns:1fr}.focus-mode .roll-area{height:calc(100dvh - 386px);min-height:120px}.focus-mode .keyboard{height:135px}.playing .play-line{animation:line-breathe 2s ease-in-out infinite}.playing .live-indicator{background:#c9e7a8;box-shadow:0 0 10px #c9e7a855}.playing .waiting-badge{opacity:0;transform:translate(-50%,8px);transition:opacity .3s,transform .3s}.waiting-badge{transition:opacity .3s,transform .3s}.switching #roll{animation:canvas-in .4s var(--ease)}
@keyframes page-in{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}@keyframes card-in{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes line-breathe{50%{box-shadow:0 -3px 25px #b6e7b852}}@keyframes badge-in{from{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%,0)}}@keyframes dialog-in{from{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:none}}@keyframes toast-in{from{opacity:0;transform:translate(-50%,7px)}to{opacity:1;transform:translate(-50%,0)}}@keyframes bar-grow{from{transform:scaleY(.01)}to{transform:scaleY(1)}}@keyframes canvas-in{from{opacity:.2}to{opacity:1}}
@media(min-width:1600px){.sidebar{width:228px;padding:35px 22px}main{margin-left:228px;padding:0 52px}.topbar{height:82px}.page{padding-top:34px}.page-heading{margin-bottom:30px}.page-heading h1{font-size:34px}.studio-layout{grid-template-columns:minmax(0,1fr) 290px;gap:28px}.practice-panel{padding:24px}.piece-header{padding:21px 24px}.piece-title h2{font-size:27px}.roll-area{height:clamp(300px,calc(100dvh - 565px),440px)}.keyboard{height:130px}.player-toolbar{padding:12px 20px}.practice-modes{gap:9px}.mode-card{padding:13px}.mode-card strong{font-size:12px}.mode-card small{font-size:8px}.field-caption{font-size:7px}.hand-selector button{font-size:9px;padding:13px}.practice-panel .panel-title{margin-bottom:27px}.hand-caption{margin-top:28px}.tempo-section,.session-score{margin-top:27px;padding-top:23px}.display-settings{margin-top:24px;font-size:8px}.score-main>div:first-child>strong{font-size:44px}.streak{padding:16px 13px}.streak strong{font-size:11px}.streak small{font-size:8px}.library-heading h1{font-size:41px}.library-featured{min-height:340px}.featured-text{padding:40px 45px}.featured-text h2{font-size:34px}.cover-art{height:205px}.cover-sheet{width:143px;height:192px}.card-content{padding:24px}.card-content h3{font-size:20px}.card-content p{font-size:10px}}
@media(max-width:1200px){.sidebar{width:180px;padding:25px 14px 16px}main{margin-left:180px;padding:0 24px}.brand{font-size:30px}.sidebar-subtitle{font-size:6px;letter-spacing:1px}.nav-item{font-size:10px;padding:12px 10px;gap:9px}.recent-song{padding:8px 7px;gap:8px}.recent-song>span:last-child{font-size:9px}.recent-song small{font-size:6px}.studio-layout{grid-template-columns:minmax(0,1fr) 230px;gap:17px}.practice-panel{padding:16px}.heading-actions{gap:10px}.demo-indicator{display:none}.page-heading h1{font-size:27px}.toolbar-right{gap:5px}.hands-legend{font-size:6px;gap:4px}.view-switch button{padding:6px 8px;font-size:7px}.transport{padding:13px 14px 10px}.transport-tools{gap:6px}.play-controls{gap:6px}.time{margin-left:5px;gap:5px;font-size:8px}.player-bottom{font-size:6px}.phrase-strip{padding:14px 12px;gap:8px}.phrase-buttons button{padding:6px;font-size:7px}.phrase-strip strong{font-size:9px}.phrase-strip small{font-size:6px}.phrase-number{font-size:20px;padding-right:10px}.phrase-buttons{gap:3px}.phrase-strip>.icon-button{display:none}.library-tabs{gap:17px}.library-tabs button{font-size:8px}.library-search input{width:130px;font-size:8px}.song-grid{gap:15px}.card-content{padding:16px}.card-content h3{font-size:15px}.cover-art{height:150px}.cover-sheet{top:21px;width:110px;height:150px}.cover-sheet>strong{font-size:21px}.library-heading h1{font-size:30px}.featured-text{padding:27px 29px}.featured-text h2{font-size:26px}.featured-text p{font-size:8px}.reference-grid{grid-template-columns:1fr 1fr}.concept-intro{gap:25px}.palette{gap:7px}.palette>span{padding:8px}.palette small{left:8px}}
@media(max-width:1000px){.studio-layout{grid-template-columns:1fr}.practice-panel{display:grid;grid-template-columns:1.1fr 1fr;gap:0 24px;padding:23px}.panel-title{grid-column:1/-1;margin-bottom:17px}.practice-panel>.field-caption{grid-column:1}.practice-modes{grid-column:1;grid-row:3/8}.hand-caption{grid-column:2!important;grid-row:2;margin:0!important}.hand-selector{grid-column:2;grid-row:3}.tempo-section{grid-column:2;grid-row:4/7;border-top:0;padding-top:18px;margin-top:0}.session-score{grid-column:1/-1;margin-top:20px;display:grid;grid-template-columns:1fr 1fr;gap:10px 20px}.session-score-title{grid-column:1/-1}.score-main{margin:0;grid-column:1;grid-row:2/4;justify-content:start;gap:25px}.score-details{grid-column:2;grid-row:2;align-items:center}.streak{grid-column:2;grid-row:3;margin:0}.display-settings{grid-column:1/-1;margin-top:18px;padding-top:15px;border-top:1px solid #3b4c35}.roll-area{height:300px}.keyboard{height:126px}.page-heading h1{font-size:30px}.phrase-strip{padding:18px}.phrase-strip strong{font-size:11px}.phrase-strip small{font-size:8px}.phrase-buttons button{font-size:9px;padding:8px 10px}.sidebar-foot{font-size:14px}.library-controls{align-items:flex-start;flex-direction:column;gap:12px}.library-tabs{width:100%;gap:25px}.library-tabs button{font-size:9px}.library-search{width:100%}.library-search input{width:100%;font-size:10px}.song-grid{grid-template-columns:1fr 1fr}.featured-text{width:58%}.featured-art{left:35%}.featured-text h2{font-size:24px}.featured-text p br{display:none}.library-featured{min-height:270px}.featured-text .button{font-size:8px;padding:10px}.difficulty-filters button{font-size:7px;padding:6px 9px}.library-sorting{align-items:flex-start}.library-sorting>span{white-space:nowrap;padding-top:5px;font-size:7px}.library-heading{gap:20px}.library-heading h1{font-size:27px}.library-heading .button{font-size:9px}.concept-intro{grid-template-columns:1fr}.palette>span{height:100px}.palette small{writing-mode:horizontal-tb}.progress-summary{gap:13px}.progress-summary>div{padding:20px 15px}.progress-summary strong{font-size:34px}.progress-summary strong span{font-size:11px}.practice-chart{padding:25px;gap:20px;grid-template-columns:1fr}.week-chart{height:170px;gap:25px}.history-row button{margin-left:10px;font-size:8px}.history-text strong{font-size:10px}}
@media(max-width:700px){.sidebar{position:static;width:100%;height:65px;padding:0 18px;flex-direction:row;align-items:center;justify-content:space-between;border-right:0;border-bottom:1px solid #303b35}.brand{font-size:30px;padding:0}.brand-icon{transform:scale(.9) rotate(-5deg);margin-right:-2px}.brand>span:last-child{font-size:8px;margin-top:5px}.sidebar nav{display:flex;gap:4px}.nav-item{font-size:0;gap:0;padding:10px}.nav-item svg{width:18px;height:18px}.nav-small-dot,.nav-count,.nav-caption,.sidebar-subtitle,.recent-label,.recent-song,.sidebar-bottom{display:none}main{margin:0;padding:0 16px}.topbar{height:53px}.breadcrumb{font-size:8px;gap:9px}.topbar-right{gap:12px}.top-help,.user-avatar{display:none}.concept-badge{font-size:6px;padding:6px 7px}.page{padding-top:24px}.page-heading{gap:10px;margin-bottom:20px}.page-heading h1{font-size:26px;letter-spacing:-1px}.eyebrow{font-size:5px;letter-spacing:1.3px}.page-heading .button{font-size:0;padding:10px;gap:0}.page-heading .button svg{width:18px;height:18px}.piece-header{padding:14px;gap:11px}.piece-art{width:45px;height:52px}.piece-title h2{font-size:22px}.piece-composer{font-size:5px;letter-spacing:1.1px}.piece-details{font-size:6px;gap:6px}.piece-header>.icon-button{width:25px}.piece-header>.icon-button:last-child{display:none}.player-toolbar{padding:9px 10px}.view-switch button{font-size:7px;padding:6px 7px;gap:5px}.view-switch svg{width:11px;height:11px}.hands-legend{display:none}.focus-button{font-size:7px;gap:4px}.roll-area{height:290px}.roll-title{font-size:5px;left:13px;top:13px;gap:5px}.roll-scale{font-size:6px;right:13px;top:13px}.piano-bed{padding:0 5px 5px}.keyboard{height:105px}.key span{font-size:6px;bottom:10px}.key.black span{font-size:4px;bottom:7px}.piano-status{font-size:6px;padding:9px 11px}.piano-status button{font-size:6px;gap:4px}.piano-status button svg{width:9px;height:9px}.piano-status .status-divider{margin:0 2px}.transport{padding:12px 10px 10px}.play-button{width:37px;height:37px}.play-controls{gap:4px}.play-controls>.icon-button{width:19px}.play-controls>.icon-button svg{width:14px;height:14px}.time{font-size:8px;gap:4px;margin-left:3px}.transport-tools{gap:5px}.loop-button{font-size:7px;padding:6px 5px;gap:4px}.loop-button svg{width:12px}.transport-icon{width:17px}.transport-icon svg{width:13px;height:13px}.transport-divider{margin:0 1px}.speed-button{font-size:8px;gap:4px}.speed-button svg{width:10px}.timeline-labels{font-size:5px}.waiting-badge{gap:7px;padding:8px 10px}.waiting-badge strong{font-size:11px}.waiting-badge>span:nth-child(2){font-size:7px}.waiting-badge kbd{font-size:6px}.player-bottom{font-size:6px;flex-wrap:wrap;padding:12px 0;gap:3px}.player-bottom>span:first-child{width:100%;margin:0 0 7px}.player-bottom kbd{font-size:6px}.phrase-strip{padding:14px 11px;gap:10px;flex-wrap:wrap}.phrase-strip>div:first-child{gap:9px}.phrase-number{font-size:19px}.phrase-strip strong{font-size:9px}.phrase-strip small{font-size:7px}.phrase-buttons{gap:4px}.phrase-buttons button{font-size:7px;padding:6px 7px}.practice-panel{padding:19px 16px;gap:0 18px}.panel-title h3{font-size:12px}.practice-modes{gap:6px}.mode-card{padding:9px 7px;gap:7px}.mode-icon svg{width:14px;height:14px}.mode-card strong{font-size:8px}.mode-card small{font-size:6px}.mode-card>i{width:8px;height:8px}.mode-card.selected>i:after{inset:1.5px}.hand-selector{gap:4px}.hand-selector button{padding:9px 2px;font-size:6px}.hand-selector svg{width:13px;height:13px}.tempo-value{margin-top:11px}.tempo-value strong{font-size:30px}.tempo-value button{width:22px;height:22px;font-size:13px}.tempo-original{font-size:5px}.field-caption{font-size:5px;letter-spacing:1px}.tempo-value>div>span{font-size:6px}.tempo-labels{font-size:5px}.session-score{gap:10px 15px;padding-top:17px}.score-main>div:first-child>strong{font-size:34px}.score-main>div:first-child>strong>span{font-size:17px}.score-main{gap:14px}.score-ring{width:43px;height:43px}.score-ring>svg{width:43px;height:43px}.score-main>div:first-child>span{font-size:7px}.score-details{gap:12px}.score-details>span{font-size:6px;gap:4px}.score-details strong{font-size:8px}.streak{padding:9px;gap:7px}.streak strong{font-size:8px}.streak small{font-size:6px}.streak svg{width:14px;height:14px}.display-settings{font-size:7px}.main-footer{margin-top:25px;padding:17px 0;gap:15px}.main-footer>span:first-child{font-size:20px}.main-footer>span:first-child>span:last-child{display:none}.main-footer button{font-size:6px}.library-heading{align-items:flex-start;gap:14px;margin-bottom:23px}.library-heading h1{font-size:26px;letter-spacing:-.7px;line-height:1.4;margin:10px 0}.library-heading p{font-size:9px;max-width:280px}.library-heading>.button{font-size:0;gap:0;padding:10px;margin-top:23px}.library-heading>.button svg{width:18px;height:18px}.library-featured{min-height:260px;margin:22px 0 25px}.featured-text{padding:23px 20px;width:66%}.featured-text h2{font-size:23px;line-height:1.45}.featured-text p{font-size:8px;max-width:170px}.featured-text .button{padding:10px;font-size:7px;gap:7px}.featured-text .button svg{width:12px;height:12px}.featured-meta{font-size:4px;gap:7px;margin-top:18px;white-space:nowrap}.featured-meta>span{font-size:7px}.featured-meta i{width:12px}.featured-art{left:38%;opacity:.8}.featured-art>img{object-position:57% center;width:145%;left:-20%}.art-caption{display:none}.book{width:140px;height:200px;padding:15px}.book-front{left:20%;top:41px}.book-front>span{font-size:25px}.book-back{left:10%;top:80px}.library-tabs{gap:18px}.library-tabs button{font-size:7px;gap:5px}.library-tabs button>span{font-size:5px;padding:2px 3px}.library-controls{gap:12px}.library-search{padding:9px 11px}.library-search input{font-size:9px}.library-sorting{gap:10px;margin:17px 0;flex-wrap:wrap}.difficulty-filters{gap:5px}.difficulty-filters button{font-size:6px;padding:6px 8px}.library-sorting>span{font-size:7px;padding-top:0}.song-grid{gap:12px}.cover-art{height:145px}.cover-sheet{width:100px;height:145px;padding:12px;top:20px}.cover-sheet>strong{font-size:21px}.cover-sheet>div:first-child{font-size:3.5px}.card-content{padding:14px 12px}.card-composer{font-size:4.5px;letter-spacing:1px;min-height:13px}.card-content h3{font-size:14px;line-height:1.5;margin:6px 0 7px;min-height:42px}.card-content p{font-size:6.5px;line-height:1.8;min-height:35px}.card-info{font-size:6px;gap:7px;flex-wrap:wrap;margin:14px 0}.difficulty-meter>span{font-size:6px}.difficulty-meter i{width:2px;height:6px}.difficulty-meter{gap:2px}.card-bottom{font-size:6px;padding-top:11px}.card-bottom svg{width:12px;height:12px}.card-bottom>button{gap:6px}.card-favorite{width:25px;height:25px;top:10px;right:10px}.card-favorite svg{width:13px;height:13px}.library-bottom{padding:25px 0 10px;gap:12px;justify-content:start}.library-bottom p{font-size:8px}.library-bottom p>span{font-size:6px}.library-bottom svg{width:19px;height:19px}.progress-summary{gap:10px;margin:25px 0 17px}.progress-summary>div{padding:16px 11px}.progress-summary>div>span{font-size:7px}.progress-summary strong{font-size:27px;margin:12px 0 8px}.progress-summary strong span{font-size:8px}.progress-summary small{font-size:6px}.progress-page .library-heading{display:block}.week-picker{width:fit-content;margin-top:18px;font-size:8px}.practice-chart{padding:23px;gap:15px}.practice-chart h2{font-size:24px}.practice-chart p{font-size:9px}.week-chart{height:150px;gap:17px}.week-chart span{font-size:6px}.history-section h2{font-size:17px}.history-row{gap:10px;padding:17px 0}.history-art{width:32px;height:37px;font-size:20px}.history-text strong{font-size:9px}.history-text small{font-size:6px;max-width:175px;line-height:1.7}.history-row>strong{font-size:18px}.history-row button{font-size:0;margin-left:0;width:22px}.history-row button:after{content:'↗';font-size:15px}.concept-version{font-size:7px;padding:10px;margin-top:16px;white-space:nowrap}.concept-intro{padding:24px 20px;gap:23px;margin-top:25px}.concept-intro h2{font-size:25px}.concept-intro p{font-size:10px}.palette>span{height:100px}.palette small{font-size:6px;left:8px}.reference-title{font-size:17px;margin-top:30px}.reference-grid{gap:12px}.reference-grid>a,.reference-note{padding:18px 14px}.reference-grid h3{font-size:16px;margin:10px 0}.reference-grid>a>span{font-size:5px;letter-spacing:1px}.reference-grid p{font-size:8px}.scope-note{padding-left:17px}.scope-note strong{font-size:11px}.scope-note p{font-size:9px}.modal-top{padding:15px 20px}#modal-content{padding:23px 20px}#modal-content h2{font-size:24px}#modal-content p{font-size:10px}.modal-fields{gap:15px}.modal-fields label{font-size:8px}.modal-fields select{font-size:9px}.focus-mode main{padding:8px}.focus-mode .keyboard{height:100px}.focus-mode .roll-area{height:calc(100dvh - 338px)}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
/* Larger type for a real working distance, with secondary surfaces staying graphite. */
@media(min-width:701px){
.nav-item{font-size:12px}.recent-song>span:last-child{font-size:11px}.recent-song small{font-size:8px}.nav-caption,.recent-label{font-size:8px}.sidebar-subtitle{font-size:7px}.device-card strong{font-size:11px}.device-card>div:nth-of-type(2){font-size:8px}.device-card-footer{font-size:8px}.sidebar-help{font-size:10px}.breadcrumb{font-size:11px}.concept-badge{font-size:8px}.eyebrow{font-size:8px}.piece-composer{font-size:8px}.piece-details{font-size:9px}.piece-title h2{font-size:25px}.view-switch button{font-size:10px;padding:7px 11px}.focus-button{font-size:9px}.hands-legend{font-size:8px}.roll-title{font-size:7px}.roll-scale{font-size:8px}.waiting-badge>span:nth-child(2){font-size:9px}.waiting-badge strong{font-size:13px}.piano-status,.piano-status button{font-size:8px}.time{font-size:11px}.loop-button{font-size:10px}.speed-button{font-size:11px}.timeline-labels{font-size:7px}.player-bottom{font-size:8px}.player-bottom kbd{font-size:7px}.field-caption{font-size:8px;letter-spacing:1.15px;color:#889791}.panel-title h3{font-size:14px}.mode-card strong{font-size:11px}.mode-card small{font-size:8px}.hand-selector button{font-size:9px}.tempo-original,.tempo-labels{font-size:7px}.score-main>div:first-child>span{font-size:9px}.score-details>span{font-size:9px}.streak strong{font-size:10px}.streak small{font-size:8px}.display-settings{font-size:8px}.phrase-strip strong{font-size:11px}.phrase-strip small{font-size:8px}.phrase-buttons button{font-size:9px}.button{font-size:11px}.library-heading p{font-size:12px}.featured-eyebrow{font-size:8px}.featured-text p{font-size:11px}.featured-text .button{font-size:10px}.featured-meta{font-size:6px}.library-tabs button{font-size:11px}.library-search input{font-size:11px;width:185px}.difficulty-filters button{font-size:10px}.library-sorting>span{font-size:10px}.card-composer{font-size:8px}.card-content h3{font-size:19px}.card-content p{font-size:10px;min-height:36px}.card-info,.card-bottom{font-size:9px}.difficulty-meter>span{font-size:8px}.library-bottom p{font-size:11px}.library-bottom p>span{font-size:9px}.main-footer button{font-size:8px}.phrase-strip{flex-wrap:wrap}.mode-card{background:#202628}.mode-card.selected{background:#2c382a}
}
@media(min-width:1001px) and (max-height:800px){.topbar{height:56px}.page{padding-top:18px}.page-heading{margin-bottom:17px}.page-heading h1{font-size:26px}.page-heading .eyebrow{font-size:6px}.piece-header{padding:12px 17px}.piece-art{height:45px;width:43px}.piece-title h2{font-size:22px;margin-bottom:5px}.piece-composer{font-size:7px}.piece-details{font-size:8px}.player-toolbar{padding:8px 13px}.roll-area{height:172px;min-height:172px}.keyboard{height:93px}.piano-status{padding:7px 14px}.transport{padding:12px 16px 8px}.timeline-wrap{margin-top:10px}.sidebar{padding-top:23px}.nav-caption{margin-top:31px}.sidebar-foot{display:none}.recent-label{margin-top:25px}.sidebar-help{padding-top:19px}.focus-mode .roll-area{height:calc(100dvh - 354px)}}
.featured-art>img{object-position:65% 55%}.featured-text{width:48%}.library-featured{background:#191f1f}.featured-art:after{background:linear-gradient(90deg,#191f1f,transparent 25%,transparent 92%,#191f1f33)}
@media(max-width:700px){.featured-text{width:66%}}

.song-card{animation-fill-mode:backwards}.featured-art>img{animation:sculpture-float 14s ease-in-out infinite;transform-origin:center}@keyframes sculpture-float{0%,100%{transform:translateY(0) scale(1)}50%{transform:translateY(-4px) scale(1.025)}}
@media(prefers-reduced-motion:reduce){.featured-art>img{animation:none}}

.nav-item:not(.selected) .nav-small-dot{opacity:0}

/* Live player, accessible native controls and real library data. */
:root{color-scheme:dark}.connection-pill{display:flex;align-items:center;gap:8px;border:1px solid #354138;background:#20281f;border-radius:7px;padding:10px 12px;font-size:11px;color:#c7d4be}.connection-pill svg{width:14px;height:14px}.status-dot{width:6px;height:6px;border-radius:50%;display:inline-block;background:#83908a}.status-dot.connected{background:#c9e7a8;box-shadow:0 0 9px #c9e7a855}.device-card-head>.status-dot{background:#83908a;box-shadow:none}.device-card-head>.status-dot.connected{background:#c9e7a8;box-shadow:0 0 10px #c9e7a855}.connection-pill:has(.connected){border-color:#586d45}.icon-button{display:inline-grid;place-items:center;min-width:30px;min-height:30px;border-radius:5px}.icon-button:hover{background:#ffffff09}.is-favorite{color:#c9e7a8}.is-favorite svg{fill:#c9e7a822}.piece-title{min-width:0}.piece-title h2{overflow-wrap:anywhere}.piece-details{flex-wrap:wrap}.piece-details span{line-height:1.4}.piece-art{flex-shrink:0}.speed-control{display:flex;align-items:center;gap:7px;font-size:11px;color:#ced9ce}.speed-control>span{font-size:8px;letter-spacing:.6px;color:#7d9188}.speed-control select{border:0;background:#232f2c;color:#d5e9ca;padding:6px;border-radius:4px;max-width:85px}.timeline-preview{align-items:center}.timeline-preview i{height:var(--bar);width:3px;border-radius:1px;background:#6e8c7366;flex:1}.timeline-input input{cursor:pointer}.loop-editor{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:15px 0 5px;padding:12px;background:#111b1b;border-radius:7px;font-size:10px}.loop-editor label{display:flex;align-items:center;gap:5px}.loop-editor input{width:62px;min-height:32px;border:1px solid #3b4944;border-radius:4px;background:#202b29;color:#d5e2d2;padding:5px}.text-button{color:#c9e7a8;padding:7px 3px;font-size:11px}.button.small{padding:7px 10px;font-size:10px;background:#c9e7a8;color:#283025}.field-description{font-size:10px;color:#90a298;line-height:1.65;margin:12px 0 0}.waiting-badge{pointer-events:none;white-space:normal;max-width:85%}.waiting-badge strong{font-size:11px}.waiting-badge>span:first-child{width:5px;height:5px;flex-shrink:0}.bottom-tip{display:flex;gap:7px;align-items:flex-start;font-size:10px;line-height:1.65;color:#8fa295;border-top:1px solid #2a3734;padding:12px 18px}.bottom-tip svg{width:13px;height:16px;flex-shrink:0}.player-bottom>button{color:#96ac96}.panel-extras{margin-top:15px}.toggle-row{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:33px;cursor:pointer;font-size:11px;color:#aebcb0}.toggle-row input{position:absolute;opacity:0;pointer-events:none}.switch{width:27px;height:16px;border-radius:10px;background:#3b4641;position:relative;transition:background .2s}.switch:before{content:'';position:absolute;width:10px;height:10px;border-radius:50%;top:3px;left:3px;background:#a4b0a5;transition:transform .2s}.toggle-row input:checked+.switch{background:#7f9c6b}.toggle-row input:checked+.switch:before{background:#e4efd9;transform:translateX(11px)}.toggle-row input:focus-visible+.switch{outline:2px solid #c9e7a8;outline-offset:4px}.session-progress{margin-top:14px;font-size:10px;color:#9daa9e}.session-progress>span{display:flex;justify-content:space-between}.session-progress>div{height:3px;background:#354236;margin-top:8px;border-radius:2px;overflow:hidden}.session-progress i{height:100%;background:#c9e7a8;display:block;transition:width .3s}.lesson-panel .mode-card{min-height:58px}.lesson-panel .mode-card.selected{border-color:#6c8154}.lesson-panel .tempo-block{margin-top:22px}.score-details{flex-wrap:wrap;gap:8px}.score-main{margin-top:12px}.key.hint:after{background:#a7d18b;box-shadow:0 0 20px #b6df9633}.key.black.hint:after{background:#b1a4e2}.key.pressed:after{background:#d6ecb9;box-shadow:0 0 18px #c9e7a877}.key.bad:after{background:#e7a49c!important}.key.bass:after{background:#b5aae9}.key.pressed{transform:translateY(1px)}.key .key-label{pointer-events:none;line-height:1.5}.key .key-label small{display:block;font-size:8px;color:#777e77;letter-spacing:.2px}.key.black .key-label small{color:#8e9b8d}.keyboard[data-count="61"] .key-label,.keyboard[data-count="88"] .key-label{font-size:8px}.keyboard[data-count="61"] .key-label small,.keyboard[data-count="88"] .key-label small{display:none}.keyboard[data-count="88"] .key-label{font-size:6px}.key[data-midi]:focus-visible{outline-offset:-3px;z-index:6}.roll-area{isolation:isolate}.volume-button.muted{color:#61756a}.library-controls{flex-wrap:wrap}.library-tabs{flex-wrap:wrap;row-gap:0}.library-tabs button{min-height:43px}.library-selection{display:flex;justify-content:space-between;align-items:center;gap:15px;margin:20px 0;color:#91a297;font-size:11px}.library-selection label{display:flex;gap:12px;align-items:center}.library-selection select{background:#202827;border:1px solid #39443e;border-radius:6px;padding:8px 12px;color:#d0dccd;font-size:11px}.card-source{display:flex;align-items:center;flex-wrap:wrap;gap:9px;margin-top:12px;padding-top:10px;border-top:1px solid #2d3b34;color:#91a492;font-size:9px;line-height:1.65}.card-source a:hover{text-decoration:underline;color:#c9e7a8}.card-credit{flex-basis:100%;font-size:8px;color:#819184}.delete-upload{color:#e8b6aa;text-decoration:underline}.card-content h3{min-height:0;line-height:1.4}.card-composer{min-height:24px}.card-content p{min-height:54px}.card-content .card-bottom{gap:6px;flex-wrap:wrap}.card-content .card-bottom>span{font-size:8px}.card-bottom>button{min-height:32px}.song-card{display:flex;flex-direction:column;min-width:0}.card-content{display:flex;flex-direction:column;flex:1}.card-content .card-info{margin-top:auto;padding-top:18px}.library-footer{font-size:10px;line-height:1.8;color:#839489;border-top:1px solid #2a342f;margin-top:30px;padding-top:15px}.library-footer a{color:#b9ccac}.empty-state{grid-column:1/-1;text-align:center;padding:55px 20px;background:#1b2321;border:1px solid #303d34;border-radius:10px;color:#9eb19e;font-size:13px;line-height:2}.library-bottom{display:none}.history-panel{margin-top:34px}.history-header{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:16px}.history-header h2{font-weight:500;font-size:22px}.history-item{display:flex;align-items:center;gap:20px;padding:20px 0;border-bottom:1px solid #29372e}.history-item>div{flex:1;min-width:0}.history-item strong{font-size:13px;font-weight:550}.history-item small{font-size:10px;line-height:1.8;color:#8ca18f;display:block;margin-top:7px}.history-item>span{font-family:Prata,Georgia,serif;font-size:24px;color:#c9e7a8}.week-chart{height:175px}.week-chart>div{min-width:18px}.progress-summary>div>strong{font-size:46px}.progress-page .library-heading{align-items:start}.main-footer>a{font-size:10px;color:#7d9681}.main-footer>span{display:flex;align-items:center;gap:8px}.main-footer>span>span:last-child{font-size:7px;letter-spacing:1px}.main-footer>span>.footer-brand-dot{margin-left:-8px;font-size:20px}.focus-mode .bottom-tip,.focus-mode .player-bottom{display:none}.studio:fullscreen{background:#151d1b;padding:20px;width:100%;height:100%;overflow:auto;border-radius:0}.studio:fullscreen .roll-area{height:calc(100dvh - 380px)}
dialog{padding:0;border:1px solid #425040;color:#dae3d6;background:#1b2320;border-radius:14px;max-width:min(600px,calc(100% - 28px));width:600px;max-height:90dvh;box-shadow:0 20px 100px #0008;overflow:auto}dialog::backdrop{background:#080d0bc9;backdrop-filter:blur(7px)}dialog[open]{animation:page-in .24s var(--ease)}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:22px 25px;margin:0;border-bottom:1px solid #344333;gap:15px}.modal-header h2{font-size:20px;font-weight:550;margin:0;letter-spacing:-.5px}.modal-body{padding:25px}.modal-body>label,.settings-grid>label{display:grid;gap:9px;font-size:12px;color:#b6c8b2}.modal-body p,.modal-note{font-size:12px;line-height:1.8;color:#9eb49b}.modal-footer{display:flex;justify-content:flex-end;align-items:center;gap:12px;padding:18px 25px;border-top:1px solid #344333}.modal-footer .button{background:#c9e7a8;color:#283225;font-size:12px}.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.settings-grid input:not([type="range"]):not([type="checkbox"]),.settings-grid select,.modal-body select{width:100%;min-width:0;min-height:40px;background:#253027;color:#d9e7d0;padding:9px;border:1px solid #465640;border-radius:6px}.settings-grid input[type="range"]{width:100%;accent-color:#c9e7a8}.settings-grid .full{grid-column:1/-1}.modal-body>.toggle-row{display:flex;margin-top:20px}.modal-note{padding:12px;border-left:2px solid #89a66d;background:#253125;margin-top:20px}.device-connect-box{padding:17px;border:1px solid #43523d;border-radius:9px;margin:15px 0}.device-connect-box .button{background:#c9e7a8;color:#283225;white-space:normal}.device-instructions{font-size:12px;color:#a9bea5;line-height:1.9;padding-left:18px}.help-features{display:grid;gap:14px;margin-top:20px}.help-features strong{display:block;color:#d2dfc9;font-weight:550;font-size:13px}.help-features p{margin:5px 0}.result-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.result-stats>div{background:#263222;border:1px solid #43503c;border-radius:8px;padding:16px;text-align:center}.result-stats strong{display:block;font-size:25px;color:#c9e7a8;margin-bottom:5px}.result-stats span{font-size:10px;color:#a5b49b}.modal-body .field-label{display:block;margin:18px 0 8px;font-size:12px}.toast{position:fixed;bottom:24px;left:calc(50% + 100px);transform:translateX(-50%);z-index:100;background:#d2e7b9;color:#273425;border:1px solid #e2efcf;border-radius:9px;padding:13px 20px;max-width:min(560px,90%);font-size:12px;line-height:1.6;box-shadow:0 10px 40px #0006}.phrase-list{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.phrase-list .button{flex-direction:column;align-items:start;gap:7px;font-size:11px}.phrase-list small{color:#84997f;font-weight:400}.drag-overlay{position:fixed;inset:14px;z-index:120;display:grid;place-content:center;text-align:center;background:#17261bf5;border:2px dashed #c9e7a8;border-radius:15px;pointer-events:none}.drag-overlay strong{font-size:28px;color:#c9e7a8}.drag-overlay span{font-size:14px;margin-top:16px;color:#a4ba9a}.offline{font-size:10px;color:#a6b995}
@media(min-width:1001px){.studio-grid{grid-template-columns:minmax(0,1fr) 275px}.lesson-panel{padding:20px}.lesson-panel .mode-card small{font-size:9px}.piece-title h2{font-size:clamp(19px,2vw,27px)}.roll-area{height:260px}}
@media(min-width:1001px) and (max-height:800px){.roll-area{height:172px}.bottom-tip{padding:9px 16px;font-size:9px}.player-bottom{padding:9px 16px}.lesson-panel .mode-card{padding:11px 10px;min-height:55px}.lesson-panel .tempo-block{margin-top:15px}.lesson-panel .practice-modes{gap:7px}.lesson-panel .score-panel{padding-top:16px;margin-top:15px}.panel-extras{margin-top:10px}.toggle-row{font-size:10px;min-height:28px}.lesson-panel .panel-title{margin-bottom:17px}.field-description{font-size:9px}}
@media(max-width:1000px){.studio-grid{grid-template-columns:1fr}.lesson-panel{display:grid;grid-template-columns:1fr 1fr;gap:18px}.lesson-panel>.panel-title,.lesson-panel>#mode-description{grid-column:1/-1}.lesson-panel>.practice-modes{grid-row:3/7}.lesson-panel>.hand-selector{align-self:start}.lesson-panel>.field-caption{margin-top:0}.lesson-panel>.score-panel{grid-column:1/-1}.lesson-panel>.session-progress,.lesson-panel>.panel-extras{grid-column:1/-1}.lesson-panel>.display-settings{grid-column:1/-1}.score-main{max-width:440px}.roll-area{height:250px}.mode-card strong{font-size:12px}.mode-card small{font-size:10px}.hand-selector button{font-size:11px}.field-caption{font-size:10px}.display-settings{font-size:11px}.library-tabs{gap:16px}}
@media(max-width:700px){main{padding:0 16px}.connection-pill{font-size:10px;padding:8px;min-height:36px}.connection-pill svg{display:none}.topbar-right{gap:5px}.topbar .breadcrumb{font-size:10px}.topbar .breadcrumb>span:first-child{display:none}.topbar .breadcrumb>span:nth-child(2){display:none}.sidebar .nav-item{min-height:42px;min-width:44px}.heading-actions>.button{min-height:40px;font-size:11px;padding:10px}.page-heading h1{font-size:25px;letter-spacing:-.9px}.page-heading .eyebrow{font-size:8px}.page-heading{gap:10px}.player-toolbar{padding:10px;gap:8px;flex-wrap:wrap}.view-switch{height:36px}.view-switch button{font-size:10px;min-height:32px;padding:5px 10px}.focus-button{min-height:34px;font-size:10px}.hands-legend{font-size:9px;gap:10px}.piece-title h2{font-size:21px;margin-bottom:6px}.piece-composer{font-size:8px}.piece-details{font-size:9px;gap:6px}.piece-header{padding:16px 12px;gap:10px}.piece-art{width:36px;height:43px}.piece-title{flex:1}.piece-actions{gap:0;align-self:flex-start}.piece-actions .icon-button{width:28px;min-width:28px}.piece-actions svg{width:16px}.roll-area{height:230px;min-height:230px}.roll-title{font-size:7px}.roll-scale{font-size:8px}.waiting-badge strong{font-size:11px}.keyboard{height:110px}.key .key-label{font-size:9px}.key .key-label small{display:none}.keyboard[data-count="49"] .key-label,.keyboard[data-count="61"] .key-label,.keyboard[data-count="88"] .key-label{display:none}.keyboard[data-count="49"] .octave .key-label,.keyboard[data-count="61"] .octave .key-label,.keyboard[data-count="88"] .octave .key-label{display:block;font-size:6px}.piano-status,.piano-status button{font-size:9px}.piano-status button{min-height:32px}.transport{padding:12px}.transport-row{gap:7px;flex-wrap:wrap}.transport-buttons{gap:0}.transport-buttons .icon-button{min-height:36px;min-width:27px}.transport-buttons .play-button{width:42px;height:42px}.time{font-size:10px;gap:5px;letter-spacing:0}.loop-button{font-size:11px;min-height:36px}.transport-right{gap:8px;margin-left:auto}.transport-right .icon-button{width:26px;min-width:26px;min-height:36px}.transport-right svg{width:15px}.speed-control{font-size:10px}.speed-control>span{display:none}.speed-control select{font-size:10px;min-height:32px;max-width:62px;padding:3px}.timeline-wrap{margin-top:14px}.timeline-input input{min-height:32px}.timeline-labels{font-size:8px}.player-bottom{font-size:9px;padding:10px 12px}.player-bottom kbd{font-size:9px}.bottom-tip{padding:10px 12px;font-size:10px}.phrase-strip{padding:15px 12px;gap:12px}.phrase-strip strong{font-size:12px}.phrase-strip small{font-size:10px}.phrase-number{width:29px;height:32px;font-size:16px}.phrase-buttons{margin-left:0;gap:5px}.phrase-buttons button{min-width:41px;min-height:34px;font-size:11px}.phrase-strip>#all-phrases{min-width:34px;min-height:34px;margin-left:auto}.lesson-panel{padding:18px;display:block}.lesson-panel .panel-title h3{font-size:15px}.lesson-panel .panel-title button{min-height:36px;min-width:36px}.lesson-panel .field-caption{font-size:10px;margin:22px 0 10px}.lesson-panel .field-description{font-size:11px;line-height:1.8}.lesson-panel .mode-card{min-height:64px;padding:12px}.lesson-panel .mode-card strong{font-size:13px}.lesson-panel .mode-card small{font-size:11px}.mode-card>.mode-icon{width:30px;height:30px}.hand-selector button{font-size:12px;min-height:43px}.tempo-labels,.tempo-original{font-size:10px}.tempo-control{height:42px}.tempo-control button{width:42px;min-height:42px}.tempo-slider{min-height:36px}.score-main>div:first-child>span{font-size:12px}.score-main>div:first-child>strong{font-size:32px}.score-details>span{font-size:11px}.streak strong{font-size:13px}.streak small{font-size:11px}.example-tag{font-size:9px}.session-progress{font-size:12px}.toggle-row{font-size:13px;min-height:44px}.switch{width:33px;height:20px}.switch:before{width:14px;height:14px}.toggle-row input:checked+.switch:before{transform:translateX(13px)}.display-settings{font-size:12px;min-height:44px}.score-ring{height:68px;width:68px}.library-heading h1{font-size:32px;line-height:1.4}.library-heading p{font-size:12px;max-width:320px}.library-heading .button{min-height:42px;font-size:12px}.library-featured{min-height:265px}.featured-text{width:74%;padding:26px 20px}.featured-eyebrow{font-size:8px}.featured-text h2{font-size:25px}.featured-text p{font-size:11px}.featured-text .button{font-size:11px;min-height:39px}.featured-meta{font-size:7px;gap:7px}.featured-meta>span{font-size:9px}.featured-art{left:37%;opacity:.6}.featured-art>img{width:160%;left:-28%;object-position:55% center}.library-controls{gap:12px}.library-tabs{gap:16px}.library-tabs button{font-size:12px;min-height:42px}.library-tabs button>span{font-size:9px}.library-search{padding:8px 12px;min-height:42px}.library-search input{font-size:13px;width:100%;min-width:0}.library-selection{font-size:10px;gap:8px;align-items:start}.library-selection label{flex-direction:column;align-items:start;gap:6px}.library-selection select{font-size:12px;min-height:38px;padding:7px}.library-selection>span{padding-top:28px}.cover-art{height:165px}.cover-sheet{width:112px;height:165px}.cover-sheet>div:first-child{font-size:5px}.cover-sheet>strong{font-size:24px}.card-favorite{min-height:36px;min-width:36px;top:8px;right:8px}.card-favorite svg{width:17px}.card-content{padding:16px 12px}.card-composer{font-size:8px;letter-spacing:1px;line-height:1.7;min-height:28px}.card-content h3{font-size:18px;line-height:1.5;margin:5px 0 10px}.card-content p{font-size:11px;line-height:1.8;min-height:0}.card-info{font-size:10px;gap:8px}.difficulty-meter>span{font-size:9px}.difficulty-meter i{height:8px;width:3px}.card-content .card-bottom>span{font-size:9px;line-height:1.6}.card-bottom>button{font-size:11px;min-height:40px}.card-source{font-size:10px;gap:10px;line-height:1.7}.card-credit{font-size:9px}.card-source a{min-height:26px}.library-footer{font-size:11px}.progress-summary>div>span{font-size:10px}.progress-summary>div>strong{font-size:34px}.progress-summary small{font-size:10px;line-height:1.8}.practice-chart{padding:20px}.practice-chart h2{font-size:25px}.practice-chart p{font-size:11px}.week-chart span{font-size:9px}.history-header h2{font-size:18px}.history-header .text-button{font-size:10px}.history-item{gap:10px;flex-wrap:wrap}.history-item strong{font-size:13px}.history-item small{font-size:11px}.history-item .text-button{font-size:11px;min-height:38px}.history-item>span{font-size:22px}.main-footer{gap:16px;padding:24px 0;flex-wrap:wrap}.main-footer>span>span:last-child{font-size:6px;letter-spacing:.7px}.main-footer>a{font-size:10px}.toast{left:50%;bottom:18px;width:calc(100% - 32px);font-size:12px}.settings-grid{gap:18px 12px}.modal-header{padding:18px}.modal-header h2{font-size:18px}.modal-body{padding:20px 18px}.modal-footer{padding:16px 18px}.modal-footer .button{min-height:42px}.phrase-list{grid-template-columns:1fr 1fr}.result-stats>div{padding:12px 8px}.result-stats strong{font-size:23px}.result-stats span{font-size:10px}.focus-mode .roll-area{height:calc(100dvh - 400px);min-height:230px}.studio:fullscreen{padding:10px}.studio:fullscreen .roll-area{min-height:230px}.loop-editor{gap:8px;font-size:11px}.loop-editor .text-button,.loop-editor .button{min-height:38px}}
@media(max-width:360px){main{padding:0 10px}.page-heading h1{font-size:22px}.song-grid{grid-template-columns:1fr}.cover-art{height:200px}.cover-sheet{width:135px;height:190px}.card-content p{font-size:12px}.piece-details{font-size:8px}.piece-title h2{font-size:19px}.transport-right{width:100%;justify-content:flex-end}.transport .time{margin-left:auto}.library-selection{flex-wrap:wrap}.library-selection>span{padding-top:0}}
@media(prefers-reduced-motion:reduce){.session-progress i,.switch,.switch:before,.key{transition:none}dialog[open]{animation:none}}

.key.hint:after,.key.black.hint:after{background:var(--key-color,#c9e7a8)}.key.pressed:after{background:var(--key-color,#d6ecb9)}.speed-control>#speed-label,.speed-control>span:last-child{display:none}.drop-message{display:none}.drag-active .drop-message{position:fixed;inset:16px;z-index:110;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:16px;background:#15261bf5;border:2px dashed #c9e7a8;border-radius:16px;color:#c9e7a8;font:30px Prata,Georgia,serif;pointer-events:none}.drop-message span{font:13px Manrope,sans-serif;color:#a8bd9d}.settings-note{padding:12px;background:#253024;border-radius:6px}.block-label{display:grid;gap:10px;font-size:12px;margin-top:20px}.calibration{padding:16px;border:1px solid #3a4b36;border-radius:8px;margin-top:20px}.calibration strong{font-size:13px}.calibration .button{border:1px solid #53634a;background:#293829}.connect-art{display:grid;place-content:center;padding:8px;color:#c9e7a8}.connect-art svg{height:55px;width:135px}.button.wide{width:100%;background:#c9e7a8;color:#293225;min-height:44px}.help-content>div{display:flex;gap:18px;margin-bottom:22px}.help-content>div>b{font:21px Prata,serif;color:#a8c58e;padding-top:4px}.help-content h3{font-size:15px;font-weight:550;margin:0}.help-content p{margin:8px 0}.result-stats small{font-size:10px;color:#a5b49b}.result-symbol{font-size:40px;color:#c9e7a8;text-align:center;margin-bottom:20px}.modal-body>.settings-note{margin-top:20px}.library-tabs{scroll-margin-top:18px}
@media(max-width:700px){.library-page .library-heading{display:block}.library-page .library-heading h1{max-width:100%}.library-page .library-heading>.button{margin-top:18px}.session-score{margin-top:26px}.lesson-panel .score-details{font-size:12px}.lesson-panel .tempo-block{margin-top:25px}.lesson-panel #tempo-range{min-height:35px}.help-content h3{font-size:14px}.help-content>div{gap:12px}.drag-active .drop-message{font-size:23px;text-align:center;padding:20px}}

@media(max-width:700px){.studio-page .page-heading{margin-bottom:18px;gap:10px}.studio-page .page-heading .eyebrow{display:none}.studio-page .page-heading h1{font-size:24px;white-space:nowrap;margin:0;letter-spacing:-.8px}.studio-page .heading-actions>.button{width:42px;height:42px;min-width:42px;padding:0}.studio-page .choose-text{display:none}.studio-page .heading-actions>.button svg{width:18px;height:18px}.studio-page .roll-area{height:200px;min-height:200px}.piano-status{padding:4px 10px}.key.black .key-label{display:none}.focus-mode .studio-page .roll-area{height:calc(100dvh - 380px);min-height:220px}}
.switch{flex-shrink:0}.switch:after{display:none}.toggle-row small{display:block;font-size:10px;line-height:1.8;color:#8fa486;margin-top:5px}.settings-toggle{align-items:center;gap:20px}.volume-label{display:grid;gap:12px;font-size:12px;color:#b6c8b2;margin-top:22px}.volume-label input{width:100%;accent-color:#c9e7a8;min-height:24px}.settings-note{font-size:12px;line-height:1.8;color:#9aaf92}.settings-note a{color:#c9e7a8}.phrase-buttons button.selected{background:#b8d795;color:#2b3924;border-color:#b8d795}.mode-card{min-width:0}.hand-selector button{min-width:0}.player-toolbar .hands-legend{flex-shrink:0}.timeline-input input{accent-color:#c9e7a8}.tempo-block input{accent-color:#c9e7a8}.offline{color:#b7c9a4}
@media(max-width:700px){.card-source a{min-height:34px;padding:4px 0}.settings-toggle small{font-size:11px}.settings-note{font-size:11px}.settings-toggle{margin-top:24px!important}}
.practice-primary,.practice-secondary{display:contents}#mode-description{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;margin:0}.lesson-panel .mode-card{min-height:52px;padding:10px}.lesson-panel .hand-caption{margin-top:18px}.lesson-panel .hand-selector button{padding:9px 4px}.lesson-panel .tempo-section{margin-top:18px;padding-top:16px}.lesson-panel .session-score{margin-top:18px;padding-top:16px}.lesson-panel .streak{padding:10px;margin-top:12px}.lesson-panel .score-main{margin:8px 0 12px}.lesson-panel .display-settings{margin-top:14px;min-height:30px}.lesson-panel .panel-title{margin-bottom:17px}.history-panel>h2{font-size:21px;font-weight:500}.storage-note{font-size:11px;color:#8fa488;line-height:1.8;margin-top:25px}
@media(min-width:701px) and (max-width:1000px){.lesson-panel{grid-template-columns:1fr 1fr;gap:20px}.lesson-panel>.panel-title{grid-area:1/1/2/3;margin:0}.practice-primary{display:block;grid-area:2/1/3/2}.practice-secondary{display:block;grid-area:2/2/3/3}.lesson-panel .hand-caption{margin-top:0}.lesson-panel .session-score{grid-area:3/1/4/3;margin:0}.lesson-panel .session-progress{grid-area:4/1/5/3;margin:0}.lesson-panel .panel-extras{grid-area:5/1/6/3;margin:0;display:flex;gap:35px}.lesson-panel .display-settings{grid-area:6/1/7/3;margin:0}.lesson-panel .hand-selector{margin-top:10px}.lesson-panel .tempo-section{margin-top:18px;padding-top:16px;border-top:1px solid #34403a}.lesson-panel .score-main{grid-column:1;grid-row:2/4}.lesson-panel .session-score-title{grid-column:1/-1}.lesson-panel .score-details{grid-column:2;grid-row:2}.lesson-panel .streak{grid-column:2;grid-row:3;margin:0}.lesson-panel .mode-card{min-height:64px;padding:12px}.lesson-panel .mode-card strong{font-size:12px}.lesson-panel .mode-card small{font-size:10px}}
@media(min-width:1001px) and (max-height:800px){.lesson-panel{display:flex;flex-direction:column;padding:17px}.lesson-panel>.panel-title{order:0}.lesson-panel>.session-score{order:1;margin:0 0 8px;padding:0;border:0}.lesson-panel>.session-progress{order:2;margin:5px 0 18px}.practice-primary{display:block;order:3}.practice-secondary{display:block;order:4}.lesson-panel>.panel-extras{order:5}.lesson-panel>.display-settings{order:6}.lesson-panel .streak{display:none}.lesson-panel .score-main{margin:8px 0}.lesson-panel .score-ring{width:38px;height:38px}.lesson-panel .mode-card{min-height:48px}.lesson-panel .hand-caption{margin-top:18px}.lesson-panel .tempo-section{margin-top:18px;padding-top:15px}.lesson-panel .hand-selector button{padding:8px}}
@media(max-width:700px){.practice-primary,.practice-secondary{display:block}.lesson-panel .mode-card{min-height:66px;padding:12px}.lesson-panel .hand-caption{margin-top:25px}.lesson-panel .hand-selector button{padding:12px 4px}.lesson-panel .tempo-section{margin-top:26px;padding-top:22px}.lesson-panel .session-score{margin-top:26px;padding-top:22px}.lesson-panel .tempo-value>button{height:42px;width:42px;min-height:42px}.lesson-panel .streak{padding:15px;margin-top:18px}.lesson-panel .panel-title{margin-bottom:24px}.lesson-panel .display-settings{min-height:44px}.transport-top{flex-direction:column;align-items:stretch;gap:12px}.play-controls{width:100%;gap:12px}.play-controls>.time{margin-left:auto;font-size:12px;gap:8px}.play-controls>.icon-button{min-width:35px;min-height:42px}.transport-tools{justify-content:space-between;gap:10px}.transport-icon{min-height:40px;min-width:40px;display:grid;place-items:center}.loop-button{min-height:40px;min-width:56px;font-size:12px}.speed-control select{min-height:38px;font-size:12px;max-width:75px}.transport-divider{display:none}.transport-tools svg{width:17px;height:17px}.timeline-wrap{margin-top:10px}}
@media(max-width:1000px) and (max-height:550px){.focus-mode .piece-header,.focus-mode .piano-status,.focus-mode .timeline-wrap,.focus-mode .timeline-labels,.focus-mode .transport-tools{display:none}.focus-mode .roll-area{height:calc(100dvh - 205px);min-height:100px}.focus-mode .keyboard{height:85px}.focus-mode .player-toolbar{padding:5px 12px}.focus-mode .transport{padding:7px 12px}.focus-mode .play-controls{justify-content:center}.focus-mode .play-controls>.time{margin-left:20px}.focus-mode .player{border-radius:6px}}
