/* Macathconf \2014  "The Gazetteer" design system
   Deep ecclesiastical palette on warm parchment; Didone display, humanist serif body.
   FONTS: system-hosted stacks below. To vendor custom faces, drop WOFF2 files in /fonts
   and uncomment:
   @font-face{font-family:"MacathDisplay";src:url("fonts/display.woff2") format("woff2");font-display:swap}
   @font-face{font-family:"MacathText";src:url("fonts/text.woff2") format("woff2");font-display:swap}
*/
:root{
  --paper:#f2ecdd; --paper-2:#faf6ea; --paper-3:#efe7d5;
  --ink:#2b2620; --ink-2:#544e42; --faint:#8a8272;
  --line:#cfc4aa; --line-2:#d8cfb6;
  --accent:#6d2029; --accent-2:#8a2a35;
  --gold:#b08d3f; --gold-2:#d8b46a;
  --serif-display:"MacathDisplay",Didot,"Bodoni MT","Playfair Display",Georgia,serif;
  --serif-body:"MacathText","Iowan Old Style","Palatino Linotype",Palatino,Georgia,serif;
  --measure:72ch;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--serif-body);font-size:19px;line-height:1.7}
a{color:var(--accent);text-decoration:none}
a:hover{color:var(--accent-2);text-decoration:underline}
img{max-width:100%}
h1,h2,h3,h4{font-family:var(--serif-display);font-weight:500;line-height:1.15;text-wrap:balance}
.wrap{max-width:1440px;margin-inline:auto;padding-inline:clamp(16px,4vw,48px)}

/* ---------- chrome ---------- */
.topbar{border-bottom:1px solid var(--line);font-size:14.5px;color:var(--faint);background:var(--paper)}
.topbar .wrap{display:flex;justify-content:space-between;gap:16px;padding-block:9px;flex-wrap:wrap}
.topbar em{font-style:italic}
.masthead{text-align:center;padding:44px 16px 0;border-bottom:2px solid var(--ink)}
.masthead .kicker{font-size:13.5px;letter-spacing:.34em;color:var(--accent);text-transform:uppercase}
.masthead h1,.masthead .wordmark{margin:10px 0 0;font-family:var(--serif-display);font-size:clamp(44px,7vw,72px);font-weight:500;letter-spacing:.02em}
.masthead .wordmark a{color:var(--ink)}
.site-nav{display:flex;justify-content:center;flex-wrap:wrap;gap:10px 30px;margin-top:26px;padding:14px 10px;font-size:14.5px;letter-spacing:.13em;text-transform:uppercase;border-top:1px solid var(--line)}
.site-nav a{color:var(--ink)}
.site-nav a:hover{color:var(--accent)}
.site-head{border-bottom:2px solid var(--ink);background:var(--paper)}
.site-head .wrap{display:flex;align-items:center;justify-content:space-between;gap:18px;padding-block:16px;flex-wrap:wrap}
.site-head .wordmark{font-family:var(--serif-display);font-size:27px;letter-spacing:.02em}
.site-head .wordmark a{color:var(--ink)}
.site-head .site-nav{margin:0;padding:0;border:0;justify-content:flex-end;gap:8px 22px;font-size:13.5px}
.crumb{font-size:14px;letter-spacing:.18em;text-transform:uppercase;color:var(--faint)}
.crumb a{color:var(--accent)}

/* ---------- footer ---------- */
.site-foot{border-top:2px solid var(--ink);margin-top:72px;background:var(--paper)}
.site-foot .wrap{padding-block:34px;display:grid;grid-template-columns:1fr auto;gap:22px 48px;align-items:start}
.site-foot .wordmark{font-family:var(--serif-display);font-size:24px}
.site-foot .wordmark a{color:var(--ink)}
.site-foot .disclaimer{font-style:italic;color:var(--ink-2);max-width:56ch;margin-top:8px;font-size:15.5px}
.foot-nav{display:grid;grid-template-columns:repeat(2,auto);gap:6px 40px;font-size:15px}
.foot-nav a{color:var(--ink-2)}

/* ---------- article template ---------- */
.post-hero{border-bottom:1px solid var(--line);padding:52px 0 44px}
.post-hero .crumb{margin-bottom:16px}
.post-hero h1{margin:0;font-size:clamp(36px,4.6vw,58px);max-width:22ch}
.post-hero .lead{max-width:var(--measure)}
.post-meta{margin-top:20px;font-size:15.5px;letter-spacing:.06em;color:var(--faint)}
.post-meta b{color:var(--ink-2);font-weight:600}
.lead{font-size:23px;line-height:1.55;font-style:italic;color:var(--ink-2);margin:20px 0 0;text-wrap:pretty}
.hero-figure{margin:0;border-bottom:1px solid var(--line)}
.hero-figure img{width:100%;height:clamp(260px,46vw,560px);object-fit:cover;display:block}
.hero-figure figcaption{padding:10px clamp(16px,4vw,48px);font-size:14.5px;font-style:italic;color:var(--faint)}
.article-body{max-width:var(--measure);margin-inline:auto;padding-inline:clamp(18px,4vw,32px);counter-reset:sec}
.article-body>p{margin:0 0 1.35em;text-wrap:pretty}
.article-body h2{counter-increment:sec;font-size:clamp(27px,3vw,34px);margin:2.2em 0 .8em;padding-top:1.1em;border-top:1px solid var(--line)}
.article-body h2::before{content:counter(sec,upper-roman);display:block;font-size:17px;letter-spacing:.3em;color:var(--gold);margin-bottom:10px}
.article-body>p.opener::first-letter{float:left;font-family:var(--serif-display);font-size:74px;line-height:.78;padding:8px 12px 0 0;color:var(--accent)}
.article-body ul,.article-body ol{margin:0 0 1.35em;padding-left:1.3em}
.article-body li{margin-bottom:.5em}
.breakout{width:min(1100px,calc(100vw - 32px));margin-inline:calc((100% - min(1100px,100vw - 32px)) / 2)}

/* ---------- text components ---------- */
.pullquote{margin:2.4em 0;padding:2em 1em;border-top:3px double var(--gold);border-bottom:3px double var(--gold);background:transparent;text-align:center}
.pullquote p{margin:0 auto;max-width:26ch;font-family:var(--serif-display);font-size:clamp(25px,3vw,33px);line-height:1.35;color:var(--accent);text-wrap:balance}
.article-body .pullquote.breakout{padding:2.4em 1.5em;background:var(--paper-2)}
.blockquote{margin:2em 0;padding:.4em 0 .4em 1.4em;border-left:3px solid var(--accent)}
.blockquote p{margin:0;font-size:21px;font-style:italic;line-height:1.6}
.blockquote cite{display:block;margin-top:.7em;font-style:normal;font-size:15.5px;letter-spacing:.08em;color:var(--faint)}
.callout{margin:2em 0;padding:22px 26px;background:var(--paper-2);border:1px solid var(--line-2);border-top:3px solid var(--accent)}
.callout p{margin:0;font-size:18px;line-height:1.6}
.callout p+p{margin-top:.8em}
.note{margin:2em 0;padding:14px 18px;background:transparent;border:1px dashed var(--line);font-size:16.5px;font-style:italic;color:var(--ink-2)}

/* ---------- data components ---------- */
table{border-collapse:collapse;width:100%}
.versus{margin:2em 0;font-size:17px}
.versus caption{caption-side:top;text-align:left;font-size:13.5px;letter-spacing:.24em;text-transform:uppercase;color:var(--accent);padding-bottom:12px}
.versus th{font-family:var(--serif-display);font-size:20px;font-weight:500;text-align:left;padding:12px 14px;background:var(--ink);color:var(--paper)}
.versus th:first-child{background:transparent;color:var(--faint);font-size:14px;font-family:var(--serif-body);letter-spacing:.14em;text-transform:uppercase;vertical-align:bottom}
.versus td{padding:11px 14px;border-bottom:1px solid var(--line-2);vertical-align:top}
.versus td:first-child{font-size:14.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--faint);width:18%}
.datatable{margin:2em 0;font-size:17px}
.datatable caption{caption-side:top;text-align:left;font-size:13.5px;letter-spacing:.24em;text-transform:uppercase;color:var(--accent);padding-bottom:12px}
.datatable th{text-align:left;font-size:14px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2);border-bottom:2px solid var(--ink);padding:8px 14px 10px}
.datatable td{padding:11px 14px;border-bottom:1px solid var(--line-2);vertical-align:top}
.datatable tr:nth-child(even) td{background:var(--paper-2)}
.statrow{display:flex;flex-wrap:wrap;gap:16px;margin:2.2em 0}
.statblock{flex:1 1 150px;min-width:150px;border-top:2px solid var(--ink);padding:14px 4px 6px;display:flex;flex-direction:column;gap:6px}
.stat-num{font-family:var(--serif-display);font-size:clamp(30px,3.4vw,42px);line-height:1;color:var(--accent)}
.stat-label{font-size:15px;line-height:1.45;color:var(--ink-2)}
.timeline{list-style:none;margin:2.2em 0;padding:0;border-left:2px solid var(--gold)}
.timeline li{position:relative;display:grid;grid-template-columns:minmax(90px,max-content) 1fr;gap:6px 22px;padding:0 0 20px 26px}
.timeline li:last-child{padding-bottom:4px}
.timeline li::before{content:"";position:absolute;left:-6px;top:9px;width:10px;height:10px;background:var(--accent);border-radius:50%;box-shadow:0 0 0 3px var(--paper)}
.t-when{font-family:var(--serif-display);font-size:19px;color:var(--accent);max-width:220px}
.t-what{font-size:17.5px;line-height:1.55;color:var(--ink-2)}
.chart{margin:2.2em 0;padding:24px 24px 16px;background:var(--paper-2);border:1px solid var(--line-2)}
.chart svg{width:100%;height:auto;display:block}
.chart figcaption{margin-top:12px;font-size:15px;font-style:italic;color:var(--faint)}
.chart .axis{stroke:var(--line);stroke-width:1}
.chart .bar-rect{fill:var(--accent)}
.chart .bar-rect.alt{fill:var(--gold)}
.chart .lbl{font:15px var(--serif-body);fill:var(--ink-2)}
.chart .val{font:600 15px var(--serif-body);fill:var(--ink)}
.chart .lineseries{fill:none;stroke:var(--accent);stroke-width:2.5}
.chart .dot{fill:var(--gold)}

/* ---------- media ---------- */
.article-figure{margin:2.2em 0}
.article-figure img{width:100%;display:block;border:1px solid var(--line-2)}
.article-figure figcaption{margin-top:10px;font-size:15px;font-style:italic;color:var(--faint)}
.gallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:18px;margin:2.2em 0}
.gallery figure{margin:0}
.gallery img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block;border:1px solid var(--line-2)}
.gallery figcaption{margin-top:8px;font-size:14.5px;font-style:italic;color:var(--faint)}
.map-figure{margin:2.2em 0;background:#e7e0cd;border:1px solid var(--line);position:relative}
.map-slot{min-height:380px}
.map-figure figcaption{padding:12px 18px;font-size:15px;font-style:italic;color:var(--ink-2);border-top:1px solid var(--line)}
.map-figure .map-slot:empty::after{content:none;position:absolute;inset:18px;bottom:64px;border:2px dashed #b3a888;display:flex;align-items:center;justify-content:center;color:var(--faint);font-style:italic;font-size:15px;text-align:center;padding:12px}

/* ---------- live map (map.js + map-geo.json + map-churches.json) ---------- */
.map-svg{display:block;width:100%;height:100%}
.map-slot .map-svg{position:absolute;inset:0}
.map-figure:not(.hero-map) .map-slot{position:relative}
.map-land{fill:#ded5bc;stroke:var(--ink);stroke-width:1.2;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.map-route{fill:none;stroke:var(--accent);stroke-width:2.5;stroke-dasharray:7 6;stroke-linecap:round;vector-effect:non-scaling-stroke}
.map-pin{cursor:pointer;outline:none}
.pin-dot{fill:var(--accent);stroke:var(--paper-2)}
.pin-halo{fill:transparent}
.map-pin:hover .pin-dot,.map-pin:focus-visible .pin-dot{fill:var(--gold)}
.map-pin.selected .pin-dot{fill:var(--ink);stroke:var(--gold-2)}
.map-pin:focus-visible .pin-halo{stroke:var(--gold);stroke-width:2;fill:none;vector-effect:non-scaling-stroke}
.pin-label{font-family:var(--serif-body);fill:var(--ink);opacity:0;pointer-events:none;paint-order:stroke;stroke:var(--paper-2);stroke-width:3px;stroke-linejoin:round;transition:opacity .25s ease}
.map-pin:hover .pin-label,.map-pin:focus-visible .pin-label,.map-pin.selected .pin-label,.map-svg.labels-on .pin-label{opacity:1}
.map-city{pointer-events:none}
.city-mark{fill:none;stroke:var(--faint);stroke-width:1.4;vector-effect:non-scaling-stroke;transform:rotate(45deg);transform-box:fill-box;transform-origin:center}
.city-label{font-family:var(--serif-body);fill:var(--faint);letter-spacing:.18em;text-anchor:middle}
.map-svg.zoomed{cursor:grab}
.map-svg.zoomed:active{cursor:grabbing}
.map-controls{position:absolute;top:14px;left:14px;display:flex;flex-direction:column;gap:0;border:1px solid var(--ink);background:var(--paper-2);z-index:2}
.map-controls button{font:19px/1 var(--serif-body);width:34px;height:34px;border:0;background:transparent;color:var(--ink);cursor:pointer;padding:0}
.map-controls button+button{border-top:1px solid var(--line)}
.map-controls button:hover{background:var(--ink);color:var(--paper)}
.map-pin.pin-dim{pointer-events:none}
.map-pin.pin-dim .pin-dot{fill:#c3b795;stroke:var(--paper-2);opacity:.55}
.map-pin.pin-dim .pin-label{opacity:0 !important}
.map-filterbar{position:absolute;top:14px;right:14px;display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px;max-width:calc(100% - 400px);z-index:2}
@media (max-width:1080px){.map-filterbar{max-width:calc(100% - 90px)}}
.map-filterbar button{font:13px var(--serif-body);border:1px solid #b3a888;background:rgba(250,246,234,.85);color:var(--ink);padding:5px 11px;cursor:pointer}
.map-filterbar button:hover{border-color:var(--ink)}
.map-filterbar button.chip-on{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.map-scalebar{position:absolute;left:14px;bottom:14px;display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--ink-2);z-index:2;background:rgba(250,246,234,.75);padding:3px 8px}
.map-scalebar .sb-rule{display:inline-block;height:0;border-bottom:2px solid var(--ink);border-left:2px solid var(--ink);border-right:2px solid var(--ink);height:6px;transition:width .2s ease}

.pin-card-mini{position:absolute;right:16px;bottom:16px;width:270px;background:var(--paper-2);border:1px solid var(--ink);box-shadow:5px 5px 0 rgba(43,38,32,.14)}
.pin-card-mini .pc-body{padding:14px 16px 15px}
.pin-card-mini .pc-kicker{font-size:11.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--accent);margin:0 0 5px}
.pin-card-mini .pc-title{font-family:var(--serif-display);font-size:18px;line-height:1.25;margin:0}
.pin-card-mini .pc-note{margin:7px 0 8px;font-size:14px;line-height:1.5;color:var(--ink-2)}
.pin-card-mini .pc-link{font-size:12.5px;letter-spacing:.12em}
.pc-flash{animation:pcflash .35s ease}
@keyframes pcflash{from{transform:translateY(4px);opacity:.4}to{transform:none;opacity:1}}
@media (max-width:760px){
  .pin-card-mini{position:static;width:auto;margin:12px;box-shadow:none}
}

/* ---------- cards / references ---------- */
.profile-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:18px;margin:2.2em 0}
.profile-card{background:var(--paper-2);border:1px solid var(--line-2);padding:22px;display:flex;flex-direction:column;gap:8px}
.profile-card .p-photo{width:76px;height:76px;object-fit:cover;border-radius:50%;border:1px solid var(--line)}
.profile-card.no-photo::before{content:"\2767 ";font-family:var(--serif-display);font-size:34px;line-height:1;color:var(--gold)}
.profile-card h3{margin:2px 0 0;font-size:22px}
.profile-card .p-role{margin:0;font-size:14px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent)}
.profile-card p{margin:0;font-size:16.5px;line-height:1.55;color:var(--ink-2)}
.profile-card .p-links{font-size:15.5px}
.profile-card .p-attr{font-size:13.5px;color:var(--faint);font-style:italic}
.org-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px;margin:2.2em 0}
.org-card{display:flex;align-items:center;gap:14px;background:var(--paper-2);border:1px solid var(--line-2);padding:14px 16px;color:var(--ink)}
.org-card:hover{border-color:var(--accent);text-decoration:none}
.org-card .org-logo{width:64px;height:40px;object-fit:contain;background:var(--ink);padding:6px;flex:none}
.org-card.no-logo::before{content:"\25C6 ";color:var(--gold);font-size:20px}
.org-card .org-name{font-family:var(--serif-display);font-size:18px;line-height:1.25}
.org-card .org-host{margin-left:auto;font-size:13.5px;color:var(--faint);white-space:nowrap}
.entity-ref{border-bottom:1px dotted var(--gold);padding-bottom:1px;white-space:nowrap}
.further-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;margin:2.2em 0}
.further-grid a{display:flex;flex-direction:column;gap:6px;background:var(--paper-2);border:1px solid var(--line-2);border-top:2px solid var(--ink);padding:18px 20px;color:var(--ink);font-family:var(--serif-display);font-size:19px;line-height:1.3}
.further-grid a:hover{border-top-color:var(--accent);text-decoration:none;color:var(--accent)}
.further-grid .fg-kicker{font-family:var(--serif-body);font-size:12.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--accent)}
.related{max-width:var(--measure);margin:56px auto 0;padding-inline:clamp(18px,4vw,32px)}
.related h2{font-size:24px;border-top:2px solid var(--ink);padding-top:18px;margin:0 0 14px}
.related-links{list-style:none;margin:0;padding:0}
.related-links li{border-bottom:1px dotted var(--line);padding:12px 2px}
.related-links a{font-family:var(--serif-display);font-size:20px}
.related-links .rl-meta{display:block;font-size:14.5px;color:var(--faint);margin-top:3px;letter-spacing:.06em}

/* ---------- sponsors: the patrons' band ---------- */
.patrons{border-top:2px solid var(--ink);border-bottom:2px solid var(--ink);background:var(--ink);color:var(--paper);padding:56px 0 60px;margin-top:72px}
.patrons .p-head{text-align:center;margin-bottom:34px}
.patrons .p-kicker{font-size:13px;letter-spacing:.3em;text-transform:uppercase;color:var(--gold-2)}
.patrons .p-line{margin:10px auto 0;max-width:64ch;font-size:17.5px;font-style:italic;color:#d9d0bc}
.patron-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:16px}
@media (max-width:1080px){.patron-grid{grid-template-columns:repeat(3,1fr)}}
@media (max-width:640px){.patron-grid{grid-template-columns:repeat(2,1fr)}}
.sponsor{display:flex;flex-direction:column;gap:10px;background:var(--paper-2);border:1px solid var(--line-2);padding:12px;color:var(--ink-2)}
.sponsor:hover{border-color:var(--gold);text-decoration:none}
.sponsor img{width:100%;height:54px;object-fit:contain;background:var(--ink);padding:9px 14px;display:block}
.sponsor-name{font-family:var(--serif-display);font-size:16.5px;line-height:1.2;color:var(--ink)}
.sponsor-blurb{font-size:14px;line-height:1.5;font-style:italic;min-height:2.9em;text-wrap:pretty}
/* principal patrons \2014  first three slots promoted, sharing the top row */
.patron-lead-row{grid-column:1/-1;display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.patron-lead-row .sponsor{position:relative;padding:36px 18px 16px;border:1px solid var(--gold);outline:1px solid var(--gold);outline-offset:4px;margin:4px}
.patron-lead-row .sponsor::before{content:"Principal patron";position:absolute;top:11px;left:18px;font-size:11px;letter-spacing:.26em;text-transform:uppercase;font-style:normal;color:var(--accent)}
.patron-lead-row .sponsor img{height:68px}
.patron-lead-row .sponsor .sponsor-name{font-size:19px;text-align:center}
.patron-lead-row .sponsor .sponsor-blurb{font-size:15.5px;text-align:center}
@media (max-width:900px){.patron-lead-row{grid-template-columns:1fr}}

/* ---------- homepage ---------- */
.map-hero{border-bottom:1px solid var(--line)}
.map-hero .wrap{display:grid;grid-template-columns:360px 1fr;gap:0}
.hero-rail{padding:44px 36px 44px 0;border-right:1px solid var(--line)}
.hero-rail h2{margin:0 0 14px;font-size:clamp(28px,2.6vw,36px);line-height:1.18}
.hero-rail .rail-intro{margin:0 0 26px;font-size:17px;line-height:1.65;color:var(--ink-2);text-wrap:pretty}
.rail-label{font-size:12.5px;letter-spacing:.24em;text-transform:uppercase;color:var(--accent);margin:26px 0 12px}
.rail-list{display:flex;flex-direction:column;gap:0;font-size:16.5px}
.rail-list a{display:flex;justify-content:space-between;gap:12px;color:var(--ink);border-bottom:1px dotted var(--line);padding:8px 2px}
.rail-list a:hover{color:var(--accent);text-decoration:none}
.rail-list .count{color:var(--faint)}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chips a{border:1px solid #b3a888;padding:6px 13px;font-size:14px;color:var(--ink)}
.chips a:hover{background:var(--ink);color:var(--paper);border-color:var(--ink);text-decoration:none}
.chips a.chip-on{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.hero-map{margin:0;position:relative;background:#e7e0cd;min-height:600px}
.hero-map .map-slot{position:absolute;inset:0;min-height:0}
.hero-map .map-slot:empty::after{content:none;position:absolute;inset:24px;bottom:24px;border:2px dashed #b3a888;display:flex;align-items:center;justify-content:center;color:var(--faint);font-style:italic;font-size:16px;text-align:center;padding:20px}
.hero-map .map-caption{position:absolute;left:14px;bottom:48px;font-size:15px;font-style:italic;color:var(--faint);background:rgba(250,246,234,.75);padding:2px 8px}
.pin-card{position:absolute;right:36px;bottom:36px;width:300px;background:var(--paper-2);border:1px solid var(--ink);box-shadow:6px 6px 0 rgba(43,38,32,.14)}
.pin-card img{width:100%;height:132px;object-fit:cover;display:block}
.pin-card .pc-body{padding:16px 18px 18px}
.pin-card .pc-kicker{font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:var(--accent);margin-bottom:6px}
.pin-card .pc-title{font-family:var(--serif-display);font-size:20px;line-height:1.25}
.pin-card p{margin:8px 0 10px;font-size:15px;line-height:1.55;color:var(--ink-2)}
.pin-card .pc-link{font-size:13.5px;letter-spacing:.12em}
.home-section{padding:52px 0 8px;border-bottom:1px solid var(--line)}
.home-section .sec-head{display:flex;align-items:baseline;justify-content:space-between;gap:18px;flex-wrap:wrap;margin-bottom:8px}
.home-section .sec-head h2{margin:0;font-size:clamp(26px,2.8vw,34px)}
.home-section .sec-blurb{margin:6px 0 26px;font-size:17px;font-style:italic;color:var(--ink-2)}
.sec-link{font-size:14px;letter-spacing:.14em;text-transform:uppercase;white-space:nowrap}
.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:26px;padding-bottom:44px}
.g-card{display:flex;flex-direction:column;background:var(--paper-2);border:1px solid var(--line-2);color:var(--ink)}
.g-card:hover{text-decoration:none;border-color:var(--accent)}
.g-card img{width:100%;aspect-ratio:16/10;object-fit:cover;display:block;border-bottom:1px solid var(--line-2)}
.g-card .gc-body{display:flex;flex-direction:column;flex:1;padding:18px 20px 20px;gap:8px}
.g-card .gc-kicker{font-size:12.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--accent)}
.g-card h3{margin:0;font-size:22px;line-height:1.25;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:2.5em}
.g-card p{margin:0;font-size:15.5px;line-height:1.55;color:var(--ink-2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.g-card .gc-meta{margin-top:auto;padding-top:12px;font-size:14px;letter-spacing:.06em;color:var(--faint)}
.more-toggle{display:none}
.more-cards{display:none}
.more-toggle:checked~.card-grid .more-cards{display:flex}
.more-label{display:inline-block;border:1px solid var(--ink);padding:10px 22px;font-size:14px;letter-spacing:.16em;text-transform:uppercase;cursor:pointer;margin-bottom:48px}
.more-label:hover{background:var(--ink);color:var(--paper)}
.more-toggle:checked~.more-label{display:none}
.register{padding:44px 0 52px;border-bottom:1px solid var(--line)}
.register .rail-label{margin-top:0}
.register-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:24px}
.register-strip a{display:flex;gap:16px;align-items:flex-start;border-top:2px solid var(--ink);padding-top:14px;color:var(--ink)}
.register-strip a:hover{text-decoration:none;color:var(--accent)}
.register-strip .rn{font-family:var(--serif-display);font-size:30px;color:#b3a888;line-height:1.05}
.register-strip .rt{font-size:17px;line-height:1.4;font-family:var(--serif-display)}
.register-strip .rt em{display:block;font-family:var(--serif-body);font-size:14px;color:var(--faint);margin-top:4px;font-style:italic}
.story-band{background:var(--accent);color:var(--paper)}
.story-band .wrap{display:grid;grid-template-columns:1fr 1fr;gap:44px;align-items:center;padding-block:52px}
.story-band .rail-label{color:var(--gold-2);margin-top:0}
.story-band h2{margin:0 0 12px;font-size:clamp(26px,3vw,34px);line-height:1.2}
.story-band p{margin:0 0 16px;font-size:17px;line-height:1.7;color:#e8d9c2;text-wrap:pretty}
.story-band .chapter-links{display:flex;flex-wrap:wrap;gap:8px 18px;font-size:14.5px;margin-bottom:18px}
.story-band .chapter-links a{color:var(--gold-2)}
.story-band .band-link{color:var(--gold-2);font-size:13.5px;letter-spacing:.16em}
.story-band .band-photo{margin:0;height:300px;overflow:hidden;border:1px solid rgba(242,236,221,.35)}
.story-band .band-photo img{width:100%;height:100%;object-fit:cover;display:block}

/* ---------- category pages ---------- */
.cat-hero{padding:56px 0 40px;border-bottom:1px solid var(--line)}
.cat-hero h1{margin:8px 0 0;font-size:clamp(36px,4.4vw,54px)}
.cat-hero .lead{max-width:60ch}
.cat-list{list-style:none;margin:0;padding:0;max-width:1000px}
.cat-list li{border-bottom:1px solid var(--line-2)}
.cat-list a{display:grid;grid-template-columns:minmax(64px,max-content) 1fr auto;gap:8px 26px;align-items:baseline;padding:24px 4px;color:var(--ink)}
.cat-list a:hover{text-decoration:none}
.cat-list a:hover .cl-title{color:var(--accent)}
.cat-list .cl-num{font-family:var(--serif-display);font-size:26px;color:#b3a888}
.cat-list .cl-title{font-family:var(--serif-display);font-size:clamp(22px,2.4vw,27px);line-height:1.25}
.cat-list .cl-brief{grid-column:2;margin:0;font-size:16px;color:var(--ink-2);line-height:1.55}
.cat-list .cl-meta{font-size:14px;color:var(--faint);letter-spacing:.06em;white-space:nowrap}

/* ---------- misc pages ---------- */
.page-body{max-width:var(--measure);margin-inline:auto;padding:48px clamp(18px,4vw,32px) 0}
.page-body h1{font-size:clamp(36px,4.4vw,52px);margin:0 0 14px}
.page-body h2{font-size:28px;margin:1.8em 0 .6em}
.contact-form{display:grid;gap:16px;margin:28px 0;max-width:560px}
.contact-form label{display:flex;flex-direction:column;gap:6px;font-size:14.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2)}
.contact-form input,.contact-form textarea{font:17px var(--serif-body);padding:12px 14px;border:1px solid var(--line);background:var(--paper-2);color:var(--ink)}
.contact-form input:focus,.contact-form textarea:focus{outline:2px solid var(--gold);outline-offset:1px}
.contact-form button{justify-self:start;font:15px var(--serif-body);letter-spacing:.18em;text-transform:uppercase;background:var(--accent);color:var(--paper);border:0;padding:14px 30px;cursor:pointer}
.contact-form button:hover{background:var(--accent-2)}
.icon{width:1.1em;height:1.1em;vertical-align:-.18em;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}

/* ---------- reveal motion (quiet) ---------- */
@media (prefers-reduced-motion:no-preference){
  .reveal{opacity:0;transform:translateY(14px);transition:opacity .7s ease,transform .7s ease}
  .reveal.in{opacity:1;transform:none}
}

/* ---------- responsive ---------- */
@media (max-width:1080px){
  .map-hero .wrap{grid-template-columns:1fr}
  .hero-rail{border-right:0;border-bottom:1px solid var(--line);padding:38px 0 30px}
  .hero-map{min-height:480px;margin-inline:calc(clamp(16px,4vw,48px) * -1)}
}
@media (max-width:760px){
  body{font-size:18px}
  .story-band .wrap{grid-template-columns:1fr}
  .story-band .band-photo{height:220px}
  .site-foot .wrap{grid-template-columns:1fr}
  .pin-card{position:static;width:auto;margin:14px;box-shadow:none}
  .hero-map{min-height:0;padding-top:340px}
  .hero-map .map-slot{height:340px;inset:0 0 auto}
  .hero-map .map-slot:empty::after{inset:16px;bottom:16px}
  .hero-map .map-caption{position:static;display:block;padding:0 16px 14px}
  .timeline li{grid-template-columns:1fr;gap:2px 0}
  .cat-list a{grid-template-columns:1fr;gap:4px}
  .cat-list .cl-brief{grid-column:1}
  .versus{display:block;overflow-x:auto}
  .datatable{display:block;overflow-x:auto}
}

/* op-nav-collapse: this nav printed 192px of stacked links at 390 before any content
   (6 links), and the build shipped no control to close it. A disclosure cannot be
   built from CSS alone — :hover and :focus-within are unreachable on touch until a link has
   already been tapped — so a hidden checkbox and its label were injected immediately before
   the nav, and the nav collapses against the checked state. Exactly the mechanism the builds
   that DO have a burger already use.
   Treatment "rule-flank", seeded from the domain so 175 builds do not all ship the
   same hairline box in the same place; it inherits this build's font and colour, and where the
   nav's own parent has no inline padding (16px measured) the button carries the build's
   gutter (clamp(16px,4vw,48px)) so it cannot sit against the glass. The links are hidden,
   not removed: they stay in the markup. Desktop is untouched — every rule below is inside the
   phone breakpoint (900px here), where the button appears and the nav starts closed.
   Folded with the "max-height" technique and marked with the "plus" icon — the mechanism
   is deliberately not identical across the fleet either. */
.nav-disclose{display:none}
@media (max-width:900px){
  .nav-disclose{align-items:center;justify-content:center;gap:9px;font:inherit;font-weight:600;font-size:13px;letter-spacing:.1em;text-transform:uppercase;color:inherit;cursor:pointer;min-height:44px;box-sizing:border-box;display:flex;width:auto;border:0;padding:10px 0;letter-spacing:.18em;margin-block:clamp(16px,4.5vw,26px) clamp(12px,3vw,18px)}
  .nav-disclose::before,.nav-disclose::after{content:"";flex:1 1 auto;height:1px;background:currentColor;opacity:.4}
  .nav-disclose-bars{width:11px;height:11px;flex:none;position:relative;border-top:1.5px solid currentColor;margin-top:-1px;box-shadow:inset 5px 0 0 -3.75px currentColor}
  .site-nav.wrap{max-height:0;overflow:hidden;padding-block:0;border-top-width:0;border-bottom-width:0;transition:max-height .28s ease}
  .nav-disclose-c:checked ~ .site-nav.wrap{max-height:220vh;padding-block:revert;border-top-width:revert;border-bottom-width:revert}
  .masthead:has(> .nav-disclose){display:flow-root}
  .nav-disclose:not(:has(~ .site-nav.wrap)){display:none}
}

/* op-money-columns: the supporters block ran one tile per row — 13 tiles,
   2545px at 390, 31% of the whole page. Two columns bring it to
   2074px (19% shorter). Checked before writing: no new overflow, smallest mark still
   125px wide, longest blurb 4 lines, tile heights 204-235px.
   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 (.patron-lead-row), 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){
  .patron-lead-row{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;column-gap:16px!important}
    .patron-lead-row > *{min-width:0!important;max-width:100%;width:auto!important;flex:0 1 auto!important}
    .patron-lead-row > * *{min-width:0!important;max-width:100%}
    .patron-lead-row img,.patron-lead-row svg{max-width:100%;height:auto}
  .patron-lead-row .sponsor-blurb{display:-webkit-box!important;-webkit-line-clamp:3!important;-webkit-box-orient:vertical;overflow:hidden!important}
}

/* op-blurb-rows: money blurbs ran to 4 rows at 390, 1597px of tier across
   13 tiles. Operator: blurbs should show "2-3 rows max" on mobile —
   a blurb that long eats the screen and, in a two-column grid, rewraps into more height than
   the columns save. Held to three rows at phone width; the copy stays in the markup and
   desktop is untouched. Only the tier(s) measured past three rows are clamped. */
@media (max-width:640px){
  .patron-grid .sponsor-blurb{display:-webkit-box!important;-webkit-line-clamp:3!important;-webkit-box-orient:vertical;max-height:63px!important;min-height:0!important;overflow:hidden!important}
}

/* op-article-width: the article column was capped at 697px (81 characters per line) at every desktop width. Operator: "it should utilize more space". Widened through Design's own measure --measure (declared in .article-body) 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){
  article.article-body{--measure:min(88.862ch, 100%)!important}
}
@media (min-width:1600px){
  article.article-body{--measure:min(clamp(88.862ch, 65.208vw, calc(88.862ch * 1.2)), 100%)!important}
  article.article-body > :is(p, p:not([class])), article.article-body > :is(ol.timeline) > li{font-size:clamp(19px,1.3194vw,22.8px)!important}
}
/* op-article-width:end */

/* op-odd-tier-lead: .patron-lead-row (3 principal patrons) was put two per row on phones by op-money-columns
   above, with an ODD count — the third patron ended alone beside an empty cell. The lead takes the whole row,
   then the pair (operator: "the 1st item in such rows to be 100% width, then split"). Parity-guarded.
   And the "Principal patron" kicker is pinned (position:absolute) over a 36px top padding sized for ONE line:
   in a half-width tile it wraps to two and ran over the brand name — on phones it sits in the flow instead,
   above the name. */
@media (max-width:640px){
  .patron-lead-row:has(> *:nth-child(odd):last-child) > *:first-child{grid-column:1 / -1!important}
  .patron-lead-row .sponsor{padding-top:14px!important}
  .patron-lead-row .sponsor::before{position:static!important;display:block!important;margin:0 0 8px!important;line-height:1.35!important}
  /* the patrons' blurbs are set larger (15.5px) than the regulars the 63px three-row cap was measured on —
     their third row was sliced; the -webkit-line-clamp above already holds them to three rows */
  .patron-grid .patron-lead-row .sponsor-blurb{max-height:none!important}
}
/* op-odd-tier-lead:end */

/* op-img-dims — intrinsic width/height reserve image space; the proven height:auto guard (zero specificity) */
:where(article.article-body > figure.article-figure > img,
  div.card-grid > a.g-card > img,
  div.card-grid > a.g-card.more-cards > img,
  div.org-grid > a.org-card > img.org-logo,
  div.wrap > figure.band-photo > img,
  figure.hero-map.map-figure > div.pin-card > img,
  main > figure.hero-figure > img){height:auto}
/* op-img-dims:end */
@media (min-width:721px) and (max-width:1339px){.pullquote.breakout{position:relative!important;left:50%!important;transform:translateX(-50%)!important}}
@media (min-width:700px) and (max-width:919px){.patron-lead-row:has(> [data-partner]){display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:var(--sp-gap,16px)}.patron-lead-row:has(> [data-partner]) > [data-partner]{width:auto!important;max-width:none!important;min-width:0!important;margin-left:0!important;margin-right:0!important}.patron-lead-row:has(> [data-partner]) > [data-partner]:nth-child(odd of [data-partner]):nth-last-child(1 of [data-partner]){grid-column:1/-1!important;flex-basis:100%!important;max-width:none!important}}
