/* Interaction pass: keep overlays readable and every inspector control reachable. */
.pane.active{overflow-y:auto;overscroll-behavior:contain;padding-right:5px}
.aside-footer{padding-top:12px;margin-top:8px}
#wiringOverlay{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:hidden}
.scene-top{z-index:2;align-items:flex-start}
.scene-top .pill{margin-right:auto}
#wireMode[aria-pressed=true]{background:#243d4c;color:#fff;border-color:#243d4c}
#wireToolbar{position:absolute;z-index:3;left:20px;right:20px;top:86px;background:#183343ed;color:#fff;padding:12px;border-radius:12px;max-width:520px;box-shadow:0 4px 16px #14222e33}
#wireToolbar[hidden]{display:none!important}
#wireToolbar>span{display:block;font-size:12px;line-height:1.4;margin-bottom:9px;overflow-wrap:anywhere}
#wireToolbar>div{display:flex;gap:6px;flex-wrap:wrap}
#wireToolbar button{font-size:11px;padding:8px 12px}
#wireToolbar #finishWire{background:#ffb000;color:#152b38;border-color:#ffb000}
button:disabled{opacity:.45;cursor:default}
.stage:has(#wireToolbar:not([hidden])) .compass{display:none}
.wire-diagram{display:block}
.wire-branch{border-left:6px solid var(--wire);border-radius:6px;background:#253b49;color:#fff;margin:7px 0;padding:9px 10px;overflow-wrap:anywhere}
.wire-branch b{display:block;font-size:11px;color:var(--wire);margin-bottom:4px}
.wire-diagram .wire-branch span{display:block;padding:0;border:0;background:none;color:#fff;font-size:11px;line-height:1.6}
.wire-diagram>p{font-size:10px;line-height:1.5;margin:9px 0;color:#52675e}
#startWire{width:100%;background:#243d4c;color:#fff}
label output{font-variant-numeric:tabular-nums}
.scene-caption h1{font-size:30px}
.scene-caption{max-width:330px}
@media(max-width:800px){
  .scene-top{gap:5px}.scene-top .pill{display:none}.scene-top #wireMode{margin-right:auto}
  #wireToolbar{left:10px;right:10px;top:53px;padding:10px}
  #wireToolbar button{padding:7px 9px;font-size:10px}
  .scene-caption h1{font-size:25px}.scene-caption p{max-width:250px}
  .wire-diagram .wire-branch span{font-size:10px}
}

/* Screen compass follows camera azimuth; cardinal letters remain upright. */
.mode-help{padding:10px;border-left:4px solid #537c75;background:#eaf2ed;color:#284e44;font-size:11px;line-height:1.5;margin:8px 0}
.equipment-help{padding:9px;background:#f0eee5;border-radius:8px;color:#526357;font-size:10px;line-height:1.5;margin:8px 0}
#editPanel,#editController{padding:7px 10px;font-size:10px}
.scene-top{flex-wrap:wrap}.scene-top .pill{max-width:150px}
@media(max-width:1100px){.scene-top .pill{display:none}.scene-top button{font-size:10px;padding:8px}.scene-top{gap:5px}}
@media(max-width:600px){.scene-top{display:grid;grid-template-columns:1fr 1fr}.scene-top button{width:100%;margin:0!important}#placementToolbar,#wireToolbar{top:90px}.compass{top:92px}}
#placementToolbar{position:absolute;z-index:3;left:20px;right:20px;top:86px;max-width:520px;padding:12px;border-radius:12px;background:#183343f0;color:#fff;box-shadow:0 4px 16px #14222e33}
#placementToolbar[hidden]{display:none!important}
#placementToolbar strong{font-size:11px;letter-spacing:1px}
#placementStatus{display:block;font-size:12px;line-height:1.5;margin:7px 0 10px}
#placementToolbar>div{display:flex;gap:7px;flex-wrap:wrap}
#placementToolbar button{font-size:11px;padding:8px 10px}
#placementToolbar[data-valid=true]{border:2px solid #53d39b}
#placementToolbar[data-valid=false]{border:2px solid #df8b83}
#placePanelTool[aria-pressed=true]{background:#245b4b;color:#fff;border-color:#245b4b}
.stage:has(#placementToolbar:not([hidden])) .compass{display:none}
@media(max-width:800px){#placementToolbar{left:10px;right:10px;top:53px;padding:10px}#placementStatus{font-size:11px}.scene-top #placePanelTool{margin-right:auto}.scene-top #wireMode{margin-right:0}}
.draft-target{display:flex;align-items:center;gap:5px;color:#fff;margin:0;font-size:10px}
.draft-target select{width:auto;min-width:90px;margin:0;padding:7px}
#controllerResults{background:#e4efe9;padding:9px;border-radius:8px;font-weight:700;color:#285343;line-height:1.5}
#controllerStatus,#selectedStringScope{margin:7px 0;font-size:10px;line-height:1.5;color:#52665f}
#moveString,#undoSavedWiring{width:100%;font-size:10px;padding:8px;margin:4px 0}
#clearAllWiring,#clearString{border-color:#bba99e;background:#fff5ed;color:#693d2a}
.compass{width:92px;height:108px;top:100px;left:20px;background:#fffdf2e8;border:1px solid #c7d2c3;border-radius:14px;padding:5px;pointer-events:none;z-index:1;box-shadow:0 3px 12px #203b3020}
.compass svg{width:80px;height:80px;flex:none}
.compass svg text{text-anchor:middle;dominant-baseline:central;font:700 13px system-ui,sans-serif;fill:#38574a}
.compass svg text.north{fill:#a63124;font-weight:900;font-size:16px}
.compass small{font-size:8px;letter-spacing:1px;font-weight:750;line-height:14px;white-space:nowrap}
@media(max-width:800px){.compass{top:54px;left:12px;width:78px;height:92px;padding:4px}.compass svg{width:68px;height:68px}.compass small{font-size:7px;letter-spacing:.6px}}

.scene-top{flex-wrap:wrap;max-width:calc(100% - 32px);gap:6px}.scene-top button{font-size:12px;padding:8px}
#placementToolbar,#wireToolbar{top:112px}
#heatmapLegend{position:absolute;left:20px;bottom:105px;max-width:290px;padding:12px;background:#fffdf2ed;border:1px solid #a8b6aa;border-radius:10px;font-size:11px;pointer-events:none}
#heatmapLegend[hidden]{display:none}.energy-gradient{height:10px;margin:7px 0;background:linear-gradient(90deg,#d84241,#30ae41)}
#inspector{max-width:480px;width:calc(100% - 36px);max-height:85vh;overflow:auto;border:1px solid #a8b6aa;border-radius:16px;padding:24px;background:#fffdf2;color:#263a36}#inspector::backdrop{background:#14222e99}#inspector label{display:block;margin:10px 0}#inspector input,#inspector select{width:100%;padding:10px}#inspectorError{color:#a52f2f}#inspector [hidden]{display:none}#inspector button:focus-visible{outline:3px solid #226ea1;outline-offset:2px}
@media(max-width:600px){.scene-top{display:flex;left:8px;right:8px;max-width:none}.scene-top .pill{display:none}#placementToolbar,#wireToolbar{top:135px}#heatmapLegend{bottom:75px;left:8px;max-width:230px}.scene-caption{display:none}}

#compatibilityWarnings{white-space:pre-line;font-size:11px;line-height:1.5;max-height:230px;overflow:auto;border-left:3px solid #bc7e38;padding-left:9px}#compatibilityStatus{font-size:12px}#socChart,#flowChart{display:block;width:100%;height:90px;background:#f6f8ef;border-radius:6px;margin-top:6px}#batteryTotals,.flow-legend,#flowScale{font-size:11px;line-height:1.6}#editBattery{width:100%;background:#dcece3}#inspector .check input{width:auto}

/* Compass owns the left column; toolbar owns a separate horizontally scrollable row. */
.scene-top{left:126px;right:12px;top:16px;max-width:none;display:flex;flex-wrap:nowrap;overflow-x:auto;justify-content:flex-start;padding-bottom:6px;pointer-events:auto}.scene-top .pill{display:none}.scene-top button{flex:0 0 auto;white-space:nowrap}.scene-top button[hidden]{display:none!important}.compass{top:16px;left:14px}.scene-bottom{flex-wrap:wrap;gap:5px}#viewTimeStatus{flex-basis:100%;font-size:10px}#wireToolbar,#placementToolbar{top:132px}
@media(max-width:800px){.scene-top{left:88px;right:8px;top:10px;display:flex;flex-wrap:nowrap}.compass{left:8px;top:10px;width:70px;height:88px}.compass svg{width:60px;height:60px}.compass small{font-size:6px}#wireToolbar,#placementToolbar{top:108px}.scene-top #placePanelTool,.scene-top #wireMode{margin:0}.scene-top button{font-size:11px}}

.sidebar-switch{display:flex;gap:8px;flex:none;margin-bottom:8px}.sidebar-switch button{flex:1}.sidebar-switch [aria-pressed=true]{background:#285b4d;color:white}#designSidebar{display:flex;flex-direction:column;min-height:0;flex:1}#designSidebar[hidden],#resultsSidebar[hidden]{display:none!important}#resultsSidebar{overflow:auto;min-height:0;flex:1}.result-card{border:1px solid #d4dfd6;border-radius:10px;padding:10px;margin:10px 0}.result-card svg{width:100%;height:auto;display:block}.result-card button{width:100%;font-size:11px}#resultsStatus,#resultScale,#chartLegend{font-size:11px;line-height:1.5}#chartDialog{width:min(900px,92vw);max-width:900px;overflow:auto}#chartDialog svg{width:100%;height:auto}#chartDialog fieldset{display:flex;flex-wrap:wrap;gap:12px}#chartDialog fieldset label{margin:0}#chartDialog [hidden]{display:none!important}#optimizerToolbar{position:absolute;z-index:3;left:20px;top:132px;max-width:360px;padding:12px;background:#173e50f5;color:white;border-radius:10px}#optimizerToolbar[hidden]{display:none}#optimizerToolbar label{color:white}#optimizerModeStatus{font-size:12px}#optimizerTool[aria-pressed=true]{background:#176b89;color:white}.stage:has(#optimizerToolbar:not([hidden])) .compass{display:none}@media(max-width:800px){#optimizerToolbar{top:108px;left:10px;right:10px}}

/* Stable footer tracks: no live value may resize the Solar Time range. */
footer{display:grid;grid-template-columns:120px minmax(0,1fr) 125px minmax(0,1fr);gap:20px;align-items:center}footer #run{width:100%;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}footer .time{width:100%;min-width:0}footer .time input{width:100%;box-sizing:border-box}footer .time label{white-space:nowrap;overflow:hidden}footer #timeValue{display:inline-block;width:5ch;text-align:right;font-variant-numeric:tabular-nums}footer .weather{width:100%;min-width:0}footer .spark{min-width:0;overflow:hidden}footer .spark>span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media(max-width:800px){footer{grid-template-columns:90px minmax(0,1fr) 88px;gap:10px;padding:10px}footer .spark{display:none}}
@media(max-width:420px){footer{grid-template-columns:76px minmax(0,1fr) 72px;gap:8px;padding:8px}}

.scene-top .overlay-choice{flex:0 0 126px;width:126px;margin:0;padding:3px 7px;background:#fffdf2e8;border-radius:8px;font-size:9px}.scene-top .overlay-choice select{margin:2px 0 0;padding:4px;font-size:10px}#heatmapLegend{max-width:320px}

/* Overlay settings are contextual and outside the scene toolbar/compass lanes. */
#overlayControls{position:absolute;right:12px;top:65px;z-index:2;width:154px;background:#fffdf2ed;border:1px solid #b6c6b9;border-radius:10px;padding:8px}
#overlayControls[hidden],#liveMetricControl[hidden]{display:none!important}
#overlayControls label{font-size:10px;display:block;margin:0 0 6px}#overlayControls select{font-size:11px;margin:3px 0 0;padding:5px;width:100%}
.stage:has(#wireToolbar:not([hidden])) #overlayControls,.stage:has(#placementToolbar:not([hidden])) #overlayControls,.stage:has(#optimizerToolbar:not([hidden])) #overlayControls{display:none}
#optimizerToolbar{max-height:calc(100% - 170px);overflow:auto}#optimizerToolbar button{margin:4px 0;padding:7px}#applyOptimizerScope{display:block;width:100%}
/* The run/load group occupies the same fixed track regardless of text or switch state. */
footer .run-load{width:100%;min-width:0;display:grid;grid-template-rows:32px 22px 22px;overflow:hidden}
footer .run-load #run{height:32px;padding:5px}footer .load-switch{display:flex;align-items:center;gap:4px;margin:0;font-size:11px;white-space:nowrap;overflow:hidden}
footer .load-switch input{width:14px;margin:0;flex:none}footer #loadSettings{font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:2px;width:100%;min-width:0;height:22px}footer #loadWatts{font-variant-numeric:tabular-nums}
#liveLoadSummary,#loadSchedule{font-size:11px;line-height:1.5}#liveLoadSummary{padding:8px;background:#e5efe7}
@media(max-width:800px){#overlayControls{right:8px;top:60px;width:138px}footer .load-switch{font-size:9px}}

/* Fixed footer height accommodates controls without time-dependent reflow. */
body{grid-template-rows:82px minmax(0,1fr) 110px}footer{padding-top:8px;padding-bottom:8px}
@media(max-height:760px) and (min-width:801px){body{grid-template-rows:65px minmax(0,1fr) 100px}}
@media(max-width:800px){body{grid-template-rows:60px minmax(0,1fr) 100px}}

/* App 0.11: compact legend, combined results, and stable calendar footer. */
.scene-caption{display:none!important}
#heatmapLegend{bottom:70px;left:16px;width:245px;max-width:calc(100% - 32px);padding:9px 38px 9px 10px;pointer-events:auto;z-index:2;max-height:calc(100% - 190px);overflow:auto}
#heatmapTitle{font-size:9px}#heatmapScale{font-variant-numeric:tabular-nums}.energy-gradient{margin:5px 0;height:8px}
#legendInfo{position:absolute;right:6px;top:6px;padding:0;width:25px;height:25px;border-radius:50%;font-family:Georgia,serif;font-style:italic;font-size:16px}
#heatmapStatus[hidden]{display:none!important}#heatmapStatus{margin:8px -25px 0 0;line-height:1.4}
button:disabled,input:disabled,select:disabled{opacity:.45;cursor:not-allowed}
#resultsSidebar h2{font-size:19px;margin:0 0 4px}#resultsStatus,#resultScale{margin:4px 0;font-size:10px;line-height:1.3}
.result-card{margin:6px 0;padding:7px}.chart-heading{display:flex;align-items:center;justify-content:space-between;gap:6px}.chart-heading h3{font-size:12px;margin:0}.chart-heading button{width:auto;font-size:10px;padding:5px 7px}
#miniPower,#miniSOC{height:clamp(85px,16vh,130px)}#powerToggles{display:flex;flex-wrap:wrap;gap:4px 9px;margin:0;padding:4px;border:0}#powerToggles legend{font-size:9px}#powerToggles label{display:flex;gap:3px;align-items:center;font-size:9px;margin:0}#powerToggles input{margin:0}
.results-load{display:flex;align-items:center;justify-content:space-between;gap:6px;border-top:1px solid #d4dfd6;padding-top:6px}.results-load label{display:flex;gap:5px;align-items:center;margin:0;font-size:11px}.results-load button{width:auto;font-size:10px;padding:5px}.results-load #loadWatts{font-variant-numeric:tabular-nums}#resultsLoadHint{font-size:9px;line-height:1.3;margin:5px 0 0}
footer{grid-template-columns:110px minmax(150px,1fr) 110px 138px minmax(120px,1fr);gap:16px}footer .run-load{display:block}footer .run-load #run{height:42px}footer .date-control{margin:0;width:100%}footer .date-control input{margin-top:5px;padding:8px;width:100%}
@media(max-width:1000px){footer{grid-template-columns:100px minmax(120px,1fr) 95px 138px}.spark{display:none}}
@media(max-width:600px){body{grid-template-rows:60px minmax(0,1fr) 128px}footer{grid-template-columns:82px minmax(0,1fr) 130px;grid-template-rows:48px 40px;gap:4px 10px}footer .time{grid-column:2/4}footer .weather{grid-column:2;grid-row:2}footer .date-control{grid-column:3;grid-row:2}footer .date-control input,footer .weather select{padding:5px;margin:2px 0}#heatmapLegend{left:8px;bottom:75px;width:220px}#miniPower,#miniSOC{height:105px}}

#powerToggles label:has(#mini_total){border-left:3px solid #267e66;padding-left:4px}
#powerToggles label:has(#mini_mppt1in){border-left:3px solid #cd8b22;padding-left:4px}
#powerToggles label:has(#mini_mppt2in){border-left:3px solid #915eb5;padding-left:4px}
#powerToggles label:has(#mini_mppt1out){border-left:3px solid #b65e25;padding-left:4px}
#powerToggles label:has(#mini_mppt2out){border-left:3px solid #4e6fb5;padding-left:4px}
#powerToggles label:has(#mini_charge){border-left:3px solid #2196a4;padding-left:4px}
#powerToggles label:has(#mini_discharge){border-left:3px solid #c15064;padding-left:4px}

/* App 0.12: read-only chart inspection; no layout shift from hover output. */
.chart-wrap{position:relative}.chart-wrap svg{touch-action:pan-y;outline-offset:1px}.chart-readout{position:absolute;right:8px;top:8px;max-width:min(310px,92%);padding:8px 10px;background:#17382bf2;color:#fffdf4;border-radius:7px;white-space:pre-line;font:10px/1.4 ui-sans-serif,system-ui;pointer-events:none;z-index:4;box-shadow:0 2px 8px #0003}.chart-readout[hidden]{display:none!important}
#chartInteractionHelp{font-size:9px;line-height:1.3;margin:3px 0;color:#64776c}
.results-load{display:grid;grid-template-columns:1fr;gap:5px}.results-load .appliance-button{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:46px;padding:10px 13px;font-size:14px;border:2px solid transparent;border-radius:10px;color:white}.appliance-button span{font-size:11px}.appliance-button[data-on=false]{background:#247447;border-color:#1e603c}.appliance-button[data-on=true]{background:#b43e3e;border-color:#8e2929}.appliance-button:hover{filter:brightness(1.08)}.results-load #loadSettings{justify-self:end;font-size:11px;padding:5px 8px}
#resultsSidebar .aside-head{display:flex}#resultsSidebar .aside-head h2{font-size:16px;margin:0}#resultsSidebar .aside-head small,#resultsSidebar .status{display:none}#resultsSidebar .metrics{display:grid;gap:6px;margin:5px 0}#resultsSidebar .metrics>div{padding:6px 9px}#resultsSidebar .metrics strong{font-size:20px;margin:2px 0 0}#resultsSidebar .metrics span{font-size:9px}#resultsSidebar .results-title{font-size:13px;margin-top:5px}
#designSidebar nav{margin:0 0 5px}#designSidebar .pane h3{font-size:14px;margin:6px 0}#designSidebar label{margin:6px 0;font-size:10px}#designSidebar input[type=range]{margin:5px 0 2px}#designSidebar input[type=number],#designSidebar select{padding:6px;margin-top:4px}#designSidebar button{padding:7px 9px;font-size:11px}#designSidebar .pair{gap:7px}.design-help,.energy-details{font-size:10px;margin:5px 0;border:1px solid #dce4da;border-radius:7px;padding:5px 7px}.design-help summary,.energy-details summary{cursor:pointer;font-weight:650}.design-help p,.design-help .equipment-help{font-size:10px!important;margin:5px 0!important;line-height:1.4!important}.design-help .card{margin:5px 0;padding:7px}#designSidebar .mode-help{font-size:10px;line-height:1.35;padding:6px}#compatibilityWarnings{max-height:none;font-size:10px;line-height:1.35}#compatibilityStatus{font-size:11px}#resultsSidebar .energy-details svg{height:75px}

#compatibilityWarnings,#compatibilityStatus,#wiringModeHelp,#panelModeHelp,#controllerStatus,#selectedStringScope{display:block!important}
.design-help[open]>p{display:block!important}

/* App 0.13: shared responsive editor, first-run setup and playback-only switch. */
#applianceSwitch{position:absolute;right:16px;bottom:52px;z-index:5;display:grid;grid-template-columns:30px 1fr;gap:3px 10px;min-height:74px;width:235px;padding:10px;border:2px solid #9cab9d;border-radius:10px;color:white;box-shadow:0 3px 9px #0004;text-align:left}
#applianceSwitch[hidden]{display:none!important}#applianceSwitch .rocker{grid-row:1/4;width:25px;height:45px;border-radius:4px;background:linear-gradient(#f7f5ee 48%,#bbbdb4 52%);border:2px solid #e3e4da;box-shadow:inset 0 2px 5px #0005}#applianceSwitch[data-on=true] .rocker{transform:rotate(180deg)}#applianceSwitch strong{font-size:13px}#applianceSwitch small{font-size:10px}#switchContext{grid-column:2}#loadModeStatus{font-size:11px;line-height:1.4}
#inspector{width:min(920px,95vw);max-height:92vh}#inspectorForm>h2{margin:8px 0}#inspectPanelFields,#inspectControllerFields,#inspectBatteryFields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 14px;align-items:start}#inspectPanelFields[hidden],#inspectControllerFields[hidden],#inspectBatteryFields[hidden]{display:none!important}#inspectorForm label{margin:4px 0}#inspectorForm input:not([type=checkbox]),#inspectorForm select{width:100%;min-width:0}#inspectorForm p,#inspectorForm .load-program-fields{grid-column:1/-1}#inspectorForm .pair{display:contents}#inspectorForm>div.pair{display:flex;margin-top:10px}#inspectorForm .load-program-fields{margin:6px 0;padding:8px;border:1px solid #cbd6c9}#inspectorForm p{font-size:11px;line-height:1.4}textarea{width:100%;min-width:0;resize:vertical;padding:8px;border:1px solid #c6d0c2;border-radius:6px;font:12px/1.5 ui-monospace,monospace;background:#fffef8;color:#253b30}#inlineEditor{padding:8px;border:2px solid #739582;margin:8px 0;border-radius:9px}#inlineEditor[hidden]{display:none!important}#inlineEditor #inspectorForm h2{font-size:17px}#inlineEditor #inspectPanelFields,#inlineEditor #inspectControllerFields,#inlineEditor #inspectBatteryFields{grid-template-columns:1fr}#dockInspector{font-size:11px;padding:5px 8px}#sidePanel:disabled{opacity:.45}
#setupWizard{width:min(800px,95vw);max-height:92vh}#setupWizard h2{margin-top:0}#setupWizard p{font-size:12px;line-height:1.45}.setup-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.setup-grid input,.setup-grid select{width:100%}.wizard-actions{display:flex;flex-wrap:wrap;gap:7px;position:sticky;bottom:0;background:#fffdf4;padding:10px 0}.wizard-actions button{width:auto}#setupSummary{white-space:pre-wrap;font:12px/1.5 system-ui}#setupWarnings{font-size:11px;white-space:pre-line;max-height:190px;overflow:auto;border:1px solid #cba56e;padding:8px}#setupError{color:#a32929}#setupWizard [hidden]{display:none!important}
@media(max-width:600px){#inspectPanelFields,#inspectControllerFields,#inspectBatteryFields,.setup-grid{grid-template-columns:1fr}#applianceSwitch{right:8px;bottom:40px;width:205px;min-height:68px}#inspector,#setupWizard{padding:14px}}

/* App 0.13.1: header setup entry shares the Save/Open/Reset action group. */
header .actions{flex-wrap:wrap;justify-content:flex-end}header .actions button{white-space:nowrap}
@media(max-width:800px){header .brand{min-width:0;flex:0 1 42%}header .actions{flex:1 1 58%;gap:3px}header .actions button{padding:5px 6px}header .brand small{letter-spacing:.5px}}

.scene-project{display:flex;flex-wrap:wrap;align-items:center;gap:6px;max-width:520px}.scene-project label{margin:0;font-size:12px}.scene-project select{width:auto;max-width:180px;margin:0}.scene-project small{flex-basis:100%;font-size:11px;color:#65736b}.scene-project button{padding:7px 9px}#sceneDialog{max-width:760px;width:calc(100% - 32px);max-height:90vh;overflow:auto}#sceneError{color:#a32e2e}#sceneScope{font-weight:600}.scene-fields label[hidden]{display:none!important}#sceneConfirmLabel[hidden]{display:none!important}

#units{max-width:95px}#sceneUnits,#setupUnits,#inspectUnits{max-width:160px}span[id$="Unit"]{font-size:.85em;color:#5b7169}

/* 0.16: wrap controls, never the brand; dimensions units keep a stable track. */
body{grid-template-rows:auto minmax(0,1fr) 102px}
header{flex-wrap:wrap;gap:8px 12px;padding:10px 16px;min-width:0}
header .brand{flex:0 0 auto;min-width:0}header .brand b{display:block;white-space:nowrap}header .brand small{white-space:normal}
header .scene-project{display:flex;flex:1 1 330px;min-width:0;max-width:none}
header .actions{flex:0 1 auto;max-width:100%;gap:5px}
header #units{width:82px;min-width:82px;max-width:82px;flex:0 0 82px}
header #scenePicker{max-width:170px;min-width:0}header #sceneSummary{overflow-wrap:anywhere}
.bearing-help{font-size:10px;line-height:1.4;margin:5px 0}
#sceneReflowLabel[hidden],#sceneRotateLabel[hidden]{display:none!important}
#sceneError{white-space:pre-line}#programEditor{min-width:0;border:1px solid #c4d2c5;border-radius:8px;padding:10px}
.program-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.program-fields input{width:100%;min-width:0}
.program-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:6px;align-items:center;padding:5px 0;border-bottom:1px solid #d5ded5;font-size:12px}.program-row button{padding:6px 8px}
#viewerBottomTools{position:absolute;left:16px;right:16px;bottom:70px;z-index:5;display:grid;grid-template-columns:minmax(0,245px) minmax(0,235px);justify-content:space-between;align-items:end;gap:10px;pointer-events:none}
#viewerBottomTools #heatmapLegend,#viewerBottomTools #applianceSwitch{position:relative;inset:auto;width:100%;max-width:100%;min-width:0;margin:0;pointer-events:auto;box-sizing:border-box}
#viewerBottomTools #heatmapLegend{grid-column:1;grid-row:1;max-height:230px;overflow:auto}
#viewerBottomTools #applianceSwitch{grid-column:2;grid-row:1}
@media(max-width:800px){header{padding:8px 10px}header .scene-project{flex-basis:100%;order:3}header .brand{flex:0 0 auto}header .actions{flex:1 1 230px}header .brand small{font-size:9px}}
@media(max-width:600px){body{grid-template-rows:auto minmax(0,1fr) 128px}header .brand b{font-size:20px}header .actions{justify-content:flex-start}header .scene-project{gap:5px}header #sceneSummary{font-size:10px}.program-fields{gap:5px}#viewerBottomTools{left:8px;right:8px;bottom:75px;gap:8px}#viewerBottomTools #applianceSwitch{grid-template-columns:18px minmax(0,1fr);gap:3px 5px;padding:6px}#applianceSwitch .rocker{width:16px}#applianceSwitch strong{font-size:11px}#applianceSwitch small{font-size:9px}#heatmapLegend{font-size:10px;padding:7px}}

/* Short viewers reserve a compact control row above the shared lower rail. */
.stage{container-type:size}
@container (max-height:430px){#overlayControls{left:88px;right:8px;top:52px;width:auto;display:flex;gap:6px;padding:5px}#overlayControls label{flex:1;min-width:0;margin:0}#overlayControls select{font-size:10px;padding:4px}#viewerBottomTools #heatmapLegend{max-height:110px}#viewerBottomTools #applianceSwitch{min-height:0;max-height:100px;overflow:auto;padding:6px}#applianceSwitch strong{font-size:11px}#applianceSwitch small{font-size:9px}}
@media(max-height:650px) and (max-width:800px){body{overflow:auto;grid-template-rows:auto minmax(310px,1fr) 128px}main{min-height:310px}}
@media(max-height:550px) and (min-width:801px){body{overflow:auto;grid-template-rows:auto minmax(320px,1fr) 102px}}

/* 0.17: shared system editor and conditional financial dashboard. */
#systemDialog{width:min(820px,95vw);max-width:820px;max-height:92vh;overflow:auto}#systemInline{border:2px solid #75988a;border-radius:9px;padding:8px}#systemInline .setup-grid{grid-template-columns:1fr}#systemForm p,.system-help,#systemSummary,#systemFlowSummary,#liveGridFlow,#savingsSummary,#billAssumptions{font-size:11px;line-height:1.4}#systemWarning,#systemError{white-space:pre-line;color:#9c3232}#savingsDialog{width:min(900px,95vw);max-width:900px}#savingsDialog svg{width:100%;height:auto}#miniSavings{width:100%;height:115px}#systemInline[hidden],#savingsCard[hidden],#socGraph[hidden],#batteryEnergyDetails[hidden],#plotSOCLabel[hidden],#mini_chargeLabel[hidden],#mini_dischargeLabel[hidden],#plot_chargeLabel[hidden],#plot_dischargeLabel[hidden]{display:none!important}#systemEnergy p{margin:5px 0}#systemEnergy details{font-size:11px}#systemForm [hidden]{display:none!important}

#powerCard[hidden],#resultViewLabel[hidden],#setupCapacityLabel[hidden]{display:none!important}#savingsValue{font-size:13px}#savingsCard details{font-size:11px;margin-top:5px}#resultViewLabel{margin:5px 0}

.field-info{border-radius:50%;width:1.45rem;height:1.45rem;padding:0;margin:2px 4px;font-size:.8rem;vertical-align:middle}.field-hint{display:block;background:#e9f4ef;color:#203b32;padding:.65rem;border-left:3px solid #39846b;font-size:.83rem;line-height:1.4;max-width:42rem}.field-hint[hidden]{display:none}.schedule-row{display:grid;grid-template-columns:1fr 1fr 1fr auto;gap:6px;align-items:end;margin:8px 0}.schedule-row label{font-size:.75rem;min-width:0}.schedule-row input{width:100%;box-sizing:border-box;min-width:0}.schedule-row button{padding:8px}.schedule-row input:focus{outline:2px solid #267e66}@media(max-width:480px){.schedule-row{grid-template-columns:1fr 1fr}.schedule-row button{align-self:end}}

#equipmentDialog,#annualDialog{width:min(1100px,94vw);max-height:90vh;overflow:auto}#equipmentDialog pre{white-space:pre-wrap;font-size:.85rem;background:#edf4ef;padding:12px}#catalogSources a{display:block;overflow-wrap:anywhere;font-size:.8rem}.cost-row{display:grid;grid-template-columns:80px 1.5fr 1fr 1.1fr;gap:8px;align-items:end;border-bottom:1px solid #cad9d1;padding:8px 0}.cost-row label{font-size:.8rem;min-width:0}.cost-row input{width:100%;box-sizing:border-box}.annual-table{overflow:auto}.annual-table table{border-collapse:collapse;font-size:.78rem}.annual-table td,.annual-table th{padding:7px;border:1px solid #c7d7ce;text-align:right;white-space:nowrap}.annual-controls{background:#eef5ef;padding:10px;margin:10px 0}.annual-controls summary{font-weight:700;cursor:pointer}#equipmentError{color:#963b25;white-space:pre-wrap}@media(max-width:600px){.cost-row{grid-template-columns:1fr 1fr}.cost-row strong{grid-column:1/-1}}

/* 0.20: consistent title rows and top-layer help. */
.field-title{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 0 7px;min-height:24px}.field-title>span{min-width:0}.field-title .field-info{flex:0 0 24px;margin:0;width:24px;height:24px}.field-hint{position:fixed;inset:auto;margin:0;padding:12px;border:1px solid #98b3a4;border-radius:9px;box-shadow:0 5px 24px #172d3b44;background:#f6fff9;color:#193b2c;z-index:100000;max-width:calc(100vw - 24px);max-height:min(260px,60vh);overflow:auto;font:13px/1.5 system-ui;box-sizing:border-box}.field-hint[hidden]{display:none}label>input,label>select,label>textarea{margin-top:7px!important}.field-title+input,.field-title+select,.field-title+textarea{margin-top:0!important}.setup-grid,.pair,.program-fields{column-gap:16px!important;row-gap:12px}.schedule-row{column-gap:12px;row-gap:10px}.schedule-row input{height:40px;border:1px solid #aabdb1;border-radius:7px;padding:8px;font:inherit;box-sizing:border-box}.schedule-row [aria-invalid="true"]{border:2px solid #b33b31;background:#fff0ec}.schedule-invalid{border-left:3px solid #b33b31;padding-left:7px}#programCount,#loadRowsError{color:#a33127;white-space:pre-wrap}.schedule-row datalist{display:none}
#modeBadge{position:absolute;right:12px;top:62px;z-index:3;background:#183343;color:white;border-radius:6px;padding:5px 10px;font-size:12px;font-weight:700;max-width:calc(100% - 110px)}#overlayControls{top:99px}#viewerBottomTools #wireToolbar{position:relative;inset:auto;grid-column:2;grid-row:1;width:100%;max-width:330px;box-sizing:border-box;pointer-events:auto;margin:0}#viewerBottomTools:has(#wireToolbar:not([hidden])){grid-template-columns:minmax(0,210px) minmax(0,330px)}#viewerBottomTools:has(#wireToolbar:not([hidden])) #applianceSwitch{grid-column:2;grid-row:2}#viewerBottomTools:has(#wireToolbar:not([hidden])) #heatmapLegend{grid-row:1 / span 2}.stage:has(#wireToolbar:not([hidden])) .compass{display:block}#connectionPrompt{background:#fff5d8;border:1px solid #ddba61;border-radius:8px;padding:12px;margin:10px}#deleteDialog{max-width:540px}#treeDialog{width:min(650px,92vw)}#deleteSelected,#deleteSidebar,#deleteInspector,#deleteSystem,#deleteTreeEdit{color:#943a2e}#deleteSidebar{margin:10px}#restoreInverter{background:#ffd477;margin:10px}
@media(max-width:600px){#modeBadge{top:57px;right:8px;font-size:11px}#overlayControls{top:87px}.setup-grid,.pair{column-gap:12px!important}#viewerBottomTools:has(#wireToolbar:not([hidden])){grid-template-columns:minmax(0,1fr)}#viewerBottomTools #wireToolbar{grid-column:1;grid-row:1;justify-self:end;max-width:310px}#viewerBottomTools:has(#wireToolbar:not([hidden])) #applianceSwitch{grid-column:1;grid-row:2;justify-self:end;max-width:235px}#viewerBottomTools:has(#wireToolbar:not([hidden])) #heatmapLegend{display:none}#viewerBottomTools #wireToolbar>span{max-height:72px;overflow:auto}#viewerBottomTools #wireToolbar button{font-size:11px}}
@container(max-height:430px){#modeBadge{top:53px;right:8px}#overlayControls{top:84px}#viewerBottomTools #wireToolbar{max-height:160px;overflow:auto}}

/* 0.21: explicit time picker, themed field groups and a measured toolbar menu. */
.settings-group{border:1px solid #bbcbbf;border-radius:8px;padding:10px 12px;margin:10px 0;min-width:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 16px}
.settings-group>legend{padding:0 6px;font-size:12px;font-weight:700;color:#315546}.settings-group>p,.settings-group>.pair{grid-column:1/-1}.settings-group>.pair{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
#inspectPanelFields>.settings-group,#inspectControllerFields>.settings-group,#inspectBatteryFields>.settings-group{grid-column:1/-1;margin:4px 0}
#inlineEditor .settings-group,#systemInline .settings-group{grid-template-columns:1fr}.settings-group[hidden]{display:none!important}
.time-picker-field{position:relative}.schedule-row .time-picker-field>input{padding-right:38px}
.schedule-row .time-picker-trigger{position:absolute;right:4px;bottom:4px;width:32px;height:32px;min-width:0;padding:0;border-radius:5px;background:#edf4ef;border:1px solid #a4b9aa;font-size:18px}
.time-picker-popup,.viewer-more-menu{position:fixed;inset:auto;margin:0;padding:6px;background:#fffefa;color:#253e33;border:1px solid #8da596;border-radius:9px;box-shadow:0 5px 22px #1b392c44;overflow-y:auto;overflow-x:hidden;z-index:100001;box-sizing:border-box;max-width:calc(100vw - 16px)}
.time-picker-popup[hidden],.viewer-more-menu[hidden]{display:none!important}.time-picker-popup button{display:block;width:100%;text-align:left;padding:8px 10px!important;border:0;border-radius:4px;font:13px/1.4 system-ui;min-height:34px}.time-picker-popup button.active{background:#235a46;color:white}.time-picker-popup button:hover{outline:2px solid #448e71;outline-offset:-2px}
.scene-top{overflow:visible;flex-wrap:nowrap;padding-bottom:0;gap:6px;z-index:6;min-height:34px}.scene-top #wireMode{margin-right:0}
#viewerMore{white-space:nowrap;flex:0 0 auto}.viewer-more-menu button{display:block;width:100%;text-align:left;margin:3px 0;font-size:12px;padding:9px}.viewer-more-menu button[hidden]{display:none!important}.viewer-more-menu button[aria-pressed=true]{background:#244f41;color:#fff}
#modeBadge.viewer-model-label{right:10px;top:57px;padding:2px 3px;background:none;border:0;border-radius:0;box-shadow:none;color:#952c26;font-size:12px;font-weight:750;cursor:default;text-shadow:0 1px 2px #fff,0 0 4px #fff;pointer-events:none;max-width:calc(100% - 110px)}
#overlayControls{right:10px;top:82px}
@media(max-width:600px){.settings-group{grid-template-columns:1fr;padding:9px;gap:8px}#modeBadge.viewer-model-label{right:8px;top:51px;font-size:11px}#overlayControls{right:8px;top:75px}}
@container(max-height:430px){#modeBadge.viewer-model-label{top:51px}#overlayControls{left:auto;right:8px;top:75px;width:min(270px,calc(100% - 100px));display:block}#overlayControls label{display:block}}

/* 0.22: the shell clips its corners; only the inset middle section scrolls. */
dialog{border-radius:16px!important;padding:0!important;overflow:hidden!important;max-height:92dvh!important}
dialog[open]{display:flex;flex-direction:column}
dialog>form{display:flex;flex-direction:column;min-height:0;max-height:92dvh;width:100%;margin:0}
.modal-header,.modal-footer{flex:0 0 auto;padding:13px 18px;background:#fffdf4;min-width:0}
.modal-header{border-bottom:1px solid #d4dfd6}.modal-header h2{margin:0 0 5px!important;font-size:19px}.modal-header p{margin:4px 0;font-size:11px}.modal-header>button{font-size:11px;padding:5px 8px;margin:4px 5px 0 0}
.modal-body{flex:1 1 auto;min-height:0;overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable;margin:0 7px;padding:12px 11px;max-width:100%}
.modal-footer{border-top:1px solid #d4dfd6;display:flex;gap:8px;flex-wrap:wrap;align-items:center}.modal-footer>.pair,.modal-footer>.wizard-actions{display:flex!important;gap:8px;flex-wrap:wrap;margin:0!important;padding:0!important;position:static!important;width:100%;background:none}.modal-footer button{font-size:12px;padding:8px 11px}
#inlineEditor .modal-body,#systemInline .modal-body{overflow:visible;max-height:none;margin:0;padding:8px 0}#inlineEditor .modal-header,#inlineEditor .modal-footer,#systemInline .modal-header,#systemInline .modal-footer{padding:8px 0;background:none}
#annualDialog .annual-controls{margin:0 0 12px}#annualTable{max-height:none}.annual-entry{display:block;width:100%;margin:8px 0 12px;text-align:center;background:#e6f0e9;border:1px solid #8da899}
.stage{--viewer-inset-x:14px;--viewer-inset-y:16px}.stage .compass{left:var(--viewer-inset-x);top:var(--viewer-inset-y)}
#modeBadge.viewer-model-label{right:var(--viewer-inset-x);top:var(--viewer-inset-y);padding:0;max-width:calc(100% - 110px);line-height:18px}
.scene-top{top:calc(var(--viewer-inset-y) + 25px);right:var(--viewer-inset-x)}#overlayControls{top:calc(var(--viewer-inset-y) + 68px);right:var(--viewer-inset-x)}
@media(max-width:800px){.stage{--viewer-inset-x:8px;--viewer-inset-y:10px}.scene-top{top:calc(var(--viewer-inset-y) + 25px);right:var(--viewer-inset-x)}}
@media(max-width:600px){.modal-header,.modal-footer{padding:10px 12px}.modal-body{padding:10px 6px;margin:0 5px}.modal-footer button{padding:7px 9px}.modal-header h2{font-size:17px}#overlayControls{top:calc(var(--viewer-inset-y) + 66px)}}
@container(max-height:430px){#modeBadge.viewer-model-label{top:var(--viewer-inset-y)}#overlayControls{top:calc(var(--viewer-inset-y) + 66px)}}


/* 0.22.2: one corner stack; toolbar gets the remaining lane, never its space. */
.stage{--viewer-info-width:184px}
#viewerInfo{position:absolute;top:var(--viewer-inset-y);right:var(--viewer-inset-x);width:var(--viewer-info-width);max-width:calc(100% - 110px);display:flex;flex-direction:column;align-items:stretch;gap:6px;z-index:3;pointer-events:none}
#viewerInfo #modeBadge{position:static;inset:auto;max-width:100%;width:100%;padding:0;line-height:18px;text-align:right}
#viewerInfo #overlayControls{position:relative;inset:auto;width:100%;max-width:100%;margin:0;padding:8px;display:block;pointer-events:auto}
#viewerInfo #overlayControls label{display:block}
.stage .scene-top{top:var(--viewer-inset-y);right:calc(var(--viewer-inset-x) + var(--viewer-info-width) + 12px);min-width:0}
@container(max-width:430px){
 .stage .scene-top{left:var(--viewer-inset-x);right:auto;top:calc(var(--viewer-inset-y) + 120px);width:78px;max-width:78px}
}

/* Startup failed before handlers exist: show safe navigation, not inert editor UI. */
body.webgl-unavailable{height:auto;min-height:100dvh;overflow:auto;grid-template-rows:auto 1fr}
body.webgl-unavailable main{display:block;min-height:0}
body.webgl-unavailable aside,body.webgl-unavailable footer,body.webgl-unavailable header .actions,body.webgl-unavailable header .scene-project,body.webgl-unavailable .stage>:not(#scene){display:none!important}
body.webgl-unavailable .stage{container-type:normal;min-height:0;overflow:visible;background:#edf3e8}
body.webgl-unavailable #scene{position:relative;inset:auto}
.webgl-fallback{max-width:720px;margin:0 auto;padding:clamp(24px,5vw,56px);color:#254336}
.webgl-fallback .fallback-kicker{font-size:12px;font-weight:750;letter-spacing:1px;color:#58765b}
.webgl-fallback h2{font-size:clamp(24px,4vw,34px);line-height:1.2;margin:12px 0 20px}
.webgl-fallback p{line-height:1.65;overflow-wrap:break-word}
.webgl-fallback nav{display:flex;flex-wrap:wrap;gap:12px;padding:0;margin:24px 0 0;background:none}
.webgl-fallback a{display:inline-block;padding:11px 14px;border:1px solid #7d9b82;border-radius:9px;background:#fffef7;color:#214f3b;font-size:13px;font-weight:650;text-decoration:none}
.webgl-fallback a:focus-visible{outline:3px solid #a76224;outline-offset:3px}

/* UAT: usable result tables, compact canvas tools and visible recovery. */
#annualDialog{width:min(1180px,96vw);max-width:1180px}#annualDialog .modal-body{width:100%;box-sizing:border-box}#annualTable table{width:100%}#annualTable th:first-child,#annualTable td:first-child{position:sticky;left:0;background:#eef5ef;z-index:1}#annualDialog details{margin:10px 0}#annualSummary{font-weight:600}#recoveryActions{display:grid;gap:8px}#restartDay{font-size:11px;padding:7px}footer:has(#restartDay:not([hidden])){flex-wrap:wrap}#resultsConnections{background:#fff4d8;border-color:#c6a452}label[hidden]{display:none!important}
#placementToolbar{max-width:290px;padding:8px}#optimizerToolbar{max-width:275px;padding:8px}#placementStatus,#optimizerModeStatus{font-size:11px;line-height:1.35}#placementToolbar strong{display:none}#optimizerToolbar>b{font-size:11px}#optimizerToolbar .field-title{font-size:11px}#placementToolbar,#optimizerToolbar{right:auto}#viewerActions #rotatePanel{max-width:155px;overflow:hidden;text-overflow:ellipsis}

footer .run-load{display:flex;flex-direction:column;gap:4px;overflow:visible}footer .run-load #run{order:0}footer .run-load #restartDay{order:1;width:100%;height:25px;padding:3px;font-size:11px}#annualDialog .modal-body{width:auto}#recoveryActions button{text-align:left}

#annualTable th{white-space:normal;min-width:58px;max-width:130px;vertical-align:bottom}#annualTable th:first-child,#annualTable td:first-child{min-width:42px}

/* Shade study controls */
.shade-note{font-size:12px;line-height:1.45;color:#526b60;margin:8px 0}#overlayControls .shade-note{max-width:180px}#editTree{width:100%;margin:6px 0 10px}#treeXValue,#treeZValue,#treeHeightValue{font-size:12px;font-weight:700;display:block}#treeDialog input:invalid{border-color:#a54432}

#heatmapLegend.shade-legend .energy-gradient{background:linear-gradient(90deg,hsl(119,75%,42%),hsl(60,75%,42%),hsl(0,75%,42%))}

/* Clear action hierarchy and progressive scene editing. */
button{background:#e6eee8;border-color:#b7cbbc;color:#244c3f}
button:hover{background:#d4e4d9;border-color:#7a9e89}
button.primary-action{background:#285e4f;border-color:#285e4f;color:#fff}
button.primary-action:hover{background:#1b493b}
button.danger-action{background:#f9ece6;border-color:#d9aaa0;color:#8c392c}
button:disabled{opacity:.5;cursor:default}
.pane .workflow-card{border:1px solid #d2dfd4;border-radius:12px;background:#f5f8f1;padding:12px;margin:12px 0}
.workflow-card h4{display:flex;align-items:center;gap:8px;margin:0 0 10px;font-size:14px;color:#254f40}
.workflow-card h4 span{display:inline-grid;place-items:center;width:23px;height:23px;flex-shrink:0;border-radius:50%;background:#285e4f;color:white;font-size:12px}
.pane p,.pane .small-note{font-size:12px;line-height:1.5;color:#53685c;margin:7px 0 12px}
.workflow-card>button,.workflow-card>div>button{width:100%;margin:4px 0;padding:9px;font-size:12px}
.pane .pair{gap:7px}.pane .pair button{font-size:11px;line-height:1.4}
.pane label{font-size:12px;color:#435e50}.pane select{font-size:12px}
.advanced-section{border-top:1px solid #d2dfd4;padding:9px 0;margin:9px 0}
.advanced-section>summary{font-size:12px;font-weight:650;color:#365f4c;cursor:pointer;line-height:1.4;padding:4px 0}
.advanced-section[open]>summary{margin-bottom:9px}
.pane .workflow-card .advanced-section{margin-bottom:0;padding-bottom:0}
.pane #panelModeHelp,.pane #wiringModeHelp{background:transparent;border:0;padding:0;font-size:12px;line-height:1.5}
#wireSteps ol{padding-left:20px;font-size:12px;line-height:1.6;color:#435e50}
#wireSequence,#equipmentApplied{border-radius:7px;background:#e1eee3;padding:8px;color:#285e4f;font-size:12px}
#viewToggles{display:flex;justify-content:flex-end;gap:8px;pointer-events:auto}
#viewToggles button{display:flex;align-items:center;gap:5px;font-size:11px;padding:5px 6px;background:#f5f8f1e8;border-color:#a9c0b0;border-radius:7px}
.toggle-track{display:inline-block;width:23px;height:13px;border-radius:9px;background:#81968a;padding:2px}
.toggle-track:after{content:'';display:block;width:9px;height:9px;border-radius:50%;background:white;transition:transform .15s}
[aria-pressed=true]>.toggle-track{background:#285e4f}[aria-pressed=true]>.toggle-track:after{transform:translateX(10px)}
#equipmentDialog{width:min(980px,96vw);max-width:980px}
#equipmentDialog .modal-header p{margin:5px 0 10px;color:#52695c}
.equipment-tabs{display:flex;gap:8px;margin:10px 0}.equipment-tabs button{font-size:13px;padding:8px 12px}
.equipment-tabs button[aria-pressed=true]{background:#285e4f;color:white;border-color:#285e4f}
#costPreview{font-size:13px;font-weight:650;color:#285e4f;line-height:1.5;margin:8px 0 0}
#equipmentDialog h3{font-size:17px;margin:8px 0}#equipmentDialog h4{margin:18px 0 8px}
#equipmentDialog label{font-size:12px}#equipmentDialog input,#equipmentDialog select{font-size:13px}
#equipmentDialog input:not([type=file]){border:1px solid #b9ccbe;border-radius:7px;padding:8px;background:#fffefa;color:#304c3e;max-width:100%}
#equipmentDialog .setup-grid{align-items:start}#equipmentComparison{background:#e9f1e7;border-radius:9px;padding:10px;font-size:13px;line-height:1.5}
#equipmentDialog #applyEquipment{margin:8px 0;padding:11px 18px}
#equipmentDialog pre{margin:0;font-family:inherit;line-height:1.5;font-size:12px}
.cost-table-scroll{overflow:auto;max-height:42vh;border:1px solid #bfd1c4;border-radius:9px}
.cost-table{width:100%;min-width:620px;border-collapse:collapse;font-size:12px;table-layout:fixed}
.cost-table th,.cost-table td{padding:7px;text-align:left;border-bottom:1px solid #d8e2d7;vertical-align:middle}
.cost-table thead th{position:sticky;top:0;background:#e2ecdf;z-index:1;color:#365944;font-size:11px}
.cost-table th:first-child{width:16%}.cost-table th:nth-child(2){width:38%}.cost-table th:nth-child(3){width:17%}.cost-table th:nth-child(4){width:29%}
.cost-table .cost-row{display:table-row}.cost-table tr:nth-child(even){background:#f1f5ed}
.cost-table input,.cost-table select{width:100%;margin:0!important;padding:7px!important;font-size:12px!important}
.cost-allowances{grid-template-columns:repeat(3,minmax(0,1fr))}
#equipmentRoiNote{background:#eef3e9;padding:10px;border-radius:8px}
#equipmentApplied:empty,#equipmentComparison:empty{display:none}.cost-table-scroll{max-height:none}
.table-scroll-hint{display:none}@media(max-width:700px){.table-scroll-hint{display:block;font-size:12px!important;color:#52695c}}

/* Guided setup, wiring and recovery. */
#setupWizard,#plannerDialog,#locationDialog{width:min(1100px,96vw);max-width:1100px}
#inspector,#systemDialog,#sceneDialog{width:min(900px,96vw);max-width:900px}
#setupWizard .settings-group{grid-template-columns:repeat(2,minmax(0,1fr))}
#setupWizard .full-row,.full-row{grid-column:1/-1}
#setupWizard .modal-body{padding:16px 20px}#setupWizard .settings-group p{margin:5px 0 12px}
#setupInputRatings{white-space:pre-line;background:#e9f1e5;border-radius:8px;padding:12px;font-size:12px}
#setupSummary,#reviewSummary{white-space:pre-wrap;overflow-wrap:anywhere;font:inherit;font-size:13px;line-height:1.6;background:#edf3e8;padding:14px;border-radius:10px}
.wiring-planner{margin:16px 0}.wiring-planner p{font-size:13px;line-height:1.55}
.planner-preferences{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px}
.planner-preferences fieldset{border:1px solid #b8cdbb;border-radius:10px;background:#f1f6ec;padding:12px}
.planner-preferences legend{font-size:14px;font-weight:700;color:#2b5c48}
.planner-preferences input{font-size:14px}.planner-preferences label{font-size:12px}
.planner-strings{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:10px;margin:12px 0}
.planner-string{display:grid;gap:6px;border:1px solid #c1d1c1;border-radius:10px;padding:10px}
.planner-string button:first-child{text-align:left;white-space:normal;overflow-wrap:anywhere}
.planner-string button[aria-pressed=true]{background:#2b5c48;color:white}
.planner-string small{font-size:12px}.planner-string select{margin:0}
.planner-panels{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0;padding:12px;border:1px dashed #809d86;border-radius:10px}
.planner-panels button{font-size:12px;min-height:45px}.planner-panels button[aria-pressed=true]{background:#315f70;color:white;border-color:#315f70}
.reminders{background:#f2f5e9;border:1px solid #c9d3b5;border-radius:10px;margin:16px 0;padding:12px}.reminders summary{font-weight:700;cursor:pointer}
#setupWarnings{background:transparent;max-height:220px;white-space:pre-line;overflow:auto;border:0}
#setupIssuesSection{padding:12px;border:1px solid #c79442;border-radius:10px;background:#fff2d4}#setupIssues{max-height:180px;overflow:auto;white-space:pre-line;font-size:12px;line-height:1.5}
.shade-guide{border-top:1px solid #c4d1bf;padding-top:14px}.shade-guide svg{width:100%;max-height:110px}.shade-guide ol{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;padding-left:20px;font-size:13px;line-height:1.5}
.shade-next{background:#e8f0dc;padding:12px;border-radius:10px;margin:10px 0}
#treeFoliageNote{grid-column:1/-1}
#connectionPrompt{max-height:155px;overflow:auto;flex:0 0 auto;margin:8px 0;padding:10px}
#connectionPrompt #connectionMessage{max-height:48px;overflow:auto;font-size:11px;line-height:1.45;margin:6px 0}
#connectionPrompt button{font-size:11px;padding:6px}#connectionDetails{margin-top:5px}
.aside-footer{flex-wrap:wrap;gap:9px}.aside-footer button{min-height:26px}
#locationMap{display:block;width:100%;height:auto;aspect-ratio:2;background:#dbe9ee;border:1px solid #b5c9be;border-radius:8px;cursor:crosshair;touch-action:manipulation}
#locationSearch{width:100%;padding:10px;border:1px solid #a9bfb1;border-radius:8px;margin-top:6px}
#locationResults{display:flex;flex-direction:column;max-height:160px;overflow:auto;margin:8px 0;gap:4px}#locationResults button{text-align:left;font-size:12px}
.map-actions{display:flex;gap:8px;margin:10px 0}
#reviewError,#plannerError{color:#9a3825}#reviewDialog{width:min(760px,96vw);max-width:760px}
@media(max-width:700px){#setupWizard .settings-group{grid-template-columns:1fr}.shade-guide ol{grid-template-columns:1fr;gap:10px}.planner-preferences,.planner-strings{grid-template-columns:1fr}#setupWizard .modal-body{padding:10px}#connectionPrompt{max-height:125px}}
@media(max-width:600px){#equipmentDialog{width:96vw}.cost-allowances{grid-template-columns:1fr}.equipment-tabs{gap:5px}.equipment-tabs button{font-size:12px}.workflow-card{padding:10px}}

#locationMap{max-width:760px;margin:auto}#reviewSummary{white-space:pre-wrap;overflow-wrap:anywhere;font:13px/1.6 system-ui;background:#edf2e9;padding:12px;border-radius:8px}

#reviewOverview{white-space:pre-line;line-height:1.75}#reviewDialog summary{cursor:pointer;font-weight:700}

#connectionPrompt #connectionMessage{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;max-height:34px}

/* UAT round 25: category cards, spatial planner, recovery and guided shade study. */
#sceneDimensions[hidden]{display:none!important}
.setup-categories{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;align-items:start}
.setup-categories>.settings-group{margin:0;min-width:0;height:100%;box-sizing:border-box}
.setup-categories>p,.setup-categories>details{grid-column:1/-1}
.reminders{background:#fff4e3!important;border-color:#d7a766!important;color:#67451e}
#setupWarnings{background:#fff8ed;border-left:3px solid #c78b43;padding:12px;line-height:1.6}
.shade-screenshots{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.shade-screenshots figure{margin:0;min-width:0}.shade-screenshots img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:10px;border:1px solid #b5c8c0}.shade-screenshots figcaption{font-size:13px;line-height:1.5;margin-top:8px}
.playback-speed{display:grid;gap:2px;font-size:11px;min-width:120px}.playback-speed select{padding:4px 8px}.playback-speed small{font-size:10px}
.history-rows{display:grid;gap:8px}.history-rows button{text-align:left}
#historyDialog,#hardwareDialog{width:min(760px,94vw);max-height:90dvh;overflow:auto}
.planner-buckets{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:16px 0}
.planner-bucket{border:1px solid #adc4c2;background:#f1f7f5;border-radius:12px;padding:12px;min-width:0}
.planner-bucket:only-child{grid-column:1/-1}.planner-bucket h4{margin:0 0 8px}.planner-lane{border:1px dashed #9eb9ba;background:#fffdf7;padding:10px;border-radius:8px;margin:10px 0}.planner-lane.active{outline:2px solid #447c83}.planner-lane.drag-over,.planner-pool.drag-over{background:#dbede1;outline:2px solid #257968}
.planner-lane-head{display:flex;gap:8px;align-items:center;justify-content:space-between}.planner-lane-head button{padding:5px 8px;font-size:11px}
.planner-panel-row{display:flex;flex-wrap:wrap;gap:8px;min-height:104px;align-items:center;padding:8px 0}
button.solar-tile{width:66px;height:92px;flex:0 0 66px;border:3px solid #abc1c9;border-radius:4px;background-color:#23465d;background-image:linear-gradient(90deg,transparent 47%,#7093aa70 48%,#7093aa70 51%,transparent 52%),linear-gradient(0deg,transparent 47%,#7093aa70 48%,#7093aa70 51%,transparent 52%);background-size:16px 18px;color:white;font-weight:750;text-shadow:0 1px 3px #000;cursor:grab;padding:0}
button.solar-tile[aria-pressed=true]{outline:3px solid #e4a73e;border-color:#ffe3a6}button.solar-tile:focus-visible{outline:3px solid #e4a73e;outline-offset:3px}
.planner-pool{background:#edf0ef;border:1px dashed #a6b7b3;border-radius:10px;padding:12px}.planner-pool h4{margin:0}.planner-live{font-size:13px;min-height:1.5em;color:#31585b}.planner-sort{display:flex;gap:8px;flex-wrap:wrap}
@media(min-width:1000px){#setupWizard{width:min(1180px,95vw)}}
@media(max-width:850px){.setup-categories,.planner-buckets{grid-template-columns:1fr}.shade-screenshots{grid-template-columns:1fr}.shade-screenshots img{max-height:260px;object-fit:contain}.playback-speed{min-width:100px}}

.location-search{display:flex;align-items:end;gap:12px}.location-search label{flex:1}.location-search button{margin-bottom:8px}.location-map-wrap{position:relative}#locationMap{display:block;position:relative;height:360px;width:100%;overflow:hidden;touch-action:none;background:#e1e9e6;cursor:crosshair;box-sizing:border-box}#locationMap>img{position:absolute;width:256px;height:256px;max-width:none;pointer-events:none}#locationMarker{position:absolute;z-index:2;font-size:28px;transform:translate(-50%,-100%);pointer-events:none}.map-attribution{position:absolute;right:2px;bottom:2px;z-index:3;background:#fffffff0;padding:3px 6px;font-size:11px}.map-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}#locationResults{display:grid;gap:5px;margin:8px 0}#locationResults button{text-align:left}@media(max-width:600px){#locationMap{height:280px}}

.setup-categories>.settings-group{height:auto;align-content:start}.setup-categories .settings-group>button{align-self:end;min-height:42px}#historyDialog[open],#hardwareDialog[open]{display:flex;flex-direction:column;padding:0;overflow:hidden}.planner-options{padding:8px 0}.planner-options summary{cursor:pointer;font-weight:650}.planner-options>p{font-size:12px}.location-map-wrap{max-width:760px;margin:auto}#setupStep0 .settings-group{min-width:0}

.shade-screenshots img{object-fit:contain;background:#eaf0e9}#hardwareError,#historyError{color:#9a3825}

/* 0.26: six explicit footer tracks keep the chart and controls from overlapping. */
footer{grid-template-columns:104px minmax(180px,1fr) 92px 106px 145px minmax(180px,1fr);grid-template-rows:auto;gap:14px}
footer>*{min-width:0}footer .playback-speed{min-width:0;margin:0}footer .playback-speed small{line-height:1.25;min-height:25px}footer .weather,footer .date-control{width:auto;margin:0}footer select,footer input{box-sizing:border-box}footer .date-control input{padding:5px;font-size:12px}footer .spark{display:block;grid-column:auto;grid-row:auto;width:100%}footer .spark>span{display:block;white-space:normal;line-height:1.3;font-size:10px}footer .spark>span b{display:block}footer .spark svg{display:block;width:100%;height:42px}footer .time,footer .weather,footer .date-control{grid-column:auto;grid-row:auto}
#setupWizardFooter .wizard-actions{align-items:center}#setupWizardFooter .wizard-forward{display:flex;gap:8px;margin-left:auto}#setupWizardFooter .wizard-forward button{background:#256948;color:#fff;border-color:#205d40;font-weight:700}#setupWizardFooter .wizard-forward button:hover{background:#1b5338}
.location-preview{grid-column:1/-1;min-width:0}.location-preview p{margin:8px 0;font-size:12px}.location-mini-map{position:relative;height:150px;overflow:hidden;border:1px solid #b5c8c0;border-radius:8px;background:#e1e9e6}.location-mini-map img{position:absolute;width:256px;height:256px;max-width:none}.location-mini-map .map-pin{position:absolute;left:50%;top:50%;transform:translate(-50%,-100%);font-size:26px;z-index:2}.location-mini-map .map-attribution{font-size:10px}
button.planner-drag-ghost{position:fixed;z-index:10000;pointer-events:none!important;opacity:.9;transform:rotate(4deg);box-shadow:0 8px 18px #16374766;outline:2px solid #e4a73e}
footer .spark>span b{float:none}
@media(max-width:700px){body{grid-template-rows:auto minmax(0,1fr) 205px}header{display:flex;flex-direction:column;align-items:stretch;padding:8px 10px;gap:7px}header .brand,header .actions{flex:none;width:100%}header .actions{justify-content:flex-start;gap:4px}header .brand b{font-size:20px}header .actions button{padding:6px 8px}}
#projectsDialog{width:min(680px,94vw)}#projectsDialog[open]{display:flex;flex-direction:column;padding:0;max-height:90dvh;overflow:hidden}.project-section{padding:8px 0 18px}.project-section+.project-section{border-top:1px solid #cedad3}.project-section h3{margin:8px 0}.project-actions{display:flex;flex-wrap:wrap;gap:8px}.cloud-files{display:grid;gap:8px;margin:16px 0}.cloud-files button{text-align:left;overflow-wrap:anywhere}.cloud-files small{display:block}#cloudStatus{white-space:pre-line}#cloudControls[hidden]{display:none}
@media(max-width:1100px) and (min-width:701px){body{grid-template-rows:82px minmax(0,1fr) 152px}footer{grid-template-columns:100px minmax(140px,1fr) 90px 106px 145px;gap:8px 12px}footer .spark{grid-column:2/6;display:flex;gap:16px;align-items:center}footer .spark>span{flex:0 0 150px}footer .spark svg{height:32px;min-width:0}}
@media(max-width:700px){body{grid-template-rows:60px minmax(0,1fr) 205px}footer{grid-template-columns:86px minmax(0,1fr) minmax(0,1fr);grid-template-rows:auto auto auto;gap:6px 10px;padding:8px}footer .run-load{grid-column:1;grid-row:1}footer .time{grid-column:2/4;grid-row:1}footer .playback-speed{grid-column:1;grid-row:2}footer .weather{grid-column:2;grid-row:2}footer .date-control{grid-column:3;grid-row:2}footer .field-info{width:22px;height:22px}footer .date-control input{font-size:10px;padding:3px;width:100%}footer .spark{grid-column:1/4;grid-row:3;display:flex;align-items:center;gap:10px}footer .spark>span{flex:0 0 130px}footer .spark svg{height:30px;min-width:0}#setupWizardFooter .wizard-forward{width:100%;justify-content:flex-end}}

@media(max-width:700px){body{grid-template-rows:auto minmax(0,1fr) 205px}header{flex-wrap:nowrap;height:auto;min-height:0}header .scene-project{display:none}}
@media(min-width:701px) and (max-width:1100px){body{grid-template-rows:auto minmax(0,1fr) 152px}}

.system-choices{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:22px 0}.system-choices button{display:flex;flex-direction:column;align-items:start;text-align:left;gap:12px;padding:22px;line-height:1.5;border:2px solid #bdcfc2;background:#fffdf5;color:#23483d}.system-choices strong{font-size:19px}.system-choices span{font-weight:400}.system-choices button[aria-pressed=true]{border-color:#247552;background:#eaf3e6;box-shadow:0 0 0 2px #247552}.power-summary{padding:12px;border-radius:9px;background:#edf3df;color:#244b3b;font-weight:650;line-height:1.5}.annual-rates{display:flex;flex-wrap:wrap;align-items:end;gap:12px}.annual-rates label{width:190px}.annual-rates p{flex-basis:100%;margin:2px 0}.report-choice{font-size:12px;margin:0}.report-choice select{margin:0}.annual-chart{width:100%;height:auto;max-height:340px;background:#fffef8;border:1px solid #c8d7c9;border-radius:10px}.google-drive-button{display:inline-flex;align-items:center;gap:12px;background:white;border:1px solid #747775;color:#1f1f1f;border-radius:4px;font-family:Arial,sans-serif;font-size:14px;font-weight:500;padding:10px 16px}.google-drive-button img{flex:none}.help-link{display:inline-flex;align-items:center;padding:10px;color:#245c4e}#locationMap{cursor:grab;user-select:none}#locationMap.is-panning{cursor:grabbing}#locationZoomLevel{font-size:12px;color:#3c6256}@media(max-width:700px){.system-choices{grid-template-columns:1fr}.system-choices button{padding:14px}.annual-rates label{width:100%}}
