/* PHILLY ITALIAN MARKET — 1a INSEGNA · chalkboard slab signage, tricolor accents on warm charcoal */
:root{
  --paper:#28241e; --paper-deep:#1f1c17; --card:#2f2a23; --card-up:#363026;
  --ink:#efe8d9; --ink-dim:rgba(239,232,217,.74); --ink-faint:rgba(239,232,217,.5);
  --tomato:#e2402a; --tomato-deep:#c33520; --basil:#8bbd67; --basil-deep:#4c7a3a;
  --cream:#f2e6cf; --rule:rgba(239,232,217,.16); --rule-strong:rgba(239,232,217,.3);
  --slab:'Rockwell Nova','Rockwell','Roboto Slab','Zilla Slab','Bookman Old Style',Georgia,serif;
  --script:'Snell Roundhand','Segoe Script','Bradley Hand','Brush Script MT',cursive;
  --body:Georgia,'Iowan Old Style','Times New Roman',serif;
  --ui:'Avenir Next','Segoe UI','Helvetica Neue',Arial,sans-serif;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:
  radial-gradient(1400px 600px at 50% -8%,#332e26 0%,var(--paper) 55%,var(--paper-deep) 100%) fixed,
  var(--paper);
  color:var(--ink);font-family:var(--body);font-size:19px;line-height:1.7;-webkit-font-smoothing:antialiased}
a{color:var(--basil);text-decoration:none}
a:hover{color:var(--cream);text-decoration:underline;text-decoration-color:var(--tomato);text-underline-offset:4px}
img{max-width:100%;display:block}
.wrap{width:min(1360px,100% - 48px);margin-inline:auto}
.kicker{font-family:var(--script);font-size:1.6rem;color:var(--basil);transform:rotate(-1.6deg);display:inline-block;line-height:1.2}
.kicker.red{color:var(--tomato)}
.slab{font-family:var(--slab);font-weight:800;letter-spacing:.02em;line-height:1.06}
.tally{height:8px;border:0;margin:0;background:repeating-linear-gradient(90deg,var(--tomato) 0 56px,transparent 56px 64px,var(--basil) 64px 120px,transparent 120px 128px);background-color:transparent}
.chip{display:inline-block;border:1.5px solid var(--rule-strong);color:var(--ink);border-radius:999px;padding:.42em 1em;font-family:var(--ui);font-size:.82rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase}
.chip.red{border-color:var(--tomato);color:var(--tomato)}
.chip.green{border-color:var(--basil-deep);color:var(--basil);background:rgba(139,189,103,.09)}
.icon{width:1.05em;height:1.05em;vertical-align:-.16em;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}

/* ---------- header ---------- */
.site-head{position:sticky;top:0;z-index:60;background:rgba(31,28,23,.94);border-bottom:3px double var(--rule-strong);backdrop-filter:blur(6px)}
.site-head .wrap{display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:64px}
.brand{font-family:var(--slab);font-weight:800;font-size:1.25rem;letter-spacing:.04em;color:var(--ink);white-space:nowrap}
.brand:hover{text-decoration:none;color:var(--ink)}
.brand b{color:var(--tomato);font-weight:800}
.nav{display:flex;align-items:center;gap:4px;font-family:var(--ui)}
.nav>li{list-style:none;position:relative}
.nav{margin:0;padding:0}
.nav a{display:block;white-space:nowrap;padding:20px 14px;color:var(--ink-dim);font-size:.86rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase}
.nav a:hover{color:var(--cream);text-decoration:none}
.nav .find a{color:var(--basil)}
.nav .sub{position:absolute;left:0;top:100%;min-width:280px;background:var(--paper-deep);border:1.5px solid var(--rule-strong);border-top:3px solid var(--tomato);border-radius:0 0 10px 10px;padding:8px 0;margin:0;visibility:hidden;opacity:0;translate:0 8px;transition:.18s}
.nav li:hover .sub,.nav li:focus-within .sub{visibility:visible;opacity:1;translate:0 0}
.nav .sub li{list-style:none}
.nav .sub a{padding:10px 18px;text-transform:none;letter-spacing:.02em;font-size:.95rem;font-weight:600;display:flex;justify-content:space-between;gap:14px}
.nav .sub a small{color:var(--ink-faint);font-weight:400}
.nav .sub a:hover{background:rgba(226,64,42,.12)}
.menu-toggle{display:none}
.menu-btn{display:none;color:var(--ink);cursor:pointer;padding:10px}
.menu-btn svg{width:26px;height:26px}

/* ---------- hero ---------- */
.hero{text-align:center;padding:72px 24px 56px;position:relative;overflow:hidden}
.hero h1{font-family:var(--slab);font-weight:800;font-size:clamp(2.6rem,7.2vw,5.2rem);line-height:1.02;margin:.25em 0 0;letter-spacing:.015em;text-transform:uppercase}
.hero h1 .t-red{color:var(--tomato)}
.hero h1 .t-green{color:var(--basil)}
.hero-rule{width:min(300px,60%);height:6px;margin:26px auto 0;background:repeating-linear-gradient(90deg,var(--tomato) 0 44px,var(--cream) 44px 50px,var(--basil) 50px 94px,var(--cream) 94px 100px);border-radius:3px;transform-origin:left;animation:chalk .9s .15s cubic-bezier(.2,.8,.2,1) backwards}
@keyframes chalk{from{transform:scaleX(0)}}
.hero .frame{max-width:620px;margin:22px auto 0;font-size:1.16rem;line-height:1.65;color:var(--ink-dim);text-wrap:pretty}
.hero .chips{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;margin-top:30px}

/* ---------- section headings ---------- */
.room{padding:64px 0}
.room-head{display:flex;align-items:baseline;gap:18px;margin-bottom:30px;flex-wrap:wrap}
.room-head h2{font-family:var(--slab);font-weight:800;font-size:clamp(1.5rem,3vw,2.1rem);letter-spacing:.04em;text-transform:uppercase;margin:0}
.room-head .kicker{font-size:1.35rem}
.room-head::after{content:"";flex:1;border-bottom:3px double var(--rule-strong);min-width:60px;translate:0 -6px}

/* ---------- il cuore ---------- */
.cuore{display:grid;grid-template-columns:minmax(380px,520px) 1fr;gap:44px;align-items:start}
.cuore-photo{border:3px solid var(--rule-strong);border-radius:12px;overflow:hidden;background:var(--paper-deep)}
.cuore-photo img{width:100%;height:380px;object-fit:cover}
.fignote{font-family:var(--script);font-size:1.25rem;color:var(--ink-faint);text-align:center;margin-top:10px}
.cuore h2{font-family:var(--slab);font-weight:800;font-size:clamp(1.7rem,3.4vw,2.4rem);text-transform:uppercase;letter-spacing:.03em;margin:.2em 0 .5em;line-height:1.12}
.cuore p{color:var(--ink-dim);margin:0 0 1em;text-wrap:pretty}
.cuore .chips{display:flex;gap:10px;flex-wrap:wrap;margin:20px 0 24px}

.map-figure{margin:0;border:2px dashed rgba(242,230,207,.55);border-radius:12px;padding:14px;background:rgba(0,0,0,.28)}
.map-slot{min-height:230px;border-radius:8px;background:var(--paper-deep);display:grid;place-items:center;position:relative}
.map-slot::after{content:none;font-family:var(--ui);font-size:.8rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);border:1px solid var(--rule);border-radius:999px;padding:.5em 1.1em}
.map-figure figcaption{display:flex;justify-content:space-between;align-items:baseline;gap:14px;margin-top:12px;font-family:var(--ui);font-size:.86rem;flex-wrap:wrap}
.map-figure figcaption b{letter-spacing:.14em;text-transform:uppercase;color:var(--cream)}
.map-figure figcaption span{color:var(--ink-dim)}

/* ---------- counter cards ---------- */
.counters{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.counter{display:flex;flex-direction:column;background:var(--card);border:1.5px solid var(--rule);border-radius:12px;padding:26px 26px 22px;color:var(--ink);transition:.2s;position:relative}
.counter:hover{translate:0 -4px;border-color:var(--rule-strong);text-decoration:none;color:var(--ink)}
.counter .num{font-family:var(--slab);font-weight:800;font-size:2rem;color:var(--basil)}
.counter h3{font-family:var(--slab);font-weight:800;font-size:1.22rem;margin:.45em 0 .35em;letter-spacing:.02em;min-height:2.5em}
.counter p{font-family:var(--ui);font-size:.95rem;line-height:1.6;color:var(--ink-dim);margin:0;flex:1}
.counter .foot{display:flex;justify-content:space-between;align-items:center;margin-top:18px;font-family:var(--ui);font-size:.82rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint)}
.counter.tribute{background:rgba(226,64,42,.1);border:2px solid var(--tomato)}
.counter.tribute .num{color:var(--tomato)}
.counter.tribute .start{font-family:var(--script);font-size:1.3rem;color:var(--tomato);text-transform:none;letter-spacing:0}
.counter:hover .num{animation:wob .4s}
@keyframes wob{50%{rotate:-3deg}}

/* ---------- ledger ---------- */
.ledger{background:var(--paper-deep);border:1.5px solid var(--rule);border-radius:14px;padding:36px 40px}
.ledger-grid{display:grid;grid-template-columns:1fr 1fr;column-gap:56px;row-gap:4px}
.ledger a{display:flex;align-items:baseline;gap:12px;padding:9px 2px;color:var(--ink);border-radius:6px}
.ledger a:hover{text-decoration:none;background:rgba(239,232,217,.05)}
.ledger .l-name{font-family:var(--slab);font-weight:700;font-size:1.1rem;white-space:nowrap}
.ledger .l-dots{flex:1;border-bottom:2px dotted rgba(239,232,217,.32);translate:0 -5px;min-width:24px}
.ledger .l-type{font-family:var(--ui);font-size:.82rem;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint);white-space:nowrap}
.ledger .l-since{font-family:var(--slab);font-weight:800;color:var(--tomato);font-size:1.05rem;min-width:3.2em;text-align:right}

/* ---------- traditions ---------- */
.trads{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
.trad{display:flex;flex-direction:column;background:var(--card);border:1.5px solid var(--rule);border-top:5px solid var(--basil-deep);border-radius:12px;padding:24px;color:var(--ink);transition:.2s}
.trad:nth-child(2n){border-top-color:var(--tomato)}
.trad:hover{translate:0 -4px;text-decoration:none;color:var(--ink);border-color:var(--rule-strong);border-top-color:var(--tomato)}
.trad .kicker{font-size:1.2rem}
.trad h3{font-family:var(--slab);font-weight:800;font-size:1.15rem;margin:.4em 0 .4em;min-height:2.4em}
.trad p{font-family:var(--ui);font-size:.92rem;line-height:1.6;color:var(--ink-dim);margin:0;flex:1}
.trad .go{margin-top:16px;font-family:var(--ui);font-size:.8rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--basil)}

/* ---------- supporters ---------- */
.supporters{background:var(--paper-deep);border-block:3px double var(--rule-strong);padding:56px 0}
.sponsor-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.sponsor{display:flex;flex-direction:column;gap:10px;background:#191713;border:1.5px solid var(--rule);border-radius:10px;padding:18px;color:var(--ink-dim);transition:.2s;position:relative}
.sponsor::before{content:"amico " counter(sp);counter-increment:sp;position:absolute;top:-11px;left:14px;background:var(--paper-deep);padding:0 8px;font-family:var(--script);font-size:1.05rem;color:var(--ink-faint)}
.sponsor-grid{counter-reset:sp}
.sponsor:hover{border-color:var(--basil-deep);text-decoration:none;translate:0 -3px}
.sponsor img{width:100%;height:56px;object-fit:contain;filter:grayscale(1) brightness(1.5);opacity:.85}
.sponsor-blurb{font-family:var(--ui);font-size:.85rem;line-height:1.5;min-height:1.3em}
.sponsor-blurb:empty::before{content:none;color:var(--ink-faint);font-style:italic}

/* ---------- footer ---------- */
.site-foot{margin-top:40px}
.site-foot .inner{padding:40px 0 48px;text-align:center;font-family:var(--ui)}
.site-foot .fnav{display:flex;justify-content:center;gap:26px;flex-wrap:wrap;margin-bottom:20px;font-size:.85rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase}
.site-foot .fnav a{color:var(--ink-dim)}
.site-foot p{max-width:640px;margin:0 auto;font-size:.92rem;color:var(--ink-faint);line-height:1.65}

/* ---------- article ---------- */
.post-hero{padding:64px 24px 46px;text-align:center;border-bottom:1.5px solid var(--rule)}
.post-hero .crumbs{font-family:var(--ui);font-size:.82rem;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:18px}
.post-hero .crumbs a{color:var(--ink-faint)}
.post-hero h1{font-family:var(--slab);font-weight:800;font-size:clamp(2rem,5.2vw,3.6rem);line-height:1.08;margin:.2em auto .3em;max-width:22ch;text-transform:uppercase;letter-spacing:.015em}
.post-hero .dek{font-size:1.22rem;line-height:1.6;color:var(--ink-dim);max-width:52ch;margin:0 auto;font-style:italic;text-wrap:pretty}
.post-hero .meta{margin-top:26px;font-family:var(--ui);font-size:.9rem;letter-spacing:.06em;color:var(--ink-faint);display:flex;gap:10px;justify-content:center;flex-wrap:wrap;align-items:center}
.post-hero .meta b{color:var(--basil);font-weight:700;letter-spacing:.1em;text-transform:uppercase}
.post-hero .meta .dot{color:var(--tomato)}
.article-body{max-width:1120px;margin-inline:auto;padding:56px 24px 40px}
.article-body>*{max-width:70ch;margin-left:auto;margin-right:auto}
.article-body p{font-size:1.08rem;line-height:1.8;color:var(--ink-dim);margin:0 0 1.35em}
.article-body p strong{color:var(--cream)}
.article-body{counter-reset:sec}
.article-body h2{font-family:var(--slab);font-weight:800;font-size:1.7rem;line-height:1.2;letter-spacing:.02em;margin:2.2em auto .8em;text-transform:uppercase;display:flex;gap:16px;align-items:baseline}
.article-body h2::before{counter-increment:sec;content:counter(sec,decimal-leading-zero);color:var(--tomato);font-size:1.15em}
.article-body h3{font-family:var(--slab);font-weight:800;font-size:1.2rem;margin:1.8em auto .6em}
.lead{font-size:1.3rem!important;line-height:1.65!important;color:var(--ink)!important;font-style:italic}
.dropcap::first-letter{font-family:var(--slab);font-weight:800;font-size:3.6em;float:left;line-height:.78;padding:.06em .12em 0 0;color:var(--tomato)}
.article-body a{text-decoration:underline;text-decoration-color:rgba(139,189,103,.5);text-underline-offset:3px}

/* pull-quote — set LARGE, pulled into the margin */
.pullquote{margin:.3em 0 1.2em;padding:0}
.pullquote p{font-family:var(--script);font-size:1.9rem!important;line-height:1.35!important;color:var(--cream)!important;margin:0!important}
.pullquote::before{content:"";display:block;width:72px;height:4px;background:repeating-linear-gradient(90deg,var(--tomato) 0 26px,transparent 26px 32px,var(--basil) 32px 58px);margin-bottom:14px}
@media(min-width:1180px){
  .pullquote.pull-right{float:right;width:300px;margin:.4em calc((70ch - 1120px)/2 - 40px) 1em 44px;transform:rotate(.5deg)}
  .pullquote.pull-left{float:left;width:300px;margin:.4em 44px 1em calc((70ch - 1120px)/2 - 40px);transform:rotate(-.5deg)}
}
.pullquote.pull-wide{max-width:56ch;text-align:center;margin:2em auto;padding:1.2em 0;border-block:3px double var(--rule-strong)}
.pullquote.pull-wide::before{margin:0 auto 14px}

.blockquote{border-left:4px solid var(--basil-deep);margin:1.6em auto;padding:.4em 0 .4em 1.4em}
.blockquote p{font-size:1.18rem!important;font-style:italic;color:var(--ink)!important;margin:0 0 .5em!important}
.blockquote cite{font-family:var(--ui);font-style:normal;font-size:.9rem;color:var(--ink-faint)}
.callout{background:rgba(139,189,103,.1);border:1.5px solid var(--basil-deep);border-radius:12px;padding:20px 24px;margin:1.8em auto}
.callout p{margin:0!important;color:var(--ink)!important;font-size:1.05rem!important}
.callout::before{content:"dal banco — from the counter";font-family:var(--script);font-size:1.25rem;color:var(--basil);display:block;margin-bottom:6px}
.note{font-family:var(--ui);font-size:.98rem!important;background:rgba(242,230,207,.07);border-left:4px solid var(--cream);border-radius:0 10px 10px 0;padding:14px 18px;color:var(--ink-dim)!important}

/* data */
.versus,.datatable{width:100%;border-collapse:collapse;margin:1.8em auto;font-family:var(--ui);font-size:.98rem}
.versus caption,.datatable caption{font-family:var(--script);font-size:1.3rem;color:var(--basil);text-align:left;margin-bottom:10px}
.versus th,.versus td,.datatable th,.datatable td{padding:12px 14px;text-align:left;border-bottom:1px solid var(--rule);vertical-align:top}
.versus thead th,.datatable thead th{font-family:var(--slab);font-weight:800;letter-spacing:.06em;text-transform:uppercase;font-size:.85rem;border-bottom:3px double var(--rule-strong)}
.versus thead th:nth-child(2){color:var(--tomato)}
.versus thead th:nth-child(3){color:var(--basil)}
.versus tbody th{font-weight:700;color:var(--ink-faint);font-size:.85rem;letter-spacing:.06em;text-transform:uppercase;width:18%}
.datatable tbody th{font-weight:700;color:var(--cream)}
.datatable tbody tr:hover{background:rgba(239,232,217,.04)}
.statrow{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px;margin:2em auto}
.statblock{background:var(--card);border:1.5px solid var(--rule);border-radius:12px;padding:18px 20px;text-align:center}
.statblock .stat-num{display:block;font-family:var(--slab);font-weight:800;font-size:2.1rem;color:var(--tomato);line-height:1.1}
.statblock:nth-child(2n) .stat-num{color:var(--basil)}
.statblock .stat-label{display:block;font-family:var(--ui);font-size:.84rem;color:var(--ink-dim);margin-top:6px;line-height:1.45}
.timeline{list-style:none;margin:2em auto;padding:0;position:relative}
.timeline::before{content:"";position:absolute;left:7px;top:6px;bottom:6px;width:2px;background:repeating-linear-gradient(180deg,var(--rule-strong) 0 8px,transparent 8px 14px)}
.timeline li{position:relative;padding:0 0 22px 36px}
.timeline li::before{content:"";position:absolute;left:0;top:7px;width:12px;height:12px;border-radius:50%;background:var(--paper);border:3px solid var(--tomato)}
.timeline li:nth-child(2n)::before{border-color:var(--basil)}
.timeline .t-when{display:block;font-family:var(--slab);font-weight:800;font-size:1.05rem;color:var(--cream)}
.timeline .t-what{display:block;font-family:var(--ui);font-size:.98rem;color:var(--ink-dim);line-height:1.6;margin-top:2px}
.chart{margin:2em auto;background:var(--card);border:1.5px solid var(--rule);border-radius:12px;padding:24px}
.chart svg{width:100%;height:auto;display:block}
.chart figcaption{font-family:var(--ui);font-size:.88rem;color:var(--ink-faint);margin-top:12px;line-height:1.5}
.chart .bar-label{font-family:var(--ui);font-size:13px;fill:var(--ink-dim)}
.chart .bar-num{font-family:var(--slab);font-weight:800;font-size:14px;fill:var(--cream)}
.chart .axis{stroke:rgba(239,232,217,.25);stroke-width:1}

/* media */
.article-figure{margin:2em auto}
.article-figure img{width:100%;border-radius:10px;border:2px solid var(--rule-strong);aspect-ratio:16/9;object-fit:cover}
.article-figure figcaption{font-family:var(--script);font-size:1.2rem;color:var(--ink-faint);margin-top:10px;text-align:center}
.gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:2em auto}
.gallery figure{margin:0}
.gallery img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:8px;border:2px solid var(--rule)}
.gallery figcaption{font-family:var(--ui);font-size:.82rem;color:var(--ink-faint);margin-top:6px;line-height:1.45}
.article-figure.wide,.gallery.wide,.chart.wide{max-width:1000px}

/* cards / refs */
.profile-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;margin:2em auto}
.profile-card{background:var(--card);border:1.5px solid var(--rule);border-radius:12px;padding:22px;font-family:var(--ui)}
.profile-card .p-photo{width:76px;height:76px;border-radius:50%;object-fit:cover;border:2px solid var(--basil-deep);margin-bottom:12px}
.profile-card.no-photo::before{content:"";display:block;width:76px;height:76px;border-radius:50%;margin-bottom:12px;background:radial-gradient(circle at 35% 30%,var(--card-up),var(--paper-deep));border:2px dashed var(--rule-strong)}
.profile-card h3{font-family:var(--slab);font-weight:800;font-size:1.15rem;margin:0 0 2px}
.profile-card .p-role{color:var(--tomato);font-size:.85rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;margin:0 0 10px}
.profile-card p{font-size:.94rem;line-height:1.6;color:var(--ink-dim);margin:0}
.profile-card .p-links{margin-top:12px}
.profile-card .p-links a{margin-right:12px;font-weight:600}
.org-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin:2em auto}
.org-card{display:flex;align-items:center;gap:12px;background:var(--paper-deep);border:1.5px solid var(--rule);border-radius:10px;padding:14px 16px;font-family:var(--ui);color:var(--ink)}
.org-card:hover{border-color:var(--basil-deep);text-decoration:none;color:var(--ink)}
.org-card .org-logo{width:40px;height:40px;object-fit:contain;border-radius:6px;background:#191713;padding:4px}
.org-card.no-logo::before{content:"";width:40px;height:40px;border-radius:6px;background:#191713;border:1.5px dashed var(--rule-strong);flex:none}
.org-card .org-name{font-weight:700;font-size:.95rem;display:block}
.org-card .org-host{font-size:.8rem;color:var(--ink-faint);display:block}
.org-card>span{display:flex;flex-direction:column}
.entity-ref{font-weight:700;color:var(--basil);white-space:nowrap}
.further-grid,.related-links{margin:1.4em auto}
.further-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px}
.further-grid a{background:var(--card);border:1.5px solid var(--rule);border-radius:10px;padding:16px 18px;font-family:var(--ui);font-size:.95rem;font-weight:600;color:var(--ink);line-height:1.5}
.further-grid a:hover{border-color:var(--tomato);text-decoration:none;translate:0 -2px}
.related-links{list-style:none;padding:0}
.related-links li{border-bottom:1px solid var(--rule)}
.related-links a{display:flex;justify-content:space-between;gap:16px;align-items:baseline;padding:14px 2px;color:var(--ink);font-family:var(--ui)}
.related-links a:hover{text-decoration:none;background:rgba(239,232,217,.04)}
.related-links .r-title{font-weight:700;font-size:1.02rem}
.related-links .r-cat{font-size:.8rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);white-space:nowrap}
.related-wrap{border-top:3px double var(--rule-strong);margin-top:3em;padding-top:1.6em}
.related-wrap h2{display:block}
.related-wrap h2::before{content:none!important}
.related-wrap .kicker{display:block;margin-bottom:-6px}

/* prev/next within a counter */
.walknav{display:flex;gap:14px;justify-content:space-between;max-width:1120px;margin:0 auto;padding:10px 24px 60px;font-family:var(--ui)}
.walknav a{flex:1;max-width:420px;background:var(--card);border:1.5px solid var(--rule);border-radius:10px;padding:14px 18px;color:var(--ink)}
.walknav a:hover{border-color:var(--basil-deep);text-decoration:none}
.walknav .dir{font-size:.78rem;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-faint);display:block;margin-bottom:4px}
.walknav .next{text-align:right;margin-left:auto}
.walknav b{font-size:.98rem}

/* category pages */
.cat-hero{padding:60px 24px 40px;border-bottom:1.5px solid var(--rule)}
.cat-hero .inner{width:min(1120px,100%);margin-inline:auto}
.cat-hero h1{font-family:var(--slab);font-weight:800;font-size:clamp(2rem,4.6vw,3.2rem);text-transform:uppercase;margin:.15em 0 .3em;line-height:1.08}
.cat-hero .blurb{font-size:1.2rem;font-style:italic;color:var(--ink-dim);max-width:56ch;margin:0}
.cat-list{list-style:none;margin:0 auto;padding:36px 24px 20px;max-width:1120px;counter-reset:cat}
.cat-list li{border-bottom:1.5px solid var(--rule)}
.cat-list a{display:grid;grid-template-columns:64px 1fr auto;gap:20px;align-items:baseline;padding:26px 4px;color:var(--ink)}
.cat-list a:hover{text-decoration:none;background:rgba(239,232,217,.04)}
.cat-list a::before{counter-increment:cat;content:counter(cat,decimal-leading-zero);font-family:var(--slab);font-weight:800;font-size:1.7rem;color:var(--tomato)}
.cat-list li:nth-child(2n) a::before{color:var(--basil)}
.cat-list .c-title{font-family:var(--slab);font-weight:800;font-size:1.35rem;display:block;line-height:1.25}
.cat-list .c-brief{font-family:var(--ui);font-size:.98rem;color:var(--ink-dim);display:block;margin-top:6px;line-height:1.6;max-width:70ch}
.cat-list .c-meta{font-family:var(--ui);font-size:.82rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint);white-space:nowrap}
.cat-elders{max-width:1120px;margin:20px auto 0;padding:0 24px 60px}

/* pages */
.page-body{max-width:820px;margin-inline:auto;padding:48px 24px 60px}
.page-body p{font-size:1.1rem;line-height:1.8;color:var(--ink-dim)}
.page-body h2{font-family:var(--slab);font-weight:800;font-size:1.6rem;text-transform:uppercase;margin:1.6em 0 .6em}
.page-body ul{color:var(--ink-dim);font-size:1.05rem;line-height:1.8;padding-left:1.2em}
.page-body .callout{margin:1.8em 0}
.contact-form{display:grid;gap:16px;margin-top:2em;font-family:var(--ui)}
.contact-form label{font-size:.85rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint);display:grid;gap:8px}
.contact-form input,.contact-form textarea{background:var(--paper-deep);border:1.5px solid var(--rule-strong);border-radius:8px;padding:13px 15px;color:var(--ink);font-family:var(--ui);font-size:1rem}
.contact-form input:focus,.contact-form textarea:focus{outline:2px solid var(--basil-deep);border-color:var(--basil-deep)}
.contact-form button{justify-self:start;background:var(--tomato);color:var(--cream);border:0;border-radius:999px;padding:14px 30px;font-family:var(--slab);font-weight:800;font-size:1rem;letter-spacing:.06em;cursor:pointer}
.contact-form button:hover{background:var(--tomato-deep)}
.err-hero{text-align:center;padding:110px 24px}
.err-hero .num{font-family:var(--slab);font-weight:800;font-size:7rem;line-height:1;color:var(--tomato)}

/* CSS-only expander */
.more-toggle{display:none}
.more-body{display:none}
.more-toggle:checked~.more-body{display:block}
.more-label{display:inline-block;cursor:pointer;font-family:var(--ui);font-size:.85rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--basil);border:1.5px solid var(--basil-deep);border-radius:999px;padding:.6em 1.4em;margin-top:10px}
.more-label:hover{background:rgba(139,189,103,.12)}
.more-toggle:checked~.more-label{display:none}

/* ---------- responsive ---------- */
@media(max-width:1080px){
  .counters{grid-template-columns:repeat(2,1fr)}
  .trads{grid-template-columns:repeat(2,1fr)}
  .sponsor-grid{grid-template-columns:repeat(3,1fr)}
  .cuore{grid-template-columns:1fr;gap:30px}
  .cuore-photo img{height:320px}
}
@media(max-width:900px){
  .nav{position:fixed;inset:64px 0 auto 0;background:var(--paper-deep);border-bottom:3px double var(--rule-strong);flex-direction:column;align-items:stretch;padding:10px 24px 24px;display:none;max-height:calc(100vh - 64px);overflow:auto}
  .menu-toggle:checked~.nav{display:flex}
  .menu-btn{display:block}
  .nav a{padding:14px 4px;border-bottom:1px solid var(--rule)}
  .nav .sub{position:static;visibility:visible;opacity:1;translate:none;border:0;border-left:3px solid var(--tomato);border-radius:0;background:transparent;padding:0 0 0 14px;min-width:0}
  .ledger{padding:26px 22px}
  .ledger-grid{grid-template-columns:1fr;column-gap:0}
  .gallery{grid-template-columns:1fr 1fr}
  .walknav{flex-direction:column}
  .walknav a{max-width:none}
  .cat-list a{grid-template-columns:44px 1fr;row-gap:4px}
  .cat-list .c-meta{grid-column:2}
}
@media(max-width:620px){
  .wrap{width:calc(100% - 36px)}
  .site-head .wrap{width:calc(100% - 24px);gap:8px}
  .brand{font-size:1rem}
  .menu-btn{padding:8px 4px}
  .versus,.datatable{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}
  .versus caption,.datatable caption{display:block}
  .room{padding:44px 0}
  .hero{padding:52px 18px 42px}
  .counters,.trads,.sponsor-grid,.gallery{grid-template-columns:1fr}
  .counter h3,.trad h3{min-height:0}
  .hero .chips .chip{font-size:.72rem}
  .article-body{padding:40px 20px 30px}
  .article-body p{font-size:1.03rem}
  .pullquote p{font-size:1.55rem!important}
  .post-hero{padding:48px 18px 36px}
  .ledger .l-type{display:none}
  .statrow{grid-template-columns:1fr 1fr}
  .cuore-photo img{height:240px}
  .page-body{padding:36px 20px 48px}
}
@media(prefers-reduced-motion:reduce){
  *{animation:none!important;transition:none!important}
}

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

/* op-odd-tier-lead: .sponsor-grid (13 tiles) lay out two per row with an ODD tile count, so the
   block ended on a lone tile beside an empty cell. The lead tile takes the whole row instead —
   operator: "the 1st item in such rows to be 100% width, then split" — so the grid reads as
   complete. These tiers were already two-per-row, which is why the column pass never wrote the
   rule for them. Checked before writing: no new horizontal overflow, block not more than 15%
   taller. Phone widths only; desktop keeps Design's layout. */
@media (max-width:640px){
  .sponsor-grid:has(> *:nth-child(odd):last-child) > *:first-child{grid-column:1 / -1!important}
}

/* op-page-overflow: the page scrolled sideways at 320 — a reached
   338px in a 320px screen (+17px), inside
   div.ledger-grid. Remedy: let the words break. Structural only, no spacing value of mine;
   tried in order and this is the first that held, with the page's visible copy unchanged.
   Phone widths only — desktop is re-measured after writing and must not move. */
@media (max-width:360px){
  a,a *{overflow-wrap:anywhere!important;min-width:0!important}
}

/* op-article-width: the article column was capped at 742px (98 characters per line) at every desktop width. Operator: "it should utilize more space". Widened through max-width 70ch (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 > :is(p.dropcap, p:not([class])){max-width:min(775px, 100%)!important}
}
@media (min-width:1600px){
  article.article-body > :is(p.dropcap, p:not([class])){max-width:min(clamp(775px, 53.819vw, 930px), 100%)!important}
  article.article-body > :is(p.dropcap, p:not([class])){font-size:clamp(17.28px,1.2000vw,20.74px)!important}
}
/* op-article-width:end */

/* op-hover-pad */
.ledger a{padding-left:clamp(12px,3.5vw,22px)!important;padding-right:clamp(12px,3.5vw,22px)!important}
/* op-hover-pad:end */

/* op-hover-pad */
.cat-list a{padding-right:clamp(12px,3.5vw,22px)!important}
/* op-hover-pad: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.gallery.wide > figure > img,
  div.page-body > figure.article-figure > img,
  figure > div.cuore-photo > img){height:auto}
/* op-img-dims:end */
@media (min-width:881px) and (max-width:999px){.ledger-grid.ledger-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;column-gap:32px!important}}
@media (min-width:1180px) and (max-width:1299px){.pullquote.pull-right.pull-right{margin-right:0!important}}
@media (min-width:1300px) and (max-width:1439px){.pullquote.pull-right.pull-right{margin-right:0!important}}
@media (min-width:1440px){.pullquote.pull-right.pull-right{margin-right:0!important}}
@media (max-width:600px){.related-links a{flex-wrap:wrap!important;row-gap:4px!important}.related-links .r-cat{min-width:auto!important;flex:0 0 auto!important}}@media (max-width:420px){.statrow{grid-template-columns:minmax(0,1fr)!important}}
