/* Microreactor opportunity map — layout on top of the Antares tokens.
   Hard edges, hairlines instead of shadows, red reserved for data.
   Tabbed IA: one panel visible at a time; [hidden] is the switch. */

*,*::before,*::after{box-sizing:border-box}
body{overflow-x:hidden}
[hidden]{display:none!important}

.wrap{max-width:var(--content-max);margin:0 auto;padding:0 var(--gutter-page)}
@media(min-width:900px){.wrap{padding:0 var(--gutter-page-lg)}}

/* ---------- nav + tabs ---------- */
.nav{position:sticky;top:0;z-index:40;background:rgba(12,10,9,.92);backdrop-filter:var(--blur-panel);
  border-bottom:1px solid var(--border-subtle);padding:var(--space-3) 0}
.navrow{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2) var(--space-6)}
.wordmark{font-weight:var(--weight-bold);letter-spacing:var(--track-wordmark);text-transform:uppercase;
  font-size:var(--size-label);white-space:nowrap;margin-right:auto}
.wordmark b{color:var(--antares-red);font-weight:var(--weight-bold)}
@media(min-width:900px){.wordmark{font-size:var(--size-index)}}
.tabs{display:flex;flex-wrap:wrap;gap:var(--space-1)}
.tab{appearance:none;background:transparent;border:none;border-bottom:2px solid transparent;
  color:var(--text-secondary);cursor:pointer;padding:var(--space-2) var(--space-3);
  font-size:13px;font-weight:var(--weight-medium);letter-spacing:var(--track-nav);text-transform:uppercase;
  font-family:var(--font-core);transition:var(--transition-control);white-space:nowrap;
  touch-action:manipulation}
@media(min-width:768px){.tab{font-size:14px;padding:var(--space-2) var(--space-3)}}
/* Nine tabs on one row from 1280px: at 15px with 16px padding the strip needed
   ~1,240px and parked Sources alone on a second row, 129px of chrome on a
   800px-tall laptop screen (UAT 2026-09-26). */
@media(min-width:1280px){.tab{letter-spacing:.07em;padding:var(--space-2) 10px}
  .tabs{flex-wrap:nowrap}}
.tab:hover{color:var(--text-primary)}
.tab[aria-selected="true"]{color:var(--text-primary);border-bottom-color:var(--antares-red)}
@media(pointer:coarse){.tab{min-height:44px;padding:var(--space-3)}}
@media(max-width:767px){
  .navrow{display:block}
  .wordmark{display:block;margin:0 0 var(--space-1)}
}
/* Below 1280px the nine tabs do not fit one row, so the strip scrolls instead of
   wrapping (wrapping cost 143px of sticky chrome at 768px). */
@media(max-width:1279px){
  .tabs{width:100%;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;
    -webkit-overflow-scrolling:touch}
  .tabs::-webkit-scrollbar{display:none}
  .tab{flex:0 0 auto}
  /* The strip scrolls; a fade on whichever edge hides more tabs says so.
     app.js toggles .more-left / .more-right from the strip's scroll position. */
  .navrow{position:relative}
  .navrow::before,.navrow::after{content:"";position:absolute;bottom:0;width:36px;height:44px;
    pointer-events:none;opacity:0;transition:opacity var(--dur-fast) var(--ease-standard)}
  /* Inset by the page gutter so the fade sits on the strip's clipped edge. */
  .navrow::before{left:var(--gutter-page);background:linear-gradient(to left,transparent,var(--surface-page))}
  .navrow::after{right:var(--gutter-page);background:linear-gradient(to right,transparent,var(--surface-page))}
  .navrow.more-left::before,.navrow.more-right::after{opacity:1}
}
@media(min-width:900px) and (max-width:1279px){
  .navrow::before{left:var(--gutter-page-lg)}
  .navrow::after{right:var(--gutter-page-lg)}
}

/* ---------- type helpers ---------- */
.eyebrow{font-size:var(--size-label);letter-spacing:var(--track-label);text-transform:uppercase;
  color:var(--antares-red);font-weight:var(--weight-medium);margin-bottom:var(--space-4)}
.eyebrow.muted{color:var(--text-tertiary)}
h1{font:var(--text-display-1);letter-spacing:var(--track-display)}
h2{font:var(--text-display-2);letter-spacing:var(--track-display)}
h3{font-size:var(--size-heading-2)}
.lede{font-size:var(--size-body-lg);line-height:var(--lh-body-lg);color:var(--text-secondary);
  max-width:var(--measure-prose)}
.prose{color:var(--text-secondary);max-width:none}
.mono{font-family:var(--font-mono);font-size:var(--size-body-sm)}

section[role="tabpanel"]{padding:var(--space-12) 0 var(--space-24)}
/* Panels are focusable (tabindex=0) so keyboard users land on them after the
   tab; they keep the global focus ring — removing it left keyboard focus
   invisible (review finding, 2026-08-21). */
.sechead{margin-bottom:var(--space-10)}
.subhead{margin:var(--space-16) 0 var(--space-6)}
.subhead h3{padding-bottom:var(--space-3);border-bottom:1px solid var(--border-default)}
.subhead .prose{margin-top:var(--space-3)}

/* ---------- inline citations ---------- */
.cite{display:inline-block;font-family:var(--font-mono);font-size:var(--size-caption);
  color:var(--text-tertiary);text-decoration:none;margin-left:var(--space-1);
  vertical-align:super;line-height:1}
.cite:hover{color:var(--antares-red);opacity:1}
/* WCAG 2.2 target size (24px) on touch without changing the desktop look: the
   chips were 12x14px and sat edge to edge. */
@media(pointer:coarse){.cite{padding:6px 3px;margin-left:0;min-width:24px;text-align:center}}
.nosrc{font-family:var(--font-mono);font-size:var(--size-caption);color:var(--antares-red);
  margin-left:var(--space-1);vertical-align:super;line-height:1;white-space:nowrap}

/* ---------- hero ---------- */
.hero{padding:var(--space-16) 0 var(--space-12);border-bottom:1px solid var(--border-subtle)}
.kicker{font-family:var(--font-mono);font-size:var(--size-caption);text-transform:uppercase;
  letter-spacing:var(--track-label);color:var(--antares-red);margin:0 0 var(--space-4)}
.hero h1{max-width:16ch;margin-bottom:var(--space-6)}
/* Five stats. Explicit column counts per band: auto-fit against a known count
   strands dead cells in the last row (DESIGN.md 12.18). */
.stats{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;
  background:var(--border-subtle);border:1px solid var(--border-subtle);margin-top:var(--space-10)}
/* 640-1023px: three tiles then two, on a six-track grid, so the fifth stat never
   leaves a dead cell (DESIGN.md 8.9; the 3-column version did, UAT 2026-09-26). */
@media(min-width:640px) and (max-width:1023px){.stats{grid-template-columns:repeat(6,1fr)}
  .stats .stat{grid-column:span 2}.stats .stat:nth-child(n+4){grid-column:span 3}}
@media(min-width:1024px){.stats{grid-template-columns:repeat(5,1fr)}}
.stat{background:var(--surface-page);padding:var(--space-6);display:block;
  text-decoration:none;color:inherit;transition:background var(--transition-control)}
.stat:hover{background:var(--surface-plate)}
.stat:hover .k{color:var(--text-primary)}
.stat .n{font-size:var(--size-heading-1);font-weight:var(--weight-semibold);
  letter-spacing:var(--track-heading);display:block;font-variant-numeric:tabular-nums}
.stat .n.accent{color:var(--antares-red)}
.stat .k{font-size:var(--size-label-sm);letter-spacing:var(--track-label);text-transform:uppercase;
  color:var(--text-tertiary);margin-top:var(--space-2);display:block}

/* ---------- sub-tabs ---------- */
/* DESIGN.md 8.7: a second, LIGHTER tablist inside the panel, underline style,
   never boxed. Subordination is carried by colour, not size: --size-caption and
   --size-label are both 12px, so the weight difference is the neutral underline
   against the primary nav's accent red, plus tertiary idle text against the
   primary's secondary. The strip wraps rather than scrolls, because a
   sub-section parked off the right edge is unreachable in practice. */
.subtabs{display:flex;flex-wrap:wrap;column-gap:var(--space-6);row-gap:var(--space-1);
  margin-bottom:var(--space-8);border-bottom:1px solid var(--border-subtle)}
.subtab{appearance:none;background:transparent;border:none;cursor:pointer;
  border-bottom:2px solid transparent;margin-bottom:-1px;
  padding:var(--space-2) 0 var(--space-3);color:var(--text-tertiary);
  font-family:var(--font-core);font-size:var(--size-index);font-weight:var(--weight-medium);
  letter-spacing:var(--track-nav);text-transform:uppercase;
  transition:var(--transition-control);touch-action:manipulation}
.subtab:hover{color:var(--text-primary)}
.subtab[aria-selected="true"]{color:var(--text-primary);border-bottom-color:var(--text-primary)}
@media(pointer:coarse){.subtab{min-height:44px}}

/* Costs: keep a genuine $1,950/MWh Alaska rate visible without letting it
   compress every normal comparison into an indistinguishable strip. */
.costread{margin-bottom:var(--space-6)}
.costoutlier{display:grid;grid-template-columns:auto 1fr auto;gap:var(--space-3);align-items:baseline;
  margin:var(--space-5) 0;padding:var(--space-4);border:1px solid var(--border-subtle);
  background:var(--surface-sunken);font-size:var(--size-body-sm)}
.costoutlier .k{font-size:var(--size-label-sm);letter-spacing:var(--track-label);text-transform:uppercase;
  color:var(--antares-red)}
.costoutlier .nm{color:var(--text-primary);font-weight:var(--weight-medium)}
.costoutlier .val{font-family:var(--font-mono);color:var(--text-primary);white-space:nowrap}
.costoutlier .note{grid-column:2/-1;color:var(--text-tertiary);font-size:var(--size-caption)}
@media(max-width:640px){.costoutlier{grid-template-columns:1fr auto}.costoutlier .k{grid-column:1/-1}.costoutlier .note{grid-column:1/-1}}

/* ---------- track filter ---------- */
.filters{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-8)}
.chip{height:var(--control-height-sm);padding:0 var(--space-4);background:transparent;cursor:pointer;
  border:1px solid var(--border-default);color:var(--text-secondary);border-radius:var(--radius-control);
  font:var(--text-label);letter-spacing:var(--track-nav);text-transform:uppercase;
  transition:var(--transition-control);font-family:var(--font-core);touch-action:manipulation}
.chip:hover{border-color:var(--border-strong);color:var(--text-primary)}
.chip[aria-pressed="true"]{background:var(--antares-red);border-color:var(--antares-red);color:var(--text-on-accent)}
.chip .c{opacity:.7;margin-left:var(--space-2);font-variant-numeric:tabular-nums}
@media(pointer:coarse){.chip{height:var(--control-height)}}

/* ---------- opportunity rows ---------- */
.rows{border-top:1px solid var(--border-subtle)}
.row{border-bottom:1px solid var(--border-subtle);padding:var(--space-6) 0}
.rowtop{display:grid;grid-template-columns:1fr auto;gap:var(--space-4);align-items:start;cursor:pointer;
  position:relative}
.rowtop:hover .rowname{color:var(--antares-red)}

.rowtop:hover{background:linear-gradient(to right,transparent,var(--surface-raised))}
.rowmore{margin-left:auto;font-family:var(--font-mono);font-size:var(--size-caption);text-transform:uppercase;
  letter-spacing:var(--track-label);color:var(--antares-red);border:1px solid var(--antares-red-40);
  padding:2px var(--space-2);white-space:nowrap}
.rowmore::after{content:" \25BE";display:inline-block;transition:transform var(--dur-fast) var(--ease-standard)}
.row.open .rowmore::after{transform:rotate(180deg)}
.rowtop:hover .rowmore{background:var(--antares-red);color:var(--text-on-accent)}
.rowname{font-size:var(--size-heading-3);font-weight:var(--weight-semibold);
  letter-spacing:var(--track-heading);transition:var(--transition-control)}
.rowmeta{display:flex;flex-wrap:wrap;gap:var(--space-4);margin-top:var(--space-2);
  font-size:var(--size-body-sm);color:var(--text-tertiary)}
.rowmeta .owner{color:var(--text-secondary)}
.pill{font-size:var(--size-label-sm);letter-spacing:var(--track-label);text-transform:uppercase;
  padding:var(--space-1) var(--space-3);border:1px solid var(--border-default);
  border-radius:var(--radius-control);color:var(--text-secondary);white-space:nowrap;align-self:start}
.pill.gov{border-color:var(--antares-red-40);color:var(--antares-red)}
.detail{display:none;padding-top:var(--space-6)}
.row.open .detail{display:block}
.row.open .rowname{color:var(--antares-red)}
.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--space-6)}
.field .k{font-size:var(--size-label-sm);letter-spacing:var(--track-label);text-transform:uppercase;
  color:var(--text-tertiary);display:block;margin-bottom:var(--space-1)}
.field .v{font-size:var(--size-body-sm);color:var(--text-primary)}
.field .v.none{color:var(--antares-red);font-family:var(--font-mono);font-size:var(--size-caption)}
.srcs{margin-top:var(--space-6);padding-top:var(--space-4);border-top:1px solid var(--border-subtle)}
.srcs a{display:inline-block;font-size:var(--size-body-sm);color:var(--text-secondary);
  text-decoration:underline;text-underline-offset:3px;margin-right:var(--space-4)}
.srcs a:hover{color:var(--antares-red);opacity:1}
.srcs .sn,.vsrcs .sn{font-family:var(--font-mono);font-size:var(--size-caption);
  color:var(--text-tertiary);margin-right:var(--space-2)}
.gapnote{margin-top:var(--space-4);padding:var(--space-4);border-left:2px solid var(--antares-red);
  background:var(--antares-red-08);font-size:var(--size-body-sm);color:var(--text-secondary)}
.gapnote li{margin-bottom:var(--space-2)}
.gapnote ul{margin:0;padding-left:var(--space-5)}

/* ---------- cost chart ---------- */
.costunits{font-size:var(--size-body-sm);color:var(--text-secondary);max-width:var(--measure-prose)}
.costunits strong{color:var(--text-primary)}
.chart{margin-top:var(--space-8);max-width:960px}
.bar{display:grid;grid-template-columns:minmax(140px,220px) 1fr;gap:var(--space-4);
  align-items:center;padding:var(--space-3) 0;border-bottom:1px solid var(--border-subtle)}
.bar .lab{font-size:var(--size-body-sm);color:var(--text-secondary)}
.track{position:relative;height:22px;background:rgba(250,250,249,.05);border-radius:var(--radius-xs)}
.span{position:absolute;top:0;bottom:0;border-radius:var(--radius-xs);
  display:flex;align-items:center;justify-content:flex-end;padding-right:var(--space-2)}
.span.micro{background:var(--antares-red)}
.span.alt{background:var(--stone-600)}
.span.narrow{justify-content:flex-start;padding-right:0;overflow:visible}
.span.narrow .t{position:absolute;left:calc(100% + var(--space-2));color:var(--text-secondary)}
.span .t{font-size:var(--size-caption);font-variant-numeric:tabular-nums;color:var(--white);
  white-space:nowrap;font-weight:var(--weight-medium)}
.span.alt .t{color:var(--stone-100)}
.axis{display:flex;justify-content:space-between;margin-top:var(--space-2);
  font-size:var(--size-caption);color:var(--text-tertiary);font-variant-numeric:tabular-nums;
  padding-left:calc(min(220px,40%) + var(--space-4))}
.caveat{grid-column:1/-1;margin-top:var(--space-2);padding-left:var(--space-3);
  border-left:2px solid var(--antares-red-40);font-size:var(--size-caption);color:var(--text-tertiary);
  max-width:var(--measure-prose)}
.legend{display:flex;gap:var(--space-6);margin-top:var(--space-6);font-size:var(--size-body-sm);
  color:var(--text-tertiary);flex-wrap:wrap}
.legend i{display:inline-block;width:12px;height:12px;margin-right:var(--space-2);vertical-align:-1px}
.altnote{margin-top:var(--space-4);padding:var(--space-3) var(--space-4);border:1px solid var(--border-subtle);
  font-size:var(--size-body-sm);color:var(--text-secondary);max-width:var(--measure-prose)}
.altnote .k{color:var(--text-tertiary)}

/* ---------- incentives (PTC after OBBBA) ---------- */
.inc{border:1px solid var(--border-subtle);margin-top:var(--space-6);max-width:960px}
.inc .lead{padding:var(--space-6);font-size:var(--size-body);color:var(--text-primary);
  border-bottom:1px solid var(--border-subtle)}
.inc ul{margin:0;padding:0;list-style:none}
.inc li{padding:var(--space-4) var(--space-6);border-bottom:1px solid var(--border-subtle);
  font-size:var(--size-body-sm);color:var(--text-secondary)}
.inc li:last-child{border-bottom:none}
.inc .cv{padding:var(--space-4) var(--space-6);font-size:var(--size-caption);color:var(--text-tertiary)}

/* ---------- vendors ---------- */
.vgrid{display:grid;grid-template-columns:1fr;gap:1px;
  background:var(--border-subtle);border:1px solid var(--border-subtle)}
@media(min-width:640px){.vgrid{grid-template-columns:repeat(2,1fr)}}
@media(min-width:1024px){.vgrid{grid-template-columns:repeat(3,1fr)}}
.vcard{background:var(--surface-page);padding:var(--space-6)}
@media(min-width:640px){.vcard{padding:var(--space-8)}}
.vcard h3{margin-bottom:var(--space-1)}
.vcard .r{color:var(--antares-red);font-size:var(--size-body-sm);letter-spacing:var(--track-label);
  text-transform:uppercase;margin-bottom:var(--space-3);display:block}
.vbadges{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-6)}
/* No white-space:nowrap: the critical badge names its unit ("Groves Isotope
   Test Reactor critical — 2026-08-05"), which is too long to force onto one
   line at mobile widths without overflowing the card (found by the layout
   width gate at 375px/768px). flex-wrap on the container handles wrapping
   multiple badges onto new rows; each badge's own text wraps normally. */
.vbadge{font-size:var(--size-label-sm);letter-spacing:var(--track-label);text-transform:uppercase;
  padding:var(--space-1) var(--space-3);border:1px solid var(--border-default);
  border-radius:var(--radius-control);color:var(--text-secondary);max-width:100%}
.vbadge.janus{border-color:var(--border-strong);color:var(--text-primary)}
.vbadge.critical{border-color:var(--antares-red-40);color:var(--antares-red)}
.vspec{display:grid;grid-template-columns:118px 1fr;gap:var(--space-4);padding:var(--space-3) 0;
  border-top:1px solid var(--border-subtle);font-size:var(--size-body-sm)}
.vspec .k{color:var(--text-tertiary)}
.vspec .v{color:var(--text-primary);font-variant-numeric:tabular-nums}
/* per-vendor deployment ladder: solid dot = done, hollow = target */
.vtlhead{font-size:var(--size-label-sm);letter-spacing:var(--track-label);text-transform:uppercase;
  color:var(--text-tertiary);margin-top:var(--space-6);padding-top:var(--space-4);
  border-top:1px solid var(--border-subtle)}
.vtl{margin-top:var(--space-3)}
.ms{display:grid;grid-template-columns:78px 14px 1fr;gap:var(--space-3);align-items:baseline;
  position:relative;padding:var(--space-2) 0}
.ms .d{font-family:var(--font-mono);font-size:var(--size-caption);color:var(--text-tertiary);
  white-space:nowrap;font-variant-numeric:tabular-nums}
.ms .dot{width:9px;height:9px;border-radius:var(--radius-circle);align-self:center;
  position:relative;z-index:1}
.ms.done .dot{background:var(--antares-red)}
.ms.tgt .dot{background:var(--surface-page);border:1.5px solid var(--antares-red-40)}
.ms .l{font-size:var(--size-body-sm);color:var(--text-secondary)}
.ms.done .l{color:var(--text-primary)}
.ms::before{content:"";position:absolute;left:calc(78px + var(--space-3) + 4px);top:0;bottom:0;
  width:1px;background:var(--border-subtle)}
.ms:first-child::before{top:50%}
.ms:last-child::before{bottom:50%}

.vsrcs{margin-top:var(--space-5);padding-top:var(--space-4);border-top:1px solid var(--border-subtle)}
.vsrcs a{display:inline-block;font-size:var(--size-caption);color:var(--text-secondary);
  text-decoration:underline;text-underline-offset:3px;margin-right:var(--space-3);margin-bottom:var(--space-2)}
.vsrcs a:hover{color:var(--antares-red);opacity:1}

.vsolo .vcard{border:1px solid var(--border-subtle);max-width:960px}

/* ---------- demand accordions & subtabs ---------- */
.dsummary{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;
  background:var(--border-subtle);border:1px solid var(--border-subtle);margin-top:var(--space-6)}
@media(min-width:640px){.dsummary{grid-template-columns:repeat(4,1fr)}}
.dstat{background:var(--surface-page);padding:var(--space-5) var(--space-6)}
.dstat .n{font-size:var(--size-heading-2);font-weight:var(--weight-semibold);
  letter-spacing:var(--track-heading);display:block;font-variant-numeric:tabular-nums}
.dstat .n.accent{color:var(--antares-red)}
.dstat .k{font-size:var(--size-label-sm);letter-spacing:var(--track-label);text-transform:uppercase;
  color:var(--text-tertiary);margin-top:var(--space-2);display:block}

/* Applications > Overview: buyer types grouped by the cost rung that wins them,
   then a sector table (2026-09-26; replaced eight bare accordions and the six
   hand-typed "top options" cards). */
.ladder{display:grid;gap:var(--space-8);margin-top:var(--space-6)}
.tierhead{display:grid;grid-template-columns:auto auto 1fr;gap:var(--space-2) var(--space-4);
  align-items:baseline;border-bottom:1px solid var(--border-default);padding-bottom:var(--space-3);
  margin-bottom:var(--space-3)}
.tiername{font-size:var(--size-heading-3);font-weight:var(--weight-semibold)}
.tierprice{font-family:var(--font-mono);font-size:var(--size-body-sm);color:var(--antares-red);white-space:nowrap}
.tiernote{font-size:var(--size-body-sm);color:var(--text-tertiary);justify-self:end;text-align:right}
@media(max-width:767px){.tierhead{grid-template-columns:auto 1fr}.tiernote{grid-column:1/-1;justify-self:start;text-align:left}}
details.segcard summary .cat,details.region summary .cat{text-transform:none;letter-spacing:0;
  font-family:var(--font-mono);font-size:var(--size-caption);color:var(--text-secondary)}
.sectortable{width:100%;border-collapse:collapse;font-size:var(--size-body-sm)}
.sectortable th,.sectortable td{border-bottom:1px solid var(--border-subtle);padding:var(--space-3) var(--space-3) var(--space-3) 0;
  text-align:left;vertical-align:top}
.sectortable thead th{font-size:var(--size-label-sm);letter-spacing:var(--track-label);text-transform:uppercase;
  color:var(--text-tertiary);font-weight:var(--weight-medium)}
.sectortable th[scope=row] a{color:var(--text-primary);font-weight:var(--weight-semibold);white-space:nowrap}
.sectortable th[scope=row] a:hover{color:var(--antares-red)}
.sectortable .num{font-family:var(--font-mono);white-space:nowrap;font-variant-numeric:tabular-nums}
.sectortable .today{color:var(--text-secondary);min-width:18rem}
.vendortable .vtreactor{display:block;font-weight:var(--weight-regular);color:var(--text-tertiary);
  font-size:var(--size-caption);margin-top:2px}
.vendortable td{color:var(--text-secondary)}
/* A finding's station table (issue #17): compact, flagged rows marked with a badge. */
.findingsites{font-size:var(--size-caption);margin:0 0 var(--space-4)}
.findingsites th[scope=row]{font-weight:var(--weight-semibold);color:var(--text-primary)}
.findingsites td{color:var(--text-secondary)}
@media(max-width:639px){
  .findingsites,.findingsites tbody{display:block;width:100%}
  .findingsites thead{display:none}
  .findingsites tr{display:grid;grid-template-columns:minmax(0,1fr);gap:2px;
    border-bottom:1px solid var(--border-subtle);padding:var(--space-2) 0}
  .findingsites th,.findingsites td{border:none;padding:0}
  .findingsites td:nth-of-type(2)::before{content:"Start \00b7  term: ";color:var(--text-tertiary)}
  .findingsites td:nth-of-type(3)::before{content:"MW (firm thermal): ";color:var(--text-tertiary)}
  .findingsites td:nth-of-type(4)::before{content:"Mine life: ";color:var(--text-tertiary)}
}
.vendortable .vbadge{display:inline-block;margin:0 var(--space-1) var(--space-1) 0}
/* Six columns do not fit a tablet: stack each company below 900px. */
@media(max-width:899px){
  .vendortable,.vendortable tbody{display:block;width:100%}
  .vendortable thead{display:none}
  .vendortable th[scope=row] a{white-space:normal}
  .vendortable tr{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-1);
    border-bottom:1px solid var(--border-subtle);padding:var(--space-3) 0}
  .vendortable th,.vendortable td{border:none;padding:0}
  .vendortable td:nth-of-type(1)::before{content:"Output \00b7  ";color:var(--text-tertiary)}
  .vendortable td:nth-of-type(2)::before{content:"Fuel \00b7  ";color:var(--text-tertiary)}
  .vendortable td:nth-of-type(4)::before{content:"Next \00b7  ";color:var(--text-tertiary)}
  .vendortable td:nth-of-type(5)::before{content:"Delivery \00b7  ";color:var(--text-tertiary)}
}
/* Phones: each sector becomes a block instead of a five-column row. */
@media(max-width:639px){
  .sectortable.apps thead{display:none}
  .sectortable.apps tr{display:grid;grid-template-columns:repeat(3,auto) 1fr;gap:var(--space-1) var(--space-3);
    border-bottom:1px solid var(--border-subtle);padding:var(--space-3) 0}
  .sectortable.apps th,.sectortable.apps td{border:none;padding:0}
  .sectortable.apps th[scope=row]{grid-column:1/-1}
  .sectortable.apps td.num:nth-of-type(1)::after{content:" loads"}
  .sectortable.apps td.num:nth-of-type(3)::after{content:" inside 1\2013 20 MW"}

  .sectortable.apps .today{grid-column:1/-1;min-width:0}
}

/* ---------- candidate deployment sites ---------- */
.sites-summary{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;
  background:var(--border-subtle);border:1px solid var(--border-subtle);margin-top:var(--space-6)}
@media(min-width:640px){.sites-summary{grid-template-columns:repeat(4,1fr)}}
.sitesgrid{display:grid;grid-template-columns:1fr;gap:var(--space-6)}
.sitegroup{margin-top:var(--space-8)}
.sitegroup[hidden]{display:none}
.sitegroup h4{margin:0 0 var(--space-4);color:var(--text-primary)}
/* ---------- home: the site at a glance, then the newest headlines ----------
   2026-09-26: the landing tab was a newspaper front page; it now opens on a
   directory of the site (one card per tab, each with a derived figure) and
   keeps the headlines below it. Every value is computed in renderHome(). */
.homeblock{padding:var(--space-10) 0 var(--space-4)}
.homeblock + .homeblock{padding-top:var(--space-8)}
.fronthead{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-4);
  border-bottom:1px solid var(--border-default);padding-bottom:var(--space-3);margin-bottom:var(--space-6)}
.fronthead h2{margin:0;font-size:var(--size-heading-3);letter-spacing:var(--track-heading)}
.fronthead a{font-size:var(--size-caption);font-weight:var(--weight-semibold);color:var(--antares-red);
  white-space:nowrap}
.glance{display:grid;grid-template-columns:1fr;gap:1px;background:var(--border-subtle);
  border:1px solid var(--border-subtle)}
@media(min-width:640px){.glance{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(min-width:1100px){.glance{grid-template-columns:repeat(4,minmax(0,1fr))}}
.glancebox{display:flex;flex-direction:column;min-width:0;background:var(--surface-page)}
.glancecard{display:grid;grid-template-rows:auto auto 1fr;gap:var(--space-2);position:relative;
  flex:1;padding:var(--space-5) var(--space-10) var(--space-5) var(--space-6);background:var(--surface-page);color:inherit;
  transition:background var(--dur-fast) var(--ease-standard)}
.glancecite{padding:0 var(--space-6) var(--space-4);font-family:var(--font-mono);
  font-size:var(--size-caption);color:var(--text-tertiary)}
.glancecite .cite{vertical-align:baseline}
.glancecard .go{position:absolute;top:var(--space-5);right:var(--space-5)}
@media(max-width:639px){.glancecard{padding:var(--space-4) var(--space-10) var(--space-4) var(--space-5)}
  .glancecite{padding:0 var(--space-5) var(--space-4)}
  .homeblock{padding-top:var(--space-8)}}
.glancecard:hover{background:var(--surface-plate)}
.glancecard:hover .gq,.glancecard:hover .go{color:var(--antares-red)}
.gtab{font-family:var(--font-mono);font-size:var(--size-caption);text-transform:uppercase;
  letter-spacing:var(--track-label);color:var(--antares-red)}
.gq{font-size:var(--size-body-lg);font-weight:var(--weight-semibold);color:var(--text-primary);
  line-height:var(--lh-heading);transition:var(--transition-control)}
.ga{font-size:var(--size-body-sm);color:var(--text-secondary);line-height:var(--lh-body)}
.go{color:var(--text-tertiary);transition:var(--transition-control)}
.frontcols{display:grid;gap:var(--space-8)}
@media(min-width:900px){.frontcols{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);align-items:start}}
.leadstory{border:1px solid var(--border-subtle);border-left:3px solid var(--antares-red);
  padding:var(--space-6);background:var(--surface-page)}
.leadstory h3{font-size:var(--size-heading-2);line-height:var(--lh-heading);
  margin:var(--space-3) 0;color:var(--text-primary)}
.leadstory p{color:var(--text-secondary);margin:0 0 var(--space-4)}
.leadstory a.more{font-size:var(--size-caption);font-weight:var(--weight-semibold);
  color:var(--antares-red);display:inline-block;margin-top:var(--space-3)}
.headlist{list-style:none;margin:0;padding:0;border-top:1px solid var(--border-subtle)}
.headlist li{border-bottom:1px solid var(--border-subtle)}
.headlist a{display:block;padding:var(--space-4) 0;color:var(--text-primary);min-height:44px}
.headlist a:hover .hl{color:var(--antares-red)}
.headlist .hl{display:block;font-weight:var(--weight-medium);margin-top:var(--space-1);
  transition:var(--transition-control)}
.headlist li.more{border-bottom:none}
.headlist li.more a{color:var(--antares-red);font-size:var(--size-caption);font-weight:var(--weight-semibold)}
/* A headline links to #news/<id>; keep the opened record clear of the sticky nav. */
.newsitem{scroll-margin-top:120px}
/* Phones: the numbers, not the pitch (DESIGN.md 7). The lede goes and the five
   stats become one swipeable row instead of a three-row grid: the hero was
   922px on an 812px screen. */
@media(max-width:639px){
  .hero{padding:var(--space-8) 0 var(--space-6)}
  .hero .lede{display:none}
  .hero h1{margin-bottom:0}
  .stats{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;margin-top:var(--space-6);
    scrollbar-width:none;-webkit-mask-image:linear-gradient(to right,black calc(100% - 32px),transparent);
    mask-image:linear-gradient(to right,black calc(100% - 32px),transparent)}
  .stats::-webkit-scrollbar{display:none}
  .stat{flex:0 0 42%;scroll-snap-align:start;padding:var(--space-4)}
  .stat .n{font-size:var(--size-heading-2)}
}
.sitecard{background:var(--surface-page);border:1px solid var(--border-subtle);
  min-width:0;overflow-wrap:break-word;word-break:break-word}
.sitecard > summary{list-style:none;cursor:pointer;padding:var(--space-5) var(--space-6);
  display:grid;grid-template-columns:auto 1fr;gap:var(--space-3);align-items:start;min-height:44px}
.sitecard > summary::-webkit-details-marker{display:none}
.sitecard > summary::before{content:"\25B8";color:var(--antares-red);font-size:var(--size-body-sm);
  line-height:var(--lh-heading);transition:transform .12s ease}
.sitecard[open] > summary::before{transform:rotate(90deg)}
.sitecard > .sbody{padding:0 var(--space-6) var(--space-6);min-width:0}
.sitecard .shdr{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-3);
  flex-wrap:wrap;min-width:0}
.sitecard h3{font-size:var(--size-heading-3);color:var(--text-primary);margin:0;font-weight:var(--weight-semibold)}
.sitecard .smeta{display:flex;gap:var(--space-2);align-items:center;flex-wrap:wrap}
.sitetag{font-family:var(--font-mono);font-size:var(--size-caption);padding:1px var(--space-2);
  border:1px solid var(--border-subtle);text-transform:uppercase;letter-spacing:var(--track-label);
  color:var(--text-tertiary)}
.sitetag.status-permitted,.sitetag.status-operating{color:var(--stance-positive);border-color:var(--stance-positive-40)}
.sitetag.status-agreement-reported{color:var(--stance-positive);border-color:var(--stance-positive-40)}
.sitetag.status-application,.sitetag.status-pre-application,.sitetag.status-intent-to-award{color:var(--antares-red);border-color:var(--antares-red-40)}
.sitetag.status-tabled,.sitetag.status-paused,.sitetag.status-cancelled{color:var(--text-tertiary);border-color:var(--border-subtle)}
.sitedetails{display:grid;grid-template-columns:1fr;gap:var(--space-2);margin:0 0 var(--space-4) 0;
  font-size:var(--size-body-sm);color:var(--text-secondary);padding:var(--space-3) 0;
  border-top:1px solid var(--border-subtle);border-bottom:1px solid var(--border-subtle);min-width:0}
@media(min-width:768px){.sitedetails{grid-template-columns:repeat(2,1fr)}}
.sitedetails .drow{display:flex;gap:var(--space-2);min-width:0;flex-wrap:wrap}
.sitedetails .dlbl{color:var(--text-tertiary);min-width:80px;flex-shrink:0}
.sitesummary{font-size:var(--size-body-sm);color:var(--text-secondary);line-height:var(--lh-body);margin-bottom:var(--space-4)}
.filingtrail{margin-top:var(--space-4);background:var(--surface-sunken);border:1px solid var(--border-subtle);
  padding:var(--space-4);min-width:0}
.filingtrail h4{font-size:var(--size-caption);text-transform:uppercase;letter-spacing:var(--track-label);
  color:var(--text-tertiary);margin:0 0 var(--space-3) 0}
.filingrow{padding:var(--space-2) 0;border-bottom:1px solid var(--border-subtle);
  display:flex;flex-direction:column;gap:var(--space-1);font-size:var(--size-caption);min-width:0}
@media(min-width:640px){
  .filingrow{display:grid;grid-template-columns:auto 1fr auto;gap:var(--space-3);align-items:baseline}
}
.filingrow:last-child{border-bottom:none}
.filingforum{font-family:var(--font-mono);color:var(--antares-red);font-weight:var(--weight-medium);flex-shrink:0}
.filingdesc{color:var(--text-secondary);min-width:0;overflow-wrap:anywhere}
.filingdesc a{color:inherit;text-decoration:underline;text-underline-offset:2px}
.filingdesc code{word-break:break-all}
.filingdate{color:var(--text-tertiary);font-family:var(--font-mono);white-space:nowrap;flex-shrink:0}
.sitegaps{margin-top:var(--space-3);font-size:var(--size-caption);color:var(--text-tertiary);
  border-left:2px solid var(--antares-red-40);padding-left:var(--space-3);line-height:1.45}
.negfinding{background:var(--surface-page);border:1px solid var(--border-subtle);padding:var(--space-6);margin-bottom:var(--space-4);
  min-width:0;overflow-wrap:break-word}
.negfinding h4{font-size:var(--size-body);color:var(--text-primary);margin:0 0 var(--space-2) 0}
.negfinding p{font-size:var(--size-body-sm);color:var(--text-secondary);line-height:var(--lh-body);margin:0}

.sgrid{display:grid;gap:var(--space-3)}
.sector.solo{border:1px solid var(--border-subtle);background:var(--surface-page)}
.sectorhead{padding:var(--space-5) var(--space-6)}
.sectorhead h3{font-size:var(--size-heading-3);margin:0}
details.sector{border:1px solid var(--border-subtle);background:var(--surface-page)}
details.sector summary{display:grid;grid-template-columns:auto 1fr;gap:var(--space-3);
  align-items:center;cursor:pointer;padding:var(--space-5) var(--space-6);list-style:none;
  touch-action:manipulation}
details.sector summary::-webkit-details-marker{display:none}
details.sector summary::before{content:"\25B8";color:var(--antares-red);font-size:var(--size-body-sm);
  transition:transform var(--dur-fast) var(--ease-standard);display:inline-block}
details.sector[open] summary::before{transform:rotate(90deg)}
details.sector summary h3{font-size:var(--size-heading-3);margin:0}
details.sector summary .meta{font-family:var(--font-mono);font-size:var(--size-caption);
  color:var(--text-tertiary);white-space:nowrap}
.sectorctx{padding:var(--space-5) var(--space-6);border-top:1px solid var(--border-subtle);
  font-size:var(--size-body-sm);line-height:var(--lh-body);color:var(--text-secondary)}
details.sector .loads,.sector.solo .loads{padding:0 var(--space-6) var(--space-3);border-top:1px solid var(--border-subtle)}
@media(min-width:900px){details.sector .loads,.sector.solo .loads{column-count:2;column-gap:var(--space-16);padding-bottom:var(--space-4)}}
.load{display:grid;grid-template-columns:1fr auto;gap:var(--space-4);padding:var(--space-4) 0;
  font-size:var(--size-body-sm);border-bottom:1px solid var(--border-subtle);
  break-inside:avoid;align-items:start}
.load:last-child{border-bottom:none}
.load .note{display:block;color:var(--text-tertiary);font-size:var(--size-caption);
  margin-top:var(--space-1);line-height:1.45}
.load .b{color:var(--antares-red);font-family:var(--font-mono);font-size:var(--size-caption);
  white-space:nowrap;display:inline-flex;align-items:baseline;gap:var(--space-1)}
.load .b .cite{vertical-align:baseline;margin-left:0}
.load .delta{display:block;color:var(--text-tertiary);font-size:var(--size-caption);
  margin-top:var(--space-2);line-height:1.45;border-left:2px solid var(--antares-red-40);
  padding:2px 0 2px var(--space-3)}
.load .priced{display:block;margin-top:var(--space-2)}
.load .priced a{font-family:var(--font-mono);font-size:var(--size-caption);
  color:var(--text-tertiary);text-decoration:none}
.load .priced a:hover{color:var(--antares-red)}

/* ---------- market design ---------- */
.mech{display:grid;gap:1px;background:var(--border-subtle);border:1px solid var(--border-subtle);
  margin-top:var(--space-6)}
/* Four proposal cards since 2026-09-26: two columns, so none sits alone on a row. */
@media(min-width:900px){.mech{grid-template-columns:repeat(2,1fr)}}
.mechcard{background:var(--surface-page);padding:var(--space-6)}
.mechcard h4{color:var(--antares-red);font-size:var(--size-body);margin-bottom:var(--space-3);
  letter-spacing:var(--track-heading)}
.mechcard p{font-size:var(--size-body-sm);color:var(--text-secondary);margin-bottom:var(--space-3)}
.mechcard p:last-child{margin-bottom:0}
.mechcard .steps{margin:0;padding-left:var(--space-5);font-size:var(--size-body-sm);color:var(--text-secondary)}
.mechcard .steps li{margin-bottom:var(--space-2)}
.proposaltag,.ideatag{display:inline-block;font-size:var(--size-label-sm);letter-spacing:var(--track-label);
  text-transform:uppercase;padding:1px var(--space-2);border:1px solid var(--antares-red-40);
  color:var(--antares-red);border-radius:var(--radius-control);white-space:nowrap}
/* ---------- precedents & market subpanels ---------- */
.precgroup{margin-bottom:var(--space-8)}
.precgrouphead{font-size:var(--size-body);font-weight:var(--weight-semibold);color:var(--text-secondary)}
details.precgroup{border-bottom:1px solid var(--border-subtle);padding:var(--space-2) 0}
details.precgroup[open] > .precgrid{margin:var(--space-3) 0 var(--space-4)}
details.prec .body p.copyline{border-left:2px solid var(--antares-red);padding-left:var(--space-3);color:var(--text-primary)}
.precgroup .prose{margin-bottom:var(--space-6);font-size:var(--size-body-sm);line-height:var(--lh-body)}
.precgrid{display:grid;grid-template-columns:1fr;gap:var(--space-3)}
details.prec{border:1px solid var(--border-subtle);background:var(--surface-page);margin-bottom:0}
details.prec summary{display:grid;grid-template-columns:auto minmax(0,1fr) minmax(9rem,42%);gap:var(--space-4);align-items:baseline;
  cursor:pointer;padding:var(--space-4) var(--space-5);list-style:none;touch-action:manipulation}
details.prec summary::-webkit-details-marker{display:none}
details.prec summary::before{content:"\25B8";color:var(--antares-red);font-size:var(--size-caption);
  transition:transform var(--dur-fast) var(--ease-standard)}
details.prec[open] summary::before{transform:rotate(90deg)}
details.prec summary .nm{font-weight:var(--weight-semibold);font-size:var(--size-body);min-width:0;overflow-wrap:anywhere}
details.prec summary .cat{font-size:var(--size-label-sm);letter-spacing:var(--track-label);
  text-transform:uppercase;color:var(--text-tertiary);white-space:normal;overflow-wrap:anywhere;
  justify-self:stretch;min-width:0;text-align:right}
@media(max-width:640px){
  details.prec summary{grid-template-columns:auto 1fr}
  details.prec summary .cat{grid-column:2;white-space:normal;justify-self:start}
}
details.prec .body{padding:0 var(--space-5) var(--space-5);border-top:1px solid var(--border-subtle)}
details.prec .body p{font-size:var(--size-body-sm);color:var(--text-secondary);
  margin-top:var(--space-3);line-height:var(--lh-body)}
details.prec .body .k{color:var(--text-tertiary)}

/* ---------- policy pathways ---------- */
.policygroup{margin-bottom:var(--space-10)}
.policygrid{display:grid;grid-template-columns:1fr;gap:var(--space-4)}
@media(min-width:900px){.policygrid{grid-template-columns:repeat(2,1fr);gap:var(--space-6)}}
.pw{display:grid;grid-template-columns:1fr;gap:var(--space-2);padding:var(--space-5) var(--space-6);
  border:1px solid var(--border-subtle);background:var(--surface-page);align-content:start}
.pw .top{display:flex;gap:var(--space-3);align-items:baseline;justify-content:space-between;flex-wrap:wrap}
.pw .nm{font-weight:var(--weight-semibold);font-size:var(--size-body)}
.pw .st{font-size:var(--size-label-sm);letter-spacing:var(--track-label);text-transform:uppercase;
  color:var(--text-tertiary);white-space:nowrap}
.pw p{font-size:var(--size-body-sm);color:var(--text-secondary);line-height:var(--lh-body);margin:0}
/* Rules are disclosures since 2026-09-26: name, status and the lead sentence in
   the summary, the rest of the mechanism and its sources on tap. */
details.pw > summary{list-style:none;cursor:pointer;display:grid;gap:var(--space-2);touch-action:manipulation}
details.pw > summary::-webkit-details-marker{display:none}
details.pw > summary .nm::before{content:"\25B8";color:var(--antares-red);font-size:var(--size-caption);
  display:inline-block;margin-right:var(--space-2);transition:transform var(--dur-fast) var(--ease-standard)}
details.pw[open] > summary .nm::before{transform:rotate(90deg)}
details.pw > summary:hover .nm{color:var(--antares-red)}
details.pw .pwlead{color:var(--text-primary)}
details.pw > p{margin-top:var(--space-2)}
.trackblurb{margin-bottom:var(--space-6)}
/* ---------- evidence: source register ---------- */
.regsearch{display:flex;align-items:center;gap:var(--space-4);flex-wrap:wrap;
  margin:var(--space-5) 0;max-width:960px}
.regsearch input{flex:1 1 18rem;min-width:0;min-height:44px;background:var(--surface-page);
  border:1px solid var(--border-subtle);color:var(--text-primary);padding:0 var(--space-3);
  font-family:inherit;font-size:var(--size-body-sm)}
.regsearch input:focus{outline:none;border-color:var(--antares-red)}
.regsearch input::placeholder{color:var(--text-tertiary)}
.regcount{font-family:var(--font-mono);font-size:var(--size-caption);color:var(--text-tertiary);
  text-transform:uppercase;letter-spacing:var(--track-label);white-space:nowrap}
.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;
  clip:rect(0 0 0 0);white-space:nowrap;border:0}
.reg{border-top:1px solid var(--border-subtle);max-width:960px}
.reg .rrow{display:grid;grid-template-columns:auto 1fr auto;gap:var(--space-4);align-items:baseline;
  padding:var(--space-3) 0;border-bottom:1px solid var(--border-subtle);font-size:var(--size-body-sm)}
.reg .rn{font-family:var(--font-mono);font-size:var(--size-caption);color:var(--text-tertiary);
  min-width:3ch;text-align:right}
.reg .rrow a{color:var(--text-secondary);text-decoration:underline;text-underline-offset:3px}
.reg .rrow a:hover{color:var(--antares-red);opacity:1}
.reg .host{font-family:var(--font-mono);font-size:var(--size-caption);color:var(--text-tertiary);
  white-space:nowrap}
@media(max-width:640px){
  /* Two columns, three children: the host has to be placed explicitly or
     auto-placement drops it into column 1, where it is sized by the number
     column and a long domain breaks almost vertically. Column 2 also lines it
     up under the source details it belongs to. */
  .reg .rrow{grid-template-columns:auto 1fr}
  .reg .host{grid-column:2;white-space:normal;word-break:break-all}
}
/* One line, ellipsised. "cited by" is orientation, not the row's content, and
   letting it wrap to three lines was most of why 544 rows ran to 98 screens on a
   phone. The full list stays in the title attribute and in the filter's index. */
.reg .uses{display:block;font-size:var(--size-caption);color:var(--text-tertiary);margin-top:2px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.reg .rrow > span:nth-child(2){min-width:0}
.reg .rrow a{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ---------- coverage ---------- */
.cov{display:grid;grid-template-columns:minmax(120px,180px) 1fr auto;gap:var(--space-4);
  align-items:center;padding:var(--space-3) 0;border-bottom:1px solid var(--border-subtle);max-width:960px}
.covbar{height:8px;background:rgba(250,250,249,.06);border-radius:var(--radius-xs)}
.covfill{height:100%;border-radius:var(--radius-xs)}
.cov .p{font-variant-numeric:tabular-nums;font-size:var(--size-body-sm);color:var(--text-secondary);
  min-width:56px;text-align:right}
.next{margin-top:var(--space-12);display:grid;gap:var(--space-6)}
@media(min-width:900px){.next{grid-template-columns:repeat(3,1fr)}}
.nextcard{border:1px solid var(--border-subtle);padding:var(--space-6)}
.nextcard h4{color:var(--antares-red);font-size:var(--size-body);margin:0 0 var(--space-3);
  letter-spacing:var(--track-heading)}

footer{border-top:1px solid var(--border-subtle);padding:var(--space-16) 0;color:var(--text-tertiary);
  font-size:var(--size-body-sm)}
footer a{color:var(--text-secondary);text-decoration:underline;text-underline-offset:3px}

@media(max-width:640px){
  .bar{grid-template-columns:1fr;gap:var(--space-2)}
  .axis{padding-left:0}
  .cov{grid-template-columns:1fr auto}
  .cov .covbar{grid-column:1/-1;order:3}
  details.sector summary{padding:var(--space-4)}
  .sectorctx{padding:var(--space-4)}
  details.sector .loads{padding:0 var(--space-4) var(--space-2)}
}
@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* ---------- instruments band (Policy) and price-to-beat rows (Costs) ----------
   Both reuse details.prec from the Market-design precedents: same component,
   same closed-state behaviour, no new disclosure CSS. Only the inner beats and
   the sector headings are new. */
.instband{margin-top:var(--space-10);border-top:1px solid var(--border-subtle);padding-top:var(--space-6)}
details.instband > summary{list-style:none;cursor:pointer;display:flex;align-items:baseline;gap:var(--space-3);
  min-height:44px;touch-action:manipulation}
details.instband > summary::-webkit-details-marker{display:none}
details.instband > summary::before{content:"\25B8";color:var(--antares-red);font-size:var(--size-body-sm);
  transition:transform var(--dur-fast) var(--ease-standard)}
details.instband[open] > summary::before{transform:rotate(90deg)}
details.instband > summary h3{margin:0;font-size:var(--size-heading-3)}
details.instband > summary:hover h3{color:var(--antares-red)}
details.instband > summary .cnt{font-family:var(--font-mono);font-size:var(--size-caption);color:var(--text-tertiary)}
details.instband > .prose{margin-top:var(--space-4)}
.instband .prose{margin-bottom:var(--space-5);font-size:var(--size-body-sm);line-height:var(--lh-body)}
details.prec .body .beat{margin-top:var(--space-4)}
details.prec .body .beat > .k{display:block;color:var(--text-tertiary);
  font-size:var(--size-label-sm);letter-spacing:var(--track-label);text-transform:uppercase;
  margin-bottom:var(--space-1)}
details.prec .body .beat.edge > .k{color:var(--antares-red)}
details.prec .body .beat p{margin-top:0}
details.prec .body ul.blockers{margin:0;padding-left:var(--space-5);
  font-size:var(--size-body-sm);color:var(--text-secondary);line-height:var(--lh-body)}
details.prec .body ul.blockers li{margin-bottom:var(--space-1)}
/* Applications > Regions: where each jurisdiction's law stands on civil nuclear
   power. The label carries the meaning; the border is only a cue. */
.postag{display:inline-block;font-family:var(--font-mono);font-size:var(--size-label-sm);letter-spacing:.06em;
  text-transform:uppercase;border:1px solid var(--border-default);padding:1px var(--space-2);
  color:var(--text-secondary);white-space:nowrap;vertical-align:middle;font-weight:var(--weight-regular)}
.postag.enabling{border-color:var(--antares-red-40);color:var(--antares-red)}
.postag.review{border-color:var(--border-strong);color:var(--text-primary)}
.postag.restricted,.postag.banned{border-style:dashed;color:var(--text-tertiary)}
.taglegend{display:grid;gap:var(--space-2) var(--space-6);margin:var(--space-4) 0 0;font-size:var(--size-body-sm)}
@media(min-width:768px){.taglegend{grid-template-columns:repeat(2,minmax(0,1fr))}}
.taglegend dt{display:inline;color:var(--text-primary);font-family:var(--font-mono);font-size:var(--size-caption)}
.taglegend dd{display:inline;margin:0 0 0 var(--space-2);color:var(--text-tertiary)}
details.region summary .nm .postag{margin-left:var(--space-2)}

/* Customer cost: one collapsed section per sector (2026-09-26). */
details.benchsector{border:1px solid var(--border-subtle);margin-bottom:var(--space-3)}
details.benchsector > summary{list-style:none;cursor:pointer;display:grid;
  grid-template-columns:auto 1fr auto;gap:var(--space-3);align-items:baseline;
  padding:var(--space-4) var(--space-5);min-height:44px;touch-action:manipulation}
details.benchsector > summary::-webkit-details-marker{display:none}
details.benchsector > summary::before{content:"\25B8";color:var(--antares-red);font-size:var(--size-body-sm);
  transition:transform var(--dur-fast) var(--ease-standard)}
details.benchsector[open] > summary::before{transform:rotate(90deg)}
details.benchsector > summary:hover h4{color:var(--antares-red)}
details.benchsector h4{font-size:var(--size-heading-3);margin:0}
details.benchsector .cnt{font-family:var(--font-mono);font-size:var(--size-caption);
  color:var(--text-tertiary);white-space:nowrap}
details.benchsector > .precgrid{padding:0 var(--space-4) var(--space-4)}
@media(max-width:640px){details.benchsector > summary{grid-template-columns:auto 1fr}
  details.benchsector .cnt{grid-column:2;white-space:normal}}
/* Source register: first page only until the reader searches or asks for all. */
.reg.paged .rrow:nth-child(n+31){display:none}
.showall{appearance:none;background:transparent;border:1px solid var(--border-default);color:var(--text-primary);
  font-family:var(--font-core);font-size:var(--size-body-sm);font-weight:var(--weight-semibold);
  padding:var(--space-3) var(--space-5);margin-top:var(--space-6);cursor:pointer;min-height:44px}
.showall:hover{border-color:var(--antares-red);color:var(--antares-red)}

/* Closed-state rule for every styled disclosure on the site. Without it the
   collapsed body still takes its full height — 25 closed instrument rows left a
   screen-height of blank space on the Policy tab. The UA rule alone is not
   enough once a details is author-styled, so state it explicitly. Scoped to
   `details` so it can never match a non-details element carrying the same class. */
details.prec:not([open]) > :not(summary),
details.sector:not([open]) > :not(summary),
details.benchsector:not([open]) > :not(summary),
details.pw:not([open]) > :not(summary),
details.instband:not([open]) > :not(summary),
details.newsmonth:not([open]) > :not(summary),
details.precgroup:not([open]) > :not(summary){display:none}

/* "Why a small reactor, case by case" — every microreactor-specific note on the
   site, gathered onto the Top options sub-tab. One disclosure per group, reusing
   details.prec so it inherits that component's closed-state rule and styling. */
.edgeband{margin-top:var(--space-10);border-top:1px solid var(--border-subtle);padding-top:var(--space-6)}
.edgeband > .prose{margin-bottom:var(--space-5);font-size:var(--size-body-sm);line-height:var(--lh-body)}
.egolink{margin:0 0 var(--space-3)}
.egolink a{font-family:var(--font-mono);font-size:var(--size-caption);color:var(--text-tertiary);
  text-decoration:none;border-bottom:1px solid var(--border-subtle)}
.egolink a:hover{color:var(--antares-red)}
.edgerow{padding:var(--space-3) 0;border-top:1px solid var(--border-subtle)}
.edgerow .en{display:block;font-weight:var(--weight-semibold);font-size:var(--size-body-sm);
  margin-bottom:var(--space-1)}
.edgerow p{margin:0;font-size:var(--size-body-sm);color:var(--text-secondary);
  line-height:var(--lh-body);max-width:var(--measure-prose)}
.nuctag{font-family:var(--font-mono);font-size:var(--size-label-sm);letter-spacing:var(--track-label);
  text-transform:uppercase;color:var(--antares-red);border:1px solid var(--antares-red);
  padding:1px var(--space-2);margin-left:var(--space-2);white-space:nowrap}

/* In their words — quotes from builders, the buyer and the critics. The
   attribution line carries the citation chip, so a quote can never appear
   without its source next to it. */
.voicegroup{margin-bottom:var(--space-10)}
.voicegroup h4{font-size:var(--size-caption);text-transform:uppercase;letter-spacing:var(--track-label);
  color:var(--antares-red);margin:0 0 var(--space-2) 0}
.voicegroup > .note{margin:0 0 var(--space-5) 0;color:var(--text-tertiary)}
.voice{margin:0 0 var(--space-5) 0;padding-left:var(--space-4);
  border-left:2px solid var(--antares-red-40);min-width:0}
.voice blockquote{margin:0;color:var(--text-primary);font-size:var(--size-body);
  line-height:1.55;overflow-wrap:anywhere}
.voice blockquote::before{content:"\201C"}
.voice blockquote::after{content:"\201D"}
.voice figcaption{margin-top:var(--space-2);display:flex;flex-wrap:wrap;align-items:baseline;
  gap:var(--space-2);font-size:var(--size-caption)}
.voicewho{color:var(--text-primary);font-weight:var(--weight-medium)}
.voicerole{color:var(--text-tertiary)}
.voicetopic{font-family:var(--font-mono);color:var(--antares-red);text-transform:uppercase;
  letter-spacing:var(--track-label);font-size:var(--size-caption)}
.voicemeans{margin:var(--space-2) 0 0 0;color:var(--text-secondary);font-size:var(--size-caption);
  line-height:1.55}

/* Unit economics — capacity cost, the learning multipliers, and cost by
   reactor type. One row shape for all three tables: name, figure, basis. */
.unitrows{border-top:1px solid var(--border-subtle);margin:var(--space-4) 0}
.unitrow{padding:var(--space-3) 0;border-bottom:1px solid var(--border-subtle);
  display:flex;flex-direction:column;gap:var(--space-1);min-width:0}
@media(min-width:720px){
  .unitrow{display:grid;grid-template-columns:minmax(0,14rem) auto minmax(0,1fr);
    gap:var(--space-4);align-items:baseline}
}
.unitname{color:var(--text-primary);font-weight:var(--weight-medium);min-width:0;
  overflow-wrap:anywhere}
.unitval{font-family:var(--font-mono);color:var(--antares-red);white-space:nowrap;
  font-weight:var(--weight-medium)}
.unitbasis{color:var(--text-secondary);font-size:var(--size-caption);min-width:0;
  line-height:1.55;overflow-wrap:anywhere}

/* Voice groups collapse: 120 quotes is a wall open, and the summary carries the
   count so a group is never opened just to find out how big it is. */
details.voicegroup > summary{cursor:pointer;list-style:none;display:flex;
  align-items:baseline;gap:var(--space-3);padding:var(--space-3) 0;
  border-bottom:1px solid var(--border-subtle)}
details.voicegroup > summary::-webkit-details-marker{display:none}
.vgname{font-size:var(--size-caption);text-transform:uppercase;
  letter-spacing:var(--track-label);color:var(--antares-red)}
.vgcount{font-family:var(--font-mono);color:var(--text-tertiary);font-size:var(--size-caption)}
details.voicegroup:not([open]) > :not(summary){display:none}
details.voicegroup[open] > .note{margin:var(--space-3) 0 var(--space-5) 0}
.unitval2{color:var(--text-secondary);font-size:var(--size-caption);min-width:0;
  overflow-wrap:anywhere}
.voicedate{font-family:var(--font-mono);color:var(--text-tertiary);font-size:var(--size-caption)}

/* Why microreactors — a numbered argument list. The number is the point: these
   are twelve claims, not a wall, and the counters carry a cross instead. */
.argrow{display:flex;gap:var(--space-4);padding:var(--space-6) 0;
  border-bottom:1px solid var(--border-subtle);min-width:0}
.argnum{font-family:var(--font-mono);font-size:var(--size-heading-3);
  color:var(--antares-red);flex-shrink:0;width:2.2rem;line-height:1.1}
.argrow.counter .argnum{color:var(--text-tertiary)}
.argbody{min-width:0;flex:1}
.argbody h3{margin:0 0 var(--space-2) 0;font-size:var(--size-heading-3);
  color:var(--text-primary);line-height:var(--lh-heading)}
.argclaim{margin:0 0 var(--space-3) 0;color:var(--text-secondary);
  font-size:var(--size-body-lg);line-height:1.5}
.argbody .prose{margin:0 0 var(--space-4) 0}

/* Pointer left where the Top options grid used to sit. */
.topcross{padding:var(--space-6) 0;border-bottom:1px solid var(--border-subtle)}
.topcross a{color:var(--antares-red);text-decoration:underline;text-underline-offset:2px}
.argbasis{font-family:var(--font-mono);font-size:var(--size-caption);
  text-transform:uppercase;letter-spacing:var(--track-label);color:var(--text-tertiary);
  white-space:nowrap}

/* News — dated events, newest first, with the instrument named on every row. */
.newsfilter{display:flex;flex-wrap:wrap;gap:var(--space-2);margin:var(--space-5) 0}
.newschip{background:none;border:1px solid var(--border-subtle);color:var(--text-tertiary);
  font-family:var(--font-mono);font-size:var(--size-caption);text-transform:uppercase;
  letter-spacing:var(--track-label);padding:var(--space-2) var(--space-3);cursor:pointer;
  min-height:44px}
.newschip.on{border-color:var(--antares-red);color:var(--antares-red)}
/* Phones: filter chips scroll in one row instead of wrapping into six (News had
   eleven chips filling the first screen). */
@media(max-width:639px){
  .newsfilter{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;
    margin-right:calc(-1 * var(--gutter-page));padding-right:48px;
    /* A fade on the right edge says the row scrolls; the end padding lets the last
       chip scroll clear of it. */
    -webkit-mask-image:linear-gradient(to right,black calc(100% - 40px),transparent);
    mask-image:linear-gradient(to right,black calc(100% - 40px),transparent)}
  .newsfilter::-webkit-scrollbar{display:none}
  .newsfilter .newschip{flex:0 0 auto}
}
.newsmonth{margin-bottom:var(--space-6)}
details.newsmonth > summary,details.precgroup > summary{list-style:none;cursor:pointer;display:flex;
  align-items:baseline;gap:var(--space-3);min-height:44px;touch-action:manipulation}
details.newsmonth > summary::-webkit-details-marker,details.precgroup > summary::-webkit-details-marker{display:none}
details.newsmonth > summary::before,details.precgroup > summary::before{content:"\25B8";color:var(--antares-red);
  font-size:var(--size-caption);transition:transform var(--dur-fast) var(--ease-standard)}
details.newsmonth[open] > summary::before,details.precgroup[open] > summary::before{transform:rotate(90deg)}
details.newsmonth > summary .cnt,details.precgroup > summary .cnt{font-family:var(--font-mono);
  font-size:var(--size-caption);color:var(--text-tertiary)}
details.precgroup > summary:hover h4,details.newsmonth > summary:hover h3{color:var(--antares-red)}
details.precgroup > summary h4{margin:0}
.newsmonth h3{font-size:var(--size-caption);text-transform:uppercase;
  letter-spacing:var(--track-label);color:var(--text-tertiary);margin:0}
details.newsmonth > summary{border-bottom:1px solid var(--border-subtle);padding-bottom:var(--space-2);
  margin-bottom:var(--space-2)}
.newsitem{border-bottom:1px solid var(--border-subtle);min-width:0}
.newsitem > summary{list-style:none;cursor:pointer;padding:var(--space-4) 0 var(--space-4) var(--space-5);
  position:relative;min-height:44px}
.newsitem > summary::-webkit-details-marker{display:none}
.newsitem > summary::before{content:"\25B8";position:absolute;left:0;top:var(--space-4);
  color:var(--antares-red);font-size:var(--size-body-sm);transition:transform .12s ease}
.newsitem[open] > summary::before{transform:rotate(90deg)}
.newsitem > .nbody{padding:0 0 var(--space-4) var(--space-5)}
.nhdr{display:flex;flex-wrap:wrap;gap:var(--space-3);align-items:baseline;
  margin-bottom:var(--space-2)}
.ndate,.ncat{font-family:var(--font-mono);font-size:var(--size-caption);color:var(--text-tertiary)}
.ncat{text-transform:uppercase;letter-spacing:var(--track-label)}
.nbind{font-family:var(--font-mono);font-size:var(--size-caption);text-transform:uppercase;
  letter-spacing:var(--track-label)}
.nbind.yes{color:var(--antares-red)}
.nbind.no{color:var(--text-tertiary)}
.newsitem h4{margin:0 0 var(--space-2) 0;font-size:var(--size-body-lg);color:var(--text-primary);
  line-height:var(--lh-heading)}
.newsitem .prose{margin:0 0 var(--space-2) 0}
.nwhy,.nbindnote{margin:0 0 var(--space-1) 0;color:var(--text-secondary);
  font-size:var(--size-caption);line-height:1.55}
.nbindnote{color:var(--text-tertiary)}

.seealso{margin:var(--space-4) 0 0 0;font-size:var(--size-body-sm)}
.seealso a{color:var(--antares-red);text-decoration:underline;text-underline-offset:3px}

/* A closed <details> reserves no height. The UA default handles the simple case,
   but a child that sets its own display (.sitedetails is a grid) can escape it. */
details:not([open]) > :not(summary){display:none}

/* What wins the deal (Costs) and Prospects (Deals): the per-unit and staffing
   tables scroll inside their own box so the page never scrolls sideways; the
   rest reuses unit rows, precedent disclosures and the news filter chips. */
.tablewrap{overflow-x:auto;margin:var(--space-4) 0}
.wintable{border-collapse:collapse;width:100%;font-size:var(--size-body-sm)}
.wintable th,.wintable td{text-align:left;padding:var(--space-2) var(--space-3);
  border-bottom:1px solid var(--border-subtle);white-space:nowrap;vertical-align:top}
.wintable th{font-family:var(--font-mono);font-size:var(--size-caption);text-transform:uppercase;
  letter-spacing:var(--track-label);color:var(--text-tertiary);font-weight:var(--weight-medium)}
.wintable td{font-family:var(--font-mono);color:var(--antares-red)}
.wintable td.lbl{font-family:var(--font-core);color:var(--text-primary);white-space:normal;min-width:12rem}
.finding{margin-top:var(--space-3);padding:var(--space-3) var(--space-4);border-left:2px solid var(--antares-red);
  background:var(--surface-raised);font-size:var(--size-body-sm);color:var(--text-secondary);line-height:var(--lh-body)}
.finding .note{color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--size-caption)}
.subhead.gap{margin-top:var(--space-10)}
