:root{--ink:#16213e;--muted:#667085;--bg:#f4f6fb;--card:#fff;--purple:#5840d8;--cyan:#16b8d4;--green:#10a76f;--amber:#d98200;--red:#d63b4c;--border:#e4e7ec}
*{box-sizing:border-box}body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--bg);color:var(--ink)}
.topbar{padding:28px clamp(18px,5vw,72px);background:linear-gradient(125deg,#171133,#4a2fbe 55%,#0e9db9);color:#fff;display:flex;justify-content:space-between;gap:24px;align-items:center}.eyebrow{font-weight:800;letter-spacing:.15em;font-size:.75rem;margin:0 0 8px}.topbar h1{font-size:clamp(1.8rem,4vw,3.2rem);line-height:1;margin:0}.subtitle{opacity:.88;margin:10px 0 0}.primary,.secondary{border:0;border-radius:12px;padding:12px 17px;font-weight:750;cursor:pointer}.primary{background:#fff;color:#36259c;box-shadow:0 8px 24px #0003}.secondary{background:#ebe8ff;color:#3926a7}
main{width:min(1400px,94vw);margin:24px auto 48px}.card{background:var(--card);border:1px solid var(--border);border-radius:18px;box-shadow:0 6px 24px #18264a0b}.notice{padding:13px 16px;border-radius:12px;margin-bottom:16px;background:#eef4ff;color:#344054;border:1px solid #d9e5ff}.notice.error{background:#fff1f1;color:#922b36;border-color:#ffc9cf}.notice.success{background:#edfbf5;color:#08734d;border-color:#bdeed9}
.controls{padding:20px}.control-grid{display:grid;grid-template-columns:repeat(6,minmax(140px,1fr));gap:14px}.controls label{font-size:.78rem;color:var(--muted);font-weight:700}.controls input,.controls select{width:100%;margin-top:7px;padding:11px;border:1px solid #d0d5dd;border-radius:10px;background:#fff;color:var(--ink);font-size:.92rem}.switch-row{display:flex;gap:24px;margin-top:16px;flex-wrap:wrap}.switch-row .check{display:flex;align-items:center;gap:8px;color:#344054}.check input{width:auto;margin:0}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:18px 0}.stat{background:#fff;border:1px solid var(--border);border-radius:16px;padding:17px}.stat .label{font-size:.78rem;color:var(--muted);font-weight:700}.stat .value{font-size:1.55rem;font-weight:850;margin-top:5px}.stat .detail{font-size:.78rem;color:var(--muted);margin-top:3px}
.chart-card{padding:20px;margin-bottom:28px}.section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin:0 0 14px}.section-heading h2{margin:0;font-size:1.25rem}.section-heading p{margin:5px 0 0;color:var(--muted);font-size:.88rem}.legend{display:flex;gap:14px;font-size:.78rem;color:var(--muted);flex-wrap:wrap}.legend span{display:flex;align-items:center;gap:5px}.legend i{width:10px;height:10px;border-radius:50%;display:inline-block}.confirmed-dot{background:var(--purple)}.forecast-dot{background:var(--cyan)}.selected-dot{background:var(--green)}.chart-wrap{height:390px}
.days{display:grid;grid-template-columns:repeat(5,minmax(210px,1fr));gap:14px}.day-card{background:#fff;border:1px solid var(--border);border-radius:17px;padding:17px;min-width:0}.day-card.best{border:2px solid var(--green);box-shadow:0 8px 28px #10a76f18}.day-head{display:flex;justify-content:space-between;gap:8px}.day-head h3{margin:0}.badge{font-size:.68rem;padding:5px 8px;border-radius:99px;font-weight:800;height:max-content}.badge.confirmed{background:#ece9ff;color:#4a32b7}.badge.forecast{background:#e4f9fd;color:#087b91}.badge.mixed{background:#fff4dc;color:#925d00}.slot{padding:10px 0;border-bottom:1px solid #edf0f4}.slot:last-child{border-bottom:0}.slot-time{font-weight:800}.slot-price{color:var(--green);font-weight:800}.slot-note,.day-meta{font-size:.77rem;color:var(--muted)}.day-cost{font-size:1.35rem;font-weight:850;margin:14px 0 2px}.best-label{color:var(--green);font-weight:800;font-size:.72rem;margin-top:8px}.explanation{padding:20px;margin-top:28px}.explanation h2{margin-top:0}.explanation p{line-height:1.55;color:#475467}.small{font-size:.82rem}footer{text-align:center;color:var(--muted);font-size:.78rem;padding:28px}
@media(max-width:1100px){.control-grid{grid-template-columns:repeat(3,1fr)}.days{grid-template-columns:repeat(2,1fr)}.stats{grid-template-columns:repeat(2,1fr)}}
@media(max-width:650px){.topbar{align-items:flex-start;flex-direction:column}.control-grid{grid-template-columns:1fr 1fr}.days{grid-template-columns:1fr}.stats{grid-template-columns:1fr 1fr}.section-heading{align-items:flex-start;flex-direction:column}.chart-wrap{height:320px}}
.badge.unavailable{background:#f2f4f7;color:#667085}.day-card.unavailable{background:#fafafa;border-style:dashed}.unavailable-message{font-weight:800;margin:28px 0 8px;color:#475467;line-height:1.35}

.primary:disabled{opacity:.72;cursor:wait}.form-actions{display:flex;align-items:center;gap:14px;margin-top:18px;padding-top:16px;border-top:1px solid var(--border)}.form-actions span{font-size:.8rem;color:var(--muted)}.form-submit{background:var(--purple);color:#fff;box-shadow:none}.loading-overlay[hidden]{display:none}.loading-overlay{position:fixed;inset:0;z-index:9999;display:grid;place-items:center;padding:20px;background:rgba(13,18,38,.68);backdrop-filter:blur(5px)}.loading-panel{width:min(430px,92vw);padding:28px;text-align:center;border-radius:22px;background:#fff;box-shadow:0 28px 80px rgba(0,0,0,.32)}.loading-panel h2{margin:6px 0 8px;font-size:1.35rem}.loading-panel p{margin:0;color:var(--muted)}.loading-graphic{width:180px;height:130px;margin:0 auto;color:var(--purple)}.loading-graphic svg{width:100%;height:100%;overflow:visible}.loader-charge{fill:var(--green);transform-origin:center;animation:chargeBars 1.15s ease-in-out infinite}.loader-charge.delay-one{animation-delay:.2s}.loader-bolt{fill:var(--amber);animation:boltPulse 1.15s ease-in-out infinite}.loader-pulse{animation:pulseRing 1.15s ease-out infinite;transform-origin:46px 94px}.loader-cable{stroke-dasharray:18 12;animation:cableFlow .75s linear infinite}.loading-dots{display:flex;justify-content:center;gap:7px;margin-top:18px}.loading-dots span{width:8px;height:8px;border-radius:50%;background:var(--purple);animation:dotBounce 1s ease-in-out infinite}.loading-dots span:nth-child(2){animation-delay:.14s}.loading-dots span:nth-child(3){animation-delay:.28s}.is-loading{overflow:hidden}@keyframes chargeBars{0%,100%{opacity:.25;transform:scaleY(.55)}50%{opacity:1;transform:scaleY(1)}}@keyframes boltPulse{0%,100%{opacity:.45;transform:translateY(0)}50%{opacity:1;transform:translateY(-4px)}}@keyframes pulseRing{0%{opacity:.85;transform:scale(.55)}100%{opacity:0;transform:scale(1.45)}}@keyframes cableFlow{to{stroke-dashoffset:-30}}@keyframes dotBounce{0%,100%{transform:translateY(0);opacity:.35}50%{transform:translateY(-6px);opacity:1}}@media(max-width:650px){.form-actions{align-items:flex-start;flex-direction:column}.form-submit{width:100%}}
/* v5 planner additions */
.control-grid{grid-template-columns:repeat(4,minmax(150px,1fr))}.section-heading.compact{align-items:center}.saved-indicator{font-size:.75rem;font-weight:800;color:var(--green);background:#edfbf5;border-radius:999px;padding:7px 10px}.price-alert{display:flex;gap:12px;align-items:center;justify-content:center;margin:0 0 16px;padding:14px 18px;border-radius:14px}.price-alert span{font-size:.88rem}.price-alert.negative{background:#fff0f2;border:1px solid #ffc3ca;color:#922b36}.price-alert.cheap{background:#fff8e7;border:1px solid #f7d894;color:#805100}.recommendation{padding:24px;margin:18px 0;display:flex;align-items:center;justify-content:space-between;gap:20px;border:2px solid #c8f0df;background:linear-gradient(135deg,#fff,#effcf7)}.recommendation h2{margin:5px 0 8px;font-size:clamp(1.35rem,2.8vw,2rem)}.recommendation p{margin:0;color:#475467}.eyebrow.dark{color:#08734d}.schedule-settings{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}.schedule-settings span{display:flex;flex-direction:column;background:#fff;border:1px solid #d9eee5;border-radius:12px;padding:10px 13px;min-width:115px;font-size:.86rem}.schedule-settings b{font-size:.7rem;text-transform:uppercase;color:var(--muted);margin-bottom:3px}.recommendation-copy{background:var(--green);color:#fff;box-shadow:0 8px 22px #10a76f33;white-space:nowrap}.negative-dot{background:var(--red)}.warning-note{margin-top:10px;padding:8px 10px;border-radius:9px;background:#fff4dc;color:#925d00;font-size:.76rem;font-weight:700}
@media(max-width:1100px){.control-grid{grid-template-columns:repeat(2,1fr)}.recommendation{align-items:flex-start;flex-direction:column}}
@media(max-width:650px){.control-grid{grid-template-columns:1fr}.recommendation-copy{width:100%}.price-alert{align-items:flex-start;flex-direction:column}.stats{grid-template-columns:1fr}.topbar .primary{width:100%}}
/* v6 historical pricing */
.history-card{margin-bottom:28px}.history-heading{align-items:center}.history-controls{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap}.history-controls label{font-size:.78rem;color:var(--muted);font-weight:700}.history-controls select{display:block;margin-top:6px;padding:10px 12px;border:1px solid #d0d5dd;border-radius:10px;background:#fff;color:var(--ink)}.history-status{font-size:.84rem;color:var(--muted);margin:4px 0 14px}.history-status.error{color:#922b36}.history-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:14px}.history-stat{padding:12px 14px;border-radius:12px;background:#f7f8fc;border:1px solid var(--border)}.history-stat b{display:block;font-size:1.1rem;margin-top:3px}.history-stat span{font-size:.72rem;color:var(--muted)}.history-chart-wrap{height:430px}@media(max-width:800px){.history-stats{grid-template-columns:repeat(2,1fr)}.history-controls{width:100%}.history-controls label{flex:1}.history-controls select{width:100%}}@media(max-width:500px){.history-stats{grid-template-columns:1fr}.history-chart-wrap{height:350px}}
/* v7 layout and usability improvements */
.topbar{position:sticky;top:0;z-index:120;box-shadow:0 8px 24px rgba(18,12,58,.18)}
.schedule-section{margin:20px 0 24px}.schedule-heading{align-items:center}.days{display:grid;grid-template-columns:1fr;gap:12px}.day-card{padding:0;overflow:hidden}.day-toggle{width:100%;border:0;background:#fff;color:var(--ink);display:grid;grid-template-columns:minmax(145px,1fr) 140px auto 26px;gap:12px;align-items:center;padding:16px 18px;text-align:left;cursor:pointer}.day-toggle:hover{background:#fafaff}.day-title-block,.day-toggle>span:first-child{display:flex;flex-direction:column;gap:3px}.day-toggle strong{font-size:1rem}.day-toggle small{color:var(--muted);font-size:.76rem}.toggle-icon{font-size:1.35rem;font-weight:800;text-align:center;color:var(--purple)}.day-content{padding:0 18px 18px}.day-card.collapsed .day-content{display:none}.day-card.best .day-toggle{background:linear-gradient(90deg,#effcf7,#fff)}.day-card.best{border-width:2px}.sparkline{width:120px;height:34px}.sparkline polyline{stroke:var(--purple);stroke-width:2}.day-card.best .sparkline polyline{stroke:var(--green);stroke-width:2.4}.slot{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:10px;padding:12px 14px;border:1px solid var(--border);border-left-width:6px;border-radius:12px}.slot-price-wrap{text-align:right}.price-band{display:inline-block;font-size:.65rem;font-weight:850;padding:3px 7px;border-radius:999px;margin-bottom:4px}.price-negative{border-left-color:var(--red);background:#fff4f5}.price-negative .price-band{background:#ffdce1;color:#8c1d2b}.price-very-cheap{border-left-color:#078d5b;background:#effbf6}.price-very-cheap .price-band{background:#c9f2df;color:#076e48}.price-cheap{border-left-color:#5bbe77;background:#f5fcf7}.price-cheap .price-band{background:#dff4e4;color:#26723b}.price-standard{border-left-color:#e8ae28;background:#fffaf0}.price-standard .price-band{background:#ffedbd;color:#805100}.price-expensive{border-left-color:#e26446;background:#fff6f2}.price-expensive .price-band{background:#ffddd2;color:#8f331f}.recommended-slot{outline:3px solid rgba(16,167,111,.22);box-shadow:0 5px 18px rgba(16,167,111,.12)}
.recommendation{position:sticky;top:132px;z-index:80}
.legend{max-width:620px}.legend:after{content:'Price colours: red negative · dark green under 5p · green 5–15p · amber 15–25p · orange above 25p';display:block;width:100%;margin-top:3px}
@media(max-width:800px){.topbar{position:relative}.recommendation{position:relative;top:auto}.day-toggle{grid-template-columns:1fr auto 26px}.sparkline{grid-column:1 / 2;grid-row:2;width:100%;max-width:180px}.day-toggle .badge{grid-column:2;grid-row:1}.toggle-icon{grid-column:3;grid-row:1 / 3}.slot{align-items:flex-start}.slot-price-wrap{min-width:92px}}
@media(max-width:500px){.day-toggle{padding:14px}.day-content{padding:0 14px 14px}.slot{flex-direction:column}.slot-price-wrap{text-align:left}.schedule-heading .secondary{width:100%}}

/* v9 EcoFlow API integration */
.ecoflow-connect{margin-top:1.25rem}.ecoflow-grid{display:grid;grid-template-columns:1fr 1fr auto;gap:1rem;align-items:end}.ecoflow-actions{display:flex;gap:.65rem;flex-wrap:wrap}.ecoflow-status{margin-top:1rem;padding:.9rem 1rem;border-radius:12px;background:#f4f2ff;color:#3e3470}.ecoflow-status.error{background:#fff0f1;color:#8f2432}.ecoflow-status.ok{background:#eaf8f0;color:#11633d}.telemetry-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.8rem;margin-top:1rem}.telemetry-tile{padding:1rem;border:1px solid #e7e3f7;border-radius:14px;background:#fff}.telemetry-tile span{display:block;color:#716b86;font-size:.8rem}.telemetry-tile strong{display:block;margin-top:.2rem;font-size:1.25rem}.automation-box{display:grid;gap:1rem;margin-top:1rem;padding:1rem;border:1px solid #ded8f4;border-radius:16px;background:linear-gradient(135deg,#fbfaff,#f5f2ff)}.automation-box h3{margin:0}.automation-box p{margin:.25rem 0 0}.automation-switch{font-weight:700;display:flex;gap:.55rem;align-items:center}.automation-controls{display:grid;grid-template-columns:1fr 1fr auto auto;gap:.8rem;align-items:end}.activity-log{margin-top:1rem}.activity-log pre{white-space:pre-wrap;max-height:260px;overflow:auto;background:#171329;color:#f0edff;padding:1rem;border-radius:12px}.badge.connected{background:#e7f8ef;color:#11633d}.badge.warning{background:#fff4d7;color:#7a5200}@media(max-width:900px){.ecoflow-grid,.automation-controls{grid-template-columns:1fr 1fr}.telemetry-grid{grid-template-columns:1fr 1fr}}@media(max-width:600px){.ecoflow-grid,.automation-controls,.telemetry-grid{grid-template-columns:1fr}.ecoflow-actions{display:grid}.ecoflow-actions button{width:100%}}

.secure-topbar{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:10px max(18px,calc((100vw - 1180px)/2));background:#101828;color:#fff;font-size:.9rem}.secure-topbar nav{display:flex;gap:14px}.secure-topbar a{color:#fff;text-decoration:none;font-weight:700}.secure-topbar a:hover{text-decoration:underline}@media(max-width:640px){.secure-topbar{align-items:flex-start;flex-direction:column}.secure-topbar nav{flex-wrap:wrap}}

.fixed-setting{display:flex;align-items:center;min-height:46px;margin-top:7px;padding:11px 12px;border:1px solid #d0d5dd;border-radius:10px;background:#f7f8fc;color:var(--ink);font-weight:750}.observed-charge-note{margin:14px 0 0;padding:11px 13px;border-radius:10px;background:#f4f2ff;color:#4a32b7;font-size:.82rem;font-weight:700}

/* v11 EcoFlow-style live energy interface and developer tools */
.energy-overview{margin:0 0 22px;padding:24px;border-radius:28px;color:#fff;background:radial-gradient(circle at 50% 35%,#26344c 0,#172235 40%,#0d1421 100%);box-shadow:0 24px 65px rgba(10,18,31,.24);overflow:hidden}.energy-overview-head{display:flex;justify-content:space-between;gap:18px;align-items:flex-start}.energy-overview h2{margin:3px 0 5px;font-size:clamp(1.4rem,3vw,2.2rem)}.energy-overview .eyebrow.dark{color:#7ce2c0}.energy-overview-head p:last-child{margin:0;color:#aebacc}.energy-online{padding:7px 11px;border-radius:999px;background:#313d50;color:#cbd5e1;font-size:.72rem;font-weight:900;letter-spacing:.08em}.energy-online.online{background:#123f33;color:#75edc2}.energy-online.warning{background:#5a3b12;color:#ffd98b}.energy-flow-board{display:grid;grid-template-columns:1fr minmax(40px,130px) minmax(190px,260px) minmax(40px,130px) 1fr;grid-template-rows:auto auto;align-items:center;gap:13px;margin:30px auto 22px;max-width:980px}.flow-source{text-align:center}.flow-source small,.energy-mini-grid span{display:block;color:#aebacc;font-size:.76rem}.flow-source strong{display:block;margin-top:6px;font-size:1.35rem}.flow-icon{display:grid;place-items:center;width:54px;height:54px;margin:auto;border-radius:50%;background:#25334a;font-size:1.55rem}.solar-flow{grid-column:1;grid-row:1}.home-flow{grid-column:5;grid-row:1}.grid-flow{grid-column:3;grid-row:2}.flow-line{height:3px;background:#334258;position:relative;overflow:hidden}.flow-line i{position:absolute;width:34px;height:3px;background:#5ee2b2;animation:energyPulse 1.8s linear infinite}.flow-line-left{grid-column:2;grid-row:1}.flow-line-right{grid-column:4;grid-row:1}.flow-line-right i{animation-direction:reverse}.battery-orb{--soc:0;grid-column:3;grid-row:1;text-align:center}.battery-ring{width:190px;height:190px;margin:auto;border-radius:50%;display:grid;place-content:center;background:radial-gradient(circle,#172235 55%,transparent 57%),conic-gradient(#54e5ad calc(var(--soc)*1%),#334258 0);box-shadow:0 0 45px rgba(84,229,173,.13)}.battery-ring span{font-size:3rem;font-weight:800}.battery-ring small{color:#aebacc}.battery-state{margin-top:8px;color:#79e6bf;font-weight:750}.energy-mini-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.energy-mini-grid>div{padding:13px;border-radius:14px;background:#192538;border:1px solid #2a394f}.energy-mini-grid strong{display:block;margin-top:4px}.developer-shortcut{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-top:16px;padding:14px;border:1px solid #dcd8f2;background:#faf9ff;border-radius:14px}.developer-shortcut div{display:flex;flex-direction:column}.developer-shortcut span{color:var(--muted);font-size:.8rem}.button-link{text-decoration:none;display:inline-flex;align-items:center;justify-content:center}.developer-header{padding:34px clamp(18px,5vw,72px);background:linear-gradient(130deg,#0f172a,#24324a);color:#fff;display:flex;align-items:center;justify-content:space-between;gap:20px}.developer-header h1{margin:0;font-size:clamp(2rem,5vw,3.4rem)}.developer-header p{margin:8px 0 0;color:#cbd5e1}.developer-main{max-width:1450px}.developer-toolbar{display:flex;gap:10px;flex-wrap:wrap}.developer-toolbar select{min-width:280px}.developer-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:18px;margin:18px 0}.wide-search{width:100%;margin:5px 0 12px}.property-table-wrap{max-height:620px;overflow:auto;border:1px solid var(--border);border-radius:12px}.property-table{width:100%;border-collapse:collapse;font-size:.82rem}.property-table th,.property-table td{padding:10px 12px;border-bottom:1px solid var(--border);text-align:left;vertical-align:top}.property-table th{position:sticky;top:0;background:#f8fafc}.property-table code{font-size:.75rem}.raw-json{min-height:360px;max-height:680px;overflow:auto;padding:15px;border-radius:13px;background:#101827;color:#d8e6ff;white-space:pre-wrap;word-break:break-word}.log-view{min-height:180px;max-height:360px}@keyframes energyPulse{from{left:-34px}to{left:100%}}@media(max-width:900px){.energy-flow-board{grid-template-columns:1fr 40px minmax(150px,200px) 40px 1fr}.battery-ring{width:160px;height:160px}.energy-mini-grid{grid-template-columns:1fr 1fr}.developer-grid{grid-template-columns:1fr}}@media(max-width:620px){.energy-overview{padding:18px;border-radius:20px}.energy-overview-head,.developer-header,.developer-shortcut{flex-direction:column;align-items:flex-start}.energy-flow-board{grid-template-columns:1fr 1fr;grid-template-rows:auto auto auto;gap:18px}.solar-flow{grid-column:1;grid-row:1}.home-flow{grid-column:2;grid-row:1}.battery-orb{grid-column:1/3;grid-row:2}.grid-flow{grid-column:1/3;grid-row:3}.flow-line{display:none}.energy-mini-grid{grid-template-columns:1fr 1fr}.developer-toolbar{display:grid}.developer-toolbar>*{width:100%;min-width:0!important}}

/* v11.1 recent Agile pricing */
.recent-price-days{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:16px}.recent-day{border:1px solid #e2e7ee;border-radius:16px;background:#fff;overflow:hidden}.recent-day.today{border:2px solid #5a42d1;box-shadow:0 8px 22px rgba(74,47,190,.1)}.recent-day summary{cursor:pointer;list-style:none;padding:14px 16px;display:flex;justify-content:space-between;gap:12px;align-items:center}.recent-day summary::-webkit-details-marker{display:none}.recent-day-title{display:flex;flex-direction:column;gap:3px}.recent-day-title strong{font-size:1rem}.recent-day-title span{font-size:.82rem;color:#667085}.recent-day-stats{text-align:right}.recent-day-stats strong{display:block}.recent-day-stats span{font-size:.78rem;color:#667085}.recent-slots{max-height:310px;overflow:auto;border-top:1px solid #edf0f4;padding:8px}.recent-slot{display:grid;grid-template-columns:1fr auto;gap:12px;padding:7px 8px;border-radius:8px;font-size:.84rem}.recent-slot:nth-child(even){background:#f7f8fb}.recent-slot.negative{background:#fff0f2}.recent-slot.cheap{background:#edf9f3}.recent-slot .price{font-weight:700}.recent-empty{padding:16px;color:#667085}@media(max-width:900px){.recent-price-days{grid-template-columns:1fr 1fr}}@media(max-width:620px){.recent-price-days{grid-template-columns:1fr}}

.published-price-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:16px;max-height:430px;overflow:auto}.published-price-row{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--border);border-radius:10px;background:#fff;font-size:.82rem}.published-price-row strong{font-size:.88rem}.published-price-row em{font-style:normal;font-weight:800;font-size:.68rem;text-transform:uppercase;color:#08734c}.published-price-row.selected{border-color:#0a9b68;background:#eefbf6}@media(max-width:700px){.published-price-list{grid-template-columns:1fr}}


/* v12.6 solar forecast */
.solar-actions{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.solar-forecast-controls{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:1rem;margin:1rem 0}.solar-forecast-controls label{display:grid;gap:.4rem;font-weight:700}.solar-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem;margin:1rem 0}.solar-chart-wrap{height:260px}.solar-forecast-days{display:grid;grid-template-columns:repeat(7,minmax(100px,1fr));gap:.65rem;margin-top:1rem}.solar-day{border:1px solid #e7e8ef;border-radius:14px;padding:.85rem;display:grid;gap:.25rem;background:#fafbff}.solar-day span{font-size:1.15rem;font-weight:800}.solar-day small{color:#687080}.disabled-option{opacity:.75;margin-top:.5rem}.disabled-option strong{margin-left:.35rem}.badge.warning{background:#fff4cc;color:#6d5100}@media(max-width:900px){.solar-forecast-controls,.solar-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.solar-forecast-days{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:560px){.solar-forecast-controls,.solar-summary,.solar-forecast-days{grid-template-columns:1fr}}
.version-badge{position:fixed;top:12px;right:12px;z-index:9999;padding:7px 11px;border-radius:999px;background:#111827;color:#fff;font:700 12px/1.2 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;box-shadow:0 4px 16px rgba(0,0,0,.2);letter-spacing:.02em}
@media(max-width:700px){.version-badge{top:8px;right:8px;font-size:11px;padding:6px 9px}}

.whole-home-card{overflow:hidden}.whole-home-chart-wrap{height:300px;margin-top:18px}.whole-home-card .energy-mini-grid{margin-top:16px}
/* v13.6 read-only EcoFlow Developer Console */
.explorer-controls{display:grid;grid-template-columns:1fr 1.25fr 1.2fr auto;gap:12px;align-items:end}.explorer-controls label,.compare-controls label{display:grid;gap:6px;font-size:.78rem;font-weight:800;color:#475467}.console-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:18px 0}.metric-card{margin:0}.metric-card span{display:block;color:var(--muted);font-size:.8rem}.metric-card strong{display:block;margin-top:6px;font-size:1.75rem}.compare-controls{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:12px 0}.compare-table{max-height:480px}.snapshot-table,.catalog-table{max-height:520px}.compact{padding:6px 10px;font-size:.75rem}.catalog-meta{display:block;color:var(--muted);margin-top:4px}.change-pill{display:inline-block;border-radius:999px;padding:4px 8px;font-size:.7rem;font-weight:800;background:#fff4d7;color:#7a5200}.change-pill.added{background:#e7f8ef;color:#11633d}.change-pill.removed{background:#fff0f1;color:#8f2432}.command-lock{border:1px solid #d8dce5;background:#fafbfc}.command-lock strong{color:#101828}@media(max-width:1050px){.explorer-controls{grid-template-columns:1fr 1fr}.console-summary-grid{grid-template-columns:1fr 1fr}}@media(max-width:620px){.explorer-controls,.compare-controls,.console-summary-grid{grid-template-columns:1fr}}
.strategy-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;margin:1rem 0}.strategy-grid label{display:grid;gap:.4rem;font-weight:700}.strategy-grid textarea{width:100%;font:inherit;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.warning-panel{margin:1rem 0;padding:1rem;border:1px solid #f1c46d;background:#fff8e6;border-radius:12px;color:#6f4700}.danger{background:#a92736;color:#fff;border:0;border-radius:10px;padding:.8rem 1rem;font-weight:800;cursor:pointer}.danger:disabled{opacity:.55}.command-lab{border:2px solid #e5b45b}@media(max-width:900px){.strategy-grid{grid-template-columns:1fr 1fr}}@media(max-width:600px){.strategy-grid{grid-template-columns:1fr}}
/* v13.7 Developer Edition */
.api-workbench{display:grid;grid-template-columns:210px minmax(320px,1fr) minmax(320px,1fr);gap:18px;align-items:start}.api-presets{border-right:1px solid rgba(148,163,184,.24);padding-right:14px}.api-presets h3{margin-top:0}.preset-list,.api-presets{display:flex;flex-direction:column;gap:8px}.preset-item{width:100%;text-align:left;padding:11px 12px;border-radius:10px;border:1px solid rgba(148,163,184,.25);background:rgba(15,23,42,.36);color:inherit;cursor:pointer}.preset-item.active{outline:2px solid rgba(56,189,248,.7)}.preset-item.warning{border-color:rgba(245,158,11,.55)}.api-request-panel,.api-response-panel{min-width:0}.request-row,.recorder-controls{display:flex;gap:12px;align-items:end;flex-wrap:wrap}.request-row .grow,.ecoflow-actions .grow{flex:1}.request-row label:first-child{min-width:110px}.api-request-panel textarea{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.api-response{min-height:500px;max-height:720px}.write-safety{margin:12px 0}.recorder-controls label{min-width:150px}.recorder-controls button{min-height:44px}.console-summary-grid.single{grid-template-columns:1fr 1fr}.console-summary-grid.single .metric-card{box-shadow:none;border:1px solid rgba(148,163,184,.2)}
@media(max-width:1100px){.api-workbench{grid-template-columns:1fr}.api-presets{border-right:0;border-bottom:1px solid rgba(148,163,184,.24);padding:0 0 14px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.api-presets h3{grid-column:1/-1}}
@media(max-width:650px){.api-presets{grid-template-columns:1fr}.request-row,.recorder-controls{display:grid;grid-template-columns:1fr}.console-summary-grid.single{grid-template-columns:1fr 1fr}}

.time-diagnostics{border-color:#cfe8df;background:linear-gradient(180deg,#ffffff,#f7fcfa)}.time-diagnostics-table{max-height:430px}.time-diagnostics .metric-card strong{font-size:1.12rem;line-height:1.35;word-break:break-word}.time-diagnostics .catalog-meta{margin-top:6px}
/* v13.8 Home Mini live history */
.home-mini-chart-wrap{height:280px;margin-top:14px}.compact-energy-grid strong{font-size:.95rem;word-break:break-all}.home-mini-note{margin-top:12px;padding:10px 12px;border-radius:10px;background:#f8fafc;border:1px solid var(--border)}

/* v13.9 live power-flow dashboard */
.energy-overview-v2{padding:28px 30px 22px;background:radial-gradient(circle at 45% 28%,#16283b 0,#0d1a2a 42%,#07111d 100%);border:1px solid rgba(148,163,184,.13);box-shadow:0 28px 70px rgba(2,8,23,.28)}
.energy-overview-head-v2{padding-bottom:14px;border-bottom:1px solid rgba(148,163,184,.09)}
.energy-overview-v2 h2{font-size:clamp(2rem,4vw,3rem);letter-spacing:-.03em}.energy-overview-v2 .energy-online{margin-top:0}
.hero-status-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;margin:18px 0 10px auto;max-width:690px;border:1px solid rgba(148,163,184,.17);border-radius:22px;background:rgba(15,28,45,.74);overflow:hidden}.hero-status-strip>div{display:flex;gap:10px;align-items:center;padding:13px 15px;border-right:1px solid rgba(148,163,184,.12)}.hero-status-strip>div:last-child{border-right:0}.hero-status-strip small{display:block;color:#aebacc;font-size:.68rem}.hero-status-strip strong{display:block;margin-top:2px;font-size:1rem}.status-icon{display:grid;place-items:center;flex:0 0 36px;width:36px;height:36px;border-radius:50%;background:#0c4537;color:#5df0b8;font-size:1.15rem}
.hero-power-row{display:grid;grid-template-columns:minmax(140px,1fr) minmax(40px,.35fr) minmax(190px,1.25fr) minmax(40px,.35fr) minmax(140px,1fr) minmax(40px,.35fr) minmax(160px,1.05fr);align-items:center;gap:10px;margin:28px 0 22px}.hero-power-node{display:flex;align-items:center;justify-content:center;gap:14px;min-width:0}.hero-power-node small{display:block;color:#d9e2ee;font-weight:800;letter-spacing:.04em;font-size:.78rem}.hero-power-node strong{display:block;margin:6px 0 2px;font-size:clamp(1.3rem,2.4vw,2rem);white-space:nowrap}.hero-power-node em{display:block;font-style:normal;color:#56e8ad;font-weight:700;font-size:.78rem}.hero-node-icon{display:grid;place-items:center;flex:0 0 66px;width:66px;height:66px;border-radius:50%;font-size:1.8rem;border:2px solid rgba(84,229,173,.25);background:rgba(15,44,46,.48);color:#56e8ad}.solar-icon{color:#f7c72f;border-color:rgba(247,199,47,.55);background:rgba(92,68,8,.17)}.grid-icon{color:#69a8ff;border-color:rgba(105,168,255,.5);background:rgba(17,50,89,.35)}
.hero-flow-arrow{display:flex;align-items:center;gap:5px;color:#55dfad}.hero-flow-arrow span{height:3px;flex:1;background:linear-gradient(90deg,rgba(84,229,173,.18),#54e5ad,rgba(84,229,173,.18));border-radius:20px}.hero-flow-arrow b{font-size:1.3rem}.hero-grid-arrow{color:#69a8ff}.hero-grid-arrow span{background:linear-gradient(90deg,rgba(105,168,255,.15),#69a8ff,rgba(105,168,255,.15))}
.hero-battery-wrap{text-align:center}.hero-battery-wrap .battery-ring{width:178px;height:178px}.hero-battery-wrap .battery-state{font-size:.95rem}.hero-battery-power{display:inline-block;margin-top:12px;padding:9px 22px;border:1px solid rgba(148,163,184,.18);border-radius:14px;background:rgba(19,37,57,.86)}.hero-battery-power small,.hero-battery-power span{display:block;color:#aebacc;font-size:.68rem}.hero-battery-power strong{display:block;margin:2px 0;color:#58e5ae;font-size:1.15rem}
.hero-daily-strip{display:grid;grid-template-columns:repeat(5,1fr);margin:18px 0;border:1px solid rgba(148,163,184,.14);border-radius:17px;background:rgba(12,25,41,.72);overflow:hidden}.hero-daily-strip>div{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:9px;padding:14px 18px;border-right:1px solid rgba(148,163,184,.13)}.hero-daily-strip>div:last-child{border-right:0}.hero-daily-strip>div>span{grid-row:1/3;align-self:center;font-size:1.35rem;color:#55e1ad}.hero-daily-strip small{color:#c9d4e2}.hero-daily-strip strong{margin-top:3px;color:#58e5ae;font-size:1.05rem}
.hero-detail-grid{display:grid;grid-template-columns:.85fr 1.12fr .97fr;gap:14px}.hero-detail-card{min-height:270px;padding:18px 20px;border:1px solid rgba(148,163,184,.15);border-radius:16px;background:rgba(12,27,44,.78)}.hero-detail-card h3{margin:0 0 17px;color:#56e5ae;font-size:.83rem;letter-spacing:.04em}.power-list,.battery-status-list{margin:0}.power-list div,.battery-status-list div{display:flex;justify-content:space-between;gap:15px;padding:7px 0}.power-list dt,.battery-status-list dt{color:#e3eaf3}.power-list dd,.battery-status-list dd{margin:0;font-weight:800;color:#58e5ae;text-align:right}.flow-explanation{margin-top:15px;padding-top:14px;border-top:1px solid rgba(148,163,184,.12)}.flow-explanation small{color:#b5c0ce}.flow-explanation p{margin:6px 0 0;color:#cdd7e4;line-height:1.5}
.mini-flow-diagram{position:relative;display:grid;grid-template-columns:1fr 1fr 1fr;grid-template-rows:95px 120px;align-items:center;justify-items:center;gap:7px;min-height:220px}.mini-node{z-index:2;min-width:100px;padding:10px 14px;text-align:center;border:1px solid rgba(148,163,184,.18);border-radius:13px;background:#102037}.mini-node span{font-size:1.25rem}.mini-node small{display:block;color:#b9c4d1}.mini-node strong{display:block;margin-top:4px}.mini-node em{display:block;color:#59e5ae;font-style:normal;margin-top:3px}.mini-solar{grid-column:2;grid-row:1}.mini-home{grid-column:1;grid-row:2}.mini-battery{grid-column:2;grid-row:2}.mini-grid{grid-column:3;grid-row:2}.mini-line{position:absolute;background:#45d9a4;opacity:.7}.mini-line.vertical{width:3px;height:58px;left:50%;top:67px}.mini-line.horizontal{height:3px;width:65%;left:17.5%;top:153px}.mini-flow-note{text-align:center;color:#aebacc;font-size:.72rem;margin:6px 0 0;padding-top:8px;border-top:1px solid rgba(148,163,184,.1)}
.soc-bar{position:relative;margin-top:18px;padding-top:25px}.soc-bar>span{position:absolute;top:0;color:#aebacc;font-size:.68rem}.soc-bar>span:nth-child(2){right:0}.soc-bar i{display:block;height:13px;background:#1e3046;border-radius:20px;overflow:hidden}.soc-bar b{display:block;width:0;height:100%;background:linear-gradient(90deg,#32cb91,#63e5ac);border-radius:20px;transition:width .5s ease}
.hero-source-footer{display:flex;justify-content:space-between;gap:15px;margin-top:16px;padding-top:14px;border-top:1px solid rgba(148,163,184,.13);color:#aebacc;font-size:.74rem}
@media(max-width:1100px){.hero-power-row{grid-template-columns:1fr 45px 1.15fr 45px 1fr}.hero-grid-arrow{display:none}.hero-grid-node{grid-column:1/6;margin-top:10px}.hero-detail-grid{grid-template-columns:1fr 1fr}.hero-detail-card:last-child{grid-column:1/3}.hero-daily-strip{grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){.hero-status-strip{grid-template-columns:1fr 1fr;max-width:none}.hero-status-strip>div:nth-child(2){border-right:0}.hero-power-row{grid-template-columns:1fr 1fr;gap:20px}.hero-flow-arrow{display:none}.hero-battery-wrap{grid-column:1/3;grid-row:2}.hero-solar-node{grid-column:1;grid-row:1}.hero-home-node{grid-column:2;grid-row:1}.hero-grid-node{grid-column:1/3;grid-row:3}.hero-daily-strip{grid-template-columns:1fr 1fr}.hero-detail-grid{grid-template-columns:1fr}.hero-detail-card:last-child{grid-column:auto}.hero-source-footer{flex-direction:column}.hero-node-icon{width:56px;height:56px;flex-basis:56px}}

/* v13.12.4 full-screen wall / tablet home dashboard */
.energy-wall-page{background:#07111d;color:#eef6ff;min-height:100vh;min-height:100dvh;overflow-x:hidden;padding-bottom:54px}
.energy-wall-main{width:100%;max-width:none;margin:0;padding:0;min-height:calc(100vh - 54px);min-height:calc(100dvh - 54px);background:#07111d}
.energy-wall-page .energy-wall-card{width:100%;min-height:calc(100vh - 54px);min-height:calc(100dvh - 54px);margin:0;border:0;border-radius:0;box-shadow:none;padding:clamp(18px,2.3vw,34px) clamp(18px,3vw,48px) clamp(18px,2vw,30px);display:flex;flex-direction:column;justify-content:space-between}
.energy-wall-page .energy-overview-head-v2{padding-bottom:clamp(8px,1vh,14px)}
.energy-wall-page .energy-overview-v2 h2{font-size:clamp(2rem,3.1vw,3.35rem);margin:.18em 0}
.energy-wall-page .hero-status-strip{margin:clamp(8px,1.2vh,18px) 0 clamp(4px,.8vh,10px) auto}
.energy-wall-page .hero-power-row{margin:clamp(12px,2vh,28px) 0 clamp(10px,1.7vh,22px)}
.energy-wall-page .hero-daily-strip{margin:clamp(8px,1.4vh,18px) 0}
.energy-wall-page .hero-detail-card{min-height:clamp(190px,25vh,270px);padding:clamp(13px,1.5vw,20px)}
.energy-wall-page .hero-detail-card h3{margin-bottom:clamp(8px,1.3vh,17px)}
.energy-wall-page .mini-flow-diagram{min-height:clamp(170px,21vh,220px);grid-template-rows:clamp(70px,9vh,95px) clamp(92px,12vh,120px)}
.energy-wall-page .hero-source-footer{margin-top:clamp(8px,1.2vh,16px);padding-top:clamp(8px,1vh,14px)}
.wall-helper-elements{display:none!important}
.wall-bottom-nav{position:fixed;z-index:500;left:0;right:0;bottom:0;min-height:54px;padding:8px max(14px,env(safe-area-inset-right)) calc(8px + env(safe-area-inset-bottom)) max(14px,env(safe-area-inset-left));display:flex;align-items:center;gap:18px;background:rgba(5,14,25,.96);border-top:1px solid rgba(148,163,184,.18);box-shadow:0 -8px 30px rgba(0,0,0,.26);backdrop-filter:blur(14px);color:#aebacc;font-size:.78rem;white-space:nowrap}
.wall-bottom-nav nav{display:flex;align-items:center;gap:6px;min-width:0;flex:1;overflow-x:auto;scrollbar-width:none}.wall-bottom-nav nav::-webkit-scrollbar{display:none}
.wall-bottom-nav a{color:#c8d4e3;text-decoration:none;font-weight:750;padding:7px 9px;border-radius:8px}.wall-bottom-nav a:hover,.wall-bottom-nav a.active{color:#fff;background:rgba(84,229,173,.12)}
.wall-secure{display:flex;align-items:center;gap:7px;color:#5de7b3;font-weight:800}.wall-secure i{width:8px;height:8px;border-radius:50%;background:#48dea6;box-shadow:0 0 0 4px rgba(72,222,166,.12)}
.wall-version{margin-left:auto;color:#8291a4;font-weight:700}
@media(max-height:820px) and (min-width:900px){
 .energy-wall-page .energy-wall-card{padding-top:18px;padding-bottom:16px}
 .energy-wall-page .energy-overview-v2 h2{font-size:clamp(1.85rem,2.8vw,2.8rem)}
 .energy-wall-page .hero-status-strip>div{padding:9px 12px}.energy-wall-page .status-icon{width:31px;height:31px;flex-basis:31px}
 .energy-wall-page .hero-power-row{margin:10px 0}.energy-wall-page .hero-battery-wrap .battery-ring{width:142px;height:142px}
 .energy-wall-page .hero-node-icon{width:55px;height:55px;flex-basis:55px}
 .energy-wall-page .hero-battery-power{margin-top:7px;padding:6px 18px}
 .energy-wall-page .hero-daily-strip>div{padding:9px 14px}
 .energy-wall-page .hero-detail-card{min-height:180px;padding:12px 16px}.energy-wall-page .power-list div,.energy-wall-page .battery-status-list div{padding:4px 0}
 .energy-wall-page .mini-flow-diagram{min-height:160px;grid-template-rows:66px 92px}.energy-wall-page .mini-line.vertical{height:42px;top:54px}.energy-wall-page .mini-line.horizontal{top:122px}
 .energy-wall-page .hero-source-footer{margin-top:7px;padding-top:7px}
}
@media(max-width:760px){
 .energy-wall-page{padding-bottom:60px}.energy-wall-main,.energy-wall-page .energy-wall-card{min-height:calc(100dvh - 60px)}
 .energy-wall-page .energy-wall-card{justify-content:flex-start;padding:18px 16px 22px}
 .wall-bottom-nav{min-height:60px;gap:10px;font-size:.72rem}.wall-secure{display:none}.wall-version{padding-left:5px}
 .energy-wall-page .hero-status-strip{margin-top:10px}
}


/* v13.12.4 wall dashboard controls */
.wall-fullscreen-btn{appearance:none;border:1px solid rgba(84,229,173,.25);background:rgba(84,229,173,.10);color:#dfffee;font:inherit;font-weight:800;padding:7px 10px;border-radius:8px;cursor:pointer;white-space:nowrap}
.wall-fullscreen-btn:hover,.wall-fullscreen-btn[aria-pressed="true"]{background:rgba(84,229,173,.20);color:#fff;border-color:rgba(84,229,173,.45)}
:fullscreen .energy-wall-page{width:100vw;height:100vh;overflow:hidden}
:fullscreen .energy-wall-main,:fullscreen .energy-wall-card{min-height:calc(100vh - 54px)}
@media(max-width:720px){.wall-fullscreen-btn{padding:7px 8px}.wall-bottom-nav nav{gap:3px}}

/* v13.12.4 immersive fullscreen wall mode */
:fullscreen .hero-source-footer,
:fullscreen .wall-bottom-nav {
  display:none !important;
}
:fullscreen .energy-wall-page,
:fullscreen body {
  padding-bottom:0 !important;
}
:fullscreen .energy-wall-main,
:fullscreen .energy-wall-card {
  min-height:100vh !important;
  height:100vh;
}
:fullscreen .energy-wall-card {
  padding-bottom:clamp(12px,1.5vh,20px);
}
/* CoreHome Dashboard v13.15.0 */
.corehome-page{margin:0;background:#06111d;color:#eef5ff;font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif;min-height:100vh}.ch-header{height:96px;display:flex;align-items:center;justify-content:space-between;padding:0 24px;border-bottom:1px solid #1d3044;background:#06111d}.ch-brand{display:flex;gap:16px;align-items:center}.ch-logo{font-size:50px;color:#62dc50;position:relative}.ch-logo b{font-size:22px}.ch-brand h1{margin:0;font-size:32px}.ch-brand h1 em{font-style:normal;color:#79dc49}.ch-brand p{margin:3px 0;color:#b9c5d4}.ch-head-status{display:flex;gap:12px}.ch-head-status>div{border:1px solid #203449;border-radius:12px;padding:10px 18px;min-width:120px}.ch-head-status b,.ch-head-status small{display:block}.ch-dot{display:inline-block;width:10px;height:10px;background:#42d67d;border-radius:50%;margin-right:6px}.ch-shell{display:grid;grid-template-columns:205px 1fr;min-height:calc(100vh - 136px)}.ch-side{border-right:1px solid #1d3044;padding:14px;display:flex;flex-direction:column}.ch-side nav{display:grid;gap:7px}.ch-side a{color:#e5edf6;text-decoration:none;padding:14px 12px;border-radius:8px;font-weight:600}.ch-side a.active,.ch-side a:hover{background:#102b36;color:#68e69a}.ch-side a span{margin-left:10px}.ch-version{margin-top:auto;border:1px solid #203449;border-radius:10px;padding:14px;font-size:12px;line-height:1.8;color:#aebccc}.ch-main{padding:12px 14px 18px;overflow:hidden}.ch-kpis{display:grid;grid-template-columns:repeat(5,1fr);gap:10px}.ch-kpis article,.ch-card{border:1px solid #203449;background:#091827;border-radius:10px;box-shadow:0 6px 22px #0002}.ch-kpis article{min-height:88px;padding:14px;display:grid;grid-template-columns:46px 1fr;grid-template-rows:auto auto auto}.ch-kpis span{grid-row:1/4;font-size:34px;align-self:center}.ch-kpis small{color:#c7d2df}.ch-kpis strong{font-size:24px}.ch-kpis em{font-style:normal;font-size:12px;color:#9fb0c1}.cyan{color:#31c9ff}.green{color:#52dc65}.yellow{color:#ffd331}.purple{color:#a867ff}.blue{color:#5aa7ff}.ch-grid{display:grid;gap:10px;margin-top:10px}.ch-grid.top{grid-template-columns:1.3fr 1.05fr .9fr}.ch-grid.bottom{grid-template-columns:1fr 1fr 1fr}.ch-card{padding:16px;min-height:280px}.ch-card h2{font-size:14px;margin:0 0 18px}.ch-card h2 small{float:right;color:#9fb0c1;font-weight:400}.ch-flow{display:flex;align-items:center;justify-content:space-around;margin:30px 10px}.ch-flow>div{text-align:center;display:grid;gap:5px}.ch-flow .big{font-size:40px}.ch-flow .home{border:2px solid #24aaff;border-radius:50%;padding:18px}.ch-flow i{font-size:30px;color:#49df8a}.ch-battery-flow{display:flex;justify-content:center;gap:45px;text-align:center}.ch-battery-flow>div{border:1px solid #29445e;border-radius:50px;padding:10px 24px}.ch-battery-flow strong,.ch-battery-flow small,.ch-battery-flow b{display:block}.future{opacity:.48}.battery-cols{display:grid;grid-template-columns:1fr 1fr;gap:16px}.battery-cols>div+div{border-left:1px solid #203449;padding-left:16px}.battery-cols h3{font-size:13px;color:#37c8ff}.battery-pic{font-size:60px;color:#77879a}.battery-cols>div>strong{font-size:28px;color:#43dff0}.battery-cols dl,.today dl,.optimiser dl{margin:10px 0}.battery-cols dl div,.today dl div,.optimiser dl div{display:flex;justify-content:space-between;padding:5px 0}.battery-cols dd,.today dd,.optimiser dd{margin:0}.solar{text-align:center}.solar>strong{font-size:30px;color:#67e34e}.solar-bars{height:130px;display:flex;gap:5px;align-items:flex-end;border-bottom:1px solid #30445a;margin:14px}.solar-bars i{flex:1;background:#54d940;min-height:4px}.solar-bars i:nth-child(2){height:12%}.solar-bars i:nth-child(3){height:25%}.solar-bars i:nth-child(4){height:43%}.solar-bars i:nth-child(5){height:61%}.solar-bars i:nth-child(6){height:78%}.solar-bars i:nth-child(7){height:92%}.solar-bars i:nth-child(8){height:70%}.solar-bars i:nth-child(9){height:52%}.solar-bars i:nth-child(10){height:34%}.solar-bars i:nth-child(11){height:17%}.agile>strong{display:block;font-size:27px;color:#79dc49;margin:8px 0}.agile>b{display:block;color:#79dc49;margin:8px 0}.price-chart{height:70px;border-bottom:1px solid #30445a;margin-top:12px;background:linear-gradient(170deg,transparent 0 45%,#9c62ff 46% 48%,transparent 49% 100%)}.optimiser h2 span{float:right;color:#52dc65}.optimiser>strong{display:block;color:#39bdf8;font-size:22px;margin:10px 0}.optimiser>a{display:block;color:white;text-decoration:none;background:#13273a;border:1px solid #29445e;border-radius:6px;padding:10px;margin-top:15px}.today .saving{display:block;color:#6ee54d;font-size:20px;border-top:1px solid #203449;padding-top:15px}.ch-footer{height:38px;border-top:1px solid #203449;display:flex;justify-content:space-between;align-items:center;padding:0 18px;font-size:12px;background:#050e18}.ch-footer a{color:#cfe3f5}.ch-footer button{background:#102b36;color:#fff;border:1px solid #31566d;border-radius:5px;padding:4px 8px}.wall-helper-elements{display:none!important}@media(max-width:1100px){.ch-shell{grid-template-columns:70px 1fr}.ch-side a span,.ch-version{display:none}.ch-kpis{grid-template-columns:repeat(3,1fr)}.ch-grid.top,.ch-grid.bottom{grid-template-columns:1fr 1fr}.ch-brand h1{font-size:25px}}@media(max-width:760px){.ch-header{height:auto;padding:12px}.ch-brand p,.ch-head-status{display:none}.ch-shell{display:block}.ch-side{display:none}.ch-kpis,.ch-grid.top,.ch-grid.bottom{grid-template-columns:1fr}.ch-main{overflow:auto}.ch-footer{position:static}.ch-brand h1{font-size:21px}}


/* ============================================================
   CoreHome Energy Dashboard v13.15.0 — premium overview
   ============================================================ */
.corehome-v2{
  --bg:#06111d;--panel:#091827;--panel2:#0b1c2d;--line:#1b3349;
  --text:#f4f8fc;--muted:#8fa3b9;--green:#49e39f;--lime:#83e253;
  --cyan:#28baf6;--blue:#579fff;--yellow:#ffd02f;--purple:#a665ff;
  margin:0;background:radial-gradient(circle at 70% 15%,#102b3d 0,#071725 28%,#06111d 64%);
  color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  min-height:100vh;overflow-x:hidden;
}
.corehome-v2 *{box-sizing:border-box}
.corehome-v2 .ch2-svg{width:24px;height:24px;display:block}
.ch2-app{min-height:100vh;display:grid;grid-template-columns:214px minmax(0,1fr)}
.ch2-sidebar{
  position:sticky;top:0;height:100vh;border-right:1px solid rgba(98,138,172,.22);
  background:linear-gradient(180deg,rgba(5,17,29,.98),rgba(4,14,24,.96));padding:24px 14px 14px;
  display:flex;flex-direction:column;z-index:20;box-shadow:14px 0 40px rgba(0,0,0,.12)
}
.ch2-brand{display:flex;align-items:center;gap:11px;padding:0 7px 24px;border-bottom:1px solid rgba(91,128,158,.15)}
.ch2-brandmark{width:50px;height:50px;color:#73de52;filter:drop-shadow(0 0 14px rgba(115,222,82,.12))}
.ch2-brandmark svg{width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:3;stroke-linejoin:round}
.ch2-brandmark .bolt{fill:#73de52;stroke:none}
.ch2-brandname{font-size:20px;line-height:1}.ch2-brandname b{color:#83df53}.ch2-brand span{font-size:11px;color:#9cafc3}
.ch2-nav{display:flex;flex-direction:column;gap:6px;margin-top:20px}
.ch2-nav a{display:flex;gap:12px;align-items:center;min-height:48px;padding:0 12px;border:1px solid transparent;border-radius:10px;color:#d7e3ee;text-decoration:none;font-weight:600;font-size:14px;transition:.2s ease}
.ch2-nav a .ch2-svg{width:22px;height:22px;color:#9eb3c6}
.ch2-nav a:hover{background:#0d2537;border-color:#1e435e;color:#fff}
.ch2-nav a.active{background:linear-gradient(90deg,rgba(33,188,125,.20),rgba(24,96,102,.16));border-color:rgba(63,208,150,.15);color:#fff}
.ch2-nav a.active .ch2-svg{color:#50e49c}
.ch2-version{margin-top:auto;border:1px solid rgba(82,123,155,.28);border-radius:12px;padding:13px 14px;background:rgba(10,31,48,.58);display:grid;gap:5px}
.ch2-version span,.ch2-version small{font-size:10px;color:#8da2b8}.ch2-version strong{font-size:13px;color:#e7f0f8}

.ch2-stage{min-width:0;display:flex;flex-direction:column;min-height:100vh}
.ch2-topbar{min-height:98px;padding:20px 28px 14px;display:flex;justify-content:space-between;gap:22px;align-items:flex-start;border-bottom:1px solid rgba(88,126,158,.14)}
.ch2-eyebrow{margin:0 0 5px;font-size:10px;letter-spacing:.16em;font-weight:800;color:#62e5bd}
.ch2-topbar h1{font-size:34px;line-height:1.06;margin:0;font-weight:800;letter-spacing:-.035em}
.ch2-topbar h1>span{font-weight:700;color:#e9eff5}.ch2-topbar h1:first-letter{}
.ch2-topbar h1{color:#7ddd4e}.ch2-topbar h1 span{color:#f5f8fb}
.ch2-subtitle{margin:7px 0 0;color:#9bacbd;font-size:13px}
.ch2-topstatus{display:flex;gap:10px}
.ch2-timecard,.ch2-systemcard{min-width:132px;padding:10px 14px;border:1px solid rgba(91,132,165,.28);background:rgba(8,25,40,.62);border-radius:13px;box-shadow:0 10px 26px rgba(0,0,0,.12)}
.ch2-timecard span,.ch2-systemcard span{display:block;color:#9fb1c2;font-size:10px}.ch2-timecard strong,.ch2-systemcard strong{display:block;margin-top:3px;font-size:17px}
.ch2-statusdot{display:inline-block!important;width:8px;height:8px;border-radius:50%;background:#42dc83;box-shadow:0 0 11px rgba(66,220,131,.55);margin-right:6px}

.ch2-main{padding:14px 18px 18px;flex:1;min-width:0}
.ch2-kpis{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}
.ch2-kpi{min-height:102px;border:1px solid rgba(87,127,158,.30);border-radius:12px;padding:15px 15px;background:linear-gradient(145deg,rgba(12,31,48,.96),rgba(7,23,37,.95));display:flex;align-items:center;gap:13px;box-shadow:0 12px 26px rgba(0,0,0,.10)}
.ch2-kpiicon{width:48px;height:48px;border-radius:14px;display:grid;place-items:center;background:rgba(255,255,255,.035);flex:0 0 auto}
.ch2-kpiicon .ch2-svg{width:30px;height:30px}
.ch2-kpi.cyan .ch2-kpiicon{color:var(--cyan);box-shadow:inset 0 0 0 1px rgba(40,186,246,.16)}
.ch2-kpi.green .ch2-kpiicon{color:var(--green);box-shadow:inset 0 0 0 1px rgba(73,227,159,.16)}
.ch2-kpi.yellow .ch2-kpiicon{color:var(--yellow);box-shadow:inset 0 0 0 1px rgba(255,208,47,.16)}
.ch2-kpi.purple .ch2-kpiicon{color:var(--purple);box-shadow:inset 0 0 0 1px rgba(166,101,255,.16)}
.ch2-kpi.lime .ch2-kpiicon{color:var(--lime);box-shadow:inset 0 0 0 1px rgba(131,226,83,.16)}
.ch2-kpi span{display:block;font-size:9px;font-weight:800;letter-spacing:.06em;color:#a8bac9}
.ch2-kpi strong{display:block;margin:4px 0 2px;font-size:22px;line-height:1.05;color:#fff;white-space:nowrap}
.ch2-kpi small{display:block;font-size:10px;color:#8297aa;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.ch2-card{border:1px solid rgba(89,131,163,.28);background:linear-gradient(145deg,rgba(10,29,46,.98),rgba(7,22,35,.98));border-radius:13px;padding:16px;box-shadow:0 14px 32px rgba(0,0,0,.12);min-width:0}
.ch2-cardhead{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:8px}
.ch2-cardhead h2{font-size:14px;margin:3px 0 0;letter-spacing:.01em;color:#f3f7fb}.ch2-cardhead>small{font-size:10px;color:#8399ad;margin-top:5px}
.ch2-sectiontag{display:inline-block;font-size:8px;font-weight:900;letter-spacing:.12em;color:#5ee2bd}.ch2-sectiontag.purpletag{color:#ad77ff}.ch2-sectiontag.greentag{color:#5fe59f}.ch2-sectiontag.bluetag{color:#5bb9ff}

.ch2-primary-grid{display:grid;grid-template-columns:1.38fr 1.08fr .94fr;gap:10px;margin-top:10px;align-items:stretch}
.ch2-flow-card,.ch2-battery-card,.ch2-solar-card{min-height:380px}
.ch2-flowcanvas{height:298px;position:relative;overflow:hidden}
.ch2-flowlines{position:absolute;inset:0;width:100%;height:100%;z-index:0}
.ch2-flowlines .line{fill:none;stroke:url(#flowGreen);stroke-width:4;stroke-linecap:round;stroke-dasharray:12 10;animation:ch2dash 1.15s linear infinite;opacity:.88}
.ch2-flowlines .gridLine{stroke:url(#flowBlue)}.ch2-flowlines .mutedLine{opacity:.18}
@keyframes ch2dash{to{stroke-dashoffset:-44}}
.ch2-node{position:absolute;z-index:2;text-align:center;display:grid;justify-items:center;gap:2px}
.ch2-node .nodeicon{width:58px;height:58px;border-radius:50%;display:grid;place-items:center;background:#0b2031;border:2px solid currentColor;box-shadow:0 0 28px rgba(60,185,240,.08)}
.ch2-node .nodeicon .ch2-svg{width:30px;height:30px}
.nodeicon.yellow{color:var(--yellow)}.nodeicon.cyan{color:var(--cyan)}.nodeicon.blue{color:var(--blue)}
.ch2-node span,.ch2-device-node span{font-size:9px;font-weight:800;letter-spacing:.07em;color:#d2dce5}
.ch2-node strong{font-size:18px;margin-top:2px}.ch2-node small{font-size:9px;color:#7f96a9}
.solar-node{left:7%;top:14%}.grid-node{right:7%;top:14%}.home-node{left:50%;top:31%;transform:translateX(-50%)}
.ch2-node.main-node .nodeicon{width:76px;height:76px}.ch2-node.main-node .nodeicon .ch2-svg{width:36px;height:36px}.ch2-node.main-node strong{font-size:20px}
.ch2-device-node{position:absolute;z-index:2;bottom:6%;display:flex;align-items:center;gap:10px}.max-device{left:22%}.ultra-device{right:16%}
.ch2-device-node>div:last-child{display:grid;gap:2px}.ch2-device-node strong{font-size:18px}.ch2-device-node small{font-size:9px;color:#88a0b4}
.ch2-device-node.future{opacity:.42}
.ch2-device-art{position:relative;width:40px;height:66px;border-radius:7px;background:linear-gradient(105deg,#26313c 0,#111a24 32%,#35434e 66%,#151e27 100%);border:1px solid #43515d;box-shadow:inset 7px 0 12px rgba(255,255,255,.03),0 9px 18px rgba(0,0,0,.25)}
.ch2-device-art:after{content:"";position:absolute;right:6px;top:8px;width:3px;height:3px;border-radius:50%;background:#39b8ff;box-shadow:0 0 8px #39b8ff}
.ch2-device-art i{position:absolute;left:7px;right:7px;height:1px;background:rgba(255,255,255,.10)}.ch2-device-art i:nth-child(1){top:22%}.ch2-device-art i:nth-child(2){top:50%}.ch2-device-art i:nth-child(3){top:78%}
.ch2-device-art.ultra-art{background:linear-gradient(105deg,#3a3c3c,#171b1d 33%,#555858 66%,#202426)}
.ch2-device-art.large{width:58px;height:100px;border-radius:10px}
.ch2-flowcaption{height:38px;border-top:1px solid rgba(77,117,148,.18);display:flex;align-items:center;color:#9bb0c2;font-size:10px;padding:8px 4px 0}

.ch2-battery-columns{display:grid;grid-template-columns:1fr 1fr;gap:15px;height:315px}
.ch2-battery-device+ .ch2-battery-device{border-left:1px solid rgba(78,116,146,.22);padding-left:15px}
.ch2-battery-device header{display:flex;justify-content:space-between;gap:8px;align-items:center}.ch2-battery-device header span{font-size:10px;font-weight:800;color:#38bdf7}.ch2-battery-device.ultra header span{color:#70df4e}.ch2-battery-device header small{font-size:8px;color:#6d8498}
.ch2-battery-hero{display:flex;align-items:center;justify-content:center;gap:18px;height:125px}.ch2-battery-hero strong{font-size:31px;color:#36bdf6}.ch2-battery-device.ultra .ch2-battery-hero strong{color:#72dc4d}.ch2-battery-hero small{display:block;font-size:9px;color:#8297ab}
.ch2-progress{height:6px;background:#162a3c;border-radius:999px;overflow:hidden;margin:3px 0 13px}.ch2-progress b{height:100%;display:block;width:0;background:linear-gradient(90deg,#28baf6,#5bd1ff);border-radius:inherit;transition:width .5s ease}.ch2-battery-device.ultra .ch2-progress b{background:#72dc4d}
.ch2-battery-device dl{margin:0}.ch2-battery-device dl div{display:flex;justify-content:space-between;padding:4px 0;font-size:10px}.ch2-battery-device dt{color:#a1b2c1}.ch2-battery-device dd{margin:0;color:#edf5fb;font-weight:700}.ch2-futurecopy{font-size:10px;line-height:1.45;color:#859aad;margin:9px 0}
.future{opacity:.48}

.ch2-solar-card{text-align:center}.ch2-solar-total{margin:14px 0 7px}.ch2-solar-total strong{display:block;font-size:30px;color:#77e04f}.ch2-solar-total span{font-size:10px;color:#94a7b8}
.ch2-solar-chart{height:200px;margin-top:4px;border-left:1px solid rgba(102,139,168,.18);border-bottom:1px solid rgba(102,139,168,.24);position:relative;background:linear-gradient(rgba(71,111,143,.07) 1px,transparent 1px);background-size:100% 33%}
.ch2-solar-chart .empty{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#7290a5;gap:5px}.ch2-solar-chart .empty span{color:#ffd02f}.ch2-solar-chart .empty .ch2-svg{width:32px;height:32px}.ch2-solar-chart .empty b{font-size:11px;color:#b7c7d4}.ch2-solar-chart .empty small{font-size:9px;max-width:210px;line-height:1.4}
.ch2-chartaxis{display:flex;justify-content:space-between;margin-top:8px;font-size:8px;color:#70879a}

.ch2-secondary-grid{display:grid;grid-template-columns:1.12fr .95fr .88fr;gap:10px;margin-top:10px}
.ch2-secondary-grid>.ch2-card{min-height:300px}
.ch2-agile-layout{display:grid;grid-template-columns:140px minmax(0,1fr);gap:14px;height:230px}.ch2-price-summary{padding-top:9px}.ch2-price-summary>span{display:block;font-size:9px;color:#96a9b9}.ch2-price-summary>strong{display:block;font-size:26px;color:#83e253;margin:5px 0}.ch2-price-summary>small{font-size:9px;color:#879caf}.ch2-price-summary hr{border:0;border-top:1px solid rgba(83,122,153,.19);margin:17px 0 12px}.ch2-price-summary>b{display:block;color:#83e253;font-size:17px;margin:4px 0}
.ch2-pricegraph{position:relative;min-width:0}.ch2-pricegraph svg{width:100%;height:200px;overflow:visible}.ch2-pricegraph .grid line{stroke:rgba(115,146,172,.12);stroke-width:1}.priceLine{fill:none;stroke:#a868ff;stroke-width:3;vector-effect:non-scaling-stroke;filter:drop-shadow(0 0 6px rgba(168,104,255,.28))}.priceForecast{fill:none;stroke:#b98cff;stroke-width:2;stroke-dasharray:7 6;vector-effect:non-scaling-stroke;opacity:.75}.ch2-priceaxis{position:absolute;left:0;right:0;bottom:0;display:flex;justify-content:space-between;font-size:8px;color:#70879a}

.ch2-mutedlabel{font-size:9px;color:#8397a9}.ch2-opt-action{display:block;font-size:20px;color:#31baf5;margin:7px 0}.ch2-optimiser-card>p{font-size:11px;color:#c3d0dc;line-height:1.5;min-height:48px}.ch2-optimiser-card dl{margin:10px 0}.ch2-optimiser-card dl div{display:flex;justify-content:space-between;padding:4px 0;font-size:10px}.ch2-optimiser-card dt{color:#96a9ba}.ch2-optimiser-card dd{margin:0;font-weight:700}.ch2-detailbutton{margin-top:12px;border:1px solid rgba(89,132,165,.28);border-radius:8px;background:#10283a;color:#fff;text-decoration:none;padding:10px 12px;display:flex;justify-content:space-between;font-size:10px}

.ch2-today-card dl{margin:4px 0}.ch2-today-card dl div{display:flex;justify-content:space-between;align-items:center;padding:6px 0;border-bottom:1px solid rgba(73,111,143,.10);font-size:10px}.ch2-today-card dt{display:flex;align-items:center;gap:7px;color:#b5c3cf}.ch2-today-card dt .ch2-svg{width:14px;height:14px;color:#73db50}.ch2-today-card dd{margin:0;font-weight:700}.ch2-saving{margin-top:12px;padding-top:10px;border-top:1px solid rgba(83,122,154,.24);display:flex;justify-content:space-between;align-items:center}.ch2-saving span{font-size:9px;color:#93a8b8}.ch2-saving strong{font-size:18px;color:#78df4e}

.ch2-footer{min-height:38px;border-top:1px solid rgba(91,130,160,.20);background:rgba(4,14,24,.96);display:flex;justify-content:space-between;align-items:center;gap:12px;padding:7px 18px;color:#7890a4;font-size:9px}.ch2-footer>span{display:flex;align-items:center;gap:7px}.ch2-footer a{color:#c6d5df;text-decoration:none}.ch2-footer button{border:1px solid #27516a;background:#0c2734;color:#fff;border-radius:6px;padding:4px 8px;font-size:9px}
.wall-helper-elements{display:none!important}

@media(max-width:1350px){
  .ch2-app{grid-template-columns:184px minmax(0,1fr)}.ch2-brandname{font-size:18px}.ch2-kpi{padding:12px 10px;gap:9px}.ch2-kpiicon{width:42px;height:42px}.ch2-kpi strong{font-size:19px}.ch2-primary-grid{grid-template-columns:1.25fr 1fr .9fr}.ch2-device-node.ultra-device{right:11%}.ch2-main{padding-left:12px;padding-right:12px}
}
@media(max-width:1100px){
  .ch2-app{grid-template-columns:72px minmax(0,1fr)}.ch2-sidebar{padding:16px 9px}.ch2-brand{justify-content:center;padding:0 0 16px}.ch2-brand>div:last-child,.ch2-nav a span,.ch2-version{display:none}.ch2-nav a{justify-content:center;padding:0}.ch2-topbar{padding-left:18px;padding-right:18px}.ch2-kpis{grid-template-columns:repeat(3,1fr)}.ch2-primary-grid{grid-template-columns:1.25fr 1fr}.ch2-solar-card{grid-column:1/-1;min-height:320px}.ch2-secondary-grid{grid-template-columns:1fr 1fr}.ch2-today-card{grid-column:1/-1}.ch2-solar-chart{height:145px}
}
@media(max-width:760px){
  .corehome-v2{overflow:auto}.ch2-app{display:block}.ch2-sidebar{position:static;width:100%;height:auto;display:block;padding:10px}.ch2-brand{justify-content:flex-start;border:0;padding:3px 5px}.ch2-brand>div:last-child{display:block}.ch2-nav{display:flex;flex-direction:row;overflow-x:auto;margin-top:8px;padding-bottom:5px}.ch2-nav a{min-width:48px;flex:0 0 auto}.ch2-topbar{min-height:auto;padding:14px;display:block}.ch2-topbar h1{font-size:26px}.ch2-topstatus{margin-top:12px}.ch2-main{padding:9px}.ch2-kpis,.ch2-primary-grid,.ch2-secondary-grid{grid-template-columns:1fr}.ch2-primary-grid .ch2-solar-card,.ch2-secondary-grid .ch2-today-card{grid-column:auto}.ch2-kpi{min-height:88px}.ch2-flow-card,.ch2-battery-card,.ch2-solar-card{min-height:340px}.ch2-flowcanvas{height:260px}.ch2-battery-columns{height:auto}.ch2-secondary-grid>.ch2-card{min-height:260px}.ch2-agile-layout{grid-template-columns:1fr;height:auto}.ch2-pricegraph{height:210px}.ch2-footer{flex-wrap:wrap}.ch2-footer>span:nth-child(2){display:none}
}


/* ============================================================
   CoreHome v13.15.0 — Full-width dashboard + bottom navigation
   ============================================================ */
.corehome-v2{
  padding-bottom:72px;
}
.ch2-app{
  display:block!important;
  min-height:100vh;
}
.ch2-stage{
  width:100%!important;
  max-width:none!important;
  margin:0!important;
  min-width:0;
}
.ch2-topbar{
  padding-left:24px;
  padding-right:24px;
}
.ch2-main{
  width:100%;
  max-width:none!important;
  margin:0!important;
  padding:14px 16px 20px;
}
.ch2-kpis{
  grid-template-columns:repeat(5,minmax(0,1fr));
}
.ch2-primary-grid{
  grid-template-columns:1.28fr 1.04fr .96fr;
}
.ch2-secondary-grid{
  grid-template-columns:1.1fr .95fr .9fr;
}
.ch2-bottomnav{
  position:fixed;
  left:0;right:0;bottom:0;
  min-height:58px;
  z-index:1000;
  display:flex;
  align-items:stretch;
  justify-content:space-between;
  gap:10px;
  border-top:1px solid rgba(92,133,165,.28);
  background:linear-gradient(180deg,rgba(5,19,31,.97),rgba(3,13,22,.985));
  box-shadow:0 -12px 34px rgba(0,0,0,.26);
  backdrop-filter:blur(12px);
  padding:6px 10px max(6px,env(safe-area-inset-bottom));
}
.ch2-bottomnav-main,
.ch2-bottomnav-right{
  display:flex;
  align-items:stretch;
  gap:4px;
  min-width:0;
}
.ch2-bottomnav-main{
  flex:1 1 auto;
}
.ch2-bottomnav-right{
  flex:0 0 auto;
  border-left:1px solid rgba(91,129,160,.22);
  padding-left:7px;
}
.ch2-bottomnav a,
.ch2-bottomnav button{
  min-height:44px;
  border:1px solid transparent;
  border-radius:9px;
  background:transparent;
  color:#bdcbd6;
  text-decoration:none;
  font:inherit;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:7px;
  padding:5px 10px;
  white-space:nowrap;
  cursor:pointer;
  font-size:10px;
  font-weight:700;
}
.ch2-bottomnav a .ch2-svg,
.ch2-bottomnav button .ch2-svg{
  width:18px;height:18px;
  color:#9db2c5;
}
.ch2-bottomnav a:hover,
.ch2-bottomnav button:hover{
  background:#0d2638;
  border-color:#21455f;
  color:#fff;
}
.ch2-bottomnav a.active{
  background:linear-gradient(180deg,rgba(41,177,130,.22),rgba(20,84,78,.17));
  border-color:rgba(73,227,159,.23);
  color:#71e7a9;
}
.ch2-bottomnav a.active .ch2-svg{
  color:#71e7a9;
}
.ch2-fullscreen-btn{
  border-color:#23566e!important;
  background:#0c2735!important;
  color:#fff!important;
}
.ch2-version-inline{
  display:flex;
  align-items:center;
  padding:0 5px;
  color:#71889b;
  font-size:9px;
  white-space:nowrap;
}

/* True display mode: hide navigation and use every pixel */
:fullscreen .ch2-bottomnav,
:-webkit-full-screen .ch2-bottomnav{
  display:none!important;
}
:fullscreen .corehome-v2,
:-webkit-full-screen .corehome-v2{
  padding-bottom:0!important;
}
:fullscreen .ch2-main,
:-webkit-full-screen .ch2-main{
  padding-bottom:12px!important;
}

/* Class fallback for browsers that keep document-level chrome */
html.corehome-is-fullscreen .ch2-bottomnav,
body.corehome-is-fullscreen .ch2-bottomnav{
  display:none!important;
}
html.corehome-is-fullscreen .corehome-v2,
body.corehome-is-fullscreen{
  padding-bottom:0!important;
}

@media(max-width:1500px){
  .ch2-bottomnav a,
  .ch2-bottomnav button{padding-left:8px;padding-right:8px;font-size:9px}
  .ch2-bottomnav-right a:nth-child(3){display:none}
}
@media(max-width:1250px){
  .ch2-bottomnav-main a span,
  .ch2-bottomnav-right a span:not(.keep),
  .ch2-bottomnav button span{
    display:none;
  }
  .ch2-bottomnav a,
  .ch2-bottomnav button{
    width:42px;
    padding:5px;
  }
  .ch2-version-inline{display:none}
  .ch2-primary-grid{grid-template-columns:1.2fr 1fr}
  .ch2-solar-card{grid-column:1/-1}
}
@media(max-width:850px){
  .corehome-v2{padding-bottom:68px}
  .ch2-bottomnav{
    overflow-x:auto;
    justify-content:flex-start;
  }
  .ch2-bottomnav-main,
  .ch2-bottomnav-right{
    flex:0 0 auto;
  }
  .ch2-bottomnav-right{
    border-left:0;
    padding-left:0;
  }
  .ch2-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ch2-primary-grid,.ch2-secondary-grid{grid-template-columns:1fr}
  .ch2-solar-card,.ch2-today-card{grid-column:auto!important}
}


/* ============================================================
   CoreHome v13.15.0 — Direction-aware live energy flow
   ============================================================ */
.ch2-flowlines .line{
  fill:none;
  stroke-width:4;
  stroke-linecap:round;
  transition:opacity .25s ease, stroke-width .25s ease, filter .25s ease;
}

/* No power: calm, solid static line. */
.ch2-flowlines .line.flow-static{
  stroke-dasharray:none!important;
  animation:none!important;
  opacity:.28;
  filter:none;
  marker-start:none!important;
  marker-end:none!important;
}
.ch2-flowlines .solarLine.flow-static,
.ch2-flowlines .maxLine.flow-static{
  stroke:#2b6656;
}
.ch2-flowlines .gridLine.flow-static{
  stroke:#2c5070;
}
.ch2-flowlines .ultraLine.flow-static{
  stroke:#263c4c;
  opacity:.18;
}

/* Live flow gets illuminated dashed motion plus a clear arrowhead. */
.ch2-flowlines .line.flow-live{
  stroke-dasharray:13 10;
  opacity:.98;
  stroke-width:4.5;
  filter:drop-shadow(0 0 5px rgba(73,227,159,.32));
}
.ch2-flowlines .solarLine.flow-live,
.ch2-flowlines .maxLine.flow-live{
  stroke:url(#flowGreen);
}
.ch2-flowlines .gridLine.flow-live{
  stroke:url(#flowBlue);
  filter:drop-shadow(0 0 5px rgba(87,159,255,.34));
}

/* Path geometry is defined in its natural direction:
   Solar -> Home
   Grid  -> Home
   Battery -> Home
*/
.ch2-flowlines .line.flow-forward{
  animation:ch2FlowForward .82s linear infinite;
}
.ch2-flowlines .line.flow-reverse{
  animation:ch2FlowReverse .82s linear infinite;
}

@keyframes ch2FlowForward{
  from{stroke-dashoffset:0}
  to{stroke-dashoffset:-46}
}
@keyframes ch2FlowReverse{
  from{stroke-dashoffset:0}
  to{stroke-dashoffset:46}
}

/* Accessibility: retain direction arrow but stop motion when requested. */
@media (prefers-reduced-motion: reduce){
  .ch2-flowlines .line.flow-live{
    animation:none!important;
    stroke-dasharray:13 10;
  }
}


/* v13.15.0 — flowing lines intentionally have no triangle arrowheads.
   Direction is shown solely by the movement of the dashed/illuminated line. */
.ch2-flowlines .line{
  marker-start:none!important;
  marker-mid:none!important;
  marker-end:none!important;
}


/* v13.15.0 — live battery runtime */
.ch2-runtime-row dd{
  color:#7ee6b1!important;
  font-weight:800!important;
}
.ch2-runtime-note{
  margin:7px 0 0;
  padding-top:7px;
  border-top:1px solid rgba(76,116,147,.14);
  color:#71899d;
  font-size:8px;
  line-height:1.35;
}


/* v13.15.1 — canonical live Agile tariff presentation */
.ch2-agile-mini-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin-top:12px;padding-top:10px;border-top:1px solid rgba(91,126,153,.18)}
.ch2-agile-mini-grid>div{min-width:0;padding:7px 8px;border:1px solid rgba(116,88,166,.18);border-radius:8px;background:rgba(17,26,43,.36)}
.ch2-agile-mini-grid span,.ch2-agile-mini-grid small{display:block}
.ch2-agile-mini-grid span{font-size:7px;color:#8093a5;text-transform:uppercase;letter-spacing:.07em}
.ch2-agile-mini-grid b{display:block;margin:2px 0;color:#7cdf52;font-size:12px}
.ch2-agile-mini-grid small{font-size:7px;color:#8193a4;white-space:normal}
.ch2-agile-freshness{display:flex;align-items:center;gap:6px;margin-top:9px;color:#7891a4;font-size:8px}
.ch2-agile-freshness i{width:6px;height:6px;border-radius:50%;background:#50df94;box-shadow:0 0 7px rgba(80,223,148,.52)}
.ch2-agile-freshness i.stale{background:#e8ad55;box-shadow:none}
#chPriceChart .priceStep{fill:none;stroke:#a267e8;stroke-width:3;vector-effect:non-scaling-stroke;stroke-linejoin:round}
#chPriceChart .priceNow{stroke:#61e2a1;stroke-width:1.5;stroke-dasharray:4 4;opacity:.8;vector-effect:non-scaling-stroke}
.ch2-price-caption{display:block;margin-top:3px;text-align:right;color:#6f8497;font-size:7px}
.ch2-priceaxis{grid-template-columns:repeat(5,1fr)!important}
.ch2-priceaxis span:last-child{text-align:right}
@media(max-width:850px){.ch2-agile-mini-grid{grid-template-columns:1fr}}


/* ==========================================================
   v13.15.2 — Agile Pricing box redesign
   Mirrors the approved mockup while staying in the existing
   bottom-left dashboard card.
   ========================================================== */
.ch2-agile-v13152{padding:14px!important;min-height:300px!important;overflow:hidden}
.ch2-agile-v13152 .ch2-agile-head{margin-bottom:8px}
.ch2-agile-title-row{display:flex;align-items:center;gap:7px}
.ch2-agile-title-row h2{margin:2px 0 0!important}
.ch2-agile-live-pill{display:inline-flex;align-items:center;gap:4px;padding:2px 7px;border-radius:999px;background:rgba(132,42,191,.18);border:1px solid rgba(184,91,246,.28);color:#c681f2;font-size:7px;font-weight:800}
.ch2-agile-live-pill i{width:5px;height:5px;border-radius:50%;background:#b865ef;box-shadow:0 0 6px rgba(184,101,239,.7)}

.ch2-agile-prices{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:8px}
.ch2-agile-pricebox{position:relative;min-width:0;padding:8px 9px 7px 12px;border:1px solid rgba(88,128,160,.26);border-radius:8px;background:linear-gradient(145deg,rgba(12,34,50,.92),rgba(8,25,39,.82));overflow:hidden}
.ch2-agile-pricebox:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px}
.ch2-agile-pricebox.current:before,.ch2-agile-pricebox.low:before{background:#78df47}
.ch2-agile-pricebox.next:before{background:#38a9ff}
.ch2-agile-pricebox.high:before{background:#f05ab7}
.ch2-agile-pricebox span{display:block;color:#9eb0be;font-size:7px;text-transform:uppercase;letter-spacing:.055em;font-weight:800}
.ch2-agile-pricebox strong{display:block;margin:2px 0;color:#edf5f9;font-size:12px;line-height:1.05;white-space:nowrap}
.ch2-agile-pricebox.current strong{color:#83e74f;font-size:18px}
.ch2-agile-pricebox.low strong{color:#80df4c}
.ch2-agile-pricebox.high strong{color:#f267bc}
.ch2-agile-pricebox small{display:block;color:#7e94a5;font-size:7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.ch2-agile-chart-head{display:flex;align-items:center;justify-content:space-between;margin:2px 0 1px}
.ch2-agile-chart-head>strong{font-size:8px;color:#d8e3ea;text-transform:uppercase;letter-spacing:.045em}
.ch2-agile-legend{display:flex;align-items:center;gap:8px;color:#8398aa;font-size:7px}
.ch2-agile-legend span{display:flex;align-items:center;gap:4px}
.ch2-agile-legend i{display:inline-block;width:14px;height:2px;background:#a462e5;border-radius:2px}
.ch2-agile-legend i.future{height:0;background:none;border-top:2px dashed #b96ef0}

.ch2-agile-chart{height:125px!important;min-height:125px!important;position:relative}
.ch2-agile-chart svg{height:105px!important;width:100%;overflow:hidden!important}
.ch2-agile-chart .grid line{stroke:rgba(111,143,168,.13);stroke-width:1}
.ch2-agile-chart .pricePastStep{fill:none;stroke:#a463e7;stroke-width:2.1;vector-effect:non-scaling-stroke;stroke-linejoin:round}
.ch2-agile-chart .priceFutureStep{fill:none;stroke:#bb75ef;stroke-width:1.9;stroke-dasharray:5 4;vector-effect:non-scaling-stroke;stroke-linejoin:round}
.ch2-agile-chart .priceNow{stroke:#82e34d;stroke-width:1.2;stroke-dasharray:3 3;vector-effect:non-scaling-stroke}
.ch2-agile-chart .priceNowDot{fill:#85e650;filter:drop-shadow(0 0 4px rgba(133,230,80,.65))}
.ch2-agile-chart .ch2-priceaxis{bottom:0!important;display:grid!important;grid-template-columns:repeat(5,1fr)!important;font-size:6px!important}
.ch2-agile-chart .ch2-priceaxis span{text-align:center}
.ch2-agile-chart .ch2-priceaxis span:first-child{text-align:left}.ch2-agile-chart .ch2-priceaxis span:last-child{text-align:right}

.ch2-agile-bottom{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:4px;padding-top:6px;border-top:1px solid rgba(87,126,157,.15)}
.ch2-agile-v13152 .ch2-agile-freshness{margin:0;font-size:7px;min-width:0}
.ch2-agile-v13152 .ch2-agile-freshness span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ch2-agile-tz{color:#627b8f;font-size:6px;white-space:nowrap}

@media(max-width:1100px){
  .ch2-agile-pricebox.current strong{font-size:16px}
  .ch2-agile-pricebox strong{font-size:10px}
}
@media(max-width:760px){
  .ch2-agile-v13152{min-height:0!important}
  .ch2-agile-prices{grid-template-columns:1fr 1fr}
  .ch2-agile-pricebox.current{grid-column:1/-1}
  .ch2-agile-pricebox.current strong{font-size:24px}
  .ch2-agile-chart{height:160px!important;min-height:160px!important}
  .ch2-agile-chart svg{height:138px!important}
}
@media(max-width:390px){
  .ch2-agile-prices{grid-template-columns:1fr}
  .ch2-agile-pricebox.current{grid-column:auto}
  .ch2-agile-bottom{align-items:flex-start;flex-direction:column}
}


/* ============================================================
   CoreHome v13.15.3 — Agile Pricing card visual rebuild
   Closely follows approved mockup, inside existing bottom-left card.
   ============================================================ */
.ch2-agile-v13153{
  padding:14px!important;
  min-height:310px!important;
  overflow:hidden!important;
  display:block!important;
}
.ch2-agile53-head{
  display:flex;justify-content:space-between;align-items:flex-start;
  gap:10px;margin-bottom:8px
}
.ch2-agile53-head h2{margin:2px 0 0!important;font-size:14px!important;color:#f4f8fb!important}
.ch2-agile53-head>small{font-size:8px!important;color:#8296a8!important}
.ch2-agile53-title{display:flex;align-items:center;gap:7px}
.ch2-agile53-title>span{
  display:inline-flex;align-items:center;gap:4px;padding:2px 7px;border-radius:999px;
  border:1px solid rgba(183,88,241,.32);background:rgba(114,35,169,.18);
  color:#d18af7;font-size:7px;font-weight:800
}
.ch2-agile53-title>span i{width:5px;height:5px;border-radius:50%;background:#ba67ef;box-shadow:0 0 5px #ba67ef}

.ch2-agile53-top{
  display:grid!important;grid-template-columns:1.12fr 2fr!important;gap:7px!important;
  margin-bottom:8px!important
}
.ch2-agile53-current{
  position:relative;padding:10px 10px 9px 13px;border:1px solid rgba(83,128,159,.33);
  border-radius:8px;background:linear-gradient(145deg,#0b2335,#091c2c);overflow:hidden
}
.ch2-agile53-current:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:#7de64c}
.ch2-agile53-current span,.ch2-agile53-metrics span{display:block;font-size:6.5px;font-weight:800;letter-spacing:.055em;color:#9eb0bd}
.ch2-agile53-current strong{display:block;margin:3px 0 1px;color:#81e64c!important;font-size:21px!important;line-height:1.05;white-space:nowrap}
.ch2-agile53-current small{font-size:7px;color:#d7e0e6}

.ch2-agile53-metrics{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:6px!important}
.ch2-agile53-metrics .metric{
  min-width:0;padding:8px;border:1px solid rgba(83,128,159,.27);
  border-radius:8px;background:linear-gradient(145deg,rgba(11,33,49,.95),rgba(8,25,39,.9))
}
.ch2-agile53-metrics b{display:block;margin:2px 0;font-size:11px;line-height:1.05;color:#eef5f8;white-space:nowrap}
.ch2-agile53-metrics small{display:block;font-size:6.5px;color:#8498a8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ch2-agile53-metrics .next b{color:#48aeff}
.ch2-agile53-metrics .low b{color:#80df4b}
.ch2-agile53-metrics .high b{color:#f15db7}
.ch2-agile53-metrics .avg b{color:#47b9ff}

.ch2-agile53-chart-title{
  display:flex;justify-content:space-between;align-items:center;margin:2px 0 2px
}
.ch2-agile53-chart-title>strong{font-size:7px;letter-spacing:.04em;color:#d5e0e7}
.ch2-agile53-chart-title>div{display:flex;gap:8px;font-size:6px;color:#8196a8}
.ch2-agile53-chart-title span{display:flex;align-items:center;gap:3px}
.ch2-agile53-chart-title i{display:inline-block;width:13px;height:2px;background:#a668e7;border-radius:2px}
.ch2-agile53-chart-title i.future{height:0;background:none;border-top:2px dashed #bc73f0}

.ch2-agile53-chart{position:relative;height:145px!important;min-height:145px!important;margin-top:0!important}
.ch2-agile53-chart svg{display:block;width:100%!important;height:122px!important;overflow:hidden!important}
.ch2-agile53-chart .grid line{stroke:rgba(110,143,168,.14)!important;stroke-width:1}
.ch2-agile53-chart .pricePastStep{fill:none!important;stroke:#a769e8!important;stroke-width:2.2!important;vector-effect:non-scaling-stroke}
.ch2-agile53-chart .priceFutureStep{fill:none!important;stroke:#bc76ef!important;stroke-width:2!important;stroke-dasharray:5 4!important;vector-effect:non-scaling-stroke}
.ch2-agile53-chart .priceNow{stroke:#84e54d!important;stroke-width:1.1!important;stroke-dasharray:3 3!important;vector-effect:non-scaling-stroke}
.ch2-agile53-chart .priceNowDot{fill:#87e950!important;filter:drop-shadow(0 0 4px rgba(135,233,80,.7))}
.ch2-agile53-chart .ch2-priceaxis{
  position:absolute!important;left:0!important;right:0!important;bottom:7px!important;
  display:grid!important;grid-template-columns:repeat(5,1fr)!important;
  font-size:6px!important;color:#6f8597!important
}
.ch2-agile53-chart .ch2-priceaxis span{text-align:center}
.ch2-agile53-chart .ch2-priceaxis span:first-child{text-align:left}
.ch2-agile53-chart .ch2-priceaxis span:last-child{text-align:right}
.ch2-agile53-now{
  position:absolute;left:50%;bottom:-1px;transform:translateX(-50%);
  padding:1px 5px;border-radius:3px;background:#7fe84b;color:#07120a;
  font-size:6px;font-weight:900
}

.ch2-agile53-footer{
  display:flex;justify-content:space-between;align-items:center;gap:8px;
  padding-top:6px;border-top:1px solid rgba(84,126,157,.17)
}
.ch2-agile53-footer .ch2-agile-freshness{margin:0!important;font-size:6.5px!important;min-width:0}
.ch2-agile53-footer .ch2-agile-freshness span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ch2-agile53-footer>span{font-size:6px;color:#657e91;white-space:nowrap}

@media(max-width:1100px){
  .ch2-agile53-current strong{font-size:18px!important}
  .ch2-agile53-metrics b{font-size:9px}
}
@media(max-width:760px){
  .ch2-agile-v13153{min-height:0!important}
  .ch2-agile53-top{grid-template-columns:1fr!important}
  .ch2-agile53-current strong{font-size:26px!important}
  .ch2-agile53-metrics{grid-template-columns:1fr 1fr!important}
  .ch2-agile53-chart{height:175px!important;min-height:175px!important}
  .ch2-agile53-chart svg{height:150px!important}
}
@media(max-width:390px){
  .ch2-agile53-metrics{grid-template-columns:1fr!important}
  .ch2-agile53-footer{flex-direction:column;align-items:flex-start}
}

/* v13.16.0 Live Control Beta */
.ch2-live-beta{margin:0 0 18px;background:linear-gradient(135deg,#101f2b,#142b3b);border:1px solid rgba(120,223,76,.25);border-radius:18px;padding:16px 18px;display:flex;align-items:center;justify-content:space-between;gap:18px;box-shadow:0 12px 28px rgba(0,0,0,.16)}
.ch2-live-beta strong{display:block;color:#fff;font-size:1.08rem;margin:4px 0}.ch2-live-beta small{color:#a9bdc9;display:block;max-width:760px}
.ch2-live-actions{display:flex;gap:8px;flex-wrap:wrap}.ch2-live-actions button{border:0;border-radius:10px;padding:10px 13px;font-weight:800;cursor:pointer}
#chLiveArm{background:#78df4c;color:#10200b}#chLiveDisarm{background:#27465a;color:#e9f4fa}#chLiveStop{background:#ef5a5a;color:#fff}
.ch2-live-beta.active{border-color:rgba(120,223,76,.7);box-shadow:0 0 0 1px rgba(120,223,76,.15),0 12px 28px rgba(0,0,0,.16)}
@media(max-width:760px){.ch2-live-beta{align-items:flex-start;flex-direction:column}.ch2-live-actions{width:100%}.ch2-live-actions button{flex:1 1 130px}}
