/* ISOLA — Blue Hour · dusk, film-forward. Tokens drive everything. */
:root{
  --paper:#0F2B3E; --paper-deep:#0A1F2E; --paper-raise:#132F44;
  --ink:#F2E7CF; --ink-soft:#C6D6DE; --muted:#9FB9C6; --faint:#7E97A5;
  --gold:#E4A93A; --pink:#EE9DB9;
  --acc-islands:#4E93B4; --acc-beaches:#2E8BA8; --acc-food:#E4A93A; --acc-cinema:#B65C7A; --acc-getting:#8CA3B0;
  --line:rgba(228,169,58,.25); --line-soft:rgba(228,169,58,.16);
  --serif:'Bodoni Moda',serif; --sans:'Archivo',sans-serif;
  --fs-body:1.175rem; --measure:72ch;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink-soft);font:400 var(--fs-body)/1.75 var(--sans);text-rendering:optimizeLegibility}
img{max-width:100%;display:block}
a{color:var(--gold);text-decoration:none}
a:hover{color:var(--ink)}
h1,h2,h3,h4{font-family:var(--serif);font-weight:400;color:var(--ink);line-height:1.12;margin:0;text-wrap:balance}
p{margin:0 0 1.3em}
.wrap{max-width:1280px;margin:0 auto;padding-inline:clamp(18px,4vw,56px)}
.kicker{font:600 .72rem/1 var(--sans);letter-spacing:.28em;text-transform:uppercase;color:var(--pink);margin:0 0 14px}
.kicker.gold{color:var(--gold)}
.meta{font:500 .8rem/1.6 var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--faint)}
.meta b{color:var(--muted);font-weight:600}
.btn-line{display:inline-flex;align-items:center;gap:12px;font:600 .78rem/1 var(--sans);letter-spacing:.22em;text-transform:uppercase;color:var(--gold)}
.btn-line::before{content:"";width:44px;height:1px;background:var(--gold)}
.btn-line:hover{color:var(--ink)}

/* ---------- masthead ---------- */
.site-head{border-bottom:1px solid var(--line);background:var(--paper)}
.site-head .wrap{display:flex;justify-content:space-between;align-items:center;gap:20px;padding-top:20px;padding-bottom:20px;flex-wrap:wrap}
.brand{font:400 1.5rem/1 var(--serif);letter-spacing:.34em;color:var(--ink)}
.brand:hover{color:var(--gold)}
.site-nav{display:flex;gap:26px;flex-wrap:wrap}
.site-nav a{font:600 .74rem/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--muted);padding:6px 0}
.site-nav a:hover{color:var(--ink)}
.site-nav a[aria-current]{color:var(--gold)}

/* ---------- homepage hero ---------- */
.hero{position:relative;min-height:78vh;display:flex;align-items:flex-end}
.hero>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.hero::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(15,43,62,.25),rgba(15,43,62,0) 30%,rgba(15,43,62,.9) 80%,var(--paper))}
.hero .wrap{position:relative;z-index:1;padding-bottom:56px;padding-top:220px}
.hero h1{font-size:clamp(2.5rem,5.4vw,4.2rem);max-width:17ch}
.hero .dek{font-size:1.2rem;line-height:1.6;color:var(--ink-soft);max-width:58ch;margin:20px 0 26px}

/* ---------- programme cards ---------- */
.band{padding:64px 0 24px}
.band-head{display:flex;align-items:baseline;gap:18px;border-bottom:1px solid var(--line);padding-bottom:16px;flex-wrap:wrap}
.band-head .title{font:italic 400 1.15rem/1 var(--serif);color:var(--pink)}
.band-head .sub{font:600 .7rem/1 var(--sans);letter-spacing:.2em;text-transform:uppercase;color:var(--faint)}
.programme{display:grid;grid-template-columns:repeat(3,1fr)}
.programme article{padding:30px 34px 36px 0;border-right:1px solid var(--line-soft);display:flex;flex-direction:column;gap:12px}
.programme article+article{padding-left:34px}
.programme article:last-child{border-right:0;padding-right:0}
.prog-num{font:400 2.6rem/1 var(--serif);color:rgba(238,157,185,.85)}
.programme h3{font-size:1.65rem;line-height:1.2}
.programme h3 a{color:var(--ink)}
.programme h3 a:hover{color:var(--gold)}
.programme p{color:var(--muted);font-size:1rem;flex:1;margin:0}

/* ---------- double feature ---------- */
.double{margin:44px 0 8px;background:linear-gradient(120deg,#16405C,#1C5D7A 55%,#7A3558);border-radius:8px;padding:40px 44px}
.double-head{display:flex;align-items:baseline;gap:16px;margin-bottom:24px;flex-wrap:wrap}
.double-head .t1{font:600 .72rem/1 var(--sans);letter-spacing:.26em;text-transform:uppercase;color:var(--gold)}
.double-head .t2{font:italic 400 1.05rem/1 var(--serif);color:var(--ink)}
.acts{display:grid;grid-template-columns:repeat(3,1fr)}
.act{padding:0 32px;border-right:1px solid rgba(242,231,207,.25)}
.act:first-child{padding-left:0}
.act:last-child{border-right:0;padding-right:0}
.act h3{font-size:1.35rem;margin-bottom:8px}
.act p{margin:0;font-size:1rem;color:#E3ECF0}

/* ---------- island at a glance ---------- */
.glance{padding:56px 0 8px}
.glance-card{display:grid;grid-template-columns:460px 1fr;gap:44px;align-items:center}
.glance-photo{border-radius:6px;overflow:hidden;aspect-ratio:4/3}
.glance-photo img{width:100%;height:100%;object-fit:cover}
.glance-tags{display:flex;align-items:center;gap:14px;margin-bottom:10px;flex-wrap:wrap}
.glance-group{font:600 .64rem/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--pink);border:1px solid rgba(238,157,185,.5);border-radius:20px;padding:6px 12px}
.glance-name{font:400 2.9rem/1 var(--serif);color:var(--ink);margin-bottom:24px}
.glance-facts{display:grid;grid-template-columns:1fr 1fr;gap:16px 30px}
.glance-facts>div{border-top:1px solid rgba(228,169,58,.3);padding-top:10px;font-size:1rem;color:var(--ink-soft)}
.glance-facts b{display:block;font:600 .68rem/1 var(--sans);letter-spacing:.2em;text-transform:uppercase;color:var(--gold);margin-bottom:6px}
.glance-tabs{display:flex;gap:10px;margin:0 0 30px;flex-wrap:wrap}
.glance input[type=radio]{position:absolute;opacity:0;pointer-events:none}
.glance-tabs label{font:600 .78rem/1 var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);border:1px solid var(--line);border-radius:20px;padding:10px 18px;cursor:pointer}
.glance-tabs label:hover{color:var(--ink);border-color:var(--gold)}
.glance-panel{display:none}
#gl-lampedusa:checked~.glance-body #glp-lampedusa,#gl-linosa:checked~.glance-body #glp-linosa,#gl-favignana:checked~.glance-body #glp-favignana,#gl-pantelleria:checked~.glance-body #glp-pantelleria{display:grid}
#gl-lampedusa:checked~.glance-tabs label[for=gl-lampedusa],#gl-linosa:checked~.glance-tabs label[for=gl-linosa],#gl-favignana:checked~.glance-tabs label[for=gl-favignana],#gl-pantelleria:checked~.glance-tabs label[for=gl-pantelleria]{background:var(--gold);border-color:var(--gold);color:#3B2C09}

/* ---------- the reel (feed) ---------- */
.reel-list{list-style:none;margin:0;padding:0}
.reel-list li{border-bottom:1px solid var(--line-soft)}
.reel-list a{display:flex;justify-content:space-between;gap:26px;align-items:baseline;padding:18px 0}
.reel-list .rl-t{font:400 1.35rem/1.3 var(--serif);color:var(--ink)}
.reel-list a:hover .rl-t{color:var(--gold)}
.reel-list .rl-m{font:500 .72rem/1.5 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--faint);white-space:nowrap}
.reel-more{display:none}
#reel-x{position:absolute;opacity:0;pointer-events:none}
#reel-x:checked~.reel-list .reel-more{display:block}
.reel-toggle{display:inline-flex;margin-top:20px;cursor:pointer}
.reel-toggle .show-less{display:none}
#reel-x:checked~.reel-toggle .show-more{display:none}
#reel-x:checked~.reel-toggle .show-less{display:inline-flex}

/* ---------- sponsors (intermission / closing credits) ---------- */
.sponsor-band{padding:56px 0 12px}
.sponsor-note{font-size:.95rem;color:var(--faint);max-width:64ch;margin:14px 0 24px}
.sponsor-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.sponsor-grid.cols5{grid-template-columns:repeat(5,1fr)}
.sponsor{display:flex;flex-direction:column;gap:10px;background:var(--paper-deep);border:1px solid var(--line-soft);border-radius:6px;padding:18px;min-height:96px;justify-content:center}
.sponsor:hover{border-color:var(--gold)}
.sponsor img{width:100%;max-height:64px;object-fit:contain}
.sponsor-blurb{font:400 .85rem/1.5 var(--sans);color:var(--muted);letter-spacing:0;text-transform:none}
.sponsor-blurb:empty{display:none}

/* ---------- footer ---------- */
.site-foot{border-top:1px solid var(--line);margin-top:64px;padding:44px 0 40px;background:var(--paper)}
.foot-cols{display:flex;justify-content:space-between;gap:40px;align-items:flex-start;flex-wrap:wrap}
.foot-nav{display:flex;gap:26px;flex-wrap:wrap;padding-top:8px}
.foot-nav a{font:600 .7rem/1 var(--sans);letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
.foot-nav a:hover{color:var(--ink)}
.disclaimer{font-size:.9rem;line-height:1.7;color:var(--faint);max-width:52ch;margin:14px 0 0}

/* ---------- category pages ---------- */
.cat-hero{padding:64px 0 40px;border-bottom:1px solid var(--line);background:linear-gradient(180deg,var(--paper-raise),var(--paper))}
.cat-hero h1{font-size:clamp(2.4rem,5vw,3.8rem)}
.cat-hero .dek{font-size:1.15rem;color:var(--muted);max-width:60ch;margin:16px 0 0}
.cat-list{list-style:none;margin:0;padding:44px 0 0;display:grid;grid-template-columns:repeat(2,1fr);gap:26px}
.cat-list a{display:flex;flex-direction:column;height:100%;background:var(--paper-deep);border:1px solid var(--line-soft);border-radius:6px;overflow:hidden}
.cat-list a:hover{border-color:var(--gold)}
.cat-list img{aspect-ratio:16/9;object-fit:cover;width:100%}
.cat-card-body{padding:22px 26px 24px;display:flex;flex-direction:column;gap:10px;flex:1}
.cat-list h3{font-size:1.55rem;line-height:1.22;min-height:2.44em}
.cat-list .brief{color:var(--muted);font-size:1rem;margin:0;flex:1}
.cat-list .meta{margin-top:auto}

/* ---------- post pages ---------- */
.post-hero{position:relative;min-height:64vh;display:flex;align-items:flex-end}
.post-hero>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.post-hero::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(15,43,62,.2),rgba(15,43,62,0) 32%,rgba(15,43,62,.92) 82%,var(--paper))}
.post-hero .wrap{position:relative;z-index:1;width:100%;padding-top:180px;padding-bottom:44px;text-align:center}
.post-hero h1{font-size:clamp(2.3rem,4.8vw,3.9rem);max-width:22ch;margin-inline:auto}
.post-hero .dek{font-size:1.18rem;line-height:1.6;color:var(--ink-soft);max-width:60ch;margin:16px auto 14px}
.post-hero .meta{justify-content:center}
.post-body{max-width:var(--measure);margin:0 auto;padding:52px clamp(18px,4vw,32px) 0;font-size:1.2rem}
.post-body>p{margin-bottom:1.4em}
.dropcap::first-letter{float:left;font:400 4.6em/.76 var(--serif);color:var(--gold);padding:.09em .12em 0 0}
.crosshead{display:flex;align-items:baseline;gap:16px;margin:2.2em 0 .8em}
.crosshead .n{font:400 1.5rem/1 var(--serif);color:var(--pink)}
.crosshead h2{font-size:1.9rem}
.post-body em{color:var(--ink)}
.post-body a{border-bottom:1px solid var(--line)}
.post-body a:hover{border-color:var(--ink)}

/* ---------- palette components ---------- */
.lead{font-size:1.32rem;line-height:1.65;color:var(--ink);font-style:italic;font-family:var(--serif)}
.pullquote{margin:2.4em auto;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:1.4em 0;text-align:center}
.pullquote p{font:italic 400 1.75rem/1.45 var(--serif);color:var(--ink);max-width:28ch;margin:0 auto}
.blockquote{margin:2em 0;border-left:2px solid var(--pink);padding:.4em 0 .4em 26px}
.blockquote p{font:italic 400 1.3rem/1.6 var(--serif);color:var(--ink);margin:0 0 .5em}
.blockquote cite{font:500 .8rem/1 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--faint);font-style:normal}
.callout{margin:2em 0;background:var(--paper-raise);border:1px solid var(--line-soft);border-left:3px solid var(--gold);border-radius:4px;padding:20px 26px}
.callout p{margin:0;font-size:1.05rem;color:var(--ink-soft)}
.note{font-size:1rem;color:var(--muted);border-top:1px dashed var(--line);padding-top:14px;margin:2em 0}
.note::before{content:"Note — ";font:600 .72rem/1 var(--sans);letter-spacing:.18em;text-transform:uppercase;color:var(--gold)}

table{width:100%;border-collapse:collapse;margin:2em 0;font-size:1rem}
.datatable th,.versus th{font:600 .7rem/1.4 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--gold);text-align:left;padding:12px 14px;border-bottom:1px solid var(--line)}
.datatable td,.versus td{padding:12px 14px;border-bottom:1px solid var(--line-soft);color:var(--ink-soft);vertical-align:top}
.datatable tr:nth-child(even) td{background:rgba(10,31,46,.5)}
.versus td:first-child,.versus th:first-child{color:var(--ink);font-weight:600}
.versus thead th{font-family:var(--serif);font-size:1.15rem;letter-spacing:0;text-transform:none;color:var(--ink)}

.statrow{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:16px;margin:2.2em 0}
.statblock{background:var(--paper-deep);border:1px solid var(--line-soft);border-radius:6px;padding:20px 22px;display:flex;flex-direction:column;gap:6px}
.stat-num{font:400 2.4rem/1 var(--serif);color:var(--gold)}
.stat-label{font:500 .82rem/1.5 var(--sans);color:var(--muted)}

.timeline{list-style:none;margin:2.2em 0;padding:0;border-left:1px solid var(--line)}
.timeline li{position:relative;padding:0 0 22px 28px}
.timeline li::before{content:"";position:absolute;left:-4.5px;top:.5em;width:8px;height:8px;border-radius:50%;background:var(--gold)}
.timeline .t-when{display:block;font:600 .78rem/1.5 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--pink)}
.timeline .t-what{display:block;font-size:1.05rem;color:var(--ink-soft)}

.chart{margin:2.4em 0}
.chart svg{width:100%;height:auto;display:block}
.chart figcaption,.article-figure figcaption,.map-figure figcaption{font:400 .9rem/1.6 var(--sans);color:var(--faint);padding-top:12px;border-bottom:1px solid var(--line-soft);padding-bottom:12px}
.chart .c-label{font:500 .72rem var(--sans);fill:var(--muted)}
.chart .c-val{font:600 .74rem var(--sans);fill:var(--ink)}
.chart .c-bar{fill:var(--gold)}
.chart .c-bar.alt{fill:var(--acc-beaches)}
.chart .c-line{stroke:var(--gold);stroke-width:2.5;fill:none}
.chart .c-grid{stroke:rgba(228,169,58,.15)}

.article-figure{margin:2.4em 0}
.article-figure img{width:100%;border-radius:4px}
.article-figure.bleed{margin-inline:calc(50% - 50vw);max-width:100vw}
.article-figure.bleed img{border-radius:0;max-height:72vh;object-fit:cover}
.article-figure.bleed figcaption{padding-inline:clamp(18px,4vw,56px)}
.gallery{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:2.4em 0}
.gallery figure{margin:0}
.gallery img{border-radius:4px;aspect-ratio:4/3;object-fit:cover;width:100%}
.gallery figcaption{font:400 .85rem/1.5 var(--sans);color:var(--faint);padding-top:8px}

.map-figure{margin:2.4em 0}
.map-slot{aspect-ratio:16/9;border:1px dashed var(--line);border-radius:6px;background:var(--paper-deep) repeating-linear-gradient(45deg,transparent,transparent 12px,rgba(228,169,58,.04) 12px,rgba(228,169,58,.04) 24px);display:flex;align-items:center;justify-content:center}
.map-slot::after{content:none;font:600 .72rem/1 var(--sans);letter-spacing:.18em;text-transform:uppercase;color:var(--faint)}

.keyfacts{margin:2.4em 0;background:var(--paper-deep);border:1px solid var(--line-soft);border-radius:6px;padding:24px 28px}
.keyfacts h3{font:600 .72rem/1 var(--sans);letter-spacing:.24em;text-transform:uppercase;color:var(--gold);margin:0 0 14px}
.keyfacts dl{margin:0;display:grid;grid-template-columns:1fr 1fr;gap:14px 28px}
.keyfacts div{border-top:1px solid var(--line-soft);padding-top:10px}
.keyfacts dt{font:italic 400 1.08rem/1.3 var(--serif);color:var(--ink)}
.keyfacts dd{margin:4px 0 0;font-size:.95rem;line-height:1.55;color:var(--muted)}

.profile-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:18px;margin:2.2em 0}
.profile-card{background:var(--paper-deep);border:1px solid var(--line-soft);border-radius:6px;padding:22px 24px}
.profile-card .p-photo{width:72px;height:72px;border-radius:50%;object-fit:cover;margin-bottom:14px}
.profile-card h3{font-size:1.3rem;margin-bottom:2px}
.profile-card .p-role{font:600 .7rem/1.5 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--pink);margin:0 0 10px}
.profile-card p{font-size:.95rem;line-height:1.6;color:var(--muted);margin:0}
.profile-card .p-links{margin-top:12px}
.profile-card .p-attr{font-size:.8rem;color:var(--faint)}
.org-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;margin:2.2em 0}
.org-card{display:flex;flex-direction:column;gap:6px;background:var(--paper-deep);border:1px solid var(--line-soft);border-radius:6px;padding:18px 20px}
.org-card:hover{border-color:var(--gold)}
.org-logo{width:44px;height:44px;object-fit:contain}
.org-name{font:600 1rem/1.3 var(--sans);color:var(--ink)}
.org-host{font:500 .78rem/1 var(--sans);color:var(--faint)}
.entity-ref{white-space:nowrap;border-bottom:1px dotted var(--gold)}
.further-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;margin:2.2em 0}
.further-grid a{background:var(--paper-deep);border:1px solid var(--line-soft);border-radius:6px;padding:18px 20px;font:400 1.15rem/1.35 var(--serif);color:var(--ink)}
.further-grid a:hover{border-color:var(--gold)}

.related{max-width:var(--measure);margin:56px auto 0;padding:34px clamp(18px,4vw,32px) 0;border-top:1px solid var(--line)}
.related h2{font:600 .72rem/1 var(--sans);letter-spacing:.24em;text-transform:uppercase;color:var(--faint);margin-bottom:18px}
.related-links{list-style:none;margin:0;padding:0;display:grid;gap:12px}
.related-links a{display:block;border-left:2px solid var(--gold);padding:2px 0 2px 18px;font:400 1.3rem/1.35 var(--serif);color:var(--ink)}
.related-links a:hover{color:var(--gold)}
.related-links .rl-sec{display:block;font:600 .68rem/1.8 var(--sans);letter-spacing:.18em;text-transform:uppercase;color:var(--faint)}

/* ---------- static pages ---------- */
.page-body{max-width:var(--measure);margin:0 auto;padding:64px clamp(18px,4vw,32px) 0}
.page-body h1{font-size:clamp(2.2rem,4.5vw,3.4rem);margin-bottom:.5em}
.contact-form{display:grid;gap:16px;margin:2em 0;max-width:560px}
.contact-form label{font:600 .72rem/1 var(--sans);letter-spacing:.18em;text-transform:uppercase;color:var(--gold)}
.contact-form input,.contact-form textarea{width:100%;background:var(--paper-deep);border:1px solid var(--line-soft);border-radius:4px;color:var(--ink);font:400 1.05rem/1.5 var(--sans);padding:12px 14px}
.contact-form .send{justify-self:start;background:var(--gold);color:#3B2C09;border:0;border-radius:4px;font:600 .78rem/1 var(--sans);letter-spacing:.18em;text-transform:uppercase;padding:14px 22px;cursor:not-allowed;opacity:.75}

/* ---------- styleguide ---------- */
.sg-section{border-top:1px solid var(--line);padding:44px 0 10px;margin-top:44px}
.sg-section>h2{font-size:2rem;margin-bottom:.4em}
.sg-label{font:600 .7rem/1 var(--sans);letter-spacing:.22em;text-transform:uppercase;color:var(--pink);margin:2.4em 0 1em}

/* ---------- responsive ---------- */
@media (max-width:980px){
  .programme{grid-template-columns:1fr}
  .programme article{border-right:0;border-bottom:1px solid var(--line-soft);padding:26px 0}
  .programme article+article{padding-left:0}
  .acts{grid-template-columns:1fr;gap:22px}
  .act{padding:0;border-right:0}
  .act+.act{border-top:1px solid rgba(242,231,207,.25);padding-top:22px}
  .glance-card{grid-template-columns:1fr}
  .glance-photo{aspect-ratio:16/9}
  .sponsor-grid,.sponsor-grid.cols5{grid-template-columns:repeat(2,1fr)}
  .cat-list{grid-template-columns:1fr}
  .cat-list h3{min-height:0}
}
@media (max-width:640px){
  :root{--fs-body:1.08rem}
  .datatable,.versus{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}
  .datatable td,.datatable th,.versus td,.versus th{min-width:110px}
  .hero .wrap{padding-top:140px}
  .hero .dek,.post-hero .dek{font-size:1.05rem}
  .glance-facts,.keyfacts dl{grid-template-columns:1fr}
  .reel-list a{flex-direction:column;gap:4px}
  .reel-list .rl-m{white-space:normal}
  .sponsor-grid,.sponsor-grid.cols5{grid-template-columns:1fr 1fr}
  .gallery{grid-template-columns:1fr}
  .double{padding:28px 22px}
  .pullquote p{font-size:1.4rem}
  .post-hero .wrap{padding-top:120px}
}
@media (max-width:420px){
  .sponsor-grid,.sponsor-grid.cols5{grid-template-columns:1fr}
}

/* sp-roll-normalize: a logo roll keeps object-fit and loses its geometry.
   It used to set width:auto, height:46px, max-width:172px and min-width:30px, which let
   every plate in the roll shrink-wrap its own artwork — evbb measured 62px next to 204px
   in the SAME ROW. The operator's rule is that the dark ground is unified whatever the
   logo's size, so the plate cannot be sized by the logo. Geometry belongs to Design. */
[class~="roll"] .sponsor img,[class*="roll-"] .sponsor img,[class*="-roll"] .sponsor img{object-fit:contain;background:transparent}

/* 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-grid .sponsor.sponsor img{height:64px!important}
.sponsor-grid.cols5 .sponsor.sponsor img{height:49px!important}

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

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

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

/* op-article-head: the article header followed the text column (728px) and was left behind when the text went to 858px. Operator: "article header page with title + meta info that are super shrinked". Its containers now follow the text again by the text's own factor. */
@media (min-width:1024px){
  p.dek.lead{max-width:min(827px, 100%)!important}
}
@media (min-width:1600px){
  p.dek.lead{max-width:min(calc(clamp(827px, 57.431vw, 992px) + 0px), 100%)!important}
}
/* op-article-head:end */

/* op-blurb-two-rows: money blurbs ran FIVE rows or more (desk: .sponsor-grid.cols5 5 rows at 1024). 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-grid.cols5 .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-heading-levels */
h2:where(.rt-h3){font-family: var(--serif); font-weight: 400; color: var(--ink); line-height: 1.12; margin: 0px; text-wrap: balance;}
.programme h2:where(.rt-h3){font-size: 1.65rem; line-height: 1.2;}
.programme h2:where(.rt-h3) a{color: var(--ink);}
.programme h2:where(.rt-h3) a:hover{color: var(--gold);}
.act h2:where(.rt-h3){font-size: 1.35rem; margin-bottom: 8px;}
.cat-list h2:where(.rt-h3){font-size: 1.55rem; line-height: 1.22; min-height: 2.44em;}
@media (max-width: 980px){.cat-list h2:where(.rt-h3){min-height: 0px;}}
/* op-heading-levels:end */

/* op-img-dims — intrinsic width/height reserve image space; the proven height:auto guard (zero specificity) */
:where(article > div.post-hero > img,
  div.glance-card.glance-panel > div.glance-photo > img,
  li > a > img,
  main > section.hero > img){height:auto}
/* op-img-dims:end */

/* op-locator-map — real-geodata locators (Natural Earth 10m · US Census 500k · OSM); the svg is meet-scaled into Design's own box,
   pins and labels are HTML at a fixed px size placed with container-query units, so they stay legible on phones */
.map-slot.is-mapped{position:relative;container-type:size;overflow:hidden;padding:0!important;background:#0a1f2e!important;background-image:none!important;border:0!important;color:#f2e7cf}
.map-slot.is-mapped::before,.map-slot.is-mapped::after{content:none!important;display:none!important}
.map-slot.is-mapped>svg.mk{position:absolute;inset:0;width:100%;height:100%;display:block}
.map-slot.is-mapped>span{--s:min(100cqw / var(--vw), 100cqh / var(--vh));position:absolute;left:calc(50% + (var(--x) - var(--vw) / 2) * var(--s));top:calc(50% + (var(--y) - var(--vh) / 2) * var(--s));width:0;height:0;pointer-events:none;white-space:nowrap;font-family:var(--sans);line-height:1;letter-spacing:0;text-transform:none;font-style:normal}
.map-slot.is-mapped>.mk-p i{position:absolute;left:-5px;top:-5px;width:10px;height:10px;border-radius:50%;background:#e4a93a;box-shadow:0 0 0 2px #0a1f2e}
.map-slot.is-mapped>.mk-p b{position:absolute;font-size:12px;font-weight:700;line-height:15px;color:#f2e7cf;text-shadow:0 0 2px #0a1f2e,0 0 2px #0a1f2e,0 0 3px #0a1f2e,0 0 4px #0a1f2e}
.map-slot.is-mapped>.mk-p.r b{left:10px;top:-7.5px}.map-slot.is-mapped>.mk-p.l b{right:10px;top:-7.5px}.map-slot.is-mapped>.mk-p.t b{left:0;transform:translateX(-50%);bottom:8px}.map-slot.is-mapped>.mk-p.b b{left:0;transform:translateX(-50%);top:8px}.map-slot.is-mapped>.mk-p.tr b{left:5px;bottom:4px}.map-slot.is-mapped>.mk-p.br b{left:5px;top:4px}.map-slot.is-mapped>.mk-p.tl b{right:5px;bottom:4px}.map-slot.is-mapped>.mk-p.bl b{right:5px;top:4px}.map-slot.is-mapped>.mk-p.ru b{left:10px;top:-15.5px}.map-slot.is-mapped>.mk-p.rd b{left:10px;top:.5px}.map-slot.is-mapped>.mk-p.lu b{right:10px;top:-15.5px}.map-slot.is-mapped>.mk-p.ld b{right:10px;top:.5px}.map-slot.is-mapped>.mk-p.tt b{left:0;transform:translateX(-50%);bottom:13px}.map-slot.is-mapped>.mk-p.bb b{left:0;transform:translateX(-50%);top:13px}
.map-slot.is-mapped>.mk-a{font-size:11px;font-style:italic;letter-spacing:.04em;color:#f2e7cf;opacity:.62;display:flex;justify-content:center;align-items:center}
.map-slot.is-mapped>.mk-a.mk-ref{font-style:normal;opacity:.7;justify-content:flex-start;padding-left:6px;align-items:center}
.map-slot.is-mapped>.mk-a.mk-sea{color:#f2e7cf;opacity:.85}
.map-slot.is-mapped>.mk-a.mk-line{font-style:normal;font-weight:700;opacity:.9;color:#e4a93a;text-shadow:0 0 2px #0a1f2e,0 0 3px #0a1f2e}
.map-slot.is-mapped>.mk-r::before{content:'';position:absolute;left:-2.5px;top:-2.5px;width:5px;height:5px;border-radius:50%;background:#f2e7cf;opacity:.55}
/* op-locator-map:end */
