/* A photographic invitation immediately follows the initiatives stack.
   Event facts stay visible; the future Details link never expands the card. */
.upcoming-events{--event-card-height:clamp(210px,17vw,280px);position:relative;isolation:isolate;margin:0 calc(var(--page-right) * -1) 0 calc(var(--page-left) * -1);background:var(--ink);color:var(--paper);scroll-margin-top:calc(var(--home-nav-height,64px) + var(--home-nav-gap,10px) + 24px)}
.upcoming-events-reveal-stage{display:contents}
.upcoming-events-backdrop{position:absolute;inset:0;z-index:-2;overflow:hidden}
.upcoming-events-backdrop img{display:block;width:100%;height:100%;object-fit:cover;object-position:center bottom}
.upcoming-events::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(180deg,rgba(var(--ink-rgb),.68),rgba(var(--ink-rgb),.52) 40%,rgba(var(--ink-rgb),.08) 65%,rgba(var(--ink-rgb),.36))}
/* One opaque, full-width incoming card covers the held initiatives. Its own
   natural scroll position keeps Details, deep links and downstream News stable. */
.upcoming-events.is-initiative-cover{z-index:2;border-radius:24px 24px 0 0;box-shadow:0 -12px 36px rgba(var(--ink-rgb),.12)}
.upcoming-events.is-initiative-cover .upcoming-events-backdrop,.upcoming-events.is-initiative-cover::before{border-radius:inherit}
.upcoming-events.is-initiative-cover .upcoming-events-inner{min-height:max(680px,100svh)}
.upcoming-events .upcoming-events-inner{display:flex;flex-direction:column;gap:clamp(120px,15vw,240px);min-height:clamp(680px,92svh,1040px);padding:clamp(64px,6vw,112px) var(--section-right) 40px var(--page-left)}
.upcoming-events .upcoming-events-heading{margin:0}
#upcoming-events .upcoming-events-heading h2{margin:0;font-size:clamp(4rem,8.6vw,12rem);font-weight:400;line-height:.95;letter-spacing:-.055em;color:var(--paper);overflow-wrap:anywhere}
.upcoming-events-list{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);align-items:stretch;gap:8px;margin-top:auto}
.upcoming-events-list:has(.upcoming-event[open]){align-items:start}
.upcoming-enquiry-card,.upcoming-event{min-width:0;border:0;border-radius:12px}
.upcoming-enquiry-card{display:flex;flex-direction:column;justify-content:space-between;gap:24px;min-height:var(--event-card-height);padding:24px;background:rgba(var(--ink-rgb),.94);color:var(--paper);text-decoration:none;transition:background-color .2s ease}
.upcoming-enquiry-card:hover{background:var(--ink)}
.upcoming-enquiry-poster{display:block;flex:0 0 auto;width:100%;height:clamp(220px,18vw,300px)}
.upcoming-enquiry-poster img{display:block;width:100%;height:100%;object-fit:contain;object-position:center}
.upcoming-card-label{font-size:var(--spa-type-label,.875rem);font-weight:400;line-height:1.25;letter-spacing:0}
.upcoming-enquiry-title{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;font-size:var(--spa-type-subheading,2rem);line-height:1.15;letter-spacing:-.04em}
.upcoming-card-arrow{display:grid;place-items:center;flex:0 0 48px;width:48px;height:48px;border-radius:50%;background:rgba(var(--paper-rgb),.25);font-size:24px;line-height:1;letter-spacing:0;transition:transform .2s ease}
.upcoming-enquiry-card:hover .upcoming-card-arrow{transform:translateX(3px)}
.upcoming-event{background:var(--copper);color:var(--on-accent);scroll-margin-top:calc(var(--home-nav-height,64px) + var(--home-nav-gap,10px) + 24px)}
.upcoming-event:not([open])>.upcoming-event-row{height:100%}
.upcoming-event-row{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto 1fr auto;gap:24px;min-height:var(--event-card-height);padding:24px;list-style:none}
.upcoming-event-row::-webkit-details-marker{display:none}
.upcoming-event-meta{grid-column:1/-1;min-width:0;margin:0;font-size:var(--spa-type-label,.875rem);line-height:1.4;letter-spacing:0}
.upcoming-event-date{display:flex;align-items:baseline;flex-wrap:wrap;gap:8px 20px;overflow-wrap:anywhere}
.upcoming-event-overview{grid-column:1/-1;min-width:0;align-self:center}
.upcoming-events .upcoming-event .upcoming-event-name{display:block;min-width:0;font-size:var(--spa-type-subheading,2rem);line-height:1.15;letter-spacing:-.04em;font-weight:400;overflow-wrap:break-word}
.upcoming-event-description{max-width:62ch;margin:12px 0 0;font-size:var(--spa-type-small,1rem);line-height:1.5;letter-spacing:0;overflow-wrap:anywhere}
.upcoming-event-partner{grid-column:1;align-self:end;min-width:0;margin:0;font-size:var(--spa-type-label,.875rem);line-height:1.4;letter-spacing:0;overflow-wrap:anywhere}
/* One rule remains continuous across Details, its gap and arrow. */
.upcoming-event-details{display:inline-flex;gap:12px;align-items:center;align-self:end;justify-self:start;padding:6px 0;border-bottom:1px solid currentColor;line-height:1.5;font-size:14px;color:inherit;text-decoration:none}
.upcoming-event-arrow{display:inline-block;font-size:20px;line-height:1;transition:transform .2s ease}
.upcoming-event[open] .upcoming-event-arrow{transform:rotate(90deg)}
.upcoming-event-row:focus-visible,.upcoming-enquiry-card:focus-visible{outline:2px solid var(--paper);outline-offset:5px;border-radius:12px}
.upcoming-event-body{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:28px;padding:28px;background:var(--paper);color:var(--ink);border-radius:0 0 12px 12px}
.upcoming-event-body[hidden]{display:none}
.upcoming-event-details[aria-disabled="true"]{cursor:default}
.upcoming-event-details:focus-visible{outline:2px solid currentColor;outline-offset:5px}
.upcoming-event-image{display:block;align-self:start;min-width:0;overflow:hidden;background:var(--paper)}
.upcoming-event-image img{display:block;width:100%;height:auto;object-fit:contain;object-position:center}
.upcoming-event-copy{min-width:0}
.upcoming-event-body h3{margin:0 0 24px;font-size:var(--spa-type-subheading,2rem);line-height:1.2;font-weight:400;letter-spacing:-.05em}
.upcoming-event-body p{margin:0 0 24px;font-size:var(--spa-type-small,1rem);line-height:1.4;color:var(--ink)}
.upcoming-event-body .wpd-actions{margin-top:32px}
.upcoming-event-body .wpd-resources{border-top:0}
@media(max-width:1100px){
  .upcoming-events-list{grid-template-columns:minmax(0,1fr) minmax(0,1.5fr)}
  .upcoming-event-row{gap:24px 16px}
  .upcoming-event-body{grid-template-columns:minmax(0,1fr)}
  .upcoming-event-image{max-width:280px}
}
@media(max-width:900px){
  .upcoming-events{margin:0}
  .upcoming-events .upcoming-events-inner{min-height:0;gap:clamp(150px,32vw,240px);padding:72px 24px 28px}
  #upcoming-events .upcoming-events-heading h2{font-size:clamp(3.25rem,11vw,6rem)}
  .upcoming-events-list{grid-template-columns:minmax(0,1fr);gap:12px}
  .upcoming-enquiry-card{min-height:180px}
  .upcoming-event-row{grid-template-columns:minmax(0,1fr) auto;gap:24px}
  .upcoming-event-body{grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr)}
}
@media(max-width:480px){
  .upcoming-enquiry-card,.upcoming-event-row{padding:22px}
  .upcoming-event-row{grid-template-columns:minmax(0,1fr);grid-template-rows:auto;gap:24px}
  .upcoming-event-body{grid-template-columns:minmax(0,1fr);padding:22px}
  .upcoming-event-details{justify-self:end}
}
@media(prefers-reduced-motion:reduce){.upcoming-event-arrow,.upcoming-card-arrow,.upcoming-enquiry-card{transition:none}.upcoming-enquiry-card:hover .upcoming-card-arrow{transform:none}}

/* Desktop only: a solid black card rises first, then its central photo grows
   with the shared page scroll. The real content stays in normal flow so an
   expanded programme or editor text can increase the stage height safely. */
@media(min-width:1025px){
  #upcoming-events{background:#000;color:#fff;padding-bottom:0}
  #upcoming-events::before{display:none}
  #upcoming-events .upcoming-events-reveal-stage{display:block;position:relative;isolation:isolate;min-height:100svh;background:#000;border-radius:inherit}
  #upcoming-events .upcoming-events-backdrop{z-index:0;pointer-events:none;border-radius:inherit}
  #upcoming-events .upcoming-events-backdrop::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,rgba(0,0,0,.38),rgba(0,0,0,.1) 50%,rgba(0,0,0,.5))}
  #upcoming-events .upcoming-events-inner{position:relative;z-index:1;min-height:100svh;gap:clamp(80px,12svh,150px);padding:calc(var(--home-nav-height,64px) + var(--home-nav-gap,10px) + clamp(32px,4vw,64px)) var(--section-right) 32px var(--page-left)}
  #upcoming-events .upcoming-events-heading{margin:0}
  #upcoming-events .upcoming-events-heading h2{color:#fff}
  #upcoming-events .upcoming-events-list{grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:8px}
  #upcoming-events .upcoming-enquiry-card{display:grid;grid-template-columns:minmax(0,1fr) clamp(94px,8.2vw,142px);grid-template-rows:auto 1fr;gap:24px 16px;min-height:var(--event-card-height);padding:24px;background:rgba(0,0,0,.94);color:#fff}
  #upcoming-events .upcoming-enquiry-card:hover{background:#000}
  #upcoming-events .upcoming-card-label{grid-column:1;grid-row:1}
  #upcoming-events .upcoming-enquiry-poster{grid-column:2;grid-row:1 / 3;align-self:center;width:100%;height:clamp(150px,12vw,200px)}
  #upcoming-events .upcoming-enquiry-poster img{object-fit:contain;object-position:center}
  #upcoming-events .upcoming-enquiry-title{grid-column:1;grid-row:2;align-self:end;gap:12px;font-size:clamp(1.2rem,1.55vw,2rem)}
  #upcoming-events .upcoming-card-arrow{flex-basis:36px;width:36px;height:36px;font-size:20px}
  #upcoming-events .upcoming-event{color:#fff}
  #upcoming-events .upcoming-event-row{grid-template-columns:minmax(0,1fr) auto;gap:24px 20px}
  #upcoming-events .upcoming-event-details{grid-column:2;grid-row:3;justify-self:end}
  #upcoming-events.is-event-reveal{padding-bottom:var(--upcoming-travel,0px)}
  #upcoming-events.is-event-reveal .upcoming-events-reveal-stage{min-height:var(--upcoming-stage-height,100svh);overflow:clip;transform:translate3d(0,var(--upcoming-pin-y,0px),0)}
  #upcoming-events.is-event-reveal .upcoming-events-backdrop{bottom:auto;height:var(--upcoming-viewport,100svh);clip-path:inset(var(--upcoming-clip-y,0px) var(--upcoming-clip-x,0px) round var(--upcoming-clip-radius,0px));border-radius:0}
  #upcoming-events.is-event-reveal .upcoming-events-backdrop img{transform:scale(var(--upcoming-photo-scale,1));transform-origin:center}
  /* A stationary crop reveals the solid title as it rises. The small vertical
     bleed preserves ascenders/descenders despite the tight heading line-height. */
  #upcoming-events.is-event-reveal .upcoming-events-heading{clip-path:inset(-15% 0 -20%);opacity:1}
  #upcoming-events.is-event-reveal .upcoming-events-heading h2{transform:translate3d(0,var(--upcoming-title-y,0%),0);opacity:1}
  /* Start below the stage: the list's full height plus its 32px bottom gutter.
     Keep the natural stage height so opened Details is never cut short. */
  #upcoming-events.is-event-reveal .upcoming-events-list{opacity:1;transform:translate3d(0,calc(var(--upcoming-info-y,0%) + var(--upcoming-info-gap,0px)),0)}
  #upcoming-events.is-event-reveal:not(.is-event-reveal-ready) .upcoming-events-list{pointer-events:none}
  #upcoming-events.is-event-reveal .upcoming-events-list:focus-within{opacity:1;transform:none;pointer-events:auto}
}
