/* ============================================================
   VOXVISION — Animations (Purple / Black Theme)
   ============================================================ */

/* ── Floating animation ── */
@keyframes float {
  0%, 100% { transform: translateY(0px) rotate(0deg); }
  33%       { transform: translateY(-10px) rotate(0.5deg); }
  66%       { transform: translateY(-6px) rotate(-0.5deg); }
}

/* ── Pulse glow ── */
@keyframes pulseGlow {
  0%, 100% { box-shadow: 0 0 20px rgba(155,89,255,0.2); }
  50%       { box-shadow: 0 0 60px rgba(155,89,255,0.45), 0 0 100px rgba(155,89,255,0.15); }
}

/* ── Gradient shift (text gradient animation) ── */
@keyframes gradientShift {
  0%   { background-position: 0% 50%; }
  50%  { background-position: 100% 50%; }
  100% { background-position: 0% 50%; }
}
.text-gradient {
  background: linear-gradient(135deg, #9b59ff 0%, #06d6f5 50%, #9b59ff 100%);
  background-size: 200% auto;
  -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text;
  animation: gradientShift 4s ease infinite;
}

/* ── Marquee ── */
@keyframes marqueeScroll {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}

/* ── Orb / blob pulse ── */
@keyframes orbFloat {
  0%, 100% { transform: translate(0, 0) scale(1); }
  33%       { transform: translate(20px, -20px) scale(1.04); }
  66%       { transform: translate(-15px, 10px) scale(0.98); }
}
.glow-orb { animation: orbFloat 12s ease-in-out infinite; }
.glow-orb:nth-child(2) { animation-delay: -4s; }
.glow-orb:nth-child(3) { animation-delay: -8s; }

/* ── Rotating ring ── */
@keyframes rotateRing {
  from { transform: translate(-50%, -50%) rotate(0deg); }
  to   { transform: translate(-50%, -50%) rotate(360deg); }
}

/* ── Scroll line ── */
@keyframes scrollLine {
  0%, 100% { opacity: 0.3; height: 20px; }
  50%       { opacity: 1; height: 44px; }
}

/* ── Pulsing dot ── */
@keyframes pulseDot {
  0%, 100% { transform: scale(1); opacity: 1; }
  50%       { transform: scale(1.6); opacity: 0.6; }
}

/* ── Number counting up ── */
@keyframes countUp {
  from { opacity: 0; transform: translateY(16px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ── Card shimmer on hover ── */
.service-card::before,
.industry-card::before,
.testimonial-card::before {
  content: '';
  position: absolute;
  top: -100%; left: -100%;
  width: 60%; height: 200%;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,0.03), transparent);
  transform: rotate(15deg);
  transition: none;
  pointer-events: none;
}
.service-card:hover::before,
.industry-card:hover::before,
.testimonial-card:hover::before {
  animation: shimmer 0.8s ease forwards;
}
@keyframes shimmer {
  from { top: -100%; left: -100%; }
  to   { top: 100%; left: 100%; }
}

/* ── Loading bar ── */
@keyframes loadBar {
  from { width: 0%; }
  to   { width: 100%; }
}

/* ── Fade animations for CSS-only hero ── */
@keyframes fadeIn   { from { opacity:0; }                          to { opacity:1; } }
@keyframes fadeUp   { from { opacity:0; transform:translateY(30px); } to { opacity:1; transform:translateY(0); } }
@keyframes fadeDown { from { opacity:0; transform:translateY(-18px);} to { opacity:1; transform:translateY(0); } }
@keyframes slideLeft  { from { opacity:0; transform:translateX(-30px); } to { opacity:1; transform:translateX(0); } }
@keyframes slideRight { from { opacity:0; transform:translateX(30px);  } to { opacity:1; transform:translateX(0); } }

/* ── Orb color (pure purple/cyan) ── */
.orb-purple { background: rgba(155,89,255,0.15); }
.orb-cyan   { background: rgba(6,214,245,0.1); }
.orb-gold   { background: rgba(155,89,255,0.1); }  /* remap old gold to purple */

/* ── Section orb ── */
.section-orb {
  position: absolute; border-radius: 50%;
  filter: blur(90px); pointer-events: none; z-index: 0;
}

/* ── Stagger animation on [data-stagger] children ── */
[data-stagger] > * {
  transition: opacity 0.7s cubic-bezier(0.16,1,0.3,1), transform 0.7s cubic-bezier(0.16,1,0.3,1);
}
[data-stagger] > *.fade-up {
  opacity: 0; transform: translateY(20px);
}
[data-stagger] > *.fade-up.animated {
  opacity: 1; transform: translateY(0);
}

/* ── Btn shine ── */
.btn-primary::after {
  content: '';
  position: absolute; inset: 0;
  background: linear-gradient(135deg, rgba(255,255,255,0.15) 0%, transparent 60%);
  border-radius: inherit; pointer-events: none;
}
