/* ==========================================================================
   PLUTO TECHNOLOGY — ANIMATIONS
   ========================================================================== */

@keyframes spin{100%{transform:rotate(360deg);}}
@keyframes counterspin{100%{transform:rotate(-360deg);}}
@keyframes marquee{0%{transform:translateX(0);}100%{transform:translateX(-50%);}}

@keyframes floatY{
  0%,100%{transform:translateY(0);}
  50%{transform:translateY(-14px);}
}
.float{animation:floatY 6s ease-in-out infinite;}

@keyframes pulseGlow{
  0%,100%{opacity:.55;}
  50%{opacity:1;}
}
.pulse{animation:pulseGlow 2.6s ease-in-out infinite;}

@keyframes fadeInUp{
  from{opacity:0;transform:translateY(24px);}
  to{opacity:1;transform:translateY(0);}
}
.hero-left > *{animation:fadeInUp .8s var(--ease) both;}
.hero-left .tag{animation-delay:.05s;}
.hero-left h1{animation-delay:.15s;}
.hero-left p{animation-delay:.28s;}
.hero-left .hero-buttons{animation-delay:.4s;}
.hero-right{animation:fadeInUp 1s var(--ease) .3s both;}

@keyframes ping{
  0%{box-shadow:0 0 0 0 rgba(47,230,167,.5);}
  70%{box-shadow:0 0 0 10px rgba(47,230,167,0);}
  100%{box-shadow:0 0 0 0 rgba(47,230,167,0);}
}
.chat-launcher .dot{animation:ping 2.2s infinite;}

/* Particle canvas sits behind hero content */
.particles{position:absolute;inset:0;z-index:1;pointer-events:none;}

@media (prefers-reduced-motion: reduce){
  .float,.pulse,.tech-track,.ai-circle,.ai-circle-core,.orbit-node{animation:none !important;}
}
