#architecture-stage{--arch-purple:#7152d6;--arch-stroke:#ded9eb;min-width:0}
.arch-topline{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:20px}.arch-kicker{font-size:10px;font-weight:700;letter-spacing:1.5px;color:#7d6a9a}.arch-topline p{margin:6px 0;color:#797480;font-size:12px}.arch-refresh{display:flex;gap:14px;align-items:center}.arch-status{font-size:10px;line-height:1.5;color:#78737f;display:inline-flex;align-items:center;gap:6px}.arch-status:before{content:'';width:6px;height:6px;border-radius:50%;background:currentColor;flex:none}.arch-status.observed,.arch-metric .observed{color:#287363}.arch-status.warning,.arch-metric .warning{color:#a06415}.arch-status.unknown,.arch-metric .unknown{color:#807a86}.arch-alert{padding:13px 16px;background:#fff4de;border:1px solid #eed9b3;border-radius:10px;color:#835916;font-size:12px}
.arch-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:24px}.arch-stats>div{border:1px solid #dddce2;background:#fff;border-radius:15px;padding:19px 20px;min-width:0}.arch-stats small{font-size:9px;letter-spacing:.8px;color:#7d738a;font-weight:700}.arch-stats strong{display:block;font:800 28px/1.6 Manrope,sans-serif;letter-spacing:-.9px;color:#322840}.arch-stats strong em{font-size:17px;font-style:normal;font-weight:600;color:#b2aaba}.arch-stats span{display:block;font-size:10px;color:#807886}.arch-toolbar{display:flex;justify-content:space-between;gap:20px;align-items:center;margin:0 0 16px}.arch-tabs{display:flex;gap:4px}.arch-tabs button{padding:10px 14px;border-color:transparent;background:transparent;color:#7d7288}.arch-tabs button[aria-selected=true]{background:#fff;border-color:#dcd8e4;color:#5d40aa}.arch-search{margin:0;min-width:230px;max-width:350px;flex:1}.arch-search input{width:100%;font-size:12px;background:#f7f7f8;padding:10px 13px}
.arch-map-layout{display:grid;grid-template-columns:minmax(0,1fr) 305px;gap:18px;align-items:start}.arch-map{background:#faf9fc;border:1px solid #dcd9e4;border-radius:17px;overflow:hidden}.arch-map-controls{padding:13px;display:flex;gap:10px;justify-content:space-between;flex-wrap:wrap;border-bottom:1px solid #e7e2ed;background:#fff}.arch-view-buttons,.arch-zoom{display:flex;align-items:center;gap:3px}.arch-view-buttons button{font-size:10px;padding:8px 9px;border:0;background:transparent;color:#7c7289}.arch-view-buttons button[aria-pressed=true]{background:#f0eafc;color:#6243b8}.arch-zoom{margin-left:auto}.arch-zoom button{padding:5px 9px;background:#fff;font-size:10px}.arch-zoom span{min-width:35px;text-align:center;font-size:10px;color:#8d819a}
#arch-viewport{height:490px;overflow:auto;position:relative;touch-action:pan-x pan-y;cursor:grab;background-image:radial-gradient(#d7cfe3 .7px,transparent .7px);background-size:16px 16px}#arch-viewport:active{cursor:grabbing}#arch-graph{width:1500px;height:650px;position:relative;transform-origin:0 0}#arch-graph>svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}.arch-diagram-label{position:absolute;top:25px;left:34px;font-size:11px;color:#7c6b92;letter-spacing:1px;text-transform:uppercase}.arch-diagram-label span{margin-left:25px;color:#aaa1b5;font-size:10px;letter-spacing:0;text-transform:none}.arch-edge{cursor:pointer;outline:none}.arch-edge path{fill:none;stroke:#c4bcd4;stroke-width:1.5}.arch-edge.selected path{stroke:#9b83c8;stroke-width:2}.arch-edge path.arch-edge-hit{stroke:transparent;stroke-width:18}.arch-edge:hover path:not(.arch-edge-hit),.arch-edge:focus path:not(.arch-edge-hit){stroke:#6948b9;stroke-width:3}.arch-node{position:absolute;width:204px;height:91px;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;text-align:left;background:#fff;border:1px solid #ddd6e8;border-radius:12px;padding:12px 16px;box-shadow:0 3px 9px #4f396908;cursor:pointer}.arch-node small{font-size:8px;color:#a296ae;letter-spacing:.7px}.arch-node strong{font-size:12px;color:#493956;margin:5px 0 7px}.arch-node .arch-status{font-size:9px}.arch-node.selected{border:2px solid #8b69ca;background:#fbf9ff;box-shadow:0 0 0 4px #eee7f8}.arch-node.connected:not(.selected){border-color:#bba7d5}.arch-node.dimmed{opacity:.24}.arch-legend{display:flex;gap:18px;flex-wrap:wrap;padding:13px 17px;border-top:1px solid #e6e1ec;background:#fff}
#arch-inspector{border:1px solid #dcd9e4;border-radius:17px;background:#fff;padding:23px;max-height:609px;overflow:auto;position:sticky;top:15px}#arch-inspector h2{font-size:22px;line-height:1.25;letter-spacing:-.6px;margin:12px 0}#arch-inspector h3{font-size:12px;margin:23px 0 8px}#arch-inspector p{font-size:12px;line-height:1.7;color:#776d81}#arch-inspector .arch-caption{font-size:10px;color:#9789a3}.arch-metric{border-bottom:1px solid #eee9f4;padding:13px 0}.arch-metric>div{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:11px}.arch-metric>div>span{font-size:16px;font-weight:700}.arch-metric small{font-size:9px;color:#998ea4}.arch-spark{width:100%;height:38px;margin:7px 0 0;display:block}.arch-spark polyline{fill:none;stroke:#ac91d3;stroke-width:2}.arch-flow-link{width:100%;text-align:left;display:block;border:0;border-bottom:1px solid #eee9f4;border-radius:0;padding:11px 0;font-size:11px;font-weight:500;background:transparent;color:#695380}.arch-flow-link small{display:block;color:#a397af;font-size:9px;margin-top:4px}.arch-arn{display:block;overflow-wrap:anywhere;font-size:9px;line-height:1.7;color:#81728e;margin:10px 0}.arch-live-config{margin-top:20px}.arch-live-config pre{font-size:10px;white-space:pre-wrap;overflow-wrap:anywhere;background:#f7f5fa;padding:10px;border-radius:8px}#arch-inspector details summary{font-size:10px;color:#7a658f;cursor:pointer;margin:14px 0}.arch-baseline-note{font-size:11px;line-height:1.7;background:#f8f5fb;padding:13px;border-radius:9px;color:#8b759b}.arch-findings{display:grid;grid-template-columns:205px minmax(0,1fr);gap:25px;margin-top:28px}.arch-findings h2{font-size:18px;margin:10px 0}.arch-findings p{font-size:12px;color:#8c8396;line-height:1.7}.arch-findings>div:last-child{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.arch-finding{text-align:left;display:flex;flex-direction:column;align-items:flex-start;gap:7px;border:1px solid #ded9e5;background:#fff;border-radius:12px;padding:16px}.arch-finding strong{font-size:12px;color:#614b74}.arch-finding>span:last-child{font-size:11px;font-weight:400;line-height:1.65;color:#8a7d96}.arch-footnote{margin-top:22px;font-size:10px;color:#968ba1;line-height:1.7}
.arch-resource-panel{background:white;padding:28px;border:1px solid #ded9e5;border-radius:17px}.arch-resource-panel h2{font-size:21px;margin:0 0 10px}.arch-resource-panel p{font-size:12px;color:#8c8098;line-height:1.7}.arch-resource-panel h3{font-size:14px}.arch-table-scroll{max-height:630px;overflow:auto;margin-top:24px}.arch-table-scroll table{width:100%;border-collapse:collapse;font-size:11px}.arch-table-scroll th{position:sticky;top:0;background:#f9f7fc;text-align:left;color:#7f6e8e;font-size:10px;padding:13px}.arch-table-scroll td{padding:14px 12px;border-bottom:1px solid #eee9f4;vertical-align:top}.arch-table-scroll code{font-size:10px;overflow-wrap:anywhere;display:block;max-width:650px;color:#776386}.arch-table-scroll small{display:block;color:#a699af;margin-top:5px}.arch-empty{padding:55px 20px;text-align:center;background:#f9f7fc;border-radius:12px;color:#90829d;font-size:12px;margin-top:25px}.arch-change{border-top:1px solid #ece5f3;padding:20px 0}.arch-change>small{font-size:10px;color:#967ba8}#architecture-stage dl{display:grid;grid-template-columns:minmax(110px,1fr) 2fr;gap:15px 25px;font-size:12px;line-height:1.7}#architecture-stage dt{color:#7f6f8d}#architecture-stage dd{margin:0;color:#594765}#arch-inspector dl{display:block}#arch-inspector dd{margin-bottom:10px}.arch-coverage-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.arch-coverage-grid>div{padding:13px;background:#f9f7fc;border-radius:8px}.arch-coverage-grid strong{display:block;font-size:11px;color:#705c80}.arch-coverage-grid span{display:block;font-size:10px;color:#9a89a8;margin-top:7px}
@media(min-width:1600px){#arch-viewport{height:600px}#arch-inspector{max-height:719px}.arch-map-layout{grid-template-columns:minmax(0,1fr) 330px}}
@media(max-width:1200px){.arch-map-layout{grid-template-columns:minmax(0,1fr)}#arch-inspector{position:static;max-height:none;columns:2;column-gap:35px}#arch-inspector>*{break-inside:avoid}.arch-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.arch-findings{grid-template-columns:1fr}.arch-coverage-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.arch-topline,.arch-toolbar{flex-direction:column;align-items:stretch}.arch-search{max-width:none}.arch-stats{gap:9px}.arch-stats>div{padding:13px}.arch-stats strong{font-size:23px}.arch-tabs button{padding:8px 10px;font-size:11px}#arch-inspector{columns:1}.arch-findings>div:last-child{grid-template-columns:1fr}.arch-resource-panel{padding:18px}.arch-coverage-grid{grid-template-columns:1fr}#architecture-stage dl{grid-template-columns:1fr;gap:5px}#architecture-stage dd{margin-bottom:12px}.arch-view-buttons{flex-wrap:wrap}#arch-viewport{height:420px}.arch-legend{gap:10px}}

.arch-discovery-banner{display:flex;justify-content:space-between;gap:24px;padding:22px 25px;background:#f2edfc;border:1px solid #dcd0ee;border-radius:15px;margin-bottom:18px}.arch-discovery-banner strong{display:block;font:700 22px Manrope,sans-serif;color:#4d356b;margin-top:7px}.arch-discovery-banner strong span{font-size:13px;font-weight:500}.arch-discovery-banner p{font-size:11px;color:#82718e;margin:8px 0 0}.arch-discovered-node{width:250px;height:117px}.arch-discovered-node strong{font-size:13px}.arch-discovered-node strong span{font-size:10px;color:#8a7899;font-weight:400}.arch-node-cost{display:block;margin-top:9px;font-weight:700;color:#4e3967;font-size:13px}.arch-node-cost small{font-size:8px;font-weight:400;letter-spacing:0}.arch-cost-card{background:#f6f2fb;border-radius:12px;padding:17px;margin:17px 0}.arch-cost-card>strong{font-size:25px;color:#65439a}.arch-resource-detail{border-bottom:1px solid #e7dfef;padding:6px 0}.arch-resource-detail summary{display:flex;flex-direction:column;gap:8px;overflow-wrap:anywhere}.arch-resource-detail pre{white-space:pre-wrap;overflow-wrap:anywhere;font-size:10px}.arch-event-heading{display:flex;align-items:start;gap:25px}.arch-event-heading button{white-space:nowrap}.arch-event-kind{display:inline-block;background:#f0e9fa;color:#7957a2;border-radius:5px;padding:4px 7px;font-size:11px;margin-right:10px}.arch-tabs{flex-wrap:wrap}@media(max-width:700px){.arch-discovery-banner{flex-direction:column}.arch-event-heading{flex-direction:column}}

/* A modal in the top layer keeps the map above portal navigation and traps keyboard focus. */
body.arch-map-expanded{overflow:hidden}
.arch-map-dialog{position:fixed;inset:0;box-sizing:border-box;width:100%;height:100vh;height:100dvh;max-width:none;max-height:none;margin:0;padding:16px;border:0;border-radius:0;background:#f4f2f7;color:inherit}
.arch-map-dialog::backdrop{background:#f4f2f7}
.arch-map-dialog .arch-map-layout{height:100%;grid-template-columns:minmax(0,1fr) 305px;grid-template-rows:minmax(0,1fr);align-items:stretch}
.arch-map-dialog .arch-map{display:flex;flex-direction:column;min-width:0;min-height:0}
.arch-map-dialog .arch-map-controls,.arch-map-dialog .arch-legend{flex:none}
.arch-map-dialog #arch-viewport{flex:1;min-height:0;height:auto;overscroll-behavior:contain}
.arch-map-dialog #arch-inspector{position:static;max-height:none;min-height:0;display:block;columns:auto;overscroll-behavior:contain}
.arch-map-dialog .arch-details-hidden{grid-template-columns:minmax(0,1fr)}
.arch-map-dialog #arch-inspector[hidden]{display:none}
#arch-expand{color:#6243b8;border-color:#c7b6e3;background:#f5f0ff;white-space:nowrap}
@media(max-width:800px){.arch-map-dialog{padding:8px}.arch-map-dialog .arch-map-layout{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr) minmax(0,30%);gap:8px}.arch-map-dialog .arch-details-hidden{grid-template-rows:minmax(0,1fr)}.arch-map-dialog #arch-inspector{padding:16px}.arch-map-dialog .arch-view-buttons{flex-wrap:wrap}.arch-map-dialog .arch-map-controls{padding:8px}.arch-map-dialog .arch-zoom{flex-wrap:wrap;justify-content:flex-end}}

.arch-service-overview{padding:16px;background:#f4effc;border:1px solid #e4d9f3;border-radius:12px;margin:16px 0}
#arch-inspector .arch-service-overview p{font-size:12px;line-height:1.6;color:#59416f;margin:8px 0 0}
#arch-inspector .arch-service-context{border-top:1px solid #e8e0f0;border-bottom:1px solid #e8e0f0;padding:2px 0 12px;margin:14px 0}
#arch-inspector .arch-service-context>summary{font-size:12px;font-weight:600;color:#624887}
.arch-service-context>summary>span{display:block;font-size:10px;font-weight:400;margin-top:4px;color:#9b89ab}
.arch-service-context article{padding:12px 0;border-top:1px solid #eee8f4}.arch-service-context article>strong{display:block;font-size:12px;color:#675078}.arch-service-context article>small{display:block;font-size:9px;color:#9683a4;margin-top:3px}
#arch-inspector .arch-service-context article>p{font-size:11px;margin:8px 0 0}.arch-context-unknown{border-left:2px solid #d9bf8a;padding-left:12px}
.arch-map-help{flex-basis:100%;font-size:10px;line-height:1.6;color:#78678b}.arch-map-help>span{display:block;font-size:9px;color:#a091aa}
.arch-node{touch-action:none;user-select:none;cursor:grab}.arch-node::after{content:'⠿';position:absolute;right:8px;top:8px;font-size:13px;color:#baabc9}.arch-node.arch-dragging{cursor:grabbing;z-index:2;box-shadow:0 8px 22px #5e417b25;border-color:#8561b9}
.arch-zoom{flex-wrap:wrap;justify-content:flex-end}.arch-zoom button:disabled{cursor:default}

/* Public footprint stays visible through selection, dragging and fullscreen. */
.arch-node.arch-public-node,.arch-node.arch-public-node.connected,.arch-node.arch-public-node.arch-dragging{border:2px solid #c33242;background:#fffafa}.arch-node.arch-public-node.selected{border-color:#b31e30;box-shadow:0 0 0 4px #f8dce1}.arch-status.public{color:#b31e30}.arch-exposure-badge{position:absolute;right:26px;top:-10px;background:#b31e30;color:#fff;font-size:9px;font-weight:700;line-height:18px;border-radius:4px;padding:0 6px;box-shadow:0 1px 4px #4f263326}.arch-exposure-badge.pending{background:#8a621d}.arch-security-banner{display:flex;align-items:center;justify-content:space-between;text-align:left;width:100%;gap:16px;padding:14px 20px;margin-bottom:18px;background:#f7f5fa;border:1px solid #dfd7e9;border-radius:12px;font-size:12px}.arch-security-banner.public{background:#fff5f6;border-color:#edc1c7;color:#8b2130}.arch-security-banner span{font-size:11px}.arch-exposure-card{border-top:1px solid #e4dce9;margin:18px 0;padding-top:5px}.arch-exposure-card>details,.arch-exposure-detail{font-size:11px;overflow-wrap:anywhere;margin:12px 0}.arch-exposure-detail.public{border-left:3px solid #c33242;padding-left:12px}.arch-exposure-detail>strong{color:#675771}.arch-exposure-detail.public>strong{color:#a82435}.arch-exposure-detail pre,.arch-security-analysis pre{white-space:pre-wrap;overflow-wrap:anywhere;font-size:11px;font-family:inherit;line-height:1.7}.arch-security-analysis{padding:18px 22px;background:#f5f1fa;border-radius:12px;margin:24px 0}.arch-security-analysis small{color:#7b6a89}.arch-security-resource{border:1px solid #e6deed;padding:15px;margin:12px 0;border-radius:10px}.arch-security-resource.public{border-left:3px solid #c33242}.arch-security-resource summary{cursor:pointer;overflow-wrap:anywhere}.arch-security-resource summary strong{font-size:12px;margin-left:12px}.arch-security-resource summary code{display:block;margin-top:8px;font-size:10px;color:#796b82}@media(max-width:700px){.arch-security-banner{align-items:flex-start;flex-direction:column;gap:8px}.arch-security-resource summary strong{display:block;margin:8px 0}}
