/* ============================================
   SHARED HERO BACKGROUND ANIMATION
   Gradient orbs, grid, particles, geometric shapes
   with mouse-tracking parallax
   ============================================ */

/* Container — sits behind hero content */
.hero-bg-anim {
  position: absolute;
  inset: 0;
  pointer-events: none;
  overflow: hidden;
  z-index: 0;
}

/* Ensure hero content sits above */
.hero-bg-anim + .container,
.hero-bg-anim ~ .container {
  position: relative;
  z-index: 2;
}

/* ---- Gradient Orbs ---- */
.hero-orb {
  position: absolute;
  border-radius: 50%;
  filter: blur(80px);
  will-change: transform;
  opacity: 0;
  transition: opacity 1.5s ease;
}

.hero-orb-1 {
  background: radial-gradient(circle, rgba(0, 255, 102, 0.22) 0%, transparent 70%);
  top: -30%;
  left: -8%;
  width: 600px;
  height: 600px;
}

.hero-orb-2 {
  background: radial-gradient(circle, rgba(0, 204, 136, 0.16) 0%, transparent 70%);
  bottom: -25%;
  right: -5%;
  width: 750px;
  height: 750px;
}

.hero-orb-3 {
  background: radial-gradient(circle, rgba(0, 255, 102, 0.12) 0%, transparent 70%);
  top: 35%;
  right: 20%;
  width: 450px;
  height: 450px;
}

/* ---- Animated Grid ---- */
.hero-grid-bg {
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(rgba(0, 255, 102, 0.03) 1px, transparent 1px),
    linear-gradient(90deg, rgba(0, 255, 102, 0.03) 1px, transparent 1px);
  background-size: 80px 80px;
  mask-image: radial-gradient(ellipse at center, rgba(0,0,0,0.5) 20%, transparent 70%);
  -webkit-mask-image: radial-gradient(ellipse at center, rgba(0,0,0,0.5) 20%, transparent 70%);
  opacity: 0;
  transition: opacity 2s ease 0.5s;
}

/* ---- Floating Particles ---- */
.hero-particle {
  position: absolute;
  border-radius: 50%;
  background: var(--gs-primary, #00FF66);
  will-change: transform, opacity;
  opacity: 0;
  box-shadow: 0 0 8px rgba(0, 255, 102, 0.5);
}

/* ---- Geometric Shapes ---- */
.hero-shape {
  position: absolute;
  will-change: transform;
  opacity: 0;
  line-height: 0;
}

.hero-shape svg {
  display: block;
}

/* ---- Responsive ---- */
@media (max-width: 991px) {
  .hero-orb-1 { width: 400px; height: 400px; }
  .hero-orb-2 { width: 500px; height: 500px; }
  .hero-orb-3 { width: 300px; height: 300px; }
}

@media (max-width: 768px) {
  .hero-orb-1 { width: 300px; height: 300px; filter: blur(60px); }
  .hero-orb-2 { width: 350px; height: 350px; filter: blur(60px); }
  .hero-orb-3 { display: none; }
  .hero-grid-bg { background-size: 60px 60px; }
}

/* ---- Reduced motion ---- */
@media (prefers-reduced-motion: reduce) {
  .hero-orb,
  .hero-particle,
  .hero-shape {
    animation: none !important;
    transition: none !important;
  }
  .hero-grid-bg {
    opacity: 0.3;
  }
}
