:root{--p-night-900:#181818;--p-night-850:#1e1e1e;--p-night-830:#1f1f1f;--p-night-800:#1a1a1a;--p-night-780:#232323;--p-night-750:#262626;--p-night-700:#2a2a2a;--p-night-650:#323232;--p-night-600:#333;--p-night-550:#3a3a3a;--p-night-500:#444;--p-night-450:#4a4a4a;--p-night-400:#555;--p-night-350:#5a5a5a;--p-snow-050:#f2f2f2;--p-snow-100:#eee;--p-snow-200:#ccc;--p-snow-250:#bbb;--p-snow-300:#aaa;--p-snow-350:#999;--p-snow-400:#888;--p-snow-500:#777;--p-snow-600:#ddd;--p-white:#fff;--p-gray-050:#f6f7f9;--p-gray-100:#eef0f4;--p-gray-150:#e6e9ef;--p-gray-200:#dfe3ea;--p-gray-250:#d7dce4;--p-gray-300:#cfd4dd;--p-gray-400:#a8b0be;--p-gray-500:#7b828f;--p-ink-900:#14171c;--p-ink-700:#3c434e;--p-ink-500:#5c6472;--p-ink-400:#8a919e;--p-ink-450:#687080;--p-blue-400:#6fb2ff;--p-blue-450:#8ab4f8;--p-blue-500:#4a9eff;--p-blue-600:#1a6dd9;--p-blue-650:#1668d6;--p-blue-700:#0f57b8;--p-blue-100-light:#9ecbff;--p-amber-400:#ffb84a;--p-amber-300:#e0a030;--p-amber-350:#e0b84a;--p-amber-200:#f0c674;--p-amber-600:#c77800;--p-amber-700:#b26a00;--p-orange-500:#e8590c;--p-orange-600:#d24700;--p-green-500:#4caf50;--p-green-700:#1f8b3c;--p-red-400:#ff8a8a;--p-red-500:#ff6b6b;--p-red-550:#e5534b;--p-red-700:#c0362f;--p-red-800:#a12822;--p-wash-danger-bg:#3a1f1f;--p-wash-danger-border:#5a2f2f;--p-wash-info-bg:#1f2a3a;--p-wash-info-border:#2f4a5a;--p-wash-sync-bg:#26210f;--p-wash-sync-border:#4a3d14;--p-wash-banner-bg:#3a2f16;--paper-color-scheme:light;--paper:#faf7f0;--paper-ink:#1e1e1e;--paper-edge:#0000001a;--paper-cursor-bar:#4a9eff21;--paper-cursor-beat:#e8590c;--paper-highlight:#1a6dd9;--paper-selection:#4a9eff14;--paper-verdict-hit:#22bf56;--paper-verdict-timing:#d5920b;--paper-verdict-miss:#c41c1c;--paper-staff-line:#a5a5a5;--paper-bar-separator:#221;--paper-bar-number:#c80000;--paper-glyph:#000;--paper-glyph-secondary:#0006;--paper-score-info:#000;--sp-1:.25rem;--sp-2:.375rem;--sp-3:.5rem;--sp-4:.75rem;--sp-5:1rem;--sp-6:1.5rem;--sp-7:2rem;--r-sm:4px;--r-md:6px;--r-lg:10px;--r-pill:999px;--control-h:30px;--control-h-sm:26px;--control-h-lg:38px;--font-family:system-ui, sans-serif;--font-mono:monospace;--font-xs:.7rem;--font-ui-sm:.78rem;--font-ui:.85rem;--font-ui-lg:.95rem;--font-h2:1.1rem;--font-h1:1.25rem;--page-max:960px;--t-fast:.11s ease;--t-med:.18s cubic-bezier(.2, .8, .2, 1);--z-sticky:10;--z-popover:1200;--z-dialog:1300}@media (prefers-reduced-motion:reduce){:root{--t-fast:1ms linear;--t-med:1ms linear}}@media (pointer:coarse){:root{--control-h:40px;--control-h-sm:36px;--control-h-lg:44px}}[hidden]{display:none!important}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--surface-base:var(--p-gray-050);--surface-raised:var(--p-white);--surface-sunken:var(--p-gray-150);--surface-overlay:var(--p-white);--surface-hover:var(--p-gray-100);--surface-active:var(--p-gray-200);--border-subtle:var(--p-gray-150);--border-default:var(--p-gray-300);--border-strong:var(--p-gray-400);--text-1:var(--p-ink-900);--text-2:var(--p-ink-700);--text-3:var(--p-ink-500);--text-4:var(--p-ink-450);--text-on-accent:var(--p-white);--accent:var(--p-blue-650);--accent-hover:var(--p-blue-700);--accent-fill:var(--accent);--accent-fill-hover:var(--accent-hover);--accent-wash:#1668d61a;--accent-wash-strong:#1668d642;--focus-ring:var(--p-blue-650);--link:var(--p-blue-650);--sync:var(--p-amber-600);--sync-faint:#c7780029;--sync-wash:#c7780014;--sync-wash-border:#c7780059;--sync-confidence-l:42;--warning:var(--p-amber-700);--playhead:var(--p-orange-600);--playhead-glow:var(--p-orange-600);--success:var(--p-green-700);--danger:var(--p-red-700);--danger-hover:var(--p-red-800);--danger-wash:#c0362f14;--danger-wash-border:#c0362f4d;--info:var(--p-blue-700);--info-wash:#1668d614;--info-wash-border:#1668d647;--shadow-1:0 1px 2px #14192314;--shadow-2:0 4px 16px #1419231f;--shadow-3:0 12px 32px #1419232e;--canvas-ink:#14171ceb;--canvas-ink-soft:#14171c9e;--canvas-ink-faint:#14171c6b;--canvas-hairline:#14171c24;--canvas-card-bg:#fafafcf5;--canvas-card-border:#14171c2e;--canvas-pill-ring:#14171c4d;--canvas-track-bg:#e2e6eeeb;--canvas-dead-pill:#b9bec8;--canvas-analysis:#7850c8cc;--flow-lane-l:30;--flow-pill-neutral-l:34;--flow-verdict-l:44;--flow-pill-text-threshold:55;--flow-legend-accent:#b48c5ae6;--flow-string-line:#14171c57;--bar-hue-sat:75%;--bar-hue-l:45%;--bar-hue-a:.22}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--surface-base:var(--p-night-850);--surface-raised:var(--p-night-700);--surface-sunken:var(--p-night-780);--surface-overlay:var(--p-night-700);--surface-hover:var(--p-night-600);--surface-active:var(--p-night-550);--border-subtle:var(--p-night-600);--border-default:var(--p-night-500);--border-strong:var(--p-night-350);--text-1:var(--p-snow-100);--text-2:var(--p-snow-200);--text-3:var(--p-snow-300);--text-4:var(--p-snow-350);--text-on-accent:var(--p-white);--accent:var(--p-blue-500);--accent-hover:var(--p-blue-400);--accent-fill:var(--p-blue-600);--accent-fill-hover:var(--p-blue-700);--accent-wash:#4a9eff1a;--accent-wash-strong:#4a9eff52;--focus-ring:var(--p-blue-500);--link:var(--p-blue-450);--sync:var(--p-amber-400);--sync-faint:#ffb84a59;--sync-wash:var(--p-wash-sync-bg);--sync-wash-border:var(--p-wash-sync-border);--sync-confidence-l:55;--warning:var(--p-amber-300);--playhead:var(--p-orange-500);--playhead-glow:var(--p-orange-500);--success:var(--p-green-500);--danger:var(--p-red-400);--danger-hover:var(--p-red-500);--danger-wash:var(--p-wash-danger-bg);--danger-wash-border:var(--p-wash-danger-border);--info:var(--p-blue-100-light);--info-wash:var(--p-wash-info-bg);--info-wash-border:var(--p-wash-info-border);--shadow-1:0 1px 2px #0000004d;--shadow-2:0 4px 12px #0006;--shadow-3:0 8px 28px #00000080;--canvas-ink:#ffffffd9;--canvas-ink-soft:#ffffffb3;--canvas-ink-faint:#ffffff8c;--canvas-hairline:#ffffff2e;--canvas-card-bg:#141414eb;--canvas-card-border:#ffffff40;--canvas-pill-ring:#00000073;--canvas-track-bg:#0c0c0cd1;--canvas-dead-pill:#555;--canvas-analysis:#b48cffb3;--flow-lane-l:72;--flow-pill-neutral-l:84;--flow-verdict-l:58;--flow-pill-text-threshold:55;--flow-legend-accent:#e0c8b0e6;--flow-string-line:#ffffff4d;--paper-color-scheme:dark;--paper:#1d2025;--paper-ink:#e6e6e6;--paper-edge:#ffffff1a;--paper-cursor-bar:#4a9eff33;--paper-cursor-beat:var(--p-orange-500);--paper-highlight:#5aa9ff;--paper-selection:#4a9eff24;--paper-verdict-hit:#49df7b;--paper-verdict-timing:#f4b434;--paper-verdict-miss:#e44444;--paper-staff-line:#5f6570;--paper-bar-separator:#c3c7ce;--paper-bar-number:#ff7a7a;--paper-glyph:#e6e6e6;--paper-glyph-secondary:#e6e6e673;--paper-score-info:#e6e6e6;--bar-hue-sat:75%;--bar-hue-l:45%;--bar-hue-a:.22}*,:before,:after{box-sizing:border-box}button,select,input,textarea,meter{font:inherit}button,select,input[type=text],input[type=number],input[type=search]{height:var(--control-h);padding:0 var(--sp-3);font-size:var(--font-ui);color:var(--text-1);background:var(--surface-raised);border:1px solid var(--border-default);border-radius:var(--r-sm);cursor:pointer;transition:background var(--t-fast), border-color var(--t-fast), color var(--t-fast)}button:disabled,select:disabled,input:disabled{opacity:.5;cursor:not-allowed}:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}.sr-only{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}#skipLink{left:var(--sp-3);z-index:var(--z-dialog);padding:var(--sp-2) var(--sp-4);background:var(--surface-raised);color:var(--text-1);border:1px solid var(--border-strong);border-radius:var(--r-sm);transition:top var(--t-fast);text-decoration:none;position:absolute;top:-3rem}#skipLink:focus{top:var(--sp-3)}#progressCanvas:focus-visible{outline:2px solid var(--focus-ring);outline-offset:-2px;border-radius:var(--r-sm)}input[type=checkbox],input[type=radio],input[type=range],meter{accent-color:var(--accent)}.btn-primary{background:var(--accent-fill);border-color:var(--accent-fill);color:var(--text-on-accent)}.btn-ghost{background:0 0;border-color:#0000}.nav-dropdown,.synth-track-list,.listen-popover-panel,.toolbar-popover-panel,.tuner-dialog{background:var(--surface-overlay);border:1px solid var(--border-default);border-radius:var(--r-md);box-shadow:var(--shadow-2);z-index:var(--z-popover)}#appBar{border-bottom:1px solid var(--border-subtle);flex-wrap:nowrap;flex:none;align-items:center;gap:1rem;min-width:0;padding:.5rem 1rem;display:flex}#appBrand{white-space:nowrap;color:var(--text-1);align-items:center;gap:.5rem;font-weight:600;text-decoration:none;display:flex}#appLogo svg{width:1.5rem;height:1.5rem}#appBarRight{align-items:center;gap:.75rem;margin-left:auto;display:flex}#authBar{font-size:var(--font-ui);color:var(--text-2);align-items:center;gap:.75rem;display:flex}#authBar[hidden]{display:none}#authBar button{white-space:nowrap;height:var(--control-h);padding:0 var(--sp-4)}#tunerButton{width:2rem;height:2rem;color:var(--text-1);background:var(--surface-raised);border:1px solid var(--border-default);cursor:pointer;border-radius:4px;justify-content:center;align-items:center;padding:0;display:inline-flex}#tunerButton svg{width:1.1rem;height:1.1rem}#appNav{align-items:center;gap:1rem;display:flex}.nav-menu{position:relative}.nav-dropdown{min-width:12rem;margin:0;padding:.25rem 0;list-style:none;position:absolute;top:100%;left:0}.nav-dropdown[hidden]{display:none}.nav-trigger{font-size:var(--font-ui-lg);color:var(--text-1);cursor:pointer;background:0 0;border:none;padding:.4rem .75rem}.nav-trigger:focus-visible{color:var(--accent)}.nav-item{width:100%;font-size:var(--font-ui);text-align:left;color:var(--text-1);cursor:pointer;background:0 0;border:none;padding:.5rem .75rem;display:block}.nav-item:focus-visible{color:var(--accent);background:var(--accent-wash)}.nav-trigger[aria-current=page],.nav-trigger.is-current{box-shadow:inset 0 -2px 0 var(--accent);font-weight:600}.nav-item[aria-current=page]{box-shadow:inset 3px 0 0 var(--accent);font-weight:600}.app-menu{display:none}.theme-menu .nav-dropdown{min-width:9rem;left:auto;right:0}.theme-menu-item{align-items:center;gap:var(--sp-3);display:flex}.theme-menu-item:before{content:"";width:1em;color:var(--accent);text-align:center}.theme-menu-item[aria-checked=true]:before{content:"✓"}#appMenuButton{width:2.25rem;height:2.25rem;color:var(--text-1);cursor:pointer;justify-content:center;align-items:center;padding:0;display:inline-flex}#appMenuButton svg{width:1.25rem;height:1.25rem}html,body{background:var(--surface-base);height:100%;color:var(--text-1);font-family:var(--font-family);margin:0}body{flex-direction:column;height:100dvh;display:flex}#pageHost,#playerPage{flex-direction:column;flex:1;min-height:0;display:flex}#pageHost[hidden],#playerPage[hidden],#songSearchPage[hidden],#settingsPage[hidden]{display:none}#playerPage [hidden],#settingsPage [hidden]{display:none!important}#controls{border-bottom:1px solid var(--border-subtle);align-items:center;gap:1rem;padding:.5rem 1rem;display:flex}#nowPlaying{flex-direction:column;flex:0 auto;min-width:0;max-width:22rem;display:flex}#nowPlaying[hidden]{display:none}#songTitle{font-size:var(--font-ui-lg);color:var(--text-1);text-overflow:ellipsis;white-space:nowrap;margin:0;font-weight:600;line-height:1.3;overflow:hidden}.now-playing-title{max-width:100%;font:inherit;color:inherit;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;background:0 0;border:none;padding:0;overflow:hidden}.now-playing-title:hover{text-decoration:underline}.now-playing-meta{min-width:0;font-size:var(--font-ui-sm);color:var(--text-2);white-space:nowrap;display:flex;overflow:hidden}#songMeta{text-overflow:ellipsis;overflow:hidden}#bpmReadout{font-variant-numeric:tabular-nums;flex:none}#bpmReadout:empty{display:none}#songMeta:not([hidden])~#bpmReadout:before{content:" · "}.segmented{border:1px solid var(--border-default);border-radius:var(--r-pill);flex:none;display:inline-flex;overflow:hidden}.segmented button{height:var(--control-h-lg);padding:0 var(--sp-5);color:var(--text-2);background:0 0;border:none;border-radius:0;font-weight:500}.segmented button+button{border-left:1px solid var(--border-default)}.segmented button[aria-pressed=true]{background:var(--accent-fill);color:var(--text-on-accent)}#transport{align-items:center;gap:.375rem;display:flex}.transport-btn{border-radius:var(--r-sm);justify-content:center;align-items:center;width:2.25rem;height:2.25rem;padding:0;display:inline-flex}.transport-btn svg{width:1.15rem;height:1.15rem}#playPause{color:var(--text-on-accent);background:var(--accent-fill);border-color:var(--accent-fill)}#playPause:disabled{background:var(--accent-fill);border-color:var(--accent-fill)}#syncModeButton{height:var(--control-h-lg);padding:0 var(--sp-5);border-radius:var(--r-pill)}#autoSyncButton,#syncFromAnchorsButton,#realignRangeButton,#clearRangeButton,#undoSync,#resetSync{height:var(--control-h);padding:0 var(--sp-4)}#autoSyncButton{color:var(--text-on-accent);background:var(--sync);border-color:var(--sync);font-weight:600}#hitScore{font-variant-numeric:tabular-nums}#sectionReadout{align-items:center;gap:var(--sp-2);font-size:var(--font-ui);color:var(--text-3);white-space:nowrap;display:inline-flex}#clearSectionButton{height:var(--control-h-sm);padding:0 var(--sp-3);font-size:var(--font-ui-sm)}.panel{padding:var(--sp-3) var(--sp-5);background:var(--surface-sunken);border-bottom:1px solid var(--border-subtle)}#syncStrip{background:var(--sync-wash);border-bottom-color:var(--sync-wash-border);flex-wrap:wrap;align-items:center;gap:1rem;display:flex}#syncStrip #syncPanelPrompt{font-size:var(--font-ui);color:var(--sync);flex:1;margin:0}#syncStrip #syncPanelPrompt.is-error{color:var(--danger)}#syncHelp{padding:var(--sp-3) var(--sp-5);border-bottom:1px solid var(--border-subtle);font-size:var(--font-ui-sm);color:var(--text-3)}#syncHelp ul{margin:0;padding-left:1.25rem}#syncHelpButton{width:var(--control-h);border-radius:50%;flex:none;padding:0;font-weight:700}#syncHelpButton[aria-expanded=true]{color:var(--sync);border-color:var(--sync)}#syncHelp li{margin-bottom:.25rem}#practiceControls{border-bottom:1px solid var(--border-subtle);font-size:var(--font-ui);color:var(--text-3);flex-wrap:wrap;align-items:center;gap:.75rem;padding:.5rem 1rem;display:flex}#practiceControls label{align-items:center;gap:.35rem;display:flex}.toolbar-spacer{flex:auto}#controls label{font-size:var(--font-ui);color:var(--text-2);white-space:nowrap;align-items:center;gap:.35rem;display:flex}#practiceControls{gap:var(--sp-5)}#practiceControls [role=group]{align-items:center;gap:var(--sp-4);flex-wrap:wrap;display:flex}#riffRepeater:not([hidden]){padding-left:var(--sp-5);border-left:1px solid var(--border-subtle)}#repReadout{font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--text-2)}#repReadout:empty{display:none}#volumeControl{align-items:center;gap:var(--sp-2);color:var(--text-2);display:inline-flex}#volumeControl .volume-icon{flex:none;width:18px;height:18px}#volume{width:96px;accent-color:var(--accent)}#volumeReadout{min-width:4ch;font-size:var(--font-ui-sm);font-variant-numeric:tabular-nums;text-align:right}#audioSourceStatus{font-size:var(--font-ui-sm);color:var(--text-3)}.synth-tracks{align-items:center;display:flex;position:relative}.synth-tracks-trigger{white-space:nowrap}.synth-track-list{flex-direction:column;gap:.4rem;min-width:10rem;margin:0;padding:.5rem .75rem;display:flex;position:absolute;top:100%;left:0}.synth-track-list[hidden]{display:none}.synth-track-list label{white-space:nowrap;align-items:center;gap:.3rem;display:flex}.toolbar-popover{align-items:center;display:flex;position:relative}.toolbar-popover-trigger{align-items:center;gap:var(--sp-2);white-space:nowrap;display:inline-flex}.toolbar-popover-trigger:after{content:"▾";color:var(--text-3);font-size:.75em}.toolbar-popover-trigger[aria-expanded=true]{border-color:var(--accent)}.toolbar-popover-panel{gap:var(--sp-4);min-width:17rem;padding:var(--sp-5);font-size:var(--font-ui);color:var(--text-2);flex-direction:column;margin:0;display:flex;position:absolute;top:calc(100% + 4px);left:0}.toolbar-popover-panel[hidden]{display:none}#practiceControls .toolbar-field{align-items:stretch;gap:var(--sp-2);flex-direction:column;display:flex}.toolbar-field select{width:100%}#audioSourceStatus:empty{display:none}.toolbar-popover-panel .synth-tracks{flex-direction:column;align-items:stretch}.toolbar-popover-panel .synth-track-list{margin-top:var(--sp-2);box-shadow:none;position:static}#statusCluster{align-items:center;gap:var(--sp-3);display:flex}.status-chip{align-items:center;gap:var(--sp-2);height:1.75rem;padding:0 var(--sp-4);font-size:var(--font-ui-sm);color:var(--text-2);white-space:nowrap;background:var(--surface-raised);border:1px solid var(--border-subtle);border-radius:var(--r-pill);display:inline-flex}.status-chip:empty{display:none}.mic-dot{background:var(--text-4);border-radius:50%;flex:none;width:8px;height:8px}.mic-chip[data-state=on] .mic-dot{background:var(--success)}.mic-chip[data-state=no-signal] .mic-dot{background:var(--danger)}#listenDebugPanel{left:auto;right:0}.listen-status-strip{flex-wrap:wrap;align-items:center;column-gap:.6rem;padding-inline:1rem;display:flex}.listen-status-strip>*{margin-block:.4rem}#inputLatencyOffset{width:4.5rem}#inputLevelMeter{width:5rem;height:.8rem}#listenBleedHint{font-size:var(--font-ui-sm);color:var(--warning);display:none}.listen-status-strip.bleed-suspected #listenBleedHint{display:inline}#latencyUncalibratedHint{font-size:var(--font-ui-sm);color:var(--warning);display:none}.settings-page.latency-uncalibrated #latencyUncalibratedHint{display:inline}.listen-offset-banner{background:var(--sync-wash);border:1px solid var(--warning);color:var(--sync);font-size:var(--font-ui-sm);border-radius:4px;flex-basis:100%;align-items:center;gap:.5rem;padding:.4rem .6rem;display:flex}.listen-offset-banner[hidden]{display:none}.listen-offset-banner button{height:var(--control-h-sm);padding:0 var(--sp-3);font-size:var(--font-ui-sm)}.listen-popover{align-items:center;display:flex;position:relative}.listen-popover-trigger{white-space:nowrap}.listen-popover-panel{min-width:14rem;font-size:var(--font-ui-sm);flex-direction:column;gap:.5rem;margin:0;padding:.6rem .8rem;display:flex;position:absolute;top:100%;left:0}.listen-popover-panel[hidden]{display:none}.listen-popover-panel label{white-space:nowrap;align-items:center;gap:.4rem;display:flex}.listen-debug-row{color:var(--text-2);white-space:nowrap}.listen-debug-histogram-label{color:var(--text-4);font-size:var(--font-xs);margin-top:.2rem}.listen-debug-histogram{background:var(--surface-sunken);border:1px solid var(--border-subtle)}#listenStatus,#settingsStatus{font-size:var(--font-ui-sm);color:var(--text-3);flex-basis:100%}#listenStatus:empty,#settingsStatus:empty{display:none}#listenStatus details{margin-top:.2rem}#listenStatus summary{cursor:pointer;color:var(--link)}#listenStatus details p{color:var(--text-2);margin:.3rem 0 0}.session-summary{padding:var(--sp-4);background:var(--surface-raised);border:1px solid var(--border-default);border-left:3px solid var(--success);border-radius:var(--r-md);font-size:var(--font-ui-sm);color:var(--text-3);flex-direction:column;flex-basis:100%;gap:.4rem;display:flex}.session-summary-headline{flex-wrap:wrap;align-items:baseline;gap:.5rem;display:flex}.session-summary-scope{color:var(--text-4);text-transform:uppercase;letter-spacing:.04em;font-size:var(--font-xs)}.session-summary-headline strong{font-size:var(--font-ui-lg);color:var(--text-1)}.session-summary-stats{color:var(--text-2);flex-wrap:wrap;gap:.75rem;display:flex}.run-history{font-size:var(--font-ui-sm);color:var(--text-3);flex-direction:column;flex-basis:100%;gap:.4rem;display:flex}.run-history:empty{display:none}.practice-trend{align-items:center;gap:.6rem;display:flex}.practice-trend-label{white-space:nowrap;color:var(--text-2)}.practice-trend-chart{flex:auto;min-width:60px;height:28px;overflow:visible}.practice-trend-line{fill:none;vector-effect:non-scaling-stroke;stroke-width:1.5px;stroke-linejoin:round;stroke-linecap:round}.practice-trend-line--played{stroke:var(--text-4)}.practice-trend-line--green{stroke:var(--success)}.practice-heatmap{border:1px solid var(--border-subtle);border-radius:var(--r-sm);gap:1px;height:12px;display:flex;overflow:hidden}.practice-heatmap-cell{flex:1 1 0;min-width:2px}.practice-weak-sections{flex-wrap:wrap;gap:.35rem;display:flex}.practice-drill-button{height:auto;min-height:var(--control-h-sm);font-size:var(--font-ui-sm);background:var(--surface-raised);color:var(--text-2);border:1px solid var(--border-default);border-radius:var(--r-sm);white-space:nowrap;cursor:pointer;transition:background var(--t-fast), border-color var(--t-fast);padding:.15rem .5rem}.progress-page .progress-loading,.progress-page .progress-error,.progress-page .progress-empty{color:var(--text-3);font-size:var(--font-ui);max-width:46ch}.progress-section{gap:var(--sp-3);flex-direction:column;display:flex}.progress-section-title{font-size:var(--font-ui);color:var(--text-3);text-transform:uppercase;letter-spacing:.04em;margin:0;font-weight:600}.progress-stats{gap:var(--sp-6);flex-wrap:wrap;display:flex}.progress-stat{gap:var(--sp-1);flex-direction:column;display:flex}.progress-stat-value{color:var(--text-1);font-size:1.6rem;font-weight:650;line-height:1}.progress-stat-label{font-size:var(--font-ui-sm);color:var(--text-4)}.progress-heatmap{gap:var(--sp-3);padding-bottom:var(--sp-2);align-items:flex-start;display:flex;overflow-x:auto}.progress-heatmap-weekdays{flex-direction:column;flex:none;gap:3px;display:flex}.progress-heatmap-weekdays span{height:13px;font-size:var(--font-xs);color:var(--text-4);line-height:13px}.progress-heatmap-cols{flex:none;gap:3px;display:flex}.progress-heatmap-col{flex-direction:column;flex:none;gap:3px;display:flex}.progress-heatmap-cell{background:color-mix(in srgb, var(--text-4) 22%, transparent);border-radius:2px;width:13px;height:13px}.progress-heatmap-cell.is-today{outline:1px solid var(--text-3);outline-offset:1px}.progress-goal-controls{align-items:center;gap:var(--sp-3);display:flex}.progress-goal-label{font-size:var(--font-ui-sm);color:var(--text-2)}.progress-goal-input{width:3.5rem;height:var(--control-h-sm);padding:0 var(--sp-2);text-align:center;background:var(--surface-raised);color:var(--text-1);border:1px solid var(--border-default);border-radius:var(--r-sm)}.progress-goal-bar{border-radius:var(--r-pill);background:var(--surface-sunken);height:10px;overflow:hidden}.progress-goal-fill{border-radius:inherit;background:var(--text-4);height:100%;transition:width var(--t-med,.2s)}.progress-goal-fill.is-met{background:var(--success)}.progress-goal-caption,.progress-trend-caption{font-size:var(--font-ui-sm);color:var(--text-3);margin:0}.progress-trend-wrap{gap:var(--sp-3);flex-direction:column;display:flex}.progress-trend{gap:var(--sp-3);grid-template-rows:minmax(0,1fr);grid-template-columns:auto 1fr;height:96px;display:grid}.progress-trend-axis{font-size:var(--font-xs);color:var(--text-3);text-align:right;font-variant-numeric:tabular-nums;flex-direction:column;justify-content:space-between;margin-block:-.5em;line-height:1;display:flex}.progress-trend-plot{min-width:0}.progress-trend-chart{width:100%;height:100%;display:block;overflow:visible}.progress-trend-grid{stroke:var(--border-subtle);stroke-width:1px;vector-effect:non-scaling-stroke}.progress-legend{align-items:center;gap:var(--sp-2) var(--sp-5);font-size:var(--font-ui-sm);color:var(--text-3);flex-wrap:wrap;display:flex}.progress-legend-item{align-items:center;gap:var(--sp-2);display:inline-flex}.progress-legend-note{color:var(--text-4)}.progress-legend-line{border-radius:1px;width:1.25rem;height:2px;display:inline-block}.progress-legend-line--played{background:var(--text-4)}.progress-legend-line--green{background:var(--success)}.progress-trend-line{fill:none;vector-effect:non-scaling-stroke;stroke-width:1.5px;stroke-linejoin:round;stroke-linecap:round}.progress-trend-line--played{stroke:var(--text-4)}.progress-trend-line--green{stroke:var(--success)}#serverStatus{background:var(--danger-wash);border-bottom:1px solid var(--danger-wash-border);font-size:var(--font-ui);color:var(--danger);padding:.5rem 1rem}#serverStatus[hidden]{display:none}#mySongsPage,#songSearchPage,.song-search{flex-direction:column;flex:1;min-height:0;display:flex}.progress-page.page{gap:var(--sp-6);flex-direction:column;flex:1;min-height:0;display:flex;overflow-y:auto}.page-header{align-items:center;gap:var(--sp-4);width:100%;max-width:var(--page-max);padding:var(--sp-5) var(--sp-6) 0;margin-inline:auto;display:flex}.page-header[hidden]{display:none}.page-title{font-size:var(--font-h1);color:var(--text-1);margin:0;font-weight:600}.page-back{height:var(--control-h);padding:0 var(--sp-3);font-size:var(--font-ui);color:var(--text-3)}#performResults{gap:var(--sp-3);flex-direction:column;display:flex}#performResults:has(>#sessionSummary[hidden]):has(>#runHistory:empty){display:none}.settings-page{gap:var(--sp-5);width:100%;max-width:44rem;min-height:0;padding:var(--sp-5) var(--sp-6) var(--sp-6);flex-direction:column;flex:1;margin-inline:auto;display:flex;overflow-y:auto}.settings-note{font-size:var(--font-ui-sm);color:var(--text-3);margin:0}.settings-group{align-items:flex-start;gap:var(--sp-4);padding:var(--sp-4) var(--sp-5) var(--sp-5);background:var(--surface-raised);border:1px solid var(--border-subtle);border-radius:var(--r-md);flex-direction:column;margin:0;display:flex}.settings-group legend{float:left;width:100%;color:var(--text-1);padding:0;font-weight:600}.settings-group label,.settings-row{align-items:center;gap:var(--sp-3);max-width:100%;font-size:var(--font-ui);color:var(--text-2);flex-wrap:wrap;display:flex}.settings-group select{min-width:0;max-width:100%}.settings-hint{font-size:var(--font-ui-sm);color:var(--text-4);margin:0}.page{width:100%;max-width:var(--page-max);padding:var(--sp-6);margin-inline:auto}#library{gap:var(--sp-3);width:100%;min-height:0;max-width:var(--page-max);padding:var(--sp-5) var(--sp-6) var(--sp-6);flex-direction:column;flex:1;margin-inline:auto;display:flex;overflow-y:auto}.library-toolbar{align-items:center;gap:var(--sp-2);flex-wrap:wrap;display:flex}.library-filter{width:100%;max-width:24rem}.library-filter[hidden]{display:none}.library-list{gap:var(--sp-3);flex-direction:column;display:flex}.library-status{min-width:0;font-size:var(--font-ui-sm);color:var(--text-4);overflow-wrap:anywhere;flex:12rem}.library-select{width:1.1rem;height:1.1rem;margin:0 var(--sp-2) 0 var(--sp-1);accent-color:var(--accent);cursor:pointer;flex:none}.library-count{font-size:var(--font-ui-sm);color:var(--text-4);padding-bottom:var(--sp-2)}.library-empty{font-size:var(--font-ui-lg);color:var(--text-4)}.library-item{background:var(--surface-raised);border:1px solid var(--border-default);border-radius:var(--r-md);width:100%;box-shadow:var(--shadow-1);transition:transform var(--t-fast), border-color var(--t-fast), box-shadow var(--t-fast);justify-content:space-between;align-items:center;display:flex;position:relative}.library-item.active{border-color:var(--accent)}.library-item-title-group{flex-direction:column;flex:1;align-items:flex-start;min-width:0;display:flex}.library-item-title{width:100%;height:auto;padding:var(--sp-3) var(--sp-4) .15rem;font-size:var(--font-ui-lg);color:var(--text-1);text-align:left;background:0 0;border:none}.library-item-now{margin:0 var(--sp-4) var(--sp-1);padding:0 var(--sp-2);font-size:var(--font-ui-sm);color:var(--text-on-accent);background:var(--accent-fill);border-radius:var(--r-pill);font-weight:600}.library-item-suggest{height:auto;margin:0 var(--sp-4) var(--sp-3);font-size:var(--font-ui-sm);color:var(--accent);text-align:left;background:0 0;border:none;padding:0}.library-split-all{height:auto;padding:var(--sp-1) var(--sp-3);font-size:var(--font-ui-sm);margin-left:auto;font-weight:400}.library-item-meta{padding:0 var(--sp-4) var(--sp-3);font-size:var(--font-ui-sm);color:var(--text-4);font-variant-numeric:tabular-nums}.library-item-action{width:32px;height:32px;margin-right:var(--sp-1);font-size:var(--font-ui-lg);color:var(--text-3);border-radius:var(--r-sm);opacity:0;transition:opacity var(--t-fast);background:0 0;border:1px solid #0000;flex:none;padding:0}.library-item-action:last-child{margin-right:var(--sp-3)}.library-item:focus-within .library-item-action,.library-item-action:focus-visible{opacity:1}.library-folder{flex-direction:column;display:flex}.library-folder-summary{align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-1);font-size:var(--font-ui-lg);color:var(--text-1);cursor:pointer;border-radius:var(--r-md);font-weight:600;list-style:none;display:flex}.library-folder-summary::-webkit-details-marker{display:none}.library-folder-summary:before{content:"▸";width:1em;color:var(--text-4);transition:transform var(--t-fast);display:inline-block}.library-folder[open]>.library-folder-summary:before{transform:rotate(90deg)}.library-folder-summary:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.library-folder-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.library-folder-count{font-size:var(--font-ui-sm);color:var(--text-4);font-weight:400}.library-folder-songs{gap:var(--sp-2);padding:var(--sp-1) 0 var(--sp-3) var(--sp-5);flex-direction:column;display:flex}.song-edit-lyrics{border:1px solid var(--border-subtle);border-radius:var(--r-md);flex-wrap:wrap;align-items:center;gap:.5rem;margin:0;padding:.75rem;display:flex}.song-edit-lyrics legend{font-size:var(--font-ui-sm);color:var(--text-2);padding:0 .25rem}.song-edit-lyrics-status{font-size:var(--font-ui);color:var(--text-3);flex:100%;margin:0}.song-edit-footer{justify-content:flex-end}#waveformPanel{border-bottom:1px solid var(--border-subtle);flex-direction:column;display:flex}#waveformPanel[hidden]{display:none}.panel-header{background:var(--surface-sunken);font-size:var(--font-ui-sm);color:var(--text-2);align-items:baseline;gap:.5rem;padding:.35rem 1rem;font-weight:600;display:flex}.panel-header[hidden]{display:none}.panel-header #waveformHint{font-weight:400;font-size:var(--font-ui-sm);color:var(--text-4)}.panel-close{font-size:var(--font-ui-lg);color:var(--text-3);cursor:pointer;background:0 0;border:none;border-radius:4px;margin-left:auto;padding:.15rem .5rem;line-height:1}.panel-close:focus-visible{color:var(--text-1);background:var(--surface-hover)}#waveformStage{background:var(--surface-sunken);box-shadow:inset 0 0 0 1px var(--border-subtle);position:relative}#syncEditor{touch-action:none;cursor:pointer;width:100%;height:150px;display:block}#waveformOverlay{font-size:var(--font-ui);color:var(--text-4);text-align:center;pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}#waveformOverlay.is-error{color:var(--danger)}#waveformOverlay[hidden]{display:none}#viewStack{flex-direction:column;flex:1;min-height:0;display:flex}#viewStack.split-view #viewport{flex:0 auto;max-height:65%;overflow-y:auto}#viewStack.split-view #flowStage{border-top:1px solid var(--border-subtle)}#viewStack.flow-first #flowStage{border-top:0;border-bottom:1px solid var(--border-subtle);order:-1}#viewStack.split-view.flow-first #viewport{max-height:35%}#viewport{background:var(--surface-sunken);min-height:0;padding:var(--sp-4);flex:1;overflow:auto hidden}#alphaTab{color-scheme:var(--paper-color-scheme);background:var(--paper);width:max-content;min-height:100%;color:var(--paper-ink);border:1px solid var(--paper-edge);border-radius:var(--r-lg);box-shadow:var(--shadow-2);position:relative}#notationLegendAnchor{height:0;position:relative}#notationHandLegend{right:calc(var(--sp-4) + 10px);bottom:calc(var(--sp-4) + 22px);z-index:1000;pointer-events:none;position:absolute}#flowStage{background:var(--surface-base);flex:1;min-height:0;position:relative}#flowStage[hidden]{display:none}#flowCanvas{touch-action:manipulation;width:100%;height:100%;display:block}#flowOverlay{font-size:var(--font-ui);color:var(--text-4);text-align:center;pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}#flowOverlay:empty{display:none}#lyricsStrip{padding:var(--sp-2) var(--sp-5);border-top:1px solid var(--border-subtle);background:var(--surface-base);text-align:center;flex:none;order:1;line-height:1.3}#lyricsStrip[hidden]{display:none}#lyricsStrip .lyrics-current{min-height:1.3em;font-size:var(--font-h1);color:var(--text-3);font-weight:600}#lyricsStrip .lyrics-current .sung{color:var(--playhead)}#lyricsStrip .lyrics-next{min-height:1.3em;font-size:var(--font-ui-lg);color:var(--text-4)}.lyrics-offset{align-items:center;gap:var(--sp-1);display:inline-flex}.lyrics-offset[hidden]{display:none}#lyricsOffsetReadout{text-align:center;font-variant-numeric:tabular-nums;min-width:3.6em;color:var(--text-2)}.lyrics-dialog{color:var(--text-1);background:var(--surface-raised);border:1px solid var(--border-default);border-radius:6px;width:min(36rem,100vw - 2rem);padding:0}.lyrics-dialog::backdrop{background:#0009}.lyrics-dialog-inner{flex-direction:column;gap:.75rem;padding:1rem;display:flex}.lyrics-dialog-header{justify-content:space-between;align-items:center;display:flex}.lyrics-dialog-title{font-weight:600}.lyrics-dialog-close{font-size:var(--font-h2);padding:.15rem .5rem;line-height:1}.lyrics-dialog-form{flex-wrap:wrap;align-items:end;gap:.5rem;display:flex}.lyrics-dialog-form label{font-size:var(--font-ui-sm);color:var(--text-2);flex-direction:column;flex:10rem;gap:.2rem;display:flex}.lyrics-dialog-length{font-size:var(--font-ui);color:var(--text-2);font-variant-numeric:tabular-nums;margin:0}.lyrics-dialog-status:empty{display:none}.lyrics-dialog-status{font-size:var(--font-ui);color:var(--text-3);margin:0}.lyrics-dialog-results{flex-direction:column;gap:.4rem;max-height:min(50vh,24rem);margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.lyrics-dialog-results>li{flex:none}.lyrics-dialog-result{text-align:left;flex-direction:column;align-items:flex-start;gap:.15rem;width:100%;height:auto;padding:.5rem .75rem;display:flex}.lyrics-dialog-result-title{font-weight:600}.lyrics-dialog-result-detail,.lyrics-dialog-result-preview{font-size:var(--font-ui-sm);color:var(--text-3)}.lyrics-dialog-result-preview{font-style:italic}.lyrics-dialog-badge{font-size:var(--font-ui-sm);color:var(--playhead)}.lyrics-dialog-footer{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.lyrics-dialog-credit{font-size:var(--font-ui-sm);color:var(--text-4)}.count-in-overlay{z-index:var(--z-popover);pointer-events:none;font-variant-numeric:tabular-nums;color:var(--playhead);text-shadow:0 2px 24px var(--surface-base), 0 0 6px var(--surface-base);justify-content:center;align-items:center;font-size:clamp(4rem,18vh,9rem);font-weight:700;line-height:1;display:flex;position:fixed;inset:0}#progressBar{background:var(--surface-base);flex:none;height:68px;padding:4px 10px}#progressBar[hidden]{display:none}#progressCanvas{touch-action:none;cursor:pointer;width:100%;height:100%;display:block}.bar-indicator{z-index:900;pointer-events:none;box-sizing:border-box;border-radius:2px;position:absolute}.bar-indicator-selected{border:2px solid var(--sync);background:color-mix(in srgb, var(--sync) 12%, transparent)}.bar-indicator-next{border:2px dashed var(--sync);opacity:.5}.bar-indicator-confidence{background:hsla(var(--bar-hue,0), var(--bar-hue-sat), var(--bar-hue-l), var(--bar-hue-a))}.bar-indicator-loop{background:var(--accent-wash-strong)}.note-verdict{--note-verdict-color:var(--paper-verdict-hit);z-index:900;pointer-events:none;box-sizing:border-box;border:2px solid var(--note-verdict-color);background:color-mix(in srgb, var(--note-verdict-color) 22%, transparent);border-radius:999px;position:absolute}.note-verdict-timing{--note-verdict-color:var(--paper-verdict-timing)}.note-verdict-miss{--note-verdict-color:var(--paper-verdict-miss)}.note-verdict[data-timing]:after{color:var(--note-verdict-color);font-size:12px;font-weight:700;line-height:1;position:absolute;top:50%;transform:translateY(-50%)}.note-verdict[data-timing=early]:after{content:"◂";right:100%}.note-verdict[data-timing=late]:after{content:"▸";left:100%}.at-cursor-bar{background:var(--paper-cursor-bar)}.at-cursor-beat{background:var(--paper-cursor-beat)}.at-highlight,.at-highlight *{fill:var(--paper-highlight);stroke:var(--paper-highlight)}.at-selection div{background:var(--paper-selection)}.song-search{gap:var(--sp-5);width:100%;max-width:var(--page-max);padding:var(--sp-5) var(--sp-6) 0;margin-inline:auto;overflow-y:auto}.song-search-intro{justify-content:space-between;align-items:center;gap:var(--sp-4);flex-wrap:wrap;display:flex}.song-search-intro-text{font-size:var(--font-ui);color:var(--text-3);margin:0}.song-search.dragover{outline:2px dashed var(--accent);outline-offset:-6px;background:var(--accent-wash)}.song-search-idle{font-size:var(--font-ui-lg);color:var(--text-4)}.song-search-form{flex-wrap:wrap;align-items:flex-end;gap:.75rem;display:flex}.song-search-form label{font-size:var(--font-ui-sm);color:var(--text-2);flex-direction:column;gap:.25rem;display:flex}.song-search-form input{font-size:var(--font-ui-lg)}.song-search-status{min-height:1.2em;font-size:var(--font-ui-sm);color:var(--text-4)}.song-search-results{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:1rem;display:grid}.song-search-step{align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-4);flex-wrap:wrap;display:flex}.song-search-step-number{width:1.5rem;height:1.5rem;font-size:var(--font-ui);color:var(--text-on-accent);background:var(--accent-fill);border-radius:50%;justify-content:center;align-items:center;font-weight:700;display:inline-flex}.song-search-column h3{font-size:var(--font-ui-lg);color:var(--text-1);margin:0}.song-search-step-hint{font-size:var(--font-ui);color:var(--text-3)}.song-search-list{flex-direction:column;gap:.5rem;display:flex}.song-search-empty{font-size:var(--font-ui);color:var(--text-4)}.song-search-row{align-items:center;gap:var(--sp-4);padding:var(--sp-3) var(--sp-4);background:var(--surface-raised);border:1px solid var(--border-default);border-radius:var(--r-lg);cursor:pointer;display:flex}.song-search-row.selected{background:var(--accent-wash);border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.song-search-radio{width:1.1rem;height:1.1rem;accent-color:var(--accent-fill);cursor:pointer;flex:none;margin:0}.song-search-row:has(.song-search-radio:focus-visible){outline:2px solid var(--accent);outline-offset:2px}.song-search-radio:focus-visible{outline:none}.song-search-video-media{flex:none;width:6rem;height:3.4rem;position:relative}.song-search-duration{z-index:1;font-size:var(--font-xs);font-variant-numeric:tabular-nums;color:#fff;pointer-events:none;background:#000000bf;border-radius:3px;padding:0 .3rem;position:absolute;bottom:3px;right:3px}.song-search-thumb{object-fit:cover;border-radius:2px;width:100%;height:100%}.song-search-preview{border:none;border-radius:2px;width:100%;height:100%}.song-search-play{color:#fff;cursor:pointer;background:#00000059;border:none;border-radius:2px;justify-content:center;align-items:center;padding:0;display:flex;position:absolute;inset:0}.song-search-play svg{width:1.1rem;height:1.1rem}.song-search-video-meta,.song-search-tab-meta{flex-direction:column;flex:auto;align-items:flex-start;gap:.15rem;display:flex;overflow:hidden}.song-search-title{font-size:var(--font-ui);color:var(--text-1);white-space:nowrap;text-overflow:ellipsis;max-width:100%;overflow:hidden}.song-search-subtitle{font-size:var(--font-ui-sm);color:var(--text-4)}.song-search-badge{font-size:var(--font-xs);color:var(--text-3);background:var(--surface-sunken);border:1px solid var(--border-default);border-radius:3px;padding:.1rem .4rem}.song-search-view-link{font-size:var(--font-ui-sm);color:var(--accent);flex:none;text-decoration:none}.song-search-actions{z-index:var(--z-sticky);align-items:center;gap:var(--sp-4) var(--sp-5);padding:var(--sp-4) var(--sp-5);background:var(--surface-raised);border:1px solid var(--border-default);border-radius:var(--r-lg) var(--r-lg) 0 0;box-shadow:var(--shadow-3);border-bottom:0;flex-wrap:wrap;margin-top:auto;display:flex;position:sticky;bottom:0}.song-search-actions[hidden]{display:none}.song-search-summary{gap:var(--sp-1);min-width:0;font-size:var(--font-ui);flex-direction:column;flex:20rem;display:flex}.song-search-summary>div{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.song-search-summary-key{color:var(--text-3)}.song-search-tray-buttons{align-items:center;gap:var(--sp-3);flex-wrap:wrap;display:flex}.song-search-tray-buttons select{max-width:16rem}.song-search-fallback{flex-direction:column;gap:.5rem;margin-top:.5rem;display:flex}.song-search-fallback[hidden]{display:none}.song-search-fallback-message{font-size:var(--font-ui);color:var(--warning);margin:0}.song-search-fallback-drop{border:2px dashed var(--border-strong);min-height:4rem;font-size:var(--font-ui);color:var(--text-3);text-align:center;cursor:pointer;border-radius:6px;justify-content:center;align-items:center;padding:1rem;display:flex}.song-search-fallback-drop.dragover{border-color:var(--accent);background:var(--accent-wash)}.song-search-fallback-drop input{display:none}.song-search-chips{flex-wrap:wrap;align-items:center;display:flex}.song-search-chip{font-size:var(--font-ui-sm);color:var(--text-1);background:var(--surface-raised);border:1px solid var(--border-default);border-radius:999px;align-items:center;gap:.3rem;margin:0 .4rem .4rem 0;padding:.2rem .5rem;display:inline-flex}.song-search-chip button{height:auto;color:var(--text-3);font-size:var(--font-ui-lg);background:0 0;border:none;padding:0;line-height:1}.song-search-cookies{background:var(--surface-raised);border:1px solid var(--border-default);border-radius:4px;flex-direction:column;gap:.5rem;margin-top:.5rem;padding:.75rem;display:flex}.song-search-cookies[hidden]{display:none}.song-search-cookies-message{font-size:var(--font-ui);color:var(--warning);margin:0}.song-search-cookies-status{font-size:var(--font-ui-sm);color:var(--text-4);margin:0}.song-search-cookies-textarea{box-sizing:border-box;width:100%;font-family:var(--font-mono);font-size:var(--font-ui-sm);color:var(--text-1);background:var(--surface-base);border:1px solid var(--border-default);white-space:pre;resize:vertical;border-radius:4px;padding:.5rem}.song-search-cookies-buttons{gap:.5rem;display:flex}.song-search-compare-pick{gap:var(--sp-5);grid-template-columns:repeat(auto-fit,minmax(16rem,1fr));display:grid}.song-search-compare-pick fieldset{border:0;min-width:0;margin:0;padding:0}.song-search-compare-pick legend{margin-bottom:var(--sp-2);font-size:var(--font-ui);color:var(--text-2);padding:0;font-weight:600}.song-search-compare-list{gap:var(--sp-2);flex-direction:column;display:flex}.song-search-compare-option{align-items:center;gap:var(--sp-3);min-width:0;font-size:var(--font-ui);color:var(--text-1);display:flex}.song-search-compare-option span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.song-search-compare-note{font-size:var(--font-ui-sm);color:var(--text-3)}.song-search-analyze{align-self:flex-start}.song-search-matches-results{flex-direction:column;gap:.4rem;display:flex}.song-search-matches-results[hidden]{display:none}.song-search-matches{background:var(--surface-raised);border:1px solid var(--border-default);border-radius:4px;flex-direction:column;gap:.4rem;margin-top:.75rem;padding:.75rem;display:flex}.song-search-matches[hidden]{display:none}.song-search-matches h3{font-size:var(--font-ui);color:var(--text-2);margin:0}.song-search-matches-progress,.song-search-matches-note{font-size:var(--font-ui-sm);color:var(--text-4);margin:0}.song-search-matches-note:empty{display:none}.song-search-matches-scroll{overflow-x:auto}.song-search-matches-table{border-collapse:collapse;width:100%;font-size:var(--font-ui-sm)}.song-search-matches-table th{text-align:left;color:var(--text-3);border-bottom:1px solid var(--border-default);padding:.3rem .5rem;font-weight:600}.song-search-matches-table td{color:var(--text-1);border-bottom:1px solid var(--border-subtle);vertical-align:middle;padding:.35rem .5rem}.song-search-match-row{cursor:pointer}.song-search-match-row:hover,.song-search-match-row:focus-visible{background:var(--surface-hover)}.song-search-match-row.selected{background:var(--accent-wash)}.song-search-match-row.selected td:first-child{box-shadow:inset 3px 0 0 var(--accent)}.song-search-match-row.is-failed{cursor:default}.song-search-match-row.is-failed td{color:var(--text-4);font-style:italic}.song-search-match-name{white-space:nowrap;text-overflow:ellipsis;max-width:18rem;overflow:hidden}.song-search-match-score{white-space:nowrap}.song-search-match-score>span+span{margin-left:.4rem}.song-search-match-band{font-size:var(--font-xs);border:1px solid;border-radius:3px;padding:.05rem .35rem}.song-search-match-band.is-high{color:var(--success)}.song-search-match-band.is-medium{color:var(--warning)}.song-search-match-band.is-low{color:var(--danger)}.song-search-match-hints{font-size:var(--font-xs);color:var(--text-4)}.song-search-match-length{font-size:var(--font-xs);color:var(--warning);white-space:normal;margin-top:.15rem}.tuner-dialog{color:var(--text-1);background:var(--surface-raised);border:1px solid var(--border-default);border-radius:6px;width:min(64rem,92vw);padding:0}.tuner-dialog::backdrop{background:#0009}.tuner-dialog-inner{flex-direction:column;gap:.75rem;padding:1rem;display:flex}.tuner-dialog-header{align-items:center;gap:.75rem;display:flex}.tuner-dialog-title{font-weight:600}.tuner-preset-picker{font-size:var(--font-ui);color:var(--text-2);align-items:center;gap:.4rem;margin-left:auto;display:flex}.tuner-dialog-close{font-size:var(--font-h2);color:var(--text-1);border:1px solid var(--border-default);cursor:pointer;background:0 0;border-radius:4px;padding:.15rem .5rem;line-height:1}.tuner-dialog-status{font-size:var(--font-ui);color:var(--danger)}.tuner-dialog-status[hidden]{display:none}.tuner-dialog-status details{margin-top:.2rem}.tuner-dialog-status summary{cursor:pointer;color:var(--link)}.tuner-dialog-status p{color:var(--text-2);margin:.3rem 0 0}.tuner-headstock-container{width:100%}.tuner-headstock{width:100%;height:auto}.tuner-headstock-body{stroke:#241207;stroke-width:1px}.tuner-string-line{fill:none;stroke:var(--text-2);stroke-width:1.5px}.tuner-peg{cursor:pointer}.tuner-peg-knob,.tuner-peg-post{fill:url(#tunerMetalGradient);stroke:var(--border-default);stroke-width:1px}.tuner-peg-label{fill:var(--text-1);pointer-events:none;font-size:13px;font-weight:600}.tuner-peg-active .tuner-peg-post{fill:var(--accent)}.tuner-peg:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.tuner-readout-bg{fill:var(--surface-base);fill-opacity:.8;stroke:var(--border-default);stroke-width:1px}.tuner-readout-note{fill:var(--text-1);font-size:26px;font-weight:700}.tuner-readout-target{fill:var(--text-3);font-size:12px}.tuner-cents-baseline{stroke:var(--border-default);stroke-width:1px}.tuner-cents-scale text{fill:var(--text-4);text-anchor:middle;font-size:10px}.tuner-needle{stroke:var(--accent);stroke-width:2px;stroke-linecap:round;transform-origin:0 0;transition:transform 80ms linear}#tunerReadout.tuner-in-tune .tuner-needle,#tunerReadout.tuner-in-tune .tuner-readout-bg{stroke:var(--success)}#appBar{gap:var(--sp-5)}#syncHelp{background:var(--surface-sunken)}@media (hover:hover){button:hover:not(:disabled),select:hover:not(:disabled){background:var(--surface-hover);border-color:var(--border-strong)}.btn-primary:hover:not(:disabled){background:var(--accent-fill-hover);border-color:var(--accent-fill-hover);color:var(--text-on-accent)}.segmented button[aria-pressed=true]:hover{background:var(--accent-fill-hover);color:var(--text-on-accent)}.btn-ghost:hover:not(:disabled){background:var(--surface-hover);border-color:#0000}.btn-danger:hover:not(:disabled){color:var(--danger);border-color:var(--danger)}#tunerButton:hover{background:var(--surface-hover)}.nav-trigger:hover{color:var(--accent)}.nav-item:hover{color:var(--accent);background:var(--accent-wash)}#playPause:hover:not(:disabled){background:var(--accent-fill-hover);border-color:var(--accent-fill-hover)}#autoSyncButton:hover:not(:disabled){background:var(--sync);border-color:var(--sync);filter:brightness(1.08)}.practice-drill-button:hover{background:var(--surface-hover);border-color:var(--border-strong)}.library-item:hover{border-color:var(--border-strong);box-shadow:var(--shadow-2);transform:translateY(-1px)}.library-item:hover .library-item-action{opacity:1}.library-item-edit:hover,.library-item-export:hover{color:var(--accent)}.library-folder-summary:hover{background:var(--surface-hover)}.library-item-suggest:hover{text-decoration:underline}.library-item-delete:hover{color:var(--danger-hover)}.panel-close:hover{color:var(--text-1);background:var(--surface-hover)}.song-search-view-link:hover{text-decoration:underline}.song-search-chip button:hover{color:var(--text-1)}.tuner-dialog-close:hover{background:var(--surface-hover)}}@media (hover:none){.library-item-action{opacity:1}}@media (pointer:coarse){.transport-btn{width:2.75rem;height:2.75rem}.transport-btn svg{width:1.35rem;height:1.35rem}#tunerButton,#themeButton{width:2.75rem;height:2.75rem}#controls label,#practiceControls label,.settings-group label,.listen-popover-panel label,.synth-track-list label{min-height:44px}input[type=checkbox],input[type=radio]{width:1.25rem;height:1.25rem}input[type=range]{height:2.5rem}.nav-trigger,.nav-item,#appMenuButton,.panel-close,.tuner-dialog-close,.practice-drill-button,.page-back{min-height:44px}.panel-close,.tuner-dialog-close{min-width:44px}.song-search-chip button{min-width:2rem;min-height:2rem}.song-search-row,.library-item-title{min-height:3rem}}@media (width<=900px){#controls,#practiceControls{row-gap:var(--sp-3);flex-wrap:wrap}#controls .toolbar-spacer{flex-basis:100%;height:0}#riffRepeater:not([hidden]){border-left:none;padding-left:0}.song-search-results{grid-template-columns:minmax(0,1fr)}.page-header,#library,.song-search{padding-inline:var(--sp-5)}}@media (width<=560px){#appBar{gap:var(--sp-3);padding-inline:var(--sp-4)}#viewModeGroup button{padding:0 var(--sp-3)}#authBar .auth-label{display:none}#appBrandText{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;position:absolute;overflow:hidden}#controls,#practiceControls,.listen-status-strip,.panel,.settings-page{padding-inline:var(--sp-4)}.listen-popover-panel,.synth-track-list,.toolbar-popover-panel{left:var(--sp-4);right:var(--sp-4);min-width:0;max-height:60vh;position:fixed;overflow-y:auto}}@media (width<=700px){#appNav{display:none}.app-menu{display:block}#appBarRight,#authBar{min-width:0}.now-playing-meta{display:none}#nowPlaying{max-width:40vw}#authBar .auth-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}}@media (width<=700px),(height<=560px){#controls,#controls label,#practiceControls,#practiceControls [role=group],#practiceControls label{min-width:0;max-width:100%}#controls select,#practiceControls select{flex:auto;min-width:0}}@media (height<=560px){#appBar{padding-block:var(--sp-1)}#syncEditor{height:96px}#viewStack.split-view #viewport{max-height:50%}#viewStack.split-view.flow-first #viewport{max-height:40%}}#moreControlsButton,#hideControlsButton,#phoneChipRow,#phoneDock,#phoneClock{display:none}.phone-icon-btn{width:44px;height:44px;color:var(--text-1);flex:none;justify-content:center;align-items:center;padding:0}.phone-icon-btn svg{width:20px;height:20px}html[data-phone-layout=landscape] #moreControlsButton,html[data-phone-layout=landscape] #hideControlsButton,html[data-phone-layout=portrait] #moreControlsButton{display:inline-flex}html[data-phone-layout=landscape] #controls .toolbar-spacer,html[data-phone-layout=portrait] #controls .toolbar-spacer{display:none}html[data-phone-layout=landscape] .transport-btn,html[data-phone-layout=portrait] .transport-btn{width:44px;height:44px}html[data-phone-layout=landscape] #playPause,html[data-phone-layout=portrait] #playPause{border-radius:50%}html[data-phone-layout=landscape] #speedControl .control-label-text,html[data-phone-layout=portrait] #speedControl .control-label-text{display:none}html[data-phone-layout=landscape] #speed,html[data-phone-layout=portrait] #speed{height:44px;padding:0 var(--sp-4);border-radius:var(--r-pill);flex:none}html[data-phone-layout=landscape] #volumeControl,html[data-phone-layout=portrait] #volumeControl{width:100%;min-height:44px;display:flex}html[data-phone-layout=landscape] #volume,html[data-phone-layout=portrait] #volume{flex:auto;width:auto;height:44px}html[data-phone-layout=landscape] #loopControl,html[data-phone-layout=portrait] #loopControl{align-items:center;gap:var(--sp-2);height:44px;padding:0 var(--sp-4);font-size:var(--font-ui);color:var(--text-1);white-space:nowrap;background:var(--surface-raised);border:1px solid var(--border-default);border-radius:var(--r-pill);flex:none;display:inline-flex;position:relative}html[data-phone-layout=landscape] #loopEnabled,html[data-phone-layout=portrait] #loopEnabled{opacity:0;width:1px;height:1px;margin:0;position:absolute}:is(html[data-phone-layout=landscape] #loopControl:has(:focus-visible),html[data-phone-layout=portrait] #loopControl:has(:focus-visible)){outline:2px solid var(--accent);outline-offset:2px}:is(html[data-phone-layout=landscape] #loopControl:has(:checked),html[data-phone-layout=portrait] #loopControl:has(:checked)){color:var(--text-on-accent);border-color:var(--accent-fill);background:var(--accent-fill)}:is(html[data-phone-layout=landscape] #loopControl:has(:disabled),html[data-phone-layout=portrait] #loopControl:has(:disabled)){color:var(--text-3)}html[data-phone-layout=landscape] .toolbar-popover-panel,html[data-phone-layout=landscape] .listen-popover-panel,html[data-phone-layout=portrait] .toolbar-popover-panel,html[data-phone-layout=portrait] .listen-popover-panel{left:var(--sp-4);right:var(--sp-4);min-width:0;max-width:30rem;max-height:60vh;position:fixed;overflow-y:auto}#phoneSheetBackdrop{z-index:1090;background:#00000073;position:fixed;inset:0}#phoneSheet{z-index:1100;gap:var(--sp-4);max-height:min(85dvh,34rem);padding:var(--sp-3) var(--sp-5) calc(var(--sp-5) + env(safe-area-inset-bottom));background:var(--surface-overlay);border-top:1px solid var(--border-default);border-radius:var(--r-lg) var(--r-lg) 0 0;box-shadow:var(--shadow-3);flex-direction:column;display:flex;position:fixed;bottom:0;left:0;right:0;overflow-y:auto}.phone-sheet-header{justify-content:space-between;align-items:center;display:flex}#phoneSheetTitle{font-size:var(--font-ui-lg);margin:0;font-weight:600}#phoneSheetSlot{align-items:flex-start;gap:var(--sp-4);flex-direction:column;display:flex}#phoneSheet button:not(.panel-close),#phoneSheet select{min-height:44px}#phoneSheet .segmented button{height:44px}#phoneSheet #sectionReadout{align-items:center;gap:var(--sp-3);font-size:var(--font-ui);color:var(--text-2);display:flex}#phoneSheet #practiceControls{border-bottom:0;align-self:stretch;padding:0}#phoneSheet .listen-status-strip{padding-inline:0}#sheetTunerButton{align-self:flex-start}html[data-phone-layout=portrait] #sheetTunerButton,html[data-phone-layout=landscape][data-page=player] #appBar{display:none}html[data-phone-layout=landscape] #controls{gap:var(--sp-2);height:52px;padding:0 var(--sp-3);flex-wrap:nowrap}html[data-phone-layout=landscape] .controls-hidden #controls{display:none}html[data-phone-layout=landscape] #controls .app-menu{flex:none;display:block}html[data-phone-layout=landscape] #appMenuButton{width:44px;height:44px}html[data-phone-layout=landscape] #nowPlaying{flex:auto;max-width:none}html[data-phone-layout=landscape] .now-playing-meta{display:flex}html[data-phone-layout=landscape] #songMeta,html[data-phone-layout=landscape] #bpmReadout:before{display:none}html[data-phone-layout=landscape] #phoneClock{font-variant-numeric:tabular-nums;display:inline}html[data-phone-layout=landscape] #phoneClock:not(:empty)~#bpmReadout:before{content:" · ";display:inline}#showControlsPill{top:var(--sp-3);right:var(--sp-3);z-index:1050;align-items:center;gap:var(--sp-3);height:44px;padding:0 var(--sp-5);font-variant-numeric:tabular-nums;background:var(--surface-raised);border:1px solid var(--border-default);border-radius:var(--r-pill);box-shadow:var(--shadow-2);opacity:.92;display:inline-flex;position:fixed}#showControlsPillIcon{display:inline-flex}#showControlsPillIcon svg{width:16px;height:16px}html[data-phone-layout=landscape] #progressBar{background:var(--surface-raised);height:4px;padding:0;position:relative}html[data-phone-layout=landscape] #progressBar:before{content:"";z-index:2;cursor:pointer;height:44px;position:absolute;bottom:0;left:0;right:0}html[data-phone-layout=landscape] #progressBar.is-expanded:before{z-index:1009;background:var(--surface-base);border-top:1px solid var(--border-subtle);height:64px;box-shadow:var(--shadow-2);cursor:auto}html[data-phone-layout=landscape] #progressBar:not(.is-expanded):after{content:"";width:calc(var(--phone-progress,0) * 100%);background:var(--accent-fill);pointer-events:none;position:absolute;top:0;bottom:0;left:0}html[data-phone-layout=landscape] #progressBar:not(.is-expanded) #progressCanvas{opacity:0}html[data-phone-layout=landscape] #progressBar.is-expanded #progressCanvas{z-index:1010;width:calc(100% - 20px);height:52px;position:absolute;bottom:6px;left:10px}html[data-phone-layout=landscape] #viewStack{position:relative}html[data-phone-layout=landscape] #lyricsStrip{left:0;right:0;bottom:var(--sp-2);z-index:1;padding:0 var(--sp-5);pointer-events:none;text-shadow:0 0 6px var(--surface-base), 0 0 2px var(--surface-base);background:0 0;border-top:0;position:absolute}html[data-phone-layout=landscape] #lyricsStrip .lyrics-current{font-size:var(--font-ui-lg)}html[data-phone-layout=landscape] #lyricsStrip .lyrics-next,html[data-phone-layout=landscape] #lyricsStrip .lyrics-current:empty{display:none}html[data-phone-layout=landscape] #lyricsStrip .lyrics-current:empty+.lyrics-next{display:block}html[data-phone-layout=portrait] #controls{gap:var(--sp-2);padding:var(--sp-2) var(--sp-4) 0;flex-wrap:wrap}html[data-phone-layout=portrait] #nowPlaying{flex:1 1 0;max-width:none}html[data-phone-layout=portrait] .now-playing-meta{display:flex}html[data-phone-layout=portrait] #moreControlsButton{margin-left:auto}html[data-phone-layout=portrait] #phoneChipRow{align-items:center;gap:var(--sp-3);min-width:0;padding-bottom:var(--sp-3);scrollbar-width:none;flex:1 0 100%;display:flex;overflow-x:auto}#phoneChipRow>*{flex:none}#phoneChipRow .segmented button,#phoneChipRow .toolbar-popover-trigger{height:44px;padding:0 var(--sp-4)}#phoneChipRow .toolbar-popover-trigger{border-radius:var(--r-pill)}html[data-phone-layout=portrait] #phoneDock{gap:var(--sp-1);padding:var(--sp-1) var(--sp-4) calc(var(--sp-3) + env(safe-area-inset-bottom));background:var(--surface-base);border-top:1px solid var(--border-subtle);flex-direction:column;display:flex}.phone-dock-scrub{align-items:center;gap:var(--sp-3);display:flex}.phone-dock-time{min-width:2.5em;font-size:var(--font-ui-sm);color:var(--text-2);font-variant-numeric:tabular-nums}.phone-dock-time:last-child{text-align:right}.phone-dock-time:empty{display:none}#phoneDockScrubSlot{flex:auto;min-width:0}#phoneDock #progressBar{background:0 0;height:52px;padding:4px 0}#phoneDockTransport{align-items:center;gap:var(--sp-2);display:flex}#phoneDock #transport{gap:var(--sp-2);margin-inline:auto}#phoneDock #playPause{width:60px;height:60px}#phoneDock #playPause svg{width:26px;height:26px}@media (width<=380px){#phoneDock #restart{display:none}}
