:root{--bg:#f6f7f9;--surface:#fff;--text:#1b1f24;--muted:#5d6673;--border:#d9dee5;--accent:#1f5fbf;--accent-text:#fff;--danger:#b42318;--ok-bg:#e7f6ec;--ok:#1b6b35;--note-bg:#fff6e0;--note:#7a4b00;--err-bg:#fdecea;--focus:#ffbf47;color:var(--text);background:var(--bg);--lightningcss-light:initial;--lightningcss-dark: ;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.45}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#12151a;--surface:#1b2027;--text:#e8ebef;--muted:#9aa4b2;--border:#2e3540;--accent:#5b9bff;--accent-text:#0b1220;--danger:#ff8a80;--ok-bg:#12301d;--ok:#8fe0a8;--note-bg:#33270d;--note:#ffd58a;--err-bg:#3a1714}}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#12151a;--surface:#1b2027;--text:#e8ebef;--muted:#9aa4b2;--border:#2e3540;--accent:#5b9bff;--accent-text:#0b1220;--danger:#ff8a80;--ok-bg:#12301d;--ok:#8fe0a8;--note-bg:#33270d;--note:#ffd58a;--err-bg:#3a1714}*{box-sizing:border-box}body{background:var(--bg);margin:0}a{color:var(--accent)}:focus-visible{outline:3px solid var(--focus);outline-offset:2px}h1{margin:0 0 .75rem;font-size:1.4rem}h2{margin:1.5rem 0 .5rem;font-size:1.1rem}.muted{color:var(--muted)}.small{font-size:.85rem}.mono{font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:.9rem}.sr-only{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.center{text-align:center;place-content:center;gap:.5rem;min-height:60vh;padding:16px;display:grid}.login h1{font-size:2rem}button,.button{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;border-radius:6px;padding:.45rem .9rem;text-decoration:none;display:inline-block}button.primary,.button.primary{background:var(--accent);color:var(--accent-text);border-color:var(--accent)}button:disabled{opacity:.5;cursor:not-allowed}button.link{color:var(--accent);background:0 0;border:0;padding:0 .3rem;text-decoration:underline}button.link.danger{color:var(--danger)}input,select,textarea{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:6px;min-width:0;padding:.4rem .5rem}.topbar{background:var(--surface);border-bottom:1px solid var(--border);z-index:2;flex-wrap:wrap;align-items:center;gap:1rem;padding:.5rem 16px;display:flex;position:sticky;top:0}.brand{color:var(--text);font-weight:700;text-decoration:none}.customer-switch select{max-width:60vw}.user{align-items:center;gap:.5rem;margin-left:auto;display:flex}.tabs{background:var(--surface);border-bottom:1px solid var(--border);gap:.25rem;padding:0 16px;display:flex;overflow-x:auto}.tabs a{color:var(--muted);white-space:nowrap;border-bottom:2px solid #0000;padding:.6rem .8rem;text-decoration:none}.tabs a.active{color:var(--text);border-bottom-color:var(--accent)}.content{max-width:1100px;margin:0 auto;padding:16px}.section-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}.filters{flex-wrap:wrap;gap:.5rem;margin:.5rem 0 1rem;display:flex}.filters input{flex:14rem}.table-wrap{background:var(--surface);border:1px solid var(--border);border-radius:8px;overflow-x:auto}table{border-collapse:collapse;width:100%}th,td{text-align:left;border-bottom:1px solid var(--border);vertical-align:top;padding:.55rem .75rem}th{text-transform:uppercase;letter-spacing:.03em;color:var(--muted);font-size:.8rem}tr:last-child td{border-bottom:0}.pager{justify-content:flex-end;align-items:center;gap:.5rem;margin-top:.75rem;display:flex}.pager .muted{margin-right:auto}.notice,.error,.success,.empty{border-radius:8px;margin:.75rem 0;padding:.75rem 1rem}.notice{background:var(--note-bg);color:var(--note)}.error{background:var(--err-bg);color:var(--danger)}.success{background:var(--ok-bg);color:var(--ok)}.empty{background:var(--surface);border:1px dashed var(--border);color:var(--muted)}.error p,.notice p,.success p{margin:.2rem 0}.cards{grid-template-columns:repeat(auto-fill,minmax(14rem,1fr));gap:.75rem;padding:0;list-style:none;display:grid}.card{background:var(--surface);border:1px solid var(--border);color:var(--text);border-radius:8px;gap:.25rem;padding:1rem;text-decoration:none;display:grid}.form{background:var(--surface);border:1px solid var(--border);border-radius:8px;grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:.75rem 1rem;padding:1rem;display:grid}.form label{gap:.25rem;font-size:.9rem;display:grid}.form .wide{grid-column:1/-1}fieldset{border:1px solid var(--border);border-radius:6px;gap:.5rem;display:grid}.row{flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:.4rem;display:flex}.actions{gap:.5rem;display:flex}.facts{background:var(--surface);border:1px solid var(--border);border-radius:8px;grid-template-columns:minmax(8rem,12rem) 1fr;gap:.5rem 1rem;padding:1rem;display:grid}.facts dt{color:var(--muted)}.facts dd{overflow-wrap:anywhere;margin:0}.history{color:var(--muted);padding-left:1.25rem}.nowrap{white-space:nowrap}.plain{margin:0;padding:0;list-style:none}.panel{background:var(--surface);border:1px solid var(--border);border-radius:8px;margin-top:1.5rem;padding:1rem}.panel h2{margin-top:0}@media (width<=640px){.topbar{gap:.5rem}.customer-switch{order:3;width:100%}.customer-switch select{width:100%;max-width:none}.hide-sm{display:none}.facts{grid-template-columns:1fr}.facts dt{margin-top:.4rem;font-size:.8rem}}.badges{flex-wrap:wrap;align-items:center;gap:.3rem;display:inline-flex}.badge{border:1px solid var(--border);color:var(--muted);white-space:nowrap;border-radius:999px;margin-left:.35rem;padding:.1rem .45rem;font-size:.75rem;display:inline-block}.badges .badge{margin-left:0}.badge.ok,.badge.new{background:var(--ok-bg);color:var(--ok);border-color:#0000}.badge.changed{background:var(--note-bg);color:var(--note);border-color:#0000}.badge.missing{background:var(--err-bg);color:var(--danger);border-color:#0000}.badge.open{border-color:var(--accent);color:var(--accent)}.badge.test{color:var(--note);border-style:dashed}.stack{gap:.6rem;display:grid}.panel.tight{gap:.4rem;margin-top:0;padding:.75rem 1rem;display:grid}.row-card{flex-wrap:wrap;align-items:center;gap:.4rem 1rem;display:flex}.error-text{color:var(--danger)}.break{overflow-wrap:anywhere}.block{gap:.25rem;display:grid}.form.flat{border:0;padding:.75rem 0 0}.facts.compact{gap:.2rem .75rem;padding:.5rem .75rem;font-size:.9rem}.restrictions li{color:var(--muted);margin:.15rem 0}details.panel>summary{cursor:pointer;font-weight:600}.item-not_seen{border-left:4px solid var(--danger)}.item-changed{border-left:4px solid var(--note)}.item-new{border-left:4px solid var(--ok)}.overview{grid-template-columns:repeat(auto-fill,minmax(14rem,1fr));gap:.5rem;display:grid}.user a{color:var(--accent);font-size:.9rem;text-decoration:none}.user a.active{text-decoration:underline}label.inline{align-items:center;gap:.4rem;font-size:.9rem;display:inline-flex}.site.archived{opacity:.7;border-style:dashed}.site h3{margin:1rem 0 .25rem;font-size:1rem}.tree{border-left:2px solid var(--border);margin:0;padding-left:1rem;list-style:none}.tree>li{margin:.35rem 0}.tree .tree{margin-left:.25rem}.row.small input,.row.small select{font-size:.9rem}input.short{width:6rem}tr.muted td{color:var(--muted)}.steps{flex-wrap:wrap;gap:.4rem;margin:.5rem 0 1rem;padding:0;list-style:none;display:flex}.steps li{border:1px solid var(--border);color:var(--muted);border-radius:999px;padding:.3rem .7rem;font-size:.9rem}.steps li.current{border-color:var(--accent);color:var(--accent);font-weight:600}.steps li.done{background:var(--ok-bg);color:var(--ok);border-color:#0000}code.secret{-webkit-user-select:all;user-select:all;overflow-wrap:anywhere;background:var(--note-bg);border-radius:4px;padding:.1rem .3rem}.panel textarea{width:100%}.item-physical{border-left:4px solid var(--ok)}.item-logical{border-left:4px dashed var(--accent)}.plan-body{gap:.75rem;height:calc(100vh - 15rem);min-height:420px;display:flex}.plan-canvas{border:1px solid var(--border);background:var(--surface);border-radius:8px;flex:1;overflow:hidden}.plan-panel{width:18rem;margin-top:0;overflow:auto}.plan-panel .facts{grid-template-columns:1fr;gap:.1rem}.plan-panel .facts dt{color:var(--muted);margin-top:.4rem;font-size:.75rem}.plan-panel h2{overflow-wrap:anywhere;margin:0;font-size:1.1rem}.plan.fullscreen{z-index:50;background:var(--bg);flex-direction:column;padding:.75rem 1rem;display:flex;position:fixed;inset:0}.plan.fullscreen .plan-body{flex:1;height:auto}.topo-node{background:var(--surface);color:var(--text);border:1px solid var(--border);text-align:center;border-radius:8px;min-width:130px;max-width:160px;padding:.35rem .6rem;font-size:.8rem}.topo-node.selected{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent)}.topo-node.outside{opacity:.55;border-style:dashed}.topo-node.inactive .topo-name{text-decoration:line-through}.topo-node.external{background:0 0;border-style:dashed}.topo-node.type-firewall,.topo-node.type-router{border-top:4px solid var(--danger)}.topo-node.type-switch{border-top:4px solid var(--accent)}.topo-node.type-server,.topo-node.type-virtual_machine,.topo-node.type-nas{border-top:4px solid var(--ok)}.topo-type{text-transform:uppercase;letter-spacing:.03em;color:var(--muted);font-size:.65rem}.topo-name{overflow-wrap:anywhere;font-weight:600}.topo-addr{color:var(--muted);font-family:ui-monospace,monospace;font-size:.7rem}.topo-site{color:var(--note);font-size:.65rem}.topo-handle{opacity:0;pointer-events:none}.react-flow__edge.topo-edge.physical .react-flow__edge-path{stroke-width:2px}.react-flow__edge.topo-edge.unverified .react-flow__edge-path{stroke-opacity:.65}@media (width<=640px){.plan-body{flex-direction:column;height:calc(100vh - 13rem)}.plan-panel{width:auto;max-height:40%}}.card .usage{grid-template-columns:3.5rem 1fr auto;align-items:center;gap:.4rem;display:grid}.usage-bar{background:var(--border);border-radius:999px;height:.5rem;overflow:hidden}.usage-bar>span{background:var(--accent);height:100%;display:block}.rack-elevation{flex-wrap:wrap;align-items:flex-start;gap:1rem;margin-top:1rem;display:flex}.rack-side{flex:0 22rem;min-width:16rem}.rack-side h2{margin:0 0 .4rem;font-size:1rem}.rack-grid{border:2px solid var(--border);background:var(--surface);border-radius:6px;grid-template-columns:1fr;gap:1px;padding:2px;display:grid}.rack-slot{text-align:left;color:var(--muted);background:0 0;border:1px dashed #0000;border-radius:3px;grid-column:1;min-height:0;padding:0 .4rem;font-size:.7rem}.rack-slot:not(:disabled):hover{border-color:var(--accent);color:var(--accent);cursor:pointer}.rack-u{font-family:ui-monospace,monospace}.rack-mount{z-index:1;text-align:left;white-space:nowrap;text-overflow:ellipsis;border:1px solid var(--accent);background:var(--note-bg);color:var(--text);border-radius:4px;flex-direction:column;grid-column:1;justify-content:center;min-height:0;margin-left:2rem;padding:.1rem .5rem;font-size:.8rem;line-height:1.15;display:flex;overflow:hidden}.rack-mount.reserved{border-style:dashed;border-color:var(--muted);background:0 0}.rack-mount.mirrored{opacity:.55;background:repeating-linear-gradient(45deg, transparent 0 6px, var(--border) 6px 8px)}.rack-mount.selected{box-shadow:0 0 0 2px var(--accent)}.rack-mount .small{color:var(--muted)}.rack-draft{flex:18rem;margin-top:0}.rack-mount.u1{flex-direction:row;justify-content:flex-start;align-items:center;gap:.5rem}.rack-mount>*{text-overflow:ellipsis;overflow:hidden}.port-grid{flex-wrap:wrap;gap:.3rem;margin-top:.4rem;display:flex}.port-chip{border:1px solid var(--border);background:var(--surface);border-radius:4px;align-items:center;gap:.25rem;padding:.15rem .4rem;font-size:.8rem;display:inline-flex}.port-chip.archived{opacity:.5}.port-chip .side{border:1px solid var(--border);color:var(--muted);border-radius:3px;padding:0 .2rem;font-size:.65rem}.port-chip .side.used{background:var(--accent);border-color:var(--accent);color:#fff}.trace-steps{border-left:3px solid var(--border);margin:.5rem 0;padding:0;list-style:none}.trace-steps li{padding:.25rem 0 .25rem 1rem;position:relative}.trace-steps li:before{content:"";background:var(--border);border-radius:50%;width:.6rem;height:.6rem;position:absolute;top:.6rem;left:-.45rem}.trace-steps li.trace-interface:before{background:var(--ok)}.trace-steps li.trace-port:before{background:var(--accent);border-radius:2px}.trace-steps li.trace-cable{color:var(--muted);font-size:.85rem}.trace-steps li.trace-cable:before{background:0 0;border-radius:0;width:.3rem;height:100%;top:0;left:-.3rem}.trace-steps li.trace-unknown:before,.trace-steps li.trace-loop:before{background:var(--danger)}.dep-list{margin-top:.3rem}.dep-list li{margin:.15rem 0}.dep-req,.dep-opt{border:1px solid var(--border);border-radius:3px;padding:0 .35rem;font-size:.7rem;display:inline-block}.dep-req{border-color:var(--accent);color:var(--accent)}.dep-opt{color:var(--muted);border-style:dashed}.impact-list>li{border-left:4px solid var(--border);background:var(--surface);border-radius:4px;margin:.3rem 0;padding:.4rem .6rem}.impact-list>li.impact-affected{border-left-color:var(--danger)}.impact-list>li.impact-uncertain{border-left-color:var(--note)}.impact-list>li.impact-degraded{border-left-color:var(--accent)}.impact-badge.affected{background:var(--err-bg);color:var(--danger);border-color:#0000}.impact-badge.uncertain{background:var(--note-bg);color:var(--note);border-color:#0000}.impact-badge.degraded{border-color:var(--accent);color:var(--accent)}.floors{margin:.25rem 0 .1rem}.floor-chip{align-items:center;gap:.25rem;margin-left:0;display:inline-flex}.floor-chip .link{padding:0 .1rem;font-size:.75rem}.wizard{border-color:var(--accent)}.wizard h3{margin-top:0}.room-contents{border-left:3px solid var(--border);margin:.25rem 0 .5rem 1.4rem;padding:.4rem .6rem}.room-contents p{margin:.2rem 0}.trace-inline{margin:.5rem 0 0}.trace-inline h3{margin:0;font-size:1rem}tr.trace-row>td{background:var(--bg)}.hint-line{flex-basis:100%;margin:.25rem 0 0}table.nested{width:auto;margin:.25rem 0 .5rem}table.nested th,table.nested td{padding:.2rem .6rem}.theme-switch{white-space:nowrap}.help{max-width:60rem}.help pre.code{white-space:pre-wrap;word-break:break-all;background:var(--surface);border:1px solid var(--border);border-radius:6px;margin:.35rem 0;padding:.5rem .75rem}.help li{margin:.25rem 0}.customer-layout{grid-template-columns:15rem minmax(0,1fr);min-height:calc(100vh - 3.2rem);display:grid}.sidebar{background:var(--surface);border-right:1px solid var(--border);align-self:start;max-height:calc(100vh - 3.2rem);padding:.75rem .5rem;position:sticky;top:3.2rem;overflow-y:auto}.sidebar nav{gap:.1rem;display:grid}.side-head{text-align:left;width:100%;color:var(--text);background:0 0;border:0;border-radius:6px;padding:.45rem .6rem;font-weight:600}.side-head:hover,.side-link:hover{background:var(--bg)}.side-section{gap:.05rem;margin-bottom:.15rem;display:grid}.side-link{color:var(--muted);border-radius:6px;padding:.35rem .6rem .35rem 1.7rem;text-decoration:none;display:block}.side-link.side-top{color:var(--text);padding-left:.6rem;font-weight:600}.side-link.active{background:color-mix(in srgb, var(--accent) 14%, transparent);color:var(--text);font-weight:600}.customer-main{min-width:0}.crumbbar{border-bottom:1px solid var(--border);background:var(--surface);flex-wrap:wrap;align-items:center;gap:.75rem;padding:.5rem 16px;display:flex}.crumbs{flex-wrap:wrap;align-items:center;gap:.4rem;min-width:0;font-size:.9rem;display:flex}.crumbs a{text-decoration:none}.crumbs [aria-current]{font-weight:600}.menu-toggle{display:none}.search-open{color:var(--muted);align-items:center;gap:.35rem;margin-left:auto;display:inline-flex}kbd{border:1px solid var(--border);border-radius:4px;padding:0 .3rem;font-family:inherit;font-size:.75rem}.customer-main .content{max-width:1200px}.search-backdrop{z-index:20;background:#00000073;place-items:start center;padding:10vh 16px 16px;display:grid;position:fixed;inset:0}.search-dialog{flex-direction:column;gap:.5rem;width:min(42rem,100%);max-height:75vh;margin:0;padding:.75rem;display:flex}.search-input{width:100%;padding:.6rem .75rem;font-size:1.05rem}.search-results{overflow-y:auto}.search-group-title{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:.5rem .25rem .2rem;font-size:.75rem}.search-hit{text-align:left;background:0 0;border:0;border-radius:6px;flex-direction:column;align-items:flex-start;gap:.1rem;width:100%;padding:.4rem .5rem;display:flex}.search-hit.active{background:color-mix(in srgb, var(--accent) 16%, transparent)}.search-hit-title{font-weight:600}.tiles{grid-template-columns:repeat(auto-fill,minmax(10rem,1fr));gap:.75rem;margin:1rem 0 0;padding:0;list-style:none;display:grid}.tile{background:var(--surface);border:1px solid var(--border);color:var(--text);border-radius:8px;gap:.1rem;padding:.9rem 1rem;text-decoration:none;display:grid}.tile:hover{border-color:var(--accent)}.tile-value{font-size:1.6rem;font-weight:700;line-height:1.1}.tile-label{font-weight:600}.overview-cols{grid-template-columns:repeat(auto-fit,minmax(18rem,1fr));gap:0 1rem;display:grid}.hints{gap:.35rem;margin:0;padding-left:1.1rem;display:grid}.explorer{grid-template-columns:minmax(14rem,22rem) minmax(0,1fr);align-items:start;gap:1rem;display:grid}.explorer-tree{max-height:calc(100vh - 12rem);margin-top:1rem;position:sticky;top:4rem;overflow:auto}.explorer-tree ul{margin:0;padding-left:.9rem;list-style:none}.explorer-tree>ul{padding-left:0}.tree-row{align-items:center;gap:.1rem;display:flex}.tree-toggle{color:var(--muted);background:0 0;border:0;padding:.15rem .3rem}.tree-label{text-align:left;color:var(--text);background:0 0;border:0;border-radius:6px;padding:.2rem .4rem}.tree-label.selected{background:color-mix(in srgb, var(--accent) 16%, transparent);font-weight:600}.tree-leaf{padding:.1rem 0 .1rem 1.4rem;font-size:.9rem}.explorer-detail .panel{margin-top:1rem}.explorer-detail h4{margin:1rem 0 .3rem}@media (width<=800px){.customer-layout{grid-template-columns:1fr}.sidebar{display:none}.drawer-open .sidebar{z-index:15;width:min(18rem,85vw);max-height:none;display:block;position:fixed;top:0;bottom:0;left:0;box-shadow:0 0 2rem #00000059}.menu-toggle{display:inline-block}.explorer{grid-template-columns:1fr}.explorer-tree{max-height:45vh;position:static}}.drawer-backdrop{display:none}@media (width<=800px){.drawer-backdrop{z-index:14;background:#0006;display:block;position:fixed;inset:0}}
