/* Danziger Projects — New York gallery districts
   Palette roles: ground · ink · accent (acid) · flag (vermilion) · clay (secondary) */
:root{
  --ground:#0C0F14;
  --panel:#12161D;
  --rule:#232833;
  --slate:#3A4150;
  --ink:#EFEBE0;
  --ink-2:#D7D3C8;
  --quiet:#8E95A2;
  --quiet-2:#6E7480;
  --accent:#E4FF3D;
  --flag:#FF3B2F;
  --clay:#C96442;

  --wrap:1440px;
  --breakout:1040px;
  --measure:70ch;
  --gutter:28px;
  --base:18px;
  --sans:"Syne",system-ui,sans-serif;
  --serif:"Crimson Pro",Georgia,serif;
  --mono:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
html{font-size:var(--base)}
body{margin:0;background:var(--ground);color:var(--ink);font-family:var(--serif);font-size:1rem;line-height:1.58;text-wrap:pretty;-webkit-font-smoothing:antialiased}
img{max-width:100%;display:block}
a{color:var(--accent);text-decoration:none}
a:hover{color:var(--flag);text-decoration:underline;text-underline-offset:3px}
h1,h2,h3,h4{font-family:var(--sans);font-weight:800;letter-spacing:-0.028em;line-height:1;margin:0}
.skip{position:absolute;left:-9999px}
.skip:focus{left:8px;top:8px;background:var(--accent);color:#0C0F14;padding:8px 12px;z-index:99}

.wrap{width:100%;max-width:var(--wrap);margin:0 auto;padding-inline:var(--gutter)}
.measure{max-width:var(--measure)}
.breakout{width:100%;max-width:var(--breakout)}

.u-label{font-family:var(--sans);font-weight:800;font-size:0.86rem;letter-spacing:0.16em;text-transform:uppercase;color:var(--quiet)}
.u-accent{color:var(--accent)}
.addr{font-family:var(--mono);font-size:0.74rem;letter-spacing:0.04em;color:var(--quiet-2)}
.cta{display:inline-block;font-family:var(--sans);font-weight:700;font-size:0.8rem;letter-spacing:0.14em;text-transform:uppercase}

/* ---------- masthead: nav rail, then the name at full width ---------- */
.railnav{border-bottom:1px solid var(--rule)}
.railnav ul{display:flex;flex-wrap:wrap;justify-content:space-between;gap:0 24px;list-style:none;margin:0;padding:clamp(2px,0.5vw,14px) 0}
.railnav a{display:block;padding-block:15px;font-family:var(--sans);font-weight:500;font-size:clamp(11px,0.74vw,15px);letter-spacing:0.2em;text-transform:uppercase;color:var(--ink)}
.railnav a:hover{color:var(--accent);text-decoration:none}
.railnav a[aria-current="page"]{color:var(--accent)}
.masthead{text-align:center;padding:clamp(18px,1.9vw,46px) 0 clamp(10px,1vw,24px)}
.masthead__word{display:block;font-family:var(--sans);font-weight:800;font-size:clamp(30px,6.6vw,156px);line-height:0.88;letter-spacing:-0.042em;text-transform:uppercase;color:var(--ink)}
.masthead a:hover .masthead__word{color:var(--ink)}
.masthead__sub{display:flex;align-items:center;justify-content:center;gap:clamp(10px,1vw,22px);margin-top:clamp(10px,1vw,24px);flex-wrap:wrap}
.masthead__sub span{font-family:var(--sans);font-weight:500;font-size:clamp(10px,0.74vw,15px);letter-spacing:0.22em;text-transform:uppercase;color:var(--quiet)}
.ticks{color:var(--slate);flex:0 0 auto}

/* ---------- the drawn device: hairline rule + monospace address ---------- */
.seam{display:flex;align-items:baseline;gap:14px;margin-block:clamp(26px,2.8vw,64px)}
.seam svg{flex:1 1 auto;height:1px;min-width:40px;overflow:visible}
.seam .addr{flex:0 0 auto;white-space:nowrap}

/* ---------- bands ---------- */
.band{padding-block:clamp(34px,3.8vw,104px)}
.band--tight{padding-block:clamp(24px,2.4vw,58px)}
.band--panel{background:var(--panel)}
.band--accent{background:var(--accent);color:#0C0F14}
.band--accent a{color:#0C0F14}
.band--accent .u-label{color:rgba(12,15,20,0.72)}
.band__head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;flex-wrap:wrap;border-bottom:1px solid var(--rule);padding-bottom:clamp(12px,1.2vw,28px)}
.band__title{font-family:var(--serif);font-weight:400;font-size:clamp(25px,2.7vw,64px);line-height:1.06;letter-spacing:-0.012em;max-width:26ch}
.kicker{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.kicker svg{width:24px;height:24px;color:var(--accent);flex:0 0 auto}
.kicker .u-label{color:var(--accent)}
.band--accent .kicker svg,.band--accent .kicker .u-label{color:#0C0F14}
.hero-h2{font-family:var(--serif);font-weight:300;font-size:clamp(30px,3.9vw,96px);line-height:1.02;letter-spacing:-0.018em;max-width:24ch}
.big-line{font-family:var(--serif);font-weight:400;font-size:clamp(27px,3.2vw,76px);line-height:1.06;letter-spacing:-0.014em;max-width:32ch;margin:0}
.deck{font-size:1.12rem;color:var(--ink-2);max-width:74ch;margin:0}
.two-col{display:grid;grid-template-columns:1fr;gap:clamp(24px,3vw,80px)}

/* ---------- chart ---------- */
.chart-figure{width:100%;margin:clamp(20px,2.2vw,54px) 0 0}
.chart-figure svg{display:block;width:100%;height:auto;font-family:var(--sans)}
.chart-note{display:flex;justify-content:space-between;gap:clamp(16px,2vw,48px);flex-wrap:wrap;border-top:1px solid var(--rule);margin-top:clamp(14px,1.4vw,32px);padding-top:clamp(14px,1.4vw,32px)}
.chart-note p{margin:0;max-width:82ch;color:var(--ink-2)}

/* ---------- figures: three treatments, one drawing system ---------- */
figure{margin:0}
.fig-mat{background:var(--mat,#E7E1D2);padding:4px}
.fig-mat > img{width:100%;height:auto}
.fig-border{border:1px solid var(--rule)}
.fig-border img{width:100%;height:auto}
.figcap{border-left:3px solid var(--accent);padding-left:clamp(10px,0.8vw,18px);margin-top:clamp(10px,0.9vw,20px);display:flex;flex-wrap:wrap;gap:4px clamp(14px,1.4vw,32px);align-items:baseline}
.figcap .cap{font-family:var(--sans);font-weight:400;font-size:0.9rem;line-height:1.5;color:var(--ink-2);margin:0;flex:1 1 300px}
.figcap .credit{font-family:var(--mono);font-size:0.72rem;letter-spacing:0.06em;text-transform:uppercase;color:var(--quiet-2);margin:0;flex:0 1 auto;min-width:0;overflow-wrap:anywhere}
.fig-bleed img{width:100%;height:clamp(300px,42vw,860px);object-fit:cover}

.fig-bleed .figcap{border-left:0;padding-left:0;margin-top:0;padding-top:clamp(12px,1.1vw,26px);justify-content:space-between}
.article .wrap .fig-bleed{width:calc(100% + var(--gutter) * 2);margin-left:calc(var(--gutter) * -1)}
.article > .fig-bleed{width:100%;margin-left:0}
.article .fig-bleed .figcap{padding-inline:var(--gutter)}
.pullquote{margin-left:calc(var(--gutter) * -0.45)}
.notes-block--offset{margin-left:clamp(14px,3vw,150px)}
.fig-inset{float:left;width:min(46%,420px);margin:6px clamp(18px,2vw,40px) clamp(24px,2vw,40px) 0}
.fig-inset .figcap{flex-direction:column;align-items:stretch}
.fig-inset .figcap .cap,.fig-inset .figcap .credit{flex:0 0 auto}
.run{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,19rem),1fr));gap:clamp(18px,2.2vw,52px);align-items:end;margin-top:clamp(18px,2vw,48px)}
.gallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:clamp(12px,1.2vw,26px)}
.gallery img{aspect-ratio:3/2;object-fit:cover;width:100%}

/* ---------- feature (image left, headline right) ---------- */
.feature{display:grid;grid-template-columns:1fr;gap:clamp(22px,2.6vw,68px);align-items:center}
.feature__title{font-family:var(--serif);font-weight:400;font-size:clamp(28px,3.2vw,78px);line-height:1.04;letter-spacing:-0.014em;max-width:22ch}

/* ---------- cards ---------- */
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,290px),1fr));gap:clamp(18px,2vw,44px);margin-top:clamp(18px,2vw,44px)}
.card{display:flex;flex-direction:column;height:100%;color:var(--ink)}
.card:hover{text-decoration:none;color:var(--ink)}
.card:hover .card__title{color:var(--accent)}
.card:hover .card__img{filter:saturate(1.05) contrast(1.06);border-color:var(--accent)}
.card__img{width:100%;aspect-ratio:4/3;object-fit:cover;background:var(--panel);border:1px solid var(--rule);filter:saturate(0.9) contrast(1.04);transition:filter .35s ease,border-color .35s ease}
.card__title{font-family:var(--serif);font-weight:400;font-size:1.42rem;line-height:1.14;letter-spacing:-0.008em;margin:16px 0 7px}
.card__dek{font-size:0.98rem;color:var(--quiet);margin:0}
.card__dek .c2{display:block}
.card__foot{margin-top:auto;padding-top:12px}

/* ---------- map ---------- */
.map-frame{position:relative;background:var(--panel);border:1px solid var(--rule);overflow:hidden}
.map-frame svg{display:block;width:100%;height:auto}
.map-figure{min-width:0;max-width:100%}
.map-figure .cap{max-width:100%}
.map-layout{display:grid;grid-template-columns:1fr;gap:clamp(18px,2vw,44px);align-items:start;margin-top:clamp(16px,1.6vw,36px)}
.map-note{min-width:0}
.map-note__lede{font-family:var(--serif);font-size:1.18rem;line-height:1.36;color:var(--ink);margin:0 0 clamp(14px,1.4vw,26px);max-width:44ch}
.map-note dl{margin:0;display:grid;grid-template-columns:3.6em minmax(0,1fr);gap:0 clamp(10px,1vw,20px)}
.map-note dt{font-family:var(--mono);font-size:0.72rem;color:var(--accent);letter-spacing:0.04em;padding:10px 0 11px;border-top:1px solid var(--rule)}
.map-note dd{margin:0;font-size:0.95rem;line-height:1.4;color:var(--ink-2);padding:10px 0 11px;border-top:1px solid var(--rule);max-width:64ch}
.map-legend{list-style:none;margin:0;padding:0}
.map-legend li{display:grid;grid-template-columns:1.9em minmax(0,1fr);gap:8px;align-items:baseline;padding:10px 0 11px;border-top:1px solid var(--rule)}
.map-legend li:hover .ml-t{color:var(--ink)}
.map-legend li:last-child{border-bottom:1px solid var(--rule)}
.ml-n{font-family:var(--mono);font-size:0.7rem;color:var(--flag);letter-spacing:0.06em}
.ml-t{font-family:var(--sans);font-size:0.88rem;line-height:1.3;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ---------- article ---------- */
.article{padding-block:clamp(18px,1.8vw,44px)}
/* one column axis for the whole reading page */
.article > .wrap,.article > .fig-bleed > .wrap{max-width:calc(var(--measure) + var(--gutter) * 2)}
.article .prose,.article .breakout,.article .notes-block--offset{max-width:100%;margin-inline:0}
.article__title{font-family:var(--serif);font-weight:400;font-size:clamp(30px,4.2vw,98px);line-height:1.02;letter-spacing:-0.014em;max-width:24ch}
.lead{font-size:1.24rem;line-height:1.4;color:var(--ink-2);max-width:56ch;margin:clamp(16px,1.6vw,36px) 0 0}
.prose{max-width:var(--measure);font-size:1.06rem}
.prose > p{margin:0 0 1.15em}
.prose h2{clear:both;font-family:var(--serif);font-weight:400;font-size:clamp(24px,2vw,46px);line-height:1.08;letter-spacing:-0.01em;margin:clamp(28px,2.6vw,64px) 0 0.45em;max-width:32ch}
.prose h3{clear:both;font-family:var(--serif);font-weight:600;font-size:1.24rem;letter-spacing:0;margin:1.6em 0 0.4em}
.prose a{border-bottom:1px solid rgba(228,255,61,0.4)}
.prose ul,.prose ol{padding-left:1.2em;margin:0 0 1.15em}
.prose li{margin-bottom:0.4em}
.prose::after{content:"";display:block;clear:both}
.pullquote{margin:clamp(44px,4.4vw,84px) 0;padding-left:clamp(14px,1.2vw,28px);border-left:4px solid var(--flag);max-width:46ch}
.pullquote p{margin:0;font-family:var(--sans);font-weight:700;font-size:clamp(20px,1.7vw,40px);line-height:1.1;letter-spacing:-0.022em;color:var(--ink)}
.blockquote{margin:clamp(44px,4.4vw,84px) 0;padding-left:clamp(14px,1.2vw,28px);border-left:2px solid var(--rule)}
.blockquote p{margin:0;font-size:1.1rem;font-style:italic}
.blockquote cite{display:block;margin-top:8px;font-family:var(--mono);font-size:0.74rem;font-style:normal;color:var(--quiet-2)}
.callout{background:var(--panel);border-top:3px solid var(--accent);padding:clamp(18px,1.6vw,34px);margin:clamp(44px,4.4vw,84px) 0}
.callout p{margin:0 0 0.5em;color:var(--ink)}
.callout p:last-child{margin:0}
.note{font-family:var(--sans);font-size:0.9rem;color:var(--quiet);border-left:2px solid var(--clay);padding-left:12px;margin:1.4em 0}
.notes-block{margin:clamp(44px,4.4vw,84px) 0}
.notes-block__title{font-family:var(--sans);font-weight:700;font-size:0.76rem;letter-spacing:0.2em;text-transform:uppercase;color:var(--accent);margin-bottom:14px}
.timeline{list-style:none;margin:0;padding:0}
.timeline li{display:grid;grid-template-columns:minmax(96px,200px) minmax(0,1fr);gap:clamp(12px,1.4vw,34px);padding:12px 0;border-top:1px solid var(--rule)}
.timeline li:last-child{border-bottom:1px solid var(--rule)}
.t-when{font-family:var(--mono);font-size:0.8rem;color:var(--accent);line-height:1.5}
.t-what{font-size:1rem;color:var(--ink-2)}
.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.datatable,.versus{width:100%;min-width:22rem;border-collapse:collapse;font-size:0.98rem}
.datatable th,.datatable td,.versus th,.versus td{text-align:left;vertical-align:top;padding:11px 14px 11px 0;border-bottom:1px solid var(--rule)}
.datatable th,.versus th{font-family:var(--sans);font-weight:700;font-size:0.74rem;letter-spacing:0.14em;text-transform:uppercase;color:var(--quiet)}
.statrow{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,175px),1fr));gap:1px;background:var(--rule);margin:clamp(44px,4.4vw,84px) 0}
.statblock{background:var(--panel);padding:clamp(14px,1.4vw,28px);display:flex;flex-direction:column;gap:6px}
.stat-num{font-family:var(--sans);font-weight:800;font-size:clamp(26px,2.2vw,52px);line-height:1;color:var(--accent)}
.stat-label{font-family:var(--sans);font-size:0.76rem;letter-spacing:0.1em;text-transform:uppercase;color:var(--quiet)}
.related-links{list-style:none;margin:0;padding:0}
.related-links li{border-top:1px solid var(--rule);padding:12px 0}
.further-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,250px),1fr));gap:16px}
.further-grid a{display:block;background:var(--panel);border:1px solid var(--rule);padding:16px;color:var(--ink);font-family:var(--sans);font-size:0.94rem;line-height:1.3}
.further-grid a:hover{border-color:var(--accent);color:var(--accent);text-decoration:none}
.profile-grid,.org-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,250px),1fr));gap:16px}
.profile-card{background:var(--panel);border:1px solid var(--rule);padding:16px;display:flex;flex-direction:column;gap:8px}
.profile-card .p-photo{width:100%;aspect-ratio:3/2;object-fit:cover}
.profile-card h3{font-family:var(--serif);font-weight:400;font-size:1.22rem;letter-spacing:0}
.p-role{font-family:var(--sans);font-size:0.74rem;letter-spacing:0.14em;text-transform:uppercase;color:var(--accent);margin:0}
.p-attr{font-family:var(--mono);font-size:0.7rem;color:var(--quiet-2);margin:0}
.org-card{display:flex;align-items:center;gap:12px;background:var(--panel);border:1px solid var(--rule);padding:12px;color:var(--ink)}
.org-card:hover{border-color:var(--accent);text-decoration:none}
.org-logo{width:42px;height:42px;object-fit:contain;flex:0 0 auto}
.org-name{font-family:var(--sans);font-size:0.94rem;display:block}
.org-host{font-family:var(--mono);font-size:0.7rem;color:var(--quiet-2);display:block}
.entity-ref{font-family:var(--sans);font-size:0.94rem}

/* ---------- category / archive ---------- */
.cat-intro{max-width:70ch;font-size:1.12rem;color:var(--ink-2)}
.cat-list{list-style:none;margin:0;padding:0}
.cat-list li{border-top:1px solid var(--rule)}
.cat-list li:last-child{border-bottom:1px solid var(--rule)}
.cat-list a{display:grid;grid-template-columns:1fr;gap:6px;padding:clamp(13px,1.3vw,26px) 0;color:var(--ink)}
.cat-list a:hover{text-decoration:none;color:var(--accent)}
.cat-list .t{font-family:var(--serif);font-weight:400;font-size:1.4rem;line-height:1.16;letter-spacing:-0.008em}
.cat-list .d{font-size:0.98rem;color:var(--quiet);max-width:88ch}
.archive-group{margin-bottom:clamp(28px,3vw,72px)}

/* ---------- supporters: names as type, one run above the footer ---------- */
.supporters{border-top:1px solid var(--rule);padding-block:clamp(20px,2vw,44px)}
.supporters__inner{display:flex;flex-wrap:wrap;align-items:baseline;gap:10px clamp(18px,2vw,44px)}
.supporters .u-label{flex:0 0 auto}
.sponsor{font-family:var(--serif);font-size:1rem;color:var(--ink-2);white-space:nowrap}
.sponsor:hover{color:var(--accent);text-decoration:none}

/* ---------- footer ---------- */
.foot{border-top:1px solid var(--rule);padding-block:clamp(26px,2.8vw,68px)}
.foot__inner{display:flex;justify-content:space-between;gap:clamp(20px,2.4vw,64px);flex-wrap:wrap;align-items:flex-start}
.foot__word{font-family:var(--sans);font-weight:800;font-size:clamp(20px,1.7vw,38px);line-height:1;letter-spacing:-0.03em;text-transform:uppercase}
.foot__line{margin:10px 0 0;color:var(--quiet);max-width:52ch}
.foot__nav{display:flex;flex-wrap:wrap;gap:10px 24px}
.foot__nav a{font-family:var(--sans);font-weight:700;font-size:0.74rem;letter-spacing:0.16em;text-transform:uppercase}

/* ---------- responsive ---------- */
@media (max-width:760px){
  .fig-inset{float:none;width:100%;margin:18px 0}
  .timeline li{grid-template-columns:1fr;gap:4px}
  .railnav ul{justify-content:flex-start;gap:0 16px}
  .railnav a{letter-spacing:0.12em}
}
@media (min-width:900px){
  .two-col{grid-template-columns:1.05fr 0.95fr}
  .feature{grid-template-columns:0.95fr 1.05fr}
  .cat-list a{grid-template-columns:minmax(0,32ch) 1fr;gap:clamp(18px,2vw,48px);align-items:baseline}
  .map-layout{grid-template-columns:clamp(340px,36vw,560px) minmax(200px,1fr)}
  .map-figure{grid-column:1;grid-row:1}
  .map-legend{grid-column:2;grid-row:1}
  .map-note{grid-column:1/-1;grid-row:2;max-width:78ch}
}
@media (min-width:1200px){
  :root{--wrap:1520px;--breakout:1080px;--gutter:44px;--base:19px}
  .pullquote{margin-left:calc(var(--gutter) * -0.7)}
  .notes-block--offset{margin-left:clamp(40px,6vw,150px);max-width:calc(var(--breakout) - 40px)}
}
@media (min-width:1300px){
  .map-layout{grid-template-columns:clamp(360px,27vw,520px) minmax(0,1fr) minmax(210px,300px)}
  .map-figure,.map-legend,.map-note{grid-column:auto;grid-row:1}
}
@media (min-width:1600px){
  :root{--wrap:1740px;--breakout:1240px;--measure:74ch;--gutter:60px;--base:20px}
}
@media (min-width:1920px){
  :root{--wrap:1980px;--breakout:1440px;--measure:78ch;--gutter:76px;--base:21px}
  .cards{gap:56px}
}
@media (min-width:2400px){
  :root{--wrap:2340px;--breakout:1680px;--measure:82ch;--gutter:96px;--base:23px}
}
@media print{
  body{background:#fff;color:#111}
  .railnav,.supporters,.foot__nav{display:none}
}

/* insertion seams: reserve space in flow, both sides, at every width */
.prose > .notes-block:last-child,.prose > .callout:last-child{margin-bottom:0}
.article > .wrap > .prose + .wrap{margin-top:clamp(44px,4.4vw,84px)}
.related-links,.further-grid{margin-bottom:clamp(44px,4.4vw,84px)}
.fig-bleed + .figcap,.fig-bleed{clear:both}
.notes-block,.callout,.statrow,.pullquote,.blockquote,.fig-bleed{clear:both}

/* 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}
.sponsor:not(.lead-line){flex-basis:var(--sp-tile,232px)!important}
.supporters__inner{flex-wrap:wrap!important}
.supporters__inner > .sponsor{flex:1 1 var(--sp-min,220px)!important;min-width:min(220px,100%)!important}
.sponsor:not(.lead-line){grid-column:span 1!important;grid-row:span 1!important}

/* sp-blurb-stack: a slot holding BOTH a mark and our copy stacks them —
   a fixed-height row clips the mark once the copy is un-hidden. */
.sponsor:has(> img):has(> .sponsor-blurb:not(:empty)){flex-direction:column!important;align-items:flex-start!important;justify-content:flex-start!important;height:auto!important;min-height:0!important;overflow:visible!important;gap:8px}
.sponsor:has(> img):has(> .sponsor-blurb:not(:empty)) > img{align-self:flex-start}

/* 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-size: the design never sized .sponsor-blurb, so it inherited body copy.
   Relative, so it still follows the design's scale. */
.sponsor .sponsor-blurb{font-size:.8em;line-height:1.45}
.sponsor .sp-brand{font-weight:700}

/* sp-tile-fit: a slot fills its track, keeps a symmetric inset, and cannot be inflated
   by one long line of our copy. */
.sponsor.sponsor{width:100%!important;box-sizing:border-box!important;align-self:stretch!important;align-items:center!important;height:auto!important;min-height:0!important;overflow:hidden}
.sponsor.sponsor{justify-content:center!important}
:has(> .sponsor.sponsor){align-items:stretch!important}
.sponsor.sponsor .sponsor-name{min-width:0!important;overflow-wrap:anywhere}
.sponsor.sponsor > img{flex:0 0 auto!important;align-self:center!important}
.sponsor.sponsor > .sponsor-txt,.sponsor.sponsor > span:not(.sponsor-name){flex:1 1 auto!important;min-width:0!important}
.sponsor.sponsor .sponsor-blurb{display:-webkit-box!important;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;margin:0!important}
/* the mobile un-clamp is retired: the operator asked for "2-3 rows max" on phones, which is
   what the desktop rule above already does — so mobile simply keeps it. */
@media (max-width:640px){.sponsor.sponsor .sponsor-blurb{-webkit-line-clamp:3!important;display:-webkit-box!important;-webkit-box-orient:vertical!important;overflow:hidden!important}}

/* 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}

/* 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. */
.supporters__inner .sponsor.sponsor img{box-sizing:border-box!important;height:58px!important;padding:9px 15px!important;background:#121013!important;box-sizing:border-box!important}

/* op-money-columns: the supporters block ran one tile per row — 8 tiles,
   568px at 390, 6% of the whole page. Two columns bring it to
   330px (42% shorter). Checked before writing: no new overflow, smallest mark still
   158px wide, longest blurb 0 lines, tile heights 58-58px.
   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.
   Only the tier(s) that were one-per-row are touched (.supporters__inner), 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){
  .supporters__inner{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;column-gap:29px!important}
    .supporters__inner > *{min-width:0!important;max-width:100%;width:auto!important;flex:0 1 auto!important}
    .supporters__inner > * *{min-width:0!important;max-width:100%}
    .supporters__inner img,.supporters__inner svg{max-width:100%;height:auto}
}

/* op-label-row: on phones the tier .supporters__inner is two per row and its group label (span.u-label) sat in a grid cell like a tile — the group ended on a lone tile beside an empty cell (and a long label was squeezed). The label takes the whole row, above its tiles; only while the tier is two per row. */
@media (max-width:751px){
  .supporters__inner > span.u-label:first-child{grid-column:1 / -1!important}
}
/* op-label-row:end */

/* op-img-dims — intrinsic width/height reserve image space; the proven height:auto guard (zero specificity) */
:where(div.cards > a.card > img.card__img,
  div.wrap > figure.fig-bleed > img,
  figure > div.fig-border > img,
  figure.breakout > div.fig-border > img,
  figure.fig-inset > div.fig-border > img,
  main > figure.fig-bleed > img,
  main.article > figure.fig-bleed > img){height:auto}
/* op-img-dims:end */

/* op-odd-tier-lead: money_slots changed a tier's size — .supporters__inner (9 tiles) now show an ODD count on phones, so the lead tile takes the whole row (operator: "the 1st item in such rows to be 100% width, then split"). Parity-guarded: it steps aside again when the count is even. */
@media (max-width:640px){
  .supporters__inner:has(> div:nth-of-type(odd):last-of-type) > .sponsor:first-of-type{grid-column:1 / -1!important}
}

/* op-grow-same-size: an added partner would have wrapped onto a new row ALONE and stretched across the grid (flex rows that grow). Same minimum (basis 220px, min-width min(220px, 100%)), same columns at every width, a short row keeps its siblings' size — applied at the moment of adding, as the operator chose (2026-09-23). Phones keep their own rules. */
@media (min-width:641px){
  div.supporters__inner{display:grid!important;grid-template-columns:repeat(auto-fill,minmax(220px,1fr))!important}
}
/* op-grow-same-size:end */
[data-partner] img{background:transparent!important}
.supporters__inner .sponsor.sponsor img{background:transparent!important}
