.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: #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: 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}.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{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#e7eef2;background:#050607}*{box-sizing:border-box}body{margin:0;background:#050607}button,input,select{font:inherit}.login-screen{min-height:100vh;display:grid;place-items:center;background:#050607}.login-panel{width:min(360px,calc(100vw - 32px));display:grid;gap:14px;padding:24px;border:1px solid #202833;border-radius:8px;background:#0c0f14}.login-panel h1{margin:0;font-size:26px}.login-logo-slot{display:grid;place-items:center;min-height:72px;color:#e7eef2}.login-logo-slot.compact{min-height:36px;justify-content:start}.login-logo-slot img{display:block;max-width:100%;max-height:180px;object-fit:contain}.login-panel input,.topology-name,.form-grid input,.form-grid select{border:1px solid #273244;border-radius:8px;padding:10px 12px;background:#0b0d10;color:#e7eef2}.login-panel button,.save-button,.logout-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:6px;padding:10px 12px;background:#2b3038;color:#fff;cursor:pointer}.logout-button{margin-top:auto;background:#151922;color:#e7eef2}.logout-button:hover,.secondary-button:hover,.save-button:hover{filter:brightness(1.08)}.app-shell{height:100vh;display:grid;grid-template-columns:280px 1fr;overflow:hidden;transition:grid-template-columns .2s ease}.app-shell.sidebar-collapsed{grid-template-columns:60px 1fr}.sidebar{display:flex;flex-direction:column;gap:14px;padding:16px;border-right:1px solid #202833;background:#080a0d;min-width:0;overflow:hidden;transition:padding .2s ease}.sidebar--collapsed{padding:12px 8px;gap:8px;align-items:center}.sidebar-toggle{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;flex-shrink:0;margin-left:auto;border:0;border-radius:6px;background:transparent;color:#6b7c8a;cursor:pointer;transition:background .15s,color .15s}.sidebar-toggle:hover{background:#101520;color:#e7eef2}.sidebar--collapsed .sidebar-toggle{margin-left:0}.sidebar--collapsed .brand{flex-direction:column;gap:6px;width:100%}.sidebar--collapsed .brand-text,.sidebar--collapsed .brand-with-logo span,.sidebar--collapsed .brand-with-logo small{display:none}.sidebar--collapsed .nav-logo-img{max-width:36px!important;width:36px!important}.sidebar--collapsed .side-nav{width:100%}.sidebar--collapsed .nav-item{justify-content:center;padding:10px;gap:0}.sidebar--collapsed .nav-item span,.sidebar--collapsed .sidebar-save{display:none}.sidebar--collapsed .logout-button{width:40px;padding:10px;justify-content:center}.sidebar--collapsed .logout-button span{display:none}.side-nav{display:grid;gap:6px}.nav-item{width:100%;display:flex;align-items:center;gap:10px;border:1px solid transparent;border-radius:8px;padding:10px 12px;background:transparent;color:#bdc9cf;text-align:left;cursor:pointer}.nav-item:hover{background:#101215}.nav-item.active{border-color:#3a414c;background:#151922;color:#e7eef2;font-weight:700}.sidebar-save{display:grid;gap:10px;padding-top:10px;border-top:1px solid #202833}.brand{display:flex;align-items:center;gap:10px}.brand strong,.brand span,.brand small{display:block}.brand span,.brand small{color:#91a1a9;font-size:13px}.brand small{color:#6f7b86;font-size:11px}.brand-with-logo{display:grid;gap:4px;width:100%}.brand-with-logo span{color:#91a1a9;font-size:13px}.brand-with-logo small{color:#6f7b86;font-size:11px}.host-list{display:flex;flex-direction:column;gap:8px;overflow:auto}.host-row{display:grid;grid-template-columns:10px 1fr auto;align-items:center;gap:8px;width:100%;border:1px solid #202833;border-radius:8px;padding:10px;background:#0c0f14;color:#e7eef2;text-align:left;cursor:pointer}.host-row small{color:#91a1a9}.status-dot{width:9px;height:9px;border-radius:50%;background:#8a969c}.status-dot.up{background:#1d9a64}.status-dot.down{background:#cf3d3d}.status-dot.maintenance{background:#c28720}.content-shell{position:relative;min-width:0;min-height:0;overflow:auto;background:#050607}.top-header-tabs{position:sticky;top:0;z-index:20;display:flex;justify-content:flex-end;gap:8px;padding:10px 24px;border-bottom:1px solid #202833;background:#050607f0;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.top-header-tabs button{display:inline-flex;align-items:center;gap:7px;border:1px solid #273244;border-radius:8px;padding:8px 11px;background:#0c0f14;color:#cbd6db;cursor:pointer}.top-header-tabs button.active{border-color:#3b82f6;color:#fff}.page{min-height:100%;padding:24px}.narrow-page{max-width:760px}.page-header{margin-bottom:18px}.page-header h1{margin:0 0 4px;font-size:28px;line-height:1.2}.page-header p{margin:0;color:#91a1a9}.summary-grid{display:grid;grid-template-columns:repeat(3,minmax(180px,1fr));gap:12px;margin-bottom:18px}.summary-card,.panel{border:1px solid #202833;border-radius:8px;background:#0c0f14}.summary-card{display:grid;gap:8px;padding:16px}.summary-card span{color:#91a1a9;font-size:13px}.summary-card strong{font-size:26px}.summary-card.ok{border-left:5px solid #1d9a64}.summary-card.warning{border-left:5px solid #c28720}.summary-card.danger{border-left:5px solid #cf3d3d}.panel{padding:18px}.panel h2{margin:0 0 14px;font-size:18px}.event-list,.user-list,.server-list{display:grid;gap:8px}.event-row{display:grid;grid-template-columns:10px minmax(120px,220px) 1fr;align-items:center;gap:10px;padding:10px;border:1px solid #202833;border-radius:8px;background:#090b0f}.event-row span:last-child,.user-row span{color:#91a1a9}.empty-state,.form-status{margin:0;color:#91a1a9}.workbench{height:100%;display:grid;grid-template-columns:1fr;min-height:0}.workbench-panel{display:flex;flex-direction:column;gap:14px;min-width:0;min-height:0;padding:18px;border-right:1px solid #202833;background:#080a0d}.workbench-panel .page-header{margin-bottom:0}.map-stage{position:relative;min-width:0;min-height:0;display:block;background:#050607}.editor-map-header{position:absolute;top:14px;left:14px;z-index:35;display:inline-flex;align-items:center;gap:8px;max-width:min(440px,calc(100% - 110px));border:1px solid #202833;border-radius:10px;padding:7px 10px 7px 7px;background:#080a0df2;color:#f2f6f8;box-shadow:0 18px 44px #00000059}.editor-map-header button{width:32px;height:32px;display:grid;place-items:center;border:1px solid #202833;border-radius:8px;background:#0c0f14;color:#d6dde6;cursor:pointer}.editor-map-header button:hover{border-color:#3a414c;background:#151922}.editor-map-header strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px}.editor-side-toolbar{position:absolute;top:14px;right:14px;z-index:35;width:58px;display:grid;gap:10px;justify-items:center;border:1px solid #202833;border-radius:12px;padding:8px;background:#080a0df2;box-shadow:0 18px 44px #00000073}.editor-actions{display:grid;gap:6px;justify-items:center}.tool-button{width:42px;height:42px;min-height:42px;display:inline-flex;align-items:center;justify-content:center;gap:7px;flex:0 0 auto;border:1px solid #202833;border-radius:10px;padding:0;background:#0c0f14;color:#d6dde6;cursor:pointer}.tool-button svg,.create-tool-button svg{width:18px;height:18px;flex:0 0 auto}.tool-button:hover{border-color:#3a414c;background:#151922}.tool-button.active{border-color:#5b6472;background:#20242c;color:#fff}.tool-button.danger{color:#d6dde6}.tool-button.danger.active{border-color:#5b6472;background:#20242c}.create-tool-wrap{position:relative;flex:0 0 auto}.create-tool-button{width:42px;height:42px;display:grid;place-items:center;border:1px solid #3a414c;border-radius:10px;background:#1a1e25;color:#f5f7fa;cursor:pointer}.create-tool-button:hover,.create-tool-button.active{border-color:#6b7280;background:#252b35}.create-tool-menu{position:absolute;top:0;right:calc(100% + 10px);z-index:100;min-width:220px;display:grid;gap:6px;border:1px solid #202a3a;border-radius:10px;padding:8px;background:#080b12;box-shadow:0 20px 50px #00000094}.editor-side-actions{display:grid;gap:6px;width:100%;justify-items:center;padding-top:8px;border-top:1px solid #202833}.save-tool-button{border-color:#354151;background:#171b22;color:#fff}.toolbar-divider{width:1px;height:22px;background:#202833;margin:0 2px;flex-shrink:0}.create-tool-menu button{min-height:38px;display:flex;align-items:center;gap:10px;border:1px solid transparent;border-radius:8px;padding:9px 10px;background:transparent;color:#d6dde6;text-align:left;cursor:pointer}.create-tool-menu button:hover,.create-tool-menu button.active{border-color:#303846;background:#111318;color:#fff}.host-picker-panel{position:fixed;top:78px;right:22px;z-index:44;width:min(360px,calc(100vw - 44px));max-height:calc(100vh - 106px);overflow:auto;display:grid;gap:12px;border:1px solid #202a3a;border-radius:8px;padding:14px;background:#080b12;box-shadow:0 24px 70px #00000094;scrollbar-width:none}.host-picker-panel::-webkit-scrollbar{display:none}.host-picker-controls{display:grid;gap:10px}.host-picker-controls label{display:grid;gap:6px;color:#8d99a6;font-size:12px}.host-picker-controls select,.host-picker-controls input{width:100%;min-height:40px;border:1px solid #202a3a;border-radius:8px;padding:0 11px;background:#0b1020;color:#e7eef2;outline:none}.host-picker-controls select:focus,.host-picker-controls input:focus{border-color:#3a526d;box-shadow:0 0 0 2px #3b82f629}.host-picker-list{display:grid;gap:8px}.host-picker-count{margin:0;color:#8d99a6;font-size:12px}.host-picker-item{display:grid;grid-template-columns:10px minmax(0,1fr);align-items:center;gap:10px;border:1px solid #202833;border-radius:8px;padding:10px;background:#0c0f14;color:#e7eef2;text-align:left;cursor:grab}.host-picker-item:hover{border-color:#3a414c;background:#111318}.host-picker-item:active{cursor:grabbing}.host-picker-item strong,.host-picker-item small{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.host-picker-item small{margin-top:2px;color:#8d99a6}.host-picker-item{-webkit-user-select:none;user-select:none}.host-picker-item--selected{background:#0e2040;border-color:#3b82f6;box-shadow:inset 0 0 0 1px #3b82f6}.host-picker-item--selected:hover{background:#112a52;border-color:#60a5fa}.host-picker-footer{padding-top:4px;border-top:1px solid #1a2030;display:flex;justify-content:flex-end}.host-picker-edit-menu-wrap{position:relative}.host-picker-edit-btn{height:30px;padding:0 10px;border:1px solid #202a3a;border-radius:6px;background:#0b1020;color:#8d99a6;font-size:12px;cursor:pointer;white-space:nowrap}.host-picker-edit-btn:hover{background:#111318;color:#e7eef2;border-color:#3a526d}.host-picker-edit-dropdown{position:absolute;top:calc(100% + 4px);right:0;z-index:60;min-width:180px;background:#0c0f14;border:1px solid #202a3a;border-radius:8px;padding:4px;box-shadow:0 8px 32px #0009;display:grid;gap:2px}.host-picker-edit-dropdown button{width:100%;padding:8px 12px;border:none;border-radius:6px;background:transparent;color:#c9d5e0;font-size:13px;text-align:left;cursor:pointer}.host-picker-edit-dropdown button:hover{background:#1a2535;color:#e7eef2}.palette-list{display:flex;flex-direction:column;gap:8px}.palette-item{min-height:44px;display:flex;align-items:center;gap:8px;border:1px solid #202833;border-radius:8px;padding:9px;background:#0c0f14;color:#e7eef2;cursor:grab}.palette-item:active{cursor:grabbing}.palette-item span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.node-bind-control{display:grid;gap:6px;color:#c9d4d9;font-weight:700}.node-bind-control select{width:100%;color:#e7eef2;font-weight:400}.canvas{min-width:0;min-height:0;height:100%}.element-editor-panel{position:fixed;top:78px;right:22px;z-index:45;width:min(520px,calc(100vw - 44px));max-height:calc(100vh - 106px);overflow:auto;display:grid;gap:14px;border:1px solid #202a3a;border-radius:8px;padding:18px;background:#080b12;color:#e8f0f5;box-shadow:0 24px 70px #0000009e;scrollbar-width:none}.element-editor-panel::-webkit-scrollbar{display:none}.element-editor-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.element-editor-header h2{margin:0;color:#f4f8fa;font-size:18px;line-height:1.2}.element-kicker{display:block;margin-bottom:3px;color:#7f94a1;font-size:12px;font-weight:700;text-transform:uppercase}.element-close-button{width:36px;height:36px;display:grid;place-items:center;flex:0 0 auto;border:1px solid #202a3a;border-radius:8px;background:#080a0d;color:#cbd6db;cursor:pointer}.element-summary{display:grid;grid-template-columns:54px minmax(0,1fr);gap:12px;align-items:center;border:1px solid #202a3a;border-radius:8px;padding:12px;background:#0f1115}.element-summary strong,.element-summary span{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.element-summary span{margin-top:3px;color:#91a1a9;font-size:12px}.element-preview-dot{width:48px;height:48px;display:grid;place-items:center;border:1px solid #334155;border-radius:8px;background:#0b0d10;color:#8fb9d6}.element-preview-dot.up{border-color:#22764f;background:#10291f;color:#64d99b}.element-preview-dot.down{border-color:#7d3640;background:#2a1318;color:#ff828d}.element-preview-dot.maintenance{border-color:#7a5c23;background:#2a2112;color:#e0b857}.element-tabs{display:grid;grid-template-columns:repeat(2,1fr);gap:6px;padding:4px;border:1px solid #202a3a;border-radius:8px;background:#0f1115}.element-tabs button{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:0;border-radius:6px;min-height:40px;padding:9px 12px;background:transparent;color:#8ea3b0;cursor:pointer}.element-tabs button.active{background:#1a1e25;color:#fff}.element-form{display:grid;gap:12px}.element-section{display:grid;gap:12px;border:1px solid #202a3a;border-radius:8px;padding:12px;background:#0b0d10}.element-section-title{display:flex;align-items:center;gap:8px;color:#dbe7ed;font-size:13px;font-weight:800}.element-form label{display:grid;gap:6px;color:#aebdcc;font-size:12px;font-weight:700}.field-label-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.field-label-row small{color:#7f94a1;font-size:12px;font-weight:600}.element-form input,.element-form select{width:100%;min-height:42px;border:1px solid #202a3a;border-radius:8px;padding:10px 12px;background:#111318;color:#e5edf5;font-weight:400;outline:none}.element-form input:focus,.element-form select:focus{border-color:#4b5563;box-shadow:0 0 0 3px #94a3b81f}.position-visual-box{display:flex;align-items:center;justify-content:space-between;gap:10px;border:1px solid #202a3a;border-radius:8px;padding:10px 12px;background:#111318;color:#8ea3b0}.position-visual-box strong{color:#dbe7ed;font-size:12px}.two-col-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;align-items:end}.signal-label-tx{color:#34d399;font-weight:700;font-size:12px}.signal-label-rx{color:#60a5fa;font-weight:700;font-size:12px}.endpoint-select-row{display:grid;grid-template-columns:1fr auto 1fr;gap:6px;align-items:end}.swap-endpoints-btn{height:32px;padding:0 8px;background:#1e293b;border:1px solid #334155;border-radius:6px;color:#94a3b8;font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s,color .15s;align-self:end;margin-bottom:2px}.swap-endpoints-btn:hover{background:#334155;color:#e2e8f0}.cable-type-selector{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-bottom:4px}.cable-type-btn{display:flex;flex-direction:column;align-items:center;gap:4px;padding:6px 8px;border-radius:7px;border:1.5px solid #273244;background:#141b26;color:#89a;font-size:11px;font-weight:600;cursor:pointer;transition:border-color .15s,background .15s,color .15s;flex:1;min-width:48px}.cable-type-btn:hover{border-color:#3b82f6;color:#e2e8f0}.cable-type-btn.active{border-color:#3b82f6;background:#1e2d3d;color:#e2e8f0}.cable-type-line{display:block;width:100%;height:3px;border-radius:2px}.cable-type-clear{padding:4px 8px;border-radius:6px;border:1px solid #273244;background:transparent;color:#4b5563;font-size:11px;cursor:pointer;flex-shrink:0}.cable-type-clear:hover{color:#e2e8f0;border-color:#6b7280}.color-row{display:grid;grid-template-columns:46px minmax(0,1fr);gap:8px;align-items:center}.color-row input[type=color]{width:46px;height:42px;min-height:42px;border-radius:8px;padding:4px;cursor:pointer}.element-checkbox{display:flex!important;grid-template-columns:none;align-items:flex-start;gap:10px!important}.element-field-label{font-size:11px;color:#64748b;text-transform:uppercase;letter-spacing:.05em;margin-bottom:4px;margin-top:4px}.element-checkbox input{width:auto;margin-top:3px}.element-checkbox span,.element-checkbox small{display:block}.advanced-toggle{display:flex!important;grid-template-columns:none;align-items:center;justify-content:space-between}.advanced-toggle input{width:44px;height:24px;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid #202a3a;border-radius:999px;background:#111318;cursor:pointer;position:relative}.advanced-toggle input:before{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#7f94a1;transition:transform .15s ease,background .15s ease}.advanced-toggle input:checked{background:#2b3038;border-color:#5b6472}.advanced-toggle input:checked:before{transform:translate(19px);background:#d1d5db}.status-item-panel{display:grid;gap:12px;border:0;border-radius:8px;padding:0;background:transparent}.status-item-header{display:grid;grid-template-columns:1fr auto auto;gap:8px;align-items:center}.status-item-header h3{margin:0;font-size:14px}.status-item-header button{display:inline-flex;align-items:center;gap:6px;border:1px solid #202a3a;border-radius:6px;padding:7px 8px;background:#111318;color:#cdd9df;cursor:pointer}.status-item-header>span{border-radius:999px;padding:5px 8px;background:#173425;color:#d6dde6;font-size:12px;font-weight:700}.host-badges{display:flex;flex-wrap:wrap;gap:6px}.host-badges span{border-radius:999px;padding:5px 8px;background:#111318;color:#9db0bc;font-size:12px}.iface-diagnostics{display:flex;gap:12px;flex-wrap:wrap;font-size:11px;color:#6e8898;padding:4px 0}.iface-diagnostics span{padding:2px 8px;border:1px solid #1e2a38;border-radius:4px;background:#0a0d12}.interface-metric-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 16px;border:1px solid #202a3a;border-radius:8px;padding:8px 10px;background:#090b0f;color:#9db0bc;font-size:12px}.iface-name{grid-column:1 / -1;color:#d6dde6;font-weight:700}.iface-no-traffic{grid-column:1 / -1;color:#5a6a7a;font-style:italic}.iface-rx{color:#5ba4cf}.iface-tx{color:#e8a838}.iface-speed,.iface-util{color:#7a9aaa}.iface-status{grid-column:1 / -1}.iface-status--up{color:#4caf81}.iface-status--down{color:#e05252}.iface-status--unknown{color:#6e8898}.traffic-filter-toggle{display:flex;flex-direction:row!important;align-items:center;gap:8px;font-size:12px;color:#8fa8b8;cursor:pointer;padding:4px 0}.traffic-filter-toggle input[type=checkbox]{width:15px;height:15px;min-height:unset;cursor:pointer;flex-shrink:0}.iface-select-group{display:flex;flex-direction:column;gap:5px;min-width:0}.iface-select-label{font-size:11px;font-weight:600;color:#5a7a8a;text-transform:uppercase;letter-spacing:.04em}.iface-search-box{display:flex;align-items:center;gap:7px;border:1px solid #202833;border-radius:6px;background:#0a0d12;padding:0 8px;transition:border-color .15s}.iface-search-box:focus-within{border-color:#2a4a6a}.iface-search-box svg{color:#4a6a7a;flex-shrink:0}.iface-search-box input{flex:1;border:none!important;background:transparent!important;padding:7px 0!important;min-height:unset!important;font-size:12px;color:#c8d8e4}.iface-search-box input:focus{outline:none;box-shadow:none}.iface-search-clear{display:flex;align-items:center;justify-content:center;background:none;border:none;padding:2px;color:#4a6a7a;cursor:pointer;border-radius:3px;min-height:unset!important;height:auto!important}.iface-search-clear:hover{color:#8fa8b8;background:#1a2a3a}.status-values-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.status-values-grid label span{display:flex;align-items:center;gap:7px}.status-indicator{width:9px;height:9px;border-radius:50%}.status-indicator.online{background:#39d98a}.status-indicator.offline{background:#ff5c68}.element-checkbox small{color:#7f94a1;font-weight:400}.element-footer{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;padding-top:4px}.element-footer button{min-height:40px;display:inline-flex;align-items:center;justify-content:center;gap:7px;border-radius:8px;padding:10px 8px;color:#f2f6f8;cursor:pointer}.element-delete-button,.element-dark-button{border:1px solid #273244;background:#111318}.element-cancel-button{border:1px solid #273244;background:#1a1e25}.element-save-button{border:1px solid #256fa8;background:#1668b7}.viewer-page{display:flex;flex-direction:column;gap:20px}.viewer-empty{color:#64748b;font-size:.9rem}.viewer-map-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px}.viewer-map-card{display:flex;flex-direction:column;align-items:center;gap:10px;padding:28px 16px 20px;background:#090b0f;border:1px solid #202833;border-radius:10px;color:#94a3b8;cursor:pointer;transition:border-color .15s,background .15s;text-align:center}.viewer-map-card:hover{background:#0f1623;border-color:#2e3d52;color:#e7eef2}.viewer-map-card strong{font-size:.95rem;color:#e7eef2;font-weight:600}.viewer-map-card span{font-size:.78rem;color:#64748b}.viewer-live{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;background:#050607;overflow:hidden}.viewer-fullscreen{border-radius:0;border:none}.viewer-bar{display:flex;align-items:center;gap:10px;padding:8px 12px;background:#090b0f;border-bottom:1px solid #202833;flex-shrink:0;z-index:10}.viewer-bar-title{display:flex;align-items:center;gap:7px;font-size:.88rem;font-weight:600;color:#e7eef2;flex:1}.viewer-countdown{font-size:.78rem;color:#64748b;font-variant-numeric:tabular-nums;background:#0d1117;border:1px solid #202833;border-radius:5px;padding:3px 9px}.viewer-bar-btn{display:flex;align-items:center;justify-content:center;padding:5px;background:transparent;border:1px solid #202833;border-radius:6px;color:#94a3b8;cursor:pointer;transition:background .15s,color .15s}.viewer-bar-btn:hover{background:#1a2232;color:#e7eef2}.viewer-exit:hover{background:#2a1a1a;color:#ef4444;border-color:#3f1a1a}.viewer-canvas-wrap{flex:1;overflow:hidden;min-height:0}.form-grid{display:grid;gap:14px}.form-grid label{display:grid;gap:6px;color:#c9d4d9;font-weight:700}.form-grid input,.form-grid select{width:100%;color:#e7eef2;font-weight:400}.action-row{display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end}.secondary-button,.danger-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid #273244;border-radius:8px;padding:10px 12px;background:#0c0f14;color:#e7eef2;cursor:pointer}.icon-action-button{display:inline-flex;width:38px;height:38px;align-items:center;justify-content:center;border:1px solid #273244;border-radius:8px;background:#0c0f14;color:#e7eef2;cursor:pointer}.icon-action-button.danger{border-color:#273244;background:#0c0f14;color:#e7eef2}.secondary-button:disabled,.danger-button:disabled,.icon-action-button:disabled{cursor:not-allowed;opacity:.6}.admin-layout{display:grid;grid-template-columns:minmax(280px,400px) 1fr;gap:16px;align-items:start}.check-row{display:flex!important;grid-template-columns:none;align-items:center;gap:8px;font-weight:600!important}.check-row input{width:auto}.user-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto auto;align-items:center;gap:10px;padding:12px;border:1px solid #202833;border-radius:8px;background:#090b0f}.permission-layout{display:grid;grid-template-columns:minmax(240px,320px) minmax(0,1fr);gap:16px;align-items:start}.permission-users-panel,.permission-audit-panel,.permission-editor-panel{min-width:0}.permission-editor-panel{grid-row:span 2}.permission-user-list,.permission-audit-list{display:grid;gap:10px}.permission-user-button{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;width:100%;border:1px solid #202833;border-radius:8px;padding:12px;background:#090b0f;color:#e7eef2;text-align:left;cursor:pointer}.permission-user-button.active{border-color:#3b82f6;background:#0d1420}.permission-user-button strong,.permission-user-button small{display:block}.permission-user-button small,.permission-editor-header p,.permission-map-cell small,.permission-audit-row span,.permission-audit-row small{color:#8ea3b0}.permission-user-button em{font-style:normal;color:#9fb3c8;font-size:12px}.permission-editor-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:14px}.permission-editor-header h2,.permission-editor-header p{margin:0}.permission-summary,.permission-bulk-row,.permission-save-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.permission-bulk-row{margin-bottom:14px}.danger-text{color:#f87171}.permission-table{display:grid;border:1px solid #202833;border-radius:8px;overflow:hidden}.permission-table-row{display:grid;grid-template-columns:minmax(180px,1fr) repeat(2,minmax(112px,130px)) minmax(170px,220px);align-items:center;gap:10px;padding:11px 12px;border-bottom:1px solid #202833;background:#090b0f}.permission-section-title{margin:18px 0 10px;color:#e7eef2;font-size:15px}.permission-table-row:last-child{border-bottom:0}.permission-table-head{background:#10151d;color:#9fb3c8;font-size:12px;font-weight:700;text-transform:uppercase}.permission-map-cell strong,.permission-map-cell small{display:block}.permission-check{display:inline-flex;align-items:center;gap:8px;color:#c9d4d9;font-weight:600}.permission-check input{width:16px;height:16px}.permission-check span{font-size:13px}.permission-state-cell{display:flex;flex-wrap:wrap;gap:6px}.permission-pill{display:inline-flex;align-items:center;min-height:24px;border-radius:999px;padding:3px 8px;background:#102033;color:#b9d7ff;font-size:12px;font-weight:700}.permission-pill.muted{background:#151922;color:#7d8b96}.permission-save-row{justify-content:flex-end;margin-top:14px}.permission-audit-row{display:grid;gap:3px;padding:11px 12px;border:1px solid #202833;border-radius:8px;background:#090b0f}.dashboard-action-panel{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px}.dashboard-action-panel h2,.dashboard-action-panel p{margin:0}.dashboard-action-panel p{margin-top:4px;color:#91a1a9}.branding-sections{display:grid;gap:28px}.branding-block{display:grid;gap:14px}.branding-block-header{display:flex;align-items:flex-start;gap:10px;color:#7fa8c0;padding-bottom:12px;border-bottom:1px solid #1a2230}.branding-block-header strong{display:block;color:#c9d4d9;font-size:15px}.branding-block-header span{display:block;color:#6f7b86;font-size:13px;margin-top:2px}.branding-layout{display:grid;grid-template-columns:minmax(280px,400px) minmax(0,1fr);gap:16px;align-items:stretch}.branding-layout--nav{grid-template-columns:minmax(280px,400px) auto;align-items:start}.branding-form{display:grid;gap:14px;align-content:start}.branding-form label{display:grid;gap:7px;color:#c9d4d9;font-size:13px;font-weight:600}.branding-form input[type=range]{width:100%}.branding-form input[type=number]{width:100%;min-height:40px;border:1px solid #273244;border-radius:8px;padding:0 10px;background:#0b0d10;color:#e7eef2;font-size:13px}.branding-upload-zone{border:1px dashed #2e4a6a;border-radius:10px;padding:16px;cursor:pointer;transition:border-color .15s,background .15s;background:#090c11;display:grid;place-items:center;min-height:110px}.branding-upload-zone:hover{border-color:#3b82f6;background:#0c1018}.branding-upload-placeholder{display:grid;place-items:center;gap:6px;color:#4a6280;text-align:center}.branding-upload-placeholder span{font-size:13px;color:#7fa8c0}.branding-upload-placeholder small{font-size:11px;color:#4a6280}.branding-upload-thumb{max-width:100%;max-height:80px;object-fit:contain;border-radius:6px}.range-row{display:flex;align-items:center;gap:10px}.range-row input[type=range]{flex:1}.range-value{font-size:12px;color:#7fa8c0;min-width:38px;text-align:right}.color-label-text{display:block;margin-bottom:4px}.color-input-wrap{display:flex;align-items:center;gap:8px;border:1px solid #273244;border-radius:8px;padding:4px 10px;background:#0b0d10}.color-input-wrap input[type=color]{width:28px;height:28px;border:none;background:none;padding:0;cursor:pointer;border-radius:4px}.color-hex{font-size:12px;color:#91a1a9;font-family:monospace}.branding-preview-wrap{display:grid;gap:12px;align-content:start;border:1px solid #202833;border-radius:8px;background:#0c0f14;padding:18px}.preview-label{margin:0;font-size:11px;font-weight:700;color:#4a6280;text-transform:uppercase;letter-spacing:.08em}.login-preview-screen{display:grid;place-items:center;min-height:420px;border:1px solid #1a2230;border-radius:8px;background:#070a0e;padding:18px}.login-panel.preview{pointer-events:none}.nav-logo-preview{border:1px solid #1a2230;border-radius:8px;background:#070a0e;padding:16px;min-width:200px}.nav-logo-preview-sidebar{background:#0c0f14;border-radius:8px;padding:14px 16px;display:flex;align-items:center}.nav-logo-preview-default{display:flex;align-items:center;gap:8px;color:#e7eef2;font-size:14px;font-weight:600}.nav-logo-img{display:block;max-width:100%;object-fit:contain}.favicon-thumb{width:64px;height:64px;object-fit:contain;image-rendering:pixelated}.favicon-preview{border:1px solid #1a2230;border-radius:8px;background:#070a0e;padding:16px}.favicon-preview-tab{display:inline-flex;align-items:center;gap:6px;background:#1a2230;border:1px solid #2e3f52;border-bottom:none;border-radius:6px 6px 0 0;padding:6px 12px;font-size:13px;color:#c9d4d9;max-width:160px;overflow:hidden;white-space:nowrap}.favicon-preview-tab img{display:block;flex-shrink:0;object-fit:contain;image-rendering:pixelated}.server-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;padding:12px;border:1px solid #202833;border-radius:8px;background:#090b0f}.map-list{display:grid;gap:10px}.map-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;padding:12px;border:1px solid #202833;border-radius:8px;background:#090b0f}.map-row-clickable{cursor:pointer;transition:border-color .15s,background .15s}.map-row-clickable:hover{border-color:#2e4a6a;background:#0c1018}.map-row-clickable:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.map-row strong,.map-row span,.map-row small{display:block}.empty-create-button{width:100%;min-height:180px;display:grid;place-items:center;border:1px dashed #273244;border-radius:8px;background:#090b0f;color:#91a1a9;cursor:pointer}.server-row strong,.server-row span,.server-row small{display:block}.items-inspection{display:grid;gap:12px;margin-top:16px;border-top:1px solid #202833;padding-top:14px}.inspection-host-list{display:grid;gap:8px}.inspection-host{border:1px solid #202833;border-radius:8px;background:#090b0f}.inspection-host summary{display:flex;justify-content:space-between;gap:10px;padding:10px 12px;cursor:pointer}.inspection-host summary span{color:#8d99a6;font-size:12px}.inspection-items{display:grid;gap:6px;padding:0 10px 10px}.inspection-item{display:grid;gap:3px;border:1px solid #202a3a;border-radius:6px;padding:8px;background:#0c0f14}.inspection-item code{color:#cbd5e1;overflow-wrap:anywhere}.inspection-item small{color:#8d99a6}.map-row span,.map-row small,.server-row span,.server-row small{color:#91a1a9;overflow-wrap:anywhere}.row-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.user-row strong,.user-row span{display:block}.role-pill,.state-pill{border-radius:999px;padding:4px 8px;background:#151922;color:#cbd6db;font-size:12px;text-transform:capitalize}.state-pill.active{background:#20242c;color:#d6dde6}.device-node{--node-icon-size: 56px;width:max-content;min-width:calc(var(--node-icon-size) * 1.35);display:grid;justify-items:center;gap:calc(var(--node-icon-size) * .15);border:0;background:transparent;box-shadow:none;overflow:visible}.device-node.no-background{background:transparent;box-shadow:none}.device-node.label-above .topology-icon-wrap{order:2}.device-node.label-above .topology-label{order:1}.device-node.up{color:#1d9a64}.device-node.down{color:#cf3d3d}.device-node.maintenance{color:#c28720}.topology-icon-wrap{position:relative;width:calc(var(--node-icon-size) * 1.35);height:var(--node-icon-size);display:grid;place-items:center;border:0;background:transparent;color:#2b78b8;box-shadow:none}.topology-icon-wrap svg{width:100%;height:100%;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;fill:none;filter:none}.topology-icon-wrap .diagram-glyph .glyph-body{fill:currentColor;stroke:#dcebfadb;stroke-width:1.2}.topology-icon-wrap .diagram-glyph .glyph-body-stroke{fill:none;stroke:currentColor;stroke-width:4}.topology-icon-wrap .diagram-glyph .glyph-mark{fill:none;stroke:#f8fbff;stroke-width:2.4}.topology-icon-wrap .diagram-glyph .glyph-dot{fill:#f8fbff;stroke:none}.topology-icon-wrap .switch-glyph{width:calc(var(--node-icon-size) * 1.65)}.topology-icon-wrap.icon-router{color:#2479bd}.topology-icon-wrap.icon-switch,.topology-icon-wrap.icon-network{color:#2a74a6}.topology-icon-wrap.icon-firewall{color:#b45555}.topology-icon-wrap.icon-radio{color:#596fba}.topology-icon-wrap.icon-server{color:#64748b}.topology-icon-wrap.icon-lte{color:#0ea5e9}.custom-icon-img{width:100%;height:100%;object-fit:contain}.topology-status{position:absolute;right:-3px;bottom:-3px;width:13px;height:13px;border:2px solid #050607;border-radius:50%;background:#8a969c}.topology-status.up{background:#30d17d}.topology-status.down{background:#ef4f5f}.topology-status.maintenance{background:#c28720}.topology-label{max-width:180px;display:grid;justify-items:center;gap:2px;color:#e7eef2;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.8)}.topology-label strong,.topology-label span{max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topology-label strong{font-size:inherit}.font-size-control{display:grid;grid-template-columns:36px 1fr 36px;gap:4px}.font-size-btn{height:42px;display:grid;place-items:center;border:1px solid #202a3a;border-radius:8px;background:#111318;color:#d6dde6;font-size:18px;line-height:1;cursor:pointer;padding:0}.font-size-btn:hover{border-color:#4b5563;background:#1a1e25}.topology-label span{color:#91a1a9;font-size:.9em}.node-ip{color:#64a0c8;font-size:.85em;font-family:monospace;letter-spacing:.02em}.error{margin:0;color:#ff8b8b;font-size:13px}.react-flow{background:#050607;color:#e7eef2}.device-node .react-flow__handle{opacity:0;pointer-events:none;width:1px;height:1px;min-width:1px;min-height:1px;border:none;background:transparent}.react-flow__controls-button,.react-flow__minimap{background:#0c0f14;border-color:#273244;color:#e7eef2}.react-flow__controls-button svg{fill:#e7eef2}.react-flow__edge-text{fill:#d7e2e7;font-size:12px;font-weight:700}.react-flow__edge-textbg{fill:#050607;fill-opacity:.9}.link-edge-iflabel{display:inline-flex;flex-direction:column;align-items:center;gap:1px;width:max-content;white-space:nowrap;background:#0c0f14d9;border:1px solid #1e2a3a;border-radius:4px;padding:2px 6px;font-size:10px;line-height:1.3}.iflabel-name{color:#c9d7e0;font-weight:600;max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.iflabel-dir{color:#586878;font-weight:400;font-size:9px;text-transform:uppercase;letter-spacing:.04em}.link-edge-iflabel.port-up{border-color:#10b981}.link-edge-iflabel.port-up .iflabel-name{color:#6ee7b7}.link-edge-iflabel.port-down{border-color:#ef4444}.link-edge-iflabel.port-down .iflabel-name{color:#fca5a5}@media(max-width:820px){.app-shell{grid-template-columns:1fr;grid-template-rows:auto 1fr}.sidebar{border-right:0;border-bottom:1px solid #202833}.side-nav{grid-template-columns:repeat(2,minmax(0,1fr))}.workbench,.admin-layout,.permission-layout,.branding-layout,.summary-grid{grid-template-columns:1fr}.dashboard-action-panel{align-items:stretch;flex-direction:column}.workbench{grid-template-rows:300px 1fr}.editor-side-toolbar{top:10px;right:10px}.workbench-panel{border-right:0;border-bottom:1px solid #202833}.event-row,.user-row,.map-row,.permission-table-row,.server-row{grid-template-columns:1fr}.row-actions{justify-content:flex-start}.element-editor-panel,.host-picker-panel{inset:auto 10px 10px 10px;width:auto;max-height:min(78vh,720px)}.element-footer{grid-template-columns:repeat(2,minmax(0,1fr))}.status-item-header,.status-values-grid,.two-col-fields{grid-template-columns:1fr}}.icons-panel{display:grid;gap:18px}.admin-header{display:flex;align-items:center;gap:10px;grid-column:1 / -1;padding-bottom:4px;border-bottom:1px solid #202833;margin-bottom:4px}.admin-header h2{margin:0;font-size:1rem;font-weight:600;color:#e7eef2}.admin-status{font-size:.82rem;color:#60a5fa;margin:0}.admin-empty{color:#64748b;font-size:.85rem;margin:0}.icon-upload-form{display:flex;flex-direction:column;gap:10px;padding:16px;background:#0b0e14;border:1px solid #1e2a3a;border-radius:10px}.icon-upload-form-row{display:flex;align-items:center;gap:10px}.icon-upload-name-wrap{position:relative;flex:1;min-width:0}.icon-upload-name-wrap svg{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:#4a5a72;pointer-events:none}.icon-upload-form input[type=text]{width:100%;box-sizing:border-box;min-height:42px;padding:10px 12px 10px 34px;background:#070a0f;border:1px solid #253347;border-radius:8px;color:#e7eef2;font-size:.875rem;transition:border-color .15s,box-shadow .15s}.icon-upload-form input[type=text]::placeholder{color:#3d4f63}.icon-upload-form input[type=text]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f626}.icon-upload-form input[type=text]:disabled{opacity:.5}.icon-upload-form small{color:#3d4f63;font-size:.76rem}.icon-upload-btn{display:flex;align-items:center;gap:6px;padding:10px 16px;min-height:42px;background:#1a3458;border:1px solid #2a4d7a;border-radius:8px;color:#93c5fd;font-size:.875rem;cursor:pointer;white-space:nowrap;transition:background .15s,border-color .15s;flex-shrink:0}.icon-upload-btn:hover{background:#1f3f6a;border-color:#3b82f6;color:#bfdbfe}.icon-upload-btn.disabled{opacity:.45;cursor:not-allowed}.icon-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:14px}.icon-card{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:20px 12px 14px;min-height:140px;background:#090b0f;border:1px solid #202833;border-radius:8px;text-align:center;transition:border-color .15s,background .15s}.icon-card:hover{border-color:#2e3d52;background:#0c1018}.icon-card img{width:64px;height:64px;object-fit:contain}.icon-card span{font-size:.78rem;color:#94a3b8;word-break:break-word;line-height:1.3;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.icon-card-remove{position:absolute;top:6px;right:6px;padding:4px;background:transparent;border:none;color:#64748b;cursor:pointer;border-radius:4px;display:flex;align-items:center}.icon-card-remove:hover{background:#1e293b;color:#ef4444}.custom-icon-preview{display:flex;align-items:center;justify-content:center;width:56px;height:56px;background:#0d1117;border:1px solid #202833;border-radius:6px}.custom-icon-preview img{max-width:48px;max-height:48px;object-fit:contain}.edge-tooltip{background:#0c0f14;border:1px solid #273244;border-radius:6px;padding:5px 8px;min-width:0;box-shadow:0 4px 16px #0009;font-size:11px;line-height:1.35;color:#aebdcc;white-space:nowrap}.edge-tooltip-title{color:#dbe7ed;font-weight:800;font-size:11px;letter-spacing:.04em;margin-bottom:2px}.edge-tooltip-row{display:grid;grid-template-columns:auto auto;column-gap:8px;align-items:center}.edge-tooltip-label{color:#6e8898;font-weight:600}.edge-tooltip-value{color:#dbe7ed;font-weight:600;text-align:right}.edge-tooltip-tx{color:#e8a838}.edge-tooltip-rx{color:#5ba4cf}.edge-tooltip-up{color:#4caf81}.edge-tooltip-down{color:#ef4444;font-weight:800}.edge-tooltip-divider{border-top:1px solid #1e2c3a;margin:3px 0}
