/* Vertical line reveals, then a curtain that uncovers the final invitation.
   Native document flow is the fallback; JS enables the shared viewport. */
.finale-track { position:relative; background:#eeede9; }
.finale-sticky { position:relative; }
/* Tight tracking lets the final glyph extend beyond its advance width.
   Keep the vertical reveal mask, with room for punctuation at either edge. */
.finale-line { display:block; overflow:clip; padding:0 .1em .09em; margin:0 -.1em -.09em; }
.finale-line > span { display:block; }
.finale-track .approach h2 { margin:0; }
.finale-track .closing { position:relative; overflow:clip; background:#eeede9; color:#1b1b1b; }
.finale-track .closing p { color:#615d56; }
.finale-track .closing .eyebrow { color:#5b5750; }
.finale-track .closing h2 em { color:#ef4c27; }
.finale-track .closing .primary { background:#1b1b1b; color:#f3f1ec; }
.finale-track .closing .primary > span { color:#ff643e; }
.finale-glow { position:absolute; inset:-15%; pointer-events:none; background:radial-gradient(ellipse at 78% 84%,#ff602526,transparent 50%); }
main:has(> .finale-track) + .footer { background:#eeede9; color:#1b1b1b; border-color:#1b1b1b24; }
main:has(> .finale-track) + .footer p,main:has(> .finale-track) + .footer > a:last-child { color:#615d56; }
.finale-track .closing > :not(.finale-glow) { position:relative; }

@media (prefers-reduced-motion:no-preference) {
  .finale-enhanced { height:var(--finale-height,290dvh); }
  .finale-enhanced .finale-sticky { position:sticky; top:0; height:100vh; height:100dvh; overflow:hidden; isolation:isolate; }
  .finale-enhanced .approach,.finale-enhanced .closing { position:absolute; inset:0; width:100%; height:100%; min-height:0; max-height:none; padding:clamp(28px,5.5vh,70px) var(--pad); }
  .finale-enhanced .approach { z-index:2; display:flex; flex-direction:column; justify-content:space-between; padding-bottom:clamp(120px,14vh,160px); transform-origin:center top; }
  .finale-enhanced .approach h2 { font-size:clamp(55px,min(8.6vw,13.5vh),148px); line-height:1.015; letter-spacing:-.06em; }
  .finale-enhanced .approach .horizon-rim { transform:translate3d(0,var(--horizon-rise,0px),0) rotate(-8deg); }
  .finale-enhanced .brand-marquee { position:absolute; left:0; right:0; bottom:0; padding:18px 0; background:#171616bb; }
  .finale-enhanced .marquee-track > span { font-size:clamp(23px,2.4vw,40px); }
  .finale-enhanced .closing { z-index:1; display:flex; flex-direction:column; justify-content:center; align-items:flex-start; }
  .finale-enhanced .closing h2 { font-size:clamp(68px,min(10.8vw,18vh),176px); line-height:1.02; margin:32px 0 28px; letter-spacing:-.065em; }
  .finale-enhanced .closing p { margin:0 0 32px; }
  .finale-enhanced .closing .button { min-height:52px; }
  /* These scene wrappers own motion, preventing nested entrance animations. */
  .js .finale-enhanced .reveal,.js .finale-enhanced .motion-item { opacity:1; transform:none; transition:none; }
  .finale-enhanced.finale-near .approach,.finale-enhanced.finale-near .closing { will-change:transform; }
}
@media (max-width:700px) {
  .finale-enhanced .approach { padding-top:32px; padding-bottom:102px; }
  .finale-enhanced .approach h2 { font-size:clamp(39px,10.6vw,74px); }
  .finale-enhanced .approach-bottom { gap:22px; }
  .finale-enhanced .approach-bottom p { max-width:36ch; font-size:16px; }
  .finale-enhanced .brand-marquee { padding:16px 0; }
  .finale-enhanced .closing h2 { font-size:clamp(48px,12vw,78px); margin:28px 0; }
  .finale-enhanced .closing p { font-size:18px; }
}
@media (max-height:560px) {
  .finale-enhanced .approach { padding-top:20px; padding-bottom:74px; }
  .finale-enhanced .approach h2 { font-size:clamp(32px,10.8vh,54px); }
  .finale-enhanced .approach-bottom { flex-direction:row; align-items:center; gap:24px; }
  .finale-enhanced .approach-bottom p { max-width:52ch; font-size:13px; }
  .finale-enhanced .approach-bottom .button { font-size:12px; padding:13px 17px; white-space:nowrap; }
  .finale-enhanced .brand-marquee { padding:12px 0; }
  .finale-enhanced .marquee-track > span { font-size:22px; }
  .finale-enhanced .closing h2 { font-size:clamp(42px,14vh,74px); margin:18px 0; }
  .finale-enhanced .closing p { margin:0 0 18px; font-size:15px; }
  .finale-enhanced .closing p br { display:none; }
  .finale-enhanced .closing .button { min-height:44px; padding:12px 20px; font-size:13px; }
}
@media (prefers-reduced-motion:reduce) {
  .finale-track,.finale-sticky { height:auto!important; }
  .finale-track .approach h2 { margin:48px 0 36px; }
  .finale-line > span { opacity:1!important; filter:none!important; transform:none!important; }
  .finale-track .approach,.finale-track .closing { transform:none!important; border-radius:0!important; }
  .finale-glow { display:none; }
}
