/**
 * Module: Perspective
 * Filename: ca__Perspective.css
 */

.perspectiveToTop {
  animation-name: perspectiveToTop;
  transform: perspective(500px);
  backface-visibility: var(--cssanimation-backface-visibility);
  transform-style: var(--cssanimation-transform-style);
  will-change: var(--cssanimation-will-change);
}

@keyframes perspectiveToTop {
  0% {
    transform: perspective(500px) rotateX(0deg) translateY(0) translateZ(0);
    opacity: 1;
  }

  50% {
    opacity: 1;
  }

  100% {
    transform: perspective(500px) rotateX(90deg) translateY(-100px) translateZ(-150px);
    opacity: 0;
  }
}

.perspectiveToBottom {
  animation-name: perspectiveToBottom;
  transform: perspective(500px);
  backface-visibility: var(--cssanimation-backface-visibility);
  transform-style: var(--cssanimation-transform-style);
  will-change: var(--cssanimation-will-change);
}

@keyframes perspectiveToBottom {
  0% {
    transform: perspective(500px) rotateX(0deg) translateY(0) translateZ(0);
    opacity: 1;
  }

  50% {
    opacity: 1;
  }

  100% {
    transform: perspective(500px) rotateX(-90deg) translateY(100px) translateZ(-150px);
    opacity: 0;
  }
}

.bounceInFromBottom {
  animation-name: bounceInFromBottom;
  animation-timing-function: cubic-bezier(0.25, 0.46, 0.45, 0.94); /* Can be customized for different bounce feels */
}

@keyframes bounceInFromBottom {
  0% {
    opacity: 0;
    transform: translateY(100%); /* Starts far below */
  }

  60% {
    opacity: 1;
    transform: translateY(-20%); /* Bounces up higher than final position */
  }

  80% {
    transform: translateY(5%); /* Bounces down slightly */
  }

  100% {
    transform: translateY(0); /* Settles at final position */
    opacity: 1;
  }
}
