html,body,#root{width:100%;height:100%;overflow:hidden}body{background:#0a0f1a}.react-flow{--xy-edge-stroke-default:#b1b1b7;--xy-edge-stroke-width-default:1;--xy-edge-stroke-selected-default:#555;--xy-connectionline-stroke-default:#b1b1b7;--xy-connectionline-stroke-width-default:1;--xy-attribution-background-color-default:#ffffff80;--xy-minimap-background-color-default:#fff;--xy-minimap-mask-background-color-default:#f0f0f099;--xy-minimap-mask-stroke-color-default:transparent;--xy-minimap-mask-stroke-width-default:1;--xy-minimap-node-background-color-default:#e2e2e2;--xy-minimap-node-stroke-color-default:transparent;--xy-minimap-node-stroke-width-default:2;--xy-background-color-default:transparent;--xy-background-pattern-dots-color-default:#91919a;--xy-background-pattern-lines-color-default:#eee;--xy-background-pattern-cross-color-default:#e2e2e2;background-color:var(--xy-background-color,var(--xy-background-color-default));--xy-node-color-default:inherit;--xy-node-border-default:1px solid #1a192b;--xy-node-background-color-default:#fff;--xy-node-group-background-color-default:#f0f0f040;--xy-node-boxshadow-hover-default:0 1px 4px 1px #00000014;--xy-node-boxshadow-selected-default:0 0 0 .5px #1a192b;--xy-node-border-radius-default:3px;--xy-handle-background-color-default:#1a192b;--xy-handle-border-color-default:#fff;--xy-selection-background-color-default:#0059dc14;--xy-selection-border-default:1px dotted #0059dccc;--xy-controls-button-background-color-default:#fefefe;--xy-controls-button-background-color-hover-default:#f4f4f4;--xy-controls-button-color-default:inherit;--xy-controls-button-color-hover-default:inherit;--xy-controls-button-border-color-default:#eee;--xy-controls-box-shadow-default:0 0 2px 1px #00000014;--xy-edge-label-background-color-default:#fff;--xy-edge-label-color-default:inherit;--xy-resize-background-color-default:#3367d9;direction:ltr}.react-flow.dark{--xy-edge-stroke-default:#3e3e3e;--xy-edge-stroke-width-default:1;--xy-edge-stroke-selected-default:#727272;--xy-connectionline-stroke-default:#b1b1b7;--xy-connectionline-stroke-width-default:1;--xy-attribution-background-color-default:#96969640;--xy-minimap-background-color-default:#141414;--xy-minimap-mask-background-color-default:#3c3c3c99;--xy-minimap-mask-stroke-color-default:transparent;--xy-minimap-mask-stroke-width-default:1;--xy-minimap-node-background-color-default:#2b2b2b;--xy-minimap-node-stroke-color-default:transparent;--xy-minimap-node-stroke-width-default:2;--xy-background-color-default:#141414;--xy-background-pattern-dots-color-default:#777;--xy-background-pattern-lines-color-default:#777;--xy-background-pattern-cross-color-default:#777;--xy-node-color-default:#f8f8f8;--xy-node-border-default:1px solid #3c3c3c;--xy-node-background-color-default:#1e1e1e;--xy-node-group-background-color-default:#f0f0f040;--xy-node-boxshadow-hover-default:0 1px 4px 1px #ffffff14;--xy-node-boxshadow-selected-default:0 0 0 .5px #999;--xy-handle-background-color-default:#bebebe;--xy-handle-border-color-default:#1e1e1e;--xy-selection-background-color-default:#c8c8dc14;--xy-selection-border-default:1px dotted #c8c8dccc;--xy-controls-button-background-color-default:#2b2b2b;--xy-controls-button-background-color-hover-default:#3e3e3e;--xy-controls-button-color-default:#f8f8f8;--xy-controls-button-color-hover-default:#fff;--xy-controls-button-border-color-default:#5b5b5b;--xy-controls-box-shadow-default:0 0 2px 1px #00000014;--xy-edge-label-background-color-default:#141414;--xy-edge-label-color-default:#f8f8f8}.react-flow__background{background-color:var(--xy-background-color-props,var(--xy-background-color,var(--xy-background-color-default)));pointer-events:none;z-index:-1}.react-flow__container{width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__pane{z-index:1}.react-flow__pane.draggable{cursor:grab}.react-flow__pane.dragging{cursor:grabbing}.react-flow__pane.selection{cursor:pointer}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow__edge-path{stroke:var(--xy-edge-stroke,var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width,var(--xy-edge-stroke-width-default));fill:none}.react-flow__connection-path{stroke:var(--xy-connectionline-stroke,var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width,var(--xy-connectionline-stroke-width-default));fill:none}.react-flow .react-flow__edges{position:absolute}.react-flow .react-flow__edges svg{pointer-events:none;position:absolute;overflow:visible}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:.5s linear infinite dashdraw}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge.selectable:focus .react-flow__edge-path,.react-flow__edge.selectable:focus-visible .react-flow__edge-path{stroke:var(--xy-edge-stroke-selected,var(--xy-edge-stroke-selected-default))}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;user-select:none}.react-flow__arrowhead polyline{stroke:var(--xy-edge-stroke,var(--xy-edge-stroke-default))}.react-flow__arrowhead polyline.arrowclosed{fill:var(--xy-edge-stroke,var(--xy-edge-stroke-default))}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:.5s linear infinite dashdraw}svg.react-flow__connectionline{z-index:1001;position:absolute;overflow:visible}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{-webkit-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default;position:absolute}.react-flow__node.selectable{cursor:pointer}.react-flow__node.draggable{cursor:grab;pointer-events:all}.react-flow__node.draggable.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:0 0;pointer-events:none}.react-flow__nodesselection-rect{pointer-events:all;cursor:grab;position:absolute}.react-flow__handle{pointer-events:none;background-color:var(--xy-handle-background-color,var(--xy-handle-background-color-default));border:1px solid var(--xy-handle-border-color,var(--xy-handle-border-color-default));border-radius:100%;width:6px;min-width:5px;height:6px;min-height:5px;position:absolute}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;bottom:0;left:50%;transform:translate(-50%,50%)}.react-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.react-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.react-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__pane.selection .react-flow__panel{pointer-events:none}.react-flow__panel{z-index:5;margin:15px;position:absolute}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.top.center,.react-flow__panel.bottom.center{left:50%;transform:translate(-15px)translate(-50%)}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.left.center,.react-flow__panel.right.center{top:50%;transform:translateY(-15px)translateY(-50%)}.react-flow__attribution{background:var(--xy-attribution-background-color,var(--xy-attribution-background-color-default));margin:0;padding:2px 3px;font-size:10px}.react-flow__attribution a{color:#999;text-decoration:none}@keyframes dashdraw{0%{stroke-dashoffset:10px}}.react-flow__edgelabel-renderer{pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__viewport-portal{-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__minimap{background:var(--xy-minimap-background-color-props,var(--xy-minimap-background-color,var(--xy-minimap-background-color-default)))}.react-flow__minimap-svg{display:block}.react-flow__minimap-mask{fill:var(--xy-minimap-mask-background-color-props,var(--xy-minimap-mask-background-color,var(--xy-minimap-mask-background-color-default)));stroke:var(--xy-minimap-mask-stroke-color-props,var(--xy-minimap-mask-stroke-color,var(--xy-minimap-mask-stroke-color-default)));stroke-width:var(--xy-minimap-mask-stroke-width-props,var(--xy-minimap-mask-stroke-width,var(--xy-minimap-mask-stroke-width-default)))}.react-flow__minimap-node{fill:var(--xy-minimap-node-background-color-props,var(--xy-minimap-node-background-color,var(--xy-minimap-node-background-color-default)));stroke:var(--xy-minimap-node-stroke-color-props,var(--xy-minimap-node-stroke-color,var(--xy-minimap-node-stroke-color-default)));stroke-width:var(--xy-minimap-node-stroke-width-props,var(--xy-minimap-node-stroke-width,var(--xy-minimap-node-stroke-width-default)))}.react-flow__background-pattern.dots{fill:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-dots-color-default)))}.react-flow__background-pattern.lines{stroke:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-lines-color-default)))}.react-flow__background-pattern.cross{stroke:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-cross-color-default)))}.react-flow__controls{box-shadow:var(--xy-controls-box-shadow,var(--xy-controls-box-shadow-default));flex-direction:column;display:flex}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{background:var(--xy-controls-button-background-color,var(--xy-controls-button-background-color-default));border:none;border-bottom:1px solid var(--xy-controls-button-border-color-props,var(--xy-controls-button-border-color,var(--xy-controls-button-border-color-default)));width:26px;height:26px;color:var(--xy-controls-button-color-props,var(--xy-controls-button-color,var(--xy-controls-button-color-default)));cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;padding:4px;display:flex}.react-flow__controls-button svg{fill:currentColor;width:100%;max-width:12px;max-height:12px}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-input,.react-flow__node-default,.react-flow__node-output,.react-flow__node-group{border-radius:var(--xy-node-border-radius,var(--xy-node-border-radius-default));width:150px;color:var(--xy-node-color,var(--xy-node-color-default));text-align:center;border:var(--xy-node-border,var(--xy-node-border-default));background-color:var(--xy-node-background-color,var(--xy-node-background-color-default));padding:10px;font-size:12px}.react-flow__node-input.selectable:hover,.react-flow__node-default.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:var(--xy-node-boxshadow-hover,var(--xy-node-boxshadow-hover-default))}.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:var(--xy-node-boxshadow-selected,var(--xy-node-boxshadow-selected-default))}.react-flow__node-group{background-color:var(--xy-node-group-background-color,var(--xy-node-group-background-color-default))}.react-flow__nodesselection-rect,.react-flow__selection{background:var(--xy-selection-background-color,var(--xy-selection-background-color-default));border:var(--xy-selection-border,var(--xy-selection-border-default))}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__controls.horizontal .react-flow__controls-button{border-bottom:none;border-right:1px solid var(--xy-controls-button-border-color-props,var(--xy-controls-button-border-color,var(--xy-controls-button-border-color-default)))}.react-flow__controls.horizontal .react-flow__controls-button:last-child{border-right:none}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{background-color:var(--xy-resize-background-color,var(--xy-resize-background-color-default));border:1px solid #fff;border-radius:1px;width:5px;height:5px;translate:-50% -50%}.react-flow__resize-control.handle.left{top:50%;left:0}.react-flow__resize-control.handle.right{top:50%;left:100%}.react-flow__resize-control.handle.top{top:0;left:50%}.react-flow__resize-control.handle.bottom{top:100%;left:50%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:var(--xy-resize-background-color,var(--xy-resize-background-color-default));border-style:solid;border-width:0}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;height:100%;top:0;transform:translate(-50%)}.react-flow__resize-control.line.left{border-left-width:1px;left:0}.react-flow__resize-control.line.right{border-right-width:1px;left:100%}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{width:100%;height:1px;left:0;transform:translateY(-50%)}.react-flow__resize-control.line.top{border-top-width:1px;top:0}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.react-flow__edge-textbg{fill:var(--xy-edge-label-background-color,var(--xy-edge-label-background-color-default))}.react-flow__edge-text{fill:var(--xy-edge-label-color,var(--xy-edge-label-color-default))}:root{--bg-canvas:#ccc5b8;--bg-panel:#f0ebe0;--bg-panel-alt:#e6e0d4;--bg-input:#ddd8cc;--bg-footer:#eae4d8;--border:#b0a898;--border-light:#ccc4b8;--border-focus:#e07818;--text-primary:#1a1510;--text-secondary:#3a3028;--text-muted:#7a6e60;--text-label:#5a5040;--accent:#e07818;--accent-soft:#e078181a;--green:#3a8a28;--green-soft:#3a8a2814;--green-border:#3a8a284d;--red:#c84030;--blue-rate:#2a7a94;--green-rate:#3a8a28;--shadow-sm:0 2px 8px #00000024;--shadow-md:0 4px 18px #0003;--shadow-selected:0 0 0 3px #e0781838;--dot-color:#b8b0a4;--minimap-mask:#c8c1b8a6}[data-theme=dark]{--bg-canvas:#0b0c0f;--bg-panel:#13151b;--bg-panel-alt:#0e1014;--bg-input:#0d0e13;--bg-footer:#101218;--border:#282c38;--border-light:#1c1f28;--border-focus:#fa9549;--text-primary:#ede8e0;--text-secondary:#a09488;--text-muted:#48443e;--text-label:#706860;--accent:#fa9549;--accent-soft:#fa954921;--green:#62b944;--green-soft:#62b94417;--green-border:#62b9444d;--red:#e05c4a;--blue-rate:#5bb0c5;--green-rate:#62b944;--shadow-sm:0 2px 10px #00000073;--shadow-md:0 4px 22px #000000a6;--shadow-selected:0 0 0 3px #fa954938;--dot-color:#1a1d24;--minimap-mask:#08090cb8}*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg-canvas);color:var(--text-primary);height:100vh;font-family:Inter,system-ui,-apple-system,sans-serif;transition:background .2s;overflow:hidden}.app{width:100vw;height:100vh;display:flex}.planner-canvas{flex:1;height:100%}.toolbar{z-index:20;align-items:center;gap:6px;display:flex;position:absolute;top:12px;right:16px}.toolbar__btn{background:var(--bg-panel);border:1px solid var(--border);letter-spacing:.03em;text-transform:uppercase;color:var(--text-secondary);cursor:pointer;box-shadow:var(--shadow-sm);-webkit-user-select:none;user-select:none;white-space:nowrap;border-bottom:2px solid var(--border);border-radius:4px;align-items:center;gap:6px;padding:5px 12px;font-size:11px;font-weight:600;transition:background .12s,color .12s,border-color .12s;display:flex}.toolbar__btn:hover{background:var(--bg-input);color:var(--text-primary);border-bottom-color:var(--accent)}.toolbar__btn--active{background:var(--accent-soft);border-color:var(--accent);border-bottom-color:var(--accent);color:var(--accent)}.toolbar__btn--active:hover{background:color-mix(in srgb, var(--accent) 22%, var(--bg-panel));color:var(--accent)}.toolbar__btn kbd{text-transform:none;letter-spacing:0;background:#ffffff1a;border:1px solid #ffffff2e;border-radius:3px;margin-left:3px;padding:0 4px;font-family:inherit;font-size:10px}.sidebar{background:var(--bg-panel);border-right:1px solid var(--border);z-index:10;flex-direction:column;width:260px;min-width:220px;height:100%;display:flex;overflow:hidden;box-shadow:2px 0 12px #00000040}.sidebar__header{border-bottom:1px solid var(--border);background:var(--bg-panel-alt);padding:14px 14px 10px}.sidebar__brand{align-items:center;gap:10px;margin-bottom:4px;display:flex}.sidebar__brand-icon{flex-shrink:0;width:32px;height:32px}.sidebar__title{letter-spacing:-.01em;font-size:26px;font-weight:900;line-height:1}.sidebar__title-op{color:var(--accent)}.sidebar__title-tim{color:var(--text-primary)}.sidebar__subtitle-row{justify-content:space-between;align-items:center;gap:8px;display:flex}.sidebar__subtitle{letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);font-size:9px;font-weight:600}.sidebar__alpha-badge{letter-spacing:.06em;text-transform:uppercase;color:#d2a736;white-space:nowrap;cursor:default;background:#d2a7361f;border:1px solid #d2a73659;border-radius:3px;flex-shrink:0;padding:1px 6px;font-size:9px;font-weight:700}.sidebar__section{border-bottom:1px solid var(--border-light);padding:8px 12px}.sidebar__add-row{gap:5px;display:flex}.sidebar__btn{background:var(--bg-input);border:1px solid var(--border);color:var(--text-label);letter-spacing:.02em;cursor:pointer;text-align:center;border-bottom:2px solid var(--border);border-radius:4px;flex:1;padding:6px 4px;font-size:11px;font-weight:600;transition:background .12s,border-color .12s,color .12s}.sidebar__btn:hover{background:var(--border);color:var(--text-primary);border-bottom-color:var(--accent)}.sidebar__btn--add-node{background:var(--accent-soft);border-color:var(--accent);border-bottom-color:var(--accent);color:var(--accent)}.sidebar__btn--add-node:hover{background:var(--accent);color:#fff;border-color:var(--accent)}.sidebar__btn--add-source{background:var(--green-soft);border-color:var(--green-border);border-bottom-color:var(--green);color:var(--green)}.sidebar__btn--add-source:hover{background:var(--green);color:#fff;border-color:var(--green)}.sidebar__factory-row{flex-direction:column;gap:5px;display:flex}.sidebar__btn--add-factory{color:var(--accent);background:#fa954914;border-color:#fa954959 #fa954959 #fa954999;font-weight:600}.sidebar__btn--add-factory:hover{background:var(--accent);color:#fff;border-color:var(--accent)}.sidebar__btn--disabled{opacity:.4;cursor:not-allowed}.sidebar__btn--disabled:hover{color:var(--accent);background:#fa954914;border-bottom-color:#fa954999}.sidebar__btn--add-to-factory{background:var(--green-soft);border-color:var(--green-border);border-bottom-color:var(--green);color:var(--green);text-align:center;padding:6px 8px;font-size:11px}.sidebar__btn--add-to-factory:hover{background:var(--green);color:#fff;border-color:var(--green)}.sidebar__saves{flex-direction:column;gap:6px;display:flex}.sidebar__save-row{gap:6px;display:flex}.sidebar__save-input{background:var(--bg-input);border:1px solid var(--border);color:var(--text-primary);border-radius:4px;outline:none;flex:1;padding:5px 8px;font-size:12px}.sidebar__save-input:focus{border-color:var(--accent)}.sidebar__btn--save{background:var(--accent-soft);border-color:var(--accent);border-bottom-color:var(--accent);color:var(--accent);white-space:nowrap}.sidebar__btn--save:hover:not(:disabled){background:var(--accent);color:#fff;border-color:var(--accent)}.sidebar__btn--save:disabled{opacity:.35;cursor:default}.sidebar__slot-list{flex-direction:column;gap:3px;margin:0;padding:0;list-style:none;display:flex}.sidebar__slot{background:var(--bg-input);border:1px solid var(--border);border-left:2px solid var(--accent);border-radius:4px;justify-content:space-between;align-items:center;gap:6px;padding:5px 8px;display:flex}.sidebar__slot-info{flex-direction:column;gap:1px;min-width:0;display:flex}.sidebar__slot-name{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;font-size:12px;font-weight:600;overflow:hidden}.sidebar__slot-date{color:var(--text-muted);font-size:10px}.sidebar__slot-actions{flex-shrink:0;gap:3px;display:flex}.sidebar__slot-btn{border:1px solid var(--border);color:var(--text-muted);cursor:pointer;background:0 0;border-radius:3px;justify-content:center;align-items:center;width:24px;height:24px;font-size:12px;transition:background .12s,color .12s;display:flex}.sidebar__slot-btn:hover{background:var(--bg-panel);color:var(--text-primary)}.sidebar__slot-btn--del:hover{background:var(--red);border-color:var(--red);color:#fff}.sidebar__io-row{gap:5px;display:flex}.sidebar__btn--sm{padding:4px 8px;font-size:11px}.sidebar__btn--danger{color:var(--red)}.sidebar__btn--danger:hover{color:var(--red);background:#e05c4a1a}.sidebar__search{border-bottom:1px solid var(--border-light);flex-direction:column;gap:6px;padding:8px 12px;display:flex}.sidebar__search-input{background:var(--bg-input);border:1px solid var(--border);width:100%;color:var(--text-primary);border-radius:4px;outline:none;padding:6px 10px;font-size:12px}.sidebar__search-input:focus{border-color:var(--border-focus);background:var(--bg-panel)}.sidebar__toggle{color:var(--text-muted);cursor:pointer;align-items:center;gap:6px;font-size:11px;display:flex}.sidebar__toggle input{accent-color:var(--accent)}.sidebar__recipe-list{flex:1;padding:4px 0;overflow-y:auto}.sidebar__group{border-bottom:1px solid var(--border-light)}.sidebar__group-header{letter-spacing:.07em;color:var(--text-label);cursor:pointer;-webkit-user-select:none;user-select:none;text-transform:uppercase;border-left:3px solid #0000;justify-content:space-between;align-items:center;padding:6px 12px;font-size:10px;font-weight:700;display:flex}.sidebar__group-header:hover{background:var(--bg-input);color:var(--text-primary);border-left-color:var(--accent)}.sidebar__group-count{background:var(--bg-input);color:var(--text-muted);border-radius:10px;padding:1px 6px;font-size:10px;font-weight:400}.sidebar__group-list{padding:2px 0;list-style:none}.sidebar__recipe-item{padding:0 6px}.sidebar__recipe-btn{text-align:left;width:100%;color:var(--text-secondary);cursor:pointer;background:0 0;border:none;border-radius:3px;flex-direction:column;gap:2px;padding:5px 8px;font-size:12px;transition:background .1s,color .1s;display:flex}.sidebar__recipe-btn:hover{background:var(--accent-soft);color:var(--accent)}.sidebar__alt-badge{background:var(--accent-soft);color:var(--accent);border:1px solid var(--accent);letter-spacing:.05em;border-radius:2px;margin-right:4px;padding:0 4px;font-size:9px;font-weight:700;display:inline-block}.sidebar__recipe-outputs{color:var(--text-muted);font-size:10px}.sidebar__empty{color:var(--text-muted);text-align:center;padding:20px;font-size:12px}.sidebar__bom{border-top:2px solid var(--accent);background:var(--bg-panel-alt);max-height:180px;padding:10px 12px;overflow-y:auto}.sidebar__bom-title{color:var(--accent);text-transform:uppercase;letter-spacing:.08em;margin-bottom:6px;font-size:10px;font-weight:700}.sidebar__bom-list{list-style:none}.sidebar__bom-item{color:var(--text-secondary);border-bottom:1px solid var(--border-light);justify-content:space-between;padding:3px 0;font-size:11px;display:flex}.sidebar__bom-item:last-child{border-bottom:none}.sidebar__bom-rate{color:var(--green-rate);font-variant-numeric:tabular-nums;font-weight:700}.sidebar__power{border-top:1px solid var(--border);background:var(--bg-panel-alt);justify-content:space-between;align-items:center;padding:9px 14px;display:flex}.sidebar__power-label{letter-spacing:.05em;text-transform:uppercase;color:var(--text-label);font-size:11px;font-weight:700}.sidebar__power-value{color:var(--blue-rate);font-variant-numeric:tabular-nums;letter-spacing:-.01em;font-size:14px;font-weight:800}.sidebar__stats{color:var(--text-muted);border-top:1px solid var(--border-light);text-align:center;letter-spacing:.04em;padding:6px 12px;font-size:10px}.node-handle{background:var(--bg-panel)!important;border:2px solid var(--border)!important;cursor:crosshair!important;width:18px!important;height:18px!important;box-shadow:var(--shadow-sm)!important;border-radius:3px!important;transition:transform .12s,border-color .12s,background .12s!important}.node-handle--in{border-color:var(--blue-rate)!important}.node-handle--out{border-color:var(--green-rate)!important}.node-handle--deficit{border-color:var(--red)!important;background:#e05c4a1a!important}.node-handle:hover,.node-handle:focus{background:var(--accent)!important;border-color:var(--accent)!important;transform:scale(1.4)!important}.node-handle--out:hover,.node-handle--out:focus{background:var(--green-rate)!important;border-color:var(--green-rate)!important}.node-drag-handle{cursor:grab}.node-drag-handle:active{cursor:grabbing}.node-drag-handle select,.node-drag-handle input,.node-drag-handle button{cursor:default}.node-drag-handle button{cursor:pointer}.recipe-node{background:var(--bg-panel);border:1px solid var(--border);min-width:260px;box-shadow:var(--shadow-sm);border-left:3px solid var(--accent);border-radius:6px;font-size:12px;transition:box-shadow .15s,border-color .15s;position:relative}.recipe-node:hover{box-shadow:var(--shadow-md)}.recipe-node--selected{border-color:var(--accent);box-shadow:var(--shadow-selected), var(--shadow-md)}.recipe-node--error{border-color:var(--red);background:#e05c4a0d;padding:10px}.recipe-node__header{border-bottom:1px solid var(--border-light);background:var(--bg-panel-alt);border-radius:3px 4px 0 0;padding:8px 10px 7px}.recipe-node__top-row{align-items:center;gap:6px;margin-bottom:7px;display:flex}.recipe-node__category-dot{border-radius:2px;flex-shrink:0;width:8px;height:8px}.recipe-node__machine-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.07em;white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:9px;font-weight:700;overflow:hidden}.recipe-node__delete{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:3px;padding:2px 4px;font-size:13px;line-height:1}.recipe-node__delete:hover{color:var(--red);background:#e05c4a1a}.recipe-node__recipe-select{background:var(--bg-input);border:1px solid var(--border);width:100%;color:var(--text-primary);cursor:pointer;border-radius:4px;outline:none;padding:5px 8px;font-size:12px;font-weight:500}.recipe-node__recipe-select:focus{border-color:var(--border-focus);background:var(--bg-panel)}.recipe-node__body{padding:0;display:flex}.recipe-node__ports{flex-direction:column;flex:1;padding:4px 0;display:flex}.recipe-node__ports--inputs{border-right:1px solid var(--border-light)}.recipe-node__port-row{white-space:nowrap;align-items:center;min-height:44px;padding:6px 10px 6px 22px;display:flex}.recipe-node__port-row--out{text-align:right;justify-content:flex-end;padding:6px 22px 6px 10px}.recipe-node__rate{color:var(--text-secondary);font-size:11px;line-height:1.35}.recipe-node__rate strong{color:var(--text-primary);white-space:nowrap;font-size:11px;font-weight:600;display:block}.recipe-node__rate small{color:var(--blue-rate);font-variant-numeric:tabular-nums;font-size:10px}.recipe-node__rate--output small{color:var(--green-rate)}.recipe-node__rate--deficit small{color:var(--red)}.recipe-node__rate--deficit strong:after{content:" ⚠";color:var(--red);font-size:9px}.recipe-node__footer{border-top:1px solid var(--border-light);background:var(--bg-footer);border-radius:0 0 4px 4px;align-items:center;gap:6px;padding:6px 10px;display:flex}.recipe-node__count-label{color:var(--text-muted);white-space:nowrap;text-transform:uppercase;letter-spacing:.04em;align-items:center;gap:5px;font-size:11px;font-weight:600;display:flex}.recipe-node__count-input{background:var(--bg-panel);border:1px solid var(--border);width:58px;color:var(--accent);text-align:center;border-radius:4px;outline:none;padding:2px 5px;font-size:13px;font-weight:700}.recipe-node__count-input:focus{border-color:var(--border-focus)}.recipe-node__machine-select{background:var(--bg-panel);border:1px solid var(--border);color:var(--text-secondary);border-radius:4px;outline:none;flex:1;min-width:0;padding:2px 4px;font-size:10px}.recipe-node__machine-select:focus{border-color:var(--border-focus)}.recipe-node__power{color:var(--blue-rate);white-space:nowrap;font-size:10px;font-weight:600}.source-node{background:var(--bg-panel);border:1px solid var(--green-border);border-left:3px solid var(--green-rate);min-width:170px;box-shadow:var(--shadow-sm);border-radius:6px;font-size:12px;transition:box-shadow .15s;position:relative}.source-node:hover{box-shadow:var(--shadow-md)}.source-node--selected{border-color:var(--green);box-shadow:0 0 0 3px #62b94433, var(--shadow-md)}.source-node__header{background:var(--green-soft);letter-spacing:.08em;text-transform:uppercase;color:var(--green-rate);border-radius:2px 4px 0 0;justify-content:space-between;align-items:center;padding:6px 10px;font-size:9px;font-weight:700;display:flex}.source-node__body{flex-direction:column;gap:6px;padding:8px 10px;display:flex}.source-node__item-input{background:var(--bg-input);border:1px solid var(--border);width:100%;color:var(--text-primary);border-radius:4px;outline:none;padding:4px 8px;font-size:12px}.source-node__item-input:focus{border-color:var(--green-rate);background:var(--bg-panel)}.source-node__rate-row{align-items:center;gap:6px;display:flex}.source-node__rate-input{background:var(--bg-input);border:1px solid var(--border);width:72px;color:var(--green-rate);font-variant-numeric:tabular-nums;border-radius:4px;outline:none;padding:3px 6px;font-size:13px;font-weight:700}.source-node__rate-input:focus{border-color:var(--green-rate);background:var(--bg-panel)}.source-node__rate-unit{letter-spacing:.05em;text-transform:uppercase;color:var(--text-muted);font-size:10px;font-weight:600}.react-flow__background{background:var(--bg-canvas)!important}.react-flow__controls{background:var(--bg-panel)!important;border:1px solid var(--border)!important;box-shadow:var(--shadow-sm)!important;border-radius:4px!important}.react-flow__controls-button{background:var(--bg-panel)!important;border:none!important;border-bottom:1px solid var(--border-light)!important;color:var(--text-secondary)!important;fill:var(--text-secondary)!important}.react-flow__controls-button:hover{background:var(--bg-input)!important;color:var(--accent)!important}.react-flow__controls-button:last-child{border-bottom:none!important}.react-flow__controls-button svg{fill:var(--text-secondary)!important}.react-flow__minimap{background:var(--bg-panel)!important;border:1px solid var(--border)!important;box-shadow:var(--shadow-sm)!important;border-radius:4px!important}.react-flow__edge-path{stroke-linecap:round}body.shift-held .react-flow__edge{pointer-events:none}.deletable-edge__btn-wrap{pointer-events:all;opacity:0;transition:opacity .15s;position:absolute}.deletable-edge__btn{background:var(--bg-panel);border:1px solid var(--border);width:18px;height:18px;color:var(--text-muted);cursor:pointer;box-shadow:var(--shadow-sm);border-radius:3px;justify-content:center;align-items:center;padding:0;font-size:14px;line-height:1;transition:background .12s,border-color .12s,color .12s,transform .12s;display:flex}.deletable-edge__btn:hover{background:var(--red);border-color:var(--red);color:#fff;transform:scale(1.2)}.factory-node{border:2px solid var(--factory-color,#fa9549);background:color-mix(in srgb, var(--factory-color,#fa9549) 5%, var(--bg-canvas));border-radius:6px;flex-direction:column;width:100%;height:100%;display:flex;overflow:hidden}.factory-node--selected{box-shadow:0 0 0 3px color-mix(in srgb, var(--factory-color,#fa9549) 30%, transparent)}.factory-node__header{background:color-mix(in srgb, var(--factory-color,#fa9549) 12%, var(--bg-panel));border-bottom:1px solid color-mix(in srgb, var(--factory-color,#fa9549) 28%, transparent);flex-shrink:0;align-items:center;gap:8px;padding:6px 10px;display:flex}.factory-node__label{color:var(--factory-color,#fa9549);letter-spacing:.08em;text-transform:uppercase;-webkit-user-select:none;user-select:none;flex:1;font-size:11px;font-weight:800}.factory-node__label-input{border:none;border-bottom:1.5px solid var(--factory-color,#fa9549);color:var(--factory-color,#fa9549);letter-spacing:.08em;text-transform:uppercase;background:0 0;outline:none;flex:1;padding:0;font-size:11px;font-weight:800}.factory-node__member-count{color:color-mix(in srgb, var(--factory-color,#fa9549) 65%, var(--text-muted));white-space:nowrap;font-size:10px}.factory-node__handle{z-index:10;border-radius:3px!important;width:20px!important;height:20px!important}.factory-node__handle:after{content:attr(data-label);white-space:nowrap;color:var(--text-muted);pointer-events:none;font-size:10px;font-weight:600;position:absolute}.node-handle--in.factory-node__handle:after{top:50%;left:26px;transform:translateY(-50%)}.node-handle--out.factory-node__handle:after{top:50%;left:auto;right:26px;transform:translateY(-50%)}.factory-node__delete{color:color-mix(in srgb, var(--factory-color,#fa9549) 55%, transparent);cursor:pointer;background:0 0;border:none;border-radius:3px;flex-shrink:0;padding:2px 4px;font-size:14px;line-height:1}.factory-node__delete:hover{background:var(--red);color:#fff}.factory-node__io{background:color-mix(in srgb, var(--factory-color,#fa9549) 8%, var(--bg-panel));border-top:1px solid color-mix(in srgb, var(--factory-color,#fa9549) 20%, transparent);pointer-events:none;flex-wrap:wrap;flex-shrink:0;gap:12px;margin-top:auto;padding:8px 12px;display:flex}.factory-node__empty{color:var(--text-muted);font-size:11px;font-style:italic}.factory-node__io-col{flex-direction:column;flex:1;gap:3px;min-width:100px;display:flex}.factory-node__io-heading{color:var(--text-muted);text-transform:uppercase;letter-spacing:.07em;margin-bottom:2px;font-size:9px;font-weight:700}.factory-node__io-row{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.factory-node__io-item{color:var(--text-secondary);white-space:nowrap;font-size:11px}.factory-node__io-rate{font-variant-numeric:tabular-nums;white-space:nowrap;font-size:11px;font-weight:700}.factory-node__io-row--in .factory-node__io-rate{color:var(--blue-rate)}.factory-node__io-row--out .factory-node__io-rate{color:var(--green-rate)}.factory-node .react-flow__resize-control.handle{border-radius:2px!important;width:10px!important;height:10px!important}.qs__overlay{z-index:9000;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#000000a6;justify-content:center;align-items:flex-start;padding-top:8vh;display:flex;position:fixed;inset:0}.qs__modal{background:var(--bg-panel);border:1px solid var(--border);border-top:3px solid var(--accent);border-radius:4px;flex-direction:column;width:min(700px,92vw);max-height:72vh;display:flex;overflow:hidden;box-shadow:0 28px 72px #0000008c}.qs__search-row{border-bottom:1px solid var(--border-light);background:var(--bg-panel-alt);align-items:center;gap:10px;padding:14px 16px;display:flex}.qs__search-icon{color:var(--accent);flex-shrink:0;font-size:18px}.qs__input{color:var(--text-primary);background:0 0;border:none;outline:none;flex:1;font-family:inherit;font-size:16px}.qs__input::placeholder{color:var(--text-muted)}.qs__clear{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:3px;padding:2px 5px;font-size:13px}.qs__clear:hover{color:var(--text-primary);background:var(--bg-input)}.qs__hint{letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);border-bottom:1px solid var(--border-light);background:var(--bg-panel-alt);padding:4px 16px;font-size:10px;font-weight:600}.qs__results{flex:1;padding:6px 0;overflow-y:auto}.qs__empty{color:var(--text-muted);text-align:center;padding:28px 20px;font-size:13px}.qs__group{margin-bottom:2px}.qs__group-header{background:var(--bg-panel);z-index:1;border-left:3px solid var(--accent);justify-content:space-between;align-items:center;margin-bottom:1px;padding:7px 16px 4px;display:flex;position:sticky;top:0}.qs__group-item{text-transform:uppercase;letter-spacing:.09em;color:var(--accent);font-size:10px;font-weight:800}.qs__group-count{color:var(--text-muted);font-size:10px}.qs__recipe{text-align:left;cursor:pointer;background:0 0;border:none;border-left:3px solid #0000;flex-direction:column;gap:3px;width:100%;padding:7px 16px;transition:background 80ms,border-color 80ms;display:flex}.qs__recipe:hover,.qs__recipe--focused{background:var(--accent-soft);border-left-color:var(--accent)}.qs__recipe-top{align-items:center;gap:6px;display:flex}.qs__alt-badge{letter-spacing:.06em;background:var(--accent-soft);color:var(--accent);border:1px solid var(--accent);border-radius:2px;flex-shrink:0;padding:1px 4px;font-size:9px;font-weight:700}.qs__recipe-name{color:var(--text-primary);flex:1;font-size:13px;font-weight:600}.qs__recipe-machine{letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);white-space:nowrap;flex-shrink:0;font-size:10px;font-weight:600}.qs__recipe-io{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.qs__io-inputs{color:var(--blue-rate);font-size:11px}.qs__io-arrow{color:var(--text-muted);font-size:11px}.qs__io-outputs{color:var(--green-rate);font-size:11px}.qs__footer{letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);border-top:1px solid var(--border-light);background:var(--bg-panel-alt);text-align:right;padding:6px 16px;font-size:10px;font-weight:600}.sm-node{background:var(--bg-panel);border:1px solid var(--border);border-left:3px solid var(--blue-rate);min-width:200px;box-shadow:var(--shadow-sm);-webkit-user-select:none;user-select:none;border-radius:6px;font-size:12px;transition:box-shadow .15s,border-color .15s;position:relative}.sm-node:hover{box-shadow:var(--shadow-md)}.sm-node--selected{border-color:var(--blue-rate);box-shadow:0 0 0 3px #5bb0c538, var(--shadow-md)}.sm-node__header{background:var(--bg-panel-alt);border-bottom:1px solid var(--border-light);border-radius:3px 4px 0 0;align-items:center;gap:6px;height:36px;padding:0 8px;display:flex}.sm-node__icon{color:var(--blue-rate);flex-shrink:0;font-size:14px}.sm-node__label-input{color:var(--blue-rate);letter-spacing:.07em;text-transform:uppercase;cursor:text;background:0 0;border:none;border-bottom:1px solid #0000;outline:none;flex:1;min-width:0;font-size:11px;font-weight:700}.sm-node__label-input:focus{border-bottom-color:var(--blue-rate)}.sm-node__delete{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:3px;flex-shrink:0;padding:2px 3px;font-size:12px;line-height:1}.sm-node__delete:hover{color:var(--red);background:#e05c4a1a}.sm-node__body{align-items:stretch;display:flex;overflow:hidden}.sm-node__col{flex-direction:column;flex:1;min-width:0;display:flex}.sm-node__col--in{border-right:1px solid var(--border-light)}.sm-node__port-row{align-items:center;height:34px;padding:0 10px 0 24px;display:flex}.sm-node__port-row--out{justify-content:flex-end;padding:0 24px 0 10px}.sm-node__port-label{letter-spacing:.05em;text-transform:uppercase;white-space:nowrap;font-size:10px;font-weight:700}.sm-node__port-label--in{color:var(--blue-rate)}.sm-node__port-label--out{color:var(--green-rate)}.sm-node__port-label--empty{color:var(--border)}.sm-node__arrow{color:var(--text-muted);pointer-events:none;flex-shrink:0;justify-content:center;align-items:center;padding:0 6px;font-size:16px;display:flex}.sm-node__ctrl{border-top:1px solid var(--border-light);background:var(--bg-footer);align-items:center;gap:4px;height:28px;padding:0 8px 0 18px;display:flex}.sm-node__ctrl--out{justify-content:flex-end;padding:0 18px 0 8px}.sm-node__ctrl-btn{background:var(--bg-input);border:1px solid var(--border);width:18px;height:18px;color:var(--text-secondary);cursor:pointer;border-radius:3px;justify-content:center;align-items:center;padding:0;font-size:14px;line-height:1;transition:background .1s,color .1s;display:flex}.sm-node__ctrl-btn:hover:not(:disabled){background:var(--blue-rate);color:#fff;border-color:var(--blue-rate)}.sm-node__ctrl-btn:disabled{opacity:.3;cursor:not-allowed}.sm-node__ctrl-count{color:var(--text-muted);text-align:center;font-variant-numeric:tabular-nums;min-width:14px;font-size:11px;font-weight:700}.sidebar__btn--add-router{color:var(--blue-rate);background:#5bb0c51a;border-color:#5bb0c559 #5bb0c559 #5bb0c599}.sidebar__btn--add-router:hover{background:var(--blue-rate);color:#fff;border-color:var(--blue-rate)}.sm-node__summary{background:var(--bg-panel-alt);border-bottom:1px solid var(--border-light);justify-content:space-between;align-items:center;gap:6px;height:30px;padding:0 10px 0 24px;font-size:11px;display:flex}.sm-node__summary--over{border-bottom-color:var(--red);background:#e05c4a14}.sm-node__locked-item{color:var(--blue-rate);white-space:nowrap;text-overflow:ellipsis;max-width:120px;font-weight:700;overflow:hidden}.sm-node__no-item{color:var(--text-muted);font-style:italic;font-weight:400}.sm-node__balance-info{flex-shrink:0;align-items:center;gap:5px;display:flex}.sm-node__total-in{font-variant-numeric:tabular-nums;color:var(--blue-rate);font-weight:700}.sm-node__over-warn{color:var(--red);white-space:nowrap;font-size:10px;font-weight:700}.sm-node__remaining{color:var(--green-rate);white-space:nowrap;font-size:10px;font-weight:600}.sm-node__balanced{color:var(--text-muted);white-space:nowrap;font-size:10px;font-weight:600}.help__overlay{z-index:9100;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#000000b3;justify-content:center;align-items:flex-start;padding:6vh 16px;display:flex;position:fixed;inset:0;overflow-y:auto}.help__modal{background:var(--bg-panel);border:1px solid var(--border);border-top:3px solid var(--accent);border-radius:6px;flex-direction:column;width:min(780px,96vw);display:flex;overflow:hidden;box-shadow:0 32px 80px #0009}.help__header{border-bottom:1px solid var(--border);background:var(--bg-panel-alt);padding:16px 20px 12px}.help__title-row{justify-content:space-between;align-items:center;margin-bottom:4px;display:flex}.help__title{letter-spacing:-.01em;font-size:20px;font-weight:900}.help__title-op{color:var(--accent)}.help__title-tim{color:var(--text-primary)}.help__subtitle{letter-spacing:.09em;text-transform:uppercase;color:var(--text-muted);font-size:10px;font-weight:600}.help__close{border:1px solid var(--border);color:var(--text-muted);cursor:pointer;background:0 0;border-radius:4px;justify-content:center;align-items:center;width:28px;height:28px;font-size:14px;transition:background .12s,color .12s;display:flex}.help__close:hover{background:var(--red);border-color:var(--red);color:#fff}.help__body{max-height:calc(80vh - 120px);padding:18px 20px 14px;overflow-y:auto}.help__grid{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:10px;margin-bottom:16px;display:grid}.help__card{background:var(--bg-panel-alt);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:4px;flex-direction:column;gap:6px;padding:12px 14px;display:flex}.help__card-header{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.help__card-icon{flex-shrink:0;font-size:15px}.help__card-title{letter-spacing:.04em;text-transform:uppercase;color:var(--accent);flex:1;font-size:12px;font-weight:800}.help__card-body{color:var(--text-secondary);font-size:12px;line-height:1.6}.help__kbd{background:var(--bg-input);border:1px solid var(--border);border-bottom:2px solid var(--accent);color:var(--accent);white-space:nowrap;letter-spacing:0;text-transform:none;border-radius:3px;padding:1px 6px;font-family:inherit;font-size:10px;font-weight:700}.help__feedback{background:var(--accent-soft);border:1px solid var(--accent);border-radius:4px;flex-wrap:wrap;align-items:center;gap:10px;padding:11px 14px;display:flex}.help__feedback-icon{flex-shrink:0;font-size:16px}.help__feedback-text{color:var(--text-secondary);flex:1;min-width:200px;font-size:12px}.help__feedback-link{color:var(--accent);border:1px solid var(--accent);white-space:nowrap;border-radius:4px;padding:4px 10px;font-size:12px;font-weight:700;text-decoration:none;transition:background .12s,color .12s}.help__feedback-link:hover{background:var(--accent);color:#fff}.help__footer{letter-spacing:.05em;text-transform:uppercase;color:var(--text-muted);border-top:1px solid var(--border);background:var(--bg-panel-alt);text-align:right;padding:8px 20px;font-size:10px;font-weight:600}.sm-node__rate-input{background:var(--bg-input);border:1px solid var(--border);width:52px;color:var(--green-rate);font-variant-numeric:tabular-nums;text-align:right;cursor:text;border-radius:3px;outline:none;flex-shrink:0;padding:2px 4px;font-size:11px;font-weight:700}.sm-node__rate-input:focus{border-color:var(--green-rate);background:var(--bg-panel)}.sm-node__rate-input--over{color:var(--red);border-color:var(--red)}.sm-node__rate-input--over:focus{border-color:var(--red)}.sm-node__port-rate{font-variant-numeric:tabular-nums;color:var(--blue-rate);font-size:10px;font-weight:700}
