/* Hover Animations */
.zoom {
  transform: scale(1);
  transition: all 0.8s ease-in-out;
}

.zoom:hover {
  transform: scale(1.02);
  transition: all 0.8s ease-in-out;
}

/* Base animation properties - apply to all animated elements */
.animated {
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
  -webkit-animation-timing-function: ease-in-out;
  animation-timing-function: ease-in-out;
}

/* Speed Classes - combinable with any animation */
.speed-1 {
  -webkit-animation-duration: 0.5s;
  animation-duration: 0.5s;
}

.speed-2 {
  -webkit-animation-duration: 1s;
  animation-duration: 1s;
}

.speed-3 {
  -webkit-animation-duration: 1.5s;
  animation-duration: 1.5s;
}

.speed-4 {
  -webkit-animation-duration: 2s;
  animation-duration: 2s;
}

.speed-5 {
  -webkit-animation-duration: 2.5s;
  animation-duration: 2.5s;
}

.speed-6 {
  -webkit-animation-duration: 3s;
  animation-duration: 3s;
}

/* Delay Classes - combinable with any animation */
.delay-1 {
  -webkit-animation-delay: 0.2s;
  animation-delay: 0.2s;
}

.delay-2 {
  -webkit-animation-delay: 0.5s;
  animation-delay: 0.5s;
}

.delay-3 {
  -webkit-animation-delay: 1s;
  animation-delay: 1s;
}

.delay-4 {
  -webkit-animation-delay: 1.5s;
  animation-delay: 1.5s;
}

.delay-5 {
  -webkit-animation-delay: 2s;
  animation-delay: 2s;
}

/* Timing Functions - combinable with any animation */
.ease-in {
  -webkit-animation-timing-function: ease-in;
  animation-timing-function: ease-in;
}

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

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

.linear {
  -webkit-animation-timing-function: linear;
  animation-timing-function: linear;
}

/* Fade In Animation */
@-webkit-keyframes fadeIn {
  0% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}

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

.fadein {
  -webkit-animation-name: fadeIn;
  animation-name: fadeIn;
}

/* Fade In Left Animation */
@-webkit-keyframes fadeInLeft {
  0% {
    opacity: 0;
    transform: translate3d(-100%, 0, 0);
  }
  100% {
    opacity: 1;
    transform: translate3d(0, 0, 0);
  }
}

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

.fadeleft {
  -webkit-animation-name: fadeInLeft;
  animation-name: fadeInLeft;
}

/* Fade In Right Animation */
@-webkit-keyframes fadeInRight {
  0% {
    opacity: 0;
    transform: translate3d(100%, 0, 0);
  }
  100% {
    opacity: 1;
    transform: translate3d(0, 0, 0);
  }
}

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

.faderight {
  -webkit-animation-name: fadeInRight;
  animation-name: fadeInRight;
}

/* Fade In Up Animation */
@-webkit-keyframes fadeInUp {
  0% {
    opacity: 0;
    transform: translate3d(0, 100%, 0);
  }
  100% {
    opacity: 1;
    transform: translate3d(0, 0, 0);
  }
}

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

.fadeup {
  -webkit-animation-name: fadeInUp;
  animation-name: fadeInUp;
}

/* Fade In Down Animation */
@-webkit-keyframes fadeInDown {
  0% {
    opacity: 0;
    transform: translate3d(0, -100%, 0);
  }
  100% {
    opacity: 1;
    transform: translate3d(0, 0, 0);
  }
}

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

.fadedown {
  -webkit-animation-name: fadeInDown;
  animation-name: fadeInDown;
}

/* Scale In Animation */
@-webkit-keyframes scaleIn {
  0% {
    opacity: 0;
    transform: scale(0.3);
  }
  50% {
    opacity: 1;
  }
  100% {
    opacity: 1;
    transform: scale(1);
  }
}

@keyframes scaleIn {
  0% {
    opacity: 0;
    transform: scale(0.3);
  }
  50% {
    opacity: 1;
  }
  100% {
    opacity: 1;
    transform: scale(1);
  }
}

.scalein {
  -webkit-animation-name: scaleIn;
  animation-name: scaleIn;
}

/* Slide In Left Animation */
@-webkit-keyframes slideInLeft {
  0% {
    transform: translate3d(-100%, 0, 0);
    visibility: visible;
  }
  100% {
    transform: translate3d(0, 0, 0);
  }
}

@keyframes slideInLeft {
  0% {
    transform: translate3d(-100%, 0, 0);
    visibility: visible;
  }
  100% {
    transform: translate3d(0, 0, 0);
  }
}

.slideleft {
  -webkit-animation-name: slideInLeft;
  animation-name: slideInLeft;
}

/* Slide In Right Animation */
@-webkit-keyframes slideInRight {
  0% {
    transform: translate3d(100%, 0, 0);
    visibility: visible;
  }
  100% {
    transform: translate3d(0, 0, 0);
  }
}

@keyframes slideInRight {
  0% {
    transform: translate3d(100%, 0, 0);
    visibility: visible;
  }
  100% {
    transform: translate3d(0, 0, 0);
  }
}

.slideright {
  -webkit-animation-name: slideInRight;
  animation-name: slideInRight;
}

/* Bounce In Animation */
@-webkit-keyframes bounceIn {
  0%, 20%, 40%, 60%, 80%, 100% {
    -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
    animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
  }
  0% {
    opacity: 0;
    transform: scale3d(.3, .3, .3);
  }
  20% {
    transform: scale3d(1.1, 1.1, 1.1);
  }
  40% {
    transform: scale3d(.9, .9, .9);
  }
  60% {
    opacity: 1;
    transform: scale3d(1.03, 1.03, 1.03);
  }
  80% {
    transform: scale3d(.97, .97, .97);
  }
  100% {
    opacity: 1;
    transform: scale3d(1, 1, 1);
  }
}

@keyframes bounceIn {
  0%, 20%, 40%, 60%, 80%, 100% {
    -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
    animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
  }
  0% {
    opacity: 0;
    transform: scale3d(.3, .3, .3);
  }
  20% {
    transform: scale3d(1.1, 1.1, 1.1);
  }
  40% {
    transform: scale3d(.9, .9, .9);
  }
  60% {
    opacity: 1;
    transform: scale3d(1.03, 1.03, 1.03);
  }
  80% {
    transform: scale3d(.97, .97, .97);
  }
  100% {
    opacity: 1;
    transform: scale3d(1, 1, 1);
  }
}

.bouncein {
  -webkit-animation-name: bounceIn;
  animation-name: bounceIn;
}
