/* op-heading-levels-ua */
:where(h2.rt-h3){display:block;font-size:1.17em;margin-block-start:1em;margin-block-end:1em;font-weight:bold}
/* op-heading-levels-ua:end */
/* Keystone Health Review \2014  independent journalism on Pennsylvania healthcare
   Direction: "The Broadsheet" \2014  story-led regional front page, Keystone-blue accent.
   Self-contained: no external fonts/scripts. Drop self-hosted woff2 files into /fonts
   and uncomment the @font-face stubs to upgrade the type. */

/* @font-face { font-family:"Archivo Black"; src:url("fonts/archivo-black.woff2") format("woff2"); font-display:swap; }
   @font-face { font-family:"Source Serif 4"; src:url("fonts/source-serif-4.woff2") format("woff2"); font-display:swap; } */

:root{
  --paper:#f6f3ea; --paper-2:#fdfbf5; --ink:#1b1c1e; --ink-2:#3d3c38; --mute:#6c6a61;
  --rule:#cbc5b5; --rule-dark:#1b1c1e;
  --accent:#14406e; --accent-dark:#0e2f52; --accent-soft:#dfe6ef;
  --d1:#14406e; --d2:#6787ab; --d3:#a8562e; --d4:#6d8a68;
  --display:"Archivo Black","Arial Black","Franklin Gothic Heavy",sans-serif;
  --masthead:"Didot","Didot LT STD","Bodoni MT","Bodoni 72","Playfair Display","Georgia",serif;
  --serif:"Charter","Bitstream Charter","Iowan Old Style","Palatino Linotype",Georgia,serif;
  --sans:"Franklin Gothic Medium","Segoe UI","Helvetica Neue",Arial,sans-serif;
  --gutter:clamp(18px,4vw,48px);
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font:19px/1.65 var(--serif);text-rendering:optimizeLegibility}
img{max-width:100%;display:block}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline;text-underline-offset:3px}
h1,h2,h3{text-wrap:balance;margin:0}
p{text-wrap:pretty}
.wrap{max-width:1440px;margin-inline:auto;padding-inline:var(--gutter)}
.sans{font-family:var(--sans)}

/* ---------- top bar / masthead / nav ---------- */
.topbar{background:var(--ink);color:#e8e4d8;font:600 13.5px/1.4 var(--sans);letter-spacing:.04em}
.topbar .wrap{display:flex;justify-content:space-between;gap:16px;padding-block:9px;flex-wrap:wrap}
.topbar a{color:#e8e4d8}
.topbar .links{display:flex;gap:18px;text-transform:uppercase;font-size:12px;letter-spacing:.12em}
.masthead{text-align:center;padding:34px 0 22px;border-bottom:4px double var(--rule-dark)}
.masthead .brand{font-family:var(--masthead);font-weight:700;font-size:clamp(36px,6.2vw,86px);line-height:1;letter-spacing:.045em;text-transform:uppercase;color:var(--ink);display:inline-block}
.masthead .brand:hover{text-decoration:none;color:var(--accent)}
.masthead .tag{font:italic 400 clamp(15px,1.6vw,19px)/1.4 var(--serif);color:var(--ink-2);margin-top:12px}
.masthead.compact{padding:18px 0 14px}
.masthead.compact .brand{font-size:clamp(26px,3.4vw,44px)}
.masthead.compact .tag{font-size:14.5px;margin-top:6px}
.beatnav{border-bottom:1.5px solid var(--rule-dark);background:var(--paper)}
.beatnav ul{list-style:none;margin:0;padding:0;display:flex;justify-content:flex-start;gap:clamp(14px,2.4vw,34px);overflow-x:auto;-webkit-overflow-scrolling:touch}
.beatnav li:first-child{margin-left:auto}
.beatnav li:last-child{margin-right:auto}
.beatnav a{display:block;padding:13px 2px;font:700 14px/1 var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--ink);white-space:nowrap;border-bottom:4px solid transparent;margin-bottom:-1.5px}
.beatnav a:hover{color:var(--accent);text-decoration:none;border-bottom-color:var(--accent)}
.beatnav a[aria-current="true"]{color:var(--accent);border-bottom-color:var(--accent)}

/* ---------- kickers, meta ---------- */
.kicker{font:700 14px/1.3 var(--sans);letter-spacing:.13em;text-transform:uppercase;color:var(--accent)}
.kicker a{color:inherit}
.meta{font:600 14.5px/1.5 var(--sans);color:var(--mute)}
.meta b{color:var(--ink-2);font-weight:700}

/* ---------- homepage ---------- */
.front-lead{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(300px,1fr);gap:clamp(26px,4vw,60px);padding-block:clamp(26px,3.5vw,48px)}
.lead-story .kicker{margin-bottom:12px}
.lead-story h2{font:800 clamp(30px,3.6vw,52px)/1.08 var(--sans);letter-spacing:-.015em;margin:0 0 14px}
.lead-story h2 a{color:var(--ink)}
.lead-story .dek{font-size:clamp(18px,1.5vw,22px);line-height:1.55;color:var(--ink-2);margin:0 0 18px}
.lead-story figure{margin:0}
.lead-story figcaption,figcaption{font:500 14px/1.5 var(--sans);color:var(--mute);padding-top:8px}
.lead-story img{width:100%;aspect-ratio:16/9.5;object-fit:cover}
.subleads{display:grid;grid-template-columns:1fr 1fr;gap:22px clamp(20px,2.5vw,34px);margin-top:26px;padding-top:22px;border-top:1px solid var(--rule)}
.subleads article{display:flex;flex-direction:column;gap:7px}
.subleads h3{font:700 19px/1.3 var(--sans)}
.subleads h3 a{color:var(--ink)}
.subleads .kicker{font-size:12px}
.subleads p{margin:0;font-size:15.5px;line-height:1.5;color:var(--ink-2)}

/* numbers rail */
.numbers-rail{border-top:5px solid var(--accent);background:var(--paper-2);padding:20px 22px 26px;display:flex;flex-direction:column;gap:22px;align-self:start}
.numbers-rail>h2{font:800 15px/1 var(--sans);letter-spacing:.14em;text-transform:uppercase}
.bignum .n{font-family:var(--display);font-size:clamp(38px,3.4vw,52px);line-height:1;color:var(--accent);letter-spacing:-.01em}
.bignum p{margin:8px 0 0;font-size:15.5px;line-height:1.5;color:var(--ink-2)}
.bignum p a{font:700 13px/1 var(--sans)}
.rail-divide{border:0;border-top:1px solid var(--rule);margin:0}
.numbers-rail .chart{margin:0}
.numbers-rail .chart h3{font:700 13px/1.4 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);margin-bottom:10px}

/* beat digest */
.digest{border-top:1.5px solid var(--rule-dark);padding-block:clamp(28px,3.5vw,44px)}
.digest-head{display:flex;justify-content:space-between;align-items:baseline;gap:20px;margin-bottom:22px}
.digest-head h2{font:800 clamp(22px,2.2vw,30px)/1.1 var(--sans);letter-spacing:-.01em}
.digest-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:30px clamp(22px,2.6vw,38px)}
.beat-feature{grid-column:span 3;display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:clamp(18px,2.4vw,32px);border-top:4px solid var(--ink);padding-top:12px;align-items:center}
.beat-feature figure{margin:0;height:100%}
.beat-feature img{width:100%;height:100%;min-height:230px;object-fit:cover}
.beat-feature .kicker{margin-bottom:8px}
.beat-feature h3{font:800 clamp(22px,2vw,28px)/1.15 var(--sans);letter-spacing:-.01em}
.beat-feature h3 a{color:var(--ink)}
.beat-feature h3 a:hover{color:var(--accent)}
.beat-feature p{margin:10px 0 0;font-size:16.5px;line-height:1.55;color:var(--ink-2)}
.beat-feature .meta{margin-top:12px}
.beat{display:flex;flex-direction:column;border-top:4px solid var(--accent);padding-top:12px}
.beat>.kicker{margin-bottom:4px}
.beat .blurb{font:italic 400 14.5px/1.5 var(--serif);color:var(--mute);margin:0 0 14px}
.beat ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.beat li{padding-block:9px;border-top:1px solid var(--rule)}
.beat li:first-child{border-top:0;padding-top:0}
.beat li a{font:700 17px/1.35 var(--sans);color:var(--ink);display:block}
.beat li a:hover{color:var(--accent)}
.beat li p{margin:6px 0 0;font-size:15px;line-height:1.5;color:var(--ink-2)}
.beat .more{padding-top:12px;font:700 14px/1 var(--sans)}

/* explainer band */
.exp-band{background:var(--accent);color:#f2f0e8;padding-block:clamp(26px,3vw,40px)}
.exp-band .kicker{color:#bcd0e6}
.exp-band h2{font:800 clamp(22px,2.4vw,32px)/1.15 var(--sans);margin:6px 0 4px}
.exp-band .sub{font-style:italic;color:#cdd9e7;margin:0 0 20px}
.exp-band ol{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:16px;counter-reset:exp}
.exp-band li{counter-increment:exp;background:var(--accent-dark);padding:16px 16px 18px;display:flex;flex-direction:column;gap:8px}
.exp-band li::before{content:counter(exp,decimal-leading-zero);font-family:var(--display);font-size:24px;color:#7fa3c9}
.exp-band li a{color:#fff;font:700 16.5px/1.35 var(--sans)}

/* archive / filter index */
.archive{padding-block:clamp(30px,3.5vw,48px);border-top:1.5px solid var(--rule-dark)}
.archive-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:10px 26px;margin-bottom:18px}
.archive-head h2{font:800 clamp(22px,2.2vw,30px)/1.1 var(--sans)}
.archive-head p{margin:0;font:italic 400 15.5px/1.4 var(--serif);color:var(--mute)}
.chips{display:flex;flex-wrap:wrap;gap:9px;margin-bottom:24px}
.chips button{font:700 13.5px/1 var(--sans);letter-spacing:.03em;padding:9px 15px;border:1.5px solid var(--ink);background:transparent;color:var(--ink);border-radius:999px;cursor:pointer}
.chips button:hover{background:var(--accent-soft)}
.chips button[aria-pressed="true"]{background:var(--ink);color:var(--paper)}
.card-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
@media (max-width:1140px){.card-grid{grid-template-columns:repeat(3,1fr)}}
/* keep the default (unfiltered, unexpanded) row even at 3 columns */
@media (max-width:1140px) and (min-width:821px){.archive[data-cat="all"] .more-toggle:not(:checked)~.card-grid .story-card:nth-child(4){display:none}}
@media (max-width:820px){.card-grid{grid-template-columns:1fr 1fr}}
@media (max-width:520px){.card-grid{grid-template-columns:1fr}}
.story-card{display:flex;flex-direction:column;gap:8px;background:var(--paper-2);border:1px solid var(--rule);border-top:4px solid var(--accent);padding:16px 17px 15px;min-height:172px}
.story-card .kicker{font-size:11.5px}
.story-card h3{font:700 17.5px/1.3 var(--sans);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.story-card h3 a{color:var(--ink)}
.story-card p{margin:0;font-size:14.5px;line-height:1.5;color:var(--ink-2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.story-card .meta{margin-top:auto;font-size:12.5px;padding-top:6px}
.archive[data-cat]:not([data-cat="all"]) .story-card{display:none}
.archive[data-cat="insurance-aca"] .story-card[data-cat="insurance-aca"],
.archive[data-cat="telemedicine"] .story-card[data-cat="telemedicine"],
.archive[data-cat="rural-access"] .story-card[data-cat="rural-access"],
.archive[data-cat="public-health"] .story-card[data-cat="public-health"],
.archive[data-cat="providers-policy"] .story-card[data-cat="providers-policy"],
.archive[data-cat="explainers"] .story-card[data-cat="explainers"]{display:flex}
/* CSS-only expander (no-JS + bounded list) */
.archive input.more-toggle{position:absolute;opacity:0;pointer-events:none}
.archive[data-cat="all"] .story-card.overflow,
.archive:not([data-cat]) .story-card.overflow{display:none}
.archive input.more-toggle:checked~.card-grid .story-card.overflow{display:flex}
/* while filtered, every card of the selected beat shows, .overflow included
   (specificity 0,6,1 \2014  outranks the generic overflow-hide rules above) */
.archive.filtered[data-cat="insurance-aca"] .card-grid .story-card[data-cat="insurance-aca"],
.archive.filtered[data-cat="telemedicine"] .card-grid .story-card[data-cat="telemedicine"],
.archive.filtered[data-cat="rural-access"] .card-grid .story-card[data-cat="rural-access"],
.archive.filtered[data-cat="public-health"] .card-grid .story-card[data-cat="public-health"],
.archive.filtered[data-cat="providers-policy"] .card-grid .story-card[data-cat="providers-policy"],
.archive.filtered[data-cat="explainers"] .card-grid .story-card[data-cat="explainers"]{display:flex}
.more-label{display:inline-block;margin-top:22px;font:700 14px/1 var(--sans);letter-spacing:.06em;text-transform:uppercase;border:1.5px solid var(--ink);padding:12px 22px;cursor:pointer}
.more-label:hover{background:var(--ink);color:var(--paper)}
.archive input.more-toggle:checked~.more-label{display:none}
.archive.filtered .more-label{display:none}

/* supporters */
.supporters{background:var(--ink);color:#e8e4d8;padding-block:clamp(34px,4vw,54px)}
.supporters .kicker{color:#9fb6ce}
.supporters h2{font:800 clamp(24px,2.6vw,36px)/1.12 var(--sans);color:#fff;margin:8px 0 10px;max-width:20ch}
.supporters .credo{max-width:62ch;font-size:17px;line-height:1.6;color:#c9c4b6;margin:0 0 28px}
.sponsor-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px}
a.sponsor{display:flex;flex-direction:column;gap:10px;background:#26272b;border:1px solid #3a3b40;padding:18px 16px;color:#c9c4b6;min-height:118px}
a.sponsor:hover{border-color:#9fb6ce;text-decoration:none}
a.sponsor img{width:100%;height:44px;object-fit:contain;filter:grayscale(1) brightness(1.6) contrast(.9)}
.sponsor-blurb{font:500 13.5px/1.45 var(--sans);color:#9d9a8f;display:block;min-height:1em}
.supporters .fine{margin:26px 0 0;font:500 13.5px/1.5 var(--sans);color:#8b887d}

/* footer */
.site-foot{background:var(--paper-2);border-top:4px double var(--rule-dark);padding-block:clamp(30px,3.5vw,46px);font-family:var(--sans)}
.foot-grid{display:grid;grid-template-columns:minmax(260px,1.4fr) 1fr 1fr;gap:30px clamp(24px,3vw,54px)}
.foot-brand{font-family:var(--masthead);font-weight:700;font-size:26px;text-transform:uppercase;letter-spacing:.05em}
.foot-mission{font:italic 400 15.5px/1.55 var(--serif);color:var(--ink-2);margin:10px 0 0;max-width:44ch}
.site-foot h3{font:700 12.5px/1 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--mute);margin-bottom:12px}
.site-foot ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:9px;font-size:15px;font-weight:600}
.site-foot a{color:var(--ink)}
.site-foot a:hover{color:var(--accent)}
.foot-legal{border-top:1px solid var(--rule);margin-top:30px;padding-top:18px;font-size:13.5px;line-height:1.6;color:var(--mute);max-width:100ch}
.foot-legal b{color:var(--ink-2)}

/* ---------- article ---------- */
.article-head{padding-block:clamp(26px,3.5vw,44px) 10px;max-width:1000px}
.article-head h1{font:800 clamp(30px,4vw,54px)/1.08 var(--sans);letter-spacing:-.015em;margin:12px 0 0}
.byline-row{display:flex;flex-wrap:wrap;gap:8px 22px;align-items:baseline;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);padding-block:12px;margin-top:24px}
.article-hero{margin:clamp(20px,2.5vw,34px) 0 0}
.article-hero img{width:100%;max-height:560px;object-fit:cover;aspect-ratio:21/9}
.article-layout{display:grid;grid-template-columns:minmax(0,72ch) minmax(220px,1fr);gap:clamp(28px,4vw,72px);padding-block:clamp(26px,3vw,44px)}
.article-body{max-width:72ch;font-size:20px;line-height:1.72;counter-reset:sec}
.article-body>p{margin:0 0 1.35em}
p.lead{font-size:clamp(20px,1.8vw,24px);line-height:1.6;color:var(--ink-2);font-style:italic;margin:0 0 1.4em}
.article-body h2{font:800 clamp(22px,2.2vw,29px)/1.2 var(--sans);letter-spacing:-.01em;margin:1.9em 0 .75em;counter-increment:sec;display:flex;gap:14px;align-items:baseline}
.article-body h2::before{content:counter(sec,decimal-leading-zero);font-family:var(--display);font-size:.82em;color:var(--accent);flex:0 0 auto}
p.opener::first-letter{font-family:var(--display);font-size:3.35em;line-height:.82;float:left;padding:6px 12px 0 0;color:var(--accent)}
sup.fn{font:700 12px/0 var(--sans);vertical-align:super}
sup.fn a{color:var(--accent)}

/* rail on article pages */
.article-rail{align-self:start;display:flex;flex-direction:column;gap:26px;position:sticky;top:24px}
.rail-box{border-top:4px solid var(--accent);background:var(--paper-2);padding:16px 18px 20px}
.rail-box h3{font:700 13px/1 var(--sans);letter-spacing:.13em;text-transform:uppercase;margin-bottom:14px}
.rail-box ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:0}
.rail-box li{border-top:1px solid var(--rule);padding-block:10px}
.rail-box li:first-child{border-top:0;padding-top:0}
.rail-box a{font:700 15px/1.4 var(--sans);color:var(--ink)}
.rail-box a:hover{color:var(--accent)}

/* ---------- palette components ---------- */
.pullquote{margin:2em 0;padding:0 0 0 clamp(18px,3vw,30px);border-left:6px solid var(--accent)}
.pullquote p{font:700 clamp(22px,2.2vw,28px)/1.35 var(--sans);letter-spacing:-.01em;margin:0;color:var(--ink)}
.blockquote{margin:2em 0;padding:22px clamp(20px,3vw,30px);background:var(--paper-2);border:1px solid var(--rule)}
.blockquote p{font-style:italic;font-size:1.05em;margin:0}
.blockquote cite{display:block;margin-top:12px;font:600 14.5px/1.4 var(--sans);font-style:normal;color:var(--mute)}
.callout{margin:2em 0;padding:20px 22px;background:var(--accent-soft);border-left:6px solid var(--accent)}
.callout p{margin:0;font:600 17.5px/1.6 var(--sans);color:var(--accent-dark)}
p.note{margin:2em 0;padding:14px 18px;border:1.5px dashed var(--rule);font:500 16px/1.6 var(--sans);color:var(--ink-2);background:var(--paper-2)}
p.note::before{content:"Note \2014  ";font-weight:800;color:var(--accent)}

table.versus,table.datatable{width:100%;border-collapse:collapse;margin:2em 0;font-family:var(--sans);font-size:16px}
table.versus caption,table.datatable caption{caption-side:top;text-align:left;font:700 13px/1.4 var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2);padding-bottom:10px}
.versus th,.versus td,.datatable th,.datatable td{padding:11px 14px;text-align:left;vertical-align:top;line-height:1.5}
.versus thead th{background:var(--ink);color:var(--paper);font-weight:700}
.versus tbody th{font-weight:700;background:var(--paper-2);width:26%}
.versus td,.versus tbody th{border-bottom:1px solid var(--rule)}
.versus td:nth-child(2){border-left:4px solid var(--accent)}
.datatable thead th{border-bottom:2.5px solid var(--ink);font-weight:700}
.datatable td,.datatable tbody th{border-bottom:1px solid var(--rule)}
.datatable tbody tr:nth-child(even){background:var(--paper-2)}
.datatable td.num{font-variant-numeric:tabular-nums;text-align:right}

.statrow{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px;margin:2em 0}
.statblock{border-top:4px solid var(--accent);background:var(--paper-2);padding:14px 16px 16px;display:flex;flex-direction:column;gap:6px}
.stat-num{font-family:var(--display);font-size:clamp(26px,2.6vw,38px);line-height:1;color:var(--accent);letter-spacing:-.01em}
.stat-label{font:600 14px/1.45 var(--sans);color:var(--ink-2)}

ol.timeline{list-style:none;margin:2em 0;padding:0;border-left:3px solid var(--accent)}
ol.timeline li{position:relative;padding:0 0 20px 26px}
ol.timeline li:last-child{padding-bottom:4px}
ol.timeline li::before{content:"";position:absolute;left:-8px;top:7px;width:13px;height:13px;background:var(--paper);border:3px solid var(--accent);border-radius:50%}
.t-when{display:block;font:800 15px/1.35 var(--sans);letter-spacing:.02em;color:var(--accent-dark)}
.t-what{display:block;font-size:16.5px;line-height:1.55;color:var(--ink-2);margin-top:3px}

figure.chart{margin:2em 0;padding:20px 20px 16px;background:var(--paper-2);border:1px solid var(--rule);border-top:4px solid var(--accent)}
figure.chart svg{width:100%;height:auto;display:block}
figure.chart figcaption{border-top:1px solid var(--rule);margin-top:14px;padding-top:10px}
.chart .axis{stroke:var(--ink);stroke-width:1.5}
.chart .grid{stroke:var(--rule);stroke-width:1}
.chart text{font-family:var(--sans);fill:var(--ink-2)}
.chart .val{font-weight:800;fill:var(--accent-dark)}
@media (prefers-reduced-motion:no-preference){
  .chart .bar-el{transform:scaleY(0);transform-origin:bottom;transition:transform .8s cubic-bezier(.2,.7,.2,1)}
  .chart.in .bar-el{transform:scaleY(1)}
  .chart .line-el{stroke-dasharray:600;stroke-dashoffset:600;transition:stroke-dashoffset 1.4s ease}
  .chart.in .line-el{stroke-dashoffset:0}
  .reveal{opacity:0;transform:translateY(14px);transition:opacity .6s ease,transform .6s ease}
  .reveal.in{opacity:1;transform:none}
}

figure.article-figure{margin:2.2em 0}
figure.article-figure img{width:100%;aspect-ratio:16/9;object-fit:cover}
.gallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;margin:2.2em 0}
.gallery figure{margin:0}
.gallery img{aspect-ratio:4/3;object-fit:cover;width:100%}

figure.map-figure{margin:2.2em 0;border:1px solid var(--rule);background:var(--paper-2);padding:14px}
.map-slot{min-height:320px;background:repeating-linear-gradient(45deg,#edeae0 0 14px,#f2efe6 14px 28px);display:flex;align-items:center;justify-content:center;font:600 13px/1.5 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--mute)}
.map-slot::after{content:none}
figure.map-figure figcaption{padding:12px 4px 0}

.profile-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:16px;margin:2.2em 0}
.profile-card{background:var(--paper-2);border:1px solid var(--rule);border-top:4px solid var(--accent);padding:18px;display:flex;flex-direction:column;gap:8px;font-family:var(--sans)}
.profile-card img.p-photo{width:76px;height:76px;object-fit:cover;border-radius:50%}
.profile-card.no-photo::before{content:"";width:76px;height:14px;background:var(--accent);margin-bottom:4px}
.profile-card h3{font:800 18px/1.25 var(--sans)}
.profile-card .p-role{margin:0;font:700 13px/1.4 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--accent)}
.profile-card p{margin:0;font-size:14.5px;line-height:1.55;color:var(--ink-2)}
.profile-card .p-links{margin-top:auto;padding-top:6px}
.profile-card .p-links a{font-weight:700;font-size:14px}
.p-attr{font-size:12.5px;color:var(--mute)}

.org-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin:2.2em 0}
a.org-card{display:flex;flex-direction:column;gap:5px;border:1px solid var(--rule);border-left:5px solid var(--accent);background:var(--paper-2);padding:14px 16px;font-family:var(--sans)}
a.org-card:hover{text-decoration:none;border-color:var(--accent)}
a.org-card img.org-logo{height:30px;width:auto;max-width:150px;object-fit:contain;margin-bottom:5px}
.org-name{font-weight:800;font-size:15.5px;color:var(--ink);line-height:1.35}
.org-host{font-weight:600;font-size:13px;color:var(--accent)}
a.entity-ref{font-weight:700;border-bottom:2px solid var(--accent-soft)}
a.entity-ref:hover{text-decoration:none;border-bottom-color:var(--accent)}

nav.further-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px;margin:2.2em 0}
nav.further-grid a{border:1.5px solid var(--ink);padding:15px 16px;font:700 15.5px/1.4 var(--sans);color:var(--ink)}
nav.further-grid a:hover{background:var(--ink);color:var(--paper);text-decoration:none}

/* endnotes */
.endnotes{margin:3em 0 0;border-top:2.5px solid var(--ink);padding-top:18px}
.endnotes h2{font:800 15px/1 var(--sans);letter-spacing:.13em;text-transform:uppercase;margin:0 0 14px;display:block}
.endnotes h2::before{content:none}
.endnotes ol{margin:0;padding:0 0 0 24px;display:flex;flex-direction:column;gap:10px}
.endnotes li{font:500 15.5px/1.55 var(--sans);color:var(--ink-2)}
.endnotes li::marker{font-weight:800;color:var(--accent)}
.endnotes li b{color:var(--ink)}
.related{margin:2.6em 0 0;border-top:1px solid var(--rule);padding-top:20px}
.related h2{font:800 15px/1 var(--sans);letter-spacing:.13em;text-transform:uppercase;margin:0 0 14px}
.related h2::before{content:none}
ul.related-links{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
ul.related-links a{font:700 17px/1.4 var(--sans)}

/* ---------- category pages ---------- */
.cat-head{padding-block:clamp(30px,4vw,52px) 8px;border-bottom:1.5px solid var(--rule-dark);max-width:1000px}
.cat-head h1{font:800 clamp(32px,4.4vw,58px)/1.05 var(--sans);letter-spacing:-.015em;margin:10px 0 14px}
.cat-head p{font-size:clamp(17px,1.5vw,20px);font-style:italic;color:var(--ink-2);margin:0 0 26px;max-width:64ch}
ul.cat-list{list-style:none;margin:0;padding:0}
ul.cat-list li{border-bottom:1px solid var(--rule);padding-block:22px;display:grid;grid-template-columns:56px minmax(0,1fr);gap:18px;align-items:baseline}
ul.cat-list .idx{font-family:var(--display);font-size:22px;color:var(--rule);line-height:1}
ul.cat-list a.t{font:700 clamp(19px,1.8vw,24px)/1.3 var(--sans);color:var(--ink);display:block}
ul.cat-list a.t:hover{color:var(--accent)}
ul.cat-list p{margin:7px 0 0;font-size:16.5px;line-height:1.55;color:var(--ink-2);max-width:75ch}
ul.cat-list .meta{margin-top:8px;font-size:13px}

/* ---------- static pages ---------- */
.page-body{max-width:72ch;padding-block:clamp(28px,3.5vw,46px);font-size:19.5px;line-height:1.7;padding-inline:0}
.page-body h1{font:800 clamp(30px,3.8vw,48px)/1.1 var(--sans);margin:0 0 .6em}
.page-body h2{font:800 clamp(21px,2vw,27px)/1.25 var(--sans);margin:1.7em 0 .6em}
.page-body ul{padding-left:1.2em}
.page-body li{margin-bottom:.5em}
.err{padding-block:clamp(50px,8vw,110px);text-align:center}
.err .code{font-family:var(--display);font-size:clamp(90px,14vw,180px);line-height:1;color:var(--accent);letter-spacing:-.02em}
.err h1{font:800 clamp(24px,3vw,38px)/1.2 var(--sans);margin:14px 0 10px}
.err p{color:var(--ink-2)}

/* ---------- styleguide ---------- */
.sg-section{border-top:2.5px solid var(--ink);margin-top:52px;padding-top:14px}
.sg-section>h2{font:800 15px/1 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin-bottom:22px}

/* ---------- responsive ---------- */
@media (max-width:980px){
  .digest-grid{grid-template-columns:1fr 1fr}
  .beat-feature{grid-column:auto;grid-template-columns:1fr;align-items:start}
  .beat-feature img{min-height:0;aspect-ratio:16/9}
  .front-lead{grid-template-columns:1fr}
  .article-layout{grid-template-columns:1fr}
  .article-rail{position:static;flex-direction:row;flex-wrap:wrap}
  .article-rail .rail-box{flex:1 1 260px}
  .foot-grid{grid-template-columns:1fr 1fr}
}
@media (max-width:640px){
  body{font-size:18px}
  .digest-grid{grid-template-columns:1fr}
  .article-body{font-size:18.5px}
  .beatnav ul{justify-content:flex-start;padding-inline:2px}
  .subleads{grid-template-columns:1fr}
  .topbar .wrap{justify-content:center;text-align:center}
  .foot-grid{grid-template-columns:1fr}
  ul.cat-list li{grid-template-columns:1fr}
  ul.cat-list .idx{display:none}
  .versus th,.versus td,.datatable th,.datatable td{padding:9px 8px;font-size:14.5px}
  .statrow{grid-template-columns:1fr 1fr}
  .map-slot{min-height:220px}
}
@media (max-width:400px){
  .statrow{grid-template-columns:1fr}
  .chips button{padding:8px 12px}
}

/* PIPELINE: sponsor band fill \2014  white plates, full-colour, DOFOLLOW */
.sponsor .sp-plate{display:flex;align-items:center;justify-content:center;background:#fff;border-radius:8px;min-height:54px;padding:10px 14px;margin-bottom:10px;}
.sponsor .sp-plate img{max-height:34px;max-width:100%;width:auto;object-fit:contain;filter:none!important;opacity:1!important;-webkit-filter:none!important;}
.sponsor .sp-plate.sp-text{font-weight:700;color:#222;font-size:15px;letter-spacing:.01em;text-align:center;}
.sponsor .sponsor-blurb a{font-weight:600;text-decoration:underline;text-underline-offset:2px;}

/* PIPELINE sponsor treatment: domain */
.sponsor .sp-plate{display:flex;align-items:center;justify-content:center;background:#fff;border-radius:8px;min-height:50px;padding:9px 12px;margin-bottom:9px;}
.sponsor .sp-plate.sp-plate-sm{min-height:38px;padding:6px 10px;}
.sponsor .sp-plate img{max-height:30px;max-width:100%;width:auto;object-fit:contain;filter:none!important;-webkit-filter:none!important;opacity:1!important;}
.sponsor .sp-plate.sp-text{font-weight:700;color:#222;font-size:14px;text-align:center;}
.sponsor .sp-logo{display:block;text-decoration:none;}
.sponsor .sponsor-blurb a{font-weight:700;text-decoration:underline;text-underline-offset:2px;color:inherit;}
.sponsor .sp-brand{display:block;font-weight:800;font-size:16px;letter-spacing:.01em;text-decoration:none;color:inherit;margin-bottom:8px;}
.sponsor .sp-domain{display:inline-block;margin-top:8px;font-size:12.5px;font-weight:600;text-decoration:none;color:#8fb3d9;}
.sponsor .sp-domain:hover{color:#b9d2ee;text-decoration:underline;}

/* sp-contain-guard: sponsor logos are wordmarks — never object-fit:cover (crops).
   object-fit ONLY. This block used to also set width:auto, padding:4px 10px,
   max-width:calc(100% - 20px) and min/max-height, which overrode Design's own frame and
   let every plate shrink-wrap its logo — the recurring "inconsistent sizing" and
   "lacks padding". Geometry belongs to Design. */
.sponsor img{object-fit:contain!important}

/* sp-mark-frame: a uniform plate for the money mark, in the tiers where Design sized the plate
   to the artwork instead. Operator's rule: the dark ground is unified whatever the logo's
   size. width:100% (or one fixed width where copy shares the row) + one height for the tier
   + object-fit:contain, so the plate is the same box everywhere and the artwork fits inside
   it. A ground and an inset are added ONLY where none exists — adding a second ground gives
   co-cure's rectangle-inside-a-rectangle. Design's framed tiers are not touched at all. */
.sponsor-grid .sponsor .sp-plate.sp-plate{background:#121013!important;padding:8px 12px!important;box-sizing:border-box!important}
.sponsor-grid .sponsor .sp-plate.sp-plate{display:block!important;width:100%!important}
.sponsor-grid .sponsor.sponsor img{height:38px!important;display:block!important;width:100%!important;background:transparent!important;width:100%!important;padding:0!important}

/* op-grid-4up: auto-fill at minmax(200px,1fr) fitted five plates into the 1200px band and the
   operator asked for four, which is also what makes each plate bigger. Desktop only, so the
   auto-fill still decides the narrow layout. The plate keeps the height Design gave it; only the
   column count changes, so the artwork gains width rather than being re-sized. */
@media (min-width:900px){
  .sponsor-grid{grid-template-columns:repeat(4,1fr)}
}

/* op-footer-compact: the footer printed 10 rows for 10 link(s) in
   2 list(s) — 874px at 390, 8% of the whole page. Design's own
   good case (evbb) has no list at all: its footer links simply flow inline, 479px in total.
   Here the lists flow inline too,
   measured 874 -> 696px (20% shorter) with no new overflow. Both shapes were
   tried and the shorter one kept — two columns helps a wide group set and hurts a narrow one.
   Phone widths only; the desktop footer is untouched. */
@media (max-width:640px){
  footer ul,footer ol{display:flex!important;flex-direction:row!important;flex-wrap:wrap!important;column-gap:clamp(9px,2.99vw,43px)!important;row-gap:9px!important}
  footer ul > li,footer ol > li{width:auto!important;flex:0 0 auto;max-width:100%}
}

/* op-money-columns: the supporters block ran one tile per row — 11 tiles,
   1563px at 390, 15% of the whole page. Two columns bring it to
   944px (40% shorter). Checked before writing: no new overflow, smallest mark still
   143px wide, longest blurb 3 lines, tile heights 129-149px.
   A block that fails any of those is left in one column — two narrow columns can make a block
   TALLER once the copy rewraps, which is the case the operator warned about.
   The blurb is held to three rows at phone width, because a nine- or eleven-line blurb in a narrow column made two columns TALLER than one. The copy stays in the markup. An odd tile count means the lead tile spans the whole row, so the block does not end on an empty cell. Only the tier(s) that were one-per-row are touched (.sponsor-grid), never the section
   that holds several tiers: forcing a grid on that would put a featured row and a regulars run
   side by side. Phone widths only. */
@media (max-width:640px){
  .sponsor-grid{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;column-gap:14px!important}
    .sponsor-grid > *{min-width:0!important;max-width:100%;width:auto!important;flex:0 1 auto!important}
    .sponsor-grid > * *{min-width:0!important;max-width:100%}
    .sponsor-grid img,.sponsor-grid svg{max-width:100%;height:auto}
  .sponsor-grid .sponsor-blurb{display:-webkit-box!important;-webkit-line-clamp:3!important;-webkit-box-orient:vertical;overflow:hidden!important}
}

/* op-odd-tier-lead: .sponsor-grid (11 tiles) lay out two per row with an ODD tile count, so the
   block ended on a lone tile beside an empty cell. The lead tile takes the whole row instead —
   operator: "the 1st item in such rows to be 100% width, then split" — so the grid reads as
   complete. These tiers were already two-per-row, which is why the column pass never wrote the
   rule for them. Checked before writing: no new horizontal overflow, block not more than 15%
   taller. Phone widths only; desktop keeps Design's layout. */
@media (max-width:640px){
  .sponsor-grid:has(> *:nth-child(odd):last-child) > *:first-child{grid-column:1 / -1!important}
}
/* op-heading-levels */
h2:where(.rt-h3){text-wrap: balance; margin: 0px;}
.subleads h2:where(.rt-h3){font: 700 19px/1.3 var(--sans);}
.subleads h2:where(.rt-h3) a{color: var(--ink);}
.numbers-rail .chart h2:where(.rt-h3){font: 700 13px/1.4 var(--sans); letter-spacing: 0.08em; text-transform: uppercase; color: var(--ink-2); margin-bottom: 10px;}
.beat-feature h2:where(.rt-h3){font: 800 clamp(22px,2vw,28px)/1.15 var(--sans); letter-spacing: -0.01em;}
.beat-feature h2:where(.rt-h3) a{color: var(--ink);}
.beat-feature h2:where(.rt-h3) a:hover{color: var(--accent);}
.story-card h2:where(.rt-h3){font: 700 17.5px/1.3 var(--sans); display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;}
.story-card h2:where(.rt-h3) a{color: var(--ink);}
.site-foot h2:where(.rt-h3){font: 700 12.5px/1 var(--sans); letter-spacing: 0.14em; text-transform: uppercase; color: var(--mute); margin-bottom: 12px;}
h1:where(.rt-h2){text-wrap: balance; margin: 0px;}
.lead-story h1:where(.rt-h2){font: 800 clamp(30px,3.6vw,52px)/1.08 var(--sans); letter-spacing: -0.015em; margin: 0px 0px 14px;}
.lead-story h1:where(.rt-h2) a{color: var(--ink);}
h2.rt-h3.rt-h3{margin-bottom:0px;letter-spacing:normal}
/* op-heading-levels:end */

/* op-img-dims — intrinsic width/height reserve image space; the proven height:auto guard (zero specificity) */
:where(main.wrap > figure.article-hero > img){height:auto}
/* op-img-dims:end */
.sponsor-grid.sponsor-grid > [data-partner][data-partner] .sp-plate.sp-plate{background:transparent!important}
