.uplot,.uplot *,.uplot :before,.uplot :after{box-sizing:border-box}.uplot{width:min-content;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}.u-title{text-align:center;font-size:18px;font-weight:700}.u-wrap{-webkit-user-select:none;user-select:none;position:relative}.u-over,.u-under{position:absolute}.u-under{overflow:hidden}.uplot canvas{width:100%;height:100%;display:block;position:relative}.u-axis{position:absolute}.u-legend{text-align:center;margin:auto;font-size:14px}.u-inline{display:block}.u-inline *{display:inline-block}.u-inline tr{margin-right:16px}.u-legend th{font-weight:600}.u-legend th>*{vertical-align:middle;display:inline-block}.u-legend .u-marker{width:1em;height:1em;margin-right:4px;background-clip:padding-box!important}.u-inline.u-live th:after{content:":";vertical-align:middle}.u-inline:not(.u-live) .u-value{display:none}.u-series>*{padding:4px}.u-series th{cursor:pointer}.u-legend .u-off>*{opacity:.3}.u-select{pointer-events:none;background:#00000012;position:absolute}.u-cursor-x,.u-cursor-y{pointer-events:none;will-change:transform;position:absolute;top:0;left:0}.u-hz .u-cursor-x,.u-vt .u-cursor-y{border-right:1px dashed #607d8b;height:100%}.u-hz .u-cursor-y,.u-vt .u-cursor-x{border-bottom:1px dashed #607d8b;width:100%}.u-cursor-pt{pointer-events:none;will-change:transform;border:0 solid;border-radius:50%;position:absolute;top:0;left:0;background-clip:padding-box!important}.u-axis.u-off,.u-select.u-off,.u-cursor-x.u-off,.u-cursor-y.u-off,.u-cursor-pt.u-off{display:none}:root{--green:#0b6e4f;--sand:#f6f4ee;--ink:#1d2a24;--muted:#66736c;--line:#ddd8cc;--ok:#1e8449;--warn:#b9770e;--bad:#c0392b;color:var(--ink);background:var(--sand);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.4}*{box-sizing:border-box}body{margin:0}a{color:var(--green)}h1{margin:.5rem 0 1rem;font-size:1.4rem}h2{margin:1rem 0 .5rem;font-size:1.1rem}main{max-width:1200px;margin:0 auto;padding:.75rem}.muted{color:var(--muted);font-weight:400}.ok{color:var(--ok)}.warn{color:var(--warn)}.bad,.error{color:var(--bad)}.offline{background:#fdebd0;margin:0;padding:.4rem .75rem;font-size:.9rem}header.top{background:var(--green);color:#fff;z-index:10;flex-wrap:wrap;align-items:center;gap:.5rem 1rem;padding:.5rem .75rem;display:flex;position:sticky;top:0}header.top a{color:#fff;text-decoration:none}.brand{align-items:center;gap:.4rem;font-weight:600;display:flex}header.top nav{flex:auto;order:3;gap:.25rem;width:100%;display:flex;overflow-x:auto}header.top nav a{white-space:nowrap;opacity:.85;border-radius:6px;padding:.35rem .6rem}header.top nav a.active{opacity:1;background:#fff3}.who{gap:.5rem;margin-left:auto;display:flex}@media (min-width:900px){header.top nav{order:0;width:auto}}button,.button{font:inherit;cursor:pointer;background:var(--green);color:#fff;border:0;border-radius:8px;margin:.15rem 0;padding:.55rem .9rem;text-decoration:none;display:inline-block}button.secondary,.button.secondary{color:var(--green);border:1px solid var(--line);background:#fff}button.danger{color:var(--bad);border:1px solid var(--bad);background:#fff}button.active{background:var(--green);color:#fff}button.link{color:inherit;background:0 0;padding:.2rem .4rem;text-decoration:underline}button:disabled{opacity:.5;cursor:default}input,select,textarea{font:inherit;border:1px solid var(--line);background:#fff;border-radius:6px;width:100%;padding:.45rem}textarea{min-height:5rem}label{margin:.4rem 0;font-size:.9rem;display:block}label.check{align-items:center;gap:.5rem;display:flex}label.check input{width:auto}fieldset{border:1px solid var(--line);border-radius:8px;margin:.5rem 0}.row{flex-wrap:wrap;align-items:end;gap:.5rem;display:flex}.row>*{flex:8rem}.form{max-width:640px}.cards{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:.75rem;display:grid}.card{border:1px solid var(--line);color:inherit;background:#fff;border-radius:12px;padding:.75rem;text-decoration:none;display:block}.card-head{justify-content:space-between;gap:.5rem;margin-bottom:.4rem;display:flex}.card dl{grid-template-columns:auto 1fr;gap:.15rem .75rem;margin:0;font-size:.92rem;display:grid}.card dt{color:var(--muted)}.card dd{text-align:right;margin:0}.card dd.big{font-size:1.3rem;font-weight:600}.badges{flex-wrap:wrap;gap:.3rem;margin-top:.5rem;display:flex}.badge{color:var(--warn);background:#fdf2e9;border:1px solid #f5cba7;border-radius:999px;padding:.1rem .55rem;font-size:.78rem}.badge.bad{color:var(--bad);background:#fdedec;border-color:#f5b7b1}.panel{border:1px solid var(--line);background:#fff;border-radius:12px;margin:.75rem 0;padding:.75rem}.two-col{gap:.75rem;display:grid}@media (min-width:900px){.two-col{grid-template-columns:1fr 1fr}}.device-head{justify-content:space-between;align-items:start;gap:1rem;display:flex}.ranges{margin:.5rem 0}.charts{gap:.5rem;display:grid}@media (min-width:900px){.charts{grid-template-columns:1fr 1fr}}.chart{border:1px solid var(--line);background:#fff;border-radius:10px;margin:0;padding:.4rem}.chart figcaption{margin-bottom:.2rem;font-size:.9rem;font-weight:600}.timeline{margin:0;padding:0;font-size:.9rem;list-style:none}.timeline li{border-bottom:1px solid #eee9de;padding:.3rem 0}.timeline time{color:var(--muted);font-variant-numeric:tabular-nums;margin-right:.4rem}.timeline li.ok:before{content:"✓ ";color:var(--ok)}.timeline li.bad:before{content:"✗ ";color:var(--bad)}.quality{padding:0;list-style:none}.q{min-width:7rem;display:inline-block}.q-synced{color:var(--ok)}.q-interpolated{color:#2471a3}.q-back-filled{color:var(--warn)}.q-unknown{color:var(--bad)}.field-device{border:2px solid var(--line);background:#fff;border-radius:14px;margin:.75rem 0;padding:.9rem}.window{font-size:1.1rem}.window.open{color:var(--green);font-weight:600}.hotspot{background:#eaf4ef;border-radius:8px;padding:.5rem}.steps{padding:0;font-size:1.1rem;list-style:none}.steps li{padding:.35rem 0 .35rem 2rem;position:relative}.steps li:before{text-align:center;width:1.5rem;position:absolute;left:0}.steps li.todo{color:var(--muted)}.steps li.todo:before{content:"○"}.steps li.doing:before{content:"◐";color:var(--warn)}.steps li.done:before{content:"✓";color:var(--ok);font-weight:700}.checklist ul{padding:0;font-size:1.05rem;list-style:none}.checklist li.ok{color:var(--ok)}.ready{font-size:1.3rem;font-weight:700}.picker{gap:.4rem;padding:0;list-style:none;display:grid}.picker .button{text-align:left;width:100%}pre{border:1px solid var(--line);background:#fff;border-radius:8px;padding:.6rem;font-size:.85rem;overflow-x:auto}pre.token{-webkit-user-select:all;user-select:all;font-size:1rem}.map{border:1px solid var(--line);border-radius:12px;height:360px;margin:.5rem 0;overflow:hidden}.nest-dot{background:var(--green);width:16px;height:16px;box-shadow:0 0 0 1px var(--green);cursor:pointer;border:2px solid #fff;border-radius:50%;padding:0}.nest-dot.selected{background:var(--bad)}.nest-list{padding:0;list-style:none}.nest-list li{padding:.3rem 0}.nest-list li.selected a{font-weight:700}table.prefs{border-collapse:collapse;font-size:.85rem;display:block;overflow-x:auto}table.prefs th,table.prefs td{border-bottom:1px solid var(--line);text-align:center;padding:.3rem}table.prefs th:first-child{text-align:left}table.prefs select{width:auto;padding:.15rem}.commands{flex-wrap:wrap;gap:.4rem;display:flex}.login{text-align:center;max-width:360px;margin:10vh auto}.login form{text-align:left}.login button{width:100%;margin-top:.5rem}
