.rack-page{height:100vh;height:100dvh;overflow:hidden;display:flex;flex-direction:column;background:#1a1a1d;color:#ddd;font-family:Roboto Mono,SF Mono,Consolas,monospace}.rack-bar{display:flex;align-items:center;flex-wrap:wrap;gap:6px 14px;padding:8px 190px 8px 16px}.rack-bar h1{margin:0;font-size:16px;font-weight:600}.rack-hint{flex:1 1 0;min-width:0;font-size:12px;opacity:.7;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.rack-select{display:flex;align-items:center;gap:5px;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:#8a939c;white-space:nowrap}.rack-select select{font-family:inherit;font-size:11px;color:#ddd;background:#26282c;border:1px solid #3a3d42;border-radius:4px;padding:2px 4px;max-width:130px;cursor:pointer}.rack-select select:hover{border-color:#5a5d63}.rack-slot-toggles{display:flex;gap:4px}.rack-slot-toggle{font-family:inherit;font-size:11px;letter-spacing:.04em;color:#6d757e;background:none;border:1px solid #3a3d42;border-radius:4px;padding:2px 7px;cursor:pointer}.rack-slot-toggle:hover{color:#c6ccd2;border-color:#5a5d63}.rack-slot-toggle.is-on{color:#17191c;background:#c6ccd2;border-color:#c6ccd2}.rack-speaker{width:26px;height:26px;border-radius:50%;border:3px solid #ddd;background:#111;box-shadow:inset 0 0 0 4px #333}.rack-speaker-label{font-size:11px;letter-spacing:.08em;text-transform:uppercase;opacity:.7}.rack-speaker-pair{display:flex;align-items:center;gap:6px}.rack-speaker-side{font-size:11px;opacity:.7}.rack-main{flex:1;min-height:0;display:flex;justify-content:center;align-items:center;padding:0 10px 10px}.rack-row{display:flex;gap:10px}.rack-slot{height:100%;position:relative;-webkit-user-select:none;user-select:none}.rack-slot>*{width:100%;height:100%}.rack-slot svg{width:100%;height:100%;display:block}.module-panel-backdrop{position:fixed;inset:0;z-index:900}.rack-cables{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:800}.rack-cables path{fill:none;stroke-width:5;stroke-linecap:round;opacity:.85;pointer-events:stroke;cursor:pointer}.rack-cables path.is-ribbon{stroke:#6d757e;stroke-width:1.5;opacity:.28;pointer-events:none;cursor:default}.rack-jack{fill:transparent;stroke:transparent;stroke-width:2;pointer-events:all;cursor:pointer}.rack-jack.is-output:hover,.rack-jack.is-input:hover{stroke:#fff}.rack-jack.is-pending{stroke:#e8a33d;stroke-width:3;fill:#e8a33d59}@media(hover:none)and (pointer:coarse){*{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.rack-slot svg{touch-action:none}}
