<div class="flex flex-col items-center space-y-12">
  <div class="text-6xl text-white">Orbit</div>
  <div class="flex space-x-12">
    <div class="orbit">
      <div class="point"></div>
    </div>
    <div class="orbit">
      <div
        class="absolute left-0 top-0 w-quart h-quart border border-solid border-white-transparent-2 rounded-full wave"
        style="--wave-delay: 0.1s"
      ></div>
      <div
        class="absolute left-0 bottom-0 w-half h-half border border-solid border-white-transparent-2 rounded-full wave"
        style="--wave-delay: 0s"
      ></div>
      <div
        class="absolute right-0 bottom-0 w-quart h-quart border border-solid border-white-transparent-2 rounded-full wave"
        style="--wave-delay: 0.2s"
      ></div>
      <div
        class="absolute top-0 right-0 w-half h-half bg-blue-transparent rounded-full wave"
        style="--wave-delay: 0.4s"
      ></div>
      <div
        class="absolute left-0 w-half h-half bg-white-transparent-2 rounded-full wave"
        style="--wave-delay: 0.5s"
      ></div>
      <div class="absolute w-full h-0 border border-dashed border-white-transparent-1"></div>
      <div class="absolute w-0 h-full border border-dashed border-white-transparent-1"></div>
      <div class="absolute border border-solid border-white w-half h-half rounded-full"></div>
      <div class="absolute border border-solid border-white w-quart h-quart rounded-full"></div>
      <div class="point" style="--point-color: var(--brown-color-transparent); --point-width: 1rem"></div>
      <div
        class="point"
        style="
          --point-color: var(--brown-color-transparent);
          --point-width: 1rem;
          --spin-delay: calc(var(--spin-duration) / -2);
        "
      ></div>
    </div>
    <div class="orbit">
      <div
        class="absolute left-0 top-0 w-quart h-quart border border-solid border-white-transparent-2 rounded-full wave"
        style="--wave-delay: 1.1s"
      ></div>
      <div
        class="absolute left-0 bottom-0 w-half h-half border border-solid border-white-transparent-2 rounded-full wave"
        style="--wave-delay: 1s"
      ></div>
      <div
        class="absolute right-0 bottom-0 w-quart h-quart border border-solid border-white-transparent-2 rounded-full wave"
        style="--wave-delay: 1.2s"
      ></div>
      <div
        class="absolute top-0 right-0 w-half h-half bg-blue-transparent rounded-full wave"
        style="--wave-delay: 1.4s"
      ></div>
      <div
        class="absolute left-0 w-half h-half bg-white-transparent-2 rounded-full wave"
        style="--wave-delay: 1.5s"
      ></div>
      <div class="absolute w-full h-0 border border-dashed border-white-transparent-1"></div>
      <div class="absolute w-0 h-full border border-dashed border-white-transparent-1"></div>
      <div class="absolute border border-solid border-white w-half h-half rounded-full"></div>
      <div class="absolute border border-solid border-white w-quart h-quart rounded-full"></div>
      <div class="point" style="--point-color: var(--red-color-transparent); --point-width: 1rem"></div>
      <div
        class="point"
        style="
          --point-color: var(--red-color-transparent);
          --point-width: 1rem;
          --spin-delay: calc(var(--spin-duration) / -2);
          --spin-duration: 2s;
        "
      ></div>
      <div
        class="point"
        style="
          --point-color: var(--red-color-transparent);
          --point-width: 1rem;
          --spin-delay: calc(var(--spin-duration) / -4);
          --spin-duration: 2s;
        "
      ></div>
    </div>
    <div class="orbit">
      <div
        class="absolute left-0 top-0 w-quart h-quart border border-solid border-white-transparent-2 rounded-full wave"
        style="--wave-delay: 2.1s"
      ></div>
      <div
        class="absolute left-0 bottom-0 w-half h-half border border-solid border-white-transparent-2 rounded-full wave"
        style="--wave-delay: 2s"
      ></div>
      <div
        class="absolute right-0 bottom-0 w-quart h-quart border border-solid border-white-transparent-2 rounded-full wave"
        style="--wave-delay: 2.2s"
      ></div>
      <div
        class="absolute top-0 right-0 w-half h-half bg-blue-transparent rounded-full wave"
        style="--wave-delay: 2.4s"
      ></div>
      <div
        class="absolute left-0 w-half h-half bg-white-transparent-2 rounded-full wave"
        style="--wave-delay: 2.5s"
      ></div>
      <div class="absolute w-full h-0 border border-dashed border-white-transparent-1"></div>
      <div class="absolute w-0 h-full border border-dashed border-white-transparent-1"></div>
      <div class="absolute border border-solid border-white w-half h-half rounded-full"></div>
      <div class="absolute border border-solid border-white w-quart h-quart rounded-full"></div>
      <div class="point" style="--point-color: var(--yellow-color-transparent); --point-width: 1rem"></div>
      <div
        class="point"
        style="
          --point-color: var(--yellow-color-transparent);
          --point-width: 1rem;
          --spin-delay: calc(var(--spin-duration) / -2);
          --spin-duration: 2s;
        "
      ></div>
      <div
        class="point"
        style="
          --point-color: var(--yellow-color-transparent);
          --point-width: 1rem;
          --spin-delay: calc(var(--spin-duration) / -4);
          --spin-duration: 2s;
        "
      ></div>
      <div
        class="point"
        style="
          --point-color: var(--yellow-color-transparent);
          --point-width: 1rem;
          --spin-delay: calc(var(--spin-duration) / -4);
          --spin-duration: 1s;
        "
      ></div>
    </div>
  </div>
</div>
body {
  display: flex;
  justify-content: center;
  align-items: center;
  min-height: 100vh;
  background: #464343;
}

:root {
  --white-color-transparent-1: #{transparentize(white, 0.5)};
  --white-color-transparent-2: #{transparentize(white, 0.65)};
  --brown-color-transparent: #{transparentize(#a2763f, 0.5)};
  --blue-color-transparent: #{transparentize(#425b64, 0.05)};
  --red-color-transparent: #{transparentize(#963d41, 0.05)};
  --yellow-color-transparent: #{transparentize(#959041, 0.05)};
}

.w-half {
  width: 50%;
}

.h-half {
  height: 50%;
}

.w-quart {
  width: 25%;
}

.h-quart {
  height: 25%;
}

.bg-blue-transparent {
  background: var(--blue-color-transparent);
}

.bg-red-transparent {
  background: var(--red-color-transparent);
}

.bg-yellow-transparent {
  background: var(--yellow-color-transparent);
}

.bg-white-transparent-2 {
  background: var(--white-color-transparent-2);
}

.border-white-transparent-1 {
  border-color: var(--white-color-transparent-1);
}

.border-white-transparent-2 {
  border-color: var(--white-color-transparent-2);
}

.orbit {
  --orbit-width: 6rem;
  --orbit-border-width: 1px;
  --orbit-radius: calc(
    calc(var(--orbit-width) + var(--orbit-border-width)) / 2
  );
  --point-width: 1.5rem;
  --orbit-color: var(--white-color-transparent-1);
  --point-color: white;
  --spin-duration: 4s;
  --spin-delay: 0s;

  position: relative;
  width: var(--orbit-width);
  height: var(--orbit-width);
  display: flex;
  justify-content: center;
  align-items: center;
  border: var(--orbit-border-width) solid var(--orbit-color);
  border-radius: 50%;

  .point {
    position: absolute;
    width: var(--point-width);
    height: var(--point-width);
    animation: spin var(--spin-duration) var(--spin-delay) linear infinite;

    &::before {
      position: absolute;
      content: "";
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      background: var(--point-color);
      border-radius: 50%;
      transform: translateX(var(--orbit-radius));
    }
  }
}

.wave {
  transform: scale(0);
  animation: wave 3s var(--wave-delay, 0s) var(--ease-out-cubic) forwards
    infinite;
}

@keyframes spin {
  from {
    transform: rotate(0);
  }

  to {
    transform: rotate(1turn);
  }
}

@keyframes wave {
  0% {
    transform: scale(0);
  }

  10%,
  65% {
    transform: scale(1.5);
  }

  80%,
  100% {
    opacity: 0;
    transform: scale(1.5);
  }
}
View Compiled

External CSS

  1. https://cdn.jsdelivr.net/npm/@alphardex/aqua.css@1.5.5/dist/aqua.min.css

External JavaScript

This Pen doesn't use any external JavaScript resources.