/* ═══════════════════════════════════════════════════════════════
   AiMateurs — animations.css
   CSS Keyframes & Animation Definitions
═══════════════════════════════════════════════════════════════ */

/* ─── Cursor Blink ─── */
@keyframes blink {
  0%, 100% { opacity: 1; }
  50%       { opacity: 0; }
}

/* ─── Badge Dot Pulse ─── */
@keyframes badge-pulse {
  0%   { transform: scale(1);   opacity: 1; }
  50%  { transform: scale(1.6); opacity: 0.4; }
  100% { transform: scale(1);   opacity: 1; }
}

/* ─── Step Node Pulse Ring ─── */
@keyframes step-pulse {
  0%   { transform: scale(1);   opacity: 0.7; }
  70%  { transform: scale(2.2); opacity: 0; }
  100% { transform: scale(2.2); opacity: 0; }
}

/* ─── Scroll Line ─── */
@keyframes scroll-line-drop {
  0%   { transform: scaleY(0) translateY(0); transform-origin: top; }
  50%  { transform: scaleY(1) translateY(0); transform-origin: top; }
  100% { transform: scaleY(0) translateY(100%); transform-origin: bottom; }
}

/* ─── Float (subtle up-down) ─── */
@keyframes float {
  0%, 100% { transform: translateY(0); }
  50%       { transform: translateY(-10px); }
}

/* ─── Glow Pulse on Borders ─── */
@keyframes glow-pulse-cyan {
  0%, 100% { box-shadow: 0 0 12px rgba(0,245,255,0.2), 0 8px 40px rgba(0,0,0,0.5); }
  50%       { box-shadow: 0 0 30px rgba(0,245,255,0.5), 0 8px 40px rgba(0,0,0,0.5); }
}

@keyframes glow-pulse-purple {
  0%, 100% { box-shadow: 0 0 12px rgba(168,85,247,0.2), 0 8px 40px rgba(0,0,0,0.5); }
  50%       { box-shadow: 0 0 30px rgba(168,85,247,0.5), 0 8px 40px rgba(0,0,0,0.5); }
}

/* ─── Spinner ─── */
@keyframes spin {
  from { transform: rotate(0deg); }
  to   { transform: rotate(360deg); }
}

/* ─── Success Check Bounce ─── */
@keyframes success-pop {
  0%   { transform: scale(0) rotate(-45deg); opacity: 0; }
  60%  { transform: scale(1.2) rotate(5deg); opacity: 1; }
  100% { transform: scale(1) rotate(0deg); opacity: 1; }
}

/* ─── Slide Up Fade In (used via class) ─── */
@keyframes slide-up-in {
  from { transform: translateY(30px); opacity: 0; }
  to   { transform: translateY(0);    opacity: 1; }
}

/* ─── Gradient Shift (hero bg overlay) ─── */
@keyframes gradient-shift {
  0%   { background-position: 0%   50%; }
  50%  { background-position: 100% 50%; }
  100% { background-position: 0%   50%; }
}

/* ─── Case Card Glow Drift ─── */
@keyframes glow-drift {
  0%   { transform: translate(0, 0)    scale(1); }
  33%  { transform: translate(20px, -20px) scale(1.1); }
  66%  { transform: translate(-15px, 15px) scale(0.95); }
  100% { transform: translate(0, 0)    scale(1); }
}

/* ─── Nav Link Underline Slide ─── */
@keyframes underline-in {
  from { transform: scaleX(0); }
  to   { transform: scaleX(1); }
}

/* ─── Stat Card Entrance ─── */
@keyframes stat-in {
  from { transform: translateY(20px) scale(0.95); opacity: 0; }
  to   { transform: translateY(0)    scale(1);    opacity: 1; }
}

/* ─── Scan Line (decorative) ─── */
@keyframes scan-line {
  0%   { top: -2px; opacity: 0; }
  10%  { opacity: 0.6; }
  90%  { opacity: 0.6; }
  100% { top: 100%; opacity: 0; }
}

/* ─── Hero Orbit Ring ─── */
@keyframes orbit {
  from { transform: rotate(0deg)   translateX(140px) rotate(0deg); }
  to   { transform: rotate(360deg) translateX(140px) rotate(-360deg); }
}

/* ─── Footer Top Border Shimmer ─── */
@keyframes border-shimmer {
  0%   { background-position: 0% 0%; }
  100% { background-position: 200% 0%; }
}
