/* =============================================
   EARTHLENS AI — ANIMATIONS
   ============================================= */

/* Fade In Up */
@keyframes fadeInUp {
  from { opacity: 0; transform: translateY(30px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* Fade In */
@keyframes fadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}

/* Float */
@keyframes float {
  0%, 100% { transform: translateY(0px) rotate(0deg); }
  33%       { transform: translateY(-12px) rotate(1deg); }
  66%       { transform: translateY(-6px) rotate(-1deg); }
}

/* Globe Spin */
@keyframes globeSpin {
  from { transform: rotate(0deg); }
  to   { transform: rotate(360deg); }
}

/* Pulse Glow */
@keyframes pulseGlow {
  0%, 100% { box-shadow: 0 0 20px rgba(34, 197, 94, 0.3); }
  50%       { box-shadow: 0 0 40px rgba(34, 197, 94, 0.7), 0 0 80px rgba(34, 197, 94, 0.3); }
}

/* Badge Dot Pulse */
@keyframes badgePulse {
  0%, 100% { opacity: 1; transform: scale(1); }
  50%       { opacity: 0.6; transform: scale(1.4); }
}

/* Scroll Arrow Bounce */
@keyframes scrollBounce {
  0%, 100% { transform: translateX(-50%) translateY(0); }
  50%       { transform: translateX(-50%) translateY(8px); }
}

/* Shimmer */
@keyframes shimmer {
  from { background-position: -200% center; }
  to   { background-position: 200% center; }
}

/* Gemini Loader Orb */
@keyframes orbPulse {
  0%, 100% { transform: scale(1); opacity: 0.9; }
  50%       { transform: scale(1.15); opacity: 1; }
}

/* Gemini Ring Spin */
@keyframes ringOrbit {
  from { transform: rotate(0deg); }
  to   { transform: rotate(360deg); }
}

/* Loading Step */
@keyframes stepFadeIn {
  from { opacity: 0; transform: translateX(-10px); }
  to   { opacity: 1; transform: translateX(0); }
}

/* Score Ring Draw */
@keyframes ringDraw {
  from { stroke-dashoffset: 314; }
}

/* Counter Count Up */
@keyframes countUp {
  from { opacity: 0; }
  to   { opacity: 1; }
}

/* Particle Drift */
@keyframes particleDrift {
  0%   { transform: translateY(100vh) translateX(0) scale(0); opacity: 0; }
  10%  { opacity: 1; }
  90%  { opacity: 0.6; }
  100% { transform: translateY(-100px) translateX(var(--drift)) scale(0.5); opacity: 0; }
}

/* Slide In Right */
@keyframes slideInRight {
  from { opacity: 0; transform: translateX(20px); }
  to   { opacity: 1; transform: translateX(0); }
}

/* Chat Bubble */
@keyframes chatBubble {
  from { opacity: 0; transform: translateY(10px) scale(0.97); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}

/* Bar Fill */
@keyframes barGrow {
  from { width: 0%; }
}

/* Typing dots */
@keyframes typingDot {
  0%, 60%, 100% { transform: translateY(0); opacity: 0.4; }
  30%            { transform: translateY(-6px); opacity: 1; }
}

/* Toast Slide */
@keyframes toastIn {
  from { opacity: 0; transform: translateX(100%) translateY(0); }
  to   { opacity: 1; transform: translateX(0) translateY(0); }
}
@keyframes toastOut {
  from { opacity: 1; transform: translateX(0); }
  to   { opacity: 0; transform: translateX(100%); }
}

/* Card hover lift */
@keyframes cardLift {
  from { transform: translateY(0); }
  to   { transform: translateY(-4px); }
}

/* Gradient shift */
@keyframes gradientShift {
  0%   { background-position: 0% 50%; }
  50%  { background-position: 100% 50%; }
  100% { background-position: 0% 50%; }
}

/* Narration text reveal */
@keyframes typeReveal {
  from { opacity: 0; filter: blur(4px); }
  to   { opacity: 1; filter: blur(0); }
}

/* Utility classes */
.animate-fadeInUp    { animation: fadeInUp 0.7s ease both; }
.animate-fadeIn      { animation: fadeIn 0.5s ease both; }
.animate-float       { animation: float 6s ease-in-out infinite; }
.animate-shimmer     {
  background: linear-gradient(90deg, transparent 30%, rgba(255,255,255,0.1) 50%, transparent 70%);
  background-size: 200% auto;
  animation: shimmer 2s linear infinite;
}

/* Staggered animation delays */
.delay-100 { animation-delay: 0.1s; }
.delay-200 { animation-delay: 0.2s; }
.delay-300 { animation-delay: 0.3s; }
.delay-400 { animation-delay: 0.4s; }
.delay-500 { animation-delay: 0.5s; }
