/* Shared chapter layout. The section body owns spacing, never both it and a card row. */
/* Geographic explorers share the card shell, filters and responsive spacing. */
.geographic-explorer__body{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(260px,1fr);gap:12px;padding:12px;align-items:start}
.geographic-explorer__map{min-width:0}
.geographic-explorer__map svg{display:block;width:100%;height:auto;max-height:650px}
.geographic-explorer__readings{display:grid;gap:12px;min-width:0}
.geographic-explorer__readings>:is(div){padding:0;margin:0}
.geographic-explorer .metric-list-card__header{flex-wrap:wrap;gap:12px}
.geographic-explorer .metric-list-card__info p+p{margin-top:8px}
@media(max-width:900px){.geographic-explorer__body{grid-template-columns:minmax(0,1fr)}.geographic-explorer__readings{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:650px){.geographic-explorer__readings{grid-template-columns:minmax(0,1fr)}}
.economy-story{--section-padding:12px 16px 14px;--section-gap:12px}
.economy-story.dashboard-story{display:flex;flex-direction:column;gap:var(--section-gap)}
.dashboard-chapters{display:flex;flex-direction:column;gap:var(--section-gap)}
.economy-story.dashboard-story>.page-opening{margin:0 0 4px}
.economy-story.dashboard-story>.economy-chapter,
.economy-story.dashboard-story>.dashboard-chapters>.economy-chapter{margin:0}
.economy-story .overview-card-body>.dashboard-metrics:has(>.indicator-card){padding:0;margin:0;gap:12px}
.economy-story .dashboard-metrics--4{grid-template-columns:repeat(4,minmax(0,1fr))}
.economy-story .dashboard-metrics--3{grid-template-columns:repeat(3,minmax(0,1fr))}
.economy-story .dashboard-metrics--2{grid-template-columns:repeat(2,minmax(0,1fr))}
.economy-story .dashboard-metrics--1{grid-template-columns:minmax(0,1fr)}
.dashboard-module-controls{display:flex;justify-content:flex-end;margin-bottom:12px}
.dashboard-module-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--section-gap);align-items:start;min-width:0}
.dashboard-module-columns>.metric-list-card{margin:0;min-width:0}
.dashboard-module-columns .metric-list-card__header{flex-wrap:wrap}
.dashboard-module-columns .metric-list-card__controls{min-width:0;max-width:100%}
@media(max-width:1000px){.dashboard-module-columns{grid-template-columns:minmax(0,1fr)}}
.dashboard-story .overview-card-body>.metric-list-card~.metric-list-card,
.dashboard-story .overview-card-body>.dashboard-metrics+.metric-list-card,
.dashboard-story .overview-card-body>.expandable-panel{margin-top:var(--section-gap)}
.economy-story .indexed-comparison>.indexed-comparison__cards{padding:12px;margin:0;gap:12px}
.evidence-table__scroll{overflow:auto;max-width:100%;padding:0 14px 12px}
.evidence-table__scroll .data-table{margin:0;width:100%}
.evidence-table__scroll th{position:sticky;top:0;background:var(--panel);z-index:1}
.evidence-table__findings{margin:0;padding:16px 32px;line-height:1.65;font-size:13px}
.evidence-table__findings li+li{margin-top:10px}
.dashboard-status{font-size:12px;color:var(--muted);line-height:1.6}
/* The builder owns every module boundary, regardless of module type/order.
   Reset legacy margins so disclosures, cards and generated notes cannot touch
   or double the shared gap. Internal card spacing remains untouched. */
.economy-story.dashboard-story .overview-card-body.dashboard-module-stack{display:flex;flex-direction:column;gap:var(--section-gap);min-width:0}
.economy-story.dashboard-story .overview-card-body.dashboard-module-stack>*{margin:0;min-width:0}
.dashboard-story .overview-card-body>.comparison-card+.comparison-card,
.dashboard-story .overview-card-body>.comparison-card+.dashboard-metrics{margin-top:var(--section-gap)}
@media(max-width:1100px){.economy-story .dashboard-metrics--3,.economy-story .dashboard-metrics--4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:650px){.economy-story .dashboard-metrics{grid-template-columns:minmax(0,1fr)}}
.comparison-card__reading{display:grid;gap:4px;text-align:right;min-width:0;max-width:100%;justify-items:end}
.comparison-card__reading .metric-absolute,.comparison-card__metadata{font-size:11px;line-height:1.45;color:var(--muted);overflow-wrap:anywhere}
/* Reusable opening: the same identity and chapter navigation on every page. */
.page-opening{padding:0;overflow:hidden}
.page-opening__body{padding:12px 16px}
.page-opening__top{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
.page-opening__top>.page-opening__identity{flex:1 1 240px}
.page-opening__actions{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:8px;max-width:100%}
.page-opening__actions>form{display:flex;margin:0;padding:0}
.page-opening__actions .page-opening__action{display:inline-flex;align-items:center;justify-content:center;min-height:38px;margin:0;padding:9px 12px;border:1px solid var(--line);border-radius:4px;font:inherit;font-size:12px;line-height:1.4;text-align:center;overflow-wrap:anywhere}
.page-opening__actions .page-opening__action:not(.primary-button){background:var(--panel);color:var(--blue)}
.page-opening__actions .page-opening__action:hover{filter:brightness(.95)}
.page-opening__metadata{margin:8px 0 0;color:var(--muted);font-size:11px;line-height:1.5;overflow-wrap:anywhere}
@media(max-width:600px){.page-opening__actions{justify-content:flex-start;width:100%}}
.page-opening__identity{display:flex;align-items:center;gap:12px;min-width:0}
.page-opening__identity>img{flex:0 0 42px}
.page-opening__identity>div{min-width:0}
.page-opening__identity .eyebrow{font-size:10px;line-height:0.7}
.page-opening__identity h1{margin:7px 0 0;font-size:18px;line-height:0.7;overflow-wrap:anywhere}
.page-opening__description{margin:8px 0 0;color:var(--muted);font-size:12px;line-height:1.6}
.page-opening .economy-nav.page-opening__nav{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;margin:0;padding:0;border:0;border-top:1px solid var(--line);background:var(--line)}
.page-opening .page-opening__nav>a{display:flex;align-items:center;gap:12px;margin:0;padding:12px;border:0;background:var(--panel);min-width:0;font-size:12px;line-height:1.45}
.page-opening .page-opening__nav>a>span{font-weight:700;flex-shrink:0;color:var(--text)}
.page-opening .page-opening__nav>a:hover{background:var(--surface-soft)}
.page-heading:empty{display:none}
@media(max-width:900px){.page-opening .economy-nav.page-opening__nav{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:450px){.page-opening .economy-nav.page-opening__nav{grid-template-columns:minmax(0,1fr)}}
.economy-story .overview-section-card>.overview-card-body,
.economy-story .overview-section-card>.household-grid{padding:var(--section-padding);margin:0;min-width:0}
.economy-story .overview-section-card>.household-grid{gap:var(--section-gap)}
.economy-story .household-grid>*{min-width:0}
.economy-story .overview-section-card .panel-header{gap:12px;flex-wrap:wrap;padding:12px 16px;min-width:0}
.economy-story .overview-section-card .panel-header h2{margin:0;font-size:15px;line-height:1.35;overflow-wrap:anywhere}
.economy-story .overview-section-card .year-control{min-width:0;max-width:100%;flex-wrap:wrap}
.economy-story .overview-section-card .year-control select{min-width:0;max-width:100%}

/* Rows populated by the shared indicator partial retain their column counts. */
.economy-story :is(.headline-metrics,.duo-metrics,.social-metrics):has(>.indicator-card){gap:var(--section-gap);padding:var(--section-padding);margin:0;min-width:0;align-items:stretch}
.economy-story .overview-card-body>:is(.headline-metrics,.duo-metrics,.social-metrics):has(>.indicator-card){padding:0}
.economy-story .overview-section-card>.economy-chapter-heading{padding:10px 16px 9px;margin:0;border-bottom:1px solid var(--line)}

/* Existing inline series charts must fit their parent on narrow screens. */
.economy-story .household-chart{min-width:0;max-width:100%}
/* Trade chapters: introduction, evidence and interpretation follow one spacing rhythm. */
/* One claim-check treatment across chapters; the surrounding body already owns padding. */
.economy-story details.economy-claim{padding:0;margin:12px 16px;border:1px solid color-mix(in srgb,var(--blue) 45%,var(--line));border-left:3px solid var(--blue);border-radius:8px;background:color-mix(in srgb,var(--blue) 7%,var(--panel));min-width:0}
.economy-story .overview-card-body details.economy-claim{margin:12px 0 0}
.economy-story details.economy-claim>summary{display:flex;align-items:flex-start;gap:9px;list-style:none;padding:10px 12px;font-size:12px;font-weight:600;line-height:1.5;color:var(--text);cursor:pointer}
.economy-story details.economy-claim>summary::-webkit-details-marker{display:none}
.economy-story details.economy-claim>summary::before{content:'?';display:grid;place-items:center;flex:0 0 21px;width:21px;height:21px;border:1px solid var(--blue);border-radius:50%;background:color-mix(in srgb,var(--blue) 16%,var(--panel));color:var(--text);font-size:13px;font-weight:700;line-height:1}
.economy-story details.economy-claim>summary::after{content:'+';margin-left:auto;flex-shrink:0;font-size:16px;line-height:1.25;color:var(--muted)}
.economy-story details.economy-claim[open]>summary::after{content:'−'}
.economy-story details.economy-claim>p{width:100%;max-width:none;box-sizing:border-box;margin:0;padding:0 12px 12px;font-size:12px;line-height:1.6;color:var(--muted)}
@media(max-width:650px){
 .economy-story .overview-section-card>.household-grid{grid-template-columns:minmax(0,1fr)}
 .economy-story :is(.headline-metrics,.duo-metrics,.social-metrics):has(>.indicator-card){grid-template-columns:minmax(0,1fr)}
 .economy-story .overview-section-card .panel-header .year-control{width:100%;align-items:flex-start}
}
/* Section information and plain evidence groups share one spacing system. */
.economy-story .section-content{min-width:0;margin:0;padding:0;border:0;box-shadow:none;background:transparent}
.economy-story .section-content>.panel-header{padding:0 0 8px;align-items:center}
.economy-story .panel-intro{max-width:none;line-height:1.65;overflow-wrap:break-word}
.economy-story .panel-intro+.panel-intro{margin-top:8px}
.economy-story .section-content>.panel-intro{margin:0 0 10px;padding:0;font-size:12px;color:var(--muted)}
.economy-story .section-content>.panel-footer{padding:10px 0 0;line-height:1.55;font-size:11px;flex-wrap:wrap}
.economy-story .section-content>.fiscal-ledger-wrap{margin:0;padding:0;max-width:100%;overflow:auto}
.economy-story :is(.fiscal-ledger-wrap,.cofog-table-wrap,.trade-ranking-wrap){min-width:0;overflow-x:auto}
.economy-story :is(.household-method-copy,.energy-method-copy,.economy-reading){max-width:none;line-height:1.65;overflow-wrap:break-word}
.economy-story .energy-series-cards{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;padding:0}
@media(max-width:1100px){.economy-story .energy-series-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:650px){.economy-story .energy-series-cards{grid-template-columns:minmax(0,1fr)}}
.economy-story .energy-sector-series-cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:0}
@media(max-width:650px){.economy-story .energy-sector-series-cards{grid-template-columns:minmax(0,1fr)}}
.economy-story .comparison-card{overflow:hidden}
.economy-story .comparison-card__header{align-items:center}
.economy-story .comparison-card__header .year-control{align-items:center}
.economy-story .energy-bills-subsections{gap:16px}
.economy-story .energy-bills-subsection{display:grid;gap:10px;min-width:0}
.economy-story .energy-bills-subsection+.energy-bills-subsection{border-top:1px solid var(--line);padding-top:16px}
.economy-story .energy-bills-subsection__heading{padding:0;min-width:0}
.economy-story .energy-bills-subsection__heading h3{margin:0;font-size:15px;line-height:1.35}
.economy-story .energy-bills-cards{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:0;margin:0;min-width:0}
.economy-story .energy-bills-subsection>.energy-bills-cards:has(>.indicator-card){padding:0;margin:0;gap:12px}
.economy-story .energy-bills-subsection>.panel-intro{margin:0;padding:0;max-width:none;font-size:12px;line-height:1.6;color:var(--muted)}
.economy-story .energy-quantity-subsections{gap:16px}
.economy-story .energy-quantity-subsection{display:grid;gap:10px;min-width:0}
.economy-story .energy-quantity-subsection+.energy-quantity-subsection{border-top:1px solid var(--line);padding-top:16px}
.economy-story .energy-quantity-subsection__heading{padding:0;min-width:0}
.economy-story .energy-quantity-subsection__heading h3{margin:0;font-size:15px;line-height:1.35}
.economy-story .energy-quantity-subsection>.panel-intro{margin:0;padding:0;max-width:none;font-size:12px;line-height:1.6;color:var(--muted)}
.economy-story .comparison-card__columns{display:grid;grid-template-columns:minmax(0,1.35fr) repeat(2,minmax(125px,1fr));gap:12px;padding:10px 14px 6px;color:var(--muted);font-size:11px}
.economy-story .comparison-card__columns span:not(:first-child){text-align:right}
.economy-story .comparison-card__list{padding:0 14px}
.economy-story .comparison-card__row{display:grid;grid-template-columns:minmax(0,1.35fr) repeat(2,minmax(125px,1fr));gap:12px;align-items:center;padding:10px 0;border-top:1px solid var(--line);min-width:0}
.economy-story .comparison-card__label{display:grid;align-content:center;gap:3px;min-width:0;min-height:58px}
.economy-story .comparison-card__label .collection-title-row{align-items:flex-start}
.economy-story .comparison-card__name{font-size:13px;line-height:1.35;overflow-wrap:anywhere}
.economy-story .comparison-card__description{color:var(--muted);font-size:10px;line-height:1.45;overflow-wrap:anywhere}
.economy-story .comparison-card__value-cell{display:grid;grid-template-columns:minmax(60px,1fr) 140px;align-items:center;justify-items:end;gap:4px 8px;min-width:0}
.economy-story .comparison-card__actions{grid-column:1;grid-row:1 / span 3;align-self:center;justify-self:stretch;display:flex;justify-content:flex-end;align-items:center}
.economy-story .comparison-card__actions .collection-tools{gap:4px;margin:0}
.economy-story .comparison-card__value-cell>:not(.comparison-card__actions){grid-column:2}
.economy-story .comparison-card__value{display:block;min-width:0;max-width:100%;padding:0;color:var(--blue);font-size:16px;font-weight:650;font-variant-numeric:tabular-nums;white-space:normal;overflow-wrap:anywhere;text-align:right}
.economy-story .comparison-card__value:hover{text-decoration:underline}
.economy-story .comparison-card__value-cell .trend-mark{font-size:10px;white-space:nowrap}
.economy-story .comparison-card__spark{width:90px;height:32px;padding:0;color:var(--blue);justify-self:end;cursor:pointer}
.economy-story .comparison-card__spark svg{display:block;width:100%;height:100%}
.economy-story .comparison-card__spark:focus-visible{outline:2px solid var(--blue);outline-offset:3px}
@media(max-width:650px){.economy-story .comparison-card__value-cell{grid-template-columns:minmax(28px,1fr) max-content;column-gap:6px}.economy-story .comparison-card__actions .collection-tools{flex-direction:column}}
@media(max-width:650px){.economy-story .comparison-card__columns,.economy-story .comparison-card__row{grid-template-columns:minmax(0,1fr) repeat(2,minmax(92px,auto));gap:8px}.economy-story .comparison-card__value{font-size:14px}.economy-story .comparison-card__description{font-size:9px}.economy-story .comparison-card__spark{width:70px;height:28px}.economy-story .comparison-card__header .year-control{width:100%;align-items:flex-start}.economy-story .comparison-card__label{min-height:0}}
@media(max-width:850px){.economy-story .energy-bills-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:650px){.economy-story .energy-bills-cards{grid-template-columns:minmax(0,1fr)}}
.metric-bar-list .metric-list__item{padding:7px 0}
.metric-bar-list .metric-list__reading{gap:14px}
.metric-bar-list .metric-bar-reading{display:grid;grid-template-columns:minmax(0,1fr) minmax(120px,auto) minmax(70px,auto);align-items:center;gap:14px}
.metric-bar-label{display:grid;gap:5px;min-width:0;text-align:left}
.metric-bar-name{overflow-wrap:anywhere;line-height:1.3}
.metric-bar-track{display:block;width:100%;height:8px;border-radius:4px;background:var(--line);overflow:hidden}
.metric-bar-track::after{content:'';display:block;width:var(--share);height:100%;background:var(--blue);border-radius:inherit}
.metric-bar-track--negative::after{background:var(--red,#b54747)}
.metric-list-card__info p{margin:0;font-size:12px;line-height:1.6}
.information-panel__text{white-space:pre-wrap;overflow-wrap:anywhere}
.metric-list-card__info p+p{margin-top:6px}
.metric-bar-metadata{font-size:11px;color:var(--muted);font-weight:400}
.metric-bar-track--signed{position:relative}
.metric-bar-track--signed::after{position:absolute;left:var(--bar-start)}
.metric-bar-track--signed::before{content:'';position:absolute;left:50%;height:100%;width:1px;background:var(--muted)}
.metric-bar-list .metric-bar-total{border-top:2px solid var(--line);padding-top:9px}
.metric-bar-list .metric-bar-total .metric-bar-name{font-weight:650}
.metric-bar-list .metric-bar-total .metric-bar-track::after{background:var(--green)}
 .metric-bar-value{min-width:0;text-align:right;white-space:nowrap}
 .metric-bar-value strong{font-size:16px;font-weight:650;color:var(--blue);font-variant-numeric:tabular-nums}
 .metric-bar-share{font-size:13px;color:var(--muted);text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
@media(max-width:650px){.metric-bar-list .metric-bar-reading{grid-template-columns:minmax(0,1fr) auto auto;gap:8px}.metric-list-card__columns--three{grid-template-columns:minmax(0,1fr) auto auto;padding-right:88px}.metric-bar-value strong{font-size:14px}.metric-bar-share{font-size:12px}}
.economy-story :is(.household-method-copy,.energy-method-copy,.economy-reading) p+p{margin-top:10px}
.economy-story .panel-footer{line-height:1.55;overflow-wrap:break-word}
.economy-story .household-method-note{padding:0;min-width:0}
.economy-story .household-method-note>p{padding:10px 12px;margin:0;max-width:none;line-height:1.65}
.economy-story .household-method-note>p+p{padding-top:0}

@media(max-width:650px){.metric-list__reading{font-size:12px;gap:8px}.metric-list__item{gap:8px}}
/* Opt-in shared form controls: retain native keyboard and mobile pickers. */
.file-picker{display:flex;align-items:center;gap:12px;position:relative;min-height:44px;border:1px solid var(--line);border-radius:8px;padding:6px;background:var(--panel);min-width:0}
.file-picker__button{flex-shrink:0;padding:8px 12px;border-radius:5px;background:var(--surface-soft,var(--bg));color:var(--blue)}
.file-picker__name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted)}
.form-controls .file-picker input[type=file]{position:absolute;inset:0;opacity:0;width:100%;height:100%;min-width:0;cursor:pointer}
.file-picker:focus-within{outline:2px solid var(--blue);outline-offset:2px}
.form-controls input:not([type=checkbox]):not([type=radio]):not([type=hidden]),.form-controls textarea {
  box-sizing:border-box;width:100%;min-width:0;min-height:44px;padding:11px 14px;border:1px solid var(--line);border-radius:8px;background:var(--panel);color:var(--text);font:inherit;line-height:1.4;
}
.form-controls textarea{resize:vertical}
.form-controls input[type=file]{padding:6px!important;cursor:pointer}
.form-controls input[type=file]::file-selector-button{font:inherit;padding:8px 12px;margin-right:12px;border:0;border-radius:5px;background:var(--surface-soft,var(--bg));color:var(--blue);cursor:pointer}
.form-controls :is(input,textarea):focus-visible{outline:2px solid var(--blue);outline-offset:2px}
.form-controls input[type=checkbox]{accent-color:var(--blue);width:17px;height:17px}
.form-controls select {
  appearance: none;
  -webkit-appearance: none;
  box-sizing: border-box;
  width: 100%;
  min-width: 0;
  max-width: 100%;
  min-height: 44px;
  padding: 11px 42px 11px 14px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background-color: var(--panel);
  background-image: url("form-chevron.svg");
  background-repeat: no-repeat;
  background-position: right 14px center;
  color: var(--text);
  font: inherit;
  font-weight: 500;
  line-height: 1.4;
  cursor: pointer;
  transition: border-color .15s ease, box-shadow .15s ease, background-color .15s ease;
}
.form-controls select:hover:not(:disabled) {
  border-color: var(--blue);
  background-color: color-mix(in srgb, var(--blue) 4%, var(--panel));
}
.form-controls select:focus-visible {
  border-color: var(--blue);
  outline: 2px solid var(--blue);
  outline-offset: 2px;
  box-shadow: 0 0 0 4px color-mix(in srgb, var(--blue) 12%, transparent);
}
.form-controls select:disabled { opacity: .55; cursor: not-allowed; }
.form-controls select option { color: var(--text); background: var(--panel); }
@media (max-width: 700px) {
  .form-controls select { font-size: 16px; }
}
@media (prefers-reduced-motion: reduce) {
  .form-controls select { transition: none; }
}
@media (forced-colors: active) {
  .form-controls select { appearance: auto; background-image: none; }
}
