:root{--bg: #14171c;--bg-2: #1b1f26;--panel: #21262f;--panel-2: #272d38;--line: #333b48;--line-2: #3e4757;--text: #e6eaf0;--text-dim: #9aa4b2;--text-mute: #69727f;--accent: #00ccff;--accent-2: #4ddbff;--accent-dim:#0a4f63;--good: #36d399;--warn: #f7b955;--bad: #f76d6d;--shadow: 0 4px 18px rgba(0,0,0,.35);--radius: 10px;--mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--sans: "Jost", "Futura", "Century Gothic", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif}*{box-sizing:border-box}html,body{margin:0;height:100%}body{background:radial-gradient(1200px 600px at 80% -10%,#1d2530 0%,transparent 60%),var(--bg);color:var(--text);font-family:var(--sans);font-size:14px;line-height:1.45;-webkit-font-smoothing:antialiased}.app{display:flex;flex-direction:column;min-height:100vh}header.topbar{position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:18px;padding:10px 20px;background:#14171cd9;backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:10px;font-weight:700;letter-spacing:.5px}.brand .dot{width:10px;height:10px;border-radius:50%;background:var(--text-mute);box-shadow:0 0 #0000;transition:background .25s,box-shadow .25s}.brand .dot.on{background:var(--good);box-shadow:0 0 10px 1px #36d39999}.brand .model{color:var(--text)}.brand .sub{color:var(--text-mute);font-weight:400;font-size:12px}.topbar .spacer{flex:1}.mode-ctl{display:flex;align-items:center;gap:8px;margin-right:6px}.mode-ctl .mode-label{font-size:11px;color:var(--text-mute);text-transform:uppercase;letter-spacing:.5px}#saveBtn:disabled{opacity:.4;cursor:default}#saveBtn:disabled:hover{filter:none}.topbar .pill{font-size:12px;color:var(--text-dim);background:var(--panel);border:1px solid var(--line);padding:5px 10px;border-radius:999px;white-space:nowrap}.topbar .pill b{color:var(--text);font-weight:600}nav.tabs{position:sticky;top:53px;z-index:40;display:flex;gap:4px;padding:8px 16px 0;background:#14171cb3;backdrop-filter:blur(8px);border-bottom:1px solid var(--line);overflow-x:auto}nav.tabs button{appearance:none;border:0;cursor:pointer;background:transparent;color:var(--text-dim);font:inherit;font-weight:600;font-size:13px;padding:9px 14px 11px;border-radius:8px 8px 0 0;border-bottom:2px solid transparent;white-space:nowrap}nav.tabs button:hover{color:var(--text);background:var(--bg-2)}nav.tabs button.active{color:var(--accent-2);border-bottom-color:var(--accent)}main{flex:1;padding:22px 20px 40px;max-width:1320px;width:100%;margin:0 auto}.appfoot{border-top:1px solid var(--line);padding:16px 20px 24px;max-width:1320px;width:100%;margin:0 auto;display:flex;flex-direction:column;align-items:center;gap:8px}.appfoot-brand{display:inline-flex;align-items:center;gap:9px;color:var(--text-dim);font-size:12.5px;text-decoration:none;transition:color .15s}.appfoot-brand:hover{color:var(--text)}.appfoot-brand img{border-radius:50%;display:block}.appfoot-brand b{color:var(--text);font-weight:600}.appfoot-link{color:var(--text-mute)}.appfoot-brand:hover .appfoot-link{color:var(--accent-2);text-decoration:underline}.appfoot-disclaimer{margin:0;max-width:640px;color:var(--text-mute);font-size:11px;line-height:1.5;text-align:center}.view{display:none}.view.active{display:block;animation:fade .18s ease}@keyframes fade{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.panel{background:linear-gradient(180deg,var(--panel) 0%,var(--bg-2) 140%);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px 20px;margin-bottom:20px}.panel>h2{margin:0 0 4px;font-size:15px;letter-spacing:.3px;display:flex;align-items:center;gap:10px}.panel>.hint{margin:0 0 16px;color:var(--text-mute);font-size:12.5px}.grid{display:grid;gap:14px}.row{display:flex;flex-wrap:wrap;gap:14px;align-items:flex-start}button.btn{appearance:none;cursor:pointer;font:inherit;font-weight:600;font-size:13px;color:var(--text);background:var(--panel-2);border:1px solid var(--line-2);border-radius:8px;padding:8px 14px;transition:.15s}button.btn:hover{border-color:var(--accent);color:#fff}button.btn:active{transform:translateY(1px)}button.btn.primary{background:linear-gradient(180deg,#00b6e6,#0093bd);border-color:#0093bd;color:#04222b}button.btn.primary:hover{filter:brightness(1.08);color:#04222b}button.btn.ghost{background:transparent}button.btn.danger:hover{border-color:var(--bad);color:var(--bad)}button.btn.sm{padding:5px 9px;font-size:12px}select.input,input.text{font:inherit;font-size:13px;color:var(--text);background:var(--bg);border:1px solid var(--line-2);border-radius:7px;padding:6px 8px}select.input:focus,input.text:focus{outline:none;border-color:var(--accent)}label.fld{display:inline-flex;flex-direction:column;gap:5px;font-size:12px;color:var(--text-dim)}.check{display:inline-flex;align-items:center;gap:8px;cursor:pointer;user-select:none;font-size:13px}.check input{display:none}.check .box{width:17px;height:17px;border-radius:5px;border:1px solid var(--line-2);background:var(--bg);display:grid;place-items:center;transition:.15s}.check input:checked+.box{background:var(--accent);border-color:var(--accent)}.check input:checked+.box:after{content:"";width:5px;height:9px;border:solid #04222b;border-width:0 2px 2px 0;transform:rotate(45deg) translate(-1px,-1px)}.switch{position:relative;width:40px;height:22px;display:inline-block}.switch input{display:none}.switch .track{position:absolute;inset:0;background:var(--bg);border:1px solid var(--line-2);border-radius:999px;transition:.15s}.switch .thumb{position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:var(--text-mute);transition:.15s}.switch input:checked+.track{background:var(--accent-dim);border-color:var(--accent)}.switch input:checked+.track+.thumb,.switch input:checked~.thumb{left:20px;background:var(--accent)}.matrix{display:grid;gap:3px;align-items:stretch;width:max-content;max-width:100%}.mx-corner{font-size:9px;color:var(--text-mute);display:flex;align-items:flex-end;justify-content:flex-end;padding:0 8px 6px 0;font-family:var(--mono)}.mx-corner.foot{align-items:flex-start;padding:6px 8px 0 0}.mx-colfoot{display:flex;flex-direction:column;align-items:center;gap:4px;padding:6px 4px 4px;text-align:center;line-height:1.15}.mx-colfoot.stereo{background:#00ccff0a;border-radius:0 0 8px 8px}.mx-colfoot .mx-dest{font-size:10px;color:var(--text-dim)}.mx-linksw{display:inline-flex;align-items:center;gap:5px;font-size:9px;color:var(--text-mute);cursor:pointer;user-select:none}.mx-linksw .switch{transform:scale(.8)}.mx-rowhead{font-size:11px;font-weight:600;color:var(--text-dim);display:flex;align-items:center;justify-content:flex-end;padding-right:8px;text-align:right;white-space:nowrap}.mx-rowhead.unused{color:var(--text-mute);opacity:.5}.mx-cell{position:relative;aspect-ratio:1;border:1px solid var(--line);border-radius:6px;background:var(--bg);overflow:hidden;cursor:ns-resize;user-select:none;touch-action:none}.mx-cell.off{background:var(--bg-2)}.mx-cell.dragging{border-color:var(--accent)}.mx-cell .mx-fill{position:absolute;left:0;right:0;bottom:0;background:linear-gradient(180deg,var(--accent) 0%,var(--accent-dim) 100%);opacity:.55;pointer-events:none;transition:height .04s linear}.mx-cell.off .mx-fill{opacity:0}.mx-cell .mx-db{position:absolute;top:6px;left:0;right:0;text-align:center;font-family:var(--mono);font-size:12px;color:var(--text);cursor:text;text-shadow:0 1px 2px rgba(0,0,0,.6)}.mx-cell.off .mx-db{color:var(--text-mute)}.mx-panwrap{position:absolute;left:7px;right:7px;bottom:7px;display:flex;flex-direction:column;align-items:stretch;gap:2px}input[type=range].mx-pan{width:100%;height:16px;min-width:0}.mx-panval{font-family:var(--mono);font-size:9px;color:var(--text-dim);text-align:center}input[type=range]{accent-color:var(--accent)}.tag{font-size:11px;color:var(--text-mute);font-family:var(--mono)}.badge{font-size:10px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;padding:2px 7px;border-radius:999px;background:var(--accent-dim);color:var(--accent-2)}.route-flow{display:grid;gap:6px}.route-col{display:grid;grid-template-columns:90px 1fr;gap:10px;align-items:center}.route-grid{display:grid;gap:6px}.route-chan{display:grid;grid-template-columns:34px 1fr;align-items:center;gap:8px;background:var(--bg-2);border:1px solid var(--line);border-radius:7px;padding:5px 8px}.route-chan .n{font-family:var(--mono);font-size:11px;color:var(--text-mute);text-align:center}.route-chan select{width:100%}.flow-label{font-size:11px;text-transform:uppercase;letter-spacing:1px;color:var(--accent-2);text-align:center;margin:4px 0}.flow-arrow{color:var(--text-mute);text-align:center;font-size:16px}.eq-grid{display:grid;gap:12px}.eq-ch{background:var(--bg-2);border:1px solid var(--line);border-radius:9px;padding:10px 12px}.eq-ch>.head{display:flex;align-items:center;gap:10px;margin-bottom:8px}.eq-bands{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.eq-band{background:var(--panel);border:1px solid var(--line);border-radius:7px;padding:8px}.eq-band.off{opacity:.5}.eq-band .brow{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-bottom:6px}.eq-band select.input{font-size:11px;padding:3px 4px}.eq-param{display:grid;grid-template-columns:26px 1fr 54px;align-items:center;gap:6px;margin:3px 0;font-size:11px;color:var(--text-dim)}.eq-param input[type=range]{width:100%}.eq-param .v{font-family:var(--mono);font-size:10.5px;color:var(--accent-2);text-align:right}.eq-param.disabled{opacity:.35}.toggle-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px}.toggle-cell{display:flex;align-items:center;justify-content:space-between;gap:8px;background:var(--bg-2);border:1px solid var(--line);border-radius:7px;padding:7px 10px;font-size:12.5px}.dc-row{display:grid;grid-template-columns:90px 1fr 60px;align-items:center;gap:12px;padding:6px 0}.dc-row input[type=range]{width:100%}.dc-row .v{font-family:var(--mono);font-size:12px;color:var(--accent-2);text-align:right}.logwrap{display:grid;grid-template-columns:1fr 1fr;gap:14px}textarea.console-box{width:100%;height:150px;resize:vertical;background:#0e1115;color:var(--text-dim);border:1px solid var(--line);border-radius:8px;padding:10px;font-family:var(--mono);font-size:11px}.muted{color:var(--text-mute)}.kbd{font-family:var(--mono);font-size:11px;background:var(--bg);border:1px solid var(--line-2);border-radius:5px;padding:1px 5px}.banner{display:flex;align-items:center;gap:10px;background:linear-gradient(180deg,#2a2230,#241b22);border:1px solid #5a3a3a;color:#f3c9c9;border-radius:9px;padding:10px 14px;margin-bottom:18px;font-size:13px}.banner.info{background:linear-gradient(180deg,#1c2733,#172029);border-color:#2c4456;color:#bfe2f2}details.advanced>summary{cursor:pointer;color:var(--text-dim);font-size:12.5px;font-weight:600}details.advanced[open]>summary{margin-bottom:14px}details.advanced>summary:hover{color:var(--accent-2)}.infobadge{display:inline-grid;place-items:center;width:16px;height:16px;border-radius:50%;font-size:11px;font-weight:700;line-height:1;color:var(--text-mute);border:1px solid var(--line-2);cursor:help;user-select:none;vertical-align:middle;transition:.15s}.infobadge:hover,.infobadge:focus-visible{color:var(--accent-2);border-color:var(--accent);outline:none}.has-tip{text-decoration:underline dotted var(--text-mute) 1px;text-underline-offset:3px;cursor:help}.has-tip:hover,.has-tip:focus-visible{text-decoration-color:var(--accent);outline:none}#tooltip{position:absolute;z-index:1000;pointer-events:none;display:none;max-width:320px;background:#0e1115;color:var(--text);border:1px solid var(--line-2);border-radius:8px;padding:9px 11px;font-size:12.5px;line-height:1.45;box-shadow:0 8px 28px #00000080;opacity:0;transform:translateY(2px);transition:opacity .12s,transform .12s}#tooltip.on{display:block;opacity:1;transform:none}#tooltip:after{content:"";position:absolute;left:var(--arrow-x, 50%);width:9px;height:9px;background:#0e1115;border:1px solid var(--line-2);transform:translate(-50%) rotate(45deg)}#tooltip[data-placement=top]:after{bottom:-5px;border-top:0;border-left:0}#tooltip[data-placement=bottom]:after{top:-5px;border-bottom:0;border-right:0}.flowdiagram{width:100%}.flowdiagram svg{width:100%;height:auto;display:block}.flow-node{cursor:help}.flow-node rect{transition:.15s}.flow-node:hover rect,.flow-node:focus-visible rect{stroke:var(--accent);filter:drop-shadow(0 0 6px rgba(0,204,255,.4));outline:none}.flow-node text{pointer-events:none}details.howto>summary{cursor:pointer;font-size:15px;font-weight:600;letter-spacing:.3px;display:flex;align-items:center;gap:10px;list-style:none}details.howto>summary::-webkit-details-marker{display:none}details.howto>summary:before{content:"\25b8";color:var(--text-mute);transition:.15s}details.howto[open]>summary:before{transform:rotate(90deg)}details.howto[open]>summary{margin-bottom:16px}.patchwrap{width:100%;overflow:auto}.patchsvg{width:100%;max-height:72vh}.patchsvg text,.flowdiagram text{font-family:var(--sans)}.patch-port{cursor:crosshair;transition:r .1s,fill .1s}.patch-port:hover{stroke:var(--accent);stroke-width:2}.patchsvg.dragging{cursor:crosshair}.patchsvg.dragging .patch-port{opacity:.2}.patchsvg.dragging .patch-port.valid{opacity:1;stroke:var(--accent);stroke-width:2}.patchsvg.dragging .patch-port.hot{opacity:1;r:8;stroke:#fff;stroke-width:2.5}.patch-rubber{pointer-events:none}.patch-x{opacity:0;pointer-events:none;cursor:pointer}.patch-x.on{opacity:1;pointer-events:auto}.patch-x:hover circle{fill:#ff8a8a}.patch-cable-hit{cursor:pointer}.patchbar{display:flex;justify-content:flex-end;align-items:center;gap:16px;padding:0 2px 8px}.patch-seg{display:inline-flex;border:1px solid var(--line-2);border-radius:7px;overflow:hidden}.patch-seg-btn{appearance:none;cursor:pointer;font:inherit;font-size:12px;font-weight:600;color:var(--text-dim);background:var(--bg);border:0;padding:4px 11px;transition:.12s}.patch-seg-btn+.patch-seg-btn{border-left:1px solid var(--line-2)}.patch-seg-btn:hover{color:var(--text)}.patch-seg-btn.active{background:var(--accent-dim);color:var(--accent-2)}.patch-legend{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--text-dim);margin-right:auto}.patch-toggle{display:inline-flex;align-items:center;gap:7px;font-size:12px;color:var(--text-dim);cursor:pointer;user-select:none}.patch-toggle input{cursor:pointer}.patch-toggle:has(input:disabled){color:var(--text-mute);cursor:default}.patch-toggle:has(input:disabled) .switch{opacity:.5}.patchsvg .patch-cable{transition:opacity .12s;pointer-events:none}.patchsvg .patch-cable.cable-hot{stroke-width:3}.patchsvg .patch-xpoint{pointer-events:none}.patchsvg.focusing .patch-cable{opacity:.07}.patchsvg.focusing .patch-cable.lit{opacity:1}.patchsvg .patch-port{transition:opacity .12s}.patchsvg.focusing .patch-port{opacity:.22}.patchsvg.focusing .patch-port.related{opacity:1}
