:root{--bg:#f3f6f3;--card:#fff;--ink:#17221c;--muted:#68756d;--line:#dce4de;--green:#157347;--green2:#dff3e7;--red:#b42318;--shadow:0 14px 40px rgba(24,48,34,.08)}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.5 Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif}a{color:var(--green)}button,.button{border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink);padding:.65rem .9rem;font:inherit;font-weight:650;cursor:pointer;text-decoration:none}button:hover,.button:hover{border-color:#9eb7a7}.primary{background:var(--green);border-color:var(--green);color:#fff}input,select{width:100%;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink);padding:.7rem .8rem;font:inherit}.topbar{height:68px;display:flex;align-items:center;justify-content:space-between;padding:0 max(5vw,20px);background:#fff;border-bottom:1px solid var(--line)}.brand{color:var(--ink);font-size:20px;font-weight:800;text-decoration:none}.brand span{color:#2caf6d}.topbar nav{display:flex;align-items:center;gap:18px}.topbar nav form{display:inline}.link{padding:0;border:0;background:none;color:var(--green)}main{max-width:1380px;margin:auto;padding:38px max(4vw,18px) 70px}.hero{display:flex;justify-content:space-between;align-items:end;margin-bottom:28px}.hero h1{font-size:clamp(30px,5vw,52px);letter-spacing:-.045em;line-height:1;margin:.3rem 0}.eyebrow{color:var(--green);font-size:12px;font-weight:800;letter-spacing:.14em;text-transform:uppercase}.muted{color:var(--muted)}.status{background:var(--green2);border-radius:99px;padding:9px 14px;font-weight:650}.status i{display:inline-block;width:8px;height:8px;background:#20a662;border-radius:50%;margin-right:8px}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,530px),1fr));gap:20px}.card{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:22px;box-shadow:var(--shadow)}.card-head{display:flex;justify-content:space-between;gap:15px;align-items:start}.card h2,.card h3{margin-top:0}.mac{font:12px ui-monospace,monospace;color:var(--muted);margin:0}.inline{display:flex;gap:8px}.inline input{min-width:0}.controls{margin:20px 0 5px}.controls label{display:block;max-width:320px}.ranges{display:flex;gap:6px;overflow-x:auto;padding:12px 0}.ranges button{padding:.4rem .7rem;white-space:nowrap}.ranges .active{background:var(--ink);color:#fff;border-color:var(--ink)}.chart{height:280px;position:relative}.chart canvas{width:100%;height:100%;display:block}.chart-note{position:absolute;inset:0;display:grid;place-items:center;color:var(--muted);pointer-events:none}.chart-note:empty{display:none}details{border-top:1px solid var(--line);margin-top:18px;padding-top:13px}summary{cursor:pointer;font-weight:650}.sensor-edit{align-items:center;margin-top:9px}.sensor-edit span{width:70px;font:12px ui-monospace,monospace}.settings{margin-top:36px}.settings-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,270px),1fr));gap:16px}.stack{display:grid;gap:12px}.stack label{display:grid;gap:5px;font-weight:650}.danger{border-color:#f3c8c4}.danger button,.danger-button{color:var(--red);border-color:#efb5af}.alert{border-radius:14px;padding:16px 18px;margin:0 0 20px}.error{background:#fee9e7;color:var(--red)}.keybox{background:#fff7d8;border:1px solid #efda86;display:flex;align-items:center;gap:12px;flex-wrap:wrap}.keybox code{padding:7px;background:#fff;border-radius:7px;overflow-wrap:anywhere}.empty{background:#fff;border:1px dashed #aec0b4;border-radius:18px;text-align:center;padding:60px 24px}.login-wrap{min-height:calc(100vh - 145px);display:grid;place-items:center}.login-card{width:min(100%,460px);background:#fff;padding:clamp(28px,6vw,52px);border-radius:24px;box-shadow:var(--shadow)}.login-card h1{font-size:42px;line-height:1.05;letter-spacing:-.04em}.admin-layout{display:grid;grid-template-columns:minmax(270px,380px) 1fr;gap:20px}.user-row{display:flex;justify-content:space-between;align-items:center;gap:15px;padding:14px 0;border-bottom:1px solid var(--line)}.user-row small{display:block;color:var(--muted)}.row-actions{display:flex;gap:7px}.row-actions form{margin:0}@media(max-width:720px){.topbar nav>span{display:none}.topbar{padding:0 16px}.hero{align-items:start;gap:15px}.status{font-size:12px}.card{padding:17px}.card-head{display:block}.card-head .inline{margin-top:12px}.admin-layout{grid-template-columns:1fr}.user-row{align-items:start;flex-direction:column}.row-actions{width:100%;flex-wrap:wrap}.chart{height:240px}.login-card h1{font-size:34px}}
/* Chart refresh controls */
.chart-refresh{display:flex;align-items:center;justify-content:flex-end;gap:12px;flex-wrap:wrap;padding:12px 0 2px}.chart-refresh-button{padding:.45rem .75rem}.chart-refresh-button:disabled{cursor:wait;opacity:.65}.auto-refresh{display:inline-flex!important;align-items:center;gap:7px;max-width:none!important;font-weight:500!important;cursor:pointer}.auto-refresh input{width:auto;margin:0;accent-color:var(--green)}.chart-refresh-status{color:var(--muted);font-size:12px;min-height:18px}
/* Custom chart range and statistics */
.custom-range{display:flex;align-items:end;gap:8px;flex-wrap:wrap;padding:2px 0 14px}.custom-range label{display:grid!important;gap:4px;max-width:230px!important;color:var(--muted);font-size:12px}.custom-range input{min-width:210px;padding:.55rem .65rem}.custom-range-button{padding:.55rem .75rem}.custom-range-button.active{background:var(--ink);border-color:var(--ink);color:#fff}.custom-range-button:disabled{cursor:not-allowed;opacity:.6}.chart-summary{display:flex;gap:20px;flex-wrap:wrap;padding:10px 4px 0;color:var(--muted);font-size:13px}.chart-summary strong{color:var(--ink);font-size:14px}@media(max-width:720px){.custom-range{display:grid;grid-template-columns:1fr}.custom-range label{max-width:none!important}.custom-range input{min-width:0}.custom-range-button{width:100%}.chart-summary{justify-content:space-between}}
/* Device ordering */
.devices-list{display:grid;grid-template-columns:minmax(0,1fr);gap:20px}.device-order-help{display:flex;justify-content:space-between;gap:12px;min-height:22px;margin:-12px 0 16px;color:var(--muted);font-size:13px}.device-heading{display:flex;align-items:flex-start;gap:12px;min-width:0}.device-drag-handle{flex:0 0 auto;padding:.35rem .5rem;border-color:transparent;background:transparent;color:var(--muted);font-size:24px;line-height:1;cursor:grab;touch-action:none;user-select:none}.device-drag-handle:hover,.device-drag-handle:focus-visible{border-color:var(--line);color:var(--ink)}.device-drag-handle:active{cursor:grabbing}.device.dragging{opacity:.58;outline:2px dashed var(--green);outline-offset:3px}.devices-list.is-sorting{user-select:none}.device-order-error{color:var(--red)}@media(max-width:720px){.device-card-head{display:block}.device-heading{margin-bottom:12px}.device-order-help{display:grid}.device-drag-handle{margin-left:-8px}}
/* Compact interface and chart-only dashboard */
body{font-size:14px}.topbar{min-height:56px;height:56px}.topbar nav{white-space:nowrap}.topbar nav a{font-size:13px}main{padding-top:24px;padding-bottom:48px}button,.button{padding:.5rem .7rem;border-radius:9px}input,select{padding:.55rem .65rem;border-radius:9px}.card{padding:16px;border-radius:14px}.hero{margin-bottom:20px}.hero h1{font-size:clamp(28px,4vw,42px)}.settings-grid{gap:12px}.stack{gap:9px}.dashboard-heading{display:flex;align-items:end;justify-content:space-between;gap:16px;margin-bottom:14px}.dashboard-heading h1{margin:2px 0 0;font-size:clamp(26px,4vw,38px);line-height:1}.dashboard-heading .eyebrow{margin:0}.dashboard-heading .status{padding:6px 11px;font-size:12px}.devices-list{gap:12px}.device-order-help{margin:0 0 8px;min-height:18px;font-size:12px}.chart-card{padding:14px 16px}.chart-card-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.chart-card-head h2{margin:1px 0 0;font-size:20px;line-height:1.15}.chart-card-head .mac{font-size:11px}.device-heading{align-items:center;gap:8px}.device-drag-handle{padding:.2rem .38rem;font-size:20px}.chart-collapse-button{display:inline-flex;align-items:center;gap:6px;padding:.38rem .58rem;color:var(--muted);font-size:12px}.chart-collapse-icon{width:1em;font-size:16px;line-height:1}.chart-card-body[hidden]{display:none}.chart-collapsed{padding-block:10px}.chart-toolbar{display:grid;grid-template-columns:minmax(190px,260px) minmax(0,1fr) auto;align-items:end;gap:10px;margin:11px 0 4px}.sensor-control{display:grid;gap:3px;color:var(--muted);font-size:11px}.sensor-control select{font-size:14px}.ranges{display:flex;align-items:center;gap:5px;overflow-x:auto;padding:0}.ranges button{padding:.38rem .6rem;font-size:13px}.custom-range-panel{position:relative;border:0;margin:0;padding:0}.custom-range-panel>summary{padding:.4rem .58rem;border:1px solid var(--line);border-radius:9px;color:var(--ink);font-size:12px;white-space:nowrap;list-style:none}.custom-range-panel>summary::-webkit-details-marker{display:none}.custom-range-panel>summary::before{content:'▸';display:inline-block;margin-right:5px}.custom-range-panel[open]>summary::before{content:'▾'}.custom-range-panel .custom-range{position:absolute;z-index:4;right:0;top:calc(100% + 6px);display:flex;width:max-content;max-width:min(680px,calc(100vw - 40px));padding:10px;border:1px solid var(--line);border-radius:10px;background:var(--card);box-shadow:var(--shadow)}.custom-range-panel .custom-range label{width:210px}.custom-range-panel .custom-range input{min-width:0}.chart{height:300px}.chart-card-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:38px}.chart-summary{gap:16px;padding:4px 0;font-size:12px;white-space:nowrap}.chart-summary strong{font-size:13px}.chart-refresh{gap:9px;padding:4px 0}.chart-refresh-status{font-size:11px}.chart-refresh-button{padding:.38rem .6rem;font-size:12px}.auto-refresh{gap:5px;font-size:12px}.settings-hero{align-items:center}.settings-section{margin-top:24px}.settings-section>h2{margin:0 0 10px;font-size:22px}.settings-device-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,430px),1fr));gap:12px}.settings-device-card h3{margin:1px 0 0}.settings-device-title{display:flex;align-items:start;justify-content:space-between;gap:10px;margin-bottom:10px}.compact-button{font-size:12px}.sensor-settings{display:grid;gap:7px;margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}.sensor-settings>strong{font-size:13px}.sensor-settings .sensor-edit{margin:0}.compact-empty{padding-block:20px}.device-delete{margin-top:12px;padding-top:10px}.device-delete button{padding:.45rem .65rem;font-size:12px}
@media(max-width:900px){.chart-toolbar{grid-template-columns:minmax(180px,240px) 1fr}.custom-range-panel{grid-column:1/-1;justify-self:start}.custom-range-panel .custom-range{left:0;right:auto}.chart-card-footer{align-items:flex-start;flex-direction:column}.chart-refresh{align-self:stretch;justify-content:flex-end}}
@media(max-width:720px){.topbar{height:auto;min-height:54px;gap:10px}.topbar nav{gap:9px;overflow-x:auto}.topbar nav a{font-size:12px}.brand{font-size:17px}main{padding-top:18px}.dashboard-heading{align-items:center}.dashboard-heading .status{display:none}.chart-card{padding:11px}.chart-collapse-label{display:none}.chart-toolbar{grid-template-columns:1fr;margin-top:9px}.custom-range-panel{grid-column:auto}.custom-range-panel .custom-range{position:static;display:grid;width:min(100%,420px);max-width:100%;margin-top:6px}.custom-range-panel .custom-range label{width:auto}.chart{height:260px}.chart-card-footer{gap:3px}.chart-refresh{justify-content:flex-start}.chart-refresh-status{width:100%}.device-order-help{display:grid}.device-drag-handle{margin-left:-5px}.settings-device-grid{grid-template-columns:1fr}}
/* Dashboard sensor selection */
.chart-card-head h2 small{color:var(--muted);font-size:.62em;font-weight:600}.chart-toolbar.chart-toolbar-fixed{grid-template-columns:minmax(0,1fr) auto}.dashboard-sensor-picker{display:grid;gap:14px}.picker-heading{display:flex;align-items:start;justify-content:space-between;gap:16px}.picker-heading h3{margin:0 0 2px}.picker-heading p{margin:0}.picker-devices{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));gap:10px}.picker-devices fieldset{min-width:0;margin:0;padding:11px;border:1px solid var(--line);border-radius:10px}.picker-devices legend{padding:0 5px;font-weight:700}.picker-devices legend small{color:var(--muted);font:11px ui-monospace,monospace}.picker-sensors{display:grid;gap:5px}.picker-sensors label{display:flex;align-items:center;gap:8px;padding:7px 8px;border-radius:8px;background:var(--bg);cursor:pointer}.picker-sensors input{width:auto;margin:0;accent-color:var(--green)}.picker-sensors label>span{display:flex;align-items:baseline;justify-content:space-between;gap:10px;min-width:0;width:100%}.picker-sensors small{color:var(--muted)}
@media(max-width:720px){.chart-toolbar.chart-toolbar-fixed{grid-template-columns:1fr}.picker-heading{align-items:stretch;flex-direction:column}.picker-heading button{width:100%}}
/* Shared dashboard refresh, latest values and application version */
.dashboard-refresh{display:flex;align-items:center;justify-content:flex-end;gap:10px;min-height:38px;margin:0 0 10px}.dashboard-refresh-status{margin-right:auto;color:var(--muted);font-size:12px}.dashboard-refresh-button{padding:.42rem .68rem;font-size:12px}.dashboard-refresh-button:disabled{cursor:wait;opacity:.65}.chart-card-head{display:grid;grid-template-columns:minmax(0,1fr) auto auto}.chart-latest{display:grid;justify-items:end;align-content:center;min-width:190px;line-height:1.2}.chart-latest-value{color:var(--green);font-size:20px}.chart-latest-time{margin-top:3px;color:var(--muted);font-size:11px;white-space:nowrap}.site-footer{max-width:1380px;margin:-28px auto 0;padding:0 max(4vw,18px) 24px;color:var(--muted);font-size:11px;text-align:right}
@media(max-width:720px){.dashboard-refresh{align-items:flex-start;flex-wrap:wrap}.dashboard-refresh-status{width:100%;margin-right:0}.dashboard-refresh .auto-refresh{margin-right:auto}.chart-card-head{grid-template-columns:minmax(0,1fr) auto}.chart-latest{grid-column:1/-1;grid-row:2;justify-items:start;min-width:0;margin:5px 0 0 35px}.chart-latest-value{font-size:17px}.chart-latest-time{white-space:normal}.site-footer{margin-top:-18px}}
.sensor-edit{flex-wrap:wrap}.sensor-edit>input[name="name"]{flex:1 1 170px}.sensor-public-toggle{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;color:var(--muted);font-size:12px;cursor:pointer}.sensor-public-toggle input{width:auto;margin:0;accent-color:var(--green)}.sensor-edit .sensor-public-toggle span{width:auto;font:inherit}
