:root{--font-sans:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace}*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{color:#e2e2e2;font-family:var(--font-sans);-webkit-font-smoothing:antialiased;background-color:#202020;justify-content:center;align-items:flex-start;min-height:100vh;padding:20px 12px 48px;display:flex}.page{flex-direction:column;gap:16px;width:100%;max-width:704px;display:flex}.ef-shell{background-color:#2c2c2c;border:1px solid #383838;border-radius:20px;padding:14px 16px 16px;box-shadow:0 18px 42px #00000073}.ef-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:2px 6px 12px;display:flex}.ef-header-left{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.ef-bolt{justify-content:center;align-items:center;display:inline-flex}.ef-title{font-family:var(--font-mono);letter-spacing:.04em;color:#e2e2e2;margin-right:4px;font-size:19px;font-weight:500}.ef-pill{color:#d9d9d9;font-family:var(--font-mono);letter-spacing:.03em;background-color:#232323;border-radius:999px;padding:4px 13px;font-size:13px;font-weight:500}.ef-status-pill{color:#e5e5e5;font-family:var(--font-mono);letter-spacing:.05em;background-color:#213273;border:1px solid #2b459e;border-radius:999px;align-items:center;gap:8px;padding:4px 15px;font-size:13px;font-weight:500;display:inline-flex}.ef-status-dot{background-color:#88cdff;border-radius:50%;width:7px;height:7px;box-shadow:0 0 6px #88cdffcc}.ef-status-pill[data-state=importing]{background-color:#4a233b;border-color:#7d3b63}.ef-status-pill[data-state=importing] .ef-status-dot{background-color:#ffaee0;box-shadow:0 0 6px #ffaee0cc}.ef-status-pill[data-state=charging]{background-color:#1f4530;border-color:#367853}.ef-status-pill[data-state=charging] .ef-status-dot{background-color:#57f293;box-shadow:0 0 6px #57f293cc}.ef-status-pill[data-state=discharging]{background-color:#3c315b;border-color:#69569c}.ef-status-pill[data-state=discharging] .ef-status-dot{background-color:#d5cbf9;box-shadow:0 0 6px #d5cbf9cc}.ef-status-pill[data-state=idle]{background-color:#303036;border-color:#484852}.ef-status-pill[data-state=idle] .ef-status-dot{box-shadow:none;background-color:#a0a4b0}.ef-canvas{background-color:#252525;border-radius:16px;padding:18px 39px 26px}.ef-canvas-section{padding:18px 22px 22px}.ef-sun-wrap{width:100%;margin-bottom:6px}.ef-sun-svg{width:100%;height:auto;display:block;overflow:visible}.sun-time-label{fill:#9a9ea6;font-family:var(--font-mono);text-anchor:middle;font-size:13px}.sun-badge-text{fill:#f0f0f0;font-family:var(--font-mono);text-anchor:middle;font-size:13px;font-weight:500}.ef-col-headers{grid-template-columns:1fr 64px 1fr;align-items:center;margin:4px 0 10px;display:grid}.ef-col-label{text-align:center;font-family:var(--font-mono);letter-spacing:.16em;color:#9c9ea6;font-size:13px}.ef-flow-layout{grid-template-rows:128px 22px 128px 22px 148px;grid-template-columns:1fr 64px 1fr;display:grid;position:relative}#card-buy{grid-area:1/1}#card-sell{grid-area:1/3}#card-solar{grid-area:3/1}#card-use{grid-area:3/3}#card-battery{grid-area:5/1/auto/4}.ef-connectors{pointer-events:none;grid-area:1/2/5;width:64px;height:300px}.flow-line-base{stroke:#383a44;stroke-width:2px}.flow-line{stroke:#0000;stroke-width:2.2px;stroke-dasharray:6 5;stroke-linecap:round}.flow-line.active-blue{stroke:#74aede;animation:1.2s linear infinite dash-flow}.flow-line.active-green{stroke:#4bc77c;animation:1.2s linear infinite dash-flow}.flow-line.active-pink{stroke:#de92bc;animation:1.2s linear infinite dash-flow}.flow-line.active-purple{stroke:#bfb6e0;animation:1.2s linear infinite dash-flow}.flow-line.flow-reverse{animation-name:dash-flow-reverse}@keyframes dash-flow{0%{stroke-dashoffset:22px}to{stroke-dashoffset:0}}@keyframes dash-flow-reverse{0%{stroke-dashoffset:0}to{stroke-dashoffset:22px}}.ef-card{border-radius:28px;flex-direction:column;justify-content:space-between;padding:16px 24px 14px;display:flex}.ef-card-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.ef-card-title{font-family:var(--font-mono);letter-spacing:.04em;align-items:center;gap:7px;font-size:15px;font-weight:500;display:inline-flex}.ef-card-icon{flex-shrink:0}.ef-outline-badge{font-family:var(--font-mono);letter-spacing:.04em;white-space:nowrap;border-radius:999px;padding:2px 10px;font-size:11px;font-weight:500}.ef-buy-badge{color:#e4c4d5;background-color:#201a1eb8;border:1px solid #de92bc80}.ef-batt-badge{color:#dcd5f2;background-color:#201e26b8;border:1px solid #bfb6e08c}.ef-card-value{font-family:var(--font-sans);color:#e4e4e4;letter-spacing:-.01em;margin:2px 0 4px;font-size:34px;font-weight:500;line-height:1.1}.ef-card-sub,.ef-card-highlight{font-family:var(--font-mono);letter-spacing:.04em;font-size:13px;font-weight:500}.ef-card-solar{background-color:#443f30;border:1.5px solid #d7bd72}.ef-card-solar .ef-card-title{color:#fbdd84}.ef-card-solar .ef-card-sub,.ef-card-solar .ef-card-highlight{color:#c2b99f}.ef-card-use{background-color:#2b4133;border:1.5px solid #4bc77c}.ef-card-use .ef-card-title{color:#57f293}.ef-card-use .ef-card-sub,.ef-card-use .ef-card-highlight{color:#a3c2ae}.ef-card-buy{background-color:#42353c;border:1.5px solid #de92bc}.ef-card-buy .ef-card-title{color:#ffaee0}.ef-card-buy .ef-card-sub,.ef-card-buy .ef-card-highlight{color:#bda8b3}.ef-card-sell{background-color:#2f3941;border:1.5px solid #74aede}.ef-card-sell .ef-card-title{color:#88cdff}.ef-card-sell .ef-card-sub,.ef-card-sell .ef-card-highlight{color:#a8b9c8}.ef-card-battery{background-color:#3f3d45;border:1.5px solid #bfb6e0;border-radius:28px;flex-direction:column;justify-content:space-between;padding:15px 26px 14px;display:flex}.ef-batt-top{justify-content:space-between;align-items:center;gap:12px;display:flex}.ef-batt-label{font-family:var(--font-mono);color:#d5cbf9;letter-spacing:.04em;align-items:center;gap:7px;font-size:15px;font-weight:500;display:inline-flex}.ef-batt-value{font-family:var(--font-sans);color:#e4e4e4;letter-spacing:-.01em;margin:1px 0 3px;font-size:34px;font-weight:500;line-height:1.1}.ef-batt-bar-track{background-color:#2a2830;border:1px solid #bfb6e047;border-radius:999px;justify-content:center;align-items:center;width:100%;height:22px;margin:2px 0;display:flex;position:relative;overflow:hidden}.ef-batt-bar-fill{background:linear-gradient(90deg,#7e72a8 0%,#9b8ec7 100%);border-radius:999px;height:100%;transition:width .4s;position:absolute;top:0;bottom:0;left:0}.ef-batt-bar-text{z-index:1;font-family:var(--font-mono);color:#f4f2fc;letter-spacing:.04em;text-shadow:0 1px 3px #000000bf;font-size:12.5px;font-weight:600;position:relative}.ef-batt-bottom{font-family:var(--font-mono);color:#bdb6ce;letter-spacing:.04em;justify-content:space-between;align-items:center;font-size:13px;font-weight:500;display:flex}.pv-compass-layout{grid-template-rows:auto auto;grid-template-columns:1fr 228px 1fr;align-items:center;gap:14px;display:grid}.pv-north-slot{grid-area:1/1/auto/4;justify-content:center;display:flex}.pv-dir-north{width:100%;max-width:340px}.pv-west-slot{grid-area:2/1;align-self:stretch}.pv-center-slot{grid-area:2/2;justify-content:center;align-items:center;display:flex}.pv-east-slot{grid-area:2/3;align-self:stretch;display:flex}.pv-dir-east{flex-direction:column;justify-content:space-between;width:100%;display:flex}.pv-dir-card{background-color:#443f30;border:1.5px solid #d7bd72;border-radius:22px;flex-direction:column;gap:8px;height:100%;padding:14px 18px;display:flex}.pv-dir-header{border-bottom:1px solid #d7bd7240;justify-content:space-between;align-items:center;gap:8px;padding-bottom:6px;display:flex}.pv-dir-name{font-family:var(--font-mono);color:#fbdd84;letter-spacing:.08em;font-size:14px;font-weight:600}.pv-dir-meta{font-family:var(--font-mono);color:#c2b99f;font-size:11.5px}.pv-string-row{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.pv-string-block{border-radius:10px;flex-direction:column;gap:2px;padding:2px 0;transition:opacity .18s;display:flex}.pv-string-divider{background-color:#d7bd7238;height:1px;margin:2px 0}.pv-string-head{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.pv-string-label{font-family:var(--font-mono);color:#fbdd84;font-size:13px;font-weight:600}.pv-string-label small{color:#c2b99f;margin-left:4px;font-size:11px;font-weight:400}.pv-string-w{font-family:var(--font-sans);color:#e4e4e4;font-size:26px;font-weight:500;line-height:1.15}.pv-string-vi{font-family:var(--font-mono);color:#c2b99f;font-size:12px}.pv-roof-stage{background-color:#202020;border:1px solid #3a372e;border-radius:22px;justify-content:center;align-items:center;width:228px;height:228px;padding:8px;display:flex}.pv-roof-svg{width:100%;height:100%;display:block}.roof-group{cursor:pointer;transition:filter .2s}.roof-group.is-hovered,.roof-group.is-active{filter:brightness(1.22)drop-shadow(0 0 6px #fbdd844d)}.roof-mod{fill:#d7bd7247;stroke:#fbdd84;stroke-width:1.4px}.roof-pv-tag{fill:#fbdd84;font-family:var(--font-mono);text-anchor:middle;letter-spacing:.04em;font-size:10px;font-weight:600}.bms-metrics-list{flex-direction:column;gap:8px;margin-bottom:14px;display:flex}.bms-metric-row{background-color:#323038;border:1px solid #524d60;border-radius:14px;flex-direction:column;gap:3px;padding:9px 14px;display:flex}.bms-metric-main{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.bms-metric-key{font-family:var(--font-mono);color:#d5cbf9;letter-spacing:.05em;min-width:44px;font-size:12.5px;font-weight:600}.bms-metric-val{font-family:var(--font-mono);color:#f0eef8;flex:1;font-size:13.5px;font-weight:500}.bms-eval-badge{color:#dcd5f2;background-color:#201e26c7;border:1px solid #bfb6e08c}.bms-eval-badge[data-level=warn]{color:#ffd6eb;border-color:#ffaee0a6}.bms-metric-guide{color:#aca6be;font-size:11.5px;line-height:1.4}.cells-grid{grid-template-columns:repeat(8,minmax(0,1fr));gap:6px;display:grid}.cell-chip{min-height:42px;font-family:var(--font-mono);white-space:nowrap;background-color:#36343d;border:1px solid #635d75;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:2px;padding:5px 4px;display:flex}.cell-id{color:#b4adc7;font-size:10px;line-height:1.1}.cell-mv{color:#ece9f6;font-size:11.5px;font-weight:500;line-height:1.15}@media (width<=640px){.ef-canvas{padding:14px 16px 20px}.ef-flow-layout{grid-template-rows:124px 18px 124px 18px 144px;grid-template-columns:1fr 32px 1fr}.ef-col-headers{grid-template-columns:1fr 32px 1fr}.ef-connectors{width:32px}.ef-card{border-radius:22px;padding:14px 16px}.ef-card-value,.ef-batt-value{font-size:26px}.pv-compass-layout{grid-template-rows:auto;grid-template-columns:1fr}.pv-north-slot,.pv-west-slot,.pv-center-slot,.pv-east-slot{grid-area:auto/1}.pv-dir-north{max-width:none}.cells-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}
