@mixin spinner-color($color) {
  border-color: rgba($color, 0.25);
  border-top-color: $color;
}

@mixin spinner-size($size, $border-width) {
  width: $size;
  height: $size;
  border-width: $border-width;
  @include webkit-prefix(transform-origin, 50% 50% calc((#{$size} / 2) + #{$border-width}));
}

@keyframes spinner-rotate {
  0% {
    transform: rotate(0);
  }

  100% {
    transform: rotate(360deg);
  }
}

.spinner {
  border-radius: 50%;
  position: relative;
  margin: 0 auto;
  animation-name: spinner-rotate;
  animation-duration: 0.6s;
  animation-timing-function: linear;
  animation-iteration-count: infinite;
  border-style: solid;
  display: inline-flex;
  @include spinner-size(16px, 2px);
  @include spinner-color($orange-400);

  &.spinner-md {
    @include spinner-size(32px, 3px);
  }

  &.spinner-lg {
    @include spinner-size(64px, 4px);
  }

  &.spinner-dark {
    @include spinner-color($gray-500);
  }

  &.spinner-light {
    @include spinner-color($white);
  }
}

.btn {
  .spinner,
  .gl-spinner {
    vertical-align: text-bottom;
  }
}
