.animora-has-scroll-animation {
  animation-fill-mode: forwards;
  animation-duration: var(--animora-duration);
  animation-delay: var(--animora-delay);
  animation-timing-function: var(--animora-timing);
  animation-iteration-count: 1;
}

.animora-has-repeat-animation {
  animation-duration: var(--animora-repeat-duration);
  animation-iteration-count: infinite;
}

@keyframes animora-fade-in {
  0% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}
.animora-fade-in {
  opacity: 0;
}
.animora-fade-in.animora-animated {
  animation-name: animora-fade-in;
}

@keyframes animora-fade-in-up {
  100% {
    opacity: 1;
    transform: none;
  }
}
.animora-fade-in-up {
  opacity: 0;
  transform: translateY(50%);
}
.animora-fade-in-up.animora-animated {
  animation-name: animora-fade-in-up;
}

@keyframes animora-fade-in-left {
  100% {
    opacity: 1;
    transform: none;
  }
}
.animora-fade-in-left {
  opacity: 0;
  transform: translateX(50%);
}
.animora-fade-in-left.animora-animated {
  animation-name: animora-fade-in-left;
}

@keyframes animora-fade-in-right {
  100% {
    opacity: 1;
    transform: none;
  }
}
.animora-fade-in-right {
  opacity: 0;
  transform: translateX(-50%);
}
.animora-fade-in-right.animora-animated {
  animation-name: animora-fade-in-right;
}

@keyframes animora-zoom-in {
  100% {
    transform: none;
  }
}
.animora-zoom-in {
  transform: scale(0);
}
.animora-zoom-in.animora-animated {
  animation-name: animora-zoom-in;
}

@keyframes animora-zoom-and-fade {
  100% {
    opacity: 1;
    transform: none;
  }
}
.animora-zoom-and-spin {
  transform: scale(0);
  opacity: 0;
}
.animora-zoom-and-spin.animora-animated {
  animation-name: animora-zoom-and-fade;
}

@keyframes animora-zoom-and-spin {
  100% {
    transform: none;
  }
}
.animora-zoom-and-spin {
  transform: scale(0) rotate(-1080deg);
}
.animora-zoom-and-spin.animora-animated {
  animation-name: animora-zoom-and-spin;
}

@keyframes animora-shake {
  0% {
    transform: none;
  }
  0.5% {
    transform: translate(-2em, 30%);
  }
  1.5% {
    transform: translate(-2em, -30%);
  }
  2.5% {
    transform: translate(2em, 30%);
  }
  3.5% {
    transform: translate(2em, -30%);
  }
  4.5% {
    transform: translate(-2em, 30%);
  }
  5% {
    transform: none;
  }
  100% {
    transform: none;
  }
}
.animora-shake {
  animation-name: animora-shake;
}

@keyframes animora-pulse {
  0% {
    transform: none;
  }
  3% {
    transform: scale(1.2);
  }
  10% {
    transform: none;
  }
  100% {
    transform: none;
  }
}
.animora-pulse {
  animation-name: animora-pulse;
}

@keyframes animora-heartbeat {
  0% {
    transform: none;
  }
  2% {
    transform: scale(1.2);
  }
  6% {
    transform: none;
  }
  8% {
    transform: scale(1.1);
  }
  12% {
    transform: none;
  }
}
.animora-heartbeat {
  animation-name: animora-heartbeat;
}

@keyframes animora-blink {
  0% {
    opacity: 1;
  }
  50% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}
.animora-blink {
  animation-name: animora-blink;
}
