.loader {
  position: relative;
  display: inline-block;
  flex-shrink: 0;
  transform: rotateZ(45deg);
  perspective: 1000px;
  border-radius: 50%;
  color: currentColor;
}

.loader::before,
.loader::after {
  content: "";
  display: block;
  position: absolute;
  top: 0;
  left: 0;
  width: inherit;
  height: inherit;
  border-radius: 50%;
  transform: rotateX(70deg);
  animation: spin 1s linear infinite;
}

.loader::after {
  color: var(--spinner-accent, #a855f7);
  transform: rotateY(70deg);
  animation-delay: 0.4s;
}

@keyframes spin {
  0%,
  100% {
    box-shadow: 0.2em 0 0 0 currentColor;
  }
  12% {
    box-shadow: 0.2em 0.2em 0 0 currentColor;
  }
  25% {
    box-shadow: 0 0.2em 0 0 currentColor;
  }
  37% {
    box-shadow: -0.2em 0.2em 0 0 currentColor;
  }
  50% {
    box-shadow: -0.2em 0 0 0 currentColor;
  }
  62% {
    box-shadow: -0.2em -0.2em 0 0 currentColor;
  }
  75% {
    box-shadow: 0 -0.2em 0 0 currentColor;
  }
  87% {
    box-shadow: 0.2em -0.2em 0 0 currentColor;
  }
}
