: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 146px;grid-template-columns:1fr 64px 1fr;display:grid;position:relative}#card-solar{grid-area:1/1}#card-use{grid-area:1/3}#card-buy{grid-area:3/1}#card-sell{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;font-size:15px;font-weight:500}.ef-buy-badge{font-family:var(--font-mono);letter-spacing:.04em;color:#d6b8c9;white-space:nowrap;background-color:#201a1eb8;border:1px solid #de92bc73;border-radius:999px;padding:2px 9px;font-size:11px;font-weight:500}.ef-card-buy.is-standby{border-color:#de92bc8c}.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-value.is-zero{color:#898084}.ef-card-sub{font-family:var(--font-mono);letter-spacing:.03em;font-size:13px}.ef-card-highlight{font-family:var(--font-mono);color:#e4e4e4;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{color:#aba38c}.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{color:#8eab99}.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{color:#a896a0}.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{color:#93a3b1}.ef-card-battery{background-color:#3f3d45;border:1.5px solid #bfb6e0;border-radius:28px;flex-direction:column;justify-content:space-between;padding:16px 26px 15px;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;font-size:15px;font-weight:500}.ef-batt-state{font-family:var(--font-mono);color:#dcd9e6;letter-spacing:.04em;font-size:15px}.ef-batt-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-batt-bar-track{background-color:#2d2b33;border-radius:999px;width:100%;height:14px;margin:4px 0;overflow:hidden}.ef-batt-bar-fill{background-color:#d5cbf9;border-radius:999px;height:100%;transition:width .4s}.ef-batt-bottom{font-family:var(--font-mono);color:#a8a2b5;letter-spacing:.04em;justify-content:space-between;align-items:center;font-size:13px;display:flex}#val-batt-est{color:#dcd9e6}.pv-showcase{grid-template-columns:1.05fr 1fr;align-items:stretch;gap:18px;display:grid}.pv-roof-panel{background-color:#202022;border:1px solid #35363d;border-radius:20px;flex-direction:column;justify-content:space-between;padding:12px 14px 10px;display:flex}.pv-roof-caption{font-family:var(--font-mono);letter-spacing:.06em;color:#9a9ea6;justify-content:space-between;align-items:center;margin-bottom:4px;font-size:11px;display:flex}.pv-roof-meta{color:#7c8089}.pv-roof-svg{width:100%;height:auto;display:block}.roof-group{cursor:pointer;transition:filter .2s,opacity .2s}.roof-group.is-hovered{filter:brightness(1.22)drop-shadow(0 0 8px #fbdd8440)}.roof-mod{stroke-width:1.4px;transition:fill .25s,stroke .25s}.roof-modules-pv1 .roof-mod{fill:#d7bd7238;stroke:#d7bd72}.roof-group.is-active .roof-modules-pv1 .roof-mod{fill:#fbdd846b;stroke:#fbdd84}.roof-modules-pv2 .roof-mod{fill:#74aede38;stroke:#74aede}.roof-group.is-active .roof-modules-pv2 .roof-mod{fill:#88cdff6b;stroke:#88cdff}.roof-modules-pv3 .roof-mod{fill:#4bc77c38;stroke:#4bc77c}.roof-group.is-active .roof-modules-pv3 .roof-mod{fill:#57f2936b;stroke:#57f293}.roof-modules-pv4 .roof-mod{fill:#bfb6e03d;stroke:#bfb6e0}.roof-group.is-active .roof-modules-pv4 .roof-mod{fill:#d5cbf970;stroke:#d5cbf9}.roof-mod-code{fill:#e8e8ec;font-family:var(--font-mono);text-anchor:middle;pointer-events:none;font-size:8.5px;font-weight:600}.roof-zone-tag{font-family:var(--font-mono);text-anchor:middle;letter-spacing:.02em;font-size:10px;font-weight:500}.tag-pv1{fill:#fbdd84}.tag-pv2{fill:#88cdff}.tag-pv3{fill:#57f293}.tag-pv4{fill:#d5cbf9}.pv-grid{grid-template-columns:repeat(2,1fr);gap:12px;display:grid}.pv-box{border-radius:20px;flex-direction:column;justify-content:space-between;padding:14px 16px 12px;transition:transform .18s,box-shadow .18s;display:flex}.pv-box.is-hovered{transform:translateY(-2px);box-shadow:0 8px 20px #00000059}.pv-box-1{background-color:#3b372c;border:1.5px solid #d7bd72}.pv-box-2{background-color:#2c353d;border:1.5px solid #74aede}.pv-box-3{background-color:#293b30;border:1.5px solid #4bc77c}.pv-box-4{background-color:#383640;border:1.5px solid #bfb6e0}.pv-box-top{justify-content:space-between;align-items:center;gap:6px;display:flex}.pv-box-title{font-family:var(--font-mono);color:#f0f0f0;align-items:center;gap:7px;font-size:14px;font-weight:600;display:inline-flex}.pv-dot{border-radius:50%;width:8px;height:8px}.pv-dot-1{background-color:#fbdd84}.pv-dot-2{background-color:#88cdff}.pv-dot-3{background-color:#57f293}.pv-dot-4{background-color:#d5cbf9}.pv-box-circuit{font-family:var(--font-mono);color:#c6c8d0;background-color:#14141673;border-radius:999px;padding:2px 8px;font-size:11px}.pv-box-w{font-family:var(--font-sans);color:#e4e4e4;margin:6px 0 4px;font-size:28px;font-weight:500;line-height:1.15}.pv-box-w.is-zero{color:#898488}.pv-box-vi{font-family:var(--font-mono);color:#d6d4dc;font-size:12px}.pv-box-spec{font-family:var(--font-mono);color:#9e9ca6;margin-top:3px;font-size:11px}.bms-summary{font-family:var(--font-mono);color:#d5cbf9;letter-spacing:.02em;margin-bottom:12px;font-size:12.5px}.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:#34323a;border:1px solid #565164;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:2px;padding:5px 4px;display:flex}.cell-chip.is-min{border-color:#74aede}.cell-chip.is-max{border-color:#d7bd72}.cell-id{color:#a8a2b5;font-size:10px;line-height:1.1}.cell-mv{color:#e8e5f3;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 138px;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-showcase{grid-template-columns:1fr}.cells-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}
