/* A quiet photographic dissolve within one stable event stage.
   body.js owns the 1.3-second lifetime; copy stays live in the incoming panel. */
#invitation-page #events-list .season-transition {
  position: absolute; inset: 0; z-index: 6; overflow: hidden;
  pointer-events: none; user-select: none; visibility: hidden; opacity: 0;
  contain: paint; isolation: isolate;
  -webkit-mask-image: linear-gradient(transparent,#000 7%,#000 94%,transparent);
  mask-image: linear-gradient(transparent,#000 7%,#000 94%,transparent);
}
#invitation-page #events-list .season-transition.is-crossing { visibility: visible; opacity: 1; }
#invitation-page #events-list .season-transition[hidden] { display: none!important; }
#invitation-page #events-list .season-transition:not(.is-crossing) * { animation: none!important; }

/* Only a snapshot of the real outgoing poster and literal labels is duplicated.
   All controls remain in the one accessible live event panel. */
#invitation-page #events-list .season-outgoing { position: absolute; inset: 0; z-index: 0; overflow: hidden; }
#invitation-page #events-list .season-outgoing>img {
  position: absolute; inset: 0; width: 100%; height: 100%; max-width: none;
  object-fit: cover; object-position: center 39%; filter: saturate(.9);
  transform: scale(1.025); pointer-events: none;
}
#invitation-page #events-list .season-outgoing::after {
  content: ''; position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background: linear-gradient(#182a22 0%,rgb(24 42 34/.74) 13%,rgb(24 42 34/.37) 30%,rgb(18 31 23/.09) 43%,rgb(17 30 23/.68) 59%,rgb(17 30 23/.96) 75%,#182a22 100%);
}
#invitation-page #events-list .season-outgoing-copy {
  position: absolute; z-index: 2; left: 50%; top: 610px; width: 100%; max-width: 640px;
  padding: 0 1.8rem; transform: translateX(-50%); text-align: center;
  text-shadow: 0 2px 15px rgb(4 16 9/.35);
}
#invitation-page #events-list .season-outgoing-date { color: #e1c38b; font-family: var(--font-body); font-size: .79rem; line-height: 1.8; letter-spacing: .015em; margin: 0 0 .95rem; }
#invitation-page #events-list .season-outgoing-copy h3 {
  max-width: none; margin: 0; color: #f2e5c9; font-family: var(--font-display); font-weight: 400;
  font-size: clamp(3.1rem,11.3vw,5rem); line-height: 1.08; letter-spacing: -.035em; text-wrap: balance;
}
#invitation-page #events-list .season-outgoing-venue { color: #e1cba5; font-family: var(--font-body); font-style: italic; font-size: 1.03rem; line-height: 1.6; margin: 1.15rem 0 0; }
#invitation-page #events-list .season-transition.is-crossing .season-outgoing { animation: patjhad-season-dissolve 1100ms cubic-bezier(.3,.1,.2,1) both; }
#invitation-page #events-list .season-transition.is-crossing .season-outgoing-copy { animation: patjhad-season-old-words 320ms ease both; }

/* A low, warm exposure joins the two photographs without a flash or particles. */
#invitation-page #events-list .season-light-veil {
  position: absolute; inset: 0; z-index: 2; opacity: 0; pointer-events: none;
  background: radial-gradient(ellipse at 48% 39%,rgb(231 205 152/.19),rgb(160 121 63/.07) 35%,transparent 68%);
}
#invitation-page #events-list .season-transition.is-crossing .season-light-veil { animation: patjhad-season-exposure 1000ms ease both; }
#invitation-page #events-list .ceremony.is-season-entering .ceremony-art { animation: patjhad-season-settle 1200ms cubic-bezier(.2,.65,.2,1) both; }
#invitation-page #events-list .ceremony.is-season-entering .ceremony-copy> * { animation: patjhad-season-words 780ms ease 360ms both; }
#invitation-page #events-list .ceremony.is-season-entering .ceremony-copy .ceremony-date { animation-delay: 220ms; }
#invitation-page #events-list .ceremony.is-season-entering .ceremony-copy h3 { animation-delay: 280ms; }

@keyframes patjhad-season-dissolve { 0% { opacity: 1; } 15% { opacity: 1; } 100% { opacity: 0; } }
@keyframes patjhad-season-old-words { to { opacity: 0; } }
@keyframes patjhad-season-exposure { 0%,100% { opacity: 0; } 42% { opacity: .5; } }
@keyframes patjhad-season-settle { from { transform: scale(1.012); } to { transform: scale(1); } }
@keyframes patjhad-season-words { from { opacity: 0; } to { opacity: 1; } }

#invitation-page #events:has(.season-dial-many) .season-outgoing-copy { top: 390px; }
@media(min-width:760px) {
  #invitation-page #events-list .season-outgoing>img { object-position: center 46%; }
  #invitation-page #events-list .season-outgoing::after { background: linear-gradient(90deg,rgb(21 35 26/.23) 0%,rgb(21 35 26/.11) 34%,rgb(19 33 25/.83) 63%,rgb(18 32 24/.94)),linear-gradient(#182a22,transparent 24%,transparent 67%,#182a22); }
  #invitation-page #events-list .season-outgoing-copy { left: auto; right: 4%; top: 335px; width: 46%; max-width: 640px; padding: 0 1.4rem 0 1.9rem; transform: none; text-align: left; }
  #invitation-page #events-list .season-outgoing-copy h3 { font-size: clamp(3.1rem,5.3vw,5.2rem); }
  #invitation-page #events-list .season-outgoing-venue { font-size: 1.16rem; }
  #invitation-page #events:has(.season-dial-many) .season-outgoing-copy { top: 220px; }
}
@media(max-width:359px) {
  #invitation-page #events-list .season-outgoing-copy { padding-inline: 1.3rem; }
  #invitation-page #events-list .season-outgoing-copy h3 { font-size: 2.8rem; }
}
#invitation-page #events:not(.cinema-running) #events-list .season-transition *,
#invitation-page #events:not(.cinema-running) #events-list .ceremony.is-season-entering .ceremony-art,
#invitation-page #events:not(.cinema-running) #events-list .ceremony.is-season-entering .ceremony-copy>* { animation-play-state: paused; }
.is-backgrounded #invitation-page #events-list .season-transition *,
.is-backgrounded #invitation-page #events-list .ceremony.is-season-entering .ceremony-art,
.is-backgrounded #invitation-page #events-list .ceremony.is-season-entering .ceremony-copy>* { animation-play-state: paused!important; }
@media(prefers-reduced-motion:reduce) {
  #invitation-page #events-list .season-transition { display: none!important; }
  #invitation-page #events-list .ceremony.is-season-entering .ceremony-art,
  #invitation-page #events-list .ceremony.is-season-entering .ceremony-copy>* { animation: none!important; opacity: 1!important; clip-path: none!important; transform: none!important; }
}
