:root{--bg:#f7f4ee;--surface:#fffdf8;--ink:#202327;--muted:#68707a;--line:#ded8cc;--shadow:0 20px 60px rgba(31,34,38,0.12)}*{box-sizing:border-box}body,html{margin:0;min-height:100%;background:var(--bg);color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}a{color:inherit;text-decoration:none}a,button{font:inherit}.dashboard-shell,.landing-shell{min-height:100vh}.landing-shell{display:grid;place-items:center;padding:48px 20px}.landing-hero{width:min(960px,100%);display:grid;gap:28px}.dashboard-shell>h1,.hero-copy h1{margin:0;letter-spacing:0;line-height:1.05}.hero-copy h1{font-size:clamp(40px,6vw,76px)}.hero-text{max-width:640px;color:var(--muted);font-size:clamp(18px,2vw,24px);line-height:1.45}.hero-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:26px}.download-link,.primary-action,.secondary-action{min-height:44px;border-radius:8px;border:1px solid var(--line);display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:0 18px;font-weight:800}.download-link,.primary-action{background:var(--ink);color:#fffaf0}.secondary-action{background:var(--surface)}.hero-panel{display:none}.dashboard-shell{padding:28px}.dashboard-locked{filter:blur(2px);opacity:.48;pointer-events:none;-webkit-user-select:none;user-select:none}.developer-credit{margin:0 0 8px;color:var(--muted);text-align:center;font-size:.9rem;font-weight:800}.dashboard-shell>h1{max-width:1180px;margin:0 auto 24px;text-align:center;font-size:clamp(28px,4vw,54px)}.charts-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.chart-panel{min-width:0;overflow:hidden;border:1px solid var(--line);border-radius:8px;background:var(--surface);box-shadow:var(--shadow);padding:16px}.chart-panel>h2{margin:0 0 8px;font-size:clamp(22px,2.3vw,34px);letter-spacing:0}.duck-chart{display:block;width:100%;height:auto}.plot-bg{fill:#fffdfa}.grid-line{stroke:#e6e0d6;stroke-width:1}.axis-line,.x-tick{stroke:#cfc7bb;stroke-width:1.2}.axis-label,.axis-title,.series-label{font-weight:800;letter-spacing:0}.axis-label{fill:#62666c;font-size:14px}.axis-title{fill:#45494f;font-size:16px}.series-label{font-size:18px;paint-order:stroke;stroke:#fffdfa;stroke-width:5px}.download-link{width:max-content;margin:18px auto 0}.contact-gate{position:fixed;inset:0;z-index:20;display:grid;place-items:center;padding:22px;background:rgba(247,244,238,.54);-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px)}.contact-card{width:min(430px,100%);border:1px solid rgba(32,35,39,.12);border-radius:8px;background:rgba(255,253,248,.92);box-shadow:0 20px 80px rgba(31,34,38,.22);padding:24px}.contact-kicker{margin:0 0 6px;color:var(--muted);font-size:.78rem;font-weight:900;letter-spacing:.08em;text-transform:uppercase}.contact-card h2{margin:0 0 18px;font-size:1.35rem;line-height:1.15;letter-spacing:0}.contact-card label{display:grid;gap:7px;margin-bottom:13px;color:#34383d;font-size:.9rem;font-weight:800}.contact-card input{width:100%;min-height:44px;border:1px solid #cfc7bb;border-radius:7px;background:#fffdfa;color:var(--ink);font:inherit;padding:0 12px}.contact-card input:focus{border-color:#3f6fc5;box-shadow:0 0 0 3px rgba(63,111,197,.18);outline:none}.contact-card button{width:100%;min-height:46px;border:1px solid var(--ink);border-radius:8px;background:var(--ink);color:#fffaf0;cursor:pointer;font:inherit;font-weight:900}.contact-card button:disabled{cursor:wait;opacity:.72}.contact-error{min-height:20px;margin:12px 0 0;color:#ad2f22;font-size:.9rem;font-weight:800}.load-dashboard{min-height:100vh;padding:24px;background:#f4f6f5}.load-header{max-width:1280px;margin:0 auto 18px}.load-header h1{margin:0;text-align:center;font-size:clamp(30px,4vw,56px);line-height:1.05;letter-spacing:0}.load-chart-shell,.load-controls,.load-kpis,.load-tabs,.seasonal-peaks{max-width:1280px;margin-right:auto;margin-left:auto}.load-tabs{display:flex;gap:8px;margin-bottom:14px}.load-tabs button{min-height:40px;border:1px solid #c7d0cd;border-radius:8px;background:#ffffff;color:#334047;cursor:pointer;font:inherit;font-weight:900;padding:0 16px}.load-tabs button.is-active{border-color:#202327;background:#202327;color:#fffaf0}.load-controls{display:grid;grid-template-columns:minmax(110px,.55fr) minmax(170px,.75fr) minmax(260px,1.35fr) minmax(260px,1.35fr);gap:12px;margin-bottom:14px}.load-controls.average-controls{grid-template-columns:repeat(2,minmax(160px,240px));margin-right:0;margin-left:0}.load-controls.duration-controls{grid-template-columns:minmax(300px,1fr) minmax(260px,360px);margin-right:0;margin-bottom:12px;margin-left:0}.load-controls label{display:grid;gap:6px;color:#384047;font-size:.82rem;font-weight:900}.load-controls select{min-height:42px;width:100%;border:1px solid #c7d0cd;border-radius:8px;background:#ffffff;color:#1f2529;font:inherit;font-size:.92rem;font-weight:700;padding:0 12px}.mode-control{display:grid;gap:6px;color:#384047;font-size:.82rem;font-weight:900}.mode-control>span{line-height:1.2}.year-picker{display:flex;flex-wrap:wrap;gap:8px}.year-picker label{min-height:36px;border:1px solid #d1dad7;border-radius:8px;display:inline-flex;align-items:center;gap:7px;background:#fbfcfc;color:#263036;cursor:pointer;font-size:.9rem;font-weight:850;padding:0 11px}.year-picker input{margin:0}.load-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:14px}.load-chart-shell,.load-kpis>div{border:1px solid #d6dfdc;border-radius:8px;background:#ffffff;box-shadow:0 14px 38px rgba(34,44,48,.08)}.load-kpis>div{display:grid;gap:4px;min-height:92px;padding:14px}.load-focus span,.load-kpis span,.load-readout span{color:#5e6970;font-size:.78rem;font-weight:900;letter-spacing:.04em;text-transform:uppercase}.load-kpis strong{color:#1f2529;font-size:clamp(24px,3vw,36px);line-height:1}.load-kpis small{color:#657179;font-weight:700}.seasonal-peaks{border:1px solid #d6dfdc;border-radius:8px;background:#ffffff;box-shadow:0 14px 38px rgba(34,44,48,.08);margin-bottom:14px;padding:14px}.seasonal-peaks-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:10px}.seasonal-peak-card h3,.seasonal-peaks h2{margin:0;color:#20262a;letter-spacing:0}.seasonal-peaks h2{font-size:1.05rem}.seasonal-peak-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.seasonal-peak-card{border:1px solid #dbe4e1;border-radius:8px;background:#fbfcfc;padding:10px}.seasonal-peak-card h3{margin-bottom:8px;font-size:.98rem}.seasonal-peak-card button{display:grid;gap:3px;width:100%;border:1px solid #d1dad7;border-radius:8px;background:#ffffff;color:#20262a;cursor:pointer;font:inherit;padding:9px;text-align:left}.seasonal-peak-card button+button{margin-top:8px}.seasonal-peak-card button.is-active{border-color:#202327;box-shadow:inset 0 0 0 1px #202327}.seasonal-peak-card span{color:#5e6970;font-size:.73rem;font-weight:900;letter-spacing:.04em;text-transform:uppercase}.seasonal-peak-card strong{font-size:1.18rem;line-height:1}.seasonal-peak-card small{color:#657179;font-weight:750;line-height:1.25}.load-chart-shell{padding:16px}.load-chart-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:12px}.load-chart-head h2{margin:0;color:#20262a;font-size:clamp(20px,2.2vw,30px);letter-spacing:0}.load-chart-head p{margin:4px 0 0;color:#657179;font-size:.94rem;font-weight:700}.load-focus{display:grid;gap:4px;min-width:220px;text-align:right}.load-focus strong{color:#20262a;font-size:1rem}.mode-toggle{display:inline-flex;gap:6px;border:1px solid #c7d0cd;border-radius:8px;background:#f8faf9;padding:4px}.mode-toggle button{min-height:34px;border:0;border-radius:6px;background:transparent;color:#334047;cursor:pointer;font:inherit;font-size:.86rem;font-weight:900;padding:0 12px}.chart-data-download,.mode-toggle button.is-active{background:#202327;color:#fffaf0}.chart-data-download{min-height:38px;border:1px solid #202327;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;font-size:.9rem;font-weight:900;padding:0 14px;text-decoration:none;white-space:nowrap}.technology-picker{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.technology-picker label{min-height:36px;border:1px solid #d1dad7;border-radius:8px;display:inline-flex;align-items:center;gap:8px;background:#fbfcfc;color:#263036;cursor:pointer;padding:0 12px;font-size:.92rem;font-weight:850}.technology-picker input{margin:0}.tech-swatch{width:12px;height:12px;border-radius:3px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.14)}.chart-and-readout{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:14px;align-items:stretch}.load-stack-chart{min-width:0;width:100%;height:auto;touch-action:none}.load-plot-bg{fill:#fbfcfc}.load-grid-line{stroke:#dfe8e5;stroke-width:1}.load-axis-line,.load-axis-tick{stroke:#aab7b3;stroke-width:1.2}.load-axis-label,.load-axis-title{fill:#4b565d;font-weight:850;letter-spacing:0}.load-axis-label{font-size:13px}.load-axis-title{font-size:15px}.load-demand-line{fill:none;stroke:#111820;stroke-linecap:round;stroke-linejoin:round;stroke-width:3.5}.load-net-demand-line{fill:none;stroke:#2a67b1;stroke-dasharray:8 7;stroke-linecap:round;stroke-linejoin:round;stroke-width:2.6}.load-hover-line{stroke:rgba(17,24,32,.48);stroke-width:1.5;stroke-dasharray:4 5}.load-readout{border:1px solid #d6dfdc;border-radius:8px;background:#f8faf9;padding:14px}.load-readout h3{margin:0 0 12px;color:#20262a;font-size:1rem;line-height:1.25}.load-readout>div{display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid #dbe4e1;padding:9px 0}.load-readout>div:first-of-type{border-top:0}.load-readout strong{color:#20262a;white-space:nowrap}.load-readout span{display:inline-flex;align-items:center;gap:7px;text-transform:none;letter-spacing:0}.load-readout i{width:10px;height:10px;border-radius:2px;display:inline-block}.annual-tech-shell{margin-top:14px}.annual-chart-head{align-items:center}.annual-technology-picker{margin-bottom:10px}.annual-chart-layout{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:14px;align-items:stretch}.annual-tech-chart{min-width:0;width:100%;height:auto;touch-action:none}.annual-tech-line{fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8;opacity:.92}.annual-hover-layer{pointer-events:none}.annual-hover-dot{stroke:#ffffff;stroke-width:2}.annual-readout>span{display:block;margin-bottom:4px;text-transform:uppercase}.averages-shell{display:grid;gap:12px}.average-mode-note{margin:0;color:#5f6a70;font-size:.95rem;font-weight:750}.average-mode-note strong{color:#20262a}.average-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.average-card{min-width:0;border:1px solid #d6dfdc;border-radius:8px;background:#fbfcfc;padding:12px}.average-card-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.average-card h3{margin:0;color:#20262a;font-size:1.05rem;letter-spacing:0}.average-card p,.average-card-head span{color:#657179;font-size:.78rem;font-weight:850}.average-card p{margin:3px 0 8px}.average-mini-chart{display:block;width:100%;height:auto;touch-action:none}.average-demand-line{stroke-width:2.4}.average-net-demand-line{stroke-width:2}.average-hover-zone{fill:rgba(255,255,255,0);pointer-events:all}.average-tooltip{pointer-events:none}.average-tooltip-box{fill:rgba(255,255,255,.96);stroke:#c7d0cd;stroke-width:1;filter:drop-shadow(0 8px 14px rgba(31,37,41,.18))}.average-tooltip-dot{fill:#111820;stroke:#ffffff;stroke-width:2}.average-tooltip-label,.average-tooltip-title,.average-tooltip-value{fill:#20262a;letter-spacing:0}.average-tooltip-title{font-size:12px;font-weight:900}.average-tooltip-label,.average-tooltip-value{font-size:10px;font-weight:800}.average-tooltip-label{fill:#4f5c63}@media (max-width:900px){.annual-chart-layout,.average-grid,.chart-and-readout,.charts-grid,.load-controls,.load-kpis,.seasonal-peak-grid{grid-template-columns:1fr}.load-focus{min-width:0;text-align:left}.annual-chart-head{display:grid}.load-controls.average-controls,.load-controls.duration-controls{grid-template-columns:1fr}}@media (max-width:680px){.dashboard-shell{padding:18px}.chart-panel{padding:12px}.download-link{width:100%}.contact-card{padding:20px}.load-dashboard{padding:16px}.load-chart-shell{padding:12px}.load-chart-head{display:grid}}