@font-face{font-family:Bricolage Grotesque;src:url(/fonts/BricolageGrotesque.ttf) format("truetype");font-weight:200 800;font-display:swap}@font-face{font-family:Instrument Sans;src:url(/fonts/InstrumentSans.ttf) format("truetype");font-weight:400 700;font-display:swap}:root{--ink: #0e2230;--bg: #f3f5f4;--surface: #fff;--border: #dce3e1;--divider: #edf1f0;--text-2: #4a5a63;--tab-inactive: #5b6b73;--teal: #0f6e6a;--teal-dark: #0a4f4c;--teal-tint: #e6f2f0;--mint: #5fc4b8;--on-dark-muted: #b9c7cc;--on-dark-soft: #d5dee1;--on-teal-muted: #cfe3e1;--dark-track: #2a3e4b;--video: #123a40;--video-track: #2f5c61;--track: #e3e9e7;--checkbox: #9aa8ae;--disabled: #dde3e1;--accent: #c2491b;--warn-tint: #fff1e8;--warn-text: #7a2e10;--warn-icon: #9a3a14;--display: "Bricolage Grotesque", system-ui, sans-serif;--sans: "Instrument Sans", system-ui, -apple-system, "Segoe UI", sans-serif;color-scheme:light}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.5 var(--sans);-webkit-font-smoothing:antialiased}h1,h2,h3,h4{font-family:var(--display);font-weight:700;letter-spacing:-.01em;line-height:1.15;margin:0}p{margin:0}a{color:var(--teal)}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:3px solid var(--mint);outline-offset:2px}.muted{color:var(--text-2)}.small{font-size:14px}.tiny{font-size:13px}.display{font-family:var(--display);font-weight:700}.stack{display:flex;flex-direction:column;gap:var(--gap, 14px)}.row{display:flex;align-items:center;gap:var(--gap, 10px);flex-wrap:wrap}.row.between{justify-content:space-between}.row.baseline{align-items:baseline}.grow{flex:1;min-width:0}.center{text-align:center}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.card{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:18px;display:flex;flex-direction:column;gap:10px}.eyebrow{font-size:13px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--teal)}.notice{background:var(--teal-tint);color:var(--teal-dark);border-radius:10px;padding:10px 12px;font-size:14px}.error-box{background:var(--warn-tint);color:var(--warn-text);border-radius:10px;padding:10px 12px;font-size:14px}.pill{display:inline-flex;align-items:center;font-size:13px;font-weight:600;padding:4px 10px;border-radius:99px;background:var(--track);color:var(--text-2);white-space:nowrap}.pill.teal{background:var(--teal);color:#fff}.pill.tint{background:var(--teal-tint);color:var(--teal-dark)}.pill.warn{background:var(--warn-tint);color:var(--warn-text)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 18px;border-radius:12px;border:1px solid transparent;font-size:15px;font-weight:600;text-decoration:none;cursor:pointer;transition:opacity .15s,background .15s;white-space:nowrap}.btn:active{opacity:.85}.btn:disabled{cursor:default}.btn.primary{background:var(--accent);color:#fff;min-height:54px;border-radius:14px;font-size:17px;width:100%}.btn.primary:disabled{background:var(--disabled);color:var(--text-2);font-size:16px}.btn.filled{background:var(--teal);color:#fff}.btn.outline{background:var(--surface);color:var(--teal);border-color:var(--teal)}.btn.outline:hover{background:var(--teal-tint)}.btn.ghost{background:transparent;color:var(--teal);padding:0 8px}.btn.danger{background:var(--surface);color:var(--accent);border-color:var(--border)}.btn.block{width:100%}.btn.small{min-height:34px;padding:0 12px;font-size:14px;border-radius:10px}.spinner{width:22px;height:22px;border-radius:50%;border:3px solid currentColor;border-right-color:transparent;animation:spin .8s linear infinite;opacity:.7}.loading{display:flex;justify-content:center;padding:80px 0;color:var(--teal)}@keyframes spin{to{transform:rotate(360deg)}}.field{display:flex;flex-direction:column;gap:6px;font-size:14px;font-weight:600}.field input,.field select,.field textarea,.input{min-height:46px;padding:10px 12px;border:1px solid var(--border);border-radius:12px;background:var(--surface);font-size:16px;font-weight:400}.field textarea{min-height:90px;resize:vertical}.field input:focus,.field select:focus,.field textarea:focus,.input:focus{outline:2px solid var(--teal);outline-offset:-1px;border-color:var(--teal)}.shell{min-height:100vh;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;gap:16px;padding:12px 20px;background:var(--bg);position:sticky;top:0;z-index:10;border-bottom:1px solid transparent}.topbar.scrolled{border-bottom-color:var(--border)}.brand{display:inline-flex;align-items:center;gap:10px;text-decoration:none;color:inherit}.brand .name{font-family:var(--display);font-weight:700;font-size:21px;letter-spacing:-.02em}.topbar .spacer{flex:1}.menu{position:relative}.menu>button{background:none;border:0;cursor:pointer;font-size:14px;color:var(--text-2);padding:8px;border-radius:8px}.menu-list{position:absolute;right:0;top:calc(100% + 6px);min-width:200px;background:var(--surface);color:var(--ink);border:1px solid var(--border);border-radius:12px;box-shadow:0 10px 30px #0e22301f;padding:6px;display:flex;flex-direction:column;z-index:20}.menu-list a,.menu-list button{text-align:left;padding:10px 12px;border-radius:8px;border:0;background:none;text-decoration:none;color:inherit;font-size:15px;cursor:pointer}.menu-list a:hover,.menu-list button:hover{background:var(--bg)}.menu-list .who{padding:8px 12px;font-size:13px;color:var(--text-2);border-bottom:1px solid var(--divider);margin-bottom:4px}.page{width:100%;max-width:620px;margin:0 auto;padding:8px 20px 32px;flex:1}.page.wide{max-width:1180px}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px}.kpi{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:16px}.kpi .label{font-size:13px;color:var(--text-2)}.kpi .value{font-family:var(--display);font-weight:700;font-size:28px;line-height:1.2;margin-top:4px}.kpi .hint{font-size:13px;color:var(--text-2)}.table-wrap{overflow-x:auto;margin:0 -18px;padding:0 18px}table{width:100%;border-collapse:collapse;font-size:14px}th{text-align:left;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-2);padding:8px 10px;border-bottom:1px solid var(--border);white-space:nowrap}td{padding:10px;border-bottom:1px solid var(--divider);vertical-align:middle}tr:last-child td{border-bottom:0}.section-title{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap}.section-title h2{font-size:20px}dialog{border:0;border-radius:20px;padding:24px;width:min(480px,calc(100vw - 32px));box-shadow:0 20px 60px #0e223040;color:var(--ink)}dialog::backdrop{background:#0e223066}.auth-page{min-height:100vh;display:grid;place-items:center;padding:24px 20px}.auth-card{width:min(440px,100%)}.demo-users{display:grid;gap:8px}.demo-users button{justify-content:space-between}.alert-banner{border:1px solid var(--border);border-left:4px solid var(--warn-icon);background:var(--warn-tint);color:var(--warn-text);border-radius:12px;padding:10px 14px}.alert-banner.critical{border-left-color:var(--accent)}.alert-banner strong{display:block;color:var(--ink)}.sensor-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px;align-items:start}.facts{display:grid;grid-template-columns:1fr auto;gap:6px 14px;margin:10px 0 0;font-size:14px}.facts dt{color:var(--text-2)}.facts dd{margin:0;text-align:right;font-variant-numeric:tabular-nums}.map-frame{width:100%;height:240px;border:0;border-radius:12px;background:var(--track)}.chart{width:100%;height:auto;display:block}.chart text{font-size:11px;fill:var(--text-2);font-family:var(--sans)}.chart-legend{display:flex;gap:14px;font-size:13px;color:var(--text-2)}.chart-legend span:before{content:"";display:inline-block;width:10px;height:3px;border-radius:2px;margin-right:6px;vertical-align:middle;background:var(--c)}.seg{display:inline-flex;gap:6px;flex-wrap:wrap}.seg .btn.active{background:var(--teal);color:#fff;border-color:var(--teal)}.key-box{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:13px;background:var(--bg);border:1px solid var(--border);border-radius:10px;padding:10px 12px;white-space:pre-wrap;word-break:break-all}
