/* -------------------------------------------
    Animation
---------------------------------------------- */


.appear-animate {
  visibility: hidden;
  opacity: 0;
}

.appear-animation-visible {
  visibility: visible;
  opacity: 1;
}

.maskUp {
  animation-name: maskUp
}

.maskRight {
  animation-name: maskRight
}

.maskDown {
  animation-name: maskDown
}

.maskLeft {
  animation-name: maskLeft
}

.grayOut {
  animation-name: grayOut
}

.dotPulse {
  animation-name: dotPulse;
  animation-iteration-count: infinite;
  animation-duration: 4s
}

.brightIn {
  animation-name: brightIn
}

.zoomInShorter {
  animation-name: zoomInShorter;
}

.slideZoomIn {
  animation-name: slideZoomIn
}

.fa-spin {
  animation-name: fa-spin;
  animation-delay: var(--fa-animation-delay, 0s);
  animation-direction: var(--fa-animation-direction, normal);
  animation-duration: var(--fa-animation-duration, 2s);
  animation-iteration-count: var(--fa-animation-iteration-count, infinite);
  animation-timing-function: var(--fa-animation-timing, linear);
}

.fa-pulse {
  animation-name: fa-spin;
  animation-direction: var(--fa-animation-direction, normal);
  animation-duration: var(--fa-animation-duration, 1s);
  animation-iteration-count: var(--fa-animation-iteration-count, infinite);
  animation-timing-function: var(--fa-animation-timing, steps(8));
}

@media (prefers-reduced-motion: reduce) {

  .fa-spin,
  .fa-pulse {
    animation-delay: -1ms;
    animation-duration: 1ms;
    animation-iteration-count: 1;
    transition-delay: 0s;
    transition-duration: 0s;
  }
}

@keyframes maskUp {
  from {
    transform: translate(0, 100%)
  }

  to {
    transform: translate(0, 0)
  }
}

@keyframes maskRight {
  from {
    transform: translate(-100%, 0)
  }

  to {
    transform: translate(0, 0)
  }
}

@keyframes maskDown {
  from {
    transform: translate(0, -100%)
  }

  to {
    transform: translate(0, 0)
  }
}

@keyframes maskLeft {
  from {
    transform: translate(100%, 0)
  }

  to {
    transform: translate(0, 0)
  }
}

@keyframes grayOut {
  from {
    opacity: 1;
    filter: grayscale(0);
  }

  15% {
    filter: grayscale(100%);
  }

  to {
    opacity: .0;
    filter: grayscale(100%);
  }
}

@keyframes dotPulse {
  from {
    opacity: 1;
    transform: scale(.2)
  }

  to {
    opacity: 0;
    transform: scale(1)
  }
}

@keyframes brightIn {
  0% {
    animation-timing-function: ease-in;
    filter: brightness(0%)
  }

  to {
    filter: brightness(100%)
  }
}

@-webkit-keyframes zoomInShorter {
  0% {
    -webkit-transform: scale3d(.8, .8, .8);
    opacity: 0;
    transform: scale3d(.8, .8, .8)
  }

  50% {
    opacity: 1
  }
}

@keyframes zoomInShorter {
  0% {
    -webkit-transform: scale3d(.8, .8, .8);
    opacity: 0;
    transform: scale3d(.8, .8, .8)
  }

  50% {
    opacity: 1
  }
}

@keyframes slideZoomIn {
  0% {
    transform: scale3d(1, 1, 1);
    opacity: 1;
  }

  100% {
    transform: scale3d(1.1, 1.1, 1);
    opacity: 1;
  }
}

@keyframes fa-spin {
  0% {
    transform: rotate(0deg);
  }

  100% {
    transform: rotate(360deg);
  }
}

/* Ken Burns To Right */
@keyframes kenBurnsToRight {
  from {
    transform: scale(1.2);
  }

  to {
    transform: scale(1);
  }
}

.kenBurnsToRight {
  -webkit-animation-name: kenBurnsToRight;
  animation-name: kenBurnsToRight;
  -webkit-animation-timing-function: linear;
  animation-timing-function: linear;
  transform-origin: right;
}

/* Ken Burns To Left */
@keyframes kenBurnsToLeft {
  from {
    transform: scale(1.2);
  }

  to {
    transform: scale(1);
  }
}

.kenBurnsToLeft {
  -webkit-animation-name: kenBurnsToLeft;
  animation-name: kenBurnsToLeft;
  -webkit-animation-timing-function: linear;
  animation-timing-function: linear;
  transform-origin: left;
}

/* Ken Burns To Left and Top */
.kenBurnsToLeftTop {
  -webkit-animation-name: kenBurnsToLeft;
  animation-name: kenBurnsToLeft;
  -webkit-animation-timing-function: linear;
  animation-timing-function: linear;
  transform-origin: left top;
}

/* Ken Burns To Right and Top */
.kenBurnsToRightTop {
  -webkit-animation-name: kenBurnsToRight;
  animation-name: kenBurnsToRight;
  -webkit-animation-timing-function: linear;
  animation-timing-function: linear;
  transform-origin: right top;
}

.particle-effect {
  position: absolute;
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
}

/* Snow Falling Effect */
.snowfall {
  background-image: url('../images/effects/s1.png'),
    url('../images/effects/s2.png'),
    url('../images/effects/s3.png');
  animation: snow 10s linear infinite;
  z-index: 1;
}

@keyframes snow {
  0% {
    background-position: 0px 0px, 0px 0px, 0px 0px;
  }

  50% {
    background-position: 500px 500px, 100px 300px, -200px 250px;
  }

  100% {
    background-position: 400px 800px, 300px 600px, -200px 400px;
  }
}

.effect-snow {
  background-image: url('../images/effects/s4.png'),
    url('../images/effects/s5.png');
  animation: snowsecond 20s linear infinite
}

@keyframes snowsecond {
  0% {
    background-position: 0px 0px, 0px 0px, 0px 0px
  }

  100% {
    background-position: 500px 1000px, 400px 400px, 300px 300px
  }
}

// Sparkle Effect
.sparkle {
  background-image: url('../images/effects/sparkle1.png'),
    url('../images/effects/sparkle2.png');
  animation: sparkle 60s linear infinite
}

@keyframes sparkle {
  0% {
    background-position: 0px 0px, 0px 0px, 0px 0px
  }

  100% {
    background-position: -500px -1000px, -400px -400px, 300px 300px
  }
}