:root{color-scheme:light dark;--bg:#f4f6f8;--surface:#fff;--text:#172831;--muted:#647782;--line:#dce4e8;--accent:#126c69;--tint:#e6f2ef;--danger:#bc3443;--orange:#b95616;--blue:#3079cf;--shadow:0 12px 35px #173c5110;font:16px/1.5 "Segoe UI",system-ui,sans-serif}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}a{color:inherit;text-decoration:none}a:hover{color:var(--accent)}button,input{font:inherit}button,a,input,summary{-webkit-tap-highlight-color:transparent}button,summary{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible{outline:3px solid var(--accent);outline-offset:4px}h1,h2,p{margin-top:0}h1{font-size:clamp(28px,4vw,42px);font-weight:650;letter-spacing:-1.3px;line-height:1.16;margin-bottom:24px}h2{font-size:21px;line-height:1.3;font-weight:600}p{margin-bottom:16px}.topbar{min-height:102px;padding:24px max(24px,calc((100vw - 1100px)/2));display:flex;align-items:center;justify-content:space-between;gap:30px;background:var(--surface);border-bottom:1px solid var(--line)}.brand{font-size:23px;font-weight:700;letter-spacing:2.7px}.brand span{display:block;font-size:12px;font-weight:400;letter-spacing:.5px;color:var(--muted)}nav{display:flex;align-items:center;gap:20px;flex-wrap:wrap}nav a,.text-button{font-size:14px}.text-button{border:0;padding:0;color:var(--muted);background:none}nav form{margin:0}main{max-width:1148px;margin:0 auto;padding:44px 24px 60px;min-height:calc(100vh - 176px)}footer{max-width:1148px;margin:auto;padding:12px 24px 24px;font-size:12px;color:var(--muted)}.muted{color:var(--muted)}.small{font-size:13px}.eyebrow{font-size:12px;font-weight:650;text-transform:uppercase;letter-spacing:1.2px;color:var(--accent);margin-bottom:10px}.page-heading{display:flex;align-items:center;justify-content:space-between;gap:25px;margin-bottom:12px}.page-heading h1{margin-bottom:12px}label{display:block;color:var(--muted);font-size:14px;margin-bottom:7px}input{display:block;width:100%;padding:12px 14px;border:1px solid var(--line);background:var(--surface);color:var(--text);border-radius:10px;min-width:0}input:focus{border-color:var(--accent)}.search-label{width:250px;max-width:100%;font-size:12px}.search-label input{margin-top:5px}.auth-panel{max-width:470px;margin:4vh auto;padding:32px;background:var(--surface);border-radius:22px;box-shadow:var(--shadow)}.auth-panel h1{font-size:34px;letter-spacing:-1px}.auth-panel input{margin-bottom:20px}.primary{display:block;width:100%;margin-top:28px;border:0;border-radius:11px;padding:13px 20px;background:var(--accent);color:#fff;font-weight:600}.errorlist{color:var(--danger);font-size:14px;padding-left:18px}.helptext,.auth-panel form ul{font-size:13px;color:var(--muted)}.notice{padding:15px 18px;background:var(--tint);color:var(--accent);border-radius:12px}.furnace-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,290px),1fr));gap:20px;margin:22px 0}.furnace-card{display:block;border:1px solid var(--line);background:var(--surface);border-radius:19px;padding:24px;transition:box-shadow .2s,border-color .2s}.furnace-card:hover{box-shadow:var(--shadow);border-color:var(--accent);color:var(--text)}.furnace-card h2{margin-bottom:4px;overflow-wrap:anywhere}.device-id{font-size:12px;color:var(--muted);margin-bottom:16px}.status{color:var(--accent);font-size:15px;font-weight:600;margin:0}.status:before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:currentColor;margin-right:9px;vertical-align:2px}.temperature{font-size:clamp(68px,10vw,130px);font-weight:650;line-height:1.2;letter-spacing:-5px;color:var(--accent);font-variant-numeric:tabular-nums}.temperature span{font-size:.33em;font-weight:400;letter-spacing:-1px}.furnace-card .temperature{font-size:60px;letter-spacing:-2px;margin:12px 0 5px}.program-name{color:var(--muted);margin:10px 0 0;font-size:17px;overflow-wrap:anywhere}.offline .status,.offline .temperature,.offline .metrics dd{color:var(--muted)}.heating .temperature,.heating .status{color:var(--orange)}.cooling .temperature,.cooling .status{color:var(--blue)}.alarm-state .temperature,.alarm-state .status{color:var(--danger)}.reading-panel{background:var(--surface);border-radius:24px;padding:38px;text-align:center;margin:25px 0 20px}.reading-panel .temperature{margin:14px 0 0}.metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:26px;margin:35px 0 0;padding-top:28px;border-top:1px solid var(--line);text-align:left}.metrics dt{color:var(--muted);font-size:13px}.metrics dd{margin:2px 0 0;font-size:24px;font-weight:600;font-variant-numeric:tabular-nums}.warning{color:var(--danger);font-size:15px;margin:22px 0 0}.back-link{display:inline-block;font-size:14px;color:var(--muted);margin-bottom:25px}.section-links a{border:1px solid var(--line);border-radius:10px;padding:10px 17px;background:var(--surface);white-space:nowrap}.section-links{gap:10px}.empty{grid-column:1/-1;text-align:center;border:1px dashed var(--line);border-radius:20px;padding:48px 22px;color:var(--muted);margin:15px 0}.empty h2{color:var(--text)}.empty p{margin:0}.program{background:var(--surface);border:1px solid var(--line);border-radius:14px;margin:18px 0;overflow:hidden}.program summary{padding:20px 24px;font-size:18px;font-weight:600}.badge{display:inline-block;margin-left:14px;font-size:11px;background:var(--tint);color:var(--accent);border-radius:6px;padding:3px 7px;font-weight:500;vertical-align:middle}.table-scroll{overflow:auto;padding:0 24px 12px}table{border-collapse:collapse;width:100%;font-size:15px;text-align:left;white-space:nowrap}td,th{border-bottom:1px solid var(--line);padding:13px 16px 13px 0}th{font-size:12px;color:var(--muted);font-weight:500}.graph-list{background:var(--surface);border-radius:18px;padding:0 22px}.graph-row{display:flex;align-items:center;gap:20px;padding:24px 0;border-bottom:1px solid var(--line)}.graph-row:last-child{border:0}.graph-row h2{font-size:19px;margin-bottom:5px}.graph-row p{font-size:13px;color:var(--muted);margin:0}.graph-meta{margin-left:auto;text-align:right;font-size:14px}.graph-meta time{display:block;color:var(--muted);font-size:12px}.pagination{justify-content:center;margin-top:25px}.chart-panel{padding:20px 20px 15px;background:var(--surface);border-radius:20px;margin-top:24px}canvas{display:block;width:100%;height:380px}.legend{display:flex;justify-content:center;gap:25px;flex-wrap:wrap;font-size:13px;color:var(--muted);padding-top:12px}.legend span:before{content:"";display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:7px;background:currentColor}.actual{color:#df7625}.setpoint{color:#318cca}.plan{color:#8b75be}.alarm{color:#c93b51}[hidden]{display:none!important}
@media(prefers-color-scheme:dark){:root{--bg:#111b21;--surface:#19262e;--text:#e5eef1;--muted:#9bb0ba;--line:#2d414b;--accent:#6dd1ba;--tint:#1b3b38;--danger:#ff8391;--orange:#ffad74;--blue:#90bdff}.primary{color:#11251f}}
@media(max-width:640px){.topbar{padding:18px 20px;gap:20px;align-items:flex-start;flex-direction:column}.topbar nav{gap:16px}main{padding:28px 18px 35px}.page-heading{align-items:stretch;flex-direction:column;gap:5px}.search-label{width:100%;margin-top:15px}.reading-panel{padding:24px 18px}.metrics{gap:24px 14px;grid-template-columns:repeat(2,1fr)}.metrics dd{font-size:22px}.auth-panel{padding:25px;margin:10px auto}.auth-panel h1{font-size:30px}.graph-row{gap:12px;align-items:flex-start}.graph-row h2{font-size:16px}.graph-meta{font-size:12px;min-width:105px}.graph-meta time{font-size:11px}.graph-list{padding:0 15px}.chart-panel{padding:12px 6px}.legend{gap:13px;font-size:11px}canvas{height:240px}.program summary{padding:18px;font-size:16px}.badge{margin:5px 0 0 8px}.table-scroll{padding:0 18px 12px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}
.temperature.invalid{color:var(--muted)}
table{white-space:normal}
@media(max-width:640px){table{font-size:12px}td,th{padding-right:12px}td:nth-child(2){min-width:90px}.table-scroll{padding-left:14px;padding-right:14px}}
