: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:18px;width:100%;max-width:720px;display:flex}.ef-shell{background-color:#2c2c2c;border:1.5px solid #383838;border-radius:20px;padding:14px 16px 16px;box-shadow:0 18px 42px #00000073}.ef-shell-solar{background-color:#443f30;border-color:#d7bd72}.ef-shell-battery{background-color:#3f3d45;border-color:#bfb6e0}.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-title-solar{color:#fbdd84}.ef-title-battery{color:#d5cbf9}.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-pill-solar{color:#f3e4b2;background-color:#1e1c16b8;border:1px solid #d7bd7266}.ef-pill-battery{color:#e4ddf9;background-color:#1c1a22b8;border:1px solid #bfb6e066}.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-pv{background-color:#252525;border:1px solid #d7bd7247;padding:14px 18px}.ef-canvas-bms{background-color:#252525;border:1px solid #bfb6e047;padding:18px 18px 20px}.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:136px 22px 136px 22px 162px;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:316px}.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:15px 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:1px 0 3px;font-size:34px;font-weight:500;line-height:1.08}.ef-unit{letter-spacing:0;color:#dcdcdc;margin-left:5px;font-size:20px;font-weight:400}.ef-unit-sm{letter-spacing:0;color:#d4d4d8;margin-left:4px;font-size:14px;font-weight:400}.ef-card-sub,.ef-card-highlight{font-family:var(--font-mono);letter-spacing:.03em;font-size:15px;font-weight:500;line-height:1.25}.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.08}.ef-batt-bar-track{background-color:#2a2830;border:1px solid #bfb6e052;border-radius:999px;justify-content:center;align-items:center;width:100%;height:30px;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 #000000c7;font-size:14px;font-weight:600;position:relative}.ef-batt-bottom{font-family:var(--font-mono);color:#bdb6ce;letter-spacing:.03em;justify-content:space-between;align-items:center;font-size:15px;font-weight:500;display:flex}.pv-xmap{aspect-ratio:640/420;width:100%;min-height:360px;position:relative}.pv-xmap-svg{width:100%;height:100%;display:block}.roof-group{cursor:pointer;transition:filter .2s,transform .2s}.roof-group.is-hovered,.roof-group.is-active{filter:brightness(1.25)drop-shadow(0 0 7px #ffffff47)}.roof-mod{stroke-width:1.5px;transition:fill .2s,stroke .2s}.mod-pv1{fill:#f0a04b57;stroke:#f0a04b}.mod-pv2{fill:#4cc3d957;stroke:#4cc3d9}.mod-pv3{fill:#6fd08c57;stroke:#6fd08c}.mod-pv4{fill:#ee7f6b57;stroke:#ee7f6b}.pv-quad{flex-direction:column;gap:6px;display:flex;position:absolute}.pv-quad-north{text-align:center;align-items:center;top:6px;left:50%;transform:translate(-50%)}.pv-quad-west{align-items:flex-start;top:50%;left:16px;transform:translateY(-50%)}.pv-quad-east{align-items:flex-start;top:50%;right:16px;transform:translateY(-50%)}.pv-quad-south{text-align:center;align-items:center;bottom:10px;left:50%;transform:translate(-50%)}.pv-quad-dir{font-family:var(--font-mono);letter-spacing:.12em;color:#fbdd84;font-size:16px;font-weight:600}.pv-quad-item{background-color:#2f3137;border:1px solid #484b54;border-radius:14px;min-width:138px;padding:7px 14px;transition:border-color .2s,transform .2s}.pv-quad-item.is-hovered{border-color:#fbdd84;transform:translateY(-1px)}.pv-quad-head{font-family:var(--font-mono);align-items:center;gap:7px;font-size:13px;display:inline-flex}.pv-swatch{border-radius:2.5px;width:9px;height:9px;display:inline-block}.swatch-pv1{background-color:#f0a04b}.swatch-pv2{background-color:#4cc3d9}.swatch-pv3{background-color:#6fd08c}.swatch-pv4{background-color:#ee7f6b}.pv-quad-name{color:#f0f0f4;font-weight:600}.pv-quad-count{color:#b4b7c2;font-size:12px}.pv-quad-kw{font-family:var(--font-sans);color:#e4e4e4;margin:2px 0;font-size:24px;font-weight:500;line-height:1.15}.pv-quad-vi{font-family:var(--font-mono);color:#b2b5c0;font-size:12px}.pv-quad-nothing{font-family:var(--font-mono);color:#8b8e99;letter-spacing:.06em;font-size:14px}.cells-grid{grid-template-columns:repeat(12,minmax(0,1fr));gap:5px;margin-bottom:16px;display:grid}.cell-chip{min-height:40px;font-family:var(--font-mono);white-space:nowrap;background-color:#2f3137;border:1px solid #484b54;border-radius:7px;flex-direction:column;justify-content:center;align-items:center;gap:2px;padding:4px 2px;display:flex}.cell-id{color:#9da1ae;font-size:9.5px;line-height:1.1}.cell-mv{color:#eceef4;font-size:10.5px;font-weight:500;line-height:1.15}.bms-table-wrap{background-color:#2b2d33;border:1px solid #42444d;border-radius:12px;width:100%;overflow-x:auto}.bms-table{border-collapse:collapse;text-align:left;width:100%;font-size:12.5px}.bms-table th,.bms-table td{vertical-align:middle;border-bottom:1px solid #3c3e47;padding:9px 11px}.bms-table tbody tr:last-child td{border-bottom:none}.bms-table thead th{font-family:var(--font-mono);color:#a8acb8;letter-spacing:.04em;white-space:nowrap;background-color:#24262b;font-size:11px;font-weight:600}.bms-col-key{font-family:var(--font-mono);color:#d5cbf9;white-space:nowrap;font-weight:600}.bms-col-val{font-family:var(--font-mono);color:#f0f0f5;white-space:nowrap;font-weight:600}.bms-col-sub{font-family:var(--font-mono);color:#c2c5d0;white-space:nowrap;font-size:12px}.bms-col-judge{white-space:nowrap}.bms-col-reason{color:#b0b4c0;min-width:210px;font-size:11.5px;line-height:1.45}.bms-eval-badge{color:#e4dff7;background-color:#201e26c7;border:1px solid #bfb6e08c}.bms-eval-badge[data-level=warn]{color:#ffd6eb;border-color:#ffaee0a6}@media (width<=680px){.ef-canvas{padding:14px 16px 20px}.ef-flow-layout{grid-template-rows:132px 18px 132px 18px 154px;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:28px}.ef-unit{font-size:16px}.pv-xmap{aspect-ratio:auto;flex-direction:column;gap:10px;display:flex}.pv-quad{text-align:left;align-items:stretch;position:static;transform:none}.cells-grid{grid-template-columns:repeat(6,minmax(0,1fr))}}
