.spinner {
  display: block;
  margin-top: 2em;
  margin-right: auto;
  margin-left: auto;
  width: 4em;
  height: 4em;
  padding: 7px;
  border: 1px solid #ccc;
  border-radius: 50%;
  -webkit-transform: scale(.7);
  transform: scale(.7);
}

.medium {
  -webkit-transform: scale(1);
  transform: scale(1)
}

.large {
  margin-top: 4em;
  -webkit-transform: scale(1.5);
  transform: scale(1.5)
}

.spinner-wrapper {
  position: relative;
  width: 4em;
  height: 4em;
  border-radius: 100%;
  left: calc(50% - 2em);
}

.spinner-wrapper::after {
  content: "";
  background: #38a2dc;
  border-radius: 50%;
  width: 3em;
  height: 3em;
  position: absolute;
  top: 0.5em;
  left: 0.5em;
}

.rotator {
  position: relative;
  width: 4em;
  border-radius: 4em;
  overflow: hidden;
  -webkit-animation: rotate 2000ms infinite linear;
  animation: rotate 2000ms infinite linear;
}

.rotator:before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: #ffffff;
  border: 3px solid #38a2dc;
  border-radius: 100%;
}

.inner-spin {
  background: #38a2dc;
  height: 4em;
  width: 2em;
}

.inner-spin {
  -webkit-animation: rotate-left 2500ms infinite cubic-bezier(0.445, 0.050, 0.550, 0.950);
  animation: rotate-left 2500ms infinite cubic-bezier(0.445, 0.050, 0.550, 0.950);
  border-radius: 2em 0 0 2em;
  -webkit-transform-origin: 2em 2em;
  transform-origin: 2em 2em;
}

.inner-spin:last-child {
  -webkit-animation: rotate-right 2500ms infinite cubic-bezier(0.445, 0.050, 0.550, 0.950);
  animation: rotate-right 2500ms infinite cubic-bezier(0.445, 0.050, 0.550, 0.950);
  margin-top: -4em;
  border-radius: 0 2em 2em 0;
  float: right;
  -webkit-transform-origin: 0 50%;
  transform-origin: 0 50%;
}

@-webkit-keyframes rotate-left {
  60%, 75%, 100% {
    -webkit-transform: rotate(360deg);
    transform: rotate(360deg);
  }
}

@keyframes rotate-left {
  60%, 75%, 100% {
    -webkit-transform: rotate(360deg);
    transform: rotate(360deg);
  }
}

@-webkit-keyframes rotate {
  0% {
    -webkit-transform: rotate(0);
    transform: rotate(0);
  }
  100% {
    -webkit-transform: rotate(360deg);
    transform: rotate(360deg);
  }
}

@keyframes rotate {
  0% {
    -webkit-transform: rotate(0);
    transform: rotate(0);
  }
  100% {
    -webkit-transform: rotate(360deg);
    transform: rotate(360deg);
  }
}

@-webkit-keyframes rotate-right {
  0%, 25%, 45% {
    -webkit-transform: rotate(0);
    transform: rotate(0);
  }

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

@keyframes rotate-right {
  0%, 25%, 45% {
    -webkit-transform: rotate(0);
    transform: rotate(0);
  }

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