:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,sans-serif;color:#203b34;background:#f3f6f5;line-height:1.5;font-synthesis:none;--green:#287d65;--muted:#657870;--border:#dee7e2;--warn:#966012;--critical:#b8423b}*{box-sizing:border-box}[hidden]{display:none!important}body{margin:0}header{height:76px;padding:0 36px;background:#183c37;color:#f6faf6;display:flex;align-items:center;justify-content:space-between}header a{color:inherit;text-decoration:none;letter-spacing:.16em;font-size:15px}header b{color:#c2e6c9}header span{color:#c4d7cf;font-size:12px}main{max-width:1660px;margin:auto;padding:0 36px}.shell{display:grid;grid-template-columns:190px minmax(0,1fr);gap:38px}aside{border-right:1px solid var(--border);padding:36px 24px 24px 0;min-height:calc(100vh - 76px)}aside nav{display:grid;gap:7px;position:sticky;top:24px}aside a{display:flex;gap:12px;padding:12px 14px;color:#52675d;text-decoration:none;font-size:13px;font-weight:650;border-radius:9px}aside a.active{background:#deebe4;color:#21634d}.sidebar-foot{margin-top:60px;font-size:12px;color:#61796d}.sidebar-foot p{font-size:11px}.connection-dot{display:inline-block;background:#498667;width:6px;height:6px;border-radius:50%;margin-right:6px}.content{min-width:0;padding:34px 0 24px}h1{font-size:clamp(32px,3.7vw,48px);letter-spacing:-.045em;line-height:1.12;margin:9px 0 13px;font-weight:650}h2{font-size:22px;letter-spacing:-.025em;margin:0;line-height:1.3}h3{font-size:15px;font-weight:650;margin:0}.eyebrow{font-size:10px!important;letter-spacing:.16em;font-weight:750;color:#5b7f69;margin:0 0 10px}p{font-size:13px;color:var(--muted);margin:10px 0 16px}.heading{display:flex;align-items:center;justify-content:space-between;gap:24px}.page-heading{margin-bottom:24px}.sync{display:grid;gap:10px;justify-items:end;font-size:11px;color:var(--muted)}.summary-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-bottom:28px}.summary{display:grid;grid-template-columns:1fr auto;align-items:center;padding:18px 22px;border-radius:12px}.summary span{font-size:12px;font-weight:600}.summary strong{grid-column:2;grid-row:1/3;font-size:36px;font-weight:550;line-height:1.1}.summary small{font-size:11px;color:var(--muted)}.summary:last-child{background:#f0f1e6}.summary:last-child strong{color:#776b37}section,article{background:#fff;border:1px solid var(--border);border-radius:14px;padding:24px}section{margin-bottom:24px}.fleet-section{padding:0;background:none;border:0;margin-bottom:30px}.fleet-section .heading{margin-bottom:15px}.search-label{min-width:230px}.fleet{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}.device{background:white;color:#263d32;border:1px solid var(--border);border-radius:12px;text-align:left;padding:18px;position:relative}.device.active{background:#eef6ef;border-color:#81b29a;box-shadow:inset 0 0 0 1px #81b29a}.device-top{display:flex;justify-content:space-between;gap:16px;font-size:14px}.device>.muted{display:block;margin:4px 0 12px}.device-values{display:flex;gap:24px;margin-top:14px;font-size:19px;font-weight:550}.device-warning{display:block;margin-top:9px;color:#9b472d;font-size:11px}.device-toolbar{display:flex;justify-content:space-between;align-items:center;gap:20px}.device-toolbar h2{font-size:28px;margin-bottom:8px}.device-toolbar .eyebrow{margin-bottom:6px}.tabs{display:flex;gap:25px;border-bottom:1px solid var(--border);margin:18px 0 24px;overflow:auto}.tabs a{text-decoration:none;color:#64796e;font-size:13px;padding:13px 0;white-space:nowrap;border-bottom:3px solid transparent;font-weight:600}.tabs a.active{color:#20694e;border-color:#398166}.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-bottom:24px}.gauge{padding:22px;--accent:#46957b;position:relative}.gauge-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:9px}.metric-icon{font-size:19px;color:#739585;background:#eef4ef;border-radius:8px;min-width:30px;text-align:center}.gauge.humidity{--accent:#4f88aa}.gauge.neutral{--accent:#87948a}.gauge.warning{--accent:#bf8a32;border-color:#e4c995}.gauge.critical{--accent:#c15a51;border-color:#e5b2a9}.gauge svg{width:100%;height:170px;display:block;margin:20px 0 0}.track,.arc{fill:none;stroke-width:16;stroke-linecap:round}.track{stroke:#ecf1ed}.arc{stroke:var(--accent)}.needle{fill:var(--accent);stroke:#fff;stroke-width:2}.gaugeValue{fill:#263e33;font-size:29px;font-weight:650;font-variant-numeric:tabular-nums}.unit{fill:#738478;font-size:13px}.bounds{display:flex;justify-content:space-between;font-size:10px;color:#748779}.stamp{border-top:1px solid #edf1ee;padding-top:15px;font-size:12px;font-weight:650;color:#3e5e4d;margin:16px 0 2px}.muted{font-size:11px;color:var(--muted)}.gauge .muted{margin:0}.metric-foot{font-size:10px;margin:12px 0 0;color:#718375}.badge{display:inline-flex;align-items:center;gap:5px;padding:4px 9px;border-radius:6px;font-size:10px;font-weight:650;line-height:1.45}.badge.good{background:#eaf3eb;color:#286847}.badge.neutral{background:#eef1ee;color:#63746a}.badge.warning{background:#faf1dc;color:#8b5b15}.badge.critical{background:#fbe9e5;color:#a63830}.notice{padding:13px 16px;border-radius:9px;font-size:12px;margin:0 0 14px;border:1px solid}.notice.warning{color:#825916;background:#fff8e7;border-color:#ecdaae}.notice.critical{color:#9d3e36;background:#fff0ed;border-color:#efc3bc}.detail-grid{display:grid;grid-template-columns:1.15fr 1fr;gap:20px}.detail-grid section{margin-bottom:0}.insight{background:#e9f0e8}.insight h2{margin-bottom:20px}.insight a{font-size:12px;font-weight:650}.facts{display:grid;grid-template-columns:minmax(100px,1fr) minmax(90px,1fr);gap:0 18px;font-size:12px;margin:20px 0 0}.facts dt,.facts dd{padding:11px 0;border-bottom:1px solid #e8eee9;margin:0;overflow-wrap:anywhere}.facts dt{color:#6a7d71}.facts dd{text-align:right;font-weight:500}.controls{display:flex;align-items:center;gap:12px}label{display:block;font-size:11px;font-weight:650;color:#4c6556;margin:8px 0}input,select,textarea{display:block;font:inherit;font-size:14px;width:100%;padding:11px 12px;border:1px solid #ccdacf;border-radius:8px;margin-top:6px;background:#fff;color:#243e30;min-height:44px}textarea{resize:vertical}select{min-width:160px}input[readonly]{background:#edf2ee}button{background:#286f55;color:#fff;font:inherit;font-size:12px;font-weight:650;border:1px solid transparent;border-radius:8px;padding:11px 16px;min-height:44px;cursor:pointer;transition:background .15s}button:hover{filter:brightness(.96)}button:disabled{opacity:.55;cursor:wait}.secondary{background:#e9efea;color:#3f6350}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible,textarea:focus-visible{outline:3px solid #73a98a;outline-offset:3px}.legend{display:flex;gap:24px;margin-top:20px}.legend label,.check{display:flex;gap:9px;align-items:center;font-size:12px}.legend input,.check input{width:17px;min-height:17px;height:17px;margin:0;accent-color:#327956}.legend label:first-child{color:#b85e42}.legend label:last-child{color:#4079a4}canvas{width:100%;height:300px;display:block}.chart-readout{min-height:38px;background:#f1f5f1;border-radius:6px;padding:10px 12px;font-size:11px;font-variant-numeric:tabular-nums}#chartNote{font-size:11px}.stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:22px 0}.stat{padding:18px;background:#f7f9f6;border:0;border-radius:10px}.stat-value{font-size:25px;margin:12px 0 0;color:#345440;font-weight:600}.stat small{font-size:10px;color:var(--muted)}.stat .facts{margin-top:8px;font-size:11px;grid-template-columns:1fr 1fr;gap:0 8px}.stat .facts dt,.stat .facts dd{padding:7px 0}.tablewrap{max-height:380px;overflow:auto;margin-top:18px}table{border-collapse:collapse;width:100%;text-align:left;font-size:12px}td,th{padding:12px 10px;border-bottom:1px solid #e7eee8;white-space:nowrap}th{color:#5d7564;font-weight:600;background:#f2f6f1;position:sticky;top:0}.mono{font-family:ui-monospace,monospace;font-size:11px}details{margin-top:18px}summary{cursor:pointer;font-size:13px;font-weight:600;padding:12px 0}.formgrid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.formgrid.three{grid-template-columns:repeat(3,minmax(0,1fr));gap:15px}fieldset{border:1px solid var(--border);border-radius:10px;margin:22px 0;padding:18px}legend{font-size:14px;font-weight:650;padding:0 8px}fieldset p{font-size:12px}#deviceForm{margin-top:24px;border-top:1px solid #e0e9e1;padding-top:15px}.login{max-width:540px;margin:9vh auto;padding:36px}.login h1{font-size:40px}.login button{width:100%;margin-top:10px}pre{white-space:pre-wrap;overflow-wrap:anywhere;background:#edf4ee;padding:16px}a{color:#286f55}footer{display:flex;justify-content:space-between;gap:15px;color:#748476;font-size:10px;border-top:1px solid var(--border);padding:20px 0;margin-top:32px}footer span{white-space:nowrap}
@media(min-width:1500px){.gauge svg{height:190px}}
@media(max-width:1100px){main{padding:0 24px}.shell{grid-template-columns:155px minmax(0,1fr);gap:24px}aside{padding-right:16px}aside a{padding:12px 9px;font-size:12px}.gauge{padding:16px}.gauge svg{height:150px}.heading{gap:14px}.summary{padding:17px}.summary small{font-size:10px}.device-toolbar h2{font-size:25px}}
@media(max-width:900px){.shell{grid-template-columns:1fr;gap:0}aside{min-height:0;border:0;padding:16px 0 0}aside>.eyebrow,.sidebar-foot{display:none}aside nav{display:flex;gap:8px;position:static}aside a{padding:10px 16px;background:#eaf0ea}.content{padding-top:25px}.grid{gap:14px}.detail-grid{gap:14px}.gauge svg{height:165px}.sync{max-width:190px}.summary strong{font-size:30px}}
@media(max-width:600px){header{height:62px;padding:0 18px}header span{display:none}main{padding:0 16px}.content{padding-top:22px}aside nav{justify-content:space-between;gap:4px}aside a{font-size:11px;padding:10px 9px;gap:5px}h1{font-size:36px}.page-heading{align-items:flex-start;gap:12px;flex-direction:column}.page-heading p{margin-bottom:8px}.sync{display:flex;align-items:center;justify-content:space-between;width:100%;max-width:none;font-size:10px}.sync button{min-height:38px;padding:8px 12px;font-size:11px}.summary-grid{gap:8px;margin-bottom:25px}.summary{display:flex;flex-direction:column;align-items:flex-start;padding:13px 11px;gap:7px}.summary span{font-size:10px}.summary strong{font-size:29px}.summary small{font-size:9px;line-height:1.4}.heading{flex-wrap:wrap}.fleet-section .heading{gap:8px}.search-label{width:100%;margin-top:5px}.fleet{display:flex;overflow-x:auto;scroll-snap-type:x proximity;padding-bottom:4px}.device{min-width:240px;max-width:100%;flex:1;scroll-snap-align:start}.device-toolbar{align-items:flex-start;flex-wrap:wrap;gap:10px}.device-toolbar label{width:100%}.device-toolbar select{width:100%}.tabs{gap:23px;margin-top:10px}.tabs a{font-size:12px}.grid{grid-template-columns:1fr;gap:14px}.gauge{padding:20px}.gauge svg{height:180px;margin-top:8px}.gauge-head h3{font-size:16px}.gauge .badge{font-size:11px}.detail-grid{grid-template-columns:1fr}.detail-grid section{padding:20px}section{padding:20px}h2{font-size:21px}.controls{width:100%;justify-content:space-between;gap:8px}.controls label{flex:1}.controls select{min-width:0}.controls button{padding:11px 12px;font-size:11px}.stats{grid-template-columns:1fr}.stat{display:grid;grid-template-columns:1fr 1fr;gap:0 12px}.stat h3{grid-column:1}.stat .stat-value{grid-column:1}.stat small{grid-column:1}.stat .facts{grid-column:2;grid-row:1/4;margin:0}.legend{gap:15px}.legend label{font-size:10px}.formgrid,.formgrid.three{grid-template-columns:1fr;gap:2px}fieldset{padding:14px}.facts{gap:0 12px;font-size:11px}.notice{font-size:11px}footer{flex-direction:column;gap:6px}input,select,textarea{font-size:16px}.login{padding:25px}.login h1{font-size:34px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

/* Account and library layouts: cards and labelled records on narrow screens. */
.customer-layout .fleet{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,250px),1fr));overflow:visible;scroll-snap-type:none}
.customer-layout article,.admin-layout section{min-width:0;overflow-wrap:anywhere}
.customer-layout .tabs,.admin-layout .tabs{flex-wrap:wrap;overflow:visible;gap:8px 22px}
.customer-layout .tabs a,.admin-layout .tabs a{white-space:normal;overflow-wrap:anywhere}
@media(max-width:700px){
.customer-layout .fleet{grid-template-columns:minmax(0,1fr);gap:16px}
.customer-layout .fleet article{padding:22px}
.customer-layout .tabs,.admin-layout .tabs{display:grid;grid-template-columns:minmax(0,1fr);gap:0}
.customer-layout .tabs a,.admin-layout .tabs a{padding:10px 0}
.customer-layout .tablewrap,.admin-layout .tablewrap{max-height:none;overflow:visible}
.stack-table,.stack-table tbody,.stack-table tr,.stack-table td{display:block;width:100%}
.stack-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
.stack-table tr{padding:8px 0;border-bottom:1px solid var(--border)}
.stack-table tr:last-child{border-bottom:0}
.stack-table td{white-space:normal;overflow-wrap:anywhere;padding:10px 0;border:0;font-size:14px}
.stack-table td::before{content:attr(data-label);display:block;color:var(--muted);font-size:11px;font-weight:650;margin-bottom:4px}
}
