:root {
  --orb-speed-multiplier: 0.3;
}

.page-bg{
  opacity: 0.4;
  
}

.orb {
  position: fixed;
  width: 46rem;
  height: 46rem;
  border-radius: 50%;
  filter: blur(64px);
  opacity: 0.72;
  will-change: transform, opacity;
  pointer-events: none;
  transform: translate3d(0, 0, 0) scale(1);
}

/* Ausgangspositionen + individuelle Animationen */
.orb-a {
  top: 6%;
  left: 46%;
  background: radial-gradient(
    circle at 30% 30%,
    rgba(31, 242, 166, 0.55),
    rgba(31, 242, 166, 0.08) 58%,
    rgba(31, 242, 166, 0) 75%
  );
  animation: orbA calc(30s * var(--orb-speed-multiplier)) ease-in-out infinite;
}

.orb-b {
  top: 16%;
  left: 20%;
  background: radial-gradient(
    circle at 50% 50%,
    rgba(13, 91, 255, 0.72),
    rgba(13, 91, 255, 0.1) 56%,
    rgba(13, 91, 255, 0) 76%
  );
  animation: orbB calc(36s * var(--orb-speed-multiplier)) ease-in-out infinite;
}

.orb-c {
  top: 52%;
  left: 52%;
  background: radial-gradient(
    circle at 50% 50%,
    rgba(212, 235, 93, 0.55),
    rgba(212, 235, 93, 0.08) 58%,
    rgba(212, 235, 93, 0) 76%
  );
  animation: orbC calc(34s * var(--orb-speed-multiplier)) ease-in-out infinite;
}

.orb-d {
  top: 68%;
  left: 28%;
  background: radial-gradient(
    circle at 50% 50%,
    rgba(13, 91, 255, 0.56),
    rgba(31, 242, 166, 0.14) 44%,
    rgba(255, 255, 255, 0) 75%
  );
  animation: orbD calc(32s * var(--orb-speed-multiplier)) ease-in-out infinite;
}

/* Alle Orbs bewegen sich frei,
   nähern sich aber ungefähr zur Mitte hin bei ~50% der Animation */

@keyframes orbA {
  0% {
    transform: translate3d(0rem, 0rem, 0) scale(1.05);
    opacity: 0.68;
  }
  25% {
    transform: translate3d(-3rem, 2rem, 0) scale(0.96);
    opacity: 0.76;
  }
  50% {
    transform: translate3d(-12rem, 16rem, 0) scale(1.22);
    opacity: 0.88;
  }
  75% {
    transform: translate3d(4rem, 6rem, 0) scale(1);
    opacity: 0.72;
  }
  100% {
    transform: translate3d(0rem, -1rem, 0) scale(1.08);
    opacity: 0.68;
  }
}

@keyframes orbB {
  0% {
    transform: translate3d(0rem, 0rem, 0) scale(1.12);
    opacity: 0.74;
  }
  25% {
    transform: translate3d(5rem, -2rem, 0) scale(1);
    opacity: 0.7;
  }
  50% {
    transform: translate3d(14rem, 11rem, 0) scale(1.2);
    opacity: 0.86;
  }
  75% {
    transform: translate3d(8rem, 4rem, 0) scale(0.94);
    opacity: 0.76;
  }
  100% {
    transform: translate3d(-2rem, 1rem, 0) scale(1.08);
    opacity: 0.74;
  }
}

@keyframes orbC {
  0% {
    transform: translate3d(0rem, 0rem, 0) scale(0.98);
    opacity: 0.7;
  }
  25% {
    transform: translate3d(-4rem, -3rem, 0) scale(1.08);
    opacity: 0.78;
  }
  50% {
    transform: translate3d(-10rem, -14rem, 0) scale(1.18);
    opacity: 0.9;
  }
  75% {
    transform: translate3d(3rem, -7rem, 0) scale(1);
    opacity: 0.74;
  }
  100% {
    transform: translate3d(1rem, 2rem, 0) scale(0.96);
    opacity: 0.7;
  }
}

@keyframes orbD {
  0% {
    transform: translate3d(0rem, 0rem, 0) scale(1.08);
    opacity: 0.66;
  }
  25% {
    transform: translate3d(-2rem, 4rem, 0) scale(0.98);
    opacity: 0.74;
  }
  50% {
    transform: translate3d(12rem, -13rem, 0) scale(1.24);
    opacity: 0.84;
  }
  75% {
    transform: translate3d(6rem, -4rem, 0) scale(1.02);
    opacity: 0.72;
  }
  100% {
    transform: translate3d(-1rem, 1rem, 0) scale(1.1);
    opacity: 0.66;
  }
}

/* Optional: weniger Bewegung für Nutzer mit reduziertem Motion-Setting */
@media (prefers-reduced-motion: reduce) {
  .orb {
    animation: none;
    transform: none;
  }
}