/* Shared semantic type scale. rem units respect the reader's default font size. */
:root{
 --font-body:1rem;
 --font-title:2.25rem;
 --font-section:1.5rem;
 --font-subheading:1.125rem;
 --font-ui:.875rem;
 --font-meta:.75rem;
 --font-kpi:2rem;
 --font-kpi-compact:1.5rem;
 --font-chart-axis:.75rem;
 --font-chart-value:.875rem;
 --font-chart-category:.875rem;
}
:root body{font-size:var(--font-body)}
:root body main h1{font-size:var(--font-title);line-height:1.2;letter-spacing:-.03em}
:root body main h2{font-size:var(--font-section);line-height:1.3;letter-spacing:-.02em}
:root body main h3{font-size:var(--font-subheading);line-height:1.4}
:root body :is(.prose,.green-article,.green-methods) :is(p,li){font-size:var(--font-body);line-height:1.8}
:root body :is(label,input,select,.nav,.button,.text-button,table,.generator-button,.metric-nav a,.metric-legend,.green-history-legend,.ppa-legend){font-size:var(--font-ui)}
:root body :is(.eyebrow,.tag,.prototype,.green-note,.green-coverage,.green-footer,.metric-footer,.source-line,.chart-caption,.table-hint,.muted,.update-status,.green-load-status,.gas-page caption){font-size:var(--font-meta)}
:root body :is(.green-footer,.metric-footer) p{font-size:var(--font-meta)}
:root body :is(.metric,.green-stat,.metric-stats article,.gas-summary) strong{font-size:var(--font-kpi);line-height:1.3}
:root body .gas-market strong{font-size:var(--font-kpi-compact)}
:root body :is(.metric,.green-stat,.gas-summary,.gas-market) strong small{font-size:var(--font-ui)}
:root body :is(.metric,.green-stat,.metric-stats article,.gas-summary,.gas-market) :is(p,span){font-size:var(--font-meta)}
/* The tiny observer compensates SVG scaling; axis/category/value roles share tokens. */
:root body main svg[viewBox] text{
 font-family:inherit;
 font-size:calc(var(--font-chart-axis) * var(--chart-text-scale,1));
 letter-spacing:normal;
}
:root body main svg[viewBox] :is(.gas-value,.green-chart-value,.chart-value){
 font-size:calc(var(--font-chart-value) * var(--chart-text-scale,1));
}
:root body main svg[viewBox] .green-chart-label{
 font-size:calc(var(--font-chart-category) * var(--chart-text-scale,1));
}
@media(max-width:600px){:root{--font-title:2rem}}
:root body .chart-credit{font-size:var(--font-meta);line-height:1.6;color:var(--muted);margin:10px 0 0;white-space:normal;overflow-wrap:anywhere}
.site-ownership{display:block;background:white;border-top:1px solid var(--line);max-width:none;margin:28px 0 0;padding:24px max(16px,calc((100% - 1216px)/2));color:var(--muted)}
:root body .site-ownership p{font-size:var(--font-meta);margin:6px 0;line-height:1.7}
.site-ownership strong{color:var(--ink)}
.site-ownership a{font-size:var(--font-ui)}

/* Match Gas: preserve chart width rather than squeeze labels on mobile. */
#price-chart{overflow-x:auto;overscroll-behavior-x:contain}
#price-chart svg{min-width:590px}
.price-grid,.price-grid>.chart-card{min-width:0}
.chart-scroll-hint{display:none;font-size:var(--font-meta);color:var(--muted);margin:8px 0}
.dataset-tabs{grid-template-columns:repeat(3,minmax(0,1fr))}
.dlf-source-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin:20px 0}
.dlf-filters{flex-wrap:wrap;gap:16px}.dlf-filters .search-label{flex:1 1 260px}.dlf-filters select{min-width:140px;max-width:100%}.dlf-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,340px);gap:20px}.dlf-grid>*{min-width:0}.dlf-table{min-width:600px}.dlf-table-heading{padding:20px}.dlf-table-heading p{margin:6px 0 0;font-size:var(--font-meta);color:var(--muted)}#dlf-detail dd{overflow-wrap:anywhere}.dlf-grid .pagination{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;gap:12px}
@media(max-width:850px){.dlf-grid{grid-template-columns:minmax(0,1fr)}.dlf-filters label{flex:1 1 140px}.dlf-filters input,.dlf-filters select{width:100%;min-width:0}}
#dlf-detail .green-hash{overflow-wrap:anywhere;font-size:var(--font-meta)}
.reference-table td{vertical-align:top;white-space:normal;min-width:170px}
.reference-table th{white-space:normal}
.reference-table th[scope=row]{min-width:210px}
.reference-sources{scroll-margin-top:20px}
.reference-sources li{overflow-wrap:anywhere}
@media(max-width:600px){.dataset-tabs,.dlf-source-grid{grid-template-columns:1fr}.chart-scroll-hint{display:block}}
/* All data cells and detail labels use the same semantic type scale. */
:root body table tbody :is(td,th){font-size:var(--font-ui)}
:root body table tbody th[scope=row]{text-transform:none;letter-spacing:normal}
:root body :is(.status-list,.detail-card) dt{font-size:var(--font-meta)}
:root body :is(.status-list,.detail-card) dd{font-size:var(--font-ui)}
/* Seven links can wrap at phone/tablet widths without shrinking their text. */
@media(max-width:1100px){.header-inner{flex-wrap:wrap;padding-top:16px;gap:12px}.header nav{flex-basis:100%;margin-left:0;height:auto;min-height:48px;flex-wrap:wrap;justify-content:flex-start;gap:0 20px}.header a.nav{min-height:44px;display:inline-flex;align-items:center}}
@media(max-width:600px){.header nav{gap:0 16px;margin-top:8px}}
