* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

html {
  font-size: 62.5%;
}

body {
  width: 100%;
  height: 100vh;
  background-color: rgb(46, 51, 80);
  display: grid;
  place-items: center;
}

.wrapper {
  width: 60rem;
  aspect-ratio: 1;
  display: grid;
  place-items: center;
  perspective: 100rem;
  perspective-origin: 76% 27%;
}

.circle {
  position: absolute;
  width: 40rem;
  aspect-ratio: 1;
  border: 0.1rem dashed #0ff;
  border-radius: 50%;
  transform-style: preserve-3d;
}

.circle-1 {
  transform: rotateY(70deg) rotateX(40deg);
  animation: circle1Anim 2s -1s infinite linear;
}

@keyframes circle1Anim {
  0% {
    transform: rotateY(70deg) rotateX(40deg);
  }

  100% {
    transform: rotateY(70deg) rotateX(40deg) rotateZ(360deg);
  }
}

.circle-2 {
  transform: rotateY(70deg) rotateX(-40deg);
  animation: circle2Anim 2s infinite linear;
}

@keyframes circle2Anim {
  0% {
    transform: rotateY(70deg) rotateX(-40deg);
  }

  100% {
    transform: rotateY(70deg) rotateX(-40deg) rotateZ(360deg);
  }
}

.circle-3 {
  transform: rotateY(180deg) rotateX(90deg);
  animation: circle3Anim 2s infinite linear;
}

@keyframes circle3Anim {
  0% {
    transform: rotateY(180deg) rotateX(90deg);
  }

  100% {
    transform: rotateY(180deg) rotateX(90deg) rotateZ(360deg);
  }
}

.circle-3::before {
  content: "";
  width: 12rem;
  aspect-ratio: 1;
  background-image: radial-gradient(rgb(255, 255, 255), 50%, rgb(55, 132, 146));
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%) rotateX(90deg);
  border-radius: 50%;
  animation: mainBallAnim 2s infinite linear;
}

@keyframes mainBallAnim {
  0% {
    transform: translate(-50%, -50%) rotateX(90deg);
  }

  100% {
    transform: translate(-50%, -50%) rotateX(90deg) rotateY(-360deg);
  }
}

.ball {
  width: 6rem;
  aspect-ratio: 1;
  background-image: radial-gradient(rgb(135, 214, 240), 70%, rgb(44, 44, 167));
  border-radius: 50%;
  position: absolute;
  top: -3rem;
  left: calc(50% - 3rem);
}

.ball-1,
.ball-2 {
  transform: rotateY(-90deg);
  animation: ballAnim 2s infinite linear;
}

@keyframes ballAnim {
  0% {
    transform: rotateY(-90deg);
  }

  100% {
    transform: rotateY(-90deg) rotateX(-360deg);
  }
}

.ball-3 {
  transform: rotateY(90deg) rotateX(90deg);
  animation: ball3Anim 2s infinite linear;
}

@keyframes ball3Anim {
  0% {
    transform: rotateY(90deg) rotateX(90deg);
  }

  100% {
    transform: rotateY(90deg) rotateX(450deg);
  }
}
