/* ==========================================================================
   SWASLife · Animations
   Keyframes + scroll-reveal states. Respects prefers-reduced-motion.
   ========================================================================== */

/* -------- Keyframes -------- */
@keyframes drift {
  0%   { transform: translate3d(0, 0, 0)       scale(1);    }
  50%  { transform: translate3d(3%, -2%, 0)    scale(1.05); }
  100% { transform: translate3d(-2%, 3%, 0)    scale(0.98); }
}

@keyframes floaty {
  0%, 100% { transform: translateY(0)     rotate(0);    }
  50%      { transform: translateY(-22px) rotate(18deg); }
}

/* -------- Scroll-reveal -------- */
.reveal {
  opacity: 0;
  transform: translateY(28px);
  transition:
    opacity var(--duration-slow) var(--ease-out-soft),
    transform var(--duration-slow) var(--ease-out-soft);
}
.reveal.in {
  opacity: 1;
  transform: translateY(0);
}
.reveal-delay-1 { transition-delay: 0.08s; }
.reveal-delay-2 { transition-delay: 0.16s; }
.reveal-delay-3 { transition-delay: 0.24s; }
.reveal-delay-4 { transition-delay: 0.32s; }

/* -------- Reduced motion: kill all movement, preserve visibility -------- */
@media (prefers-reduced-motion: reduce) {
  .mesh-bg,
  .float-dot,
  .reveal,
  .cycle .item {
    animation: none !important;
    transition: none !important;
  }
  .reveal { opacity: 1; transform: none; }
  .cycle .item           { opacity: 0; }
  .cycle .item.active    { opacity: 1; transform: none; }
  .cycle .item.leaving   { opacity: 0; transform: none; }
}
