/* Shared, GPU-friendly reveal and media motion */
.has-motion .reveal {
  opacity: 0;
  translate: 0 26px;
  transition: opacity .7s ease, translate .7s cubic-bezier(.2, .7, .2, 1);
}

.has-motion .reveal.is-visible { opacity: 1; translate: 0 0; }

.animate-in { animation: fade-up .7s both; }
.hero h1.animate-in { animation-delay: .08s; }
.hero-copy.animate-in { animation-delay: .15s; }
.hero-actions.animate-in { animation-delay: .22s; }
.hero-note.animate-in { animation-delay: .28s; }
.hero-stage.animate-in { animation-delay: .34s; }
.trust-strip.animate-in { animation-delay: .42s; }

.float-motion.is-visible { animation: media-float 7s ease-in-out infinite; }
.float-motion.is-visible:nth-child(2n) { animation-delay: -2.4s; }

@keyframes fade-up {
  from { opacity: 0; translate: 0 18px; }
  to { opacity: 1; translate: 0 0; }
}

@keyframes media-float {
  0%, 100% { translate: 0 0; }
  50% { translate: 0 -7px; }
}

@keyframes pulse {
  0%, 100% { transform: scale(.75); opacity: .8; }
  70% { transform: scale(1.4); opacity: 0; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    scroll-behavior: auto !important;
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
  }
  .has-motion .reveal { opacity: 1; translate: none; }
  [data-tilt] { --tilt-x: 0deg !important; --tilt-y: 0deg !important; }
}
