:root{
  font-family:Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  color:var(--ink);background:var(--canvas);font-size:14px;color-scheme:light;
  --canvas:#f5f8fd;
  --sidebar:#ffffff;
  --surface:#ffffff;
  --surface-raised:#edf3fc;
  --ink:#12233f;
  --muted:#526581;
  --line:#dce5f2;
  --accent:#245fca;
  --link:#184cbe;
  --success:#16704c;
  --warning:#8a570b;
  --error:#b33243;
  --nav-hover:#f1f5fc;
  --nav-active:#eaf1ff;
  --nav-active-border:#d0dfff;
  --count-accent:#dce8ff;
  --surface-inset:#f8faff;
  --success-ring:#16704c12;
  --icon-surface:#eaf1fd;
  --page-glow:#dce8ff33;
  --separator:#657a98;
  --primary-border:#184cbe;
  --border-strong:#9eafc8;
  --error-surface:#fff0f2;
  --error-border:#e7b3bc;
  --error-hover:#ffe1e6;
  --metric-glow:#f8fbff;
  --selection:#e4eeff;
  --warning-surface:#fff3df;
  --table-heading:#f3f7fd;
  --row-line:#e6edf7;
  --row-hover:#f5f8fe;
  --device-surface:#edf3ff;
  --device-border:#cbdaf1;
  --neutral-surface:#edf1f7;
  --neutral-ink:#526078;
  --success-surface:#e9f7ef;
  --icon-border:#c9d9f3;
  --blue-surface:#edf3ff;
  --callout-surface:#edf4ff;
  --callout-border:#ccdffc;
  --event-surface:#eaf2ff;
  --warning-border:#e6c894;
  --dialog-shadow:#172d4b26;
  --backdrop:#203b5e55;
  --toast-shadow:#172d4b1f;
  --hero-glow:#c1d7fb88;
  --wave-color:#5c97ff22;
  --signal-surface:#ffffff;
  --signal-glow:#184cbe16;
  --input-surface:#ffffff;
  --selection-hover:#d7e5ff;
}
/* Dark mode is an explicit operator preference; first visits always use light. */
:root[data-theme="dark"]{
  color-scheme:dark;
  --canvas:#05080d;
  --sidebar:#030914;
  --surface:#0a1529;
  --surface-raised:#0f203b;
  --ink:#f4f7fb;
  --muted:#a9b8d0;
  --line:#203452;
  --accent:#5c97ff;
  --link:#a3c4ff;
  --success:#9ce6c0;
  --warning:#f3ca87;
  --error:#ffabab;
  --nav-hover:#0a1830;
  --nav-active:#11274a;
  --nav-active-border:#5c97ff33;
  --count-accent:#184cbe44;
  --surface-inset:#071225;
  --success-ring:#9ce6c015;
  --icon-surface:#122746;
  --page-glow:#0b1c3744;
  --separator:#6884a9;
  --primary-border:#5c97ff66;
  --border-strong:#395477;
  --error-surface:#381d27;
  --error-border:#7e3d4d;
  --error-hover:#4c2634;
  --metric-glow:#0e1d35;
  --selection:#172f53;
  --warning-surface:#382b1e;
  --table-heading:#081122;
  --row-line:#20345299;
  --row-hover:#10213c;
  --device-surface:#132b4c;
  --device-border:#314f77;
  --neutral-surface:#20314b;
  --neutral-ink:#c0cadb;
  --success-surface:#16392f;
  --icon-border:#31517c;
  --blue-surface:#122947;
  --callout-surface:#122644;
  --callout-border:#27466f;
  --event-surface:#152d4f;
  --warning-border:#74552e;
  --dialog-shadow:#0009;
  --backdrop:#030914bf;
  --toast-shadow:#0006;
  --hero-glow:#123b774f;
  --wave-color:#5c97ff12;
  --signal-surface:#0a1c36;
  --signal-glow:#184cbe22;
  --input-surface:#0a1019;
  --selection-hover:#203c65;
}
@font-face{font-family:Inter;src:url('/assets/brand/inter.woff2');font-weight:100 900;font-display:swap}@font-face{font-family:Space;src:url('/assets/brand/space-grotesk.woff2');font-weight:300 700;font-display:swap}*{box-sizing:border-box}body{margin:0;background:var(--canvas);color:var(--ink);font:14px Inter,system-ui,sans-serif}button,input,select,textarea{font:inherit}button,a,input,select,textarea{outline-offset:4px}button,a{touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}a{color:var(--link);text-decoration:none}h1,h2,h3,p{margin:0}h1,h2,h3,.number{font-family:Space,Inter,sans-serif}h1{font-size:32px;letter-spacing:-1px}h2{font-size:19px}h3{font-size:16px}p{line-height:1.7}small,.muted{color:var(--muted)}small{font-size:12px}.shell{display:grid;grid-template-columns:236px 1fr;min-height:100vh}.sidebar{background:var(--sidebar);color:var(--muted);padding:32px 22px;display:flex;flex-direction:column;position:fixed;inset:0 auto 0 0;width:236px;z-index:10}.brand{display:flex;align-items:center;gap:10px;color:var(--ink);font:26px Space;font-weight:700;letter-spacing:1px}.brand img{width:34px;height:34px;object-fit:contain;background:var(--surface);border-radius:9px;padding:3px}.brand small{color:var(--muted);display:block;font:10px Inter;letter-spacing:2px;margin-top:5px}.nav-label{font-size:10px;letter-spacing:1.8px;color:var(--muted);margin:42px 14px 13px}.sidebar nav{display:grid;gap:6px}.nav{color:var(--muted);display:flex;align-items:center;gap:13px;padding:13px 14px;border-radius:8px;font-weight:500}.nav svg{width:19px;height:19px}.nav.active{background:var(--nav-active);color:var(--ink)}.nav.active:after{content:'';width:6px;height:6px;background:var(--accent);border-radius:50%;margin-left:auto}.sidebar .bottom{margin-top:auto;padding-top:48px}.avatar{border-radius:50%;background:var(--icon-surface);display:grid;place-items:center;color:var(--link);width:36px;height:36px;font-weight:700;flex:none}.person{display:flex;gap:10px;align-items:center;overflow:hidden}.person strong{display:block;overflow-wrap:anywhere}.sidebar small{color:var(--muted)}.signout{border:1px solid var(--line);background:transparent;color:var(--muted);padding:10px;width:100%;border-radius:7px;margin-top:18px}.main{grid-column:2;min-width:0}.topbar{height:80px;background:var(--surface);border-bottom:1px solid var(--line);padding:0 40px;display:flex;align-items:center;justify-content:space-between;gap:16px}.topbar select{max-width:300px;border:none;font-weight:600;color:var(--ink);background:transparent;padding:7px}.topbar .right{display:flex;align-items:center;gap:14px}.live-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--success);margin-right:7px}.content{padding:36px 40px;max-width:1600px;margin:auto}.heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:26px;gap:18px}.eyebrow{text-transform:uppercase;letter-spacing:1.8px;font-size:10px;font-weight:700;color:var(--muted);margin-bottom:8px}.heading p{color:var(--muted);margin-top:9px}.btn{border:1px solid var(--line);background:var(--surface);border-radius:7px;padding:10px 14px;color:var(--ink);display:inline-flex;align-items:center;justify-content:center;gap:8px;font-weight:600;font-size:12px;white-space:nowrap}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.danger{color:var(--error);background:var(--error-surface);border-color:var(--error-border)}.btn svg{width:16px;height:16px}.btn:hover{filter:brightness(.97)}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-bottom:24px}.stat,.panel{border:1px solid var(--line);background:var(--surface);border-radius:12px}.stat{padding:21px 22px;position:relative}.stat .number{font-size:34px;line-height:1.25;margin-top:14px;font-weight:600;letter-spacing:-1px}.stat small{display:block;margin-top:8px}.stat-icon{position:absolute;right:20px;top:19px;background:var(--icon-surface);color:var(--accent);padding:9px;border-radius:9px;width:36px;height:36px}.stat-icon svg{width:18px;height:18px}.stat.attention .stat-icon{background:var(--warning-surface);color:var(--warning)}.grid{display:grid;grid-template-columns:1.6fr 1fr;gap:22px;margin-bottom:24px}.panel-head{padding:22px 24px 16px;display:flex;justify-content:space-between;gap:16px;align-items:center}.panel-head small{display:block;margin-top:6px}.panel-body{padding:0 24px 24px}.chart{width:100%;height:180px}.chart text{fill:var(--muted);font:10px Inter}.chart .line{fill:none;stroke:var(--accent);stroke-width:2.5}.category-row{display:flex;gap:12px;align-items:center;padding:10px 0}.category-row .bar{height:5px;background:var(--surface-raised);border-radius:5px;flex:1;min-width:20px}.category-row .bar span{display:block;height:100%;background:var(--accent);border-radius:5px}.category-row .label{min-width:150px;font-size:12px}.badge{display:inline-flex;gap:6px;align-items:center;padding:5px 9px;border-radius:5px;font-size:11px;line-height:1.25;font-weight:600;background:var(--neutral-surface);color:var(--neutral-ink);white-space:nowrap}.badge.online,.badge.resolved{background:var(--success-surface);color:var(--success)}.badge.new,.badge.high,.badge.offline{background:var(--warning-surface);color:var(--warning)}.badge.acknowledged,.badge.monitoring{background:var(--blue-surface);color:var(--link)}.badge.revoked,.badge.health{background:var(--error-surface);color:var(--error)}.badge.stale,.badge.unknown,.badge.dismissed{background:var(--neutral-surface);color:var(--muted)}.category-dot{width:8px;height:8px;border-radius:50%;background:var(--accent);display:inline-block;margin-right:8px}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;font-size:12px}th{font-size:10px;letter-spacing:.8px;text-align:left;text-transform:uppercase;color:var(--muted);background:var(--table-heading);padding:13px 23px;white-space:nowrap;border-block:1px solid var(--row-line)}td{padding:17px 23px;border-bottom:1px solid var(--row-line);white-space:nowrap}tr:last-child td{border-bottom:0}td strong{font-weight:600}td small{display:block;margin-top:5px}tr[data-event]{cursor:pointer}tr[data-event]:hover{background:var(--row-hover)}.score{display:flex;align-items:center;gap:9px;font-variant-numeric:tabular-nums}.score-track{width:45px;height:4px;background:var(--surface-raised);border-radius:5px}.score-track i{display:block;height:4px;background:var(--accent);border-radius:5px}.site-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:13px}.site-card{padding:17px;border:1px solid var(--line);border-radius:8px}.site-card small{display:block;margin-top:7px}.site-card .count{float:right;color:var(--link);font-weight:600}.filters{display:flex;flex-wrap:wrap;gap:10px;padding:18px 23px;border-block:1px solid var(--line);align-items:center}.filters select,.filters input{border:1px solid var(--line);border-radius:6px;background:var(--surface);padding:9px;color:var(--ink);max-width:190px;font-size:12px}.filters .search{flex:1;min-width:150px;max-width:none}.filters label{font-size:11px;display:flex;align-items:center;gap:6px;color:var(--muted)}.pagination{padding:17px 23px;display:flex;align-items:center;justify-content:space-between}.pagination>div{display:flex;gap:7px}.empty{padding:52px 24px;text-align:center;color:var(--muted);line-height:1.8}.empty strong{display:block;color:var(--ink);font-size:16px;margin-bottom:5px}.banner{padding:12px 17px;border:1px solid var(--warning-border);background:var(--warning-surface);color:var(--warning);border-radius:7px;margin-bottom:20px;font-size:12px;line-height:1.7}.banner.demo{margin:0;border:0;border-radius:0;background:var(--blue-surface);color:var(--link);text-align:center}.device-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:20px}.device-card{padding:23px}.device-card .row{display:flex;justify-content:space-between;gap:10px;margin-bottom:16px}.device-card h3{margin-bottom:7px}.kv{display:grid;grid-template-columns:1fr 1fr;gap:16px;border-top:1px solid var(--line);padding-top:17px;margin-top:18px}.kv small{display:block;margin-bottom:6px}.kv strong{font-size:12px;font-weight:500}.device-id{font:11px monospace;overflow-wrap:anywhere;color:var(--muted)}.detail-grid{display:grid;grid-template-columns:1.3fr 1fr;gap:22px}.detail-facts{display:grid;grid-template-columns:1fr 1fr;gap:22px;padding:8px 24px 25px}.detail-facts dt{color:var(--muted);font-size:11px;margin-bottom:8px}.detail-facts dd{margin:0;font-weight:500;font-size:13px;overflow-wrap:anywhere}.detail-score{font:36px Space;color:var(--accent)}.note{padding:18px 0;border-bottom:1px solid var(--row-line);line-height:1.7}.note p{white-space:pre-wrap;margin:8px 0;font-size:12px}.note small{font-size:10px}.form{display:grid;gap:15px;padding:5px 24px 24px}.form label{font-size:12px;font-weight:500;display:grid;gap:8px}.form input,.form textarea,.form select{width:100%;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:6px;padding:10px;min-width:0}.form textarea{min-height:100px;resize:vertical}.form .inline{display:grid;grid-template-columns:1fr 1fr;gap:13px}.form .btn{justify-self:start}details{margin:22px 0}summary{cursor:pointer;color:var(--link)}pre{white-space:pre-wrap;word-break:break-all;background:var(--surface-inset);padding:15px;border-radius:8px;font-size:11px;line-height:1.7;max-height:420px;overflow:auto}.footnote{font-size:11px;color:var(--muted);margin-top:22px;line-height:1.8}.loading{padding:80px;text-align:center}.login{max-width:460px;margin:12vh auto;background:var(--surface);padding:42px;border-radius:16px;border:1px solid var(--line)}.login .brand{color:var(--sidebar);margin-bottom:40px}.login p{margin:20px 0 28px;color:var(--muted)}.login .btn{width:100%}.login code{font-size:12px;word-break:break-all}.mobile-title{display:none}dialog{border:1px solid var(--line);border-radius:14px;padding:28px;max-width:460px;width:calc(100% - 40px);box-shadow:0 20px 100px #092f3b33;color:var(--ink)}dialog::backdrop{background:#092a3b66;backdrop-filter:blur(3px)}dialog p{margin:17px 0 25px;color:var(--muted)}dialog .actions{display:flex;justify-content:flex-end;gap:9px}#toast{position:fixed;bottom:26px;left:50%;transform:translateX(-50%);background:var(--ink);color:var(--surface);padding:14px 24px;border-radius:9px;box-shadow:0 8px 30px #123c4433;z-index:50;max-width:90vw;display:none;font-size:13px}.error-text{color:var(--error);font-size:12px}.map{background:var(--surface-raised);border:1px solid var(--line);border-radius:8px;height:180px;width:100%}.map text{font:10px Inter;fill:var(--muted)}.map circle{fill:var(--success);stroke:var(--surface);stroke-width:2}.map line{stroke:var(--line)}.admin-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}.link-btn{border:0;background:none;color:var(--link);padding:0;font:inherit;cursor:pointer}.wordbreak{white-space:normal;overflow-wrap:anywhere}.legend{display:flex;gap:12px;font-size:10px;color:var(--muted);margin-top:10px}.muted strong{color:var(--ink)}.page-actions{display:flex;gap:9px}.status-note{margin:14px 0;font-size:12px}.page-enter{animation:enter .2s ease}@keyframes enter{from{opacity:.6;transform:translateY(4px)}to{opacity:1;transform:none}}@media(max-width:1100px){.sidebar{width:200px;padding:25px 16px}.shell{grid-template-columns:200px 1fr}.content{padding:28px 24px}.topbar{padding:0 24px}.grid{grid-template-columns:1fr}.stats{gap:12px}.stat{padding:18px 15px}.stat-icon{display:none}.admin-grid{grid-template-columns:1fr}}@media(max-width:760px){.shell{display:block}.sidebar{position:sticky;top:0;width:100%;padding:12px 16px;display:block}.sidebar .brand{font-size:20px}.sidebar .brand img{width:27px;height:27px}.sidebar .brand small,.nav-label,.sidebar .bottom{display:none}.sidebar nav{display:flex;margin-top:12px;overflow:auto;gap:5px}.nav{padding:9px 12px;font-size:12px}.nav svg{width:15px;height:15px}.nav.active:after{display:none}.topbar{height:64px;padding:0 16px}.topbar select{max-width:180px;font-size:12px}.topbar .right small{display:none}.mobile-title{display:block}.content{padding:23px 16px}.heading{align-items:start}h1{font-size:27px}.heading p{font-size:12px}.stats{grid-template-columns:1fr 1fr;gap:10px}.stat .number{font-size:28px}.stat small{font-size:10px}.panel-head{padding:20px 17px}.panel-body{padding:0 17px 20px}.detail-grid{grid-template-columns:1fr}.filters{padding:14px}.filters select{max-width:160px}.filters .search{width:100%;flex-basis:100%}.device-grid{grid-template-columns:1fr}td,th{padding:14px 17px}.login{margin:7vh 16px;padding:30px}.page-actions{flex-direction:column}.detail-facts{padding:8px 17px 20px}.form{padding:4px 17px 20px}.admin-grid{grid-template-columns:1fr}}
.link-btn svg{width:16px;height:16px;vertical-align:middle} .panel[aria-busy=true]{opacity:.7}
.device-card .row{align-items:flex-start}
/* Sensor-first navigation and location editing. */
.geo-map{height:340px;width:100%;border-radius:9px;background:var(--surface-raised);z-index:0}.geo-map.full-map{height:620px;border-radius:12px 12px 0 0}.geo-map.detail-map{height:330px}.sensor-map-panel{margin-top:24px}.leaflet-container{font:12px Inter,system-ui,sans-serif}.leaflet-popup-content p{margin:8px 0}.leaflet-control-attribution{font-size:10px}.map-layout{display:grid;grid-template-columns:minmax(0,2.4fr) minmax(250px,1fr);gap:22px}.map-device{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 0;border-bottom:1px solid var(--line);color:var(--ink)}.map-device small{display:block;margin-top:7px}.device-link{color:inherit;transition:border-color .15s,box-shadow .15s}.device-link:hover{border-color:var(--accent);box-shadow:0 4px 18px #173f460a}.device-open{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);margin-top:20px;padding-top:15px;color:var(--link);font-size:12px;font-weight:600}.device-open svg{width:17px;height:17px}.spaced{margin-top:24px}.add-device{max-width:650px;margin-top:24px}.add-device summary{padding:20px 24px;font-weight:600}.inline-actions{display:flex;gap:10px;flex-wrap:wrap}.member-row{display:flex;gap:12px;align-items:center;flex-wrap:wrap;padding:12px 0;border-bottom:1px solid var(--row-line)}.people-layout{display:grid;grid-template-columns:minmax(280px,1fr) minmax(360px,1.4fr);gap:22px;align-items:start}.search-row{display:flex;gap:8px;margin-bottom:16px}.search-row input{width:100%;min-width:0;border:1px solid var(--line);border-radius:7px;padding:11px}.person-choice{display:flex;align-items:center;justify-content:space-between;gap:16px;text-align:left;width:100%;border:0;border-bottom:1px solid var(--line);background:var(--surface);padding:15px 8px;color:var(--ink)}.person-choice:hover,.person-choice:focus{background:var(--row-hover)}.person-choice small{display:block;margin-top:5px;overflow-wrap:anywhere}.person-choice svg{width:17px;height:17px;flex:none}.person-choice>span:last-child{font-size:11px;color:var(--muted)}.person-choice strong{font-size:13px}.form fieldset{border:0;padding:0;margin:0;min-width:0;display:grid;gap:20px}.form fieldset:disabled{opacity:.5}.selection-toolbar{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px;font-size:12px}.sensor-checklist{max-height:360px;overflow:auto;border:1px solid var(--line);border-radius:8px}.form label.sensor-check{display:flex;gap:12px;align-items:center;padding:15px;border-bottom:1px solid var(--row-line);cursor:pointer}.form .sensor-check input{width:17px;height:17px;accent-color:var(--success);flex:none}.sensor-check small{display:block;font-weight:400;margin-top:6px;overflow-wrap:anywhere}#selected-person{overflow-wrap:anywhere}#directory-more{margin-top:16px}#scope-note{font-size:12px}#location-save-status{font-size:12px;color:var(--muted)}[hidden]{display:none!important}@media(max-width:1000px){.map-layout,.people-layout{grid-template-columns:1fr}.geo-map.full-map{height:420px}}@media(max-width:760px){.geo-map{height:300px}.inline-actions .btn{font-size:11px;padding:10px}.form .inline{gap:8px}.people-layout{gap:16px}.sensor-checklist{max-height:270px}}

/* Shared Gateway visual language. */
.sidebar{border-right:1px solid var(--line)}.brand{color:var(--ink);font-size:22px}.brand img{background:#030914;border-radius:6px}.nav{border:1px solid transparent;font-size:12px}.nav:hover{background:var(--nav-hover)}.nav.active{border-color:var(--nav-active-border);color:var(--ink)}.nav.active:after{display:none}.nav.active svg{color:var(--accent)}.panel,.stat{border-radius:10px}.theme-toggle{padding:8px}.theme-toggle svg{width:16px;height:16px}dialog{background:var(--surface)}#toast{background:var(--ink);color:var(--canvas)}.chart polygon{fill:var(--surface-raised)}.chart line{stroke:var(--line)}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:var(--surface);color:var(--ink)}.leaflet-bar a{background:var(--surface);color:var(--ink)}.leaflet-control-attribution{background:var(--surface)!important;color:var(--muted)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}

.workspace-sharing .form>p{font-size:12px;line-height:1.7}.workspace-sharing .form>p.footnote{margin-top:0}.workspace-sharing legend{font-size:12px;font-weight:600;margin-bottom:12px}.workspace-sharing .sensor-check:has(input:disabled){cursor:default;background:var(--surface-inset)}#share-sensor-status{font-size:12px;color:var(--muted)}
