.planner-flow{--xy-background-color:var(--color-bg-deep);--xy-background-pattern-color:#2a3038;--xy-edge-stroke:#5b6470;--xy-edge-stroke-selected:var(--color-primary);--xy-edge-stroke-width:1.5;--xy-edge-label-background-color:#14171c;--xy-edge-label-color:#b7bfc9;--xy-controls-button-background-color:#1a1e24;--xy-controls-button-background-color-hover:#23282f;--xy-controls-button-color:#b7bfc9;--xy-controls-button-border-color:#333a43;--xy-minimap-background-color:#101317;--xy-minimap-mask-background-color:#0d0f12b3;--xy-handle-background-color:#5b6470;--xy-handle-border-color:#14171c;--xy-node-border-radius:8px;font-family:var(--font-sans)}.planner-flow .svelte-flow__edge-label,.planner-flow .svelte-flow__edge-textwrapper{font-family:var(--font-mono);font-size:10px}.planner-flow .svelte-flow__edge.animated path{stroke:var(--color-primary);stroke-width:2px}.planner-flow .svelte-flow__attribution{color:#878f9b;background:0 0}.planner-node{box-sizing:border-box;border:1px solid var(--color-border);background:var(--color-surface);width:208px;color:var(--color-text);border-left-width:3px;border-radius:8px;padding:8px 12px;position:relative;box-shadow:0 6px 20px #00000059}.planner-node .node-kind{font-family:var(--font-display);letter-spacing:.14em;text-transform:uppercase;opacity:.85;font-size:9px;font-weight:600}.node-recipe{border-left-color:var(--color-primary);width:264px}.node-resource{border-left-color:var(--color-accent);color:var(--color-accent)}.node-input{color:#d9a674;background:#1c1915;border-left-color:#b07a4a}.node-product{border-left-color:var(--color-success);color:var(--color-success)}.node-byproduct{color:#6fb3b5;background:#151c1d;border-left-color:#3a8f92}.planner-node .node-kind{color:inherit}.node-recipe .node-kind{color:var(--color-primary)}.svelte-flow__node.selected .planner-node{outline:1px solid var(--color-primary)}.node-recipe .port-row{align-items:center;gap:6px;height:20px;display:flex;position:relative}.node-recipe .port-row .svelte-flow__handle-left{left:-15px}.node-recipe .port-row .svelte-flow__handle-right{right:-13px}.planner-node .svelte-flow__handle{border-width:1px;width:8px;height:8px}.node-recipe .port-row .svelte-flow__handle{background:var(--color-primary)}.node-resource .svelte-flow__handle{background:var(--color-accent)}.node-input .svelte-flow__handle{background:#b07a4a}.node-product .svelte-flow__handle{background:var(--color-success)}.node-byproduct .svelte-flow__handle{background:#3a8f92}.node-machine{border-left-color:var(--color-primary);width:288px}.node-machine .node-kind{color:var(--color-primary)}.node-machine.is-bound{border-left-color:var(--color-primary);box-shadow:0 6px 20px #00000059,0 0 0 1px #f79e4559}.node-storage{border-left-color:#8b95a2;width:176px}.node-sink{color:#d7a6ea;background:#1b151f;border-left-color:#b46ad2;width:176px}.node-sink .svelte-flow__handle{background:#b46ad2}.node-storage .svelte-flow__handle{background:#8b95a2}.node-storage .node-kind,.node-sink .node-kind{color:inherit}.node-power-storage{border-color:#7fd07a80;width:200px}.node-power-storage .node-kind{color:var(--color-success)}.node-logistics{border-left-color:#8b95a2;width:176px}.node-logistics .node-kind{color:inherit}.node-logistics .svelte-flow__handle{background:#8b95a2}.node-logistics .port-row{align-items:center;gap:6px;height:20px;display:flex;position:relative}.node-logistics .port-row .svelte-flow__handle-left{left:-15px}.node-logistics .port-row .svelte-flow__handle-right{right:-13px}.node-pipe-merger{width:224px}.node-load-balancer{border-left-color:#8b95a2;width:200px}.node-load-balancer .node-kind{color:inherit}.node-load-balancer .svelte-flow__handle{background:#8b95a2}.node-load-balancer .port-row{align-items:center;gap:6px;height:20px;display:flex;position:relative}.node-load-balancer .port-row .svelte-flow__handle-left{left:-15px}.node-load-balancer .port-row .svelte-flow__handle-right{right:-13px}.node-load-balancer .port-row-idle{height:var(--lb-port-gap,6px);opacity:.5}.node-load-balancer .port-row-idle .svelte-flow__handle{width:6px;height:6px}.node-load-balancer .svelte-flow__handle.handle-idle{background:#4a5158}.planner-node.is-starved{border-color:#e4694ab3;border-left-color:var(--color-danger);color:var(--color-danger)}.planner-node.is-surplus{border-left-color:var(--color-success)}.planner-node.is-bound{border-left-color:var(--color-primary)}.node-machine .port-row{height:20px;color:var(--color-text);align-items:center;gap:6px;display:flex;position:relative}.node-machine .port-row .mono{color:var(--color-muted)}.port-row.port-starved,.port-row.port-starved .mono,.port-surplus,.port-surplus .mono{color:inherit}.port-row.port-starved{color:var(--color-danger)}.port-row.port-surplus{color:var(--color-success)}.port-row.port-bound{color:var(--color-primary)}.port-row.port-capped,.port-row.port-capped .mono{color:var(--color-accent)}.node-input-issue,.port-row.port-unconnected,.port-row.port-unconnected .mono{color:var(--color-danger)}.planner-node .svelte-flow__handle.handle-starved{background:var(--color-danger);box-shadow:0 0 0 3px #e4694a4d}.planner-node .svelte-flow__handle.handle-surplus{background:var(--color-success);box-shadow:0 0 0 3px #7fd07a4d}.planner-node .svelte-flow__handle.handle-bound{background:var(--color-primary)}.planner-node .svelte-flow__handle.handle-capped{background:var(--color-accent)}.planner-node .svelte-flow__handle.handle-unconnected{background:var(--color-danger)}.node-machine .port-row .svelte-flow__handle-left{left:-15px}.node-machine .port-row .svelte-flow__handle-right{right:-13px}.node-machine .port-row .svelte-flow__handle{background:var(--color-primary)}.node-machine .port-row .svelte-flow__handle.handle-starved{background:var(--color-danger)}.node-machine .port-row .svelte-flow__handle.handle-surplus{background:var(--color-success)}.node-machine .port-row .svelte-flow__handle.handle-unconnected{background:var(--color-danger)}.planner-flow.is-manual .svelte-flow__handle{cursor:crosshair;width:10px;height:10px;transition:scale 80ms ease-out}.planner-flow.is-manual .svelte-flow__handle:hover{scale:1.4}.planner-flow .svelte-flow__connectionline path{stroke:var(--color-primary);stroke-width:2px;stroke-dasharray:4 3}.planner-flow .svelte-flow__handle.connectingto.valid{background:var(--color-success)}.planner-flow .svelte-flow__handle.connectingto:not(.valid){background:var(--color-danger)}.node-close{border:1px solid var(--color-border);background:var(--color-surface);width:16px;height:16px;color:var(--color-muted);opacity:0;border-radius:999px;font-size:12px;line-height:1;transition:opacity .12s;position:absolute;top:-7px;right:-7px}.planner-node:hover .node-close,.svelte-flow__node.selected .node-close{opacity:1}.node-close:hover{background:var(--color-surface-3);color:var(--color-danger)}.planner-node .node-amount{cursor:text;border-bottom:1px dashed}.planner-node .node-amount:hover{color:var(--color-primary)}.planner-node .node-amount-input{border:1px solid var(--color-primary);background:var(--color-bg-deep);width:74px;color:var(--color-text-strong);text-align:right;border-radius:4px;padding:1px 4px;font-size:12px;line-height:1.2}.node-side{opacity:0;visibility:hidden;pointer-events:none;align-items:center;gap:2px;transition:opacity .12s,visibility 0s linear .35s;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.node-side-left{flex-direction:row;padding-right:10px;right:100%}.node-side-right{padding-left:10px;left:100%}.node-side-left{gap:0}.node-side-left .node-act+.node-act{margin-left:-10px}.planner-node:hover .node-side,.planner-node:focus-within .node-side{opacity:1;visibility:visible;transition-delay:0s}.node-act{width:56px;height:56px;color:var(--color-muted);cursor:pointer;pointer-events:auto;background:0 0;border:none;flex:none;place-items:center;padding:8px;display:grid}.node-act>svg{box-sizing:content-box;border:1px solid var(--color-border);background:var(--color-surface-2);border-radius:999px;width:20px;height:20px;padding:9px;transition:color .1s,background .1s,border-color .1s;box-shadow:0 2px 8px #00000073}.node-act:hover{color:var(--color-text)}.node-act:hover>svg{background:var(--color-surface-3);border-color:var(--color-muted-2)}.node-act:focus-visible>svg{outline:2px solid var(--color-primary);outline-offset:2px}.node-act-wand:hover{color:var(--color-primary)}.node-act:disabled{opacity:.5;cursor:default}.node-act:disabled:hover>svg{background:var(--color-surface-2);border-color:var(--color-border)}.pill-clock{font-family:var(--font-mono);color:var(--color-accent);background:#5fd2ce1f;border:1px solid #5fd2ce80;border-radius:999px;padding:2px 4px;font-size:9px;line-height:1}.pill-somersloop{font-family:var(--font-mono);color:#c9a0f0;background:#b882eb26;border:1px solid #b882eb80;border-radius:999px;align-items:center;gap:2px;padding:2px 4px;font-size:9px;line-height:1;display:inline-flex}.node-module{background:#1b1913;border-left-color:#c9a227;width:288px}.node-module .node-kind{color:#e2c14f}.node-module .port-row{height:20px;color:var(--color-text);align-items:center;gap:6px;display:flex;position:relative}.node-module .port-row .mono{color:var(--color-muted)}.node-module .port-row .svelte-flow__handle-left{left:-15px}.node-module .port-row .svelte-flow__handle-right{right:-13px}.node-module .port-row .svelte-flow__handle{background:#c9a227}.node-module .port-row .svelte-flow__handle.handle-starved{background:var(--color-danger)}.node-module .port-row .svelte-flow__handle.handle-surplus{background:var(--color-success)}.node-open{color:#e2c14f;font-family:var(--font-display);letter-spacing:.1em;text-transform:uppercase;opacity:0;background:#c9a2271f;border:1px solid #c9a22780;border-radius:999px;padding:1px 6px;font-size:9px;font-weight:600;transition:opacity .12s;position:absolute;bottom:6px;right:8px}.planner-node:hover .node-open,.svelte-flow__node.selected .node-open{opacity:1}.node-extractor{border-left-color:var(--color-accent);width:224px;color:var(--color-accent);background:#131a1c}.node-extractor .svelte-flow__handle{background:var(--color-accent)}.node-station{color:#9db4ea;background:#14171f;border-left-color:#6f8fd8;width:224px}.node-station .svelte-flow__handle{background:#6f8fd8}.pill-purity,.pill-locked{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;opacity:.9;border:1px solid;border-radius:999px;padding:2px 4px;font-size:8px;line-height:1}.pill-impure{color:#b8846a}.pill-normal{color:#9fb0c0}.pill-pure{color:#7fd07a}.pill-locked{color:#d9a674;background:#d9a6741f}.planner-flow .svelte-flow__edge path.flow-edge{stroke:#5b6470;stroke-width:1.5px}.planner-flow .svelte-flow__edge path.flow-edge-hot{stroke:var(--color-primary);stroke-width:2px}.planner-flow .svelte-flow__edge path.flow-edge-zero{stroke-dasharray:3 4;opacity:.6}.planner-flow .svelte-flow__edge path.flow-edge-selected,.planner-flow .svelte-flow__edge.selected path.flow-edge{stroke:var(--color-primary);stroke-width:2.5px}.flow-edge-label{border:1px solid var(--color-border);color:#b7bfc9;pointer-events:all;cursor:default;background:#14171ce6;border-radius:6px;flex-direction:row;align-items:center;gap:4px;padding:2px 6px;display:flex;position:relative}.flow-edge-label.is-selected{border-color:var(--color-primary)}.flow-edge-label.is-zero{opacity:.7}.flow-edge-amount{white-space:nowrap;font-size:11px;line-height:1}.flow-edge-delete{border:1px solid var(--color-border);background:var(--color-surface);width:16px;height:16px;color:var(--color-danger);border-radius:999px;font-size:11px;line-height:1;position:absolute;top:-8px;right:-8px}.flow-edge-tip{border:1px solid var(--color-border);background:var(--color-surface);min-width:160px;color:var(--color-text);white-space:nowrap;z-index:50;pointer-events:none;border-radius:8px;padding:8px 10px;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);box-shadow:0 8px 24px #00000073}.comment-pin-anchor{z-index:40}.planner-flow .svelte-flow__node-input,.planner-flow .svelte-flow__node-output,.planner-flow .svelte-flow__node-default{width:auto;color:inherit;box-shadow:none;font-size:inherit;text-align:left;background:0 0;border:none;border-radius:0;padding:0}.planner-flow .svelte-flow__node-input.selectable:hover,.planner-flow .svelte-flow__node-output.selectable:hover,.planner-flow .svelte-flow__node-input.selectable.selected,.planner-flow .svelte-flow__node-output.selectable.selected{box-shadow:none}.quick-add .qa-row{border-bottom:1px solid var(--color-border-subtle);text-align:left;cursor:pointer;flex-direction:column;width:100%;padding:6px 10px;display:flex}.quick-add .qa-row:hover,.quick-add .qa-row.is-active{background:#f79e451f}.quick-add .qa-row.is-active{box-shadow:inset 2px 0 0 var(--color-primary)}.quick-add .qa-io{color:var(--color-muted);flex-wrap:wrap;align-items:center;gap:4px 6px;margin-top:3px;font-size:10px;display:flex}.quick-add .qa-rate{white-space:nowrap;align-items:center;gap:3px;display:inline-flex}.quick-add .qa-rate.is-item{color:var(--color-text-strong)}.quick-add .qa-vehicle{border:1px solid var(--color-border);font-family:var(--font-display);letter-spacing:.08em;text-transform:uppercase;color:var(--color-muted);border-radius:999px;align-items:center;gap:4px;padding:2px 7px;font-size:10px;font-weight:600;display:inline-flex}.quick-add .qa-port{border:1px solid var(--color-border);background:var(--color-surface-2);max-width:100%;color:var(--color-muted);cursor:pointer;border-radius:999px;align-items:center;gap:4px;padding:2px 8px;font-size:11px;display:inline-flex}.quick-add .qa-port:hover{color:var(--color-text);background:var(--color-surface-3)}.quick-add .qa-port.is-active{color:var(--color-primary);background:#f79e4526;border-color:#f79e4580}.quick-add .qa-vehicle:hover{color:var(--color-text);background:var(--color-surface-2)}.quick-add .qa-vehicle.is-active{color:var(--color-primary);background:#f79e4526;border-color:#f79e4580}.node-station{width:256px}.node-station .port-row{height:20px;color:var(--color-text);align-items:center;gap:6px;display:flex;position:relative}.node-station .port-row .mono{color:var(--color-muted)}.node-station .port-row .svelte-flow__handle-left{left:-15px}.node-station .port-row .svelte-flow__handle-right{right:-13px}.node-station .port-row.port-any{color:var(--color-muted)}.node-station .port-row.port-any .svelte-flow__handle.handle-any{background:0 0;border:1px dashed #9db4ea}.node-station .port-row.port-fuel .svelte-flow__handle.handle-fuel{background:#d9a674;border-radius:2px}.node-station .port-row.port-fuel{color:#d9a674}.node-station .port-row.port-starved{color:var(--color-danger)}.node-station .port-row.port-surplus{color:var(--color-success)}.node-station .port-row.port-bound{color:var(--color-primary)}.node-station .station-route{color:#9db4ea;text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:4px;width:100%;height:18px;margin:0;padding:0;font-size:10px;line-height:1;display:flex}.node-station .station-route:hover{color:var(--color-primary)}.node-station .port-row.port-idle{opacity:.5}.node-station .pill-role{font-family:var(--font-mono);letter-spacing:.06em;border:1px solid;border-radius:999px;flex-shrink:0;margin-left:auto;padding:2px 4px;font-size:8px;line-height:1}.node-station .pill-role-load{color:var(--color-success)}.node-station .pill-role-unload{color:var(--color-accent)}.node-station .pill-role-mixed{color:var(--color-primary)}.node-station .pill-role-pass{color:var(--color-muted)}.node-station .pill-dir{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;opacity:.8;border:1px solid;border-radius:999px;padding:2px 4px;font-size:8px;line-height:1}.node-generator{border-left-color:var(--color-success);background:#141a15;width:272px}.node-generator .node-kind{color:var(--color-success)}.node-generator .port-row{height:20px;color:var(--color-text);align-items:center;gap:6px;display:flex;position:relative}.node-generator .port-row .mono{color:var(--color-muted)}.node-generator .port-row.port-unconnected,.node-generator .port-row.port-unconnected .mono{color:var(--color-danger)}.node-generator .port-row .svelte-flow__handle-left{left:-15px}.node-generator .port-row .svelte-flow__handle-right{right:-13px}.node-generator .port-row .svelte-flow__handle{background:var(--color-success)}.node-generator .port-row .svelte-flow__handle.handle-starved{background:var(--color-danger)}.node-generator .port-row .svelte-flow__handle.handle-surplus{background:var(--color-success)}.node-generator .port-row .svelte-flow__handle.handle-unconnected{background:var(--color-danger)}.node-generator.is-bound{box-shadow:0 6px 20px #00000059,0 0 0 1px #7fd07a59}.node-generator.is-starved{border-left-color:var(--color-danger)}.flow-wp{border:2px solid var(--color-primary);background:var(--color-surface);cursor:grab;pointer-events:all;touch-action:none;border-radius:999px;width:12px;height:12px;padding:0;display:block;box-shadow:0 0 0 3px #f79e4540,0 2px 6px #00000080}.flow-wp:hover{background:var(--color-primary)}.flow-wp.is-dragging{cursor:grabbing;background:var(--color-primary)}.flow-wp-add{border:1px dashed var(--color-primary);width:14px;height:14px;color:var(--color-primary);opacity:.55;cursor:copy;pointer-events:all;background:#14171ceb;border-radius:999px;place-items:center;padding:0;font-size:11px;line-height:1;transition:opacity .12s;display:grid}.flow-wp-add:hover{opacity:1}.flow-edge-seg{fill:none;stroke:#0000;stroke-width:14px;pointer-events:stroke;touch-action:none}.flow-edge-seg.is-h{cursor:ns-resize}.flow-edge-seg.is-v{cursor:ew-resize}.flow-edge-seg.is-dragging{stroke:#f79e452e}.radial-wedge{fill:#1a1e24d9;stroke:var(--color-border);stroke-width:1px;cursor:pointer;pointer-events:all;transition:fill .1s ease-out}.radial-wedge.is-hover{fill:#f79e45d9}.radial-wedge.is-disabled{fill:#101216eb;cursor:not-allowed}.radial-icon{filter:drop-shadow(0 1px 2px #0009);justify-content:center;align-items:center;display:flex}.radial-icon.is-disabled{opacity:.35}.radial-centre{border:1px solid var(--color-border);background:#0d0f12eb;border-radius:999px;box-shadow:0 8px 30px #00000080}.radial-back{border:1px solid var(--color-border);background:var(--color-surface-2);width:24px;height:24px;color:var(--color-text);border-radius:999px;place-items:center;display:grid}.radial-back:hover{color:var(--color-primary);border-color:#f79e4580}
