:root{color-scheme:light;--bg: #f2f2f2;--panel: #fbfbfb;--panel-2: #f6f6f6;--border: #d3d3d3;--text: #14201a;--text-dim: #5b6b62;--accent: #0b6b34;--accent-dim: #9bc9ae;--accent-2: #c2410c;--hover: #e8eee9;--ok: #0b6b34;--snap: #c2410c;--font-ui: "Inter", "Segoe UI", system-ui, sans-serif;--font-mono: "JetBrains Mono", "Cascadia Mono", "Consolas", monospace}*{box-sizing:border-box}html,body{height:100%;margin:0;background:var(--bg);color:var(--text);font-family:var(--font-ui);font-size:13px;overflow:hidden}#app{display:grid;grid-template-rows:auto minmax(0,1fr) auto;height:100%}#stage.drop-target:after{content:"Drop a .lakar project to open it";position:absolute;inset:8px;display:grid;place-items:center;border:2px dashed var(--accent);border-radius:8px;background:#f2f2f2d1;color:var(--accent);font-family:var(--font-mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;pointer-events:none;z-index:20}#toolbar{display:flex;flex-direction:column;align-items:stretch;gap:5px;min-height:40px;padding:5px 10px;background:var(--panel);border-bottom:1px solid var(--border);user-select:none}.toolbar-row{display:flex;align-items:center;gap:8px;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;scrollbar-width:none}.toolbar-row::-webkit-scrollbar{width:0;height:0}.toolbar-row>*{flex:none}.workflow-row{padding-top:5px}.modelling-row{padding-top:5px;border-top:1px solid var(--border)}.node-group{margin-left:auto}.snap-group{gap:3px}.brand{display:flex;align-items:center;gap:8px;padding-right:12px;border-right:1px solid var(--border)}.brand-mark{display:grid;place-items:center;width:24px;height:24px;border-radius:5px;background:linear-gradient(140deg,var(--accent),var(--accent-2));color:#fff;font-weight:700;font-size:11px;letter-spacing:.04em}.brand-name{font-weight:600;letter-spacing:.04em;font-size:12px;color:var(--text)}.button-group{display:flex;gap:4px;flex-wrap:wrap}.tool-section{display:flex;align-items:center;gap:6px}.group-label{font-family:var(--font-mono);font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-dim);opacity:.75;user-select:none}.tool-divider{flex:none;width:1px;height:20px;background:var(--border);margin:0 2px}button.tool.icon{width:30px;height:28px;padding:0;display:inline-grid;place-items:center}button.tool.icon svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.45;stroke-linecap:round;stroke-linejoin:round}button.tool.icon:hover{color:var(--accent)}button.tool.file{display:inline-flex;align-items:center;gap:5px;height:28px;padding:0 8px 0 6px;font-family:var(--font-mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase}button.tool.file .file-glyph{display:inline-flex}button.tool.file svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.45;stroke-linecap:round;stroke-linejoin:round}.menu-host{position:relative;display:inline-flex}.menu-caret{font-size:9px;opacity:.6;margin-left:-1px}button.tool.file.open{background:var(--hover);color:var(--accent)}.menu-panel{position:fixed;z-index:40;min-width:190px;padding:4px;display:flex;flex-direction:column;gap:1px;background:var(--panel, var(--panel));border:1px solid var(--border, #1e2a36);border-radius:6px;box-shadow:0 12px 28px #14201a2e}.menu-panel[hidden]{display:none}.menu-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:6px 8px;border:0;border-radius:4px;background:transparent;color:var(--text, #cfd8e3);font-family:var(--font-mono);font-size:11px;text-align:left;cursor:pointer}.menu-item:hover{background:var(--hover);color:var(--accent)}.menu-item.is-switch{justify-content:flex-start;gap:8px}.menu-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.menu-check{width:11px;height:11px;display:grid;place-items:center;flex:0 0 11px;border:1px solid var(--border);border-radius:2px;font-size:8px;line-height:1;color:transparent}.menu-item.is-on .menu-check{border-color:var(--snap);background:var(--snap);color:#fff}.menu-item.is-on .menu-label{color:var(--snap)}.menu-hint{font-size:9px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-dim, #6b7c8f)}button.tool.snap{min-width:40px}button.tool.icon.with-label{width:auto;padding:0 8px 0 7px;gap:5px;display:inline-flex;align-items:center}.tool-label{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase}button.tool{appearance:none;border:1px solid var(--border);background:var(--panel-2);color:var(--text);padding:4px 7px;border-radius:5px;font-family:var(--font-ui);font-size:11px;letter-spacing:.02em;cursor:pointer;transition:background .12s ease,border-color .12s ease,color .12s ease}button.tool:hover{background:#18212c;border-color:#2c3a4a}button.tool.active{background:var(--accent-dim);border-color:var(--accent);color:#eaf5ff}button.tool.snap.on{border-color:var(--snap);color:var(--snap)}button.tool.ghost{background:transparent}.spacer{flex:1}#stage{position:relative;display:flex;min-height:0;background:var(--bg);overflow:hidden}#viewport{position:relative;flex:1 1 auto;min-width:0;min-height:0}#viewport canvas{display:block;width:100%;height:100%;cursor:crosshair}.ref-pick-layer{position:absolute;inset:0;z-index:20;pointer-events:none}.ref-pick-dots,.ref-pick-label,.ref-pick-hint{position:absolute}.ref-pick-dot{position:absolute;width:7px;height:7px;margin:-3.5px 0 0 -3.5px;border-radius:50%;border:1px solid var(--accent);background:#0b6b3440}.ref-pick-dot.is-hot{width:15px;height:15px;margin:-7.5px 0 0 -7.5px;border-width:2px;background:#0b6b342e;box-shadow:0 0 0 4px #0b6b3433}.ref-pick-shapes{position:absolute;inset:0;overflow:visible;pointer-events:none}.ref-pick-shape{fill:none;stroke:#0b6b34;stroke-width:3;stroke-opacity:.95;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 3px rgb(11 107 52 / 55%))}.ref-pick-dot.is-intersection{width:9px;height:9px;margin:-4.5px 0 0 -4.5px;border-radius:0;transform:rotate(45deg);background:#c2410c38;border-color:#c2410c}.ref-pick-label{padding:2px 6px;border-radius:3px;background:var(--accent);color:#fff;font-family:var(--font-mono);font-size:10px;white-space:nowrap;transform:translate(12px,-50%)}.ref-pick-label.is-left{transform:translate(calc(-100% - 12px),-50%)}.ref-pick-hint{left:50%;bottom:10px;transform:translate(-50%);padding:3px 10px;border-radius:999px;background:#202124e0;color:#fff;font-family:var(--font-mono);font-size:10px;letter-spacing:.04em;white-space:nowrap}#viewport canvas.is-picking{cursor:cell}.trim-pick-layer{position:absolute;inset:0;z-index:19;pointer-events:none}.trim-pick-svg{position:absolute;inset:0;overflow:visible}.trim-piece{fill:none;stroke:var(--accent);stroke-width:1.4;stroke-opacity:.55}.trim-piece.is-removed{stroke:var(--accent-2);stroke-dasharray:4 3;stroke-opacity:.85}.trim-piece.is-picked{stroke:#2f9e6e;stroke-width:2.4;stroke-opacity:.95}.mirror-axis{stroke:var(--accent-2);stroke-width:1.6;stroke-dasharray:9 5;stroke-opacity:.9}.trim-piece.is-hot{stroke-width:3.4;stroke-opacity:1}.ref-pick-label.is-restore{background:var(--accent-2)}#nodes-panel{flex:0 0 var(--nodes-width, 470px);width:var(--nodes-width, 470px);min-width:0;border-left:1px solid var(--border);background:var(--panel);overflow:hidden}#nodes-panel[hidden]{display:none}.splitter{flex:0 0 6px;position:relative;z-index:5;cursor:col-resize;background:var(--panel);border-left:1px solid var(--border);touch-action:none}.splitter[hidden]{display:none}.splitter:after{content:"";position:absolute;inset:0 2px;border-radius:2px;background:transparent;transition:background .12s ease}.splitter:hover:after,.splitter.is-dragging:after,.splitter:focus-visible:after{background:var(--accent)}.splitter:focus-visible{outline:none}.fatal{position:absolute;inset:0;display:grid;place-content:center;gap:10px;padding:32px;text-align:center;background:radial-gradient(circle at 50% 30%,#16202b,var(--bg) 70%);color:var(--text);z-index:10}.fatal[hidden]{display:none}.dyn{position:absolute;z-index:5;display:grid;gap:1px;padding:3px;border:1px solid #2b3a4a;border-radius:4px;background:#0d131af0;box-shadow:0 6px 18px #00000073;font-family:var(--font-mono);font-size:11px;pointer-events:none;white-space:nowrap}.dyn[hidden]{display:none}.dyn-row{display:flex;align-items:baseline;gap:8px;padding:1px 5px;border-radius:3px;color:var(--text-dim)}.dyn-row.active{background:var(--accent-dim);color:#eaf5ff}.dyn-label{min-width:46px;text-transform:uppercase;font-size:9.5px;letter-spacing:.07em;opacity:.85}.dyn-value{color:var(--text);font-variant-numeric:tabular-nums}.dyn-row.active .dyn-value{color:var(--accent)}.dyn-value.typing:after{content:"";display:inline-block;width:1px;height:10px;margin-left:1px;background:var(--accent);vertical-align:-1px}.fatal h2{margin:0;font-size:16px;color:var(--accent-2)}.fatal p{margin:0 auto;max-width:620px;line-height:1.55;color:var(--text-dim);font-size:12.5px}.fatal code{font-family:var(--font-mono);color:var(--accent)}footer{border-top:1px solid var(--border);background:var(--panel)}#cmdbar{display:flex;align-items:center;gap:8px;padding:6px 12px;border-bottom:1px solid var(--border)}#prompt{font-family:var(--font-mono);font-size:12px;color:var(--accent);white-space:nowrap}#command-line{flex:1;min-width:0;background:transparent;border:none;outline:none;color:var(--text);font-family:var(--font-mono);font-size:12.5px;letter-spacing:.01em}#command-line::placeholder{color:#4a5868}#statusbar{display:flex;align-items:center;gap:18px;padding:5px 12px;font-family:var(--font-mono);font-size:11px;color:var(--text-dim);user-select:none}#status-coords{color:var(--text);min-width:170px}#status-snap{color:var(--snap)}#status-ortho:not(:empty){color:var(--accent);border:1px solid var(--accent-dim);border-radius:3px;padding:0 5px}.nodes-shell{position:relative;display:flex;flex-direction:column;height:100%;min-height:0;background:var(--panel)}.nodes-header{display:flex;align-items:center;gap:8px;padding:6px 10px;border-bottom:1px solid var(--border);user-select:none}.nodes-title{font-family:var(--font-mono);font-size:10px;letter-spacing:.14em;color:var(--text-dim)}.nodes-count{margin-left:auto;font-family:var(--font-mono);font-size:10.5px;color:var(--ok)}.nodes-badge{margin-left:auto;color:var(--accent);border:1px solid var(--accent-dim);border-radius:3px;padding:1px 5px;font-size:9.5px;letter-spacing:.06em;text-transform:uppercase}.nodes-canvas{position:relative;flex:1 1 auto;overflow:hidden;background-color:#fafafa;background-image:radial-gradient(#dcdcdc 1px,transparent 1px);background-size:18px 18px}.nodes-canvas.is-panning{cursor:grabbing}.nodes-world{position:absolute;inset:0;transform-origin:0 0}.nodes-gpu-canvas{position:absolute;inset:0;display:block;outline:none}.node-row-editor{position:absolute;display:flex;align-items:stretch;gap:4px;z-index:6;padding:1px;background:#fff;border:1px solid var(--accent);border-radius:4px;box-shadow:0 2px 10px #0f172a1f}.node-row-editor .node-input,.node-row-editor .node-select{flex:1 1 auto;min-width:0;height:100%;font-size:11.5px}.node-row-editor .node-value-pick{flex:0 0 64px}.nodes-canvas[data-linking="1"]{cursor:crosshair}.nodes-edges{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}.node.is-selected{border-color:var(--accent);box-shadow:0 8px 18px #00000073,0 0 0 1px var(--accent)}.node-cut{stroke:#dc2626;stroke-width:1.6;stroke-dasharray:6 4}.node-marquee{position:absolute;z-index:40;border:1px solid var(--accent);background:#0b6b3414;pointer-events:none}.node-marquee.is-crossing{border-style:dashed;border-color:var(--accent-2);background:#c2410c14}.nodes-add{position:absolute;z-index:20;left:0;top:0;bottom:0;width:156px;display:flex;flex-direction:column;gap:2px;padding:5px 4px 6px;background:color-mix(in srgb,var(--panel) 92%,transparent);border-right:1px solid var(--border);backdrop-filter:blur(1px)}.nodes-add-title{font-family:var(--font-mono);font-size:8.5px;letter-spacing:.14em;color:var(--text-dim);padding:0 2px 2px}.nodes-add-filter{appearance:none;border:1px solid var(--border);border-radius:4px;background:#fff;color:var(--text);font-family:var(--font-mono);font-size:10.5px;padding:3px 5px;outline:none}.nodes-add-filter:focus{border-color:var(--accent)}.nodes-add-list{flex:1 1 auto;min-height:0;overflow:auto;display:flex;flex-direction:column;padding:2px 0;gap:1px}.nodes-add-list>*{flex:0 0 auto}.nodes-add-group{font-family:var(--font-mono);font-size:8.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--accent-2);padding:5px 4px 1px}.nodes-add-item{appearance:none;border:0;border-radius:4px;background:transparent;color:var(--text);text-align:left;font-size:11px;padding:3px 6px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nodes-add-item.is-active,.nodes-add-item:hover{background:var(--hover)}.nodes-add-empty{padding:6px 4px;font-size:10px;color:var(--text-dim)}#files-panel{width:232px;flex:0 0 232px;display:flex;flex-direction:column;min-height:0;background:var(--panel);border-right:1px solid var(--border);overflow:hidden}#files-panel[hidden]{display:none}.files-head-row{display:flex;align-items:center;gap:4px;padding:5px 6px;border-bottom:1px solid var(--border);background:#f7f7f7}.files-title{flex:1;font-family:var(--font-mono);font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--accent-2)}#files-link{font-size:9.5px;padding:2px 6px;border:1px solid var(--accent-dim);color:var(--accent)}#files-link:disabled{opacity:.45}#files-unlink[hidden]{display:none}#files-list{flex:1;min-height:0;overflow:auto;padding:4px;display:flex;flex-direction:column;gap:2px}.files-head{display:flex;align-items:center;justify-content:space-between;gap:6px;font-family:var(--font-mono);font-size:9px;letter-spacing:.1em;color:var(--text-dim);padding:2px 4px 4px}.files-add{appearance:none;width:16px;height:16px;display:grid;place-items:center;padding:0;border:1px solid var(--border);border-radius:3px;background:transparent;color:var(--text-dim);font-size:11px;line-height:1;cursor:pointer}.files-add:hover{border-color:var(--accent);color:var(--accent)}.files-group{display:flex;flex-direction:column;gap:2px}.files-row{appearance:none;display:flex;flex-direction:column;gap:1px;padding:4px 6px;border:1px solid transparent;border-radius:4px;background:transparent;color:var(--text);text-align:left;cursor:pointer}.files-row:hover{background:var(--hover)}.files-row.is-current{border-color:var(--accent);background:#f0f7f2}.files-name{font-size:11.5px;font-weight:600}.files-meta{font-family:var(--font-mono);font-size:9px;color:var(--text-dim)}.files-empty{padding:8px 6px;font-size:10px;color:var(--text-dim)}#status-file.is-dirty{color:var(--accent-2);font-weight:600}button.tool.file.is-dirty{border-color:var(--accent-2);color:var(--accent-2)}.modal{position:fixed;inset:0;z-index:200;display:grid;place-items:center;background:#14201a47}.modal-card{width:min(380px,90vw);display:grid;gap:10px;padding:14px;border:1px solid var(--accent);border-radius:8px;background:var(--panel);box-shadow:0 18px 40px #14201a38}.modal-title{margin:0;font-size:13px;font-weight:700;color:var(--accent)}.modal-message{margin:0;font-size:11.5px;line-height:1.45;color:var(--text)}.modal-field{display:grid;gap:4px;font-family:var(--font-mono);font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-dim)}.modal-input{appearance:none;border:1px solid var(--border);border-radius:4px;background:#fff;color:var(--text);font-family:var(--font-mono);font-size:12px;padding:5px 7px;outline:none}.modal-input:focus{border-color:var(--accent)}.modal-actions{display:flex;justify-content:flex-end;gap:6px;flex-wrap:wrap}.modal-actions .tool{padding:4px 10px}.modal-actions .tool.primary{background:var(--accent);border-color:var(--accent);color:#fff}.modal-actions .tool.primary:hover{background:#0b5d2e}.ctx-menu{position:fixed;z-index:300;min-width:184px;padding:4px;display:flex;flex-direction:column;gap:1px;border:1px solid var(--border);border-radius:6px;background:var(--panel);box-shadow:0 12px 28px #14201a33}.ctx-title{padding:3px 8px 5px;font-family:var(--font-mono);font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-dim);border-bottom:1px solid var(--border);margin-bottom:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ctx-item{appearance:none;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:5px 8px;border:0;border-radius:4px;background:transparent;color:var(--text);font-family:var(--font-ui);font-size:11.5px;text-align:left;cursor:pointer}.ctx-item:hover:not(:disabled){background:var(--hover)}.ctx-item:disabled{opacity:.45;cursor:default}.ctx-item.is-danger{color:#b91c1c}.ctx-item.is-danger:hover:not(:disabled){background:#b91c1c1a}.ctx-hint{font-family:var(--font-mono);font-size:9px;letter-spacing:.06em;color:var(--text-dim)}.node-edges{display:grid;gap:3px;padding:4px;border:1px dashed var(--accent-dim);border-radius:4px}.node-edges-head{display:flex;align-items:center;justify-content:space-between;gap:6px;font-family:var(--font-mono);font-size:9px;letter-spacing:.06em;text-transform:uppercase;color:var(--accent)}.node-edges-count{flex:1 1 auto;min-width:0;line-height:1.25}.node-edges-reset{appearance:none;border:1px solid var(--accent-dim);background:transparent;border-radius:3px;color:var(--accent);font-family:var(--font-mono);font-size:9px;padding:1px 4px;cursor:pointer}.node-edges-reset:disabled{opacity:.4;cursor:default}.node-trim-pick{appearance:none;width:100%;border:1px solid var(--accent);background:transparent;border-radius:3px;color:var(--accent);font-family:var(--font-mono);font-size:9.5px;letter-spacing:.04em;padding:3px 4px;cursor:pointer}.node-trim-pick:hover:not(:disabled){background:var(--accent);color:#fff}.node-trim-pick:disabled{opacity:.4;cursor:default}.node-trim-list{display:grid;gap:1px;max-height:92px;overflow-y:auto;padding:2px 0;border-block:1px dashed var(--accent-dim)}.node-pick-list{display:grid;gap:1px;max-height:96px;overflow-y:auto;padding:2px 0;border-block:1px dashed var(--accent-dim)}.node-trim-row{display:flex;align-items:center;gap:5px;padding:1px 2px;border-radius:3px;font-family:var(--font-mono);font-size:9.5px;color:var(--text);cursor:default}.node-trim-row:hover{background:#c2410c1f}.node-trim-key{flex:1 1 auto;white-space:nowrap}.node-trim-source{color:var(--text-dim);font-size:9px}.node-trim-x{flex:none;width:15px;height:15px;padding:0;display:inline-grid;place-items:center;border:1px solid transparent;border-radius:3px;background:transparent;color:var(--accent-2);font-size:11px;line-height:1;cursor:pointer}.node-trim-x:hover{border-color:var(--accent-2);background:var(--accent-2);color:#fff}.modal-card.is-wide{width:min(440px,92vw)}.trim-window{position:absolute;inset:0;z-index:80;display:grid;place-items:center;padding:8px;background:#20212447}.trim-window-card{width:min(340px,100%);max-height:100%;display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:6px;padding:10px;background:var(--panel);border:1px solid var(--accent);border-radius:6px;box-shadow:0 12px 26px #14201a3d}.trim-window-title{margin:0;font-family:var(--font-mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--accent)}.trim-window-actions{display:flex;justify-content:flex-end}.trim-window-list{display:grid;gap:2px;min-height:0;max-height:46vh;overflow-y:auto;padding:4px;border:1px solid var(--border);border-radius:4px}.trim-hover-layer{position:absolute;inset:0;z-index:18;pointer-events:none}.node-link-layer{position:absolute;inset:0;z-index:17;pointer-events:none}.node-link-svg{position:absolute;inset:0;overflow:visible}.node-link-path{fill:none;stroke:#0d9488;stroke-width:4;stroke-opacity:.95;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 3px rgb(13 148 136 / 55%))}.nodes-find{position:absolute;top:8px;right:8px;z-index:6;padding:4px 9px;border:1px solid var(--border);border-radius:6px;background:#fff;box-shadow:0 1px 3px #0f172a1f;font:inherit;font-size:11px;color:#334155;cursor:pointer}.nodes-find:hover{border-color:var(--accent);color:var(--accent)}.nodes-find:disabled{opacity:.5;cursor:default}.trim-piece.is-found{stroke:#0d9488;stroke-width:2.4;stroke-opacity:.8}.node.is-found{animation:node-found .9s ease-out}@keyframes node-found{0%{box-shadow:0 0 0 3px #0d9488a6}to{box-shadow:0 0 #0d948800}}.node-edge{fill:none;stroke:var(--accent-2);stroke-width:1.8;opacity:.9}.node-edge.is-value{stroke:#c2410c;stroke-width:1.4;stroke-dasharray:4 3;opacity:.75}.node-live{stroke:var(--accent);stroke-width:2;stroke-dasharray:7 5;opacity:1;animation:node-live-flow .5s linear infinite}@keyframes node-live-flow{to{stroke-dashoffset:-12}}.node-edge.is-drop{stroke:var(--accent);stroke-width:3.4;opacity:1}.node{position:absolute;width:max-content;min-width:180px;max-width:300px;box-sizing:border-box;background:#fff;border:1px solid var(--border);border-radius:6px;box-shadow:0 8px 18px #14201a24;font-size:11px;user-select:none}.node.is-output{border-color:var(--accent)}.node-head{display:flex;align-items:center;gap:6px;padding:4px 7px;background:#f0f5f1;border-bottom:1px solid var(--border);border-radius:5px 5px 0 0;cursor:move}.node-name{flex:1;font-weight:600;letter-spacing:.02em}.node-del{appearance:none;border:none;background:transparent;color:var(--text-dim);cursor:pointer;font-size:12px;line-height:1}.node-del:hover{color:var(--accent-2)}.node-body{padding:5px 7px 7px;display:grid;gap:4px}.node-param{display:flex;align-items:center;justify-content:space-between;gap:6px;color:var(--text-dim)}.node-param>span:first-child:not(.port){flex:1 1 auto;white-space:nowrap}.node-param input{width:76px;background:var(--panel-2);border:1px solid var(--border);border-radius:4px;color:var(--text);font-family:var(--font-mono);font-size:10.5px;padding:2px 4px}.node-param.is-derived input{background:#f3faf5;border-style:dashed;border-color:var(--accent);color:var(--accent);cursor:not-allowed}.node-param.is-derived span{color:var(--accent)}.node-param input.node-text-input{width:132px;font-family:var(--font-sans, inherit)}.node-select{width:96px;max-width:132px;background:var(--panel-2);border:1px solid var(--border);border-radius:4px;color:var(--text);font-family:var(--font-mono);font-size:10.5px;padding:2px 3px}.node.is-value{border-color:var(--accent-dim, var(--accent))}.node-value{font-family:var(--font-mono);font-size:10px;color:var(--accent);white-space:nowrap}.node-param.is-driven input{color:var(--accent);border-style:dashed;width:46px}.node-value-pick{width:26px;padding-left:2px;padding-right:0}.node-value-pick.is-bound{width:92px}.node-pick{flex:none;width:20px;height:18px;padding:0;display:inline-grid;place-items:center;border:1px solid var(--border);border-radius:4px;background:var(--panel-2);color:var(--accent);font-size:11px;line-height:1;cursor:pointer}.node-pick:hover:not(:disabled){border-color:var(--accent);background:#fff}.node-pick:disabled{color:var(--text-dim);opacity:.5;cursor:default}.node-picker{display:grid;gap:3px;margin-bottom:4px;padding:4px;border:1px dashed var(--accent-dim);border-radius:4px}.node-picker .node-param{color:var(--accent)}.node-picker .node-select{width:112px}.node-hint{color:var(--text-dim);font-size:10px}.port{position:absolute;top:24px;width:10px;height:10px;border-radius:50%;border:1.5px solid var(--accent);background:#fff;cursor:pointer}.port:before{content:"";position:absolute;inset:-7px;border-radius:50%}.port-in{left:-6px}.port-out{right:-6px}.port-param{position:relative;top:0;flex:none;width:9px;height:9px;margin-left:-9px;margin-right:1px;border-color:#c2410c}.port-param.is-bound{background:#c2410c}.port-slot{margin-left:-9px;border-color:var(--accent)}.port-slot.is-bound{background:var(--accent)}.node-inputs>.node-param>span:nth-child(2){flex:1 1 auto;white-space:nowrap}.node-input-state{flex:0 0 auto;font-family:var(--font-mono);font-size:10px;color:var(--text-dim)}.node-input-state.is-wired{color:var(--accent)}.port-multi{border-width:2px;box-shadow:0 0 0 2px #fff}.port:hover{background:var(--accent)}.port.is-armed{background:var(--accent);box-shadow:0 0 0 4px #0b6b3438}.port.is-target{background:var(--accent);border-color:var(--accent);box-shadow:0 0 0 5px #0b6b3442;transform:scale(1.4)}.dimension-edit{position:absolute;z-index:12;width:92px;padding:3px 6px;transform:translate(-50%,calc(-100% - 8px));font-family:var(--font-mono);font-size:12px;text-align:center;color:var(--text);background:#fffdf7;border:1px solid var(--accent);border-radius:4px;box-shadow:0 2px 10px #0000002e;outline:none}body.nodes-page{display:block;height:100%;padding:10px;background:var(--bg)}body.nodes-page #nodes-root{height:calc(100vh - 20px);border:1px solid var(--border);border-radius:8px;overflow:hidden}#status-backend{color:var(--ok);text-transform:uppercase;letter-spacing:.06em}#status-message{color:var(--text-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:46vw}#toolbar,.nodes-header{background:linear-gradient(180deg,#c2410c,#a8370a);border-bottom:1px solid #8a2c07;color:#fff}#toolbar .brand,#toolbar .brand-name{color:#fff;border-right-color:#ffffff4d}#toolbar .brand-mark{background:#fff;color:#a8370a}#toolbar .group-label,.nodes-header .nodes-count,.nodes-header .nodes-title{color:#ffe8d6;opacity:1}#toolbar .tool-divider{background:#ffffff52}#toolbar .modelling-row{border-top-color:#ffffff4d}#toolbar button.tool,#toolbar button.tool.file,.nodes-header button.tool{background:#ffffff1f;border-color:#ffffff73;color:#fff}#toolbar button.tool.ghost,.nodes-header button.tool.ghost{background:transparent}#toolbar button.tool:hover,#toolbar button.tool.file:hover,#toolbar button.tool.icon:hover,.nodes-header button.tool:hover{background:#ffffff42;border-color:#fff;color:#fff}#toolbar button.tool.active,#toolbar button.tool.file.open{background:#0b3d25;border-color:#0b3d25;color:#eafff2}#toolbar button.tool.snap.on{background:#ffffff42;border-color:#fff;color:#fff}#toolbar .menu-caret{color:#fff;opacity:.8}#toolbar .menu-panel button{color:var(--text);background:transparent;border:0}#toolbar .menu-panel button:hover{background:var(--hover);color:var(--accent)}
