/* Hero & page ambient effects — electric cyan / purple palette */

.hero-fx {
  position: absolute;
  inset: 0;
  pointer-events: none;
  overflow: hidden;
}

/* Aurora bands */
.hero-fx--aurora {
  z-index: 1;
  opacity: 0.5;
  background:
    radial-gradient(ellipse 80% 50% at 20% 40%, rgba(0, 212, 255, 0.14), transparent 55%),
    radial-gradient(ellipse 60% 40% at 80% 20%, rgba(99, 102, 241, 0.12), transparent 50%),
    radial-gradient(ellipse 50% 35% at 60% 85%, rgba(0, 245, 255, 0.08), transparent 45%);
  animation: aurora-shift 18s ease-in-out infinite alternate;
}

@keyframes aurora-shift {
  0% { transform: translate(0, 0) scale(1); filter: hue-rotate(0deg); }
  50% { transform: translate(-2%, 1%) scale(1.03); filter: hue-rotate(12deg); }
  100% { transform: translate(2%, -1%) scale(1.02); filter: hue-rotate(-8deg); }
}

/* Sweeping light lines */
.hero-fx--lines {
  z-index: 2;
}

.hero-fx--lines span {
  position: absolute;
  height: 1px;
  width: 130%;
  left: -15%;
  background: linear-gradient(90deg, transparent, rgba(0, 212, 255, 0.1), rgba(0, 245, 255, 0.18), transparent);
  animation: hero-line-sweep 9s linear infinite;
}

.hero-fx--lines span:nth-child(1) { top: 18%; animation-delay: 0s; }
.hero-fx--lines span:nth-child(2) { top: 42%; animation-delay: 3s; opacity: 0.7; }
.hero-fx--lines span:nth-child(3) { top: 68%; animation-delay: 6s; }
.hero-fx--lines span:nth-child(4) { top: 88%; animation-delay: 1.5s; opacity: 0.5; }

@keyframes hero-line-sweep {
  0% { transform: translateX(-35%) skewX(-8deg); opacity: 0; }
  15% { opacity: 1; }
  85% { opacity: 1; }
  100% { transform: translateX(35%) skewX(-8deg); opacity: 0; }
}

/* Film grain */
.hero-fx--noise {
  z-index: 4;
  opacity: 0.04;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  background-size: 180px 180px;
  animation: noise-flicker 0.5s steps(2) infinite;
}

@keyframes noise-flicker {
  0% { transform: translate(0, 0); }
  50% { transform: translate(-2%, 1%); }
  100% { transform: translate(1%, -1%); }
}

/* Edge vignette */
.hero-fx--vignette {
  z-index: 5;
  background: radial-gradient(ellipse 70% 65% at 50% 45%, transparent 40%, rgba(10, 10, 10, 0.75) 100%);
}

/* Mouse spotlight */
.hero-fx--spotlight {
  z-index: 3;
  opacity: 0;
  transition: opacity 0.4s ease;
  background: radial-gradient(
    600px circle at var(--spot-x, 50%) var(--spot-y, 50%),
    rgba(0, 212, 255, 0.07),
    rgba(99, 102, 241, 0.03) 40%,
    transparent 60%
  );
}

.hero-section.is-spotlight-active .hero-fx--spotlight {
  opacity: 1;
}

/* Shooting stars */
.hero-fx--stars span {
  position: absolute;
  width: 2px;
  height: 2px;
  border-radius: 50%;
  background: #00f5ff;
  box-shadow: 0 0 8px rgba(0, 245, 255, 0.9);
  opacity: 0;
}

.hero-fx--stars span.is-shooting {
  width: 80px;
  height: 1px;
  border-radius: 999px;
  background: linear-gradient(90deg, rgba(0, 245, 255, 0.9), transparent);
  box-shadow: 0 0 14px rgba(0, 212, 255, 0.6);
  animation: shooting-star 1.2s ease-in forwards;
}

@keyframes shooting-star {
  0% { opacity: 0; transform: translate(0, 0) rotate(-35deg) scaleX(0.3); }
  10% { opacity: 1; }
  100% { opacity: 0; transform: translate(-180px, 120px) rotate(-35deg) scaleX(1); }
}

/* Headline shimmer */
.hero-headline .gradient-text {
  background-size: 200% auto;
  animation: gradient-shimmer 6s ease-in-out infinite;
}

@keyframes gradient-shimmer {
  0%, 100% { background-position: 0% center; }
  50% { background-position: 100% center; }
}

/* Showcase tilt — disabled (image-only hero) */

@keyframes border-glow {
  0% { opacity: 0.45; }
  100% { opacity: 1; }
}

/* Stat count-up glow */
.stat-card.is-counted .stat-value {
  text-shadow: 0 0 32px rgba(0, 212, 255, 0.4);
}

/* Section ambient glows */
.section-glow {
  position: absolute;
  border-radius: 50%;
  filter: blur(80px);
  pointer-events: none;
  z-index: 0;
}

.section-glow--blue {
  width: 400px;
  height: 400px;
  background: rgba(0, 212, 255, 0.07);
}

.section-glow--cyan {
  width: 320px;
  height: 320px;
  background: rgba(99, 102, 241, 0.06);
}

/* Glass card hover shine */
.glass-card::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  background: linear-gradient(
    105deg,
    transparent 40%,
    rgba(255, 255, 255, 0.03) 45%,
    rgba(0, 245, 255, 0.06) 50%,
    rgba(255, 255, 255, 0.03) 55%,
    transparent 60%
  );
  transform: translateX(-120%);
  transition: transform 0.6s ease;
  pointer-events: none;
}

.glass-card:hover::after {
  transform: translateX(120%);
}

/* CTA pulse ring */
.cta-banner {
  animation: cta-pulse 4s ease-in-out infinite;
}

@keyframes cta-pulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(0, 212, 255, 0); }
  50% { box-shadow: 0 0 56px rgba(0, 212, 255, 0.12); }
}

@media (prefers-reduced-motion: reduce) {
  .hero-fx--aurora,
  .hero-fx--lines span,
  .hero-fx--noise,
  .hero-headline .gradient-text,
  .cta-banner {
    animation: none !important;
  }

  .hero-fx--spotlight,
  .hero-fx--stars {
    display: none;
  }

  .glass-card::after {
    display: none;
  }
}
