.spinner {
  @apply .h-4 .relative .bg-transparent;
  pointer-events: none;

  &.spinner-xl {
    @apply .h-16;
  }

  &:after {
    @apply .border-2 .border-neutral-400 .absolute .block .h-4 .w-4 .rounded-full;
    animation: spinners--spin 500ms infinite linear;
    border-top-color: transparent !important;
    border-right-color: transparent !important;
    content: '';
    left: calc(50% - (1em / 2));
  }

  &.spinner-relative:after {
    @apply .relative;
  }

  &.spinner-xl:after {
    @apply .h-16 .w-16;
    left: calc(50% - (4rem / 2));
  }

  /**
   * Speeds
   */
  &.spin-slow:after {
    animation: spinners--spin 1200ms infinite linear;
  }

  /**
   * Spinner Colors
   */
  &.blue:after, &.text-blue:after {
    @apply .border-primary-500;
  }

  &.white:after, &.text-white:after {
    @apply .border-white;
  }

  &.spinner-thick:after {
    @apply .border-4;
  }
}

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

  to {
    transform: rotate(360deg);
  }
}