/* ============================================================
   ANIMATIONS — Keyframes for ultra-modern bio-tech feel
   ============================================================ */

@keyframes pulse-glow {
  0%, 100% { opacity: 0.45; transform: scale(1); }
  50% { opacity: 1; transform: scale(1.04); }
}

@keyframes pulse-dot {
  0%, 100% { transform: scale(1); box-shadow: 0 0 0 0 rgba(76, 175, 80, 0.7); }
  50% { transform: scale(1.15); box-shadow: 0 0 0 8px rgba(76, 175, 80, 0); }
}

@keyframes aurora-shift {
  0% { transform: translate(0, 0) rotate(0deg) scale(1); }
  33% { transform: translate(8%, -4%) rotate(120deg) scale(1.1); }
  66% { transform: translate(-6%, 6%) rotate(240deg) scale(0.95); }
  100% { transform: translate(0, 0) rotate(360deg) scale(1); }
}

@keyframes ambient-drift {
  0%, 100% { transform: translate(0, 0) scale(1); }
  50% { transform: translate(4%, -3%) scale(1.08); }
}

@keyframes dot-twinkle {
  0%, 100% { opacity: 0; }
  50% { opacity: 0.7; }
}

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

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

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

@keyframes scan {
  0% { transform: translateY(-100%); opacity: 0; }
  20% { opacity: 1; }
  80% { opacity: 1; }
  100% { transform: translateY(100%); opacity: 0; }
}

@keyframes type-cursor {
  0%, 50% { opacity: 1; }
  51%, 100% { opacity: 0; }
}

@keyframes heartbeat {
  0%, 100% { transform: scale(1); }
  14% { transform: scale(1.08); }
  28% { transform: scale(1); }
  42% { transform: scale(1.08); }
  70% { transform: scale(1); }
}

@keyframes loader-bar {
  0% { transform: translateX(-100%); }
  100% { transform: translateX(0); }
}

@keyframes spin-slow {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

@keyframes shimmer {
  0% { background-position: -200% 0; }
  100% { background-position: 200% 0; }
}

@keyframes marquee-scroll {
  0% { transform: translateX(0); }
  100% { transform: translateX(-50%); }
}

@keyframes marquee-up {
  0% { transform: translateY(0); }
  100% { transform: translateY(-50%); }
}

@keyframes marquee-down {
  0% { transform: translateY(-50%); }
  100% { transform: translateY(0); }
}

@keyframes typing-bounce {
  0%, 80%, 100% { transform: translateY(0); opacity: 0.4; }
  40% { transform: translateY(-6px); opacity: 1; }
}

@keyframes fade-in-up {
  from { opacity: 0; transform: translateY(40px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes badge-pop {
  0% { transform: scale(0.6); opacity: 0; }
  60% { transform: scale(1.08); opacity: 1; }
  100% { transform: scale(1); opacity: 1; }
}

@keyframes platform-pulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(76, 175, 80, 0); }
  50% { box-shadow: 0 0 0 6px rgba(76, 175, 80, 0.15); }
}

@keyframes corner-blink {
  0%, 100% { opacity: 0.4; }
  50% { opacity: 1; }
}

@keyframes ring-rotate {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

@keyframes ring-fill {
  0% { stroke-dashoffset: 427; }
  100% { stroke-dashoffset: 132; }
}

@keyframes wordmark-reveal {
  0% { transform: translateY(100%); opacity: 0; }
  100% { transform: translateY(0); opacity: 1; }
}

@keyframes loader-out {
  0% { clip-path: inset(0 0 0 0); }
  100% { clip-path: inset(0 0 100% 0); }
}
