/* Flow arrows remain visible without animation, including reduced motion. */
.energy-flow{height:449px;--flow-pv:#bd8617;--flow-grid:#8c68c6;--flow-home:#347ada;--flow-battery:#299976;--flow-idle:#d9e2ed;--flow-badge:#fbfdff}
.pv-node{top:16%}.battery-node{top:85%}
.wire-base{stroke-width:4}
.wire-active{stroke-width:3;stroke-dasharray:8 9;animation:current 1.2s linear infinite}
.pv-wire{stroke:var(--flow-pv)}.grid-wire{stroke:var(--flow-grid)}.home-wire{stroke:var(--flow-home)}.battery-wire{stroke:var(--flow-battery)}
.flow-direction{position:absolute;display:grid;place-items:center;width:28px;height:28px;transform:translate(-50%,-50%);border-radius:7px;background:var(--flow-badge);pointer-events:none}
.flow-direction svg{width:23px;height:23px;stroke-width:3}
.pv-direction{left:50%;top:33.5%;color:var(--flow-pv)}.pv-direction svg{transform:rotate(90deg)}
.grid-direction{left:34%;top:51.06%;color:var(--flow-grid)}
.home-direction{left:66%;top:51.06%;color:var(--flow-home)}
.battery-direction{left:50%;top:67.3%;color:var(--flow-battery)}.battery-direction svg{transform:rotate(90deg)}
.energy-flow.exporting .grid-direction svg,.energy-flow.home-reversed .home-direction svg{transform:rotate(180deg)}
.energy-flow.discharging .battery-direction svg,.energy-flow.pv-reversed .pv-direction svg{transform:rotate(-90deg)}
.energy-flow.pv-reversed .pv-wire,.energy-flow.home-reversed .home-wire{animation-direction:reverse}
.energy-flow.no-data .flow-direction,.energy-flow.no-pv .pv-direction,.energy-flow.no-home .home-direction,.energy-flow.no-grid .grid-direction,.energy-flow.no-battery .battery-direction{display:none}
.energy-flow.no-data .wire-active,.energy-flow.no-pv .pv-wire,.energy-flow.no-home .home-wire,.energy-flow.no-grid .grid-wire,.energy-flow.no-battery .battery-wire{animation:none;stroke:var(--flow-idle);stroke-dasharray:none}
@keyframes current{to{stroke-dashoffset:-34}}
@media(min-width:1400px){.energy-flow{height:475px}}
@media(max-width:1150px){.energy-flow{height:450px}}
@media(max-width:860px){.energy-flow{height:420px}}
@media(max-width:600px){.energy-flow{height:385px}.flow-direction{width:24px;height:24px}.flow-direction svg{width:20px;height:20px}}
@media(max-width:355px){.energy-flow{height:355px}.flow-direction{width:21px;height:21px}.flow-direction svg{width:18px;height:18px}}
html[data-theme=dark] .energy-flow{--flow-pv:#ecc165;--flow-grid:#b69be9;--flow-home:#6ca6ff;--flow-battery:#65d5af;--flow-idle:#2c405b;--flow-badge:#152133}

/* Theme preference is applied before the first paint. */
:root{--surface:#fff;--surface-soft:#f5f8fd;--text-soft:#8795a9;--chart-grid:#edf0f5;--chart-text:#98a6bb;--tile-rgb:47,116,228;--tile-text:#2a4a72}
.theme-toggle{flex-shrink:0;width:35px;height:35px;border:1px solid var(--line);border-radius:50%;background:var(--surface);color:var(--blue);font-size:20px;display:grid;place-items:center}
html[data-theme=dark]{color-scheme:dark;--bg:#0d1420;--ink:#e3eaf5;--muted:#97a7bc;--line:#253246;--blue:#6ca6ff;--solar:#ecc165;--home:#6ca6ff;--grid:#b69be9;--battery:#65d5af;--surface:#151f2e;--surface-soft:#1a293e;--text-soft:#9baec6;--chart-grid:#253246;--chart-text:#8fa3be;--tile-rgb:71,146,247;--tile-text:#e4efff}
html[data-theme=dark] body{background:var(--bg);color:var(--ink)}
html[data-theme=dark] .app-header{background:#101a28;border-color:var(--line)}
html[data-theme=dark] .brand{color:#e6eefb}html[data-theme=dark] .brand>span:last-child{color:#7caeff}
html[data-theme=dark] .nav,html[data-theme=dark] .local-badge{color:#8d9eb5}html[data-theme=dark] .nav.active{color:var(--blue)}
html[data-theme=dark] .panel{background:var(--surface);border-color:var(--line);box-shadow:none}
html[data-theme=dark] .flow-panel{background:linear-gradient(180deg,#162234,#132031 72%,#151f2e)}
html[data-theme=dark] .eyebrow,html[data-theme=dark] .page-heading p:not(.eyebrow),html[data-theme=dark] .panel-heading p,html[data-theme=dark] .card-subtitle,html[data-theme=dark] .coverage{color:#98a9be}
html[data-theme=dark] .separator{color:#53667f}html[data-theme=dark] .plant-caret{color:#91a5bf}
html[data-theme=dark] .pv-node{--node-bg:#302b21}html[data-theme=dark] .grid-node{--node-bg:#28233c}html[data-theme=dark] .house-node{--node-bg:#1b2c45}html[data-theme=dark] .battery-node{--node-bg:#18352f}
html[data-theme=dark] .node-circle{box-shadow:0 0 0 6px #152133}html[data-theme=dark] .node-circle>span{color:#ecf2fc}
html[data-theme=dark] .flow-node>strong,html[data-theme=dark] .flow-telemetry strong{color:#c3d1e5}html[data-theme=dark] .flow-telemetry span,html[data-theme=dark] .flow-foot{color:#8fa5c1}
html[data-theme=dark] .flow-telemetry{border-color:var(--line)}html[data-theme=dark] .wire-base{stroke:#2c405b}
html[data-theme=dark] .energy-flow.no-data .wire-active,html[data-theme=dark] .energy-flow.no-pv .pv-wire,html[data-theme=dark] .energy-flow.no-home .home-wire,html[data-theme=dark] .energy-flow.no-battery .battery-wire,html[data-theme=dark] .energy-flow.no-grid .grid-wire{stroke:#2c405b}
html[data-theme=dark] .inverter-node{background:#152133}html[data-theme=dark] .inverter-art{background:linear-gradient(120deg,#32435b,#1b293c);border-color:#435777;box-shadow:none}html[data-theme=dark] .inverter-art svg{color:#a9bcd8}html[data-theme=dark] .inverter-art span,html[data-theme=dark] .inverter-node>small{color:#9bb0cc}
html[data-theme=dark] .status-pill,html[data-theme=dark] .device-status{background:#19392f;color:#75d7b4}html[data-theme=dark] .status-pill.warn,html[data-theme=dark] .device-status.offline{background:#3b3021;color:#e7bf7c}
html[data-theme=dark] .day-main strong{color:#edc575}html[data-theme=dark] .day-stat strong,html[data-theme=dark] .metric-value{color:#dce7f6}html[data-theme=dark] .day-main span,html[data-theme=dark] .day-stat,html[data-theme=dark] .metric-label,html[data-theme=dark] .metric-value small,html[data-theme=dark] .metric-note{color:#98abc5}
html[data-theme=dark] .meter-track{background:#3d3425}html[data-theme=dark] .mini-tag,html[data-theme=dark] .periods{background:#1e2d42;color:#9db3d0}
html[data-theme=dark] .periods button{color:#9aaecb}html[data-theme=dark] .periods .selected{background:#2b4365;color:#a5cbff;box-shadow:none}html[data-theme=dark] .legend,html[data-theme=dark] .chart-footer{color:#9db0ca}
html[data-theme=dark] .chart-footer a{color:#88b7ff}html[data-theme=dark] .device-symbol{background:#20334e;color:#91b8f0}html[data-theme=dark] .device h3{color:#cedcf0}html[data-theme=dark] .device p,html[data-theme=dark] .device-address,html[data-theme=dark] footer{color:#8fa5c1}
html[data-theme=dark] .banner{background:#30291f;border-color:#5e4d31;color:#e3c18b}html[data-theme=dark] .settings-panel p,html[data-theme=dark] .proxy-panel p{color:#a6b6cb}
html[data-theme=dark] label{color:#9fb3ce}html[data-theme=dark] input,html[data-theme=dark] select{background:#111d2e;border-color:#334763;color:#d3e3fa}
html[data-theme=dark] .primary-button{background:#347bea;color:#fff}html[data-theme=dark] .proxy-address,html[data-theme=dark] .history-totals>div{background:#1c304e;color:#a4b8d5}html[data-theme=dark] .proxy-address strong,html[data-theme=dark] .history-totals strong{color:#92bfff}
html[data-theme=dark] .proxy-stats span{color:#92a9c8}html[data-theme=dark] .proxy-stats strong{color:#c3d9f7}html[data-theme=dark] th{background:#1c2b40;color:#b0c3dd}html[data-theme=dark] td{color:#b8cae2}html[data-theme=dark] .chart-empty{color:#a4bada}html[data-theme=dark] .chart-empty small{color:#879dbb}
.optimizer-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.optimizer-summary .panel{padding:19px 22px}.optimizer-summary span{display:block;font-size:10px;color:var(--text-soft);margin-bottom:12px}.optimizer-summary strong{font-size:25px;letter-spacing:-.7px;font-weight:550;color:var(--ink)}.optimizer-summary strong small{font-size:10px;letter-spacing:0;font-weight:400;color:var(--text-soft)}#optimizer-time{font-size:19px;letter-spacing:-.3px}
.optimizer-workspace{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:20px;align-items:start}.optimizer-controls{display:flex;align-items:center;gap:12px}.optimizer-controls select{font-size:10px;width:170px;margin:0;padding:9px}.string-legend{display:flex;flex-wrap:wrap;gap:20px;margin:23px 0 22px;color:var(--text-soft);font-size:10px}.string-legend>span:before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:7px}.string-one:before{background:#ed7f81}.string-two:before{background:#67bddb}
.optimizer-board{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));grid-template-rows:repeat(6,minmax(75px,1fr));gap:9px;padding:14px 4px 19px;min-height:600px;background-image:radial-gradient(var(--line) .8px,transparent .8px);background-size:17px 17px}.optimizer-tile{min-width:0;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;border:1px solid var(--line);border-left:3px solid var(--string-color);border-radius:7px;padding:8px 3px;background:linear-gradient(150deg,rgba(var(--tile-rgb),var(--power-alpha,.05)),var(--surface));color:var(--tile-text);isolation:isolate;transition:transform .15s,box-shadow .15s}.string-1{--string-color:#ed7f81}.string-2{--string-color:#67bddb}.optimizer-tile:hover{transform:translateY(-2px);box-shadow:0 5px 14px #0002}.optimizer-tile.selected{outline:2px solid var(--blue);outline-offset:2px}.tile-address{font-size:9px;align-self:flex-start;color:var(--text-soft);position:relative;z-index:1}.tile-value{font-size:17px;font-weight:550;white-space:nowrap;letter-spacing:-.5px;position:relative;z-index:1}.tile-serial{font:9px Consolas,monospace;color:var(--text-soft);position:relative;z-index:1}.tile-cells{position:absolute;inset:26px 9px 24px;background:linear-gradient(90deg,transparent 31%,var(--line) 32%,transparent 33%,transparent 65%,var(--line) 66%,transparent 67%),linear-gradient(transparent 31%,var(--line) 32%,transparent 33%,transparent 65%,var(--line) 66%,transparent 67%);opacity:.55;z-index:-1}.optimizer-tile.stale{filter:saturate(.35)}.optimizer-tile.module-offline{opacity:.6}.optimizer-tile.module-fault:after{content:"!";position:absolute;top:7px;right:6px;background:#d69740;color:white;border-radius:50%;font-size:9px;width:13px;height:13px;display:grid;place-items:center}
.optimizer-note{font-size:10px;line-height:1.85;color:var(--text-soft);margin:18px 0 0}.optimizer-inspector{position:sticky;top:96px;scroll-margin-top:90px}.detail-panel-icon{width:70px;height:85px;border:1px solid var(--line);border-radius:10px;margin:28px auto 17px;background:var(--surface-soft);display:grid;place-items:center;color:var(--blue)}.detail-panel-icon svg{width:45px;height:45px;stroke-width:1.3}.optimizer-inspector h3{text-align:center;font-size:15px;font-weight:500;margin:0}.detail-serial{text-align:center;font:11px Consolas,monospace;color:var(--text-soft);margin-top:9px}.detail-main-value{text-align:center;color:var(--blue);font-size:32px;font-weight:500;letter-spacing:-1px;margin:19px 0 25px}#optimizer-detail-fields{display:grid;grid-template-columns:1fr auto;gap:14px 8px;font-size:10px;border-top:1px solid var(--line);padding-top:20px}#optimizer-detail-fields dt{color:var(--text-soft)}#optimizer-detail-fields dd{margin:0;color:var(--ink);text-align:right;overflow-wrap:anywhere}.optimizer-list{max-height:none}.module-select{border:0;border-radius:6px;background:var(--surface-soft);color:var(--blue);padding:7px 9px;cursor:pointer}
@media(max-width:1150px){.app-header{gap:15px}.app-header nav{gap:15px}.optimizer-workspace{grid-template-columns:minmax(0,1fr) 260px}.optimizer-toolbar{align-items:flex-start;flex-direction:column}.optimizer-controls{width:100%;justify-content:space-between}.tile-value{font-size:14px}.optimizer-board{gap:6px;min-height:540px}.optimizer-summary .panel{padding:18px 16px}.optimizer-summary strong{font-size:22px}#optimizer-time{font-size:16px}}
@media(max-width:860px){.app-header nav{gap:5px}.nav{font-size:11px;padding:0 5px}.local-badge{display:none}.optimizer-workspace{grid-template-columns:1fr}.optimizer-inspector{position:static}.optimizer-board{min-height:600px}.tile-value{font-size:18px}.optimizer-summary{grid-template-columns:1fr 1fr;gap:12px}.optimizer-inspector #optimizer-detail-fields{grid-template-columns:1fr 1fr;max-width:520px;margin:auto}.optimizer-inspector .optimizer-note{max-width:520px;margin:20px auto 0}}
@media(max-width:600px){html[data-theme=dark] .app-header nav{background:#101a28;border-color:var(--line)}.app-header{gap:12px}.theme-toggle{margin-left:auto;width:33px;height:33px}.app-header nav .nav{min-width:0;flex:1;padding:6px 2px;font-size:9px}.optimizer-summary{gap:10px}.optimizer-summary .panel{padding:15px}.optimizer-summary strong{font-size:21px}.optimizer-summary strong small{font-size:8px}.optimizer-summary span{font-size:9px;margin-bottom:9px}#optimizer-time{font-size:15px}.optimizer-toolbar{gap:17px}.optimizer-controls select{width:165px;font-size:10px}.optimizer-board{gap:5px;padding:8px 1px 10px;min-height:400px;grid-template-rows:repeat(6,minmax(57px,1fr))}.optimizer-tile{padding:5px 1px;gap:4px;border-left-width:2px;border-radius:5px}.tile-value{font-size:11px;letter-spacing:-.5px}.tile-address{font-size:7px}.tile-serial{font-size:7px}.tile-cells{inset:19px 3px 17px}.string-legend{font-size:9px;gap:12px;margin:19px 0}.optimizer-note{font-size:9px}.optimizer-tile.selected{outline-width:1px;outline-offset:1px}.optimizer-summary+ .banner{font-size:10px}.optimizer-inspector{scroll-margin-top:80px}.optimizer-inspector h3{font-size:16px}.optimizer-inspector #optimizer-detail-fields{font-size:11px;gap:15px}.optimizer-inspector .mini-tag{font-size:8px}.optimizer-inspector .detail-panel-icon{margin-top:23px}.optimizer-map-panel{padding:19px 13px}.optimizer-tile.module-fault:after{top:3px;right:2px;width:9px;height:9px;font-size:7px}}
@media(prefers-reduced-motion:reduce){.optimizer-tile{transition:none}}
@media(max-width:600px){#optimizers>.page-heading{flex-wrap:wrap;gap:12px}#optimizers>.page-heading>div{flex-basis:100%}.tile-value{font-size:clamp(9px,2.8vw,11px)}}
/* Combined page embedded in the Home Assistant dashboard. */
html[data-embed="home-assistant"] .app-header,
html[data-embed="home-assistant"] .devices-grid,
html[data-embed="home-assistant"] .plant-caret {display:none}
html[data-embed="home-assistant"] main {padding-bottom:24px}
html[data-embed="home-assistant"] #optimizers {margin-top:36px;border-top:1px solid var(--line)}
.embed-nav{display:none}
html[data-embed="home-assistant"] .embed-nav{display:flex;align-items:center;gap:24px;padding:0 30px;background:var(--surface);border-bottom:1px solid var(--line);height:52px}
.embed-nav>span{font-size:14px;font-weight:600;margin-right:auto}
.embed-nav .nav{height:100%;font-size:12px;padding:0;min-width:0;white-space:nowrap}
.legend .ac-dot:before{background:#98a8be}
.chart-container{position:relative}
.chart-container canvas{touch-action:pan-y}
.chart-container canvas:focus-visible{outline:2px solid var(--blue);outline-offset:3px}
.chart-tooltip{position:absolute;top:12px;right:14px;max-width:calc(100% - 28px);padding:12px 14px;background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 26px #0003;font-size:11px;pointer-events:none;z-index:2}
.chart-tooltip strong{display:block;margin-bottom:8px}
.chart-tooltip>div{display:flex;justify-content:space-between;gap:16px;margin-top:6px}
.chart-tooltip span{color:var(--text-soft)}
.chart-tooltip b{white-space:nowrap;font-weight:500}
.history-filters{display:flex;gap:10px;align-items:center}
.history-filters input{width:160px;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:var(--surface-soft);color:var(--ink);font:inherit;font-size:12px}
.history-filters input:disabled{opacity:.4}
.history-chart-container{height:390px;margin-top:22px}
.chart-help{font-size:10px;color:var(--text-soft);margin:10px 0}
.legend{flex-wrap:wrap;row-gap:10px}
@media(max-width:600px){
 html[data-embed="home-assistant"] .embed-nav{gap:18px;padding:0 16px;height:46px}
 .embed-nav>span{display:none}
 .embed-nav .nav{font-size:11px;flex:1}
 .history-panel>.panel-heading{flex-wrap:wrap;gap:18px}
 .history-filters{width:100%}
 .history-filters input{flex:1;min-width:0}
 .history-chart-container{height:300px}
 .chart-tooltip{font-size:9px;padding:10px}
 .chart-tooltip>div{gap:10px}
}

.control-link{text-decoration:none;align-items:center;display:flex;gap:6px}.control-link svg{width:20px;height:20px}
@media(max-width:600px){html[data-embed="home-assistant"] .embed-nav{gap:12px}.control-link{justify-content:center}}

/* Compact pages: keep measurements and put technical explanations on demand. */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.view>.page-heading{margin:24px 0 20px}.view>.page-heading h1{font-size:26px}
.view>.dashboard-heading{margin:16px 0;justify-content:flex-end}.dashboard-heading .header-right{margin:0;align-self:auto}
.flow-telemetry{grid-template-columns:repeat(2,minmax(0,1fr))}
.quiet-details{font-size:11px;line-height:1.7;color:var(--text-soft);margin-top:14px}.quiet-details summary{cursor:pointer;color:var(--text-soft)}.quiet-details p{margin:10px 0}.quiet-details dl{margin-top:16px}
.device-details{margin-top:20px}html[data-embed="home-assistant"] .device-details{display:none}
html[data-embed="home-assistant"] #dashboard[hidden]~#optimizers{margin-top:0;border-top:0}
.optimizer-toolbar .optimizer-controls{width:100%;justify-content:space-between}
#optimizer-technical-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px;text-align:left;font-size:11px}#optimizer-technical-fields dt{color:var(--text-soft)}#optimizer-technical-fields dd{margin:0;text-align:right;overflow-wrap:anywhere}
.chart-footer{justify-content:flex-end}
@media(max-width:600px){.view>.page-heading{margin:20px 2px 16px}.view>.page-heading h1{font-size:23px}.view>.dashboard-heading{margin:12px 0}.dashboard-heading .header-right{font-size:9px}.quiet-details{font-size:10px}}
