/* ZH Motions — Warm site animations + scroll reveal */

/* Base reveal state */
[data-reveal] {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity 0.7s cubic-bezier(0.22, 1, 0.36, 1),
              transform 0.7s cubic-bezier(0.22, 1, 0.36, 1);
  will-change: opacity, transform;
}
[data-reveal].in {
  opacity: 1;
  transform: translateY(0);
}

/* Stagger child reveals */
[data-reveal-stagger] > * {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.6s ease, transform 0.6s ease;
}
[data-reveal-stagger].in > *:nth-child(1) { transition-delay: 0.05s; opacity: 1; transform: translateY(0); }
[data-reveal-stagger].in > *:nth-child(2) { transition-delay: 0.12s; opacity: 1; transform: translateY(0); }
[data-reveal-stagger].in > *:nth-child(3) { transition-delay: 0.19s; opacity: 1; transform: translateY(0); }
[data-reveal-stagger].in > *:nth-child(4) { transition-delay: 0.26s; opacity: 1; transform: translateY(0); }
[data-reveal-stagger].in > *:nth-child(5) { transition-delay: 0.33s; opacity: 1; transform: translateY(0); }
[data-reveal-stagger].in > *:nth-child(6) { transition-delay: 0.4s; opacity: 1; transform: translateY(0); }
[data-reveal-stagger].in > *:nth-child(n+7) { transition-delay: 0.45s; opacity: 1; transform: translateY(0); }

/* Slide variants */
[data-reveal="left"] { transform: translateX(-40px); }
[data-reveal="left"].in { transform: translateX(0); }
[data-reveal="right"] { transform: translateX(40px); }
[data-reveal="right"].in { transform: translateX(0); }
[data-reveal="scale"] { transform: scale(0.94); }
[data-reveal="scale"].in { transform: scale(1); }
[data-reveal="fade"] { transform: none; }

/* Hero entry (no scroll trigger — fires on page load) */
@keyframes heroIn {
  from { opacity: 0; transform: translateY(20px); }
  to { opacity: 1; transform: translateY(0); }
}
.hero-anim {
  animation: heroIn 0.9s cubic-bezier(0.22, 1, 0.36, 1) both;
}
.hero-anim-1 { animation-delay: 0.05s; }
.hero-anim-2 { animation-delay: 0.18s; }
.hero-anim-3 { animation-delay: 0.31s; }
.hero-anim-4 { animation-delay: 0.44s; }
.hero-anim-5 { animation-delay: 0.57s; }

/* Subtle float for visual blocks */
@keyframes floatY {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-8px); }
}
.float-soft { animation: floatY 5s ease-in-out infinite; }

/* Card lift on hover (extend existing hover) */
.card-hover { transition: transform 0.35s cubic-bezier(0.22, 1, 0.36, 1), box-shadow 0.35s ease, border-color 0.3s ease; }
.card-hover:hover { transform: translateY(-7px); }

/* Underline grow on hover for nav-style links (already in warm-shared but add timing) */
.nav-links a::after { transition: width 0.35s cubic-bezier(0.22, 1, 0.36, 1); }

/* Button ripple-ish press feedback */
.btn-primary, .btn-cta, .btn { transition: transform 0.18s ease, box-shadow 0.3s ease, background 0.25s ease; }
.btn-primary:active, .btn-cta:active, .btn:active { transform: translateY(0) scale(0.97); }

/* Reduce motion respect */
@media (prefers-reduced-motion: reduce) {
  [data-reveal], [data-reveal-stagger] > *, .hero-anim, .float-soft {
    opacity: 1 !important;
    transform: none !important;
    animation: none !important;
    transition: none !important;
  }
}
