/**
 * cssanimation.css
 * Current Version: 1.0.2
 * https:/www.cssanimatio.io
 * Created and maintained by: Pavel
 * Find me at: https:/www.linkedin.com/in/yesiamrocks/
 * Email: hello@cssanimation.io
 * Github: https:/github.com/yesiamrocks/cssanimation.io
 * Title: A CSS Animation Library for Developers and Ninjas
 * Copyright (c) 2017 Pavel
 * License: cssanimation.io is licensed under the MIT license
 **/
.cssanimation {
  animation-duration: 0.9s;
  animation-fill-mode: both;
}
.cssanimation span {
  animation-duration: 0.3s;
  animation-fill-mode: both;
}

.cssanimation span {
  display: inline-block;
}
.infinite {
  animation-iteration-count: infinite !important;
}

/*************************************************************
Striking
**************************************************************/
.hu__hu__ {
  animation: hu__hu__ 2s ease-in-out;
  animation-iteration-count: 1;
}
@keyframes hu__hu__ {
  50% {
    transform: translateY(30px);
  }
}

.leSnake span {
  animation: leSnake 1.5s ease-in-out;
  animation-iteration-count: 1;
}
@keyframes leSnake {
  from,
  to {
    transform: translateY(0px);
  }
  50% {
    transform: translateY(30px);
  }
}

.lePeek span {
  animation-name: lePeek;
}
@keyframes lePeek {
  25% {
    transform: rotateX(30deg) translateY(10px) rotate(-13deg);
  }
  50% {
    transform: translateY(-22px) rotate(3deg) scale(1.1);
  }
}

.effect3d {
  animation-name: effect3d;
}
@keyframes effect3d {
  to {
    text-shadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9,
      0 5px 0 #aaa, 0 6px 1px rgba(0, 0, 0, 0.1), 0 0 5px rgba(0, 0, 0, 0.1),
      0 1px 3px rgba(0, 0, 0, 0.3), 0 3px 5px rgba(0, 0, 0, 0.2),
      0 5px 10px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.2),
      0 20px 20px rgba(0, 0, 0, 0.15);
  }
}

.leRainDrop span {
  animation-name: leRainDrop;
  animation-iteration-count: 1;
}
@keyframes leRainDrop {
  0%,
  25%,
  55%,
  75%,
  87%,
  97%,
  100% {
    transform: scaleX(1);
  }
  26%,
  56%,
  76% {
    transform: scaleX(1.3) scaleY(0.8);
  }
  31%,
  61%,
  81% {
    transform: scaleX(0.8) scaleY(1.2);
  }
  76%,
  88% {
    transform: scaleX(1.2);
  }
  98% {
    transform: scaleX(1.1);
  }
}

.pepe {
  animation-name: pepe;
  animation-iteration-count: infinite;
}
@keyframes pepe {
  from,
  33%,
  66%,
  to {
    transform: rotate(4deg);
  }
  16%,
  50%,
  83% {
    transform: rotate(-4deg);
  }
}

.leWaterWave span {
  animation: leWaterWave 0.2s linear 1;
}
@keyframes leWaterWave {
  50% {
    transform: skewY(1deg) skewX(-1deg) scale(1.06);
  }
}

.lightning {
  animation-name: lightning;
}
@keyframes lightning {
  from,
  50%,
  to {
    opacity: 1;
  }
  25%,
  75% {
    opacity: 0;
  }
}

.leJoltZoom span {
  animation-name: leJoltZoom;
}
@keyframes leJoltZoom {
  10% {
    font-size: 140%;
  }
  40% {
    font-size: 80%;
  }
  100% {
    font-size: 100%;
  }
}

.typing {
  width: 473px;
  overflow: hidden;
  white-space: nowrap;
  border-right: 2px solid #7e2ea0;
  animation: typing 2s steps(12, end), cursor 0.2s steps(12, end) infinite;
}
@keyframes typing {
  from {
    width: 0;
  }
}
@keyframes cursor {
  50% {
    border-color: transparent;
  }
}

.electricity {
  animation-name: electricity;
  animation-iteration-count: infinite;
}
@keyframes electricity {
  from,
  37%,
  67%,
  85%,
  93% {
    transform: translateY(30px);
  }
  4%,
  64%,
  88% {
    transform: translateY(10px);
  }
  8%,
  24%,
  32%,
  44% {
    transform: translateY(5px);
  }
  12%,
  52%,
  60%,
  20% {
    transform: translateY(10px);
  }
  16%,
  40% {
    transform: translateY(5px);
  }
  28%,
  56% {
    transform: translateY(10px);
  }
  48%,
  72%,
  80%,
  96% {
    transform: translateY(30px);
  }
  76%,
  to {
    transform: translateY(40px);
  }
}

.wipe {
  width: 473px;
  overflow: hidden;
  margin: 0 auto;
  display: inline-flex;
  animation-name: wipe;
}
@keyframes wipe {
  to {
    width: 0;
  }
}

.open {
  width: 473px;
  margin: 0 auto;
  overflow: hidden;
  display: inline-flex;
  animation-name: open;
}
@keyframes open {
  from {
    width: 0;
  }
}

.leMagnify span {
  animation-name: leMagnify;
}
@keyframes leMagnify {
  50% {
    transform: scale(1.8);
    letter-spacing: 26px;
  }
}

.leBeat span {
  animation-name: leBeat;
}
@keyframes leBeat {
  14%,
  42% {
    transform: scale(1.3);
  }
  28%,
  70% {
    transform: scale(1);
  }
}

/*************************************************************
Letter Fade in
**************************************************************/
.leFadeIn span {
  animation-name: leFadeIn;
}
@keyframes leFadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

.leFadeInLeft span {
  animation-name: leFadeInLeft;
}
@keyframes leFadeInLeft {
  from {
    opacity: 0;
    transform: translateX(-60px);
  }
  to {
    opacity: 1;
  }
}

.leFadeInRight span {
  animation-name: leFadeInRight;
}
@keyframes leFadeInRight {
  from {
    opacity: 0;
    transform: translateX(60px);
  }
  to {
    opacity: 1;
  }
}

.leFadeInTop span {
  animation-name: leFadeInTop;
}
@keyframes leFadeInTop {
  from {
    opacity: 0;
    transform: translateY(-100%);
  }
  to {
    opacity: 1;
  }
}

.leFadeInBottom span {
  animation-name: leFadeInBottom;
}
@keyframes leFadeInBottom {
  from {
    opacity: 0;
    transform: translateY(100%);
  }
  to {
    opacity: 1;
  }
}

/************************************************************
Letter Fade Out
*************************************************************/
.leFadeOut span {
  animation-name: leFadeOut;
}
@keyframes leFadeOut {
  to {
    opacity: 0;
  }
}

.leFadeOutLeft span {
  animation-name: leFadeOutLeft;
}
@keyframes leFadeOutLeft {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
    transform: translateX(-60px);
  }
}

.leFadeOutRight span {
  animation-name: leFadeOutRight;
}
@keyframes leFadeOutRight {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
    transform: translateX(60px);
  }
}

.leFadeOutTop span {
  animation-name: leFadeOutTop;
}
@keyframes leFadeOutTop {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
    transform: translateY(-100%);
  }
}

.leFadeOutBottom span {
  animation-name: leFadeOutBottom;
}
@keyframes leFadeOutBottom {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
    transform: translateY(100%);
  }
}

/*************************************************************
Moving Back
**************************************************************/
.leMovingBackFromRight span {
  animation-name: leMovingBackFromRight;
  transform-origin: bottom;
}
@keyframes leMovingBackFromRight {
  40% {
    transform: rotate(45deg);
  }
  100% {
    transform: rotate(0deg);
    animation-timing-function: cubic-bezier(0, 0.9, 0.7, 1.45);
  }
}

.leMovingBackFromLeft span {
  animation-name: leMovingBackFromLeft;
  transform-origin: bottom;
}
@keyframes leMovingBackFromLeft {
  40% {
    transform: rotate(-45deg);
  }
  100% {
    transform: rotate(0deg);
    animation-timing-function: cubic-bezier(0, 0.9, 0.7, 1.45);
  }
}

/*************************************************************
Kick out
**************************************************************/
.leKickOutBehind span {
  animation-name: leKickOutFront;
  transform-origin: top;
}
@keyframes leKickOutFront {
  40% {
    transform: rotate(45deg);
  }
  100% {
    transform: rotate(0deg);
    animation-timing-function: cubic-bezier(0, 0.9, 0.7, 1.45);
  }
}

.leKickOutFront span {
  animation-name: leKickOutBehind;
  transform-origin: top;
}
@keyframes leKickOutBehind {
  40% {
    transform: rotate(-45deg);
  }
  100% {
    transform: rotate(0deg);
    animation-timing-function: cubic-bezier(0, 0.9, 0.7, 1.45);
  }
}

/************************************************************
Letter Skate
*************************************************************/
.leSkateX span {
  animation-name: leScaleX;
  animation-iteration-count: 1;
}
@keyframes leScaleX {
  50% {
    transform: scaleX(0.4);
  }
}

.leSkateY span {
  animation-name: leSkateY;
  animation-iteration-count: 1;
}
@keyframes leSkateY {
  50% {
    transform: scaleY(0.4);
  }
}

.leSkateXY span {
  animation-name: leSkateXY;
  animation-iteration-count: 1;
  animation-duration: 1.5s;
}
@keyframes leSkateXY {
  25% {
    transform: scale3d(1, 0.4, 0);
  }
  50% {
    transform: scale3d(0.4, 0.4, 1);
  }
  75% {
    transform: scale3d(0.4, 1, 1);
  }
}

/************************************************************
Letter Scale
*************************************************************/
.leScaleXIn span {
  animation-name: leScaleXIn;
}
@keyframes leScaleXIn {
  from {
    transform: perspective(400px) rotateX(90deg);
    opacity: 0;
  }
  50% {
    opacity: 1;
  }
}

.leScaleXOut span {
  animation-name: leScaleXOut;
}
@keyframes leScaleXOut {
  to {
    transform: perspective(400px) rotateX(90deg);
    opacity: 0;
  }
  from {
    opacity: 1;
  }
}

.leScaleYIn span {
  animation-name: leScaleYIn;
}
@keyframes leScaleYIn {
  from {
    transform: perspective(400px) rotateY(90deg);
    opacity: 0;
  }
  50% {
    opacity: 1;
  }
}

.leScaleYOut span {
  animation-name: leScaleYOut;
}
@keyframes leScaleYOut {
  to {
    transform: perspective(400px) rotateY(90deg);
    opacity: 0;
  }
  from {
    opacity: 1;
  }
}

/*************************************************************
Letter Jump
**************************************************************/
.leJump span {
  animation-name: leJump;
  animation-iteration-count: infinite;
}
@keyframes leJump {
  to {
    transform: translateY(-20px);
  }
}

/*************************************************************
Letter Fly
**************************************************************/
.leAboundTop span {
  animation-name: leAboundTop;
}
@keyframes leAboundTop {
  50% {
    transform: translateY(-100px);
    animation-timing-function: ease-in;
  }
}

.leAboundBottom span {
  animation-name: leAboundBottom;
}
@keyframes leAboundBottom {
  50% {
    transform: translateY(100px);
    animation-timing-function: ease-in;
  }
}

.leAboundLeft span {
  animation-name: leAboundLeft;
}
@keyframes leAboundLeft {
  50% {
    transform: translateX(-100px);
    animation-timing-function: ease-in;
  }
}

.leAboundRight span {
  animation-name: leAboundRight;
}
@keyframes leAboundRight {
  50% {
    transform: translateX(100px);
    animation-timing-function: ease-in;
  }
}

/*************************************************************
Letter Fly In
**************************************************************/
.leFlyInTop span {
  animation-name: leFlyInTop;
}
@keyframes leFlyInTop {
  0% {
    transform: translate(0px, -80px);
    opacity: 0;
  }
  50% {
    transform: translate(10px, 50px);
    animation-timing-function: ease-in-out;
  }
}

.leFlyInLeft span {
  animation-name: leFlyInLeft;
  animation-timing-function: ease-in-out;
}
@keyframes leFlyInLeft {
  0% {
    transform: translate(-40px, 0px);
    opacity: 0;
  }
  50% {
    transform: translate(40px, 0px);
  }
}

.leFlyInRight span {
  animation-name: leFlyInRight;
  animation-timing-function: ease-in-out;
}
@keyframes leFlyInRight {
  0% {
    transform: translate(40px, 0px);
    opacity: 0;
  }
  50% {
    transform: translate(-40px, 0px);
  }
}

.leFlyInBottom span {
  animation-name: leFlyInBottom;
}
@keyframes leFlyInBottom {
  0% {
    transform: translate(0px, 80px);
    opacity: 0;
  }
  50% {
    transform: translate(10px, -50px);
    animation-timing-function: ease-in-out;
  }
}

/*************************************************************
Letter Fly Out
**************************************************************/
.leFlyOutTop span {
  animation-name: leFlyOutTop;
}
@keyframes leFlyOutTop {
  50% {
    transform: translate(0px, 50px);
  }
  to {
    transform: translate(0px, -100px);
    opacity: 0;
  }
}

.leFlyOutLeft span {
  animation-name: leFlyOutLeft;
  animation-timing-function: ease-in-out;
}
@keyframes leFlyOutLeft {
  50% {
    transform: translate(40px, 0px);
  }
  to {
    transform: translate(-100px, 0px);
    opacity: 0;
  }
}

.leFlyOutRight span {
  animation-name: leFlyOutRight;
  animation-timing-function: ease-in-out;
}
@keyframes leFlyOutRight {
  50% {
    transform: translate(-40px, 0px);
  }
  to {
    transform: translate(100px, 0px);
    opacity: 0;
  }
}

.leFlyOutBottom span {
  animation-name: leFlyOutBottom;
}
@keyframes leFlyOutBottom {
  50% {
    transform: translate(0px, -40px);
  }
  to {
    transform: translate(0px, 100px);
    opacity: 0;
  }
}

/*************************************************************
Letter Door Open & Close
**************************************************************/
.leDoorCloseLeft span {
  animation-name: leDoorCloseLeft;
}
@keyframes leDoorCloseLeft {
  from,
  to {
    transform: perspective(400px);
    transform-origin: left;
  }
  from {
    transform: rotateY(90deg);
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

.leDoorOpenRight span {
  animation-name: leDoorOpenRight;
}
@keyframes leDoorOpenRight {
  from,
  to {
    transform: perspective(400px);
    transform-origin: left;
  }
  to {
    transform: rotateY(90deg);
    opacity: 0;
  }
}

.leDoorCloseRight span {
  animation-name: leDoorCloseRight;
}
@keyframes leDoorCloseRight {
  from,
  to {
    transform: perspective(400px);
    transform-origin: right;
  }
  from {
    transform: rotateY(-90deg);
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

.leDoorOpenLeft span {
  animation-name: leDoorOpenLeft;
}
@keyframes leDoorOpenLeft {
  from,
  to {
    transform: perspective(400px);
    transform-origin: right;
  }
  to {
    transform: rotateY(-90deg);
    opacity: 0;
  }
}

/*************************************************************
Letter Hang And Drop
**************************************************************/
.leHangAndDropLeft span {
  animation-name: leHangAndDropLeft;
}
@keyframes leHangAndDropLeft {
  from {
    transform-origin: left;
  }
  50% {
    transform: rotate(100deg);
    transform-origin: left;
  }
  60% {
    transform: rotate(90deg);
    transform-origin: left;
  }
  to {
    transform: translateY(800px) rotate(70deg);
    transform-origin: left;
  }
}

.leHangAndDropRight span {
  animation-name: leHangAndDropRight;
}
@keyframes leHangAndDropRight {
  from {
    transform-origin: right;
  }
  50% {
    transform: rotate(-100deg);
    transform-origin: right;
  }
  60% {
    transform: rotate(-90deg);
    transform-origin: right;
  }
  to {
    transform: translateY(800px) rotate(-70deg);
    transform-origin: right;
  }
}

/*************************************************************
Letter Shake
**************************************************************/
.leRencontre span {
  animation: leRencontre 0.4s;
  animation-iteration-count: 1;
}
@keyframes leRencontre {
  0%,
  33%,
  100% {
    transform-origin: bottom;
    animation-timing-function: cubic-bezier(0.17, 0.67, 0.79, 1.83);
  }
  33% {
    transform: translateY(-2px) rotate(-3deg);
  }
  66% {
    transform: translateY(2px) rotate(3deg);
  }
}

.lePulseShake span {
  animation-name: lePulseShake;
  animation-iteration-count: 1;
}
@keyframes lePulseShake {
  90% {
    transform: scale(1);
  }
  92% {
    transform: scale(1.2);
  }
  96% {
    transform: scale(1, 1);
  }
  98% {
    transform: scale(1.1);
  }
}

.leHorizontalShake span {
  animation-name: leHorizontalShake;
  animation-iteration-count: 1;
}
@keyframes leHorizontalShake {
  3%,
  12%,
  21%,
  30%,
  39%,
  48%,
  57%,
  65%,
  74%,
  3%,
  92% {
    transform: translateX(5px);
  }
  6%,
  15%,
  24%,
  33%,
  42%,
  51%,
  60%,
  68%,
  77%,
  86%,
  95% {
    transform: translateX(3px);
  }
  9%,
  18%,
  27%,
  36%,
  45%,
  54%,
  63%,
  71%,
  80%,
  89%,
  98% {
    transform: translateX(-5px);
  }
}

.leVerticalShake span {
  animation-name: leVerticalShake;
  animation-iteration-count: 1;
}
@keyframes leVerticalShake {
  3%,
  12%,
  21%,
  30%,
  39%,
  48%,
  57%,
  65%,
  74%,
  83%,
  92% {
    transform: translateY(5px);
  }
  6%,
  15%,
  24%,
  33%,
  42%,
  51%,
  60%,
  68%,
  77%,
  86%,
  95% {
    transform: translateY(3px);
  }
  9%,
  18%,
  27%,
  36%,
  45%,
  54%,
  63%,
  71%,
  80%,
  89%,
  98% {
    transform: translateY(-5px);
  }
}

.leMadMax span {
  animation-name: leMadMax;
  animation-iteration-count: 1;
}
@keyframes leMadMax {
  3%,
  12%,
  21%,
  30%,
  39%,
  48%,
  57%,
  65%,
  74%,
  83%,
  92% {
    transform: translateY(5px) scale(1.1);
  }
  6%,
  15%,
  24%,
  33%,
  42%,
  51%,
  60%,
  68%,
  77%,
  86%,
  95% {
    transform: translateY(3px) scale(0.8);
  }
  9%,
  18%,
  27%,
  36%,
  45%,
  54%,
  63%,
  71%,
  80%,
  89%,
  98% {
    transform: translateY(-5px) scale(1.1);
  }
}

.leHorizontalTremble span {
  animation-name: leHorizontalTremble;
  animation-iteration-count: 1;
}
@keyframes leHorizontalTremble {
  3%,
  21%,
  39%,
  57%,
  74%,
  92% {
    transform: translateX(5px);
  }
  6%,
  24%,
  42%,
  60%,
  77%,
  95% {
    transform: translateX(3px);
  }
  9%,
  27%,
  45%,
  63%,
  80%,
  98% {
    transform: translateX(-5px);
  }
}

.leVerticalTremble span {
  animation-name: leVerticalTremble;
  animation-iteration-count: 1;
}
@keyframes leVerticalTremble {
  3%,
  21%,
  39%,
  57%,
  74%,
  92% {
    transform: translateY(5px);
  }
  6%,
  24%,
  42%,
  60%,
  77%,
  95% {
    transform: translateY(3px);
  }
  9%,
  27%,
  45%,
  63%,
  80%,
  98% {
    transform: translateY(-5px);
  }
}

.leCrazyCool span {
  animation-name: leCrazyCool;
  animation-iteration-count: 1;
}
@keyframes leCrazyCool {
  3%,
  21%,
  39%,
  57%,
  74%,
  92% {
    transform: translateY(5px) scale(1.1);
  }
  6%,
  24%,
  42%,
  60%,
  77%,
  95% {
    transform: translateY(3px) scale(0.8);
  }
  9%,
  27%,
  45%,
  63%,
  80%,
  98% {
    transform: translateY(-5px) scale(1.1);
  }
}

.leVibration span {
  animation: leVibration 0.1s linear 2;
}
@keyframes leVibration {
  50% {
    transform: skewY(1deg) skewX(-1deg) scale(1.06);
  }
}

/*************************************************************
Letter Push Release
**************************************************************/
.lePushReleaseFrom span {
  animation-name: lePushReleaseFrom;
}
@keyframes lePushReleaseFrom {
  from {
    transform: scale(3, 3);
    opacity: 0;
  }
  50% {
    transform: scale(0.5, 0.5);
  }
}

.lePushReleaseFromLeft span {
  animation-name: lePushReleaseFromLeft;
}
@keyframes lePushReleaseFromLeft {
  from {
    transform: translateX(-100%);
    opacity: 0;
  }
  30% {
    transform: translateX(100px);
  }
}

.lePushReleaseFromTop span {
  animation-name: lePushReleaseFromTop;
}
@keyframes lePushReleaseFromTop {
  from {
    transform: translateY(-100%);
    opacity: 0;
  }
  30% {
    transform: translateY(100px);
  }
}

.lePushReleaseFromBottom span {
  animation-name: lePushReleaseFromBottom;
}
@keyframes lePushReleaseFromBottom {
  from {
    transform: translateY(100%);
    opacity: 0;
  }
  30% {
    transform: translateY(-100px);
  }
}

.lePushReleaseTo span {
  animation-name: lePushReleaseTo;
}
@keyframes lePushReleaseTo {
  30% {
    transform: scale(0.5, 0.5);
  }
  to {
    transform: scale(5, 5);
    opacity: 0;
  }
}

.lePushReleaseToTop span {
  animation-name: lePushReleaseToTop;
}
@keyframes lePushReleaseToTop {
  30% {
    transform: translateY(100px);
  }
  to {
    transform: translateY(-100%);
    opacity: 0;
  }
}

.lePushReleaseToBottom span {
  animation-name: lePushReleaseToBottom;
}
@keyframes lePushReleaseToBottom {
  30% {
    transform: translateY(-100px);
  }
  to {
    transform: translateY(100%);
    opacity: 0;
  }
}

/*************************************************************
Letter Flip
**************************************************************/
.leFlipInTop span {
  animation-name: leFlipInTop;
}
@keyframes leFlipInTop {
  from {
    transform: perspective(600px);
    opacity: 0;
  }
  30% {
    transform: perspective(600px) rotateX(180deg);
    transform-origin: 0 0;
    animation-timing-function: ease-out;
  }
  to {
    transform: perspective(600px);
  }
}

.leFlipOutTop span {
  animation-name: leFlipOutTop;
}
@keyframes leFlipOutTop {
  to {
    transform: perspective(600px);
    opacity: 0;
  }
  70% {
    transform: perspective(600px) rotateX(180deg);
    transform-origin: 0 0;
    animation-timing-function: ease-out;
  }
  to {
    transform: perspective(600px);
  }
}

.leFlipInBottom span {
  animation-name: leFlipInBottom;
}
@keyframes leFlipInBottom {
  from {
    transform: perspective(600px);
    opacity: 0;
  }
  30% {
    transform: perspective(600px) rotateX(180deg);
    transform-origin: bottom;
    animation-timing-function: ease-out;
  }
  to {
    transform: perspective(600px);
  }
}

.leFlipOutBottom span {
  animation-name: leFlipOutBottom;
}
@keyframes leFlipOutBottom {
  to {
    transform: perspective(600px);
    opacity: 0;
  }
  70% {
    transform: perspective(600px) rotateX(180deg);
    transform-origin: bottom;
    animation-timing-function: ease-out;
  }
  to {
    transform: perspective(600px);
  }
}

/*************************************************************
Letter Elevate
**************************************************************/
.leElevateLeft span {
  animation-name: leElevateLeft;
}
@keyframes leElevateLeft {
  from {
    transform: translateY(100%) rotate(-20deg);
    transform-origin: right;
    opacity: 0;
  }
  40% {
    transform: rotate(20deg);
    transform-origin: right;
  }
  65% {
    transform: rotate(0deg);
    transform-origin: right;
  }
}

.leElevateRight span {
  animation-name: leElevateRight;
}
@keyframes leElevateRight {
  from {
    transform: translateY(100%) rotate(20deg);
    transform-origin: left;
    opacity: 0;
  }
  40% {
    transform: rotate(-20deg);
    transform-origin: left;
  }
  65% {
    transform: rotate(0deg);
    transform-origin: left;
  }
}

/*************************************************************
Letter Roll From
**************************************************************/
.leRollFromLeft span {
  animation-name: leRollFromLeft;
}
@keyframes leRollFromLeft {
  from {
    transform: translateX(-60px) perspective(600px) rotateY(180deg);
    opacity: 0;
  }
}

.leRollFromRight span {
  animation-name: leRollFromRight;
}
@keyframes leRollFromRight {
  from {
    transform: translateX(60px) perspective(600px) rotateY(-180deg);
    opacity: 0;
  }
}

.leRollFromTop span {
  animation-name: leRollFromTop;
}
@keyframes leRollFromTop {
  from {
    transform: translateY(-60px) perspective(600px) rotateX(180deg);
    opacity: 0;
  }
}

.leRollFromBottom span {
  animation-name: leRollFromBottom;
}
@keyframes leRollFromBottom {
  from {
    transform: translateY(60px) perspective(600px) rotateX(-180deg);
    opacity: 0;
  }
}

/*************************************************************
Letter Roll To
**************************************************************/
.leRollToLeft span {
  animation-name: leRollToLeft;
}
@keyframes leRollToLeft {
  to {
    transform: translateX(-60px) perspective(600px) rotateY(180deg);
    opacity: 0;
  }
}

.leRollToRight span {
  animation-name: leRollToRight;
}
@keyframes leRollToRight {
  to {
    transform: translateX(60px) perspective(600px) rotateY(-180deg);
    opacity: 0;
  }
}

.leRollToTop span {
  animation-name: leRollToTop;
}
@keyframes leRollToTop {
  to {
    transform: translateY(-60px) perspective(600px) rotateX(180deg);
    opacity: 0;
  }
}

.leRollToBottom span {
  animation-name: leRollToBottom;
}
@keyframes leRollToBottom {
  to {
    transform: translateY(60px) perspective(600px) rotateX(-180deg);
    opacity: 0;
  }
}

/*************************************************************
Letter Rotate In skate
**************************************************************/
.leRotateSkateInRight span {
  animation-name: leRotateSkateInRight;
}
@keyframes leRotateSkateInRight {
  from {
    transform: scaleX(0.2) translateX(100px);
    opacity: 0;
  }
}

.leRotateSkateInLeft span {
  animation-name: leRotateSkateInLeft;
}
@keyframes leRotateSkateInLeft {
  from {
    transform: scaleX(0.2) translateX(-100px);
    opacity: 0;
  }
}

.leRotateSkateInTop span {
  animation-name: leRotateSkateInTop;
}
@keyframes leRotateSkateInTop {
  from {
    transform: scaleY(0.2) translateY(-100px);
    opacity: 0;
  }
}

.leRotateSkateInBottom span {
  animation-name: leRotateSkateInBottom;
}
@keyframes leRotateSkateInBottom {
  from {
    transform: scaleY(0.2) translateY(100px);
    opacity: 0;
  }
}

/*************************************************************
Letter Rotate Out skate
**************************************************************/
.leRotateSkateOutRight span {
  animation-name: leRotateSkateOutRight;
}
@keyframes leRotateSkateOutRight {
  to {
    transform: scaleX(0.2) translateX(100px);
    opacity: 0;
  }
}

.leRotateSkateOutLeft span {
  animation-name: leRotateSkateOutLeft;
}
@keyframes leRotateSkateOutLeft {
  to {
    transform: scaleX(0.2) translateX(-100px);
    opacity: 0;
  }
}

.leRotateSkateOutTop span {
  animation-name: leRotateSkateOutTop;
}
@keyframes leRotateSkateOutTop {
  to {
    transform: scaleY(0.2) translateY(-100px);
    opacity: 0;
  }
}

.leRotateSkateOutBottom span {
  animation-name: leRotateSkateOutBottom;
}
@keyframes leRotateSkateOutBottom {
  to {
    transform: scaleY(0.2) translateY(100px);
    opacity: 0;
  }
}

/*************************************************************
Letter Rotation
**************************************************************/
.leRotateXZoomIn span {
  animation-name: leRotateXZoomIn;
}
@keyframes leRotateXZoomIn {
  from {
    transform: perspective(600px) translate3d(0, -60px, -2000px) rotateX(75deg);
    opacity: 0;
  }
  5% {
    transform: perspective(600px) translate3d(0, -60px, -1500px) rotateX(75deg);
  }
}

.leRotateXZoomOut span {
  animation-name: leRotateXZoomOut;
}
@keyframes leRotateXZoomOut {
  95% {
    transform: perspective(600px) translate3d(0, -60px, -1500px) rotateX(75deg);
  }
  to {
    transform: perspective(600px) translate3d(0, -60px, -2000px) rotateX(75deg);
    opacity: 0;
  }
}

.leRotateYZoomIn span {
  animation-name: leRotateYZoomIn;
}
@keyframes leRotateYZoomIn {
  from {
    transform: perspective(600px) translate3d(0, -60px, -2000px) rotateY(75deg);
    opacity: 0;
  }
  5% {
    transform: perspective(600px) translate3d(0, -60px, -1500px) rotateY(75deg);
  }
}

.leRotateYZoomOut span {
  animation-name: leRotateYZoomOut;
}
@keyframes leRotateYZoomOut {
  95% {
    transform: perspective(600px) translate3d(0, -60px, -1500px) rotateY(75deg);
  }
  to {
    transform: perspective(600px) translate3d(0, -60px, -2000px) rotateY(75deg);
    opacity: 0;
  }
}

/*************************************************************
Letter Rotate
**************************************************************/

.leRotateIn span {
  animation-name: leRotateIn;
}
@keyframes leRotateIn {
  from {
    transform: rotate(-180deg);
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

.leRotateOut span {
  animation-name: leRotateOut;
}
@keyframes leRotateOut {
  from {
    opacity: 1;
  }
  to {
    transform: rotate(180deg);
    opacity: 0;
  }
}

.leRotateInLeft span {
  animation-name: leRotateInLeft;
}
@keyframes leRotateInLeft {
  from {
    transform: rotate(-180deg) translateX(150px);
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

.leRotateOutLeft span {
  animation-name: leRotateOutLeft;
}
@keyframes leRotateOutLeft {
  from {
    opacity: 1;
  }
  to {
    transform: rotate(180deg) translateX(150px);
    opacity: 0;
  }
}

.leRotateInRight span {
  animation-name: leRotateInRight;
}
@keyframes leRotateInRight {
  from {
    transform: rotate(-180deg) translateX(-150px);
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

.leRotateOutRight span {
  animation-name: leRotateOutRight;
}
@keyframes leRotateOutRight {
  from {
    opacity: 1;
  }
  to {
    transform: rotate(180deg) translateX(-150px);
    opacity: 0;
  }
}

/*************************************************************
Letter Spin
**************************************************************/
.leSpinInLeft span {
  animation-name: leSpinInLeft;
}
@keyframes leSpinInLeft {
  from,
  to {
    transform-origin: left bottom;
  }
  from {
    transform: rotate(90deg);
    opacity: 0;
  }
}

.leSpinInRight span {
  animation-name: leSpinInRight;
}
@keyframes leSpinInRight {
  from,
  to {
    transform-origin: right bottom;
  }
  from {
    transform: rotate(-90deg);
    opacity: 0;
  }
}

.leSpinOutLeft span {
  animation-name: leSpinOutLeft;
}
@keyframes leSpinOutLeft {
  from,
  to {
    transform-origin: left bottom;
  }
  to {
    transform: rotate(90deg);
    opacity: 0;
  }
}

.leSpinOutRight span {
  animation-name: leSpinOutRight;
}
@keyframes leSpinOutRight {
  from,
  to {
    transform-origin: right bottom;
  }
  to {
    transform: rotate(-90deg);
    opacity: 0;
  }
}

/*************************************************************
Letter Blur In
**************************************************************/
.leBlurIn span {
  animation-name: leBlurIn;
}
@keyframes leBlurIn {
  from {
    transform: scaleX(0.2);
    filter: blur(20px);
    opacity: 0;
  }
}

.leBlurInRight span {
  animation-name: leBlurInRight;
}
@keyframes leBlurInRight {
  from {
    transform: scaleX(0.2) translateX(100px);
    filter: blur(20px);
    opacity: 0;
  }
}

.leBlurInLeft span {
  animation-name: leBlurInLeft;
}
@keyframes leBlurInLeft {
  from {
    transform: scaleX(0.2) translateX(-100px);
    filter: blur(20px);
    opacity: 0;
  }
}

.leBlurInTop span {
  animation-name: leBlurInTop;
}
@keyframes leBlurInTop {
  from {
    transform: scaleY(0.2) translateY(-100px);
    filter: blur(20px);
    opacity: 0;
  }
}

.leBlurInBottom span {
  animation-name: leBlurInBottom;
}
@keyframes leBlurInBottom {
  from {
    transform: scaleY(0.2) translateY(100px);
    filter: blur(20px);
    opacity: 0;
  }
}

/*************************************************************
Letter Blur Out
**************************************************************/
.leBlurOut span {
  animation-name: leBlurOut;
}
@keyframes leBlurOut {
  to {
    transform: scaleX(0.2);
    filter: blur(20px);
    opacity: 0;
  }
}

.leBlurOutRight span {
  animation-name: leBlurOutRight;
}
@keyframes leBlurOutRight {
  to {
    transform: scaleX(0.2) translateX(100px);
    filter: blur(20px);
    opacity: 0;
  }
}

.leBlurOutLeft span {
  animation-name: leBlurOutLeft;
}
@keyframes leBlurOutLeft {
  to {
    transform: scaleX(0.2) translateX(-100px);
    filter: blur(20px);
    opacity: 0;
  }
}

.leBlurOutTop span {
  animation-name: leBlurOutTop;
}
@keyframes leBlurOutTop {
  to {
    transform: scaleY(0.2) translateY(-100px);
    filter: blur(20px);
    opacity: 0;
  }
}

.leBlurOutBottom span {
  animation-name: leBlurOutBottom;
}
@keyframes leBlurOutBottom {
  to {
    transform: scaleY(0.2) translateY(100px);
    filter: blur(20px);
    opacity: 0;
  }
}

/*************************************************************
Letter Pop Up
**************************************************************/
.lePopUp span {
  animation-name: lePopUp;
}
@keyframes lePopUp {
  50% {
    transform: scale(1.5);
  }
}

.lePopUpLeft span {
  animation-name: lePopUpLeft;
}
@keyframes lePopUpLeft {
  50% {
    transform: translateX(-50px) scale(1.5);
    animation-timing-function: ease-in;
  }
}

.lePopUpRight span {
  animation-name: lePopUpRight;
}
@keyframes lePopUpRight {
  50% {
    transform: translateX(50px) scale(1.5);
    animation-timing-function: ease-in;
  }
}

/*************************************************************
Letter Pop Out
**************************************************************/

.lePopOut span {
  animation-name: lePopOut;
}
@keyframes lePopOut {
  50% {
    transform: scale(0.5);
  }
}

.lePopOutLeft span {
  animation-name: lePopOutLeft;
}
@keyframes lePopOutLeft {
  50% {
    transform: translateX(-50px) scale(0.5);
    animation-timing-function: ease-in;
  }
}

.lePopOutRight span {
  animation-name: lePopOutRight;
}
@keyframes lePopOutRight {
  50% {
    transform: translateX(50px) scale(0.5);
    animation-timing-function: ease-in;
  }
}

/*************************************************************
Letter Bouncing
**************************************************************/
.leBounceFromTop span {
  animation-name: leBounceFromTop;
}
@keyframes leBounceFromTop {
  0%,
  25%,
  55%,
  85%,
  100% {
    animation-timing-function: ease-out;
    transform: translate3d(0, 0, 0);
  }
  41%,
  44% {
    animation-timing-function: ease-in;
    transform: translate3d(0, -80px, 0) scale3d(1, 1.2, 1);
  }
  70% {
    animation-timing-function: ease-in;
    transform: translate3d(0, -20px, 0);
  }
  90% {
    transform: translate3d(0, -4px, 0);
  }
}

.leBounceFromDown span {
  animation-name: leBounceFromDown;
}
@keyframes leBounceFromDown {
  0%,
  25%,
  55%,
  85%,
  100% {
    animation-timing-function: ease-out;
    transform: translate3d(0, 0, 0);
  }
  41%,
  44% {
    animation-timing-function: ease-in;
    transform: translate3d(0, 80px, 0) scale3d(1, 1.2, 1);
  }
  70% {
    animation-timing-function: ease-in;
    transform: translate3d(0, 20px, 0);
  }
  90% {
    transform: translate3d(0, 4px, 0);
  }
}

.leBounceY span {
  animation-name: leBounceY;
}
@keyframes leBounceY {
  0%,
  25%,
  55%,
  85%,
  100% {
    animation-timing-function: ease-out;
    transform: scale3d(1, 1, 1);
  }
  41%,
  44% {
    animation-timing-function: ease-in;
    transform: scale3d(1, 2, 1);
  }
  70% {
    animation-timing-function: ease-in;
    transform: scale3d(1, 1.5, 1);
  }
  90% {
    transform: scale3d(1, 1.1, 1);
  }
}

.leBounceZoomIn span {
  animation-name: leBounceZoomIn;
}
@keyframes leBounceZoomIn {
  0%,
  25%,
  55%,
  85%,
  100% {
    animation-timing-function: ease-out;
    transform: scale(1);
  }
  41%,
  44% {
    animation-timing-function: ease-in;
    transform: scale(1.7);
  }
  70% {
    animation-timing-function: ease-in;
    transform: scale(1.9);
  }
  90% {
    transform: scale(1.1);
  }
}

.leBounceZoomOut span {
  animation-name: leBounceZoomOut;
}
@keyframes leBounceZoomOut {
  0%,
  25%,
  55%,
  85%,
  100% {
    animation-timing-function: ease-out;
    transform: scale(1);
  }
  41%,
  44% {
    animation-timing-function: ease-in;
    transform: scale(0.5);
  }
  70% {
    animation-timing-function: ease-in;
    transform: scale(0.7);
  }
  90% {
    transform: scale(0.9);
  }
}

/*************************************************************
Letter Perspective
**************************************************************/
.lePerspectiveOutTop span {
  animation-name: lePerspectiveOutTop;
  transform: perspective(500px);
  transform-style: preserve-3d;
}
@keyframes lePerspectiveOutTop {
  50% {
    opacity: 1;
  }
  to {
    transform: perspective(500px) rotateX(90deg) translateY(-50px)
      translateZ(50px);
    opacity: 0;
  }
}

.lePerspectiveOutBottom span {
  animation-name: lePerspectiveOutBottom;
  transform: perspective(500px);
  transform-style: preserve-3d;
}
@keyframes lePerspectiveOutBottom {
  50% {
    opacity: 1;
  }
  to {
    transform: perspective(500px) rotateX(90deg) translateY(50px)
      translateZ(-50px);
    opacity: 0;
  }
}

/*************************************************************
Letter Zoom In
**************************************************************/

.leZoomIn span {
  animation-name: leZoomIn;
}
@keyframes leZoomIn {
  from {
    transform: scale(10);
    opacity: 0;
  }
}

.leZoomInLeft span {
  animation-name: leZoomInLeft;
}
@keyframes leZoomInLeft {
  from {
    transform: scale(10) translateX(-150%);
    opacity: 0;
  }
}

.leZoomInRight span {
  animation-name: leZoomInRight;
}
@keyframes leZoomInRight {
  from {
    transform: scale(10) translateX(150%);
    opacity: 0;
  }
}

.leZoomInTop span {
  animation-name: LetterZoomInTop;
}
@keyframes LetterZoomInTop {
  from {
    transform: scale(10) translateY(-50%);
    opacity: 0;
  }
}

.leZoomInBottom span {
  animation-name: leZoomInBottom;
}
@keyframes leZoomInBottom {
  from {
    transform: scale(10) translateY(50%);
    opacity: 0;
  }
}

/*************************************************************
Letter Zoom Out
**************************************************************/
.leZoomOut span {
  animation-name: leZoomOut;
}
@keyframes leZoomOut {
  to {
    transform: scale(10);
    opacity: 0;
  }
}

.leZoomOutLeft span {
  animation-name: leZoomOutLeft;
}
@keyframes leZoomOutLeft {
  to {
    transform: scale(10) translateX(-150%);
    opacity: 0;
  }
}

.leZoomOutRight span {
  animation-name: leZoomOutRight;
}
@keyframes leZoomOutRight {
  to {
    transform: scale(10) translateX(150%);
    opacity: 0;
  }
}

.leZoomOutTop span {
  animation-name: leZoomOutTop;
}
@keyframes leZoomOutTop {
  to {
    transform: scale(10) translateY(-50%);
    opacity: 0;
  }
}

.leZoomOutBottom span {
  animation-name: leZoomOutBottom;
}
@keyframes leZoomOutBottom {
  to {
    transform: scale(10) translateY(50%);
    opacity: 0;
  }
}

/*************************************************************
Letter Dance In
**************************************************************/
.leDanceInTop span {
  animation-name: leDanceInTop;
  transform-origin: top;
}
@keyframes leDanceInTop {
  from {
    opacity: 0;
  }
  16% {
    transform: skew(-14deg);
  }
  33% {
    transform: skew(12deg);
  }
  49% {
    transform: skew(-8deg);
  }
  66% {
    transform: skew(6deg);
  }
  83% {
    transform: skew(-4deg);
  }
}

.leDanceInMiddle span {
  animation-name: leDanceInMiddle;
}
@keyframes leDanceInMiddle {
  from {
    opacity: 0;
  }
  16% {
    transform: skew(-14deg);
  }
  33% {
    transform: skew(12deg);
  }
  49% {
    transform: skew(-8deg);
  }
  66% {
    transform: skew(6deg);
  }
  83% {
    transform: skew(-4deg);
  }
}

.leDanceInBottom span {
  animation-name: leDanceInBottom;
  transform-origin: bottom;
}
@keyframes leDanceInBottom {
  from {
    opacity: 0;
  }
  16% {
    transform: skew(-14deg);
  }
  33% {
    transform: skew(12deg);
  }
  49% {
    transform: skew(-8deg);
  }
  66% {
    transform: skew(6deg);
  }
  83% {
    transform: skew(-4deg);
  }
}

/*************************************************************
Letter Dance Out
**************************************************************/
.leDanceOutTop span {
  animation-name: leDanceOutTop;
  transform-origin: top;
}
@keyframes leDanceOutTop {
  16% {
    transform: skew(-14deg);
  }
  33% {
    transform: skew(12deg);
  }
  49% {
    transform: skew(-8deg);
  }
  66% {
    transform: skew(6deg);
  }
  83% {
    transform: skew(-4deg);
  }
  to {
    opacity: 0;
  }
}

.leDanceOutMiddle span {
  animation-name: leDanceOutMiddle;
}
@keyframes leDanceOutMiddle {
  16% {
    transform: skew(-14deg);
  }
  33% {
    transform: skew(12deg);
  }
  49% {
    transform: skew(-8deg);
  }
  66% {
    transform: skew(6deg);
  }
  83% {
    transform: skew(-4deg);
  }
  to {
    opacity: 0;
  }
}

.leDanceOutBottom span {
  animation-name: leDanceOutBottom;
  transform-origin: bottom;
}
@keyframes leDanceOutBottom {
  16% {
    transform: skew(-14deg);
  }
  33% {
    transform: skew(12deg);
  }
  49% {
    transform: skew(-8deg);
  }
  66% {
    transform: skew(6deg);
  }
  83% {
    transform: skew(-4deg);
  }
  to {
    opacity: 0;
  }
}

/*************************************************************
One After One Fade in
**************************************************************/
.oaoFadeIn span:nth-child(even) {
  animation-name: leoaoFadeInTop;
  animation-duration: 0.7s;
  animation-timing-function: ease-out;
}
@keyframes leoaoFadeInTop {
  from {
    transform: translateY(-100px);
    opacity: 0;
  }
}
.oaoFadeIn span:nth-child(odd) {
  animation-name: leoaoFadeInBottom;
  animation-duration: 0.7s;
  animation-timing-function: ease-out;
}
@keyframes leoaoFadeInBottom {
  from {
    transform: translateY(100px);
    opacity: 0;
  }
}

.oaoFadeOut span:nth-child(even) {
  animation-name: leoaoFadeOutop;
  animation-duration: 0.7s;
  animation-timing-function: ease-in;
}
@keyframes leoaoFadeOutop {
  to {
    transform: translateY(-100px);
    opacity: 0;
  }
}
.oaoFadeOut span:nth-child(odd) {
  animation-name: leoaoFadeOutBottom;
  animation-duration: 0.7s;
  animation-timing-function: ease-in;
}
@keyframes leoaoFadeOutBottom {
  to {
    transform: translateY(100%);
    opacity: 0;
  }
}

.oaoFlyIn span:nth-child(even) {
  animation-name: leoaoFlyInTop;
}
@keyframes leoaoFlyInTop {
  0% {
    transform: translateY(80px);
    opacity: 0;
  }
  50% {
    transform: translateY(-50px);
    animation-timing-function: ease-out;
  }
}
.oaoFlyIn span:nth-child(odd) {
  animation-name: leoaoFlyInBottom;
}
@keyframes leoaoFlyInBottom {
  0% {
    transform: translateY(-80px);
    opacity: 0;
  }
  50% {
    transform: translateY(50px);
    animation-timing-function: ease-out;
  }
}

.oaoFlyOut span:nth-child(even) {
  animation-name: leoaoFlyOutTop;
}
@keyframes leoaoFlyOutTop {
  30% {
    transform: translateY(80px);
    animation-timing-function: ease-out;
  }
  80% {
    transform: translateY(-50px);
    animation-timing-function: ease-out;
  }
  to {
    opacity: 0;
  }
}
.oaoFlyOut span:nth-child(odd) {
  animation-name: leoaoFlyOutBottom;
}
@keyframes leoaoFlyOutBottom {
  30% {
    transform: translateY(-80px);
    animation-timing-function: ease-out;
  }
  80% {
    transform: translateY(50px);
    animation-timing-function: ease-out;
  }
  to {
    opacity: 0;
  }
}

.oaoRotateIn span:nth-child(even) {
  animation-name: oaoRotateInTop;
}
@keyframes oaoRotateInTop {
  from {
    transform: translateY(-100px) rotate(360deg);
    opacity: 0;
  }
}
.oaoRotateIn span:nth-child(odd) {
  animation-name: oaoRotateInBottom;
}
@keyframes oaoRotateInBottom {
  from {
    transform: translateY(100px) rotate(360deg);
    opacity: 0;
  }
}
.oaoRotateOut span:nth-child(even) {
  animation-name: oaoRotateOutTop;
}
@keyframes oaoRotateOutTop {
  to {
    transform: translateY(-100px) rotate(360deg);
    opacity: 0;
  }
}
.oaoRotateOut span:nth-child(odd) {
  animation-name: oaoRotateOutBottom;
}
@keyframes oaoRotateOutBottom {
  to {
    transform: translateY(100px) rotate(360deg);
    opacity: 0;
  }
}

.oaoRotateXIn span:nth-child(even) {
  animation-name: oaoRotateXInTop;
}
@keyframes oaoRotateXInTop {
  from {
    transform: translateY(-100px) rotateX(360deg);
    opacity: 0;
  }
}
.oaoRotateXIn span:nth-child(odd) {
  animation-name: oaoRotateXInBottom;
}
@keyframes oaoRotateXInBottom {
  from {
    transform: translateY(100px) rotateX(360deg);
    opacity: 0;
  }
}

.oaoRotateXOut span:nth-child(even) {
  animation-name: oaoRotateXOutTop;
}
@keyframes oaoRotateXOutTop {
  to {
    transform: translateY(-100px) rotateX(360deg);
    opacity: 0;
  }
}
.oaoRotateXOut span:nth-child(odd) {
  animation-name: oaoRotateXOutBottom;
}
@keyframes oaoRotateXOutBottom {
  to {
    transform: translateY(100px) rotateX(360deg);
    opacity: 0;
  }
}

.oaoRotateYIn span:nth-child(even) {
  animation-name: oaoRotateYInTop;
}
@keyframes oaoRotateYInTop {
  from {
    transform: translateY(-100px) rotateY(360deg);
    opacity: 0;
  }
}
.oaoRotateYIn span:nth-child(odd) {
  animation-name: oaoRotateYInBottom;
}
@keyframes oaoRotateYInBottom {
  from {
    transform: translateY(100px) rotateY(360deg);
    opacity: 0;
  }
}

.oaoRotateYOut span:nth-child(even) {
  animation-name: oaoRotateYOutTop;
}
@keyframes oaoRotateYOutTop {
  to {
    transform: translateY(-100px) rotateY(360deg);
    opacity: 0;
  }
}
.oaoRotateYOut span:nth-child(odd) {
  animation-name: oaoRotateYOutBottom;
}
@keyframes oaoRotateYOutBottom {
  to {
    transform: translateY(100px) rotateY(360deg);
    opacity: 0;
  }
}
/*************************************************************
Fade in
**************************************************************/
.fadeIn {
  animation-name: fadeIn;
}
@keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

.cssanimation.fadeInLeft {
  animation-name: bfadeInLeft;
}
@keyframes bfadeInLeft {
  from {
    opacity: 0;
    transform: translateX(-150px);
  }
  to {
    opacity: 1;
  }
}

.cssanimation.fadeInRight {
  animation-name: bfadeInRight;
}
@keyframes bfadeInRight {
  from {
    opacity: 0;
    transform: translateX(150px);
  }
  to {
    opacity: 1;
  }
}

.cssanimation.fadeInTop {
  animation-name: bfadeInTop;
}
@keyframes bfadeInTop {
  from {
    opacity: 0;
    transform: translateY(-50px);
  }
  to {
    opacity: 1;
  }
}

.cssanimation.fadeInBottom {
  animation-name: bfadeInBottom;
}
@keyframes bfadeInBottom {
  from {
    opacity: 0;
    transform: translateY(50px);
  }
  to {
    opacity: 1;
  }
}

/**************************************************************
Fade Out
**************************************************************/
.fadeOut {
  animation-name: fadeOut;
}
@keyframes fadeOut {
  to {
    opacity: 0;
  }
}

.fadeOutLeft {
  animation-name: fadeOutLeft;
}
@keyframes fadeOutLeft {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
    transform: translateX(-100%);
  }
}

.fadeOutRight {
  animation-name: fadeOutRight;
}
@keyframes fadeOutRight {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
    transform: translateX(100%);
  }
}

.fadeOutTop {
  animation-name: fadeOutTop;
}
@keyframes fadeOutTop {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
    transform: translateY(-100%);
  }
}

.fadeOutBottom {
  animation-name: fadeOutBottom;
}
@keyframes fadeOutBottom {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
    transform: translateY(100%);
  }
}

/*************************************************************
Move From
**************************************************************/
.moveFromLeft {
  animation-name: moveFromLeft;
}
@keyframes moveFromLeft {
  from {
    transform: translateX(-300px);
  }
}

.moveFromRight {
  animation-name: moveFromRight;
}
@keyframes moveFromRight {
  from {
    transform: translateX(300px);
  }
}

.moveFromTop {
  animation-name: moveFromTop;
}
@keyframes moveFromTop {
  from {
    transform: translateY(-300px);
  }
}

.moveFromBottom {
  animation-name: moveFromBottom;
}
@keyframes moveFromBottom {
  from {
    transform: translateY(300px);
  }
}

/*************************************************************
Move To
**************************************************************/
.moveToLeft {
  animation-name: moveToLeft;
}
@keyframes moveToLeft {
  to {
    transform: translateX(-800px);
  }
}

.moveToRight {
  animation-name: moveToRight;
}
@keyframes moveToRight {
  to {
    transform: translateX(800px);
  }
}

.moveToTop {
  animation-name: moveToTop;
}
@keyframes moveToTop {
  to {
    transform: translateY(-800px);
  }
}

.moveToBottom {
  animation-name: moveToBottom;
}
@keyframes moveToBottom {
  to {
    transform: translateY(800px);
  }
}

/*************************************************************
Door
**************************************************************/
.doorCloseFromLeft {
  animation-name: doorCloseFromLeft;
}
@keyframes doorCloseFromLeft {
  from {
    transform: perspective(400px) rotateY(90deg);
    transform-origin: left;
    opacity: 0;
  }
  50%,
  to {
    transform: perspective(400px) rotateY(0deg);
    transform-origin: left;
    opacity: 1;
  }
}

.doorOpenFromRight {
  animation-name: doorOpenFromRight;
}
@keyframes doorOpenFromRight {
  from {
    transform: perspective(400px) rotateY(0deg);
    transform-origin: left;
    opacity: 1;
  }
  50%,
  to {
    transform: perspective(400px) rotateY(90deg);
    transform-origin: left;
    opacity: 0;
  }
}

.doorCloseFromRight {
  animation-name: doorCloseFromRight;
}
@keyframes doorCloseFromRight {
  from {
    transform: perspective(400px) rotateY(-90deg);
    transform-origin: right;
    opacity: 0;
  }
  50%,
  to {
    transform: perspective(400px) rotateY(0deg);
    transform-origin: right;
    opacity: 1;
  }
}

.doorOpenFromLeft {
  animation-name: doorOpenFromLeft;
}
@keyframes doorOpenFromLeft {
  from {
    transform: perspective(400px) rotateY(0deg);
    transform-origin: right;
    opacity: 1;
  }
  50%,
  to {
    transform: perspective(400px) rotateY(-90deg);
    transform-origin: right;
    opacity: 0;
  }
}

/*************************************************************
Heartbeat
**************************************************************/
.heartbeatSlow {
  animation-name: heartbeatSlow;
  animation-iteration-count: 3;
  animation-duration: 0.5s;
}
@keyframes heartbeatSlow {
  35%,
  65% {
    transform: scale(1.2);
  }
}

.heartbeatFast {
  animation-name: heartbeatFast;
  animation-iteration-count: infinite;
}
@keyframes heartbeatFast {
  14%,
  42% {
    transform: scale(1.3);
  }
  28%,
  70% {
    transform: scale(1);
  }
}

/*************************************************************
Hang On
**************************************************************/
.hangOnLeft {
  animation-name: hangOnLeft;
}
@keyframes hangOnLeft {
  from {
    transform-origin: left;
  }
  40% {
    transform: rotate(100deg);
    transform-origin: left;
  }
  55% {
    transform: rotate(80deg);
    transform-origin: left;
  }
  70% {
    transform: rotate(95deg);
    transform-origin: left;
  }
  85% {
    transform: rotate(85deg);
    transform-origin: left;
  }
  100% {
    transform: rotate(90deg);
    transform-origin: left;
  }
}

.hangOnRight {
  animation-name: hangOnRight;
}
@keyframes hangOnRight {
  from {
    transform-origin: right;
  }
  40% {
    transform: rotate(-100deg);
    transform-origin: right;
  }
  55% {
    transform: rotate(-80deg);
    transform-origin: right;
  }
  70% {
    transform: rotate(-95deg);
    transform-origin: right;
  }
  85% {
    transform: rotate(-85deg);
    transform-origin: right;
  }
  100% {
    transform: rotate(-90deg);
    transform-origin: right;
  }
}

/*************************************************************
Hang And Drop
**************************************************************/
.hangAndDropLeft {
  animation-name: hangAndDropLeft;
}
@keyframes hangAndDropLeft {
  from {
    transform-origin: left;
  }
  50% {
    transform: rotate(100deg);
    transform-origin: left;
  }
  60% {
    transform: rotate(90deg);
    transform-origin: left;
    opacity: 1;
  }
  to {
    transform: translateY(300px) rotate(70deg);
    transform-origin: left;
    opacity: 0;
  }
}

.hangAndDropRight {
  animation-name: hangAndDropRight;
}
@keyframes hangAndDropRight {
  from {
    transform-origin: right;
  }
  50% {
    transform: rotate(-100deg);
    transform-origin: right;
  }
  60% {
    transform: rotate(-90deg);
    transform-origin: right;
    opacity: 1;
  }
  to {
    transform: translateY(300px) rotate(-70deg);
    transform-origin: right;
    opacity: 0;
  }
}

/*************************************************************
Shake
**************************************************************/
.pulseShake {
  animation-name: pulseShake;
  animation-iteration-count: infinite;
}
@keyframes pulseShake {
  90% {
    transform: scale(1);
  }
  92% {
    transform: scale(1.2);
  }
  96% {
    transform: scale(1, 1);
  }
  98% {
    transform: scale(1.1);
  }
}

.horizontalShake {
  animation-name: horizontalShake;
  animation-iteration-count: infinite;
}
@keyframes horizontalShake {
  3%,
  12%,
  21%,
  30%,
  39%,
  48%,
  57%,
  65%,
  74%,
  83%,
  92% {
    transform: translateX(5px);
  }
  6%,
  15%,
  24%,
  33%,
  42%,
  51%,
  60%,
  68%,
  77%,
  86%,
  95% {
    transform: translateX(3px);
  }
  9%,
  18%,
  27%,
  36%,
  45%,
  54%,
  63%,
  71%,
  80%,
  89%,
  98% {
    transform: translateX(-5px);
  }
}

.verticalShake {
  animation-name: verticalShake;
  animation-iteration-count: infinite;
}
@keyframes verticalShake {
  3%,
  12%,
  21%,
  30%,
  39%,
  48%,
  57%,
  65%,
  74%,
  83%,
  92% {
    transform: translateY(5px);
  }
  6%,
  15%,
  24%,
  33%,
  42%,
  51%,
  60%,
  68%,
  77%,
  86%,
  95% {
    transform: translateY(3px);
  }
  9%,
  18%,
  27%,
  36%,
  45%,
  54%,
  63%,
  71%,
  80%,
  89%,
  98% {
    transform: translateY(-5px);
  }
}

.madMax {
  animation-name: madMax;
  animation-iteration-count: infinite;
}
@keyframes madMax {
  3%,
  12%,
  21%,
  30%,
  39%,
  48%,
  57%,
  65%,
  74%,
  83%,
  92% {
    transform: translateY(5px) scale(1.1);
  }
  6%,
  15%,
  24%,
  33%,
  42%,
  51%,
  60%,
  68%,
  77%,
  86%,
  95% {
    transform: translateY(3px) scale(0.8);
  }
  9%,
  18%,
  27%,
  36%,
  45%,
  54%,
  63%,
  71%,
  80%,
  89%,
  98% {
    transform: translateY(-5px) scale(1.1);
  }
}

.coolHorizontalShake {
  animation-name: coolHorizontalShake;
  animation-iteration-count: infinite;
}
@keyframes coolHorizontalShake {
  3%,
  21%,
  39%,
  57%,
  74%,
  92% {
    transform: translateX(5px);
  }
  6%,
  24%,
  42%,
  60%,
  77%,
  95% {
    transform: translateX(3px);
  }
  9%,
  27%,
  45%,
  63%,
  80%,
  98% {
    transform: translateX(-5px);
  }
}

.coolVerticalShake {
  animation-name: coolVerticalShake;
  animation-iteration-count: infinite;
}
@keyframes coolVerticalShake {
  3%,
  21%,
  39%,
  57%,
  74%,
  92% {
    transform: translateY(5px);
  }
  6%,
  24%,
  42%,
  60%,
  77%,
  95% {
    transform: translateY(3px);
  }
  9%,
  27%,
  45%,
  63%,
  80%,
  98% {
    transform: translateY(-5px);
  }
}

.quietMad {
  animation-name: quietMad;
  animation-iteration-count: infinite;
}
@keyframes quietMad {
  3%,
  21%,
  39%,
  57%,
  74%,
  92% {
    transform: translateY(5px) scale(1.1);
  }
  6%,
  24%,
  42%,
  60%,
  77%,
  95% {
    transform: translateY(3px) scale(0.8);
  }
  9%,
  27%,
  45%,
  63%,
  80%,
  98% {
    transform: translateY(-5px) scale(1.1);
  }
}

.vibration {
  animation: vibration 0.1s linear infinite;
}
@keyframes vibration {
  50% {
    transform: skewY(1deg) skewX(-1deg) scale(1.06);
  }
}

/*************************************************************
Push Release From
**************************************************************/
.pushReleaseFrom {
  animation-name: pushReleaseFrom;
}
@keyframes pushReleaseFrom {
  from {
    transform: scale(3, 3);
    opacity: 0;
  }
  30% {
    transform: scale(0.5, 0.5);
  }
}

.pushReleaseFromLeft {
  animation-name: pushReleaseFromLeft;
}
@keyframes pushReleaseFromLeft {
  from {
    transform: translateX(-100%);
    opacity: 0;
  }
  30% {
    transform: translateX(100px);
    opacity: 1;
  }
}

.pushReleaseFromRight {
  animation-name: pushReleaseFromRight;
}
@keyframes pushReleaseFromRight {
  from {
    transform: translateX(100%);
    opacity: 0;
  }
  30% {
    transform: translateX(-100px);
    opacity: 1;
  }
}

.pushReleaseFromTop {
  animation-name: pushReleaseFromTop;
}
@keyframes pushReleaseFromTop {
  from {
    transform: translateY(-100%);
    opacity: 0;
  }
  30% {
    transform: translateY(100px);
    opacity: 1;
  }
}

.pushReleaseFromBottom {
  animation-name: pushReleaseFromBottom;
}
@keyframes pushReleaseFromBottom {
  from {
    transform: translateY(100%);
    opacity: 0;
  }
  30% {
    transform: translateY(-100px);
    opacity: 1;
  }
}

/*************************************************************
Push Release To
**************************************************************/
.pushReleaseTo {
  animation-name: pushReleaseTo;
}
@keyframes pushReleaseTo {
  30% {
    transform: scale(0.5, 0.5);
  }
  to {
    transform: scale(5, 5);
    opacity: 0;
  }
}

.pushReleaseToLeft {
  animation-name: pushReleaseToLeft;
}
@keyframes pushReleaseToLeft {
  30% {
    transform: translateX(100px);
  }
  to {
    transform: translateX(-100%);
    opacity: 0;
  }
}

.pushReleaseToRight {
  animation-name: pushReleaseToRight;
}
@keyframes pushReleaseToRight {
  30% {
    transform: translateX(-100px);
  }
  to {
    transform: translateX(100%);
    opacity: 0;
  }
}

.pushReleaseToTop {
  animation-name: pushReleaseToTop;
}
@keyframes pushReleaseToTop {
  30% {
    transform: translateY(100px);
  }
  to {
    transform: translateY(-100%);
    opacity: 0;
  }
}

.pushReleaseToBottom {
  animation-name: pushReleaseToBottom;
}
@keyframes pushReleaseToBottom {
  30% {
    transform: translateY(-100px);
  }
  to {
    transform: translateY(100%);
    opacity: 0;
  }
}

/*************************************************************
Flip X
**************************************************************/
.flipX {
  animation-name: flipX;
}
@keyframes flipX {
  from {
    transform: perspective(600px) rotateX(-180deg);
    opacity: 0;
  }
  to {
    transform: perspective(600px) rotateX(-360deg);
  }
}

.flipXZoomIn {
  animation-name: flipXZoomIn;
}
@keyframes flipXZoomIn {
  from {
    transform: perspective(600px) rotateX(0deg) scale(1);
    animation-timing-function: ease-out;
  }
  40% {
    transform: perspective(600px) rotateX(-180deg) scale(1.8);
    animation-timing-function: ease-out;
  }
  80% {
    transform: perspective(600px) rotateX(-360deg) scale(0.7);
    animation-timing-function: ease-in;
  }
  to {
    transform: scale(1);
  }
}

.flipXZoomOut {
  animation-name: flipXZoomOut;
}
@keyframes flipXZoomOut {
  from {
    transform: perspective(600px) rotateX(0deg) scale(1);
    animation-timing-function: ease-out;
  }
  40% {
    transform: perspective(600px) rotateX(180deg) scale(1.8);
    animation-timing-function: ease-out;
  }
  80% {
    transform: perspective(600px) rotateX(360deg) scale(0.7);
    animation-timing-function: ease-in;
  }
  to {
    transform: scale(1);
  }
}

/*************************************************************
Flip Y
**************************************************************/
.flipY {
  animation-name: flipY;
}
@keyframes flipY {
  from {
    transform: perspective(600px) rotateY(180deg);
    opacity: 0;
  }
  to {
    transform: perspective(600px) rotateY(360deg);
  }
}

.flipYZoomIn {
  animation-name: flipYZoomIn;
}
@keyframes flipYZoomIn {
  from {
    transform: perspective(600px) rotateY(0deg) scale(1);
    animation-timing-function: ease-out;
  }
  40% {
    transform: perspective(600px) rotateY(180deg) scale(1.6);
    animation-timing-function: ease-out;
  }
  80% {
    transform: perspective(600px) rotateY(360deg) scale(0.7);
    animation-timing-function: ease-in;
  }
  to {
    transform: scale(1);
  }
}

.flipYZoomOut {
  animation-name: flipYZoomOut;
}
@keyframes flipYZoomOut {
  from {
    transform: perspective(600px) rotateY(0deg) scale(1);
    animation-timing-function: ease-out;
  }
  40% {
    transform: perspective(600px) rotateY(180deg) scale(0.6);
    animation-timing-function: ease-out;
  }
  80% {
    transform: perspective(600px) rotateY(360deg) scale(1.8);
    animation-timing-function: ease-in;
  }
  to {
    transform: scale(1);
  }
}

/*************************************************************
Skew
**************************************************************/
.skewLeft {
  animation-name: skewLeft;
}
@keyframes skewLeft {
  70% {
    transform: skewX(40deg);
  }
}

.skewRight {
  animation-name: skewRight;
}
@keyframes skewRight {
  70% {
    transform: skewX(-40deg);
  }
}

.skewInLeft {
  animation-name: skewInLeft;
}
@keyframes skewInLeft {
  from {
    opacity: 0;
    transform: translateX(-250px) skewX(-40deg);
  }
  70% {
    transform: skewX(-30deg);
  }
}

.skewInRight {
  animation-name: skewInRight;
}
@keyframes skewInRight {
  from {
    opacity: 0;
    transform: translateX(250px) skewX(40deg);
  }
  70% {
    transform: skewX(30deg);
  }
}

.skewOutLeft {
  animation-name: skewOutLeft;
}
@keyframes skewOutLeft {
  20% {
    transform: skewX(40deg);
  }
  to {
    transform: translateX(-100%) skewX(40deg);
    opacity: 0;
  }
}

.skewOutRight {
  animation-name: skewOutRight;
}
@keyframes skewOutRight {
  20% {
    transform: skewX(-40deg);
  }
  to {
    transform: translateX(100%) skewX(-40deg);
    opacity: 0;
  }
}

/*************************************************************
Shock In
**************************************************************/
.shockZoom {
  animation-name: shockZoom;
}
@keyframes shockZoom {
  from {
    transform: matrix(5, 0, 0, 5, 0, 0);
  }
  35% {
    transform: matrix(2, 0, 0, 2, 0, 0);
  }
  43% {
    transform: matrix(1, 0, 0, 1, 0, 0);
  }
}

.shockInLeft {
  animation-name: shockInLeft;
}
@keyframes shockInLeft {
  from {
    transform: matrix(1, 0, 0, 1, -800, 0);
  }
  35% {
    transform: matrix(1, 0, 0, 1, 50, 0);
  }
  43% {
    transform: matrix(1, 0, 0, 1, 0, 0);
  }
}

.shockInRight {
  animation-name: shockInRight;
}
@keyframes shockInRight {
  from {
    transform: matrix(1, 0, 0, 1, 800, 0);
  }
  35% {
    transform: matrix(1, 0, 0, 1, -50, 0);
  }
  43% {
    transform: matrix(1, 0, 0, 1, 0, 0);
  }
}

.shockInTop {
  animation-name: shockInTop;
}
@keyframes shockInTop {
  from {
    transform: matrix(1, 0, 0, 1, 0, -400);
  }
  35% {
    transform: matrix(1, 0, 0, 1, 0, 50);
  }
  43% {
    transform: matrix(1, 0, 0, 1, 0, 0);
  }
}

.shockInBottom {
  animation-name: shockInBottom;
}
@keyframes shockInBottom {
  from {
    transform: matrix(1, 0, 0, 1, 0, 400);
  }
  35% {
    transform: matrix(1, 0, 0, 1, 0, -50);
  }
  43% {
    transform: matrix(1, 0, 0, 1, 0, 0);
  }
}

/*************************************************************
Pull release
**************************************************************/
.pullRelease {
  animation-name: pullRelease;
}
@keyframes pullRelease {
  15% {
    transform: scale(1.8);
  }
}

.pushRelease {
  animation-name: pushRelease;
}
@keyframes pushRelease {
  15% {
    transform: scale(0.5);
  }
}

/*************************************************************
Swing In
**************************************************************/
.swingInLeft {
  animation-name: swingInLeft;
}
@keyframes swingInLeft {
  from {
    transform: matrix(3, 0, 0, 3, -800, 0);
    animation-timing-function: ease-out;
  }
  50% {
    transform: matrix(1.3, 0, 0, 1.3, 20, 0);
  }
}

.swingInRight {
  animation-name: swingInRight;
}
@keyframes swingInRight {
  from {
    transform: matrix(3, 0, 0, 3, 800, 0);
    animation-timing-function: ease-out;
  }
  50% {
    transform: matrix(1.3, 0, 0, 1.3, -20, 0);
  }
}

.swingInTop {
  animation-name: swingInTop;
}
@keyframes swingInTop {
  from {
    transform: matrix(3, 0, 0, 3, 0, -800);
    animation-timing-function: ease-out;
  }
  50% {
    transform: matrix(1.3, 0, 0, 1.3, 0, 20);
  }
}

.swingInBottom {
  animation-name: swingInBottom;
}
@keyframes swingInBottom {
  from {
    transform: matrix(3, 0, 0, 3, 0, 800);
    animation-timing-function: ease-out;
  }
  50% {
    transform: matrix(1.3, 0, 0, 1.3, 0, -20);
  }
}

/*************************************************************
Elevate
**************************************************************/

.elevateLeft {
  animation-name: elevateLeft;
}
@keyframes elevateLeft {
  from {
    transform: translateY(100%) rotate(-20deg);
    transform-origin: right;
  }
  40% {
    transform: rotate(20deg);
    transform-origin: right;
  }
  65% {
    transform: rotate(0deg);
    transform-origin: right;
  }
}

.elevateRight {
  animation-name: elevateRight;
}
@keyframes elevateRight {
  from {
    transform: translateY(100%) rotate(20deg);
    transform-origin: left;
  }
  40% {
    transform: rotate(-20deg);
    transform-origin: left;
  }
  65% {
    transform: rotate(0deg);
    transform-origin: left;
  }
}

/*************************************************************
Roll From
**************************************************************/
.rollFromLeft {
  animation-name: rollFromLeft;
}
@keyframes rollFromLeft {
  from {
    transform: translateX(-100%) perspective(600px) rotateY(180deg);
    opacity: 0;
  }
  to {
    transform: translateX(0) perspective(600px) rotateY(0deg);
    opacity: 1;
  }
}

.rollFromRight {
  animation-name: rollFromRight;
}
@keyframes rollFromRight {
  from {
    transform: translateX(100%) perspective(600px) rotateY(-180deg);
    opacity: 0;
  }
  to {
    transform: translateX(0) perspective(600px) rotateY(0deg);
    opacity: 1;
  }
}

.rollFromTop {
  animation-name: rollFromTop;
}
@keyframes rollFromTop {
  from {
    transform: translateY(-100%) perspective(600px) rotateY(180deg);
    opacity: 0;
  }
  to {
    transform: translateY(0) perspective(600px) rotateY(0deg);
    opacity: 1;
  }
}

.rollFromBottom {
  animation-name: rollFromBottom;
}
@keyframes rollFromBottom {
  from {
    transform: translateY(100%) perspective(600px) rotateY(-180deg);
    opacity: 0;
  }
  to {
    transform: translateY(0) perspective(600px) rotateY(0deg);
    opacity: 1;
  }
}

/*************************************************************
Roll To
**************************************************************/
.rollToLeft {
  animation-name: rollToLeft;
}
@keyframes rollToLeft {
  from {
    transform: translateX(0) perspective(600px) rotateY(0deg);
    opacity: 1;
  }
  to {
    transform: translateX(-100%) perspective(600px) rotateY(180deg);
    opacity: 0;
  }
}

.rollToRight {
  animation-name: rollToRight;
}
@keyframes rollToRight {
  from {
    transform: translateX(0) perspective(600px) rotateY(0deg);
    opacity: 1;
  }
  to {
    transform: translateX(100%) perspective(600px) rotateY(-180deg);
    opacity: 0;
  }
}

.rollToTop {
  animation-name: rollToTop;
}
@keyframes rollToTop {
  from {
    transform: translateY(0) perspective(600px) rotateX(0deg);
    opacity: 1;
  }
  to {
    transform: translateY(-100%) perspective(600px) rotateX(180deg);
    opacity: 0;
  }
}

.rollToBottom {
  animation-name: rollToBottom;
}
@keyframes rollToBottom {
  to {
    transform: translateY(0) perspective(600px) rotateX(0deg);
    opacity: 1;
  }
  to {
    transform: translateY(100%) perspective(600px) rotateX(-180deg);
    opacity: 0;
  }
}

/*************************************************************
Rotation
**************************************************************/
.rotate {
  animation-name: rotate;
  animation-timing-function: ease-in-out;
}
@keyframes rotate {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}

.rotateX {
  animation-name: rotateX;
}
@keyframes rotateX {
  from {
    transform: perspective(600px) rotateX(0deg);
  }
  to {
    transform: perspective(600px) rotateX(90deg);
  }
}

.rotateXIn {
  animation-name: rotateXIn;
}
@keyframes rotateXIn {
  from {
    transform: perspective(600px) translate3d(0, -60px, -2000px) rotateX(75deg);
    opacity: 0;
  }
  5% {
    transform: perspective(600px) translate3d(0, -60px, -1500px) rotateX(75deg);
  }
}

.rotateXOut {
  animation-name: rotateXOut;
}
@keyframes rotateXOut {
  95% {
    transform: perspective(600px) translate3d(0, -60px, -1500px) rotateX(75deg);
  }
  to {
    transform: perspective(600px) translate3d(0, -60px, -2000px) rotateX(75deg);
    opacity: 0;
  }
}

.rotateY {
  animation-name: rotateY;
}
@keyframes rotateY {
  from {
    transform: perspective(600px) rotateY(0deg);
  }
  to {
    transform: perspective(600px) rotateY(90deg);
  }
}

.rotateYIn {
  animation-name: rotateYIn;
}
@keyframes rotateYIn {
  from {
    transform: perspective(600px) translate3d(0, -60px, -2000px) rotateY(75deg);
    opacity: 0;
  }
  5% {
    transform: perspective(600px) translate3d(0, -60px, -1500px) rotateY(75deg);
  }
}

.rotateYOut {
  animation-name: rotateYOut;
}
@keyframes rotateYOut {
  95% {
    transform: perspective(600px) translate3d(0, -60px, -1500px) rotateY(75deg);
  }
  to {
    transform: perspective(600px) translate3d(0, -60px, -2000px) rotateY(75deg);
    opacity: 0;
  }
}

/*************************************************************
Rotate In
**************************************************************/
.rotateInLeft {
  animation-name: rotateInLeft;
}
@keyframes rotateInLeft {
  from {
    opacity: 0;
    transform: translateX(-100%) rotate(0deg);
  }
  to {
    transform: translateX(0px) rotate(360deg);
  }
}

.rotateInRight {
  animation-name: rotateInRight;
}
@keyframes rotateInRight {
  from {
    opacity: 0;
    transform: translateX(100%) rotate(0deg);
  }
  to {
    transform: translateX(0px) rotate(-360deg);
  }
}

.rotateInTop {
  animation-name: rotateInTop;
}
@keyframes rotateInTop {
  from {
    opacity: 0;
    transform: translateY(-400%) rotate(0deg);
  }
  to {
    transform: translateX(0px) rotate(360deg);
  }
}

.rotateInBottom {
  animation-name: rotateInBottom;
}
@keyframes rotateInBottom {
  from {
    opacity: 0;
    transform: translateY(400%) rotate(0deg);
  }
  to {
    transform: translateX(0px) rotate(360deg);
  }
}

/*************************************************************
Rotate Out
**************************************************************/
.rotateOutLeft {
  animation-name: rotateOutLeft;
}
@keyframes rotateOutLeft {
  from {
    transform: translateX(0px) rotate(360deg);
  }
  to {
    transform: translateX(-800px) rotate(0deg);
    opacity: 0;
  }
}

.rotateOutRight {
  animation-name: rotateOutRight;
}
@keyframes rotateOutRight {
  from {
    transform: translateX(0px) rotate(-360deg);
  }
  to {
    transform: translateX(800px) rotate(0deg);
    opacity: 0;
  }
}

.rotateOutTop {
  animation-name: rotateOutTop;
}
@keyframes rotateOutTop {
  from {
    transform: translateX(0px) rotate(360deg);
  }
  to {
    transform: translateY(-800px) rotate(0deg);
    opacity: 0;
  }
}

.rotateOutBottom {
  animation-name: rotateOutBottom;
}
@keyframes rotateOutBottom {
  from {
    transform: translateX(0px) rotate(360deg);
  }
  to {
    transform: translateY(800px) rotate(0deg);
    opacity: 0;
  }
}

/*************************************************************
Spin To
**************************************************************/
.spinToLeft {
  animation-name: spinToLeft;
}
@keyframes spinToLeft {
  from,
  to {
    transform-origin: left bottom;
  }
  from {
    transform: rotate(90deg);
    opacity: 0;
  }
}

.spinToRight {
  animation-name: spinToRight;
}
@keyframes spinToRight {
  from,
  to {
    transform-origin: right bottom;
  }
  from {
    transform: rotate(-90deg);
    opacity: 0;
  }
}

.spinToTop {
  animation-name: spinToTop;
}
@keyframes spinToTop {
  from,
  to {
    transform-origin: left bottom;
  }
  from {
    transform: rotate(-90deg);
    opacity: 0;
  }
}

.spinToBottom {
  animation-name: spinToBottom;
}
@keyframes spinToBottom {
  from,
  to {
    transform-origin: right bottom;
  }
  from {
    transform: rotate(90deg);
    opacity: 0;
  }
}

/*************************************************************
Spin From
**************************************************************/
.spinFromLeft {
  animation-name: spinFromLeft;
}
@keyframes spinFromLeft {
  from,
  to {
    transform-origin: left bottom;
  }
  to {
    transform: rotate(90deg);
    opacity: 0;
  }
}

.spinFromRight {
  animation-name: spinFromRight;
}
@keyframes spinFromRight {
  from,
  to {
    transform-origin: right bottom;
  }
  to {
    transform: rotate(-90deg);
    opacity: 0;
  }
}

.spinFromTop {
  animation-name: spinFromTop;
}
@keyframes spinFromTop {
  from,
  to {
    transform-origin: left bottom;
  }
  to {
    transform: rotate(-90deg);
    opacity: 0;
  }
}

.spinFromBottom {
  animation-name: spinFromBottom;
}
@keyframes spinFromBottom {
  from,
  to {
    transform-origin: right bottom;
  }
  to {
    transform: rotate(90deg);
    opacity: 0;
  }
}

/*************************************************************
Blur In
**************************************************************/

.blurIn {
  animation-name: blurIn;
}
@keyframes blurIn {
  from {
    filter: blur(20px);
    opacity: 0;
  }
}

.blurInLeft {
  animation-name: blurInLeft;
}
@keyframes blurInLeft {
  from {
    transform: translateX(250px);
    filter: blur(20px);
    opacity: 0;
  }
}

.blurInRight {
  animation-name: blurInRight;
}
@keyframes blurInRight {
  from {
    transform: translateX(-250px);
    filter: blur(20px);
    opacity: 0;
  }
}

.blurInTop {
  animation-name: blurInTop;
}
@keyframes blurInTop {
  from {
    transform: translateY(250px);
    filter: blur(20px);
    opacity: 0;
  }
}

.blurInBottom {
  animation-name: blurInBottom;
}
@keyframes blurInBottom {
  from {
    transform: translateY(-250px);
    filter: blur(20px);
    opacity: 0;
  }
}

/*************************************************************
Blur Out
**************************************************************/
.blurOut {
  animation-name: blurOut;
}
@keyframes blurOut {
  85%,
  to {
    filter: blur(20px);
  }
  to {
    opacity: 0;
  }
}

.blurOutLeft {
  animation-name: blurOutLeft;
}
@keyframes blurOutLeft {
  85%,
  to {
    filter: blur(20px);
    transform: translateX(100%);
  }
  to {
    opacity: 0;
  }
}

.blurOutRight {
  animation-name: blurOutRight;
}
@keyframes blurOutRight {
  85%,
  to {
    filter: blur(20px);
    transform: translateX(-100%);
  }
  to {
    opacity: 0;
  }
}

.blurOutTop {
  animation-name: blurOutTop;
}
@keyframes blurOutTop {
  85%,
  to {
    filter: blur(20px);
    transform: translateY(100%);
  }
  to {
    opacity: 0;
  }
}

.blurOutBottom {
  animation-name: blurOutBottom;
}
@keyframes blurOutBottom {
  85%,
  to {
    filter: blur(20px);
    transform: translateY(-100%);
  }
  to {
    opacity: 0;
  }
}

/*************************************************************
Bounce
**************************************************************/
.bounceFromTop {
  animation-name: bounceFromTop;
}
@keyframes bounceFromTop {
  0%,
  25%,
  55%,
  85%,
  100% {
    animation-timing-function: ease-out;
    transform: translate3d(0, 0, 0);
  }
  41%,
  44% {
    animation-timing-function: ease-in;
    transform: translate3d(0, -80px, 0) scale3d(1, 1.6, 1);
  }
  70% {
    animation-timing-function: ease-in;
    transform: translate3d(0, -20px, 0);
  }
  90% {
    transform: translate3d(0, -4px, 0);
  }
}

.bounceFromDown {
  animation-name: bounceFromDown;
}
@keyframes bounceFromDown {
  0%,
  25%,
  55%,
  85%,
  100% {
    animation-timing-function: ease-out;
    transform: translate3d(0, 0, 0);
  }
  41%,
  44% {
    animation-timing-function: ease-in;
    transform: translate3d(0, 80px, 0) scale3d(1, 1.2, 1);
  }
  70% {
    animation-timing-function: ease-in;
    transform: translate3d(0, 20px, 0);
  }
  90% {
    transform: translate3d(0, 4px, 0);
  }
}

.bounceX {
  animation-name: bounceX;
}
@keyframes bounceX {
  0%,
  25%,
  55%,
  85%,
  100% {
    animation-timing-function: ease-out;
    transform: scale3d(1, 1, 1);
  }
  41%,
  44% {
    animation-timing-function: ease-in;
    transform: scale3d(1.8, 1, 1);
  }
  70% {
    animation-timing-function: ease-in;
    transform: scale3d(1.5, 1, 1);
  }
  90% {
    transform: scale3d(1.1, 1, 1);
  }
}

.bounceY {
  animation-name: bounceY;
}
@keyframes bounceY {
  0%,
  25%,
  55%,
  85%,
  100% {
    animation-timing-function: ease-out;
    transform: scale3d(1, 1, 1);
  }
  41%,
  44% {
    animation-timing-function: ease-in;
    transform: scale3d(1, 2, 1);
  }
  70% {
    animation-timing-function: ease-in;
    transform: scale3d(1, 1.5, 1);
  }
  90% {
    transform: scale3d(1, 1.1, 1);
  }
}

.bounceZoomIn {
  animation-name: bounceZoomIn;
}
@keyframes bounceZoomIn {
  0%,
  25%,
  55%,
  85%,
  100% {
    animation-timing-function: ease-out;
    transform: scale(1);
  }
  41%,
  44% {
    animation-timing-function: ease-in;
    transform: scale(1.5);
  }
  70% {
    animation-timing-function: ease-in;
    transform: scale(1.3);
  }
  90% {
    transform: scale(1.1);
  }
}

.bounceZoomOut {
  animation-name: bounceZoomOut;
}
@keyframes bounceZoomOut {
  0%,
  25%,
  55%,
  85%,
  100% {
    animation-timing-function: ease-out;
    transform: scale(1);
  }
  41%,
  44% {
    animation-timing-function: ease-in;
    transform: scale(0.3);
  }
  70% {
    animation-timing-function: ease-in;
    transform: scale(0.5);
  }
  90% {
    transform: scale(0.9);
  }
}

/*************************************************************
Bounce In
**************************************************************/
.bounceInTop {
  animation-name: bounceInTop;
}
@keyframes bounceInTop {
  0% {
    transform: translate3d(0, -300%, 0);
    opacity: 0;
  }
  58% {
    transform: translate3d(0, 27px, 0);
    opacity: 1;
  }
  73% {
    transform: translate3d(0, -12px, 0);
  }
  88% {
    transform: translate3d(0, 7px, 0);
  }
}

.bounceInBottom {
  animation-name: bounceInBottom;
}
@keyframes bounceInBottom {
  0% {
    transform: translate3d(0, 300%, 0);
    opacity: 0;
  }
  58% {
    transform: translate3d(0, -27px, 0);
    opacity: 1;
  }
  73% {
    transform: translate3d(0, 12px, 0);
  }
  88% {
    transform: translate3d(0, -8px, 0);
  }
}

.bounceInLeft {
  animation-name: bounceInLeft;
}
@keyframes bounceInLeft {
  0% {
    transform: translate3d(-300%, 0, 0);
  }
  58% {
    transform: translate3d(27px, 0, 0);
  }
  73% {
    transform: translate3d(-12px, 0, 0);
  }
  88% {
    transform: translate3d(8px, 0, 0);
  }
}

.bounceInRight {
  animation-name: bounceInRight;
}
@keyframes bounceInRight {
  0% {
    transform: translate3d(300%, 0, 0);
  }
  58% {
    transform: translate3d(-27px, 0, 0);
  }
  73% {
    transform: translate3d(12px, 0, 0);
  }
  88% {
    transform: translate3d(-8px, 0, 0);
  }
}

/*************************************************************
Bounce Out
**************************************************************/
.bounceOutTop {
  animation-name: bounceOutTop;
}
@keyframes bounceOutTop {
  18%,
  33%,
  48% {
    opacity: 1;
  }
  18% {
    transform: translate3d(0, 27px, 0);
  }
  33% {
    transform: translate3d(0, -12px, 0);
  }
  48% {
    transform: translate3d(0, 8px, 0);
  }
  100% {
    opacity: 0;
    transform: translate3d(0, -300%, 0);
  }
}

.bounceOutBottom {
  animation-name: bounceOutBottom;
}
@keyframes bounceOutBottom {
  18%,
  33%,
  48% {
    opacity: 1;
  }
  18% {
    transform: translate3d(0, -27px, 0);
  }
  33% {
    transform: translate3d(0, 12px, 0);
  }
  48% {
    transform: translate3d(0, -8px, 0);
  }
  100% {
    opacity: 0;
    transform: translate3d(0, 300%, 0);
  }
}

.bounceOutLeft {
  animation-name: bounceOutLeft;
}
@keyframes bounceOutLeft {
  18%,
  33%,
  48% {
    opacity: 1;
  }
  18% {
    transform: translate3d(27px, 0, 0);
  }
  33% {
    transform: translate3d(-12px, 0, 0);
  }
  48% {
    transform: translate3d(8px, 0, 0);
  }
  100% {
    opacity: 0;
    transform: translate3d(-300%, 0, 0);
  }
}

.bounceOutRight {
  animation-name: bounceOutRight;
}
@keyframes bounceOutRight {
  18%,
  33%,
  48% {
    opacity: 1;
  }
  18% {
    transform: translate3d(-27px, 0, 0);
  }
  33% {
    transform: translate3d(12px, 0, 0);
  }
  48% {
    transform: translate3d(-8px, 0, 0);
  }
  100% {
    opacity: 0;
    transform: translate3d(300%, 0, 0);
  }
}

/*************************************************************
Perspective
**************************************************************/
.perspectiveToTop {
  animation-name: perspectiveToTop;
  transform: perspective(500px);
  transform-style: preserve-3d;
}
@keyframes perspectiveToTop {
  50% {
    opacity: 1;
  }
  to {
    transform: perspective(500px) rotateX(90deg) translateY(-50px)
      translateZ(50px);
    opacity: 0;
  }
}

.perspectiveToBottom {
  animation-name: perspectiveToBottom;
  transform: perspective(500px);
  transform-style: preserve-3d;
}
@keyframes perspectiveToBottom {
  50% {
    opacity: 1;
  }
  to {
    transform: perspective(500px) rotateX(90deg) translateY(50px)
      translateZ(-50px);
    opacity: 0;
  }
}

/*************************************************************
Zoom In
**************************************************************/
.zoomIn {
  animation-name: zoomIn;
}
@keyframes zoomIn {
  from {
    transform: scale(10);
    opacity: 0;
  }
}

.zoomInLeft {
  animation-name: zoomInLeft;
}
@keyframes zoomInLeft {
  from {
    transform: scale(10) translateX(-50%);
    opacity: 0;
  }
}

.zoomInRight {
  animation-name: zoomInRight;
}
@keyframes zoomInRight {
  from {
    transform: scale(10) translateX(50%);
    opacity: 0;
  }
}

.zoomInTop {
  animation-name: zoomInTop;
}
@keyframes zoomInTop {
  from {
    transform: scale(10) translateY(-50%);
    opacity: 0;
  }
}

.zoomInBottom {
  animation-name: zoomInBottom;
}
@keyframes zoomInBottom {
  from {
    transform: scale(10) translateY(50%);
    opacity: 0;
  }
}

/*************************************************************
Zoom Out
**************************************************************/
.zoomOut {
  animation-name: zoomOut;
}
@keyframes zoomOut {
  to {
    transform: scale(10);
    opacity: 0;
  }
}

.zoomOutLeft {
  animation-name: zoomOutLeft;
}
@keyframes zoomOutLeft {
  to {
    transform: scale(10) translateX(-50%);
    opacity: 0;
  }
}

.zoomOutRight {
  animation-name: zoomOutRight;
}
@keyframes zoomOutRight {
  to {
    transform: scale(10) translateX(50%);
    opacity: 0;
  }
}

.zoomOutTop {
  animation-name: zoomOutTop;
}
@keyframes zoomOutTop {
  to {
    transform: scale(10) translateY(-50%);
    opacity: 0;
  }
}

.zoomOutBottom {
  animation-name: zoomOutBottom;
}
@keyframes zoomOutBottom {
  to {
    transform: scale(10) translateY(50%);
    opacity: 0;
  }
}

/*************************************************************
Dance
**************************************************************/
.danceTop {
  animation-name: danceTop;
  transform-origin: top;
}
@keyframes danceTop {
  16% {
    transform: skew(-14deg);
  }
  33% {
    transform: skew(12deg);
  }
  49% {
    transform: skew(-8deg);
  }
  66% {
    transform: skew(6deg);
  }
  83% {
    transform: skew(-4deg);
  }
}

.danceMiddle {
  animation-name: danceMiddle;
}
@keyframes danceMiddle {
  16% {
    transform: skew(-14deg);
  }
  33% {
    transform: skew(12deg);
  }
  49% {
    transform: skew(-8deg);
  }
  66% {
    transform: skew(6deg);
  }
  83% {
    transform: skew(-4deg);
  }
}

.danceBottom {
  animation-name: danceBottom;
  transform-origin: bottom;
}
@keyframes danceBottom {
  16% {
    transform: skew(-14deg);
  }
  33% {
    transform: skew(12deg);
  }
  49% {
    transform: skew(-8deg);
  }
  66% {
    transform: skew(6deg);
  }
  83% {
    transform: skew(-4deg);
  }
}
