.Spinner {
  position: fixed;
  bottom: 1rem;
  right: 1rem;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(255, 255, 255, 1);
  border-radius: 50%;
  padding: 0.5rem;
  animation: SpinnerPopIn 0.3s ease-out;
}

@keyframes SpinnerPopIn {
  from {
    transform: scale(0);
  }
}

.semipolar-spinner,
.semipolar-spinner * {
  box-sizing: border-box;
}

.semipolar-spinner {
  --size: 6rem;
  --duration: 750ms;
  --color: var(--primary);
  height: var(--size);
  width: var(--size);
  position: relative;
}

.semipolar-spinner .ring {
  border-radius: 50%;
  position: absolute;
  border: calc(var(--size) * 0.05) solid transparent;
  border-top-color: var(--color);
  border-left-color: var(--color);
  animation: semipolar-spinner-animation 2s infinite;
}

.semipolar-spinner .ring:nth-child(1) {
  height: calc(var(--size) - var(--size) * 0.2 * 0);
  width: calc(var(--size) - var(--size) * 0.2 * 0);
  top: calc(var(--size) * 0.1 * 0);
  left: calc(var(--size) * 0.1 * 0);
  animation-delay: calc(var(--duration) * 0.1 * 4);
  z-index: 5;
}

.semipolar-spinner .ring:nth-child(2) {
  height: calc(var(--size) - var(--size) * 0.2 * 1);
  width: calc(var(--size) - var(--size) * 0.2 * 1);
  top: calc(var(--size) * 0.1 * 1);
  left: calc(var(--size) * 0.1 * 1);
  animation-delay: calc(var(--duration) * 0.1 * 3);
  z-index: 4;
}

.semipolar-spinner .ring:nth-child(3) {
  height: calc(var(--size) - var(--size) * 0.2 * 2);
  width: calc(var(--size) - var(--size) * 0.2 * 2);
  top: calc(var(--size) * 0.1 * 2);
  left: calc(var(--size) * 0.1 * 2);
  animation-delay: calc(var(--duration) * 0.1 * 2);
  z-index: 3;
}

.semipolar-spinner .ring:nth-child(4) {
  height: calc(var(--size) - var(--size) * 0.2 * 3);
  width: calc(var(--size) - var(--size) * 0.2 * 3);
  top: calc(var(--size) * 0.1 * 3);
  left: calc(var(--size) * 0.1 * 3);
  animation-delay: calc(var(--duration) * 0.1 * 1);
  z-index: 2;
}

.semipolar-spinner .ring:nth-child(5) {
  height: calc(var(--size) - var(--size) * 0.2 * 4);
  width: calc(var(--size) - var(--size) * 0.2 * 4);
  top: calc(var(--size) * 0.1 * 4);
  left: calc(var(--size) * 0.1 * 4);
  animation-delay: calc(var(--duration) * 0.1 * 0);
  z-index: 1;
}

@keyframes semipolar-spinner-animation {
  50% {
    transform: rotate(360deg) scale(0.7);
  }
}
