@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/piano-practice-companion/assets/ibm-plex-sans-cyrillic-ext-wght-normal-d45eAU9y.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/piano-practice-companion/assets/ibm-plex-sans-cyrillic-wght-normal-BAAhND-U.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/piano-practice-companion/assets/ibm-plex-sans-greek-wght-normal-CmyJS8uq.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/piano-practice-companion/assets/ibm-plex-sans-vietnamese-wght-normal-Dg1JeJN0.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/piano-practice-companion/assets/ibm-plex-sans-latin-ext-wght-normal-CIII54If.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/piano-practice-companion/assets/ibm-plex-sans-latin-wght-normal-IvpUvPa2.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/piano-practice-companion/assets/ibm-plex-mono-cyrillic-ext-500-normal-BqneJy0T.woff2)format("woff2"),url(/piano-practice-companion/assets/ibm-plex-mono-cyrillic-ext-500-normal-BIfNGwUT.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/piano-practice-companion/assets/ibm-plex-mono-cyrillic-500-normal-Bq9vWWag.woff2)format("woff2"),url(/piano-practice-companion/assets/ibm-plex-mono-cyrillic-500-normal-Ael50iVv.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/piano-practice-companion/assets/ibm-plex-mono-vietnamese-500-normal-DZ4AoWbu.woff2)format("woff2"),url(/piano-practice-companion/assets/ibm-plex-mono-vietnamese-500-normal-C8zxqsMH.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/piano-practice-companion/assets/ibm-plex-mono-latin-ext-500-normal-CAhNIIs5.woff2)format("woff2"),url(/piano-practice-companion/assets/ibm-plex-mono-latin-ext-500-normal-CZ70TYgx.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/piano-practice-companion/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2)format("woff2"),url(/piano-practice-companion/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Petaluma Script;src:url(/piano-practice-companion/assets/PetalumaScript-DIP25UqM.woff2)format("woff2");font-display:block}@font-face{font-family:Petaluma Text;src:url(/piano-practice-companion/assets/PetalumaText-DVr6PFx2.woff2)format("woff2");unicode-range:U+E000-F8FF;font-display:block}:root{--desk:#e6e1d6;--paper:#fbf8f1;--paper-edge:#d8d0bf;--ink:#1c1a17;--ink-2:#4a453d;--muted:#7a7366;--line:#cfc7b7;--control:#f3efe6;--highlighter:#ffde3b;--highlighter-blend:multiply;--on-ink:#fbf8f1;--danger:#a3322a;--sans:"IBM Plex Sans Variable", system-ui, sans-serif;--mono:"IBM Plex Mono", ui-monospace, monospace;--script:"Petaluma Script", "Petaluma Text", "Comic Sans MS", cursive;--transport-h:76px;font:14px/1.45 var(--sans);color:var(--ink);background:var(--desk);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;-webkit-font-smoothing:antialiased}@media (prefers-color-scheme:dark){:root{--desk:#121110;--paper:#1d1b18;--paper-edge:#2c2924;--ink:#ece6d9;--ink-2:#c4bcad;--muted:#8c8577;--line:#36322c;--control:#24211d;--highlighter:#ffd6334d;--highlighter-blend:normal;--on-ink:#121110;--danger:#e0786e;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}body{margin:0}button,select,input{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:default}:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.label{font:500 10.5px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.app{grid-template-rows:auto minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr);height:100dvh;display:grid;overflow:hidden}.workspace{grid-template-columns:248px minmax(0,1fr);min-height:0;display:grid}.stage{min-width:0;padding:32px 40px 48px;overflow:auto}.topbar{border-bottom:1px solid var(--line);align-items:center;gap:16px;height:52px;padding:0 20px;display:flex}.wordmark{color:var(--ink);letter-spacing:-.01em;align-items:center;gap:9px;font-size:15px;font-weight:600;text-decoration:none;display:flex}.wordmark svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:20px;height:20px}.topbar-tag{color:var(--muted)}.topbar-spacer{flex:1}.topbar-link,.topbar-button,.tunes-toggle{white-space:nowrap;border:1px solid var(--line);height:30px;color:var(--ink-2);background:0 0;border-radius:6px;flex:none;align-items:center;gap:6px;padding:0 12px;text-decoration:none;display:inline-flex}.topbar-link:hover,.topbar-button:hover,.tunes-toggle:hover{color:var(--ink);border-color:var(--ink-2)}.topbar-link svg{fill:currentColor;width:15px;height:15px}.tunes-toggle{display:none}.library{border-right:1px solid var(--line);flex-direction:column;padding:24px 12px 24px 20px;display:flex;overflow:auto}.library>*{flex:none}.library-head{justify-content:space-between;align-items:center;padding:0 0 12px 10px;display:flex}.library-head h2{margin:0}.library-count{color:var(--ink-2);margin-left:6px}.library-actions{gap:6px;display:flex}.library[inert]{opacity:.5}.library-import,.library-remove,.button,.file-button{border:1px solid var(--line);background:var(--control);cursor:pointer;border-radius:6px;align-items:center;height:28px;padding:0 10px;font-size:13px;display:inline-flex}.library-import:hover,.library-remove:hover,.button:hover,.file-button:hover{border-color:var(--ink-2)}.library-remove-confirm{border-color:var(--danger);color:var(--danger)}.library-search{border:1px solid var(--line);background:var(--paper);border-radius:6px;width:100%;height:32px;margin-bottom:8px;padding:0 10px}.library-search:focus-visible{outline-offset:0}.library-filter{gap:6px;margin-bottom:10px;display:flex}.library-filter .select{flex:1;min-width:0}.library-more{color:var(--muted);margin:0;padding:8px 10px;font-size:12px}.library-list{margin:0;padding:0;list-style:none}.score-group{border-bottom:1px solid var(--line);padding-bottom:6px}.score-versions{width:calc(100% - 20px);margin:0 10px 4px;font-size:12px}.tune{text-align:left;background:0 0;border:0;border-radius:6px;width:100%;padding:8px 10px;display:block}.tune:hover{background:var(--control)}.tune[aria-current=true]{background:var(--paper);box-shadow:inset 0 0 0 1px var(--line)}.tune-title{font-weight:500;line-height:1.3;display:block}.tune-meta{color:var(--muted);margin-top:2px;font-size:12px;display:block}.sheet{background:var(--paper);border:1px solid var(--paper-edge);max-width:1040px;min-height:100%;box-shadow:0 1px 0 var(--paper-edge), 0 18px 40px -28px #00000059;font-family:var(--script);color:var(--ink);border-radius:2px;margin:0 auto;padding:44px 56px 64px}.sheet-head{grid-template-columns:1fr auto 1fr;align-items:end;gap:24px;margin-bottom:40px;display:grid}.sheet-title{font:400 44px/1.1 var(--script);text-align:center;text-underline-offset:10px;margin:0;text-decoration:underline;text-decoration-thickness:2px}.sheet-meta{color:var(--ink-2);font-size:19px}.sheet-meta-right{text-align:right}.rows{row-gap:42px;display:grid}.row{grid-template-columns:repeat(var(--row-cells,16), minmax(0, 1fr));display:grid}.bar{border-left:1.5px solid var(--ink);align-items:center;column-gap:.4em;min-height:84px;padding:0 10px;display:grid;position:relative}.bar-no-left,.bar-repeat-start,.bar-spacer{border-left-color:#0000}.bar-close{border-right:1.5px solid var(--ink)}.bar-with-time{padding-left:44px}.bar-repeat-start{padding-left:30px}.bar-time-before .timesig{left:auto;right:calc(100% + 8px)}.bar-repeat-start.bar-with-time{padding-left:62px}.bar-repeat-start.bar-with-time .timesig{left:30px}.bar-double:after,.bar-final:after{content:"";border-right:1.5px solid var(--ink);border-left:1.5px solid var(--ink);width:6px;position:absolute;top:0;bottom:0;right:0}.bar-final:after{border-right-width:5px;width:8px}.glyph-repeat{font-family:Petaluma Text;font-size:30px;line-height:1;position:absolute;top:50%;translate:0 -50%}.glyph-repeat-left{left:-2px}.glyph-repeat-right{right:-2px}.bar-dense .chord{font-size:32px}.tuplet{border:1.2px solid var(--ink-2);pointer-events:none;border-bottom:none;align-self:start;height:6px;margin:6px .15em 0;position:relative}.tuplet-count{background:var(--paper);color:var(--ink-2);padding:0 4px;font-family:Petaluma Text,serif;font-size:13px;font-style:italic;line-height:1.1;position:absolute;top:-.6em;left:50%;translate:-50%}.bar-number{font:500 11px/1 var(--mono);color:var(--muted);position:absolute;top:-20px;left:-2px}.mark-section{border:2px solid var(--ink);background:var(--paper);text-align:center;border-radius:3px 6px 2px 5px;min-width:26px;padding:2px 6px 0;font-size:20px;line-height:1.1;position:absolute;top:-30px;left:-14px}.mark-section+.bar-number{display:none}.mark-ending{border-top:1.5px solid var(--ink);border-left:1.5px solid var(--ink);padding:0 0 0 6px;font-size:17px;line-height:1.2;position:absolute;top:-22px;left:-1px;right:30%}.mark-sign{font-family:Petaluma Text;font-size:20px;line-height:1;position:absolute;top:-26px;left:30px}.mark-fermata{font-family:Petaluma Text;font-size:18px;line-height:1;position:absolute;top:-6px;left:50%}.mark-text{white-space:nowrap;color:var(--ink-2);font-size:16px;position:absolute;bottom:-22px;left:8px}.timesig{text-align:center;font-size:26px;line-height:.9;display:grid;position:absolute;top:50%;left:12px;translate:0 -50%}.bar-in-range:before{content:"";border-bottom:2px solid var(--ink-2);opacity:.55;height:7px;position:absolute;bottom:4px;left:0;right:0}.bar-clickable{cursor:pointer}.bar-clickable:hover{background:color-mix(in srgb, var(--highlighter) 22%, transparent)}.bar-selected,.bar-selected:hover{background:color-mix(in srgb, var(--highlighter) 40%, transparent);box-shadow:inset 0 0 0 1.5px var(--ink)}.stage-picking .bar-clickable:hover:before{content:"";border-bottom:2px solid var(--ink);height:7px;position:absolute;bottom:4px;left:0;right:0}.bar-highlight{z-index:0;background:var(--highlighter);mix-blend-mode:var(--highlighter-blend);transform-origin:0;pointer-events:none;border-radius:3px 9px 4px 11px/10px 4px 12px 5px;position:absolute;inset:14px 4px;rotate:-.6deg}.chord{z-index:1;white-space:nowrap;align-items:baseline;font-size:50px;line-height:1;display:inline-flex;position:relative}.chord-quality{margin-left:.04em;font-size:.72em}.chord-accidental{font-size:.7em;translate:0 -.45em}.chord-ext{margin-left:.06em;font-size:.5em;translate:0 -.75em}.chord-bass{margin-left:.04em;font-size:.62em}.chord-accidental-before{margin-right:.04em}.chord.chord-repeat{justify-self:center;font-size:44px}.chord.chord-nc{font-size:28px}.chord-unknown{color:var(--danger)}.transport{height:var(--transport-h);border-top:1px solid var(--line);background:var(--desk);align-items:center;gap:28px;padding:0 20px;display:flex;position:relative}.transport-main{align-items:center;gap:14px;min-width:250px;display:flex}.play{background:var(--ink);width:48px;height:48px;color:var(--on-ink);border:0;border-radius:50%;flex:none;place-items:center;display:grid;position:relative}.play:not(:disabled):active{scale:.96}.play:disabled{background:var(--control);color:var(--muted)}.play-icon{fill:currentColor;width:20px;height:20px;position:relative}.play-ring{fill:none;stroke-width:2.5px;position:absolute;inset:0;rotate:-90deg}.play-ring circle{stroke:var(--line)}.play-ring .play-ring-fill{stroke:var(--ink);transition:stroke-dashoffset .2s}.readout{font:500 13px/1.2 var(--mono);font-variant-numeric:tabular-nums;gap:4px;display:grid}.readout-error{color:var(--danger);font-family:var(--sans)}.controls{flex:1;align-items:center;gap:24px;display:flex}.control{gap:7px;display:grid}.select{appearance:none;border:1px solid var(--line);background:var(--control) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M3 4.5 6 7.5 9 4.5' fill='none' stroke='%237a7366' stroke-width='1.5'/%3E%3C/svg%3E") right 9px center / 12px no-repeat;border-radius:6px;height:32px;padding:0 30px 0 10px}.select:hover{border-color:var(--ink-2)}.stepper{align-items:center;gap:8px;display:flex}.stepper button,.icon-button{border:1px solid var(--line);background:var(--control);border-radius:6px;place-items:center;width:28px;height:28px;font-size:15px;line-height:1;display:grid}.stepper button:hover:not(:disabled){border-color:var(--ink-2)}.stepper button:disabled{opacity:.4}.stepper-value{min-width:2.6ch;font:500 14px/1 var(--mono);font-variant-numeric:tabular-nums;text-align:center}input[type=range]{appearance:none;cursor:pointer;background:0 0;height:20px}input[type=range]::-webkit-slider-runnable-track{background:var(--line);height:2px}input[type=range]::-moz-range-track{background:var(--line);height:2px}input[type=range]::-moz-range-progress{background:var(--ink);height:2px}input[type=range]::-webkit-slider-thumb{appearance:none;background:var(--ink);border:2px solid var(--desk);border-radius:3px;width:12px;height:18px;margin-top:-8px}input[type=range]::-moz-range-thumb{background:var(--ink);border:2px solid var(--desk);border-radius:3px;width:8px;height:14px}.control-tempo input[type=range]{width:132px}.band-toggle{border:1px solid var(--line);background:var(--control);border-radius:6px;align-items:center;gap:8px;height:32px;padding:0 12px;display:inline-flex}.popover{position:relative}.practice{margin-left:auto}.band-toggle:hover,.band-toggle[aria-expanded=true]{border-color:var(--ink-2)}.band-toggle-active:after{content:"";background:var(--ink);width:6px;height:6px;box-shadow:0 0 0 2px var(--highlighter);border-radius:50%}.band-toggle svg{fill:none;stroke:currentColor;stroke-width:1.6px;stroke-linecap:round;width:16px;height:16px}.popover-panel{z-index:10;background:var(--paper);border:1px solid var(--paper-edge);border-radius:8px;padding:14px 12px 12px;position:absolute;bottom:calc(100% + 18px);right:0;box-shadow:0 16px 40px -18px #0006}.mixer{gap:4px;display:flex}.practice-panel{gap:16px;width:340px;padding:4px 6px;display:grid}.practice-row{gap:8px;display:grid}.practice-loop,.practice-sections{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.practice-value{font:500 13px/1 var(--mono);margin-right:auto}.practice-off{color:var(--muted)}.practice-unit{color:var(--muted);font-size:13px}.chip{border:1px solid var(--line);background:var(--control);white-space:nowrap;border-radius:6px;align-items:center;gap:6px;height:28px;padding:0 10px;font-size:13px;display:inline-flex}.chip:hover:not(:disabled){border-color:var(--ink-2)}.chip:disabled{opacity:.45}.chip[aria-pressed=true],.chip-primary{background:var(--ink);border-color:var(--ink);color:var(--on-ink)}.chip-danger{border-color:var(--danger);color:var(--danger)}.chip-meta{font:500 10.5px/1 var(--mono);opacity:.6}.share .band-toggle{height:30px;color:var(--ink-2);background:0 0}.share .popover-panel{z-index:30;padding:6px;top:calc(100% + 8px);bottom:auto}.share-panel{width:290px;display:grid}.share-option{text-align:left;background:0 0;border:0;border-radius:6px;gap:2px;padding:9px 10px;display:grid}.share-option:hover{background:var(--control)}.share-name{font-weight:500}.share-desc{color:var(--muted);font-size:12px}.share-panel>.share-desc{margin:8px 10px}.editor{border-top:1px solid var(--line);background:var(--desk);gap:12px;max-height:46dvh;padding:14px 20px;display:grid;overflow:auto}.editor-row{flex-wrap:wrap;align-items:end;gap:10px 14px;display:flex}.editor-nav{align-self:center;align-items:center;gap:8px;display:flex}.editor-barno{min-width:7ch;font:500 13px/1 var(--mono);text-align:center}.editor-of{color:var(--muted)}.icon-button:disabled{opacity:.4}.editor-chords{flex:1;gap:5px;min-width:240px;display:grid}.editor-input{border:1.5px solid var(--ink);background:var(--paper);height:40px;font:500 17px/1 var(--mono);border-radius:6px;padding:0 12px}.editor-input:focus-visible{outline-offset:1px}.editor-input-error{border-color:var(--danger)}.editor-hint{color:var(--muted);font-size:12px}.editor-hint-error{color:var(--danger)}.editor-buttons{align-self:start;gap:6px;margin-top:6px;display:flex}.editor-spacer{flex:1}.field{gap:6px;display:grid}.field-pair{gap:4px;display:flex}.field-text{flex:1;min-width:120px;max-width:220px}.field-text .text-input{width:100%}.text-input{border:1px solid var(--line);background:var(--control);border-radius:6px;height:32px;padding:0 10px}.text-input-number{width:76px;font-family:var(--mono)}.check{align-items:center;gap:6px;height:32px;font-size:13px;display:inline-flex}.check input{accent-color:var(--ink)}.sheet-input{border:0;border-bottom:1px dashed var(--line);min-width:0;font-family:var(--script);background:0 0;border-radius:0;padding:0}.sheet-input:focus-visible{border-bottom-color:var(--ink);outline:none}input.sheet-title{width:100%;text-decoration:none}.sheet-head-edit{grid-template-columns:1fr minmax(0,2fr) 1fr}.strip{justify-items:center;gap:10px;width:72px;display:grid}input.fader{writing-mode:vertical-lr;direction:rtl;width:20px;height:120px}input.fader::-webkit-slider-runnable-track{width:2px;height:auto}input.fader::-webkit-slider-thumb{width:18px;height:12px;margin-top:0;margin-left:-8px}input.fader::-moz-range-thumb{width:14px;height:8px}.strip-value{font:500 11px/1 var(--mono);color:var(--muted);font-variant-numeric:tabular-nums}.mute{border:1px solid var(--line);background:var(--control);width:100%;height:24px;font:500 10.5px/1 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2);border-radius:5px}.mute[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:var(--on-ink)}.strip-muted .fader,.strip-muted .strip-value{opacity:.35}.mixer-divider{background:var(--line);align-self:stretch;width:1px;margin:0 6px}.strip-master{width:88px}.master-controls{align-items:stretch;gap:8px;display:flex}.meter{border:1px solid var(--line);background:var(--control);border-radius:3px;width:8px;height:120px;position:relative;overflow:hidden}.meter-bar{background:var(--ink-2);height:0;position:absolute;inset:auto 0 0}.meter-peak{background:var(--ink);height:2px;position:absolute;bottom:0;left:0;right:0}.meter-peak[data-hot=true]{background:var(--danger)}.dialog{border:1px solid var(--paper-edge);background:var(--paper);width:min(560px,100vw - 24px);color:var(--ink);border-radius:8px;padding:24px;box-shadow:0 24px 60px -20px #00000080}.dialog::backdrop{background:#14120f73}.dialog-title{margin:0 0 8px;font-size:18px;font-weight:600}.import-source{flex-wrap:wrap;gap:8px;margin:12px 0;display:flex}.dialog-text{color:var(--ink-2);margin:0 0 14px}.dialog-text code{font:500 12.5px var(--mono)}.dialog-input{border:1px solid var(--line);background:var(--control);width:100%;font:12.5px/1.4 var(--mono);resize:vertical;border-radius:6px;padding:10px}.dialog-row{gap:8px;margin-top:12px;display:flex}.dialog-spacer{flex:1}.file-button input{display:none}.button-primary{background:var(--ink);border-color:var(--ink);color:var(--on-ink)}.button-primary:hover{border-color:var(--ink)}.button:disabled{opacity:.45;cursor:default}.dialog-status{margin:12px 0 0}.dialog-status-error{color:var(--danger)}@media (width<=1100px){.topbar-tag{display:none}.stage{padding:24px}.sheet{padding:36px 32px 48px}.chord{font-size:36px}.bar-dense .chord{font-size:28px}}@media (width<=820px) and (height>=501px),(width<=600px){:root{--transport-h:auto}.workspace{grid-template-columns:minmax(0,1fr);position:relative;overflow:hidden}.topbar{gap:6px;padding:0 10px}.topbar-link,.topbar-button,.tunes-toggle,.share .band-toggle{padding:0 9px}.wordmark{margin-right:auto}.topbar-spacer{display:none}.bar-pair .chord{font-size:19px}.topbar-link-text{display:none}.tunes-toggle{display:inline-flex}.library{z-index:20;background:var(--desk);width:min(300px,85vw);transition:translate .2s;position:absolute;inset:0 auto 0 0;translate:-102%;box-shadow:12px 0 40px -20px #00000080}.library-open .library{translate:0}.stage{padding:12px}.sheet{padding:24px 14px 32px 28px}.bar-time-before .timesig{right:calc(100% + 5px)}.sheet-head{grid-template-columns:1fr 1fr;row-gap:8px;margin-bottom:28px}.sheet-title{grid-area:1/1/auto/-1;font-size:32px}.sheet-meta{font-size:16px}.rows{row-gap:26px}.bar{min-height:60px;padding:0 6px}.bar-with-time{padding-left:24px}.bar-repeat-start{padding-left:16px}.bar-repeat-start.bar-with-time{padding-left:36px}.bar-repeat-start.bar-with-time .timesig{left:16px}.glyph-repeat{font-size:20px}.mark-section{min-width:20px;font-size:15px;top:-24px;left:-8px}.mark-sign{font-size:15px;top:-20px;left:18px}.mark-text{font-size:13px;bottom:-20px}.timesig{font-size:18px;left:6px}.chord{font-size:25px}.bar-dense .chord{font-size:22px}.transport{flex-wrap:wrap;row-gap:12px;padding:12px}.transport-main{flex:1;min-width:0}.controls>.control{flex:none}.controls{flex-wrap:wrap;flex-basis:100%;order:3;gap:10px 16px}.control-tempo input[type=range]{display:none}.practice{margin-left:0}.popover{position:static}.popover-panel{bottom:calc(100% + 8px);left:12px;right:12px;overflow-x:auto}.practice-panel{width:auto}.mixer{justify-content:center}.topbar{position:relative}.share .popover-panel{left:auto}.editor{gap:10px;padding:12px}.editor-chords{flex-basis:100%;order:-1}.editor-buttons{align-self:center;margin:0 0 0 auto}.sheet-head-edit{grid-template-columns:1fr 1fr}.editor-hint{display:none}.editor-hint-error{display:block}}@media (prefers-reduced-motion:reduce){*{transition:none!important}}@media print{@page{size:auto;margin:12mm}:root{--desk:#fff;--paper:#fff;--paper-edge:#fff;--ink:#000;--ink-2:#000;--muted:#000;--line:#000;--control:#fff;--highlighter:transparent;--highlighter-blend:normal;--on-ink:#000;--danger:#000;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}body{background:#fff}.topbar,.library,.transport,.editor,.lab,.popover-panel,.dialog{display:none!important}.app,.workspace{height:auto;min-height:0;display:block;overflow:visible}.stage{padding:0;overflow:visible}.sheet{width:100%;max-width:none;min-height:0;box-shadow:none;color:#000;border:0;border-radius:0;margin:0;padding:0 0 0 34px;background:#fff!important}.sheet *{color:#000!important;box-shadow:none!important;background-color:#0000!important}.sheet-head{break-after:avoid-page}.row{break-inside:avoid;page-break-inside:avoid}.bar-highlight{display:none!important}}.topbar-button[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:var(--on-ink)}.lab{border-top:1px solid var(--line);background:var(--desk);grid-auto-rows:max-content;gap:10px;max-height:52dvh;padding:12px 20px 14px;display:grid;position:relative;overflow:auto}.lab-head,.lab-tabs,.lab-options{flex-wrap:wrap;align-items:end;gap:8px 14px;display:flex}.lab-tabs,.lab-options{align-items:center;gap:6px 8px}.lab-divider{background:var(--line);width:1px;height:20px;margin:0 4px}.lab-title{margin:0 6px 6px 0;font-size:15px;font-weight:600}.lab-swing{align-items:center;gap:8px;height:32px;display:flex}.lab-swing input{width:110px;accent-color:var(--ink)}.lab-swing output{min-width:82px;font:500 12px/1 var(--mono);color:var(--ink-2)}.lab-hint,.lab-note{color:var(--muted);margin:0;font-size:12.5px}.lab-hint{margin-left:6px}.lab-grid-wrap{gap:8px;padding-bottom:4px;display:grid;overflow-x:auto}.lab-grid{border-collapse:collapse;width:max-content}.lab-grid th{z-index:1;background:var(--desk);text-align:left;white-space:nowrap;min-width:112px;color:var(--ink-2);padding:0 10px 0 0;font-size:12.5px;font-weight:500;position:sticky;left:0}.lab-row-remove{width:18px;height:18px;color:var(--muted);opacity:0;background:0 0;border:0;border-radius:4px;margin-right:4px;padding:0}.lab-grid tr:hover .lab-row-remove,.lab-row-remove:focus-visible{opacity:1}.lab-cell{padding:2px 1px}.lab-beat{padding-left:5px}.lab-bar{border-left:2px solid var(--line);padding-left:7px}.lab-hit{border:1px solid var(--line);background:var(--paper);cursor:pointer;border-radius:4px;width:22px;height:22px;padding:0;display:block}.lab-beat .lab-hit{border-color:var(--muted)}.lab-hit:hover{border-color:var(--ink)}.lab-hit[data-level=soft]{background:color-mix(in srgb, var(--ink) 30%, var(--paper))}.lab-hit[data-level=normal]{background:color-mix(in srgb, var(--ink) 68%, var(--paper))}.lab-hit[data-level=accent]{background:var(--ink);border-color:var(--ink)}.lab-hit[data-maybe]{background-image:repeating-linear-gradient(135deg, transparent 0 3px, var(--paper) 3px 5px)}.lab-now .lab-hit{box-shadow:0 0 0 2px var(--highlighter)}@media (width<=820px) and (height>=501px),(width<=600px){.topbar-long{display:none}.topbar-lab{text-transform:capitalize}.lab-head{gap:8px 10px}.lab-title{display:none}.lab-close{position:absolute;top:8px;right:10px}.lab-head{padding-right:36px}.lab{max-height:58dvh;padding:10px 12px 12px}.lab-hint{flex-basis:100%;margin-left:0}.lab-grid th{min-width:84px;font-size:11.5px}.lab-hit{width:26px;height:30px}.lab-row-remove{opacity:1}}.home{max-width:640px;min-height:100dvh;padding:calc(56px + var(--inset-top)) 20px calc(32px + var(--inset-bottom));flex-direction:column;gap:32px;margin:0 auto;display:flex}.home-header h1{letter-spacing:-.02em;margin:14px 0 6px;font-size:30px;font-weight:600}.home-header p{color:var(--ink-2);margin:0;font-size:16px}.home-mark{fill:none;width:36px;height:36px;stroke:var(--ink);stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}.home-menu{flex-direction:column;gap:12px;display:flex}.home-item{background:var(--paper);border:1px solid var(--paper-edge);min-height:76px;color:var(--ink);box-shadow:0 1px 0 var(--paper-edge);border-radius:10px;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"title arrow""desc arrow";align-items:center;gap:4px 16px;padding:18px 20px;text-decoration:none;transition:border-color .12s,transform .12s;display:grid}.home-item:hover{border-color:var(--ink-2)}.home-item:active{transform:translateY(1px)}.home-item:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.home-item-title{grid-area:title;font-size:18px;font-weight:600}.home-item-desc{color:var(--muted);grid-area:desc}.home-item-arrow{fill:none;width:18px;height:18px;stroke:var(--ink-2);stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;grid-area:arrow}.home-footer{color:var(--muted);margin-top:auto;font-size:12px}.home-footer a{color:var(--ink-2)}.exercise-stage{grid-auto-rows:max-content;align-content:start;gap:24px;width:100%;max-width:1180px;margin:0 auto;display:grid}.exercise-stage .sheet{min-height:auto}.exercise-level{align-items:center;gap:10px;display:flex}.exercise-level .select{height:30px}.exercise-loading,.exercise-error{color:var(--muted)}.exercise-error{color:var(--danger)}.chord.chord-hidden{border:1.5px dashed var(--ink-2);background:color-mix(in srgb, var(--control) 55%, transparent);color:var(--muted);font-family:var(--sans);border-radius:8px;align-self:stretch;place-items:center;margin:14px -4px;font-size:26px;font-weight:500;display:grid}.chord.chord-revealed{background:var(--highlighter);mix-blend-mode:var(--highlighter-blend);border-radius:4px;justify-self:start;padding:0 4px}.chord.chord-correct{background:#47b76a61;border-radius:5px}.chord.chord-missed{background:#d9575761;border-radius:5px}.answers{gap:14px;display:grid}.answers-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.answers-head svg{fill:currentColor;width:14px;height:14px}.answer-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;display:grid}.answer{border:1px solid var(--paper-edge);background:var(--paper);min-height:56px;color:var(--ink);text-align:left;cursor:pointer;border-radius:10px;align-items:center;gap:12px;padding:10px 16px;transition:border-color .12s,opacity .12s;display:flex}.answer:hover:not(:disabled){border-color:var(--ink-2)}.answer:disabled{cursor:default}.answer-index{border:1px solid var(--line);width:24px;height:24px;color:var(--muted);font:500 12px var(--mono);border-radius:6px;flex:none;place-items:center;display:grid}.answer-label{letter-spacing:.01em;font-size:19px;font-weight:600}.answer-correct{border-color:#2f7d4a;box-shadow:inset 0 0 0 1.5px #2f7d4a}.answer-wrong{border-color:var(--danger);box-shadow:inset 0 0 0 1.5px var(--danger)}.answer-dim{opacity:.5}.feedback{border:1px solid var(--line);background:var(--paper);border-radius:10px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px 20px;padding:14px 18px;display:flex}.feedback-correct strong{color:#2f7d4a}.feedback-wrong strong{color:var(--danger)}.feedback-round{color:var(--ink-2);margin-top:4px}.feedback-actions{gap:8px;display:flex}.feedback-next{background:var(--ink);height:34px;color:var(--on-ink);cursor:pointer;border:0;border-radius:6px;padding:0 18px;font-weight:600}@media (prefers-color-scheme:dark){.answer-correct{border-color:#6cc48a;box-shadow:inset 0 0 0 1.5px #6cc48a}.feedback-correct strong{color:#6cc48a}}@media (width<=820px) and (height>=501px),(width<=600px){.exercise .wordmark{font-size:14px}.exercise-level .label{display:none}.chord.chord-hidden{margin:10px -2px;font-size:20px}.answer-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.answer-label{font-size:16px}}.answers-reference{align-items:center;gap:8px;display:flex}.answers-reference .label{margin-right:4px}.exercise-focus{gap:7px}.focus-state{font:600 11px/1 var(--mono);border-left:1px solid;padding-left:7px}.answers-reference .band-toggle[aria-pressed=true]{border-color:var(--ink-2);color:var(--ink);background:var(--control)}.exercise-audio-controls{align-items:center;gap:12px;margin-left:auto;display:flex}.exercise .transport{height:auto;min-height:var(--transport-h);flex-wrap:wrap;row-gap:10px;padding-top:10px;padding-bottom:10px}.exercise .controls{flex-wrap:wrap;gap:10px 16px}.exercise-master-control{align-items:center;gap:7px;display:flex}.exercise-master-control input{width:94px}.exercise-master-control output{min-width:3ch;font:500 12px/1 var(--mono);text-align:right}.answer-play{width:14px;height:14px;fill:var(--muted);margin-left:auto}.sightreading{grid-template-rows:auto auto minmax(0,1fr) auto}.sight-mode,.sight-picker{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.sight-mode{border-bottom:1px solid var(--line);padding:8px 20px}.sight-mode .chip[aria-pressed=true],.sight-picker .chip[aria-pressed=true]{background:var(--ink);color:var(--on-ink)}.sight-workspace{min-height:0;overflow:auto}.sight-stage{align-content:start;gap:18px}.sight-picker{border:1px solid var(--line);background:var(--paper);border-radius:8px;padding:10px 12px}.sight-picker .control{flex:1;min-width:min(250px,100%)}.sight-hint,.sight-midi-status,.sight-key{color:var(--ink-2)}.sight-midi-status{font:500 12px/1.4 var(--mono);margin:0}.sight-scroll{border:1px solid var(--paper-edge);background:var(--paper);border-radius:10px;min-height:190px;padding:28px 0;position:relative;overflow:hidden}.sight-scroll:before{z-index:2;background:var(--ink);content:"";pointer-events:none;width:2px;position:absolute;top:0;bottom:0;left:25%}.sight-lane{width:max-content;transform:translateX(calc(var(--scroll-steps) * -10rem));will-change:transform;padding-left:25%;display:flex}.sight-card{border-right:1px solid var(--line);min-height:130px;color:var(--ink-2);flex:0 0 10rem;align-content:center;gap:10px;padding:12px;display:grid}.sight-card strong{font:500 36px/1 var(--script);color:var(--ink)}.sight-card-active{background:var(--control)}.sight-card-correct{background:color-mix(in srgb, #47b76a 38%, var(--paper))}.sight-card-missed{background:color-mix(in srgb, #d95757 38%, var(--paper))}.sightreading .transport{flex-wrap:wrap;row-gap:10px;height:auto;padding-top:10px;padding-bottom:10px}.sightreading .controls{flex-wrap:wrap;gap:10px 16px}@media (width<=820px) and (height>=501px),(width<=600px){.sightreading .topbar-button{white-space:nowrap;text-overflow:ellipsis;max-width:42vw;overflow:hidden}.sight-mode{padding:7px 10px}.sight-scroll{--sight-scroll-height:min(55dvh, 480px);height:var(--sight-scroll-height);padding:0 14px}.sight-scroll:before{width:auto;height:2px;inset:25% 0 auto}.sight-lane{width:100%;padding:calc(var(--sight-scroll-height) * .25) 0 0;transform:translateY(calc(var(--scroll-steps) * -6rem));flex-direction:column}.sight-card{border-right:0;border-bottom:1px solid var(--line);flex-basis:6rem;min-height:6rem}}.answer-listening{background:var(--control)}.answer-listening .answer-play{fill:var(--ink)}.answer.answer-dim:hover{opacity:.8}.feedback-hint{color:var(--muted);margin-top:4px;font-size:13px}.results{border:1px solid var(--line);border-radius:10px;padding:12px 18px}.results summary{cursor:pointer;color:var(--ink-2);font-weight:500}.results table{border-collapse:collapse;width:100%;margin:12px 0}.results th,.results td{border-bottom:1px solid var(--line);text-align:left;padding:6px 8px}.results th{color:var(--muted);font:500 11px var(--mono);letter-spacing:.06em;text-transform:uppercase}.results-note{color:var(--muted);font-size:13px}@media (width<=820px) and (height>=501px),(width<=600px){.answers-head{flex-wrap:wrap}.answers-reference>.label{display:none}}.custom-picker{border:1px solid var(--paper-edge);background:var(--paper);border-radius:10px;gap:14px;padding:24px;display:grid}.custom-picker h2{margin:0;font-size:20px}.custom-picker p{color:var(--ink-2);margin:0}.custom-grid{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:8px;display:grid}.custom-option{border:1px solid var(--line);cursor:pointer;border-radius:8px;align-items:center;gap:10px;min-height:48px;padding:8px 12px;display:flex}.custom-option-on{border-color:var(--ink-2);background:var(--control)}.custom-option .answer-label{font-size:16px}.custom-count{color:var(--muted);margin-left:auto;font-size:12px}.custom-picker .feedback-actions{justify-content:flex-end}.feedback-next:disabled{opacity:.4;cursor:default}.progression-filter{gap:8px;display:grid}.progression-filter-bar{gap:6px;display:flex}.progression-filter-bar .library-import[aria-expanded=true]{border-color:var(--ink-2);color:var(--ink)}.progression-filter-panel{border:1px solid var(--line);background:var(--paper);border-radius:8px;gap:8px;padding:8px;display:grid}.progression-match{border:1px solid var(--line);border-radius:6px;grid-template-columns:1fr 1fr;display:grid;overflow:hidden}.progression-match button{height:26px;color:var(--ink-2);cursor:pointer;background:0 0;border:0;font-size:12px}.progression-match button[aria-pressed=true]{background:var(--ink);color:var(--on-ink)}.progression-options{gap:2px;max-height:260px;margin:0;padding:0;list-style:none;display:grid;overflow:auto}.progression-options label{cursor:pointer;align-items:center;gap:8px;padding:4px 2px;display:flex}.progression-label{font-weight:500}.progression-count{color:var(--muted);font:500 11px var(--mono);margin-left:auto}:root{--inset-top:var(--safe-area-inset-top,env(safe-area-inset-top,0px));--inset-bottom:var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px));--inset-left:var(--safe-area-inset-left,env(safe-area-inset-left,0px));--inset-right:var(--safe-area-inset-right,env(safe-area-inset-right,0px))}.app{padding-left:var(--inset-left);padding-right:var(--inset-right)}.app:not(:has(>.transport)){padding-bottom:var(--inset-bottom)}.topbar{height:calc(52px + var(--inset-top));padding-top:var(--inset-top)}.transport{box-sizing:content-box;padding-bottom:var(--inset-bottom)}.topbar-short{display:none}@media (width<=820px) and (height>=501px),(width<=600px){.topbar-short{display:inline}.wordmark{flex:1 1 0;min-width:0;line-height:1.15}.exercise-level{min-width:0}.exercise-level .select{text-overflow:ellipsis;max-width:44vw}.topbar-menu .popover-panel{width:min(300px,100vw - 24px);max-height:calc(100dvh - 80px - var(--inset-top) - var(--inset-bottom));inset:calc(100% + 8px) 0 auto auto;overflow-y:auto}.topbar-menu-items{gap:6px;display:grid}.topbar-menu-items>.topbar-button,.topbar-menu-items .band-toggle{justify-content:flex-start;width:100%;height:40px}.topbar-menu-items .popover-panel{width:auto;max-height:none;box-shadow:none;border:0;padding:4px 0 0;position:static}.topbar-menu-items .share-panel{width:auto}}@media (width<=1100px),(height<=500px){.transport,.exercise .transport,.sightreading .transport{height:auto;min-height:0;padding:8px 12px calc(8px + var(--inset-bottom));flex-wrap:nowrap;gap:12px}.transport-main{flex:1;min-width:0}.readout{min-width:0;overflow:hidden}.transport-settings>.popover-panel{z-index:60;max-height:min(80dvh, calc(100dvh - var(--inset-top) - 40px));padding:14px 16px calc(16px + var(--inset-bottom));border-radius:14px 14px 0 0;position:fixed;inset:auto 0 0;overflow-y:auto}.settings-sheet{gap:16px;display:grid}.settings-sheet-head{justify-content:space-between;align-items:center;display:flex}.settings-sheet .controls,.exercise .settings-sheet .controls{grid-template-columns:1fr 1fr;gap:14px;display:grid}.settings-sheet .control-tempo{grid-column:1/-1}.settings-sheet .select,.settings-sheet .popover,.settings-sheet .band-toggle{width:100%}.settings-sheet .popover-panel{width:auto;box-shadow:none;border:0;padding:8px 0 0;position:static;overflow:visible}.settings-sheet .exercise-audio-controls{flex-wrap:wrap;margin-left:0}}@media (width>=821px) and (width<=1100px) and (height>=501px){.transport-settings>.popover-panel{left:auto;right:12px;bottom:calc(var(--transport-h) + 8px);border-radius:14px;width:min(460px,100vw - 24px)}}@media (height<=500px) and (width>=601px){.workspace{grid-template-columns:minmax(0,1fr);position:relative;overflow:hidden}.tunes-toggle{display:inline-flex}.library{z-index:20;background:var(--desk);width:min(300px,45vw);transition:translate .2s;position:absolute;inset:0 auto 0 0;translate:-102%;box-shadow:12px 0 40px -20px #00000080}.library-open .library{translate:0}.topbar{height:calc(40px + var(--inset-top));gap:8px;padding-left:12px;padding-right:12px}.topbar-button,.topbar-link,.tunes-toggle{height:28px;padding:0 9px}.library{padding:12px 8px 12px 12px}.stage{padding:10px 14px}.sheet{padding:14px 20px 24px}.sheet-head{gap:12px;margin-bottom:22px}.sheet-title{text-underline-offset:7px;font-size:30px}.rows{row-gap:28px}.bar{min-height:58px}.chord{font-size:26px}.bar-dense .chord{font-size:21px}.library-head{gap:6px;padding-left:4px}.library-head h2{white-space:nowrap}.transport,.exercise .transport,.sightreading .transport{padding-top:5px;padding-bottom:calc(5px + var(--inset-bottom))}.play{width:38px;height:38px}.transport-settings>.popover-panel{width:min(400px,55vw);max-height:none;padding:calc(12px + var(--inset-top)) calc(14px + var(--inset-right)) calc(12px + var(--inset-bottom)) 14px;border-radius:14px 0 0 14px;inset:0 0 0 auto}.settings-sheet{gap:12px}.settings-sheet .controls,.exercise .settings-sheet .controls{gap:10px 12px}.settings-sheet .control-tempo{grid-column:auto}.wordmark{white-space:nowrap;flex:0 auto;min-width:0}.wordmark-text{text-overflow:ellipsis;overflow:hidden}.topbar-long{display:none}.topbar-short{display:inline}.topbar-lab{text-transform:capitalize}.exercise-level .select{text-overflow:ellipsis;max-width:34vw}}
