
:root{--bg:#f1f6fa;--ink:#14243d;--muted:#687b93;--line:#e0e9f2;--blue:#3977db;--teal:#07978e;--amber:#cb831a;--shadow:0 10px 30px rgba(23,54,91,.055);--surface:#fff}
*{box-sizing:border-box}html{scroll-behavior:smooth}
body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;background:radial-gradient(ellipse at 5% 0%,#eaf5fc,transparent 42%),linear-gradient(180deg,#f4f8fc,#f7f9fd);color:var(--ink)}
.container{max-width:1560px;margin:0 auto;padding:22px 30px 48px}
.top{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:0 0 21px}
.logo{display:flex;align-items:center;gap:13px}.mark{width:46px;height:46px;border-radius:14px;display:grid;place-items:center;font-size:25px;color:#fff;background:linear-gradient(140deg,#008e82,#1064a3);box-shadow:0 9px 21px rgba(8,111,131,.18)}
.eyebrow,.overline{font-size:10px;letter-spacing:1.5px;font-weight:850;text-transform:uppercase;color:#087b86}
.brand{font-size:19px;font-weight:850;letter-spacing:-.6px}.top-actions{display:flex;gap:14px;align-items:center}
.pill{display:inline-flex;align-items:center;gap:6px;background:#e8f0ff;border:1px solid #d7e4fc;color:#285cbf;border-radius:50px;font-size:12px;font-weight:770;padding:8px 13px}
.edition{font-size:10px;font-weight:850;letter-spacing:.8px;color:#6b8597}
.hero{isolation:isolate;position:relative;overflow:hidden;min-height:270px;border-radius:24px;padding:37px 40px;background:linear-gradient(90deg,rgba(7,31,64,.99) 0%,rgba(10,45,77,.97) 43%,rgba(8,58,84,.72) 69%,rgba(7,54,80,.2) 100%),url("energy-landscape.svg") 65% 57%/cover no-repeat;color:#fff;box-shadow:0 18px 38px rgba(22,53,83,.14);display:flex;align-items:center;gap:34px;border:1px solid rgba(255,255,255,.09)}
.hero-copy{flex:1;max-width:760px;position:relative;z-index:1}.hero-kicker{color:#8debd7;font-size:11px}
.hero h1{font-size:clamp(31px,3.4vw,49px);letter-spacing:-1.7px;line-height:1.09;margin:15px 0 14px;font-weight:870;color:white}
.hero h1 span{color:#70eee0}.hero p{font-size:14px;max-width:645px;line-height:1.75;color:#d5e8f4;margin:0}
.hero-right{min-width:245px;max-width:278px;width:25%;position:relative;z-index:1;padding:19px;background:rgba(4,40,63,.54);border:1px solid rgba(255,255,255,.17);border-radius:18px;backdrop-filter:blur(7px);margin-left:auto}
.smallcaps{font-size:10px;font-weight:850;color:#dcf2f7;letter-spacing:1px}
.big{font-size:51px;font-weight:900;line-height:1.12;letter-spacing:-2px;margin:8px 0}.big .total{font-size:25px;font-weight:700;opacity:.75;letter-spacing:0}
.bar{height:12px;border-radius:30px;background:rgba(255,255,255,.2);overflow:hidden}.bar span{display:block;height:100%;background:linear-gradient(90deg,#4af3cf,#86dbea);border-radius:30px;max-width:100%;width:0}
.hero-progress-note{font-size:11px;line-height:1.6;color:#d3e9f1;margin-top:12px}
.grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:16px 0 18px}
.kpi{border:1px solid var(--line);border-radius:17px;min-height:119px;background:#fff;display:flex;align-items:center;gap:13px;position:relative;overflow:hidden;padding:18px 17px;box-shadow:var(--shadow)}
.kpi-icon{width:47px;height:47px;border-radius:16px;display:grid;place-items:center;flex:0 0 47px;font-size:24px;font-weight:800;z-index:1}
.kpi-blue .kpi-icon{color:#2e70d9;background:#e3efff}.kpi-teal .kpi-icon{color:#078775;background:#d9fbf0}.kpi-purple .kpi-icon{color:#7959c9;background:#efe7ff}.kpi-gold .kpi-icon{color:#c77d10;background:#fff1d6}
.kpi-inner{position:relative;z-index:1}.k-label{font-size:12px;color:#465f7b;font-weight:780}.k-number{font-size:clamp(23px,2vw,32px);font-weight:880;letter-spacing:-.65px;margin:7px 0 3px;line-height:1.05}.k-foot{font-size:10px;line-height:1.5;color:#74879c}
.kpi-teal .k-number{color:#078c86}.kpi-purple .k-number{color:#7454c9}.kpi-gold .k-number{color:#d18416}
.kpi-decoration{position:absolute;right:-37px;bottom:-57px;border:18px solid currentColor;border-radius:50%;width:135px;height:135px;opacity:.055}.kpi-blue{color:#2863ca}.kpi-teal{color:#009c92}.kpi-purple{color:#9266e5}.kpi-gold{color:#d88b0f}
.analytics{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:0 0 24px}
.analytics-card,.insight-card{background:#fff;border:1px solid var(--line);box-shadow:var(--shadow);border-radius:18px;padding:20px 22px;min-width:0}
.analytics-top{display:flex;gap:12px;justify-content:space-between;align-items:start}.analytics-top h2{font-size:17px;font-weight:850;letter-spacing:-.3px;margin:5px 0 14px}
.subtle{color:#8493a6;font-size:12px;font-weight:600}.analytics-meta{font-size:10px;background:#eff6fd;border:1px solid #e1ebf4;color:#58758f;padding:6px 8px;border-radius:20px;white-space:nowrap}
.tech-visual{display:flex;align-items:center;gap:25px}.donut{width:150px;height:150px;flex:0 0 150px;border-radius:50%;background:conic-gradient(#e7eef7 0 100%);display:grid;place-items:center}
.donut-center{height:100px;width:100px;border-radius:50%;background:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;box-shadow:0 0 0 1px #ecf0f5}.donut-center strong{font-size:22px;font-weight:900}.donut-center span{font-size:10px;color:#8493a6;text-align:center}
.tech-breakdown{flex:1;min-width:0}.tech-row{display:grid;grid-template-columns:100px 50px 1fr;align-items:center;gap:9px;margin:10px 0}
.tech-name{font-size:12px;font-weight:790}.tech-name i{display:inline-block;width:10px;height:10px;margin-right:7px;border-radius:50%}.tech-percent{font-size:11px;color:#61758b;text-align:right}
.tech-bar,.state-track{height:10px;background:#edf2f7;border-radius:20px;overflow:hidden}.tech-bar span,.state-track span{display:block;height:100%;border-radius:20px}
.tech-mw{font-size:10px;color:#73849a;margin-left:0;grid-column:1/4}
.state-chart{margin:10px 0 0}.state-row{display:grid;grid-template-columns:minmax(115px,150px) 1fr 93px;align-items:center;gap:11px;margin:15px 0;font-size:12px}
.state-label{color:#415a79;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.state-track span{background:linear-gradient(90deg,#53bfcb,#0d8c9f)}
.state-value{text-align:right;font-size:11px;font-weight:830;color:#264561}
.sectionline{display:flex;align-items:end;justify-content:space-between;gap:13px;margin:26px 0 12px}
.sectionline h2{font-size:21px;letter-spacing:-.5px;margin:0;font-weight:850}.section-desc{font-size:12px;line-height:1.6;color:#6a8196;margin:6px 0 0}
.chip-lite{font-size:11px;white-space:nowrap;background:#e8f7f3;color:#0d7468;font-weight:800;border-radius:40px;padding:8px 12px}
.notice{border:1px solid #f5e2ae;border-left:4px solid #e7aa30;background:#fff9e8;padding:12px 15px;border-radius:12px;font-size:12px;color:#8c6020;line-height:1.6}
.filters{display:grid;grid-template-columns:2fr 1fr 1fr;gap:11px;margin:13px 0}
.filters select,.search-field{background:#fff;border:1px solid #d5e1ed;border-radius:11px;min-width:0;height:46px;color:#263c58;box-shadow:0 3px 10px rgba(28,66,107,.025)}
.filters select{padding:0 13px;font:inherit;font-size:13px}.search-field{display:flex;align-items:center;padding:0 12px;gap:7px;color:#587590}
.search-field>span{font-size:21px}.search-field input{border:0;outline:0;min-width:0;flex:1;font:inherit;font-size:13px;color:#233e59}
.search-field:focus-within,.filters select:focus-visible{outline:3px solid #b7e7ec;outline-offset:1px}
.layout{display:grid;grid-template-columns:minmax(0,1fr) 326px;gap:15px;align-items:start}
.tablewrap,.detail{border:1px solid var(--line);border-radius:17px;background:#fff;box-shadow:var(--shadow)}
.tablewrap{overflow-x:auto}table{width:100%;border-collapse:collapse;text-align:left;white-space:nowrap}
th{font-size:10px;letter-spacing:.45px;font-weight:830;text-transform:uppercase;color:#677e97;background:#f7fafd;border-bottom:1px solid #e5edf4;padding:13px 11px}
td{font-size:12px;color:#344e6b;padding:13px 11px;border-bottom:1px solid #edf2f7}
tbody tr:last-child td{border-bottom:0}tbody tr[data-id]{cursor:pointer}tbody tr:hover,tbody tr.active{background:#eaf5ff}tbody tr.active td:first-child{box-shadow:inset 3px 0 #3083da}
.name{font-size:12px;font-weight:840;color:#193654;white-space:normal;min-width:125px}.mini{font-size:10px;color:#8496a8;margin-top:5px}
.tech-tag{background:#f0f5fb;border-radius:14px;padding:5px 8px;font-size:11px;font-weight:780}.tech-tag.solar{background:#fff5df;color:#a1680e}.tech-tag.wind{background:#e6f3ff;color:#1a72a9}.tech-tag.hybrid{background:#eee7fc;color:#7245a9}
.tag{font-size:10px;white-space:normal;display:inline-block;max-width:270px;line-height:1.5;background:#edf4ff;color:#2561b8;padding:6px 9px;border-radius:20px;font-weight:780}.tag.amber{background:#fff2df;color:#aa660e}.tag.green{background:#e2f8ee;color:#08795b}
.detail{padding:21px;position:sticky;top:12px}.aside-top{display:flex;justify-content:space-between;gap:8px}.detail-id{font-size:10px;color:#8a9ab0}
.detail h3{font-size:20px;letter-spacing:-.3px;line-height:1.22;margin:10px 0 15px}.detailrow{display:grid;grid-template-columns:125px minmax(0,1fr);gap:8px;border-top:1px solid #edf1f6;padding:10px 0;align-items:start}
.detailrow b{font-size:10px;text-transform:none;color:#617a96}.detailrow span{font-size:11px;line-height:1.5;color:#264361;overflow-wrap:anywhere}
.detail-summary{padding:12px;background:#fff4e6;border-radius:10px;color:#99621d;font-size:11px;line-height:1.6;margin-bottom:11px}
.detail-source{margin-top:10px;color:#647b91;font-size:11px;line-height:1.5}
.source{display:inline-flex;align-items:center;gap:5px;margin:10px 6px 0 0;padding:10px 12px;border-radius:10px;background:#117b87;color:white;text-decoration:none;font-size:11px;font-weight:800}.source:hover{background:#096271}.source.secondary{color:#2365ad;border:1px solid #cfdff3;background:#f6f9ff}
.geography-section,.insight-section{margin-top:26px}.insight-grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:15px}
.overline{color:#00848b}.insight-card h3{font-size:16px;margin:8px 0 12px}.context-note{font-size:11px;color:#647d94;line-height:1.6}.stack-legend{margin-top:13px}.capacity-breakdown{grid-template-columns:repeat(3,1fr)}
.callout{margin:22px 0 0;border:1px solid #dbe9f8;background:#ebf5ff;border-radius:14px;padding:16px;display:flex;gap:13px;align-items:center;color:#315d84;font-size:12px;line-height:1.6}.callout .shield{font-size:22px;color:#068c91}.callout strong{color:#153d60}
.footer{text-align:center;color:#7b8da0;font-size:11px;margin-top:26px;line-height:1.7}
@media(max-width:1150px){.layout{grid-template-columns:minmax(0,1fr) 305px}.analytics{grid-template-columns:1fr 1fr}.tech-visual{gap:13px}.donut{width:120px;height:120px;flex-basis:120px}.donut-center{width:77px;height:77px}.donut-center strong{font-size:17px}.tech-row{grid-template-columns:70px 45px 1fr}.tech-mw{display:none}}
@media(max-width:950px){.container{padding:20px 20px 44px}.layout,.analytics,.insight-grid{grid-template-columns:1fr}.detail{position:static}.hero{gap:20px}.grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){.container{padding:13px 12px 35px}.edition{display:none}.top{margin-bottom:12px}.brand{font-size:15px}.top-actions .pill{font-size:10px;max-width:120px;text-align:center}.hero{display:block;min-height:unset;padding:25px 19px;background-position:58% center}.hero h1{font-size:33px;letter-spacing:-1px}.hero p{font-size:12px}.hero-right{max-width:none;width:100%;margin-top:18px;padding:13px}.big{font-size:37px}.grid{gap:10px;margin:12px 0}.kpi{padding:12px;min-height:114px;align-items:start;gap:9px}.kpi-icon{width:33px;height:33px;flex-basis:33px;font-size:19px;border-radius:10px}.kpi .k-number{font-size:23px}.kpi .k-label{font-size:10px}.kpi .k-foot{font-size:9px}.analytics-card{padding:15px}.analytics-top{display:block}.analytics-meta{display:inline-block;margin-bottom:11px}.tech-visual{gap:15px}.donut{height:105px;width:105px;flex-basis:105px}.donut-center{height:70px;width:70px}.tech-row{grid-template-columns:70px 32px 1fr;font-size:10px}.state-row{grid-template-columns:90px 1fr 74px;gap:7px;margin:12px 0}.state-label,.state-value{font-size:10px}.sectionline{display:block}.sectionline .chip-lite{display:inline-block;margin-top:9px}.filters{grid-template-columns:1fr 1fr}.search-field{grid-column:1/3}.detailrow{grid-template-columns:106px 1fr}.callout{align-items:start}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
