/* ============================================
   Nest Elevate — Animations
   ============================================ */

.reveal,
.reveal-up,
.reveal-left,
.reveal-right,
.reveal-scale {
  opacity: 0;
  will-change: transform, opacity;
}

.reveal-up {
  transform: translateY(28px);
}

.reveal-left {
  transform: translateX(-30px);
}

.reveal-right {
  transform: translateX(30px);
}

.reveal-scale {
  transform: scale(0.96);
}

.reveal.is-visible,
.reveal-up.is-visible,
.reveal-left.is-visible,
.reveal-right.is-visible,
.reveal-scale.is-visible {
  opacity: 1;
  transform: none;
  transition: opacity 700ms cubic-bezier(0.22, 1, 0.36, 1),
    transform 700ms cubic-bezier(0.22, 1, 0.36, 1);
}

.stagger-group > *.is-visible {
  transition-delay: calc(var(--stagger-index, 0) * 90ms);
}

.hero-anim-label {
  opacity: 0;
  transform: translateY(16px);
  animation: heroFadeUp 0.7s cubic-bezier(0.22, 1, 0.36, 1) 0.1s forwards;
}

.hero-anim-heading {
  opacity: 0;
  transform: translateY(24px);
  animation: heroFadeUp 0.75s cubic-bezier(0.22, 1, 0.36, 1) 0.25s forwards;
}

.hero-anim-text {
  opacity: 0;
  transform: translateY(20px);
  animation: heroFadeUp 0.75s cubic-bezier(0.22, 1, 0.36, 1) 0.4s forwards;
}

.hero-anim-btns {
  opacity: 0;
  transform: translateY(16px);
  animation: heroFadeUp 0.75s cubic-bezier(0.22, 1, 0.36, 1) 0.55s forwards;
}

.hero-anim-media {
  opacity: 0;
  transform: translateX(24px) scale(1.02);
  animation: heroMediaIn 1s cubic-bezier(0.22, 1, 0.36, 1) 0.35s forwards;
}

@keyframes heroFadeUp {
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes heroMediaIn {
  to {
    opacity: 1;
    transform: translateX(0) scale(1);
  }
}

@media (prefers-reduced-motion: reduce) {
  .reveal,
  .reveal-up,
  .reveal-left,
  .reveal-right,
  .reveal-scale,
  .hero-anim-label,
  .hero-anim-heading,
  .hero-anim-text,
  .hero-anim-btns,
  .hero-anim-media {
    opacity: 1 !important;
    transform: none !important;
    animation: none !important;
    transition: none !important;
  }
}
