:root,[data-theme=light]{--folio-bg:#f5f1e8;--folio-surface:#fffdf8;--folio-raised:#eee8db;--folio-text:#1c2821;--folio-muted:#4e5d52;--folio-border:#6c796d;--folio-action:#286b4c;--folio-onAction:#fff;--folio-focus:#56447e;--folio-paper:#fffdf8;--folio-ink:#0b100d;--folio-correct:#174f2b;--folio-error:#a83e1f;--folio-cursor:#357db0;--folio-nightPaper:#1c2a23;--folio-nightInk:#f5ebd8;--folio-progress:#286b4c;--folio-successSurface:#d6eddd;--folio-nightError:#c36e48;--folio-success:#18532d;--folio-warning:#785009;--folio-errorText:#9f3c21;--folio-mark:#286b4c;--folio-rewardFill:#e9b949;--folio-onReward:#0b100d;--folio-nightCursor:#65b6e8;--folio-nightCorrect:#9dd5b0}[data-theme=dark]{--folio-bg:#14211a;--folio-surface:#203027;--folio-raised:#304338;--folio-text:#f7f2e8;--folio-muted:#d4decf;--folio-border:#98ab9a;--folio-action:#286b4c;--folio-onAction:#fff;--folio-focus:#d5c7f4;--folio-paper:#e9dfcd;--folio-ink:#0b100d;--folio-correct:#174f2b;--folio-error:#a83e1f;--folio-cursor:#357db0;--folio-nightPaper:#1c2a23;--folio-nightInk:#f5ebd8;--folio-progress:#9dd5b0;--folio-successSurface:#304b39;--folio-nightError:#c36e48;--folio-success:#a8dbb2;--folio-warning:#f2cf8b;--folio-errorText:#ffb9aa;--folio-mark:#9dd5b0;--folio-rewardFill:#efc15d;--folio-onReward:#0b100d;--folio-nightCursor:#65b6e8;--folio-nightCorrect:#9dd5b0}[data-night=true]{--folio-paper:var(--folio-nightPaper);--folio-ink:var(--folio-nightInk);--folio-correct:var(--folio-nightCorrect);--folio-error:var(--folio-nightError);--folio-cursor:var(--folio-nightCursor)}@font-face{font-family:Atkinson;src:url(/assets/atkinson-hyperlegible-next-latin-CSrMQsML.woff2)format("woff2");font-weight:200 900;font-display:swap}@font-face{font-family:Fraunces;src:url(/assets/fraunces-latin-1JXyX4Y3.woff2)format("woff2");font-weight:100 900;font-display:swap}:root{color:var(--folio-text);background:var(--folio-bg);font-synthesis:none;--muted:var(--folio-muted);--line:var(--folio-border);--peach:var(--folio-action);--blue:var(--folio-cursor);--green:var(--folio-progress);font-family:Atkinson,sans-serif}*{box-sizing:border-box}body{margin:0}button,select,input{font:inherit}a{color:inherit;text-decoration:none}button,a,summary,select,input{-webkit-tap-highlight-color:transparent}:focus-visible{outline:2px solid var(--folio-focus);outline-offset:4px}button{cursor:pointer;white-space:nowrap;border:1px solid #0000;border-radius:8px;min-width:44px;min-height:44px;padding:11px 16px;font-size:13px;font-weight:550;transition:background .15s}button:disabled{cursor:default;opacity:.4}.primary{background:var(--folio-action);color:var(--folio-onAction)}.secondary,.stop{color:var(--text);background:var(--panel-2);border-color:var(--line)}.secondary:hover:not(:disabled),.stop:hover:not(:disabled){background:var(--panel)}.quiet-button,.text-button{color:var(--text);background:0 0}.quiet-button:hover:not(:disabled),.text-button:hover:not(:disabled){color:var(--text);background:var(--panel-2)}.text-button{padding:8px 10px;font-size:12px}kbd{opacity:.7;border:1px solid;border-radius:3px;margin-left:9px;padding:1px 4px;font:12px inherit}.shell{max-width:1180px;margin:auto;padding:0 36px}.local{color:var(--muted);align-items:center;gap:8px;margin-right:12px;font-size:12px;display:flex}.dot{background:var(--green);border-radius:50%;flex-shrink:0;width:7px;height:7px;display:inline-block}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.credits{max-width:80ch;padding:28px 0;line-height:1.8}.credits h1{font:36px Fraunces,serif}.credits p a{text-underline-offset:3px;text-decoration:underline}.piano-app{overscroll-behavior:none;height:100dvh;overflow:hidden}.piano-app .shell{max-width:1600px;height:100%;padding:0 max(24px,env(safe-area-inset-right)) 0 max(24px,env(safe-area-inset-left));flex-direction:column;display:flex}.piano-app main{flex-direction:column;flex:1;min-height:0;display:flex;position:relative}.session-setup{flex-shrink:0;justify-content:center;padding:0 0 14px;display:flex}.mode-description{color:var(--muted);margin:0;padding:14px 20px;font-size:13px}.practice-focus{flex-direction:column;gap:8px;display:flex}.practice-focus select{margin:0}#pieceChoice{margin-top:8px}.performance{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.eyebrow{font-size:12px}.score-toolbar{border-top:1px solid var(--line);flex-shrink:0;justify-content:space-between;align-items:center;gap:8px;padding:6px 16px;display:flex}#pageLabel{color:var(--muted);text-align:center;font-variant-numeric:tabular-nums;min-width:40px;font-size:12px}#sheetPanel{flex:1;min-height:0;display:flex;position:relative}.roll-wrap{border-block:1px solid var(--line);background:var(--panel);flex:1;min-height:0;position:relative}canvas{width:100%;height:100%;display:block}#emptyRoll{pointer-events:none;text-align:center;flex-direction:column;justify-content:center;align-items:center;padding:20px;display:flex;position:absolute;inset:0}.empty-symbol{color:var(--muted);margin-bottom:15px;font:45px Atkinson,sans-serif}#emptyRoll p{color:var(--text);margin:0 0 13px;font:22px Atkinson,sans-serif}#emptyRoll>span:last-child{color:var(--muted);font-size:12px}.roll-footer{flex-shrink:0;align-items:center;gap:15px;min-height:30px;padding:7px 18px;display:flex}.legend{color:var(--muted);gap:18px;font-size:12px;display:flex}.legend>span{align-items:center;gap:7px;display:flex}.swatch{border-radius:2px;width:6px;height:6px;display:inline-block}.you{background:var(--peach)}.partner{background:var(--blue)}#timing{color:var(--muted);text-align:right;white-space:nowrap;text-overflow:ellipsis;margin-left:auto;font-size:12px;overflow:hidden}#demo{margin-left:auto;padding:3px 8px}.microphone-button{justify-content:center;align-items:center;gap:9px;display:inline-flex}.microphone-button svg{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;width:18px;height:22px}.microphone-button[aria-pressed=true]{color:var(--text);border-color:var(--line);background:0 0}.microphone-button[aria-pressed=true]:hover{background:var(--panel-2)}.status-label{align-items:center;gap:9px;font-size:12px;line-height:1.5;display:flex}.input-meter{align-items:center;gap:9px;display:flex}.error{color:var(--folio-errorText);background:var(--panel);border:1px solid var(--folio-errorText);border-radius:4px;padding:14px 18px;font-size:13px;line-height:1.6}#error{z-index:6;margin:0;position:absolute;bottom:90px;left:12px;right:12px}#scoreError{z-index:2;margin:0;position:absolute;inset:12px 12px auto}.session-info{color:var(--muted);margin-bottom:20px;font-size:12px}.session-actions{flex-wrap:wrap;gap:8px;margin-bottom:20px;display:flex}label{color:var(--text);font-size:15px}select{border:1px solid var(--line);background:var(--panel);width:100%;min-width:44px;min-height:44px;color:var(--text);border-radius:4px;margin-top:9px;padding:11px;font-size:15px}.setting-help{color:var(--muted);margin:10px 0 22px;font-size:14px;line-height:1.7}.slider-label{justify-content:space-between;align-items:center;gap:10px;display:flex}.slider-label output{color:var(--muted);font-size:12px}input[type=range]{width:100%;accent-color:var(--folio-action);cursor:pointer;height:44px;margin:0}input[type=range]:disabled{opacity:.4;cursor:default}.range-ends{color:var(--muted);justify-content:space-between;margin:5px 0 0;font-size:12px;display:flex}.spaced{margin-top:24px}.check-setting{cursor:pointer;align-items:center;gap:10px;display:flex}.check-setting input{accent-color:var(--folio-action);width:17px;height:17px;margin:0}details{border-top:1px solid var(--line);margin-top:22px;padding-top:16px}summary{min-height:44px;color:var(--text);cursor:pointer;font-size:12px;line-height:1.6}details[open]>summary{margin-bottom:12px}dialog{color:var(--text);background:var(--panel);border:1px solid var(--line);overscroll-behavior:contain;border-radius:4px;max-height:calc(100dvh - 48px);padding:0;overflow-y:auto;box-shadow:0 25px 100px #0008}.settings-dialog{width:440px;max-width:calc(100vw - 32px)}.profile-dialog{width:1060px;max-width:calc(100vw - 32px)}.dialog-heading{border-bottom:1px solid var(--line);background:var(--panel);justify-content:space-between;align-items:center;gap:20px;padding:18px 24px;display:flex}.dialog-heading h2{margin:0;font:26px Fraunces,serif}.controls{padding:24px}.controls h3{margin:0 0 20px;font-size:15px;font-weight:600}.panel-heading.second{border-top:1px solid var(--line);margin-top:26px;padding-top:24px}.controls .notation-controls{border:0;flex-direction:column;align-items:start;padding:0}.controls .notation-help{padding:0;font-size:12px}.controls .key-follow{margin:0}@media (width<=600px){.piano-app .shell{padding-inline:max(12px,env(safe-area-inset-left))}.session-setup{padding-bottom:10px}.mode-description{padding:10px 14px;font-size:12px}.status-label{font-size:12px}.input-meter{gap:5px}kbd{display:none}.score-toolbar{padding:3px 8px}.roll-footer{min-height:26px;padding:5px 12px}#timing{font-size:12px}.dialog-heading{padding:16px 18px}.controls{padding:20px}dialog{max-height:calc(100dvh - 24px)}.settings-dialog,.profile-dialog{max-width:calc(100vw - 16px)}}@media (height<=500px) and (width>=601px){.piano-app .shell{padding-inline:16px}.session-setup{padding:0;position:absolute;top:-44px;left:120px;right:180px}.roll-footer{display:none}.score-toolbar{padding-block:2px}}@media (prefers-reduced-motion:reduce){*{transition:none!important}}.appearance-settings{margin-bottom:24px}.appearance-settings .check-setting{min-height:44px;margin-top:16px}.dialog-heading button{border:1px solid var(--line);border-radius:4px;min-height:44px}.controls a.text-button{align-items:center;min-height:44px;display:inline-flex}#settingsDialog[open]{flex-direction:column;display:flex;overflow:hidden}#settingsDialog>.dialog-heading{flex:none}#settingsDialog>.controls{overscroll-behavior:contain;min-height:0;overflow-y:auto}.view-switch{gap:4px;padding:0;display:flex}.view-switch button{color:var(--muted);background:0 0;padding:8px 12px}.view-switch button[aria-pressed=true]{background:var(--panel);color:var(--text)}.notation-controls{border-top:1px solid var(--line);flex-wrap:wrap;align-items:end;gap:16px;padding:12px 26px 0;display:flex}.notation-controls label{align-items:center;gap:7px;font-size:12px;display:flex}.notation-controls select,.notation-controls input{width:auto;margin:0;padding:6px 8px;font-size:12px}.notation-controls input{width:65px;color:var(--text);background:var(--panel);border:1px solid var(--line);border-radius:5px}.notation-help{color:var(--muted);margin:10px 0 14px;padding:0 26px;font-size:12px;line-height:1.6}#sheetMusic{background:var(--folio-paper,#fffdf8);min-width:0;min-height:0;color:var(--folio-ink,#0b100d);flex:1;position:relative;overflow:hidden}.score-scroller{overscroll-behavior:contain;scrollbar-width:thin;position:absolute;inset:0;overflow:auto}.score-scroller:focus-visible{outline:2px solid var(--folio-focus);outline-offset:-3px}.score-flow{box-sizing:border-box;min-height:100%;padding:8px 12px 18px}.score-flow-wrap{flex-direction:column;gap:6px;display:flex}.score-flow-line{align-items:center;gap:36px;width:max-content;min-width:100%;padding-right:40vw;display:flex}.sheet-empty{text-align:center;box-sizing:border-box;flex-direction:column;flex:1;justify-content:center;align-items:center;padding:40px 26px;display:flex}.sheet-empty>span{color:color-mix(in srgb, var(--folio-ink) 72%, var(--folio-paper));font:75px/1 Bravura,Atkinson,sans-serif}.sheet-empty p{margin:15px 0 12px;font:22px Atkinson,sans-serif}.sheet-empty small{color:color-mix(in srgb, var(--folio-ink) 72%, var(--folio-paper));font-size:12px;line-height:1.7}.score-message{text-align:center;color:color-mix(in srgb, var(--folio-ink) 72%, var(--folio-paper));flex:1;place-items:center;margin:0;padding:40px 26px;font:18px Atkinson,sans-serif;display:grid}.score-phrase{flex-direction:column;flex:none;display:flex}.piano-app[data-mode=reading] .score-phrase:before{content:"Current score";margin:2px 0 4px;font:600 13px Atkinson,sans-serif}.score-heading{justify-content:space-between;align-items:center;gap:12px;min-height:28px;padding:4px 4px 2px;display:flex}.score-heading h2{color:#654326;background:#ead2b8;border-radius:4px;margin:0;padding:5px 9px;font-size:12px;font-weight:650}.score-phrase.duet h2{color:#315b61;background:#d2e5e6}.score-heading>span{color:color-mix(in srgb, var(--folio-ink) 72%, var(--folio-paper));text-align:right;font-size:12px;line-height:1.7}.score-systems{flex-direction:column;align-items:center;display:flex}.score-flow-line .score-systems{flex-direction:row;align-items:flex-start}.score-system svg,.score-header svg{display:block;overflow:visible}.score-system{transition:opacity .25s}.score-system-past,.score-system-ahead{opacity:1}.score-header{z-index:1;background:var(--folio-paper,#fffdf8);visibility:hidden;position:sticky;left:0}.score-header-pinned{visibility:visible}.score-pending{color:var(--folio-ink,#0b100d);margin:0;padding:2px 0;font-size:13px;font-weight:600}.score-flow-line .score-pending{border:0;align-self:center}.score-pulse{z-index:2;background:var(--folio-surface);color:var(--folio-muted);font:12px var(--display,sans-serif);pointer-events:none;border-radius:6px;align-items:center;gap:10px;padding:3px 8px;display:flex;position:absolute;top:8px;right:14px}.reading-count{font-variant-numeric:tabular-nums;white-space:nowrap}.reading-beat-track{background:#d9dfd5;width:48px;height:3px;overflow:hidden}.reading-beat-track>span{transform-origin:0;background:#168696;height:100%;display:block}.score-controls{z-index:3;background:var(--folio-surface);color:var(--folio-text);opacity:1;border-radius:4px;align-items:center;gap:2px;padding:3px;font-size:12px;transition:opacity .2s;display:flex;position:absolute;bottom:10px;right:12px}:is(.score-controls:hover,.score-controls:focus-within,.score-view:has(.score-menu:not([hidden])) .score-controls){opacity:1}.score-controls button{width:44px;height:44px;color:inherit;background:0 0;border-radius:4px;padding:0;font-size:16px;line-height:1}.score-controls button:hover:not(:disabled){background:var(--folio-raised)}.score-controls button:disabled{opacity:.35}.score-menu-button svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;vertical-align:middle;width:16px;height:16px}.score-zoom{text-align:center;font-variant-numeric:tabular-nums;min-width:42px}.score-menu{z-index:4;background:var(--folio-surface);color:var(--folio-text);border-radius:4px;gap:10px;min-width:250px;padding:12px;display:grid;position:absolute;bottom:50px;right:12px;box-shadow:0 8px 28px #0006}.score-menu-row{gap:5px;display:grid}.score-menu-muted{opacity:.45}.score-menu-title{color:var(--folio-text);font-size:14px}.score-menu-choices{background:var(--folio-raised);border-radius:4px;gap:2px;padding:2px;display:flex}.score-menu-choices button{color:var(--folio-text);background:0 0;border-radius:4px;flex:1;padding:6px 8px;font-size:12px}.score-menu-choices button[aria-checked=true]{background:var(--folio-action);color:var(--folio-onAction)}.score-resume{z-index:3;background:var(--folio-action);color:var(--folio-onAction);border-radius:4px;padding:7px 14px;font-size:12px;position:absolute;bottom:12px;left:50%;transform:translate(-50%);box-shadow:0 4px 14px #0004}.piano-app[data-mode=reading] .roll-footer{display:none}.piano-app[data-mode=reading] .score-toolbar{border-top:0;padding-block:0}.piano-app[data-mode=reading] #fingerHelp{min-height:30px;padding-block:6px}.score-system svg g[fill=\#25312d]{fill:var(--folio-ink,#0b100d);stroke:var(--folio-ink,#0b100d)}.score-sounding path,.score-sounding text{fill:var(--folio-cursor);stroke:#168696}.score-read-done text{fill:var(--folio-correct,#174f2b);stroke:var(--folio-correct,#174f2b)}.score-read-missed text{fill:var(--folio-error,#a83e1f);stroke:var(--folio-ink,#0b100d)}.score-system .score-finger{fill:var(--folio-ink,#0b100d);stroke:none;font:700 var(--score-finger-size,13px) Atkinson, sans-serif;text-anchor:middle;pointer-events:none}.score-heard{fill:var(--folio-error,#a83e1f);stroke:var(--folio-error,#a83e1f)}line.score-heard{fill:none}.reading-overlay{pointer-events:none}.reading-pace-band{fill:var(--folio-error);opacity:.13}.reading-pace-line{fill:var(--folio-error);opacity:.85}.reading-cursor rect{fill:var(--folio-cursor,#357db0);fill-opacity:.13;stroke:var(--folio-cursor,#357db0);stroke-width:2px;vector-effect:non-scaling-stroke}.reading-feedback{pointer-events:none}.score-system .score-mark-check,.score-system .score-mark-cross{fill:var(--folio-ink,#0b100d);stroke:var(--folio-paper,#fffdf8);stroke-width:1px;paint-order:stroke;font:900 var(--score-mark-size,14px) Atkinson, sans-serif}.score-mark-ring{fill:none;stroke:var(--folio-ink,#0b100d);stroke-width:2px}[data-night=true] #sheetMusic{background:var(--folio-nightPaper,#1c2a23);color:var(--folio-nightInk,#f5ebd8)}[data-night=true] .score-system svg g[fill=\#25312d]{fill:var(--folio-nightInk,#f5ebd8);stroke:var(--folio-nightInk,#f5ebd8)}[data-night=true] .score-system svg text{fill:var(--folio-nightInk,#f5ebd8)}[data-night=true] .score-system svg .vf-stave path,[data-night=true] .score-system svg .vf-stem path,[data-night=true] .score-system svg .vf-stavenote>path{stroke:var(--folio-nightInk,#f5ebd8)}[data-night=true] .score-system svg .vf-stavebarline rect{fill:var(--folio-nightInk,#f5ebd8)}[data-night=true] .score-system svg .score-read-done text{fill:var(--folio-nightCorrect,#9dd5b0);stroke:var(--folio-nightCorrect,#9dd5b0)}[data-night=true] .score-system svg .score-read-missed text{fill:var(--folio-nightError,#c36e48);stroke:var(--folio-nightInk,#f5ebd8)}[data-night=true] .score-system svg .reading-cursor rect{fill:var(--folio-nightCursor,#65b6e8);stroke:var(--folio-nightCursor,#65b6e8)}[data-night=true] .score-system svg .score-mark-check,[data-night=true] .score-system svg .score-mark-cross{fill:var(--folio-nightInk,#f5ebd8);stroke:var(--folio-nightPaper,#1c2a23)}[data-night=true] .score-mark-ring{stroke:var(--folio-nightInk,#f5ebd8)}[data-night=true] .score-heard{fill:var(--folio-nightError,#c36e48);stroke:var(--folio-nightError,#c36e48)}[data-night=true] .score-pending{color:var(--folio-nightInk,#f5ebd8)}@media (prefers-reduced-motion:reduce){.score-system{transition:none}}@media (width<=760px){.notation-controls{gap:10px;padding-inline:18px}.notation-help{padding-inline:18px}.score-heading>span{font-size:12px}.score-flow{padding-inline:6px}}.key-follow{border:1px solid var(--line);background:var(--panel);border-radius:6px;margin-bottom:20px;padding:13px}.key-caption{color:var(--muted);font-size:12px;display:block}.key-follow strong{color:var(--text);margin-top:8px;font:18px Atkinson,sans-serif;display:block}.key-follow p{color:var(--muted);margin:8px 0 0;font-size:12px;line-height:1.7}.learning-panel{background:var(--bg);color:var(--text);flex-shrink:0;padding:14px 22px;position:relative}.learning-steps{color:var(--muted);flex-wrap:wrap;gap:8px 20px;margin:0;padding:0;font-size:12px;list-style:none;display:flex}.learning-steps li[aria-current=step]{color:var(--text);font-weight:700}#learningInstruction{margin:8px 0;font-size:12px;line-height:1.6}.learning-actions{flex-wrap:wrap;align-items:center;gap:18px;display:flex}.learning-result{align-items:center;gap:14px;margin-top:8px;display:flex}.learning-result strong{color:var(--text);font:26px Fraunces,serif}.learning-result p{margin:0;font-size:12px;line-height:1.6}.learning-result small,.analysis-help{color:var(--muted);font-size:12px;line-height:1.6}.analysis-scroll{max-height:290px;overflow:auto}.analysis-scroll table{border-collapse:collapse;text-align:left;width:100%;font-size:12px}.analysis-scroll th,.analysis-scroll td{border-bottom:1px solid var(--line);white-space:nowrap;padding:9px 8px}.analysis-scroll th{color:var(--text)}.changed-note{color:var(--folio-warning)}.score-phrase.corrected h2{color:#315b61;background:#d2e5e6}.score-phrase.attempt h2{color:#435c2b;background:#dce5c8}@media (width<=600px){.learning-panel{padding:10px 14px}.learning-steps{gap:8px;font-size:12px}#learningInstruction{font-size:12px}.learning-actions button{padding:6px 8px;font-size:12px}}#surpriseDetails{border:0;margin:0;padding:0}@media (height<=500px) and (width>=601px){.learning-panel{padding:6px 16px}#learningInstruction{margin:4px 0}.learning-actions{position:absolute;top:0;right:12px}.learning-steps{padding-right:320px}}.practice-panel{background:var(--bg);color:var(--text);flex-shrink:0;padding:16px 22px 12px}.task-heading{justify-content:space-between;align-items:center;gap:14px;display:flex}.task-heading>div{min-width:0}.task-caption{color:var(--muted);font-size:12px}.practice-panel h2{color:var(--text);text-overflow:ellipsis;white-space:nowrap;margin:4px 0 0;font:27px/1.2 Fraunces,serif;overflow:hidden}.task-summary{color:var(--muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:8px 0 0;font-size:12px;line-height:1.6;display:-webkit-box;overflow:hidden}.practice-actions{align-items:center;gap:8px;margin-top:10px;display:flex}.practice-actions button{padding:7px 12px;font-size:12px}.practice-reason,.practice-help p,#practiceInstruction{color:var(--muted);font-size:13px;line-height:1.8}.practice-cue{color:var(--folio-warning);font-size:12px;line-height:1.8}.practice-help[inert]{opacity:.5}.practice-result{align-items:center;gap:16px;margin-top:10px;display:flex}.practice-result>strong{color:var(--text);white-space:nowrap;font:28px Fraunces,serif}.practice-result p{-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:12px;line-height:1.6;display:-webkit-box;overflow:hidden}.practice-result button{margin-left:auto}.practice-panel.completed .task-summary{display:none}#practiceEvidence{color:var(--muted);font-size:12px;line-height:1.8}#practiceFeedbackDetail{font-size:14px;line-height:1.8}#excludePractice{white-space:normal;text-align:left;margin-top:16px;padding-left:0}.score-phrase.target h2{color:#315b61;background:#d2e5e6}.practice-hidden{text-align:center;color:#2f3b4c;place-content:center;height:100%;margin:0;padding:24px;font:22px/1.6 Atkinson,sans-serif;display:grid}.profile-panel{padding:24px}.profile-heading{justify-content:space-between;align-items:center;gap:18px;display:flex}.profile-heading p,.profile-explanation{color:var(--muted);font-size:12px;line-height:1.8}.profile-heading a{white-space:nowrap;border:1px solid var(--line);color:var(--text);border-radius:6px;padding:11px 15px;font-size:12px;text-decoration:none}.profile-explanation{max-width:95ch}.skill-cards{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:25px 0;display:grid}.skill-card{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:20px}.skill-card h3{color:var(--text);margin:0 0 18px;font:23px Fraunces,serif}.skill-card p{color:var(--muted);font-size:12px;line-height:1.8}.skill-card>strong{color:var(--text);font-size:14px}.skill-detail{border-top:1px solid var(--line);margin:0;padding:10px 0}.skill-detail>summary{cursor:pointer;justify-content:space-between;align-items:baseline;gap:12px;font-size:12px;display:flex}.skill-detail>summary>strong{color:var(--muted);white-space:nowrap;font-size:12px;font-weight:500}.skill-detail>summary>span:before{content:"＋ ";color:var(--muted)}.skill-detail[open]>summary>span:before{content:"− "}.skill-conditions{color:var(--muted);max-height:210px;padding-left:14px;font-size:12px;line-height:2;overflow:auto}.profile-method,#attemptHistory{border-top:1px solid var(--line);margin-top:20px;padding-top:18px;font-size:12px;line-height:1.8}.profile-method p{color:var(--muted);max-width:100ch}#attemptList{margin-top:16px}.history-attempt{border-bottom:1px solid var(--line);text-align:left;width:100%;color:var(--text);background:0 0;border-radius:0;grid-template-columns:minmax(120px,1fr) minmax(130px,1fr) 55px;align-items:center;gap:12px;padding:15px 4px;font-size:12px;display:grid}.history-attempt:hover{background:var(--panel-2)}.history-attempt small{color:var(--muted);font-size:12px}.history-attempt strong{text-align:right;font-weight:500}.attempt-detail{background:var(--panel);border:1px solid var(--line);border-radius:8px;margin-top:22px;padding:22px}.attempt-detail h3{margin-top:0;font:24px Fraunces,serif}.attempt-detail p{font-size:12px;line-height:1.8}.attempt-context{color:var(--muted)}.attempt-observations{max-height:250px;margin:18px 0;overflow:auto}.attempt-observations table{border-collapse:collapse;text-align:left;width:100%;font-size:12px}.attempt-observations td,.attempt-observations th{border-bottom:1px solid var(--line);padding:9px}.attempt-detail>button{margin-top:20px}.save-piece{border-top:1px solid var(--line);margin-top:25px;padding-top:20px}.save-piece>div{gap:10px;margin-top:10px;display:flex}.save-piece input{min-width:0;color:var(--text);background:var(--panel);border:1px solid var(--line);border-radius:6px;flex:1;padding:12px}.save-piece input::placeholder{color:var(--muted)}.save-piece>p{color:var(--muted);font-size:12px}[hidden]{display:none!important}@media (width<=1000px){.skill-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=650px){.skill-cards{grid-template-columns:1fr}.profile-panel{padding:20px}.practice-panel{padding:10px 14px}.practice-panel h2{font-size:22px}.task-caption{display:none}.task-summary{font-size:12px;line-height:1.5}.practice-actions{gap:2px;margin-top:8px}.practice-actions button{padding:7px 9px}.practice-result{gap:8px}.practice-result>strong{font-size:23px}.practice-result p{font-size:12px}.profile-heading{flex-direction:column;align-items:start}.history-attempt{grid-template-columns:1fr 55px}.history-attempt small{grid-row:2}.history-attempt strong{grid-area:1/2}.practice-heading{align-items:start}}.attempt-detail{scroll-margin-top:90px}.fluency-hands{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;display:grid}.fluency-hand{border:1px solid var(--line);border-radius:10px;padding:14px}.fluency-hand h4{color:var(--muted);margin:0 0 12px;font-size:12px}.fluency-hand strong{color:var(--folio-success);font:24px Fraunces,serif}.fluency-hand span,.fluency-hand p{color:var(--muted);font-size:12px;line-height:1.6}.fluency-hand small{color:var(--muted);font-size:12px}.landing-map{margin:16px 0 20px}.landing-map figcaption{color:var(--text);margin-bottom:8px;font-size:12px}.landing-staff{background:#f6f3e9;border-radius:10px;overflow:hidden}.landing-staff svg{width:100%;height:auto;max-height:190px;display:block}.landing-note{cursor:pointer;outline:none}.landing-hit{fill:#0000;stroke:#0000;stroke-width:1.5px}.landing-note:focus-visible .landing-hit,.landing-note[aria-pressed=true] .landing-hit{fill:#337d8210;stroke:#387f81}.landing-label,.landing-value{text-anchor:middle;fill:#33463b;stroke:none;font:12px Atkinson,sans-serif}.landing-value{fill:#55645a}.landing-detail{min-height:36px;color:var(--muted);margin:8px 0 0;font-size:12px;line-height:1.6}.landing-legend{color:var(--muted);align-items:center;gap:10px;font-size:12px;display:flex}.landing-gradient{background:linear-gradient(90deg,#388482,#d3a84e,#b85641);border-radius:4px;flex:1;height:7px}.landing-key{margin:8px 0 18px}#fingerHelp{font-size:12px}#fingerHelp>span{margin-right:4px}.finger-hands{grid-template-columns:1fr 1fr;gap:10px;margin:18px 0;display:grid}.finger-hands figure{text-align:center;margin:0;font-size:13px}.finger-hands svg{width:100%;max-height:230px}.finger-hands path{fill:var(--muted);stroke:#a7adb7;stroke-width:2px;stroke-linejoin:round}.finger-hands text{fill:var(--text);text-anchor:middle;font:700 18px Atkinson,sans-serif}.finger-intro{color:var(--text);font-size:13px;line-height:1.8}.task-caption.reading-caption{display:block}@media (width<=600px) and (height<=700px){.piano-app[data-mode=reading] .practice-panel:not(.introduction) .task-summary{display:none}}@media (height<=500px) and (width>=601px){.practice-panel{padding:6px 16px;position:relative}.practice-panel h2{font-size:20px}.task-caption,.task-summary{display:none}.task-heading{padding-right:280px}.practice-actions{margin:0;position:absolute;top:3px;right:16px}.practice-result{margin-top:4px}}.drill-panel{border-bottom:1px solid var(--line);flex-shrink:0}.drill-bar{align-items:center;gap:6px;padding:6px 10px 7px;display:flex;position:relative}.drill-title{background:var(--panel);border:1px solid var(--line);text-align:left;min-width:0;min-height:44px;color:var(--text);border-radius:4px;flex:1;align-items:center;gap:4px;padding:5px 8px;display:flex}.drill-title:hover{background:var(--panel-2)}.drill-title strong{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;font:700 14px/1.2 Atkinson,sans-serif;overflow:hidden}.drill-title small{display:none}.drill-title svg{fill:none;stroke:currentColor;stroke-width:2px;flex:none;width:16px;height:16px;transition:transform .2s}.drill-title[aria-expanded=true] svg{transform:rotate(180deg)}.drill-bar .hud-tempo b{font-size:16px}.drill-bar .hud-tempo button{width:24px;height:24px}.drill-bar .hud-tempo>span small:last-child{font-family:inherit;font-size:12px}.drill-ladder-track{border-radius:0;height:2px;position:absolute;bottom:0;left:0;right:0}.drill-options{padding:2px 16px 10px}.drill-picker{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.drill-picker label{display:flex}.drill-picker label>span{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.drill-picker select{width:auto;max-width:180px;margin:0;padding:5px 8px;font-size:12px}.drill-picker button{padding:6px 9px;font-size:12px}.drill-milestone,.drill-summary{color:var(--muted);margin:6px 0 0;font-size:12px;line-height:1.5}.drill-metrics{color:var(--text);font-size:12px;display:block}.drill-log{gap:2px;display:grid}.drill-log-row{text-align:left;border-bottom:1px solid var(--line);width:100%;color:var(--text);background:0 0;border-radius:0;grid-template-columns:minmax(0,1fr) auto;gap:4px 12px;padding:12px 4px;font-size:12px;display:grid}.drill-log-row:hover{background:var(--panel-2)}.drill-log-row small{color:var(--muted);grid-column:1/-1;font-size:12px}.drill-log-row strong{white-space:nowrap;font-weight:500}.piano-app[data-mode=drills] #practicePanel{display:none}.drill-last{white-space:nowrap;padding:5px 9px;font-size:12px}.drill-results{border-bottom:1px solid var(--line);background:var(--bg);max-height:40dvh;color:var(--text);flex-shrink:0;padding:8px 0;overflow-y:auto}.piano-app:not([data-mode=drills]) .drill-results{display:none}.drill-results-head{flex-wrap:wrap;align-items:center;gap:4px 12px;min-width:0;display:flex}.drill-results-head>strong{color:var(--text);white-space:nowrap;font:18px Fraunces,serif}.drill-results-head>span{min-width:0;color:var(--muted);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:12px;overflow:hidden}.drill-results-head button{padding:4px 8px;font-size:13px}.drill-results-head>em{color:var(--text);white-space:nowrap;font-size:12px;font-style:normal;font-weight:500}.drill-results-body{flex-wrap:wrap;gap:10px 22px;margin-top:8px;display:flex}.drill-meters{flex:0 300px;align-content:start;gap:5px;min-width:240px;display:grid}.drill-meter{color:var(--text);grid-template-columns:64px 1fr 44px;align-items:center;gap:8px;font-size:12px;display:grid}.drill-meter-label{color:var(--muted)}.drill-meter-value{font-variant-numeric:tabular-nums;text-align:right;color:var(--text);font-weight:600}.drill-meter-track{background:var(--panel-2);border-radius:4px;height:8px;position:relative;overflow:hidden}.drill-meter-track>i{background:var(--meter);border-radius:4px;position:absolute;inset:0 auto 0 0}.drill-meter-track>u{background:var(--text);width:2px;margin-left:-1px;position:absolute;top:-1px;bottom:-1px}.drill-meter-signed>s{background:var(--folio-successSurface);position:absolute;inset:0 auto}.drill-meter-signed>i{border-radius:2px}.drill-meter-signed:after{content:"";background:var(--text);width:1px;position:absolute;top:0;bottom:0;left:50%}.drill-meter.good{--meter:var(--folio-progress)}.drill-meter.short{--meter:var(--folio-errorText)}.drill-meter.short .drill-meter-value{color:var(--folio-errorText)}.drill-lanes{min-width:0;color:var(--muted);flex:360px;grid-template-columns:54px 1fr auto;margin:0;font-size:12px;display:grid}.drill-lane-labels,.drill-lane-ends{grid-template-rows:repeat(3,28px) 12px;align-items:center;display:grid}.drill-lane-ends{color:var(--text);font-variant-numeric:tabular-nums;white-space:nowrap;padding-left:8px}.drill-lane-chart{grid-template-rows:84px 12px;min-width:0;display:grid;position:relative}.drill-lane-chart svg{width:100%;height:84px;display:block;overflow:visible}.drill-lane-axis{position:relative}.drill-lane-axis>span{color:var(--muted);font-size:12px;position:absolute;top:1px;transform:translate(2px)}.drill-lanes :is(line,path){vector-effect:non-scaling-stroke}.drill-lanes .lane-bar{stroke:var(--line);stroke-width:1px}.drill-lanes .lane-band{fill:var(--folio-successSurface)}.drill-lanes .lane-tempo{fill:none;stroke:var(--text);stroke-width:1.5px;stroke-linejoin:round}.drill-lanes .lane-off{stroke:var(--folio-errorText);stroke-width:2px}.drill-lane-ends>.good{color:var(--text)}.drill-lane-ends>.short{color:var(--folio-errorText)}.drill-lane-missed{color:var(--folio-errorText);pointer-events:none;font-size:13px;font-weight:700;line-height:1;position:absolute;top:42px;transform:translate(-50%,-50%)}.drill-lanes .lane-zero,.drill-lanes .lane-typical{stroke:var(--line);stroke-width:1px}.drill-lanes .lane-typical{stroke:var(--muted);stroke-dasharray:3 3}.drill-lanes .lane-steady,.drill-lanes .lane-even{fill:var(--muted)}.drill-lanes .lane-late{fill:var(--folio-errorText)}.drill-lanes .lane-early{fill:var(--folio-focus)}.drill-lanes .lane-loud{fill:var(--folio-cursor)}.drill-lanes .lane-hit{fill:#0000}.drill-lanes .lane-hit:hover{fill:var(--folio-progress);fill-opacity:.12}@media (width<=700px){.drill-meters{flex-basis:100%}}.drill-issues{color:var(--text);columns:2 260px;margin:8px 0 0;padding-left:16px;font-size:12px;line-height:1.6}.piano-app[data-mode=practice] .practice-panel{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:2px 14px;padding:8px 16px;display:grid}.piano-app[data-mode=practice] .task-heading{grid-area:1/1;justify-content:flex-start}.piano-app[data-mode=practice] .task-caption{display:none}.piano-app[data-mode=practice] .practice-panel h2{margin:0;font-size:20px}.piano-app[data-mode=practice] .practice-actions{grid-area:1/2;margin:0}.piano-app[data-mode=practice] .task-summary{-webkit-line-clamp:1;grid-area:2/1/auto/-1;margin:0}.piano-app[data-mode=practice] .practice-result{grid-area:2/1/auto/-1;gap:12px;margin:0}.piano-app[data-mode=practice] .practice-result>strong{font-size:20px}:is(.piano-app[data-mode=drills],.piano-app[data-mode=practice]) .score-toolbar,.piano-app[data-mode=drills] .roll-footer,.piano-app[data-mode=practice] .roll-footer,.piano-app[data-mode=drills] .score-phrase.target .score-heading,.piano-app[data-mode=practice] .score-phrase.target .score-heading{display:none}@media (width<=650px){.drill-title small{display:none}.drill-picker select{max-width:130px}}.drill-picker label.always{display:flex}.drill-level{border:1px solid var(--line-strong);width:38px;color:var(--gold,#e3b35b);background:0 0;border-radius:6px;flex-direction:column;align-items:center;gap:3px;padding:4px 0;display:flex}.drill-level b{font:15px/1 var(--display)}.drill-level .xp-track{width:24px;height:3px}.drill-session{white-space:nowrap;font-variant-numeric:tabular-nums;padding:5px 9px;font-size:12px}.drill-session.active{color:var(--folio-onReward);background:var(--folio-successSurface)}.drill-streak{color:var(--gold,#e3b35b);margin-left:auto;margin-right:12px;font-size:12px}.drill-levels-dialog .dialog-heading{align-items:center}.drill-levels{gap:14px;display:grid}.drill-level-group{gap:6px;display:grid}.drill-level-group h3{margin:0}.drill-level-card{border:1px solid var(--line);border-radius:8px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;padding:8px 10px;display:grid}.drill-level-badge{width:32px;height:32px;font:17px var(--display);color:var(--folio-onReward);background:var(--gold,#e3b35b);border-radius:8px;place-items:center;display:grid}.drill-level-card strong{color:var(--text);font-size:13px;font-weight:500}.drill-level-card .xp-track{margin:5px 0 4px}.drill-level-card small{color:var(--muted);font-size:12px}.drill-level-card button{padding:5px 10px;font-size:12px}.drill-level-rules summary{cursor:pointer;color:var(--muted);font-size:12px}.session-choices{flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px;display:flex}.session-choices>span{color:var(--muted);font-size:12px}.session-choices button{padding:8px 12px;font-size:12px}@media (width<=650px){.drill-session{padding-inline:6px}}.review-only .profile-panel>:not(#attemptDetail){display:none}.review-only .attempt-detail{margin-top:0}:root{--bg:var(--folio-bg);--panel:var(--folio-surface);--panel-2:var(--folio-raised);--line:var(--folio-border);--line-strong:var(--folio-border);--text:var(--folio-text);--muted:var(--folio-muted);--dim:var(--folio-muted);--gold:var(--folio-rewardFill);--red:var(--folio-errorText);--green:var(--folio-progress);--cyan:var(--folio-cursor);--yellow:var(--folio-rewardFill);--pink:var(--folio-errorText);--paper:var(--folio-paper);--display:Atkinson, sans-serif;color:var(--text);background:var(--bg);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}body.piano-app{background:var(--bg);font-variant-numeric:tabular-nums;font-family:Atkinson,sans-serif}:focus-visible{outline-color:var(--folio-focus)}.eyebrow,.rule-heading,.hud-tag,.career-stats dt{font-family:var(--display);text-transform:none;letter-spacing:normal}.rule-heading{color:var(--text);align-items:center;gap:14px;margin:0 0 14px;font-size:14px;font-weight:700;display:flex}.rule-heading:after{content:"";background:var(--line-strong);flex:1;height:1px}.rule-heading>span{color:var(--muted);font-size:12px}.dialog-heading h2,.practice-panel h2,.skill-card h3,.attempt-detail h3,.reading-stat strong,.practice-result>strong,.learning-result strong{letter-spacing:normal;font-weight:600;font-family:Fraunces,serif!important}.dialog-heading h2{text-transform:none;letter-spacing:normal;font-size:22px!important}button{border-radius:4px}.primary{background:var(--folio-action);color:var(--folio-onAction);border-color:var(--folio-action);font-family:var(--display);text-transform:none;letter-spacing:normal}.primary:hover:not(:disabled){filter:brightness(1.1)}.secondary,.stop{background:var(--panel-2);border-color:var(--line-strong);color:var(--text)}.icon-button{width:44px;height:44px;color:var(--muted);background:0 0;border:1px solid #0000;place-items:center;padding:0;display:inline-grid}.icon-button:hover:not(:disabled){color:var(--text);background:color-mix(in srgb, var(--text) 8%, transparent);border-color:var(--line)}.icon-button svg{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:20px;height:20px}.xp-track{background:color-mix(in srgb, var(--text) 8%, transparent);border-radius:2px;height:4px;display:block;overflow:hidden}.xp-track i{background:var(--folio-progress);border-radius:inherit;width:0;height:100%;transition:width .9s cubic-bezier(.2,.8,.2,1);display:block}.xp-track.large{border-radius:4px;width:min(380px,40vw);height:8px}.session-setup{display:none}#sheetMusic{background:var(--paper)}.piano-app[data-mode=reading] #practicePanel,.piano-app[data-mode=reading] .score-toolbar{display:none!important}.hud-tag{color:var(--muted);border:1px solid var(--line-strong);white-space:nowrap;border-radius:4px;padding:3px 7px;font-size:12px}.hud-new{color:var(--folio-success);background:var(--folio-successSurface);border-color:var(--line)}.hud-replay{cursor:pointer;color:var(--cyan);border-color:var(--cyan);background:color-mix(in srgb, var(--folio-cursor) 12%, transparent)}.hud-replay:hover{background:color-mix(in srgb, var(--folio-cursor) 12%, transparent)}@keyframes hud-pulse{50%{opacity:.35}}.hud-tempo{border:1px solid var(--line-strong);font-family:var(--display);border-radius:6px;align-items:center;gap:2px;padding:2px;display:flex}.hud-tempo>span{justify-content:center;align-items:baseline;gap:4px;min-width:52px;display:flex}.hud-tempo small{color:var(--muted);font-size:13px}.hud-tempo b{font-variant-numeric:tabular-nums;font-size:18px}.hud-tempo button{width:28px;height:28px;color:var(--muted);background:0 0;padding:0;font-size:18px;line-height:1}.hud-tempo button:hover:not(:disabled){color:var(--text);background:color-mix(in srgb, var(--text) 8%, transparent)}.pop{animation:.32s cubic-bezier(.3,1.6,.5,1) pop}@keyframes pop{0%{transform:scale(1)}40%{transform:scale(1.35)}to{transform:scale(1)}}.hud-wrong{font:700 13px var(--display);color:var(--folio-errorText)}@keyframes shake{25%{transform:translate(-3px)}75%{transform:translate(3px)}}.piano-app[data-mode=library] #practicePanel,.piano-app[data-mode=library] .score-toolbar,.piano-app[data-mode=library] .roll-footer{display:none!important}.piano-app[data-mode=library]:not(.song-open) .performance,.piano-app[data-mode=library].song-open #libraryPanel{display:none}.library.dropping{outline:2px solid var(--folio-focus);outline-offset:-2px}.song-row{color:var(--muted);font-variant-numeric:tabular-nums;cursor:pointer;border-radius:6px;grid-template-columns:36px minmax(200px,2.4fr) 64px minmax(120px,1.2fr) 64px 80px 110px 64px 38px;align-items:center;gap:12px;padding:8px 10px;font-size:13px;display:grid}.song-row:not(.song-columns):hover,.song-row:focus-visible{background:var(--panel-2);color:var(--text)}.song-columns{cursor:default;font:12px var(--display);letter-spacing:normal;text-transform:none;color:var(--dim);border-bottom:1px solid var(--line);border-radius:0;margin-bottom:6px}.song-index{text-align:center;font-family:var(--display)}.song-name{flex-direction:column;gap:2px;min-width:0;display:flex}.song-name strong{color:var(--text);white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.song-name small{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.song-meter{grid-template-columns:1fr 40px;align-items:center;gap:8px;display:grid}.song-track{background:var(--panel-2);border-radius:2px;height:4px;overflow:hidden}.song-track i{height:100%;display:block}.song-meter b{font:13px var(--display);color:var(--text);text-align:right}.song-delete{opacity:0;width:30px;height:30px;font-size:12px}.song-row:hover .song-delete,.song-delete:focus-visible{opacity:1}.song-empty{color:var(--muted);margin:24px 10px;font-size:13px}.song-empty[hidden]{display:none}#catalogHeading{margin-top:30px}.song-title{flex-direction:column;min-width:0;max-width:280px;display:flex}.song-title strong{font:700 16px var(--display);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.song-title small{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.song-sections{flex:1;align-items:stretch;gap:3px;height:44px;display:flex}.song-section{--tone:var(--line-strong);--at:0%;background:0 0;border:0;flex:1 1 0;min-width:44px;padding:0;position:relative}.song-section:before{content:"";background:var(--tone);position:absolute;inset:15px 0}.song-section:hover:before{background:var(--folio-progress)}.song-section.here:before{outline:2px solid var(--text)}.song-section.here:after{content:"";top:11px;bottom:11px;left:var(--at);background:var(--cyan);width:2px;position:absolute}.youtube-form{gap:14px;display:grid}.youtube-form input{width:100%;color:var(--text);background:var(--bg);border:1px solid var(--line-strong);border-radius:6px;padding:11px 12px}.youtube-progress{font:12px var(--display);color:var(--muted);gap:8px;display:grid}.youtube-form .youtube-rights{color:var(--muted);cursor:pointer;align-items:flex-start;gap:10px;font-size:13px;line-height:1.5;display:flex}.youtube-form .youtube-rights input{width:auto;accent-color:var(--folio-action);flex-shrink:0;margin:3px 0 0;padding:0}.youtube-error{color:var(--red);margin:0;font-size:13px;line-height:1.5}.youtube-form .setting-help{margin:0}#micLabel{font:700 14px var(--display)}.banner{background:var(--folio-successSurface);color:var(--text);flex:none;align-items:baseline;gap:8px;padding:8px 12px;display:flex}.banner span,.banner small{color:var(--muted);font-size:13px}.banner strong{font:600 17px Fraunces,serif}dialog{background:var(--panel);border:1px solid var(--line-strong);color:var(--text);border-radius:4px}dialog::backdrop{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#05080cc4}.dialog-heading{background:var(--panel)}.help-actions{border-top:1px solid var(--line);margin-top:18px;padding-top:16px}.help-actions .setting-help{margin:10px 0 0}.career-dialog{width:min(1180px,100vw - 48px);padding:28px 32px 22px}.career-head{border-bottom:1px solid var(--line);grid-template-columns:auto 1fr auto;align-items:center;gap:32px;margin-bottom:24px;padding-bottom:24px;display:grid}.career-level{align-items:center;gap:18px;display:flex}.career-level .eyebrow{color:var(--muted);font-size:15px}.career-xp{align-items:center;gap:14px;margin-top:8px;display:flex}#careerXp{font:14px var(--display);color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}.career-stats{justify-content:flex-end;gap:34px;margin:0;display:flex}.career-stats div{flex-direction:column-reverse;gap:4px;display:flex}.career-stats dt{color:var(--muted);font-size:12px}.career-stats dd{font:700 26px var(--display);font-variant-numeric:tabular-nums;margin:0}.career-head .close{align-self:start}.career-section{margin-bottom:26px}.career-grid{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:36px;display:grid}.career-more{color:var(--muted);margin:0 0 0 auto;display:block}.stage-path{gap:0;margin:0;padding:0;list-style:none;display:flex}.phase{--phase:var(--green);flex:var(--count) 1 0;min-width:0;padding-right:10px}.phase-name{font:700 15px var(--display);color:var(--phase);overflow-wrap:anywhere;margin-bottom:10px;display:block}.phase-nodes{flex-wrap:wrap;align-items:center;gap:2px;display:flex}.stage-dot{--size:44px;width:var(--size);height:var(--size);font:700 15px var(--display);color:var(--dim);background:0 0;border:0;flex:none;place-items:center;padding:0;display:grid;position:relative}.stage-dot:before{content:"";border:2px solid var(--line);background:var(--bg);border-radius:50%;transition:transform .15s;position:absolute;inset:11px 5px;transform:rotate(-20deg)}.stage-dot span{position:relative}.stage-dot:hover:before,.stage-dot[aria-pressed=true]:before{transform:rotate(-20deg)scale(1.15)}.stage-dot.complete{color:var(--folio-onReward)}.stage-dot.complete:before{background:var(--gold);border-color:var(--text)}.stage-dot.current{--size:44px;color:var(--text);font-size:15px}.stage-dot.current:before{border-color:var(--text);border-width:3px}.path-detail{min-height:22px;color:var(--muted);flex-wrap:wrap;align-items:center;gap:6px 8px;margin:16px 0 0;font-size:15px;display:flex}.path-play{min-height:44px;margin-left:auto;padding:8px 14px;font-size:12px}.stage-dot.playing:after{content:"";border:2px solid var(--folio-progress);border-radius:50%;position:absolute;inset:-3px}.path-detail b{font-family:var(--display);color:var(--text);margin-right:10px}.stage-card{--phase:var(--green);background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:18px}.stage-card-head{align-items:center;gap:14px;margin-bottom:4px;display:flex}.stage-card-head .stage-node{width:40px;height:32px;color:var(--text);flex:none;place-items:center;font-weight:700;display:grid;position:relative}.stage-card-head .stage-node:before{content:"";border:2px solid var(--text);border-radius:50%;position:absolute;inset:3px;transform:rotate(-20deg)}.stage-card-head strong{font:600 20px Fraunces,serif}.stage-card-head div>span{font:15px var(--display);color:var(--phase);display:block}.stage-card>p{color:var(--muted);margin:8px 0 16px;font-size:13px}.objectives{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;display:grid}.objective{background:var(--panel-2);border:1px solid var(--line);border-radius:6px;align-content:start;gap:12px;padding:12px 14px 14px;display:grid}.objective h4{font:700 12px var(--display);color:var(--muted);justify-content:space-between;margin:0;display:flex}.objective.met{border-color:var(--line)}.objective.met h4{color:var(--green)}.objective.met h4:after{content:"Complete ✓"}.goal{grid-template-columns:1fr auto;align-items:baseline;gap:6px 12px;font-size:13px;display:grid}.goal b{font:14px var(--display);font-variant-numeric:tabular-nums;white-space:nowrap}.goal b small{color:var(--muted);font-size:12px}.goal.met b{color:var(--green)}.goal>div{grid-column:1/-1}.segments{gap:3px;height:5px;display:flex}.segments i{background:color-mix(in srgb, var(--text) 8%, transparent);border-radius:1px;flex:1}.segments i.on{background:var(--folio-progress)}.goal.met .segments i.on{background:var(--green)}.stage-next{color:var(--muted);margin:14px 0 0;font-size:12px}.stage-next b{font-family:var(--display);color:var(--text);margin-right:8px}.recent-scores{align-items:flex-end;gap:6px;height:130px;margin-bottom:26px;padding-bottom:20px;display:flex;position:relative;overflow-x:auto}.recent-scores:empty:after{content:"No scores yet";color:var(--dim);font:12px var(--display)}.recent-score{opacity:.85;background:0 0;border:0;flex:0 0 44px;height:100%;min-height:44px;padding:0;position:relative}.recent-score:before{content:"";height:var(--accuracy);background:var(--tone);border-radius:2px 2px 0 0;min-height:4px;position:absolute;inset:auto 0 0}.recent-score:hover{opacity:1;filter:brightness(1.15)}.recent-score small{font:12px var(--display);color:var(--muted);white-space:nowrap;position:absolute;bottom:-20px;left:50%;transform:translate(-50%)}.skill-tiles{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.skill-tile{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:12px}.skill-tile span{min-height:32px;color:var(--muted);font-size:12px;display:block}.skill-tile strong{font:700 26px var(--display);margin:6px 0 8px;display:block}.skill-tile .hand-bars{font:12px var(--display);color:var(--muted);gap:5px;display:grid}.skill-tile .hand-bars div{grid-template-columns:16px 1fr;align-items:center;gap:6px;display:grid}.skill-tile .hand-bars i{background:color-mix(in srgb, var(--text) 8%, transparent);border-radius:1px;height:4px;display:block;position:relative;overflow:hidden}.skill-tile .hand-bars i:after{content:"";width:var(--value);background:var(--folio-progress);position:absolute;inset:0 auto 0 0}.landings{border:0;margin-top:0;padding:0}.landings>summary{cursor:pointer;list-style:none}.landings>summary::-webkit-details-marker{display:none}.landings>summary:before{content:"▸";color:var(--muted);transition:transform .15s}.landings[open]>summary:before{transform:rotate(90deg)}.landing-maps{grid-template-columns:1fr 1fr;gap:18px;display:grid}.landing-map figcaption{font:12px var(--display);color:var(--muted)}.landing-detail{color:var(--muted)}.landing-legend{font:12px var(--display);color:var(--muted);margin:4px 0 16px}.fluency-hand{background:var(--panel);border-color:var(--line)}.fluency-hand strong{font-family:var(--display)!important}.fluency-hand small{margin-top:6px;display:block}@media (width<=900px){.career-grid,.landing-maps{grid-template-columns:1fr}.career-head{grid-template-columns:1fr auto}.career-head .close{grid-area:1/2;justify-self:end}.career-stats{flex-wrap:wrap;grid-area:2/1/auto/-1;justify-content:flex-start}.stage-path{flex-wrap:wrap;row-gap:18px}.phase{flex-basis:100%}.hud-tag{display:none}}@media (prefers-reduced-motion:reduce){.pop{animation:none}}.listen-button .stop-icon,.listen-button.playing .play-icon{display:none}.listen-button.playing .stop-icon{display:inline}.listen-button.playing{color:var(--folio-cursor)}.song-edit-bar{border-bottom:1px solid var(--line);color:var(--muted);flex-wrap:wrap;flex-shrink:0;align-items:center;gap:8px 14px;padding:8px 16px;font-size:12px;display:flex}.song-edit-bar label{align-items:center;gap:6px;display:flex}.song-edit-bar input,.song-edit-bar select{background:var(--panel);width:auto;color:var(--text);border:1px solid var(--line);border-radius:6px;margin:0;padding:5px 8px;font-size:12px}.song-edit-bar input{width:64px}.edit-bars{align-items:center;gap:2px;display:flex}.edit-bars>span{margin-right:4px}.edit-bars button{width:26px;height:26px;font-size:12px}.edit-actions{gap:6px;margin-left:auto;display:flex}.edit-actions button{padding:6px 10px;font-size:12px}.edit-hint{color:var(--muted);flex-basis:100%;order:9;font-size:12px}.piano-app.song-editing #songSections{display:none}.piano-app.song-editing #sheetMusic{cursor:crosshair}.edit-selection ellipse{fill:var(--folio-cursor);fill-opacity:.15;stroke:var(--folio-cursor);stroke-width:1.5px}.drill-more-button{display:none}.drill-extra{align-items:center;gap:6px;display:flex}@media (width<=900px),(height<=500px){.piano-app .shell{padding:env(safe-area-inset-top) max(12px, env(safe-area-inset-right)) 0 max(12px, env(safe-area-inset-left))}.drill-more-button{background:var(--panel);min-height:44px;color:var(--text);align-items:center;display:inline-flex}.drill-bar{gap:4px}.drill-extra{z-index:5;background:var(--panel);border:1px solid var(--line-strong);border-radius:8px;flex-wrap:wrap;max-width:calc(100vw - 32px);padding:8px;display:none;position:absolute;top:100%;right:4px;box-shadow:0 12px 30px #0008}.drill-more-button[aria-expanded=true]+.drill-extra{display:flex}.drill-extra button,.hud-tempo button{min-width:44px;min-height:44px}.drill-options{z-index:4;background:var(--panel);max-height:60dvh;padding:12px;position:absolute;left:0;right:0;overflow:auto;box-shadow:0 12px 30px #0008}.drill-panel{position:relative}.drill-picker select,.drill-picker button{max-width:100%;min-height:44px}.song-row{grid-template-columns:minmax(0,1fr) 44px;gap:8px}.song-columns,.song-row>:not(.song-name):not(.song-delete){display:none}.song-delete{opacity:1;width:44px;height:44px}.song-hud{grid-template-columns:minmax(0,1fr) auto}.song-sections{grid-area:2/1/auto/-1}dialog:is(.settings-dialog,.profile-dialog,.career-dialog){width:100%;max-width:none;height:100dvh;max-height:none;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);border:0;border-radius:0;margin:0;position:fixed;inset:0}.dialog-heading button,.session-choices button,.controls button,.controls select,.controls summary{min-height:44px}dialog.settings-dialog>*{box-sizing:border-box;width:100%;max-width:680px;margin-inline:auto}.score-menu-choices button{min-height:44px}}@media (height<=500px) and (orientation:landscape){.score-toolbar{display:none}}.edit-more-button{display:none}.edit-options{flex-wrap:wrap;flex:1;align-items:center;gap:8px 14px;display:flex}@media (width<=900px),(height<=500px){.song-edit-bar{z-index:4;gap:6px;padding:4px 8px;position:relative}.edit-more-button{min-height:44px;color:var(--text);background:var(--panel);display:block}.edit-options{background:var(--panel);border:1px solid var(--line-strong);border-radius:8px;max-height:60dvh;padding:12px;display:none;position:absolute;top:100%;left:0;right:0;overflow:auto;box-shadow:0 12px 30px #0008}.edit-more-button[aria-expanded=true]+.edit-options{display:flex}.edit-options input,.edit-options select,.edit-options button,.edit-actions button{min-height:44px}.edit-bars button{min-width:44px}.edit-hint{display:none}.song-hud .icon-button,.song-hud .quiet-button{min-width:44px;min-height:44px}}#songSectionSelect{display:none}@media (width<=900px),(height<=500px){.song-hud #songSections{display:none}.song-hud #songSectionSelect{grid-area:2/1/auto/-1;width:100%;min-height:44px;margin:0;display:block}.piano-app.song-editing #songSectionSelect{display:none}}@media (height<=500px) and (orientation:landscape){.song-hud #songSectionSelect{flex:0 180px;min-width:0}}.piano-app .shell{max-width:none;padding:env(safe-area-inset-top) 0 0}.piano-app .app-header{height:48px;padding:0 max(8px, env(safe-area-inset-right)) 0 max(8px, env(safe-area-inset-left));border-bottom:1px solid var(--line);flex-wrap:nowrap;flex:none;align-items:center;gap:4px;display:flex;position:relative}.brand{flex:none;width:150px;margin-right:12px;display:block}.brand img{width:100%;height:auto;display:block}.brand .brand-dark,[data-theme=dark] .brand .brand-light{display:none}[data-theme=dark] .brand .brand-dark{display:block}.mode-menu-button,.settings-button,.score-controls-toggle{min-height:44px;color:var(--text);border:1px solid var(--line);background:0 0;border-radius:4px;flex:none;padding:0 8px;font-size:14px}.mode-menu-button{align-items:center;gap:3px;display:inline-flex}.mode-switch{background:var(--panel);border-bottom:1px solid var(--line);flex-wrap:wrap;flex:none;gap:4px;padding:6px 8px;display:none}.shell:has(.mode-menu-button[aria-expanded=true]) .mode-switch{display:flex}.mode-switch button{text-align:left;min-height:44px;color:var(--text);background:0 0;border-radius:4px}.mode-switch button[aria-pressed=true]{background:var(--panel-2)}.stage-summary{white-space:nowrap;flex:none;font-size:15px;font-weight:700}.header-actions{align-items:center;gap:4px;margin-left:auto;display:flex}.level-badge{min-height:44px;color:var(--text);background:0 0;align-items:center;gap:4px;padding:0 3px;display:flex}.level-diamond{border:2px solid var(--folio-progress);border-radius:50%;place-items:center;width:22px;height:22px;font-size:12px;display:grid}.level-meta{white-space:nowrap;font-size:15px;display:block}.level-caption{font-weight:700}.level-xp,.level-meta .xp-track{display:none}#scoreControlsSlot{flex:none;width:44px}#scoreControlsSlot .score-controls{color:var(--text);opacity:1;background:0 0;border:0;padding:0;display:block;position:static}#scoreControlsSlot .score-controls-toggle{border:1px solid var(--line);background:0 0;border-radius:4px;width:44px;height:44px;font-size:20px;display:block}.score-options{background:var(--bg);border-bottom:1px solid var(--line);flex-wrap:wrap;flex:none;align-items:center;gap:6px;padding:6px 8px;display:none}:is(.shell:has(.score-controls.expanded) .score-options,.shell:has(.score-resume:not([hidden])) .score-options){display:flex}.shell:not(:has(.score-controls.expanded)) .score-options>:not(.score-resume){display:none}.score-options>button{min-width:44px;min-height:44px;color:var(--text);background:var(--panel);border:1px solid var(--line);border-radius:4px}.score-options .score-zoom{text-align:center;font-variant-numeric:tabular-nums;min-width:48px}.score-options .score-menu{border:1px solid var(--line);background:var(--panel);color:var(--text);box-shadow:none;border-radius:4px;flex-wrap:wrap;flex:100%;gap:8px;padding:8px;display:flex;position:static}.score-options .score-menu-title{color:var(--text);text-transform:none;letter-spacing:normal;font-size:14px}.score-options .score-menu-choices{background:var(--panel-2)}.score-options .score-menu-choices button{min-height:44px;color:var(--text)}.score-options .score-menu-choices button[aria-checked=true]{background:var(--folio-action);color:var(--folio-onAction)}.score-options .score-resume{box-shadow:none;background:var(--folio-action);color:var(--folio-onAction);border-color:var(--folio-action);position:static;transform:none}.performance{background:var(--paper);border:0;border-radius:0}.reading-hud{min-height:32px;color:var(--text);background:var(--bg);border-bottom:1px solid var(--line);flex:none;align-items:center;gap:10px;padding:2px 10px;display:flex}.hud-stage{align-items:center;gap:8px;min-width:0;display:flex}.hud-stage strong{white-space:nowrap;font-size:15px}.hud-notes{display:none}.hud-right{align-items:center;gap:8px;margin-left:auto;display:flex}.hud-streak,.hud-session{white-space:nowrap;align-items:baseline;gap:4px;font-size:14px;display:flex}.hud-streak b,.hud-session b{color:var(--text);text-shadow:none;font-size:15px}.hud-streak small,.hud-session small{font-size:14px}.transport{width:auto;padding:0 max(10px,env(safe-area-inset-right)) max(6px,env(safe-area-inset-bottom)) max(10px,env(safe-area-inset-left));background:var(--bg);border-top:1px solid var(--line);flex:none;display:block;position:static}.note-status{text-align:center;white-space:nowrap;height:18px;font-size:18px;font-weight:700;line-height:18px;overflow:hidden}.transport-actions{grid-template-columns:1fr auto 1fr;align-items:center;gap:12px;display:grid}#listenSlot{justify-self:start}#listenSlot button{min-height:44px;color:var(--text);background:var(--panel);border:1px solid var(--line);border-radius:4px;padding:8px 10px}.piano-app:not([data-mode=reading]) #hudListen,.piano-app:not([data-mode=drills]) #drillListen{display:none}.transport-status{color:var(--text);white-space:nowrap;flex-direction:row;align-items:center;gap:5px;font-size:14px;display:flex}.transport-status .dot{border:2px solid var(--folio-progress);width:10px;height:10px;background:0 0!important}.piano-app:has(#start[aria-pressed=true]) .transport-status .dot{background:var(--folio-progress)!important}.meter{background:0 0;width:32px;height:8px;overflow:hidden}.meter[aria-valuenow="0"]{visibility:hidden}#level{background:repeating-linear-gradient(to right,var(--folio-progress) 0 3px,transparent 3px 5px);height:100%;display:block}.transport-primary{justify-self:end;gap:12px;display:flex}.space-key{min-width:100px;min-height:44px;color:var(--folio-onAction);background:var(--folio-action);border:1px solid var(--folio-action);border-radius:4px;padding:8px 14px;font-weight:700}.space-key[aria-pressed=true]{color:var(--text);background:var(--panel);border-color:var(--line)}.space-key:disabled{color:var(--muted);background:var(--panel-2);border-color:var(--line);opacity:1}.key-cap,.transport-side,.piano-app[data-mode=library]:not(.song-open) .performance,.piano-app[data-mode=library]:not(.song-open) .transport,.piano-app:not([data-mode=reading]) .stage-summary,.piano-app[data-mode=library] .level-badge{display:none}@media (width<=1000px){.brand{display:none}}@media (width<=600px){.piano-app .app-header{gap:2px;padding-inline:4px}.mode-menu-button,.settings-button{padding-inline:6px;font-size:13px}.level-badge{gap:2px;padding-inline:0}.level-diamond{width:20px;height:20px}.hud-session{display:none}}@media (width<=600px) and (height>=501px){.transport-actions:has(#answer:not([hidden])) .transport-primary{display:contents}.transport-actions:has(#answer:not([hidden])) #start{grid-area:1/3;justify-self:end}.transport-actions:has(#answer:not([hidden])) #answer{grid-area:2/1/auto/-1}}@media (width<=900px),(height<=500px){.drill-bar:has(.drill-more-button[aria-expanded=true]){flex-wrap:wrap}.drill-extra{max-width:none;box-shadow:none;background:var(--panel);border-radius:4px;flex-basis:100%;position:static}.drill-options{background:var(--panel);max-height:40dvh;box-shadow:none;position:static}.song-edit-bar:has(.edit-more-button[aria-expanded=true]){flex-wrap:wrap}.edit-options{background:var(--panel);max-height:40dvh;box-shadow:none;flex-basis:100%;position:static}}.drill-progress{white-space:nowrap;font-size:15px;font-weight:700}.piano-app[data-mode=drills] .level-badge{display:none}.drill-bar{background:var(--bg);flex-wrap:wrap}.drill-tempo-display,.drill-best{white-space:nowrap;flex:none;font-size:13px}.drill-best{margin-left:4px}#drillDetails,.drill-more-button{min-width:44px;min-height:44px;color:var(--text);background:var(--panel);border:1px solid var(--line);border-radius:4px;justify-content:center;align-items:center;padding:0 6px;display:inline-flex}.drill-tempo-display,.drill-best:empty{display:none}.drill-more-button{font-variant-numeric:tabular-nums;white-space:nowrap;gap:6px;padding:0 12px;font-size:15px}.drill-more-button:after{content:"";border:2px solid;border-width:0 2px 2px 0;width:7px;height:7px;margin-top:-4px;transform:rotate(45deg)}.drill-more-button[aria-expanded=true]:after{margin-top:4px;transform:rotate(-135deg)}.drill-extra{max-width:none;box-shadow:none;background:0 0;border:0;border-radius:0;flex-wrap:wrap;flex:1 0 100%;align-items:center;gap:8px;padding:8px 0;display:none;position:static}.drill-more-button[aria-expanded=true]+.drill-extra{display:flex}.drill-extra button{min-height:44px}.drill-extra .drill-level,.drill-extra .drill-session{width:auto;color:var(--text);flex-direction:row;padding:0 14px;font-size:15px}.drill-tool{align-items:center;gap:6px;padding:0 14px;font-size:15px;display:inline-flex}.drill-tool svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:18px;height:18px}.drill-extra .hud-tempo{min-height:44px;color:var(--text);border:1px solid var(--line);border-radius:4px;align-items:center;gap:4px;padding:0 4px;display:inline-flex}.drill-extra .hud-tempo small{color:var(--muted);font-size:13px}.drill-extra .hud-tempo b{font-variant-numeric:tabular-nums;font-size:17px}.drill-extra .hud-tempo button{color:var(--text);background:0 0;border:0;font-size:20px}.drill-extra button:disabled{opacity:.45}.drill-ladder-track{display:none}.library{background:var(--bg);border:0;border-radius:0;flex:1;min-height:0;padding:16px;overflow:auto}.library-head{flex-wrap:wrap;gap:8px;display:flex}.library-head .rule-heading{flex:1 0 100%;margin:0 0 4px}.rule-heading{letter-spacing:normal;text-transform:none;font:600 19px Fraunces,serif}.rule-heading:after{display:none}.library-head #librarySearch{box-sizing:border-box;background:var(--panel);border:1px solid var(--line);width:auto;min-width:0;height:44px;min-height:44px;color:var(--text);border-radius:4px;flex:1;padding:0 12px;font-size:15px}.import-menu{border:0;flex:none;margin:0;padding:0;position:relative}.import-menu>summary{min-height:44px;color:var(--folio-onAction);background:var(--folio-action);border:1px solid var(--folio-action);border-radius:4px;align-items:center;padding:8px 18px;font-size:14px;font-weight:700;list-style:none;display:flex}.import-menu>summary::-webkit-details-marker{display:none}.import-choices{z-index:8;background:var(--panel);border:1px solid var(--line);min-width:160px;padding:5px;display:grid;position:absolute;top:100%;right:0}.import-menu:not([open]) .import-choices{display:none}.import-choices button,.import-choices label{min-height:44px;color:var(--text);text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;padding:8px 12px;font-size:14px;display:flex}.import-choices input{display:none}.import-choices{min-width:200px;box-shadow:0 8px 24px color-mix(in srgb, var(--folio-ink) 18%, transparent);border-radius:4px;padding:4px}.import-choices button:hover,.import-choices label:hover{background:var(--panel-2)}@media (pointer:fine){.import-choices button,.import-choices label{min-height:36px;padding:6px 12px}}input:focus-visible,select:focus-visible,textarea:focus-visible{outline-offset:0;border-color:var(--folio-focus)}.song-row:not(.song-columns){border-bottom:1px solid var(--line);color:var(--text);border-radius:0;padding-inline:0}#songRows:not(:empty){border-top:1px solid var(--line)}button.song-name{width:100%;min-height:44px;color:var(--text);text-align:left;background:0 0;border:0;padding:0}.song-name strong{color:var(--text)}.song-name small,.song-empty{color:var(--muted)}.catalog{display:block}.catalog-row{border:0;border-bottom:1px solid var(--line);min-height:56px;color:var(--text);background:0 0;border-radius:0;justify-content:space-between;align-items:center;gap:12px;padding:8px 4px;text-decoration:none;display:flex}.catalog-row:hover{background:var(--panel-2)}.catalog-link{color:var(--folio-action);text-underline-offset:3px;flex:none;font-weight:600;text-decoration:underline}[data-theme=dark] .catalog-link{color:var(--text)}.song-columns[hidden]{display:none}@media (height<=500px) and (orientation:landscape){.piano-app .app-header{padding-right:290px}.transport{min-height:18px;padding:0 8px}.transport-actions{z-index:3;top:env(safe-area-inset-top);right:max(8px,env(safe-area-inset-right));grid-template-columns:auto auto auto;height:48px;position:fixed}.note-status{height:18px}.space-key{min-width:80px}.piano-app[data-mode=library]:not(.song-open) .app-header{padding-right:8px}}.meter-bar{background:var(--panel-2);height:5px;position:relative}.meter-bar i{background:var(--folio-progress);position:absolute;inset:0 auto 0 0}.meter-bar em{background:var(--text);width:2px;position:absolute;top:-3px;bottom:-3px}@media (width<=900px){.song-row:not(.song-columns){position:relative}.song-row:not(.song-columns) .song-name{padding-right:58px}.song-row:not(.song-columns) .song-name:after{content:"Open ›";color:var(--text);position:absolute;top:50%;right:52px;transform:translateY(-50%)}}.drill-options{background:var(--bg);border-bottom:1px solid var(--line)}.drill-bar .drill-title{flex:0 520px;min-width:0}.drill-bar .drill-title+.drill-tempo-display+#drillDetails{margin-left:auto}.progress-stage-path{width:130px;height:24px;color:var(--text);overflow:visible}.progress-node,.progress-check,.progress-ring-track,.progress-ring-fill,.progress-stem{fill:none;stroke:currentColor;stroke-width:1.8px}.progress-node.current{stroke-width:2.8px}.progress-node.earned{fill:var(--gold);animation:.45s ease-out both progress-earned}.progress-check{stroke:var(--folio-onReward,#0b100d);stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}.progress-level-ring{flex:none;width:100%;height:100%}.progress-ring-track{stroke:var(--text)}.progress-ring-fill{stroke:var(--gold);stroke-width:5px;animation:.6s ease-out both progress-ring}.progress-streak-beam{width:calc(var(--beam-width) * 1px);flex:none;height:24px}.progress-beam{fill:currentColor;animation:.3s ease-out both progress-beam}.progress-stem{stroke-width:1.5px}.progress-streak{white-space:nowrap;align-items:center;gap:5px;display:inline-flex}.reading-result{width:100%;color:var(--text);grid-column:1/-1}.reading-result-head{align-items:center;gap:12px;display:flex}.reading-result-mark{flex:none;width:48px;height:40px}.reading-result h2{margin:0;font-family:Fraunces,serif;font-size:20px}.reading-result p{margin:2px 0}.reading-result-detail{justify-content:space-between;align-items:center;gap:8px;margin:8px 0;display:flex}.reading-result-actions{gap:12px;display:flex}.reading-result button{min-height:44px}@keyframes progress-beam{0%{fill-opacity:.75}}.progress-result-fill{animation:.45s ease-out both progress-earned}@keyframes progress-earned{0%{fill-opacity:.75}}@keyframes progress-ring{0%{stroke-dasharray:0 100}to{stroke-dasharray:var(--ring-fill) 100}}@media (prefers-reduced-motion:reduce){.progress-ring-fill,.progress-node.earned,.progress-result-fill,.progress-beam{animation:none}}.transport:has(.reading-result:not([hidden]))>:not(.reading-result):not(.note-status){display:none}.level-diamond:has(.progress-level-ring):before{display:none}.reading-result[hidden],.progress-streak[hidden]{display:none}.piano-app.is-playing #openProfile,.piano-app.is-playing #hudStreak,.piano-app.is-playing #drillProgress,.piano-app.is-playing #drillBest,.piano-app.is-playing #drillLevel,.piano-app.is-playing .stage-summary{visibility:hidden}.piano-app[data-mode=drills] #openProfile,.piano-app[data-mode=library] #songAccuracy,.piano-app[data-mode=library] #songStreak{display:none}.level-diamond:has(.progress-level-ring){border:0}#hudNotes{flex:none;align-items:center;display:flex}.reading-hud{flex-wrap:wrap}.hud-right{flex-wrap:wrap;min-width:0}@media (width<=600px){.reading-hud .hud-stage:not(:has(#hudReplay:not([hidden]))){display:none}.progress-stage-path{width:104px}.progress-streak{font-size:13px}.progress-streak-beam{height:20px}}.career-dialog .close{width:44px;height:44px}@media (width<=600px){dialog.career-dialog{padding:max(16px, env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) max(16px, env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left))}}@media (height<=500px) and (orientation:landscape){.reading-result{grid-template-columns:minmax(0,1fr) auto;gap:4px 12px;display:grid}.reading-result-head,.reading-result-detail{grid-column:1}.reading-result-detail{margin:0}.reading-result-actions{grid-area:1/2/span 2;align-self:end}}.asset-download{z-index:100;right:1rem;top:calc(env(safe-area-inset-top) + 56px);border:1px solid var(--line);width:min(22rem,100vw - 2rem);color:var(--text);background:var(--panel);border-radius:4px;padding:.8rem 1rem;font:14px Atkinson,sans-serif;position:fixed}.asset-download progress{width:100%;accent-color:var(--folio-progress);margin-top:.5rem;display:block}.recording-import{flex-wrap:wrap;align-items:center;gap:.7rem;margin:0 0 1rem;display:flex}.recording-import p{color:var(--muted);margin:0;font-size:.85rem}#syncSignIn{flex-wrap:wrap;align-items:end;gap:8px;display:flex}#syncSignIn label{flex:180px;gap:6px;display:grid}#syncSignIn input{border:1px solid var(--line-strong);background:var(--bg);min-width:0;min-height:44px;color:var(--text);border-radius:6px;padding:10px 12px;font-size:16px}#syncSignIn button{min-height:44px}.history-import{margin-bottom:24px}.history-import summary{min-height:44px}.history-import p{color:var(--muted);font-size:12px;line-height:1.6}.history-import label{cursor:pointer;border-radius:6px;gap:8px;max-width:100%;min-height:44px;padding:10px 12px;display:grid}.history-import input{min-width:0;max-width:100%}.model-settings{margin:1.2rem 0}.model-settings:not([open])>:not(summary){display:none}.model-settings>summary{color:var(--text);font-size:15px;font-weight:600}.model-settings p{color:var(--muted);overflow-wrap:anywhere;font-size:14px;line-height:1.6}.model-list{border-top:1px solid var(--line);margin-top:1rem}.model-item{border-bottom:1px solid var(--line);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;padding:8px 0;display:grid}.model-entry{border:0;margin:0;padding:0}.model-entry>summary.model-row{align-items:center;gap:.5rem;margin:0;padding:.8rem 0;list-style:none;display:flex}.model-entry>summary::-webkit-details-marker{display:none}.model-entry>summary:before{content:"+";color:var(--text);font-size:18px;line-height:1}.model-entry[open]>summary:before{content:"−"}.model-name{min-width:0;color:var(--text);flex:1;font-size:15px;font-weight:600}.model-size{color:var(--muted);white-space:nowrap;font-size:13px}.model-status{border:1px solid var(--line);background:var(--panel-2);color:var(--text);white-space:nowrap;border-radius:999px;padding:.2rem .5rem;font-size:13px}.model-status[data-state=downloaded]{color:var(--text);background:var(--folio-successSurface)}.model-detail{padding:0 0 .8rem 1.15rem}.model-detail p{margin:.35rem 0}.model-links a{color:var(--text);text-underline-offset:3px;text-decoration:underline}.model-actions{flex-wrap:wrap;gap:.45rem;margin:.6rem 0;display:flex}.model-actions button{white-space:normal;text-align:left;padding:.55rem .7rem;font-size:14px}.model-entry progress{width:100%;accent-color:var(--folio-progress)}.model-note{color:var(--muted);font-size:13px;font-weight:400;display:block}.model-confirm[hidden]{display:none}.model-status:before{content:"↓ ";font-weight:700}.model-status[data-state=downloaded]:before{content:"✓ "}.model-actions button{border-radius:4px;min-height:44px}.model-actions-disclosure{border:0;margin:12px 0;padding:0}.model-actions-disclosure>summary{min-height:44px;text-decoration:underline}.model-entry>summary.model-row{grid-template-columns:18px auto 1fr;grid-template-areas:"marker name name"".size status";gap:4px 8px;display:grid}.model-entry>summary.model-row:before{grid-area:marker;align-self:start}.model-row .model-name{grid-area:name}.model-row .model-size{grid-area:size}.model-row .model-status{grid-area:status;justify-self:start}.model-test{white-space:nowrap;background:var(--panel);min-height:44px;color:var(--text);border-color:var(--line);font-size:14px}@media (width<=600px){.model-item{grid-template-columns:1fr}.model-test{justify-self:start;margin-left:26px}}.model-settings>summary,.model-actions-disclosure>summary{list-style:none}.model-settings>summary::-webkit-details-marker{display:none}.model-actions-disclosure>summary::-webkit-details-marker{display:none}.model-settings>summary:before,.model-actions-disclosure>summary:before{content:"+";width:18px;display:inline-block}.model-settings[open]>summary:before,.model-actions-disclosure[open]>summary:before{content:"−"}
