/* FieldStack professional light theme. Loaded last so legacy components inherit
   a single, calm visual language without changing discovery behavior. */
:root{
  --ink:#17211d;
  --muted:#66736d;
  --bg:#edf1ee;
  --surface:#f8faf8;
  --surface-subtle:#f1f4f2;
  --surface-tint:#e6eee9;
  --line:#c9d1cc;
  --line-strong:#aebbb4;
  --green:#176b49;
  --green-strong:#0d5136;
  --green-soft:#e8f4ed;
  --blue:#286b91;
  --blue-soft:#eaf3f8;
  --amber:#9a6814;
  --amber-soft:#fff6df;
  --red:#a63d36;
  --red-soft:#fff0ee;
  --shadow:0 1px 2px rgba(20,42,31,.09),0 8px 22px rgba(20,42,31,.07);
}

html{background:var(--bg);color:var(--ink)}
body{grid-template-columns:258px minmax(0,1fr);background:var(--bg)}
.sidebar{z-index:20;width:258px;padding:24px 16px 18px;border-right:0;background:#123b2b;color:#fff;box-shadow:2px 0 12px rgba(18,59,43,.12)}
.brand{gap:11px;margin:0 2px 20px;padding:0 6px 21px;border-bottom:1px solid rgba(255,255,255,.14);color:#fff}
.brand-mark{width:38px;height:38px;border-radius:8px;background:#fff;color:#18563d;box-shadow:none}
.brand img.brand-mark,.login-brand img.brand-mark{display:block;flex:none;object-fit:contain;background:transparent}
.report-brand img.report-brand-mark{display:block;object-fit:contain;background:transparent}
.brand img.partner-mark{max-width:58px;object-fit:contain}
.brand img.fieldstack-mark{width:30px;height:30px}
.login-brand img.partner-mark{max-width:82px;object-fit:contain}
.login-brand img.fieldstack-mark{width:36px;height:36px}
.report-brand img.partner-mark{max-width:88px}
.report-brand img.fieldstack-mark{width:30px;height:30px}
.cobrand-preview{display:grid;gap:8px}.cobrand-preview>span{display:flex;align-items:center;gap:12px}.cobrand-preview img{width:52px;height:52px;object-fit:contain}.cobrand-preview>small{color:var(--muted)}
.brand>span:last-child{font-size:1rem}
.brand small{max-width:160px;margin-top:4px;color:#b9d2c6;font-size:.58rem;letter-spacing:.04em;line-height:1.35}
.sidebar nav{gap:2px;overflow-y:auto;padding-right:2px}
.sidebar nav .nav-label{display:block;margin:15px 10px 6px;color:#8eb5a4;font-size:.58rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase}
.sidebar nav .nav-label:first-child{margin-top:0}
.sidebar nav a{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:6px;color:#d8e7df;font-size:.79rem;font-weight:600}
.sidebar nav a i{display:grid;place-items:center;width:23px;height:23px;border:1px solid rgba(255,255,255,.15);border-radius:5px;color:#a9cabc;font-size:.5rem;font-style:normal;font-weight:800;letter-spacing:.04em}
.sidebar nav a:hover{background:rgba(255,255,255,.07);color:#fff}
.sidebar nav a.active{background:#fff;color:#164b36;box-shadow:0 2px 8px rgba(0,0,0,.12)}
.sidebar nav a.active i{border-color:#bdd4c8;background:#edf5f0;color:#176b49}
.roadmap-card,.guardrail{margin-top:14px;border:1px solid rgba(255,255,255,.14);border-radius:8px;background:rgba(0,0,0,.09);padding:11px 12px}
.roadmap-card span,.roadmap-card strong,.roadmap-card small,.guardrail strong,.guardrail span{display:block}
.roadmap-card span{color:#a9cabc;font-size:.52rem;font-weight:800;letter-spacing:.12em}
.roadmap-card strong{margin-top:5px;font-size:.72rem;color:#fff}
.roadmap-card small,.guardrail span{margin-top:4px;color:#aac3b8;font-size:.61rem;line-height:1.4}
.guardrail{margin-top:8px;background:transparent}
.guardrail strong{color:#dcebe4;font-size:.68rem}

main{max-width:1700px;margin:0;padding:28px 38px 48px}
.topbar{margin-bottom:22px;padding-bottom:18px;border-bottom:1px solid var(--line)}
.topbar h1{margin:5px 0 0;color:#15231d;font-size:1.65rem;letter-spacing:-.025em}
.eyebrow{color:var(--green);font-size:.61rem;letter-spacing:.13em}
.operator{gap:9px;color:var(--ink)}
.operator-avatar{display:grid!important;place-items:center;width:32px;height:32px;border:0!important;border-radius:50%;background:#e3eee8!important;color:var(--green)!important;font-weight:800}
.operator small{color:var(--muted)}
.logout{border:1px solid var(--line);background:#fff;color:#4f5c56}
.logout:hover{border-color:var(--line-strong);background:#f8faf8}

.scope-bar{margin:-4px 0 18px;padding:11px 14px;border:1px solid #cadbd1;border-radius:8px;background:#eef5f1;box-shadow:none}
.scope-bar span,.scope-bar label{color:#66756e}
.workspace-picker{margin:0 0 22px;padding:13px 17px;background:#fff;border-color:#c9d9cf;display:flex;align-items:center;justify-content:space-between;gap:18px}
.workspace-picker>div{min-width:0}.workspace-picker>div span{display:block;font-size:.56rem;font-weight:800;letter-spacing:.12em;color:var(--green)}
.workspace-picker>div strong{font-size:.85rem}.workspace-picker>div small{display:block;margin-top:3px;font-size:.67rem}
.workspace-picker form{display:flex;align-items:center;gap:10px;margin:0}.workspace-picker label{font-size:.69rem;font-weight:750;white-space:nowrap}
.workspace-picker select{min-width:250px;max-width:42vw;padding:9px 12px;font-size:.8rem;font-weight:700}
@media(max-width:720px){.workspace-picker{align-items:stretch;flex-direction:column}.workspace-picker form{width:100%;align-items:stretch;flex-direction:column;gap:5px}.workspace-picker select{min-width:0;max-width:none;width:100%}}
.scope-bar b,.scope-bar small{color:var(--green)}
.scope-bar select{border:1px solid #bdd0c5;background:#fff;color:var(--ink)}
.notice{border-radius:7px;box-shadow:none}
.notice.success{border-color:#b7d9c6;background:var(--green-soft);color:var(--green-strong)}
.notice.error{border-color:#e4b9b5;background:var(--red-soft);color:var(--red)}

.metrics{gap:10px;margin-bottom:14px}
.metrics article,.panel{border:1px solid var(--line);border-radius:9px;background:var(--surface);box-shadow:var(--shadow)}
.metrics article{padding:16px 18px}
.metrics span{color:#66736d;font-size:.65rem;font-weight:700}
.metrics strong{margin:6px 0 2px;color:#17211d;font-size:1.7rem;font-weight:700}
.metrics small{color:#7d8983}
.metrics .alert{border-left:3px solid #d19a33}
.metrics .alert strong{color:var(--amber)}
.grid{gap:14px}
.panel{min-height:0}
.panel-head{padding:17px 19px;border-bottom:1px solid var(--line);background:#f0f3f1}
.panel-head h2{color:#1e2b25;font-size:.93rem}
.panel-head p{color:var(--muted)!important}
.panel button,.panel input,.panel select{min-height:34px;border:1px solid var(--line-strong);background:#fff;color:#26352e;font-weight:650}
.panel button{background:#e2ebe6;box-shadow:0 1px 2px rgba(20,42,31,.08)}
.panel button:hover{border-color:#779b87;background:#d7e6de;color:#123f2d}
.row{padding:14px 19px;border-bottom:1px solid #e8ece9}
.row:hover{background:#fafcfb}
.row small{color:var(--muted)}
.site-launch{margin:0}.site-launch>button{padding:0;border:0;background:transparent;text-align:left;cursor:pointer}.site-launch>button:hover{background:transparent}.site-launch>button strong,.site-launch>button small{display:block}.site-launch>button small{margin-top:3px}
.site-icon,.connector-icon,.site-type{border:0;background:#e7f1eb;color:var(--green)}
.status{font-weight:700}
.status.good{border-color:#acd2bd;background:#e9f6ef;color:#176b49}
.status.bad{border-color:#e6bbb7;background:#fff1ef;color:#a63d36}
.status.warn{border-color:#e7cf99;background:#fff7e5;color:#8a5b0f}
.status.neutral{border-color:#d5dcd8;background:#f5f7f5;color:#66736d}
.button{min-height:34px;border:1px solid #8fb09e;background:#dfeae4;color:var(--green-strong);font-weight:750;box-shadow:0 1px 2px rgba(20,42,31,.08)}
.button:hover{border-color:#6f9982;background:#d2e3da}
.text-link,.location-link{color:var(--green)}
.empty>span{border-color:#bad1c4;color:var(--green)}
.empty p,.table-empty{color:var(--muted)}
.empty code{border-color:var(--line);background:#f6f8f6;color:#34423b}
table{background:#fff}
th,td{border-bottom:1px solid #e7ebe8}
th{background:#fafbfa;color:#6b7771;font-size:.63rem}
td code{color:#344d42}
.clickable{transition:background-color .12s ease,box-shadow .12s ease}
.clickable:hover{background:#eef5f1;box-shadow:inset 3px 0 var(--green)}
.clickable:hover td,.clickable:hover a,.clickable:hover strong{color:var(--ink)}

/* Legacy evidence grids used fixed dark fills. Keep data states semantic while
   allowing the page surface to remain calm and readable in the light theme. */
.capability-grid,.poe-summary{background:var(--line)}
.capability-grid article,.poe-summary>div{background:#fff;color:var(--ink)}
.capability-grid article:hover,.poe-summary>div:hover{background:#f5f8f6}
.capability-grid article.available{box-shadow:inset 3px 0 #53a97c}
.capability-grid article.unavailable{background:#f7f8f7;box-shadow:inset 3px 0 #aab3ae}
.capability-grid article.unavailable strong{color:#69766f}
.capability-guidance{background:#fbfcfb;color:var(--muted)}
.poe-summary span{color:#6d7973}
.poe-summary strong{color:var(--ink)}
.lifecycle-grid form{border-color:#e7ebe8}
.lifecycle-grid form:hover{background:#fafcfb}
.intermediate-evidence>summary:hover,.classification-review>summary:hover,.management-card>summary:hover,.site-management>summary:hover,.vlan-card>summary:hover{background:#f5f8f6}
.path-observations div{border-color:#a9c7b7;background:#f6faf7}

.stack-form input,.stack-form select,.management-form input,.user-controls select,.password-reset input,.client-search input,.client-search select,.evidence-tools input,.topology-actions select,.topology-filters select,.client-drawer-tools select{border:1px solid var(--line-strong);background:#fff;color:var(--ink)}
.stack-form input:focus,.stack-form select:focus,.client-search input:focus,.client-search select:focus{outline:2px solid #9dc4af;outline-offset:1px}
.security-note{border-color:#c5dacf;background:#eef6f1}
.security-note strong{color:var(--green-strong)}
.form-actions button,.deployment-actions button{border:1px solid var(--green-strong);background:var(--green);color:#fff}
.form-actions button:hover,.deployment-actions button:hover{background:var(--green-strong)}
button.sync{color:var(--green)!important}
.danger-zone{border-color:#e0b9b5;background:#fff8f7}
.danger-zone>summary{color:var(--red)}
.danger-zone p{color:#835f5b}

.management-summary,.customer-nav,.site-management,.add-site-panel,.vlan-card,.vlan-members article,.vlan-members a,.work-item,.intermediate-grid a,.classification-columns a,.evidence-cards article,.network-definitions article,.history-summary>div,.topology-node,.port-inspector{border-color:var(--line);background:#fff;color:var(--ink)}
.customer-nav-item{background:#fff;color:var(--ink)}
.customer-nav-item:hover,.customer-nav-item.selected{border-color:#a9c7b7;background:#edf5f0}
.customer-nav-item em{color:var(--green)}
.add-site-panel{border-color:#b9d1c4;background:#f2f7f4}
.vlan-tag{border-color:#b8d3c4;background:#eaf5ee;color:var(--green)}
.discovery-hero{background:linear-gradient(100deg,#fff 0,#f4f8f5 100%)}
.discovery-score strong{color:var(--green)}
.discovery-step{border-color:var(--line);background:#fff;box-shadow:0 1px 2px rgba(20,42,31,.025)}
.discovery-step.complete{border-top:3px solid #61a980;padding-top:13px}
.discovery-step.complete>b{border-color:#9fcbb4;background:#e8f5ed;color:var(--green)}
.discovery-confidence article{border-color:var(--line)}
.work-item.attention{border-color:#dfc88f;background:#fffaf0}
.result-kind{color:var(--green)}
.evidence-state{color:var(--blue)}
.evidence-warning{color:var(--amber)!important}

.deployment-card{border-color:#dfc78e;background:#fff8e7}
.deployment-card textarea,.command-copy code{border-color:#cfd7d2;background:#1b2521;color:#e8efeb}
.deployment-card p,.deployment-card small{color:#665f4e}
.deployment-next{border-color:#eadcb9;color:var(--ink)}
.collector-actions{border-color:var(--line);background:#fff}

.detail-card,.interface-panel,.neighbor-panel,.history-panel,.evidence-panel,.device-visual{background:var(--surface)}
.detail-actions{display:flex;align-items:center;gap:8px}.web-interface-link,.quick-web-link{white-space:nowrap;color:var(--green-strong);font-weight:750}.quick-web-link{display:block;margin-top:6px;font-size:.64rem}.web-interface-link{background:#edf5f0}
.facts div,.relationship,.history-list article{border-color:#e7ebe8}
.relationship a{color:var(--green)}
.history-summary{background:var(--line)}
.evidence-panel>summary{background:#f5f7f5}.evidence-panel>summary:hover{background:#eaf0ec}
.product-reference{background:linear-gradient(145deg,#f7faf8,#edf2ef)}

/* Topology remains lightly tinted so links retain contrast without becoming a dark console. */
.topology-site,.topology-tree{background:#fff}
.topology-guidance{border-color:var(--line);background:#f8faf8;color:var(--muted)}
.topology-tree{border-color:var(--line)!important}
.topology-tree>header{background:#f9fbf9!important;border-color:var(--line)!important}
.topology-canvas{background:#f5f8f6}
.topology-lane{border-color:#d8e2dc!important;background:rgba(255,255,255,.5)!important}
.graph-node{border-color:#a8c3b4;background:#fff;box-shadow:0 2px 8px rgba(25,59,42,.08)}
.graph-node:hover{border-color:var(--green);box-shadow:0 4px 12px rgba(25,59,42,.12)}
.graph-icon{background:#e5f1ea;color:var(--green)}
.graph-node.unresolved{border-color:#a9b2ad;background:#fbfcfb}
.graph-node.unresolved .graph-icon{background:#eef1ef;color:#6f7b75}
.graph-node.upstream-unknown{border-color:#c79c45;background:#fffaf0}
.graph-node.upstream-unknown .graph-icon,.role-gateway .graph-icon{background:#fff1cd;color:#8a5b0f}
.role-gateway{border-color:#c9a657}
.role-client{border-color:#9bbdd0;background:#fff}
.role-client .graph-icon{background:#eaf3f8;color:var(--blue)}
.topology-edge{stroke:#4c8d6e}
.topology-edge.virtual-crossing{stroke:#4f96bc}
.edge-port,.edge-protocol{stroke:#f5f8f6;fill:#4b5b53}
.edge-protocol{fill:var(--green)}
.client-count{border-color:#a8c7d8;background:#eef6fa;color:var(--blue)}
.client-drawer{border-color:#b8c9c0;background:#fff;box-shadow:-10px 12px 30px rgba(20,42,31,.14)}
.client-drawer-head{border-color:var(--line);background:#f8faf8}
.client-drawer-results article,.vlan-toggle-list label{border-color:var(--line);background:#fff;color:var(--ink)}
.topology-site:fullscreen,.topology-tree:fullscreen{background:var(--bg)}

.product-roadmap{margin-top:14px;border:1px solid #c3d2c9;border-radius:9px;background:#f8faf8;box-shadow:var(--shadow);overflow:hidden}
.workspace-tabs{display:flex;align-items:center;gap:4px;margin:0 0 14px;padding:4px;border:1px solid var(--line);border-radius:9px;background:#fff;box-shadow:0 1px 2px rgba(20,42,31,.04);overflow-x:auto}.workspace-tabs a{display:flex;align-items:center;gap:7px;min-height:34px;padding:8px 13px;border-radius:6px;color:var(--muted);font-size:.72rem;font-weight:750;white-space:nowrap}.workspace-tabs a:hover{background:#f1f5f2;color:var(--ink)}.workspace-tabs a.selected{background:var(--green-soft);color:var(--green-strong)}.workspace-tabs a span{display:grid;place-items:center;min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:#e7ece9;color:#5f6b65;font-size:.6rem}.workspace-tabs a.selected span{background:#cce5d7;color:var(--green-strong)}
.site-home-hero{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:14px;padding:20px 22px;border:1px solid var(--line);border-radius:9px;background:linear-gradient(105deg,#fff,#eef5f1);box-shadow:var(--shadow)}.site-home-hero h2{margin:5px 0 4px;font-size:1.2rem}.site-home-hero p{margin:0;color:var(--muted);font-size:.75rem}.site-home-health{display:flex;align-items:center;gap:7px}.site-home-metrics>a{display:block}.site-home-metrics article{height:100%;transition:border-color .15s ease,transform .15s ease}.site-home-metrics a:hover article{border-color:#98b9a7;transform:translateY(-1px)}.site-home-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(340px,.85fr);gap:14px;margin-bottom:14px}.site-home-grid .panel{min-height:0}.home-action-list{display:grid}.home-action-list>a{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;padding:14px 18px;border-bottom:1px solid #e7ebe8}.home-action-list>a:hover{background:#f5f8f6}.home-action-list strong,.home-action-list small{display:block}.home-action-list strong{font-size:.78rem}.home-action-list small{margin-top:4px;color:var(--muted);font-size:.67rem;line-height:1.4}.home-action-list em{color:var(--green);font-size:.65rem;font-style:normal;font-weight:750}.recent-activity{margin-bottom:14px}.recent-activity .table-empty{padding:35px 20px}
.settings-intro{margin-bottom:14px;padding:20px 22px;border:1px solid var(--line);border-radius:9px;background:linear-gradient(105deg,#fff,#eef5f1);box-shadow:var(--shadow)}.settings-intro h2{margin:5px 0}.settings-intro p{margin:0;color:var(--muted);font-size:.75rem}.settings-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.settings-grid>a{display:grid;grid-template-columns:auto 1fr;gap:12px;min-height:105px;padding:17px;border:1px solid var(--line);border-radius:9px;background:#fff;box-shadow:0 1px 2px rgba(20,42,31,.04)}.settings-grid>a:hover{border-color:#9bbbaa;background:#f8fbf9}.settings-grid i{display:grid;place-items:center;width:34px;height:34px;border-radius:7px;background:var(--green-soft);color:var(--green);font-size:.6rem;font-style:normal;font-weight:800}.settings-grid strong,.settings-grid small{display:block}.settings-grid strong{font-size:.8rem}.settings-grid small{margin-top:5px;color:var(--muted);font-size:.67rem;line-height:1.45}
@media(max-width:1050px){.site-home-grid{grid-template-columns:1fr}.settings-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:650px){.site-home-hero{align-items:flex-start;flex-direction:column}.site-home-health{align-items:flex-start;flex-wrap:wrap}.home-action-list>a{grid-template-columns:1fr}.home-action-list em{justify-self:start}.settings-grid{grid-template-columns:1fr}}
.roadmap-head{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;padding:20px 22px;border-bottom:1px solid var(--line);background:linear-gradient(110deg,#fff,#eef5f1)}
.roadmap-head h2{margin:5px 0 7px;font-size:1rem}
.roadmap-head p{max-width:840px;margin:0;color:var(--muted);font-size:.76rem;line-height:1.55}
.roadmap-principle{white-space:nowrap;padding:7px 10px;border:1px solid #b6ccbf;border-radius:999px;background:#fff;color:var(--green-strong);font-size:.65rem;font-weight:800}
.roadmap-horizons{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));background:var(--line);gap:1px}
.roadmap-horizon{position:relative;min-height:142px;padding:18px 19px;background:#fff}
.roadmap-horizon:before{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:#aebbb4}
.roadmap-horizon.current:before{background:var(--green)}
.roadmap-horizon.next:before{background:var(--blue)}
.roadmap-horizon span{color:#75817b;font-size:.57rem;font-weight:800;letter-spacing:.12em}
.roadmap-horizon.current span{color:var(--green)}
.roadmap-horizon.next span{color:var(--blue)}
.roadmap-horizon h3{margin:8px 0 7px;color:var(--ink);font-size:.82rem}
.roadmap-horizon p{margin:0;color:var(--muted);font-size:.69rem;line-height:1.5}
.coming-badge{white-space:nowrap;padding:7px 10px;border:1px solid #b6ccbf;border-radius:999px;background:#fff;color:var(--green-strong);font-size:.65rem;font-weight:800}
.connector-intro{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:14px;padding:18px 20px;border:1px solid var(--line);border-radius:9px;background:#fff;box-shadow:var(--shadow)}
.connector-intro h2{margin:5px 0 6px;font-size:1rem}.connector-intro p{margin:0;color:var(--muted);font-size:.75rem}.connector-intro>span{white-space:nowrap;color:var(--green);font-size:.67rem;font-weight:800}
.connector-forms .form-panel{align-self:start}
.connector-forms .form-panel:not(.connector-open):not(.connector-upcoming) .stack-form{display:none}
.connector-forms .form-panel:not(.connector-upcoming) .panel-head{cursor:pointer}
.connector-forms .form-panel:not(.connector-upcoming) .panel-head:after{content:'+';color:var(--muted);font-size:1rem}
.connector-forms .form-panel.connector-open .panel-head:after{content:'−';color:var(--green)}
.connector-upcoming{opacity:.84}.upcoming-copy{padding:18px 20px}.upcoming-copy p{margin:0 0 6px;color:var(--ink);font-size:.78rem;line-height:1.5}.upcoming-copy small{color:var(--muted)}

.login-body{background:#eef2ef}
.login-card{background:#fff}

@media(max-width:1200px){
  .roadmap-horizons{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:900px){
  body{grid-template-columns:76px minmax(0,1fr)}
  .sidebar{width:76px;padding:20px 10px}
  .brand{justify-content:center;padding:0 0 18px}.brand>span:last-child,.nav-label,.sidebar nav a span,.roadmap-card,.guardrail{display:none!important}
  .sidebar nav a{justify-content:center;padding:8px}
  .sidebar nav a i{width:28px;height:28px}
  main{padding:26px 22px 40px}
  .roadmap-horizons{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:600px){
  body{display:block}
  .sidebar{position:static;width:100%;height:auto;padding:9px 12px;flex-direction:row}
  .brand{margin:0;padding:0;border:0}.brand-mark{width:32px;height:32px}
  .sidebar nav{display:flex;margin-left:auto;overflow:visible}.sidebar nav a{display:none}.sidebar nav a.active,.sidebar nav a[href="/"],.sidebar nav a[href="/discovery"]{display:flex}
  main{padding:20px 13px 34px}.topbar{align-items:flex-start}.operator-avatar,.operator>div{display:none!important}
  .roadmap-head{align-items:flex-start;flex-direction:column}
  .roadmap-horizons{grid-template-columns:1fr}
  .roadmap-horizon{min-height:0}
}

@media print{
  .sidebar{display:none!important}body{display:block;background:#fff}main{max-width:none;padding:0}.topbar,.scope-bar{display:none!important}
}
