:root{--ink:#13202b;--muted:#6d7b87;--line:#dfe6e9;--paper:#f4f6f4;--white:#fff;--teal:#177d72;--teal-dark:#0e5e57;--cyan:#0cb6e8;--orange:#e77935;--red:#c74e43;--shadow:0 18px 50px rgba(20,38,45,.09)}
*{box-sizing:border-box}html{font-family:Inter,"Segoe UI",Arial,sans-serif;color:var(--ink);background:var(--paper)}body{margin:0}button,input{font:inherit}.eyebrow{display:block;color:var(--teal);font-size:.7rem;font-weight:800;letter-spacing:.13em;text-transform:uppercase}.login-page{min-height:100vh;background:#e8eeeb;padding:clamp(16px,4vw,54px);display:grid;place-items:center}.login-shell{width:min(1060px,100%);min-height:650px;display:grid;grid-template-columns:55% 45%;background:var(--white);border-radius:28px;overflow:hidden;box-shadow:0 30px 90px rgba(25,52,54,.16)}.login-card{padding:54px 72px 32px;display:flex;flex-direction:column}.brand-lockup{display:flex;align-items:center;gap:18px}.delta-logo{width:155px;filter:brightness(.35)}.product-label{margin:0;padding-left:18px;border-left:1px solid var(--line);font-size:.78rem;text-transform:uppercase;letter-spacing:.16em;color:var(--muted)}.login-copy{margin-top:78px}.login-copy h1{font-size:2.4rem;letter-spacing:-.04em;margin:8px 0}.login-copy p{color:var(--muted);margin:0 0 24px}.login-form{display:grid;gap:10px}.login-form label{font-size:.78rem;font-weight:700;margin-top:7px}.login-form input{border:1px solid var(--line);border-radius:10px;padding:14px;background:#fafbfa;outline:none}.login-form input:focus{border-color:var(--teal);box-shadow:0 0 0 3px rgba(23,125,114,.12)}.login-form button{border:0;border-radius:10px;background:var(--teal);color:white;margin-top:12px;padding:14px 18px;font-weight:800;display:flex;justify-content:space-between;cursor:pointer}.login-form button:hover{background:var(--teal-dark)}.alert{background:#fff0ed;border:1px solid #f2c6bf;color:#9b352d;border-radius:9px;padding:11px 13px;font-size:.84rem;margin-bottom:8px}.demo-note{font-size:.72rem;color:#829098;text-align:center}.maker-mark{margin-top:auto;display:flex;align-items:center;gap:12px;color:#98a2a8;font-size:.66rem}.maker-mark img{width:62px;opacity:.42}.login-visual{position:relative;overflow:hidden;background:linear-gradient(145deg,#174741,#0d2628);padding:54px;color:white;display:flex;align-items:flex-end}.login-visual:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 65% 25%,rgba(30,181,160,.5),transparent 33%),linear-gradient(110deg,transparent 60%,rgba(255,255,255,.04) 60%)}.login-visual p{position:relative;font-size:2.4rem;line-height:1.12;letter-spacing:-.04em}.boiler-orbit{position:absolute;top:150px;left:50%;transform:translateX(-50%);width:210px;height:210px;border:1px solid rgba(255,255,255,.22);border-radius:50%;display:grid;place-content:center;text-align:center;box-shadow:0 0 0 24px rgba(255,255,255,.03),0 0 0 52px rgba(255,255,255,.025)}.boiler-orbit span{font-size:3rem;font-weight:300}.boiler-orbit small{text-transform:uppercase;letter-spacing:.2em;color:#7fe0cf}
.dashboard-page{background:#f4f6f4}.topbar{height:74px;padding:0 max(24px,calc((100% - 1240px)/2));background:white;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:10}.top-brand{display:flex;align-items:center;gap:16px;text-decoration:none;color:var(--ink)}.top-brand img{width:102px;filter:brightness(.33)}.top-brand span{font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;border-left:1px solid var(--line);padding-left:16px}.connection{display:grid;grid-template-columns:auto auto;column-gap:8px;align-items:center;font-size:.75rem}.connection i{width:8px;height:8px;background:#44b590;border-radius:50%;box-shadow:0 0 0 4px #e0f4ed}.connection small{grid-column:2;color:var(--muted);font-size:.62rem}.top-actions{display:flex;align-items:center;gap:22px;font-size:.75rem}.site-name{color:var(--muted)}.logout{color:var(--teal);font-weight:700;text-decoration:none}.dashboard-shell{width:min(1240px,calc(100% - 40px));margin:0 auto;padding:44px 0 56px}.hero-row{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:30px}.hero-row h1{font-size:2.3rem;margin:5px 0 5px;letter-spacing:-.045em}.hero-row p{margin:0;color:var(--muted)}.system-time{text-align:right}.system-time span{display:block;color:var(--muted);font-size:.73rem}.system-time strong{font-size:1.65rem;font-weight:400;font-variant-numeric:tabular-nums}.status-strip{display:grid;grid-template-columns:repeat(3,1fr);background:#183b39;border-radius:16px;color:white;box-shadow:var(--shadow);overflow:hidden;margin-bottom:42px}.status-strip article{display:flex;align-items:center;gap:14px;padding:21px 24px;border-right:1px solid rgba(255,255,255,.12)}.status-strip article:last-child{border:0}.status-strip small{display:block;color:#a8c2bf;font-size:.67rem;margin-bottom:4px}.status-strip strong{font-size:.98rem}.status-icon{width:38px;height:38px;border-radius:10px;background:rgba(255,255,255,.1);display:grid;place-items:center;color:#7ce2d0;font-weight:800}.status-strip b{margin-left:auto;font-size:.67rem}.pill{padding:5px 8px;border-radius:999px}.pill.ok{background:rgba(74,188,148,.16);color:#7fe0b9}.trend{color:#7fe0cf}.section-heading{display:flex;justify-content:space-between;align-items:flex-end;margin:0 0 14px}.section-heading h2,.chart-header h2{font-size:1.45rem;margin:4px 0 0;letter-spacing:-.025em}.refresh-note{font-size:.7rem;color:var(--muted)}.temperature-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.temp-card{background:white;border:1px solid #e3e9e7;border-radius:13px;padding:19px;min-height:126px;position:relative;overflow:hidden}.temp-card:after{content:"";position:absolute;left:0;right:0;bottom:0;height:3px;background:var(--accent,var(--teal))}.temp-head{display:flex;justify-content:space-between;align-items:center}.temp-head span{font-size:.75rem;color:var(--muted)}.temp-head i{width:8px;height:8px;border-radius:50%;background:var(--accent,var(--teal))}.temp-value{font-size:2rem;font-weight:350;letter-spacing:-.05em;margin:16px 0 0;font-variant-numeric:tabular-nums}.temp-value sup{font-size:.75rem;color:var(--muted);margin-left:4px}.temp-foot{font-size:.62rem;color:#9aa4a8;margin-top:4px}.switch-heading{margin-top:38px}.switch-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}.switch-card{background:white;border:1px solid #e3e9e7;border-radius:12px;padding:15px;display:flex;align-items:center;gap:12px}.switch-symbol{width:35px;height:35px;border-radius:9px;display:grid;place-items:center;background:#edf2f0;color:#71827e}.switch-card.active .switch-symbol{background:#e1f3ed;color:var(--teal)}.switch-card.alert-state .switch-symbol{background:#fff0ed;color:var(--red)}.switch-card strong{display:block;font-size:.78rem}.switch-card small{font-size:.62rem;color:var(--muted)}.switch-dot{margin-left:auto;width:8px;height:8px;border-radius:50%;background:#bbc5c2}.active .switch-dot{background:#42b68d}.alert-state .switch-dot{background:var(--red)}.chart-panel{margin-top:42px;background:white;border:1px solid #e0e7e4;border-radius:16px;padding:25px;box-shadow:0 10px 35px rgba(30,56,54,.04)}.chart-header{display:flex;justify-content:space-between;align-items:flex-start}.chart-header p{font-size:.72rem;color:var(--muted);margin:6px 0}.range-picker{display:flex;background:#edf1ef;border-radius:9px;padding:3px}.range-picker button{border:0;background:transparent;border-radius:7px;padding:8px 13px;color:var(--muted);font-size:.72rem;cursor:pointer}.range-picker button.active{background:white;color:var(--teal);font-weight:800;box-shadow:0 2px 7px rgba(20,40,38,.1)}.series-picker{display:flex;flex-wrap:wrap;gap:7px;margin:20px 0}.series-picker label{border:1px solid var(--line);border-radius:999px;padding:7px 10px;font-size:.68rem;color:var(--muted);cursor:pointer}.series-picker label.selected{color:white;border-color:var(--color);background:var(--color)}.series-picker input{display:none}.chart-wrap{height:330px;position:relative}.chart-wrap canvas{width:100%;height:100%}.chart-tooltip{display:none;position:absolute;pointer-events:none;background:#162a2b;color:white;border-radius:7px;padding:7px 9px;font-size:.65rem;white-space:nowrap;transform:translate(10px,-105%)}.chart-legend{display:flex;justify-content:center;gap:20px;flex-wrap:wrap;margin-top:14px}.legend-item{font-size:.67rem;color:var(--muted);display:flex;align-items:center;gap:6px}.legend-item i{width:15px;height:3px;border-radius:3px}.dashboard-footer{border-top:1px solid var(--line);padding:25px max(24px,calc((100% - 1240px)/2));display:flex;justify-content:space-between;color:#8c999c;font-size:.65rem}.dashboard-footer span{display:flex;align-items:center;gap:8px}.dashboard-footer img{height:20px;opacity:.35}
@media(max-width:900px){.login-shell{grid-template-columns:1fr}.login-visual{display:none}.login-card{padding:42px}.temperature-grid{grid-template-columns:repeat(2,1fr)}.switch-grid{grid-template-columns:repeat(3,1fr)}.status-strip{grid-template-columns:1fr}.status-strip article{border-right:0;border-bottom:1px solid rgba(255,255,255,.12)}.connection{display:none}}
@media(max-width:560px){.login-page{padding:0}.login-shell{min-height:100vh;border-radius:0}.login-card{padding:32px 24px}.login-copy{margin-top:60px}.topbar{padding:0 16px}.top-brand span,.site-name{display:none}.dashboard-shell{width:calc(100% - 28px);padding-top:28px}.hero-row{align-items:flex-start}.system-time{display:none}.temperature-grid{grid-template-columns:1fr 1fr;gap:9px}.temp-card{padding:14px;min-height:112px}.temp-value{font-size:1.65rem}.switch-grid{grid-template-columns:1fr 1fr}.chart-header{display:block}.range-picker{margin-top:15px;width:max-content}.chart-panel{padding:17px}.chart-wrap{height:280px}.dashboard-footer{padding:22px 16px;display:block}.dashboard-footer span+span{margin-top:12px}}

/* Configured consumers and digital inputs */
.status-strip.four{grid-template-columns:repeat(4,1fr)}.input-heading{margin-top:32px}.control-note,.info-note{font-size:.7rem;color:var(--muted)}.consumer-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.consumer-card{background:white;border:1px solid #e3e9e7;border-radius:12px;padding:16px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px}.consumer-card.active{border-color:#bcded5}.consumer-card .switch-symbol{width:38px;height:38px}.consumer-card.active .switch-symbol{background:#e1f3ed;color:var(--teal)}.consumer-copy strong,.thermostat-card strong{display:block;font-size:.78rem}.consumer-copy small,.thermostat-card small{font-size:.62rem;color:var(--muted)}.consumer-card b{grid-column:3;font-size:.58rem;color:var(--muted);text-align:center}.toggle-control{width:42px;height:23px;padding:3px;border:0;border-radius:999px;background:#c8d0ce;cursor:pointer;transition:.2s}.toggle-control span{display:block;width:17px;height:17px;border-radius:50%;background:white;box-shadow:0 1px 3px rgba(0,0,0,.25);transition:.2s}.consumer-card.active .toggle-control{background:var(--teal)}.consumer-card.active .toggle-control span{transform:translateX(19px)}.thermostat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.thermostat-card{background:white;border:1px solid #e3e9e7;border-radius:12px;padding:16px;display:flex;align-items:center;gap:12px}.thermostat-icon{width:38px;height:38px;border-radius:9px;display:grid;place-items:center;background:#edf2f0;color:#71827e}.thermostat-card.request .thermostat-icon{background:#fff1df;color:#d17a24}.request-state{margin-left:auto;font-size:.62rem;color:var(--muted);display:flex;align-items:center;gap:6px}.request-state i{width:7px;height:7px;border-radius:50%;background:#b9c4c1}.request .request-state{color:#a65b19;font-weight:700}.request .request-state i{background:#e68b32}
@media(max-width:900px){.status-strip.four{grid-template-columns:1fr 1fr}.consumer-grid{grid-template-columns:repeat(2,1fr)}.thermostat-grid{grid-template-columns:1fr}}
@media(max-width:560px){.status-strip.four{grid-template-columns:1fr}.consumer-grid{grid-template-columns:1fr}.control-note,.info-note{display:none}}
.temperature-grid{display:block}.measurement-group{margin-bottom:18px}.measurement-group h3{font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;color:#84918e;margin:0 0 8px}.measurement-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.measurement-group:has(.temp-card:only-child) .measurement-cards{grid-template-columns:minmax(220px,1fr) repeat(3,1fr)}
@media(max-width:900px){.measurement-cards,.measurement-group:has(.temp-card:only-child) .measurement-cards{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.measurement-cards,.measurement-group:has(.temp-card:only-child) .measurement-cards{grid-template-columns:1fr 1fr;gap:9px}}
.temperature-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
@media(max-width:900px){.temperature-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.temperature-grid{grid-template-columns:1fr 1fr;gap:9px}}
.consumer-grid{grid-template-columns:repeat(3,1fr)}.heating-control{grid-row:2}.thermostat-grid{grid-template-columns:repeat(3,1fr)}
@media(max-width:900px){.consumer-grid,.thermostat-grid{grid-template-columns:repeat(3,1fr)}.consumer-card,.thermostat-card{min-width:0}.request-state{align-items:flex-end;flex-direction:column}.consumer-copy small,.thermostat-card small{display:block}}
@media(max-width:650px){.consumer-grid,.thermostat-grid{grid-template-columns:1fr}.consumer-card,.thermostat-card,.first-heating{grid-column:1!important;grid-row:auto}.request-state{align-items:center;flex-direction:row}}

/* Blue theme preview */
:root{--teal:#2369a8;--teal-dark:#174c7e;--cyan:#37a9e3;--paper:#f2f5f8;--line:#dce5ed;--shadow:0 18px 50px rgba(25,63,98,.10)}
.login-page{background:#e8eef4}.login-visual{background:linear-gradient(145deg,#183f68,#0c253e)}.login-visual:before{background:radial-gradient(circle at 65% 25%,rgba(47,143,207,.55),transparent 33%),linear-gradient(110deg,transparent 60%,rgba(255,255,255,.04) 60%)}.boiler-orbit small{color:#8bd2f5}.dashboard-page{background:#f2f5f8}.status-strip{background:#173e63}.status-icon{color:#8bd2f5}.pill.ok{background:rgba(75,166,224,.18);color:#9edafd}.trend{color:#8bd2f5}.connection i{background:#3b9ed8;box-shadow:0 0 0 4px #dceef9}.consumer-card.active{border-color:#bad5e9}.consumer-card.active .switch-symbol{background:#e1eff9}.consumer-card.active .toggle-control{background:#2369a8}.thermostat-card.request .thermostat-icon{background:#e5f1fa;color:#2369a8}.request .request-state{color:#2369a8}.request .request-state i{background:#37a9e3}
.delta-logo,.top-brand img{filter:brightness(0) saturate(100%) invert(36%) sepia(56%) saturate(1074%) hue-rotate(169deg) brightness(88%) contrast(91%)}

/* Settings */
.top-link,.main-nav a{color:var(--muted);text-decoration:none;font-size:.75rem;font-weight:700}.top-link:hover,.main-nav a:hover,.main-nav a.active{color:var(--teal)}.main-nav{display:flex;align-items:center;gap:24px}.main-nav a{padding:28px 0 24px;border-bottom:3px solid transparent}.main-nav a.active{border-bottom-color:var(--teal)}.settings-shell{max-width:1080px}.settings-hero{align-items:center}.back-link{color:var(--teal);font-size:.75rem;font-weight:700;text-decoration:none}.settings-tabs{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:16px}.settings-tabs button{border:1px solid var(--line);background:#e9eff4;border-radius:12px;padding:16px 18px;text-align:left;color:var(--muted);cursor:pointer}.settings-tabs button span{display:block;font-weight:800;font-size:.85rem;color:var(--ink)}.settings-tabs button small{font-size:.64rem}.settings-tabs button.active{background:#173e63;border-color:#173e63;color:#b8d5ea}.settings-tabs button.active span{color:white}.settings-panel{display:none;background:white;border:1px solid var(--line);border-radius:16px;padding:25px;box-shadow:0 10px 35px rgba(30,56,80,.05)}.settings-panel.active{display:block}.parameter-toolbar{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:18px}.parameter-toolbar h2{margin:4px 0 0;font-size:1.45rem}.parameter-search{font-size:.63rem;color:var(--muted);display:grid;gap:5px}.parameter-search input{width:240px;border:1px solid var(--line);border-radius:8px;padding:9px 11px;outline:none}.parameter-search input:focus{border-color:var(--teal);box-shadow:0 0 0 3px rgba(35,105,168,.1)}.toolbar-actions{display:flex;align-items:flex-end;gap:12px}.lock-link{border:1px solid var(--line);border-radius:8px;padding:9px 11px;text-decoration:none;color:var(--teal);font-size:.7rem;font-weight:800}.parameter-list{border-top:1px solid var(--line)}.parameter-row{display:grid;grid-template-columns:50px 1fr auto 35px;gap:14px;align-items:center;padding:13px 6px;border-bottom:1px solid #e8edf1}.parameter-index{font-size:.65rem;color:#8a98a4;font-variant-numeric:tabular-nums}.parameter-copy strong{display:block;font-size:.8rem}.parameter-copy small{font-size:.61rem;color:var(--muted)}.parameter-control{display:flex;align-items:center;border:1px solid var(--line);border-radius:8px;overflow:hidden}.parameter-control input{width:70px;padding:8px 4px;border:0;border-left:1px solid var(--line);border-right:1px solid var(--line);text-align:center;outline:none}.parameter-control input.changed{color:var(--teal);font-weight:800;background:#edf6fc}.parameter-control .step{width:32px;height:34px;border:0;background:#f3f6f8;color:var(--teal);cursor:pointer}.parameter-unit{font-size:.68rem;color:var(--muted)}.parameter-pagination{display:flex;align-items:center;justify-content:space-between;padding-top:18px;font-size:.66rem;color:var(--muted)}.parameter-pagination button{border:1px solid var(--line);background:white;border-radius:7px;padding:8px 11px;color:var(--teal);cursor:pointer}.parameter-pagination button:disabled{opacity:.4;cursor:default}.service-lock{max-width:470px;margin:42px auto;text-align:center}.lock-symbol{display:grid;place-items:center;width:58px;height:58px;margin:0 auto 18px;border-radius:50%;background:#e5f1fa;color:var(--teal);font-size:1.5rem}.service-lock h2{margin:5px 0 8px}.service-lock>p{color:var(--muted);font-size:.78rem;line-height:1.55}.service-code-form{margin:22px auto 0;text-align:left;max-width:330px}.service-code-form label{display:block;font-size:.68rem;font-weight:800;margin-bottom:6px}.service-code-form>div{display:flex}.service-code-form input{min-width:0;flex:1;border:1px solid var(--line);border-radius:8px 0 0 8px;padding:11px;outline:none}.service-code-form button{border:0;border-radius:0 8px 8px 0;background:var(--teal);color:white;padding:0 16px;font-weight:800;cursor:pointer}.demo-service-code{display:block;color:#8c99a2;margin-top:12px}.service-warning{background:#edf6fc;border-left:3px solid var(--teal);padding:11px 13px;color:#41657d;font-size:.68rem;margin-bottom:10px}.empty-state{text-align:center;color:var(--muted);padding:30px}.settings-page .alert{max-width:330px;margin:10px auto}
@media(max-width:700px){.main-nav{display:none}.settings-tabs{grid-template-columns:1fr}.parameter-toolbar{align-items:stretch;gap:15px;flex-direction:column}.parameter-search input{width:100%}.toolbar-actions{align-items:stretch;flex-direction:column}.parameter-row{grid-template-columns:38px 1fr}.parameter-control{grid-column:2;width:max-content}.parameter-unit{display:none}.parameter-pagination span{display:none}.settings-hero .back-link{display:none}}

/* Heating circuit: LCD switch and room input are independent states. */
.consumer-card.heating-control{grid-template-rows:auto auto;align-items:center}.consumer-card.heating-control .circuit-room-status{grid-column:1/-1;border-top:1px solid var(--line);padding-top:12px;margin-top:3px;display:flex;align-items:center;justify-content:space-between;gap:12px}.circuit-room-status span{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:.63rem}.circuit-room-status span i{width:7px;height:7px;border-radius:50%;background:#aeb9bf}.circuit-room-status strong{font-size:.66rem;text-align:right;color:var(--muted)}.circuit-room-status.request span,.circuit-room-status.request strong{color:#2369a8}.circuit-room-status.request span i{background:#37a9e3;box-shadow:0 0 0 3px #e1eff9}.consumer-card.unknown .toggle-control{background:#d8dfe3}.consumer-card.unknown b{color:#8c989f}
.consumer-card{grid-template-columns:auto minmax(0,1fr) 72px}.consumer-card .toggle-control{justify-self:center}.consumer-card b{width:72px;white-space:nowrap}
.toggle-control[aria-checked="true"] span{transform:translateX(19px)}.consumer-card.pending .toggle-control[aria-checked="false"] span{transform:translateX(0)}.consumer-card.pending .toggle-control[aria-checked="true"] span{transform:translateX(19px)}.consumer-card.pending .toggle-control,.consumer-card.pending.active .toggle-control{background:#d9942b}.consumer-card.pending{border-color:#ebc47d}.consumer-card.pending b{color:#b16c0c}
@media(max-width:900px){.consumer-card.heating-control .circuit-room-status{align-items:flex-start;flex-direction:column}.circuit-room-status strong{text-align:left}}

/* Administrator device selector */
.admin-badge{padding:5px 9px;border-radius:999px;background:#e5f1fa;color:#2369a8;font-size:.64rem;font-weight:800}.device-picker{display:flex;align-items:center;gap:7px}.device-picker label{color:var(--muted);font-size:.62rem}.device-picker select{max-width:210px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);padding:7px 28px 7px 9px;font:inherit;outline:none}.device-picker select:focus{border-color:var(--teal);box-shadow:0 0 0 3px rgba(35,105,168,.1)}
@media(max-width:800px){.admin-badge,.device-picker label{display:none}.device-picker select{max-width:150px}.top-actions{gap:10px}}
