.react-flow{direction:ltr;--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: rgba(255, 255, 255, .5);--xy-minimap-background-color-default: #fff;--xy-minimap-mask-background-color-default: rgba(240, 240, 240, .6);--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: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(0, 0, 0, .08);--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: rgba(0, 89, 220, .08);--xy-selection-border-default: 1px dotted rgba(0, 89, 220, .8);--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 rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #ffffff;--xy-edge-label-color-default: inherit;--xy-resize-background-color-default: #3367d9}.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: rgba(150, 150, 150, .25);--xy-minimap-background-color-default: #141414;--xy-minimap-mask-background-color-default: rgba(60, 60, 60, .6);--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: #555;--xy-background-pattern-lines-color-default: #333;--xy-background-pattern-cross-color-default: #333;--xy-node-color-default: #f8f8f8;--xy-node-border-default: 1px solid #3c3c3c;--xy-node-background-color-default: #1e1e1e;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(255, 255, 255, .08);--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: rgba(200, 200, 220, .08);--xy-selection-border-default: 1px dotted rgba(200, 200, 220, .8);--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 rgba(0, 0, 0, .08);--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{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1;touch-action:none}.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{overflow:visible;position:absolute;pointer-events:none}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.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;-moz-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:dashdraw .5s linear infinite}svg.react-flow__connectionline{z-index:1001;overflow:visible;position:absolute}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default}.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:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;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%}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:0;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{position:absolute;z-index:5;margin:15px}.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{font-size:10px;background:var(--xy-attribution-background-color, var(--xy-attribution-background-color-default));padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;left:0;top:0}.react-flow__viewport-portal{position:absolute;width:100%;height:100%;left:0;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.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{display:flex;flex-direction:column;box-shadow:var(--xy-controls-box-shadow, var(--xy-controls-box-shadow-default))}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{display:flex;justify-content:center;align-items:center;height:26px;width:26px;padding:4px;border:none;background:var(--xy-controls-button-background-color, var(--xy-controls-button-background-color-default));border-bottom:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) );color:var( --xy-controls-button-color-props, var(--xy-controls-button-color, var(--xy-controls-button-color-default)) );cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px;fill:currentColor}.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{padding:10px;border-radius:var(--xy-node-border-radius, var(--xy-node-border-radius-default));width:150px;font-size:12px;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))}.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:hover{background:var( --xy-controls-button-background-color-hover-props, var(--xy-controls-button-background-color-hover, var(--xy-controls-button-background-color-hover-default)) );color:var( --xy-controls-button-color-hover-props, var(--xy-controls-button-color-hover, var(--xy-controls-button-color-hover-default)) )}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__controls-button:last-child{border-bottom:none}.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{width:5px;height:5px;border:1px solid #fff;border-radius:1px;background-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));translate:-50% -50%}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.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-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.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{color-scheme:dark;--nd-root: #0b1120;--nd-shell: #080e1a;--nd-shell-secondary: #101827;--nd-workspace: #0f172a;--nd-surface: #111c2e;--nd-surface-secondary: #162236;--nd-surface-elevated: #1a2940;--nd-input: #0e192a;--nd-table: #101b2d;--nd-topo: #09111f;--nd-text: #e6edf7;--nd-text-secondary: #b5c2d3;--nd-text-muted: #8494aa;--nd-text-subtle: #687991;--nd-text-disabled: #536176;--nd-placeholder: #64748b;--nd-border: #26364d;--nd-border-secondary: #1e2d42;--nd-border-subtle: #1b293d;--nd-border-strong: #33455f;--nd-border-input: #334155;--nd-primary: #2563eb;--nd-primary-hover: #3b82f6;--nd-primary-soft: rgba(59, 130, 246, .14);--nd-accent: #22d3ee;--nd-accent-secondary: #06b6d4;--nd-ipv4: #60a5fa;--nd-ipv6: #a78bfa;--nd-success: #4ade80;--nd-success-bg: rgba(34, 197, 94, .12);--nd-success-border: rgba(74, 222, 128, .28);--nd-warning: #fbbf24;--nd-warning-bg: rgba(245, 158, 11, .12);--nd-warning-border: rgba(251, 191, 36, .28);--nd-error: #f87171;--nd-error-bg: rgba(239, 68, 68, .12);--nd-error-border: rgba(248, 113, 113, .28);--nd-info: #38bdf8;--nd-info-bg: rgba(14, 165, 233, .12);--nd-info-border: rgba(56, 189, 248, .28);--nd-focus: #38bdf8;--nd-focus-ring: rgba(56, 189, 248, .2);--nd-equip-router: #93c5fd;--nd-equip-switch: #94a3b8;--nd-equip-firewall: #a8b4c5;--nd-equip-server: #a78bfa;--nd-equip-generic: #8494aa;--nd-equip-surface: #142238;--nd-equip-border: #30425b;--nd-cluster: #6366f1;--nd-cluster-soft: rgba(99, 102, 241, .14);--nd-cluster-border: rgba(99, 102, 241, .55);--nd-cluster-text: #a5b4fc;--nd-cluster-surface: rgba(99, 102, 241, .1);--nd-cluster-layer: rgba(99, 102, 241, .08);--nd-cluster-btn: rgba(99, 102, 241, .22);--nd-cluster-btn-hover: rgba(99, 102, 241, .34);--nd-cluster-central-bg: #6366f1;--nd-cluster-central-fg: #eef2ff;--nd-btn-secondary-bg: #172235;--nd-btn-secondary-hover: #1d2c42;--nd-row-hover: #17263a;--nd-row-selected: rgba(59, 130, 246, .12);--nd-nav-hover: #142238;--nd-overlay: rgba(2, 6, 23, .7);--nd-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--nd-font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;--nd-radius: 8px;--nd-radius-sm: 6px;--nd-shadow: 0 1px 2px rgba(2, 6, 23, .35);--nd-shadow-md: 0 8px 24px rgba(2, 6, 23, .45);--nd-transition: .15s ease}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--nd-font);background:var(--nd-root);color:var(--nd-text);line-height:1.55;-webkit-font-smoothing:antialiased;overflow-x:clip}:focus-visible{outline:2px solid var(--nd-focus);outline-offset:2px}*{scrollbar-width:thin;scrollbar-color:#33465e #0b1424}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-track{background:#0b1424}*::-webkit-scrollbar-thumb{background:#33465e;border-radius:6px;border:2px solid #0b1424}*::-webkit-scrollbar-thumb:hover{background:#435a76}.container{max-width:min(900px,100%);margin:0 auto;padding:2rem}h1{font-size:1.8rem;margin-bottom:1.5rem;color:var(--nd-text);font-weight:700;letter-spacing:-.02em}.btn{padding:.45rem .9rem;border:1px solid transparent;border-radius:var(--nd-radius-sm);cursor:pointer;font-size:.875rem;font-weight:560;line-height:1.25;min-height:2.1rem;transition:background-color var(--nd-transition),border-color var(--nd-transition),color var(--nd-transition),box-shadow var(--nd-transition)}.btn:hover:not(:disabled){opacity:1}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--nd-primary);border-color:var(--nd-primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--nd-primary-hover);border-color:var(--nd-primary-hover)}.btn-danger{background:#dc2626;border-color:#dc2626;color:#fff}.btn-danger:hover:not(:disabled){background:#ef4444;border-color:#ef4444}.btn-secondary{background:var(--nd-btn-secondary-bg);border-color:var(--nd-border-input);color:#d9e2ef}.btn-secondary:hover:not(:disabled){background:var(--nd-btn-secondary-hover);border-color:#475569;color:var(--nd-text)}.btn-ghost{background:transparent;border-color:transparent;color:#afc0d4}.btn-ghost:hover:not(:disabled){background:#18273b;color:var(--nd-text)}.card{background:var(--nd-surface);border:1px solid var(--nd-border);border-radius:var(--nd-radius);padding:1rem 1.15rem;margin-bottom:.75rem;box-shadow:var(--nd-shadow);display:flex;justify-content:space-between;align-items:center}.card h3{margin:0 0 .25rem;font-size:1.05rem;color:var(--nd-text)}.card p{margin:0;color:var(--nd-text-muted);font-size:.85rem}.card-actions{display:flex;gap:.5rem;flex-shrink:0}.project-list-header{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;flex-wrap:wrap}.project-list-header h1{margin-bottom:.75rem}.project-list-header-meta{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;min-width:0;color:var(--nd-text-secondary);font-size:.9rem}.project-list-header-meta span{min-width:0;word-break:break-word}.project-list-toolbar{margin-bottom:1.15rem}.project-card{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:0;padding:1.05rem 1.15rem}.project-card-row{display:flex;justify-content:space-between;align-items:center;gap:.75rem 1rem;flex-wrap:wrap;width:100%}.project-card-row--primary{padding-bottom:.9rem}.project-card-row--downloads{padding-top:.9rem;border-top:1px solid var(--nd-border-subtle)}.project-card-identity{min-width:0;flex:1 1 12rem}.project-card-identity h3{margin:0;font-size:1.1rem;font-weight:650;letter-spacing:-.01em;color:var(--nd-text)}.project-card-identity p{margin:.3rem 0 0;color:var(--nd-text-muted);font-size:.85rem}.project-card-actions,.project-card-downloads{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;flex-shrink:0}.project-card-downloads-label{color:var(--nd-text-muted);font-size:.8rem;font-weight:500;letter-spacing:.01em;flex:0 0 auto;min-width:5.5rem}.project-card-downloads .btn{min-height:2.1rem;padding:.45rem .85rem}.btn-danger-outline{background:transparent;border-color:var(--nd-error-border);color:var(--nd-error)}.btn-danger-outline:hover:not(:disabled){background:var(--nd-error-bg);border-color:var(--nd-error);color:#fecaca}.form-group{margin-bottom:1rem}.form-group label{display:block;margin-bottom:.3rem;font-weight:500;font-size:.82rem;color:#b8c4d4}.form-group label.field-label-with-help{display:flex}.form-group input,.form-group textarea,.form-group select{width:100%;padding:.55rem .65rem;border:1px solid var(--nd-border-input);border-radius:var(--nd-radius-sm);font-size:.9rem;background:var(--nd-input);color:var(--nd-text);transition:border-color var(--nd-transition),box-shadow var(--nd-transition)}.form-group input::placeholder,.form-group textarea::placeholder{color:var(--nd-placeholder)}.form-group input:hover,.form-group textarea:hover,.form-group select:hover{border-color:#475569}.form-group input:focus,.form-group textarea:focus,.form-group select:focus{outline:none;border-color:var(--nd-focus);box-shadow:0 0 0 3px var(--nd-focus-ring)}.form-group input:disabled,.form-group textarea:disabled,.form-group select:disabled{background:#111827;color:#5f6f84;cursor:not-allowed}.form-group textarea{height:80px;resize:vertical}.form-actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1rem}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:var(--nd-overlay);display:flex;align-items:center;justify-content:center;z-index:100}.modal{background:var(--nd-surface);border:1px solid var(--nd-border);border-radius:10px;padding:1.35rem 1.5rem;width:90%;max-width:500px;max-height:min(90vh,900px);overflow-y:auto;box-shadow:var(--nd-shadow-md)}.empty-state{text-align:center;padding:3rem;color:var(--nd-text-subtle)}a.btn{text-decoration:none;display:inline-flex;align-items:center}.designer-layout{height:100vh;display:flex;flex-direction:column;background:var(--nd-workspace);max-width:100%;overflow-x:clip}.designer-header{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1.15rem;background:var(--nd-shell);border-bottom:1px solid var(--nd-border-secondary);color:var(--nd-text-secondary)}.designer-header h1{margin:.15rem 0;font-size:1.2rem;color:var(--nd-text);letter-spacing:-.01em}.back-link{color:var(--nd-accent);text-decoration:none;font-size:.82rem;font-weight:500}.back-link:hover{color:#67e8f9}.designer-status{color:var(--nd-text-muted);font-size:.82rem;margin:0}.designer-header .btn-secondary{background:transparent;border-color:var(--nd-border-strong);color:var(--nd-text-secondary)}.designer-header .btn-secondary:hover:not(:disabled){background:var(--nd-nav-hover);border-color:#435a76;color:var(--nd-text)}.designer-header .btn-primary{background:var(--nd-primary);border-color:var(--nd-primary)}.hl-header-counts{color:var(--nd-text-muted)}.designer-body{flex:1;display:flex;min-height:0}.palette{width:220px;background:var(--nd-shell);border-right:1px solid var(--nd-border-secondary);padding:1rem;overflow-y:auto}.palette h3{margin-bottom:.3rem;font-size:.95rem;color:var(--nd-text)}.palette-hint{color:var(--nd-text-muted);font-size:.78rem;margin-bottom:.8rem}.palette-item{background:var(--nd-nav-hover);border:1px solid var(--nd-border);border-left:3px solid var(--nd-primary-hover);border-radius:var(--nd-radius);padding:.65rem .75rem;margin-bottom:.5rem;cursor:grab;-webkit-user-select:none;user-select:none;font-weight:500;font-size:.875rem;color:#9eadc0;display:flex;align-items:center;gap:.6rem;transition:background-color var(--nd-transition),border-color var(--nd-transition),color var(--nd-transition)}.palette-item:hover{background:#1a2940;color:var(--nd-text)}.palette-item:active{cursor:grabbing}.palette-icon{width:28px;height:28px;flex-shrink:0;opacity:.92}.canvas-wrap{flex:1;min-width:0;background:var(--nd-topo)}.properties-panel{width:300px;background:var(--nd-surface);border-left:1px solid var(--nd-border);padding:1rem;overflow-y:auto}.properties-panel--wide{width:400px;max-width:42vw}.properties-panel--empty{color:var(--nd-text-muted);font-size:.9rem}.properties-panel h3{margin-bottom:.8rem;font-size:.95rem;color:var(--nd-text)}.properties-panel-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.8rem}.properties-panel-header h3{margin:0}.properties-message{margin-top:.75rem;font-size:.85rem;color:var(--nd-success)}.connected-elements{margin:.75rem 0 1rem;padding-top:.5rem;border-top:1px solid var(--nd-border-subtle)}.connected-elements h4{margin:0 0 .4rem;font-size:.9rem}.connected-elements h5{margin:.6rem 0 .25rem;font-size:.78rem;color:var(--nd-text-secondary)}.neighbor-list{list-style:none;padding:0;margin:0 0 .4rem;font-size:.85rem}.neighbor-list li{padding:.35rem 0;border-bottom:1px solid var(--nd-border-subtle)}.neighbor-meta{font-size:.78rem;margin-top:.15rem;color:var(--nd-text-muted)}.role-suggestion{margin-top:.5rem;padding:.5rem .6rem;background:var(--nd-surface-secondary);border:1px solid var(--nd-border);border-radius:var(--nd-radius-sm);font-size:.85rem}.role-suggestion p{margin:0 0 .4rem}.topology-summary{margin-top:.5rem}.topology-summary-toggle{font-size:.8rem;padding:.25rem .55rem}.topology-summary-body{margin-top:.45rem;padding:.55rem .65rem;background:var(--nd-shell-secondary);border:1px solid var(--nd-border);border-radius:var(--nd-radius-sm);max-width:320px;color:var(--nd-text-secondary)}.designer-header .topology-summary-body{color:var(--nd-text-secondary)}.designer-header .topology-summary-list,.designer-header .muted{color:var(--nd-text-muted)}.topology-summary-list{list-style:none;padding:0;margin:0;font-size:.8rem}.topology-summary-list>li{padding:.15rem 0}.isolated-list{margin:.25rem 0 0 1rem;padding:0;list-style:disc}.parallel-edge-label{font-size:10px;pointer-events:none;background:#fffffff5;border:1px solid var(--nd-border);border-radius:4px;padding:0 5px;color:var(--nd-text-secondary);text-align:center;line-height:18px;font-family:var(--nd-font-mono);white-space:nowrap}.phys-pair-summary-row{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .75rem;margin:.35rem 0}.react-flow__edge-path.topo-edge--planned{stroke-dasharray:6 4}.react-flow__edge-path.topo-edge--active,.react-flow__edge-path.topo-edge--disabled{stroke-dasharray:none}@media (prefers-reduced-motion: reduce){.react-flow__edge.animated path,.react-flow__edge-path.animated,.topo-edge--animated{animation:none!important}}.topo-node{min-width:120px;max-width:160px;background:var(--nd-equip-surface);border:1.5px solid var(--nd-equip-border);border-radius:10px;padding:.6rem .65rem .7rem;box-shadow:var(--nd-shadow);position:relative;text-align:center;color:#e1eaf5;transition:border-color var(--nd-transition),box-shadow var(--nd-transition),background-color var(--nd-transition)}.topo-node-body{position:relative;z-index:1}.topo-node--multi-switch-cluster{margin:0 4px 4px 0;border-color:var(--nd-cluster-border);background:var(--nd-cluster-surface);box-shadow:var(--nd-shadow),0 0 0 1px #6366f11f}.topo-node--multi-switch-cluster .topo-node-type--cluster{color:var(--nd-cluster-text);letter-spacing:.06em}.topo-node--multi-switch-cluster .topo-cluster-subtitle{color:var(--nd-cluster-text);opacity:.92;font-size:.62rem;font-weight:600;line-height:1.25}.topo-node--multi-switch-cluster .topo-node-icon--cluster{opacity:.85}.topo-node--multi-switch-cluster .topo-node-icon--cluster .topo-icon{width:30px;height:30px}.topo-multi-switch-layer{position:absolute;top:0;right:0;bottom:0;left:0;border:1.5px solid var(--nd-cluster-border);border-radius:10px;background:var(--nd-cluster-layer);pointer-events:none;z-index:0}.topo-multi-switch-layer--mid{transform:translate(3px,3px);opacity:.7}.topo-multi-switch-layer--back{transform:translate(6px,6px);opacity:.4}.topo-multi-switch-qty{margin-top:.2rem;font-size:.78rem;font-weight:700;letter-spacing:.02em;color:var(--nd-cluster-text)}.topo-multi-switch-mode{margin-top:.1rem;font-size:.62rem;font-weight:600;line-height:1.2;color:var(--nd-text-muted);word-break:break-word}.topo-node--cluster-expanded{opacity:1;min-width:112px;max-width:148px;padding:.4rem .5rem .5rem;border-style:solid;border-color:var(--nd-cluster-border);background:#6366f10f;box-shadow:none}.topo-node--cluster-expanded .topo-node-type--cluster{font-size:.58rem;margin-bottom:.05rem}.topo-node--cluster-expanded .topo-node-name--cluster-header{font-size:.78rem;font-weight:650;color:var(--nd-cluster-text);margin-bottom:.15rem}.topo-cluster-expand-btn{margin-top:.35rem;width:100%;padding:.28rem .4rem;border:1px solid var(--nd-cluster-border);border-radius:6px;background:var(--nd-cluster-btn);color:var(--nd-cluster-text);font-size:.64rem;font-weight:700;cursor:pointer;line-height:1.2;letter-spacing:.01em}.topo-cluster-expand-btn:hover{border-color:var(--nd-cluster);background:var(--nd-cluster-btn-hover);color:#e0e7ff}.topo-cluster-expand-btn--collapse{font-weight:650;padding:.18rem .35rem;font-size:.6rem;background:transparent}.topo-node--cluster-member{min-width:108px;max-width:140px;padding:.45rem .5rem .55rem;border-style:solid;background:#101c2af5}.topo-node--cluster-member .topo-icon--member{width:28px;height:28px}.topo-node--cluster-member-central{border-color:var(--nd-cluster-border);box-shadow:0 0 0 1px #6366f133}.topo-cluster-member-badge{margin-top:.3rem;display:inline-block;padding:.08rem .35rem;border-radius:4px;font-size:.58rem;font-weight:700;letter-spacing:.02em;text-transform:uppercase}.topo-cluster-member-badge--central{color:var(--nd-cluster-central-fg);background:var(--nd-cluster-central-bg);border:1px solid rgba(165,180,252,.45)}.topo-cluster-member-badge--spoke{color:#e2e8f0;background:#64748b8c}.topo-cluster-member-badge--member{color:#cbd5e1;background:#38bdf82e}@media (prefers-color-scheme: light){:root{--nd-cluster-soft: rgba(99, 102, 241, .1);--nd-cluster-border: rgba(79, 70, 229, .45);--nd-cluster-text: #4338ca;--nd-cluster-surface: rgba(99, 102, 241, .08);--nd-cluster-layer: rgba(99, 102, 241, .06);--nd-cluster-btn: rgba(99, 102, 241, .12);--nd-cluster-btn-hover: rgba(99, 102, 241, .2);--nd-cluster-central-fg: #ffffff}.topo-node--multi-switch-cluster,.topo-node--cluster-expanded{color:#1e1b4b}.topo-cluster-expand-btn:hover{color:#312e81}}.topo-node.selected{box-shadow:0 0 0 2px #38bdf859;border-color:var(--nd-focus);background:#38bdf814}.topo-node-icon{display:flex;justify-content:center;margin-bottom:.2rem}.topo-icon{width:36px;height:36px;opacity:.92}.topo-node-type{font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;margin-bottom:.15rem;color:#899cb2}.topo-node-name{font-size:.84rem;font-weight:650;word-break:break-word;color:#e4ecf6}.topo-node-delete{position:absolute;top:2px;right:6px;border:none;background:transparent;color:var(--nd-error);font-size:1.1rem;cursor:pointer;line-height:1;z-index:2;opacity:.75}.topo-node-delete:hover{opacity:1}.topo-handle{width:8px!important;height:8px!important;background:var(--nd-accent)!important;border:1.5px solid var(--nd-surface)!important}.topo-node--router{border-color:var(--nd-equip-border)}.topo-node--router .topo-node-type{color:var(--nd-equip-router)}.topo-node--switch{border-color:var(--nd-equip-border);border-radius:8px}.topo-node--switch .topo-node-type{color:var(--nd-equip-switch)}.topo-node--firewall{border-color:var(--nd-equip-border);border-radius:4px}.topo-node--firewall .topo-node-type{color:var(--nd-equip-firewall)}.topo-node--server{border-color:var(--nd-equip-border);border-radius:6px}.topo-node--server .topo-node-type{color:var(--nd-equip-server)}.topo-node--generic{border-color:var(--nd-equip-border);border-style:dashed}.topo-node--generic .topo-node-type{color:var(--nd-equip-generic)}.topo-node-subtitle{margin-top:.2rem;font-size:.65rem;font-weight:500;color:var(--nd-text-muted);line-height:1.2;max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--nd-font-mono)}.topo-node-badges{display:flex;flex-wrap:wrap;gap:.2rem;justify-content:center;margin-top:.2rem;max-width:9.5rem}.topo-cap-badge{font-size:.58rem;font-weight:700;border-radius:3px;padding:.05rem .28rem;line-height:1.2;border:1px solid transparent}.topo-cap-badge--ok{background:var(--nd-success-bg);color:var(--nd-success);border-color:var(--nd-success-border)}.topo-cap-badge--unknown{background:var(--nd-warning-bg);color:var(--nd-warning);border-color:var(--nd-warning-border)}.topo-cap-badge--insufficient{background:var(--nd-error-bg);color:var(--nd-error);border-color:var(--nd-error-border)}.muted{color:var(--nd-text-muted);font-size:.85rem}.later-note{margin-top:.75rem;padding:.6rem;background:var(--nd-surface-secondary);border:1px solid var(--nd-border-subtle);border-radius:var(--nd-radius-sm)}.field-error{color:var(--nd-error);font-size:.78rem;margin-top:.25rem}.field-label{display:block;margin-bottom:.3rem;font-weight:500;font-size:.82rem;color:var(--nd-text-secondary)}.form-group select{width:100%;padding:.55rem .65rem;border:1px solid var(--nd-border-input);border-radius:var(--nd-radius-sm);font-size:.9rem;background:var(--nd-input);color:var(--nd-text)}.checkbox-row,.radio-option{display:flex;align-items:center;gap:.4rem;font-size:.85rem;margin-bottom:.35rem}.radio-row{display:flex;flex-wrap:wrap;gap:.75rem}.vendor-grid{display:grid;grid-template-columns:1fr 1fr;gap:.15rem .5rem;margin-top:.35rem}.panel-section{margin-bottom:1rem;padding-bottom:.5rem;border-bottom:1px solid var(--nd-border-subtle)}.panel-section h4{font-size:.85rem;margin-bottom:.6rem;color:var(--nd-text)}.properties-tabs{display:flex;flex-wrap:wrap;gap:.25rem;margin-bottom:.9rem}.properties-tab{border:1px solid var(--nd-border);background:var(--nd-surface-secondary);color:var(--nd-text);border-radius:6px;padding:.35rem .55rem;font-size:.75rem;cursor:pointer}.properties-tab.active{background:var(--nd-primary);border-color:var(--nd-primary);color:#fff}.access-deployment{margin-top:.75rem}.access-deployment-options{display:flex;flex-direction:column;gap:.35rem;margin-top:.4rem}.access-deployment-option{display:flex;flex-direction:column;align-items:flex-start;text-align:left;width:100%;gap:.15rem;padding:.45rem .6rem;white-space:normal;height:auto}.access-deployment-option:disabled{opacity:.55;cursor:not-allowed}.access-deployment-option-desc{font-size:.7rem;font-weight:400;opacity:.9;line-height:1.25}.switch-star-config{margin-top:.65rem;padding-top:.5rem;border-top:1px dashed var(--nd-border-subtle)}.switch-star-config .field-label{display:block;font-size:.75rem;margin:.4rem 0 .2rem}.switch-star-config .field-input{width:100%;max-width:12rem;font-size:.8rem;padding:.3rem .4rem}.switch-star-northbound{display:flex;gap:.35rem;margin:.25rem 0 .35rem}.switch-star-config .btn-primary{margin-top:.45rem;font-size:.75rem;padding:.35rem .6rem}.req-summary{background:var(--nd-surface-secondary);border:1px solid var(--nd-border);border-radius:var(--nd-radius);padding:.7rem;margin:.75rem 0}.req-summary-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.4rem}.req-summary-header h4{margin:0;font-size:.85rem}.req-summary-source{font-size:.7rem;color:var(--nd-text-muted)}.req-summary-list{list-style:none;font-size:.8rem}.req-summary-list li{margin-bottom:.25rem}.sample-banner,.sample-badge{display:inline-block;background:var(--nd-warning-bg);color:var(--nd-warning);border:1px solid var(--nd-warning-border);border-radius:999px;padding:.15rem .55rem;font-size:.72rem;font-weight:600;margin-bottom:.5rem}.reco-list{display:flex;flex-direction:column;gap:.75rem}.reco-card{border:1px solid var(--nd-border);border-radius:8px;padding:.7rem;background:var(--nd-surface)}.candidate-browser{margin-top:.75rem}.candidate-mode-tabs{display:flex;gap:.35rem;margin-bottom:.5rem;flex-wrap:wrap}.candidate-mode-tabs button{border:1px solid var(--nd-border);background:var(--nd-surface-secondary);border-radius:6px;padding:.25rem .55rem;cursor:pointer;font-size:.8rem}.candidate-mode-tabs button.active{background:var(--nd-primary);color:#fff;border-color:var(--nd-primary)}.candidate-filters{display:flex;flex-wrap:wrap;gap:.6rem;margin-bottom:.6rem;align-items:end}.candidate-filters label{display:flex;flex-direction:column;gap:.2rem;font-size:.75rem}.candidate-filters .checkbox-label{flex-direction:row;align-items:center;gap:.35rem}.candidate-list{list-style:none;padding:0;margin:0;display:grid;gap:.5rem}.candidate-card-compact{display:flex;flex-direction:column;align-items:stretch;gap:.45rem}.candidate-part-number{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.95rem;font-weight:600;letter-spacing:.01em}.candidate-card-meta{display:grid;gap:.15rem;font-size:.82rem;color:var(--nd-text-secondary)}.candidate-pagination{display:flex;gap:.75rem;align-items:center;margin-top:.6rem}.reco-card-header{display:flex;flex-wrap:wrap;gap:.35rem;margin-bottom:.35rem}.reco-badge{background:#3b82f624;color:var(--nd-primary);border-radius:4px;padding:.1rem .4rem;font-size:.7rem;font-weight:700}.reco-type-badge{background:var(--nd-surface-secondary);color:var(--nd-text-secondary);border:1px solid var(--nd-border);border-radius:4px;padding:.1rem .4rem;font-size:.7rem;font-weight:600}.field-hint{font-size:.72rem;margin:-.25rem 0 .55rem;line-height:1.35}.reco-empty-state{font-size:.85rem}.reco-empty-state ul{margin:.35rem 0 0 1.1rem}.reco-card h4{margin:0 0 .15rem;font-size:.95rem}.reco-part{color:var(--nd-text-muted);font-size:.8rem;margin-bottom:.4rem}.reco-meta{list-style:none;font-size:.78rem;margin-bottom:.45rem}.reco-meta li{margin-bottom:.15rem}.reco-block{font-size:.75rem;margin-bottom:.4rem}.reco-block ul{margin:.2rem 0 0 1rem}.reco-warnings{color:var(--nd-warning)}.reco-unresolved{color:var(--nd-error)}.why-selected{font-size:.75rem;margin:.35rem 0 .2rem}.why-selected-toggle{display:inline-flex;align-items:center;gap:.35rem;background:transparent;border:none;padding:0;cursor:pointer;color:var(--nd-text-muted, #5b6573);font-size:.75rem}.why-selected-toggle:hover{color:var(--nd-text, #1f2937)}.why-selected-list{margin:.25rem 0 0 .85rem;padding:0}.why-selected-list li{margin-bottom:.12rem}.server-sizing-workflow{margin-top:1rem;padding-top:.75rem;border-top:1px solid var(--nd-border, #e5e7eb)}.sizing-results-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.75rem;margin:.5rem 0}.sizing-confidence{display:inline-block;font-size:.85rem;font-weight:600;margin:.5rem 0}.sizing-confidence.confidence-high{color:var(--nd-success, #059669)}.sizing-confidence.confidence-medium{color:var(--nd-warning, #d97706)}.sizing-confidence.confidence-low{color:var(--nd-error, #dc2626)}.reco-actions{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.5rem}.properties-message--error{color:var(--nd-error)}.properties-message--ok{color:var(--nd-success)}.properties-message--info{color:var(--nd-info)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#141c2873;z-index:1000;display:flex;justify-content:flex-end}.modal-drawer{width:min(640px,100vw);height:100%;background:var(--nd-surface);box-shadow:-4px 0 24px #00000026;display:flex;flex-direction:column}.modal-drawer--wide{width:min(920px,100vw)}.modal-drawer-header{display:flex;justify-content:space-between;align-items:center;padding:1rem;border-bottom:1px solid var(--nd-border)}.modal-drawer-header h3{margin:0;font-size:1rem}.modal-drawer-body{padding:1rem;overflow-y:auto}.bom-section{margin-bottom:1rem}.bom-section h4{font-size:.85rem;margin-bottom:.4rem;letter-spacing:.02em;text-transform:uppercase;color:var(--nd-text-secondary)}.spec-table-wrap{width:100%;overflow-x:auto}.bom-table{width:100%;border-collapse:collapse;font-size:.75rem}.bom-table th,.bom-table td{border:1px solid var(--nd-border);padding:.3rem .4rem;text-align:left;vertical-align:top;word-break:break-word}.bom-table th{background:var(--nd-surface-secondary)}.spec-table th[scope=row]{width:38%;font-weight:600;color:var(--nd-text-secondary);white-space:nowrap}.mono-cell{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.72rem}.agg-core-workflow{margin-top:1rem;padding-top:.75rem;border-top:1px solid var(--nd-border)}.agg-core-workflow h4,.agg-core-workflow h5{margin:0 0 .5rem}.agg-core-profile{margin-top:.75rem;padding:.65rem;background:var(--nd-surface-secondary);border:1px solid var(--nd-border);border-radius:8px}.agg-core-neighbor-block{margin:.55rem 0;font-size:.8rem}.agg-core-neighbor-block ul{margin:.25rem 0 0 1rem}.agg-core-assumptions{margin:.65rem 0;padding:.5rem .65rem;border:1px solid var(--nd-border);border-radius:8px;background:var(--nd-surface)}.agg-core-assumptions summary{cursor:pointer;font-weight:600;font-size:.85rem}.assumption-tag{font-size:.68rem;color:var(--nd-text-muted);font-weight:500}.assumption-tag--user{color:var(--nd-accent);font-weight:700}.agg-core-group-title{margin:.85rem 0 .4rem;font-size:.88rem}.selected-equipment-banner{margin:.5rem 0;padding:.55rem .65rem;border:1px solid rgba(96,165,250,.35);background:var(--nd-primary-soft);border-radius:var(--nd-radius);font-size:.85rem}.warning{color:var(--nd-warning);background:var(--nd-warning-bg);border:1px solid var(--nd-warning-border);border-radius:6px;padding:.45rem .6rem;font-size:.82rem}.btn-row{display:flex;flex-wrap:wrap;gap:.45rem;margin:.5rem 0}.phys-section{margin:.75rem 0 1rem;padding-bottom:.5rem;border-bottom:1px solid var(--nd-border)}.phys-section h4{margin:.4rem 0 .5rem;font-size:.95rem}.phys-divider{border:none;border-top:1px solid var(--nd-border);margin:1rem 0}.phys-endpoint{border:1px solid var(--nd-border);border-radius:8px;margin-bottom:.55rem;background:var(--nd-surface-secondary)}.phys-endpoint-header{display:flex;align-items:center;gap:.4rem;width:100%;text-align:left;border:none;background:transparent;padding:.55rem .65rem;cursor:pointer;font:inherit}.firewall-view-modal .modal-drawer-body{background:var(--nd-surface-secondary)}.firewall-view-header{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start;margin-bottom:.75rem}.firewall-view-header h5{margin:0;font-size:1rem}.firewall-view-badges{display:flex;gap:.35rem;flex-wrap:wrap}.firewall-view-zone{margin-bottom:.65rem;padding:.65rem;border:1px solid var(--nd-border);border-radius:8px;background:var(--nd-surface)}.phys-endpoint-caret{width:1rem;color:var(--nd-text-secondary);font-size:.7rem}.phys-endpoint-meta{display:grid;grid-template-columns:1fr 1fr;gap:.2rem .5rem;padding:0 .65rem .55rem;font-size:.78rem;color:var(--nd-text-secondary)}.phys-port-strip-wrap{padding:0 .55rem .65rem}.phys-port-group{margin-bottom:.45rem}.phys-endpoint-port-summary{font-weight:500;color:var(--nd-text-secondary);font-size:.82rem}.phys-port-group-label{font-size:.78rem;font-weight:700;color:var(--nd-text-secondary);margin-bottom:.3rem;padding:.2rem .35rem;background:var(--nd-surface-secondary);border-left:3px solid var(--nd-accent)}.phys-port-strip{display:flex;flex-direction:row;gap:.35rem;overflow-x:auto;padding-bottom:.25rem;max-width:100%}.port-chip{flex:0 0 auto;display:inline-flex;flex-direction:column;align-items:center;gap:.1rem;min-width:4.2rem;padding:.35rem .4rem;border:1px solid var(--nd-border-strong);border-radius:6px;background:var(--nd-surface-secondary);cursor:pointer;font-size:.72rem;color:var(--nd-text)}.port-chip:hover:not(:disabled){border-color:var(--nd-accent);background:#22d3ee1a}.port-chip--selected{border-color:var(--nd-primary);background:#3b82f62e;box-shadow:inset 0 0 0 1px var(--nd-primary)}.port-chip--compatible{border-color:var(--nd-success);background:var(--nd-success-bg);box-shadow:inset 0 0 0 1px var(--nd-success)}.port-chip--incompatible{border-color:var(--nd-error);background:var(--nd-error-bg);box-shadow:inset 0 0 0 1px var(--nd-error)}.port-chip--disabled{opacity:.45;cursor:not-allowed;background:#111827}.port-chip--reserved{border-color:var(--nd-warning);background:var(--nd-warning-bg)}.port-chip--unknown{border-style:dashed;color:var(--nd-text-muted)}.port-chip-name{font-weight:600;white-space:nowrap}.port-chip-status{font-size:.65rem;opacity:.85}.phys-compat--ok{border-left:3px solid var(--nd-success);padding-left:.55rem;margin:.6rem 0;font-size:.82rem}.phys-compat--bad{border-left:3px solid var(--nd-error);padding-left:.55rem;margin:.6rem 0;font-size:.82rem}.phys-warning{color:var(--nd-warning);background:var(--nd-warning-bg);border:1px solid var(--nd-warning-border);border-radius:6px;padding:.45rem .55rem;font-size:.82rem}.phys-option{border:1px solid var(--nd-border);border-radius:8px;padding:.55rem;margin-bottom:.45rem;font-size:.8rem}.phys-option--selected{border-color:var(--nd-primary);background:#38bdf814}.phys-actions{margin-top:.65rem}.phys-section--compact h5{margin:.55rem 0 .3rem;font-size:.86rem}.phys-block{margin-bottom:.65rem;padding-bottom:.45rem;border-bottom:1px solid var(--nd-border-subtle)}.phys-endpoint-meta--compact{display:flex;flex-wrap:wrap;gap:.75rem;font-size:.78rem}.phys-recommend{font-size:.84rem;line-height:1.4;padding:.45rem .55rem;background:var(--nd-surface-secondary);border-radius:4px}.btn-link{background:none;border:none;color:var(--nd-accent);padding:.25rem 0;cursor:pointer;font-size:.8rem;text-decoration:underline}.phys-advanced{margin-top:.45rem;padding:.45rem;border:1px dashed var(--nd-border);border-radius:4px}.phys-summary{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.5rem;margin-bottom:.5rem;font-size:.84rem}.phys-module-derived{margin-top:.35rem;padding:.45rem .55rem;background:var(--nd-surface-secondary);border-radius:4px;font-size:.78rem;line-height:1.35}.phys-hint{font-size:.78rem;color:var(--nd-text-muted);margin:.25rem 0 .5rem}.phys-option-warnings{margin:.35rem 0;padding-left:1.1rem;color:var(--nd-warning);font-size:.8rem}.phys-confirm-checklist ul{list-style:none;padding:0;margin:.35rem 0;font-size:.82rem}.phys-check--ok{color:var(--nd-success)}.phys-check--missing{color:var(--nd-text-muted)}.phys-confirm-checklist .phys-warning{margin-top:.5rem}.properties-message{white-space:pre-wrap}.form-row{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center}.checkbox-row{display:flex;align-items:center;gap:.4rem;font-size:.82rem;margin:.4rem 0 .6rem}.react-flow__edge-path.topo-edge--phys-confirmed{stroke:#22c55e;stroke-dasharray:none}.react-flow__edge-path.topo-edge--phys-pending,.react-flow__edge-path.topo-edge--phys-invalid,.react-flow__edge-path.topo-edge--phys-stale{stroke-dasharray:6 4}.field-label-with-help{display:flex;align-items:center;gap:.35rem}.field-help{position:relative;display:inline-flex;vertical-align:middle}.field-help-trigger{width:1.15rem;height:1.15rem;padding:0;border-radius:999px;border:1px solid var(--nd-border-strong);background:var(--nd-surface-secondary);color:var(--nd-text-secondary);font-size:.7rem;font-weight:700;line-height:1;cursor:help;flex-shrink:0}.field-help-trigger:hover,.field-help--open .field-help-trigger{background:var(--nd-nav-hover);border-color:var(--nd-text-muted)}.field-help-popover{position:absolute;z-index:40;top:calc(100% + .35rem);right:0;min-width:12rem;max-width:min(18rem,70vw);padding:.55rem .65rem;border-radius:6px;border:1px solid var(--nd-border);background:var(--nd-surface);box-shadow:0 4px 14px #141e281f;font-size:.75rem;font-weight:400;line-height:1.45;color:var(--nd-text);text-align:right}.contextual-guide{background:var(--nd-surface);border:1px solid var(--nd-border);border-left:3px solid var(--nd-accent-secondary);border-radius:var(--nd-radius);box-shadow:var(--nd-shadow);color:var(--nd-text);font-size:.78rem;line-height:1.45}.contextual-guide--inline{margin-bottom:.75rem}.contextual-guide--overlay{position:absolute;top:.75rem;right:.75rem;z-index:8;width:min(17.5rem,calc(100% - 1.5rem));max-height:calc(100% - 1.5rem);overflow:auto}.contextual-guide--collapsed.contextual-guide--overlay{width:auto;max-width:min(17.5rem,calc(100% - 1.5rem))}.contextual-guide-toggle{display:flex;align-items:center;gap:.45rem;width:100%;margin:0;padding:.5rem .65rem;background:transparent;border:0;color:inherit;cursor:pointer;text-align:left;font:inherit;border-radius:var(--nd-radius-sm)}.contextual-guide-toggle:hover{background:var(--nd-nav-hover)}.contextual-guide-icon{width:1.15rem;height:1.15rem;flex-shrink:0;color:var(--nd-accent)}.contextual-guide-title{flex:1;font-size:.72rem;font-weight:650;letter-spacing:.04em;text-transform:uppercase;color:var(--nd-text)}.contextual-guide-chevron{width:.85rem;height:.85rem;flex-shrink:0;color:var(--nd-text-muted);transition:transform var(--nd-transition)}.contextual-guide-chevron--open{transform:rotate(180deg)}.contextual-guide-body{padding:0 .7rem .7rem;border-top:1px solid var(--nd-border-subtle)}.contextual-guide-intro{margin:.55rem 0 .65rem;color:var(--nd-text-secondary)}.contextual-guide-kicker{margin:0 0 .28rem;font-size:.65rem;font-weight:650;letter-spacing:.06em;text-transform:uppercase;color:var(--nd-text-muted)}.contextual-guide-list{margin:0 0 .65rem;padding-left:1.05rem;color:var(--nd-text-secondary)}.contextual-guide-list li+li{margin-top:.2rem}.contextual-guide-list--steps{padding-left:1.15rem}.contextual-guide-tip{margin:0;padding:.45rem .5rem;background:var(--nd-primary-soft);border:1px solid var(--nd-border-subtle);border-radius:var(--nd-radius-sm);color:var(--nd-text-secondary)}.contextual-guide-tip .contextual-guide-kicker{display:block;color:var(--nd-accent)}@media (max-width: 640px){.field-help-popover{right:auto;left:0;max-width:min(16rem,85vw)}}@media (max-width: 720px){.contextual-guide--overlay{left:.5rem;right:.5rem;width:auto;top:.5rem;max-height:min(40vh,18rem)}}.hl-header-counts{margin:.15rem 0 0;font-size:.8rem;color:var(--nd-text-muted)}.hl-toolbar{display:flex;flex-wrap:wrap;gap:.4rem;justify-content:flex-end;align-items:center}.hl-design-mode{display:inline-flex;align-items:center;gap:.35rem;font-size:.85rem;margin-right:.25rem}.hl-design-mode select{min-width:9rem}.hl-sdwan-mode .canvas-wrap{box-shadow:inset 0 0 0 1px #a78bfa47}.hl-sdwan-banner{display:flex;flex-wrap:wrap;align-items:baseline;gap:.45rem .75rem;margin:.35rem 0 .15rem;padding:.28rem .55rem;border-left:3px solid #a78bfa;background:#a78bfa14;border-radius:0 4px 4px 0;max-width:28rem}.hl-sdwan-banner-title{font-size:.72rem;font-weight:800;letter-spacing:.06em;color:#c4b5fd}.hl-sdwan-banner-meta{font-size:.72rem;color:#94a3b8}.palette--sdwan{border-color:#a78bfa59}.palette-item-hint{display:block;width:100%;font-size:.65rem;font-weight:600;letter-spacing:.02em;color:#94a3b8;margin-top:.15rem}.hl-server-plane-badge{font-size:.62rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#c4b5fd;margin:0 0 .15rem}.hl-server-node--sdwan-controller{border-color:#a78bfa;background:#a78bfa1a}.hl-server-node--sdwan-controller .hl-server-type{color:#c4b5fd}.agg-sdwan-role-badge{display:inline-flex;align-items:center;gap:.45rem;margin:.35rem 0 .5rem;padding:.25rem .55rem;border-radius:4px;border:1px solid rgba(167,139,250,.4);background:#a78bfa14;font-size:.75rem}.agg-sdwan-role-title{font-weight:700;color:#c4b5fd}.agg-sdwan-role-value{font-weight:800;letter-spacing:.05em;color:#e2e8f0}.hl-link-mode,.hl-link-mode .hl-network-node,.hl-link-mode .hl-server-node{cursor:crosshair}.hl-network-node--link-target,.hl-server-node--link-target{outline:2px dashed rgba(15,52,96,.35);outline-offset:2px}.hl-network-node--link-target:hover,.hl-server-node--link-target:hover{outline:2px solid var(--nd-primary);box-shadow:0 0 0 3px #0f346029}.hl-link-mode .hl-node-handle,.hl-cursor-node,.react-flow__node-hlCursor,.react-flow__node-hlCursor .react-flow__handle,.hl-cursor-anchor,.hl-cursor-handle,.react-flow__edge.hl-temp-edge,.react-flow__edge.hl-temp-edge *{pointer-events:none!important}.react-flow__node{transition:none}.react-flow__node.dragging .hl-network-node,.react-flow__node.dragging .hl-server-node{box-shadow:0 2px 6px #0f34601f;background:var(--nd-surface);transition:none!important}.hl-link-banner{position:absolute;top:12px;left:50%;transform:translate(-50%);z-index:5;background:var(--nd-primary);color:#fff;padding:.35rem .8rem;border-radius:999px;font-size:.8rem;font-weight:600;pointer-events:none;box-shadow:0 4px 12px #0f346040}.hl-empty-state{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none;z-index:2;color:var(--nd-text-muted);text-align:center}.hl-empty-state h2{font-size:1.2rem;margin-bottom:.4rem;color:var(--nd-text)}.palette-item--button{width:100%;font:inherit;text-align:left}.palette-item--active{outline:none;background:var(--nd-primary-soft);border-color:#3b82f659;border-left-color:var(--nd-primary-hover);color:#dbeafe}.hl-network-node{position:relative;width:260px;background:var(--nd-equip-surface);border:1.5px solid var(--nd-equip-border);border-radius:10px;padding:.75rem .85rem .7rem;box-shadow:var(--nd-shadow);transition:border-color var(--nd-transition),box-shadow var(--nd-transition),background-color var(--nd-transition)}.hl-network-node.selected{box-shadow:0 0 0 2px #38bdf852;border-color:var(--nd-focus);background:#38bdf814}.hl-network-node-header{display:flex;gap:.5rem;align-items:flex-start}.hl-network-glyph{font-size:1.2rem;line-height:1.2}.hl-network-titles{flex:1;min-width:0}.hl-network-name{font-weight:700;font-size:.95rem;color:var(--nd-text)}.hl-network-desc{font-size:.75rem;color:var(--nd-text-muted);margin-top:.1rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hl-network-desc--muted{color:var(--nd-text-subtle)}.hl-network-stats{display:flex;gap:.65rem;margin:.65rem 0 .5rem;font-size:.75rem;color:var(--nd-text-secondary);font-variant-numeric:tabular-nums}.hl-open-network{width:100%;border:none;background:var(--nd-primary);color:#fff;border-radius:8px;padding:.4rem .5rem;font-size:.8rem;font-weight:600;cursor:pointer}.hl-server-node{position:relative;min-width:150px;max-width:190px;background:var(--nd-equip-surface);border:1.5px solid var(--nd-equip-border);border-radius:8px;padding:.7rem .75rem;text-align:center;color:#e1eaf5;box-shadow:var(--nd-shadow);transition:border-color var(--nd-transition),box-shadow var(--nd-transition),background-color var(--nd-transition)}.hl-server-node--monitoring{border-color:var(--nd-equip-border);color:#e1eaf5;background:var(--nd-equip-surface)}.hl-server-node--monitoring .hl-server-type{color:var(--nd-accent)}.hl-server-icon{display:flex;justify-content:center}.hl-server-type{font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em;margin:.2rem 0;opacity:.85}.hl-server-name{font-weight:700;font-size:.85rem}.hl-server-desc{font-size:.7rem;color:var(--nd-text-muted);margin-top:.2rem}.hl-badge{display:inline-flex;align-items:center;border-radius:4px;padding:.1rem .4rem;font-size:.65rem;font-weight:700;white-space:nowrap;border:1px solid transparent}.hl-badge--ok{background:var(--nd-success-bg);color:var(--nd-success);border-color:var(--nd-success-border)}.hl-badge--empty{background:var(--nd-surface-secondary);color:var(--nd-text-muted);border-color:var(--nd-border)}.hl-badge--busy{background:var(--nd-error-bg);color:var(--nd-error);border-color:var(--nd-error-border)}.hl-link-hit-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:20;pointer-events:auto;cursor:crosshair;border-radius:inherit}.hl-cursor-anchor{width:8px;height:8px;border-radius:50%;background:var(--nd-primary);pointer-events:none}.hl-edge-label{position:absolute;font-size:10px;pointer-events:none;background:#fffffff0;border:1px solid var(--nd-border);border-radius:999px;padding:0 6px;color:var(--nd-text-secondary)}.hl-edge-label--invalid{border-color:var(--nd-error);color:var(--nd-error);font-weight:700}.hl-modal-wide{max-width:640px}.hl-modal-subtitle{margin:-.4rem 0 .8rem;color:var(--nd-text-muted);font-size:.85rem}.hl-form-error{color:var(--nd-error);font-size:.85rem;margin:0 0 .6rem}.hl-muted{color:var(--nd-text-muted);font-size:.85rem}.hl-device-list,.hl-port-list{list-style:none;margin:0 0 1rem;padding:0;max-height:320px;overflow:auto}.hl-device-row,.hl-port-row{width:100%;display:flex;gap:.6rem;align-items:center;text-align:left;padding:.55rem .65rem;margin-bottom:.35rem;border:1px solid var(--nd-border);background:var(--nd-surface-secondary);border-radius:8px;cursor:pointer;font:inherit}.hl-device-row:hover,.hl-port-row:hover:not(:disabled){border-color:var(--nd-primary)}.hl-port-row:disabled{opacity:.55;cursor:not-allowed}.hl-device-type{text-transform:uppercase;font-size:.7rem;font-weight:700;color:var(--nd-primary);min-width:4.5rem}.hl-port-name{font-weight:600;min-width:5rem}.hl-port-meta{flex:1;font-size:.8rem;color:var(--nd-text-muted)}.hl-compat-grid{display:grid;grid-template-columns:1fr 1fr;gap:.8rem;margin:.8rem 0 1rem}.hl-context-menu{position:fixed;z-index:200;min-width:180px;background:var(--nd-surface);border:1px solid var(--nd-border);border-radius:8px;box-shadow:0 8px 24px #0000001f;padding:.3rem}.hl-context-menu button{display:block;width:100%;text-align:left;border:none;background:transparent;padding:.45rem .6rem;border-radius:6px;cursor:pointer;font:inherit;font-size:.85rem}.hl-context-menu button:hover{background:var(--nd-surface-secondary)}.hl-context-menu button.danger{color:var(--nd-error)}.hl-error-fallback{padding:2rem;text-align:center}.hl-endpoint-block,.hl-media-block{margin:.75rem 0;padding-bottom:.55rem;border-bottom:1px solid var(--nd-border-subtle)}.hl-endpoint-block h4,.hl-media-block h4{margin:0 0 .35rem;font-size:.8rem;text-transform:uppercase;letter-spacing:.03em;color:var(--nd-text-muted)}.hl-endpoint-block p,.hl-media-block p{margin:.15rem 0;font-size:.85rem}.hl-details-actions{display:flex;flex-direction:column;gap:.45rem;margin-top:.9rem}.hl-details-actions--row{flex-direction:row;flex-wrap:wrap;align-items:center}.hl-edit-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin:.6rem 0 1rem}.hl-edit-side h3{margin:0 0 .5rem;font-size:.9rem}.hl-edit-inline{margin-left:.45rem;padding:.15rem .45rem;font-size:.75rem}.hl-filter-chips{display:flex;flex-wrap:wrap;gap:.35rem;margin:.4rem 0 .8rem}.hl-chip{border:1px solid var(--nd-border);background:var(--nd-surface);border-radius:999px;padding:.2rem .65rem;font:inherit;font-size:.78rem;cursor:pointer}.hl-chip--active{background:var(--nd-primary);color:#fff;border-color:var(--nd-primary)}.hl-module-list{list-style:none;margin:0 0 1rem;padding:0;max-height:360px;overflow:auto}.hl-module-option{display:flex;gap:.6rem;align-items:flex-start;padding:.7rem .75rem;margin-bottom:.45rem;border:1px solid var(--nd-border);border-radius:10px;background:var(--nd-surface-secondary);cursor:pointer}.hl-module-option:has(input:checked){border-color:var(--nd-primary);background:var(--nd-primary-soft)}.hl-module-meta{display:block;font-size:.8rem;color:var(--nd-text-muted);margin-top:.15rem}.canvas-wrap{position:relative}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.hl-bom-modal{max-width:min(1100px,96vw);width:96%;max-height:90vh;display:flex;flex-direction:column;overflow:hidden;padding:1.25rem 1.4rem 1.1rem}.hl-bom-header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:.6rem}.hl-bom-header h2{margin:0;font-size:1.2rem}.hl-bom-loading,.hl-bom-empty,.hl-bom-error{padding:1.5rem .2rem}.hl-bom-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:.5rem;margin:.4rem 0 .8rem}.hl-bom-cards div{background:var(--nd-surface-secondary);border:1px solid var(--nd-border);border-radius:8px;padding:.45rem .6rem}.hl-bom-cards span{display:block;font-size:.72rem;color:var(--nd-text-muted);text-transform:uppercase;letter-spacing:.03em}.hl-bom-cards strong{font-size:.95rem}.hl-bom-warnings{margin:0 0 .7rem;padding:.55rem .8rem .55rem 1.4rem;background:var(--nd-warning-bg);border:1px solid var(--nd-warning-border);border-radius:8px;color:var(--nd-warning);font-size:.85rem}.hl-bom-search input{width:100%;margin-bottom:.7rem;padding:.45rem .65rem;border:1px solid var(--nd-border-input);border-radius:6px;background:var(--nd-input);color:var(--nd-text)}.hl-bom-table-wrap{overflow:auto;max-height:min(50vh,420px);border:1px solid var(--nd-border);border-radius:8px}.hl-bom-table{width:100%;border-collapse:collapse;font-size:.85rem;min-width:720px}.hl-bom-table th,.hl-bom-table td{padding:.5rem .65rem;border-bottom:1px solid var(--nd-border-subtle);text-align:left;vertical-align:top}.hl-bom-table th{position:sticky;top:0;background:var(--nd-surface-secondary);font-weight:600;font-size:.78rem;text-transform:uppercase;letter-spacing:.03em;color:var(--nd-text-muted)}.hl-bom-desc{display:flex;flex-direction:column;gap:.1rem}.hl-bom-desc span{color:var(--nd-text-muted);font-size:.8rem}.hl-bom-source{font-size:.8rem;line-height:1.35}.hl-bom-source a{color:var(--nd-primary)}.hl-bom-total{margin-top:.9rem;padding:.7rem .85rem;background:var(--nd-surface-secondary);border-radius:8px}.hl-bom-total h3{margin:0;font-size:.85rem;text-transform:uppercase;letter-spacing:.04em;color:var(--nd-text-secondary)}.hl-bom-total-amount{margin:.15rem 0 0;font-size:1.35rem;font-weight:700}.hl-bom-total--warn{background:var(--nd-warning-bg);border:1px solid var(--nd-warning-border)}.hl-bom-total--warn p:last-child{margin:.25rem 0 0;color:var(--nd-warning);font-size:.85rem}@media (max-width: 720px){.hl-bom-modal{width:98%;max-width:98vw;padding:1rem}.hl-bom-header{flex-direction:column}}.ip-plan-modal{max-width:920px;max-height:90vh;overflow:auto}.ip-plan-home-actions,.ip-plan-modal-actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1rem}.ip-plan-table{width:100%;border-collapse:collapse;font-size:.82rem;margin:.6rem 0 1rem;font-variant-numeric:tabular-nums;background:var(--nd-table)}.ip-plan-table th,.ip-plan-table td{border:none;border-bottom:1px solid #223149;padding:.4rem .55rem;text-align:left;vertical-align:top}.ip-plan-table th{background:#162236;color:#cbd5e1;font-size:.72rem;font-weight:650;text-transform:uppercase;letter-spacing:.03em;border-bottom:1px solid var(--nd-border)}.ip-plan-table tbody tr:hover{background:var(--nd-row-hover)}.ip-plan-table tbody td{color:#e2e8f0;font-family:var(--nd-font-mono);font-size:.78rem}.ip-plan-table tbody td:first-child{font-family:var(--nd-font);font-weight:550;font-size:.82rem;color:var(--nd-text)}.ip-plan-unresolved{margin:.5rem 0 1rem;padding:.5rem .65rem .5rem 1.2rem;color:var(--nd-warning);background:var(--nd-warning-bg);border:1px solid var(--nd-warning-border);border-radius:var(--nd-radius-sm);font-size:.85rem}.ip-plan-stale{color:var(--nd-warning);background:var(--nd-warning-bg);border:1px solid var(--nd-warning-border);border-radius:var(--nd-radius-sm);font-weight:600;margin:.4rem 0;padding:.45rem .65rem}.ip-plan-reserved{margin:.5rem 0 .85rem;padding:.65rem .75rem;background:var(--nd-surface-secondary);border:1px solid var(--nd-border);border-radius:var(--nd-radius);font-size:.85rem}.ip-plan-reserved strong{font-family:var(--nd-font-mono);font-size:.82rem}.ip-family-v4,.ip-plan-stat--v4{border-left:3px solid var(--nd-ipv4)}.ip-family-v6,.ip-plan-stat--v6{border-left:3px solid var(--nd-ipv6)}.ip-family-badge{display:inline-flex;align-items:center;border-radius:4px;padding:.05rem .35rem;font-size:.65rem;font-weight:700;letter-spacing:.02em;border:1px solid transparent}.ip-family-badge--v4{color:var(--nd-ipv4);background:var(--nd-primary-soft);border-color:#60a5fa59}.ip-family-badge--v6{color:var(--nd-ipv6);background:#a78bfa1f;border-color:#a78bfa59}.hl-bom-cards .ip-plan-stat--v4 strong,.hl-bom-cards .ip-plan-stat--v6 strong,.ip-mono{font-family:var(--nd-font-mono);font-variant-numeric:tabular-nums}.bom-table th,.hl-bom-table th{background:#162236;color:#cbd5e1;font-weight:650}.bom-table,.hl-bom-table{background:var(--nd-table)}.bom-table tbody td,.hl-bom-table tbody td{color:#e2e8f0;border-bottom-color:#223149}.bom-table tbody tr:hover,.hl-bom-table tbody tr:hover{background:var(--nd-row-hover)}.mono-cell{font-family:var(--nd-font-mono);font-size:.72rem;font-variant-numeric:tabular-nums}.react-flow{background:var(--nd-topo)}.react-flow__controls{box-shadow:var(--nd-shadow);border:1px solid var(--nd-border);border-radius:var(--nd-radius-sm);overflow:hidden}.react-flow__controls-button{background:var(--nd-surface)!important;border-bottom:1px solid var(--nd-border)!important;fill:var(--nd-text-secondary)!important}.react-flow__controls-button:hover{background:var(--nd-surface-elevated)!important}.react-flow__minimap{background:var(--nd-shell-secondary)!important;border:1px solid var(--nd-border)!important;border-radius:var(--nd-radius-sm)}.react-flow__attribution{background:transparent!important;color:var(--nd-text-subtle)!important}.parallel-edge-label,.hl-edge-label{background:#142238f5;border:1px solid var(--nd-border);color:var(--nd-text-secondary)}.hl-server-node{background:var(--nd-equip-surface);border-color:var(--nd-equip-border);color:#e1eaf5}.hl-server-node.selected{box-shadow:0 0 0 2px #38bdf852;border-color:var(--nd-focus);background:#38bdf814}.hl-server-type{color:#899cb2}.hl-server-name{color:#e4ecf6}.modal-backdrop{background:var(--nd-overlay)}.field-help-popover,.hl-context-menu,.contextual-guide,.modal-drawer{background:var(--nd-surface);border-color:#2a3c54;color:var(--nd-text)}@media (prefers-reduced-motion: reduce){.btn,.palette-item,.topo-node,.hl-network-node,.hl-server-node,.form-group input,.form-group textarea,.form-group select,.port-chip,.contextual-guide-chevron{transition:none!important}}.topo-node-ip-hover,.topo-edge-ip-hover{display:block;position:absolute;left:50%;bottom:calc(100% + 8px);transform:translate(-50%);z-index:40;max-width:260px;background:var(--nd-shell);color:var(--nd-text);font-size:.72rem;line-height:1.35;font-family:var(--nd-font-mono);padding:.45rem .55rem;border-radius:var(--nd-radius-sm);white-space:pre-wrap;min-width:140px;pointer-events:none;box-shadow:var(--nd-shadow-md);border:1px solid rgba(148,163,184,.25)}.topo-edge-ip-hover{position:relative;left:auto;bottom:auto;transform:none;display:block}.topo-edge-hit{pointer-events:stroke;cursor:default}@media (max-width: 1024px){.designer-header{flex-wrap:wrap;align-items:flex-start;gap:.55rem .85rem}.designer-header>div{min-width:0;flex:1 1 14rem}.hl-toolbar{justify-content:flex-start;flex:1 1 100%}.designer-body{flex-direction:column;overflow-x:clip;overflow-y:auto}.palette{width:100%;border-right:none;border-bottom:1px solid var(--nd-border-secondary);display:flex;flex-wrap:wrap;align-items:flex-start;gap:.4rem;padding:.7rem .85rem;max-height:none;flex-shrink:0}.palette h3,.palette-hint{width:100%;margin-bottom:.35rem}.palette-item{margin-bottom:0;flex:0 1 auto}.canvas-wrap{flex:1 0 auto;width:100%;min-height:min(56vh,30rem);height:min(60vh,34rem)}.properties-panel,.properties-panel--wide{width:100%;max-width:none;border-left:none;border-top:1px solid var(--nd-border);max-height:min(42vh,22rem);flex-shrink:0}.topology-summary-body{max-width:min(320px,100%)}}@media (max-width: 768px){.container{padding:1rem}.project-list-header{align-items:flex-start}.project-list-header h1{margin-bottom:.5rem}.project-list-header-meta{width:100%}.project-card-row--primary,.project-card-row--downloads{flex-direction:column;align-items:stretch}.project-card-identity{flex:0 0 auto;width:100%}.project-card-actions,.project-card-downloads{width:100%;flex-shrink:1}.project-card-downloads-label{width:100%;min-width:0}.btn,a.btn,.palette-item{min-height:2.5rem}.designer-layout{height:100dvh}.designer-header{padding:.65rem .85rem}.canvas-wrap{min-height:min(52vh,26rem);height:min(56vh,28rem)}.properties-panel,.properties-panel--wide{max-height:min(48vh,26rem)}.modal-overlay{align-items:flex-start;padding:.75rem 0;overflow-y:auto}.modal{width:calc(100% - 1.5rem);max-width:none;max-height:calc(100dvh - 1.5rem);margin:.75rem auto;padding:1.1rem 1rem}.modal-backdrop{justify-content:stretch;align-items:stretch}.modal-drawer,.modal-drawer--wide{width:100%;max-width:100vw;max-height:100dvh}.hl-modal-wide{max-width:none}.hl-compat-grid,.hl-edit-grid{grid-template-columns:1fr}.hl-details-actions--row{flex-direction:column;align-items:stretch}.hl-details-actions--row .btn,.hl-details-actions--row a.btn{width:100%;justify-content:center}.form-group input,.form-group textarea,.form-group select{min-height:2.5rem;font-size:1rem}}@media (max-width: 480px){.container{padding:.75rem}.project-list-header h1{font-size:1.35rem}.project-card{padding:.9rem}.project-card-actions .btn,.project-card-actions a.btn,.project-card-downloads .btn{flex:1 1 auto}.designer-header h1{font-size:1.05rem}.hl-header-counts,.designer-status{font-size:.75rem}.canvas-wrap{min-height:50vh;height:52vh}.palette{padding:.55rem .65rem}.hl-toolbar .btn{flex:1 1 auto}}
