:root{--ink:#082d3c;--muted:#66818e;--line:#d4e5e8;--panel:#fff;--bg:#edf6f7;--teal:#12998e;--cyan:#22abc2;--lime:#baf15a;--navy:#072c3a;--orange:#ee9232;--yellow:#e5ad25;--blue:#4b8ee6;--red:#ef7656;--shadow:0 18px 50px rgba(7,51,63,.09)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:linear-gradient(145deg,#edf6f6 0,#f8fbfb 42%,#edf5f6 100%);color:var(--ink);font-family:Inter,"Avenir Next","Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;font-size:16px}button,input{font:inherit}button{cursor:pointer}.topbar{height:76px;padding:0 clamp(22px,3vw,54px);display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(16,79,91,.12);background:rgba(247,251,251,.88);backdrop-filter:blur(14px);position:relative;z-index:4}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:var(--ink)}.brand-mark{width:40px;height:40px;display:grid;place-items:center;border-radius:12px;background:linear-gradient(145deg,#102f3d,#0a8b8c);color:var(--lime);font-size:22px;font-weight:900;transform:skew(-7deg)}.brand strong{display:block;letter-spacing:.08em}.brand em{font-style:normal;color:var(--teal)}.brand small{display:block;margin-top:2px;color:#78909a;font-size:10px;letter-spacing:.18em}.header-meta{display:flex;align-items:center;gap:12px;color:#66808d;font-size:13px}.header-meta b{color:var(--ink)}.version{padding:7px 10px;border:1px solid #c9dfe2;border-radius:20px;background:#fff;color:#168b85;font-weight:800;font-size:11px}.live-dot{width:8px;height:8px;border-radius:50%;background:#62c874;box-shadow:0 0 0 4px rgba(98,200,116,.15)}
.app-layout{width:min(1760px,calc(100% - 36px));margin:28px auto 60px;display:grid;grid-template-columns:minmax(0,1fr) 390px;gap:24px;align-items:start}.results-column{min-width:0}.results-head{min-height:164px;padding:28px 32px;display:flex;align-items:center;justify-content:space-between;gap:24px;border-radius:24px;background:radial-gradient(circle at 84% 0,rgba(185,237,89,.2),transparent 28%),linear-gradient(130deg,#0b3442,#106c70);color:white;box-shadow:var(--shadow)}.eyebrow,.kicker{margin:0 0 8px;color:#25a79c;font-size:12px;font-weight:900;letter-spacing:.16em}.results-head .eyebrow{color:#bfe99a}.results-head h1{margin:0;font-size:clamp(32px,4vw,54px);line-height:1;letter-spacing:-.04em}.results-head h1 span{margin-left:12px;color:var(--lime)}.results-head>div>p:last-child{margin:14px 0 0;color:#c8dfe2;font-size:14px}.data-badge{min-width:205px;padding:17px 19px;border:1px solid rgba(255,255,255,.16);border-radius:17px;background:rgba(255,255,255,.07)}.data-badge span,.data-badge small{display:block;color:#bcd3d7;font-size:12px}.data-badge strong{display:block;margin:5px 0;font-size:19px}
.section-block{margin-top:22px;padding:27px;border:1px solid rgba(80,130,139,.15);border-radius:24px;background:rgba(255,255,255,.92);box-shadow:var(--shadow)}.section-head,.card-title{display:flex;align-items:flex-end;justify-content:space-between;gap:18px}.section-head h2,.card-title h3{margin:0;color:var(--ink)}.section-head h2{font-size:24px}.section-head p:not(.kicker),.card-title p{margin:5px 0 0;color:var(--muted);font-size:13px}.unit-note{padding:7px 11px;border-radius:8px;background:#edf6f6;color:#5e7b86;font-size:12px}.kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px;margin-top:20px}.kpi{min-height:148px;padding:20px;border:1px solid var(--line);border-radius:18px;background:#fbfdfd;display:flex;flex-direction:column}.kpi.primary{border-color:#1a8f91;background:radial-gradient(circle at 100% 0,rgba(185,237,89,.28),transparent 38%),linear-gradient(135deg,#103b49,#106f73);color:white}.kpi span{color:#547481;font-size:14px}.kpi.primary span{color:#d1e6e6}.kpi strong{display:block;margin:12px 0 6px;font-size:38px;line-height:1;letter-spacing:-.04em}.kpi.primary strong{color:var(--lime)}.kpi small{margin-top:auto;color:#6d8792;font-size:12px}.kpi.primary small{color:#c4dbde}.economics-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(280px,.75fr);gap:14px;margin-top:14px}.chart-card,.bridge-card{padding:20px;border:1px solid var(--line);border-radius:18px;background:#fbfdfd}.card-title{align-items:flex-start}.card-title h3{font-size:17px}.legend{display:flex;align-items:center;gap:14px;flex-wrap:wrap;color:#617d88;font-size:12px}.legend span{display:flex;align-items:center;gap:6px}.legend i{width:16px;height:4px;border-radius:3px}.legend .profit{background:var(--lime)}.legend .bill{background:var(--cyan)}.legend .load{background:var(--orange)}.legend .solar{background:var(--yellow)}.legend .battery{background:var(--blue)}.legend .grid{background:#39a9ae}.chart{width:100%;overflow:hidden}.profit-chart{height:255px;margin-top:16px}.profit-chart svg,.profile-chart svg{display:block;width:100%;height:100%}.profit-bridge{display:grid;gap:8px;margin-top:16px}.bridge-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border-radius:11px;background:#f1f7f7}.bridge-row span{color:#587580;font-size:12px}.bridge-row strong{font-size:14px}.bridge-row.positive strong{color:#148d67}.bridge-row.negative strong{color:#c36149}.bridge-row.total{margin-top:5px;background:var(--navy);color:#fff}.bridge-row.total span{color:#d2e4e6}.bridge-row.total strong{color:var(--lime);font-size:18px}
.table-summary{text-align:right}.table-summary span{display:block;color:#718b95;font-size:12px}.table-summary strong{font-size:20px}.table-wrap{margin-top:18px;overflow:auto;border:1px solid var(--line);border-radius:15px}table{width:100%;border-collapse:collapse;white-space:nowrap}th{padding:12px 14px;background:#edf5f5;color:#607c87;text-align:right;font-size:12px;font-weight:700}th:first-child,td:first-child{text-align:left}td{padding:13px 14px;border-top:1px solid #e3ecee;text-align:right;font-size:13px}tbody tr{cursor:pointer;transition:.18s}tbody tr:hover{background:#f4fafa}tbody tr.active{background:#edf9f7;box-shadow:inset 3px 0 #1a9c91}td.bill-cell{color:#0b7480;font-weight:800}td.profit-positive{color:#138b63;font-weight:800}td.profit-negative{color:#c45e49;font-weight:800}.table-footnote{margin:12px 2px 0;color:#748c96;font-size:12px;line-height:1.55}.profile-chart{height:330px;margin-top:18px;border-radius:15px;background:linear-gradient(#fbfdfd,#f5faf9)}.month-metrics{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;margin-top:12px}.month-metrics div{padding:11px 12px;border:1px solid var(--line);border-radius:11px;background:#f8fbfb}.month-metrics span{display:block;color:#6f8791;font-size:11px}.month-metrics strong{display:block;margin-top:3px;font-size:14px}footer{display:flex;justify-content:space-between;gap:15px;padding:18px 4px;color:#738b95;font-size:11px}
.settings-column{position:sticky;top:18px}.settings-card{max-height:calc(100vh - 36px);overflow:auto;border:1px solid rgba(55,115,125,.2);border-radius:24px;background:rgba(255,255,255,.96);box-shadow:0 22px 58px rgba(12,56,67,.14);scrollbar-width:thin}.settings-title{position:sticky;top:0;z-index:3;padding:22px 22px 16px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);background:rgba(255,255,255,.95);backdrop-filter:blur(12px)}.settings-title h2{margin:0;font-size:24px}.settings-title button{padding:8px 10px;border:1px solid #cfe0e3;border-radius:9px;background:#f5f9f9;color:#52717d;font-size:12px}.settings-title button:hover{border-color:#19998f;color:#127f78}.setting-section{padding:20px 22px;border-bottom:1px solid var(--line)}.setting-section-title{display:flex;align-items:center;gap:11px;margin-bottom:18px}.setting-section-title>span{width:28px;height:28px;display:grid;place-items:center;border-radius:9px;background:#e8f7f4;color:#148b81;font-size:11px;font-weight:900}.setting-section-title h3{margin:0;font-size:17px}.setting-section-title p{margin:2px 0 0;color:#728b95;font-size:11px}.range-field{display:block;margin:16px 0}.range-field>div{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:9px}.range-field span{color:#466875;font-size:13px}.range-field output{color:#0a6770;font-size:13px;font-weight:800}.range-field input{width:100%;height:6px;border-radius:99px;background:linear-gradient(90deg,#30b696,var(--lime));accent-color:#15988c;cursor:grab}.range-field input:active{cursor:grabbing}.battery-options{display:grid;grid-template-columns:repeat(4,1fr);gap:7px}.battery-options button{padding:11px 4px;border:1px solid #d5e4e7;border-radius:11px;background:#f7fbfb;color:var(--ink)}.battery-options button strong,.battery-options button small{display:block}.battery-options button strong{font-size:12px}.battery-options button small{margin-top:3px;color:#718a94;font-size:10px}.battery-options button.active{border-color:#16a093;background:linear-gradient(145deg,#dff6e9,#eaf9d1);box-shadow:0 0 0 2px rgba(22,160,147,.09)}.free-window-note{margin-top:12px;padding:10px 12px;display:flex;justify-content:space-between;border-radius:10px;background:#f0f8ec}.free-window-note span{color:#688171;font-size:11px}.free-window-note strong{color:#3f7d36;font-size:12px}.daily-load-total{padding:15px;border-radius:14px;background:radial-gradient(circle at 100% 0,rgba(185,237,89,.23),transparent 42%),var(--navy);color:#fff}.daily-load-total span,.daily-load-total small{display:block;color:#c6dbde;font-size:11px}.daily-load-total strong{display:block;margin:6px 0;color:var(--lime);font-size:25px}.model-notes{margin:16px 22px;border:1px solid var(--line);border-radius:12px;background:#f7fafa}.model-notes summary{padding:12px 13px;color:#526f7a;font-size:12px;cursor:pointer}.model-notes div{padding:0 13px 10px}.model-notes p{margin:8px 0;color:#708891;font-size:11px;line-height:1.5}.recalc-status{margin:0 22px 20px;padding:11px 12px;border-radius:11px;background:#eff8f3;color:#4a7560;font-size:11px}.recalc-status span{display:inline-block;width:7px;height:7px;margin-right:7px;border-radius:50%;background:#58bf75}.recalc-status.working span{animation:pulse .8s infinite}.loading-screen{min-height:calc(100vh - 76px);display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--ink)}.loading-screen strong{margin-top:15px}.loading-screen span{margin-top:5px;color:#78909a;font-size:12px}.loader{width:42px;height:42px;border:4px solid #dceaea;border-top-color:#15988c;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.25}}
@media(max-width:1300px){.app-layout{grid-template-columns:minmax(0,1fr) 350px}.kpi-grid{grid-template-columns:repeat(2,1fr)}.month-metrics{grid-template-columns:repeat(3,1fr)}.economics-grid{grid-template-columns:1fr}.profit-bridge{grid-template-columns:repeat(2,1fr)}.bridge-row.total{grid-column:1/-1}}
@media(max-width:980px){.app-layout{width:min(100% - 24px,820px);grid-template-columns:1fr}.settings-column{position:static;grid-row:1}.settings-card{max-height:none}.results-column{grid-row:2}.settings-title{position:static}.battery-options{grid-template-columns:repeat(4,1fr)}}
@media(max-width:680px){.topbar{height:auto;min-height:68px;padding:12px 16px}.header-meta>span:not(.version):not(.live-dot),.header-meta b{display:none}.app-layout{width:calc(100% - 16px);margin:12px auto 36px;gap:12px}.results-head{padding:23px 20px;align-items:flex-start;flex-direction:column}.results-head h1 span{display:block;margin:6px 0 0}.data-badge{width:100%}.section-block{padding:19px 14px;border-radius:18px}.section-head{align-items:flex-start}.kpi-grid{grid-template-columns:1fr 1fr}.kpi{min-height:132px;padding:15px}.kpi strong{font-size:28px}.economics-grid{grid-template-columns:1fr}.chart-card,.bridge-card{padding:14px}.profit-bridge{grid-template-columns:1fr}.profile-legend{display:none}.month-metrics{grid-template-columns:1fr 1fr}.settings-card{border-radius:18px}.settings-title,.setting-section{padding-left:16px;padding-right:16px}.battery-options{grid-template-columns:1fr 1fr}footer{flex-direction:column}.profit-chart{height:230px}.profile-chart{height:280px}}
.range-field span small{display:block;margin-top:2px;color:#8399a1;font-size:10px}
.range-field input:disabled{opacity:.38;cursor:not-allowed}
.select-field{display:block;margin:16px 0}.select-field>span{display:block;margin-bottom:8px;color:#466875;font-size:13px}.select-field select{width:100%;padding:11px 12px;border:1px solid #cfdee2;border-radius:10px;background:#f8fbfb;color:var(--ink);font:inherit;font-size:13px}.select-field select:focus{outline:2px solid rgba(18,153,142,.18);border-color:#15988c}.vdo-summary{margin:-3px 0 17px;padding:10px 12px;border-radius:10px;background:#eef8f4;color:#39786d;font-size:11px;font-weight:700}
.market-options{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:0 0 16px}.market-options button{padding:12px;border:1px solid #cfe0e3;border-radius:11px;background:#f6fafa;color:#55737e;font-weight:900}.market-options button.active{border-color:#12998e;background:linear-gradient(145deg,#dff7ed,#ebfbd1);color:#076c6b;box-shadow:0 0 0 2px rgba(18,153,142,.09)}
.date-select{display:flex;align-items:center;gap:9px;color:#617d88;font-size:12px}.date-select select{padding:9px 32px 9px 11px;border:1px solid #cfe0e3;border-radius:10px;background:#fff;color:var(--ink);font-weight:700}.daily-trace-legend{justify-content:flex-end;margin:14px 0 5px}.legend .price{background:#27aec3}.legend .soc{height:2px;background:#98d83d}.daily-trace-chart{height:360px;border-radius:15px;background:linear-gradient(#fbfdfd,#f5faf9)}.daily-trace-chart svg{display:block;width:100%;height:100%}.trace-loading{height:100%;display:grid;place-items:center;color:#708891;font-size:13px}
@media(max-width:680px){.daily-trace-section .section-head{flex-direction:column}.daily-trace-legend{justify-content:flex-start}.daily-trace-chart{height:300px}}

/* Version 15 — V11 visual language and calculation drill-downs */
.section-block{background:linear-gradient(180deg,rgba(255,255,255,.98),rgba(250,254,254,.95))}.kpi{min-height:166px;position:relative;overflow:hidden;background:linear-gradient(145deg,#fff,#f7fbfb)}.kpi:before{content:"";position:absolute;inset:0 0 auto;height:3px;background:linear-gradient(90deg,var(--teal),var(--cyan));opacity:.7}.kpi.primary{background:radial-gradient(circle at 100% 0,rgba(185,237,89,.30),transparent 42%),linear-gradient(135deg,#0a3442,#0b7075)}.kpi small{margin-top:0}.kpi em{margin-top:auto;color:#0b8790;font-style:normal;font-size:11px;font-weight:800}.kpi.primary em{color:#c5f26d}.calc-trigger{cursor:pointer;transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}.calc-trigger:hover,.calc-trigger:focus-visible{transform:translateY(-2px);border-color:#54bcb7;box-shadow:0 14px 32px rgba(11,87,93,.12);outline:none}.legend .total-load{height:3px;background:var(--navy)}.profit-hit{cursor:pointer}.profit-hit:hover{fill:rgba(19,151,142,.055)}.profit-hit:focus{fill:rgba(19,151,142,.08);outline:none}.table-calc{padding:3px 0;border:0;border-bottom:1px dashed rgba(20,120,126,.28);background:transparent;color:inherit;font-weight:inherit}.table-calc:hover,.table-calc:focus-visible{color:#05828b;border-bottom-color:#05828b;outline:none}.daily-trace-chart{height:380px;border:1px solid #e2edef}.supply-heading{margin-top:32px;padding-top:25px;border-top:1px solid var(--line);display:flex;align-items:flex-end;justify-content:space-between;gap:18px}.supply-heading h3{margin:0;font-size:20px}.supply-heading p:not(.kicker){margin:5px 0 0;color:var(--muted);font-size:13px}.supply-chart{height:310px;margin-top:14px;border:1px solid #e2edef;border-radius:15px;background:linear-gradient(#fbfdfd,#f4faf9)}.supply-chart svg{display:block;width:100%;height:100%}.supply-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin-top:12px}.supply-metrics>div{display:grid;grid-template-columns:1fr auto;grid-template-areas:"label pct" "value pct";gap:2px 12px;padding:13px 15px;border:1px solid var(--line);border-radius:12px;background:#f8fbfb}.supply-metrics span{grid-area:label;color:#68838e;font-size:11px}.supply-metrics strong{grid-area:value;font-size:16px}.supply-metrics em{grid-area:pct;align-self:center;color:#178d8a;font-style:normal;font-weight:800}.calc-dialog{width:min(620px,calc(100% - 28px));max-height:min(82vh,760px);padding:0;border:0;border-radius:22px;background:#fff;color:var(--ink);box-shadow:0 28px 90px rgba(3,38,49,.28)}.calc-dialog::backdrop{background:rgba(4,31,40,.58);backdrop-filter:blur(4px)}.calc-dialog form{margin:0}.dialog-head{padding:22px 24px;display:flex;align-items:center;justify-content:space-between;background:radial-gradient(circle at 88% 0,rgba(185,237,89,.2),transparent 36%),linear-gradient(135deg,#0a3442,#0c7074);color:white}.dialog-head h2{margin:0;font-size:24px}.dialog-head .kicker{color:#bfe99a}.dialog-head button{width:36px;height:36px;border:1px solid rgba(255,255,255,.2);border-radius:50%;background:rgba(255,255,255,.08);color:#fff;font-size:24px;line-height:1}.calc-body{padding:24px;overflow:auto}.calc-lead{margin:0 0 17px;color:#5e7884;line-height:1.6}.calc-equation{display:grid;gap:8px}.calc-equation>div,.detail-list>div{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:10px 12px;border-radius:10px;background:#f1f7f7}.calc-equation span,.detail-list span{color:#5e7884}.calc-equation strong,.detail-list strong{white-space:nowrap}.calc-equation .calc-total{margin-top:4px;background:var(--navy);color:#fff}.calc-equation .calc-total span{color:#d6e6e8}.calc-equation .calc-total strong{color:var(--lime);font-size:19px}.detail-list{display:grid;gap:8px}.formula-card{margin-top:14px;padding:16px 18px;display:flex;align-items:center;justify-content:space-between;gap:18px;border:1px solid #b8ded9;border-radius:13px;background:linear-gradient(135deg,#eef9f6,#f3fbdc)}.formula-card span{color:#52747c}.formula-card strong{color:#087a76;font-size:18px;white-space:nowrap}.calc-note{margin-top:14px;padding:13px 15px;border-left:3px solid var(--cyan);background:#f2f8fa;color:#52737e;line-height:1.55}
@media(max-width:680px){.supply-heading{align-items:flex-start;flex-direction:column}.supply-heading .legend{gap:8px}.supply-chart{height:280px}.supply-metrics{grid-template-columns:1fr}.calc-body{padding:18px}.formula-card{align-items:flex-start;flex-direction:column}.kpi{min-height:150px}.kpi em{font-size:10px}}

/* Version 16 — five-minute hover inspection */
.daily-trace-chart,.supply-chart{position:relative;cursor:crosshair}.hover-line{position:absolute;top:38px;bottom:42px;width:1px;background:#0c6f78;box-shadow:0 0 0 1px rgba(255,255,255,.6);pointer-events:none;z-index:4}.supply-chart .hover-line{top:24px}.chart-tooltip{position:absolute;z-index:6;width:250px;padding:12px 13px;border:1px solid rgba(121,186,188,.65);border-radius:12px;background:rgba(7,44,58,.95);color:#fff;box-shadow:0 14px 35px rgba(4,35,45,.24);pointer-events:none;font-size:12px;line-height:1.35;backdrop-filter:blur(8px)}.chart-tooltip>b{display:block;margin-bottom:8px;color:var(--lime);font-size:13px}.chart-tooltip dl{margin:0;display:grid;grid-template-columns:1fr 1fr;gap:5px 12px}.chart-tooltip dl>div{display:contents}.chart-tooltip dt{color:#b9d0d4}.chart-tooltip dd{margin:0;text-align:right;font-weight:800}.chart-tooltip p{margin:9px -2px -2px;padding:8px 9px;border-radius:8px;background:rgba(185,237,89,.12);color:#d9f5a7;font-weight:700}.chart-tooltip[hidden],.hover-line[hidden]{display:none}@media(max-width:680px){.chart-tooltip{width:215px;font-size:11px}.chart-tooltip dl{grid-template-columns:1fr}}

/* Version 18 — electricity plans and tariff outcomes */
.outcome-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:14px}.outcome-card,.battery-flow-card,.comparison-card{padding:20px;border:1px solid var(--line);border-radius:18px;background:linear-gradient(145deg,#fff,#f7fbfb)}.outcome-title{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.outcome-title h3,.comparison-card h3{margin:0;font-size:17px}.outcome-title>strong{padding:6px 9px;border-radius:8px;background:#eaf6f4;color:#187f79;font-size:11px}.outcome-rows{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:14px}.outcome-row{padding:10px 11px;border-radius:10px;background:#edf5f5}.outcome-row span{display:block;color:#647f8a;font-size:11px}.outcome-row strong{display:block;margin-top:3px;font-size:15px}.outcome-row.total{background:var(--navy);color:#fff}.outcome-row.total span{color:#c9dde0}.outcome-row.total strong{color:var(--lime);font-size:18px}.battery-flow-card,.comparison-card{margin-top:14px}.battery-flow-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:14px}.battery-flow-grid div{padding:11px 12px;border-radius:10px;background:#edf5f5}.battery-flow-grid span{display:block;color:#647f8a;font-size:11px}.battery-flow-grid strong{display:block;margin-top:4px;font-size:15px}.comparison-card{display:flex;align-items:center;justify-content:space-between;gap:25px;background:radial-gradient(circle at 90% 0,rgba(185,237,89,.22),transparent 38%),linear-gradient(145deg,#f8fcfc,#eef8f2)}.comparison-card>div>p:not(.kicker){margin:5px 0 0;color:var(--muted);font-size:12px}.comparison-metrics{min-width:340px;display:grid;grid-template-columns:1fr 1fr;gap:8px}.comparison-metrics div{padding:11px;border:1px solid #cce2df;border-radius:11px;background:rgba(255,255,255,.8)}.comparison-metrics span{display:block;color:#66818a;font-size:10px}.comparison-metrics strong{display:block;margin-top:4px;font-size:15px}.comparison-metrics .comparison-total{grid-column:1/-1;background:var(--navy)}.comparison-metrics .comparison-total span{color:#c9dde0}.comparison-metrics .comparison-total strong{color:var(--lime);font-size:19px}
.plan-tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.plan-tabs button{min-height:54px;padding:8px 5px;border:1px solid #d4e4e6;border-radius:11px;background:#f6fafa;color:#496b77;font-size:11px;font-weight:800;line-height:1.25}.plan-tabs button.active{border-color:#159b90;background:linear-gradient(145deg,#dff7ed,#ebfbd1);color:#096c6b;box-shadow:0 0 0 2px rgba(21,155,144,.09)}.plan-summary{margin:12px 0;padding:11px 12px;border-radius:11px;background:#0a3442;color:#d3e5e7;font-size:11px;line-height:1.5}.plan-summary strong{color:var(--lime)}.plan-summary small{display:block;margin-top:6px;color:#89c9c3;font-size:9px;font-weight:800;letter-spacing:.03em}.tariff-fields{display:grid;grid-template-columns:1fr 1fr;gap:9px}.tariff-field{display:block}.tariff-field span{display:block;margin-bottom:5px;color:#5a7782;font-size:11px}.tariff-field div{display:flex;align-items:center;border:1px solid #cfdee1;border-radius:9px;background:#fff;overflow:hidden}.tariff-field input{width:100%;min-width:0;padding:9px 8px;border:0;outline:0;color:var(--ink);font-weight:800}.tariff-field em{padding:0 8px;color:#758d96;font-size:10px;font-style:normal;white-space:nowrap}.tariff-field input:focus{background:#f3fbf9}.run-backtest{width:100%;margin-top:13px;padding:12px;border:0;border-radius:11px;background:linear-gradient(115deg,#0a7778,#159e91);color:#fff;font-size:13px;font-weight:900;box-shadow:0 8px 20px rgba(16,139,132,.2)}.run-backtest:hover{filter:brightness(1.06)}.run-backtest:active{transform:translateY(1px)}.legacy-plan-note{margin:10px 0 0;color:#738b94;font-size:10px;line-height:1.45}
@media(max-width:1300px){.outcome-rows{grid-template-columns:1fr}.battery-flow-grid{grid-template-columns:repeat(2,1fr)}.comparison-card{align-items:flex-start;flex-direction:column}.comparison-metrics{width:100%;min-width:0}}
@media(max-width:680px){.outcome-grid{grid-template-columns:1fr}.outcome-rows{grid-template-columns:1fr 1fr}.battery-flow-grid{grid-template-columns:1fr 1fr}.tariff-fields{grid-template-columns:1fr}.plan-tabs{grid-template-columns:1fr 1fr 1fr}.plan-tabs button{font-size:10px}.comparison-metrics{grid-template-columns:1fr 1fr}}
.dispatch-strategy-control{margin-top:16px;padding:14px;border:1px solid #d4e7e4;border-radius:14px;background:linear-gradient(145deg,#f8fcfc,#eef8f4)}.dispatch-strategy-label{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.dispatch-strategy-label strong{font-size:13px}.dispatch-strategy-label small{color:#6d8790;font-size:10px}.dispatch-strategy-options{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}.dispatch-strategy-options button{padding:11px 9px;border:1px solid #cfe1e3;border-radius:11px;background:#fff;color:var(--ink);text-align:left}.dispatch-strategy-options button strong,.dispatch-strategy-options button small{display:block}.dispatch-strategy-options button strong{font-size:12px}.dispatch-strategy-options button small{margin-top:3px;color:#708991;font-size:9px}.dispatch-strategy-options button.active{border-color:#129b90;background:linear-gradient(145deg,#daf5e8,#ecfad1);box-shadow:0 0 0 2px rgba(18,155,144,.09)}.dispatch-strategy-description{margin:10px 1px 0;color:#52727b;font-size:10px;line-height:1.5}.dispatch-strategy-control.is-disabled{opacity:.48;pointer-events:none}.strategy-comparison-card{margin-top:14px;padding:20px;border:1px solid var(--line);border-radius:18px;background:radial-gradient(circle at 100% 0,rgba(44,183,168,.14),transparent 38%),linear-gradient(145deg,#fff,#f4faf8)}.strategy-comparison-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.strategy-comparison-head h3{margin:0;font-size:17px}.strategy-comparison-head p:not(.kicker){margin:5px 0 0;color:var(--muted);font-size:12px}.strategy-comparison-head>strong{padding:6px 9px;border-radius:8px;background:#eaf6f4;color:#187f79;font-size:11px;white-space:nowrap}.strategy-comparison-table{margin-top:15px;display:grid;grid-template-columns:minmax(150px,1.2fr) 1fr 1fr 1fr;border:1px solid #cfe3e0;border-radius:13px;overflow:hidden}.strategy-comparison-table>div{padding:10px 12px;border-right:1px solid #dcebea;border-bottom:1px solid #dcebea;background:rgba(255,255,255,.84);font-size:12px}.strategy-comparison-table>div:nth-child(4n){border-right:0}.strategy-comparison-table>div:nth-last-child(-n+4){border-bottom:0}.strategy-comparison-table .table-head{background:var(--navy);color:#cfe1e3;font-size:10px;font-weight:800}.strategy-comparison-table .table-head.selected{color:var(--lime)}.strategy-comparison-table .metric-label{color:#58737c}.strategy-comparison-table .metric-value{font-weight:800}.strategy-comparison-table .difference{color:#0b8278;font-weight:800}
@media(max-width:680px){.dispatch-strategy-label{align-items:flex-start;flex-direction:column}.strategy-comparison-card{padding:15px}.strategy-comparison-head{flex-direction:column}.strategy-comparison-table{grid-template-columns:1.15fr 1fr 1fr}.strategy-comparison-table .difference{display:none}.strategy-comparison-table>div:nth-child(4n){display:none}.strategy-comparison-table>div:nth-child(4n+3){border-right:0}.strategy-comparison-table>div:nth-last-child(-n+4){border-bottom:1px solid #dcebea}.strategy-comparison-table>div:nth-last-child(-n+3){border-bottom:0}}
.load-source-options{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:12px}.load-source-options button{padding:11px 10px;border:1px solid #cfe1e3;border-radius:11px;background:#fff;color:var(--ink);text-align:left}.load-source-options button strong,.load-source-options button small{display:block}.load-source-options button strong{font-size:12px}.load-source-options button small{margin-top:3px;color:#708991;font-size:9px}.load-source-options button.active{border-color:#129b90;background:linear-gradient(145deg,#daf5e8,#ecfad1);box-shadow:0 0 0 2px rgba(18,155,144,.09)}.solis-load-summary{margin:0 0 13px;padding:11px 12px;border-radius:11px;background:#0a3442;color:#d4e7e8}.solis-load-summary strong,.solis-load-summary span{display:block}.solis-load-summary strong{color:var(--lime);font-size:11px}.solis-load-summary span{margin-top:4px;font-size:9px;line-height:1.45}.solis-load-summary[hidden]{display:none}#manualLoadControls{transition:opacity .18s ease}#manualLoadControls.is-disabled{opacity:.34;pointer-events:none}

.solis-station-control{margin:14px 0}.solis-station-control label{display:block;font-weight:700;margin-bottom:8px}.solis-station-control select{width:100%;min-height:48px;border:1px solid #c9dfe4;border-radius:12px;padding:10px;background:#f6fafb;color:#083344;font:inherit}.solis-station-control p{font-size:12px;line-height:1.6;color:#5c7d8a;margin:8px 0}.solis-load-summary span{line-height:1.7}

.trace-source-note{font-size:13px;line-height:1.7;color:#486f7c;background:#edf8f6;border-radius:10px;padding:10px 14px;margin:0 0 14px}

.new-plan-comparison{padding:24px;margin-bottom:20px}.new-plan-comparison p{font-size:12px;line-height:1.7}.new-plan-comparison table{width:100%;min-width:720px;border-collapse:collapse}.new-plan-comparison th,.new-plan-comparison td{padding:12px 10px;text-align:right;border-bottom:1px solid #dce8ea;font-size:12px}.new-plan-comparison th:first-child,.new-plan-comparison td:first-child{text-align:left}.new-plan-comparison th{background:#edf6f5}

/* Third strategy keeps existing controls and comparison differences. */
.dispatch-strategy-options button[data-strategy="selfConsumption"]{grid-column:1/-1}
.strategy-comparison-table{grid-template-columns:minmax(125px,1.2fr) repeat(4,minmax(100px,1fr));overflow:auto}.strategy-comparison-table>div:nth-child(n){display:block;border-right:1px solid #dcebea;border-bottom:1px solid #dcebea}.strategy-comparison-table>div:nth-child(5n){border-right:0}.strategy-comparison-table>div:nth-last-child(-n+5){border-bottom:0}
@media(max-width:680px){.strategy-comparison-table{grid-template-columns:minmax(120px,1.2fr) repeat(4,minmax(100px,1fr));overflow-x:auto}}
/* Portfolio controls use the existing teal visual system. */
#portfolioSection details{margin-top:18px;border-top:1px solid #d2e5e7;padding-top:14px}
#portfolioSection summary{cursor:pointer;font-weight:700;color:#087f7c}
#portfolioNote{color:#55727d;line-height:1.8;font-size:12px;margin:16px 0 0}
.control{margin:20px 0}.control-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}
.control-head output{font-weight:800;color:#005b69}.control input[type=range]{width:100%;accent-color:#109d91}
.control input[type=number]{display:block;width:100%;box-sizing:border-box;margin:8px 0;padding:12px;border:1px solid #c8dee4;border-radius:10px;background:#fff;color:#092f40;font:700 16px inherit}
.control small{display:block;color:#607e89;font-size:11px;line-height:1.7}
/* Two battery strategies and their comparison. */
.dispatch-strategy-options{grid-template-columns:1fr 1fr}
.strategy-comparison-table{grid-template-columns:minmax(125px,1.2fr) repeat(3,minmax(100px,1fr))}
.strategy-comparison-table>div:nth-child(n){border-right:1px solid #dcebea;border-bottom:1px solid #dcebea}
.strategy-comparison-table>div:nth-child(4n){border-right:0}
.strategy-comparison-table>div:nth-last-child(-n+4){border-bottom:0}
@media(max-width:680px){.strategy-comparison-table{grid-template-columns:minmax(120px,1.2fr) repeat(3,minmax(100px,1fr))}}
