/* Lane E — FAST page. Do not edit app.css from here. */
.mw-fast-page{ --fast-blue:#1672CC; --fast-orange:#F88119; --fast-teal:#159C95; }
.mw-fast-page::before{
  content:"";
  display:block;
  height:6px;
  background:linear-gradient(90deg,var(--fast-blue) 0 33.33%,var(--fast-orange) 33.33% 66.66%,var(--fast-teal) 66.66%);
}

.mw-fast-page .mw-fast-statgrid{
  grid-template-columns:repeat(2,minmax(0,1fr));
}
@media (min-width:760px){
  .mw-fast-page .mw-fast-statgrid{ grid-template-columns:repeat(4,minmax(0,1fr)); }
}

.mw-fast-mapframe{
  overflow:hidden;
  max-width:100%;
}
.mw-fast-mapframe img,
.mw-fast-mapframe object,
.mw-fast-mapframe svg{
  width:100% !important;
  max-width:100%;
  height:auto !important;
  min-width:0 !important;
  display:block;
}

.mw-fast-board{ overflow:visible; }
.mw-fast-board table{ min-width:0; }
.mw-fast-code{
  display:inline-flex; align-items:center; justify-content:center;
  min-width:44px; min-height:28px; padding:0 8px; margin-right:8px;
  font-family:var(--mono) !important; font-size:12px; font-weight:700;
  letter-spacing:.06em;
  /* corridor colour is the identity: a filled bar plus border; text stays ink on surface so it passes AA in both themes */
  color:var(--ink);
  background:var(--surface);
  border:1.5px solid var(--c, var(--line-2));
  box-shadow:inset 6px 0 0 var(--c, var(--line-2));
  padding-left:14px;
}
.mw-fast-mode{
  color:var(--ink) !important;
  background:var(--surface) !important;
  border:1.5px solid var(--c, var(--line-2)) !important;
}
@media (max-width:759px){
  .mw-fast-board table,
  .mw-fast-board thead,
  .mw-fast-board tbody,
  .mw-fast-board th{ display:block; width:100%; }
  .mw-fast-board thead{ display:none; }
  .mw-fast-board tr{
    display:flex;
    flex-wrap:wrap;
    align-items:center;
    gap:8px 12px;
    border:1px solid var(--line);
    background:var(--surface);
    padding:10px 12px;
    margin:0 0 8px;
    width:100%;
  }
  .mw-fast-board td{
    border:none;
    padding:0;
    width:auto;
    display:inline-flex;
    align-items:center;
    gap:6px;
  }
  .mw-fast-board td::before{ display:none; }
  .mw-fast-board td.num[data-label="#"]{ display:none; }
  .mw-fast-board td.name{ flex:1 1 140px; }
  .mw-fast-board td.name small{ display:none; }
}
.mw-fast-cost-note{
  margin-top:16px;
  color:var(--ink-3);
  font-size:13px;
  max-width:72ch;
}
.mw-fast-rate{
  display:flex;
  align-items:baseline;
  gap:12px;
  margin-top:18px;
  font-size:2rem;
  font-weight:600;
}
.mw-fast-election{ margin-top:8px; }
.mw-fast-ord-h{ margin-top:24px; }
.mw-fast-ord{ margin-top:12px; padding-left:20px; color:var(--ink-2); }
.mw-fast-fw{ margin-top:22px; }
.mw-fast-talk{ grid-template-columns:repeat(2,minmax(0,1fr)); }
.mw-fast-dls{ margin-top:18px; }
.mw-fast-status{ margin-top:20px; }
.mw-fast-hero-mark{
  display:flex;
  align-items:center;
  gap:20px;
  margin-top:20px;
  flex-wrap:wrap;
}

.mw-fast-faq{
  display:grid;
  grid-template-columns:1fr;
  gap:0 32px;
}
@media (min-width:900px){
  .mw-fast-faq{ grid-template-columns:1fr 1fr; }
}
.mw-fast-partners{
  display:flex; flex-wrap:wrap; gap:10px; margin-top:18px;
}
.mw-fast-partners span{
  border:1.5px dashed var(--line);
  padding:10px 16px;
  min-height:44px;
  display:inline-flex; align-items:center;
  font-size:14px; color:var(--ink-2);
}
.mw-fast-help{
  display:grid;
  grid-template-columns:1fr;
  gap:16px;
  margin-top:22px;
}
@media (min-width:760px){
  .mw-fast-help{ grid-template-columns:repeat(3,minmax(0,1fr)); }
}
.mw-fast-letter{
  margin-top:24px;
  border-left:4px solid var(--blue);
  padding:16px 18px;
  background:var(--canvas-2);
  max-width:72ch;
}
.mw-fast-letter p{ margin:0 0 12px; color:var(--ink-2); }
.mw-fast-letter p:last-child{ margin-bottom:0; }

/* ═══════════════════════════════════════════════════════════════
   FAST — design layer v2 (17 Sep 2026)
   The kit's identity does the work: tricolour, corridor colours,
   tabular numbers. Cards carry meaning, never decoration.
   ═══════════════════════════════════════════════════════════════ */
.mw-fast-page{
  --teal:#129F99; --orange:#F88119; --violet:#B04FA0; --purple:#7A3FB0; --green:#2E8B57;
  --fx-blue:#1672CC;
  --teal-ink:#0B6F6A; --blue-ink:#0F5AA6; --green-ink:#1F6B42;
}
html[data-theme="dark"] .mw-fast-page{
  --teal:#3FBDB6; --orange:#FF9A3D; --violet:#CF7AC0; --purple:#A276D6; --green:#4FB57A;
  --fx-blue:#4D96E6;
  --teal-ink:#3FBDB6; --blue-ink:#7DB4F0; --green-ink:#6FCB95;
}

/* Section rhythm: quiet bands alternate behind a fixed content column */
.mw-fast-page .mw-fast-section{
  border-bottom:none !important;
  padding-top:clamp(44px,5.5vw,84px) !important;
  padding-bottom:clamp(44px,5.5vw,84px) !important;
}
.mw-fast-page .mw-fast-section:nth-of-type(even){
  background:var(--canvas-2);
  box-shadow:0 0 0 100vmax var(--canvas-2);
  clip-path:inset(0 -100vmax);
}
.mw-fast-page .mw-fast-section > .mw-eyebrow{
  display:inline-flex; align-items:center; gap:10px;
  font-family:var(--mono) !important; font-size:12px; letter-spacing:.16em; text-transform:uppercase;
  color:var(--teal-ink) !important; font-weight:600;
}
.mw-fast-page .mw-fast-status{ color:var(--ink-3) !important; }
.mw-fast-page .mw-fast-section > .mw-eyebrow::before{
  content:""; width:28px; height:4px; border-radius:2px;
  background:linear-gradient(90deg,var(--fx-blue) 0 33.33%,var(--orange) 33.33% 66.66%,var(--teal) 66.66%);
}
.mw-fast-page .mw-fast-section h2{
  margin-top:12px;
  font-size:clamp(28px,3.4vw,44px) !important; line-height:1.06; letter-spacing:-.032em;
  font-variation-settings:var(--wdth-display-fvs);
  max-width:24ch; text-wrap:balance;
}
.mw-fast-page .mw-fast-section .lead{ margin-top:16px; font-size:clamp(16px,1.35vw,18.5px); line-height:1.55; max-width:68ch; }

/* Hero */
.mw-fast-page .mw-bleed-hero h1{ font-size:clamp(34px,4.8vw,62px) !important; line-height:1.02 !important; max-width:20ch !important; letter-spacing:-.035em; }
.mw-fast-page .mw-bleed-hero .mw-hero-actions .mw-btn{ border-radius:999px !important; min-height:50px; padding:0 24px !important; font-size:15px; font-weight:700; }
.mw-fast-page .mw-bleed-hero .mw-btn-primary{ background:#fff !important; color:#0A2A43 !important; border-color:#fff !important; }
.mw-fast-page .mw-fast-statgrid{ gap:12px !important; margin-top:30px !important; }
/* Hero stat tiles arrive from the data file after first paint. Without reserved space the hero grew and pushed
   "How it works" down (layout shift 0.32 on production, and a late final paint of the hero image). Each tile gets a
   fixed minimum tall enough for EN and ES, so the grid's height is known before the data lands. */
.mw-fast-page .mw-fast-stat{ min-height:139px; }
.mw-fast-page .mw-fast-statgrid{ min-height:290px; align-content:start; }
@media (min-width:400px){ .mw-fast-page .mw-fast-stat{ min-height:117px; } .mw-fast-page .mw-fast-statgrid{ min-height:246px; } }
@media (min-width:760px){ .mw-fast-page .mw-fast-stat{ min-height:122px; } .mw-fast-page .mw-fast-statgrid{ min-height:122px; } }
.mw-fast-page .mw-fast-stat{
  position:relative; overflow:hidden;
  background:rgba(8,20,34,.55) !important; border:1px solid rgba(255,255,255,.18) !important;
  border-radius:16px; padding:18px 18px 16px !important;
  backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px);
}
.mw-fast-page .mw-fast-stat::before{ content:""; position:absolute; left:0; right:0; top:0; height:4px; background:var(--c,var(--fx-blue)); }
.mw-fast-page .mw-fast-stat:nth-child(1){ --c:var(--fx-blue); }
.mw-fast-page .mw-fast-stat:nth-child(2){ --c:var(--teal); }
.mw-fast-page .mw-fast-stat:nth-child(3){ --c:var(--orange); }
.mw-fast-page .mw-fast-stat:nth-child(4){ --c:var(--violet); }
.mw-fast-page .mw-fast-stat b{ font-size:clamp(22px,2.3vw,32px) !important; font-weight:600; letter-spacing:-.02em; color:#fff; line-height:1.1; }
.mw-fast-page .mw-fast-stat span{ display:block; margin-top:6px; font-size:13.5px !important; opacity:1 !important; color:rgba(255,255,255,.82); line-height:1.35; }

/* How: heading left, lockup right, four letter cards */
.fx-how{ display:grid; grid-template-columns:1fr; gap:24px; align-items:center; }
@media (min-width:900px){ .fx-how{ grid-template-columns:minmax(0,1fr) auto; gap:56px; } }
.mw-fast-page .mw-fast-hero-mark{ margin:0 !important; }
.mw-fast-page .mw-fast-hero-mark img{ width:clamp(200px,22vw,320px) !important; height:auto !important; }
.mw-fast-page .mw-fast-pillars{ gap:14px !important; margin-top:36px !important; }
.fx-pillar{
  position:relative; display:grid; gap:8px; align-content:start;
  padding:22px 20px 20px; border-radius:18px;
  background:var(--surface); border:1px solid var(--line);
  box-shadow:0 1px 2px rgba(15,16,18,.05), 0 6px 20px rgba(15,16,18,.05);
  overflow:hidden;
}
.fx-pillar::before{ content:""; position:absolute; left:0; right:0; top:0; height:5px; background:var(--c); }
.fx-letter{
  width:56px; height:56px; border-radius:14px; display:grid; place-items:center;
  background:var(--c); color:#fff; font-size:30px; font-weight:800; letter-spacing:-.04em;
  font-variation-settings:"wdth" 112;
}
.fx-pillar b{ font-size:19px; letter-spacing:-.02em; margin-top:6px; }
.fx-pillar span:last-child{ color:var(--ink-2); font-size:15px; line-height:1.5; }

/* Network */
.mw-fast-page .mw-fast-mapframe{
  margin-top:28px !important; padding:clamp(8px,1.2vw,16px) !important;
  border-radius:20px; background:#fff !important; border:1px solid var(--line) !important;
  box-shadow:0 1px 2px rgba(15,16,18,.05), 0 10px 30px rgba(15,16,18,.07);
}
.mw-fast-page .mw-fast-board{
  margin-top:20px !important; border-top:none !important;
  border:1px solid var(--line) !important; border-radius:20px; overflow:hidden; background:var(--surface);
  box-shadow:0 1px 2px rgba(15,16,18,.05), 0 6px 20px rgba(15,16,18,.05);
}
.mw-fast-page .mw-fast-board th{ background:var(--canvas-2); padding:14px 16px 12px !important; color:var(--ink-2) !important; }
.mw-fast-page .mw-fast-board td{ padding:16px !important; vertical-align:middle !important; font-size:15px !important; }
.mw-fast-page .mw-fast-board tbody tr{ transition:background .15s var(--ease); }
.mw-fast-page .mw-fast-board tbody tr:hover{ background:color-mix(in srgb, var(--fx-blue) 5%, var(--surface)); }
.mw-fast-page .mw-fast-board tbody tr:last-child td{ border-bottom:none; }
.mw-fast-page .mw-fast-board td.name{ font-weight:700; letter-spacing:-.01em; }
.mw-fast-page .mw-fast-board td.name small{ display:block; margin:3px 0 0 60px; font-weight:400; font-size:13px; color:var(--ink-3); }
.mw-fast-page .mw-fast-board td.num:last-child{ color:var(--ink); font-weight:500; white-space:nowrap; }
.mw-fast-page .mw-fast-code{ border-radius:8px; min-width:48px !important; }
@media (max-width:759px){
  .mw-fast-page .mw-fast-board{ border:none !important; background:none; box-shadow:none; border-radius:0; overflow:visible; }
  .mw-fast-page .mw-fast-board tr{ border-radius:16px !important; padding:14px 16px !important; box-shadow:0 1px 2px rgba(15,16,18,.05), 0 6px 20px rgba(15,16,18,.05); }
  .mw-fast-page .mw-fast-board td{ padding:0 !important; }
  .mw-fast-page .mw-fast-board td.name small{ display:none; }
}

/* Cards: phases, cost, framework, talk, help */
.mw-fast-page .mw-fast-cards{ gap:16px !important; margin-top:30px !important; }
.mw-fast-page .mw-fast-card{
  position:relative; overflow:hidden;
  border-radius:18px; padding:24px 22px 22px !important;
  box-shadow:0 1px 2px rgba(15,16,18,.05), 0 6px 20px rgba(15,16,18,.05);
  transition:transform .18s var(--ease), box-shadow .18s var(--ease);
}
.mw-fast-page .mw-fast-card:hover{ transform:translateY(-2px); box-shadow:0 2px 4px rgba(15,16,18,.06), 0 14px 34px rgba(15,16,18,.10); }
.mw-fast-page .mw-fast-card::before{ content:""; position:absolute; left:0; right:0; top:0; height:5px; background:var(--c, var(--fx-blue)); }
.mw-fast-page .mw-fast-cards > .mw-fast-card:nth-child(3n+1){ --c:var(--fx-blue); }
.mw-fast-page .mw-fast-cards > .mw-fast-card:nth-child(3n+2){ --c:var(--orange); }
.mw-fast-page .mw-fast-cards > .mw-fast-card:nth-child(3n){ --c:var(--teal); }
.mw-fast-page .mw-fast-card .mw-eyebrow{ font-family:var(--mono) !important; font-size:11.5px; letter-spacing:.12em; text-transform:uppercase; color:var(--ink-3); }
.mw-fast-page .mw-fast-card .big{
  margin-top:10px; font-size:clamp(26px,2.6vw,36px) !important; font-weight:600; letter-spacing:-.03em; line-height:1.1;
  color:var(--ink) !important;
}
.mw-fast-page .mw-fast-card h3{ font-size:19px; letter-spacing:-.02em; line-height:1.25; }
.mw-fast-page .mw-fast-card p{ font-size:15px !important; line-height:1.55; margin-top:10px !important; }
.mw-fast-page .mw-fast-card ul, .mw-fast-page .mw-fast-card ol{ margin:12px 0 0; padding-left:20px; color:var(--ink-2); font-size:15px; line-height:1.55; display:grid; gap:8px; }
.mw-fast-page .mw-fast-card li::marker{ color:var(--c, var(--fx-blue)); font-weight:700; }
.mw-fast-page .mw-fast-cost-note{
  margin-top:20px !important; padding:14px 18px; border-radius:14px; max-width:none !important;
  background:color-mix(in srgb, var(--orange) 10%, var(--surface)); border:1px solid color-mix(in srgb, var(--orange) 30%, var(--line));
  color:var(--ink-2) !important; font-size:14px !important;
}

/* Funding */
.fx-fund{ display:grid; grid-template-columns:1fr; gap:18px; margin-top:30px; }
@media (min-width:900px){ .fx-fund{ grid-template-columns:minmax(280px,4fr) 8fr; gap:22px; } }
.fx-rate{
  border-radius:20px; padding:26px 24px; color:#fff;
  background:linear-gradient(135deg,#0A2A43 0%,#0B3D66 70%,#1672CC 140%);
  display:grid; gap:10px; align-content:center;
}
.fx-rate-k{ font-family:var(--mono) !important; font-size:11.5px; letter-spacing:.14em; text-transform:uppercase; color:rgba(255,255,255,.72); }
.mw-fast-page .mw-fast-rate{ margin:0 !important; font-size:clamp(34px,4vw,54px) !important; font-weight:600; letter-spacing:-.04em; align-items:center !important; gap:14px !important; color:#fff; }
.mw-fast-page .mw-fast-rate .to{ font-size:14px; font-family:var(--mono) !important; letter-spacing:.1em; text-transform:uppercase; color:rgba(255,255,255,.7); }
.mw-fast-page .mw-fast-rate .hi{ color:#FFB266; }
.mw-fast-page .mw-fast-election{ margin:0 !important; font-family:var(--mono) !important; font-size:11.5px !important; letter-spacing:.08em; text-transform:uppercase; color:rgba(255,255,255,.78) !important; }
.fx-yield{ margin:0; font-size:15.5px; line-height:1.5; color:rgba(255,255,255,.9); }
.fx-split{ border-radius:20px; padding:24px; background:var(--surface); border:1px solid var(--line); box-shadow:0 1px 2px rgba(15,16,18,.05), 0 6px 20px rgba(15,16,18,.05); }
.fx-split-k{ font-family:var(--mono) !important; font-size:11.5px; letter-spacing:.14em; text-transform:uppercase; color:var(--ink-3); }
.fx-bar{ display:flex; height:44px; border-radius:12px; overflow:hidden; margin-top:14px; gap:3px; }
.fx-bar span{ display:grid; place-items:center; background:var(--c); color:#fff; font-family:var(--mono) !important; font-size:13px; font-weight:600; min-width:34px; }
.fx-bar span[data-dark]{ color:#0F1012; }
html[data-theme="dark"] .fx-bar span{ color:#0C0F13; }
.mw-fast-page .mw-fast-split{ margin:18px 0 0 !important; display:grid; grid-template-columns:1fr; gap:10px; }
@media (min-width:640px){ .mw-fast-page .mw-fast-split{ grid-template-columns:1fr 1fr; } }
.mw-fast-page .mw-fast-split li{
  display:grid !important; grid-template-columns:auto 1fr !important; gap:4px 12px !important; align-items:start;
  padding:14px !important; border:1px solid var(--line) !important; border-radius:14px; background:var(--canvas);
}
.mw-fast-page .mw-fast-split li i{ grid-row:1 / span 2; width:12px; height:12px; border-radius:4px; background:var(--c); margin-top:5px; }
.mw-fast-page .mw-fast-split li b{ font-size:15.5px; letter-spacing:-.01em; }
.mw-fast-page .mw-fast-split li b em{ font-style:normal; font-family:var(--mono) !important; color:var(--ink-3); font-weight:500; margin-left:6px; }
.mw-fast-page .mw-fast-split li small{ grid-column:2; font-size:13.5px; color:var(--ink-2); line-height:1.45; }
.mw-fast-page #fast-split-note{ margin-top:18px; font-size:14.5px !important; color:var(--ink-2); max-width:none; }

/* The ask: ordinance checklist */
.mw-fast-page .mw-fast-ord-h{ margin-top:34px !important; font-size:20px; letter-spacing:-.02em; }
.mw-fast-page .mw-fast-ord{
  list-style:none; counter-reset:ord; padding:0 !important; margin:16px 0 0 !important;
  display:grid; grid-template-columns:1fr; gap:10px;
}
@media (min-width:760px){ .mw-fast-page .mw-fast-ord{ grid-template-columns:1fr 1fr; } }
.mw-fast-page .mw-fast-ord li{
  counter-increment:ord; position:relative;
  padding:14px 16px 14px 58px; border-radius:14px; background:var(--surface); border:1px solid var(--line);
  font-size:15px; line-height:1.45; color:var(--ink);
}
.mw-fast-page .mw-fast-ord li::before{
  content:counter(ord); position:absolute; left:14px; top:50%; transform:translateY(-50%);
  width:32px; height:32px; border-radius:10px; display:grid; place-items:center;
  background:color-mix(in srgb, var(--fx-blue) 12%, var(--surface)); color:var(--blue-ink);
  font-family:var(--mono) !important; font-weight:600; font-size:14px;
}
.mw-fast-page .mw-fast-fw{ grid-template-columns:repeat(2,minmax(0,1fr)) !important; }
@media (max-width:760px){ .mw-fast-page .mw-fast-fw{ grid-template-columns:1fr !important; } }

/* FAQ */
.mw-fast-page .mw-fast-faq{ gap:12px 16px !important; margin-top:28px; }
.mw-fast-page .mw-fast-faq details{
  border:1px solid var(--line) !important; border-radius:16px; padding:0 !important; background:var(--surface); overflow:hidden;
}
.mw-fast-page .mw-fast-faq summary{
  list-style:none; padding:18px 52px 18px 20px; position:relative; font-size:16px; letter-spacing:-.01em; line-height:1.35;
}
.mw-fast-page .mw-fast-faq summary::-webkit-details-marker{ display:none; }
.mw-fast-page .mw-fast-faq summary::after{
  content:""; position:absolute; right:18px; top:50%; width:18px; height:18px; margin-top:-9px; background:var(--ink-3);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round'%3E%3Cpath d='M12 5v14M5 12h14'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round'%3E%3Cpath d='M12 5v14M5 12h14'/%3E%3C/svg%3E") center/contain no-repeat;
  transition:transform .2s var(--ease);
}
.mw-fast-page .mw-fast-faq details[open] summary::after{ transform:rotate(45deg); background:var(--fx-blue); }
.mw-fast-page .mw-fast-faq details[open]{ border-color:color-mix(in srgb, var(--fx-blue) 40%, var(--line)) !important; }
.mw-fast-page .mw-fast-faq p{ margin:0 !important; padding:0 20px 18px; font-size:15px; line-height:1.55; }

/* Partners */
.mw-fast-page .mw-fast-partners{ gap:12px !important; margin-top:26px !important; }
.mw-fast-page .mw-fast-partners span{
  border:1.5px dashed color-mix(in srgb, var(--teal) 55%, var(--line)) !important; border-radius:14px;
  padding:14px 18px !important; min-height:56px !important; background:var(--surface); font-weight:600; font-size:15px !important; color:var(--ink) !important;
}

/* Take part */
.mw-fast-page .mw-fast-help{ counter-reset:help; margin-top:30px !important; }
.mw-fast-page .mw-fast-help .mw-fast-card{ counter-increment:help; padding-top:74px !important; }
.mw-fast-page .mw-fast-help .mw-fast-card::after{
  content:counter(help); position:absolute; left:22px; top:22px;
  width:40px; height:40px; border-radius:12px; display:grid; place-items:center;
  background:var(--c); color:#fff; font-weight:800; font-size:18px;
}
.mw-fast-page .mw-fast-help .mw-fast-card:nth-child(1){ --c:var(--fx-blue); }
.mw-fast-page .mw-fast-help .mw-fast-card:nth-child(2){ --c:var(--orange); }
.mw-fast-page .mw-fast-help .mw-fast-card:nth-child(3){ --c:var(--teal); }
.mw-fast-page .mw-fast-letter{
  margin-top:28px !important; border-left:none !important; border:1px solid var(--line) !important;
  border-radius:20px; padding:26px clamp(20px,3vw,36px) !important; background:var(--surface) !important;
  box-shadow:0 1px 2px rgba(15,16,18,.05), 0 6px 20px rgba(15,16,18,.05);
  position:relative;
}
.mw-fast-page .mw-fast-letter p:not(.mw-eyebrow){ font-size:16px; line-height:1.65; color:var(--ink); max-width:74ch; margin-top:12px; }
.fx-copy{
  position:absolute; right:18px; top:18px;
  min-height:40px; padding:0 16px; border-radius:999px; border:1px solid var(--line); background:var(--canvas-2);
  font-size:13px; font-weight:600; color:var(--ink-2); cursor:pointer;
}
.fx-copy:hover{ border-color:var(--fx-blue); color:var(--fx-blue); }
.mw-fast-page .mw-fast-dls{ display:grid !important; grid-template-columns:1fr; gap:12px !important; margin-top:24px !important; }
@media (min-width:700px){ .mw-fast-page .mw-fast-dls{ grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (min-width:1100px){ .mw-fast-page .mw-fast-dls{ grid-template-columns:repeat(4,minmax(0,1fr)); } }
.fx-dl{
  display:grid; grid-template-columns:auto 1fr; gap:4px 12px; align-items:center;
  padding:14px 16px; border-radius:16px; border:1px solid var(--line); background:var(--surface);
  color:var(--ink); text-decoration:none;
  transition:transform .15s var(--ease), border-color .15s var(--ease);
}
.fx-dl:hover{ transform:translateY(-2px); border-color:var(--fx-blue); color:var(--ink); }
.fx-dl-f{
  grid-row:1 / span 2; width:44px; height:44px; border-radius:12px; display:grid; place-items:center;
  background:color-mix(in srgb, var(--fx-blue) 12%, var(--surface)); color:var(--blue-ink);
  font-family:var(--mono) !important; font-size:11px; font-weight:700; letter-spacing:.04em;
}
.fx-dl-f[data-f="XLSX"]{ background:color-mix(in srgb, var(--green) 14%, var(--surface)); color:var(--green-ink); }
.fx-dl b{ font-size:14.5px; letter-spacing:-.01em; line-height:1.25; }
.fx-dl small{ font-size:12px; color:var(--ink-3); }
html[data-theme="dark"] .mw-fast-page .mw-fast-mapframe{ background:#F4F6F8 !important; }

/* Section bar: replaces Focus/Full on FAST. Sticky under the app bar, scrolls sideways on phones. */
.fx-subnav{ position:sticky; top:var(--app-top,56px); z-index:40; background:color-mix(in srgb, var(--surface,#fff) 92%, transparent); -webkit-backdrop-filter:saturate(1.4) blur(12px); backdrop-filter:saturate(1.4) blur(12px); border-bottom:1px solid var(--line,rgba(15,23,42,.10)); }
.fx-subnav-in{ max-width:var(--ux-max,1180px); margin:0 auto; padding:8px var(--ux-gutter,20px); display:flex; gap:6px; overflow-x:auto; scrollbar-width:none; -webkit-overflow-scrolling:touch; scroll-behavior:smooth; }
.fx-subnav-in::-webkit-scrollbar{ display:none; }
.fx-subnav a{ flex:none; display:inline-flex; align-items:center; min-height:40px; padding:0 14px; border-radius:999px; font-size:14px; font-weight:600; color:var(--ink-2,#334155); text-decoration:none; white-space:nowrap; border:1px solid transparent; }
.fx-subnav a:hover{ background:color-mix(in srgb, var(--fx-blue,#1672CC) 10%, transparent); color:var(--ink,#0F172A); }
.fx-subnav a[aria-current="true"]{ background:var(--ink,#0F172A); color:var(--surface,#fff); }
.mw-fast-page .mw-fast-section{ scroll-margin-top:calc(var(--app-top,56px) + 64px); }

/* Photo ribbon under the section bar: a breath of place before the data. A row on wide screens, a swipeable strip on phones. */
.fx-ribbon{ max-width:var(--ux-max,1180px); margin:0 auto; padding:clamp(24px,3.5vw,44px) var(--ux-gutter,20px) 0; }
.fx-ribbon-in{ list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(4, minmax(0,1fr)); gap:12px; }
.fx-ribbon-in:has(> li:nth-child(5)){ grid-template-columns:repeat(5, minmax(0,1fr)); }
.fx-ribbon-in:has(> li:nth-child(6)){ grid-template-columns:repeat(6, minmax(0,1fr)); }
.fx-ribbon figure{ position:relative; margin:0; overflow:hidden; border-radius:var(--ux-r,16px); aspect-ratio:5 / 4; background:var(--canvas-2, rgba(15,16,18,.06)); box-shadow:0 1px 2px rgba(15,16,18,.05), 0 10px 28px rgba(15,16,18,.08); }
.fx-ribbon img{ display:block; width:100%; height:100%; object-fit:cover; transition:transform .5s var(--ease, ease); }
.fx-ribbon li:hover img{ transform:scale(1.04); }
.fx-ribbon figcaption{ position:absolute; left:0; right:0; bottom:0; padding:28px 14px 12px; font-size:13.5px; font-weight:600; line-height:1.3; color:#fff; background:linear-gradient(to top, rgba(6,16,28,.78), rgba(6,16,28,0)); }
.fx-ribbon-credit{ margin:10px 0 0 !important; font-family:var(--mono); font-size:11px !important; letter-spacing:.06em; text-transform:uppercase; color:var(--ink-3, var(--ink-2)); max-width:none !important; }
@media (max-width:759px){
  .fx-ribbon{ padding-left:0; padding-right:0; }
  .fx-ribbon-in, .fx-ribbon-in:has(> li:nth-child(5)), .fx-ribbon-in:has(> li:nth-child(6)){ display:flex; gap:10px; overflow-x:auto; scroll-snap-type:x mandatory; scrollbar-width:none; -webkit-overflow-scrolling:touch; padding:0 var(--ux-gutter,16px); scroll-padding:0 var(--ux-gutter,16px); }
  .fx-ribbon-in::-webkit-scrollbar{ display:none; }
  .fx-ribbon-in > li{ flex:0 0 72vw; max-width:340px; scroll-snap-align:start; }
  .fx-ribbon-credit{ padding:0 var(--ux-gutter,16px); }
}
@media (prefers-reduced-motion:reduce){ .fx-ribbon img{ transition:none; } .fx-ribbon li:hover img{ transform:none; } }
@media (prefers-reduced-motion:reduce){ .fx-subnav-in{ scroll-behavior:auto; } }

/* The network: live ArcGIS view with the self-hosted plan map as fallback */
.fx-net{ margin:24px 0 28px; border:1px solid var(--line); border-radius:var(--ux-r,16px); background:var(--surface); overflow:hidden; box-shadow:0 1px 2px rgba(15,16,18,.04), 0 12px 32px rgba(15,16,18,.06); }
.fx-net-bar{ display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:10px 16px; padding:12px; border-bottom:1px solid var(--line); }
.fx-net-seg{ display:inline-flex; padding:4px; gap:4px; border-radius:999px; background:var(--canvas-2, rgba(15,16,18,.05)); }
.fx-net-seg button{ min-height:40px; padding:0 16px; border:none; border-radius:999px; background:transparent; color:var(--ink-2); font:inherit; font-size:14px; font-weight:600; cursor:pointer; white-space:nowrap; }
.fx-net-seg button[aria-pressed="true"]{ background:var(--ink); color:var(--surface); }
.fx-net-links{ display:flex; flex-wrap:wrap; gap:6px; }
.fx-net-links a{ display:inline-flex; align-items:center; gap:6px; min-height:40px; padding:0 14px; border-radius:999px; border:1px solid var(--line); color:var(--ink); font-size:14px; font-weight:600; text-decoration:none; white-space:nowrap; }
.fx-net-links a::after{ content:"\2197"; font-size:13px; opacity:.7; }
.fx-net-links a:hover{ border-color:var(--ink); }
.fx-net-stage{ background:#E8EAEA; }
.fx-net-plan{ position:relative; display:block; max-width:720px; margin:0 auto; line-height:0; }
.fx-net-plan[hidden], .fx-net-live[hidden]{ display:none; }
.fx-net-plan img{ display:block; width:100%; height:auto; }
.fx-net-zoom{ position:absolute; right:12px; top:12px; display:inline-flex; align-items:center; gap:6px; min-height:36px; padding:0 12px; border-radius:999px; background:rgba(15,16,18,.82); color:#fff; font-size:13px; font-weight:600; line-height:1; }
.fx-net-zoom svg{ width:16px; height:16px; }
.fx-net-live{ height:clamp(520px, 78vh, 860px); background:#E8EAEA; }
.fx-net-live iframe{ display:block; width:100%; height:100%; border:0; }
.fx-net-note{ margin:0 !important; padding:10px 14px; border-top:1px solid var(--line); font-size:13px !important; line-height:1.45; color:var(--ink-2); max-width:none !important; }
@media (max-width:560px){ .fx-net-bar{ padding:10px; } .fx-net-seg{ width:100%; } .fx-net-seg button{ flex:1; padding:0 8px; } .fx-net-links{ width:100%; } .fx-net-links a{ flex:1; justify-content:center; } .fx-net-live{ height:72vh; } }
.fx-net-live{ position:relative; }
.fx-net-guard{ position:absolute; inset:0; width:100%; border:0; padding:0 0 22px; background:transparent; cursor:pointer; display:flex; align-items:flex-end; justify-content:center; }
.fx-net-guard[hidden]{ display:none; }
.fx-net-guard span{ display:inline-flex; align-items:center; min-height:40px; padding:0 16px; border-radius:999px; background:rgba(15,16,18,.84); color:#fff; font:600 14px/1 var(--sans, system-ui); box-shadow:0 8px 24px rgba(0,0,0,.25); }
.fx-net-guard:focus-visible{ outline:3px solid var(--fx-blue,#1672CC); outline-offset:-3px; }
.fx-net{ scroll-margin-top:calc(var(--app-top,56px) + 64px); }

/* Map legend: always on the page beside the interactive map, so nobody has to find the ArcGIS legend button.
   It is a light panel in both themes because it keys to the map, which is always light. */
.fx-net-body{ display:block; }
.fx-lg{ background:#F4F6F8; color:#0F1012; border-bottom:1px solid rgba(15,16,18,.12); }
.fx-lg > summary{ list-style:none; cursor:pointer; display:flex; align-items:center; justify-content:space-between; min-height:48px; padding:0 14px; font-size:14px; font-weight:700; color:#0F1012; }
.fx-lg > summary::-webkit-details-marker{ display:none; }
.fx-lg > summary::after{ content:""; width:9px; height:9px; border-right:2px solid #0F1012; border-bottom:2px solid #0F1012; transform:rotate(45deg) translateY(-3px); transition:transform .15s ease; }
.fx-lg[open] > summary::after{ transform:rotate(-135deg) translateY(-3px); }
.fx-lg-in{ padding:2px 14px 14px; display:grid; grid-template-columns:minmax(0,1.3fr) minmax(0,1fr); gap:12px 14px; align-items:start; }
.fx-lg-col{ display:grid; gap:12px; min-width:0; }
.fx-lg-wide{ grid-column:1 / -1; }
.fx-lg-wide ul{ display:flex; flex-wrap:wrap; gap:6px 16px; }
.fx-lg-wide li{ display:inline-flex; gap:6px; }
.fx-lg section{ min-width:0; }
.mw-fast-page .fx-lg h3{ margin:0 0 8px; font-family:var(--mono, ui-monospace, monospace); font-size:11px !important; font-weight:600; letter-spacing:.08em; text-transform:uppercase; color:#3D4147 !important; line-height:1.3; }
.fx-lg ul{ list-style:none; margin:0; padding:0; display:grid; gap:7px; }
.fx-lg li{ display:grid; grid-template-columns:34px minmax(0,1fr) auto; align-items:center; gap:10px; font-size:13.5px; line-height:1.25; color:#0F1012; }
.fx-lg li small{ font-family:var(--mono, ui-monospace, monospace); font-size:11px; color:#3D4147; white-space:nowrap; }
.fx-lg-line{ display:block; width:34px; height:6px; border-radius:3px; background:var(--c, #0F1012); }
.fx-lg-tri{ height:8px; border-radius:2px; background:linear-gradient(#9A9A9A 0 25%, #1E4FA3 25% 75%, #9A9A9A 75% 100%); }
.fx-lg-fec{ height:8px; border-radius:2px; background:linear-gradient(#0F1012 0 55%, #F6CE7B 55% 100%); }
.fx-lg-dots{ height:8px; border-radius:0; background:radial-gradient(circle, #B070D8 3.6px, transparent 4.2px) 0 50% / 11.3px 8px repeat-x; }
.fx-lg-thin{ height:2px; border-radius:0; background:#3D4147; }
.fx-lg-st{ width:22px; height:22px; justify-self:center; }
.fx-net[data-mode="plan"] .fx-lg{ display:none; } /* the plan map carries its own legend */
@media (min-width:900px){
  .fx-net[data-mode="live"] .fx-net-body{ display:grid; grid-template-columns:272px minmax(0,1fr); }
  .fx-lg{ border-bottom:0; border-right:1px solid rgba(15,16,18,.12); overflow:auto; max-height:clamp(520px, 78vh, 860px); }
  .fx-lg > summary{ cursor:default; pointer-events:none; min-height:44px; padding-top:6px; }
  .fx-lg > summary::after{ display:none; }
  .fx-lg-in{ grid-template-columns:1fr; gap:18px; }
  .fx-lg-col{ gap:18px; }
  .fx-lg-wide ul{ display:grid; gap:7px; }
  .fx-lg-wide li{ display:grid; gap:10px; }
}
@media (max-width:899px){ .fx-lg li{ grid-template-columns:22px minmax(0,1fr) auto; gap:8px; font-size:13px; } .fx-lg-line{ width:22px; } .fx-lg li small{ font-size:10.5px; } .fx-lg-st{ width:18px; height:18px; } .mw-fast-page .fx-lg h3{ font-size:10.5px !important; margin-bottom:6px; } }
@media (max-width:340px){ .fx-lg-in{ grid-template-columns:1fr; } }
@media (prefers-reduced-motion:reduce){ .fx-lg > summary::after{ transition:none; } }

.mw-fast-page .mw-fast-status{ max-width:70ch; text-transform:none !important; letter-spacing:0 !important; font-family:var(--sans) !important; font-size:13.5px !important; line-height:1.5; }

/* ═══ Version 3: line and mode colours as tokens, timeline, cost tables, funding test ═══ */
.mw-fast-page{
  --fx-line-ok:#F5A300; --fx-line-sr7:#12A37F; --fx-line-lw:#0B6CFF; --fx-line-nl:#D0605E; --fx-line-mt:#A66A00;
  --fx-line-cg:#3FA60F; --fx-line-gl:#A66AD6; --fx-line-cl:var(--ink); --fx-line-apm:#B070D8;
  --fx-mode-rapid:var(--orange); --fx-mode-frequent:var(--green); --fx-mode-rail:var(--ink); --fx-mode-apm:var(--violet);
  --fx-yes:var(--green); --fx-no:var(--status-red);
}
.fx-tbc{ display:inline-block; padding:2px 8px; border:1px dashed var(--line-2, var(--line)); border-radius:999px; font-size:12.5px; font-weight:600; color:var(--ink-2); white-space:nowrap; }

/* timeline: four periods, each a list of when / what */
.mw-fast-page .fx-timeline{ display:grid; grid-template-columns:1fr; }
@media (min-width:900px){ .mw-fast-page .fx-timeline{ grid-template-columns:repeat(2, minmax(0,1fr)); } }
.mw-fast-page .fx-timeline > .fx-tl:nth-child(4){ --c:var(--violet); }
.fx-tl h3{ display:flex; flex-wrap:wrap; align-items:baseline; gap:4px 10px; margin:6px 0 14px; }
.fx-tl h3 small{ font-size:14px; font-weight:600; letter-spacing:0; color:var(--ink-2); }
.fx-tl dl{ margin:0; display:grid; gap:0; }
.fx-tl dl > div{ display:grid; grid-template-columns:96px minmax(0,1fr); gap:12px; padding:9px 0; border-top:1px solid var(--line); }
.fx-tl dt{ font-family:var(--mono); font-size:12.5px; line-height:1.5; color:var(--ink-2); }
.fx-tl dd{ margin:0; font-size:14.5px; line-height:1.5; color:var(--ink); }
@media (max-width:420px){ .fx-tl dl > div{ grid-template-columns:1fr; gap:2px; } }

/* cost and funding blocks */
.fx-cost, .fx-funding{ display:grid; gap:20px; margin-top:28px; }
@media (min-width:1000px){ .fx-cost{ grid-template-columns:minmax(0,1fr) minmax(0,1fr); } .fx-cost-ops{ grid-column:1 / -1; } .fx-funding{ grid-template-columns:minmax(0,5fr) minmax(0,7fr); } .fx-fund-story{ grid-column:1 / -1; } }
.fx-cost-blk, .fx-fund-facts, .fx-fund-test, .fx-fund-story{ position:relative; overflow:hidden; padding:24px 22px 22px; border:1px solid var(--line); border-radius:18px; background:var(--surface); box-shadow:0 1px 2px rgba(15,16,18,.05), 0 6px 20px rgba(15,16,18,.05); }
.fx-cost-blk::before, .fx-fund-facts::before, .fx-fund-test::before, .fx-fund-story::before{ content:""; position:absolute; left:0; right:0; top:0; height:5px; background:var(--c, var(--fx-blue)); }
.fx-cost-blk:nth-child(2){ --c:var(--orange); } .fx-cost-ops{ --c:var(--teal); } .fx-fund-test{ --c:var(--orange); } .fx-fund-story{ --c:var(--teal); }
.mw-fast-page .fx-cost h3, .mw-fast-page .fx-funding h3{ margin:0 0 4px; font-size:19px !important; letter-spacing:-.02em; }
.fx-cost-lead{ margin:0 0 6px !important; font-size:14px !important; color:var(--ink-2); max-width:none !important; }
.fx-cost-note{ margin:14px 0 0 !important; font-size:14px !important; line-height:1.5; color:var(--ink-2); max-width:none !important; }

/* plain tables that stay tables on phones (the corridor board turns into cards; these do not) */
.mw-fast-page .fx-tbl{ margin-top:12px; border:0; box-shadow:none; background:none; border-radius:0; overflow:visible; }
.mw-fast-page .fx-tbl table{ display:table !important; width:100%; border-collapse:collapse; }
.mw-fast-page .fx-tbl thead{ display:table-header-group !important; }
.mw-fast-page .fx-tbl tbody{ display:table-row-group !important; }
.mw-fast-page .fx-tbl tr{ display:table-row !important; padding:0 !important; border:0 !important; background:none !important; box-shadow:none !important; border-radius:0 !important; }
.mw-fast-page .fx-tbl th, .mw-fast-page .fx-tbl td{ display:table-cell !important; width:auto !important; padding:10px 0 !important; border-top:1px solid var(--line); text-align:left; vertical-align:top; font-size:14.5px; line-height:1.45; background:none !important; }
.mw-fast-page .fx-tbl th{ border-top:0; padding-top:0 !important; font-family:var(--mono); font-size:11px; font-weight:600; letter-spacing:.08em; text-transform:uppercase; color:var(--ink-2); }
.mw-fast-page .fx-tbl .num{ text-align:right; white-space:nowrap; padding-left:16px !important; font-variant-numeric:tabular-nums; }
.mw-fast-page .fx-tbl td.num{ font-family:var(--mono); font-weight:600; }
.mw-fast-page .fx-tbl tr.fx-total td{ border-top:2px solid var(--ink); font-weight:700; font-size:16px; }
.mw-fast-page .fx-tbl-test td.num{ white-space:normal; text-align:left; font-family:inherit; font-weight:600; width:46% !important; }
.fx-verdict{ display:inline-flex; align-items:flex-start; gap:8px; }
.fx-verdict i{ flex:none; width:10px; height:10px; margin-top:6px; border-radius:50%; background:var(--fx-yes); }
tr[data-ok="no"] .fx-verdict i{ background:transparent; box-shadow:inset 0 0 0 2.5px var(--fx-no); border-radius:2px; }

/* operations */
.fx-ops-top{ display:grid; grid-template-columns:repeat(2, minmax(0,1fr)); gap:12px; margin-top:12px; }
.fx-ops-top > div{ padding:14px 16px; border-radius:14px; background:var(--canvas-2, rgba(15,16,18,.04)); }
.fx-ops-top span{ display:block; font-family:var(--mono); font-size:11px; letter-spacing:.08em; text-transform:uppercase; color:var(--ink-2); }
.fx-ops-top b{ display:block; margin-top:4px; font-size:clamp(20px, 2.4vw, 26px); letter-spacing:-.02em; color:var(--ink); }
.fx-ops-lines{ list-style:none; margin:14px 0 0; padding:0; display:grid; gap:0; }
@media (min-width:760px){ .fx-ops-lines{ grid-template-columns:repeat(2, minmax(0,1fr)); column-gap:28px; } }
.fx-ops-lines li{ display:flex; justify-content:space-between; gap:16px; padding:9px 0; border-top:1px solid var(--line); font-size:14.5px; }
.fx-ops-lines b{ font-family:var(--mono); white-space:nowrap; }

/* funding facts and the one-line story */
.fx-fund-facts dl{ margin:12px 0 0; display:grid; }
.fx-fund-facts dl > div{ padding:10px 0; border-top:1px solid var(--line); }
.fx-fund-facts dt{ font-family:var(--mono); font-size:11px; letter-spacing:.08em; text-transform:uppercase; color:var(--ink-2); }
.fx-fund-facts dd{ margin:3px 0 0; font-size:15px; line-height:1.45; font-weight:600; color:var(--ink); }
.fx-fund-story p{ margin:8px 0 0 !important; font-size:clamp(17px, 2vw, 21px) !important; line-height:1.4; font-weight:700; letter-spacing:-.01em; color:var(--ink); max-width:none !important; }
.mw-fast-page .fx-tbl table{ border:0 !important; box-shadow:none !important; background:none !important; }
.mw-fast-page .fx-tbl-test th.num{ text-align:left; }

/* ═══ The half-cent: six graphics from data/fast-funding.json (assets/fast-halfcent.js) ═══
   The --fast-use-* and --fast-src-* values are the JSON's own "color" fields; scripts check the two stay equal. */
.mw-fast-page{
  --fast-use-bus:#C77D00; --fast-use-coastal-link:#24559A; --fast-use-people-mover:#C0392B; --fast-use-stations:#8A3FC4; --fast-use-renewal:#3E8A5E; --fast-use-operations:#4F7FD6;
  --fast-src-surtax:#0A9488; --fast-src-fta:#1B57A8; --fast-src-other-federal:#6C8FD8; --fast-src-fdot:#B84C0F; --fast-src-cities:#8A3FC4; --fast-src-operating-aid:#B0872A;
  --hc-con:var(--fast-use-coastal-link); --hc-ops:var(--fast-use-operations); --hc-rev:var(--fast-src-surtax);
  --hc-hatch-bg:#E6E0F0; --hc-hatch-ln:#6B4E9B; --hc-ok:#1F7A4D; --hc-thin:#9A5B00; --hc-short:#B3261E;
}
html[data-theme="dark"] .mw-fast-page{ --hc-con:#6F9BE8; --hc-ops:#B5CCF5; --hc-rev:#2CC7B8; --hc-hatch-bg:#2A2438; --hc-hatch-ln:#B69AE6; --hc-ok:#5FD39A; --hc-thin:#F2B450; --hc-short:#FF8A80; }
.hc-sr{ position:absolute !important; width:1px; height:1px; margin:-1px; padding:0; overflow:hidden; clip:rect(0 0 0 0); clip-path:inset(50%); white-space:nowrap; border:0; }
.hc-ic{ flex:none; width:22px; height:22px; }
.hc-card{ position:relative; margin-top:20px; padding:24px 22px; border:1px solid var(--line); border-radius:18px; background:var(--surface); box-shadow:0 1px 2px rgba(15,16,18,.05), 0 6px 20px rgba(15,16,18,.05); }
.mw-fast-page .hc h3{ margin:0 0 4px; font-size:19px !important; letter-spacing:-.02em; }
.mw-fast-page .hc p{ max-width:none; }
#hc-lead{ min-height:3em; } @media (min-width:760px){ #hc-lead{ min-height:1.5em; } }

/* reserved boxes: measured heights of the rendered graphics, so nothing below moves when the data lands */
.hc-hero{ min-height:587px; } .hc-bars{ min-height:1021px; } .hc-chart{ min-height:573px; } .hc-enough{ min-height:535px; } .hc-cities{ min-height:617px; } .hc-tables{ min-height:279px; } .hc-foot{ min-height:61px; }
@media (min-width:760px){ .hc-hero{ min-height:361px; } .hc-bars{ min-height:759px; } .hc-chart{ min-height:405px; } .hc-enough{ min-height:336px; } .hc-cities{ min-height:595px; } .hc-tables{ min-height:279px; } .hc-foot{ min-height:41px; } }
@media (min-width:1000px){ .hc-hero{ min-height:341px; } .hc-bars{ min-height:700px; } .hc-chart{ min-height:524px; } .hc-enough{ min-height:314px; } .hc-cities{ min-height:572px; } .hc-foot{ min-height:20px; } }
.hc[data-ready] .hc-card, .hc[data-ready] .hc-tables, .hc[data-ready] .hc-foot{ min-height:0; }

/* A. hero */
.hc-hero{ display:grid; gap:24px; background:#0B1B2B; border-color:#0B1B2B; color:#fff; }
@media (min-width:760px){ .hc-hero{ grid-template-columns:minmax(0,5fr) minmax(0,6fr); gap:36px; align-items:center; padding:32px; } }
.hc-half{ margin:0 !important; display:flex; align-items:flex-start; font-size:clamp(72px, 12vw, 120px) !important; line-height:.9; font-weight:800; letter-spacing:-.04em; color:#fff; }
.hc-cent{ font-size:.55em; margin:.08em 0 0 .06em; color:#F5C04A; }
.hc-half-sub{ margin:8px 0 0 !important; font-size:16px !important; color:#C9D6E4; }
.hc-yield{ margin:20px 0 0; display:grid; gap:12px; }
.hc-yield > div{ display:grid; grid-template-columns:22px minmax(0,1fr); column-gap:12px; align-items:start; color:#F5C04A; }
.hc-yield dt{ font-size:clamp(20px, 2.6vw, 26px); font-weight:800; letter-spacing:-.02em; line-height:1.15; color:#fff; }
.hc-yield dd{ grid-column:2; margin:2px 0 0; font-family:var(--mono); font-size:12.5px; color:#C9D6E4; }
.hc-facts{ list-style:none; margin:0; padding:0; display:grid; gap:0; }
.hc-facts li{ display:grid; grid-template-columns:22px minmax(0,1fr); gap:14px; padding:14px 0; border-top:1px solid rgba(255,255,255,.16); font-size:15.5px; line-height:1.45; color:#fff; }
.hc-facts li:first-child{ border-top:0; } .hc-facts .hc-ic{ color:#F5C04A; margin-top:1px; }

/* B. uses and sources */
.hc-ub + .hc-split{ margin:14px 0 26px !important; }
.hc-ub-h{ display:flex; flex-wrap:wrap; align-items:baseline; justify-content:space-between; gap:4px 16px; margin-bottom:10px; }
.hc-total{ margin:0 !important; font-family:var(--mono); font-size:13px !important; font-weight:600; color:var(--ink-2); }
.hc-bar{ position:relative; display:none; gap:2px; height:56px; border-radius:10px; overflow:hidden; background:var(--surface); }
.hc-seg{ min-width:3px; display:flex; align-items:center; justify-content:center; background:var(--c); overflow:hidden; }
.hc-seg-v{ padding:0 7px; font-family:var(--mono); font-size:13px; font-weight:700; white-space:nowrap; }
.hc-on-dark{ color:#fff; } .hc-on-light{ color:#0F1012; }
/* dark theme: the navy and burnt-orange fills sit close to the surface, so every fill gets a light hairline */
html[data-theme="dark"] .hc-seg, html[data-theme="dark"] .hc-sw, html[data-theme="dark"] .hc-lg-bar i{ box-shadow:inset 0 0 0 1px rgba(255,255,255,.34); }
.hc-labs{ display:none; position:relative; height:92px; }
.hc-l{ position:absolute; display:inline-flex; align-items:center; gap:6px; height:40px; padding:0 2px; font-size:13px; line-height:1.15; white-space:nowrap; color:var(--ink); background:var(--surface); }
.hc-l .hc-ic{ width:18px; height:18px; color:var(--ink-2); } .hc-l b{ font-weight:600; } .hc-l em{ display:none; font-style:normal; font-family:var(--mono); font-weight:700; }
.hc-l.hc-l-val em{ display:inline; }
.hc-ub[data-which="uses"] .hc-l[data-row="1"]{ bottom:0; } .hc-ub[data-which="uses"] .hc-l[data-row="2"]{ top:0; }
.hc-ub[data-which="sources"] .hc-l[data-row="1"]{ top:0; } .hc-ub[data-which="sources"] .hc-l[data-row="2"]{ bottom:0; }
.hc-leaders{ position:absolute; inset:0; width:100%; height:100%; overflow:visible; pointer-events:none; } .hc-leaders path{ fill:none; stroke:var(--ink-2); stroke-width:1; opacity:.7; }
.hc-l{ z-index:1; }
.hc-legend{ list-style:none; margin:0; padding:0; display:grid; }
.hc-legend li{ display:grid; grid-template-columns:14px 22px minmax(0,1fr) auto 44px; align-items:center; gap:4px 10px; padding:11px 0; border-top:1px solid var(--line); font-size:14.5px; }
.hc-legend li:first-child{ border-top:0; }
.hc-sw{ width:14px; height:14px; border-radius:4px; background:var(--c); box-shadow:inset 0 0 0 1px rgba(15,16,18,.18); }
.hc-legend .hc-ic{ color:var(--ink-2); } .hc-lg-v{ font-family:var(--mono); font-weight:700; white-space:nowrap; } .hc-lg-p{ font-family:var(--mono); font-size:13px; color:var(--ink-2); text-align:right; }
.hc-lg-bar{ grid-column:1 / -1; height:10px; border-radius:5px; background:var(--canvas-2, rgba(15,16,18,.06)); overflow:hidden; } .hc-lg-bar i{ display:block; height:100%; border-radius:5px; background:var(--c); box-shadow:inset 0 0 0 1px rgba(15,16,18,.18); }
.hc-split, .hc-sentence{ margin:16px 0 0 !important; font-size:15px !important; color:var(--ink-2); }
.hc-sentence{ padding-top:16px; border-top:1px solid var(--line); font-size:clamp(17px, 2vw, 20px) !important; font-weight:700; letter-spacing:-.01em; color:var(--ink); }
@media (min-width:760px){
  .hc-bar{ display:flex; } .hc-labs{ display:block; }
  .hc-legend{ grid-template-columns:repeat(2, minmax(0,1fr)); column-gap:32px; margin-top:6px; } .hc-legend li{ border-top:0; padding:5px 0; font-size:13.5px; } .hc-lg-bar{ display:none; }
}
@media (min-width:1100px){ .hc-legend{ grid-template-columns:repeat(3, minmax(0,1fr)); } }
/* Português money reads "US$ 4,1 bi": on narrow phones the value column is wider, so give the name its room back */
@media (max-width:419px){
  .hc-legend li:lang(pt){ grid-template-columns:14px 22px minmax(0,1fr) auto 34px; column-gap:8px; }
  .hc-legend:lang(pt) .hc-lg-v{ font-size:13px; }
}
@media (max-width:359px){
  .mw-fast-page .fx-tbl-st:lang(pt) .num{ padding-left:8px !important; }
  .mw-fast-page .fx-tbl-st:lang(pt) td.num{ font-size:13.5px; }
}

/* C. thirty-year chart */
.hc-ch-h{ display:flex; flex-wrap:wrap; align-items:baseline; justify-content:space-between; gap:4px 16px; }
.hc-unit{ margin:0 !important; font-family:var(--mono); font-size:12.5px !important; color:var(--ink-2); }
.hc-key{ list-style:none; margin:12px 0 8px; padding:0; display:flex; flex-wrap:wrap; gap:6px 18px; font-size:13px; color:var(--ink); }
.hc-key li{ display:inline-flex; align-items:center; gap:7px; } .hc-key i{ flex:none; width:16px; height:12px; border-radius:3px; }
.hc-k-con{ background:var(--hc-con); } .hc-k-ops{ background:var(--hc-ops); }
.hc-k-gr{ background:repeating-linear-gradient(45deg, var(--hc-hatch-ln) 0 2px, var(--hc-hatch-bg) 2px 5px); box-shadow:inset 0 0 0 1px var(--hc-hatch-ln); }
.hc-k-rev{ height:0 !important; border-top:3px solid var(--hc-rev); border-radius:0 !important; }
.hc-scroll.is-wide{ overflow-x:auto; -webkit-overflow-scrolling:touch; padding-bottom:6px; } .hc-scroll.is-wide:focus-visible{ outline:2px solid var(--fx-blue, #0B6CFF); outline-offset:2px; }
.hc-plot{ position:relative; width:100%; } .hc-plot svg{ display:block; width:100%; height:100%; overflow:visible; }
.hc-grid{ stroke:var(--line); stroke-width:1; } .hc-ax{ font-family:var(--mono); font-size:11px; fill:var(--ink-2); } .hc-rev-l{ font-size:13px; font-weight:700; fill:var(--ink); } .hc-spike{ font-weight:700; fill:var(--ink); }
.hc-c-con{ fill:var(--hc-con); } .hc-c-ops{ fill:var(--hc-ops); } .hc-c-gr{ stroke:var(--hc-hatch-ln); stroke-width:1; } .hc-h-bg{ fill:var(--hc-hatch-bg); } .hc-h-ln{ stroke:var(--hc-hatch-ln); }
.hc-rev{ fill:none; stroke:var(--hc-rev); stroke-width:3; stroke-linejoin:round; stroke-linecap:round; } .hc-rev-dot{ fill:var(--hc-rev); stroke:var(--surface); stroke-width:2; }
.hc-hits{ position:absolute; inset:0; }
.hc-hit{ position:absolute; top:0; bottom:0; margin:0; padding:0; border:0; border-radius:6px; background:transparent; cursor:pointer; -webkit-tap-highlight-color:transparent; }
.hc-hit.is-on{ background:rgba(11,108,255,.10); box-shadow:inset 0 0 0 1px rgba(11,108,255,.35); } .hc-hit:focus-visible{ outline:2px solid var(--fx-blue, #0B6CFF); outline-offset:-2px; }
.hc-tip{ position:absolute; top:4px; z-index:3; width:min(270px, calc(100% - 8px)); padding:12px 14px; border-radius:12px; background:#0B1B2B; color:#fff; font-size:13px; line-height:1.35; box-shadow:0 12px 32px rgba(0,0,0,.28); pointer-events:none; }
.hc-tip b{ display:block; margin-bottom:6px; font-size:14px; } .hc-tip small{ font-weight:400; color:#C9D6E4; } .hc-tip dl{ margin:0; display:grid; gap:4px; }
.hc-tip dl > div{ display:flex; justify-content:space-between; gap:14px; } .hc-tip dt{ color:#C9D6E4; } .hc-tip dd{ margin:0; font-family:var(--mono); font-weight:700; white-space:nowrap; }
.hc-tip dl > div:last-child{ margin-top:4px; padding-top:6px; border-top:1px solid rgba(255,255,255,.2); }
.hc-toggle{ margin-top:14px; min-height:44px; padding:0 18px; border:1px solid var(--line-2, var(--line)); border-radius:999px; background:var(--surface); color:var(--ink); font:600 14px/1 var(--sans); cursor:pointer; }
.hc-toggle:focus-visible{ outline:2px solid var(--fx-blue, #0B6CFF); outline-offset:2px; }

/* D. is it enough */
.hc-two{ display:grid; gap:0; }
@media (min-width:760px){
  .hc-enough{ display:grid; grid-template-columns:repeat(2, minmax(0,1fr)); column-gap:36px; } .hc-enough > h3, .hc-enough > .hc-short{ grid-column:1 / -1; }
  .hc-enough .hc-meter{ border-top:0; padding-top:4px; margin-top:14px; }
  .hc-ct{ columns:2; column-gap:40px; } .hc-ct > li{ break-inside:avoid; } .hc-ct > li:first-child:not(.hc-ct-g){ border-top:1px solid var(--line); }
}
.hc-meter{ margin-top:18px; padding-top:18px; border-top:1px solid var(--line); } .hc-enough h3 + .hc-meter{ border-top:0; padding-top:4px; }
.hc-verdict{ margin:0 0 10px !important; display:flex; flex-wrap:wrap; align-items:center; gap:4px 8px; font-size:15px !important; }
.hc-verdict b{ font-size:18px; letter-spacing:-.01em; } .hc-verdict span{ flex-basis:100%; font-family:var(--mono); font-size:12.5px; color:var(--ink-2); }
.is-ok .hc-verdict .hc-ic, .is-ok .hc-verdict b{ color:var(--hc-ok); } .is-thin .hc-verdict .hc-ic, .is-thin .hc-verdict b{ color:var(--hc-thin); }
.hc-track{ position:relative; height:22px; border-radius:6px; background:color-mix(in srgb, var(--hc-rev) 26%, var(--surface)); box-shadow:inset 0 0 0 1px var(--hc-rev); }
.hc-track i{ position:absolute; left:0; top:0; bottom:0; border-radius:6px 0 0 6px; background:var(--hc-rev); } .hc-track u{ position:absolute; top:-5px; bottom:-5px; width:3px; margin-left:-1.5px; background:var(--ink); border-radius:2px; }
.hc-meter-l{ margin:10px 0 0 !important; display:flex; flex-wrap:wrap; justify-content:space-between; gap:2px 16px; font-size:13.5px !important; color:var(--ink-2); } .hc-meter-l b{ font-family:var(--mono); color:var(--ink); }
.hc-cushion{ margin:4px 0 0 !important; font-size:14.5px !important; font-weight:600; color:var(--ink); }
.hc-short{ margin:20px 0 0 !important; display:grid; grid-template-columns:22px minmax(0,1fr); gap:12px; padding:14px 16px; border-radius:12px; border:1px solid var(--hc-short); font-size:15px !important; line-height:1.45; font-weight:600; color:var(--ink); } .hc-short .hc-ic{ color:var(--hc-short); }

/* E. stations by city */
.hc-ct, .hc-ct ul{ list-style:none; margin:0; padding:0; } .hc-ct{ margin-top:10px; }
.hc-ct li > .hc-ct-n, .hc-ct summary > .hc-ct-n{ min-width:0; }
.hc-ct > li:not(.hc-ct-g), .hc-ct summary, .hc-ct ul li{ display:grid; grid-template-columns:minmax(0,1fr) auto 72px; align-items:baseline; gap:3px 12px; padding:8px 0; border-top:1px solid var(--line); font-size:14.5px; }
.hc-ct > li:first-child{ border-top:0; }
.hc-ct-s{ font-size:12.5px; color:var(--ink-2); white-space:nowrap; } .hc-ct-v{ font-family:var(--mono); font-weight:700; text-align:right; white-space:nowrap; }
.hc-ct-bar{ grid-column:1 / -1; height:8px; border-radius:4px; background:var(--canvas-2, rgba(15,16,18,.06)); overflow:hidden; } .hc-ct-bar i{ display:block; height:100%; border-radius:4px; background:var(--fast-use-stations); }
.hc-ct summary{ cursor:pointer; list-style:none; min-height:44px; } .hc-ct summary::-webkit-details-marker{ display:none; }
.hc-ct summary .hc-ct-n::after{ content:" +"; font-family:var(--mono); font-weight:700; color:var(--ink-2); } .hc-ct details[open] summary .hc-ct-n::after{ content:" \2212"; }
.hc-ct summary:focus-visible{ outline:2px solid var(--fx-blue, #0B6CFF); outline-offset:2px; border-radius:6px; }
.hc-ct ul{ padding-left:14px; border-left:2px solid var(--fast-use-stations); margin:0 0 8px; } .hc-ct ul li{ font-size:13.5px; } .hc-ct ul .hc-ct-bar i{ opacity:.6; }

/* F. data tables */
.hc-tables{ margin-top:24px; } .hc-dt{ border-top:1px solid var(--line); } .hc-dt:last-child{ border-bottom:1px solid var(--line); }
.hc-dt summary{ display:flex; align-items:center; min-height:48px; cursor:pointer; font-size:15px; font-weight:600; color:var(--ink); } .hc-dt summary:focus-visible{ outline:2px solid var(--fx-blue, #0B6CFF); outline-offset:2px; border-radius:6px; }
.hc-dt summary{ list-style:none; } .hc-dt summary::-webkit-details-marker{ display:none; } .hc-dt summary::after{ content:"+"; margin-left:auto; padding-left:16px; font-family:var(--mono); font-size:18px; font-weight:500; color:var(--ink-2); } .hc-dt[open] summary::after{ content:"\2212"; }
.hc-dt-w{ overflow-x:auto; padding:0 0 16px; } .hc-dt-w:focus-visible, .fx-ribbon-in:focus-visible{ outline:2px solid var(--fx-blue, #0B6CFF); outline-offset:2px; border-radius:6px; }
.mw-fast-page .hc-dt table{ display:table !important; width:100%; min-width:480px; border-collapse:collapse; border:0 !important; box-shadow:none !important; background:none !important; font-size:13.5px; }
.mw-fast-page .hc-dt thead{ display:table-header-group !important; } .mw-fast-page .hc-dt tbody{ display:table-row-group !important; }
.mw-fast-page .hc-dt tr{ display:table-row !important; padding:0 !important; border:0 !important; background:none !important; box-shadow:none !important; border-radius:0 !important; }
.mw-fast-page .hc-dt th, .mw-fast-page .hc-dt td{ display:table-cell !important; width:auto !important; padding:7px 10px 7px 0 !important; border-top:1px solid var(--line); text-align:left; vertical-align:top; background:none !important; font-weight:400; }
.mw-fast-page .hc-dt thead th{ border-top:0; font-family:var(--mono); font-size:11px; font-weight:600; letter-spacing:.04em; color:var(--ink-2); }
.mw-fast-page .hc-dt .num{ text-align:right; font-family:var(--mono); font-variant-numeric:tabular-nums; white-space:nowrap; } .mw-fast-page .hc-dt thead .num{ white-space:normal; }
.hc-foot{ margin:20px 0 0 !important; font-size:13.5px !important; line-height:1.5; color:var(--ink-2); }

/* image band between the money and the ask */
.fx-band{ max-width:var(--ux-max,1180px); margin:0 auto; padding:clamp(28px,4vw,56px) var(--ux-gutter,20px) 0; }
.fx-band-in{ display:grid; gap:12px; } @media (min-width:1000px){ .fx-band-in{ grid-template-columns:minmax(0,2fr) minmax(0,1fr); } }
.fx-band figure{ position:relative; margin:0; overflow:hidden; border-radius:var(--ux-r,16px); background:var(--canvas-2, rgba(15,16,18,.06)); box-shadow:0 1px 2px rgba(15,16,18,.05), 0 10px 28px rgba(15,16,18,.08); }
.fx-band-main{ aspect-ratio:3 / 2; } .fx-band-side{ aspect-ratio:5 / 4; }
@media (min-width:600px){ .fx-band-main{ aspect-ratio:5 / 2; } .fx-band-side{ aspect-ratio:5 / 2; } }
@media (min-width:1000px){ .fx-band-main, .fx-band-side{ aspect-ratio:auto; height:320px; } }
.fx-band picture{ display:block; width:100%; height:100%; } .fx-band img{ display:block; width:100%; height:100%; object-fit:cover; transition:transform .6s var(--ease, ease); } .fx-band figure:hover img{ transform:scale(1.03); }
.fx-band figcaption{ position:absolute; left:0; right:0; bottom:0; padding:32px 16px 13px; font-size:14px; font-weight:600; line-height:1.3; color:#fff; background:linear-gradient(to top, rgba(6,16,28,.8), rgba(6,16,28,0)); }

@media (prefers-reduced-motion:reduce){ .fx-band img{ transition:none; } .fx-band figure:hover img{ transform:none; } }
@media (forced-colors:active){
  .hc-seg, .hc-sw, .hc-lg-bar i, .hc-ct-bar i, .hc-track i, .hc-key i{ forced-color-adjust:none; } .hc-seg, .hc-track, .hc-lg-bar, .hc-ct-bar{ outline:1px solid CanvasText; }
  .hc-c-con, .hc-c-ops, .hc-c-gr{ forced-color-adjust:none; stroke:CanvasText; stroke-width:1; } .hc-rev{ stroke:CanvasText; } .hc-grid{ stroke:GrayText; } .hc-ax{ fill:CanvasText; }
}
@media print{
  .hc-tip, .hc-hits, .hc-toggle, .fx-band{ display:none !important; } .hc-card{ box-shadow:none; break-inside:avoid; } .hc-dt{ break-inside:avoid; } .hc-dt-w{ overflow:visible; }
  .hc-seg, .hc-sw, .hc-lg-bar i, .hc-ct-bar i, .hc-track, .hc-track i, .hc-key i, .hc-hero, .hc-plot svg *{ -webkit-print-color-adjust:exact; print-color-adjust:exact; }
}

/* ═══ Phones: FAST was 39 screens long and three blocks were hard to read. One column where two were squeezed, stacked rows where a table was cut off, folds for the long lists. ═══ */
.fx-more > summary, .hc-ct-rest > details > summary{ display:flex; align-items:center; justify-content:center; gap:8px; min-height:44px; margin-top:10px; padding:0 16px; border:1px solid var(--line-2, var(--line)); border-radius:999px; font-size:14px; font-weight:600; color:var(--ink); cursor:pointer; list-style:none; }
.fx-more > summary::-webkit-details-marker, .hc-ct-rest > details > summary::-webkit-details-marker{ display:none; }
.fx-more > summary::after, .hc-ct-rest > details > summary::after{ content:"+"; font-family:var(--mono); font-size:16px; color:var(--ink-2); }
.fx-more[open] > summary, .hc-ct-rest > details[open] > summary{ display:none; }
.fx-more > summary:focus-visible, .hc-ct-rest > details > summary:focus-visible{ outline:2px solid var(--fx-blue, #0B6CFF); outline-offset:2px; }
.fx-more > dl > div:first-child{ border-top:1px solid var(--line); }
.hc-ct .hc-ct-rest{ display:block; padding:0; border-top:0; } .hc-ct .hc-ct-flat{ padding-left:0; border-left:0; margin:0; } .hc-ct .hc-ct-flat > li{ font-size:14.5px; } .hc-ct .hc-ct-flat > li .hc-ct-bar i{ opacity:1; }
.hc-ct .hc-ct-flat > li.hc-ct-g{ display:block; padding:0; }
@media (max-width:759px){
  /* talking points: two squeezed columns become one readable column */
  .mw-fast-page .mw-fast-talk{ grid-template-columns:1fr !important; }
  .mw-fast-page .mw-fast-talk ol{ padding-left:22px; } .mw-fast-page .mw-fast-talk li{ font-size:15.5px; line-height:1.55; }
  /* pillars: letter beside the text, not above it; a third of the height */
  .mw-fast-page .fx-pillar{ grid-template-columns:44px minmax(0,1fr); column-gap:14px; row-gap:2px; padding:16px 16px 15px; }
  .mw-fast-page .fx-letter{ grid-row:1 / span 2; width:44px; height:44px; border-radius:12px; font-size:24px; }
  .mw-fast-page .fx-pillar b{ margin-top:0; font-size:17px; align-self:end; } .mw-fast-page .fx-pillar span:last-child{ font-size:14.5px; line-height:1.45; }
  /* "is a half-cent enough": question over verdict, nothing cut off at the edge */
  .mw-fast-page .fx-tbl-test thead{ display:none !important; }
  .mw-fast-page .fx-tbl-test table, .mw-fast-page .fx-tbl-test tbody{ display:block !important; }
  .mw-fast-page .fx-tbl-test tr{ display:block !important; padding:12px 0 !important; border-top:1px solid var(--line) !important; }
  .mw-fast-page .fx-tbl-test tr:first-child{ border-top:0 !important; }
  .mw-fast-page .fx-tbl-test th, .mw-fast-page .fx-tbl-test td, .mw-fast-page .fx-tbl-test td.num{ display:block !important; width:auto !important; padding:0 !important; border:0 !important; white-space:normal; }
  .mw-fast-page .fx-tbl-test td.num{ margin-top:6px; padding-left:0 !important; font-size:15px; }
  /* the board's last-column nowrap (0,4,1) outranked the line above: verdicts ran off the card on phones */
  .mw-fast-page .fx-tbl-test td.num:last-child{ white-space:normal; }
  /* the verdict is a dot plus a long sentence: grid so the sentence can wrap, which an inline-flex text run will not do */
  .mw-fast-page .fx-verdict{ display:grid !important; grid-template-columns:10px minmax(0,1fr); gap:8px; align-items:start; }
  /* the other cost tables: let the label wrap and keep the number on one line */
  .mw-fast-page .fx-tbl td:first-child, .mw-fast-page .fx-tbl th:first-child{ padding-right:8px !important; }
  /* Spanish headings are longer than English ones; let them wrap rather than push the table off the screen */
  .mw-fast-page .fx-tbl th.num{ white-space:normal !important; }
  /* tighter section rhythm */
  .mw-fast-page .mw-fast-section{ padding-top:44px; padding-bottom:44px; }
}

/* The people mover, drawn. A rendering, so the caption says so and sits under the frame, not over the picture. */
.fx-apm{ margin:26px 0 0; }
.fx-apm picture{ display:block; border-radius:var(--ux-r,16px); overflow:hidden; background:var(--canvas-2, rgba(15,16,18,.06)); box-shadow:0 1px 2px rgba(15,16,18,.05), 0 10px 28px rgba(15,16,18,.08); }
.fx-apm img{ display:block; width:100%; height:auto; }
.mw-fast-page .fx-apm figcaption{ margin:10px 0 0; font-size:13.5px; line-height:1.45; color:var(--ink-2); max-width:70ch; }

/* A wide picture inside a section: same frame as the people mover figure. */
.fx-wide{ margin:0 0 26px; }
.fx-wide picture{ display:block; border-radius:var(--ux-r,16px); overflow:hidden; background:var(--canvas-2, rgba(15,16,18,.06)); box-shadow:0 1px 2px rgba(15,16,18,.05), 0 10px 28px rgba(15,16,18,.08); }
.fx-wide img{ display:block; width:100%; height:auto; }
.mw-fast-page .fx-wide figcaption{ margin:10px 0 0; font-size:13.5px; line-height:1.45; color:var(--ink-2); max-width:70ch; }

/* brand refresh (22 Sep): the Palm Beach FAST lockup heads the hero, a white badge over the photo in both themes */
/* .mw-bleed-hero img makes every hero image a full-bleed cover; the logo opts out */
.mw-bleed-hero img.fx-hero-logo{ position:relative; inset:auto; display:block; width:min(100%, 440px); height:auto; max-height:none; margin:0 0 22px; object-fit:contain; filter:none; border-radius:4px; box-shadow:0 10px 30px rgba(0,0,0,.28); }

/* brand refresh (22 Sep): brand navy for line icons; pillar cards with a scene and a tagline band;
   the network stat row; the operations card. Icons come from assets/fast-icons.js (currentColor strokes). */
.mw-fast-page{ --fx-brand:#022964; --fx-sun:#F2B544; }
html[data-theme="dark"] .mw-fast-page{ --fx-brand:#BFD6F2; }
.fx-i{ display:block; flex:none; }
.fx-i .fx-i-acc{ fill:var(--c, var(--fx-sun)); } .fx-i-sun{ fill:var(--fx-sun); }

.mw-fast-page .fx-pillar.fx-pillar-v2{ display:flex; flex-direction:column; gap:0; padding:0; }
.fx-pillar-v2::before{ display:none; }
.fx-pillar-art{ padding:14px 14px 0; color:var(--fx-brand); background:color-mix(in srgb, var(--c) 16%, var(--surface)); border-bottom:1px solid color-mix(in srgb, var(--c) 35%, var(--line)); }
.fx-scene{ display:block; width:100%; height:auto; }
.fx-scene .fx-i-acc{ fill:var(--c); }
.fx-pillar-body{ flex:1; display:grid; grid-template-columns:auto minmax(0,1fr); align-items:center; align-content:start; column-gap:12px; row-gap:8px; padding:18px 18px 16px; }
.mw-fast-page .fx-pillar-v2 .fx-letter{ grid-row:auto; width:48px; height:48px; border-radius:12px; font-size:26px; }
.mw-fast-page .fx-pillar-v2 b{ margin:0; font-size:21px; align-self:center; }
.mw-fast-page .fx-pillar-v2 .fx-pillar-line{ grid-column:1 / -1; color:var(--ink-2); font-size:15px; line-height:1.5; }
.fx-pillar-ico{ display:none; }
.fx-pillar-tag{ margin:0 !important; padding:12px 18px; font-family:var(--mono) !important; font-size:12px !important; line-height:1.45; letter-spacing:.1em; text-transform:uppercase; color:var(--ink) !important; background:color-mix(in srgb, var(--c) 24%, var(--surface)); max-width:none !important; }
@media (max-width:599px){
  /* phones: the scene gives way to the icon-set badge (letter + icon), the card stays short */
  .fx-pillar-art{ display:none; }
  .mw-fast-page .fx-pillar-v2 .fx-pillar-body{ grid-template-columns:auto auto minmax(0,1fr); padding:14px 16px 12px; }
  .mw-fast-page .fx-pillar-v2 .fx-letter{ width:44px; height:44px; font-size:24px; }
  .fx-pillar-ico{ display:block; width:40px; height:40px; color:var(--fx-brand); }
  .fx-pillar-ico .fx-i{ width:40px; height:40px; }
  .fx-pillar-tag{ padding:10px 16px; font-size:11.5px !important; }
}

.fx-netstats{ display:grid; grid-template-columns:repeat(2, minmax(0,1fr)); gap:1.5px; margin:24px 0 28px; padding:0; background:var(--fx-brand); border:1.5px solid var(--fx-brand); border-radius:4px; overflow:hidden; }
@media (min-width:760px){ .fx-netstats{ grid-template-columns:repeat(5, minmax(0,1fr)); } }
@media (max-width:759px){ .fx-ns:last-child{ grid-column:1 / -1; } }
.fx-ns{ display:flex; flex-direction:column; gap:6px; padding:18px 18px 20px; background:var(--surface); color:var(--fx-brand); min-width:0; }
.fx-ns:first-child{ background:color-mix(in srgb, var(--fx-blue) 12%, var(--surface)); }
.fx-ns .fx-i{ width:40px; height:40px; margin-bottom:8px; --c:var(--fx-sun); }
.fx-ns b{ font-size:clamp(32px, 3.2vw, 44px); font-weight:800; letter-spacing:-.035em; line-height:1; color:var(--fx-brand); }
.fx-ns b small{ margin-left:4px; font-size:.5em; letter-spacing:0; }
.fx-ns-k{ font-family:var(--mono); font-size:11.5px; letter-spacing:.1em; text-transform:uppercase; color:var(--ink); line-height:1.35; }
.fx-ns-n{ font-size:14px; line-height:1.4; color:var(--ink-2); }

.fx-ops-head{ display:flex; justify-content:space-between; align-items:flex-start; gap:16px; }
.fx-ops-head .fx-i{ width:60px; height:60px; color:var(--fx-brand); --c:var(--fx-sun); }
.mw-fast-page .fx-ops-top > div{ padding:16px 18px 18px; border-radius:6px; border:1.5px solid var(--fx-brand); background:color-mix(in srgb, var(--fx-blue) 10%, var(--surface)); }
.mw-fast-page .fx-ops-top > div + div{ background:color-mix(in srgb, var(--teal) 12%, var(--surface)); }
.mw-fast-page .fx-ops-top span{ font-size:12px; letter-spacing:.16em; color:var(--ink); }
.mw-fast-page .fx-ops-top b{ font-size:clamp(34px, 5vw, 56px); font-weight:800; letter-spacing:-.035em; line-height:1.05; color:var(--fx-brand); }
.mw-fast-page .fx-ops-lines li{ display:grid; grid-template-columns:40px minmax(0,1fr) auto; align-items:center; gap:14px; padding:12px 0; }
.fx-ops-lines .fx-i{ width:40px; height:40px; color:var(--fx-brand); }
.mw-fast-page .fx-ops-lines b{ font-size:18px; color:var(--fx-brand); }
.mw-fast-page .fx-cost-ops .fx-cost-note{ display:flex; gap:14px; align-items:flex-start; padding:14px 16px; border-radius:6px; background:color-mix(in srgb, var(--fx-blue) 9%, var(--surface)); color:var(--ink) !important; }
.fx-cost-note .fx-i{ width:30px; height:30px; color:var(--fx-brand); }
@media (max-width:599px){ .mw-fast-page .fx-ops-top b{ font-size:26px; } .fx-ops-head .fx-i{ width:48px; height:48px; } }

/* ═══════════════════════════════════════════════════════════════
   Brand refresh, second pass (22 Sep): the City's poster render as the hero, the lockup tile mark in the
   app bar, section kickers in the renders' letterspaced style, wide-screen layouts (reviews 62–69).
   Grid lines are the 2px gap between cells over the line colour, so every cell border stays even.
   ═══════════════════════════════════════════════════════════════ */
.mw-fast-page{
  --fxp-line:#022964; --fxp-cell:#FFFFFF; --fxp-head:#E3EEFB; --fxp-ink:#022964; --fxp-ink-2:#33466B;
  --fxp-sun:#BFD9F7; --fxp-box:#E3EEFB; --fxp-rule:#129F99;
}
html[data-theme="dark"] .mw-fast-page{
  /* the dark poster sits on the site's own dark surface, which is also the on-dark lockup's ground */
  --fxp-line:#3A4A63; --fxp-cell:var(--surface); --fxp-head:#1A2B44; --fxp-ink:#E4EEFF; --fxp-ink-2:#B9C9E6;
  --fxp-sun:#3E6DB3; --fxp-box:#1A2B44; --fxp-rule:#3FBDB6;
}
/* one logo file per theme (poster lockup only; app bar is text) */
.mw-fast-page .fx-on-dark{ display:none !important; }
html[data-theme="dark"] .mw-fast-page .fx-on-light{ display:none !important; }
html[data-theme="dark"] .mw-fast-page .fx-on-dark{ display:block !important; }

/* app bar: single clean bold wordmark; FAST uses the page blue */
.mw-fast-page .fx-hword{ color:var(--fxp-ink, var(--ink)); }
.mw-fast-page .fx-hword b{ color:var(--fx-blue); }

/* the poster */
.fx-poster{ max-width:var(--shell-max); margin:0 auto; padding:clamp(16px,2.4vw,32px) clamp(16px,3.2vw,40px) clamp(8px,1.4vw,16px); }
.fx-poster-grid{
  display:grid; grid-template-columns:minmax(0,1fr); gap:2px;
  background:var(--fxp-line); border:2px solid var(--fxp-line); border-radius:4px; overflow:hidden;
  color:var(--fxp-ink);
}
.fx-pc{ background:var(--fxp-cell); padding:clamp(18px,2.2vw,32px); min-width:0; }
.fx-pc-brand{ display:flex; align-items:center; }
.fx-poster-logo{ display:block; width:min(100%, 720px); height:auto; }
.fx-pc-tag{ display:none; }
.fx-pc-head{ background:var(--fxp-head); display:flex; flex-direction:column; align-items:flex-start; }
.fx-kick{
  margin:0; font-family:var(--sans) !important; font-size:12px; font-weight:600; line-height:1.7;
  letter-spacing:.22em; text-transform:uppercase; color:var(--fxp-ink) !important;
}
.fx-kick-soft{ color:var(--fxp-ink-2) !important; font-weight:500; }
.fx-rule{ display:block; width:44px; height:3px; margin:16px 0; background:var(--fxp-ink); }
.fx-pc-tag .fx-rule, .fx-art .fx-rule{ background:var(--fxp-rule); }
.mw-fast-page .fx-poster h1{
  margin:14px 0 0 !important; font-size:clamp(34px,4.6vw,64px) !important; line-height:1.02 !important;
  letter-spacing:-.035em; font-weight:800; color:var(--fxp-ink) !important; max-width:13ch !important; text-wrap:balance;
}
.mw-fast-page .fx-poster .mw-lede{ margin:0 !important; font-size:clamp(15.5px,1.2vw,18px) !important; line-height:1.55; color:var(--fxp-ink-2) !important; max-width:58ch; }
.mw-fast-page .fx-poster .mw-hero-actions{ margin-top:22px !important; display:flex; flex-wrap:wrap; gap:10px; }
.mw-fast-page .fx-poster .mw-btn{ border-radius:999px !important; min-height:48px; padding:0 22px !important; font-size:15px; font-weight:700; }
.mw-fast-page .fx-poster .mw-btn-primary{ background:var(--fxp-ink) !important; color:var(--fxp-cell) !important; border:2px solid var(--fxp-ink) !important; }
.mw-fast-page .fx-poster .mw-btn-secondary{ background:transparent !important; color:var(--fxp-ink) !important; border:2px solid var(--fxp-ink) !important; }

/* the three drawings; phones show the waterfront only */
.fx-pc-art{ display:grid; gap:2px; }
.fx-art{ display:grid; grid-template-columns:minmax(0,1fr); gap:2px; }
.fx-art-pic{ display:block; background:var(--fxp-cell); padding:14px 18px 10px; color:var(--fxp-ink); aspect-ratio:240 / 96; box-sizing:content-box; }
.fx-art-svg{ display:block; width:100%; height:100%; }
.fx-art-svg .fx-i-sun{ fill:var(--fxp-sun); }
.fx-art-svg .fx-i-box{ fill:var(--fxp-box); stroke:none; }
.fx-art > .fx-kick{ display:none; background:var(--fxp-cell); padding:18px; }
.fx-art:nth-child(n+2){ display:none; }

/* the figures row */
.fx-poster-stats{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:2px; min-height:260px; align-content:stretch; }
.fx-ps{ background:var(--fxp-cell); padding:18px 18px 20px; display:flex; flex-direction:column; gap:4px; color:var(--fxp-ink); min-width:0; }
.fx-ps:first-child{ background:var(--fxp-head); }
.fx-ps .fx-i{ width:40px; height:40px; margin-bottom:10px; --c:var(--fxp-sun); }
.fx-ps b{ font-size:clamp(28px,3vw,44px); font-weight:800; letter-spacing:-.035em; line-height:1.05; color:var(--fxp-ink); }
.fx-ps span{ font-size:12px; font-weight:600; letter-spacing:.14em; text-transform:uppercase; line-height:1.5; color:var(--fxp-ink-2); }

@media (min-width:760px){
  .fx-poster-grid{ grid-template-columns:minmax(0,1fr) minmax(0,1fr); }
  .fx-pc-brand{ grid-column:1 / -1; }
  .fx-pc-head{ grid-column:1 / -1; }
  .fx-pc-art{ grid-column:1 / -1; grid-template-columns:repeat(3,minmax(0,1fr)); }
  .fx-art:nth-child(n+2){ display:grid; }
  .fx-poster-stats{ grid-column:1 / -1; grid-template-columns:repeat(4,minmax(0,1fr)); min-height:150px; }
}
@media (min-width:1100px){
  .fx-poster-grid{ grid-template-columns:minmax(0,5.8fr) minmax(0,5fr) minmax(0,2.6fr); }
  .fx-pc-brand{ grid-column:1 / 3; }
  .fx-pc-tag{ grid-column:3; display:flex; flex-direction:column; justify-content:center; }
  .fx-pc-head{ grid-column:1; grid-row:2; justify-content:center; }
  .mw-fast-page .fx-poster h1{ font-size:clamp(38px,3.5vw,58px) !important; max-width:none !important; }
  /* the drawings and their lines share the poster's last two columns, row by row */
  .fx-pc-art{ grid-column:2 / 4; grid-row:2; grid-template-columns:subgrid; grid-template-rows:repeat(3,auto); }
  .fx-art{ display:contents !important; }
  .fx-art > .fx-kick{ display:flex; flex-direction:column; justify-content:center; }
  .fx-art > .fx-kick::after{ content:""; display:block; width:36px; height:3px; margin-top:14px; background:var(--fxp-rule); }
  /* rows stretch to the headline cell; the drawing centres in its cell instead of leaving the line colour below it */
  .fx-art-pic{ grid-column:1; aspect-ratio:auto; display:flex; align-items:center; padding:16px 20px; }
  .fx-art-svg{ height:auto; }
  .fx-art > .fx-kick{ grid-column:2; }
  .fx-poster-stats{ grid-column:1 / -1; }
}

/* section kickers follow the renders: letterspaced sans, a short teal rule under the word */
.mw-fast-page .mw-fast-section > .mw-eyebrow{
  display:inline-flex; flex-direction:column; align-items:flex-start; gap:8px;
  font-family:var(--sans) !important; font-size:12.5px; font-weight:600; letter-spacing:.22em;
  color:var(--fxp-ink) !important;
}
.mw-fast-page .mw-fast-section > .mw-eyebrow::before{ order:2; width:36px; height:3px; border-radius:0; background:var(--fxp-rule); }
.mw-fast-page .fx-pillar-tag{ font-family:var(--sans) !important; font-weight:600; letter-spacing:.16em; }
.mw-fast-page .fx-ns-k{ font-family:var(--sans); font-weight:600; letter-spacing:.16em; }

/* Take part: the letter beside the downloads on wide screens (review 67) */
@media (min-width:1100px){
  .fx-help-pair{ display:grid; grid-template-columns:minmax(0,1.6fr) minmax(0,1fr); gap:20px; align-items:start; margin-top:20px; }
  .mw-fast-page .fx-help-pair .mw-fast-letter{ max-width:none !important; margin-top:0 !important; }
  .mw-fast-page .fx-help-pair .mw-fast-dls{ grid-template-columns:1fr !important; margin-top:0 !important; }
}

/* The half-cent as a dashboard on wide screens (review 66): the headline card beside "Is it enough?",
   the buys / pays bars across, the yearly chart beside the city list. Same six graphics, same data. */
@media (min-width:1280px){
  .mw-fast-page .hc{ display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); column-gap:20px; align-items:start; }
  .mw-fast-page .hc > *{ grid-column:1 / -1; }
  .mw-fast-page .hc .hc-two{ display:contents; }
  .mw-fast-page .hc #hc-hero{ grid-column:1 / 8; grid-row:4; }
  .mw-fast-page .hc #hc-enough{ grid-column:8 / 13; grid-row:4; }
  .mw-fast-page .hc #hc-bars{ grid-row:5; }
  .mw-fast-page .hc #hc-chart{ grid-column:1 / 8; grid-row:6; }
  .mw-fast-page #hc-cities{ grid-column:8 / 13; grid-row:6; }
  .mw-fast-page .hc #hc-tables{ grid-row:7; }
  .mw-fast-page .hc #hc-foot{ grid-row:8; }
  .mw-fast-page .hc .hc-card{ min-height:0; }
  .mw-fast-page .hc #hc-hero, .mw-fast-page .hc #hc-enough{ align-self:stretch; }
}

/* ═══════════════════════════════════════════════════════════════
   Studio Review 23 Sep (71, 75, 76, 77, 78, 83–89, 91–99): one hover and transition system, text that
   uses the width it has, and the photo ribbon sized for very wide screens.

   Two kinds of hover, because the page has two kinds of surface:
   · free-standing cards lift a little and take a coloured edge;
   · cells inside a line grid (the poster, the network figures) cannot lift without breaking the 2px
     grid lines, so they tint, ring and raise their icon instead.
   Both are off under data-motion="reduce" and prefers-reduced-motion, and both need a real pointer,
   so nothing sticks on touch.
   ═══════════════════════════════════════════════════════════════ */
.mw-fast-page{ --fx-ease:cubic-bezier(.2,.7,.3,1); --fx-hover-ring:color-mix(in srgb, var(--fx-blue) 55%, transparent); }

@media (hover:hover){
  /* cards that stand on their own */
  .mw-fast-page .mw-fast-card,
  .mw-fast-page .hc-card,
  .mw-fast-page .fx-cost-blk,
  .mw-fast-page .fx-fund-facts,
  .mw-fast-page .fx-fund-test,
  .mw-fast-page .fx-fund-story,
  .mw-fast-page .fx-pillar-v2,
  .mw-fast-page .fx-dl,
  .mw-fast-page #fast-partners span,
  .mw-fast-page #fast-faq details{
    transition:transform .22s var(--fx-ease), box-shadow .22s var(--fx-ease), border-color .22s var(--fx-ease);
  }
  .mw-fast-page .mw-fast-card:hover,
  .mw-fast-page .hc-card:hover,
  .mw-fast-page .fx-cost-blk:hover,
  .mw-fast-page .fx-fund-facts:hover,
  .mw-fast-page .fx-fund-test:hover,
  .mw-fast-page .fx-fund-story:hover,
  .mw-fast-page .fx-pillar-v2:hover,
  .mw-fast-page .fx-dl:hover,
  .mw-fast-page #fast-faq details:hover{
    transform:translateY(-3px);
    box-shadow:0 14px 34px color-mix(in srgb, var(--fx-brand) 18%, transparent);
    border-color:var(--fx-hover-ring);
  }
  .mw-fast-page #fast-partners span{ transition:transform .2s var(--fx-ease), border-color .2s, color .2s; }
  .mw-fast-page #fast-partners span:hover{ transform:translateY(-2px); border-color:var(--fx-hover-ring); color:var(--fx-brand); }
  .mw-fast-page .fx-pillar-v2:hover .fx-scene{ transform:translateY(-2px) scale(1.015); }
  .mw-fast-page .fx-scene{ transition:transform .3s var(--fx-ease); transform-origin:50% 100%; }

  /* cells in a line grid: tint, ring, and the icon comes forward */
  .mw-fast-page .fx-ps,
  .mw-fast-page .fx-ns{
    position:relative; z-index:0;
    transition:background-color .2s var(--fx-ease), box-shadow .2s var(--fx-ease);
  }
  .mw-fast-page .fx-ps .fx-i,
  .mw-fast-page .fx-ns .fx-i{ transition:transform .25s var(--fx-ease), color .2s; }
  .mw-fast-page .fx-ps:hover,
  .mw-fast-page .fx-ns:hover{
    z-index:1;
    background:var(--fxp-head);
    box-shadow:inset 0 0 0 2px var(--fx-hover-ring);
  }
  .mw-fast-page .fx-ns:hover{ background:color-mix(in srgb, var(--fx-blue) 10%, var(--surface)); }
  .mw-fast-page .fx-ps:hover .fx-i,
  .mw-fast-page .fx-ns:hover .fx-i{ transform:translateY(-3px) scale(1.06); --c:var(--fx-sun); }

  /* the headline cell answers the pointer too (review 76) */
  .mw-fast-page .fx-pc-head{ transition:background-color .25s var(--fx-ease); }
  .mw-fast-page .fx-pc-head:hover{ background:color-mix(in srgb, var(--fx-blue) 16%, var(--fxp-cell)); }
  .mw-fast-page .fx-art-pic{ transition:background-color .25s var(--fx-ease); }
  .mw-fast-page .fx-art-pic:hover{ background:color-mix(in srgb, var(--fx-blue) 7%, var(--fxp-cell)); }

  /* corridor rows and the numbers behind the graphics */
  .mw-fast-page #fast-corridors tr{ transition:background-color .18s var(--fx-ease); }
  .mw-fast-page #fast-corridors tr:hover{ background:color-mix(in srgb, var(--fx-blue) 7%, transparent); }
  .mw-fast-page .hc-dt summary:hover{ color:var(--fx-brand); }
}
@media (prefers-reduced-motion:reduce){
  .mw-fast-page .mw-fast-card:hover, .mw-fast-page .hc-card:hover, .mw-fast-page .fx-cost-blk:hover,
  .mw-fast-page .fx-fund-facts:hover, .mw-fast-page .fx-fund-test:hover, .mw-fast-page .fx-fund-story:hover,
  .mw-fast-page .fx-pillar-v2:hover, .mw-fast-page .fx-dl:hover, .mw-fast-page #fast-faq details:hover,
  .mw-fast-page #fast-partners span:hover{ transform:none; }
  .mw-fast-page .fx-ps:hover .fx-i, .mw-fast-page .fx-ns:hover .fx-i, .mw-fast-page .fx-pillar-v2:hover .fx-scene{ transform:none; }
}
html[data-motion="reduce"] .mw-fast-page *:hover{ transform:none !important; }

/* The operator's drawings (24 Sep 2026). One ink, painted through a mask so the colour follows the
   theme; the file is the shape. Decorative: every span is aria-hidden. */
.fx-illo{
  display:block; width:100%; background-color:currentColor;
  -webkit-mask-repeat:no-repeat; mask-repeat:no-repeat;
  -webkit-mask-position:center bottom; mask-position:center bottom;
  -webkit-mask-size:contain; mask-size:contain;
}
.fx-illo-waterfront{ aspect-ratio:526.68 / 313.13; -webkit-mask-image:url(../illustrations/waterfront.svg); mask-image:url(../illustrations/waterfront.svg); }
.fx-illo-bus-stop{ aspect-ratio:488.33 / 248.69; -webkit-mask-image:url(../illustrations/bus-stop.svg); mask-image:url(../illustrations/bus-stop.svg); }
.fx-illo-people-mover{ aspect-ratio:488.33 / 257.21; -webkit-mask-image:url(../illustrations/people-mover.svg); mask-image:url(../illustrations/people-mover.svg); }
.fx-illo-rapid-bus{ aspect-ratio:496.64 / 245.1; -webkit-mask-image:url(../illustrations/rapid-bus.svg); mask-image:url(../illustrations/rapid-bus.svg); }
.fx-illo-street{ aspect-ratio:520.29 / 283.84; -webkit-mask-image:url(../illustrations/street.svg); mask-image:url(../illustrations/street.svg); }
.fx-illo-smart{ aspect-ratio:522.64 / 357; -webkit-mask-image:url(../illustrations/smart.svg); mask-image:url(../illustrations/smart.svg); }
.fx-illo-transit{ aspect-ratio:355.08 / 184.97; -webkit-mask-image:url(../illustrations/transit.svg); mask-image:url(../illustrations/transit.svg); }
/* poster cells are 5:2; the drawing fills the cell height and centres */
.fx-art-pic .fx-illo{ height:100%; aspect-ratio:auto; }
@media (min-width:1100px){ .fx-art-pic .fx-illo{ height:auto; aspect-ratio:5 / 2; } }
/* pillar scenes share one 15:8 frame so the four cards line up, drawn or native */
.fx-pillar-art .fx-illo{ aspect-ratio:240 / 128; }
.mw-fast-page .fx-illo{ transition:transform .3s var(--fx-ease, ease); transform-origin:50% 100%; }
@media (hover:hover){ .mw-fast-page .fx-pillar-v2:hover .fx-illo{ transform:translateY(-2px) scale(1.015); } }
html[data-motion="reduce"] .mw-fast-page .fx-illo{ transition:none; transform:none !important; }
@media (forced-colors:active){ .fx-illo{ forced-color-adjust:none; background-color:CanvasText; } }

/* The sun is the brand yellow, in the hero as well as the pillars (review 75) */
.fx-art-svg .fx-i-sun{ fill:var(--fx-sun); }

/* Text uses the width it has (reviews 91, 94, 95, 96). Justified from tablet up, where a line holds
   enough words for it; phones stay ragged-right, which reads better in a narrow column. */
.mw-fast-page .mw-fast-section .lead{ max-width:min(96ch, 100%); }
@media (min-width:760px){
  .mw-fast-page .mw-fast-section .lead,
  .mw-fast-page .mw-fast-letter p,
  .mw-fast-page #fast-status,
  .mw-fast-page .fx-ribbon figcaption,
  .mw-fast-page .fx-wide figcaption,
  body.mw-app .mw-sitefoot .ft-lede,
  body.mw-app .mw-sitefoot .ft-note{ text-align:justify; text-justify:inter-word; hyphens:auto; }
  .mw-fast-page .fx-wide figcaption{ max-width:none; }
  body.mw-app .mw-sitefoot .ft-lede{ max-width:none; }
}
/* the caption under a wide figure runs the width of the figure, not a narrow column */
.mw-fast-page .fx-wide figcaption{ width:100%; }

/* The photo ribbon on very wide screens (review 71): the tiles stop growing and the row centres. */
@media (min-width:1500px){
  .fx-ribbon-in{ grid-template-columns:repeat(4, minmax(0, 330px)); justify-content:center; }
  .fx-ribbon-in:has(> li:nth-child(5)){ grid-template-columns:repeat(5, minmax(0, 330px)); }
  .fx-ribbon-in:has(> li:nth-child(6)){ grid-template-columns:repeat(6, minmax(0, 300px)); }
}
/* room between the credit line and the next section (review 78) */
.mw-fast-page .fx-ribbon-credit{ margin:12px 0 clamp(20px, 2.4vw, 34px) !important; }

/* Two clipping defects the width sweep found (reviews 85–89), not visible at the usual breakpoints:
   · "Autonomous" is wider than its pillar cell between about 540px and 980px, where the four cards are
     already side by side but still narrow: the word may now break and the size eases down with the card;
   · in the half-cent dashboard the city column is narrow, and a three-column row (name, count, value)
     squeezed "West Palm Beach" to 24px, so there the count moves under the name. */
.mw-fast-page .fx-pillar-v2 b{ overflow-wrap:anywhere; hyphens:auto; font-size:clamp(17px, 1.7vw, 21px) !important; }
@media (max-width:560px), (min-width:1280px){
  .mw-fast-page #hc-cities .hc-ct > li:not(.hc-ct-g),
  .mw-fast-page #hc-cities .hc-ct summary,
  .mw-fast-page #hc-cities .hc-ct ul li{ grid-template-columns:minmax(0,1fr) auto; row-gap:2px; }
  .mw-fast-page #hc-cities .hc-ct-n{ grid-column:1; grid-row:1; }
  .mw-fast-page #hc-cities .hc-ct-v{ grid-column:2; grid-row:1; }
  .mw-fast-page #hc-cities .hc-ct-s{ grid-column:1 / -1; grid-row:2; }
}
