:root{--navy:#102b3e;--navy-deep:#0d2233;--teal:#009fa6;--teal-bright:#12c6cd;--ink:#10283b;--muted:#657e94;--border:#dce5ed;--surface:#f4f8fb;--white:#fff;--shadow:0 16px 50px #16354c0b;font-family:Inter,"Segoe UI",Arial,sans-serif;color:var(--ink);font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input{font:inherit}a{color:inherit;text-decoration:none}button,a,input{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:focus-visible,a:focus-visible{outline:3px solid #13becb;outline-offset:4px}.login-page{min-height:100svh;background:var(--surface)}.login-shell{display:grid;grid-template-columns:minmax(400px,46%) 1fr;min-height:100svh}.brand-panel{background:radial-gradient(ellipse at 0 100%,#16485b 0,transparent 48%),linear-gradient(135deg,#16384b,var(--navy-deep));position:relative;overflow:hidden;color:#fff;padding:52px clamp(32px,5vw,88px);display:flex;flex-direction:column}.brand-panel:before,.brand-panel:after{content:"";position:absolute;border-radius:50%;width:390px;height:390px;pointer-events:none}.brand-panel:before{top:-235px;right:-170px;background:#08a8af0d;border:55px solid #08a8af0b}.brand-panel:after{bottom:-300px;left:-130px;background:#00b6c319}.brand{display:flex;align-items:center;gap:13px;font-size:25px;font-weight:700;letter-spacing:-.6px;position:relative;z-index:1}.brand-mark{display:inline-flex;align-items:center;justify-content:center;font-family:Arial,sans-serif;line-height:1;font-weight:900;font-style:italic;font-size:35px;color:var(--teal-bright);border:4px solid currentColor;border-radius:50%;width:45px;height:45px;transform:rotate(-16deg)}.brand-message{margin-top:clamp(72px,12vh,140px);position:relative;z-index:1}.eyebrow{display:block;color:#81b1c1;font-size:10px;letter-spacing:2.7px;font-weight:600;margin-bottom:22px}h1{font-size:clamp(38px,4.4vw,66px);font-weight:700;line-height:1.15;letter-spacing:-2.4px;margin:0 0 23px}h1 span{color:var(--teal-bright)}.brand-message p{color:#a5c1ce;font-size:16px;line-height:1.7;margin:0}.house-art{display:block;width:100%;max-width:490px;color:#8eb8c880;margin:45px auto 0;flex-shrink:0}.brand-caption{display:flex;align-items:center;gap:9px;font-size:11px;letter-spacing:.5px;color:#94b4c2;margin-top:auto;padding-top:24px}.status-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--teal-bright)}.login-content{display:flex;align-items:center;justify-content:center;flex-direction:column;padding:60px 36px 27px;position:relative;background:radial-gradient(ellipse at bottom right,#e8f4f7,transparent 55%)}.login-card{background:var(--white);width:100%;max-width:450px;border:1px solid #e2eaf0;border-radius:19px;padding:42px 38px 28px;box-shadow:var(--shadow);margin:auto 0}.card-mark{display:flex;margin:0 auto 26px;color:var(--teal);height:43px;width:43px;font-size:33px}h2{text-align:center;font-size:27px;letter-spacing:-.8px;margin:0 0 10px;font-weight:700}.subtitle{text-align:center;color:var(--muted);margin:0 0 36px;font-size:14px}.field{margin:0 0 23px}.field label{display:block;font-size:13px;font-weight:600;margin-bottom:10px}.input-wrap{position:relative;display:flex;align-items:center}.input-wrap>svg{position:absolute;left:15px;width:19px;height:19px;color:#7e95aa;pointer-events:none}.input-wrap input{width:100%;height:51px;border:1px solid #cad8e4;border-radius:7px;background:#fff;padding:0 43px;color:var(--ink);font-size:14px;transition:border-color .15s,box-shadow .15s}.input-wrap input::placeholder{color:#8a9eb0}.input-wrap input:focus{outline:0;border-color:var(--teal);box-shadow:0 0 0 3px #009fa617}.password-toggle{position:absolute;right:9px;width:35px;height:35px;display:flex;align-items:center;justify-content:center;border:0;background:transparent;color:#5f7a91;border-radius:5px}.password-toggle[hidden]{display:none}.password-toggle:hover{background:#eff7f8}.password-toggle svg{width:21px;height:21px}.primary-button{display:flex;justify-content:center;align-items:center;gap:17px;color:#fff;background:linear-gradient(100deg,#00a8ae,#009aa4);border:0;border-radius:7px;height:51px;width:100%;font-size:15px;font-weight:600;box-shadow:0 5px 10px #009fa613;transition:filter .15s,transform .15s;margin-top:29px}.primary-button:hover{filter:brightness(.94)}.primary-button:active{transform:translateY(1px)}.primary-button span:last-child{font-size:24px;font-weight:400}.access-note{display:flex;justify-content:center;align-items:center;gap:8px;border-top:1px solid #e5ecf2;margin-top:29px;padding-top:24px;color:#7890a4;font-size:10px;line-height:1.5;text-align:center}.access-note svg{width:15px;height:17px;flex-shrink:0}.login-content footer{font-size:11px;color:#8ca0b1;margin-top:36px;text-align:center}.login-content footer span{padding:0 8px;color:#b4c3cd}.form-error{padding:13px 14px;margin:-10px 0 22px;border:1px solid #f1caca;background:#fff4f3;border-radius:7px;color:#ab3838;font-size:13px;line-height:1.6}.app-page{background:var(--surface);min-height:100svh}.app-shell{display:grid;grid-template-columns:235px 1fr;min-height:100svh}.sidebar{background:var(--navy-deep);color:#dfeaf1;padding:35px 20px;display:flex;flex-direction:column}.sidebar .brand{font-size:20px;margin:0 7px 47px}.sidebar .brand-mark{width:36px;height:36px;font-size:27px;border-width:3px}.nav-link{display:flex;align-items:center;gap:13px;padding:15px 17px;margin:5px 0;border-radius:9px;font-size:14px}.nav-link.active{background:var(--teal);color:#fff}.nav-link.disabled{color:#7993a5;cursor:default}.nav-icon{width:18px;text-align:center;font-size:19px}.user-menu{margin-top:auto;padding:20px 7px 0;border-top:1px solid #284051}.user-name{font-size:13px;margin:0 0 15px}.logout-button{background:none;border:0;color:#b1c6d4;padding:0;font-size:12px}.logout-button:hover{color:#fff}.dashboard-content{padding:50px clamp(24px,4vw,65px)}.page-heading{display:flex;justify-content:space-between;gap:24px;align-items:flex-start;margin-bottom:35px}.page-heading h1{color:var(--ink);font-size:34px;letter-spacing:-1px;margin:0 0 10px}.page-heading p{color:var(--muted);font-size:14px;margin:0}.small-badge{background:#e5f4f4;color:#16858a;border-radius:20px;padding:8px 12px;font-size:11px;white-space:nowrap}.empty-state{background:#fff;border:1px solid var(--border);border-radius:15px;max-width:800px;min-height:300px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:40px 25px;box-shadow:var(--shadow)}.empty-icon{font-size:36px;width:75px;height:75px;background:#e9f7f7;color:var(--teal);border-radius:20px;display:grid;place-items:center;margin-bottom:23px}.empty-state h2{font-size:21px}.empty-state p{font-size:14px;color:var(--muted);line-height:1.8;max-width:410px;margin:3px auto}.development-note{margin-top:25px!important;font-size:12px!important;color:#8699aa!important}.units-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:20px}.unit-card{padding:25px;background:#fff;border:1px solid var(--border);border-radius:12px}.unit-card h2{text-align:left;font-size:20px}.unit-card p{font-size:13px;color:var(--muted)}.unit-card .unknown{font-size:28px;margin-top:25px;color:#8a9eb0}@media(min-height:950px){.brand-message{margin-top:16vh}.house-art{margin-top:65px}}@media(max-width:1000px){.brand-panel{padding:40px 30px}.login-shell{grid-template-columns:43% 1fr}h1{font-size:42px;letter-spacing:-1.5px}.brand{font-size:22px}.eyebrow{font-size:9px;letter-spacing:1.6px}.brand-message p{font-size:14px}.login-content{padding:40px 24px 25px}.login-card{padding:34px 28px 25px}.app-shell{grid-template-columns:200px 1fr}.sidebar{padding:30px 12px}.dashboard-content{padding:35px 25px}}@media(max-width:700px){.login-shell{display:flex;flex-direction:column}.brand-panel{padding:26px 25px;min-height:100px}.brand{font-size:22px;gap:10px}.brand-mark{height:36px;width:36px;font-size:27px;border-width:3px}.brand-message,.house-art,.brand-caption{display:none}.login-content{padding:36px 22px 25px;flex:1}.login-card{max-width:425px;border-radius:15px;padding:32px 26px 25px}.card-mark{height:42px;width:42px;font-size:32px;margin-bottom:23px}.login-card h2{font-size:25px}.subtitle{margin-bottom:29px}.access-note{font-size:10px}.login-content footer{margin-top:35px;font-size:10px}.app-shell{display:flex;flex-direction:column}.sidebar{padding:20px;display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:16px}.sidebar .brand{margin:0;font-size:19px}.sidebar nav{display:none}.user-menu{border:0;margin:0;padding:0;text-align:right}.user-name{margin:0 0 5px}.dashboard-content{padding:32px 20px}.page-heading h1{font-size:29px}.page-heading{gap:10px}.small-badge{font-size:9px}.empty-state{min-height:330px;padding:30px 20px}.brand-panel:before{width:290px;height:290px;top:-200px;right:-40px}.brand-panel:after{display:none}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}
.action-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--teal);color:#fff;border:1px solid var(--teal);border-radius:8px;padding:13px 19px;font-size:13px;font-weight:600;white-space:nowrap;min-height:44px}.action-button:hover{background:#008b93}.empty-state .action-button{margin-top:24px}.secondary-button{display:inline-flex;align-items:center;justify-content:center;padding:12px 16px;min-height:42px;border:1px solid #d9e5eb;border-radius:7px;font-size:12px;font-weight:600;color:#4b697c;background:#fff}.secondary-button:hover{border-color:var(--teal);color:var(--teal)}.back-link{display:inline-block;color:#6b8394;font-size:12px;margin-bottom:21px}.back-link:hover{color:var(--teal)}.form-grid{display:grid;grid-template-columns:minmax(0,1.12fr) minmax(0,1fr);gap:24px;align-items:start}.form-panel{padding:28px;background:#fff;border:1px solid var(--border);border-radius:13px;box-shadow:var(--shadow);min-width:0}.form-panel h2{text-align:left;font-size:19px;letter-spacing:-.4px;margin-bottom:8px}.panel-subtitle{font-size:12px;color:var(--muted);line-height:1.7;margin:0 0 26px}.form-field{margin-bottom:22px;min-width:0}.form-field label{display:block;font-size:12px;font-weight:600;margin-bottom:9px}.form-field input{width:100%;min-width:0;height:45px;border:1px solid #cbd9e4;border-radius:7px;padding:0 12px;font-size:13px;color:var(--ink);background:#fff}.form-field input:focus{outline:0;border-color:var(--teal);box-shadow:0 0 0 3px #009fa617}.form-field input::placeholder{color:#9aabb8}.form-field small{display:block;font-size:11px;color:#8295a4;line-height:1.6;margin-top:7px}.coordinates-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}.map-heading{display:flex;flex-direction:column;gap:6px;font-size:12px;font-weight:600;margin-bottom:12px}.map-heading small{font-size:11px;color:var(--muted);font-weight:400}.unit-map{height:300px;width:100%;border:1px solid #d9e5eb;border-radius:8px;background:#eaf0f4;z-index:0}.map-status{font-size:11px;line-height:1.6;color:var(--muted);margin:12px 0 0}.collection-option{display:flex;gap:11px;align-items:flex-start;border:1px solid #deecee;border-radius:8px;padding:15px;background:#f7fbfc;margin-top:25px}.collection-option input[type=checkbox]{accent-color:var(--teal);width:17px;height:17px;margin:1px 0 0;flex-shrink:0}.collection-option label{font-size:12px;line-height:1.5;cursor:pointer}.collection-option label span{display:block;color:var(--muted);font-size:11px;font-weight:400;margin-top:5px}.info-box{color:#738999;font-size:11px;line-height:1.8;padding:15px;margin-top:20px;background:#f4f7fa;border-radius:7px}.form-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:25px}.unit-card-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:22px}.unit-symbol{background:#e9f8f7;color:var(--teal);font-size:26px;height:43px;width:43px;border-radius:11px;display:grid;place-items:center}.unit-card-heading .small-badge{font-size:9px;padding:7px 9px}.badge-muted{background:#eff2f5;color:#8395a4}.coordinates-display{font-variant-numeric:tabular-nums;font-size:11px!important;color:#8a9ead!important}.unit-card .secondary-button{margin-top:16px;width:100%}.success-message{padding:15px 18px;color:#20796c;background:#eaf8f2;border:1px solid #c9eadc;border-radius:9px;font-size:13px;margin-bottom:24px}.form-error ul{padding-left:18px;margin:8px 0 0}.mobile-nav{display:none}.unit-form{max-width:1180px}@media(max-width:1100px){.form-panel{padding:22px}.form-grid{gap:17px}.dashboard-content{min-width:0}}@media(max-width:900px){.form-grid{grid-template-columns:1fr}.form-panel{max-width:700px}.unit-form{max-width:700px}}@media(max-width:700px){.dashboard-content{padding-bottom:100px}.page-heading{flex-wrap:wrap;align-items:center;row-gap:20px}.page-heading .action-button{padding:11px 14px;font-size:12px}.mobile-nav{position:fixed;bottom:0;left:0;right:0;z-index:1000;display:flex;background:#fff;border-top:1px solid #dce6ed;padding:10px 8px calc(10px + env(safe-area-inset-bottom));box-shadow:0 -3px 15px #19394d08;justify-content:space-around}.mobile-nav a{display:flex;flex-direction:column;align-items:center;gap:4px;min-width:80px;font-size:10px;color:#7990a1}.mobile-nav a span{font-size:22px;line-height:1.2}.mobile-nav a.selected{color:var(--teal);font-weight:600}.form-panel{padding:21px 18px}.form-actions{justify-content:stretch}.form-actions .action-button{flex:1}.coordinates-row{gap:12px}.unit-map{height:270px}.back-link{font-size:11px}}

.heading-actions{display:flex;align-items:center;gap:11px}.monitor-grid{grid-template-columns:repeat(auto-fill,minmax(275px,1fr));gap:22px}.monitor-card{padding:24px}.monitor-card-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:22px}.heating-badge{display:inline-block;border-radius:20px;padding:8px 11px;font-size:10px;font-weight:600;white-space:nowrap}.heating-active{background:#fff0e5;color:#dc651a}.heating-inactive{background:#eef3f7;color:#698093}.heating-unknown{background:#f2f4f6;color:#8797a3}.monitor-card h2{font-size:20px;line-height:1.4;margin:0 0 6px}.monitor-card .unit-address{font-size:12px;margin:0;color:var(--muted);min-height:18px;overflow-wrap:anywhere}.indoor-reading{display:flex;align-items:baseline;gap:7px;font-size:43px;letter-spacing:-1.8px;font-weight:700;line-height:1.2;margin:28px 0 6px}.temperature-unit{font-size:25px;font-weight:500;letter-spacing:-.5px}.monitor-card .reading-caption{font-size:11px;color:#8a9dad;margin:0 0 25px}.temperature-details{display:grid;grid-template-columns:1fr 1fr;gap:16px;padding:19px 0;border-top:1px solid #e6edf2;border-bottom:1px solid #e6edf2}.temperature-details>div+div{border-left:1px solid #e6edf2;padding-left:18px}.temperature-details span{display:block;font-size:10px;line-height:1.5;color:var(--muted);margin-bottom:7px}.temperature-details strong{font-size:18px;font-weight:600}.outdoor-temperature{color:#2997d3}.monitor-card .measurement-time{font-size:10px;color:#738b9d;line-height:1.6;margin:17px 0 5px}.monitor-card .measurement-help{font-size:10px;color:#91a2af;line-height:1.6;margin:5px 0}.monitor-card .stale-notice{color:#9d721d;font-size:11px;background:#fff8e9;border-radius:6px;padding:10px;line-height:1.6}.dashboard-footnote{font-size:11px;line-height:1.8;color:#8b9eac;margin:25px 0 0}.dashboard-footnote a{color:#4d8998;text-decoration:underline}@media(max-width:700px){.heading-actions{width:100%}.heading-actions .action-button{flex:1}.monitor-grid{grid-template-columns:1fr}.monitor-card{padding:24px}.indoor-reading{font-size:43px}.dashboard-footnote{margin-bottom:5px}}

.statistics-filters{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin:0 0 25px;padding:20px 24px;background:#fff;border:1px solid var(--border);border-radius:12px}.stats-select{min-width:220px;max-width:420px;flex:1}.stats-select label{display:block;font-size:11px;font-weight:600;color:var(--muted);margin-bottom:8px}.stats-select select{width:100%;height:43px;border:1px solid #d8e3eb;border-radius:7px;padding:0 12px;color:var(--ink);font:inherit;font-size:13px;background:#fff}.stats-select select:focus{outline:2px solid var(--teal)}.stats-periods{display:flex;gap:8px}.period-button{background:#f1f5f8;color:#5e7a8d;border:0;padding:13px 20px;border-radius:7px;font-size:12px;min-height:43px}.period-button.selected{background:var(--teal);color:#fff}.statistics-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-bottom:20px}.summary-card{padding:20px 24px;border:1px solid var(--border);background:#fff;border-radius:11px}.summary-card>span{display:block;font-size:11px;color:var(--muted);margin-bottom:13px}.summary-card>strong{font-size:23px;letter-spacing:-.6px;line-height:1.3}.summary-card .heating-total{color:#e78035}.summary-card>small{display:block;font-size:10px;color:#94a5b2;margin-top:8px;line-height:1.7}.chart-panel{border:1px solid var(--border);border-radius:12px;background:#fff;padding:22px 20px 10px;margin-bottom:20px;overflow:hidden}.chart-panel-heading{display:flex;align-items:center;justify-content:space-between;gap:15px;flex-wrap:wrap;padding:0 5px 10px}.chart-panel-heading h2{font-size:17px;letter-spacing:-.3px;text-align:left;margin:0}.chart-panel-heading>span{font-size:10px;color:#8ba1af}.temperature-chart{height:330px;width:100%}.heating-chart{height:105px;width:100%}.runtime-chart{height:260px;width:100%}.heating-legend{display:flex;gap:14px;flex-wrap:wrap}.heating-legend>span{display:flex;align-items:center;gap:6px;font-size:10px;color:#7991a1}.heating-legend i{width:13px;height:7px;display:inline-block;border-radius:2px}.legend-active{background:#f29149}.legend-inactive{background:#c9d8df}.legend-unknown{background:#eef2f5;border:1px solid #dce5eb}.chart-note{font-size:11px;line-height:1.8;color:#8a9eac;margin:0 5px 12px}.charts-status{color:#8096a7;font-size:11px;line-height:1.8;margin:0 0 15px}.charts-warning{color:#9b6d2f;background:#fff8ea;border:1px solid #f0dfb8;border-radius:8px;padding:12px}.chart-empty{display:flex;align-items:center;justify-content:center;text-align:center;color:#8a9eac;font-size:12px;line-height:1.8;padding:25px;min-height:100px}.measurements-details{border:1px solid var(--border);border-radius:10px;background:#fff;padding:18px 20px;margin-top:20px}.measurements-details summary{font-size:12px;font-weight:600;cursor:pointer}.measurements-details[open] summary{margin-bottom:18px}.table-scroll{overflow-x:auto}.measurement-table{width:100%;border-collapse:collapse;white-space:nowrap;font-size:11px;text-align:left}.measurement-table th{color:#688397;font-weight:600;background:#f5f8fa}.measurement-table th,.measurement-table td{padding:12px;border-bottom:1px solid #e8eef2}.measurement-table td{color:#6b8395}.measurement-table tr:last-child td{border:0}@media(max-width:1000px){.statistics-summary{gap:12px}.summary-card{padding:18px}.summary-card>strong{font-size:19px}.chart-panel{padding:19px 12px 8px}.period-button{padding:12px 15px}}@media(max-width:700px){.statistics-filters{flex-direction:column;align-items:stretch;padding:18px;gap:17px}.stats-select{max-width:none;min-width:0}.stats-periods{width:100%}.period-button{flex:1}.statistics-summary{grid-template-columns:1fr;gap:11px}.summary-card{display:grid;grid-template-columns:1fr auto;align-items:center;gap:4px 10px;padding:16px 18px}.summary-card>span{margin:0;font-size:10px}.summary-card>strong{font-size:20px}.summary-card>small{margin:0;grid-column:1/-1}.chart-panel-heading h2{font-size:16px}.temperature-chart{height:285px}.runtime-chart{height:235px}.chart-panel-heading{padding-bottom:12px}.heating-panel .chart-panel-heading{align-items:flex-start;gap:12px}.heating-legend{gap:10px}.chart-note{font-size:10px}.mobile-nav a{min-width:0;width:25%}.chart-empty{font-size:11px}}

.chart-range-option{display:flex;align-items:center;gap:8px;font-size:11px;line-height:1.7;color:#7a91a1;margin:5px 0 12px;cursor:pointer}.chart-range-option input{accent-color:var(--teal);width:15px;height:15px;flex-shrink:0}


.control-selector{padding:20px 24px;background:#fff;border:1px solid var(--border);border-radius:12px;margin-bottom:25px;max-width:700px}.control-selector>label{display:block;font-size:11px;font-weight:600;color:var(--muted);margin-bottom:9px}.control-selector>div{display:flex;gap:12px}.control-selector select{flex:1;min-width:0;height:43px;padding:0 12px;border:1px solid #d4e1ea;background:#fff;color:var(--ink);border-radius:7px;font:inherit;font-size:13px}.control-grid{display:grid;grid-template-columns:minmax(260px,.85fr) minmax(0,1.15fr);gap:24px;max-width:1050px;align-items:start}.control-forms{display:grid;gap:22px}.control-status h2{overflow-wrap:anywhere}.control-status .unit-address{font-size:13px;color:var(--muted);overflow-wrap:anywhere;line-height:1.6}.control-status .reading-caption{font-size:11px;color:#8a9dad;margin-bottom:24px}.control-status .measurement-time{font-size:11px;color:#7890a3;margin:20px 0 12px}.control-status .stale-notice{font-size:11px;line-height:1.7;color:#9c722a;background:#fff8eb;padding:12px;border-radius:6px}.control-status .chart-note{margin:0 0 18px}.control-status .secondary-button{width:100%}.form-field select{width:100%;height:45px;border:1px solid #cbd9e4;border-radius:7px;background:#fff;color:var(--ink);padding:0 12px;font-size:13px}.thermostat-command .action-button{width:100%}.action-button:disabled{cursor:wait;opacity:.6}.unit-quick-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.unit-quick-actions .secondary-button{margin-top:18px;font-size:11px;padding:10px}.unit-quick-actions+.secondary-button{margin-top:10px}@media(max-width:900px){.control-grid{grid-template-columns:1fr}.control-status{max-width:700px}.control-forms{max-width:700px}}@media(max-width:700px){.control-selector{padding:18px}.control-selector>div{gap:8px}.control-selector .secondary-button{font-size:11px;padding:10px}.control-grid{gap:18px}}
