.animated {
  animation-duration: 0.5s;
  animation-fill-mode: both;
}

.delay {
  animation-delay: 1.5s;

  &--short {
    animation-delay: 0.5s;
  }
}

@keyframes loading-block {
  0% {
    transform: scaleX(1);
  }

  100% {
    transform: scaleX(0.75);
  }
}

.loading-block {
  animation: loading-block 1.5s infinite alternate;
  background: palette(gray, x-light);
  height: 0.75em;
  margin-bottom: 0.5em;
  position: relative;
  transform-origin: left;
  width: 100%;

  &:nth-child(odd) {
    animation-delay: 0.5s;
  }
}

@keyframes fadeIn {
  0% {
    opacity: 0;
  }

  100% {
    opacity: 1;
  }
}

@keyframes fadeInUpCenter {
  0% {
    opacity: 0;
    transform: translate3d(-50%, 200%, 0);
    transition-timing-function: cubic-bezier(0.3, 0, 0, 1.3);
  }

  100% {
    opacity: 1;
    transform: translate3d(-50%, -50%, 0);
    transition-timing-function: cubic-bezier(0.3, 0, 0, 1.3);
  }
}

@keyframes fadeOutDownCenter {
  0% {
    opacity: 1;
    transform: translate3d(-50%, -50%, 0);
    transition-timing-function: cubic-bezier(0.3, 0, 0, 1.3);
  }

  100% {
    opacity: 0;
    transform: translate3d(-50%, 200%, 0);
    transition-timing-function: cubic-bezier(0.3, 0, 0, 1.3);
  }
}

@keyframes fadeInDownCenter {
  0% {
    opacity: 0;
    transform: translate3d(-50%, -100%, 0);
  }

  100% {
    opacity: 1;
    transform: translate3d(-50%, 0, 0);
  }
}

@keyframes fadeInUp {
  0% {
    opacity: 0;
    transform: translate3d(0, 100%, 0);
  }

  100% {
    opacity: 1;
    transform: translate3d(0, 0, 0);
  }
}

@keyframes fadeInOutUp {
  0%,
  100% {
    opacity: 0;
    transform: translate3d(0, 100%, 0);
  }

  10%,
  90% {
    opacity: 1;
    transform: translate3d(0, 0, 0);
  }
}

@keyframes fadeInDown {
  0% {
    opacity: 0;
    transform: translate3d(0, -100%, 0);
  }

  100% {
    opacity: 1;
    transform: translate3d(0, 0, 0);
  }
}

@keyframes fadeOutDown {
  0% {
    opacity: 1;
    transform: translate3d(0, 0, 0);
  }

  100% {
    opacity: 0;
    transform: translate3d(0, 100%, 0);
  }
}

@keyframes grow {
  0% {
    opacity: 1;
    transform: scale(0);
  }

  100% {
    opacity: 0;
    transform: scale(2);
  }
}

.fadeIn {
  animation-name: fadeIn;
  animation-duration: 0.5s;
}

.fadeInUpCenter {
  animation-delay: 0.25s;
  animation-name: fadeInUpCenter;
}

.slideUpCenter {
  animation-delay: 0.25s;
  animation-name: fadeInUpCenter;
}

.slideDownCenter {
  animation-name: fadeOutDownCenter;
}

.fadeInDownCenter {
  animation-delay: 0.25s;
  animation-name: fadeInDownCenter;
}

.fadeInUp {
  animation-name: fadeInUp;
}

.fadeInOutUp {
  animation-name: fadeInOutUp;
}

.fadeInDown {
  animation-name: fadeInDown;
}

.fadeOutDown {
  animation-name: fadeOutDown;
}

.spinner {
  position: relative;
  line-height: 0;

  &__text {
    @include center(v);

    padding-left: 10px;
  }
}
