/* cercoop.org — Karstwater · design tokens */
:root{
  --paper:#E7E3D7;      /* ground */
  --paper-deep:#DBD6C6; /* panels, table tints */
  --ink:#211D16;        /* text */
  --blue:#1F4E9C;       /* primary accent — lias blue: areas, links, section marks */
  --ochre:#A05E0C;      /* secondary accent — salt ochre: numbers, rules, kickers */
  --muted:#6E685A;      /* quiet meta */
  --on-blue:#F2EFE6;
  --sans:'Alegreya Sans',sans-serif;
  --mono:'Chivo Mono',monospace;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased}
img{max-width:100%;display:block}
a{color:var(--blue);text-decoration-color:rgba(31,78,156,.35);text-underline-offset:2px}
a:hover{color:var(--ochre)}
::selection{background:rgba(31,78,156,.16)}
h1,h2,h3,h4{line-height:1.12;margin:0;font-weight:800;text-wrap:pretty}
p{margin:0}

/* ---------- layout ---------- */
.wrap{max-width:1160px;margin-inline:auto;padding-inline:24px}
.measure{max-width:720px;margin-inline:auto;padding-inline:24px}
.breakout{max-width:980px;margin-inline:auto;padding-inline:24px}
.band{padding-block:56px;border-bottom:1px solid #C9C4B4}
.kicker{font:500 12px/1 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ochre);display:flex;align-items:center;gap:9px}
.kicker.blue{color:var(--blue)}
.kicker .icon{color:var(--blue)}

/* ---------- header ---------- */
.site-head{background:var(--blue);color:var(--on-blue)}
.site-head .top{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap;padding:30px 0 0}
.wordmark{color:var(--on-blue);text-decoration:none;display:inline-flex;align-items:center;gap:13px}
.wordmark .mark{flex:none;display:flex;align-items:center}
.wordmark .mark svg{display:block}
.wordmark b{font:800 clamp(34px,5vw,52px)/0.95 var(--sans);letter-spacing:-.01em}
.strapline{font:400 12.5px/1.55 var(--mono);color:rgba(242,239,230,.75);max-width:320px;text-align:right;margin:0 0 6px}
.site-nav{margin-top:24px;border-top:1px solid rgba(242,239,230,.3);display:flex;flex-wrap:wrap}
.site-nav a{flex:1 1 auto;display:flex;align-items:center;justify-content:center;gap:8px;padding:14px 10px;color:var(--on-blue);text-decoration:none;font:500 11.5px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;border-left:1px solid rgba(242,239,230,.3);white-space:nowrap}
.site-nav a:first-child{border-left:0}
.site-nav a:hover{background:rgba(242,239,230,.12);color:var(--on-blue)}
.site-nav a[aria-current]{background:var(--paper);color:var(--blue)}

/* ---------- footer ---------- */
.site-foot{background:var(--ink);color:#E6E2D6;padding:48px 0;border-bottom:0}
.site-foot .cols{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:40px;align-items:start}
.site-foot nav{display:grid;grid-template-columns:repeat(2,minmax(150px,max-content));gap:12px 44px;align-content:start}
.site-foot a{color:#E6E2D6;text-decoration:none;font:500 11.5px/1.8 var(--mono);letter-spacing:.08em;text-transform:uppercase}
.site-foot a:hover{color:#D89A4B}
.site-foot .legal{margin-top:26px;padding-top:16px;border-top:1px solid rgba(230,226,214,.18);font:400 12px/1.7 var(--mono);color:#9C9686;max-width:52ch}
.site-foot .fm{display:flex;align-items:center;gap:11px;font:800 24px/1 var(--sans)}

/* ---------- water-route widget ---------- */
.route{display:inline-flex;align-items:center;gap:7px;font:500 11px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.route .dots{display:inline-flex;gap:4px}
.route .dots i{width:8px;height:8px;border:1.5px solid var(--ochre);border-radius:50%;display:inline-block}
.route .dots i.on{background:var(--ochre)}
.route b{color:var(--ochre);font-weight:500}

/* ---------- cards / lists ---------- */
.card{display:flex;flex-direction:column;background:transparent;border-top:3px solid var(--ink);padding-top:0;text-decoration:none;color:var(--ink)}
.card img{aspect-ratio:8/5;object-fit:cover;width:100%}
.card .c-body{display:flex;flex-direction:column;gap:8px;padding:14px 0 0;flex:1}
.card h3{font:800 22px/1.15 var(--sans)}
.card p{font:400 15px/1.5 var(--sans);color:#4C463A}
.card .c-meta{margin-top:auto;padding-top:12px}
.card:hover h3{color:var(--blue)}
.cardgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:28px}

.cat-list{list-style:none;margin:0;padding:0;border-top:3px solid var(--ink)}
.cat-list li{border-bottom:1px solid #C9C4B4;padding:20px 0;display:grid;grid-template-columns:56px 1fr auto;gap:18px;align-items:baseline}
.cat-list .no{font:400 15px/1 var(--mono);color:var(--ochre)}
.cat-list h3{font:800 23px/1.15 var(--sans)}
.cat-list h3 a{color:var(--ink);text-decoration:none}
.cat-list h3 a:hover{color:var(--blue)}
.cat-list p{font:400 15px/1.5 var(--sans);color:#4C463A;margin-top:4px}
.cat-list .route{justify-self:end}

/* ---------- article ---------- */
.art-head{padding-top:52px}
.art-head .meta{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.art-head .seclink{display:inline-flex;align-items:center;gap:8px;font:500 12px/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--blue);text-decoration:none}
.art-head .seclink:hover{color:var(--ochre)}
.art-head h1{font:800 clamp(34px,4.6vw,54px)/1.02 var(--sans);margin:16px 0 14px;max-width:20ch}
.lead{font:italic 400 20px/1.5 var(--sans);color:#4C463A;max-width:64ch;text-wrap:pretty}
.art-body{padding-bottom:24px}
.art-body .measure>p{margin:0 0 24px;font-size:18px;line-height:1.72}
.art-body h2{font:800 27px/1.15 var(--sans);margin:40px auto 18px;max-width:720px;padding-inline:24px;padding-top:18px;position:relative}
.art-body h2::before{content:"";display:block;position:absolute;top:0;left:24px;width:44px;border-top:3px solid var(--ochre)}
.note{font:400 15px/1.6 var(--sans);color:var(--muted);border-left:3px solid var(--paper-deep);padding-left:14px;margin:0 0 24px}

.pullquote{margin:36px auto;max-width:820px;padding:26px 24px;border-top:1px solid #C9C4B4;border-bottom:1px solid #C9C4B4}
.pullquote p{font:italic 500 26px/1.4 var(--sans);color:var(--ochre);text-wrap:pretty}
.blockquote{margin:28px auto;max-width:720px;padding-inline:24px}
.blockquote p{font:italic 400 20px/1.55 var(--sans)}
.blockquote cite{display:block;margin-top:10px;font:500 12px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-style:normal}
.callout{background:var(--paper-deep);padding:20px 22px;margin:0 0 24px;border-left:4px solid var(--blue)}
.callout p{font:500 16.5px/1.55 var(--sans)}

/* ---------- figures ---------- */
figure{margin:0}
.article-figure figcaption{max-width:60ch}
.figcap{margin-top:12px}
.figcap .fig-no{font:400 12.5px/1 var(--mono);color:var(--ochre);letter-spacing:.1em;display:block;margin-bottom:7px}
.figcap .cap{font:400 15.5px/1.5 var(--sans);display:block}
.figcap .credit{display:block;margin-top:7px;font:400 10.5px/1.5 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.fig-plate{border-top:3px solid var(--ink);padding-top:22px;margin:34px auto}
.fig-plate img{width:100%;aspect-ratio:1600/1000;object-fit:cover}
.fig-side{display:grid;grid-template-columns:1fr 260px;gap:26px;align-items:end;margin:34px auto;border-top:1px solid #C9C4B4;padding-top:22px}
@media(max-width:1000px){.fig-side{align-items:start}}
.fig-side img{width:100%;aspect-ratio:4/3;object-fit:cover}
.fig-bleed{margin:44px 0;background:var(--ink)}
.fig-bleed img{width:100%;max-height:520px;object-fit:cover;opacity:.96}
.fig-bleed .figcap{margin:0;padding:14px 24px 18px;color:#E6E2D6;max-width:1160px;margin-inline:auto}
.fig-bleed .figcap .cap{color:#E6E2D6}
.fig-bleed .figcap .credit{color:#9C9686}
.gallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;margin:34px auto}
.gallery img{aspect-ratio:4/3;object-fit:cover;width:100%}
.gallery figcaption{font:400 13.5px/1.5 var(--sans);color:#4C463A;margin-top:8px}

/* map */
.map-figure .map-slot{background:var(--paper-deep);border:1px solid #C9C4B4;min-height:320px}
.map-figure figcaption{margin-top:12px}
.map-plate{border-top:3px solid var(--ink);padding-top:22px}
.map-plate svg{width:100%;height:auto;display:block;background:var(--paper-deep)}

/* ---------- field-note panels (Notes for Design) ---------- */
.panel{background:var(--paper-deep);padding:28px 28px 24px;margin:36px auto;max-width:980px}
.panel .kicker{margin-bottom:16px}
.panel + .panel{margin-top:-12px}
.timeline{list-style:none;margin:0;padding:0}
.timeline li{display:grid;grid-template-columns:minmax(120px,220px) 1fr;gap:8px 22px;padding:11px 0;border-top:1px solid #C6C0AE}
.timeline li:first-child{border-top:0}
.t-when{font:500 13px/1.5 var(--mono);color:var(--ochre)}
.t-what{font:400 15.5px/1.55 var(--sans)}
.terms{margin:0}
.terms>div{display:grid;grid-template-columns:minmax(120px,220px) 1fr;gap:8px 22px;padding:11px 0;border-top:1px solid #C6C0AE}
.terms>div:first-child{border-top:0}
.terms dt{font:700 15.5px/1.5 var(--sans);color:var(--blue)}
.terms dd{margin:0;font:400 15.5px/1.55 var(--sans)}
.steps{list-style:none;margin:0;padding:0;counter-reset:step}
.steps li{counter-increment:step;display:grid;grid-template-columns:34px 1fr;gap:14px;padding:9px 0;border-top:1px solid #C6C0AE;font:400 15.5px/1.55 var(--sans)}
.steps li:first-child{border-top:0}
.steps li::before{content:counter(step,decimal-leading-zero);font:400 13px/1.7 var(--mono);color:var(--ochre)}

/* ---------- data components ---------- */
.datatable,.versus{width:100%;border-collapse:collapse;border-top:3px solid var(--ink);font:400 14.5px/1.5 var(--sans);margin:24px 0}
.datatable th,.versus th{text-align:left;font:500 11px/1.4 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ochre);padding:10px 14px 10px 0;border-bottom:1px solid var(--ink)}
.datatable td,.versus td{padding:11px 14px 11px 0;border-bottom:1px solid #C9C4B4;vertical-align:top}
.versus td:first-child{font-weight:700}
.statrow{display:flex;gap:14px;flex-wrap:wrap;margin:24px 0}
.statblock{flex:1 1 150px;background:var(--paper-deep);padding:18px;display:flex;flex-direction:column;gap:6px}
.stat-num{font:800 34px/1 var(--sans);color:var(--blue)}
.stat-label{font:500 11.5px/1.5 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.chart{margin:28px 0}
.chart svg{width:100%;height:auto;display:block}
.chart figcaption{font:400 13.5px/1.5 var(--sans);color:var(--muted);margin-top:10px}

/* ---------- cards / references ---------- */
.profile-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:20px;margin:24px 0}
.profile-card{background:var(--paper-deep);padding:20px;display:flex;flex-direction:column;gap:8px;font-size:15px}
.profile-card .p-photo{width:76px;height:76px;object-fit:cover;border-radius:50%}
.profile-card h3{font:800 19px/1.2 var(--sans)}
.profile-card .p-role{font:500 11.5px/1.5 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ochre)}
.profile-card .p-links{margin-top:auto;padding-top:8px}
.org-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin:24px 0}
.org-card{display:grid;grid-template-columns:44px 1fr;gap:4px 12px;align-items:center;background:var(--paper-deep);padding:14px;text-decoration:none;color:var(--ink)}
.org-card .org-logo{grid-row:span 2;width:44px;height:44px;object-fit:contain;background:var(--ink);padding:6px}
.org-card.no-logo{grid-template-columns:1fr}
.org-card .org-name{font:700 15.5px/1.3 var(--sans)}
.org-card .org-host{font:400 11.5px/1.4 var(--mono);color:var(--muted)}
.entity-ref{font-weight:500;white-space:nowrap}
.further-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;margin:24px 0}
.further-grid a{background:var(--paper-deep);padding:16px 18px;font:700 16px/1.35 var(--sans);color:var(--ink);text-decoration:none;border-top:3px solid var(--blue)}
.further-grid a:hover{color:var(--blue)}
.related-links{list-style:none;margin:18px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}
.related-links a{display:block;background:var(--paper-deep);padding:16px 18px;font:700 16px/1.35 var(--sans);color:var(--ink);text-decoration:none;border-top:3px solid var(--blue);height:100%}
.related-links a:hover{color:var(--blue)}
.related-links .r-sec{display:flex;align-items:center;gap:7px;font:500 10.5px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ochre);margin-bottom:8px}

/* ---------- supporters ---------- */
.sponsor-note{font:400 15px/1.6 var(--sans);color:#4C463A;max-width:56ch;margin:10px 0 24px}
.sponsor-grid{display:grid;gap:12px}
.sponsor-grid--feat{grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}
.sponsor-grid--quiet{grid-template-columns:repeat(4,1fr)}
@media(max-width:980px){.sponsor-grid--quiet{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.sponsor-grid--quiet{grid-template-columns:1fr}}
.sponsor-grid+.sponsor-grid{margin-top:12px}
.sponsor{display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;gap:10px;background:var(--paper-deep);padding:18px 22px;min-height:72px;text-decoration:none;color:var(--ink);border-top:3px solid var(--ink)}
.sponsor:hover{border-top-color:var(--ochre)}
.sponsor:hover .sponsor-name{color:var(--blue)}
.sponsor-name{font:700 19px/1.25 var(--sans);color:var(--ink)}
.sponsor-blurb{font:400 14.5px/1.5 var(--sans);color:#4C463A}
.sponsor--wide{grid-column:span 2}
.sponsor.feat{border-top-color:var(--blue);padding-block:26px}
.sponsor.feat .sponsor-name{font-size:22px}


/* ---------- misc ---------- */
.btnlink{font:500 13px/1 var(--mono);letter-spacing:.06em;text-decoration:none}
.quietline{padding:64px 24px;text-align:center}
.quietline p{font:italic 400 clamp(22px,3vw,30px)/1.35 var(--sans);color:var(--blue);max-width:26ch;margin-inline:auto}
.icon{flex:none}
details.expander>summary{cursor:pointer;font:500 13px/1 var(--mono);color:var(--blue);letter-spacing:.06em;padding:14px 0;list-style:none}
details.expander>summary::-webkit-details-marker{display:none}
details.expander>summary::after{content:" ↓"}
details.expander[open]>summary::after{content:" ↑"}

@media(max-width:760px){
  body{font-size:16px}
  .site-nav a{flex:1 1 33%;border-left:0;border-top:1px solid rgba(242,239,230,.2);justify-content:flex-start;padding-inline:4px}
  .strapline{text-align:left;margin-top:8px}
  .cat-list li{grid-template-columns:44px 1fr}
  .cat-list .route{grid-column:2;justify-self:start}
  .fig-side{grid-template-columns:1fr}
  .timeline li,.terms>div{grid-template-columns:1fr}
  .t-when{padding-top:2px}
  .art-body .measure>p{font-size:17px}
}

/* page-specific */
.sec-head{display:grid;grid-template-columns:150px 1fr;gap:36px;align-items:start}
.sec-head .bigno{font:400 68px/1 var(--mono);color:var(--ochre);margin-bottom:14px}
.feature{display:grid;grid-template-columns:1.35fr 1fr;gap:44px;align-items:end}
.feature img{width:100%;aspect-ratio:1600/1000;object-fit:cover}
.stages{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));border-top:3px solid var(--ink)}
.stage{padding:24px 20px 8px 0;display:flex;flex-direction:column;gap:9px}
.stage+.stage{border-left:1px solid #C9C4B4;padding-left:20px}
.stage .sno{font:400 21px/1 var(--mono);color:var(--ochre)}
.stage h3{font:800 22px/1.1 var(--sans)}
.stage p{font:400 14.5px/1.5 var(--sans);color:#4C463A}
.stage a{font:500 12px/1 var(--mono);text-decoration:none;margin-top:auto;padding-top:6px}
.toc{border-top:3px solid var(--ink)}
.toc .row{display:grid;grid-template-columns:60px 36px minmax(160px,240px) 1fr auto;gap:20px;align-items:center;padding:20px 0;border-bottom:1px solid #C9C4B4;text-decoration:none;color:var(--ink)}
.toc .no{font:400 20px/1 var(--mono);color:var(--ochre)}
.toc .row .icon{color:var(--blue)}
.toc h3{font:800 25px/1.05 var(--sans)}
.toc p{font:400 15px/1.45 var(--sans);color:#4C463A}
.toc .go{font:500 14px/1 var(--mono);color:var(--blue)}
.toc .row:hover h3{color:var(--blue)}
.map-label{font:500 12px 'Chivo Mono',monospace;fill:var(--ink)}
.map-note{font:400 10px 'Chivo Mono',monospace;fill:#6E685A}
.dept{fill:#DFDACB;stroke:#B5AF9D;stroke-width:1}
.dept-jura{fill:#CDD5E7;stroke:#211D16;stroke-width:1.2}
@media(max-width:760px){.sec-head{grid-template-columns:1fr}.feature{grid-template-columns:1fr}.toc .row{grid-template-columns:44px 1fr;grid-auto-rows:auto}.toc .row .icon,.toc .go{display:none}.toc h3{font-size:21px}.stage+.stage{border-left:0;padding-left:0;border-top:1px solid #C9C4B4}}

/* interactive map */
.map-wrap{display:grid;grid-template-columns:1fr 300px;gap:32px;align-items:start}
.map-wrap .map-plate{margin:0}
.map-pin{cursor:pointer;outline:none}
.map-pin .dot{fill:var(--ochre);stroke:#E7E3D7;stroke-width:1.5;transition:r .15s}
.map-pin .halo{fill:transparent;stroke:transparent;transition:stroke .15s}
.map-pin:hover .dot,.map-pin.active .dot{r:7;fill:var(--blue)}
.map-pin.active .halo,.map-pin:focus-visible .halo{stroke:var(--blue);stroke-width:1.5;stroke-dasharray:3 3}
.map-pin.active .map-label{font-weight:500;fill:var(--blue)}
.map-panel{border-top:3px solid var(--ink);padding-top:20px;min-height:300px}
.place-card{display:none}
.place-card.on{display:block}
.place-card h3{font:800 26px/1.1 var(--sans);margin:12px 0 8px}
.place-card .pc-note{font:400 15.5px/1.55 var(--sans);color:#4C463A}
.pc-links{list-style:none;margin:16px 0 0;padding:0;display:grid;gap:8px}
.pc-links a{display:block;background:var(--paper-deep);padding:12px 14px;font:700 15px/1.35 var(--sans);color:var(--ink);text-decoration:none;border-left:3px solid var(--blue)}
.pc-links a:hover{color:var(--blue)}
@media(max-width:760px){.map-wrap{grid-template-columns:1fr}.map-panel{min-height:0}}

/* mobile hardening */
.map-chips{display:flex;flex-direction:column;gap:0;margin-bottom:26px;border-bottom:1px solid #C9C4B4}
.map-chip{display:flex;flex-direction:column;align-items:flex-start;gap:5px;text-align:left;font:500 13px/1 var(--mono);letter-spacing:.04em;background:none;border:0;border-top:1px solid #C9C4B4;color:var(--ink);padding:13px 12px;cursor:pointer;min-height:44px;width:100%}
.map-chip b{font-weight:500}
.map-chip .chip-note{font:400 13px/1.4 var(--sans);color:var(--muted)}
.map-chip:hover{background:var(--paper-deep)}
.map-chip.on{background:var(--blue);color:var(--on-blue)}
.map-chip.on .chip-note{color:rgba(242,239,230,.75)}
@media(max-width:640px){
  .map-chips{flex-direction:row;flex-wrap:wrap;gap:8px;border-bottom:0}
  .map-chip{width:auto;border:1px solid #C9C4B4;background:var(--paper-deep);padding:12px 14px}
  .map-chip .chip-note{display:none}
  .map-chip.on{border-color:var(--blue)}
  .map-plate .map-label,.map-plate .map-note{display:none}
  .map-wrap{grid-template-columns:1fr}
  .map-panel{border-top-width:0;padding-top:4px}
}
@media(max-width:430px){
  .site-nav a{flex:1 1 50%}
  .wrap,.measure,.breakout{padding-inline:18px}
  .art-body h2{padding-inline:18px}
  .art-body h2::before{left:18px}
  .panel{padding:20px 18px 18px}
  .sponsor--wide{grid-column:span 1}
}

@media(max-width:640px){.site-foot .cols{grid-template-columns:1fr}.site-foot nav{grid-template-columns:repeat(2,minmax(120px,max-content))}}

/* sp-roll-normalize: a logo roll keeps object-fit and loses its geometry.
   It used to set width:auto, height:46px, max-width:172px and min-width:30px, which let
   every plate in the roll shrink-wrap its own artwork — evbb measured 62px next to 204px
   in the SAME ROW. The operator's rule is that the dark ground is unified whatever the
   logo's size, so the plate cannot be sized by the logo. Geometry belongs to Design. */
[class~="roll"] .sponsor img,[class*="roll-"] .sponsor img,[class*="-roll"] .sponsor img{object-fit:contain}

/* 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,.sponsor-box img,.sp-logo img{object-fit:contain!important;display:block;margin-left:auto;margin-right:auto;align-self:center}

/* sp-mark-align: marks sit CENTRED in their box. Placement only — Design's size,
   padding, panel and object-fit are untouched. */
.sponsor img,.sponsor-box img,.sp-logo img{object-position:center!important;margin-left:auto!important;margin-right:auto!important;display:block}
.sponsor .sp-logo,.sponsor-box{display:flex;align-items:center;justify-content:center}

/* sp-tile-uniform: a slot never grows to fill its row — every tile the same width in
   every row, whatever the count. Only flex-grow is touched. */
.sponsor{flex-grow:0!important}
.sponsor.lead-line,.sponsor.feat.lead-line{flex-grow:1!important}

/* sp-blurb-unhide: every supporter slot shows its text — no half-texted grids */
.sponsor-blurb:not(:empty){display:block!important;line-height:1.5}

/* sp-blurb-link: money-link anchors in blurbs must inherit the blurb colour (readable on dark OR light tiles) */
.sponsor-blurb a{color:inherit;text-decoration:underline;text-underline-offset:2px}

/* op-money-columns: the supporters block ran one tile per row — 10 tiles,
   944px at 390, 12% of the whole page. Two columns bring it to
   496px (47% shorter). Checked before writing: no new overflow, smallest mark still
   Nonepx wide, longest blurb 3 lines, tile heights 72-158px.
   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. Only the tier(s) that were one-per-row are touched (.sponsor-grid.sponsor-grid--feat, .sponsor-grid.sponsor-grid--quiet), 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.sponsor-grid--feat{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;column-gap:12px!important}
    .sponsor-grid.sponsor-grid--feat > *{min-width:0!important;max-width:100%;width:auto!important;flex:0 1 auto!important}
    .sponsor-grid.sponsor-grid--feat > * *{min-width:0!important;max-width:100%}
    .sponsor-grid.sponsor-grid--feat img,.sponsor-grid.sponsor-grid--feat svg{max-width:100%;height:auto}
  .sponsor-grid.sponsor-grid--quiet{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;column-gap:12px!important}
    .sponsor-grid.sponsor-grid--quiet > *{min-width:0!important;max-width:100%;width:auto!important;flex:0 1 auto!important}
    .sponsor-grid.sponsor-grid--quiet > * *{min-width:0!important;max-width:100%}
    .sponsor-grid.sponsor-grid--quiet img,.sponsor-grid.sponsor-grid--quiet svg{max-width:100%;height:auto}
  .sponsor-grid.sponsor-grid--feat .sponsor-blurb{display:-webkit-box!important;-webkit-line-clamp:3!important;-webkit-box-orient:vertical;overflow:hidden!important}
  .sponsor-grid.sponsor-grid--quiet .sponsor-blurb{display:-webkit-box!important;-webkit-line-clamp:3!important;-webkit-box-orient:vertical;overflow:hidden!important}
}

/* op-article-width: the article column was capped at 672px (98 characters per line) at every desktop width. Operator: "it should utilize more space". Widened through max-width 720px (declared in .measure) to ~102 characters per line in this build's own prose font, never past the edge Design's own content already reaches beside it. Above 1600 the column and the prose type grow together (up to 1.2x). Nothing below 1440 changes. Originals: migration/_backups/article_width/. */
@media (min-width:1440px){
  div.art-body div.measure{max-width:min(747px, 100%)!important}
}
@media (min-width:1600px){
  div.art-body div.measure{max-width:min(clamp(747px, 51.875vw, 896px), 100%)!important}
  div.art-body div.measure > :is(p:not([class])){font-size:clamp(18px,1.2500vw,21.6px)!important}
}
/* op-article-width:end */
/* op-heading-levels */
h2:where(.rt-h3){line-height: 1.12; margin: 0px; font-weight: 800; text-wrap: pretty;}
.cat-list h2:where(.rt-h3){font: 800 23px/1.15 var(--sans);}
.cat-list h2:where(.rt-h3) a{color: var(--ink); text-decoration: none;}
.cat-list h2:where(.rt-h3) a:hover{color: var(--blue);}
/* op-heading-levels:end */

/* op-img-dims — intrinsic width/height reserve image space; the proven height:auto guard (zero specificity) */
:where(article > figure.article-figure.breakout.fig-plate > img,
  div.art-body > figure.article-figure.breakout.fig-side > img,
  div.art-body > figure.article-figure.fig-bleed > img,
  div.cardgrid > a.card > img,
  div.feature > a > img,
  main > figure.article-figure.fig-bleed > img){height:auto}
/* op-img-dims:end */
