/* ------------------------------------------------------------------
   Alexandria Film — nordic minimal cinema journal
   ice white paper · cool slate ink · pale blue accents
------------------------------------------------------------------- */

:root{
  --paper:#f4f7fa;
  --card:#ffffff;
  --ink:#101820;
  --slate:#17222e;
  --slate-2:#1f2c3a;
  --body:#2c3844;
  --muted:#5a6674;
  --hairline:#d9e2ec;
  --tint:#e3edf6;
  --tint-2:#d3e2f0;
  --accent:#3f74ad;
  --accent-deep:#2c567f;
  --accent-ice:#a9c6e2;
  --ok:#3f7d6a;
  --radius:4px;
  --font-display:"Instrument Serif",Georgia,serif;
  --font-body:"Newsreader",Georgia,serif;
  --font-ui:"Archivo","Helvetica Neue",Arial,sans-serif;
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{
  margin:0;
  background:var(--paper);
  color:var(--body);
  font-family:var(--font-body);
  font-size:23px;
  line-height:1.7;
  text-rendering:optimizeLegibility;
}
img{max-width:100%;height:auto;display:block}
a{color:var(--accent-deep);text-decoration-color:var(--accent-ice);text-underline-offset:3px;transition:color .15s ease,text-decoration-color .15s ease}
a:hover{color:var(--accent);text-decoration-color:var(--accent)}
a:focus-visible,button:focus-visible,summary:focus-visible,.reel:focus-visible,.next-card:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}
h1,h2,h3,h4{color:var(--ink);font-family:var(--font-display);font-weight:400;line-height:1.12;margin:0 0 .45em;text-wrap:balance}
p{margin:0 0 1.15em;text-wrap:pretty}
figure{margin:0}

.wrap{max-width:1180px;margin:0 auto;padding:0 24px}
.wrap-narrow{max-width:820px;margin:0 auto;padding:0 24px}

/* kickers / labels */
.kicker{
  font-family:var(--font-ui);font-size:16px;font-weight:600;
  letter-spacing:.22em;text-transform:uppercase;color:var(--accent-deep);
  display:flex;align-items:center;gap:14px;margin:0 0 18px;
}
.kicker::before{content:"";width:34px;height:2px;background:var(--accent-ice);flex:none}
.kicker--bare::before{display:none}
.on-dark .kicker,.kicker.on-dark{color:var(--accent-ice)}

/* =============== header =============== */
.site-header{
  background:var(--paper);
  border-bottom:1px solid var(--hairline);
  position:relative;z-index:50;
}
.header-inner{
  max-width:1180px;margin:0 auto;padding:18px 24px;
  display:flex;align-items:center;justify-content:space-between;gap:24px;
}
.wordmark{display:inline-flex;align-items:baseline;gap:10px;text-decoration:none;color:var(--ink)}
.wordmark:hover{color:var(--ink)}
.wordmark .wm-main{font-family:var(--font-display);font-style:italic;font-size:34px;line-height:1}
.wordmark .wm-sub{
  font-family:var(--font-ui);font-size:14px;font-weight:700;letter-spacing:.34em;
  text-transform:uppercase;color:var(--accent-deep);
  border:1px solid var(--accent-ice);padding:4px 8px 3px;border-radius:2px;
}
.site-nav{display:flex;align-items:center;gap:8px;font-family:var(--font-ui)}
.site-nav a{
  font-size:17px;font-weight:500;color:var(--body);text-decoration:none;
  padding:11px 14px;border-radius:var(--radius);transition:background-color .15s ease,color .15s ease;
}
.site-nav a:hover{background:var(--tint);color:var(--ink)}
.site-nav a[aria-current="page"]{color:var(--ink);box-shadow:inset 0 -2px 0 var(--accent)}
.site-nav .nav-cta{
  background:var(--ink);color:#fff;margin-left:8px;padding:11px 20px;
}
.site-nav .nav-cta:hover{background:var(--slate-2);color:#fff}
.site-nav .nav-cta[aria-current="page"]{color:#fff;box-shadow:none}

/* mobile nav */
.nav-drawer{display:none}
@media (max-width:860px){
  .site-nav{display:none}
  .nav-drawer{display:block;position:relative}
  .nav-drawer>summary{
    list-style:none;cursor:pointer;font-family:var(--font-ui);font-weight:600;font-size:16px;
    letter-spacing:.14em;text-transform:uppercase;color:var(--ink);
    border:1px solid var(--hairline);border-radius:var(--radius);
    padding:12px 16px;display:flex;align-items:center;gap:10px;min-height:44px;
    background:var(--card);
  }
  .nav-drawer>summary::-webkit-details-marker{display:none}
  .nav-drawer>summary::before{content:"";width:18px;height:2px;background:var(--ink);box-shadow:0 6px 0 var(--ink),0 -6px 0 var(--ink)}
  .nav-drawer[open]>summary{background:var(--tint)}
  .drawer-menu{
    position:absolute;right:0;top:calc(100% + 10px);min-width:230px;
    background:var(--card);border:1px solid var(--hairline);border-radius:6px;
    box-shadow:0 18px 40px rgba(16,24,32,.14);padding:8px;display:grid;
  }
  .drawer-menu a{
    font-family:var(--font-ui);font-size:18px;font-weight:500;color:var(--body);
    text-decoration:none;padding:13px 14px;border-radius:var(--radius);min-height:44px;
  }
  .drawer-menu a:hover{background:var(--tint);color:var(--ink)}
  .drawer-menu a[aria-current="page"]{color:var(--accent-deep);font-weight:700}
}

/* =============== buttons =============== */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  font-family:var(--font-ui);font-size:17px;font-weight:600;line-height:1;
  padding:16px 28px;border-radius:var(--radius);text-decoration:none;
  border:1px solid transparent;min-height:48px;transition:background-color .15s ease,color .15s ease,border-color .15s ease;
}
.btn-solid{background:var(--accent);color:#fff}
.btn-solid:hover{background:var(--accent-deep);color:#fff}
.btn-ink{background:var(--ink);color:#fff}
.btn-ink:hover{background:var(--slate-2);color:#fff}
.btn-ghost{border-color:var(--accent-ice);color:var(--accent-deep);background:transparent}
.btn-ghost:hover{background:var(--tint);color:var(--accent-deep)}
.on-dark .btn-ghost{border-color:rgba(255,255,255,.35);color:#e9f1f8}
.on-dark .btn-ghost:hover{background:rgba(255,255,255,.08);color:#fff}
.arrow::after{content:"→";font-family:var(--font-ui)}

/* =============== hero =============== */
.hero{background:var(--slate);color:#c9d6e2;overflow:hidden}
.hero-grid{
  max-width:1180px;margin:0 auto;padding:88px 24px 64px;
  display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:56px;align-items:center;
}
.hero h1{
  color:#fff;font-size:clamp(58px,8.5vw,112px);margin:0 0 26px;letter-spacing:-.01em;
}
.hero h1 em{font-style:italic;color:var(--accent-ice)}
.hero .lede{font-size:25px;line-height:1.65;color:#b9c8d6;max-width:34ch}
.hero-actions{display:flex;flex-wrap:wrap;gap:14px;margin-top:34px}
.hero-figure{position:relative;align-self:end}
.hero-figure img{width:100%;aspect-ratio:4/5;object-fit:cover;border-radius:6px 6px 0 0}
.hero-figure figcaption{
  position:absolute;left:14px;bottom:14px;background:rgba(16,24,32,.82);color:#dce7f1;
  font-family:var(--font-ui);font-size:16px;padding:8px 14px;border-radius:3px;letter-spacing:.06em;
}
.hero-meta{
  font-family:var(--font-ui);font-size:16px;letter-spacing:.24em;text-transform:uppercase;
  color:var(--accent-ice);margin:0 0 22px;display:flex;gap:14px;align-items:center;
}
.hero-meta::before{content:"";width:34px;height:2px;background:var(--accent)}
/* marquee strip of lobby cards under hero */
.ticket-strip{background:var(--slate);border-top:1px solid rgba(255,255,255,.1)}
.ticket-strip-inner{
  max-width:1180px;margin:0 auto;padding:0 24px;
  display:grid;grid-template-columns:repeat(3,minmax(0,1fr));
}
.ticket{
  padding:26px 26px 30px;border-left:1px solid rgba(255,255,255,.1);
}
.ticket:first-child{border-left:0;padding-left:0}
.ticket .t-no{font-family:var(--font-ui);font-size:15px;letter-spacing:.3em;color:#7e93a8;text-transform:uppercase}
.ticket h3{color:#fff;font-size:27px;margin:10px 0 8px}
.ticket p{color:#a7b7c6;font-size:18px;line-height:1.55;margin:0;font-family:var(--font-ui)}

/* =============== sections =============== */
.section{padding:96px 0}
.section-tint{background:var(--tint)}
.section-dark{background:var(--slate);color:#c2d0dd}
.section-dark h2,.section-dark h3{color:#fff}
.section-head{display:flex;align-items:end;justify-content:space-between;gap:24px;margin-bottom:52px;flex-wrap:wrap}
.section-head h2{font-size:clamp(40px,4.6vw,58px);margin:0}
.section-head .head-link{font-family:var(--font-ui);font-size:17px;font-weight:600;white-space:nowrap}

/* feature duo (tonight's double bill) */
.duo{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:32px}
.bill{
  background:var(--card);border:1px solid var(--hairline);border-radius:6px;overflow:hidden;
  display:flex;flex-direction:column;transition:border-color .15s ease,box-shadow .15s ease;
}
.bill:hover{border-color:var(--accent-ice);box-shadow:0 14px 30px rgba(16,24,32,.08)}
.bill img{aspect-ratio:16/9;object-fit:cover;width:100%}
.bill-body{padding:34px 36px 38px;display:flex;flex-direction:column;gap:14px;flex:1}
.bill .b-label{font-family:var(--font-ui);font-size:15px;font-weight:700;letter-spacing:.26em;text-transform:uppercase;color:var(--accent-deep)}
.bill h3{font-size:35px;margin:0}
.bill h3 a{color:var(--ink);text-decoration:none}
.bill h3 a:hover{color:var(--accent-deep)}
.bill p{font-size:20px;line-height:1.65;color:var(--muted);margin:0}
.bill .b-go{margin-top:auto;padding-top:10px;font-family:var(--font-ui);font-weight:600;font-size:17px}

/* programme (running order) */
.programme{display:grid;border-top:1px solid var(--hairline)}
.reel{
  display:grid;grid-template-columns:110px minmax(0,1fr) 220px 56px;gap:28px;align-items:center;
  padding:26px 8px;border-bottom:1px solid var(--hairline);text-decoration:none;color:inherit;transition:background-color .15s ease,padding-left .15s ease;
}
.reel:hover{background:var(--card);padding-left:16px}
.reel .r-no{font-family:var(--font-ui);font-size:16px;font-weight:600;letter-spacing:.18em;color:var(--muted)}
.reel .r-no b{display:block;font-size:30px;font-weight:500;color:var(--ink);letter-spacing:0;font-family:var(--font-display)}
.reel h3{font-size:30px;margin:0 0 4px;color:var(--ink);letter-spacing:.008em}
.reel:hover h3{color:var(--accent-deep)}
.reel .r-tag{font-family:var(--font-ui);font-size:16px;color:var(--muted);margin:0}
.reel .r-thumb{width:100%;aspect-ratio:16/10;object-fit:cover;border-radius:4px}
.reel .r-arrow{font-family:var(--font-ui);font-size:24px;color:var(--accent);text-align:right}
@media (max-width:760px){
  .reel{grid-template-columns:64px minmax(0,1fr);gap:16px}
  .reel .r-thumb,.reel .r-arrow{display:none}
  .reel .r-no b{font-size:24px}
  .reel h3{font-size:24px}
}

/* rooms (what's in the building) */
.rooms{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;border:1px solid var(--hairline);border-radius:6px;overflow:hidden;background:var(--card)}
.room{padding:44px 40px 48px;border-left:1px solid var(--hairline)}
.room:first-child{border-left:0}
.room .rm-no{font-family:var(--font-display);font-size:52px;color:var(--accent-ice);line-height:1}
.room h3{font-size:31px;margin:16px 0 10px}
.room h3 a{color:var(--ink);text-decoration:none}
.room h3 a:hover{color:var(--accent-deep)}
.room p{font-size:19px;line-height:1.65;color:var(--muted);margin:0}

/* festival calendar strip */
.fest-cal{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:1px;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.12);border-radius:6px;overflow:hidden}
.fest-cell{background:var(--slate);padding:22px 20px 24px;min-height:132px}
.fest-cell .fc-month{font-family:var(--font-ui);font-size:15px;font-weight:700;letter-spacing:.26em;color:#7e93a8}
.fest-cell .fc-name{display:block;color:#e9f1f8;font-family:var(--font-display);font-size:24px;line-height:1.2;margin-top:10px;text-decoration:none}
a.fc-name:hover{color:var(--accent-ice)}
.fest-cell .fc-place{font-family:var(--font-ui);font-size:15px;color:#8fa2b5;margin-top:6px}
@media (max-width:1000px){.fest-cal{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:560px){.fest-cal{grid-template-columns:repeat(2,minmax(0,1fr))}.fest-cell{min-height:0}}

/* lobby (testimonials) */
.lobby{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:32px}
.lobby blockquote{
  margin:0;background:var(--card);border:1px solid var(--hairline);border-radius:6px;
  padding:36px 34px;position:relative;
}
.lobby blockquote::before{
  content:"“";position:absolute;top:6px;left:26px;font-family:var(--font-display);
  font-size:86px;line-height:1;color:var(--tint-2);
}
.lobby p{font-size:20px;line-height:1.65;position:relative;margin:14px 0 22px}
.lobby cite{font-style:normal;font-family:var(--font-ui);font-size:16px;color:var(--muted)}
.lobby cite b{display:block;color:var(--ink);font-size:17px}

/* =============== partner cards (reserved slots) =============== */
.partner{
  background:var(--card);border:1px solid var(--hairline);border-radius:6px;
  padding:26px 26px 28px;display:flex;flex-direction:column;gap:14px;transition:border-color .15s ease;
}
.partner:hover{border-color:var(--accent-ice)}
.partner-logo{
  width:100%;height:64px;border-radius:4px;background:var(--paper);
  border:1px solid var(--hairline);
  display:flex;align-items:center;justify-content:center;padding:10px 18px;
}
.partner-logo img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain}
.partner-name{font-family:var(--font-ui);font-size:20px;font-weight:700;margin:0;line-height:1.3}
.partner-name a{color:var(--ink);text-decoration:none}
.partner-name a:hover{color:var(--accent-deep);text-decoration:underline;text-decoration-color:var(--accent-ice)}
.partner-toggle{position:absolute;opacity:0;pointer-events:none}
.partner-desc{
  font-family:var(--font-ui);font-size:16.5px;line-height:1.6;color:var(--muted);margin:0;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.partner-toggle:checked ~ .partner-desc{display:block;-webkit-line-clamp:unset;overflow:visible}
.partner-more{
  font-family:var(--font-ui);font-size:15px;font-weight:600;color:var(--accent-deep);
  cursor:pointer;align-self:flex-start;min-height:24px;
}
.partner-more:hover{color:var(--accent)}
.partner-more .less{display:none}
.partner-toggle:checked ~ .partner-more .more{display:none}
.partner-toggle:checked ~ .partner-more .less{display:inline}
.partner-cta{
  margin-top:auto;align-self:flex-start;
  font-family:var(--font-ui);font-size:16px;font-weight:600;text-decoration:none;
  color:var(--accent-deep);border:1px solid var(--accent-ice);border-radius:var(--radius);
  padding:11px 18px;min-height:44px;display:inline-flex;align-items:center;
}
.partner-cta:hover{background:var(--tint);color:var(--accent-deep)}
/* section A: intermission band */
.sponsor-a .partners-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:26px}
.sponsor-a .partner{position:relative;box-shadow:0 10px 26px rgba(44,86,127,.07)}
/* section B: partners & friends — quieter ledger */
.sponsor-b .partners-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:20px}
.sponsor-b .partner{position:relative;background:transparent;border:0;border-top:2px solid var(--ink);border-radius:0;padding:22px 4px 6px}
.sponsor-b .partner-logo{background:var(--card)}
.sponsor-b .partner-cta{border:0;padding:10px 0;text-decoration:underline;text-decoration-color:var(--accent-ice)}
.sponsor-b .partner-cta:hover{background:transparent;color:var(--accent)}
@media (max-width:1000px){
  .sponsor-a .partners-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .sponsor-b .partners-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media (max-width:640px){
  .sponsor-a .partners-grid{grid-template-columns:1fr}
  .sponsor-b .partners-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:420px){
  .sponsor-b .partners-grid{grid-template-columns:1fr}
}

/* =============== footer =============== */
.site-footer{background:var(--slate);color:#a9bac9}
.footer-contact{
  max-width:1180px;margin:0 auto;padding:80px 24px 56px;
  display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:56px;align-items:start;
}
.footer-contact h2{color:#fff;font-size:clamp(38px,4.5vw,56px);margin:0 0 16px}
.footer-contact h2 em{color:var(--accent-ice)}
.footer-contact .f-lede{font-size:21px;line-height:1.65;max-width:44ch;margin:0 0 30px}
.f-mail{
  display:inline-block;font-family:var(--font-display);font-size:clamp(26px,3.4vw,38px);
  color:#fff;text-decoration:underline;text-decoration-color:rgba(169,198,226,.5);text-underline-offset:6px;
}
.f-mail:hover{color:var(--accent-ice)}
.f-details{
  display:grid;gap:22px;font-family:var(--font-ui);font-size:17px;line-height:1.55;
  border-left:1px solid rgba(255,255,255,.15);padding-left:40px;
}
.f-details dt{font-size:14px;font-weight:700;letter-spacing:.24em;text-transform:uppercase;color:#7e93a8;margin-bottom:6px}
.f-details dd{margin:0;color:#d4e0ea}
.f-details a{color:#d4e0ea;text-decoration-color:rgba(169,198,226,.4)}
.f-details a:hover{color:#fff}
.footer-base{border-top:1px solid rgba(255,255,255,.12)}
.footer-base-inner{
  max-width:1180px;margin:0 auto;padding:22px 24px;
  display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 26px;
  font-family:var(--font-ui);font-size:16px;
}
.footer-links{display:flex;flex-wrap:wrap;gap:4px 24px;margin:0;padding:0;list-style:none}
.footer-links a{color:#a9bac9;text-decoration:none;padding:6px 0;display:inline-block}
.footer-links a:hover{color:#fff;text-decoration:underline}
.footer-base .copyright{color:#7e93a8}
@media (max-width:860px){
  .footer-contact{grid-template-columns:1fr;gap:34px;padding:56px 24px 40px}
  .f-details{border-left:0;padding-left:0;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
  .footer-base-inner{justify-content:flex-start}
}

/* =============== page hero (inner pages) =============== */
.page-head{background:var(--slate);color:#b9c8d6;padding:74px 0 78px}
.page-head h1{color:#fff;font-size:clamp(46px,6.5vw,84px);margin:0 0 18px}
.page-head .lede{font-size:24px;line-height:1.65;max-width:60ch;color:#b9c8d6;margin:0}
.crumbs{font-family:var(--font-ui);font-size:16px;letter-spacing:.06em;color:#7e93a8;margin:0 0 26px;display:flex;gap:10px;flex-wrap:wrap}
.crumbs a{color:#a9bac9;text-decoration:none}
.crumbs a:hover{color:#fff;text-decoration:underline}
.crumbs span::before{content:"/";margin-right:10px;color:#54677a}

/* =============== article base =============== */
.post-hero{background:var(--slate);color:#b9c8d6;overflow:hidden}
.post-hero-inner{max-width:1180px;margin:0 auto;padding:70px 24px 0;display:grid;gap:40px}
.post-hero .p-kicker{font-family:var(--font-ui);font-size:15px;font-weight:700;letter-spacing:.28em;text-transform:uppercase;color:var(--accent-ice);margin:0 0 20px;display:flex;gap:14px;align-items:center}
.post-hero .p-kicker::before{content:"";width:34px;height:2px;background:var(--accent)}
.post-hero h1{color:#fff;font-size:clamp(44px,6vw,80px);margin:0 0 20px;max-width:20ch}
.post-hero .p-standfirst{font-size:24px;line-height:1.65;color:#b9c8d6;max-width:56ch;margin:0 0 46px}
.post-hero .p-img{margin:0 -24px}
.post-hero .p-img img{width:100%;max-height:560px;object-fit:cover}
.post-hero figcaption,.figcap{
  font-family:var(--font-ui);font-size:16px;color:var(--muted);padding:12px 2px 0;line-height:1.5;
}
.post-hero figcaption{color:#8fa2b5;padding:12px 24px 26px}

.prose{max-width:820px;margin:0 auto;padding:84px 24px}
.prose>h2{font-size:clamp(36px,4.2vw,48px);margin:1.9em 0 .6em}
.prose>h2:first-child{margin-top:0}
.prose>h3{font-size:clamp(29px,3.4vw,36px);margin:1.7em 0 .55em}
.prose .lead{font-size:26px;line-height:1.65;color:var(--ink)}
.prose .lead::first-letter,
.dropcap::first-letter{
  font-family:var(--font-display);font-size:4.1em;line-height:.78;color:var(--accent-deep);
  float:left;padding:8px 14px 0 0;
}
.prose ul,.prose ol{padding-left:1.2em;margin:0 0 1.3em}
.prose li{margin-bottom:.55em}
.prose figure{margin:2.4em 0}
.prose figure img{width:100%;border-radius:6px}
.pullquote{
  margin:2.6em 0;padding:10px 0 10px 34px;border-left:3px solid var(--accent);
  font-family:var(--font-display);font-size:clamp(28px,3.4vw,36px);font-style:italic;
  line-height:1.35;color:var(--ink);
}
.pullquote .pq-src{display:block;margin-top:14px;font-family:var(--font-ui);font-style:normal;font-size:16px;letter-spacing:.1em;color:var(--muted)}

/* takeaways / at-a-glance box */
.takeaways{
  background:var(--tint);border:1px solid var(--tint-2);border-radius:6px;
  padding:34px 36px;margin:2.6em 0;
}
.takeaways h4{font-family:var(--font-ui);font-size:16px;font-weight:700;letter-spacing:.24em;text-transform:uppercase;color:var(--accent-deep);margin:0 0 16px}
.takeaways ul{margin:0;padding:0;list-style:none;display:grid;gap:12px}
.takeaways li{font-size:20px;line-height:1.55;padding-left:26px;position:relative;margin:0}
.takeaways li::before{content:"";position:absolute;left:0;top:.62em;width:12px;height:2px;background:var(--accent)}

/* quick facts row */
.facts-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1px;background:var(--hairline);border:1px solid var(--hairline);border-radius:6px;overflow:hidden;margin:2.4em 0}
.fact{background:var(--card);padding:20px 22px}
.fact .f-k{font-family:var(--font-ui);font-size:14px;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}
.fact .f-v{font-family:var(--font-display);font-size:26px;color:var(--ink);line-height:1.2;margin-top:6px}

/* numbered entry (list posts) */
.entry{border-top:1px solid var(--hairline);padding-top:2.2em;margin-top:2.6em}
.entry .e-head{display:flex;align-items:baseline;gap:20px}
.entry .e-no{font-family:var(--font-display);font-size:54px;color:var(--accent-ice);line-height:1;flex:none}
.entry h3{margin:0}
.entry .e-meta{font-family:var(--font-ui);font-size:16px;color:var(--muted);margin:8px 0 18px;display:flex;flex-wrap:wrap;gap:8px 22px}
.entry .e-meta span{white-space:nowrap}

/* info card (real-world add-on) */
.info-card{
  background:var(--card);border:1px solid var(--hairline);border-left:3px solid var(--accent);
  border-radius:0 6px 6px 0;padding:22px 26px;margin:1.8em 0;
  font-family:var(--font-ui);font-size:17px;line-height:1.6;color:var(--muted);
  display:grid;gap:6px;
}
.info-card b{color:var(--ink)}
.info-card a{font-weight:600}

/* map embed */
.map-embed{margin:2.4em 0;border:1px solid var(--hairline);border-radius:6px;overflow:hidden}
.map-embed iframe{display:block;width:100%;height:380px;border:0}

/* award category blocks (oscars) */
.award{
  border:1px solid var(--hairline);border-radius:6px;background:var(--card);
  padding:26px 30px;margin:0 0 22px;
}
.award h4{font-family:var(--font-ui);font-size:16px;font-weight:700;letter-spacing:.22em;text-transform:uppercase;color:var(--accent-deep);margin:0 0 14px}
.award .winner{
  font-family:var(--font-display);font-size:26px;color:var(--ink);line-height:1.3;
  display:flex;align-items:baseline;gap:12px;margin-bottom:12px;
}
.award .winner .w-badge{
  flex:none;font-family:var(--font-ui);font-size:13px;font-weight:700;letter-spacing:.18em;
  text-transform:uppercase;color:var(--ok);border:1px solid currentColor;border-radius:3px;padding:3px 8px;
  position:relative;top:-4px;
}
.award ul{margin:0;padding:0;list-style:none;font-family:var(--font-ui);font-size:17px;color:var(--muted);display:grid;gap:6px}
.award-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;margin:2em 0}
.award-grid .award{margin:0}
@media (max-width:760px){.award-grid{grid-template-columns:1fr}}

/* calendar chips (festivals post) */
.when-chip{
  display:inline-flex;align-items:center;gap:8px;font-family:var(--font-ui);font-size:15px;font-weight:700;
  letter-spacing:.14em;text-transform:uppercase;color:var(--accent-deep);
  background:var(--tint);border-radius:999px;padding:6px 16px;
}

/* footer next-read */
.next-read{background:var(--tint);border-top:1px solid var(--tint-2)}
.next-read-inner{max-width:1180px;margin:0 auto;padding:64px 24px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:32px}
.next-card{background:var(--card);border:1px solid var(--hairline);border-radius:6px;padding:32px 34px;text-decoration:none;display:block;transition:border-color .15s ease,transform .15s ease}
.next-card:hover{border-color:var(--accent-ice);transform:translateY(-2px)}
.next-card .n-label{font-family:var(--font-ui);font-size:14px;font-weight:700;letter-spacing:.26em;text-transform:uppercase;color:var(--muted)}
.next-card h3{font-size:29px;margin:12px 0 0;color:var(--ink)}
.next-card:hover h3{color:var(--accent-deep)}
@media (max-width:700px){.next-read-inner{grid-template-columns:1fr;padding:44px 24px}}

/* =============== blog index =============== */
.blog-list{max-width:1180px;margin:0 auto;padding:70px 24px 100px;display:grid;gap:40px}
.blog-row{
  display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:0;
  background:var(--card);border:1px solid var(--hairline);border-radius:6px;overflow:hidden;transition:border-color .15s ease,box-shadow .15s ease;
}
.blog-row:hover{border-color:var(--accent-ice);box-shadow:0 14px 30px rgba(16,24,32,.08)}
.blog-row:nth-child(even){grid-template-columns:minmax(0,7fr) minmax(0,5fr)}
.blog-row:nth-child(even) .blog-row-media{order:2}
.blog-row-media img{width:100%;height:100%;min-height:280px;object-fit:cover}
.blog-row-body{padding:44px 46px;display:flex;flex-direction:column;gap:14px}
.blog-row .br-meta{font-family:var(--font-ui);font-size:15px;font-weight:700;letter-spacing:.24em;text-transform:uppercase;color:var(--accent-deep);display:flex;gap:18px;flex-wrap:wrap}
.blog-row .br-meta .br-no{color:var(--muted)}
.blog-row h2{font-size:clamp(30px,3.6vw,42px);margin:0}
.blog-row h2 a{color:var(--ink);text-decoration:none}
.blog-row h2 a:hover{color:var(--accent-deep)}
.blog-row p{font-size:20px;line-height:1.65;color:var(--muted);margin:0}
.blog-row .br-go{margin-top:auto;padding-top:8px;font-family:var(--font-ui);font-size:17px;font-weight:600}
@media (max-width:860px){
  .blog-row,.blog-row:nth-child(even){grid-template-columns:1fr}
  .blog-row:nth-child(even) .blog-row-media{order:0}
  .blog-row-media img{min-height:0;aspect-ratio:16/9}
  .blog-row-body{padding:30px 26px 34px}
}

/* =============== contact page =============== */
.contact-split{max-width:1180px;margin:0 auto;padding:84px 24px;display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:64px;align-items:start}
.contact-copy{font-size:23px}
.contact-copy h2{font-size:clamp(32px,3.8vw,42px);margin:1.6em 0 .5em}
.contact-copy h2:first-child{margin-top:0}
.contact-panel{position:sticky;top:24px;display:grid;gap:22px}
.contact-card{
  background:var(--slate);color:#c2d0dd;border-radius:6px;padding:40px 38px;
}
.contact-card h3{color:#fff;font-size:32px;margin:0 0 10px}
.contact-card p{font-family:var(--font-ui);font-size:17px;line-height:1.6;margin:0 0 24px;color:#a9bac9}
.contact-card .c-mail{display:inline-block;font-family:var(--font-display);font-size:clamp(24px,2.6vw,30px);color:#fff;text-decoration:underline;text-decoration-color:rgba(169,198,226,.5);text-underline-offset:6px;overflow-wrap:anywhere}
.contact-card .c-mail:hover{color:var(--accent-ice)}
.contact-card dl{margin:30px 0 0;display:grid;gap:16px;font-family:var(--font-ui);font-size:16.5px}
.contact-card dt{font-size:13.5px;font-weight:700;letter-spacing:.22em;text-transform:uppercase;color:#7e93a8;margin-bottom:4px}
.contact-card dd{margin:0;color:#d4e0ea}
.tip-card{
  background:var(--card);border:1px solid var(--hairline);border-radius:6px;padding:32px 34px;
}
.tip-card h3{font-size:27px;margin:0 0 8px}
.tip-card p{font-family:var(--font-ui);font-size:17px;color:var(--muted);line-height:1.6;margin:0 0 20px}
@media (max-width:920px){
  .contact-split{grid-template-columns:1fr;gap:40px}
  .contact-panel{position:static}
}

/* =============== responsive globals =============== */
@media (max-width:1000px){
  .duo{grid-template-columns:1fr}
  .rooms{grid-template-columns:1fr}
  .room{border-left:0;border-top:1px solid var(--hairline)}
  .room:first-child{border-top:0}
  .lobby{grid-template-columns:1fr}
}
@media (max-width:860px){
  body{font-size:22px}
  .section{padding:64px 0}
  .hero-grid{grid-template-columns:1fr;padding-top:60px;gap:40px}
  .hero .lede{max-width:none}
  .hero-figure img{aspect-ratio:16/10}
  .ticket-strip-inner{grid-template-columns:1fr}
  .ticket{border-left:0;border-top:1px solid rgba(255,255,255,.1);padding-left:0;padding-right:0}
  .ticket:first-child{border-top:0}
  .prose{padding:56px 24px}
  .post-hero-inner{padding-top:52px}
}
@media (max-width:480px){
  .wordmark .wm-main{font-size:28px}
  .wordmark .wm-sub{letter-spacing:.22em;padding:3px 6px 2px;font-size:12.5px}
  .hero h1{font-size:52px}
  .btn{width:100%;}
  .hero-actions .btn{width:auto;flex:1}
}

/* 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}

/* sp-contain-guard: sponsor logos are wordmarks — never object-fit:cover (crops).
   object-fit ONLY. This block used to also set width:auto, padding:4px 10px,
   max-width:calc(100% - 20px) and min/max-height, which overrode Design's own frame and
   let every plate shrink-wrap its logo — the recurring "inconsistent sizing" and
   "lacks padding". Geometry belongs to Design. */
.sponsor img,.sponsor-box img,.sp-logo img{object-fit:contain!important;display:block;margin-left:auto;margin-right:auto;align-self:center}

/* sp-mark-align: marks sit CENTRED in their box. Placement only — Design's size,
   padding, panel and object-fit are untouched. */
.sponsor img,.sponsor-box img,.sp-logo img{object-position:center!important;margin-left:auto!important;margin-right:auto!important;display:block}
.sponsor .sp-logo,.sponsor-box{display:flex;align-items:center;justify-content:center}

/* sp-tile-uniform: a slot never grows to fill its row — every tile the same width in
   every row, whatever the count. Only flex-grow is touched. */
.sponsor{flex-grow:0!important}
.sponsor.lead-line,.sponsor.feat.lead-line{flex-grow:1!important}
.sponsor:not(.lead-line){flex-basis:var(--sp-tile,232px)!important}
/* =============== partner cards (reserved slots) =============== */
.partner > .sponsor{flex:0 0 auto!important}
.partner-logo{flex-wrap:wrap!important}
.partner-logo > .sponsor{flex:1 1 var(--sp-min,220px)!important;min-width:min(220px,100%)!important}
.sponsor:not(.lead-line){grid-column:span 1!important;grid-row:span 1!important}

/* sp-blurb-stack: a slot holding BOTH a mark and our copy stacks them —
   a fixed-height row clips the mark once the copy is un-hidden. */
.sponsor:has(> img):has(> .sponsor-blurb:not(:empty)){flex-direction:column!important;align-items:flex-start!important;justify-content:flex-start!important;height:auto!important;min-height:0!important;overflow:visible!important;gap:8px}
.sponsor:has(> img):has(> .sponsor-blurb:not(:empty)) > img{align-self:flex-start}

/* 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-size: the design never sized .sponsor-blurb, so it inherited body copy.
   Relative, so it still follows the design's scale. */
.sponsor .sponsor-blurb{font-size:.8em;line-height:1.45}
.sponsor .sp-brand{font-weight:700}

/* sp-tile-fit: a slot fills its track, keeps a symmetric inset, and cannot be inflated
   by one long line of our copy. */
.sponsor.sponsor{width:100%!important;box-sizing:border-box!important;align-self:stretch!important;align-items:center!important;height:auto!important;min-height:0!important;overflow:hidden}
.sponsor.sponsor{justify-content:center!important}
:has(> .sponsor.sponsor){align-items:stretch!important}
.sponsor.sponsor .sponsor-name{min-width:0!important;overflow-wrap:anywhere}
.sponsor.sponsor > img{flex:0 0 auto!important;align-self:center!important}
.sponsor.sponsor > .sponsor-txt,.sponsor.sponsor > span:not(.sponsor-name):not(.sponsor-box):not(.sp-logo):not(.sponsor__logo){flex:1 1 auto!important;min-width:0!important}
.sponsor.sponsor .sponsor-blurb{display:-webkit-box!important;-webkit-line-clamp:5;-webkit-box-orient:vertical;overflow:hidden;margin:0!important}
/* the mobile un-clamp is retired: the operator asked for "2-3 rows max" on phones, which is
   what the desktop rule above already does — so mobile simply keeps it. */
@media (max-width:640px){.sponsor.sponsor .sponsor-blurb{-webkit-line-clamp:3!important;display:-webkit-box!important;-webkit-box-orient:vertical!important;overflow:hidden!important}}

/* 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-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. */
.partners-grid .partner .partner-logo.partner-logo{background:#121013!important;padding:8px 12px!important;box-sizing:border-box!important}
.partners-grid .partner .partner-logo.partner-logo{display:block!important;width:100%!important}
.partners-grid .partner.partner img{height:42px!important;display:block!important;width:100%!important;background:transparent!important;width:100%!important;padding:0!important}

/* op-money-columns: the supporters block ran one tile per row — 11 tiles,
   3654px at 390, 27% of the whole page. Two columns bring it to
   2456px (33% shorter). Checked before writing: no new overflow, smallest mark still
   83px wide, longest blurb 3 lines, tile heights 275-385px.
   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.
   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 (.partners-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){
  .partners-grid{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;column-gap:26px!important}
    .partners-grid > *{min-width:0!important;max-width:100%;width:auto!important;flex:0 1 auto!important}
    .partners-grid > * *{min-width:0!important;max-width:100%}
    .partners-grid img,.partners-grid svg{max-width:100%;height:auto}

}

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

/* op-page-overflow: the page scrolled sideways at 320 — details.nav-drawer reached
   346px in a 320px screen (+25px), inside
   div.header-inner. Remedy: let the box shrink. 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){
  details.nav-drawer{min-width:0!important;max-width:100%!important;box-sizing:border-box!important}
}
/* op-heading-levels */
h3:where(.rt-h4){color: var(--ink); font-family: var(--font-display); font-weight: 400; line-height: 1.12; margin: 0px 0px 0.45em; text-wrap: balance;}
h2:where(.rt-h3){color: var(--ink); font-family: var(--font-display); font-weight: 400; line-height: 1.12; margin: 0px 0px 0.45em; text-wrap: balance;}
h2:where(.rt-h4){color: var(--ink); font-family: var(--font-display); font-weight: 400; line-height: 1.12; margin: 0px 0px 0.45em; text-wrap: balance;}
.ticket h2:where(.rt-h3){color: rgb(255, 255, 255); font-size: 27px; margin: 10px 0px 8px;}
.bill h2:where(.rt-h3){font-size: 35px; margin: 0px;}
.bill h2:where(.rt-h3) a{color: var(--ink); text-decoration: none;}
.bill h2:where(.rt-h3) a:hover{color: var(--accent-deep);}
.reel h2:where(.rt-h3){font-size: 30px; margin: 0px 0px 4px; color: var(--ink); letter-spacing: 0.008em;}
.reel:hover h2:where(.rt-h3){color: var(--accent-deep);}
@media (max-width: 760px){.reel h2:where(.rt-h3){font-size: 24px;}}
.room h2:where(.rt-h3){font-size: 31px; margin: 16px 0px 10px;}
.room h2:where(.rt-h3) a{color: var(--ink); text-decoration: none;}
.room h2:where(.rt-h3) a:hover{color: var(--accent-deep);}
.takeaways h2:where(.rt-h4){font-family: var(--font-ui); font-size: 16px; font-weight: 700; letter-spacing: 0.24em; text-transform: uppercase; color: var(--accent-deep); margin: 0px 0px 16px;}
.takeaways h3:where(.rt-h4){font-family: var(--font-ui); font-size: 16px; font-weight: 700; letter-spacing: 0.24em; text-transform: uppercase; color: var(--accent-deep); margin: 0px 0px 16px;}
.entry h2:where(.rt-h3){margin: 0px;}
.award h3:where(.rt-h4){font-family: var(--font-ui); font-size: 16px; font-weight: 700; letter-spacing: 0.22em; text-transform: uppercase; color: var(--accent-deep); margin: 0px 0px 14px;}
.next-card h2:where(.rt-h3){font-size: 29px; margin: 12px 0px 0px; color: var(--ink);}
.next-card:hover h2:where(.rt-h3){color: var(--accent-deep);}
/* op-heading-levels:end */

/* op-img-dims — intrinsic width/height reserve image space; the proven height:auto guard (zero specificity) */
:where(article.blog-row > div.blog-row-media > img,
  article.prose > figure > img,
  div.contact-copy > figure > img,
  div.duo > article.bill > img,
  div.hero-grid > figure.hero-figure > img,
  div.programme > a.reel > img.r-thumb,
  div.prose > figure > img,
  header.post-hero > figure.p-img > img){height:auto}
/* op-img-dims:end */
