@-webkit-keyframes animate-from-top-fade-in {
    0% { -webkit-transform: translateY(-100%); transform: translateY(-100%); opacity: 0; }
    100% { -webkit-transform: translateY(0); transform: translateY(0); opacity: 1; }
}
@-webkit-keyframes animate-from-left {
    0% { -webkit-transform: translateX(-100vw); transform: translateX(-100vw); }
    100% { -webkit-transform: translateX(0); transform: translateX(0); }
}
@keyframes animate-from-left {
    0% { -webkit-transform: translateX(-100vw); transform: translateX(-100vw); }
    100% { -webkit-transform: translateX(0); transform: translateX(0); }
}
@-webkit-keyframes animate-from-right {
    0% { -webkit-transform: translateX(100vw); transform: translateX(100vw); }
    100% { -webkit-transform: translateX(0); transform: translateX(0); }
}
@keyframes animate-from-right {
    0% { -webkit-transform: translateX(100vw); transform: translateX(100vw); }
    100% { -webkit-transform: translateX(0); transform: translateX(0); }
}
@-webkit-keyframes animate-from-top {
    0% { -webkit-transform: translateY(-100vh); transform: translateY(-100vh); }
    100% { -webkit-transform: translateY(0); transform: translateY(0); }
}
@keyframes animate-from-top {
    0% { -webkit-transform: translateY(-100vh); transform: translateY(-100vh); }
    100% { -webkit-transform: translateY(0); transform: translateY(0); }
}
@-webkit-keyframes animate-from-bottom {
    0% { -webkit-transform: translateY(100vh); transform: translateY(100vh); }
    100% { -webkit-transform: translateY(0); transform: translateY(0); }
}
@keyframes animate-from-bottom {
    0% { -webkit-transform: translateY(100vh); transform: translateY(100vh); }
    100% { -webkit-transform: translateY(0); transform: translateY(0); }
}
@-webkit-keyframes animate-from-bottom-bounce {
   0%   { -webkit-transform: translateY(100vh); transform: translateY(100vh); }
   70%  { -webkit-transform: translateY(-30px); transform: translateY(-30px); }
   90%  { -webkit-transform: translateY(10px); transform: translateY(10px); }
   100% { -webkit-transform: translateY(0); transform: translateY(0); }
}
@keyframes animate-from-bottom-bounce {
   0%   { -webkit-transform: translateY(100vh); transform: translateY(100vh); }
   70%  { -webkit-transform: translateY(-30px); transform: translateY(-30px); }
   90%  { -webkit-transform: translateY(10px); transform: translateY(10px); }
   100% { -webkit-transform: translateY(0); transform: translateY(0); }
}
@-webkit-keyframes animate-from-top-bounce {
   0%   { -webkit-transform: translateY(-100vh); transform: translateY(-100vh); }
   60%  { -webkit-transform: translateY(30px); transform: translateY(30px); }
   80%  { -webkit-transform: translateY(-10px); transform: translateY(-10px); }
   100% { -webkit-transform: translateY(0); transform: translateY(0); }
}
@keyframes animate-from-top-bounce {
   0%   { -webkit-transform: translateY(-100vh); transform: translateY(-100vh); }
   60%  { -webkit-transform: translateY(30px); transform: translateY(30px); }
   80%  { -webkit-transform: translateY(-10px); transform: translateY(-10px); }
   100% { -webkit-transform: translateY(0); transform: translateY(0); }
}
@-webkit-keyframes animate-from-left-bounce {
   0%   { -webkit-transform: translateX(-100vh); transform: translateX(-100vh); }
   60%  { -webkit-transform: translateX(30px); transform: translateX(30px); }
   80%  { -webkit-transform: translateX(-10px); transform: translateX(-10px); }
   100% { -webkit-transform: translateX(0); transform: translateX(0); }
}
@keyframes animate-from-left-bounce {
   0%   { -webkit-transform: translateX(-100vh); transform: translateX(-100vh); }
   60%  { -webkit-transform: translateX(30px); transform: translateX(30px); }
   80%  { -webkit-transform: translateX(-10px); transform: translateX(-10px); }
   100% { -webkit-transform: translateX(0); transform: translateX(0); }
}
@-webkit-keyframes animate-from-right-bounce {
   0%   { -webkit-transform: translateX(100vh); transform: translateX(100vh); }
   60%  { -webkit-transform: translateX(-30px); transform: translateX(-30px); }
   80%  { -webkit-transform: translateX(10px); transform: translateX(10px); }
   100% { -webkit-transform: translateX(0); transform: translateX(0); }
}
@keyframes animate-from-right-bounce {
   0%   { -webkit-transform: translateX(100vh); transform: translateX(100vh); }
   60%  { -webkit-transform: translateX(-30px); transform: translateX(-30px); }
   80%  { -webkit-transform: translateX(10px); transform: translateX(10px); }
   100% { -webkit-transform: translateX(0); transform: translateX(0); }
}
@-webkit-keyframes animate-scale-up {
    0% { -webkit-transform: scale(0); transform: scale(0); }
    100% { -webkit-transform: scale(1); transform: scale(1); }
}
@keyframes animate-scale-up {
    0% { -webkit-transform: scale(0); transform: scale(0); }
    100% { -webkit-transform: scale(1); transform: scale(1); }
}
@-webkit-keyframes animate-scale-down {
    0% { -webkit-transform: scale(1); transform: scale(1); }
    100% { -webkit-transform: scale(0); transform: scale(0); }
}
@keyframes animate-scale-down {
    0% { -webkit-transform: scale(1); transform: scale(1); }
    100% { -webkit-transform: scale(0); transform: scale(0); }
}
@-webkit-keyframes animate-scale-down-from-2x {
    0% { -webkit-transform: scale(2); transform: scale(2); }
    100% { -webkit-transform: scale(1); transform: scale(1); }
}
@keyframes animate-scale-down-from-2x {
    0% { -webkit-transform: scale(2); transform: scale(2); }
    100% { -webkit-transform: scale(1); transform: scale(1); }
}
@-webkit-keyframes animate-scale-down-from-3x {
    0% { -webkit-transform: scale(3); transform: scale(3); }
    100% { -webkit-transform: scale(1); transform: scale(1); }
}
@keyframes animate-scale-down-from-3x {
    0% { -webkit-transform: scale(3); transform: scale(3); }
    100% { -webkit-transform: scale(1); transform: scale(1); }
}
@-webkit-keyframes animate-fade-in {
    0% { opacity: 0; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; }
    100% { opacity: 1; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; }
}
@keyframes animate-fade-in {
    0% { opacity: 0; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; }
    100% { opacity: 1; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; }
}
@-webkit-keyframes animate-opacity-in {
    0% { opacity: 0; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; }
    100% { opacity: 100; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=10000)"; }
}
@keyframes animate-opacity-in {
    0% { opacity: 0; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; }
    100% { opacity: 100; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=10000)"; }
}
@-webkit-keyframes animate-opacity-out {
    0% { opacity: 100; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=10000)"; }
    100% { opacity: 0; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; }
}
@keyframes animate-opacity-out {
    0% { opacity: 100; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=10000)"; }
    100% { opacity: 0; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; }
}
.transform-scale-0 { -webkit-transform: scale(0); transform: scale(0); }
.transform-scale-0-5 { -webkit-transform: scale(0.5); transform: scale(0.5); }
.transform-scale-1 { -webkit-transform: scale(1); transform: scale(1); }
.transform-move-left { -webkit-transform: translateX(-100vw); transform: translateX(-100vw); }
.transform-move-right { -webkit-transform: translateX(100vw); transform: translateX(100vw); }
.transform-move-top { -webkit-transform: translateY(-100vh); transform: translateY(-100vh); }
.transform-move-bottom { -webkit-transform: translateY(100vh); transform: translateY(100vh); }
.transform-fade-in { opacity: 1; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; }
.transform-fade-out { opacity: 0; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; }

[data-animate-lazy] {
    opacity: .0;
    -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
    -webkit-animation-play-state: paused; /* Safari 4.0 - 8.0 */
    animation-play-state: paused;
}
.animate { box-sizing: border-box; -webkit-animation-duration: 1s; animation-duration: 1s; -webkit-animation-direction: alternate; animation-direction: alternate; }
.animate-once { -webkit-animation-iteration-count: 1; animation-iteration-count: 1; }
.animate-infinite { -webkit-animation-iteration-count: infinite; animation-iteration-count: infinite; }

.animate-speed-very-slow { -webkit-animation-duration: 6s; animation-duration: 6s; }
.animate-speed-slow { -webkit-animation-duration: 4s; animation-duration: 4s; }
.animate-speed-medium { -webkit-animation-duration: 2s; animation-duration: 2s; }
.animate-speed-fast { -webkit-animation-duration: 1s; animation-duration: 1s; }
.animate-speed-very-fast { -webkit-animation-duration: 0.2s; animation-duration: 0.2s; }

.animate-linear { -webkit-animation-timing-function: linear; animation-timing-function: linear; }
.animate-ease-in { -webkit-animation-timing-function: ease-in; animation-timing-function: ease-in; }
.animate-ease-out { -webkit-animation-timing-function: ease-out; animation-timing-function: ease-out; }
.animate-ease-in-out { -webkit-animation-timing-function: ease-in-out; animation-timing-function: ease-in-out; }

/* specific speeds */
.animate-200ms { -webkit-animation-duration: 200ms; animation-duration: 200ms; }
.animate-400ms { -webkit-animation-duration: 400ms; animation-duration: 400ms; }
.animate-600ms { -webkit-animation-duration: 600ms; animation-duration: 600ms; }
.animate-800ms { -webkit-animation-duration: 800ms; animation-duration: 800ms; }
.animate-1s, .animate-1000ms { -webkit-animation-duration: 1000ms; animation-duration: 1000ms; }
.animate-1200ms { -webkit-animation-duration: 1200ms; animation-duration: 1200ms; }
.animate-1400ms { -webkit-animation-duration: 1400ms; animation-duration: 1400ms; }
.animate-1600ms { -webkit-animation-duration: 1600ms; animation-duration: 1600ms; }
.animate-1800ms { -webkit-animation-duration: 1800ms; animation-duration: 1800ms; }
.animate-2s, .animate-2000ms { -webkit-animation-duration: 2000ms; animation-duration: 2000ms; }
.animate-2200ms { -webkit-animation-duration: 2200ms; animation-duration: 2200ms; }
.animate-2400ms { -webkit-animation-duration: 2400ms; animation-duration: 2400ms; }
.animate-2600ms { -webkit-animation-duration: 2600ms; animation-duration: 2600ms; }
.animate-2800ms { -webkit-animation-duration: 2800ms; animation-duration: 2800ms; }
.animate-3s, .animate-3000ms { -webkit-animation-duration: 3000ms; animation-duration: 3000ms; }
.animate-3200ms { -webkit-animation-duration: 3200ms; animation-duration: 3200ms; }
.animate-3400ms { -webkit-animation-duration: 3400ms; animation-duration: 3400ms; }
.animate-3600ms { -webkit-animation-duration: 3600ms; animation-duration: 3600ms; }
.animate-3800ms { -webkit-animation-duration: 3800ms; animation-duration: 3800ms; }
.animate-4s, .animate-4000ms { -webkit-animation-duration: 4000ms; animation-duration: 4000ms; }
.animate-4200ms { -webkit-animation-duration: 4200ms; animation-duration: 4200ms; }
.animate-4400ms { -webkit-animation-duration: 4400ms; animation-duration: 4400ms; }
.animate-4600ms { -webkit-animation-duration: 4600ms; animation-duration: 4600ms; }
.animate-4800ms { -webkit-animation-duration: 4800ms; animation-duration: 4800ms; }
.animate-5s, .animate-5000ms { -webkit-animation-duration: 5000ms; animation-duration: 5000ms; }

/* specific delays */
.animate-delay-200ms { -webkit-animation-delay: 200ms; animation-delay: 200ms; }
.animate-delay-400ms { -webkit-animation-delay: 400ms; animation-delay: 400ms; }
.animate-delay-600ms { -webkit-animation-delay: 600ms; animation-delay: 600ms; }
.animate-delay-800ms { -webkit-animation-delay: 800ms; animation-delay: 800ms; }
.animate-delay-1s, .animate-delay-1000ms { -webkit-animation-delay: 1000ms; animation-delay: 1000ms; }
.animate-delay-1200ms { -webkit-animation-delay: 1200ms; animation-delay: 1200ms; }
.animate-delay-1400ms { -webkit-animation-delay: 1400ms; animation-delay: 1400ms; }
.animate-delay-1600ms { -webkit-animation-delay: 1600ms; animation-delay: 1600ms; }
.animate-delay-1800ms { -webkit-animation-delay: 1800ms; animation-delay: 1800ms; }
.animate-delay-2s, .animate-delay-2000ms { -webkit-animation-delay: 2000ms; animation-delay: 2000ms; }
.animate-delay-2200ms { -webkit-animation-delay: 2200ms; animation-delay: 2200ms; }
.animate-delay-2400ms { -webkit-animation-delay: 2400ms; animation-delay: 2400ms; }
.animate-delay-2600ms { -webkit-animation-delay: 2600ms; animation-delay: 2600ms; }
.animate-delay-2800ms { -webkit-animation-delay: 2800ms; animation-delay: 2800ms; }
.animate-delay-3s, .animate-delay-3000ms { -webkit-animation-delay: 3000ms; animation-delay: 3000ms; }
.animate-delay-3200ms { -webkit-animation-delay: 3200ms; animation-delay: 3200ms; }
.animate-delay-3400ms { -webkit-animation-delay: 3400ms; animation-delay: 3400ms; }
.animate-delay-3600ms { -webkit-animation-delay: 3600ms; animation-delay: 3600ms; }
.animate-delay-3800ms { -webkit-animation-delay: 3800ms; animation-delay: 3800ms; }
.animate-delay-4s, .animate-delay-4000ms { -webkit-animation-delay: 4000ms; animation-delay: 4000ms; }
.animate-delay-4200ms { -webkit-animation-delay: 4200ms; animation-delay: 4200ms; }
.animate-delay-4400ms { -webkit-animation-delay: 4400ms; animation-delay: 4400ms; }
.animate-delay-4600ms { -webkit-animation-delay: 4600ms; animation-delay: 4600ms; }
.animate-delay-4800ms { -webkit-animation-delay: 4800ms; animation-delay: 4800ms; }
.animate-delay-5s, .animate-delay-5000ms { -webkit-animation-delay: 5000ms; animation-delay: 5000ms; }

.animate-from-left,
.animate-from-right,
.animate-from-top,
.animate-from-bottom,
.animate-from-bottom-bounce,
.animate-from-top-bounce,
.animate-from-left-bounce,
.animate-from-right-bounce,
.animate-fade-in,
.animate-opacity-in,
.animate-scale-up,
.animate-scale-down,
.animate-scale-down-from-2x,
.animate-scale-down-from-3x {
    -webkit-animation-fill-mode: forwards; /* Safari 4.0 - 8.0 */
    animation-fill-mode: forwards;
}

/* Different animations */
.animate-from-left { -webkit-animation-name: animate-from-left; animation-name: animate-from-left; }
.animate-from-right { -webkit-animation-name: animate-from-right; animation-name: animate-from-right; }
.animate-from-top { -webkit-animation-name: animate-from-top; animation-name: animate-from-top; }
.animate-from-bottom {-webkit-animation-name: animate-from-bottom;animation-name: animate-from-bottom; }
.animate-from-bottom-bounce { -webkit-animation-name: animate-from-bottom-bounce; animation-name: animate-from-bottom-bounce; }
.animate-from-top-bounce { -webkit-animation-name: animate-from-top-bounce; animation-name: animate-from-top-bounce; }
.animate-from-left-bounce { -webkit-animation-name: animate-from-left-bounce; animation-name: animate-from-left-bounce; }
.animate-from-right-bounce { -webkit-animation-name: animate-from-right-bounce; animation-name: animate-from-right-bounce; }
.animate-fade-in { -webkit-animation-name: animate-fade-in; animation-name: animate-fade-in; }
.animate-opacity-in {-webkit-animation-name: animate-opacity-in;animation-name: animate-opacity-in; }
.animate-scale-up { -webkit-animation-name: animate-scale-up; animation-name: animate-scale-up; }
.animate-scale-down { -webkit-animation-name: animate-scale-down; animation-name: animate-scale-down; }
.animate-scale-down-from-2x { -webkit-animation-name: animate-scale-down-from-2x; animation-name: animate-scale-down-from-2x; }
.animate-scale-down-from-3x { -webkit-animation-name: animate-scale-down-from-3x; animation-name: animate-scale-down-from-3x; }