/* ==========================================================================
   Skyheiire Solutions — Animation Keyframes & Motion Utilities
   ========================================================================== */

@keyframes marquee {
  from { transform: translateX(0); }
  to { transform: translateX(-50%); }
}

@keyframes pulseDot {
  0% { box-shadow: 0 0 0 0 rgba(201,162,39,0.35); }
  70% { box-shadow: 0 0 0 10px rgba(201,162,39,0); }
  100% { box-shadow: 0 0 0 0 rgba(201,162,39,0); }
}
.hero__badge .dot { animation: pulseDot 2.4s ease-out infinite; }
.chatbot-header .dot { animation: pulseDot 2.4s ease-out infinite; }

@keyframes chatPulseRing {
  0% { box-shadow: 0 0 0 0 rgba(201,162,39,0.35); }
  70% { box-shadow: 0 0 0 14px rgba(201,162,39,0); }
  100% { box-shadow: 0 0 0 0 rgba(201,162,39,0); }
}
.chatbot-toggle.is-pulsing { animation: chatPulseRing 2.6s ease-out infinite; }

@keyframes blobMove {
  0%, 100% { transform: translate(0, 0) scale(1); }
  33% { transform: translate(30px, -40px) scale(1.08); }
  66% { transform: translate(-24px, 24px) scale(0.95); }
}
.blob { position: absolute; border-radius: 50%; filter: blur(80px); animation: blobMove 14s ease-in-out infinite; pointer-events: none; }

@keyframes spin { to { transform: rotate(360deg); } }
.spin { animation: spin 1s linear infinite; }

@keyframes fadeInUp {
  from { opacity: 0; transform: translateY(24px); }
  to { opacity: 1; transform: translateY(0); }
}
.no-gsap .reveal { animation: fadeInUp 0.8s var(--ease-out) forwards; }

@keyframes nodeGlow {
  0%, 100% { opacity: 0.4; }
  50% { opacity: 1; }
}

@media (prefers-reduced-motion: reduce) {
  .hero__badge .dot, .chatbot-header .dot, .chatbot-toggle.is-pulsing,
  .blob, .marquee__track {
    animation: none !important;
  }
}
