/* BG-ORBS — animated floating glow orbs */
/* Refs: floating-orbs technique (codepen.io/Justin-Komosky) */
/* Pure CSS, fixed position — works across all sections on scroll */

#bg-glow {
  position: fixed; inset: 0; z-index: 0;
  pointer-events: none; overflow: hidden;
}

.glow-orb {
  position: absolute; border-radius: 50%;
  pointer-events: none; will-change: transform, opacity;
}

/* Cyan — top right, hero accent */
.go1 {
  width: 800px; height: 700px;
  background: radial-gradient(ellipse at 40% 40%,
    rgba(0,229,255,0.20) 0%, rgba(0,229,255,0.06) 45%, transparent 70%);
  top: -220px; right: -180px;
  animation: go1drift 20s ease-in-out infinite;
}

/* Purple — left, large ambient */
.go2 {
  width: 900px; height: 700px;
  background: radial-gradient(ellipse at 55% 50%,
    rgba(124,111,255,0.17) 0%, rgba(124,111,255,0.04) 45%, transparent 70%);
  top: 5vh; left: -280px;
  animation: go2drift 26s ease-in-out infinite;
}

/* Orange — right center, warm accent */
.go3 {
  width: 480px; height: 420px;
  background: radial-gradient(ellipse at 50% 50%,
    rgba(255,122,26,0.13) 0%, rgba(255,122,26,0.03) 50%, transparent 70%);
  top: 40vh; right: -60px;
  animation: go3drift 17s ease-in-out infinite;
}

/* Green — bottom left */
.go4 {
  width: 600px; height: 500px;
  background: radial-gradient(ellipse at 50% 50%,
    rgba(15,206,136,0.11) 0%, rgba(15,206,136,0.02) 50%, transparent 70%);
  bottom: 10vh; left: -120px;
  animation: go4drift 22s ease-in-out infinite;
}

/* Cyan wide — bottom center footer glow */
.go5 {
  width: 1000px; height: 350px;
  background: radial-gradient(ellipse at 50% 60%,
    rgba(0,229,255,0.08) 0%, rgba(124,111,255,0.04) 50%, transparent 70%);
  bottom: -100px; left: 50%;
  transform: translateX(-50%);
  animation: go5pulse 28s ease-in-out infinite;
}

/* ── KEYFRAMES ── */
@keyframes go1drift {
  0%,100% { transform: translate(0,0) scale(1); opacity:.9; }
  30%     { transform: translate(-70px,90px) scale(1.07); opacity:1; }
  65%     { transform: translate(50px,-50px) scale(.93); opacity:.75; }
}
@keyframes go2drift {
  0%,100% { transform: translate(0,0) scale(1); }
  20%     { transform: translate(80px,-70px) scale(1.05); opacity:.85; }
  50%     { transform: translate(40px,100px) scale(.95); }
  75%     { transform: translate(-50px,30px) scale(1.03); opacity:.9; }
}
@keyframes go3drift {
  0%,100% { transform: translate(0,0) scale(1); opacity:.8; }
  50%     { transform: translate(-90px,-70px) scale(1.15); opacity:1; }
}
@keyframes go4drift {
  0%,100% { transform: translate(0,0) scale(1); opacity:.7; }
  35%     { transform: translate(70px,-90px) scale(1.1); opacity:1; }
  70%     { transform: translate(-30px,60px) scale(.9); opacity:.6; }
}
@keyframes go5pulse {
  0%,100% { transform: translateX(-50%) scaleX(1); opacity:.7; }
  50%     { transform: translateX(-50%) scaleX(1.18); opacity:1; }
}

/* ── PERFORMANCE TIERS ── */
.perf-low #bg-glow { display: none; }
.perf-mid .go3, .perf-mid .go4 { display: none; }
.is-touch .go3, .is-touch .go4 { display: none; }
