.rack-editor{--device-height: 169px;--header-height: 17px;--edit-panel: #2b2e36;--edit-panel-dark: #23262e;--edit-line: #16181d;--edit-text: #e8e8ea;--edit-dim: #9a9aa5;--edit-accent: #6ea8ff;--knob-track: #4a4d55;--knob-body: #1e2027;--macro-color: #6ea8ff;--knob-indicator: #4ec3e0;color:var(--edit-text);text-align:left;font-size:11px;font-family:-apple-system,Segoe UI,Roboto,sans-serif;user-select:none;-webkit-user-select:none}.rack-editor input{user-select:text;-webkit-user-select:text}.rack-editor *{scrollbar-width:thin;scrollbar-color:#4a4d55 transparent}.rack-editor *::-webkit-scrollbar{width:7px;height:7px}.rack-editor *::-webkit-scrollbar-track{background:transparent}.rack-editor *::-webkit-scrollbar-thumb{background:#4a4d55;border-radius:4px}.rack-editor *::-webkit-scrollbar-thumb:hover{background:#5d616b}.rack-side{flex:0 0 auto;display:flex;flex-direction:column;gap:2px;padding:2px;background:var(--edit-panel-dark);border-right:1px solid var(--edit-line);overflow-y:auto}.side-btn{width:15px;height:15px;padding:0;border:0;background:none;line-height:0;cursor:pointer}.side-btn svg{display:block}.side-btn:disabled{opacity:.35;cursor:default}.panel.collapsed{max-width:24px}@media(prefers-reduced-motion:reduce){.panel{transition:none}}.variations-panel{flex:0 0 auto;width:108px;padding:3px;border-right:1px solid var(--edit-line);overflow-y:auto;min-height:0}.variations-title{color:var(--edit-dim);font-size:10px;margin-bottom:3px}.variations-empty{margin:0;color:var(--edit-dim);font-size:10px}.variations-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:1px}.variations-list li{background:#3a3d45;border:1px solid var(--edit-line);border-radius:2px;padding:0 3px;font-size:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rack-editor button{font-family:inherit;font-size:11px}.rack-editor-scroll{overflow-x:auto;overflow-y:hidden;padding-bottom:4px;overscroll-behavior-x:contain;display:flex}.rack-row{display:flex;align-items:stretch;gap:2px;height:calc(var(--device-height) + var(--header-height));min-width:max-content;width:100%}.panel{flex:0 0 auto;height:100%;display:flex;max-width:460px;transition:max-width .2s ease;flex-direction:column;background:var(--edit-panel);border:1px solid var(--edit-line);border-radius:3px;overflow:hidden}.rack-boundary{flex:0 0 auto;width:5px;height:100%;border-radius:2px;background:linear-gradient(var(--boundary-color, #4a4d55),var(--boundary-color, #4a4d55)) no-repeat center / 1px 100%}.rack-boundary.start{background:linear-gradient(var(--boundary-color, #4a4d55),var(--boundary-color, #4a4d55)) no-repeat left top / 3px 1px,linear-gradient(var(--boundary-color, #4a4d55),var(--boundary-color, #4a4d55)) no-repeat left bottom / 3px 1px,linear-gradient(var(--boundary-color, #4a4d55),var(--boundary-color, #4a4d55)) no-repeat left center / 1px 100%}.rack-boundary.end{background:linear-gradient(var(--boundary-color, #4a4d55),var(--boundary-color, #4a4d55)) no-repeat right top / 3px 1px,linear-gradient(var(--boundary-color, #4a4d55),var(--boundary-color, #4a4d55)) no-repeat right bottom / 3px 1px,linear-gradient(var(--boundary-color, #4a4d55),var(--boundary-color, #4a4d55)) no-repeat right center / 1px 100%}.rack-boundary.depth-0{--boundary-color: #6a6e78}.rack-boundary.depth-1{--boundary-color: #7d8492}.rack-boundary.depth-2{--boundary-color: #8e97a8}.rack-boundary.depth-3{--boundary-color: #a0aabd}.editor-toolbar{display:flex;align-items:center;gap:.75rem;margin-bottom:.4rem}.editor-toolbar button,.more-toggle,.cancel-arm,.unbind,.device-collapse,.rack-disclosure{background:#3a3d45;color:var(--edit-text);border:1px solid var(--edit-line);border-radius:2px;padding:0 4px;cursor:pointer}.editor-toolbar button:disabled{opacity:.4;cursor:default}.armed-note{color:var(--edit-accent);display:flex;align-items:center;gap:.5rem}.warnings{margin:0 0 .4rem;padding:.3rem .5rem .3rem 1.4rem;border-left:3px solid #ff9f45;background:#241f18;color:#ffd9ad}.rack-panel{max-width:100%}.rack-panel.depth-1{background:#30333c}.rack-panel.depth-2{background:#353943}.rack-panel.depth-3{background:#3a3e49}.rack-panel.collapsed,.device-panel.collapsed{width:20px;min-width:20px;flex:0 0 20px}.device-title-strip{height:100%;width:100%;background:none;border:0;color:var(--edit-text);writing-mode:vertical-rl;text-orientation:mixed;padding:4px 0;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.rack-strip{background:#3f434e}.rack-header{display:flex;align-items:center;gap:5px;height:var(--header-height);padding:0 4px;background:var(--edit-panel-dark);border-bottom:1px solid var(--edit-line);flex:0 0 auto}.rack-name,.rack-name-input{margin:0;font-size:11px;font-weight:600;white-space:nowrap}.rack-name-input{background:#101116;border:1px solid var(--edit-accent);border-radius:2px;color:inherit;font-family:inherit;padding:0 2px;width:120px}.rack-kind{color:var(--edit-dim);font-size:10px;white-space:nowrap}.history-buttons{margin-left:auto;display:flex;gap:3px}.history-buttons button{background:#3a3d45;color:var(--edit-text);border:1px solid var(--edit-line);border-radius:2px;padding:0 5px;cursor:pointer}.history-buttons button:disabled{opacity:.35;cursor:default}.rack-body{display:flex;align-items:stretch;flex:1 1 auto;min-height:0;overflow:hidden}.macro-bank-wrap{flex:0 0 auto;padding:3px;border-right:1px solid var(--edit-line);overflow-y:auto;overflow-x:hidden}.macro-bank{display:grid;grid-auto-rows:auto;gap:2px}.macro-knob{position:relative;width:58px;height:78px;border:1px solid transparent;border-radius:2px;padding:1px;text-align:center;touch-action:manipulation}.macro-knob.unmapped{opacity:.8}.macro-knob.hidden-slot{border-style:dashed;border-color:var(--edit-line)}.macro-knob.bindable{border-color:var(--edit-accent)}.macro-knob.dragging{opacity:.35}.macro-knob.drop-reorder{border-color:var(--edit-accent);background:#1d2a3d}.macro-knob.drop-swap{border-color:#ffd166;background:#2e2a1c}.macro-knob.bind-target{border-color:#9ad49a;background:#1e2f1e}.macro-knob-dial{position:relative;cursor:grab;-webkit-user-select:none;user-select:none}.macro-bank-wrap.dragging .macro-knob-dial{cursor:grabbing}.macro-knob-dial svg{width:38px;height:38px;display:block;margin:0 auto}.knob-body{fill:var(--knob-body);stroke:#101116;stroke-width:1}.knob-track{fill:none;stroke:var(--knob-track);stroke-width:4;stroke-linecap:round}.knob-fill{fill:none;stroke:var(--knob-indicator);stroke-width:4;stroke-linecap:round}.knob-pointer{stroke:var(--knob-indicator);stroke-width:2;stroke-linecap:round}.knob-live{fill:none;stroke:#ffd166;stroke-width:2;stroke-dasharray:3 2}.macro-knob-slot{position:absolute;top:1px;left:2px;font-size:9px;color:var(--edit-dim)}.macro-knob-name,.macro-knob-name-input{display:block;font-size:10px;line-height:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:#3a3d45;border-radius:2px;padding:0 2px}.macro-knob.mapped .macro-knob-name{background:var(--macro-color);color:var(--macro-ink, #14151a);font-weight:600}.macro-knob-name-input{width:100%;border:1px solid var(--edit-accent);color:inherit;font-family:inherit}.macro-knob-swatch{position:absolute;top:1px;right:1px;width:8px;height:8px;border-radius:50%;border:1px solid rgba(0,0,0,.6);background:var(--macro-color);padding:0;cursor:pointer}.macro-knob-targets{list-style:none;margin:1px 0 0;padding:0;font-size:9px;line-height:11px;color:var(--edit-dim)}.macro-knob-targets li{display:flex;align-items:center;gap:2px;justify-content:center}.macro-knob-targets .target-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.unbind{padding:0 3px;font-size:9px;line-height:11px}.color-picker{position:fixed;z-index:100;display:grid;grid-template-columns:repeat(14,12px);gap:1px;padding:3px;background:#101116;border:1px solid #4a4d55;border-radius:3px}.color-swatch{width:12px;height:12px;border-radius:1px;border:1px solid rgba(0,0,0,.5);padding:0;cursor:pointer}.color-swatch.current{outline:2px solid #fff}.hidden-macros{position:absolute;bottom:2px;left:4px;color:#ffd9ad;font-size:9px}.chain-list{flex:0 0 auto;display:flex;align-items:stretch;border-right:1px solid var(--edit-line);background:var(--edit-panel-dark);max-width:220px}.pad-grid{display:grid;grid-template-columns:repeat(4,26px);grid-auto-rows:20px;gap:1px;padding:2px;align-content:start;border-right:1px solid var(--edit-line);overflow-y:auto}.pad{background:#3a3d45;border:1px solid var(--edit-line);border-radius:2px;color:var(--edit-text);font-size:9px;padding:0;cursor:pointer;overflow:hidden}.pad.selected{background:#ffd166;color:#14151a;font-weight:600}.chain-rows{display:flex;flex-direction:column;gap:1px;padding:2px;overflow-y:auto;min-width:90px}.chain-row{position:relative;display:flex;align-items:center;gap:3px;background:var(--chain-color, #3a3d45);border:1px solid var(--edit-line);border-radius:2px;color:var(--chain-ink, var(--edit-text));padding:1px 3px;cursor:pointer;text-align:left;flex:0 0 auto}.chain-row.selected{outline:2px solid var(--edit-accent);outline-offset:-2px;font-weight:600}.chain-note{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:9px;opacity:.8}.chain-row-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:92px;flex:1 1 auto}.chain-swatch{flex:0 0 auto;width:8px;height:8px;border-radius:50%;border:1px solid rgba(0,0,0,.6);background:var(--chain-color, #4a4d55);cursor:pointer}.device-panel{width:160px}.device-title{display:flex;align-items:center;gap:3px;height:var(--header-height);padding:0 3px;background:var(--edit-panel-dark);border-bottom:1px solid var(--edit-line);flex:0 0 auto}.device-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.device-collapse{line-height:1}.device-body{padding:3px;overflow-y:auto;flex:1 1 auto}.params{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:2px}.params li{display:flex;align-items:center;gap:2px}.param{background:#3a3d45;border:1px solid var(--edit-line);border-radius:2px;color:var(--edit-text);font-size:10px;padding:0 3px;cursor:pointer;max-width:148px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.param.armed{border-color:var(--edit-accent);background:#1d2a3d}.mapped-params{margin-bottom:2px}.mapped-params .param{background:var(--mapped-color, #2f4a2f);color:#14151a;font-weight:600;border-color:#00000073}.mapped-params .param.armed{background:#1d2a3d;color:var(--edit-text);border-color:var(--edit-accent)}.macro-badge{font-size:9px;color:var(--mapped-color, #9ad49a)}.more-toggle{margin-top:2px}.no-params{margin:0;font-size:10px;color:var(--edit-dim)}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.patch-cable-layer{position:fixed;top:0;right:0;bottom:0;left:0;width:100vw;height:100vh;pointer-events:none;z-index:50;overflow:visible}.patch-cable{fill:none;stroke:var(--edit-accent);stroke-width:3;stroke-linecap:round;opacity:.85}.patch-cable.will-connect{stroke:#9ad49a}.patch-cable.refused{stroke:#ff6b6b}.patch-cable.already-bound{stroke:var(--edit-dim);opacity:.5}.patch-cable.connected{stroke:#9ad49a}.patch-plug{fill:var(--edit-accent);stroke:#101116;stroke-width:1}.patch-plug.connected{fill:#9ad49a}.mapping-table{flex:1 1 460px;min-width:0;padding:6px 8px 8px;border:1px solid var(--edit-line);border-radius:4px;background:#1a1c22}.rack-filler{flex:1 1 0;min-width:0;height:100%;margin-left:2px;pointer-events:none;border-radius:2px;background-image:repeating-linear-gradient(to right,var(--edit-panel, #1f2129) 0,var(--edit-panel, #1f2129) 15px,transparent 15px,transparent 17px);opacity:.5}.editor-panels{display:flex;flex-wrap:wrap;align-items:flex-start;gap:10px;margin-top:8px}.contract-head h3,.mapping-table h3{margin:0;font-size:12px;font-weight:600;letter-spacing:.02em;color:var(--edit-text)}.mapping-table h3{display:flex;align-items:center;gap:6px;margin-bottom:4px}.mapping-count{background:#3a3d45;border-radius:8px;padding:0 5px;color:var(--edit-text)}.mapping-empty{margin:0;color:var(--edit-dim)}.mapping-grid{width:100%;border-collapse:collapse;table-layout:fixed}.mapping-grid th{text-align:left;font-weight:500;color:var(--edit-dim);background:#23252b;border-bottom:1px solid var(--edit-line);padding:1px 4px}.mapping-grid td{padding:1px 4px;border-bottom:1px solid var(--edit-line);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mapping-grid tbody tr:hover td{background:#23252b}.mapping-grid .col-macro{width:26%;border-left:3px solid var(--mapped-color, var(--edit-accent));color:var(--mapped-color, var(--edit-text));font-weight:600}.mapping-grid th.col-macro{border-left:3px solid transparent}.mapping-grid .col-path{width:26%;color:var(--edit-dim)}.mapping-grid .col-name{width:22%;color:var(--edit-text)}.mapping-grid .col-num{width:9%;text-align:right}.mapping-grid .col-actions{width:8%;text-align:right;white-space:nowrap}.mapping-slot{display:inline-block;background:var(--mapped-color, var(--edit-accent));color:#14151a;border-radius:2px;padding:0 3px;margin-right:4px;font-size:9px}.mapping-range{width:100%;background:#14151a;border:1px solid var(--edit-line);border-radius:2px;color:var(--edit-text);font:inherit;text-align:right;padding:0 3px}.mapping-range:focus{outline:none;border-color:var(--edit-accent)}.mapping-invert,.mapping-unbind{background:#3a3d45;color:var(--edit-text);border:1px solid var(--edit-line);border-radius:2px;padding:0 4px;font-size:9px;line-height:13px;cursor:pointer}.mapping-invert.is-inverted{background:var(--edit-accent);color:#14151a}.mapping-invert:hover{border-color:var(--edit-accent)}.mapping-unbind:hover{background:#7a3a3a;border-color:#b05555}.more-targets{color:var(--edit-dim);font-size:9px}.map-button{margin-left:auto;font-size:10px;padding:1px 7px;border:1px solid var(--edit-line);border-radius:3px;background:transparent;color:var(--edit-dim);cursor:pointer}.map-button.on{background:var(--edit-accent);border-color:var(--edit-accent);color:#101116;font-weight:600}.mapping-note{font-size:11px;color:var(--edit-accent)}.editor-messages{display:flex;align-items:center;min-height:20px;margin-bottom:4px;padding:0 2px;overflow:hidden;font-size:11px}.editor-messages .warnings{display:flex;flex-wrap:wrap;gap:2px 12px;margin:0;padding:1px 6px;border-left:3px solid #ff9f45;background:#241f18;color:#ffd9ad;border-radius:2px;list-style:none;max-height:18px;overflow:hidden}.param.mappable,.macro-knob.map-source .macro-knob-dial{cursor:grab}.macro-knob.map-source .knob-body{stroke:var(--edit-accent);stroke-width:1.5}.macro-knob-name.derived{font-style:italic}.mapping-cable-layer{position:fixed;top:0;right:0;bottom:0;left:0;width:100vw;height:100vh;pointer-events:none;z-index:40;overflow:visible}.mapping-cable{fill:none;stroke-width:2;stroke-linecap:round;opacity:.55}.mapping-plug{stroke:#101116;stroke-width:1;opacity:.8}.contract-strip{flex:1 1 460px;min-width:0;padding:6px 8px 8px;border:1px solid var(--edit-line);border-radius:4px;background:#1a1c22}.contract-head{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin-bottom:6px}.contract-head h3{margin:0;font-size:12px;font-weight:600;letter-spacing:.02em;color:var(--edit-text)}.contract-rack-name{display:flex;align-items:center;gap:5px;font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:var(--edit-dim)}.contract-code{width:170px;padding:2px 5px;font:inherit;font-size:12px;color:var(--edit-text);background:#101116;border:1px solid var(--edit-line);border-radius:3px}.contract-io{display:flex;gap:3px;margin-left:auto}.contract-io button{font-size:9px;padding:2px 6px;color:var(--edit-dim);background:transparent;border:1px solid var(--edit-line);border-radius:3px;cursor:pointer}.contract-io button:hover{color:var(--edit-text)}.contract-columns{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-start}.contract-column{flex:1 1 140px;min-width:130px}.contract-settings{flex:1 1 200px}.contract-column h4{margin:0 0 3px;font-size:9px;font-weight:500;text-transform:uppercase;letter-spacing:.05em;color:var(--edit-dim)}.contract-list{display:flex;flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;max-height:116px;overflow-y:auto}.contract-list li{display:flex;align-items:stretch;gap:2px}.contract-entry{flex:1;display:flex;align-items:center;gap:6px;padding:3px 6px;font:inherit;font-size:11px;text-align:left;color:var(--edit-text);background:#14151a;border:1px solid var(--edit-line);border-radius:3px;cursor:pointer}.contract-entry:hover{border-color:var(--edit-accent)}.contract-entry.filled{border-color:transparent}.contract-entry.selected{outline:1px solid var(--edit-text);outline-offset:1px}.contract-entry-name{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.contract-entry-state{flex:0 0 auto;font-size:8px;text-transform:uppercase;letter-spacing:.03em;padding:0 4px;border-radius:999px;background:#00000047;opacity:.85}.contract-entry-state.absent{background:#7a3434;opacity:1}.contract-chip{flex:0 0 auto;width:11px;height:11px;border:1px solid rgba(0,0,0,.55);border-radius:2px}.contract-remove{flex:0 0 auto;width:18px;font-size:10px;color:var(--edit-dim);background:transparent;border:1px solid var(--edit-line);border-radius:3px;cursor:pointer}.contract-remove:hover{color:#ff6b6b;border-color:#ff6b6b}.contract-empty{padding:3px 2px;margin:0;font-size:10px;color:var(--edit-dim);list-style:none}.contract-settings{display:flex;flex-direction:column;gap:4px;padding-left:8px;border-left:1px solid var(--edit-line)}.contract-field{display:flex;flex-direction:column;gap:2px;font-size:9px;text-transform:uppercase;letter-spacing:.04em;color:var(--edit-dim)}.contract-field-row{display:flex;align-items:center;gap:4px}.contract-pattern{flex:1;min-width:0;padding:2px 4px;font:inherit;font-size:11px;text-transform:none;letter-spacing:0;color:var(--edit-text);background:#101116;border:1px solid var(--edit-line);border-radius:2px}.contract-swatch{flex:0 0 auto;width:18px;height:18px;border:1px solid #101116;border-radius:2px;cursor:pointer}.contract-setting{display:flex;align-items:flex-start;gap:4px;font-size:11px;color:var(--edit-text);cursor:pointer}.contract-setting span{display:flex;flex-direction:column;gap:1px}.contract-note{margin:0;font-size:9px;font-style:normal;line-height:1.35;color:var(--edit-dim)}.contract-note.warn{color:#d8c07a}.contract-templates{display:flex;flex-wrap:wrap;align-items:center;gap:4px;margin-left:auto;font-size:9px;text-transform:uppercase;letter-spacing:.04em;color:var(--edit-dim)}.contract-templates label{display:flex;align-items:center;gap:4px}.contract-templates select,.contract-template-name{font:inherit;font-size:11px;text-transform:none;letter-spacing:0;padding:2px 4px;color:var(--edit-text);background:#101116;border:1px solid var(--edit-line);border-radius:3px}.contract-template-name{width:110px}.contract-templates button{font-size:9px;padding:2px 6px;text-transform:none;letter-spacing:0;color:var(--edit-dim);background:transparent;border:1px solid var(--edit-line);border-radius:3px;cursor:pointer}.contract-templates button:hover{color:var(--edit-text)}.contract-arrows{display:flex;flex-direction:column;gap:4px;align-self:center}.contract-arrows button{width:28px;padding:3px 0;font-size:11px;color:var(--edit-text);background:#14151a;border:1px solid var(--edit-line);border-radius:3px;cursor:pointer}.contract-arrows button:disabled{opacity:.35;cursor:default}.contract-arrows button:not(:disabled):hover{border-color:var(--edit-accent);color:var(--edit-accent)}.contract-grip{display:flex;align-items:center;padding:0 2px;font-size:10px;line-height:1;letter-spacing:-1px;color:var(--edit-dim);cursor:grab;-webkit-user-select:none;user-select:none}.contract-list li.dragging{opacity:.55}.contract-entry-slot{flex:0 0 auto;min-width:12px;font-size:9px;opacity:.8}.macro-knob-reset{position:absolute;top:0;left:0;display:flex;align-items:center;justify-content:center;width:14px;height:14px;padding:0;font-size:9px;font-weight:700;line-height:1;color:#f4f5f8;background:#4a4f5c;border:1px solid #101116;border-radius:50%;box-shadow:inset 0 1px #ffffff40;cursor:pointer;opacity:0;transition:opacity .12s ease,background .12s ease}.macro-knob:hover .macro-knob-reset,.macro-knob-reset:focus-visible{opacity:1}.macro-knob-reset:hover{background:#ff6b6b;color:#101116}.macro-knob:hover .macro-knob-reset+.macro-knob-dial .macro-knob-slot,.macro-knob:hover .macro-knob-dial .macro-knob-slot{opacity:0;transition:opacity .12s ease}.mapping-expand-all{margin-left:6px;font-size:9px;padding:1px 5px;color:var(--edit-dim);background:transparent;border:1px solid var(--edit-line);border-radius:3px;cursor:pointer}.mapping-expand-all:hover{color:var(--edit-text)}.mapping-summary{cursor:pointer}.mapping-fanout{margin-left:5px;padding:0 4px;border-radius:999px;background:#2e313a;color:var(--edit-dim);font-size:9px}.mapping-open{padding:0 5px;color:var(--edit-dim);background:transparent;border:1px solid var(--edit-line);border-radius:3px;cursor:pointer}.contract-bands{display:flex;flex-direction:column;gap:2px}.contract-band{display:flex;align-items:center;gap:4px}.contract-band .contract-setting{min-width:44px}.contract-band .contract-pattern:disabled{opacity:.4}.contract-grip{touch-action:none}.param.mappable{touch-action:manipulation}.mapping-scroll{overflow-x:auto;overscroll-behavior-x:contain}.mapping-grid{min-width:620px}@media(pointer:coarse){.macro-knob-reset,.macro-knob-swatch,.chain-swatch{min-width:18px;min-height:18px}.side-btn{width:22px;height:22px}.side-btn svg{width:20px;height:20px}.contract-grip{padding:0 6px}.contract-arrows button{width:40px;padding:8px 0}}@media(max-width:640px){.contract-strip,.mapping-table{padding:5px}.contract-templates{margin-left:0;width:100%}.contract-column{flex-basis:100%}.contract-arrows{flex-direction:row;width:100%;justify-content:center}.contract-arrows button{flex:1;max-width:120px}}.plugin-strip{margin-bottom:6px;padding:6px 8px 7px;border:1px solid var(--edit-line);border-radius:4px;background:#1a1c22}.plugin-strip-head{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin-bottom:5px}.plugin-strip-head h3{margin:0;font-size:12px;font-weight:600;letter-spacing:.02em;color:var(--edit-text)}.plugin-count{margin-left:5px;padding:0 4px;font-size:10px;color:var(--edit-dim);border:1px solid var(--edit-line);border-radius:8px}.plugin-scan{margin-left:auto;font-size:9px;padding:2px 6px;color:var(--edit-dim);background:transparent;border:1px solid var(--edit-line);border-radius:3px;cursor:pointer}.plugin-scan:hover{color:var(--edit-text);border-color:var(--edit-accent)}.plugin-progress{margin-left:auto;font-size:10px;color:var(--edit-dim);max-width:320px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.plugin-list{margin:0;padding:0;list-style:none;display:flex;flex-wrap:wrap;gap:4px}.plugin-item{display:flex;align-items:baseline;gap:6px;padding:3px 7px;background:#101116;border:1px solid var(--edit-line);border-radius:3px}.plugin-missing{border-color:#6a4a2a}.plugin-name{font-size:11px;color:var(--edit-text)}.plugin-uid{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:10px;color:var(--edit-dim)}.plugin-where,.plugin-instances{font-size:10px;color:var(--edit-dim)}.plugin-state{font-size:9px;text-transform:uppercase;letter-spacing:.04em;color:#d0954a}.plugin-note,.plugin-error{margin:5px 0 0;font-size:10px;color:var(--edit-dim)}.plugin-error{color:#e0736a}.mapping-fixed{color:var(--edit-dim);font-variant-numeric:tabular-nums}.mapping-grid th .mapping-sort{display:flex;align-items:center;gap:3px;width:100%;padding:0;font:inherit;color:inherit;text-align:left;background:transparent;border:0;cursor:pointer}.mapping-grid th.is-sorted .mapping-sort{color:var(--edit-text)}.mapping-sort-arrow{font-size:8px;color:var(--edit-accent)}.contract-adopt{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 6px;padding:5px 8px;font-size:11px;color:var(--edit-text);background:#23201a;border:1px solid #6a4a2a;border-radius:4px}.adopt-yes,.adopt-no{padding:2px 8px;font:inherit;font-size:10px;color:var(--edit-text);background:transparent;border:1px solid var(--edit-line);border-radius:3px;cursor:pointer}.adopt-yes{color:#101116;background:#d0954a;border-color:#d0954a}.adopt-cancel{font:inherit;font-size:10px;color:var(--edit-dim);background:transparent;border:0;cursor:pointer}.contract-adopt.inline{display:block;margin-top:6px;line-height:1.5}.contract-adopt.inline .adopt-yes{margin-left:6px}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,Segoe UI,Roboto,sans-serif;background:#14151a;color:#e8e8ea}.app{max-width:1500px;margin:0 auto;padding:2rem 1rem 4rem}.app>header,.transfer,.getting-started,.error{max-width:900px;margin-inline:auto;text-align:center}.logo{max-width:190px;width:100%;height:auto;border-radius:8px}.transfer{display:grid;grid-template-columns:1fr 1fr;align-items:stretch;gap:.75rem;max-width:900px;margin:0 auto}.dropzone,.exportzone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.45rem;min-height:132px;padding:.9rem;border-radius:8px;text-align:center}.dropzone{border:2px dashed #3a3d45;transition:border-color .15s ease,background .15s ease}.dropzone-active{border-color:#6ea8ff;background:#1a1c22}.exportzone{border:2px solid #2e313a;background:#16181d}.transfer-title{margin:0;font-size:.9rem;color:#e8e8ea}.transfer-note{margin:0;font-size:.72rem;line-height:1.35;color:#9a9aa5}.transfer-button{display:inline-flex;align-items:center;justify-content:center;min-width:150px;padding:.5rem 1rem;font:inherit;font-size:.85rem;font-weight:600;color:#101116;background:#6ea8ff;border:0;border-radius:6px;cursor:pointer}.transfer-button:hover:not(:disabled){background:#8bbaff}.transfer-button:disabled{background:#2e313a;color:#6a6d78;cursor:default}.file-input{display:none}.transfer-secondary{margin-top:.4rem;padding:.35rem .8rem;font:inherit;font-size:.78rem;color:#c9ccd6;background:transparent;border:1px solid #3a3d47;border-radius:6px;cursor:pointer}.transfer-secondary:hover{border-color:#6ea8ff;color:#e8e8ea}.overwrite-confirm{display:flex;align-items:center;justify-content:center;gap:.5rem;margin:.4rem 0 0}.overwrite-yes{padding:.35rem .8rem;font:inherit;font-size:.78rem;font-weight:600;color:#101116;background:#d0954a;border:0;border-radius:6px;cursor:pointer}.overwrite-no{font:inherit;font-size:.78rem;color:#9a9aa5;background:transparent;border:0;cursor:pointer}@media(max-width:640px){.transfer{grid-template-columns:1fr}}.error{max-width:900px;margin-inline:auto}.rack-view{width:100%}.app>header{text-align:center}.logo{max-width:280px;width:100%;height:auto;border-radius:8px}.app>header h1{margin-bottom:.25rem}.badge{font-size:.6em;font-weight:600;color:#ff9f45;border:1px solid #ff9f45;border-radius:4px;padding:.1em .4em;vertical-align:middle}.tagline{color:#9a9aa5;margin-top:0}.companion-download{color:#9a9aa5;font-size:.85rem;margin:.25rem 0 0}.companion-download a{color:#6ea8ff}.error{color:#ff6b6b}.note{color:#9a9aa5;font-size:.9rem}.rack-view{margin-top:2rem}.tree,.tree ul{list-style:none;padding-left:1.1rem;margin:.2rem 0}.tree{padding-left:0}.tag{font-family:ui-monospace,monospace;background:none;border:none;color:#6ea8ff;cursor:pointer;padding:0;font-size:.9rem}.tag.leaf{color:#7fcf8a;cursor:default}.headline{font-family:ui-monospace,monospace;font-size:.85rem;color:#d0d0d6}.child-count{color:#6a6a75;font-size:.8rem}.rack-actions{display:flex;align-items:center;gap:1rem;margin-bottom:.5rem}.save-button{background:#2a6df4;color:#fff;border:0;border-radius:4px;padding:.4rem .9rem;font:inherit;font-weight:600;cursor:pointer}.raw-toggle{font-size:.8rem;color:#9a9aa5}.guide-steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}.guide-steps{grid-template-columns:1fr}.guide-steps li{background:#1a1c22;border:1px solid #2e313a;border-radius:6px;padding:.6rem;display:flex;flex-direction:column;gap:.5rem}.guide-text{font-size:.85rem;color:#c9c9d1}.guide-text strong{color:#e8e8ea}.guide-steps img{max-width:100%;border-radius:4px;border:1px solid #2e313a}.companion-card{display:inline-flex;align-items:center;gap:.5rem;padding:.25rem .55rem;background:#1a1c22;border:1px solid #2e313a;border-radius:6px;color:#6ea8ff;text-decoration:none;font-size:.85rem}.companion-card:hover{border-color:#6ea8ff}.version-badge{padding:.1rem .4rem;border-radius:999px;background:#2e313a;color:#e8e8ea;font-size:.75rem}.companion-card img{height:20px;width:auto}.app-embedded{max-width:none;padding:.5rem .75rem 1rem}.app-embedded .dropzone,.app-embedded .exportzone{min-height:92px;padding:.6rem}.app-embedded .rack-view{margin-top:.75rem}@media(max-width:640px){.app{padding:1rem .6rem 2rem}.app>header img{max-width:160px}.app>header h1{font-size:1.5rem}.dropzone,.exportzone{min-height:108px;padding:.75rem}}@supports (padding: env(safe-area-inset-left)){@media(display-mode:standalone){.app{padding-left:max(.6rem,env(safe-area-inset-left));padding-right:max(.6rem,env(safe-area-inset-right));padding-bottom:max(2rem,env(safe-area-inset-bottom))}}}.getting-started{display:flex;flex-direction:column;align-items:center;gap:.35rem;margin-top:1.5rem;color:#9a9aa5;font-size:.85rem}.getting-started .lead{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.5rem;margin:0;max-width:640px;color:inherit;font-size:inherit}.help-button{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;font:inherit;font-size:.8rem;font-weight:700;color:#9a9aa5;background:transparent;border:1px solid #3a3d45;border-radius:50%;cursor:pointer;flex:0 0 auto}.help-button:hover{color:#6ea8ff;border-color:#6ea8ff}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:1rem;background:#0a0b0eb8}.modal{width:min(920px,100%);max-height:min(86vh,900px);display:flex;flex-direction:column;background:#16181d;border:1px solid #2e313a;border-radius:10px;text-align:left;overflow:hidden}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.7rem .9rem;border-bottom:1px solid #2e313a}.modal-head h2{margin:0;font-size:1rem}.modal-close{width:26px;height:26px;font:inherit;font-weight:700;color:#9a9aa5;background:transparent;border:1px solid #3a3d45;border-radius:6px;cursor:pointer}.modal-close:hover{color:#ff6b6b;border-color:#ff6b6b}.modal-body{padding:.9rem;overflow-y:auto;font-size:.85rem;line-height:1.55;color:#c9c9d1}.modal-body p{margin:0 0 .7rem}.modal-body a{color:#6ea8ff}.modal .guide-steps{grid-template-columns:repeat(auto-fit,minmax(210px,1fr));margin:0}.modal .guide-steps img{width:100%;max-height:150px;object-fit:contain;object-position:left top}
