:root{--bg:#f6f7f9;--card:#fff;--ink:#202e3c;--muted:#73808e;--line:#e8ecf0;--teal:#138d79;--teal-light:#e9f5ef;--purple:#8b7acb;--blue:#769fcd;--gold:#c59347;--nav:#1c3037}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:14px -apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;-webkit-font-smoothing:antialiased}button,input,select{font:inherit}button,a,input,select{outline-offset:4px}button{cursor:pointer}button{transition:background .15s,transform .15s}button:disabled{cursor:default;opacity:.4}a{color:var(--teal)}.sidebar{width:228px;position:fixed;inset:0 auto 0 0;background:var(--card);border-right:1px solid var(--line);padding:34px 23px;display:flex;flex-direction:column}.brand{text-decoration:none;font-size:29px;font-weight:720;letter-spacing:-1.5px;color:#23363b;display:flex;align-items:center;gap:9px}.brand-mark{color:var(--teal);font-size:37px;font-weight:400}.brand-dot{color:var(--teal);margin-left:-9px}.workspace-label{font-size:9px;letter-spacing:1.7px;color:#99a3ae;margin:43px 0 18px 11px}.sidebar nav{display:grid;gap:7px}.nav-item{border:0;background:transparent;color:#73808a;display:flex;align-items:center;gap:12px;width:100%;padding:13px 12px;border-radius:7px;font-weight:550;text-align:left}.nav-item>span{font-size:21px;width:23px;text-align:center}.nav-item.active{background:var(--teal-light);color:#197966}.nav-item:hover{background:#f1f5f5}.sidebar-bottom{margin-top:auto}.system-card{padding:17px 12px 25px;font-size:9px;letter-spacing:1px;color:#82918f;border-bottom:1px solid var(--line);margin-bottom:13px}.system-card strong{display:block;font-size:12px;color:#34434a;margin:11px 0 7px;letter-spacing:0}.system-card>span:last-child{font-size:10px;letter-spacing:0}.small-dot{display:inline-block;width:6px;height:6px;background:var(--teal);border-radius:50%;margin-right:6px}main{margin-left:228px;padding:42px 42px 20px;max-width:1760px}header{display:flex;justify-content:space-between;align-items:center;margin-bottom:33px}.eyebrow{font-size:10px;letter-spacing:1.8px;color:#8a97a3;font-weight:650}.eyebrow span{color:#4d6971}h1{font-size:31px;line-height:1.2;letter-spacing:-1.2px;font-weight:600;margin:13px 0 10px}header p{margin:0;color:var(--muted);font-size:13px}.header-actions{display:flex;align-items:center;gap:12px}.live-pill{padding:9px 12px;border-radius:30px;background:#eaf3ee;color:#47816b;font-size:11px;white-space:nowrap}.live-pill i{display:inline-block;width:6px;height:6px;border-radius:50%;background:currentColor;margin-right:6px}.live-pill.stale{background:#fff0da;color:#a47839}.icon-button{width:32px;height:32px;border:1px solid var(--line);background:var(--card);border-radius:6px;font-size:22px;color:#6b7b85;display:inline-flex;align-items:center;justify-content:center}.toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:22px}.segmented{display:flex;padding:4px;background:#e9edf0;border-radius:8px;gap:3px}.segmented button{padding:8px 18px;border:0;background:transparent;color:#7c8893;font-size:12px;border-radius:5px}.segmented .selected{background:var(--card);color:#344c50;box-shadow:0 1px 3px #20303b10}.date-controls{display:flex;align-items:center;gap:8px}.date-controls input{border:0;background:transparent;color:#53626f;padding:5px;width:134px;font-size:12px}.text-button{border:0;background:transparent;color:var(--teal);font-size:12px;padding:8px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:23px}.card{background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:0 2px 3px #18202c02}.stat{padding:21px 21px 19px}.stat-title{display:flex;align-items:center;justify-content:space-between;font-size:12px;color:#77848e}.stat-icon{width:28px;height:28px;border-radius:8px;display:grid;place-items:center;font-size:17px;background:#eff7f2;color:var(--teal)}.stat-icon.purple{color:var(--purple);background:#f3effa}.stat-icon.blue{color:#5d8dae;background:#edf4fa}.stat-icon.gold{color:#b18b49;background:#faf5e8}.stat-value{font-size:32px;letter-spacing:-1.1px;margin:16px 0 9px;font-weight:620;white-space:nowrap}.stat-value small{font-size:13px;font-weight:450;letter-spacing:0;color:#89959e;margin-left:6px}.stat-note{font-size:10px;color:#8a969e}.stat-note b{font-weight:500;color:var(--teal)}.chart-card{padding:23px 25px 15px}.card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:15px}.card-header h2,h2{font-size:16px;margin:0 0 7px;font-weight:600;letter-spacing:-.3px}.card-header p{font-size:11px;color:#98a0a8;margin:0}.legend{display:flex;align-items:center;gap:19px;font-size:10px;color:#84909b;white-space:nowrap}.legend span:before{content:'';width:7px;height:7px;border-radius:50%;background:var(--teal);display:inline-block;margin-right:7px}.legend span.purple:before{background:var(--purple)}.legend span.blue:before{background:var(--blue)}.chart{position:relative;width:100%;min-height:280px;margin:19px 0 0}.chart svg{width:100%;height:auto;display:block;overflow:visible}.chart-label{fill:#96a1aa;font-size:10px;font-family:inherit}.chart-footer{border-top:1px solid #f0f2f4;padding:13px 0 0;margin-top:5px;display:flex;justify-content:space-between;color:#97a1aa;font-size:10px;gap:10px}.dot-key{display:flex;align-items:center;gap:7px}.dot-key:before{content:'';width:5px;height:5px;border-radius:50%;background:var(--teal)}.bottom-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin-top:22px}.flow-card{padding:23px 25px}.badge{padding:5px 8px;border-radius:5px;background:#f0f5f2;color:#67907e;font-size:9px;white-space:nowrap}.flow{display:flex;align-items:center;justify-content:space-between;margin:30px 5px 26px;gap:6px}.flow-node{text-align:center;min-width:67px}.flow-node .circle{width:55px;height:55px;margin:0 auto 11px;border-radius:50%;background:#f0f7f3;color:var(--teal);display:grid;place-items:center;font-size:26px;border:1px solid #e1efe8}.flow-node.home .circle{color:var(--purple);background:#f3f0fa;border-color:#ebe6f7}.flow-node.grid .circle{color:var(--blue);background:#f0f5fa;border-color:#e4edf5}.flow-node strong{display:block;font-size:13px;font-weight:600}.flow-node small{display:block;color:#9aa4ad;font-size:10px;margin-top:5px}.flow-line{flex:1;border-top:1px dashed #becfc9;position:relative;top:-17px}.flow-line:after{content:'›';position:absolute;right:0;top:-12px;color:#9ab8ad;font-size:18px}.flow-summary{display:flex;justify-content:space-between;padding-top:17px;border-top:1px solid var(--line);font-size:11px;color:#8c99a1}.flow-summary b{color:#4a625c;font-weight:500}.forecast-teaser{padding:23px 25px;background:linear-gradient(130deg,#f2f8f4,#fff);position:relative;overflow:hidden}.forecast-teaser:after{content:'↗';position:absolute;right:25px;bottom:38px;font-size:125px;font-weight:200;color:#dfede5;pointer-events:none}.forecast-teaser .big-number{font-size:33px;letter-spacing:-1px;margin:20px 0 7px;color:#257960}.forecast-teaser p{font-size:12px;color:#84948b;max-width:80%;line-height:1.7}.forecast-teaser button{border:1px solid #d4e4da;border-radius:6px;background:var(--card);color:#33775e;padding:9px 13px;font-size:11px;margin-top:5px;position:relative;z-index:1}.muted{color:var(--muted);line-height:1.65;font-size:12px}.fine{font-size:11px;color:#89949c;line-height:1.65}.callout{padding:14px 18px;background:#fff7e9;border:1px solid #f0e6d2;border-radius:8px;color:#967237;font-size:12px;line-height:1.6;margin-bottom:20px}.callout.subtle{background:#f1f6f6;border-color:#e1eded;color:#657b80}.callout button{border:0;background:transparent;color:inherit;text-decoration:underline;cursor:pointer}.loading{text-align:center;padding:95px 20px;color:var(--muted)}.loading h2{margin:20px 0 8px;color:#486169}.loading p{font-size:12px}.spinner{display:inline-block;width:25px;height:25px;border-radius:50%;border:2px solid #d7e8e1;border-top-color:var(--teal);animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}footer{display:flex;justify-content:space-between;font-size:10px;color:#a2adb4;margin-top:26px;padding:14px 0}footer b{padding:0 7px;font-weight:400}.table-card{padding:23px 25px;margin-top:22px;overflow:auto}table{width:100%;border-collapse:collapse;font-size:12px}th{text-align:right;font-size:10px;letter-spacing:.5px;color:#89959f;font-weight:500;padding:15px 10px;border-bottom:1px solid var(--line)}td{text-align:right;padding:13px 10px;border-bottom:1px solid #f1f3f5;color:#60727b}th:first-child,td:first-child{text-align:left}tr:last-child td{border:0}.table-card h2{margin-bottom:7px}.panel-toolbar{display:flex;gap:12px;margin-bottom:22px;align-items:center;flex-wrap:wrap}.panel-toolbar input{flex:1;min-width:180px}.panel-toolbar input,.panel-toolbar select{padding:10px 12px;border:1px solid var(--line);border-radius:7px;background:var(--card);color:#647581;font-size:12px}.roof-section{margin:24px 0}.roof-title{display:flex;justify-content:space-between;align-items:center;margin:0 2px 13px}.roof-title h2{font-size:14px}.roof-title span{font-size:11px;color:#97a1a7}.panel-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.panel-tile{border:1px solid var(--line);background:var(--card);border-radius:9px;padding:17px;text-align:left;color:var(--ink)}.panel-tile:hover{border-color:#92c9b7;transform:translateY(-2px);box-shadow:0 3px 10px #234d3610}.panel-tile .panel-top{display:flex;justify-content:space-between;color:#859a9f;font-size:10px}.panel-graphic{width:37px;height:28px;background:linear-gradient(90deg,transparent 31%,#fff7 32%,#fff7 34%,transparent 35%,transparent 65%,#fff7 66%,#fff7 68%,transparent 69%),linear-gradient(0deg,transparent 46%,#fff7 47%,#fff7 51%,transparent 52%),#699d92;border:2px solid #538b7e;border-radius:3px;transform:skewX(-6deg);margin-bottom:16px}.panel-tile strong{font-size:22px;letter-spacing:-.5px;font-weight:600;display:block}.panel-tile strong small{font-size:10px;color:#98a5ab;letter-spacing:0;font-weight:400}.panel-tile .serial{display:block;font-size:9px;font-family:ui-monospace,monospace;color:#8a9b9e;margin:8px 0 13px}.panel-bottom{display:flex;justify-content:space-between;font-size:10px;color:#91a19f;padding-top:10px;border-top:1px solid #f0f4f2}.panel-tile.no-data{opacity:.65}.projection-hero{display:grid;grid-template-columns:1.1fr 1fr;gap:22px;margin-bottom:22px}.projection-main{padding:30px;background:#eaf4ee;border-color:#dcebe1}.projection-main h2{font-size:12px;letter-spacing:.6px;color:#618675}.projection-main .large{font-size:46px;letter-spacing:-2px;margin:20px 0 10px;color:#267553}.projection-main .large small{font-size:18px;letter-spacing:-.5px}.projection-main p{color:#6d887b;font-size:12px;line-height:1.7}.projection-side{padding:28px}.projection-side .large{font-size:38px;margin:19px 0 10px;font-weight:600;letter-spacing:-1px}.assumptions{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;padding:23px}.assumptions h3{font-size:11px;font-weight:500;color:#83908b;margin:0 0 10px}.assumptions strong{font-size:16px;font-weight:550}.assumptions p{font-size:10px;color:#9aa49f;line-height:1.6}.details-block{margin-top:23px;padding:24px}.details-block summary{cursor:pointer;font-weight:600;font-size:12px}.details-block p,.details-block li{font-size:12px;color:#7d8993;line-height:1.8}.positive{color:var(--teal)}.negative{color:#ac7546}.primary-button{background:var(--teal);color:white;border:0;padding:11px 17px;border-radius:7px;font-size:12px}.error{color:#b2634b;font-size:12px}.empty{padding:55px 25px;text-align:center;color:#8c979e}.download{border:1px solid var(--line);background:var(--card);color:#7d8c96;font-size:11px;padding:8px 12px;border-radius:6px}dialog{border:1px solid var(--line);border-radius:14px;padding:28px;max-width:710px;width:calc(100% - 32px);max-height:90vh;box-shadow:0 25px 90px #172e3630;color:var(--ink)}dialog::backdrop{background:#1b303855;backdrop-filter:blur(4px)}.dialog-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px}.dialog-heading h2{font-size:23px;margin:10px 0 0;letter-spacing:-.6px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:20px 0}.form-grid label{font-size:11px;color:#71818b;display:grid;gap:7px}.form-grid input,.form-grid select,.rate-table input{min-width:0;width:100%;padding:10px;border:1px solid #dfe5e8;border-radius:6px;background:var(--card);color:#314d56;font-size:12px}.rate-table{display:grid;grid-template-columns:1.1fr 1fr 1fr 1fr;gap:10px;align-items:center;margin:22px 0}.rate-table strong{font-size:11px;font-weight:500;color:#7a8e97}.rate-table small{font-size:10px;color:#a0acb0}.checkbox{display:flex;align-items:center;gap:9px;font-size:12px;color:#58726d;margin:20px 0}.checkbox input{accent-color:var(--teal)}.dialog-actions{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);padding-top:20px}.dialog-actions a{font-size:11px;text-decoration:none}#tooltip{display:none;position:fixed;pointer-events:none;background:#263c43;color:white;padding:11px 14px;border-radius:7px;z-index:10;font-size:11px;line-height:1.9;box-shadow:0 4px 18px #182c3920}.cover-note{color:#b18b54}.section-gap{margin-top:22px}.mobile-only{display:none}@media(min-width:1450px){main{padding-left:55px;padding-right:55px}.chart{min-height:300px}.panel-grid{grid-template-columns:repeat(5,1fr)}}@media(max-width:1100px){.sidebar{width:195px;padding-left:17px;padding-right:17px}main{margin-left:195px;padding:30px 25px}.stats{gap:10px}.stat{padding:17px}.stat-value{font-size:26px}.panel-grid{grid-template-columns:repeat(3,1fr)}.legend{gap:10px}.bottom-grid{gap:15px}.flow-card,.forecast-teaser{padding:20px}}@media(max-width:800px){.sidebar{position:static;width:100%;height:auto;padding:15px 20px;flex-direction:row;align-items:center;justify-content:space-between;border-right:0;border-bottom:1px solid var(--line)}.brand{font-size:23px}.brand-mark{font-size:29px}.workspace-label,.sidebar-bottom{display:none}.sidebar nav{display:flex;gap:3px}.nav-item{font-size:0;width:40px;height:40px;padding:8px;gap:0}.nav-item>span{font-size:23px}main{margin-left:0;padding:25px 20px}.header-actions{gap:8px}h1{font-size:25px}header{margin-bottom:25px}.eyebrow{font-size:9px}.stats{grid-template-columns:repeat(2,1fr);gap:12px}.bottom-grid,.projection-hero{grid-template-columns:1fr}.toolbar{flex-wrap:wrap;gap:16px}.segmented button{padding:8px 16px}.date-controls{margin-left:auto}.chart-card{padding:20px 16px}.chart{min-height:0}.card-header{flex-wrap:wrap}.legend{font-size:9px}.panel-grid{grid-template-columns:repeat(3,1fr)}footer{gap:15px;line-height:1.7}.assumptions{grid-template-columns:1fr 1fr}.form-grid{gap:12px}}@media(max-width:480px){main{padding:22px 15px}header{align-items:flex-start}h1{font-size:22px;max-width:240px}header p{font-size:11px;max-width:230px}.live-pill{font-size:9px;padding:7px 8px}.header-actions .icon-button{display:none}.stats{gap:10px}.stat-value{font-size:26px}.stat{padding:17px}.panel-grid{grid-template-columns:repeat(2,1fr)}.date-controls{margin-left:0}.toolbar{gap:12px}.form-grid{grid-template-columns:1fr}.rate-table{gap:6px}.rate-table input{padding:7px}.projection-main .large{font-size:37px}dialog{padding:22px}.dialog-actions{gap:15px}.chart-footer{flex-wrap:wrap}.assumptions{grid-template-columns:1fr}.sidebar{padding:12px 15px}.sidebar nav{gap:0}.nav-item{width:36px}.projection-side .large{font-size:30px}}

.panel-spark{height:84px;margin:10px -2px 0}.panel-spark svg{display:block;width:100%;height:100%;overflow:visible}.spark-label{font-size:8px;fill:#9ba9a5;font-family:inherit}.spark-caption{display:flex;justify-content:space-between;gap:5px;font-size:8px;color:#91a49c;margin:4px 0 13px}.empty-spark{display:grid;place-items:center;background:#f7faf8;border-radius:5px;color:#9aa8a2;font-size:10px;margin-bottom:16px}

.live-banner{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:24px 26px;margin-bottom:22px;background:linear-gradient(120deg,#eaf5ed,#fff)}.live-banner h2{font-size:21px;margin-top:10px;letter-spacing:-.6px}.live-banner p{font-size:11px;color:#72897f;margin:10px 0 0;line-height:1.6}.live-cadence{display:flex;align-items:center;gap:8px;color:#397e61;background:#fff9;border:1px solid #dbeadf;border-radius:30px;font-size:11px;padding:10px 14px;white-space:nowrap}.live-cadence i{width:7px;height:7px;background:#168e77;border-radius:50%}.live-chart-note{font-size:11px;color:#81968d;line-height:1.7;margin:0 0 24px}.live-panel strong{font-variant-numeric:tabular-nums}.live-panel .panel-top>span:last-child{text-transform:capitalize}@media(max-width:600px){.live-banner{align-items:flex-start;flex-direction:column;padding:20px}.live-banner h2{font-size:19px}.roof-title{gap:10px}.sidebar .brand{font-size:20px}.sidebar nav .nav-item{width:32px}}
.array-view main{max-width:none;padding:12px 12px 8px}
.array-view main>header{margin-bottom:8px;min-height:28px;align-items:center}
.array-view main>header .eyebrow,.array-view #page-description{display:none}
.array-view h1{font-size:21px;line-height:28px;letter-spacing:-.6px;margin:0;max-width:none}
.array-view .header-actions{gap:6px}
.array-view .live-pill{padding:6px 9px;font-size:10px}
.array-view .icon-button{width:28px;height:28px;font-size:19px}
.array-view .toolbar{gap:6px;margin-bottom:7px;flex-wrap:nowrap}
.array-view .segmented{padding:3px;gap:2px}
.array-view .segmented button{padding:5px 9px;font-size:11px}
.array-view .date-controls{gap:4px;margin-left:auto}
.array-view .date-controls input{width:121px;font-size:11px;padding:3px}
.array-view .text-button{padding:5px;font-size:11px}
.array-view .panel-toolbar{gap:6px;margin-bottom:5px;flex-wrap:nowrap}
.array-view .panel-toolbar input,.array-view .panel-toolbar select{padding:5px 7px;font-size:11px;border-radius:5px;height:28px;min-width:0}
.array-view .panel-toolbar input{min-width:85px}
.array-view .panel-toolbar select{max-width:180px}
.array-key{color:#74847e;font-size:10px;line-height:15px;margin:0 0 7px}
.array-view .roof-section{display:grid;grid-template-columns:94px minmax(0,1fr);gap:8px;margin:0 0 10px;align-items:start}
.array-view .roof-title{display:block;margin:0;padding-top:5px}
.array-view .roof-title h2{font-size:11px;line-height:14px;margin:0 0 3px;letter-spacing:0}
.array-view .roof-title>span{display:block;font-size:9px;line-height:13px;color:#74847e}
.array-view .panel-grid{grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:7px}
.array-view .panel-tile{position:relative;min-width:0;height:98px;padding:8px;border-radius:7px;display:flex;flex-direction:column;overflow:hidden}
.array-view .panel-tile:hover{transform:none}
.array-view .panel-tile:focus-visible{outline:2px solid var(--teal);outline-offset:1px}
.array-view .panel-top{position:absolute;top:11px;right:8px;width:6px;height:6px}
.array-view .panel-top>span{display:none}
.array-view .panel-top:after{content:'';display:block;width:6px;height:6px;border-radius:50%;background:#c59347}
.array-view [data-state=working] .panel-top:after{background:#30977e}
.array-view .panel-tile strong{font-size:21px;line-height:24px;font-variant-numeric:tabular-nums;letter-spacing:-.4px;padding-right:6px;white-space:nowrap}
.array-view .panel-tile strong small{font-size:10px;letter-spacing:0}
.array-view .panel-tile .serial{font-size:9.5px;line-height:13px;margin:2px 0 0;color:#758681;white-space:nowrap}
.array-view .panel-spark{height:40px;flex:1;min-height:0;margin:4px 0 0}
.array-view .panel-spark svg{height:100%;width:100%;overflow:hidden}
.array-view .panel-spark .spark-label{display:none}
.array-view .panel-spark path[stroke]{vector-effect:non-scaling-stroke;stroke-width:1.2px}
.array-view .spark-caption,.array-view .panel-bottom{display:none}
.array-view .empty-spark{font-size:9px;line-height:11px;padding:0 2px;background:transparent}
.array-view #live-stats{margin-bottom:3px;min-height:105px}
.live-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}
.live-metric{--metric-color:#138d79;background:#f0f8f4;border:1px solid #dcebe3;border-radius:8px;padding:9px 10px;min-width:0}
.live-metric-label{display:flex;align-items:center;justify-content:space-between;gap:4px;font-size:10px;line-height:14px;color:#536c60;white-space:nowrap}
.live-metric-label>span:last-child{font-size:16px;color:var(--metric-color);line-height:14px}
.live-metric-value{font-size:26px;line-height:30px;font-weight:650;letter-spacing:-.6px;font-variant-numeric:tabular-nums;margin-top:3px;white-space:nowrap}
.live-metric-value small{font-size:11px;font-weight:450;letter-spacing:0;color:#7b898d;margin-left:4px}
.live-power-track{height:12px;margin-top:8px;background:#d9e8df;border-radius:3px;overflow:hidden}
.live-power-track>span{display:block;height:100%;background:var(--metric-color);border-radius:3px}
.live-home{--metric-color:#8b72c5;background:#f5f2fb;border-color:#e7e0f3}
.live-home .live-metric-label{color:#736486}.live-home .live-power-track{background:#e5dff0}
.live-grid{--metric-color:#4d8ebc;background:#f0f6fb;border-color:#dce7f0}
.live-grid .live-metric-label{color:#60758a}.live-grid .live-power-track{background:#dce7f0}
.live-grid.import{--metric-color:#bc8437;background:#fcf6eb;border-color:#f0e4ce}
.live-grid.import .live-metric-label{color:#927445}.live-grid.import .live-power-track{background:#eee2cc}
.live-producing{background:var(--card);border-color:var(--line)}
.live-panel-meter{display:grid;grid-template-columns:repeat(25,minmax(0,1fr));grid-auto-rows:5px;gap:2px;margin-top:8px;min-height:12px}
.live-panel-meter>span{background:#dfe5e3;border-radius:1px}.live-panel-meter .producing{background:#38967d}.live-panel-meter .unknown{background:#c59347}
.live-comparison-key{display:flex;align-items:baseline;justify-content:space-between;gap:4px 12px;flex-wrap:wrap;font-size:10px;line-height:16px;padding:4px 1px;color:#7b898d}
.live-balance{font-weight:550;color:#617778}.live-balance.export{color:#347d67}.live-balance.import{color:#9a702f}
@media(max-width:480px){.live-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.live-metric{padding:8px 10px}.live-metric-value{font-size:24px;line-height:28px}.live-comparison-key{gap:0}.live-comparison-key>span:last-child{margin-left:auto}}
.live-meta{display:flex;justify-content:space-between;gap:8px;font-size:10px;line-height:15px;color:#74847e;margin-bottom:6px}
.array-view #live-warning .callout,.array-view #global-message .callout{padding:7px 9px;margin-bottom:7px;font-size:11px}
.array-view footer{margin-top:7px;padding:3px 0;font-size:9px;line-height:13px;gap:12px}
@media(min-width:801px){
 .array-view .sidebar{width:180px;padding:24px 14px}
 .array-view main{margin-left:180px}
 .array-view .brand{font-size:24px;gap:7px}
 .array-view .brand-mark{font-size:29px}
 .array-view .nav-item{padding:10px 8px;gap:7px;font-size:12px}
 .array-view .workspace-label{font-size:8px;letter-spacing:1px;margin:28px 0 13px 8px}
}
@media(max-width:800px){.array-view .sidebar{padding:7px 12px}.array-view .sidebar .nav-item{height:34px}.array-view main{margin-left:0}}
@media(min-width:801px) and (max-height:850px){.array-view .panel-tile{height:94px;padding:7px}.array-view .panel-tile strong{font-size:20px;line-height:23px}}
@media(max-width:599px){
 .array-view .roof-section{display:block;margin-bottom:8px}
 .array-view .roof-title{display:flex;align-items:baseline;gap:8px;padding:0;margin-bottom:4px}
 .array-view .roof-title h2{margin:0}
 .array-view .panel-grid{grid-template-columns:repeat(auto-fill,minmax(120px,1fr))}
 .array-view .toolbar{flex-wrap:wrap}
 .array-view .date-controls{margin-left:0}
 .array-view .panel-toolbar{flex-wrap:wrap}
 .array-view .panel-toolbar input{flex-basis:100px}
 .array-view .panel-toolbar select{flex:1;max-width:none}
 .array-view .live-meta{flex-wrap:wrap;gap:0 8px}
 .array-view .live-meta>span:last-child{margin-left:auto}
 .array-view h1{font-size:19px}
 .array-view footer>span:first-child{display:none}
}

/* Appearance tokens also color SVG charts, so switching themes needs no data reload. */
:root{color-scheme:light;--chart-solar:#168e77;--chart-home:#9281cc;--chart-solar-soft:#a1cbbb;--chart-home-soft:#d3c9e9;--chart-grid:#edf0f2;--chart-baseline:#e2ede8;--chart-bar:#65a995}
:root[data-theme=dark]{color-scheme:dark;--bg:#10171f;--card:#19232e;--ink:#e5edf4;--muted:#a3b2bf;--line:#2e3c49;--teal:#68d5b6;--teal-light:#203b35;--purple:#baacf0;--blue:#91bce2;--gold:#e1b773;--nav:#e3edf0;--chart-solar:#68d5b6;--chart-home:#baacf0;--chart-solar-soft:#426c60;--chart-home-soft:#625a7a;--chart-grid:#2c3b48;--chart-baseline:#334a48;--chart-bar:#68bca3}
.header-actions #theme-toggle{display:inline-flex;flex-shrink:0}
.theme-toggle svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.theme-toggle .theme-sun{display:none}
:root[data-theme=dark] .theme-toggle .theme-moon{display:none}
:root[data-theme=dark] .theme-toggle .theme-sun{display:block}
.theme-toggle:hover{background:var(--teal-light);color:var(--teal);border-color:var(--teal)}
dialog{background:var(--card)}
:root[data-theme=dark] :is(.brand,.system-card strong,.eyebrow span,.segmented .selected,.flow-summary b,.assumptions strong,.dialog-heading h2){color:var(--ink)}
:root[data-theme=dark] :is(.nav-item,.workspace-label,.system-card,.stat-title,.stat-note,.stat-value small,.card-header p,.legend,.chart-footer,.flow-node small,.flow-summary,.forecast-teaser p,.fine,footer,.roof-title>span,.panel-tile .serial,.panel-tile strong small,.panel-tile .panel-top,.panel-bottom,.projection-main p,.assumptions h3,.assumptions p,.details-block p,.details-block li,.form-grid label,.rate-table strong,.rate-table small,.checkbox,.array-key,.live-meta,.live-comparison-key,.live-metric-value small,.empty,.loading){color:var(--muted)}
:root[data-theme=dark] .nav-item.active{background:var(--teal-light);color:var(--teal)}
:root[data-theme=dark] .nav-item:hover{background:#253540}
:root[data-theme=dark] .live-pill{background:#213d32;color:#99d8b8}
:root[data-theme=dark] .live-pill.stale{background:#443621;color:#e3bf85}
:root[data-theme=dark] .icon-button{color:#c0cdd6}
:root[data-theme=dark] .segmented{background:#0c131b}
:root[data-theme=dark] .segmented button{color:var(--muted)}
:root[data-theme=dark] .segmented .selected{background:#2d3b49;color:var(--ink);box-shadow:0 1px 3px #0003}
:root[data-theme=dark] .date-controls input{color:var(--ink)}
:root[data-theme=dark] :is(.panel-toolbar input,.panel-toolbar select,.form-grid input,.form-grid select,.rate-table input,.download){background:var(--card);border-color:var(--line);color:var(--ink)}
:root[data-theme=dark] input::placeholder{color:#91a2b0;opacity:1}
:root[data-theme=dark] .stat-icon{background:#213f35;color:var(--teal)}
:root[data-theme=dark] .stat-icon.purple{background:#37304b;color:var(--purple)}
:root[data-theme=dark] .stat-icon.blue{background:#243c4d;color:var(--blue)}
:root[data-theme=dark] .stat-icon.gold{background:#423a2a;color:var(--gold)}
:root[data-theme=dark] .chart-label{fill:var(--muted)}
:root[data-theme=dark] .spark-label{fill:var(--muted)}
:root[data-theme=dark] :is(.chart-footer,.panel-bottom,.dialog-actions,th,td){border-color:var(--line)}
:root[data-theme=dark] th{color:var(--muted)}
:root[data-theme=dark] td{color:#c1cfda}
:root[data-theme=dark] :is(.positive,td.positive){color:var(--teal)}
:root[data-theme=dark] :is(.negative,td.negative,.cover-note){color:var(--gold)}
:root[data-theme=dark] .badge{background:#244136;color:#a2d9ba}
:root[data-theme=dark] .flow-node .circle{background:#213d34;border-color:#355448;color:var(--teal)}
:root[data-theme=dark] .flow-node.home .circle{background:#342f45;border-color:#504561;color:var(--purple)}
:root[data-theme=dark] .flow-node.grid .circle{background:#233949;border-color:#375168;color:var(--blue)}
:root[data-theme=dark] .flow-line{border-color:#4b645e}
:root[data-theme=dark] .flow-line:after{color:#8aafa2}
:root[data-theme=dark] .forecast-teaser{background:linear-gradient(130deg,#20362e,var(--card))}
:root[data-theme=dark] .forecast-teaser:after{color:#2c4a3e}
:root[data-theme=dark] .forecast-teaser .big-number{color:var(--teal)}
:root[data-theme=dark] .forecast-teaser button{background:#233c32;border-color:#42604f;color:#b7e7ce}
:root[data-theme=dark] .callout{background:#352d21;border-color:#55452c;color:#e4c590}
:root[data-theme=dark] .callout.subtle{background:#1e3038;border-color:#344b54;color:#b3cbd3}
:root[data-theme=dark] .loading h2{color:#b6d5d5}
:root[data-theme=dark] .spinner{border-color:#335447;border-top-color:var(--teal)}
:root[data-theme=dark] .panel-tile:hover{border-color:#68ac98;box-shadow:0 3px 10px #0003}
:root[data-theme=dark] .array-view .panel-top:after{background:var(--gold)}
:root[data-theme=dark] .array-view [data-state=working] .panel-top:after{background:var(--teal)}
:root[data-theme=dark] .empty-spark{background:#14221d;color:var(--muted)}
:root[data-theme=dark] .projection-main{background:#21392f;border-color:#355443}
:root[data-theme=dark] .projection-main h2{color:#a0cbb1}
:root[data-theme=dark] .projection-main .large{color:var(--teal)}
:root[data-theme=dark] .primary-button{color:#10251d}
:root[data-theme=dark] .error{color:#f0a78f}
:root[data-theme=dark] dialog{box-shadow:0 25px 90px #0007}
:root[data-theme=dark] dialog::backdrop{background:#050b12aa}
:root[data-theme=dark] #tooltip{background:#31424e;color:#eff6f8;border:1px solid #536571;box-shadow:0 4px 18px #0005}
:root[data-theme=dark] .live-metric{--metric-color:#68d5b6;background:#1d352e;border-color:#304d42}
:root[data-theme=dark] .live-metric-label{color:#b7d8c9}
:root[data-theme=dark] .live-power-track{background:#324d42}
:root[data-theme=dark] .live-home{--metric-color:#baacf0;background:#2d293f;border-color:#443d5a}
:root[data-theme=dark] .live-home .live-metric-label{color:#d0c5e4}
:root[data-theme=dark] .live-home .live-power-track{background:#49405d}
:root[data-theme=dark] .live-grid{--metric-color:#91bce2;background:#223443;border-color:#354c60}
:root[data-theme=dark] .live-grid .live-metric-label{color:#bed4e5}
:root[data-theme=dark] .live-grid .live-power-track{background:#384f62}
:root[data-theme=dark] .live-grid.import{--metric-color:#e1b773;background:#3b3021;border-color:#564730}
:root[data-theme=dark] .live-grid.import .live-metric-label{color:#e5cfac}
:root[data-theme=dark] .live-grid.import .live-power-track{background:#57482f}
:root[data-theme=dark] .live-producing{background:var(--card);border-color:var(--line)}
:root[data-theme=dark] .live-producing .live-metric-label{color:var(--muted)}
:root[data-theme=dark] .live-panel-meter>span{background:#3c4b53}
:root[data-theme=dark] .live-panel-meter .producing{background:#68c7ac}
:root[data-theme=dark] .live-panel-meter .unknown{background:var(--gold)}
:root[data-theme=dark] .live-balance{color:var(--muted)}
:root[data-theme=dark] .live-balance.export{color:#96d5bb}
:root[data-theme=dark] .live-balance.import{color:#e1bd83}

/* Short panel codes remain readable without increasing card height. */
.array-view .panel-tile .panel-code{font-size:11px;font-weight:650;letter-spacing:.6px;color:var(--muted)}

/* Phones put navigation below the content and keep date controls in one row. */
#mobile-range{display:none}
@media(max-width:600px){
 body{padding-bottom:calc(64px + env(safe-area-inset-bottom,0px))}
 .sidebar,.array-view .sidebar{position:fixed;inset:auto 0 0;z-index:5;width:100%;height:auto;padding:4px max(8px,env(safe-area-inset-right,0px)) calc(4px + env(safe-area-inset-bottom,0px)) max(8px,env(safe-area-inset-left,0px));border:0;border-top:1px solid var(--line);background:var(--card)}
 .sidebar .brand,.sidebar .workspace-label,.sidebar .sidebar-bottom{display:none}
 .sidebar nav{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));width:100%;gap:3px}
 .sidebar nav .nav-item,.array-view .sidebar .nav-item{display:flex;flex-direction:column;justify-content:center;gap:3px;width:100%;height:48px;min-width:0;padding:4px 0;font-size:0;border-radius:7px}
 .sidebar nav .nav-item>span{width:auto;font-size:21px;line-height:23px}
 .sidebar nav .nav-item:after{content:attr(data-mobile-label);font-size:10px;line-height:12px;font-weight:550}
 main,.array-view main{margin-left:0;padding:10px 10px 8px}
 main>header,.array-view main>header{min-height:32px;align-items:center;gap:8px;margin:0 0 7px}
 main>header>div:first-child{min-width:0;flex:1}
 main>header .eyebrow,main>header #page-description{display:none}
 main>header h1,.array-view main>header h1{font-size:18px;line-height:24px;margin:0;max-width:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
 .header-actions,.array-view .header-actions{flex-shrink:0;gap:5px}
 .header-actions .icon-button,.array-view .header-actions .icon-button{display:inline-flex;width:32px;height:32px}
 .live-pill,.array-view .live-pill{font-size:9px;padding:5px 7px}
 #period-toolbar,.array-view #period-toolbar{flex-wrap:nowrap;gap:6px;margin-bottom:7px;min-width:0}
 #period-toolbar>.segmented{display:none}
 #mobile-range{display:block;flex:0 0 78px;min-width:0;height:34px;border:1px solid var(--line);border-radius:6px;padding:4px;background:var(--card);color:var(--ink);font-size:14px}
 #period-toolbar .date-controls{display:grid;grid-template-columns:32px minmax(0,1fr) 32px 38px;flex:1;min-width:0;margin:0;gap:2px}
 #period-toolbar .date-controls .icon-button{width:32px;height:34px}
 #period-toolbar .date-controls input{width:100%;min-width:0;height:34px;padding:2px;font-size:13px;text-align:center}
 #period-toolbar .date-controls .text-button{height:34px;padding:0;font-size:11px}
 .array-view .panel-toolbar{display:grid;grid-template-columns:minmax(0,1.1fr) repeat(2,minmax(0,1fr));gap:5px;margin-bottom:4px}
 .array-view[data-view=live] .panel-toolbar{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr)}
 .array-view .panel-toolbar input,.array-view .panel-toolbar select{width:100%;min-width:0;max-width:none;height:32px;padding:4px 6px;font-size:12px}
 .array-key{margin-bottom:5px;line-height:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
 .array-view .roof-title{gap:6px;margin-bottom:4px}
 .array-view .roof-title h2{font-size:11px}
 #overview-coverage .callout{padding:7px 9px;margin-bottom:9px;font-size:11px}
 .stats{gap:8px;margin-bottom:12px}
 .stat{padding:12px}
 .stat-value{margin:10px 0 5px}
 .array-view #live-stats{min-height:0;margin-bottom:2px}
 .live-metrics{grid-template-columns:repeat(4,minmax(0,1fr));gap:5px}
 .live-metric{padding:6px}
 .live-metric-label{min-height:24px;line-height:12px;font-size:9px;white-space:normal}
 .live-metric-label>span:last-child{display:none}
 .live-metric-value{font-size:clamp(16px,5vw,20px);line-height:25px;letter-spacing:-.6px;margin-top:2px}
 .live-metric-value small{font-size:9px;margin-left:2px}
 .live-power-track{height:9px;margin-top:5px}
 .live-panel-meter{grid-auto-rows:4px;gap:1px;min-height:9px;margin-top:5px}
 .live-comparison-key{font-size:9px;line-height:14px;padding:3px 0;gap:0 8px}
 .live-meta{font-size:9px;line-height:13px;margin-bottom:4px}
 .live-meta>span:last-child{display:none}
}

/* Give the production comparison a shorter plot and tighter surrounding space. */
.energy-card{padding:18px 20px 12px}
.energy-card .card-header{gap:6px 12px}
.energy-card .card-header h2{margin-bottom:4px}
#energy-chart{min-height:0;margin:10px 0 0}
.energy-card .chart-footer{padding-top:9px;margin-top:0}
@media(max-width:600px){
 .energy-card{padding:13px 12px 10px}
 #energy-chart{margin-top:6px}
 .energy-card .chart-footer{gap:3px 10px;padding-top:7px;font-size:9px}
 .energy-card .chart-footer .text-button{padding:3px 0;font-size:10px}
}

/* A compact, single-line estimate links to the full true-up details. */
#forecast-teaser{align-self:start;min-width:0;padding:14px 16px}
#forecast-teaser:after{display:none}
#forecast-teaser h2{margin:0 0 7px;font-size:14px}
#forecast-teaser .forecast-link{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;margin:0;padding:0;border:0;background:transparent;box-shadow:none;text-align:left;font-size:14px;font-weight:600;color:var(--ink)}
#forecast-teaser .forecast-link>span{color:var(--muted);font-size:16px;font-weight:400}
#forecast-teaser .forecast-summary{display:flex;align-items:baseline;gap:8px;overflow-x:auto;white-space:nowrap;margin:0;font-size:12px;line-height:25px;letter-spacing:0;color:var(--ink)}
#forecast-teaser .forecast-summary b{font-size:20px;letter-spacing:-.5px;font-weight:650}
#forecast-teaser .forecast-dollars b{color:var(--teal)}
#forecast-teaser .forecast-dollars.is-charge b{color:var(--gold)}
#forecast-teaser .forecast-separator{color:var(--muted)}
@media(max-width:600px){
 #forecast-teaser{padding:12px 13px}
 #forecast-teaser .forecast-summary{gap:6px;font-size:11px}
#forecast-teaser .forecast-summary b{font-size:18px}
}

/* Home keeps every main widget visible together on a large phone. */
@media(max-width:600px){
 body[data-view=overview] main{position:relative;padding:8px 10px 6px}
 body[data-view=overview] main>footer{display:none}
 body[data-view=overview] #overview-coverage .callout{padding:4px 8px;margin-bottom:6px;font-size:11px;line-height:14px}
 body[data-view=overview] #overview-stats{grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;margin-bottom:7px}
 body[data-view=overview] .stat{min-width:0;padding:9px 7px;border-radius:8px}
 body[data-view=overview] .stat-title{min-height:26px;align-items:flex-start;font-size:11px;line-height:13px}
 body[data-view=overview] .stat-icon,body[data-view=overview] .stat-note{display:none}
 body[data-view=overview] .stat-value{margin:3px 0 0;font-size:clamp(17px,5vw,22px);line-height:25px;letter-spacing:-.7px}
 body[data-view=overview] .stat-value small{display:block;margin:0;font-size:10px;line-height:12px;letter-spacing:0}
 body[data-view=overview] .energy-card{padding:9px 10px 7px;border-radius:9px}
 body[data-view=overview] .energy-card .card-header{align-items:center;gap:4px 8px}
 body[data-view=overview] .energy-card .card-header h2{font-size:13px;line-height:17px;margin:0}
 body[data-view=overview] .energy-card .card-header p{display:none}
 body[data-view=overview] .energy-card .legend{gap:8px;font-size:9px;line-height:13px}
 body[data-view=overview] .energy-card .legend span:before{width:5px;height:5px;margin-right:4px}
 body[data-view=overview] #energy-chart{margin-top:3px}
 body[data-view=overview] .energy-card .chart-footer{padding-top:4px;gap:0 8px;font-size:9px;line-height:14px}
 body[data-view=overview] .energy-card .chart-footer .text-button{padding:2px 0;font-size:9px}
 body[data-view=overview] .bottom-grid{gap:7px;margin-top:7px}
 body[data-view=overview] .flow-card{min-width:0;padding:8px 10px;border-radius:9px}
 body[data-view=overview] .flow-card .card-header{align-items:center;gap:4px}
 body[data-view=overview] .flow-card .card-header h2{display:none}
 body[data-view=overview] .flow-card .card-header p{font-size:10px;line-height:13px}
 body[data-view=overview] .flow-card .badge{padding:3px 6px;font-size:9px;line-height:12px}
 body[data-view=overview] .flow{margin:5px 0;gap:5px}
 body[data-view=overview] .flow-node{min-width:0;flex:1}
 body[data-view=overview] .flow-node .circle{display:none}
 body[data-view=overview] .flow-node strong{font-size:18px;line-height:22px;white-space:nowrap}
 body[data-view=overview] .flow-node small{font-size:11px;line-height:13px;margin-top:1px}
 body[data-view=overview] .flow-line{flex:0 0 18px;top:-5px}
 body[data-view=overview] .flow-summary{padding-top:6px;font-size:10px;line-height:14px;gap:8px}
 body[data-view=overview] #forecast-teaser{padding:10px 10px;border-radius:9px}
 body[data-view=overview] #forecast-teaser h2{margin-bottom:3px}
 body[data-view=overview] #forecast-teaser .forecast-link{font-size:13px;line-height:17px}
 body[data-view=overview] #forecast-teaser .forecast-summary{font-size:11px;line-height:22px}
 body[data-view=overview] #forecast-teaser .forecast-summary b{font-size:18px}
}
@media(min-width:390px) and (max-width:600px){
 body[data-view=overview] main>header,body[data-view=overview] .header-actions{display:contents}
 body[data-view=overview] main>header>div:first-child,body[data-view=overview] .header-actions .live-pill{display:none}
 body[data-view=overview] .header-actions .icon-button{position:absolute;top:8px;width:32px;height:34px}
 body[data-view=overview] #theme-toggle{right:47px}
 body[data-view=overview] #refresh{right:10px}
 body[data-view=overview] #period-toolbar{padding-right:74px;margin-bottom:6px}
 body[data-view=overview] #mobile-range{flex-basis:68px}
}
