/* ============================================================
   JMD CLEANING SERVICES — animations.css
   Keyframes & motion utilities
   ============================================================ */

@keyframes spin { to { transform: rotate(360deg); } }

@keyframes ripple { to { transform: scale(4); opacity: 0; } }

@keyframes float-y {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(-14px); }
}

@keyframes gradient-shift {
  0%   { background-position: 0% 50%; }
  50%  { background-position: 100% 50%; }
  100% { background-position: 0% 50%; }
}

@keyframes scroll-wheel {
  0%   { opacity: 1; transform: translateY(0); }
  70%  { opacity: 0; transform: translateY(12px); }
  100% { opacity: 0; transform: translateY(0); }
}

@keyframes pulse-ring {
  0%   { box-shadow: 0 0 0 0 rgba(212, 175, 55, .45); }
  70%  { box-shadow: 0 0 0 12px rgba(212, 175, 55, 0); }
  100% { box-shadow: 0 0 0 0 rgba(212, 175, 55, 0); }
}

@keyframes pulse-ring-big {
  0%   { box-shadow: 0 0 0 0 rgba(255, 255, 255, .55); }
  70%  { box-shadow: 0 0 0 22px rgba(255, 255, 255, 0); }
  100% { box-shadow: 0 0 0 0 rgba(255, 255, 255, 0); }
}

@keyframes leaf-fall {
  0%   { transform: translateY(-8vh) translateX(0) rotate(0deg); opacity: 0; }
  10%  { opacity: .8; }
  50%  { transform: translateY(50vh) translateX(6vw) rotate(180deg); }
  90%  { opacity: .6; }
  100% { transform: translateY(108vh) translateX(-4vw) rotate(360deg); opacity: 0; }
}

@keyframes blob-drift {
  0%   { transform: translate(0, 0) scale(1); }
  100% { transform: translate(40px, -30px) scale(1.15); }
}

/* Reduced motion — quality floor */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
    scroll-behavior: auto !important;
  }
  .hero-anim { opacity: 1 !important; transform: none !important; }
}

/* Services view-more reveal */
@keyframes svc-pop { from { opacity: 0; transform: translateY(24px); } to { opacity: 1; transform: none; } }
.svc-reveal { animation: svc-pop .5s var(--ease-lux) both; }
