@keyframes spin {
  to {
    transform: rotate(360deg);
  }
}

@keyframes shake {
  from {
    transform: none;
  }

  15% {
    transform: translate3d(-21%, 0, 0) rotate(-5deg);
  }

  30% {
    transform: translate3d(13%, 0, 0) rotate(3deg);
  }

  45% {
    transform: translate3d(-8%, 0, 0) rotate(-3deg);
  }

  60% {
    transform: translate3d(5%, 0, 0) rotate(2deg);
  }

  75% {
    transform: translate3d(-3%, 0, 0) rotate(-1deg);
  }

  to {
    transform: none;
  }
}

@keyframes fade {
  from {
    opacity: 0;
  }
}

@keyframes move-left {
  from {
    transform: translateX(-100%);
  }
}

@keyframes move-right {
  from {
    transform: translateX(100%);
  }
}

@keyframes shrink {
  from {
    transform: scale(1.1);
  }
}

@keyframes grow {
  from {
    transform: scale(0.9);
  }
}

@keyframes from-left {
  from {
    transform: scale(0.8) translateX(-50%);
    opacity: 0;
  }
  25% {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

@keyframes from-right {
  from {
    transform: scale(0.8) translateX(50%);
    opacity: 0;
  }
  25% {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

@keyframes from-bottom {
  from {
    opacity: 0;
    transform: translateY(50px);
  }
  25% {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

.shake {
  animation-name: shake;
}

.fade-in,
.fade-out {
  animation-name: fade;
}

.move-left-in,
.move-left-out {
  animation-name: move-left;
}

.move-right-in,
.move-right-out {
  animation-name: move-right;
}

.shrink-in,
.shrink-out {
  animation-name: shrink;
}

.grow-in,
.grow-out {
  animation-name: grow;
}

.from-left-in,
.from-left-out {
  animation-name: from-left;
}

.from-right-in,
.from-right-out {
  animation-name: from-bottom;
}

.from-bottom-in,
.from-bottom-out {
  animation-name: from-bottom;
}

.fade-out,
.move-left-out,
.move-right-out,
.shrink-out,
.grow-out,
.from-left-out,
.from-right-out,
.from-bottom-out {
  animation-direction: reverse;
}

.shake,
.fade-in,
.fade-out,
.move-left-in,
.move-left-out,
.move-right-in,
.move-right-out,
.shrink-in,
.shrink-out,
.grow-in,
.grow-out,
.from-left-in,
.from-left-out,
.from-right-in,
.from-right-out,
.from-bottom-in,
.from-bottom-out {
  animation-duration: 400ms;
}
