/* GeoWeb Guru — the Register. Palette: ground / ink / accent (oxide) / secondary (deep teal) */
:root{
  --ground:#EDE7DC;
  --ground-2:#E3DCCE;
  --ink:#15201E;
  --ink-soft:#4A5450;
  --ink-quiet:#6E766F;
  --accent:#B33A1A;          /* oxide — saturated */
  --accent-lift:#E4A488;
  --secondary:#1B5E5A;       /* deep teal — saturated, far from oxide in hue */
  --hair:rgba(21,32,30,.22);
  --hair-2:rgba(21,32,30,.12);
  --display:"Chivo",system-ui,sans-serif;
  --text:"Spectral",Georgia,serif;
  --gut:clamp(20px,5vw,72px);
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;background:var(--ground);color:var(--ink);
  font-family:var(--text);font-size:19px;line-height:1.6;
  text-wrap:pretty;
}
img{display:block;max-width:100%;height:auto}
a{color:inherit;text-decoration:none}
a:hover{color:var(--accent)}
h1,h2,h3,h4{font-family:var(--display);font-weight:900;letter-spacing:-.025em;line-height:1.03;margin:0}
p{margin:0}
ul,ol{margin:0;padding:0;list-style:none}
svg{flex:none}
.skip{position:absolute;left:-9999px}
.skip:focus{left:8px;top:8px;background:var(--ink);color:var(--ground);padding:10px 14px;z-index:99}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.wrap{padding-inline:var(--gut)}
.kicker{font-family:var(--display);font-weight:700;font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-quiet)}
.kicker--accent{color:var(--accent)}
.rule-top{border-top:3px solid var(--ink)}
.ico{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}
.ico--lg{width:34px;height:34px}

/* ---------- masthead + nav ---------- */
.masthead{border-bottom:3px solid var(--ink);background:var(--ground)}
.masthead__row{display:grid;grid-template-columns:auto minmax(220px,1fr) auto;gap:10px clamp(20px,3vw,44px);align-items:end;padding-block:24px 18px}
.wordmark{display:inline-flex;align-items:center;gap:clamp(10px,1.4vw,18px);font-family:var(--display);font-weight:900;font-size:clamp(30px,5.4vw,58px);line-height:.86;letter-spacing:-.05em;text-transform:uppercase}
.wordmark svg{width:clamp(30px,4.4vw,50px);height:auto;fill:none;stroke:var(--accent);stroke-width:1.6}
.wordmark:hover{color:var(--accent)}
.strap{font-size:16px;color:var(--ink-soft);max-width:44ch;padding-bottom:5px}
.mast-link{font-family:var(--display);font-weight:700;font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--accent);display:inline-flex;align-items:center;gap:9px}
.masthead__row .mast-link{justify-self:end;padding-bottom:7px}
.nav{border-bottom:1px solid var(--hair);background:var(--ground);position:relative;z-index:20}
.nav__list{display:flex;gap:clamp(6px,1.4vw,18px);justify-content:center;align-items:stretch;overflow-x:auto;scrollbar-width:thin}
.nav__item{position:relative;flex:none;display:flex}
.nav__link{display:flex;align-items:center;gap:0;padding:14px 12px 12px;font-family:var(--display);font-weight:700;font-size:14px;border-bottom:3px solid transparent;white-space:nowrap}
.nav .ico{width:24px;height:24px}
.nav__label{display:inline-block;max-width:0;overflow:hidden;opacity:0;white-space:nowrap;transition:max-width .3s ease,opacity .2s ease,margin-left .3s ease}
.nav__item:hover .nav__label,.nav__item:focus-within .nav__label,.nav__link[aria-current="true"] .nav__label{max-width:26ch;opacity:1;margin-left:10px}
.nav__link:hover,.nav__item:focus-within .nav__link{border-bottom-color:var(--accent);color:var(--accent)}
.nav__link[aria-current="true"]{border-bottom-color:var(--accent);color:var(--accent)}
.nav__panel{position:absolute;left:50%;transform:translateX(-50%);top:100%;min-width:320px;background:var(--ground-2);border:1px solid var(--hair);border-top:3px solid var(--accent);padding:16px 20px 18px;display:none;box-shadow:0 22px 44px rgba(21,32,30,.18)}
.nav__panel::after{content:"";position:absolute;left:0;right:0;top:-12px;height:12px}
.nav__item:hover .nav__panel,.nav__item:focus-within .nav__panel{display:block}
.nav__panel li+li{margin-top:6px}
.nav__panel a{font-size:16px;display:block;padding-block:2px}
.nav__blurb{font-size:15px;color:var(--ink-soft);margin-bottom:10px;padding-bottom:9px;border-bottom:1px solid var(--hair)}

/* ---------- bands ---------- */
.band{padding-block:clamp(44px,6vw,84px)}
.band--tight{padding-block:clamp(28px,4vw,48px)}
.band--teal{background:var(--secondary);color:#F2EFE6}
.band--teal .kicker{color:rgba(242,239,230,.7)}
.band--ink{background:var(--ink);color:var(--ground)}
.band__head{display:flex;flex-wrap:wrap;gap:12px 32px;align-items:flex-end;justify-content:space-between;border-bottom:3px solid currentColor;padding-bottom:12px}
.band__head h2{font-size:clamp(26px,3.4vw,34px)}

/* ---------- lead feature ---------- */
.lead-feature{display:grid;grid-template-columns:1.15fr .85fr;border-bottom:3px solid var(--ink)}
.lead-feature__text{padding:clamp(28px,4vw,56px) var(--gut) clamp(28px,4vw,56px) clamp(28px,4vw,48px);display:flex;flex-direction:column;justify-content:center;gap:18px}
.lead-feature h1{font-size:clamp(34px,4.6vw,58px);line-height:.99}
.lead-feature .deck{font-size:clamp(18px,1.5vw,21px);color:var(--ink-soft)}
.lead-feature__media{position:relative;background:var(--ink);min-height:340px}
.lead-feature__media img{width:100%;height:100%;object-fit:cover;position:absolute;inset:0}

/* ---------- figure system (three treatments) ---------- */
figure{margin:0}
.plate{position:relative;border:2px solid var(--ink);padding:12px;background:var(--ground-2)}
.plate img{width:100%;height:auto}
.plate__tab{position:absolute;right:12px;bottom:12px;background:var(--accent);color:#fff;font-family:var(--display);font-weight:900;font-size:11px;letter-spacing:.14em;padding:6px 11px}
.plate__tab--teal{background:var(--secondary)}
.cap{margin-top:14px;display:grid;grid-template-columns:1fr minmax(0,220px);gap:16px 40px;align-items:start}
.cap p{font-size:18px;line-height:1.45}
.cap .credit{font-family:var(--display);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-quiet);line-height:1.5}
.band--teal .cap .credit,.band--ink .cap .credit{color:rgba(242,239,230,.6)}
/* bleed: full-measure band plate */
.fig-bleed{margin-block:clamp(28px,4vw,48px)}
.fig-bleed .cap{padding-inline:2px}
/* inset: column width, hanging caption with a rule */
.fig-inset{margin-block:34px}
.fig-inset img{border:1px solid var(--hair)}
.fig-inset figcaption{margin-top:12px;border-top:1px solid var(--ink);padding-top:10px;font-size:17px;line-height:1.45;color:var(--ink-soft)}
.fig-inset figcaption .credit{display:block;margin-top:6px;font-family:var(--display);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-quiet)}
/* offset: half-width inset, caption alongside */
.fig-offset{grid-column:2;display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:clamp(16px,2vw,26px);align-items:start;margin-block:clamp(26px,3vw,38px)}
.fig-offset img{border:2px solid var(--ink);width:100%}
.fig-offset figcaption{padding-left:16px;border-left:3px solid var(--accent);font-size:16px;line-height:1.45}
.fig-offset figcaption .credit{display:block;margin-top:7px;font-family:var(--display);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-quiet)}
.fig-offset--left{direction:rtl}
.fig-offset--left>*{direction:ltr}
.fig-offset--left figcaption{padding-left:0;padding-right:16px;border-left:0;border-right:3px solid var(--accent);text-align:right}
.figure-num{font-variant-numeric:tabular-nums}

/* ---------- the map ---------- */
.map-figure{margin-block:clamp(24px,3vw,40px)}
.map-figure__frame{border:2px solid var(--ink);background:var(--ground-2);padding:10px}
.map-figure svg{display:block;width:100%;height:auto}
.map-land{fill:var(--ink);stroke:var(--ground-2);stroke-width:.5}
.map-graticule{stroke:var(--accent);stroke-width:1;stroke-dasharray:7 7;opacity:.7}
.map-grat-label{font-family:var(--display);font-weight:700;font-size:13px;letter-spacing:.06em;fill:var(--accent);paint-order:stroke fill;stroke:var(--ground-2);stroke-width:4px;stroke-linejoin:round}
.map-pin{fill:var(--accent)}
.map-pin-ring{fill:none;stroke:var(--accent);stroke-width:2.4}
.map-leader{stroke:var(--ink);stroke-width:1.2}
.map-label{font-family:var(--display);font-weight:900;font-size:17px;letter-spacing:-.01em;fill:var(--ink);paint-order:stroke fill;stroke:var(--ground-2);stroke-width:5px;stroke-linejoin:round}
.map-label--sub{font-family:var(--display);font-weight:500;font-size:13px;font-variant-numeric:tabular-nums;fill:var(--accent);paint-order:stroke fill;stroke:var(--ground-2);stroke-width:4px;stroke-linejoin:round}

/* ---------- the register (homepage band + archive) ---------- */
.register{margin-top:2px}
.register__head,.register__row{display:grid;grid-template-columns:26px minmax(180px,24ch) minmax(0,1fr) 152px;gap:0 clamp(18px,2.4vw,32px);align-items:baseline;padding-left:18px}
.register__head{padding-block:10px;border-bottom:1px solid var(--hair);font-family:var(--display);font-weight:700;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-quiet)}
.register__row{padding-block:16px;padding-right:18px;border-bottom:1px solid var(--hair-2)}
.register__row:nth-child(even){background:var(--ground-2)}
.register__row .ico{color:var(--accent);align-self:start;margin-top:2px}
.register__title{font-family:var(--display);font-weight:700;font-size:clamp(19px,1.6vw,22px);line-height:1.15;letter-spacing:-.02em}
.register__trade{font-size:17px;line-height:1.45;color:var(--ink-soft)}
.register__sec{font-family:var(--display);font-weight:700;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-quiet)}
.register__row:hover .register__title{color:var(--accent)}

/* ---------- numeral band ---------- */
.numerals{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));border-top:1px solid rgba(242,239,230,.4);margin-top:32px}
.nm{display:flex;flex-direction:column;padding:20px 22px 20px 22px;border-right:1px solid rgba(242,239,230,.22)}
.nm:first-child{padding-left:0}
.nm:last-child{border-right:0;padding-right:0}
.nm__k{font-family:var(--display);font-weight:700;font-size:10px;letter-spacing:.18em;text-transform:uppercase;opacity:.6}
.nm b{font-family:var(--display);font-weight:900;font-size:clamp(40px,4.6vw,64px);line-height:.86;letter-spacing:-.055em;font-variant-numeric:tabular-nums;margin-top:6px}
.nm__count{font-family:var(--display);font-weight:700;font-size:clamp(17px,1.5vw,20px);font-variant-numeric:tabular-nums;margin-top:14px;color:var(--accent-lift);display:flex;align-items:baseline;gap:7px}
.nm__count em{font-family:var(--text);font-style:normal;font-weight:400;font-size:15px;color:rgba(242,239,230,.8)}
.nm__note{font-size:15px;line-height:1.35;opacity:.78;margin-top:5px}
.nm__bar{display:block;height:3px;width:var(--w);background:rgba(242,239,230,.92);margin-top:auto;margin-block-start:18px;min-width:8px}
.nm:last-child .nm__bar{background:var(--accent-lift)}

/* ---------- quiet line ---------- */
.quiet p{font-family:var(--text);font-weight:300;font-size:clamp(24px,3vw,36px);line-height:1.32;letter-spacing:-.01em;max-width:34ch}
.quiet .attrib{margin-top:20px;font-family:var(--display);font-weight:700;font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);display:inline-flex;gap:10px;align-items:center}

/* ---------- homepage feed + supporters rail ---------- */
.feedwrap{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:clamp(32px,4vw,64px);align-items:start;padding-block:clamp(40px,5vw,72px) clamp(28px,3vw,44px)}
.feed{display:flex;flex-direction:column;gap:clamp(32px,4.5vw,56px);min-width:0}
.duo{display:grid;grid-template-columns:1fr 1fr;gap:clamp(24px,3vw,40px);align-items:start}
.plate--even img{aspect-ratio:16/10;object-fit:cover}
.duo .cap{grid-template-columns:1fr;gap:8px}
.duo .cap .credit{margin-top:2px}
.supporters{border-top:3px solid var(--ink);padding-top:16px;position:sticky;top:12px}
.supporters h2{font-size:20px}
.supporters .kicker{margin-bottom:8px;display:block}
.supporters__note{font-size:15px;color:var(--ink-soft);margin-top:8px}
.sponsor-group{display:grid;grid-template-columns:repeat(auto-fit,260px);gap:14px;margin-top:16px;justify-content:start}
.sponsor-group--roll{padding-top:14px;border-top:1px solid var(--hair)}
.sponsor{display:block;width:260px}
.sponsor img{width:100%;height:52px;object-fit:contain;background:var(--ink);padding:8px 14px}
.sponsor .sponsor-name{display:block;margin-top:7px;font-family:var(--display);font-weight:700;font-size:13.5px}
.sponsor .sponsor-blurb{display:block;margin-top:3px;font-size:14.5px;line-height:1.35;color:var(--ink-soft)}
.sponsor.feat img{background:var(--ink);border-bottom:3px solid var(--accent)}
.sponsor:hover .sponsor-name{color:var(--accent)}

/* ---------- article ---------- */
.hero{position:relative;border-bottom:3px solid var(--ink);background:var(--ink)}
.hero img{width:100%;height:clamp(280px,46vh,520px);object-fit:cover}
.hero__tab{position:absolute;left:0;bottom:0;background:var(--accent);color:#fff;font-family:var(--display);font-weight:900;font-size:11px;letter-spacing:.14em;padding:8px 14px}
.article-head{padding-block:clamp(26px,3vw,40px);display:grid;grid-template-columns:minmax(0,1fr) minmax(0,400px);gap:clamp(18px,3vw,52px);align-items:start;border-bottom:1px solid var(--hair)}
.article-head h1{font-size:clamp(32px,4.4vw,56px);line-height:1;margin-top:-4px}
.article-head .lead{margin-top:2px}
.eyebrow{display:inline-flex;align-items:center;gap:10px;color:var(--accent);font-family:var(--display);font-weight:700;font-size:12px;letter-spacing:.16em;text-transform:uppercase;margin-bottom:12px}
.lead{font-family:var(--text);font-weight:300;font-size:clamp(20px,1.8vw,24px);line-height:1.45;color:var(--ink-soft)}
.article-head .hero-cap{font-family:var(--text);font-size:17px;line-height:1.45;color:var(--ink-soft);margin-top:18px;border-top:1px solid var(--ink);padding-top:10px}
.article-head .hero-credit{margin-top:7px;font-family:var(--display);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-quiet);line-height:1.5}
.prose{display:grid;grid-template-columns:1fr min(66ch,100%) 1fr;padding-inline:var(--gut);padding-bottom:clamp(30px,5vw,60px);counter-reset:sec}
.prose>*{grid-column:2}
.prose>.bleed{grid-column:1/-1}
.prose>.wide{grid-column:1/-1;width:min(1080px,100%);margin-inline:auto}
.prose p{font-size:20px;line-height:1.62;margin-top:19px}
.prose>h2{clear:both;counter-increment:sec;font-size:clamp(23px,2.2vw,30px);margin-top:clamp(40px,4.4vw,58px);letter-spacing:-.02em;padding-top:22px;border-top:1px solid var(--hair);display:grid;grid-template-columns:auto 1fr;gap:16px;align-items:baseline}
.prose>h2::before{content:counter(sec,decimal-leading-zero);font-size:13px;font-weight:900;letter-spacing:.06em;color:var(--accent);position:relative;top:-.35em}
.prose>h2::after{content:none}
.prose>h2+p{margin-top:14px;font-size:21px;color:var(--ink)}
.prose>p.opening{margin-top:22px}
.prose>p.opening::first-letter{float:left;font-family:var(--display);font-weight:900;font-size:4.05em;line-height:.78;padding:.06em .1em 0 0;margin-right:.02em;color:var(--accent)}
.prose>p+p{margin-top:17px}
.prose em{font-style:italic}
.prose a{border-bottom:1px solid var(--accent);color:var(--accent)}
.prose sup{font-size:.7em}
.clearfix::after{content:"";display:block;clear:both}

.entry-toc{margin-top:clamp(26px,3vw,38px);border-top:3px solid var(--ink);border-bottom:1px solid var(--hair);padding-block:14px 16px}
.entry-toc__k{font-family:var(--display);font-weight:700;font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-quiet)}
.entry-toc ol{margin-top:10px;display:grid;gap:2px}
.entry-toc a{display:grid;grid-template-columns:30px 1fr;gap:12px;align-items:baseline;padding-block:5px;font-family:var(--display);font-weight:700;font-size:16px;line-height:1.25}
.entry-toc b{font-size:12px;color:var(--accent)}
.entry-toc a:hover span{border-bottom:1px solid var(--accent)}

.prose>.bleed,.prose>.slab,.prose>.panel,.prose>.strip,.prose>.wide,.prose>.entry-toc{clear:both}

/* notes-for-design material: three distinct interruptions */
.slab{margin-block:clamp(34px,4.5vw,56px);padding:clamp(28px,3.5vw,48px) var(--gut)}
.slab--teal{background:var(--secondary);color:#F2EFE6}
.slab--teal .slab__title{color:#fff}
.slab__title{font-family:var(--display);font-weight:900;font-size:clamp(20px,2vw,26px);letter-spacing:-.02em}
.slab__k{font-family:var(--display);font-weight:700;font-size:11px;letter-spacing:.18em;text-transform:uppercase;opacity:.72;margin-bottom:10px}
.slab ol,.slab ul{margin-top:22px}
.slab--teal li{display:grid;grid-template-columns:52px 1fr;gap:18px;padding-block:14px;border-top:1px solid rgba(242,239,230,.28);font-size:18px;line-height:1.5}
.slab--teal li b{font-family:var(--display);font-weight:900;font-size:14px;color:var(--accent-lift)}
.panel{margin-block:34px;border:2px solid var(--ink);background:var(--ground-2);padding:clamp(20px,2.4vw,30px)}
.panel .slab__k{color:var(--accent);opacity:1}
.panel ul{margin-top:14px;columns:2;column-gap:36px}
.panel li{break-inside:avoid;padding-block:9px;border-top:1px solid var(--hair);font-size:17px;line-height:1.45}
.panel li b,.slab li b.fig,.strip li b{font-family:var(--display);font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.01em}
.num{font-family:var(--display);font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.005em;color:var(--accent)}
.slab--teal .num{color:var(--accent-lift)}
.strip .num{color:var(--accent-lift)}
.strip{margin-block:34px;background:var(--ink);color:var(--ground);padding:clamp(20px,2.4vw,28px)}
.strip .slab__k{color:var(--accent-lift);opacity:1}
.strip ul{margin-top:12px;display:flex;flex-wrap:wrap;gap:10px 28px}
.strip li{font-size:17px;line-height:1.4;flex:1 1 260px;padding-top:10px;border-top:1px solid rgba(237,231,220,.25)}

.article-foot{padding-block:clamp(34px,4.5vw,60px);border-top:3px solid var(--ink)}
.related-links{margin-top:14px}
.related-links li{border-top:1px solid var(--hair-2)}
.related-links li:first-child{border-top:1px solid var(--ink)}
.related-links a{display:flex;justify-content:space-between;gap:24px;align-items:baseline;padding-block:16px;font-family:var(--display);font-weight:700;font-size:clamp(19px,1.8vw,23px);letter-spacing:-.02em}
.related-links .rl-sec{font-family:var(--display);font-weight:400;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-quiet);flex:none}
.nextband{display:flex;flex-wrap:wrap;gap:16px 32px;align-items:center;justify-content:space-between;padding:clamp(22px,3vw,40px) var(--gut)}
.nextband span{font-family:var(--display);font-weight:900;font-size:clamp(20px,2.4vw,28px);letter-spacing:-.03em}

/* ---------- category + archive ---------- */
.cat-head{display:grid;grid-template-columns:150px minmax(0,1fr) minmax(0,400px);gap:clamp(20px,3vw,48px);align-items:start;padding-block:clamp(32px,4vw,56px)}
.cat-no{font-family:var(--display);font-weight:900;font-size:clamp(56px,8vw,104px);line-height:.8;letter-spacing:-.06em;color:var(--accent)}
.cat-head h1{font-size:clamp(32px,4.4vw,52px)}
.cat-list{border-top:3px solid var(--ink)}
.cat-list li{border-bottom:1px solid var(--hair-2)}
.cat-list li:nth-child(even){background:var(--ground-2)}
.cat-list a{display:grid;grid-template-columns:30px minmax(0,1fr) minmax(0,1.2fr);gap:0 24px;align-items:start;padding:22px 18px}
.cat-list .ico{color:var(--accent)}
.cat-list h3{font-family:var(--display);font-weight:700;font-size:clamp(20px,1.9vw,25px);letter-spacing:-.02em}
.cat-list p{font-size:17px;line-height:1.45;color:var(--ink-soft)}
.cat-list a:hover h3{color:var(--accent)}
.arch-sec{margin-top:clamp(30px,4vw,52px)}
.arch-sec h2{font-size:clamp(21px,2.2vw,26px);display:flex;align-items:center;gap:12px}
.arch-sec h2 .ico{color:var(--accent)}

/* ---------- footer ---------- */
.foot{background:var(--ink);color:var(--ground);padding-block:clamp(36px,5vw,60px)}
.foot__grid{display:grid;grid-template-columns:minmax(0,300px) minmax(0,1fr);gap:clamp(28px,4vw,72px)}
.foot__cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:24px 32px}
.foot h2{font-family:var(--display);font-weight:900;font-size:24px;letter-spacing:-.03em;text-transform:uppercase}
.foot p{font-size:16px;color:rgba(237,231,220,.72);margin-top:10px}
.foot a:hover{color:var(--accent-lift)}
.foot__col .kicker{color:rgba(237,231,220,.55);display:block;margin-bottom:9px;padding-bottom:8px;border-bottom:1px solid rgba(237,231,220,.22)}
.foot__col li+li{margin-top:6px}
.foot__col a{display:flex;align-items:center;gap:9px;font-size:16px}
.foot__col .ico{width:18px;height:18px;color:var(--accent-lift)}
.foot__end{margin-top:clamp(24px,3vw,40px);padding-top:16px;border-top:1px solid rgba(237,231,220,.22);display:flex;flex-wrap:wrap;gap:8px 28px;font-size:15px;color:rgba(237,231,220,.62)}

/* ---------- styleguide components ---------- */
.pullquote{margin:34px 0;border-top:3px solid var(--accent);border-bottom:1px solid var(--hair);padding-block:18px}
.pullquote p{font-family:var(--text);font-weight:300;font-size:clamp(22px,2.4vw,30px);line-height:1.3;margin:0}
.blockquote{margin:30px 0;padding-left:24px;border-left:3px solid var(--secondary)}
.blockquote p{font-size:19px;font-style:italic;margin:0}
.blockquote cite{display:block;margin-top:10px;font-family:var(--display);font-size:13px;font-style:normal;color:var(--ink-quiet)}
.callout{margin:30px 0;background:var(--ground-2);border-top:3px solid var(--secondary);padding:22px 24px}
.callout p{font-size:18px;margin:0}
.note{margin-top:18px;font-size:16px;color:var(--ink-soft);padding-left:16px;border-left:2px solid var(--hair)}
.versus,.datatable{width:100%;border-collapse:collapse;margin:28px 0;font-size:17px}
.versus th,.datatable th{font-family:var(--display);font-weight:700;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-quiet);text-align:left;padding:10px 14px 10px 0;border-bottom:1px solid var(--ink)}
.versus td,.datatable td{padding:14px 14px 14px 0;border-bottom:1px solid var(--hair-2);vertical-align:top;line-height:1.45}
.datatable tbody tr:nth-child(even),.versus tbody tr:nth-child(even){background:var(--ground-2)}
.statrow{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:0;margin:28px 0;border-top:1px solid var(--ink)}
.statblock{padding:18px 20px 18px 0;border-right:1px solid var(--hair-2)}
.statblock:last-child{border-right:0}
.stat-num{display:block;font-family:var(--display);font-weight:900;font-size:clamp(28px,3.4vw,44px);line-height:.9;letter-spacing:-.04em}
.stat-label{display:block;margin-top:10px;font-size:16px;color:var(--ink-soft)}
.timeline{margin:28px 0;border-top:1px solid var(--ink)}
.timeline li{display:grid;grid-template-columns:minmax(120px,240px) 1fr;gap:8px 28px;padding-block:14px;border-bottom:1px solid var(--hair-2)}
.t-when{font-family:var(--display);font-weight:700;font-size:15px;color:var(--accent);line-height:1.35}
.t-what{font-size:17px;line-height:1.45}
.chart{margin:28px 0}
.chart svg{width:100%;height:auto;overflow:visible}
.chart figcaption{margin-top:12px;font-size:16px;color:var(--ink-soft);border-top:1px solid var(--hair);padding-top:9px}
.article-figure{margin:30px 0}
.article-figure img{border:2px solid var(--ink)}
.article-figure figcaption{margin-top:12px;font-size:17px;line-height:1.45;border-top:1px solid var(--ink);padding-top:10px}
.article-figure figcaption .credit{display:block;margin-top:6px;font-family:var(--display);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-quiet)}
.gallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:18px;margin:28px 0}
.gallery figure{display:flex;flex-direction:column;height:100%}
.gallery img{aspect-ratio:16/10;object-fit:cover;border:1px solid var(--hair)}
.gallery figcaption{margin-top:9px;font-size:15px;color:var(--ink-soft)}
.profile-grid,.org-grid,.further-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:18px;margin:26px 0}
.profile-card{display:flex;flex-direction:column;background:var(--ground-2);border-top:3px solid var(--secondary);padding:20px}
.profile-card .p-photo{width:72px;height:72px;object-fit:cover;border-radius:50%;margin-bottom:14px}
.profile-card h3{font-family:var(--display);font-weight:700;font-size:20px;min-height:2.3em}
.profile-card .p-role{font-family:var(--display);font-size:13px;letter-spacing:.06em;text-transform:uppercase;color:var(--accent);margin-top:6px}
.profile-card p{font-size:16px;line-height:1.45;margin-top:10px}
.profile-card .p-links{margin-top:auto;padding-top:14px}
.org-card{display:flex;flex-direction:column;gap:8px;border:1px solid var(--hair);padding:16px;background:var(--ground)}
.org-logo{height:38px;width:auto;max-width:100%;object-fit:contain;background:var(--ink);padding:6px 10px}
.org-name{font-family:var(--display);font-weight:700;font-size:17px}
.org-host{font-size:14px;color:var(--ink-quiet)}
.entity-ref{border-bottom:1px solid var(--accent);color:var(--accent)}
.further-grid a{display:flex;align-items:flex-start;gap:12px;border-top:3px solid var(--ink);padding-top:14px;font-family:var(--display);font-weight:700;font-size:19px;line-height:1.2;min-height:5em}
.sg-block{padding-block:clamp(28px,4vw,48px);border-bottom:1px solid var(--hair)}
.sg-block>h2{font-size:clamp(22px,2.4vw,28px);margin-bottom:6px}
.sg-note{font-size:15px;color:var(--ink-quiet);font-family:var(--display)}
.sg-cols{display:grid;grid-template-columns:1fr;gap:0}
.swatches{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:18px;margin-top:20px}
.swatch b{display:block;height:64px;border:1px solid var(--hair)}
.swatch span{display:block;margin-top:8px;font-family:var(--display);font-size:13px}
.swatch em{display:block;font-size:14px;color:var(--ink-quiet);font-style:normal}

/* ---------- responsive ---------- */
@media (max-width:1080px){
  .numerals{grid-template-columns:repeat(3,minmax(0,1fr))}
  .nm{padding:18px 18px}
  .nm:nth-child(3n+1){padding-left:0}
  .nm:nth-child(3n){border-right:0;padding-right:0}
  .nm:nth-child(3){border-right:0}
  .nm:nth-child(n+4){border-top:1px solid rgba(242,239,230,.22)}
  .feedwrap{grid-template-columns:1fr}
  .supporters{position:static;order:2}
  .sponsor-group{grid-template-columns:repeat(auto-fit,260px)}
}
@media (max-width:900px){
  body{font-size:18px}
  .mast-link,.entry-toc a,.foot__col a,.nav__panel a,.quiet .attrib{min-height:44px;display:flex;align-items:center}
  .entry-toc a{display:grid;align-content:center}
  .cap .credit,.fig-inset figcaption .credit,.fig-offset figcaption .credit,.article-figure figcaption .credit,.article-head .hero-credit{font-size:12.5px;letter-spacing:.08em}
  .sponsor .sponsor-blurb{font-size:15.5px}
  .sponsor .sponsor-name{font-size:15px}
  .masthead__row{grid-template-columns:1fr;align-items:start;gap:12px}
  .masthead__row .mast-link{justify-self:start;padding-bottom:0}
  .strap{padding-bottom:0}
  .nav__list{justify-content:flex-start}
  .nav__panel{left:0;transform:none}
  .lead-feature{grid-template-columns:1fr}
  .lead-feature__media{min-height:280px;order:-1;position:relative;height:clamp(240px,42vh,380px)}
  .lead-feature__text{padding:32px var(--gut) 40px}
  .article-head{grid-template-columns:1fr}
  .cat-head{grid-template-columns:1fr}
  .register__head{display:none}
  .register__row{grid-template-columns:26px 1fr;gap:0 16px;row-gap:8px}
  .register__row .register__trade,.register__row .register__sec{grid-column:2}
  .cat-list a{grid-template-columns:26px 1fr;gap:0 16px;row-gap:6px}
  .cat-list p{grid-column:2}
  .duo{grid-template-columns:1fr}
  .foot__grid{grid-template-columns:1fr}
  .cap{grid-template-columns:1fr}
  .panel ul{columns:1}
  .prose p{font-size:19px}
}
@media (max-width:620px){
  .numerals{grid-template-columns:repeat(2,minmax(0,1fr))}
  .nm:nth-child(odd){padding-left:0}
  .nm:nth-child(2n){border-right:0;padding-right:0}
  .nm:nth-child(n+3){border-top:1px solid rgba(242,239,230,.22)}
  .fig-offset{float:none;width:100%;margin:24px 0}
  .timeline li{grid-template-columns:1fr}
  .versus,.datatable{font-size:16px}
  .sponsor,.sponsor-group{width:100%}
  .sponsor-group{grid-template-columns:1fr}
  .sponsor{width:100%}
}
@media print{.nav,.supporters{display:none}}

/* 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-mark-fit: width:100% + padding must not overflow the tile — but the declared
   HEIGHT is the mark's size and border-box alone steals the vertical padding from it.
   earlychristianireland declares height:66px with 10px top/bottom padding: border-box
   left a 46px mark and the operator read it as 'logos too small'. Keep the horizontal
   inset, drop the vertical padding, so the mark occupies the full height Design set. */
.sponsor img,.sponsor-box img,.sp-logo img{box-sizing:border-box!important;padding-top:0!important;padding-bottom:0!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}

/* 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-group .feat.sponsor.feat.sponsor img{box-sizing:border-box!important;padding:8px 14px!important}
.sponsor-group.sponsor-group--roll .sponsor.sponsor img{box-sizing:border-box!important;padding:8px 14px!important}

/* op-footer-compact: the footer printed 4 rows for 4 link(s) in
   1 list(s) — 873px at 390, 11% 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 873 -> 697px (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(6px,2.22vw,32px)!important;row-gap:6px!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 — 12 tiles,
   1745px at 390, 22% of the whole page. Two columns bring it to
   1054px (40% shorter). Checked before writing: no new overflow, smallest mark still
   165px wide, longest blurb 3 lines, tile heights 140-191px.
   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-group, .sponsor-group.sponsor-group--roll), 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-group{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;column-gap:14px!important}
    .sponsor-group > *{min-width:0!important;max-width:100%;width:auto!important;flex:0 1 auto!important}
    .sponsor-group > * *{min-width:0!important;max-width:100%}
    .sponsor-group img,.sponsor-group svg{max-width:100%;height:auto}
  .sponsor-group.sponsor-group--roll{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;column-gap:14px!important}
    .sponsor-group.sponsor-group--roll > *{min-width:0!important;max-width:100%;width:auto!important;flex:0 1 auto!important}
    .sponsor-group.sponsor-group--roll > * *{min-width:0!important;max-width:100%}
    .sponsor-group.sponsor-group--roll img,.sponsor-group.sponsor-group--roll svg{max-width:100%;height:auto}
  .sponsor-group .sponsor-blurb{display:-webkit-box!important;-webkit-line-clamp:3!important;-webkit-box-orient:vertical;overflow:hidden!important}
  .sponsor-group.sponsor-group--roll .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 627px (72 characters per line) at every desktop width. Operator: "it should utilize more space". Widened through grid track 2 of "1fr min(66ch, 100%) 1fr" (declared in .prose) 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 1024 changes. Originals: migration/_backups/article_width/. */
@media (min-width:1024px){
  div.prose.clearfix{grid-template-columns:1fr min(890px, 100%) 1fr!important}
}
@media (min-width:1600px){
  div.prose.clearfix{grid-template-columns:1fr min(clamp(890px, 61.806vw, 1068px), 100%) 1fr!important}
  div.prose.clearfix > :is(p:not([class])){font-size:clamp(20px,1.3889vw,24.0px)!important}
}
/* op-article-width:end */
/* op-heading-levels */
h2:where(.rt-h3){font-family: var(--display); font-weight: 900; letter-spacing: -0.025em; line-height: 1.03; margin: 0px;}
.cat-list h2:where(.rt-h3){font-family: var(--display); font-weight: 700; font-size: clamp(20px, 1.9vw, 25px); letter-spacing: -0.02em;}
.cat-list a:hover h2:where(.rt-h3){color: var(--accent);}
/* op-heading-levels:end */
@media (min-width:660px) and (max-width:1099px){.sponsor-group.sponsor-group:has(> [data-partner]){grid-template-columns:repeat(auto-fill,minmax(min(260px,calc(50% - 7px)),1fr))!important;justify-content:stretch!important}.sponsor-group.sponsor-group > [data-partner]{width:auto!important;max-width:none!important}}
