/* =========================================================
   ANIMATIONS.CSS
   ========================================================= */

@keyframes fadeUp{
  from{ opacity:0; transform:translateY(24px); }
  to{ opacity:1; transform:translateY(0); }
}
@keyframes fadeIn{
  from{ opacity:0; } to{ opacity:1; }
}
@keyframes pulseGlow{
  0%,100%{ box-shadow:0 0 0 0 rgba(37,99,235,.35); }
  50%{ box-shadow:0 0 0 10px rgba(37,99,235,0); }
}
@keyframes drift{
  0%{ transform:translate(0,0); }
  50%{ transform:translate(12px,-14px); }
  100%{ transform:translate(0,0); }
}
@keyframes countUpFade{
  from{ opacity:.2; } to{ opacity:1; }
}

.glow-pulse{ animation:pulseGlow 2.6s ease-in-out infinite; }
.drift{ animation:drift 8s ease-in-out infinite; }

/* Staggered children reveal (apply .reveal to items, JS toggles .in) */
.stagger .reveal:nth-child(1){ transition-delay:.03s; }
.stagger .reveal:nth-child(2){ transition-delay:.09s; }
.stagger .reveal:nth-child(3){ transition-delay:.15s; }
.stagger .reveal:nth-child(4){ transition-delay:.21s; }
.stagger .reveal:nth-child(5){ transition-delay:.27s; }
.stagger .reveal:nth-child(6){ transition-delay:.33s; }
.stagger .reveal:nth-child(7){ transition-delay:.39s; }
.stagger .reveal:nth-child(8){ transition-delay:.45s; }

/* Hover lift utility */
.hover-lift{ transition:transform .3s ease, box-shadow .3s ease; }
.hover-lift:hover{ transform:translateY(-6px); box-shadow:var(--shadow-md); }

/* Card scale on hover */
.hover-scale{ transition:transform .35s cubic-bezier(.2,.8,.2,1); }
.hover-scale:hover{ transform:scale(1.03); }

/* Soft glow button accent (used sparingly) */
.glow-btn{ box-shadow:0 0 0 0 rgba(6,182,212,.4); animation:pulseGlow 3s ease-in-out infinite; }

@media (prefers-reduced-motion: reduce){
  .floating, .drift, .glow-pulse, .glow-btn{ animation:none !important; }
}
