/* Cumbres Iberoamericanas — El Corredor */
:root{
  --paper:#F6F1E4; --paper2:#EFE7D3; --paper3:#E9E0CB;
  --ink:#22303F; --body:#33405C; --muted:#8A7D5E;
  --cobalt:#1E4B8F; --ochre:#C89B3C; --slate:#33405C; --dark:#1B2733;
  --serif:'Newsreader',Georgia,serif; --disp:'Eczar',Georgia,serif; --sans:'Work Sans',system-ui,sans-serif;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--serif);font-size:18px;line-height:1.6}
img{max-width:100%;display:block}
a{color:var(--cobalt);text-decoration:none}
a:hover{color:var(--ochre)}
.wrap{max-width:1200px;margin-inline:auto;padding-inline:clamp(20px,4vw,44px)}
.prose{max-width:72ch;margin-inline:auto;padding-inline:clamp(20px,4vw,44px)}
.tile-rule{height:12px;background:repeating-linear-gradient(45deg,var(--cobalt) 0 7px,var(--paper) 7px 14px)}
.gold-rule{width:110px;height:4px;background:var(--ochre);border:0;margin:18px 0 0}
.kicker{font-family:var(--sans);font-size:11px;font-weight:600;letter-spacing:.24em;text-transform:uppercase;color:var(--ochre)}
.kicker a{color:inherit}

/* ---------- header ---------- */
.masthead{ text-align:center; padding:34px 20px 0 }
.masthead .brand{font-family:var(--serif);font-weight:500;font-size:clamp(20px,3.4vw,32px);letter-spacing:.15em;text-transform:uppercase;color:var(--cobalt)}
.brand .tile{display:inline-block;width:.32em;height:.32em;background:var(--ochre);transform:rotate(45deg);margin:0 .45em .08em}
.standing{font-family:var(--sans);font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--muted);margin-top:10px}
.mainnav{display:flex;flex-wrap:wrap;justify-content:center;gap:14px 30px;padding:18px 20px 20px;font-family:var(--sans);font-size:11.5px;font-weight:500;letter-spacing:.14em;text-transform:uppercase}
.mainnav a{color:var(--cobalt);padding-bottom:3px}
.mainnav a[aria-current]{border-bottom:2px solid var(--ochre)}
.masthead--bar{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:16px clamp(20px,4vw,44px);text-align:left}
.masthead--bar .brand{font-size:16px}
.masthead--bar .mainnav{padding:0;justify-content:flex-end;gap:10px 22px}

/* ---------- hero / rooms ---------- */
.hero{position:relative}
.hero img{width:100%;height:min(66vh,620px);object-fit:cover}
.hero .hero-cap{position:absolute;left:0;right:0;bottom:0;padding:80px clamp(20px,4vw,44px) 26px;background:linear-gradient(to top,rgba(27,39,51,.78),rgba(27,39,51,0));color:var(--paper)}
.hero .hero-cap p{max-width:800px;margin:0;font-style:italic;font-size:clamp(18px,2.4vw,24px);line-height:1.4}
.credit{font-family:var(--sans);font-size:10px;letter-spacing:.06em;color:var(--muted);margin-top:8px}
.room{padding:64px 0 56px;border-top:1px solid rgba(34,48,63,.14)}
.room-name{font-family:var(--disp);font-weight:600;color:var(--cobalt);font-size:clamp(40px,6.6vw,84px);line-height:1;margin:0}
.room-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(24px,4vw,56px);align-items:center;margin-top:34px}
.room-grid img{width:100%;height:380px;object-fit:cover;border:8px solid var(--cobalt)}
.room-blurb{font-size:19px;line-height:1.6;color:var(--body)}
.room-list{list-style:none;margin:18px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}
.room-list a{font-family:var(--disp);font-size:19px;color:var(--ink)}
.room-list a:hover{color:var(--cobalt)}
.room-list .rt{font-family:var(--sans);font-size:11px;color:var(--muted);letter-spacing:.08em;margin-left:10px;white-space:nowrap}
.room .enter{display:inline-block;margin-top:18px;font-family:var(--sans);font-size:11.5px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--ink);border-bottom:2px solid var(--ochre);padding-bottom:3px}
@media (max-width:820px){.room-grid{grid-template-columns:1fr}.room-grid img{height:260px}}

/* featured */
.featured{padding:70px 0 64px}
.featured .fx{display:grid;grid-template-columns:1.15fr 1fr;gap:clamp(24px,4vw,56px);align-items:center}
.featured h2{font-family:var(--disp);font-weight:600;font-size:clamp(34px,5vw,64px);line-height:1.04;margin:14px 0 0}
.featured h2 a{color:var(--ink)}
.featured .stand{font-size:20px;line-height:1.55;color:var(--body);margin:18px 0 0}
.featured img{width:100%;height:440px;object-fit:cover;border:8px solid var(--cobalt)}
@media (max-width:820px){.featured .fx{grid-template-columns:1fr}.featured img{height:280px}}

/* ---------- sponsors ---------- */
.sponsors{background:var(--paper2);padding:56px 0 60px;border-block:1px solid rgba(34,48,63,.14)}
.sponsors-head{text-align:center;max-width:560px;margin:0 auto 30px}
.sponsors-head h2{font-family:var(--disp);font-weight:600;font-size:34px;color:var(--cobalt);margin:8px 0 0}
.sponsors-head p{font-style:italic;color:var(--body);font-size:15.5px;margin:10px 0 0}
.sponsors-run{display:flex;flex-wrap:wrap;justify-content:center;gap:22px 26px}
.sponsor{display:flex;flex-direction:column;gap:9px;flex:0 1 236px;min-width:216px;color:var(--ink)}
.sponsor img{background:var(--dark);width:100%;height:64px;padding:10px 16px;object-fit:contain;object-position:center}
.sponsor .sponsor-blurb{display:block;min-height:2.6em;font-size:13.5px;font-style:italic;line-height:1.45;color:var(--body);border-bottom:1px dotted rgba(34,48,63,.35);padding-bottom:6px}
.sponsor.feat{flex-basis:300px;min-width:260px}
.sponsor.feat img{height:84px}
@media (max-width:520px){.sponsor,.sponsor.feat{flex-basis:100%;min-width:0}.sponsor img{height:72px}}

/* ---------- map ---------- */
.map-band{padding:64px 0}
.map-band .map-frame{margin-top:28px;background:var(--paper2);border:1px solid rgba(34,48,63,.18);padding:clamp(10px,2vw,26px)}
.map-band svg{width:100%;height:auto;display:block}
.map-note{font-family:var(--sans);font-size:11px;letter-spacing:.06em;color:var(--muted);margin-top:10px}

/* ---------- article ---------- */
.art-hero img{width:100%;height:min(58vh,540px);object-fit:cover}
.art-head{padding:44px 0 8px}
.art-head h1{font-family:var(--disp);font-weight:600;color:var(--ink);font-size:clamp(34px,5.6vw,68px);line-height:1.04;margin:12px 0 0;max-width:20ch}
.byline{font-family:var(--sans);font-size:12.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-top:22px}
.lead{font-size:clamp(20px,2.6vw,24px);line-height:1.5;color:var(--body);font-style:italic;max-width:62ch;margin:22px 0 0}
.art-body{padding:16px 0 24px}
.art-body .prose > p{font-size:19px;line-height:1.75;color:var(--body);margin:0 0 1.2em}
.art-body h2{font-family:var(--disp);font-weight:600;font-size:clamp(25px,3vw,33px);color:var(--cobalt);line-height:1.15;margin:1.9em 0 .7em;padding-top:.8em;position:relative}
.art-body h2::before{content:"";position:absolute;top:0;left:0;width:64px;height:4px;background:var(--ochre)}
.art-body em{font-style:italic}
.art-body a{border-bottom:2px solid var(--ochre);color:var(--ink)}
.art-body a:hover{color:var(--cobalt)}

/* notes interruption band */
.notes-band{background:var(--paper2);border-block:1px solid rgba(34,48,63,.14);padding:44px 0 48px;margin:44px 0}
.notes-band .nb-kicker{font-family:var(--sans);font-size:10.5px;font-weight:600;letter-spacing:.24em;text-transform:uppercase;color:var(--ochre)}
.notes-band h3{font-family:var(--disp);font-weight:600;font-size:clamp(24px,3vw,32px);color:var(--cobalt);margin:6px 0 0}
.term-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:22px 34px;margin-top:26px}
.term-grid .term b{display:block;font-family:var(--disp);font-weight:600;font-size:18.5px;color:var(--ink)}
.term-grid .term span{display:block;font-size:15px;line-height:1.55;color:var(--body);margin-top:4px}

/* timeline */
.timeline{list-style:none;margin:26px 0 0;padding:0 0 0 26px;border-left:2px solid var(--ochre);display:flex;flex-direction:column;gap:20px}
.timeline li{position:relative}
.timeline li::before{content:"";position:absolute;left:-32px;top:7px;width:10px;height:10px;background:var(--ochre);transform:rotate(45deg)}
.timeline .t-when{display:block;font-family:var(--sans);font-size:12px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--cobalt)}
.timeline .t-what{display:block;font-size:16px;line-height:1.55;color:var(--body);margin-top:3px}

/* figures */
.article-figure{margin:40px 0}
.article-figure img{width:100%;max-height:560px;object-fit:cover;border:8px solid var(--cobalt)}
.article-figure figcaption{font-style:italic;font-size:14.5px;color:var(--muted);margin-top:10px}
.gallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:18px;margin:40px 0}
.gallery figure{margin:0}
.gallery img{width:100%;height:240px;object-fit:cover;border:6px solid var(--cobalt)}
.gallery figcaption{font-style:italic;font-size:13.5px;color:var(--muted);margin-top:8px}
.map-figure{margin:40px 0}
.map-figure .map-slot{min-height:260px;border:1px dashed rgba(30,75,143,.5);display:flex;align-items:center;justify-content:center;font-family:var(--sans);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:rgba(30,75,143,.6);text-align:center;padding:16px}
.map-figure figcaption{font-style:italic;font-size:14.5px;color:var(--muted);margin-top:10px}

/* quotes / callouts */
.pullquote{margin:44px 0;padding:6px 0 6px 26px;border-left:6px solid var(--ochre)}
.pullquote p{font-family:var(--disp);font-weight:500;font-size:clamp(22px,2.8vw,29px);line-height:1.35;color:var(--cobalt);margin:0}
.blockquote{margin:40px 0;padding:26px 30px;background:var(--paper2);border-top:4px solid var(--ochre)}
.blockquote p{font-size:19px;font-style:italic;line-height:1.6;color:var(--body);margin:0}
.blockquote cite{display:block;font-family:var(--sans);font-style:normal;font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-top:12px}
.callout{margin:40px 0;padding:24px 28px;background:var(--paper2);border:1px solid rgba(30,75,143,.35);border-left:6px solid var(--cobalt)}
.callout p{margin:0;font-size:17px;line-height:1.6;color:var(--ink)}
.note{font-family:var(--sans);font-size:14px;line-height:1.6;color:var(--muted);border-top:1px dotted rgba(34,48,63,.4);padding-top:10px;margin:32px 0}

/* tables */
.versus,.datatable{width:100%;border-collapse:collapse;margin:36px 0;font-size:16px}
.versus caption,.datatable caption{text-align:left;font-family:var(--sans);font-size:11px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--ochre);margin-bottom:10px}
.versus th,.datatable th{font-family:var(--sans);font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--cobalt);text-align:left;padding:10px 14px;border-bottom:2px solid var(--cobalt)}
.versus td,.datatable td{padding:12px 14px;border-bottom:1px solid rgba(34,48,63,.16);color:var(--body);vertical-align:top;line-height:1.5}
.versus td:first-child{font-family:var(--disp);color:var(--ink)}
.datatable tbody tr:nth-child(even){background:var(--paper2)}
.table-scroll{overflow-x:auto}

/* stats */
.statrow{display:flex;flex-wrap:wrap;gap:20px;margin:36px 0}
.statblock{flex:1 1 150px;background:var(--paper2);border-top:4px solid var(--ochre);padding:18px 20px}
.stat-num{display:block;font-family:var(--disp);font-weight:600;font-size:40px;color:var(--cobalt);line-height:1}
.stat-label{display:block;font-family:var(--sans);font-size:12.5px;line-height:1.45;color:var(--body);margin-top:8px}

/* charts */
.chart{margin:40px 0}
.chart svg{width:100%;height:auto;display:block}
.chart figcaption{font-style:italic;font-size:14.5px;color:var(--muted);margin-top:10px}

/* cards / references */
.profile-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:20px;margin:36px 0}
.profile-card{background:var(--paper2);border:1px solid rgba(34,48,63,.16);padding:22px;display:flex;flex-direction:column;gap:8px}
.profile-card .p-photo{width:76px;height:76px;object-fit:cover;border-radius:50%;border:3px solid var(--cobalt)}
.profile-card h3{font-family:var(--disp);font-weight:600;font-size:20px;margin:4px 0 0;color:var(--ink)}
.profile-card .p-role{font-family:var(--sans);font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--ochre);margin:0}
.profile-card p{font-size:14.5px;line-height:1.55;color:var(--body);margin:0}
.profile-card .p-links{margin-top:auto;padding-top:8px}
.profile-card.no-photo .p-photo{display:none}
.org-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;margin:36px 0}
.org-card{display:flex;align-items:center;gap:12px;background:var(--paper2);border:1px solid rgba(34,48,63,.16);padding:12px 16px;color:var(--ink)}
.org-card .org-logo{width:38px;height:38px;object-fit:contain;background:var(--dark);padding:5px;flex:none}
.org-card.no-logo .org-logo{display:none}
.org-card .org-name{font-family:var(--disp);font-size:16px;line-height:1.25}
.org-card .org-host{font-family:var(--sans);font-size:11px;color:var(--muted);margin-left:auto;white-space:nowrap}
.entity-ref{border-bottom:2px solid var(--ochre);color:var(--ink);font-weight:500}
.further-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:16px;margin:36px 0}
.further-grid a{display:flex;flex-direction:column;background:var(--paper2);border-top:4px solid var(--cobalt);padding:18px 20px;color:var(--ink);font-family:var(--disp);font-size:18px;line-height:1.3;min-height:104px}
.further-grid a small{font-family:var(--sans);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--ochre);margin-bottom:8px}
.further-grid a .fg-meta{font-family:var(--sans);font-size:11px;color:var(--muted);margin-top:auto;padding-top:10px}

/* prev-next */
.pn{border-top:1px solid rgba(34,48,63,.16);padding:34px 0 10px;margin-top:20px}
.pn-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}
.pn a{display:flex;flex-direction:column;gap:6px;color:var(--ink)}
.pn a:hover .pn-title{color:var(--cobalt)}
.pn .pn-k{font-family:var(--sans);font-size:10.5px;font-weight:600;letter-spacing:.22em;text-transform:uppercase;color:var(--ochre)}
.pn .pn-title{font-family:var(--disp);font-weight:600;font-size:clamp(19px,2.4vw,24px);line-height:1.2}
.pn .pn-sec{font-family:var(--sans);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.pn .next{text-align:right;align-items:flex-end}
@media (max-width:640px){.pn-grid{grid-template-columns:1fr}.pn .next{text-align:left;align-items:flex-start}}

/* related */
.related{padding:8px 0 56px}
.related h2{font-family:var(--disp);font-weight:600;font-size:26px;color:var(--cobalt);margin:0 0 4px}
.related-links{list-style:none;margin:16px 0 0;padding:0;display:flex;flex-direction:column;gap:12px}
.related-links a{font-family:var(--disp);font-size:20px;color:var(--ink)}
.related-links a:hover{color:var(--cobalt)}
.related-links .rt{font-family:var(--sans);font-size:11px;color:var(--muted);letter-spacing:.08em;margin-left:10px;white-space:nowrap}

/* category pages */
.cat-hero img{width:100%;height:min(48vh,440px);object-fit:cover}
.cat-head{padding:48px 0 10px}
.cat-blurb{font-size:20px;font-style:italic;line-height:1.55;color:var(--body);max-width:62ch;margin:22px 0 0}
.cat-list{list-style:none;margin:0;padding:34px 0 64px;display:flex;flex-direction:column}
.cat-list li{border-top:1px solid rgba(34,48,63,.16);padding:28px 0}
.cat-list h3{font-family:var(--disp);font-weight:600;font-size:clamp(24px,3vw,32px);line-height:1.15;margin:0}
.cat-list h3 a{color:var(--ink)}
.cat-list h3 a:hover{color:var(--cobalt)}
.cat-list .dek{font-size:17px;font-style:italic;line-height:1.55;color:var(--body);margin:10px 0 0;max-width:70ch}
.cat-list .meta{font-family:var(--sans);font-size:11.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-top:10px}

/* plain pages */
.page-pad{padding:56px 0 72px}
.page-pad h1{font-family:var(--disp);font-weight:600;font-size:clamp(34px,5vw,58px);color:var(--ink);margin:0}
.page-pad p{font-size:18.5px;line-height:1.7;color:var(--body)}

/* footer */
footer.site{background:var(--dark);color:var(--paper);margin-top:40px}
footer.site .fwrap{padding:48px clamp(20px,4vw,44px) 40px;max-width:1200px;margin-inline:auto;text-align:center}
footer.site .brand{color:var(--paper);font-size:19px}
footer.site .standing{color:rgba(246,241,228,.65)}
footer.site nav{display:flex;flex-wrap:wrap;justify-content:center;gap:12px 26px;margin:22px 0 26px;font-family:var(--sans);font-size:11px;letter-spacing:.14em;text-transform:uppercase}
footer.site nav a{color:var(--paper)}
footer.site .disclaimer{font-family:var(--sans);font-size:11px;line-height:1.7;color:rgba(246,241,228,.55);max-width:640px;margin:0 auto}


/* 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-center-round: logos sat top-left in their panels and the dark logo grounds had hard 90° corners
   against a soft cream page. Centre the mark, round the ground. */
.sponsor,[data-partner]{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}
.sponsor img,[data-partner] img{margin:0 auto;align-self:center;border-radius:6px}
.sponsor,[data-partner],[class*="logo-plate"],[class*="logo-box"]{border-radius:8px;overflow:hidden}
.sponsor-blurb{text-align:center;width:100%}

/* 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. */
.sponsors-run .sponsor.sponsor img{height:64px!important;display:block!important;width:236px!important;max-width:100%!important;flex:none!important}

/* op-money-columns: the supporters block ran one tile per row — 11 tiles,
   1961px at 390, 22% of the whole page. Two columns bring it to
   1161px (41% shorter). Checked before writing: no new overflow, smallest mark still
   167px wide, longest blurb 3 lines, tile heights 158-179px.
   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 (.sponsors-run), 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){
  .sponsors-run{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;column-gap:26px!important}
    .sponsors-run > *{min-width:0!important;max-width:100%;width:auto!important;flex:0 1 auto!important}
    .sponsors-run > * *{min-width:0!important;max-width:100%}
    .sponsors-run img,.sponsors-run svg{max-width:100%;height:auto}
  .sponsors-run .sponsor-blurb{display:-webkit-box!important;-webkit-line-clamp:3!important;-webkit-box-orient:vertical;overflow:hidden!important}
}

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

/* op-article-width: the article column was capped at 625px (82 characters per line) at every desktop width. Operator: "it should utilize more space". Widened through max-width 72ch (declared in .prose) to ~102 characters per line in this build's own prose font, never past the edge Design's own content already reaches beside it. Above 1600 the column and the prose type grow together (up to 1.2x). Nothing below 1024 changes. Originals: migration/_backups/article_width/. */
@media (min-width:1024px){
  div.art-body div.prose{max-width:min(861px, 100%)!important}
}
@media (min-width:1600px){
  div.art-body div.prose{max-width:min(clamp(861px, 59.792vw, 1033px), 100%)!important}
  div.art-body div.prose > :is(p:not([class])){font-size:clamp(19px,1.3194vw,22.8px)!important}
}
/* op-article-width:end */
/* op-heading-levels */
.cat-list h2:where(.rt-h3){font-family: var(--disp); font-weight: 600; font-size: clamp(24px, 3vw, 32px); line-height: 1.15; margin: 0px;}
.cat-list h2:where(.rt-h3) a{color: var(--ink);}
.cat-list h2:where(.rt-h3) a:hover{color: var(--cobalt);}
.featured h1:where(.rt-h2){font-family: var(--disp); font-weight: 600; font-size: clamp(34px, 5vw, 64px); line-height: 1.04; margin: 14px 0px 0px;}
.featured h1:where(.rt-h2) a{color: var(--ink);}
/* op-heading-levels:end */

/* op-img-dims — intrinsic width/height reserve image space; the proven height:auto guard (zero specificity) */
:where(body > div.art-hero > img,
  body > div.cat-hero > img,
  body > div.hero > img,
  div.fx > div > img,
  div.prose > figure.article-figure > img,
  div.room-grid > div > img){height:auto}
/* op-img-dims:end */
