.spinner-grow,
.spinner-border {
  display: inline-block;
  width: var(--base-spinner-width);
  height: var(--base-spinner-height);
  vertical-align: var(--base-spinner-vertical-align);
  border-radius: 50%;
  animation: var(--base-spinner-animation-speed) linear infinite var(--base-spinner-animation-name);
}

@keyframes spinner-border {
  to {
    transform: rotate(360deg) /* rtl:ignore */;
  }
}
.spinner-border {
  --base-spinner-width: 2rem;
  --base-spinner-height: 2rem;
  --base-spinner-vertical-align: -0.125em;
  --base-spinner-border-width: 0.25em;
  --base-spinner-animation-speed: 0.75s;
  --base-spinner-animation-name: spinner-border;
  border: var(--base-spinner-border-width) solid currentcolor;
  border-right-color: transparent;
}

.spinner-border-sm {
  --base-spinner-width: 1rem;
  --base-spinner-height: 1rem;
  --base-spinner-border-width: 0.2em;
}

@keyframes spinner-grow {
  0% {
    transform: scale(0);
  }
  50% {
    opacity: 1;
    transform: none;
  }
}
.spinner-grow {
  --base-spinner-width: 2rem;
  --base-spinner-height: 2rem;
  --base-spinner-vertical-align: -0.125em;
  --base-spinner-animation-speed: 0.75s;
  --base-spinner-animation-name: spinner-grow;
  background-color: currentcolor;
  opacity: 0;
}

.spinner-grow-sm {
  --base-spinner-width: 1rem;
  --base-spinner-height: 1rem;
}

@media (prefers-reduced-motion: reduce) {
  .spinner-border,
  .spinner-grow {
    --base-spinner-animation-speed: 1.5s;
  }
}
