/* Scroll reveal shared by every marketing page: the hero's rise.
 *
 * Mark an element [data-rv], or a container [data-rv-kids] to reveal each of
 * its children (data-rv-kids=".card" limits it to matching children). Each
 * starts transparent, 14px low and blurred 11px, and rises into place when it
 * scrolls into view; elements that arrive together stagger by position
 * (reveal.js). Nothing here masks or clips, so descenders are never cut, and
 * once an element lands its filter and translate are dropped entirely.
 *
 * Uses the individual `translate` property, so it composes with any transform
 * an element already has (hover lifts, scene transforms). */
/* reveal.js marks a [data-rv-kids] container's children as it starts, so
   they're hidden here from the first paint too; otherwise a list on screen at
   load (the legal pages' contents) painted, vanished, then rose in. CSS can't
   read a container's selector, so each limited one in use is listed. */
:is([data-rv], [data-rv-kids=""] > *, [data-rv-kids=".card"] > .card, [data-rv-kids=".w2-row"] > .w2-row):not(.rv-done) {
  opacity: 0; translate: 0 14px; filter: blur(11px);
}
[data-rv].rv-in {
  animation: cr-rise 900ms cubic-bezier(0.23, 1, 0.32, 1) var(--rv-delay, 0ms) both;
  will-change: opacity, translate, filter;
}
[data-rv].rv-done { opacity: 1; translate: none; filter: none; }
@keyframes cr-rise {
  from { opacity: 0; translate: 0 14px; filter: blur(11px); }
  to { opacity: 1; translate: 0 0; filter: blur(0); }
}
/* Phones: the same rise, quicker, so a fast thumb-scroll never waits on it. */
@media (max-width: 720px) {
  [data-rv].rv-in { animation-duration: 640ms; }
}
/* Safety net: if reveal.js never runs, show everything after 2.5s. */
html:not(.rv-armed) :is([data-rv], [data-rv-kids=""] > *, [data-rv-kids=".card"] > .card, [data-rv-kids=".w2-row"] > .w2-row):not(.rv-done) {
  animation: cr-show 1ms linear 2.5s forwards;
}
@keyframes cr-show { to { opacity: 1; translate: 0 0; filter: none; } }
@media (prefers-reduced-motion: reduce) {
  :is([data-rv], [data-rv-kids=""] > *, [data-rv-kids=".card"] > .card, [data-rv-kids=".w2-row"] > .w2-row):not(.rv-done),
  [data-rv].rv-in { opacity: 1; translate: none; filter: none; animation: none; }
}
