/* Frameshift — Finale */
.finale { position: relative; display: grid; place-items: center; min-block-size: 100svh; padding-block: clamp(5rem, 12vw, 9rem); overflow: clip; isolation: isolate; text-align: center; }
.finale--large { min-block-size: 75svh; }
.finale__bg { position: absolute; inset: 0; z-index: -1; }
.finale__video { position: absolute; inset: 0; }
.finale__shade { position: absolute; inset: 0; background: radial-gradient(ellipse at 50% 60%, rgb(var(--c-bg-rgb) / calc(var(--overlay) * 0.7)), rgb(var(--c-bg-rgb) / calc(var(--overlay) + 0.3)) 75%); }
.finale__grid {
  position: absolute; inset: -20% -10% 0;
  background-image: linear-gradient(rgb(var(--c-text-rgb) / 0.07) 1px, transparent 1px), linear-gradient(90deg, rgb(var(--c-text-rgb) / 0.07) 1px, transparent 1px);
  background-size: 64px 64px;
  transform: perspective(700px) rotateX(58deg) translateY(30%);
  transform-origin: 50% 100%;
  mask-image: linear-gradient(transparent, #000 40%, #000 70%, transparent);
  -webkit-mask-image: linear-gradient(transparent, #000 40%, #000 70%, transparent);
}
html[data-fx='full'][data-cinematic] .finale__grid { animation: finale-grid 6s linear infinite; }
@keyframes finale-grid { to { background-position: 0 64px, 0 0; } }
.finale__beam { position: absolute; inset-inline-start: 50%; inset-block-end: 0; inline-size: 60vmax; block-size: 60vmax; translate: -50% 50%; border-radius: 50%; background: radial-gradient(circle, rgb(var(--c-accent-rgb) / calc(0.5 * var(--glow))), transparent 60%); filter: blur(30px); }
html[data-fx='full'][data-parallax] .finale [data-depth] { transform: translate3d(calc(var(--mx, 0) * var(--depth) * 1px), calc(var(--my, 0) * var(--depth) * 1px), 0); }
.finale__inner { display: grid; justify-items: center; gap: clamp(1.25rem, 2.5vw, 2rem); }
.finale__heading { max-inline-size: 14ch; }
.finale__text { margin-inline: auto; }
/* Keep copy legible over any merchant image or the animated grid */
.finale__inner :is(h2, p, .rte) { text-shadow: 0 0 24px rgb(var(--c-bg-rgb) / 0.9), 0 1px 2px rgb(var(--c-bg-rgb) / 0.8); }
.finale__ctas { justify-content: center; }
.finale__cta { --btn-h: 68px; font-size: var(--body); }
.finale__hud { position: absolute; inset-block-end: 1.5rem; inset-inline: var(--gutter); display: flex; align-items: center; gap: 1rem; color: var(--c-muted); }
.finale__hud-line { flex: 1; block-size: 1px; background: var(--c-border); }
html[data-fx='full'][data-scenes] .finale.scene--live .finale__inner {
  scale: calc(0.86 + min(var(--p, 1) * 2, 1) * 0.14);
  opacity: calc(0.2 + min(var(--p, 1) * 2.2, 1) * 0.8);
}
html[data-fx='full'][data-scenes] .finale.scene--live .finale__bg { scale: calc(1.12 - min(var(--p, 1) * 2, 1) * 0.12); }

.finale__video { z-index: -2; }
.finale__video-toggle { position: absolute; inset-block-end: 4.5rem; inset-inline-end: var(--gutter); z-index: 3; background: rgb(var(--c-bg-rgb) / 0.6); border: 1px solid var(--c-border); }
