/* reveal.css -- per-scene entrance (js/motion/reveal.js). See js/motion/kit.js for the contract.
 *
 * ARMED states live ONLY under html.motion (absent with reduced motion / no JS), so the
 * static PSD frame is always the fallback. reveal.js starts its WAAPI animations (fill
 * backwards) in the same task that flips .is-entered, so there is no frame between
 * "armed" and "animating". Everything here is opacity-only: transforms come from WAAPI
 * and vanish when the animation finishes, leaving the PSD resting frame with no inline
 * styles behind.
 */
html.motion .scene:not(.is-entered) .stage > .ly,
html.motion .scene:not(.is-entered) .stage > .shape,
html.motion .scene:not(.is-entered) .tl {
  opacity: 0;
}

/* The tall `last` slide reveals each block as IT scrolls in (own IntersectionObserver),
 * so its pieces stay parked after the scene-level enter. Never in print. */
@media screen {
  html.motion .rv-wait { opacity: 0; }
}

/* Handwriting wipe on a script line (.tl). reveal.js sets the mask geometry in px
 * (--rv-mi / --rv-ms, from the line's ink box) and animates mask-position. The extra
 * bottom padding only grows the mask box downward (top and baseline are untouched, so
 * the glyphs do not move) so Hello Bride descender swashes are not clipped by it. */
.rv-ink {
  padding-bottom: calc(var(--rv-pb, 0) * var(--u));
  -webkit-mask-image: var(--rv-mi);
  mask-image: var(--rv-mi);
  -webkit-mask-size: var(--rv-ms);
  mask-size: var(--rv-ms);
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
}

/* Warm diya-like glow that blooms behind Ganesha on the names slide (added by reveal.js,
 * removed when it settles). Small node: ~3x the Ganesha box. */
.rv-glow {
  position: absolute;
  pointer-events: none;
  border-radius: 50%;
  background: radial-gradient(circle closest-side,
    rgba(255, 214, 140, 0.75) 0%,
    rgba(250, 190, 105, 0.42) 38%,
    rgba(240, 170, 90, 0.14) 68%,
    rgba(240, 170, 90, 0) 100%);
  opacity: 0;
}

/* Trigger strip for a `last` block (an IntersectionObserver target; never painted). */
.rv-sentinel { position: absolute; left: 0; width: 1px; pointer-events: none; visibility: hidden; }
