.loading-overlay {
  position         : absolute;
  top              : 50vh;
  left             : 0;
  right            : 0;
  z-index: 13;
}

.i-hate-spinners {
  .lid:before,
  .lid:after,
  .lid,
  .square,
  .square:before,
  .square:after,
  .icon-spin {
    animation: none;
    -webkit-animation:: none;
  }
}

.underlay {
  z-index: 10;
  background-color: rgba($light-grey, 0.5);
  position: fixed;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
}

.square {
  background: $secondary;
  height: 25px;
  width: 25px;
  margin: 0 auto;
  position: relative;
  animation: "";

  &:before, &:after {
    content: "";
    height: 25px;
    width: 25px;
    background: $info;
    display: block;
    position: absolute;
    animation: ball ease 2s;
    animation-iteration-count: infinite;
    transform-origin: 50% 50%;
    z-index: -1;
    border-radius: 90px;
  }

  &:after {
    animation-delay: .25s;
  }
}

.lid {
  &:before, &:after {
    content: "";
    height: 3px;
    width: 12.5px;
    background: $secondary;
    position: absolute;
    animation: lid ease-in-out 2s;
    animation-iteration-count: infinite;
    transform-origin: 0% 50%;
    left: 2px
  }
  &:after {
    right: 0;
    animation: lidLeft ease-in-out 2s;
    animation-iteration-count: infinite;
    transform-origin: 100% 50%;
    left:10.5px;
  }
}

@keyframes ball {
  0% {
    transform: scaleX(0.25) scaleY(0.25);
    top: -40px;
    opacity: 0;
  }
  50% {
    opacity: .75;
  }
  100% {
    transform: scaleX(0.75) scaleY(0.75);
    top: 0;
    opacity: 1;
  }
}

@keyframes lid {
  0% {
    transform:  rotate(0);
  }
  50% {
    transform:  rotate(-90deg);
  }
  100% {
    transform: rotate(0);
  }
}

@keyframes lidLeft {
  0% {
    transform:  rotate(0);
  }
  50% {
    transform:  rotate(90deg);
  }
  100% {
    transform: rotate(0);
  }
}
