/* ============================================================
   animations.css — Global Animation Library
   ============================================================ */

@keyframes fadeUp   { from{opacity:0;transform:translateY(28px)} to{opacity:1;transform:none} }
@keyframes fadeIn   { from{opacity:0}                             to{opacity:1} }
@keyframes slideIn  { from{opacity:0;transform:translateX(-28px)} to{opacity:1;transform:none} }
@keyframes scaleIn  { from{opacity:0;transform:scale(.92)}         to{opacity:1;transform:scale(1)} }
@keyframes scrollA  { 0%,100%{opacity:.4} 50%{opacity:1} }
@keyframes blink    { 0%,100%{opacity:1;transform:scale(1)} 50%{opacity:.6;transform:scale(1.3)} }
@keyframes spin     { to{transform:rotate(360deg)} }
@keyframes shimmer  { 0%{background-position:-200% 0} 100%{background-position:200% 0} }

/* Respect user preference */
@media(prefers-reduced-motion:reduce) {
  *, *::before, *::after {
    animation-duration:.01ms !important;
    transition-duration:.01ms !important;
  }
}

/* Page transition */
body { animation:fadeIn .4s ease; }

/* Hero animations utility classes */
.anim-delay-1 { animation-delay:.1s !important; }
.anim-delay-2 { animation-delay:.2s !important; }
.anim-delay-3 { animation-delay:.3s !important; }
.anim-delay-4 { animation-delay:.4s !important; }
.anim-delay-5 { animation-delay:.5s !important; }

/* Skeleton loader */
.skeleton {
  background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0 50%,#f0f0f0 75%);
  background-size:200% 100%;
  animation:shimmer 1.5s infinite;
  border-radius:var(--radius-sm);
}

/* Hover lift */
.lift { transition:transform var(--transition), box-shadow var(--transition); }
.lift:hover { transform:translateY(-4px); box-shadow:var(--shadow-lg); }

/* Pulse dot */
.pulse-dot {
  width:8px; height:8px;
  background:var(--green); border-radius:50%;
  animation:blink 2s infinite;
}
.pulse-dot.amber { background:var(--amber); }
.pulse-dot.sky   { background:var(--sky); }
