:root{--bg: #f4f6f4;--surface: #ffffff;--ink: #16211c;--muted: #55645b;--line: #dbe3de;--accent: #1f6f5c;--accent-ink: #0d4438;--accent-soft: #dff0ea;--warm: #a5651f;--warm-soft: #f4e6d4;--good: #1f6f5c;--warn: #b8862e;--critical: #ae3f2f;--shadow: rgba(22, 33, 28, .08);--font-sans: "IBM Plex Sans", system-ui, -apple-system, sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, "SF Mono", Consolas, monospace}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--bg: #101512;--surface: #1a221e;--ink: #e8ede9;--muted: #92a297;--line: #2b352f;--accent: #3fae91;--accent-ink: #7fd8c0;--accent-soft: #17352c;--warm: #dba25a;--warm-soft: #3a2c18;--good: #3fae91;--warn: #dfae4c;--critical: #e0796a;--shadow: rgba(0, 0, 0, .35)}}:root[data-theme=dark]{--bg: #101512;--surface: #1a221e;--ink: #e8ede9;--muted: #92a297;--line: #2b352f;--accent: #3fae91;--accent-ink: #7fd8c0;--accent-soft: #17352c;--warm: #dba25a;--warm-soft: #3a2c18;--good: #3fae91;--warn: #dfae4c;--critical: #e0796a;--shadow: rgba(0, 0, 0, .35)}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font-sans);font-size:15px}.numeric{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.dollar{color:var(--warm)}.app-shell{display:flex;flex-direction:column;min-height:100vh}.app-body{display:flex;flex:1;min-height:0}.app-content{flex:1;padding:32px 40px;min-width:0}.app-topbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:14px;height:56px;flex-shrink:0;padding:0 20px;background:var(--surface);border-bottom:1px solid var(--line)}.app-topbar-brand{font-weight:600;font-size:1.05rem;color:var(--accent-ink)}.app-topbar-spacer{flex:1}.sidebar-collapse-toggle{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:1px solid var(--line);border-radius:6px;background:var(--surface);color:var(--muted);cursor:pointer}.sidebar-collapse-toggle:hover{background:var(--accent-soft);color:var(--accent-ink)}.topbar-logout{padding:6px 12px;border:1px solid var(--line);border-radius:6px;background:var(--surface);color:var(--muted);font-size:.85rem;cursor:pointer}.topbar-logout:hover{background:var(--warm-soft);color:var(--warm);border-color:var(--warm)}.theme-toggle-group{display:flex;border:1px solid var(--line);border-radius:6px;overflow:hidden}.theme-toggle-button{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;border-left:1px solid var(--line);background:var(--surface);color:var(--muted);cursor:pointer}.theme-toggle-button:first-child{border-left:none}.theme-toggle-button:hover,.theme-toggle-button[aria-pressed=true]{background:var(--accent-soft);color:var(--accent-ink)}.sidebar{display:flex;flex-direction:column;width:220px;flex-shrink:0;overflow:hidden;background:var(--surface);border-right:1px solid var(--line);padding:24px 16px;transition:width .15s ease,padding .15s ease}.sidebar.sidebar-collapsed{width:0;padding-left:0;padding-right:0;border-right:none}.sidebar ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px;flex:1}.sidebar a{display:block;padding:8px 10px;border-radius:6px;color:var(--ink);text-decoration:none;font-size:.95rem;white-space:nowrap}.sidebar a:hover{background:var(--accent-soft)}.sidebar a.active{background:var(--accent-soft);color:var(--accent-ink);font-weight:600}.tile{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:20px 24px;display:inline-flex;flex-direction:column;gap:6px;min-width:180px;box-shadow:0 1px 3px var(--shadow)}.tile-label{color:var(--muted);font-size:.85rem;text-transform:uppercase;letter-spacing:.04em}.tile-value{font-size:2rem;font-weight:600}.alerts-panel{margin-top:32px}.alerts-panel h2{font-size:1.05rem;color:var(--muted);margin-bottom:12px}.alerts-panel ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.alert{background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--line);border-radius:6px;padding:10px 14px}.alert-warning{border-left-color:var(--warn);background:color-mix(in srgb,var(--warn) 8%,var(--surface))}.alert-critical{border-left-color:var(--critical);background:color-mix(in srgb,var(--critical) 8%,var(--surface))}.alert-good,.alert-info{border-left-color:var(--good);background:color-mix(in srgb,var(--good) 8%,var(--surface))}.data-table{width:100%;border-collapse:collapse;margin-top:16px;background:var(--surface);border:1px solid var(--line);border-radius:8px;overflow:hidden}.data-table th,.data-table td{padding:10px 14px;border-bottom:1px solid var(--line);text-align:left}.data-table thead th{color:var(--muted);font-size:.85rem;text-transform:uppercase;letter-spacing:.03em;border-bottom:2px solid var(--line)}.data-table tbody tr:last-child td{border-bottom:none}.data-table td.numeric{text-align:right}.data-table tr.stale{background:color-mix(in srgb,var(--warn) 8%,var(--surface))}.data-table tr.stale td:first-child{box-shadow:inset 3px 0 0 var(--warn)}.stale-flag{color:var(--warn);font-size:.8rem;text-transform:uppercase;letter-spacing:.03em}.utilities-page h1{margin-bottom:16px}.tab-strip{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--line);margin-bottom:24px}.tab-strip a{padding:8px 14px;border-radius:6px 6px 0 0;color:var(--muted);text-decoration:none;font-size:.9rem;font-weight:500;border-bottom:2px solid transparent;margin-bottom:-1px}.tab-strip a:hover{color:var(--accent-ink);background:var(--accent-soft)}.tab-strip a.tab-active{color:var(--accent-ink);border-bottom-color:var(--accent)}.circuit-costs-page td:last-child{width:25%;position:relative}.cost-bar{height:8px;background:var(--accent);border-radius:4px;min-width:2px}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg)}.login-form{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:32px 36px;width:100%;max-width:320px;display:flex;flex-direction:column;gap:10px}.login-form h1{margin:0 0 12px;font-size:1.3rem;color:var(--accent-ink)}.login-form label{font-size:.85rem;color:var(--muted);margin-bottom:-4px}.login-form input{padding:8px 10px;border:1px solid var(--line);border-radius:6px;font-size:.95rem;font-family:var(--font-sans)}.login-form input:focus{outline:2px solid var(--accent);outline-offset:1px}.login-form button{margin-top:8px;padding:10px 14px;background:var(--accent);color:#fff;border:none;border-radius:6px;font-size:.95rem;cursor:pointer}.login-form button:disabled{opacity:.6;cursor:default}.login-form [role=alert]{color:var(--critical);font-size:.85rem;margin:0}.trend-chart-wrapper{position:relative;width:100%;height:240px}.date-range-picker{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin-bottom:1rem}.date-range-picker label{color:var(--muted);font-size:.85rem}.date-range-picker input[type=date]{font-family:var(--font-mono);border:1px solid var(--line);border-radius:4px;padding:.3rem .5rem;background:var(--surface);color:var(--ink)}.date-range-picker button{border:1px solid var(--line);border-radius:4px;padding:.3rem .7rem;background:var(--surface);color:var(--accent-ink);cursor:pointer}.date-range-picker button:hover{background:var(--accent-soft)}.date-range-picker select{font-family:var(--font-sans);font-size:.85rem;border:1px solid var(--line);border-radius:4px;padding:.3rem .5rem;background:var(--surface);color:var(--ink)}.page-note{color:var(--muted);font-size:.85rem;margin-bottom:1rem}.bill-review-form{background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:1rem;margin:1rem 0;display:flex;flex-direction:column;gap:.5rem;max-width:480px}.bill-field{display:flex;flex-direction:column;gap:.2rem}.bill-field label{color:var(--muted);font-size:.8rem;text-transform:capitalize}.bill-field input{font-family:var(--font-mono);border:1px solid var(--line);border-radius:4px;padding:.4rem}.bill-pdf-link{color:var(--accent-ink);text-decoration:underline}.variance-warn{color:var(--warn)}.rate-plan-section{margin-bottom:2rem}.rate-plan-form{background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:1rem;margin-top:1rem;display:flex;flex-direction:column;gap:.5rem;max-width:480px}.rate-plan-form label{color:var(--muted);font-size:.8rem}.rate-plan-form input{font-family:var(--font-mono);border:1px solid var(--line);border-radius:4px;padding:.4rem}.rate-plan-row-actions{display:flex;gap:.4rem;white-space:nowrap}.rate-plan-row-actions button{border:1px solid var(--line);border-radius:4px;padding:.2rem .5rem;background:var(--surface);color:var(--accent-ink);cursor:pointer;font-size:.8rem}.contract-upload-label{display:inline-flex;align-items:center;gap:.3rem;color:var(--muted);font-size:.8rem;white-space:nowrap}.contract-upload-input{font-size:.75rem;max-width:8rem}.policy-document-list{list-style:none;margin:0 0 .4rem;padding:0;display:flex;flex-direction:column;gap:.2rem}.policy-document-list li{display:flex;flex-direction:column;gap:.1rem;padding-bottom:.3rem;border-bottom:1px solid var(--line)}.policy-document-list li:last-child{border-bottom:none}.policy-document-row{display:flex;align-items:center;gap:.3rem;white-space:nowrap}.policy-document-caption{display:flex;align-items:center;gap:.4rem;font-size:.75rem;color:var(--muted)}.policy-document-caption button{background:none;border:none;color:var(--accent-ink);text-decoration:underline;cursor:pointer;padding:0;font-size:.75rem}.policy-document-caption-edit{display:flex;align-items:center;gap:.3rem}.policy-document-caption-edit input{font-size:.75rem;flex:1;min-width:0;border:1px solid var(--line);border-radius:4px;padding:.2rem .35rem}.policy-document-caption-edit button{font-size:.75rem;border:1px solid var(--line);border-radius:4px;padding:.15rem .4rem;background:var(--surface);color:var(--accent-ink);cursor:pointer}.policy-document-remove{background:none;border:none;color:var(--muted);cursor:pointer;font-size:.9rem;line-height:1;padding:0}.policy-document-remove:hover{color:var(--critical)}.policy-document-upload{display:flex;align-items:center;gap:.3rem}.policy-document-upload select{font-size:.75rem;border:1px solid var(--line);border-radius:4px;background:var(--surface);color:var(--ink);padding:.15rem .3rem}.data-table td input[type=number],.data-table td input[type=date],.data-table td input[type=text],.data-table td input:not([type]){font-family:var(--font-mono);border:1px solid var(--line);border-radius:4px;padding:.25rem .4rem;width:100%;box-sizing:border-box}.panel{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:20px 24px;margin-top:20px}.panel h2{font-size:1.05rem;color:var(--muted);margin:0 0 12px}.temperatures-controls{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.temperatures-controls .date-range-picker{margin-bottom:0}.lowest-by-hour-toggle{display:flex;align-items:center;gap:.4rem;color:var(--ink);font-size:.9rem}.temperatures-controls>button{border:1px solid var(--line);border-radius:4px;padding:.3rem .9rem;background:var(--surface);color:var(--accent-ink);cursor:pointer}.temperatures-controls>button:hover{background:var(--accent-soft)}.trend-controls-row>button{border:1px solid var(--line);border-radius:4px;padding:.3rem .9rem;background:var(--surface);color:var(--accent-ink);cursor:pointer}.trend-controls-row>button:hover{background:var(--accent-soft)}.temperatures-chart-panel .trend-chart-wrapper{height:320px}.sensor-group{border:none;border-top:1px solid var(--line);padding:12px 0 4px;margin:0}.sensor-group:first-of-type{border-top:none;padding-top:0}.sensor-group legend{display:flex;align-items:center;gap:.75rem;font-weight:600;color:var(--ink);padding:0;margin-bottom:8px}.sensor-group legend button{font-weight:400;font-size:.8rem;border:1px solid var(--line);border-radius:4px;padding:.15rem .6rem;background:var(--surface);color:var(--accent-ink);cursor:pointer}.sensor-group legend button:hover{background:var(--accent-soft)}.sensor-checkbox{display:inline-flex;align-items:center;gap:.4rem;margin:0 16px 8px 0;font-size:.9rem;color:var(--ink)}.sensor-swatch{display:inline-block;width:10px;height:10px;border-radius:50%}.delta-controls,.trend-controls{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin-bottom:1rem}.delta-controls label,.trend-controls label{color:var(--muted);font-size:.85rem}.delta-controls select,.trend-controls select,.trend-controls input[type=number]{font-family:var(--font-sans);font-size:.85rem;border:1px solid var(--line);border-radius:4px;padding:.3rem .5rem;background:var(--surface);color:var(--ink)}.trend-controls input[type=number]{width:4.5rem}.delta-summary{display:flex;gap:1.5rem;margin:0 0 16px}.delta-summary div{display:flex;flex-direction:column;gap:2px}.delta-summary dt{color:var(--muted);font-size:.8rem;text-transform:uppercase;letter-spacing:.03em}.delta-summary dd{margin:0;font-size:1.2rem;font-weight:600}.hvac-trend-zones{display:grid;grid-template-columns:1fr;gap:24px}@media (min-width: 900px){.hvac-trend-zones{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}.hvac-trend-table caption{text-align:left;font-weight:600;color:var(--ink);padding-bottom:6px}.adapter-status{display:flex;gap:1.5rem;flex-wrap:wrap;margin:0 0 16px}.adapter-status div{display:flex;flex-direction:column;gap:2px}.adapter-status dt{color:var(--muted);font-size:.8rem;text-transform:uppercase;letter-spacing:.03em}.adapter-status dd{margin:0;font-size:1.05rem;font-weight:600}.status-pill{display:inline-block;border-radius:999px;padding:.15rem .6rem;font-size:.8rem;font-weight:600}.status-pill-ok{background:color-mix(in srgb,var(--good) 16%,var(--surface));color:var(--good)}.status-pill-warn{background:color-mix(in srgb,var(--warn) 16%,var(--surface));color:var(--warn)}.status-pill-retired{background:var(--accent-soft);color:var(--muted)}.sortable-column-header{display:inline-flex;align-items:center;gap:.15rem;border:none;background:none;padding:0;font:inherit;font-weight:600;color:inherit;cursor:pointer}.sortable-column-header:hover{color:var(--accent-ink)}.hvac-trend-table tfoot td{text-align:center;padding:10px 0}.hvac-trend-table tfoot button{border:1px solid var(--line);border-radius:4px;padding:.3rem .9rem;background:var(--surface);color:var(--accent-ink);cursor:pointer;font-size:.85rem}.hvac-trend-table tfoot button:hover{background:var(--accent-soft)}.hvac-trend-table td.numeric,.sensor-status-table td{text-align:left}.metric-key-cell{font-family:var(--font-mono);font-size:.85rem;color:var(--muted)}.sensor-config-table textarea{width:100%;min-height:3em;font-family:var(--font-sans);font-size:.9rem;border:1px solid var(--line);border-radius:4px;padding:.3rem .5rem;background:var(--surface);color:var(--ink)}.temperatures-page h1{margin-bottom:16px}.trend-controls-row{display:flex;justify-content:space-between;align-items:flex-end;flex-wrap:wrap;gap:12px;margin-bottom:1rem}.trend-controls-row .trend-controls{margin-bottom:0}.page-description{color:var(--muted);font-size:.9rem;margin:4px 0 16px}.hvac-trend-zone h3{margin:0 0 8px}.hvac-trend-chart-panel{height:280px;margin-bottom:16px}.sensor-type-filters{display:flex;gap:1rem;margin-bottom:12px}.sensor-type-filters label{display:flex;align-items:center;gap:.35rem;font-size:.9rem}.bill-row{cursor:pointer}.bill-row:hover{background:var(--accent-soft)}.bill-edit-actions{display:flex;gap:.5rem}
