/* ==========================================================================
   agendaconcorsi.com — Sinopia Register
   Palette (named jobs):
     --ground     Arriccio      raw-plaster warm grey ......... page ground
     --ink        Vine Black    ................................ text, rules, dark bands
     --accent     Minio (red lead) ...... kickers, active nav, feature band, icons
     --secondary  Indaco (indigo) ....... masthead band, register head, panels
     --rule       Verdaccio ............. hairlines and non-text marks only
   ========================================================================== */

:root{
  --ground:#FFFFFF;
  --panel:#F4F0E6;
  --panel-2:#FAF7F0;
  --ink:#16150F;
  --ink-2:#3A3629;
  --muted:#5E5A48;
  --accent:#CE4E17;
  --accent-deep:#B34412;   /* Minio, darkened: the only accent safe behind small text */
  --accent-pale:#F6CDB4;
  --secondary:#26307F;
  --secondary-deep:#1D2568;
  --secondary-pale:#C3C8EA;
  --rule:#7E8468;
  --hair:#C0B7A2;

  --serif:'Spectral',Georgia,'Times New Roman',serif;
  --sans:'Work Sans',system-ui,-apple-system,'Segoe UI',sans-serif;

  --measure:68ch;
  --page:1240px;
  --gap:clamp(20px,3vw,44px);
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;background:var(--ground);color:var(--ink);
  font-family:var(--sans);font-size:17px;line-height:1.55;
  text-wrap:pretty;
}
img{max-width:100%;display:block}
a{color:var(--secondary);text-decoration:none}
a:hover{color:var(--accent)}
h1,h2,h3,h4{font-family:var(--serif);font-weight:800;letter-spacing:-.015em;line-height:1.05;margin:0}
p{margin:0 0 1em}
svg{flex:none}
.icon{width:1.05em;height:1.05em;vertical-align:-.15em}

.wrap{max-width:var(--page);margin:0 auto;padding-inline:clamp(18px,4vw,40px)}
.bleed-band{padding-block:clamp(30px,4vw,46px)}
.rule-top{border-top:2px solid var(--ink)}
.skip{position:absolute;left:-9999px}
.skip:focus{left:8px;top:8px;background:var(--ink);color:#fff;padding:8px 12px;z-index:20}

/* ---------- masthead ---------------------------------------------------- */
.masthead{background:var(--secondary);color:#EFEADC}
.masthead a{color:#EFEADC}
.masthead-top{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:18px;padding-block:22px 18px}
.wordmark{display:flex;align-items:flex-end;gap:14px;text-decoration:none}
.wordmark-mark{color:var(--accent-pale);margin-bottom:4px}
.wordmark-name{font-family:var(--serif);font-weight:800;font-size:clamp(30px,4.6vw,46px);line-height:.92;letter-spacing:-.02em}
.wordmark-strap{font-family:var(--serif);font-style:italic;font-size:16px;color:var(--secondary-pale);margin-top:7px}
.masthead-note{font-size:15px;line-height:1.4;color:var(--secondary-pale);max-width:290px}
.nav{background:var(--secondary-deep)}
.nav ul{display:flex;flex-wrap:wrap;gap:0;list-style:none;margin:0;padding:0;font-size:15.5px;font-weight:500}
.nav a{display:flex;align-items:center;gap:7px;padding:12px 15px;color:#EFEADC}
.nav a:hover{background:#232C77;color:#fff}
.nav li:first-child a{padding-left:0}
.nav .nav-end{margin-left:auto}
.nav a[aria-current="page"]{background:var(--accent-deep);color:#FBF6E9;font-weight:600}
.nav a[aria-current="page"]:hover{background:var(--accent-deep);color:#FBF6E9}

/* ---------- section furniture ------------------------------------------ */
.band-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:10px 18px;
  border-bottom:2px solid var(--ink);padding-bottom:10px;margin-bottom:22px}
.band-title{font-size:clamp(22px,2.6vw,29px);font-weight:800}
.band-title .icon{width:26px;height:26px;color:var(--accent);vertical-align:-4px;margin-right:9px}
.band-note{font-size:15.5px;color:var(--muted);max-width:52ch}
.kicker{display:inline-flex;align-items:center;gap:8px;font-family:var(--sans);font-size:15px;font-weight:600;
  letter-spacing:.09em;text-transform:uppercase;color:var(--accent)}
.kicker .icon{width:18px;height:18px}
.eyebrow{font-size:15px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}

/* ---------- homepage lead ---------------------------------------------- */
.lead-band{padding-block:clamp(26px,3.4vw,40px)}
.lead-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(0,1fr);gap:var(--gap);align-items:start}
.lead-figure{margin:0}
.lead-figure img{width:100%;aspect-ratio:16/9;object-fit:cover}
.lead-title{font-size:clamp(34px,5.2vw,62px);line-height:1.01;margin:14px 0 0}
.lead-title a{color:var(--ink)}
.lead-title a:hover{color:var(--accent)}
.lead-dek{font-family:var(--serif);font-size:clamp(18px,2vw,21px);line-height:1.45;color:var(--ink-2);margin:14px 0 0}
.lead-meta{font-size:15.5px;color:var(--muted);margin-top:12px}
.lead-side{border-left:3px solid var(--accent);padding-left:18px}
.lead-side h3{font-size:21px;margin-bottom:8px}
.lead-side p{font-size:16px;color:var(--ink-2)}
.side-list{list-style:none;margin:0;padding:0}
.side-list li{border-bottom:1px solid var(--hair);padding:11px 0}
.side-list li:last-child{border-bottom:0}
.side-list a{color:var(--ink);font-family:var(--serif);font-weight:600;font-size:18.5px;line-height:1.2;display:block}
.side-list a:hover{color:var(--accent)}
.side-list span{display:block;font-size:15px;color:var(--muted);margin-top:3px}

/* ---------- the register (signature) ----------------------------------- */
.register-band{background:var(--panel);border-block:2px solid var(--ink)}
.table-scroll{overflow-x:auto}
table.register,table.datatable,table.versus{width:100%;border-collapse:collapse;font-size:16px;font-family:var(--sans)}
table.register th,table.datatable th,table.versus th{background:var(--ink);color:#EFEADC;text-align:left;
  font-size:14.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;padding:11px 13px;vertical-align:bottom}
table.register td,table.datatable td,table.versus td{padding:12px 13px;border-bottom:1px solid var(--hair);vertical-align:top;color:var(--ink-2)}
table.register tbody tr:nth-child(odd) td{background:var(--panel-2)}
table.register .r-type{font-weight:600;color:var(--ink);font-size:16.5px;min-width:190px}
table.register .r-type .icon{width:19px;height:19px;color:var(--accent);margin-right:8px;vertical-align:-3px}
table.register td a{color:var(--ink);border-bottom:1px solid var(--accent)}
table.register td a:hover{color:var(--accent)}
.register-legend{display:flex;flex-wrap:wrap;gap:14px 26px;margin-top:18px;font-size:15.5px;color:var(--muted)}

/* ---------- feature band (accent area) --------------------------------- */
.feature-band{background:var(--accent-deep);color:#FBF2E2;border-bottom:2px solid var(--ink)}
.feature-band a{color:#FBF2E2}
.feature-grid{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:var(--gap);align-items:center}
.feature-band .kicker{color:var(--accent-pale)}
.feature-title{font-size:clamp(30px,4.4vw,50px);line-height:1.02;margin:12px 0 0}
.feature-dek{font-family:var(--serif);font-size:19px;line-height:1.5;color:#FAE3D2;margin:14px 0 0;max-width:60ch}
.btn{display:inline-flex;align-items:center;gap:9px;margin-top:18px;background:#FBF2E2;color:var(--ink);
  font-size:15px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;padding:11px 17px}
.btn:hover{background:var(--ink);color:#FBF2E2}
.feature-figure{margin:0}
.feature-figure img{width:100%;aspect-ratio:4/3;object-fit:cover}

/* ---------- section blocks --------------------------------------------- */
.sections-band{padding-block:clamp(30px,4vw,46px)}
.section-block{border-top:1px solid var(--hair);padding-block:26px}
.section-block:first-of-type{border-top:0}
.section-grid{display:grid;grid-template-columns:minmax(0,300px) minmax(0,1fr);gap:var(--gap)}
.section-head h2{font-size:clamp(24px,3vw,34px)}
.section-head h2 a{color:var(--ink)}
.section-head h2 a:hover{color:var(--accent)}
.section-head .icon{width:30px;height:30px;color:var(--accent)}
.section-head p{font-size:16px;color:var(--muted);margin:10px 0 0}
.section-no{font-family:var(--sans);font-size:15px;font-weight:600;letter-spacing:.1em;color:var(--rule)}

.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:22px}
.card{display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--hair);height:100%}
.card img{width:100%;aspect-ratio:3/2;object-fit:cover}
.card-body{display:flex;flex-direction:column;flex:1;padding:15px 16px 16px}
.card h3{font-size:20px;line-height:1.15;min-height:2.3em;margin:0}
.card h3 a{color:var(--ink)}
.card h3 a:hover{color:var(--accent)}
.card p{font-size:15.5px;color:var(--ink-2);margin:9px 0 0;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.card .card-meta{margin-top:auto;padding-top:12px;font-size:14.5px;color:var(--muted);
  display:flex;align-items:center;gap:7px}
.card .card-meta .icon{width:16px;height:16px;color:var(--accent)}

/* ---------- supporters ------------------------------------------------- */
.supporters{background:var(--ink);color:#CFC8B6;border-block:2px solid var(--ink)}
.supporters .band-head{border-color:#4A473A;color:#EFEADC}
.supporters .band-title{color:#EFEADC}
.supporters .band-title .icon{color:var(--accent-pale)}
.supporters .band-note{color:#B4AC98}
.supporters .eyebrow{color:#B4AC98;margin-bottom:12px;display:block}
.sponsor-row{display:flex;flex-wrap:wrap;gap:14px;margin-bottom:26px;list-style:none;padding:0}
.sponsor-row:last-child{margin-bottom:0}
.sponsor{width:100%;height:76px;background:#26241B;border:1px solid #3D392E;
  display:flex;align-items:center;justify-content:center;padding:12px 18px}
.sponsor:hover{border-color:var(--accent)}
.sponsor img{max-height:44px;max-width:100%;width:auto;height:auto;object-fit:contain}

/* ---------- footer ----------------------------------------------------- */
.site-foot{background:var(--secondary-deep);color:#C3C8EA;padding-block:34px 40px}
.site-foot a{color:#EFEADC}
.site-foot a:hover{color:var(--accent-pale)}
.foot-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:26px}
.foot-grid h4{font-family:var(--sans);font-size:14.5px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:#8E96D6;margin-bottom:10px}
.foot-grid ul{list-style:none;margin:0;padding:0;font-size:16px}
.foot-grid li{padding:4px 0}
.foot-mark{font-family:var(--serif);font-weight:800;font-size:24px;color:#EFEADC}
.foot-legal{border-top:1px solid #38408F;margin-top:26px;padding-top:16px;font-size:15px;color:#9AA2DE;
  display:flex;flex-wrap:wrap;gap:8px 22px;justify-content:space-between}

/* ---------- article --------------------------------------------------- */
.article-head{border-bottom:2px solid var(--ink);padding-block:clamp(26px,3.4vw,42px) 26px}
.article-head .kicker{margin-bottom:14px}
.article-title{font-size:clamp(34px,5.6vw,66px);line-height:1.02;max-width:24ch}
p.lead{font-family:var(--serif);font-size:clamp(19px,2.1vw,23px);line-height:1.42;color:var(--ink-2);
  margin:20px 0 0;max-width:56ch}
.article-meta{display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:18px;font-size:15.5px;color:var(--muted)}
.article-meta .sep{color:var(--rule)}

.entry-strip{background:var(--secondary);color:#EFEADC;border-bottom:2px solid var(--ink)}
.entry-strip dl{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:0;margin:0}
.entry-strip div{padding:16px 20px;border-left:1px solid #4954A8}
.entry-strip div:first-child{border-left:0;padding-left:0}
.entry-strip dt{font-size:14.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--secondary-pale)}
.entry-strip dd{margin:5px 0 0;font-family:var(--serif);font-size:18px;line-height:1.3}
.entry-strip dd a{color:#fff;border-bottom:1px solid var(--accent-pale)}

.article-body{max-width:var(--measure);margin-inline:auto;padding-block:clamp(26px,3.4vw,40px) 10px;
  font-family:var(--serif);font-size:19px;line-height:1.68;color:#1F1D16}
.article-body>*{margin-inline:auto}
.article-body h2{font-family:var(--serif);font-size:clamp(24px,3vw,32px);line-height:1.12;margin:34px 0 14px}
.article-body h3{font-size:22px;margin:28px 0 10px}
.article-body p{margin:0 0 1.15em}
.article-body a{border-bottom:1px solid var(--accent);color:var(--ink)}
.article-body a:hover{color:var(--accent)}
.article-body>.full,.article-body>.wide{max-width:none}

/* figures — three sizes */
.article-figure{margin:30px 0}
.article-figure img{width:100%;object-fit:cover}
.article-figure figcaption{font-family:var(--sans);font-size:15.5px;line-height:1.45;color:var(--muted);
  padding-top:9px;border-top:1px solid var(--hair);margin-top:9px}
figure.article-figure.full{margin:36px 0;max-width:none}
figure.article-figure.full img{aspect-ratio:21/9}
figure.article-figure.inset{float:left;width:min(300px,48%);margin:8px 28px 18px 0}
figure.article-figure.inset img{aspect-ratio:4/5}
.gallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;margin:30px 0}
.gallery figure{margin:0}
.gallery img{width:100%;aspect-ratio:1/1;object-fit:cover}
.gallery figcaption{font-family:var(--sans);font-size:14.5px;color:var(--muted);margin-top:7px}

/* prose components */
.pullquote{margin:32px 0;padding:0 0 0 22px;border-left:4px solid var(--accent)}
.pullquote p{font-family:var(--serif);font-weight:600;font-size:clamp(23px,2.8vw,30px);line-height:1.18;margin:0}
.blockquote{margin:30px 0;padding:20px 24px;background:var(--panel)}
.blockquote p{margin:0 0 10px;font-size:19px}
.blockquote cite{font-family:var(--sans);font-style:normal;font-size:15.5px;color:var(--muted)}
.callout{margin:30px 0;background:var(--secondary);color:#EFEADC;padding:22px 24px;border-left:6px solid var(--accent)}
.callout p{margin:0;font-size:18.5px;line-height:1.5}
p.note{font-family:var(--sans);font-size:16px;line-height:1.5;color:var(--muted);
  border-top:1px solid var(--hair);border-bottom:1px solid var(--hair);padding:14px 0;margin:26px 0}

/* the terms band — full-bleed interruption carrying the notes material */
.terms-band{background:var(--ink);color:#DED7C6;padding-block:34px 38px;margin:40px 0}
.terms-band .kicker{color:var(--accent-pale)}
.terms-band h2{color:#EFEADC;font-size:clamp(24px,3vw,34px);margin:12px 0 22px;font-family:var(--serif)}
.terms-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1px;background:#332F24}
.terms-list li{background:var(--ink);padding:18px 20px 20px;font-family:var(--sans);font-size:16px;line-height:1.5}
.terms-list b{display:block;font-family:var(--serif);font-weight:600;font-size:19.5px;color:#EFEADC;margin-bottom:6px}
.terms-index{font-family:var(--sans);font-size:14.5px;letter-spacing:.08em;color:var(--rule);display:block;margin-bottom:8px}

/* stats / timeline / charts */
.statrow{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:16px;margin:30px 0}
.statblock{background:var(--panel);border-top:3px solid var(--accent);padding:18px 18px 20px}
.stat-num{display:block;font-family:var(--serif);font-weight:800;font-size:40px;line-height:1;color:var(--ink)}
.stat-label{display:block;font-family:var(--sans);font-size:15.5px;line-height:1.4;color:var(--muted);margin-top:8px}
.timeline{list-style:none;margin:30px 0;padding:0}
.timeline li{display:grid;grid-template-columns:minmax(150px,240px) 1fr;gap:18px;padding:14px 0;border-bottom:1px solid var(--hair)}
.t-when{font-family:var(--sans);font-size:15.5px;font-weight:600;color:var(--secondary);line-height:1.35}
.t-what{font-family:var(--serif);font-size:18px;line-height:1.45}
.chart{margin:30px 0}
.chart svg{width:100%;height:auto;overflow:visible}
.chart figcaption{font-family:var(--sans);font-size:15.5px;color:var(--muted);margin-top:10px}
.chart .bar-rect{fill:var(--secondary)}
.chart .bar-rect.alt{fill:var(--accent)}
.chart text{font-family:var(--sans);font-size:13px;fill:var(--ink-2)}

/* cards / references */
.profile-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:20px;margin:30px 0}
.profile-card{background:var(--panel);border:1px solid var(--hair);padding:18px}
.profile-card .p-photo{width:72px;height:72px;object-fit:cover;border-radius:50%;margin-bottom:12px}
.profile-card h3{font-size:21px}
.profile-card .p-role{font-family:var(--sans);font-size:15px;color:var(--accent);margin:4px 0 10px}
.profile-card p{font-size:16px;color:var(--ink-2)}
.profile-card .p-links{font-family:var(--sans);font-size:15.5px}
.profile-card.no-photo{border-left:4px solid var(--secondary)}
.org-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;margin:26px 0}
.org-card{display:flex;flex-direction:column;gap:4px;background:var(--panel);border:1px solid var(--hair);padding:14px 16px}
.org-card:hover{border-color:var(--accent)}
.org-logo{max-height:28px;width:auto;margin-bottom:6px}
.org-name{font-family:var(--serif);font-weight:600;font-size:18px;color:var(--ink)}
.org-host{font-family:var(--sans);font-size:14.5px;color:var(--muted)}
.entity-ref{border-bottom:1px solid var(--secondary)}
.further-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px;margin:24px 0}
.further-grid a{background:var(--panel);border:1px solid var(--hair);padding:15px 16px;font-family:var(--serif);
  font-weight:600;font-size:18px;line-height:1.25;color:var(--ink)}
.further-grid a:hover{border-color:var(--accent);color:var(--accent)}
.related-links{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:14px}
.related-links li{background:var(--panel);border-left:3px solid var(--accent);padding:14px 16px}
.related-links a{font-family:var(--serif);font-weight:600;font-size:18px;line-height:1.25;color:var(--ink)}
.related-links a:hover{color:var(--accent)}
.related-band{border-top:2px solid var(--ink);padding-block:30px 36px}

/* category / hub pages */
.cat-list{list-style:none;margin:0;padding:0}
.cat-list li{border-bottom:1px solid var(--hair)}
.cat-list>li>a{display:grid;grid-template-columns:34px minmax(0,1fr) minmax(0,1.15fr) auto;gap:16px;
  align-items:baseline;padding:17px 0;color:var(--ink)}
.cat-list>li>a:hover{background:var(--panel-2)}
.cat-list .icon{width:22px;height:22px;color:var(--accent)}
.cat-list .c-title{font-family:var(--serif);font-weight:600;font-size:21px;line-height:1.2}
.cat-list .c-dek{font-size:15.5px;color:var(--ink-2)}
.cat-list .c-meta{font-size:14.5px;color:var(--muted);white-space:nowrap}
.page-head{border-bottom:2px solid var(--ink);padding-block:clamp(26px,3.4vw,44px) 24px}
.page-head h1{font-size:clamp(32px,5vw,58px);line-height:1}
.page-head .lede{font-family:var(--serif);font-size:20px;line-height:1.45;color:var(--ink-2);max-width:60ch;margin-top:16px}
.prose{max-width:var(--measure);font-family:var(--serif);font-size:19px;line-height:1.68;padding-block:30px}
.prose h2{font-size:28px;margin:30px 0 12px}
.hub-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:var(--gap);padding-block:34px}
.hub-col h2{font-size:26px}
.hub-col h2 .icon{width:24px;height:24px;color:var(--accent);vertical-align:-3px;margin-right:8px}
.hub-col .eyebrow{display:block;margin:8px 0 12px}
.hub-col ul{list-style:none;margin:0;padding:0}
.hub-col li{border-top:1px solid var(--hair);padding:11px 0}
.hub-col a{font-family:var(--serif);font-weight:600;font-size:18px;line-height:1.25;color:var(--ink)}
.hub-col a:hover{color:var(--accent)}

/* collapsible long list (CSS-only) */
.expander{margin-top:14px}
.expander>summary{cursor:pointer;font-family:var(--sans);font-size:15.5px;font-weight:600;color:var(--secondary);
  list-style:none;padding:10px 0;border-top:1px solid var(--hair)}
.expander>summary::-webkit-details-marker{display:none}
.expander>summary::after{content:" ↓"}
.expander[open]>summary::after{content:" ↑"}

/* 404 */
.err{padding-block:80px 100px;text-align:center}
.err h1{font-size:clamp(38px,7vw,74px)}
.err p{font-family:var(--serif);font-size:20px;color:var(--ink-2);margin-top:14px}

/* styleguide only */
.sg-item{border-top:2px solid var(--ink);padding-block:24px 34px}
.sg-item>h2{font-family:var(--sans);font-size:15px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;
  color:var(--accent);margin-bottom:18px}

/* ---------- responsive ------------------------------------------------- */
@media (max-width:1000px){
  .lead-grid,.feature-grid,.section-grid{grid-template-columns:minmax(0,1fr)}
  .lead-side{border-left:0;border-top:3px solid var(--accent);padding:16px 0 0}
  .cat-list>li>a{grid-template-columns:26px minmax(0,1fr);row-gap:6px}
  .cat-list .c-dek,.cat-list .c-meta{grid-column:2}
}
@media (max-width:760px){
  body{font-size:16.5px}
  .article-title,.lead-title,.page-head h1{line-height:1.04}
  .article-body{font-size:18px}
  figure.article-figure.inset{float:none;width:100%;margin:26px 0}
  .timeline li{grid-template-columns:minmax(0,1fr);gap:4px}
  .entry-strip div{border-left:0;border-top:1px solid #4954A8;padding-inline:0}
  .entry-strip div:first-child{border-top:0}
  .nav ul{font-size:15px}
  .nav li:first-child a{padding-left:0}
  table.register{font-size:15px}
  table.register thead{display:none}
  table.register,table.register tbody,table.register tr,table.register td{display:block;width:100%}
  table.register tr{border:1px solid var(--hair);margin-bottom:14px;background:var(--panel-2)}
  table.register tbody tr:nth-child(odd) td{background:transparent}
  table.register td{border-bottom:1px solid var(--hair);padding:11px 13px}
  table.register td:last-child{border-bottom:0}
  table.register td::before{content:attr(data-label);display:block;font-family:var(--sans);font-size:13.5px;
    font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-bottom:4px}
  table.register .r-type::before{display:none}
  .sponsor{flex:1 1 100%;max-width:none}
}
@media print{
  .nav,.supporters,.site-foot{display:none}
  body{background:#fff}
}

/* nested full-bleed bands inside the reading column */
.article-body .terms-band{max-width:none;margin-inline:-18px}
.article-body .terms-band .wrap{padding-inline:18px;max-width:none}
@media (min-width:760px){
  .article-body .terms-band{margin-inline:-28px}
  .article-body .terms-band .wrap{padding-inline:28px}
}
.article-body .terms-band h2{margin-top:12px}
.card > a[tabindex="-1"]{display:block}
a.card{color:inherit}
a.card:hover h3{color:var(--accent)}
.card h3 .icon{width:20px;height:20px;color:var(--accent);vertical-align:-3px;margin-right:6px}
.section-head h2 .icon{vertical-align:-4px;margin-right:8px}
.page-head h1 .icon{width:.9em;height:.9em;color:var(--accent);vertical-align:-.05em;margin-right:10px}
.hub-col h2 a{color:var(--ink)}
.hub-col h2 a:hover{color:var(--accent)}
.lead-figure figcaption{font-family:var(--sans)}

.wordmark-name,.wordmark-strap{display:block}
@media (max-width:1080px){.nav .nav-end{margin-left:0}}

.feature-band a.btn,.err a.btn{color:var(--ink)}
.feature-band a.btn:hover{background:var(--ink);color:#FBF2E2}
.err a.btn{background:var(--ink);color:#FBF2E2}
.err a.btn:hover{background:var(--accent);color:#FBF2E2}
.card p{-webkit-line-clamp:4}

/* constant tile size at any count: equal grid tracks, no stretching orphan */
.sponsor-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(196px,1fr));gap:14px}
@media (max-width:760px){.sponsor-row{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}}

/* lead figure spans the full band under both columns */
.lead-band>.lead-figure{margin-top:26px}
.lead-band>.lead-figure img{aspect-ratio:2.4/1}
.lead-band>.lead-figure figcaption{max-width:80ch}
@media (max-width:760px){.lead-band>.lead-figure img{aspect-ratio:16/10}}

/* workshop gallery: six frames, one row */
.gallery.row-6{grid-template-columns:repeat(6,minmax(0,1fr))}
.gallery.row-6 img{aspect-ratio:3/4}
@media (max-width:1100px){.gallery.row-6{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:560px){.gallery.row-6{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* feature band figure: fills its column, cropped and captioned */
.feature-figure{align-self:stretch;display:flex;flex-direction:column}
.feature-figure img{aspect-ratio:4/3;height:100%;object-position:center 58%;border:1px solid rgba(251,242,226,.45)}
.feature-figure figcaption{font-family:var(--sans);font-size:15px;line-height:1.45;color:#FAE3D2;padding-top:10px;margin-top:10px;border-top:1px solid rgba(251,242,226,.4)}
@media (max-width:1000px){.feature-figure img{aspect-ratio:16/9}}

.gallery.row-6 figcaption{font-size:14.5px;line-height:1.35;text-wrap:balance}

/* feature band: darken one step so kicker, dek and caption clear WCAG AA */
.feature-band{background:var(--accent-deep)}
.feature-band .kicker{color:#FBF2E2}
.feature-dek{color:#FBF2E2}
.feature-figure figcaption{color:#FBF2E2;border-top-color:rgba(251,242,226,.5)}
.feature-figure img{border-color:rgba(251,242,226,.5)}

/* text uses on white: Verdaccio and Minio were only AA on the warm ground */
.section-no{color:var(--muted)}
.credit{color:var(--muted)}
.article-meta .sep{color:var(--muted)}
.kicker{color:var(--accent-deep)}
.feature-band .kicker{color:#FBF2E2}
.terms-band .kicker{color:var(--accent-pale)}
.register-legend,.band-note,.card .card-meta{color:var(--muted)}
/* keep the end nav items together */
@media (max-width:1080px){
  .nav ul{font-size:15px}
  .nav a{padding:12px 9px;gap:6px}
  .nav .nav-end{margin-left:auto}
}
@media (max-width:820px){
  .nav .nav-end{margin-left:0}
}

/* 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-tile-overflow: the tile was sized for a mark alone and our sentence needs 256px more,
   so the copy was spilling out of the tile and overprinting the row beneath it. Let the
   tile grow to its content and stack it, keeping the designed height as a FLOOR so a tile
   with no copy still sits on the original grid rhythm. */
.sponsor.sponsor{height:auto!important;min-height:76px!important;flex-direction:column!important;align-items:flex-start!important;justify-content:flex-start!important;gap:10px!important}
.sponsor-row.sponsor-row{align-items:start!important}
/* sp-blurb-clamp: a long blurb is clamped to 3 lines behind a CSS-only Read more — the tile was
   designed for a mark and a line, and the full sentence pushed it past four times its height.
   The checkbox sits before the copy so a sibling selector can release the clamp; no JavaScript. */
.sp-more{position:absolute;opacity:0;width:0;height:0;pointer-events:none}
[data-clamp="1"]{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.sp-more:checked ~ [data-clamp="1"]{-webkit-line-clamp:unset;display:block}
.sp-more-lbl{cursor:pointer;font-size:.82em;opacity:.8;display:inline-block;margin-top:6px}
.sp-more-lbl .less{display:none}
.sp-more:checked ~ .sp-more-lbl .more{display:none}
.sp-more:checked ~ .sp-more-lbl .less{display:inline}

/* 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-row .sponsor .sp-logo.sp-logo{display:block!important;width:100%!important}
.sponsor-row .sponsor.sponsor img{height:43px!important;display:block!important;width:100%!important}

/* op-footer-compact: the footer printed 5 rows for 5 link(s) in
   1 list(s) — 782px at 390, 4% 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, and the group holder takes two columns,
   measured 782 -> 544px (30% 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:min(1.81vw,26px)!important;row-gap:4px!important}
  footer ul > li,footer ol > li{width:auto!important;flex:0 0 auto;max-width:100%}
  footer [class*=grid],footer [class*=index],footer [class*=cols]{grid-template-columns:repeat(2,minmax(0,1fr))!important;column-gap:24px}
}

/* op-blurb-rows: money blurbs ran to 6 rows at 390, 1632px 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){
  .sponsor-row .sponsor-blurb{display:-webkit-box!important;-webkit-line-clamp:3!important;-webkit-box-orient:vertical;max-height:75px!important;min-height:0!important;overflow:hidden!important}
  .sponsor-row .sponsor-blurb{display:-webkit-box!important;-webkit-line-clamp:3!important;-webkit-box-orient:vertical;max-height:75px!important;min-height:0!important;overflow:hidden!important}
}

/* op-odd-tier-lead: .sponsor-row (9 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-row:has(> *:nth-child(odd):last-child) > *:first-child{grid-column:1 / -1!important}
}

/* op-article-width: the article column was capped at 646px (79 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){
  div.article-body{--measure:min(88.000ch, 100%)!important}
}
@media (min-width:1600px){
  div.article-body{--measure:min(clamp(88.000ch, 58.056vw, calc(88.000ch * 1.2)), 100%)!important}
  div.article-body > :is(p:not([class])){font-size:clamp(19px,1.3194vw,22.8px)!important}
}
/* op-article-width:end */

/* op-blurb-two-rows: money blurbs ran FIVE rows or more (desk: .sponsor-row 6 rows at 900). Operator: "we should probably limit that to display only 2" — held to two rows in that width band only; the copy stays in the markup. */
@media (min-width:641px){
  .sponsor-row .sponsor-blurb{display:-webkit-box!important;-webkit-line-clamp:2!important;-webkit-box-orient:vertical!important;max-height:2lh!important;min-height:0!important;overflow:hidden!important}
}
/* op-blurb-two-rows:end */

/* op-hover-pad */
.cat-list > li > a{padding-right:clamp(12px,3.5vw,22px)!important}
/* op-hover-pad:end */

/* op-tablet-gutter — text never sits on the screen edge between the mobile guard and the max-width */
@media (min-width:681px) and (max-width:1299px){
  div.wrap > dl{padding-left:max(clamp(18px,4vw,40px), 18px);padding-right:max(clamp(18px,4vw,40px), 18px)}
}
/* op-tablet-gutter:end */

/* op-img-dims — intrinsic width/height reserve image space; the proven height:auto guard (zero specificity) */
:where(article.card > a > img,
  div.article-body > figure.article-figure.full > img,
  div.article-body > figure.article-figure.inset > img,
  div.feature-grid.wrap > figure.feature-figure > img,
  div.wrap > figure.article-figure.full > img,
  figure > a > img,
  section.lead-band.wrap > figure.lead-figure > img){height:auto}
/* op-img-dims:end */
