.cards{display:flex;flex-wrap:wrap;gap:20px;margin-top:20px}.card{border-radius:10px;box-shadow:0 4px 10px #00000026;color:#fff;font-weight:700;padding:20px;width:240px}.blue{background:linear-gradient(135deg,#2563eb,#3b82f6)}.green{background:linear-gradient(135deg,#10b981,#34d399)}.red{background:linear-gradient(135deg,#ef4444,#f87171)}.purple{background:linear-gradient(135deg,#8b5cf6,#a78bfa)}.orange{background:linear-gradient(135deg,#f59e0b,#fb923c)}.alerts{background:#fff;border-radius:10px;box-shadow:0 4px 10px #0000001a;margin-top:40px;padding:20px}.alert{border-bottom:1px solid #eee;padding:10px}.react-flow{direction:ltr}.react-flow__container{height:100%;left:0;position:absolute;top:0;width:100%}.react-flow__pane{cursor:grab;z-index:1}.react-flow__pane.selection{cursor:pointer}.react-flow__pane.dragging{cursor:grabbing}.react-flow__viewport{pointer-events:none;transform-origin:0 0;z-index:2}.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 .react-flow__edges{overflow:visible;pointer-events:none}.react-flow__connection-path,.react-flow__edge-path{stroke:#b1b1b7;stroke-width:1;fill:none}.react-flow__edge{cursor:pointer;pointer-events:visibleStroke}.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:focus .react-flow__edge-path,.react-flow__edge:focus-visible .react-flow__edge-path{stroke:#555}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge-textbg{fill:#fff}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;user-select:none}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__connectionline{z-index:1001}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{box-sizing:border-box;cursor:grab;pointer-events:all;position:absolute;transform-origin:0 0;-webkit-user-select:none;user-select:none}.react-flow__node.dragging{cursor:grabbing}.react-flow__nodesselection{pointer-events:none;transform-origin:left top;z-index:3}.react-flow__nodesselection-rect{cursor:grab;pointer-events:all;position:absolute}.react-flow__handle{background:#1a192b;border:1px solid #fff;border-radius:100%;height:6px;min-height:5px;min-width:5px;pointer-events:none;position:absolute;width:6px}.react-flow__handle.connectionindicator{cursor:crosshair;pointer-events:all}.react-flow__handle-bottom{bottom:-4px;left:50%;top:auto;transform:translate(-50%)}.react-flow__handle-top{left:50%;top:-4px;transform:translate(-50%)}.react-flow__handle-left{left:-4px;top:50%;transform:translateY(-50%)}.react-flow__handle-right{right:-4px;top:50%;transform:translateY(-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__panel{margin:15px;position:absolute;z-index:5}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.center{left:50%;transform:translateX(-50%)}.react-flow__attribution{background:#ffffff80;font-size:10px;margin:0;padding:2px 3px}.react-flow__attribution a{color:#999;text-decoration:none}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{height:100%;pointer-events:none;position:absolute;-webkit-user-select:none;user-select:none;width:100%}.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-default,.react-flow__node-group,.react-flow__node-input,.react-flow__node-output{background-color:#fff;border:1px solid #1a192b;border-radius:3px;color:#222;font-size:12px;padding:10px;text-align:center;width:150px}.react-flow__node-default.selectable:hover,.react-flow__node-group.selectable:hover,.react-flow__node-input.selectable:hover,.react-flow__node-output.selectable:hover{box-shadow:0 1px 4px 1px #00000014}.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible,.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible{box-shadow:0 0 0 .5px #1a192b}.react-flow__node-group{background-color:#f0f0f040}.react-flow__nodesselection-rect,.react-flow__selection{background:#0059dc14;border:1px dotted #0059dccc}.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{box-shadow:0 0 2px 1px #00000014}.react-flow__controls-button{align-items:center;background:#fefefe;border:none;border-bottom:1px solid #eee;box-sizing:initial;cursor:pointer;display:flex;height:16px;justify-content:center;padding:5px;-webkit-user-select:none;user-select:none;width:16px}.react-flow__controls-button:hover{background:#f4f4f4}.react-flow__controls-button svg{max-height:12px;max-width:12px;width:100%}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__minimap{background-color:#fff}.react-flow__minimap svg{display:block}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.bottom,.react-flow__resize-control.top{cursor:ns-resize}.react-flow__resize-control.bottom.right,.react-flow__resize-control.top.left{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{background-color:#3367d9;border:1px solid #fff;border-radius:1px;height:4px;transform:translate(-50%,-50%);width:4px}.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.bottom.left,.react-flow__resize-control.handle.top.left{left:0}.react-flow__resize-control.handle.bottom.right,.react-flow__resize-control.handle.top.right{left:100%}.react-flow__resize-control.line{border:0 solid #3367d9}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{height:100%;top:0;transform:translate(-50%);width:1px}.react-flow__resize-control.line.left{border-left-width:1px;left:0}.react-flow__resize-control.line.right{border-right-width:1px;left:100%}.react-flow__resize-control.line.bottom,.react-flow__resize-control.line.top{height:1px;left:0;transform:translateY(-50%);width:100%}.react-flow__resize-control.line.top{border-top-width:1px;top:0}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.topology-container{height:calc(100vh - 310px);position:relative;width:100%}.topology-empty,.topology-loading{align-items:center;display:flex;height:calc(100vh - 310px);justify-content:center}.topology-legend{background:#fffffff2;border:1px solid #d9d9d9;border-radius:8px;box-shadow:0 2px 8px #00000014;font-size:11px;padding:10px 14px}.topology-legend-title{color:#262626;font-size:12px;font-weight:600;margin-bottom:6px}.topology-legend-items{display:flex;flex-direction:column;gap:4px}.legend-item{align-items:center;color:#595959;display:flex;gap:6px}.legend-box{background:#ffffff80;border-radius:3px;display:inline-block;height:12px;width:16px}.legend-line{border-radius:2px;display:inline-block;height:3px;width:20px}.topology-stats{background:#fffffff2;border:1px solid #d9d9d9;border-radius:8px;box-shadow:0 2px 8px #00000014;min-width:150px;padding:10px 14px}.stat-row{align-items:center;display:flex;justify-content:space-between;padding:3px 0}.stat-label{color:#8c8c8c;font-size:11px}.stat-value{color:#262626;font-size:13px;font-weight:600}.topo-resource-node{background:#fff;border:2px solid #52c41a;border-radius:10px;cursor:pointer;max-width:150px;min-width:130px;padding:10px 8px 6px;position:relative;text-align:center;transition:all .2s ease}.topo-resource-node:hover{box-shadow:0 6px 16px #0000001f!important;transform:translateY(-2px)}.topo-node-content{align-items:center;display:flex;flex-direction:column;gap:3px}.topo-icon{font-size:28px;line-height:1}.topo-label{color:#262626;font-size:11px;font-weight:600;line-height:1.2;max-width:120px;word-break:break-word}.topo-category{background:#e6f7ff;border-radius:3px;color:#1890ff;font-size:9px;padding:1px 6px}.topo-cost{color:#1890ff;font-size:10px;font-weight:600}.topo-score-badge{background:#52c41a;font-size:9px;right:-8px}.topo-network-badge,.topo-score-badge{border-radius:10px;box-shadow:0 1px 4px #0003;color:#fff;font-weight:700;line-height:1;padding:2px 5px;position:absolute;top:-8px;z-index:10}.topo-network-badge{font-size:8px;left:-8px}.topo-security-row{border-top:1px solid #f0f0f0;display:flex;gap:2px;justify-content:center;margin-top:4px;padding-top:4px}.sec-dot{filter:grayscale(.3);font-size:10px;opacity:.7}.sec-dot.green{filter:none;opacity:1}.sec-dot.red{filter:hue-rotate(180deg);opacity:1}.sec-dot.orange{opacity:.6}.compliance-fail-item{background:#fff2f0;border:1px solid #ffccc7;border-left:3px solid #ff4d4f;border-radius:6px;margin-bottom:6px;padding:8px 10px}.react-flow__node-group{color:#595959;font-size:11px;font-weight:600}.react-flow__node-group>div{padding:4px 8px}.row-fail{background:#fff2f0!important}.row-fail:hover>td{background:#ffece8!important}.row-warn{background:#fffbe6!important}.row-warn:hover>td{background:#fff7cc!important}.compliance-row-fail{background:#fff2f0!important}.compliance-row-fail:hover>td{background:#ffece8!important}.ant-collapse-ghost>.ant-collapse-item>.ant-collapse-header{padding:8px 12px!important}.ant-statistic-title{font-size:11px!important}.ant-progress-text{font-size:12px!important}.ant-table-cell .ant-tag{margin-right:0}.ant-collapse-ghost .ant-collapse-content-box{padding:0 8px 8px!important}.ant-table-small .ant-table-tbody>tr>td{padding:4px 8px!important}
/*# sourceMappingURL=main.938f7365.css.map*/