/*! (c) 2026 Format S.r.l. All rights reserved. Unauthorized use, copying or redistribution is prohibited. License: /LICENSE.txt */
:root{--bg-page:#e9eef1;--toolbar-bg:#f0f3f6;--toolbar-fg:#2a3340;--toolbar-hover:#e2e8ef;--toolbar-active:#d4dce5;--tb-sep:#c8d0da;--tb-hint:#7a8a9a;--ctrl-bg:#ffffff;--ctrl-border:#c0c8d2;--ctrl-border-hover:#99a4b2;--dialog-fg:#333;--input-bg:#ffffff;--input-border:#bbb;--field-bg:#ffffff;--accent:#2a6ebb;--accent-hover:#1d5096;--accent-check:#4a90d9;--axis-x:#e5484d;--axis-y:#46b87e;--axis-z:#4f9be8;--hud-panel-bg:rgba(248,250,252,.72);--hud-panel-border:rgba(40,51,64,.1);--hud-divider:rgba(40,51,64,.12);--hud-label:#7a8a9a;--hud-good:#2e9e6b;--hud-warn:#c98a2a;--hud-bad:#d83b40;--tt-bg:var(--hud-panel-bg);--tt-border:var(--hud-panel-border);--tt-shadow:0 6px 22px rgba(0,0,0,.22);--tt-divider:var(--hud-divider);--tt-fg:var(--toolbar-fg);--tt-title:var(--toolbar-fg);--tt-subtitle:var(--tb-hint);--tt-value:var(--toolbar-fg);--tt-muted:var(--tb-hint);--tt-muted2:var(--tb-hint);--tt-chip-bg:rgba(0,0,0,.05);--tt-conn-id:#2c8b96;--tt-conveyor:#7fb0e8;--tt-conveyor-bg:rgba(127,176,232,.1);--tt-conveyor-border:rgba(127,176,232,.28);--tt-pallet:#d39a5c;--tt-pallet-accent:#c89154;--tt-pallet-bg:rgba(200,145,84,.12);--tt-pallet-border:rgba(200,145,84,.3);--tt-shelf:#4db6a4;--tt-shelf-bg:rgba(77,182,164,.12);--tt-shelf-border:rgba(77,182,164,.3);--tt-machine:#3aa6b8;--tt-machine-bg:rgba(58,166,184,.12);--tt-machine-border:rgba(58,166,184,.3);--tt-path:#9b8cdb;--tt-path-bg:rgba(155,140,219,.12);--tt-path-border:rgba(155,140,219,.32);--tt-guard:#d3a92c;--tt-guard-bg:rgba(211,169,44,.12);--tt-guard-border:rgba(211,169,44,.32);--tt-fimg:#0d9488;--tt-fimg-bg:rgba(20,184,166,.12);--tt-fimg-border:rgba(20,184,166,.32);--tt-fimg-plate:#000000;--tt-gate-open:#2e9e6b;--tt-gate-open-bg:rgba(70,184,126,.12);--tt-gate-open-border:rgba(70,184,126,.35);--tt-gate-closed:#d83b40;--tt-gate-closed-bg:rgba(229,72,77,.12);--tt-gate-closed-border:rgba(229,72,77,.35);--tt-dir-in:#4f9be8;--tt-dir-out:#46b87e;--tt-dir-both:#d8a64d;--tt-rate:#46b87e;--marquee-window:#6688ff;--marquee-window-fill:rgba(102,136,255,.15);--marquee-crossing:#33cc55;--marquee-crossing-fill:rgba(51,204,85,.15)}:root[data-theme=dark]{--bg-page:#11161d;--toolbar-bg:#1e2530;--toolbar-fg:#d0d8e4;--toolbar-hover:#2e3c50;--toolbar-active:#253348;--tb-sep:#3a4455;--tb-hint:#7a8a9a;--ctrl-bg:#2e3c50;--ctrl-border:#3a4455;--ctrl-border-hover:#4a5c70;--dialog-fg:#d0d8e4;--input-bg:#1a2029;--input-border:#3a4455;--field-bg:#11161D;--accent:#2a6ebb;--accent-hover:#3a82d6;--accent-check:#4a90d9;--axis-x:#e5484d;--axis-y:#46b87e;--axis-z:#4f9be8;--hud-panel-bg:rgba(22,28,38,.78);--hud-panel-border:rgba(125,145,170,.16);--hud-divider:rgba(125,145,170,.16);--hud-label:#8794a6;--hud-good:#46b87e;--hud-warn:#d8a64d;--hud-bad:#e5484d;--tt-chip-bg:rgba(255,255,255,.06);--tt-conn-id:#8fc9d1;--tt-machine:#4fd0e3;--tt-machine-bg:rgba(79,208,227,.14);--tt-machine-border:rgba(79,208,227,.38);--tt-path:#b3a4f0;--tt-path-bg:rgba(179,164,240,.16);--tt-path-border:rgba(179,164,240,.4);--tt-guard:#ecc44e;--tt-guard-bg:rgba(236,196,78,.14);--tt-guard-border:rgba(236,196,78,.38);--tt-fimg:#2dd4bf;--tt-fimg-bg:rgba(45,212,191,.14);--tt-fimg-border:rgba(45,212,191,.38);--tt-gate-open:#46b87e;--tt-gate-open-bg:rgba(70,184,126,.16);--tt-gate-open-border:rgba(70,184,126,.42);--tt-gate-closed:#e5484d;--tt-gate-closed-bg:rgba(229,72,77,.16);--tt-gate-closed-border:rgba(229,72,77,.42)}:focus-visible{outline:2px solid var(--accent, #2a6ebb);outline-offset:2px;border-radius:3px}html,body{height:100%;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial;background:var(--bg-page, #e9eef1);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#canvas-container{position:absolute;inset:0;overflow:hidden}#ui{position:absolute;left:12px;top:12px;z-index:100;background:#ffffffeb;padding:10px;border-radius:6px;box-shadow:0 6px 18px #0000001f;min-width:160px}#ui button{display:block;width:100%;margin:6px 0;padding:8px 10px;border:none;border-radius:4px;background:linear-gradient(180deg,#f3f6f8,#e9eef1);cursor:pointer;box-shadow:0 1px #fff9 inset}#ui button:hover{filter:brightness(.98)}#ui button:active{transform:translateY(1px)}#ui .label{font-size:12px;color:#333;margin-top:6px}@media (max-width: 520px){#ui{left:8px;top:8px;min-width:140px;padding:8px}#ui button{padding:6px 8px}}.hidden{display:none!important}.small{font-size:12px}.panel{margin-top:8px;padding:6px;background:#00000008;border-radius:4px}.panel pre{margin:0;font-size:12px;max-height:160px;overflow:auto}*{box-sizing:border-box}html,body{height:100%;margin:0;font-family:system-ui,sans-serif;background:var(--bg-page);-webkit-user-select:none;user-select:none}input,textarea{-webkit-user-select:text;user-select:text}#canvas-container{position:absolute;inset:0}#loader{position:fixed;inset:0;z-index:300;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;background:var(--bg-page);transition:opacity .35s ease}#loader.hidden{opacity:0;pointer-events:none}#loader.instant{transition:none}#loader.dimmed{background:#00000073}#loader .spinner{width:54px;height:54px;border-radius:50%;border:5px solid var(--tb-sep);border-top-color:var(--accent);animation:spin .8s linear infinite}#loader .loader-text{color:var(--toolbar-fg);font-size:14px;letter-spacing:.4px}@keyframes spin{to{transform:rotate(360deg)}}#main-menu,#edit-menu,#edit-actions,#inspector-panel,#nav-cube,#mouse-hints,.hud-panel,.toast,#layout-picker,#add-picker{background:var(--hud-panel-bg);border:1px solid var(--hud-panel-border);box-shadow:0 6px 22px #00000038;-webkit-backdrop-filter:blur(10px) saturate(1.3);backdrop-filter:blur(10px) saturate(1.3)}.ui-tip{position:fixed;z-index:10001;pointer-events:none;display:none;max-width:236px;padding:6px 10px;border-radius:9px;color:var(--tt-fg);background:var(--tt-bg);border:1px solid var(--tt-border);box-shadow:var(--tt-shadow);-webkit-backdrop-filter:blur(10px) saturate(1.3);backdrop-filter:blur(10px) saturate(1.3);font-family:IBM Plex Sans,system-ui,-apple-system,sans-serif;font-size:11.5px;line-height:1.35;font-weight:500;opacity:0;transform:translateY(3px);transition:opacity .12s ease,transform .12s ease}.ui-tip.show{opacity:1;transform:none}.ui-tip-body{position:relative;z-index:1}.ui-tip-text{display:block}.ui-tip-row{display:flex;align-items:center;gap:7px}.ui-tip-icon{display:flex;flex:none;color:var(--accent)}.ui-tip-icon svg{width:16px;height:16px;display:block}.ui-tip-title{font-weight:600;font-size:12px;color:var(--tt-title)}.ui-tip-desc{margin-top:5px;font-size:11px;font-weight:400;color:var(--tt-subtitle);line-height:1.4}#main-menu{position:fixed;top:12px;right:12px;z-index:20;display:flex;flex-direction:column;align-items:flex-end;gap:3px;padding:8px 24px 8px 8px;border-radius:10px;color:var(--toolbar-fg);-webkit-user-select:none;user-select:none}#main-menu.hidden{display:none}#edit-menu,#edit-actions{position:fixed;right:12px;z-index:20;display:flex;flex-direction:column;align-items:flex-end;gap:6px;padding:8px;border-radius:10px;color:var(--toolbar-fg);-webkit-user-select:none;user-select:none}#edit-menu{top:72px}#edit-actions{top:172px}#edit-menu .menu-row,#edit-actions .menu-row{margin-right:16px}.menu-row{display:flex;gap:3px}#main-menu .menu-row button,#edit-menu .menu-row button,#edit-actions .menu-row button{width:34px;height:34px;display:flex;align-items:center;justify-content:center;background:var(--ctrl-bg);border:1px solid var(--ctrl-border);color:inherit;border-radius:5px;font-size:15px;line-height:1;font-weight:600;cursor:pointer;padding:6px;transition:background .12s,border-color .12s}#main-menu .menu-row button:hover,#edit-menu .menu-row button:hover,#edit-actions .menu-row button:hover{background:var(--toolbar-hover);border-color:var(--ctrl-border-hover)}#main-menu .menu-row button:active,#edit-menu .menu-row button:active,#edit-actions .menu-row button:active{background:var(--toolbar-active)}#main-menu .menu-row button.active,#edit-menu .menu-row button.active,#edit-actions .menu-row button.active{background:var(--accent);border-color:var(--accent);color:#fff}#main-menu .menu-row button svg,#edit-menu .menu-row button svg,#edit-actions .menu-row button svg{width:19px;height:19px;display:block;pointer-events:none}#delete-object svg{color:#e5484d}#main-menu .menu-row button[data-view-mode=top]{font-size:11px;letter-spacing:.5px}#main-menu .menu-row button:disabled,#edit-menu .menu-row button:disabled,#edit-actions .menu-row button:disabled{opacity:.4;cursor:default}#main-menu .menu-row button:disabled:hover,#edit-menu .menu-row button:disabled:hover,#edit-actions .menu-row button:disabled:hover{background:var(--ctrl-bg);border-color:var(--ctrl-border)}#menu-close,#edit-close,#actions-close,#inspector-close{position:absolute;top:5px;right:5px;background:none;border:none;color:var(--tb-hint);font-size:16px;font-weight:600;line-height:1;cursor:pointer;width:16px;text-align:center;padding:0}#menu-close:hover,#edit-close:hover,#actions-close:hover,#inspector-close:hover{color:var(--toolbar-fg)}#edit-menu.hidden,#edit-actions.hidden{display:none}#layout-picker-overlay,#add-picker-overlay{position:fixed;inset:0;z-index:9000;display:flex;align-items:center;justify-content:center;background:#00000059}#layout-picker-overlay.hidden{display:none}#add-picker-overlay{transition:opacity .22s ease}#add-picker-overlay.ap-closed{opacity:0;pointer-events:none}#add-picker{transform-origin:center;transition:transform .24s cubic-bezier(.2,.8,.25,1),opacity .2s ease}#add-picker-overlay.ap-closed #add-picker{opacity:0;transform:scale(.85) translateY(24px)}@media (prefers-reduced-motion:reduce){#add-picker-overlay,#add-picker{transition:none}.ap-thumb{animation:none}}#layout-picker{min-width:280px;max-width:min(420px,90vw);max-height:70vh;display:flex;flex-direction:column;border-radius:10px;padding:10px;color:var(--toolbar-fg);-webkit-user-select:none;user-select:none}.lp-head{display:flex;align-items:center;gap:8px;padding:2px 4px 9px;font-weight:600;font-size:13px}.lp-ico{display:flex;flex:none;color:var(--accent)}.lp-ico svg{width:17px;height:17px;display:block}#lp-close{margin-left:auto;background:none;border:none;color:var(--tb-hint);cursor:pointer;padding:0;width:16px}#lp-close:hover{color:var(--toolbar-fg)}#lp-close svg{width:15px;height:15px;display:block}.lp-list{display:flex;flex-direction:column;gap:3px;overflow-y:auto;min-height:40px}.lp-row{display:flex;align-items:center;gap:8px;padding:7px 9px;border-radius:6px;text-align:left;background:var(--ctrl-bg);border:1px solid var(--ctrl-border);color:inherit;cursor:pointer;font:inherit;font-size:12.5px;transition:background .12s,border-color .12s}.lp-row:hover{background:var(--toolbar-hover);border-color:var(--ctrl-border-hover)}.lp-row svg{width:15px;height:15px;flex:none;color:var(--tb-hint)}.lp-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}.lp-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lp-meta{font-size:10.5px;color:var(--tb-hint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lp-meta:empty{display:none}.lp-row.current .lp-meta{color:#fffc}.lp-row.current{background:var(--accent);border-color:var(--accent);color:#fff;cursor:default}.lp-row.current svg{color:#fff}.lp-chip{flex:none;font-size:9.5px;font-weight:600;letter-spacing:.4px;text-transform:uppercase;padding:2px 7px;border-radius:99px;background:#ffffff38;color:#fff}.lp-chip:empty{display:none}.lp-empty{padding:10px;font-size:12px;color:var(--tb-hint);text-align:center}.lp-hint{padding:9px 4px 2px;font-size:11px;color:var(--tb-hint);line-height:1.4}#add-picker{width:min(492px,94vw);max-height:min(720px,86vh);display:flex;flex-direction:column;border-radius:10px;padding:10px;color:var(--toolbar-fg);-webkit-user-select:none;user-select:none}.ap-head{display:flex;align-items:center;gap:8px;padding:2px 4px 9px;font-weight:600;font-size:13px}.ap-ico{display:flex;flex:none;color:var(--accent)}.ap-ico svg{width:17px;height:17px;display:block}.ap-close{margin-left:auto;background:none;border:none;color:var(--tb-hint);cursor:pointer;padding:0;width:16px}.ap-close:hover{color:var(--toolbar-fg)}.ap-close svg{width:15px;height:15px;display:block}.ap-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:5px;overflow-y:auto;padding:1px;scrollbar-width:auto;scrollbar-color:var(--tb-sep) transparent}.ap-grid::-webkit-scrollbar{width:13px;height:13px}.ap-grid::-webkit-scrollbar-thumb{background:var(--tb-sep);border-radius:7px;border:3px solid transparent;background-clip:padding-box}.ap-grid::-webkit-scrollbar-track{background:transparent}@media (max-width:540px){.ap-grid{grid-template-columns:repeat(2,1fr)}}.ap-sec{grid-column:1/-1;display:flex;align-items:center;gap:7px;padding:8px 2px 2px;font-size:10.5px;font-weight:600;letter-spacing:.6px;text-transform:uppercase;color:var(--tb-hint)}.ap-sec:first-child{padding-top:2px}.ap-sec-sq{width:9px;height:9px;border-radius:2.5px;flex:none}.ap-card{display:flex;flex-direction:column;align-items:center;gap:4px;padding:6px 5px;border-radius:6px;text-align:center;background:var(--ctrl-bg);border:1px solid var(--ctrl-border);color:inherit;cursor:pointer;font:inherit;font-size:10.5px;transition:background .12s,border-color .12s}.ap-card:hover{background:var(--toolbar-hover);border-color:var(--ctrl-border-hover)}.ap-thumb-wrap{position:relative;width:100%;aspect-ratio:1/1;border-radius:5px;overflow:hidden;display:flex;align-items:center;justify-content:center}.ap-thumb{width:100%;height:100%;object-fit:contain;display:block;transition:transform .25s ease;animation:ap-fade .35s ease}.ap-card:hover .ap-thumb{transform:scale(1.2)}@keyframes ap-fade{0%{opacity:0}to{opacity:1}}.ap-thumb-wrap.ap-dark{background:#252a33;box-sizing:border-box;padding:10%}.ap-thumb.hidden,.ap-icon.hidden,.ap-spin.hidden{display:none}.ap-icon{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}.ap-icon svg{width:36%;height:36%}.ap-spin{position:absolute;width:24px;height:24px;border-radius:50%;border:2.5px solid var(--ctrl-border);border-top-color:var(--accent);animation:spin .7s linear infinite}.ap-name{line-height:1.25}.ap-hint{padding:9px 4px 2px;font-size:11px;color:var(--tb-hint);line-height:1.4}.panel-grip{position:absolute;top:22px;right:5px;z-index:1;width:16px;text-align:center;color:var(--tb-hint);font-size:13px;line-height:1;cursor:default;padding:0;-webkit-user-select:none;user-select:none}.panel-grip:hover{color:var(--toolbar-fg)}.panel-grip svg{width:14px;height:14px;display:block;margin:0 auto}#menu-close svg,#edit-close svg,#actions-close svg,#inspector-close svg,#objects-close svg,#hints-close svg,#nav-cube #nav-close svg,.hud-close svg{width:13px;height:13px;display:block;margin:0 auto}.hud-panel{position:fixed;bottom:10px;z-index:10;display:flex;align-items:center;gap:7px;border-radius:12px;color:var(--toolbar-fg);padding:7px 24px 7px 10px;font-size:12px;font-family:monospace;-webkit-user-select:none;user-select:none}.hud-panel.hidden{display:none}.hud-close{position:absolute;top:5px;right:5px;background:none;border:none;color:var(--tb-hint);font-size:16px;font-weight:600;line-height:1;cursor:pointer;padding:0 2px}.hud-close:hover{color:var(--toolbar-fg)}#coords-panel{left:10px;width:160px}#zoom-panel{right:10px}#camera-panel{right:10px;bottom:100px}#coords{display:flex;flex-direction:column;gap:3px;color:var(--tb-hint)}.coord-row{display:flex;align-items:center;gap:7px;line-height:1.4}.coord-dot{width:8px;height:8px;border-radius:2px;flex:none;background:var(--axis-color)}.coord-axis{color:var(--tb-hint);width:10px;flex:none}.coord-val{margin-left:auto;color:var(--toolbar-fg);font-variant-numeric:tabular-nums}.coord-x{--axis-color:var(--axis-x)}.coord-y{--axis-color:var(--axis-y)}.coord-z{--axis-color:var(--axis-z)}.hud-stats{display:flex;flex-direction:column;gap:5px;color:var(--toolbar-fg)}.stat-row{display:flex;align-items:stretch}.stat-row+.stat-row{border-top:1px solid var(--hud-divider);padding-top:5px}.hud-stats .stat{display:flex;align-items:center;gap:9px;padding:2px 15px;position:relative}.hud-stats .stat:first-child{padding-left:3px}.hud-stats .stat:last-child{padding-right:3px}.hud-stats .stat+.stat:before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);height:26px;width:1px;background:var(--hud-divider)}.hud-stats .stat.stat-attached{padding-left:4px}.hud-stats .stat.stat-attached:before{display:none}.hud-stats .stat.stat-attached .stat-value{color:var(--hud-label)}.hud-stats .stat svg{width:17px;height:17px;flex:none;color:var(--hud-label);opacity:.9}.hud-stats .stat-text{display:flex;flex-direction:column;gap:1px;min-width:0;line-height:1.15}.hud-stats .stat-label{font-size:9px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--hud-label)}.hud-stats .stat-value{font-size:13px;font-weight:600;font-variant-numeric:tabular-nums;color:var(--toolbar-fg);white-space:nowrap}.hud-stats .stat-sub{margin-left:7px;font-size:10px;font-weight:500;color:var(--hud-label)}#zoom-panel #stat-fps{display:inline-block;min-width:3ch}#zoom-panel #stat-zoom{display:inline-block;min-width:7ch}#zoom-panel #stat-draw{display:inline-block;min-width:4ch}.hud-stats .stat-value.fps-good{color:var(--hud-good)}.hud-stats .stat-value.fps-warn{color:var(--hud-warn)}.hud-stats .stat-value.fps-bad{color:var(--hud-bad)}.tt-card{--tt-mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,monospace;--tt-sans:"IBM Plex Sans",system-ui,-apple-system,sans-serif;background:var(--tt-bg);border:1px solid var(--tt-border);border-radius:10px;box-shadow:var(--tt-shadow);overflow:hidden;color:var(--tt-fg);font-family:var(--tt-sans);-webkit-backdrop-filter:blur(10px) saturate(1.3);backdrop-filter:blur(10px) saturate(1.3)}.tt-conveyor{width:244px}.tt-pallet{width:236px}.tt-shelf{width:248px}.tt-path{width:244px}.tt-guard{width:236px}.tt-generic{width:auto;max-width:240px}.tt-divider{height:1px;background:var(--tt-divider)}.tt-header{display:flex;align-items:center;gap:11px;padding:11px 13px 10px}.tt-icon{width:36px;height:36px;flex:none;border-radius:8px;display:flex;align-items:center;justify-content:center}.tt-icon svg{width:19px;height:19px}.tt-icon-conveyor{background:var(--tt-conveyor-bg);border:1px solid var(--tt-conveyor-border)}.tt-icon-conveyor svg{stroke:var(--tt-conveyor)}.tt-icon-pallet{background:var(--tt-pallet-bg);border:1px solid var(--tt-pallet-border)}.tt-icon-pallet svg{stroke:var(--tt-pallet)}.tt-icon-shelf{background:var(--tt-shelf-bg);border:1px solid var(--tt-shelf-border)}.tt-icon-shelf svg{stroke:var(--tt-shelf)}.tt-icon-path{background:var(--tt-path-bg);border:1px solid var(--tt-path-border)}.tt-icon-path svg{stroke:var(--tt-path)}.tt-icon-guard{background:var(--tt-guard-bg);border:1px solid var(--tt-guard-border)}.tt-icon-guard svg{stroke:var(--tt-guard)}.tt-gate{width:236px}.tt-icon-gate{background:var(--tt-guard-bg);border:1px solid var(--tt-guard-border)}.tt-icon-gate svg{stroke:var(--tt-guard)}.tt-gate .tt-status.is-on{color:var(--tt-guard);border-color:var(--tt-guard-border);background:var(--tt-guard-bg)}.tt-gate .tt-status.is-on .tt-status-dot{background:var(--tt-guard);box-shadow:0 0 6px var(--tt-guard)}.tt-gate .tt-status.tt-gate-pill-open.is-on{color:var(--tt-gate-open);border-color:var(--tt-gate-open-border);background:var(--tt-gate-open-bg)}.tt-gate .tt-status.tt-gate-pill-open.is-on .tt-status-dot{background:var(--tt-gate-open);box-shadow:0 0 6px var(--tt-gate-open)}.tt-gate .tt-status.tt-gate-pill-closed.is-on{color:var(--tt-gate-closed);border-color:var(--tt-gate-closed-border);background:var(--tt-gate-closed-bg)}.tt-gate .tt-status.tt-gate-pill-closed.is-on .tt-status-dot{background:var(--tt-gate-closed);box-shadow:0 0 6px var(--tt-gate-closed)}.tt-gate-desc{padding:8px 13px;font-family:var(--tt-sans);font-size:11.5px;line-height:1.45;color:var(--tt-value)}.tt-gate-machines{display:flex;flex-wrap:wrap;gap:4px;padding:7px 13px;max-height:104px;overflow-y:auto;scrollbar-width:auto;scrollbar-color:var(--tb-sep) transparent}.tt-gate-machines::-webkit-scrollbar{width:13px;height:13px}.tt-gate-machines::-webkit-scrollbar-thumb{background:var(--tb-sep);border-radius:7px;border:3px solid transparent;background-clip:padding-box}.tt-gate-machines::-webkit-scrollbar-track{background:transparent}.tt-actions{padding:9px 13px;display:flex}.tt-action-btn{flex:1;font-family:var(--tt-mono);font-size:10.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--tt-title);background:var(--tt-chip-bg);border:1px solid var(--tt-border);border-radius:6px;padding:6px 10px;cursor:pointer;transition:background .12s ease,border-color .12s ease,color .12s ease}.tt-action-btn:hover{border-color:var(--tt-guard);color:var(--tt-guard)}.tt-title-wrap{flex:1;min-width:0}.tt-title{font-family:var(--tt-mono);font-size:14px;font-weight:600;color:var(--tt-title);letter-spacing:.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tt-subtitle{font-size:11.5px;color:var(--tt-subtitle);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tt-chip{font-family:var(--tt-mono);font-size:10px;font-weight:600;letter-spacing:.08em;color:var(--tt-value);background:var(--tt-chip-bg);border:1px solid var(--tt-border);padding:3px 7px;border-radius:5px;text-transform:uppercase;white-space:nowrap}.tt-body{padding:9px 13px}.tt-empty{font-family:var(--tt-mono);font-size:11px;color:var(--tt-muted)}.tt-conn-list{font-family:var(--tt-mono);font-size:11.5px;line-height:1.95}.tt-conn-row{display:flex;align-items:baseline;gap:8px}.tt-conn-arrow{flex:none;color:var(--dir-color,var(--tt-subtitle))}.tt-conn-id{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--tt-conn-id)}.tt-conn-meta{flex:none;white-space:nowrap}.tt-conn-dir{color:var(--tt-subtitle)}.tt-conn-side{color:var(--tt-muted)}.tt-dir-in{--dir-color:var(--tt-dir-in)}.tt-dir-out{--dir-color:var(--tt-dir-out)}.tt-dir-both{--dir-color:var(--tt-dir-both)}.tt-footer{display:flex;gap:14px;flex-wrap:wrap;padding:8px 13px 10px;font-family:var(--tt-mono);font-size:10.5px;color:var(--tt-muted2)}.tt-footer-label{color:var(--tt-muted)}.tt-rotation{margin-left:auto}.tt-rate{color:var(--tt-rate)}.tt-goods{display:flex;flex-direction:column;gap:8px;padding:10px 13px 12px}.tt-goods-thumb{width:180px;height:180px;flex:none;align-self:center;border-radius:10px;overflow:hidden;border:1px solid var(--tt-border);background:var(--tt-chip-bg)}.tt-goods-img,.tt-goods-svg{width:100%;height:100%;display:block;object-fit:cover}.tt-goods-txt{min-width:0;display:flex;flex-direction:column;gap:3px}.tt-goods-label-row{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.tt-goods-h{font-family:var(--tt-mono);font-size:11px;color:var(--tt-value);flex:none}.tt-goods-name{font-family:var(--tt-sans);font-size:12px;font-weight:600;color:var(--tt-value);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tt-article{display:flex;align-items:baseline;gap:8px;padding:9px 13px}.tt-article-label{font-family:var(--tt-mono);font-size:9px;color:var(--tt-muted);letter-spacing:.08em;text-transform:uppercase;flex:none}.tt-article-val{font-family:var(--tt-sans);font-size:12px;font-weight:600;color:var(--tt-value);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tt-loadtype{display:flex;align-items:center;gap:6px;margin-top:3px}.tt-loadtype-dot{width:6px;height:6px;border-radius:1px;background:var(--tt-pallet-accent);flex:none}.tt-loadtype-label{font-family:var(--tt-mono);font-size:11px;color:var(--tt-pallet)}.tt-xyz{padding:10px 13px;display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;font-family:var(--tt-mono)}.tt-xyz-axis{font-size:9px;color:var(--tt-muted);letter-spacing:.08em}.tt-xyz-val{font-size:12px;color:var(--tt-value);margin-top:2px}.tt-cell{display:flex;align-items:baseline;gap:8px;padding:9px 13px}.tt-cell-label{font-family:var(--tt-mono);font-size:9px;color:var(--tt-muted);letter-spacing:.08em;text-transform:uppercase;flex:none}.tt-cell-val{display:flex;align-items:baseline;gap:8px;min-width:0;font-family:var(--tt-mono);font-size:12px}.tt-cell-shelf{color:var(--tt-conn-id);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tt-cell-lc{color:var(--tt-value);flex:none}.tt-caret{position:absolute;width:16px;height:8px;background:var(--tt-bg);transform:translate(-50%);-webkit-backdrop-filter:blur(10px) saturate(1.3);backdrop-filter:blur(10px) saturate(1.3);pointer-events:none}.tt-caret:after{content:"";position:absolute;inset:0;background:var(--tt-border)}.tt-caret-top{top:-7px;clip-path:polygon(50% 0,0 100%,100% 100%)}.tt-caret-bottom{bottom:-7px;clip-path:polygon(50% 100%,0 0,100% 0)}.tt-caret-top:after{clip-path:polygon(0 8px,8px 0,16px 8px,14.59px 8px,8px 1.41px,1.41px 8px)}.tt-caret-bottom:after{clip-path:polygon(0 0,8px 8px,16px 0,14.59px 0,8px 6.59px,1.41px 0)}.tt-close{position:absolute;top:5px;right:5px;width:16px;padding:0;background:none;border:none;color:var(--tt-muted);font-size:16px;font-weight:600;line-height:1;text-align:center;cursor:pointer;z-index:1}.tt-close:hover{color:var(--tt-title)}.tt-close svg{width:13px;height:13px;display:block;margin:0 auto}.tt-occ{display:flex;align-items:center;gap:18px;padding:13px 15px}.tt-donut-wrap{position:relative;width:76px;height:76px;flex:none}.tt-donut{width:76px;height:76px;display:block}.tt-donut-track{fill:none;stroke:var(--tt-chip-bg);stroke-width:4}.tt-donut-fill{fill:none;stroke:var(--tt-shelf);stroke-width:4;stroke-linecap:round}.tt-donut-label{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;font-family:var(--tt-mono)}.tt-donut-pct{font-size:18px;font-weight:700;color:var(--tt-title);line-height:1}.tt-donut-cap{font-size:8px;font-weight:600;letter-spacing:.14em;color:var(--tt-muted);margin-top:3px}.tt-legend{display:flex;flex-direction:column;gap:10px;font-family:var(--tt-mono)}.tt-leg-row{display:flex;align-items:center;gap:9px}.tt-leg-dot{width:11px;height:11px;border-radius:3px;flex:none}.tt-leg-dot.is-occ{background:var(--tt-shelf)}.tt-leg-dot.is-pallet{background:var(--tt-pallet)}.tt-leg-n{font-size:15px;font-weight:700;color:var(--tt-value)}.tt-leg-t{font-size:11px;color:var(--tt-muted2)}.tt-machine{width:248px}.tt-icon-machine{background:var(--tt-machine-bg);border:1px solid var(--tt-machine-border)}.tt-icon-machine svg{stroke:var(--tt-machine)}.tt-cradle{width:236px}.tt-icon-cradle{background:var(--tt-machine-bg);border:1px solid var(--tt-machine-border)}.tt-icon-cradle svg{stroke:var(--tt-machine)}.tt-status-row{display:flex;gap:6px;padding:9px 13px}.tt-status{display:flex;align-items:center;gap:5px;font-family:var(--tt-mono);font-size:9.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--tt-muted);background:var(--tt-chip-bg);border:1px solid var(--tt-border);padding:3px 7px;border-radius:5px;white-space:nowrap}.tt-status-dot{width:6px;height:6px;border-radius:50%;background:var(--tt-muted);flex:none}.tt-status.is-on{color:var(--tt-machine);border-color:var(--tt-machine-border);background:var(--tt-machine-bg)}.tt-status.is-on .tt-status-dot{background:var(--tt-machine);box-shadow:0 0 6px var(--tt-machine)}.tt-tel{padding:10px 13px;display:grid;grid-template-columns:1fr 1fr;gap:10px 14px;font-family:var(--tt-mono)}.tt-tel-label{font-size:9px;color:var(--tt-muted);letter-spacing:.08em}.tt-tel-val{font-size:13px;font-weight:600;color:var(--tt-value);margin-top:2px}.tt-tel-unit{font-size:9.5px;font-weight:400;color:var(--tt-muted)}.tt-veh{padding:9px 13px 11px}.tt-veh-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:6px}.tt-veh-title{font-family:var(--tt-mono);font-size:9px;color:var(--tt-muted);letter-spacing:.08em}.tt-veh-count{font-family:var(--tt-mono);font-size:11px;font-weight:700;color:var(--tt-path)}.tt-veh-list{display:flex;flex-direction:column;gap:4px;max-height:132px;overflow-y:auto;scrollbar-width:auto;scrollbar-color:var(--tb-sep) transparent}.tt-veh-list::-webkit-scrollbar{width:13px;height:13px}.tt-veh-list::-webkit-scrollbar-thumb{background:var(--tb-sep);border-radius:7px;border:3px solid transparent;background-clip:padding-box}.tt-veh-list::-webkit-scrollbar-track{background:transparent}.tt-veh-row{display:flex;align-items:baseline;gap:7px;font-family:var(--tt-mono);font-size:11.5px}.tt-veh-dot{width:6px;height:6px;border-radius:50%;background:var(--tt-path);flex:none;align-self:center}.tt-veh-id{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--tt-conn-id)}.tt-veh-type{flex:none;color:var(--tt-muted)}.tt-veh-empty{font-family:var(--tt-mono);font-size:11px;color:var(--tt-muted)}.tt-prog{padding:9px 13px 11px}.tt-prog-head{display:flex;justify-content:space-between;align-items:baseline;font-family:var(--tt-mono);margin-bottom:6px}.tt-prog-label{font-size:9px;color:var(--tt-muted);letter-spacing:.08em}.tt-prog-pct{font-size:11px;font-weight:700;color:var(--tt-machine)}.tt-prog-svg{width:100%;height:6px;display:block}.tt-prog-track{fill:var(--tt-chip-bg)}.tt-prog-fill{fill:var(--tt-machine)}.tt-fimg{width:236px}.tt-icon-fimg{background:var(--tt-fimg-bg);border:1px solid var(--tt-fimg-border)}.tt-icon-fimg svg{stroke:var(--tt-fimg)}.tt-fimg-plate{margin:10px 13px 4px;padding:10px 12px;background:var(--tt-fimg-plate);border-radius:8px;border:1px solid var(--tt-divider)}.tt-fimg-pic{display:block;width:100%;height:auto}.tt-fimg-desc{padding:6px 13px 8px;font-family:var(--tt-sans);font-size:11.5px;line-height:1.45;color:var(--tt-value)}.tt-fimg-link{display:flex;flex-direction:column;gap:2px;padding:8px 13px 10px}.tt-fimg-url{font-family:var(--tt-mono);font-size:12px;font-weight:600;color:var(--tt-fimg)}.tt-fimg-hint{font-family:var(--tt-sans);font-size:10.5px;color:var(--tt-subtitle)}.tt-generic-box{padding:9px 12px}.tt-generic-title{font-family:var(--tt-mono);font-size:13px;font-weight:600;color:var(--tt-title)}.tt-generic-sub{font-family:var(--tt-mono);font-size:11px;color:var(--tt-subtitle);margin-top:2px}#app-version{position:fixed;right:10px;bottom:85px;z-index:10;color:var(--tb-hint);font-size:11px;font-family:monospace;pointer-events:none;-webkit-user-select:none;user-select:none;opacity:.75;text-align:right}#app-copyright{position:fixed;right:10px;bottom:70px;z-index:10;color:var(--tb-hint);font-size:11px;font-family:monospace;-webkit-user-select:none;user-select:none;opacity:.75;text-align:right;text-decoration:none}#app-copyright:hover{opacity:1;text-decoration:underline}#nav-cube{position:fixed;top:12px;left:12px;z-index:20;display:grid;grid-template-columns:repeat(3,30px);grid-template-rows:repeat(3,30px);gap:3px;padding:8px;border-radius:10px;color:var(--toolbar-fg);-webkit-user-select:none;user-select:none}#nav-cube.hidden{display:none}#nav-cube #nav-close{position:absolute;top:5px;right:5px;padding:0 2px;background:none;border:none;color:var(--tb-hint);font-size:16px;line-height:1;cursor:pointer}#nav-cube #nav-close:hover{color:var(--toolbar-fg);background:none;border:none}#nav-cube .nav-spacer{visibility:hidden}#nav-cube button{display:flex;align-items:center;justify-content:center;background:var(--ctrl-bg);border:1px solid var(--ctrl-border);color:inherit;border-radius:5px;font-size:12px;font-weight:600;cursor:pointer;padding:0;transition:background .12s,border-color .12s}#nav-cube button svg{width:16px;height:16px;display:block;pointer-events:none}#nav-cube button:hover{background:var(--toolbar-hover);border-color:var(--ctrl-border-hover)}#nav-cube button:active{background:var(--toolbar-active)}#nav-cube .nav-center{font-size:10px;letter-spacing:.5px;background:var(--accent);color:#fff;border-color:var(--accent)}#nav-cube .nav-center:hover{background:var(--accent-hover)}#mouse-hints{position:fixed;top:132px;left:12px;z-index:20;border-radius:10px;padding:10px 24px 8px 12px;color:var(--toolbar-fg);font-size:11px;-webkit-user-select:none;user-select:none;text-align:left}#mouse-hints.hidden{display:none}#hints-close{position:absolute;top:5px;right:5px;background:none;border:none;color:var(--tb-hint);font-size:16px;font-weight:600;line-height:1;cursor:pointer;padding:0 2px}#hints-close:hover{color:var(--toolbar-fg)}#mouse-hints .mh-grid{display:grid;grid-template-columns:auto auto;gap:4px 8px;align-items:center}#mouse-hints .mh-btn{justify-self:end;font-weight:600;color:var(--accent-check)}#mouse-hints .mh-sel{margin-top:8px;color:var(--tb-hint);max-width:190px;line-height:1.4}.edit-only,#edit-menu .menu-row button.edit-only{display:none}body.edit-mode .menu-row.edit-only:not(.hidden){display:flex}body.edit-mode #edit-menu .menu-row button.edit-only:not(.hidden){display:flex}body.edit-mode #edit-menu .menu-row button.view-only,body.prod .dev-only,body.prod #edit-menu .menu-row button.dev-only{display:none}.menu-sep{width:1px;align-self:stretch;margin:3px;background:var(--ctrl-border);border-radius:1px}body.edit-mode #edit-menu .menu-row .menu-sep.edit-only{display:block}#edit-menu #outline-toggle svg{display:none}#edit-menu #outline-toggle.mode-both svg.oi-both,#edit-menu #outline-toggle.mode-mesh svg.oi-mesh,#edit-menu #outline-toggle.mode-edge svg.oi-edge{display:block}#nav-cube #rotate-pivot-toggle svg{display:none}#nav-cube #rotate-pivot-toggle.pivot-center svg.rp-center,#nav-cube #rotate-pivot-toggle.pivot-cursor svg.rp-cursor,#nav-cube #rotate-pivot-toggle.pivot-layout svg.rp-layout{display:block}#nav-cube button.active{background:var(--accent);border-color:var(--accent);color:#fff}#inspector-panel{position:fixed;top:272px;right:12px;z-index:20;display:flex;flex-direction:column;padding:8px;border-radius:10px;color:var(--toolbar-fg);-webkit-user-select:none;user-select:none}#inspector-panel.hidden{display:none}#side-panel{display:flex;position:relative;width:261px;max-width:80vw;flex-direction:column;color:var(--toolbar-fg);--sp-accent:#6366f1;--sp-accent-soft:rgba(99,102,241,.18);--sp-accent-text:#a5b4fc}.sp-resize{position:absolute;left:-4px;top:50%;transform:translateY(-50%);width:16px;height:18px;z-index:3;display:flex;align-items:center;justify-content:center;cursor:ew-resize;touch-action:none;color:var(--tb-hint);transition:color .15s ease;-webkit-user-select:none;user-select:none}.sp-resize svg{width:14px;height:14px;display:block;pointer-events:none}.sp-resize:hover{color:var(--toolbar-fg)}.sp-resize.dragging{color:var(--sp-accent)}.sp-tabwrap{display:flex;gap:5px;padding:5px;margin-right:16px;border-radius:11px;background:var(--input-bg)}.sp-tab{flex:1;height:34px;border:none;border-radius:8px;cursor:pointer;font:600 13px system-ui,sans-serif;background:transparent;color:var(--tb-hint)}.sp-tab:hover{color:var(--toolbar-fg)}.sp-tab.active{background:var(--ctrl-bg);color:var(--toolbar-fg);box-shadow:0 2px 8px -3px #00000073}.sp-body{min-height:0;max-height:var(--sp-body-max, calc(100dvh - 332px) );overflow-y:auto;padding:14px 0 4px;display:none;scrollbar-width:auto;scrollbar-color:var(--tb-sep) transparent}.sp-body.active{display:block}.sp-body::-webkit-scrollbar{width:13px;height:13px}.sp-body::-webkit-scrollbar-thumb{background:var(--tb-sep);border-radius:7px;border:3px solid transparent;background-clip:padding-box}.sp-body::-webkit-scrollbar-track{background:transparent}#ep-props{padding:0}.sp-selcard{display:flex;align-items:center;gap:12px;padding:12px;border-radius:13px;background:var(--input-bg);margin-bottom:16px}#ep-props.sp-noselect .sp-selcard{margin-bottom:0}#ep-props.disabled{opacity:.5}.sp-selicon{width:42px;height:42px;border-radius:11px;flex:none;display:flex;align-items:center;justify-content:center;background:linear-gradient(145deg,#818cf8,var(--sp-accent));color:#fff}.sp-selicon svg{width:21px;height:21px}.sp-selmeta{min-width:0;flex:1}.sp-selname{font-size:15px;font-weight:700;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sp-selid{font:600 11px monospace;color:var(--tb-hint);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sp-selsub{display:none;font:500 12px system-ui,sans-serif;color:var(--tb-hint);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sp-selsub.show{display:block}.sp-selchip{font:600 10px monospace;letter-spacing:.03em;color:var(--sp-accent-text);background:var(--sp-accent-soft);border-radius:20px;padding:5px 11px;flex:none;text-transform:uppercase}.sp-sec{display:none}.sp-section{margin-top:2px}.sp-section:first-child{margin-top:0}summary.sp-acc-head{display:flex;align-items:center;gap:10px;padding:9px 8px;cursor:pointer;-webkit-user-select:none;user-select:none;list-style:none;border-radius:11px;font:600 13px system-ui,sans-serif;color:var(--toolbar-fg);transition:background .15s ease}summary.sp-acc-head::-webkit-details-marker,summary.sp-acc-head::marker{display:none}summary.sp-acc-head:hover{background:var(--toolbar-hover)}.sp-acc-ico{flex:none;display:flex;align-items:center;justify-content:center;color:var(--tb-hint)}.sp-acc-ico svg{width:17px;height:17px}.sp-acc-label{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sp-acc>*:not(summary){padding:4px 6px 12px}.sp-grid{display:flex;flex-wrap:wrap;gap:9px}.ep-field{flex:1 1 78px;min-width:78px;display:flex;flex-direction:column;gap:6px}.ep-field.sp-wide{flex-basis:100%}.ep-field>span{font:600 11px system-ui,sans-serif;color:var(--tb-hint)}.sp-inbox{display:flex;align-items:center;background:var(--field-bg);border:1px solid var(--input-border);border-radius:10px;padding:0 11px;height:38px}.sp-inbox:focus-within{border-color:var(--sp-accent)}.sp-inbox input,.sp-inbox select{flex:1;min-width:0;border:none;background:transparent;color:var(--toolbar-fg);font:700 14px monospace;outline:none;padding:0}.sp-inbox select{font:600 13px system-ui,sans-serif;cursor:pointer;background:var(--field-bg)}.sp-inbox select option{background:var(--field-bg);color:var(--toolbar-fg)}.sp-inbox input[type=color]{height:26px;padding:0;cursor:pointer}.sp-inbox input:disabled,.sp-inbox select:disabled{cursor:default}.sp-inbox input[type=number]{-moz-appearance:textfield;appearance:textfield}.sp-inbox input[type=number]::-webkit-outer-spin-button,.sp-inbox input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.sp-unit{font:500 10px monospace;color:var(--tb-hint);margin-left:6px}.ep-lock{flex:0 0 auto;align-self:flex-end;height:38px;display:flex;align-items:center;justify-content:center;border:none;background:transparent;color:var(--tb-hint);cursor:pointer;padding:0;margin:0 -4px}.ep-lock svg{width:14px;height:14px}.ep-lock:hover:not(:disabled){color:var(--toolbar-fg)}.ep-lock.active{color:var(--sp-accent)}.ep-lock:disabled{opacity:.4;cursor:default}.ep-lock .lk-on{display:none}.ep-lock.active .lk-on{display:block}.ep-lock.active .lk-off{display:none}.sp-toggles{display:flex;gap:9px}.ep-toggle{flex:1 1 0;display:flex;align-items:center;justify-content:center;gap:7px;height:38px;border-radius:10px;border:1px solid var(--input-border);background:var(--input-bg);color:var(--tb-hint);cursor:pointer;font:600 12.5px system-ui,sans-serif}.ep-toggle svg{width:16px;height:16px}.ep-toggle:hover{color:var(--toolbar-fg)}.ep-toggle.active{background:var(--sp-accent);border-color:var(--sp-accent);color:#fff}.ep-toggle-sq{flex:none;width:38px;gap:0}.ep-icon-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(34px,1fr));gap:6px;max-height:132px;overflow-y:auto;padding:1px;margin-bottom:6px;scrollbar-width:thin;scrollbar-color:var(--tb-sep) transparent}.ep-icon-grid::-webkit-scrollbar{width:9px}.ep-icon-grid::-webkit-scrollbar-thumb{background:var(--tb-sep);border-radius:5px;border:2px solid transparent;background-clip:padding-box}.ep-icon-grid::-webkit-scrollbar-track{background:transparent}.ep-icon-swatch{aspect-ratio:1;border-radius:10px;border:1px solid var(--input-border);background:var(--input-bg);color:var(--tb-hint);cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;transition:background .12s,border-color .12s,color .12s}.ep-icon-swatch svg{width:18px;height:18px}.ep-icon-swatch:hover{color:var(--toolbar-fg);background:var(--toolbar-hover)}.ep-icon-swatch.active{background:var(--sp-accent-soft);border-color:var(--sp-accent);color:var(--sp-accent-text)}#ep-connections,#ep-seg-body{display:flex;flex-direction:column;gap:9px}.ep-conn-btns{display:flex;gap:8px}.ep-conn-btns button{flex:1;height:38px;border-radius:10px;border:1px solid var(--input-border);background:var(--input-bg);color:var(--tb-hint);font:600 13px system-ui,sans-serif;cursor:pointer;transition:background .12s,border-color .12s,color .12s}.ep-conn-btns button:hover{color:var(--toolbar-fg);border-color:var(--ctrl-border-hover)}.ep-conn-btns button.active{background:var(--sp-accent);border-color:var(--sp-accent);color:#fff}.ep-gate-mach{display:flex;flex-direction:column;min-width:0}#ep-gate-mach-bar{margin-bottom:2px}.ep-gate-mach-list{max-height:240px;overflow-y:auto}#ep-search{width:100%;height:38px;border-radius:10px;border:1px solid var(--input-border);background:var(--input-bg);color:var(--toolbar-fg);padding:0 12px;font:13px system-ui,sans-serif;outline:none;margin-bottom:12px}#ep-search:focus{border-color:var(--sp-accent)}#ep-vis-bar,.ep-vis-bar{display:flex;align-items:center;justify-content:flex-end;gap:8px;margin-bottom:8px;padding:0 2px}#ep-vis-bar button,.ep-vis-bar button{background:none;border:none;cursor:pointer;padding:2px 4px;font:600 11.5px system-ui,sans-serif;color:var(--tb-hint);letter-spacing:.02em}#ep-vis-bar button:hover,.ep-vis-bar button:hover{color:var(--sp-accent-text,var(--toolbar-fg))}#ep-vis-bar .ep-vis-sep,.ep-vis-bar .ep-vis-sep{color:var(--tb-sep);font-size:11px}#ep-outliner summary,#ep-gate-mach-det summary{cursor:pointer;-webkit-user-select:none;user-select:none;list-style:none;border-radius:11px;border:1px solid transparent;transition:background .15s ease}#ep-outliner summary::-webkit-details-marker,#ep-outliner summary::marker,#ep-gate-mach-det summary::-webkit-details-marker,#ep-gate-mach-det summary::marker{display:none}#ep-outliner summary:hover,#ep-gate-mach-det summary:hover{background:var(--toolbar-hover)}#ep-outliner details{margin-bottom:4px}.ep-chev{flex:none;display:flex;align-items:center;justify-content:center;color:var(--tb-hint);transition:transform .18s ease,opacity .22s ease}.ep-chev svg{width:14px;height:14px}details[open]>summary>.ep-chev{transform:rotate(90deg)}summary.ep-grp{display:flex;align-items:center;gap:9px;padding:7px 4px;font:600 13px system-ui,sans-serif;color:var(--toolbar-fg)}.ep-grp-sq{flex:none;width:13px;height:13px;border-radius:4px;transition:opacity .22s ease}.ep-grp-label{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:opacity .22s ease}.ep-grp-count{flex:none;font:600 11px monospace;color:var(--tb-hint);min-width:18px;text-align:right;transition:opacity .2s ease}.ep-eye{flex:none;display:flex;align-items:center;justify-content:center;width:26px;height:24px;padding:0;border:none;border-radius:7px;background:none;cursor:pointer;color:var(--tb-hint);transition:color .15s ease,background .15s ease}.ep-eye svg{width:16px;height:16px}.ep-eye:hover{background:var(--toolbar-hover);color:var(--toolbar-fg)}.ep-eye.off{color:var(--tb-sep)}.ep-eye.locked{color:var(--sp-accent)}.ep-row-eye{width:24px;height:22px;opacity:0;pointer-events:none;transition:opacity .12s ease,color .15s ease,background .15s ease}.ep-row-eye svg{width:15px;height:15px}.ep-row:hover .ep-row-eye,.ep-row-eye.off{opacity:1;pointer-events:auto}.ep-row-lock{width:22px;height:22px;opacity:0;pointer-events:none;transition:opacity .12s ease,color .15s ease,background .15s ease}.ep-row-lock svg{width:14px;height:14px}.ep-row:hover .ep-row-lock,.ep-row-lock.locked{opacity:1;pointer-events:auto}.sp-seleye{flex:none;margin-left:2px}.ep-connvis{flex:none;display:flex;align-items:center;justify-content:center;width:18px;height:24px;padding:0;border:none;border-radius:7px;background:none;cursor:pointer;color:var(--tb-hint);transition:color .15s ease,background .15s ease}.ep-connvis+.ep-connvis,summary.ep-grp .ep-connvis+.ep-eye,summary.ep-grp .ep-grp-lock+.ep-eye,summary.ep-grp .ep-connvis+.ep-grp-lock{margin-left:-2px}.ep-connvis svg{width:15px;height:15px}.ep-connvis:hover{background:var(--toolbar-hover);color:var(--toolbar-fg)}.ep-connvis.off{color:var(--tb-sep)}.ep-grp-hidden>summary>.ep-chev,.ep-grp-hidden>summary>.ep-grp-sq,.ep-grp-hidden>summary>.ep-grp-label,.ep-grp-hidden>summary>.ep-grp-count{opacity:.4}.ep-grp-hidden>.ep-row,.ep-grp-hidden>.ep-subgroup{opacity:.4}#ep-outliner .ep-subgroup{margin:0 0 2px 12px;transition:opacity .22s ease}#ep-outliner .ep-subgroup summary{display:flex;align-items:center;gap:7px;padding:5px 4px;font:500 12.5px system-ui,sans-serif;color:var(--tb-hint)}.ep-sub-label{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ep-row{display:flex;align-items:center;gap:10px;padding:7px 9px;cursor:pointer;border-radius:11px;border:1px solid transparent;transition:opacity .22s ease,background .15s ease}.ep-row:hover{background:var(--toolbar-hover)}.ep-row.active{background:var(--sp-accent-soft);border-color:var(--sp-accent)}.ep-row-ic{width:30px;height:30px;border-radius:8px;flex:none;display:flex;align-items:center;justify-content:center;color:#fff}.ep-row-ic svg{width:16px;height:16px}.ep-row-text{min-width:0;flex:1;display:flex;flex-direction:column;gap:1px;line-height:1.25}.ep-row-name{font:600 13px system-ui,sans-serif;color:var(--toolbar-fg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ep-row-id{font:500 10.5px monospace;color:var(--tb-hint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ep-row-badge{flex:none;font:600 9px monospace;letter-spacing:.04em;color:var(--tb-hint);border:1px solid var(--tb-sep);border-radius:6px;padding:3px 7px;text-transform:uppercase}.ep-row.active .ep-row-name{color:var(--sp-accent-text)}.ep-row.not-movable .ep-row-name{color:var(--tb-hint)}.ep-row.sp-hide,.sp-section.sp-hide,#save-layout.saving #save-layout-label{display:none}#save-layout.saving:before{content:"";display:block;width:16px;height:16px;border-radius:50%;border:2px solid var(--ctrl-border);border-top-color:var(--accent);animation:spin .7s linear infinite}#edit-menu .menu-row button.saving{opacity:1;cursor:progress}#edit-menu #delete-object.busy>svg{display:none}#delete-object.busy:before{content:"";display:block;width:16px;height:16px;border-radius:50%;border:2px solid var(--ctrl-border);border-top-color:#e5484d;animation:spin .7s linear infinite}#edit-menu .menu-row button.busy,#edit-actions .menu-row button.busy{opacity:1;cursor:progress}#edit-actions #undo-edit.busy>svg,#edit-actions #redo-edit.busy>svg{display:none}#edit-actions #undo-edit.busy:before,#edit-actions #redo-edit.busy:before{content:"";display:block;width:16px;height:16px;border-radius:50%;border:2px solid var(--ctrl-border);border-top-color:var(--accent);animation:spin .7s linear infinite}#edit-menu #edit-toggle.loading>svg{display:none}#edit-toggle.loading:before{content:"";display:block;width:16px;height:16px;border-radius:50%;border:2px solid var(--ctrl-border);border-top-color:var(--accent);animation:spin .7s linear infinite}#edit-toggle.loading{opacity:1;cursor:progress}#toast-container{position:fixed;bottom:10px;right:10px;z-index:400;display:flex;flex-direction:column-reverse;align-items:flex-end;gap:10px;pointer-events:none}.toast{width:340px;max-width:90vw;border-radius:8px;overflow:hidden;color:var(--dialog-fg);font-size:13px;pointer-events:auto;opacity:0;transition:opacity .3s ease}.toast.show{opacity:1}.toast-header{display:flex;align-items:center;gap:8px;padding:8px 10px;border-bottom:1px solid var(--tb-sep);background:#7f7f7f14}.toast-badge{flex:none;width:17px;height:17px;display:flex;align-items:center;justify-content:center;color:var(--hud-label)}.toast-badge svg{width:17px;height:17px}.toast-title{font-weight:600;color:var(--toolbar-fg)}.toast-time{margin-left:auto;color:var(--tb-hint);font-size:11px}.toast-close{background:none;border:none;color:var(--tb-hint);font-size:16px;line-height:1;cursor:pointer;padding:0 2px}.toast-close:hover{color:var(--toolbar-fg)}.toast-body{padding:10px 12px;line-height:1.45}.toast.success .toast-badge{color:var(--hud-good)}.toast.error .toast-badge{color:var(--hud-bad)}.marquee{position:fixed;display:none;pointer-events:none;z-index:10000;border:1px solid var(--marquee-window);background:var(--marquee-window-fill)}.marquee.crossing{border-style:dashed;border-color:var(--marquee-crossing);background:var(--marquee-crossing-fill)}
