.cssanimation {
  animation-duration: var(--cssanimation-duration, 1s);
  animation-fill-mode: var(--cssanimation-fill-mode, both);
}

.cssanimation span {
  display: var(--cssanimation-display, inline-block);
}

.infinite {
  animation-iteration-count: var(--cssanimation-infinite, infinite) !important;
}

@media (prefers-reduced-motion: reduce) {
  .cssanimation,
  .cssanimation span {
    animation: none !important;
    transition: none !important;
  }
}


:root {
  --cssanimation-duration: 1s;
  --cssanimation-fill-mode: both;
  --cssanimation-infinite: infinite;
  --cssanimation-backface-visibility: hidden;
  --cssanimation-transform-style: preserve-3d;
  --cssanimation-will-change: transform, opacity;
  --cssanimation-display: inline-block;
  --move-distance: -800px;
}


/**
 * Module: Swing
 * Filename: ca_Swing.ca__fx-css
 */

.ca__fx-swing {
  animation-name: swing;
  animation-timing-function: ease-in-out;
  transform-origin: top center;
}

@keyframes swing {
  0% {
    transform: rotate(0deg);
  }

  20% {
    transform: rotate(15deg);
  }

  40% {
    transform: rotate(-10deg);
  }

  60% {
    transform: rotate(5deg);
  }

  80% {
    transform: rotate(-3deg);
  }

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

.ca__fx-swingIn {
  animation-name: swingIn;
  animation-timing-function: ease-out;
  transform-origin: top center;
}

@keyframes swingIn {
  0% {
    transform: rotate(45deg);
    opacity: 0;
  }

  40% {
    transform: rotate(-20deg);
    opacity: 1;
  }

  60% {
    transform: rotate(10deg);
  }

  80% {
    transform: rotate(-5deg);
  }

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

.ca__fx-swingOut {
  animation-name: swingOut;
  animation-timing-function: ease-in;
  transform-origin: top center;
}

@keyframes swingOut {
  0% {
    transform: rotate(0deg);
  }

  30% {
    transform: rotate(10deg);
  }

  60% {
    transform: rotate(-30deg);
  }

  100% {
    transform: rotate(-55deg);
    opacity: 0;
  }
}

.ca__fx-swingUp {
  animation-name: swingUp;
  animation-duration: 1s;
  animation-fill-mode: both;
  transform-origin: bottom center;
}

@keyframes swingUp {
  0% {
    transform: translateY(100%) rotateX(45deg);
    opacity: 0;
  }

  50% {
    transform: translateY(-10%) rotateX(-15deg);
    opacity: 1;
  }

  100% {
    transform: translateY(0%) rotateX(0deg);
  }
}

.ca__fx-swingZoom {
  animation-name: swingZoom;
  transform-origin: center;
}

@keyframes swingZoom {
  0% {
    transform: scale(0.ca__fx-8) rotate(-10deg);
    opacity: 0;
  }

  30% {
    transform: scale(1.ca__fx-05) rotate(15deg);
    opacity: 1;
  }

  60% {
    transform: scale(1) rotate(-5deg);
  }

  100% {
    transform: scale(1) rotate(0deg);
  }
}

.ca__fx-swingPop {
  animation-name: swingPop;
  transform-origin: center bottom;
}

@keyframes swingPop {
  0% {
    transform: scale(0.ca__fx-5) rotate(-20deg);
    opacity: 0;
  }

  60% {
    transform: scale(1.ca__fx-1) rotate(10deg);
    opacity: 1;
  }

  100% {
    transform: scale(1) rotate(0deg);
  }
}

.ca__fx-swingSkew {
  animation-name: swingSkew;
  transform-origin: top left;
}

@keyframes swingSkew {
  0% {
    transform: skewX(0deg);
  }

  30% {
    transform: skewX(15deg);
  }

  60% {
    transform: skewX(-10deg);
  }

  100% {
    transform: skewX(0deg);
  }
}

.ca__fx-swingInFromRight {
  animation-name: swingInFromRight;
  transform-origin: bottom center;
}

@keyframes swingInFromRight {
  from {
    transform: rotate(45deg);
    opacity: 0;
  }

  to {
    transform: rotate(0deg);
    opacity: 1;
  }
}

.ca__fx-swingInFromLeft {
  animation-name: swingInFromLeft;
  transform-origin: bottom center;
}

@keyframes swingInFromLeft {
  from {
    transform: rotate(-45deg);
    opacity: 0;
  }

  to {
    transform: rotate(0deg);
    opacity: 1;
  }
}

.ca__fx-swingInFromTop {
  animation-name: swingInFromTop;
  transform-origin: top center;
}

@keyframes swingInFromTop {
  from {
    transform: rotateX(90deg);
    transform-origin: top center;
    opacity: 0;
  }

  to {
    transform: rotateX(0deg);
    transform-origin: top center;
    opacity: 1;
  }
}

.ca__fx-swingInFromBottom {
  animation-name: swingInFromBottom;
  transform-origin: bottom center;
}

@keyframes swingInFromBottom {
  from {
    transform: rotateX(-90deg);
    transform-origin: bottom center;
    opacity: 0;
  }

  to {
    transform: rotateX(0deg);
    transform-origin: bottom center;
    opacity: 1;
  }
}

.ca__fx-swingOutToRight {
  animation-name: swingOutToRight;
  transform-origin: bottom center;
}

@keyframes swingOutToRight {
  from {
    transform: rotate(0deg);
    opacity: 1;
  }

  to {
    transform: rotate(45deg);
    opacity: 0;
  }
}

.ca__fx-swingOutToLeft {
  animation-name: swingOutToLeft;
  transform-origin: bottom center;
}

@keyframes swingOutToLeft {
  from {
    transform: rotate(0deg);
    opacity: 1;
  }

  to {
    transform: rotate(-45deg);
    opacity: 0;
  }
}

.ca__fx-swingOutToTop {
  animation-name: swingOutToTop;
  transform-origin: top center;
  transform-style: preserve-3d;
  perspective: 1000px;
  will-change: transform;
}

@keyframes swingOutToTop {
  from {
    transform: rotateX(0deg);
    transform-origin: top center;
    opacity: 1;
  }

  to {
    transform: rotateX(90deg);
    transform-origin: top center;
    opacity: 0;
  }
}

.ca__fx-swingOutToBottom {
  animation-name: swingOutToBottom;
  transform-origin: bottom center;
  transform-style: preserve-3d;
  perspective: 1000px;
  will-change: transform;
}

@keyframes swingOutToBottom {
  from {
    transform: rotateX(0deg);
    transform-origin: bottom center;
    opacity: 1;
  }

  to {
    transform: rotateX(-90deg);
    opacity: 0;
  }
}

.ca__fx-swingInFromRight {
  animation-name: swingInFromRight;
  transform-origin: bottom;
}

@keyframes swingInFromRight {
  40% {
    transform: rotate(45deg);
  }

  100% {
    transform: rotate(0deg);
    animation-timing-function: cubic-bezier(0, 0.ca__fx-9, 0.ca__fx-7, 1.ca__fx-45);
  }
}

.ca__fx-swingInFromLeft {
  animation-name: swingInFromLeft;
  transform-origin: bottom;
}

@keyframes swingInFromLeft {
  40% {
    transform: rotate(-45deg);
  }

  100% {
    transform: rotate(0deg);
    animation-timing-function: cubic-bezier(0, 0.ca__fx-9, 0.ca__fx-7, 1.ca__fx-45);
  }
}

.ca__fx-swingDrop {
  animation-name: swingDrop;
  transform-origin: top center;
}

@keyframes swingDrop {
  0% {
    transform: translateY(-100%) rotate(20deg);
    opacity: 0;
  }

  40% {
    transform: translateY(10%) rotate(-15deg);
    opacity: 1;
  }

  70% {
    transform: translateY(0%) rotate(5deg);
  }

  100% {
    transform: translateY(0%) rotate(0deg);
  }
}

.ca__fx-swingDropSoft {
  animation-name: swingDropSoft;
  transform-origin: top center;
}

@keyframes swingDropSoft {
  0% {
    transform: translateY(-100%) rotate(15deg);
    opacity: 0;
  }

  50% {
    transform: translateY(5%) rotate(-10deg);
    opacity: 1;
  }

  80% {
    transform: translateY(-2%) rotate(5deg);
  }

  100% {
    transform: translateY(0%) rotate(0deg);
  }
}

.ca__fx-swingDropHard {
  animation-name: swingDropHard;
  transform-origin: top center;
}

@keyframes swingDropHard {
  0% {
    transform: translateY(-120%) rotate(35deg);
    opacity: 0;
  }

  40% {
    transform: translateY(20%) rotate(-25deg);
    opacity: 1;
  }

  70% {
    transform: translateY(0%) rotate(10deg);
  }

  100% {
    transform: translateY(0%) rotate(0deg);
  }
}

.ca__fx-swingDropBounce {
  animation-name: swingDropBounce;
  transform-origin: top center;
}

@keyframes swingDropBounce {
  0% {
    transform: translateY(-100%) rotate(15deg);
    opacity: 0;
  }

  50% {
    transform: translateY(10%) rotate(-10deg);
    opacity: 1;
  }

  70% {
    transform: translateY(-5%) rotate(5deg);
  }

  85% {
    transform: translateY(3%) rotate(-2deg);
  }

  100% {
    transform: translateY(0%) rotate(0deg);
  }
}

.ca__fx-swingDropTwist {
  animation-name: swingDropTwist;
  transform-origin: top center;
}

@keyframes swingDropTwist {
  0% {
    transform: translateY(-100%) rotate(0deg);
    opacity: 0;
  }

  25% {
    transform: translateY(30%) rotate(25deg);
    opacity: 1;
  }

  50% {
    transform: translateY(10%) rotate(-20deg);
  }

  75% {
    transform: translateY(5%) rotate(10deg);
  }

  100% {
    transform: translateY(0%) rotate(0deg);
  }
}

.ca__fx-swingDropElastic {
  animation-name: swingDropElastic;
  animation-timing-function: cubic-bezier(0.ca__fx-25, 1.ca__fx-5, 0.ca__fx-5, 1);
  transform-origin: top center;
}

@keyframes swingDropElastic {
  0% {
    transform: translateY(-120%) rotate(25deg);
    opacity: 0;
  }

  30% {
    transform: translateY(15%) rotate(-20deg);
    opacity: 1;
  }

  55% {
    transform: translateY(-8%) rotate(10deg);
  }

  75% {
    transform: translateY(4%) rotate(-5deg);
  }

  100% {
    transform: translateY(0%) rotate(0deg);
  }
}

.ca__fx-swingDropChain {
  animation-name: swingDropChain;
  transform-origin: top center;
}

@keyframes swingDropChain {
  0% {
    transform: translateY(-100%) rotate(35deg);
    opacity: 0;
  }

  30% {
    transform: translateY(5%) rotate(-25deg);
    opacity: 1;
  }

  50% {
    transform: rotate(15deg);
  }

  70% {
    transform: rotate(-8deg);
  }

  90% {
    transform: rotate(4deg);
  }

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

.ca__fx-swingDropHover {
  animation-name: swingDropHover;
  transform-origin: top center;
}

@keyframes swingDropHover {
  0% {
    transform: translateY(-80%) rotate(20deg);
    opacity: 0;
  }

  60% {
    transform: translateY(0%) rotate(-10deg);
    opacity: 1;
  }

  80% {
    transform: translateY(-3%) rotate(5deg);
  }

  100% {
    transform: translateY(0%) rotate(0deg);
  }
}

.ca__fx-swingDropKite {
  animation-name: swingDropKite;
  transform-origin: top right;
}

@keyframes swingDropKite {
  0% {
    transform: translate(-30%, -100%) rotate(20deg);
    opacity: 0;
  }

  40% {
    transform: translate(10%, 20%) rotate(-15deg);
    opacity: 1;
  }

  70% {
    transform: translate(-5%, -5%) rotate(5deg);
  }

  100% {
    transform: translate(0%, 0%) rotate(0deg);
  }
}

.ca__fx-swingDropSnap {
  animation-name: swingDropSnap;
  animation-timing-function: cubic-bezier(0.ca__fx-25, 0.ca__fx-85, 0.ca__fx-5, 1.ca__fx-25);
  transform-origin: top center;
}

@keyframes swingDropSnap {
  0% {
    transform: translateY(-90%) rotate(10deg);
    opacity: 0;
  }

  60% {
    transform: translateY(5%) rotate(-5deg);
    opacity: 1;
  }

  100% {
    transform: translateY(0%) rotate(0deg);
  }
}

.ca__fx-swingDropMagnet {
  animation-name: swingDropMagnet;
  transform-origin: top center;
}

@keyframes swingDropMagnet {
  0% {
    transform: translateY(-120%) rotate(15deg);
    opacity: 0;
  }

  50% {
    transform: translateY(10%) rotate(-8deg);
    opacity: 1;
  }

  75% {
    transform: translateY(-4%) rotate(4deg);
  }

  90% {
    transform: translateY(1%) rotate(-2deg);
  }

  100% {
    transform: translateY(0%) rotate(0deg);
  }
}
