@font-face{font-family:LocalUI;src:local("Segoe UI")}*{box-sizing:border-box}html{color-scheme:dark;--bg:#000;--panel:#0c0e10;--panel2:#121619;--line:#242a2f;--text:#f2f4f5;--muted:#a2adb5;--accent:#c8f5ba;--accentInk:#173512;--cyan:#80c9ed;--amber:#ffd18a;--red:#ff9696;--shadow:0 20px 90px #0009;background:var(--bg);color:var(--text);font:14px LocalUI,"Segoe UI",Arial,sans-serif}html[data-theme=light]{color-scheme:light;--bg:#f8f9fa;--panel:#fff;--panel2:#f1f4f5;--line:#d8dee1;--text:#182126;--muted:#586970;--accent:#246532;--accentInk:#fff;--cyan:#14668b;--amber:#92600d;--red:#b12b35;--shadow:0 20px 90px #24303c30}body{margin:0}button,input,select{font:inherit}button,a,input,select{touch-action:manipulation}button{cursor:pointer;color:inherit}button:disabled{cursor:default;opacity:.4}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:2px solid var(--cyan);outline-offset:4px}button{border:0;background:none}.brand-icon svg,.icon-button svg,.action-buttons svg,.alerts-strip svg,footer svg,.history-record svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;flex:none}.sprite{position:absolute;width:0;height:0;overflow:hidden}.shell{height:100dvh;max-width:1920px;margin:auto;padding:20px 28px 14px;display:flex;flex-direction:column;gap:16px}.topbar{display:flex;align-items:center;justify-content:space-between;flex:none;min-height:48px}.brand{display:flex;align-items:center;gap:13px}.brand-icon{border:1px solid var(--line);border-radius:13px;width:45px;height:45px;display:grid;place-items:center;color:var(--accent)}.brand-icon svg{width:27px;height:27px}h1{font-size:22px;letter-spacing:-.8px;font-weight:650;margin:0}h1 span{font-weight:400;color:var(--muted)}p{margin:0}.brand p{font-size:11px;color:var(--muted);margin-top:4px;letter-spacing:.2px}.header-actions{display:flex;gap:20px;align-items:center}.badge{font-size:11px;padding:6px 10px;border:1px solid var(--line);border-radius:30px;letter-spacing:.3px;color:var(--amber);background:var(--panel)}.clock{font-variant-numeric:tabular-nums;color:var(--muted);font-size:12px}.icon-button{width:36px;height:36px;border:1px solid var(--line);border-radius:50%;display:grid;place-items:center;flex-shrink:0}.icon-button:hover{background:var(--panel2);border-color:var(--muted)}main{display:grid;grid-template-columns:minmax(500px,1.02fr) minmax(440px,1fr);gap:20px;flex:1;min-height:0}.left-pane{display:flex;flex-direction:column;gap:12px;min-height:0}.section-heading{display:flex;align-items:end;justify-content:space-between;gap:12px;flex:none;padding:3px 1px}.eyebrow{color:var(--muted);font-size:9px;letter-spacing:1.6px;font-weight:650;margin-bottom:6px}h2{font-size:21px;font-weight:550;letter-spacing:-.6px;margin:0}.minute-time{text-align:right;font-variant-numeric:tabular-nums;font-size:12px}.minute-time small{display:block;font-size:10px;color:var(--muted);margin-top:4px}.reading-cards{display:grid;grid-template-columns:1fr 1fr;gap:12px;flex:1;min-height:230px}.reading-card{border:1px solid var(--line);background:var(--panel);border-radius:15px;padding:15px 14px 9px;display:flex;flex-direction:column;min-width:0}.card-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding-bottom:12px}.card-head h3{font-size:15px;font-weight:600;margin:0}.card-head p{font-size:10px;color:var(--muted);margin-top:4px}.health-label{font-size:10px;display:flex;align-items:center;gap:5px;color:var(--accent)}.health-label.warning{color:var(--amber)}.health-label.error{color:var(--red)}.status-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--accent);margin-right:6px;flex:none}.warning .status-dot{background:var(--amber)}.error .status-dot{background:var(--red)}table{border-collapse:collapse;width:100%;font-size:12px;table-layout:fixed}.reading-card table{height:100%}td{padding:4px 0;vertical-align:middle}td:first-child{color:var(--muted);width:57%;font-size:11px}td:last-child{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums;font-weight:550}.unit{font-size:10px;color:var(--muted);font-weight:400;padding-left:4px}.category td{padding-top:10px;font-size:9px!important;letter-spacing:1.2px;text-transform:uppercase;color:var(--muted);border-top:1px solid var(--line)}.category:first-child td{border:0;padding-top:0}.value-missing{font-size:10px;color:var(--amber)}.state-value{font-size:10px;white-space:normal!important;line-height:1.2}.pi-strip{display:flex;gap:12px;justify-content:space-between;align-items:center;font-size:11px;padding:1px 3px;flex:none}.pi-strip small{color:var(--muted);margin-left:8px;font-size:10px}.pi-strip strong{font-size:13px;font-weight:550;font-variant-numeric:tabular-nums}.pi-strip>span:last-child{font-size:10px;color:var(--muted)}.control-card{border:1px solid var(--line);border-radius:15px;background:var(--panel);padding:14px 16px;flex:none}.control-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}h3{font-size:16px;font-weight:550;margin:0}.control-top .eyebrow{margin-bottom:4px}.muted{color:var(--muted);font-size:10px}.control-grid{display:grid;grid-template-columns:1fr 1.2fr;gap:22px}fieldset{border:0;padding:0;margin:0;min-width:0}.switch-row{display:flex;align-items:center;justify-content:space-between;height:29px;font-size:12px;cursor:pointer}.switch-row input{position:absolute;opacity:0;width:1px;height:1px}.switch{height:19px;width:32px;border-radius:12px;background:var(--line);position:relative;border:1px solid var(--line)}.switch:after{content:"";position:absolute;top:3px;left:3px;width:11px;height:11px;border-radius:50%;background:var(--muted);transition:transform .15s}.switch-row input:checked+.switch{background:var(--accent);border-color:var(--accent)}.switch-row input:checked+.switch:after{transform:translateX(13px);background:var(--accentInk)}.switch-row input:focus-visible+.switch{outline:2px solid var(--cyan);outline-offset:3px}.windows label{display:flex;align-items:center;gap:8px;min-height:30px;font-size:11px;cursor:pointer}.windows small{display:block;color:var(--muted);font-size:9px;margin-top:2px}.windows input{appearance:none;border:1px solid var(--muted);width:14px;height:14px;border-radius:4px;flex:none;margin:0}.windows input:checked{background:var(--accent);border-color:var(--accent);box-shadow:inset 0 0 0 3px var(--panel)}.windows:disabled{opacity:.4}.control-bottom{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-top:12px;margin-top:9px;border-top:1px solid var(--line)}.control-bottom p{font-size:10px;color:var(--muted);line-height:1.5;max-width:50%}.action-buttons{display:flex;gap:8px;flex-shrink:0}.primary,.secondary{display:inline-flex;align-items:center;justify-content:center;gap:6px;font-size:11px;padding:9px 12px;border-radius:8px;text-decoration:none;white-space:nowrap;font-weight:550}.primary{background:var(--accent);color:var(--accentInk);border:1px solid var(--accent)}.primary svg,.secondary svg{width:14px;height:14px}.secondary{color:var(--text);border:1px solid var(--line);background:var(--panel2)}.secondary:hover{border-color:var(--muted)}#controlError{color:var(--red);font-size:11px;margin-top:10px}.alerts-strip{border:1px solid var(--line);border-radius:11px;display:flex;align-items:center;justify-content:space-between;padding:10px 13px;gap:10px;font-size:10px;text-align:left;flex:none;background:var(--panel)}.alerts-strip>span{display:flex;align-items:center;gap:9px;min-width:0}.alerts-strip strong{font-weight:550;white-space:nowrap}.alerts-strip svg{width:15px;height:15px;color:var(--accent)}#alertSummary{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.alerts-strip.warning svg{color:var(--amber)}.alerts-strip.error svg{color:var(--red)}.chart-card{display:flex;flex-direction:column;min-height:0;border:1px solid var(--line);border-radius:18px;background:var(--panel);padding:21px 21px 13px;overflow:hidden}.chart-top{display:flex;justify-content:space-between;align-items:center;gap:15px;flex:none}.segmented{display:flex;border:1px solid var(--line);border-radius:8px;padding:3px;background:var(--bg)}.segmented button{border-radius:5px;padding:7px 12px;font-size:11px;color:var(--muted)}.segmented .selected{background:var(--panel2);color:var(--text)}.chart-toolbar{display:flex;align-items:center;gap:12px;font-size:10px;color:var(--muted);margin-top:20px;flex:none}.date-picker input{color:var(--text);border:1px solid var(--line);background:var(--panel2);padding:6px 8px;border-radius:6px;font-size:10px;max-width:133px}.text-button{display:flex;gap:6px;align-items:center;font-size:11px;color:var(--muted);padding:4px 0;white-space:nowrap}.text-button:hover{color:var(--text)}.chart-toolbar .text-button{margin-left:auto}.chart-wrap{position:relative;flex:1;min-height:200px;margin-top:14px}#plot{width:100%;height:100%}#emptyChart{position:absolute;inset:40% 15% auto;text-align:center;color:var(--muted);font-size:12px;line-height:1.8;pointer-events:none}.chart-note{display:flex;justify-content:space-between;gap:8px;color:var(--muted);font-size:9px;padding:10px 0;flex:none}.chart-cycle{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--line);padding-top:13px;flex:none}.chart-cycle>div{text-align:center}.chart-cycle strong{font-size:13px;font-weight:550}.chart-cycle span{display:block;font-size:9px;letter-spacing:2px;color:var(--muted);margin-top:5px}.chart-cycle .icon-button{height:31px;width:31px}.reverse{transform:rotate(180deg)}footer{display:flex;align-items:center;justify-content:space-between;gap:16px;font-size:9px;color:var(--muted);flex:none}footer .text-button{font-size:10px}footer svg{height:14px;width:14px}.offline{background:var(--panel2);border:1px solid var(--red);color:var(--red);border-radius:8px;padding:8px 13px;font-size:11px;flex:none}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}[hidden]{display:none!important}dialog{background:var(--panel);color:var(--text);border:1px solid var(--line);box-shadow:var(--shadow);padding:24px;border-radius:17px}dialog::backdrop{background:#0009;backdrop-filter:blur(5px)}.drawer{width:min(720px,95vw);max-height:94dvh;margin:3dvh 2vw 3dvh auto;min-height:80dvh;overflow:auto}.dialog-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:22px}.dialog-toolbar{display:flex;align-items:center;justify-content:space-between;font-size:12px;color:var(--muted);margin-bottom:20px}.history-tabs{display:flex;gap:18px;border-bottom:1px solid var(--line);margin-bottom:12px}.history-tabs button{padding:10px 2px;color:var(--muted);font-size:12px}.history-tabs .selected{border-bottom:2px solid var(--accent);color:var(--text)}.history-record{border-bottom:1px solid var(--line);padding:15px 4px}.history-record>button{display:flex;align-items:center;justify-content:space-between;gap:15px;width:100%;font-size:13px;text-align:left}.history-record small{display:block;font-size:10px;color:var(--muted);margin-top:7px;line-height:1.6}.history-record svg{width:15px;height:15px}.alert-list{margin-top:20px}.alert-item{border:1px solid var(--line);border-radius:10px;padding:14px;margin:10px 0;display:flex;align-items:start;justify-content:space-between;gap:15px}.alert-item p{font-size:12px;line-height:1.5}.alert-item small{display:block;color:var(--muted);font-size:10px;margin-top:8px}.alert-item .secondary{font-size:10px}.alert-item.error p{color:var(--red)}.alert-item.warning p{color:var(--amber)}.alert-item.resolved p{color:var(--muted)}.dialog-help{font-size:11px;color:var(--muted);line-height:1.6;margin-bottom:15px}#previewTools{border-top:1px solid var(--line);margin-top:22px;padding-top:20px;font-size:11px;color:var(--muted)}summary{cursor:pointer}.fault-tools{display:flex;gap:7px;margin-top:14px;flex-wrap:wrap}.fault-tools select{padding:8px;background:var(--panel2);color:var(--text);border:1px solid var(--line);border-radius:7px;font-size:11px}.point-dialog{width:min(780px,95vw);max-height:92dvh;overflow:auto}.point-cards{display:grid;grid-template-columns:1fr 1fr;gap:15px}.point-cards .reading-card table{height:auto}.point-foot{font-size:11px;color:var(--muted);margin-top:15px;line-height:1.8}.login-dialog{width:360px}.login-dialog p{color:var(--muted);font-size:12px;line-height:1.6;margin:15px 0}.login-dialog label{display:block;font-size:12px}.login-dialog input{display:block;width:100%;background:var(--panel2);border:1px solid var(--line);color:var(--text);padding:10px;border-radius:7px;margin:8px 0 15px}.login-dialog #loginError{color:var(--red)}
@media(min-width:1200px) and (min-height:900px){.shell{padding:28px 38px 20px;gap:22px}.left-pane{gap:16px}.reading-card{padding:20px 20px 14px}td{font-size:14px}td:first-child{font-size:12px}.control-card{padding:19px 20px}.control-bottom{padding-top:16px;margin-top:14px}.chart-card{padding:26px 26px 18px}}
@media(max-height:730px) and (min-width:1100px){.shell{padding:12px 20px 10px;gap:10px}.left-pane{gap:9px}.section-heading h2{font-size:18px}.reading-card{padding:11px 12px 8px}.card-head{padding-bottom:8px}td{padding:3px 0}.category td{padding-top:7px}.control-card{padding:10px 14px}.control-top{margin-bottom:5px}.control-bottom{padding-top:9px;margin-top:7px}.chart-card{padding:15px 16px 10px}.chart-toolbar{margin-top:13px}.reading-cards{min-height:218px}.pi-strip small{display:none}.chart-note{font-size:8px}}
@media(max-width:1099px){.shell{height:auto;min-height:100dvh;padding:18px 16px}.header-actions{gap:9px}.clock{display:none}main{grid-template-columns:1fr;gap:16px}.left-pane{min-height:650px}.chart-card{height:600px}.chart-wrap{min-height:300px}footer{flex-wrap:wrap}.reading-card{padding:17px}.drawer{margin:3dvh auto}.section-heading{padding-top:9px}}
@media(max-width:600px){.brand p{font-size:9px}.brand-icon{display:none}h1{font-size:19px}.badge{font-size:9px;padding:5px 7px}.shell{padding:12px 10px}.section-heading{align-items:start}h2{font-size:17px}.minute-time{font-size:10px}.reading-cards{gap:7px}.reading-card{padding:12px 9px}.card-head{align-items:start;flex-direction:column;gap:6px}td:first-child{font-size:10px}td{font-size:11px}.unit{font-size:9px}.control-grid{gap:17px}.control-bottom{align-items:start;flex-direction:column}.control-bottom p{max-width:100%}.action-buttons{width:100%}.action-buttons button{flex:1}.pi-strip>span:last-child{display:none}.pi-strip small{display:none}.chart-card{padding:17px 10px;height:470px}.segmented button{padding:6px 8px}.chart-note{font-size:8px}.point-cards{grid-template-columns:1fr}.drawer,.point-dialog{padding:17px}.alerts-strip>span{gap:6px}}

/* Keep the two tables inside their grid tracks at laptop scaling. */
.reading-card{min-height:0}.reading-card td{padding:1px 0;line-height:1.2}.reading-card .category td{text-align:left;padding:5px 0 1px;line-height:1.1}.reading-card .category:first-child td{padding-top:0}.reading-card .card-head{padding-bottom:8px}.reading-card .state-value{font-size:10px}.point-cards .reading-card{min-height:325px}

.table-actions{display:flex;align-items:center;gap:18px}.table-actions a{text-decoration:none}.table-actions svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:1.6}.note-button{display:block;color:var(--muted);font-size:10px;text-align:left;padding:0;margin-top:4px;max-width:180px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.note-button:hover{color:var(--accent);text-decoration:underline}.note-dialog{width:min(470px,95vw)}.note-dialog label{font-size:12px;color:var(--muted)}.note-dialog textarea{display:block;width:100%;resize:vertical;min-height:110px;max-height:40dvh;padding:12px;margin:10px 0 15px;background:var(--panel2);border:1px solid var(--line);border-radius:9px;color:var(--text);font:inherit}.note-actions{display:flex;gap:12px;justify-content:space-between;align-items:center}.note-actions small{font-size:10px;color:var(--muted)}#noteError{font-size:11px;color:var(--red);margin-top:10px}@media(max-width:600px){h1{font-size:15px}.table-actions{gap:10px}.table-actions .text-button{font-size:10px}}
@media(max-height:680px) and (min-width:1100px){.shell{padding:10px 18px 8px;gap:8px}.topbar{min-height:35px}.brand-icon{width:34px;height:34px;border-radius:10px}.brand-icon svg{width:23px;height:23px}h1{font-size:18px}.brand p{display:none}.left-pane{gap:7px}.reading-cards{min-height:239px}.reading-card{padding:9px 12px 7px}.reading-card .card-head{padding-bottom:6px}.reading-card .card-head h3{font-size:13px}.reading-card td{font-size:11px;line-height:1.1;padding:1px 0}.reading-card td:first-child{font-size:10px}.reading-card .category td{padding:4px 0 1px;font-size:8px!important;line-height:1}.reading-card .state-value{font-size:9px}.section-heading{padding:0}.section-heading .eyebrow{margin-bottom:3px}.control-card{padding:9px 12px}.control-top{margin-bottom:4px}.control-top .eyebrow{margin-bottom:3px}.control-top h3{font-size:14px}.switch-row{height:25px;font-size:11px}.windows label{min-height:25px;font-size:10px}.windows small{font-size:8px}.control-bottom{padding-top:7px;margin-top:6px}.primary,.secondary{padding:7px 10px}.alerts-strip{padding:8px 12px;font-size:9px}footer{font-size:8px}.pi-strip{font-size:10px}.pi-strip strong{font-size:11px}.table-actions .text-button{font-size:10px}}

.reading-toolbar{display:flex;align-items:center;gap:20px}.reading-toolbar .text-button{font-size:11px}.reading-toolbar svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:1.6}.section-heading{align-items:center}.section-heading>.eyebrow,.section-heading .eyebrow{margin-bottom:0}@media(max-width:600px){.reading-toolbar{gap:10px}.reading-toolbar .text-button{font-size:9px}.section-heading .eyebrow{font-size:8px;letter-spacing:.8px}}

.card-head>div{min-width:0;flex:1}.note-button{max-width:100%}

.history-toolbar{gap:12px;flex-wrap:wrap}.history-date{display:flex;flex-direction:column;gap:9px}.history-date .date-picker{display:flex;align-items:center;gap:10px}.history-date .date-picker>span{font-size:11px}#historyError{color:var(--red)}

.control-bottom{justify-content:flex-end}#runHint{min-width:0;max-width:58%;text-align:right}#runHint>span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#runHint small{display:block;font-size:9px;line-height:1.5;margin-top:3px}.pi-strip>span.value-missing{color:var(--amber)}

.health-label.inactive{color:var(--muted)}.health-label.inactive .status-dot{background:var(--muted)}

/* Operational states use the same small, outline icon family. */
.health-icon,.state-icon{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none}
.health-label .health-icon{width:14px;height:14px}.run-state{display:flex;align-items:center;gap:7px}.run-state.ready{color:var(--accent)}.run-state.recording{color:var(--red)}.run-state.saving{color:var(--amber)}.run-state.waiting,.run-state.observing{color:var(--text)}
.state-icon.fade{animation:state-fade 1.8s ease-in-out infinite}@keyframes state-fade{0%,100%{opacity:1}50%{opacity:.3}}@media(prefers-reduced-motion:reduce){.state-icon.fade{animation:none}}
.connecting .wifi-arc{opacity:.18;animation:wifi-connect 1.8s ease-in-out infinite}.connecting .wifi-middle{animation-delay:.2s}.connecting .wifi-outer{animation-delay:.4s}@keyframes wifi-connect{0%,80%,100%{opacity:.18}25%,55%{opacity:1}}@media(prefers-reduced-motion:reduce){.connecting .wifi-arc{animation:none;opacity:1}}
.pi-strip{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:12px}.pi-identity{display:flex;align-items:center;gap:10px;min-width:0}.pi-temperature-label{color:var(--muted);font-size:10px}.pi-strip #piTemp{justify-self:end}.pi-strip .health-label{font-size:10px}
.download-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.alerts-strip:not(.error):not(.warning) #alertIcon{color:var(--accent)}
.alert-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
@media(max-width:600px){.pi-strip{grid-template-columns:1fr auto;gap:5px}.pi-temperature-label{display:none}.pi-identity{gap:7px}.pi-strip .health-label{font-size:9px}}

/* Keep Pi measurement aligned with Setup 2's label and value columns. */
.health-label{text-transform:uppercase}
.pi-strip{grid-template-columns:1fr 1fr;gap:12px;padding:1px 0}
.pi-identity{padding-left:3px}
.pi-reading{display:grid;grid-template-columns:57% 43%;align-items:center;padding:0 14px;min-width:0}
.pi-temperature-label{font-size:11px}
.pi-strip #piTemp{font-size:12px}
@media(max-height:730px) and (min-width:1100px){.pi-reading{padding:0 12px}}
@media(max-height:680px) and (min-width:1100px){.pi-temperature-label{font-size:10px}.pi-strip #piTemp{font-size:11px}}
@media(max-width:600px){.pi-strip{grid-template-columns:1fr 1fr;gap:7px}.pi-reading{padding:0 9px}.pi-temperature-label{display:block;font-size:10px}.pi-strip #piTemp{font-size:11px}.pi-identity{flex-wrap:wrap;gap:3px 7px}}
