@font-face{font-family:Material Icons;font-style:normal;font-weight:400;font-display:block;src:url(./material-icons-kAwBdRge.woff2)format("woff2"),url(./material-icons-Dr0goTwe.woff)format("woff")}.material-icons{letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;font-feature-settings:"liga";direction:ltr;font-family:Material Icons;font-size:24px;font-style:normal;font-weight:400;line-height:1;display:inline-block}:root{--accent:#8aaff0;--bg:#111;--surface:#1e1e1e;--border:#3a3a3a;--text:#ddd;--text-muted:#666;--text-dim:#555}*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);flex-direction:column;height:100dvh;font-family:Helvetica Neue,Arial,sans-serif;display:flex;overflow:hidden}header{border-bottom:1px solid #222;flex-shrink:0;align-items:center;gap:.6rem;padding:.5rem 1rem;display:flex}header h1{color:var(--accent);letter-spacing:.1em;flex:1;font-size:.95rem}#install-btn{color:var(--accent);cursor:pointer;background:#1d2d4a;border:1px solid #3c64b4;border-radius:4px;min-height:2.2rem;padding:.4rem .9rem;font-size:.8rem}#install-btn:hover{background:#243660}#shortcut-help-btn{color:var(--text-muted);border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:50%;width:1.8rem;height:1.8rem;font-size:.8rem;line-height:1}#shortcut-help-btn:hover{color:#ddd;background:var(--surface)}@media (max-width:767px){#shortcut-help-btn{display:none}}#controls-pane{flex-direction:column;flex-shrink:0;max-height:22rem;transition:max-height .25s;display:flex;overflow:hidden}@media (max-width:767px){#controls-pane.collapsed{border-bottom:1px solid var(--surface);background:#151515;flex-direction:row;align-items:center;gap:.3rem;max-height:2.8rem;padding:.15rem .5rem}#controls-pane.collapsed #now-playing,#controls-pane.collapsed #debug-details,#controls-pane.collapsed .spacer,#controls-pane.collapsed #repeat-btn,#controls-pane.collapsed #shuffle-btn,#controls-pane.collapsed #volume-label{display:none}#controls-pane.collapsed .transport-bar,#controls-pane.collapsed .volume-bar{display:contents}#controls-pane.collapsed .transport-btn{min-width:2rem;min-height:2rem;padding:.2rem .35rem}#controls-pane.collapsed #play-pause-btn{min-width:2.2rem;min-height:2rem;padding:.2rem .5rem}#controls-pane.collapsed #mute-btn{min-width:2rem;min-height:2rem;margin-left:.3rem;padding:.1rem .2rem}#controls-pane.collapsed #volume-slider{flex:1;min-width:3rem;max-width:12rem}}#player-dock,#dock-panels,.bar-right{display:contents}.panel-toggles,#dock-footer,#dock-close-btn,#dock-expand-btn,#now-status,#player-backdrop{display:none}@media (max-width:767px){header{order:0;padding:.35rem .8rem}#content-area{order:1}#player-dock{flex-direction:column;flex-shrink:0;order:2;min-height:0;display:flex}#pane-tabs{order:3}#player-dock:not(.collapsed) #dock-footer{color:var(--text-dim);flex-shrink:0;justify-content:space-between;gap:.8rem;padding:.15rem 1.2rem .3rem;font-size:.68rem;display:flex}#dock-footer span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}#dock-footer a{color:var(--text-muted);flex-shrink:0}#player-dock.collapsed #debug-details,#player-dock.collapsed #mixer-panel,#player-dock.collapsed #viz-panel{display:none}#controls-pane.collapsed{border-top:1px solid var(--surface);border-bottom:none;gap:.4rem;min-height:3.2rem;max-height:3.2rem;padding:.2rem .5rem .2rem 0;position:relative}#controls-pane.collapsed #dock-expand-btn{z-index:0;cursor:pointer;background:0 0;border:none;display:block;position:absolute;top:0;bottom:0;left:0;right:0}#controls-pane.collapsed #dock-expand-btn:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}#controls-pane.collapsed #now-playing{pointer-events:none;background:0 0;border:none;flex-direction:column;flex:1;justify-content:center;align-items:stretch;gap:.1rem;min-width:0;min-height:0;padding:0 .4rem 0 1rem;display:flex}#controls-pane.collapsed #now-playing span{text-overflow:ellipsis;white-space:nowrap;line-height:1.25;overflow:hidden}#controls-pane.collapsed #now-machine{order:1;font-size:.72rem}#controls-pane.collapsed #now-machine:empty,#controls-pane.collapsed #prev-btn,#controls-pane.collapsed #stop-btn,#controls-pane.collapsed #mute-btn,#controls-pane.collapsed #volume-slider{display:none}#controls-pane.collapsed #play-pause-btn,#controls-pane.collapsed #next-btn{z-index:1;flex-shrink:0;min-width:2.75rem;min-height:2.75rem;position:relative}#player-dock:not(.collapsed){z-index:40;overscroll-behavior:contain;border-top:1px solid var(--border);max-height:85dvh;padding-bottom:env(safe-area-inset-bottom);background:#151515;border-radius:12px 12px 0 0;position:fixed;bottom:0;left:0;right:0;overflow-y:auto;box-shadow:0 -6px 24px #00000080}#player-dock:not(.collapsed) #dock-close-btn{border:none;border-bottom:1px solid var(--surface);width:100%;min-height:2.75rem;color:var(--text-muted);cursor:pointer;background:0 0;flex-direction:column;flex-shrink:0;justify-content:center;align-items:center;gap:.25rem;font-size:.72rem;display:flex}#dock-close-btn:before{content:"";background:var(--border);border-radius:2px;width:2.5rem;height:.25rem}#dock-close-btn:hover{color:var(--text)}#player-backdrop:not([hidden]){z-index:39;background:#0000008c;display:block;position:fixed;top:0;bottom:0;left:0;right:0}}@media (min-width:768px){#content-area{order:1}#app-footer{border-top:1px solid #1a1a1a;order:2}#player-dock{border-top:1px solid var(--border);background:#151515;flex-direction:column;flex-shrink:0;order:3;display:flex}#dock-panels{order:-1;align-items:stretch;min-width:0;display:flex}#dock-panels>*{border-top:1px solid var(--surface)}#dock-panels>*+*{border-left:1px solid var(--surface)}#controls-pane{flex-direction:row;align-items:center;gap:1rem;max-height:none;padding:.3rem 1rem;transition:none}#controls-pane #now-playing{background:0 0;border:none;flex:1 1 0;align-items:baseline;gap:.6rem;min-width:0;max-width:24rem;padding:0}#controls-pane #now-playing>span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}#now-machine{flex-shrink:0;order:1;max-width:40%}#now-machine:empty{display:none}#controls-pane .transport-bar{background:0 0;border:none;flex:none;padding:0}#controls-pane .transport-bar .spacer{display:none}#controls-pane .bar-right{flex:1 1 0;justify-content:flex-end;align-items:center;gap:.8rem;min-width:0;display:flex}#controls-pane .volume-bar{background:0 0;border:none;min-width:0;padding:0}#controls-pane #volume-slider{flex:none;width:7rem;min-width:3rem}#controls-pane #volume-label{width:2.4rem}.panel-toggles .transport-btn[aria-pressed=true]{color:var(--accent);background:#8aaff02e;outline:1px solid #8aaff073}.panel-toggles{border-left:1px solid var(--surface);flex:none;gap:.2rem;padding-left:.8rem;display:flex}#mixer-panel .mixer-panel-hd,#viz-panel .viz-panel-hd,#dock-panels #debug-details summary,#mixer-panel.collapsed,#viz-panel.collapsed,#debug-details:not([open]){display:none}#mixer-panel{flex:none}#viz-panel{border-top:1px solid var(--surface);flex:1 1 0;min-width:0}#debug-details{border-bottom:none;flex:none;max-width:22rem}#debug-details .patch-bar{flex-direction:column;align-items:flex-start}#toast{bottom:4.5rem}}.material-icons{-webkit-user-select:none;user-select:none;font-size:22px;line-height:1;display:block}#mute-btn .material-icons{font-size:20px}#now-playing{border-bottom:1px solid var(--surface);background:#151515;align-items:baseline;gap:.5rem;min-height:2rem;padding:.45rem 1.2rem;display:flex}#now-machine{color:#6a8bc0;font-size:.78rem}#now-track{color:var(--text);font-size:.88rem;font-weight:500}#now-playing.idle #now-track{display:none}#now-playing.idle #now-status{color:var(--text-dim);font-size:.8rem;display:block}.transport-bar{border-bottom:1px solid var(--surface);background:#151515;align-items:center;gap:.3rem;padding:.4rem 1rem;display:flex}.transport-btn{color:#9ab;cursor:pointer;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;min-width:2.6rem;min-height:2.6rem;padding:.4rem .55rem;line-height:1;display:inline-flex}.transport-btn:hover{color:#fff;background:#222}.transport-btn.active{color:var(--accent);background:#8aaff02e;outline:1px solid #8aaff073}.transport-btn:disabled{opacity:.3;cursor:default;pointer-events:none}#play-pause-btn{color:#9ab;cursor:pointer;background:0 0;border:1px solid #444;border-radius:4px;justify-content:center;align-items:center;min-width:2.8rem;min-height:2.6rem;padding:.4rem .9rem;line-height:1;display:inline-flex}#play-pause-btn:hover{color:#fff;border-color:var(--text-muted)}#play-pause-btn.playing{color:var(--accent);background:#8aaff01f;border-color:#4a6bb0}#play-pause-btn.playing:hover{color:#a8c4f7;background:#8aaff033;border-color:#6a8bd0}.spacer{flex:1}.volume-bar{border-bottom:1px solid var(--surface);background:#131313;align-items:center;gap:.5rem;padding:.4rem 1rem;display:flex}#mute-btn{cursor:pointer;color:#9ab;background:0 0;border:none;justify-content:center;align-items:center;min-width:2.4rem;min-height:2.4rem;padding:.25rem .3rem;line-height:1;display:inline-flex}#mute-btn:hover{color:#fff}#volume-slider{min-width:4rem;accent-color:var(--accent);cursor:pointer;flex:1}#volume-label{color:var(--text-dim);width:2.5rem;font-size:.78rem}#debug-details{border-bottom:1px solid var(--surface);background:#131313}#debug-details summary{color:var(--text-dim);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;padding:.3rem 1rem;font-size:.75rem;list-style:none;display:flex}#debug-details summary::-webkit-details-marker{display:none}#debug-details summary:before{content:"▶";color:#444;margin-right:.5rem;font-size:.6rem;transition:transform .2s}#debug-details[open] summary:before{transform:rotate(90deg)}#debug-details summary:hover{color:#888}#debug-details summary:hover:before{color:var(--text-muted)}.patch-bar{background:#131313;align-items:center;gap:.5rem;padding:.35rem 1rem;display:flex}.patch-label{color:var(--text-muted);white-space:nowrap;font-size:.75rem}.patch-btn-group{flex-wrap:wrap;gap:.2rem;display:flex}.patch-btn{border:1px solid var(--border);color:#9ab;cursor:pointer;background:0 0;border-radius:3px;padding:.22rem .55rem;font-size:.75rem;line-height:1.4}.patch-btn:hover{border-color:var(--text-muted);color:var(--text)}.patch-btn.active{border-color:var(--accent);color:var(--accent);background:#8aaff026}.balance-bar{background:#131313;align-items:center;gap:.5rem;padding:.35rem 1rem;display:flex}.balance-label{color:var(--text-muted);white-space:nowrap;font-size:.75rem}#rhythm-slider{accent-color:#e8a040;cursor:pointer;flex:1;min-width:4rem}#rhythm-label{color:var(--text-dim);width:2.5rem;font-size:.75rem}#mixer-panel{background:#131313;flex-shrink:0;overflow:hidden}.mixer-panel-hd{color:var(--text-muted);cursor:pointer;-webkit-user-select:none;user-select:none;border-bottom:1px solid var(--surface);justify-content:space-between;align-items:center;padding:.2rem .8rem;font-size:.7rem;display:flex}.mixer-panel-hd span{pointer-events:none}#mixer-collapse-btn{color:var(--text-dim);cursor:pointer;background:0 0;border:none;padding:0 .2rem;font-size:.7rem}#mixer-collapse-btn:hover{color:#888}.mixer-panel-body{max-height:6rem;padding:.4rem 1rem;transition:max-height .25s,padding .25s;overflow:hidden}#mixer-panel.collapsed .mixer-panel-body{max-height:0;padding-top:0;padding-bottom:0}#mixer-panel.collapsed #mixer-collapse-btn{transform:rotate(180deg)}.mixer-strips{justify-content:center;align-items:flex-end;gap:.25rem;display:flex}.mixer-sep{background:#333;align-self:stretch;width:1px;margin:0 .2rem}.mix-channel{cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:manipulation;font:inherit;background:0 0;border:1px solid #0000;border-radius:3px;flex-direction:column;align-items:center;gap:.15rem;min-width:1.6rem;padding:.2rem .1rem;display:flex}.mix-channel:hover{border-color:var(--text-dim)}.mix-channel.pressing{border-color:#ee4;transition:border-color .5s linear}.mix-channel .ch-label{color:var(--text-dim);font-size:.6rem;line-height:1}.mix-channel.active .ch-label{color:#8c8}.mix-channel.solo .ch-label{color:#ee4}.mix-channel.solo{border-color:#aa8a2a}.meter{background:#1a1a1a;border-radius:2px;width:.7rem;height:2.4rem;position:relative;overflow:hidden}.meter-bar-fill{transform-origin:bottom;will-change:transform;background:linear-gradient(#c44,#cc4 25%,#8c8 50%,#4a4);width:100%;height:100%;position:absolute;bottom:0;left:0;transform:scaleY(0)}.mix-channel:not(.active) .meter-bar-fill{background:#333}#viz-panel{border-top:1px solid var(--surface);background:#131313;flex-shrink:0;overflow:hidden}.viz-panel-hd{color:var(--text-muted);cursor:pointer;-webkit-user-select:none;user-select:none;border-bottom:1px solid var(--surface);justify-content:space-between;align-items:center;padding:.2rem .8rem;font-size:.7rem;display:flex}.viz-panel-hd span{pointer-events:none}#viz-collapse-btn{color:var(--text-dim);cursor:pointer;background:0 0;border:none;padding:0 .2rem;font-size:.7rem}#viz-collapse-btn:hover{color:#888}.viz-panel-body{max-height:11.25rem;transition:max-height .25s;overflow:hidden}#viz-panel.collapsed .viz-panel-body{max-height:0}#viz-panel.collapsed #viz-collapse-btn{transform:rotate(180deg)}#viz-canvas{width:100%;height:180px;display:block}@media (min-width:768px){.viz-panel-body{max-height:10rem}#viz-canvas{height:160px}}#pane-tabs{display:none}#content-area{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}#panel-library,#panel-playlist{flex-direction:column;display:flex;overflow:hidden}.panel-hd{color:#888;background:#1a1a1a;border-bottom:1px solid #2a2a2a;flex-shrink:0;justify-content:space-between;align-items:center;padding:.4rem .8rem;font-size:.8rem;display:flex}.panel-hd span{font-weight:500}#library-collapse-btn{color:var(--text-muted);cursor:pointer;background:0 0;border:none;min-width:2rem;min-height:2rem;padding:.3rem .5rem;font-size:.75rem;line-height:1}#library-collapse-btn:hover{color:#aaa}.panel-select-area{flex-shrink:0;padding:.9rem 1.2rem 0}.panel-body{flex:1;min-height:0;overflow-y:auto}#library-body,#playlist-body{padding:0 1.2rem .9rem}@media (max-width:767px){#pane-tabs{padding-bottom:env(safe-area-inset-bottom);border-top:1px solid #222;flex-shrink:0;display:flex}#pane-tabs button{color:#888;cursor:pointer;background:0 0;border:none;border-top:2px solid #0000;flex:1;min-height:2.75rem;padding:.7rem .5rem;font-size:.85rem}.tab-badge{min-width:1.2rem;color:var(--text);text-align:center;background:#2a2a2a;border-radius:.6rem;margin-left:.4rem;padding:0 .35rem;font-size:.72rem;line-height:1.2rem;display:inline-block}.tab-badge[hidden]{display:none}#pane-tabs button.active .tab-badge{background:var(--accent);color:#000}#pane-tabs button:hover{color:var(--text)}#pane-tabs button.active{color:var(--accent);border-top-color:var(--accent)}#library-collapse-btn{display:none}#panel-library,#panel-playlist{flex:1}#content-area[data-pane=library] #panel-playlist,#content-area[data-pane=playlist] #panel-library{display:none}}@media (min-width:768px){#content-area{grid-template-columns:13rem minmax(0,1fr) minmax(0,1fr);transition:grid-template-columns .25s;display:grid}#panel-library{border-right:1px solid #222;min-height:0}#panel-playlist{min-height:0}#library-machine-name{color:var(--text);margin-left:.3rem}#content-area:has(#panel-library.collapsed){grid-template-columns:13rem minmax(0,1fr)}#panel-library.collapsed{display:none}}@media (max-width:767px),(pointer:coarse){.play-btn,.add-btn,.remove-btn{min-width:2.75rem;min-height:2.75rem}.loop-ctrl button{width:2.4rem;height:2.4rem}.transport-btn{min-width:2.75rem;min-height:2.75rem}tbody td,.pl-track-table td{padding-top:.65rem;padding-bottom:.65rem}.drag-handle{width:2.4rem}}#library-search{box-sizing:border-box;width:100%;color:var(--text);border:1px solid var(--border);background:#1d1d1d;border-radius:4px;min-height:2.4rem;margin-bottom:.6rem;padding:.45rem .7rem;font-size:.88rem}#library-search:focus{border-color:#8af;outline:none}.slot-machine{color:var(--text-dim);margin-left:.6rem;font-size:.72rem}#slot-table tr.slot-empty{cursor:default}#slot-table tr.slot-empty td{text-align:center;color:var(--text-dim);padding:1rem 0}#machine-list,#machine-picker-btn{display:none}.machine-group-hd{letter-spacing:.04em;color:var(--text-muted);padding:.7rem .8rem .25rem;font-size:.68rem}.machine-btn{width:100%;color:var(--text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;border-left:3px solid #0000;align-items:baseline;gap:.3rem;padding:.4rem .8rem .4rem calc(.8rem - 3px);font-size:.82rem;display:flex}.machine-btn:hover{background:#202020}.machine-btn[aria-current=true]{color:var(--accent);border-left-color:var(--accent);background:#1c1f24}.machine-btn-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.machine-btn-playing{color:var(--accent);font-size:.8rem;display:none}.machine-btn.playing .machine-btn-playing{display:inline}.machine-btn-count{color:var(--text-muted);font-size:.7rem}@media (min-width:768px){#machine-list{background:#151515;border-right:1px solid #222;min-height:0;padding:.4rem 0 .8rem;display:block;overflow-y:auto}}table{border-collapse:collapse;width:100%;font-size:.86rem}thead th{text-align:left;color:var(--text-muted);border-bottom:1px solid #2a2a2a;padding:.35rem .55rem;font-weight:400}tbody tr{border-bottom:1px solid #1a1a1a;transition:background .1s}#slot-table tr{cursor:pointer}tbody tr:hover{background:#191919}tbody tr.playing{background:#0d2a0d}tbody td{vertical-align:middle;padding:.5rem .55rem}tbody td:first-child{color:var(--text-dim);text-align:right;width:2.2rem}.loop-badge{text-align:center;color:#6a9fd8;white-space:nowrap;width:1.8rem;font-size:.82rem}.loop-badge.no-loop{color:var(--text-dim)}.play-btn{border:1px solid var(--text-dim);color:#adf;cursor:pointer;background:0 0;border-radius:3px;width:2.4rem;height:2.2rem;font-size:.9rem}.play-btn:hover{background:#1a2a1a;border-color:#8af}tr.playing .play-btn{color:#4f4;border-color:#4f4}.add-btn{border:1px solid var(--border);color:var(--accent);cursor:pointer;background:0 0;border-radius:3px;width:2.4rem;height:2.2rem;font-size:1.1rem;line-height:1}.add-btn:hover{border-color:var(--accent);background:#1a2035}@media (max-width:767px){#panel-library>.panel-hd{display:none}#panel-library .panel-select-area{padding:.4rem .6rem 0}#machine-picker-btn{width:100%;min-height:2.75rem;color:var(--text);text-align:left;cursor:pointer;background:#2a2a2a;border:1px solid #444;border-radius:4px;margin-bottom:.4rem;padding:0 .6rem;font-size:.9rem;display:block}#panel-library #library-search{min-height:2.2rem;margin-bottom:.4rem;padding:.35rem .6rem}#library-body{padding:0 .3rem .5rem}#library-body thead{display:none}#slot-table tr{grid-template-rows:auto auto;grid-template-columns:2rem minmax(0,1fr) auto 2.75rem;align-items:center;column-gap:.4rem;padding:.15rem 0;display:grid}#slot-table td{width:auto;min-width:0;padding:0}#slot-table td.slot-num{color:var(--text-dim);text-align:center;grid-area:1/1/3;font-size:.72rem}#slot-table td.slot-jp{text-overflow:ellipsis;white-space:nowrap;grid-area:1/2;padding-top:.35rem;font-size:.92rem;overflow:hidden}#slot-table td.slot-en{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;grid-area:2/2;padding-bottom:.35rem;font-size:.74rem;overflow:hidden}#slot-table td.slot-jp:empty{display:none}#slot-table tr:has(td.slot-jp:empty) td.slot-en{color:var(--text);grid-row:1/3;padding:.35rem 0;font-size:.92rem}#slot-table td.loop-badge{text-align:right;grid-area:1/3/3;width:auto;font-size:.72rem}#slot-table td.slot-add{grid-area:1/4/3;justify-self:end}#slot-table td.slot-play{display:none}#slot-table .add-btn{width:2.75rem;height:2.75rem}#slot-table tr.slot-empty td{grid-column:1/-1}}.playlist-header{flex-wrap:wrap;align-items:center;gap:.4rem;margin-bottom:.6rem;display:flex;position:relative}#playlist-select{min-width:0;color:var(--text);border:1px solid var(--border);background:#1d1d1d;border-radius:4px;flex:1;min-height:2.2rem;padding:.45rem .55rem;font-size:.88rem}.pl-icon-btn{border:1px solid var(--border);color:#9ab;cursor:pointer;background:0 0;border-radius:4px;min-width:2.2rem;min-height:2.2rem;padding:.45rem .7rem;font-size:.9rem}.pl-icon-btn:hover{border-color:var(--text-muted);color:var(--text)}.pl-icon-btn:disabled{opacity:.3;cursor:default;pointer-events:none}.pl-actions{align-items:center;gap:.4rem;display:flex}.pl-io{position:relative}.pl-io-menu{border:1px solid var(--border);z-index:20;background:#1d1d1d;border-radius:6px;flex-direction:column;min-width:14rem;margin-top:.3rem;padding:.3rem;display:none;position:absolute;top:100%;right:0;box-shadow:0 4px 14px #00000073}.pl-io.open .pl-io-menu{display:flex}.pl-io-menu button{color:var(--text);text-align:left;cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:4px;padding:.55rem .7rem;font-size:.88rem}.pl-io-menu button:hover{background:#2a2a2a}.playlist-gain-row{align-items:center;gap:.5rem;display:flex}#playlist-gain-slider{accent-color:#e8a040;cursor:pointer;flex:1;min-width:4rem}#playlist-gain-label{text-align:right;min-width:4.5rem;color:var(--text-muted);font-size:.85rem}@media (min-width:768px){.pl-actions{display:contents}.playlist-gain-row{flex-basis:100%;order:1;margin-top:.1rem}}#pl-menu-btn{display:none}@media (max-width:767px){#pl-menu-btn{justify-content:center;align-items:center;display:inline-flex}.pl-actions{border:1px solid var(--border);z-index:20;background:#1d1d1d;border-radius:6px;flex-direction:column;align-items:stretch;gap:.3rem;margin-top:.3rem;padding:.4rem;display:none;position:absolute;top:100%;right:0;box-shadow:0 4px 14px #00000073}.pl-actions.open{display:flex}.pl-io-menu{min-width:0;box-shadow:none;margin-top:.3rem;position:static}.pl-actions .pl-icon-btn{text-align:left;width:100%;padding:.6rem .8rem}.pl-actions .playlist-gain-row{border-top:1px solid var(--border);min-width:16rem;margin-top:.2rem;padding:.4rem .4rem .2rem}}#playlist-rename-wrap{align-items:center;gap:.4rem;margin-bottom:.5rem;display:none}#playlist-rename-input{color:var(--text);border:1px solid var(--accent);background:#1d1d1d;border-radius:4px;flex:1;min-width:0;min-height:2.2rem;padding:.4rem .55rem;font-size:.88rem}#playlist-rename-commit{color:#4a8;cursor:pointer;white-space:nowrap;background:0 0;border:1px solid #4a8;border-radius:4px;min-height:2.2rem;padding:.4rem .7rem;font-size:.88rem}#playlist-rename-commit:hover{color:#6ca;background:#1a2e1a;border-color:#6ca}.pl-track-table{border-collapse:collapse;width:100%;font-size:.85rem}.pl-track-table th{text-align:left;color:var(--text-muted);border-bottom:1px solid #2a2a2a;padding:.3rem .5rem;font-weight:400}.pl-track-table td{vertical-align:middle;border-bottom:1px solid #1a1a1a;padding:.5rem}.pl-track-table tr.playing{background:#0d2a0d}.pl-track-table tr:hover{background:#191919}.pl-track-table td:first-child{color:var(--text-dim);text-align:right;width:2rem}.track-machine{color:#9aa7b6;font-size:.78rem}.pl-track-table tbody tr{cursor:pointer}.pl-track-sub,.pl-row-menu{display:none}.no-loop-label{color:var(--text-dim)}.pl-loop-slot{justify-content:center;align-items:center;min-width:5.7rem;display:inline-flex}.loop-ctrl{align-items:center;gap:.25rem;display:flex}.loop-ctrl button{border:1px solid var(--border);color:#9ab;cursor:pointer;background:0 0;border-radius:3px;width:1.8rem;height:1.8rem;font-size:.9rem;line-height:1}.loop-ctrl button:hover{border-color:var(--accent);color:var(--accent)}.loop-ctrl button:disabled{opacity:.3;cursor:default}.loop-ctrl-val{text-align:center;min-width:1.6rem;color:var(--text)}.gap-input{width:3.6rem;color:var(--text);border:1px solid var(--border);background:#1d1d1d;border-radius:4px;padding:.25rem .35rem;font-size:.85rem}.gap-input:focus{border-color:var(--accent);outline:none}.pl-track-settings{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.remove-btn{border:1px solid var(--border);color:#b66;cursor:pointer;background:0 0;border-radius:3px;width:2.2rem;height:2.2rem;font-size:.9rem}.remove-btn:hover{color:#e66;background:#2a1010;border-color:#e66}.drag-handle{color:var(--border);cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none;-webkit-touch-callout:none;text-align:center;width:1.8rem;padding:.5rem .2rem;font-size:1.1rem}.drag-handle:hover{color:var(--accent)}tr.drag-src{opacity:.4}tr.drag-over{outline:1px solid var(--accent)}#slot-table tr.selected,#pl-track-list tr.selected{background:#8aaff021}#slot-table tr.selected:hover,#pl-track-list tr.selected:hover{background:#8aaff033}#slot-table tr.selected.playing,#pl-track-list tr.selected.playing{background:#123a3a}#slot-table tr.selected>td:first-child,#pl-track-list tr.selected>td:first-child{box-shadow:inset 3px 0 0 var(--accent)}.bulk-bar{background:#8aaff014;border:1px solid #2c3d5c;border-radius:6px;flex-wrap:wrap;align-items:center;gap:.35rem;margin-bottom:.6rem;padding:.35rem .5rem;font-size:.8rem;display:flex}.bulk-bar[hidden]{display:none}.bulk-count{color:var(--accent);white-space:nowrap;margin-right:auto;font-weight:500}.bulk-bar button{border:1px solid var(--border);color:var(--text);cursor:pointer;white-space:nowrap;background:#222;border-radius:4px;padding:.25rem .6rem;font-size:.78rem}.bulk-bar button:hover{border-color:var(--accent);color:var(--accent)}#pl-bulk-remove:hover{color:#e66;background:#2a1010;border-color:#e66}.bulk-gap{color:#9aa7b6;white-space:nowrap;align-items:center;gap:.3rem;display:flex}#pl-bulk-gap{width:4.2rem;color:var(--text);border:1px solid var(--border);background:#1d1d1d;border-radius:4px;padding:.2rem .4rem;font-size:.78rem}#pl-bulk-gap:focus{border-color:var(--accent);outline:none}#pl-track-list tr.drop-before>td{box-shadow:inset 0 2px 0 var(--accent)}#pl-track-list tr.drop-after>td{box-shadow:inset 0 -2px 0 var(--accent)}.pl-empty-hint{border:1px dashed var(--border);text-align:center;color:var(--text-dim);border-radius:8px;margin:1.2rem 0;padding:1.6rem 1rem;font-size:.82rem}.pl-empty-hint[hidden]{display:none}.pl-empty-hint.drop-active{border-color:var(--accent);color:var(--accent);background:#8aaff014}.drag-label{color:#fff;border:1px solid var(--accent);white-space:nowrap;background:#1d2a44;border-radius:4px;padding:.3rem .7rem;font-size:.8rem;position:fixed;top:-1000px;left:-1000px}#pl-empty-add-btn{display:none}@media (max-width:767px){.bulk-bar{display:none!important}.pl-empty-drag-text{display:none}#pl-empty-add-btn{min-height:2.75rem;color:var(--text);border:1px solid var(--accent);cursor:pointer;background:#2a2a2a;border-radius:4px;padding:0 1rem;font-size:.9rem;display:inline-block}}.pl-empty-drag-text{margin:0}dialog{background:var(--surface);color:var(--text);border:1px solid #3c64b4;border-radius:8px;max-width:22rem;margin:0;padding:1.4rem;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}dialog::backdrop{background:#000000b8}dialog h2{color:#fff;margin-bottom:.65rem;font-size:.95rem}dialog p{color:#bbb;margin-bottom:1rem;font-size:.88rem}.dialog-btns{justify-content:flex-end;gap:.5rem;display:flex}.dialog-btns button{cursor:pointer;border-radius:4px;min-height:2.4rem;padding:.5rem 1rem;font-size:.88rem}#confirm-cancel{color:#bbb;background:#2a2a2a;border:1px solid #444}#confirm-cancel:hover{background:#333}#confirm-ok{color:#fff;background:#7a1010;border:1px solid #b44}#confirm-ok:hover{background:#9a1212}#shortcut-help{max-width:30rem}.shortcut-table{border-collapse:collapse;width:100%;margin-bottom:1rem;font-size:.85rem}.shortcut-table th,.shortcut-table td{text-align:left;vertical-align:top;border-bottom:1px solid var(--border);padding:.35rem .5rem}.shortcut-table th{white-space:nowrap;width:1%;font-weight:400}.shortcut-table kbd{color:#ddd;background:#1d1d1d;border:1px solid #444;border-radius:3px;padding:.05rem .4rem;font-family:inherit;font-size:.8rem}#shortcut-help-close{color:#bbb;background:#2a2a2a;border:1px solid #444}#shortcut-help-close:hover{background:#333}#export-dialog{max-width:24rem}.export-form-row{align-items:center;gap:.6rem;margin-bottom:.75rem;font-size:.85rem;display:flex}.export-form-label{color:#9aa7b6;white-space:nowrap}.export-radio{cursor:pointer;color:var(--text);align-items:center;gap:.3rem;display:flex}#export-inf-loops{width:4rem;color:var(--text);border:1px solid var(--border);background:#1d1d1d;border-radius:4px;padding:.3rem .4rem;font-size:.85rem}#export-progress-wrap{margin-bottom:.9rem}#export-progress{accent-color:#3c64b4;width:100%;height:.5rem}#export-progress-text{color:#9aa7b6;margin-top:.4rem;margin-bottom:0;font-size:.8rem}#track-sheet{width:22rem;padding:0}.track-sheet-body{flex-direction:column;gap:.75rem;padding:1.1rem 1.2rem 1rem;display:flex}#track-sheet h2{flex-direction:column;gap:.2rem;min-width:0;margin-bottom:0;display:flex}#track-sheet-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}#track-sheet-machine{color:var(--text-muted);font-size:.78rem;font-weight:400}.track-sheet-row{justify-content:space-between;align-items:center;gap:.6rem;min-height:2.75rem;display:flex}.track-sheet-label{color:#9aa7b6;font-size:.88rem}.track-sheet-loop{align-items:center;gap:.4rem;display:flex}.track-sheet-loop[hidden],.track-sheet-no-loop[hidden]{display:none}#track-sheet-loop-val{text-align:center;min-width:2.2rem;font-size:1rem}.track-sheet-no-loop{color:var(--text-dim);font-size:.88rem}#track-sheet button,#track-sheet-gap{min-height:2.75rem;color:var(--text);background:#2a2a2a;border:1px solid #444;border-radius:4px;font-size:.9rem}#track-sheet button{cursor:pointer;padding:0 .8rem}#track-sheet button:disabled{opacity:.35;cursor:default}#track-sheet-loop-dec,#track-sheet-loop-inc{min-width:2.75rem;font-size:1.1rem}#track-sheet-gap{width:6rem;padding:0 .6rem}.track-sheet-actions{grid-template-columns:1fr 1fr 1fr;gap:.5rem;display:grid}#track-sheet-remove{color:#fff;background:#7a1010;border-color:#b44}#track-sheet-close{width:100%}@media (max-width:767px){#track-sheet{border:none;border-top:1px solid var(--border);border-radius:12px 12px 0 0;width:100%;max-width:none;max-height:85dvh;top:auto;bottom:0;left:0;transform:none;box-shadow:0 -6px 24px #00000080}.track-sheet-body{padding-bottom:calc(1rem + env(safe-area-inset-bottom))}}#machine-sheet{width:22rem;padding:0}.machine-sheet-body{max-height:inherit;flex-direction:column;gap:.5rem;padding:1.1rem 0 1rem;display:flex}#machine-sheet h2{margin:0 1.2rem}#machine-sheet-list{min-height:0;max-height:60dvh;overflow-y:auto}#machine-sheet .machine-btn{align-items:center;min-height:2.75rem;font-size:.95rem}#machine-sheet-close{min-height:2.75rem;color:var(--text);cursor:pointer;background:#2a2a2a;border:1px solid #444;border-radius:4px;margin:0 1.2rem;font-size:.9rem}@media (max-width:767px){#machine-sheet{border:none;border-top:1px solid var(--border);border-radius:12px 12px 0 0;width:100%;max-width:none;max-height:85dvh;top:auto;bottom:0;left:0;transform:none;box-shadow:0 -6px 24px #00000080}.machine-sheet-body{padding-bottom:calc(1rem + env(safe-area-inset-bottom))}}#toast{color:var(--text);opacity:0;pointer-events:none;z-index:100;white-space:nowrap;background:#1e2d3d;border:1px solid #3c64b4;border-radius:6px;align-items:center;gap:.75rem;padding:.55rem .9rem;font-size:.88rem;transition:opacity .22s;display:flex;position:fixed;bottom:1.2rem;left:50%;transform:translate(-50%)}#toast.visible{opacity:1;pointer-events:auto}#toast-undo{color:var(--accent);cursor:pointer;background:0 0;border:none;font-size:.88rem;text-decoration:underline}#toast-close{color:var(--text-dim);cursor:pointer;background:0 0;border:none;font-size:.95rem}#status{color:#484848;border-top:1px solid #1a1a1a;flex-shrink:0;min-height:1.5rem;padding:.3rem 1.2rem;font-size:.78rem}#app-footer{color:var(--text-dim);flex-shrink:0;justify-content:space-between;gap:.8rem;padding:.15rem 1.2rem .3rem;font-size:.68rem;display:flex}#app-footer span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}#app-footer a{color:var(--text-muted);flex-shrink:0}#status{display:none}@media (max-width:767px){#app-footer{display:none}#toast{bottom:calc(6.6rem + env(safe-area-inset-bottom));max-width:calc(100vw - 1.5rem)}#panel-playlist>.panel-hd{display:none}#panel-playlist .panel-select-area{padding:.4rem .6rem 0}#panel-playlist .playlist-header{margin-bottom:.4rem}#playlist-body{padding:0 .3rem .5rem}#playlist-body thead{display:none}.pl-track-table tbody tr{grid-template-rows:auto auto;grid-template-columns:2.4rem minmax(0,1fr) 2.75rem;align-items:center;column-gap:.4rem;padding:.15rem 0;display:grid}.pl-track-table tbody td{border-bottom:none;width:auto;min-width:0;padding:0}.pl-track-table tbody td:nth-child(2),.pl-track-table tbody td.track-machine,.pl-track-table tbody td.pl-settings-cell,.pl-track-table tbody td:nth-child(6){display:none}.pl-track-table td.drag-handle{grid-area:1/1/3;justify-content:center;align-items:center;width:auto;min-height:2.75rem;display:flex}.pl-track-table td.pl-track-name{flex-direction:column;grid-area:1/2/3;padding:.35rem 0;display:flex}.pl-track-title,.pl-track-sub{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.pl-track-title{font-size:.92rem}.pl-track-sub{color:var(--text-muted);font-size:.74rem;display:block}.pl-track-table td.pl-row-menu{grid-area:1/3/3;justify-self:end;display:block}.pl-row-menu-btn{border:1px solid var(--border);color:#9ab;cursor:pointer;background:0 0;border-radius:4px;min-width:2.75rem;min-height:2.75rem;font-size:1.1rem}.pl-row-menu-btn:hover{border-color:var(--text-muted);color:var(--text)}}#app-recovery{width:min(32rem,100% - 2rem);color:var(--text);z-index:200;background:#2d1e1e;border:1px solid #b44c3c;border-radius:6px;flex-direction:column;gap:.6rem;padding:.75rem 1rem;font-size:.9rem;display:flex;position:fixed;top:3.5rem;left:50%;transform:translate(-50%)}#app-recovery[hidden]{display:none}.app-recovery-actions{flex-wrap:wrap;justify-content:flex-end;gap:.5rem;display:flex}.app-recovery-actions button{background:var(--surface);color:var(--text);border:1px solid var(--border);cursor:pointer;border-radius:4px;padding:.4rem .9rem;font-size:.9rem}#app-recovery-login{border-color:var(--accent);color:var(--accent)}
