.ws-context-switch{display:flex;gap:4px;margin:0 0 22px;border-bottom:1px solid #dce4ef}.ws-context-switch button{padding:12px 17px;font-size:13px;color:#52677d;border-bottom:2px solid transparent;margin-bottom:-1px}.ws-context-switch button[aria-pressed=true]{border-color:#245a92;color:#143a66;font-weight:600}.infra-shell{overflow:hidden}.infra-toolbar{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;border-bottom:1px solid #dfe6ef;gap:14px}.infra-toolbar>div:first-child{display:flex;align-items:center;gap:16px}.infra-toolbar h2{margin:0;font-size:15px}.infra-topology-label{color:#5f7189;font-size:11px;border-left:1px solid #d8e1ed;padding-left:16px}.infra-map-controls{display:flex;align-items:center;border:1px solid #dae3ed;border-radius:5px;overflow:hidden;background:#fff}.infra-map-controls button{font-size:16px;width:32px;height:30px;color:#3f5d82}.infra-map-controls button:hover{background:#f0f5fb}.infra-map-controls button[data-infra=fit]{font-size:11px;border-left:1px solid #e2e8ef;width:39px}.infra-map-controls output{font-size:10px;color:#64758c;min-width:35px;text-align:center}.infra-body{display:grid;grid-template-columns:minmax(0,1fr) 285px}.infra-map-column{min-width:0;background:#f9fbfe}.infra-viewport{width:100%;max-height:700px;overflow:auto;overscroll-behavior:contain;background-image:radial-gradient(#d6dfeb .75px,transparent .75px);background-size:16px 16px}.infra-viewport:focus-visible{outline:2px solid #4d80bb;outline-offset:-3px}.infra-frame{position:relative;margin:auto}.infra-canvas{position:absolute;top:14px;left:14px;width:864px;height:626px;transform-origin:top left}.infra-wires{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.infra-edge{fill:none;stroke:#758fae;stroke-width:1.7;transition:opacity .15s,stroke .15s}.infra-edge.policy{stroke:#967fae;stroke-dasharray:5 4}.infra-edge.planned{stroke:#a28b5e;stroke-dasharray:2 5}.infra-edge.active{stroke:#497aa9;stroke-width:2.3}.infra-edge.active.policy{stroke:#82669d}.infra-edge.active.planned{stroke:#a48643}.infra-lane{position:absolute;top:35px;text-transform:uppercase;letter-spacing:1px;color:#52677e;font-size:10px;font-weight:600;border-bottom:1px solid #dfe7f0;padding-bottom:15px}.infra-lane span{margin-right:7px;color:#607b9c;font-weight:400}.infra-node{position:absolute;display:flex;flex-direction:column;align-items:stretch;text-align:left;border:1px solid #d6e1ed;border-radius:9px;background:#fff;padding:15px 16px;box-shadow:0 3px 8px #143b6310;color:#264566;transition:box-shadow .15s,border-color .15s,opacity .15s}.infra-node:hover{border-color:#7398c0;box-shadow:0 4px 15px #143b631b}.infra-node[aria-pressed=true]{border:1.5px solid #386da7;box-shadow:0 0 0 3px #dce9f8}.infra-node.proposed{border-style:dashed;background:#fffefa}.infra-node-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:9px}.infra-symbol{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:6px;background:#edf3fa;color:#3b6898;flex-shrink:0}.infra-symbol.policies{background:#f2eef8;color:#80639b}.infra-symbol.portal{background:#faf3e6;color:#927539}.infra-symbol.documents,.infra-symbol.database{background:#eaf5f1;color:#337863}.infra-symbol svg,.infra-detail-icon svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.45;stroke-linecap:round;stroke-linejoin:round}.infra-node-arrow{color:#71849a;font-size:14px}.infra-node>strong{font-size:13px;line-height:1.4;color:#173d66;font-weight:600}.infra-node-sub{font-size:10px;line-height:1.6;margin-top:3px;color:#5c7089}.infra-node-foot{display:flex;justify-content:space-between;align-items:center;font-size:10px;color:#5c718a;margin-top:auto;padding-top:9px}.infra-state{display:inline-flex;align-items:center;gap:6px;font-size:10px;color:#526780;line-height:1.3}.infra-state i{height:5px;width:5px;border-radius:50%;background:#8696ab}.infra-state.running{color:#286b54}.infra-state.running i{background:#328267}.infra-state.pending,.infra-state.approved{color:#806329}.infra-state.pending i,.infra-state.approved i{background:#b28b39}.infra-state.changes_requested{color:#8c5140}.infra-state.changes_requested i{background:#ad6956}.infra-database{position:absolute;border:1px solid #c5dbd3;border-radius:9px;overflow:hidden;background:white;box-shadow:0 3px 8px #143b6310}.infra-database.active{border-color:#4e8b77;box-shadow:0 0 0 3px #e1f0eb}.infra-db-head{display:flex;align-items:center;gap:10px;padding:14px;text-align:left;width:100%;border-bottom:1px solid #e0eae6;background:#f6fbf9;color:#204a41}.infra-db-head>span:nth-child(2){flex:1}.infra-db-head strong{display:block;font-size:12px}.infra-db-head small{display:block;font-size:10px;margin-top:4px;color:#5a746a}.infra-table-list{padding:7px 0}.infra-table-list button{display:flex;align-items:center;gap:7px;width:100%;padding:9px 12px;text-align:left;color:#3a5b55}.infra-table-list button:hover{background:#eef7f3}.infra-table-list code{font:10px ui-monospace,SFMono-Regular,monospace;flex:1}.infra-table-list button>span:last-child{font-size:10px;color:#56736a;background:#eff6f2;padding:1px 5px;border-radius:3px}.infra-table-glyph{font-size:12px;color:#678c7f}.infra-node.infra-dim{background:#fcfdff;border-color:#e1e7ef;box-shadow:none}.infra-edge.infra-dim{stroke-width:1.3}.infra-node.infra-dim:hover,.infra-db-head.infra-dim:hover{opacity:1}.infra-legend{display:flex;justify-content:center;flex-wrap:wrap;gap:21px;padding:5px 16px 23px;font-size:10px;color:#5b7089}.infra-legend span{display:flex;align-items:center;gap:7px}.infra-legend i{display:inline-block;width:22px;border-top:2px solid #91a8c1}.infra-legend i.policy{border-top:2px dashed #9682ad}.infra-legend i.planned{border-top:2px dotted #b19a65}.infra-foundation{border-top:1px solid #e0e7ef;background:#f2f6fb;padding:18px 20px}.infra-foundation-label{display:block;font-size:9px;letter-spacing:1px;text-transform:uppercase;color:#586e87;margin-bottom:13px}.infra-foundation>div{display:flex;align-items:center;justify-content:space-between;gap:9px}.infra-foundation button{display:flex;align-items:center;gap:10px;text-align:left;padding:8px 5px;border-radius:5px;color:#436484}.infra-foundation button:hover,.infra-foundation button[aria-pressed=true]{background:#e5edf7}.infra-foundation svg{width:21px;height:21px;flex-shrink:0;stroke:currentColor;stroke-width:1.4;fill:none;stroke-linecap:round;stroke-linejoin:round}.infra-foundation strong{display:block;font-size:10px;font-weight:600}.infra-foundation small{display:block;font-size:9px;margin-top:4px;color:#5d728a}.infra-foundation button>span:last-child{font-size:11px}.infra-host-arrow{color:#607f9f;font-size:13px}.infra-inspector{padding:25px 21px;border-left:1px solid #dfe7f0;min-width:0;background:#fff}.infra-detail-icon{display:flex;align-items:center;justify-content:center;width:43px;height:43px;background:#edf4fa;color:#3f6995;border:1px solid #dbe7f1;border-radius:9px;margin-bottom:19px}.infra-detail-icon svg{width:24px;height:24px}.infra-detail-kind{font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:#526b83}.infra-inspector h2{font-size:18px;margin:7px 0 12px;overflow-wrap:anywhere}.infra-inspector h3{font-size:11px;margin:23px 0 10px}.infra-summary{font-size:12px;color:#536b84;line-height:1.8;margin:16px 0 21px}.infra-numbers{display:grid;grid-template-columns:1fr 1fr;border:1px solid #e0e8f0;border-radius:6px;padding:14px 12px;gap:14px}.infra-numbers strong{display:block;font-size:23px;font-weight:400;color:#234e79}.infra-numbers span{display:block;font-size:10px;color:#61778e;margin-top:3px}.infra-detail-list{display:grid}.infra-detail-list button{display:flex;align-items:center;justify-content:space-between;text-align:left;gap:10px;border-bottom:1px solid #edf1f6;padding:12px 0;font-size:11px;color:#355476}.infra-detail-list button:hover{color:#0b4380;background:#f6f9fd}.infra-detail-list small{display:block;font-size:10px;color:#5f758d;margin-top:5px}.infra-detail-list button>span:last-child{font-size:10px;white-space:nowrap}.infra-detail-list code{font-size:10px}.infra-kv{font-size:11px;margin:0 0 21px}.infra-kv>div{display:flex;justify-content:space-between;gap:12px;padding:11px 0;border-bottom:1px solid #edf1f6}.infra-kv dt{color:#526a82}.infra-kv dd{text-align:right;margin:0;color:#304e70;max-width:62%;overflow-wrap:anywhere}.infra-kv code{font-size:10px}.infra-inspector>.btn{font-size:11px}.infra-connections{display:grid;gap:7px}.infra-connections button{display:flex;align-items:flex-start;gap:10px;text-align:left;padding:8px 0}.infra-connections strong{font-size:11px;font-weight:500;color:#3d5b7c}.infra-connections small{display:block;font-size:10px;color:#63798e;margin-top:4px;line-height:1.6}.infra-connection-arrow{color:#4b7ba9;font-size:17px;line-height:1.2}.infra-connection-arrow.policy{color:#8969a3}.infra-connection-arrow.planned{color:#a0844d}.infra-note{font-size:10px;color:#60778d}.infra-node:focus-visible,.infra-db-head:focus-visible,.infra-table-list button:focus-visible{outline:2px solid #376da7;outline-offset:-3px}
@media(max-width:1300px){.infra-body{grid-template-columns:1fr}.infra-inspector{border-left:0;border-top:1px solid #dfe7f0;padding:25px}.infra-inspector .infra-detail-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 24px}.infra-inspector .infra-connections{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.infra-numbers{max-width:360px}.infra-kv{max-width:500px}.infra-detail-icon{float:left;margin:0 15px 10px 0}.infra-summary{clear:both;margin-top:22px}.infra-inspector h2{margin-bottom:16px}.infra-foundation{padding:18px 26px}}
@media(max-width:600px){.infra-toolbar{padding:15px 13px}.infra-toolbar>div:first-child{display:block}.infra-topology-label{display:none}.infra-map-controls button{width:30px}.infra-map-controls output{min-width:30px}.infra-map-controls button[data-infra=fit]{width:32px}.infra-legend{gap:12px;font-size:9px;padding:14px 10px}.infra-legend i{width:16px}.infra-foundation{padding:17px}.infra-foundation>div{display:grid;grid-template-columns:1fr}.infra-host-arrow{display:none}.infra-foundation button{padding:7px 3px}.infra-foundation button>span:last-child{margin-left:auto}.infra-foundation strong{font-size:11px}.infra-foundation small{font-size:10px}.infra-inspector{padding:22px 18px}.infra-inspector .infra-detail-list,.infra-inspector .infra-connections{grid-template-columns:1fr}.infra-viewport{max-height:560px}}
@media(prefers-reduced-motion:reduce){.infra-node,.infra-edge{transition:none}}
