/* ======================================================================
   MODERNIZED ENTRANCE / ATTENTION / HOVER ANIMATIONS
   ======================================================================
   Drop-in replacement for the original animate.css bundle used by both
   Elementor (elementor/assets/lib/animations/) and Mas Addons
   (mas-addons/assets/css/animate.css). Every class name and @keyframes
   name is IDENTICAL to the original file, so any animation already
   selected in Elementor's "Entrance Animation" dropdown, or any Mas
   Addons widget referencing these classes, keeps working exactly as
   configured — only the underlying motion quality changes.

   WHAT CHANGED, AND WHY:
   - Old-school stepped cubic-bezier "jQuery UI era" easing replaced with
     3 consistent, GSAP-style curves (defined once below as CSS variables).
   - Entrance animations (fadeIn*, zoomIn*, slideIn*) now travel a small,
     fixed distance (28-40px) instead of huge percentage-based throws —
     this is the single biggest visual upgrade, since it's what most
     widgets on the site actually use, and matches how GSAP/modern motion
     design typically handles "fade up on scroll" reveals.
   - bounceIn* family simplified from multi-stage oscillation to one
     clean, smooth overshoot — same idea, far less "cartoonish."
   - Several long-standing bugs in the original file were fixed along the
     way (zoomIn never explicitly returning to scale(1); several hover
     "wobble/buzz/bob/hang" keyframes ending on a stray 30% instead of
     100%, which caused them to snap rather than settle cleanly).
   - Attention-seekers (bounce, shake, wobble, tada, rubberBand, etc.)
     keep their recognizable character but with reduced amplitude and
     smoother curves — refined rather than removed.
   ====================================================================== */

:root {
    --ease-smooth: cubic-bezier(.16, 1, .3, 1);
    /* expo-out — premium, GSAP-like settle */
    --ease-soft-back: cubic-bezier(.34, 1.56, .64, 1);
    /* gentle single overshoot */
    --ease-in-out-smooth: cubic-bezier(.65, 0, .35, 1);
    /* smooth ease-in-out for loops/wobbles */
}

/* ---------------------------------------------------------------------
   Attention seekers
   --------------------------------------------------------------------- */

@keyframes bounce {

    from,
    20%,
    53%,
    80%,
    to {
        animation-timing-function: var(--ease-smooth);
        transform: translate3d(0, 0, 0)
    }

    40%,
    43% {
        animation-timing-function: var(--ease-soft-back);
        transform: translate3d(0, -24px, 0)
    }

    70% {
        animation-timing-function: var(--ease-soft-back);
        transform: translate3d(0, -12px, 0)
    }

    90% {
        transform: translate3d(0, -3px, 0)
    }
}

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

@keyframes flash {

    50%,
    from,
    to {
        opacity: 1
    }

    25%,
    75% {
        opacity: 0
    }
}

.flash {
    animation-name: flash;
    animation-timing-function: var(--ease-in-out-smooth)
}

@keyframes pulse {

    from,
    to {
        transform: scale3d(1, 1, 1);
        animation-timing-function: var(--ease-in-out-smooth)
    }

    50% {
        transform: scale3d(1.04, 1.04, 1.04);
        animation-timing-function: var(--ease-in-out-smooth)
    }
}

.pulse {
    animation-name: pulse
}

@keyframes rubberBand {

    from,
    to {
        transform: scale3d(1, 1, 1);
        animation-timing-function: var(--ease-smooth)
    }

    30% {
        transform: scale3d(1.2, .82, 1);
        animation-timing-function: var(--ease-soft-back)
    }

    40% {
        transform: scale3d(.86, 1.14, 1);
        animation-timing-function: var(--ease-soft-back)
    }

    50% {
        transform: scale3d(1.1, .92, 1);
        animation-timing-function: var(--ease-soft-back)
    }

    65% {
        transform: scale3d(.97, 1.03, 1);
        animation-timing-function: var(--ease-soft-back)
    }

    75% {
        transform: scale3d(1.03, .97, 1);
        animation-timing-function: var(--ease-soft-back)
    }
}

.rubberBand {
    animation-name: rubberBand
}

@keyframes shake {

    from,
    to {
        transform: translate3d(0, 0, 0);
        animation-timing-function: var(--ease-in-out-smooth)
    }

    10%,
    30%,
    50%,
    70%,
    90% {
        transform: translate3d(-6px, 0, 0);
        animation-timing-function: var(--ease-in-out-smooth)
    }

    20%,
    40%,
    60%,
    80% {
        transform: translate3d(6px, 0, 0);
        animation-timing-function: var(--ease-in-out-smooth)
    }
}

.shake {
    animation-name: shake
}

@keyframes headShake {
    0% {
        transform: translateX(0)
    }

    6.5% {
        transform: translateX(-5px) rotateY(-8deg)
    }

    18.5% {
        transform: translateX(4px) rotateY(6deg)
    }

    31.5% {
        transform: translateX(-2.5px) rotateY(-4deg)
    }

    43.5% {
        transform: translateX(2px) rotateY(2.5deg)
    }

    50% {
        transform: translateX(0)
    }
}

.headShake {
    animation-timing-function: var(--ease-in-out-smooth);
    animation-name: headShake
}

@keyframes swing {
    20% {
        transform: rotate3d(0, 0, 1, 12deg)
    }

    40% {
        transform: rotate3d(0, 0, 1, -8deg)
    }

    60% {
        transform: rotate3d(0, 0, 1, 4deg)
    }

    80% {
        transform: rotate3d(0, 0, 1, -4deg)
    }

    to {
        transform: rotate3d(0, 0, 1, 0deg)
    }
}

.swing {
    transform-origin: top center;
    animation-name: swing;
    animation-timing-function: var(--ease-in-out-smooth)
}

@keyframes tada {

    from,
    to {
        transform: scale3d(1, 1, 1)
    }

    10%,
    20% {
        transform: scale3d(.94, .94, .94) rotate3d(0, 0, 1, -2.5deg)
    }

    30%,
    50%,
    70%,
    90% {
        transform: scale3d(1.08, 1.08, 1.08) rotate3d(0, 0, 1, 2.5deg)
    }

    40%,
    60%,
    80% {
        transform: scale3d(1.08, 1.08, 1.08) rotate3d(0, 0, 1, -2.5deg)
    }
}

.tada {
    animation-name: tada;
    animation-timing-function: var(--ease-in-out-smooth)
}

@keyframes wobble {

    from,
    to {
        transform: none
    }

    15% {
        transform: translate3d(-20%, 0, 0) rotate3d(0, 0, 1, -4deg)
    }

    30% {
        transform: translate3d(16%, 0, 0) rotate3d(0, 0, 1, 2.5deg)
    }

    45% {
        transform: translate3d(-12%, 0, 0) rotate3d(0, 0, 1, -2.5deg)
    }

    60% {
        transform: translate3d(8%, 0, 0) rotate3d(0, 0, 1, 1.5deg)
    }

    75% {
        transform: translate3d(-4%, 0, 0) rotate3d(0, 0, 1, -1deg)
    }
}

.wobble {
    animation-name: wobble;
    animation-timing-function: var(--ease-in-out-smooth)
}

@keyframes jello {

    11.1%,
    from,
    to {
        transform: none
    }

    22.2% {
        transform: skewX(-10deg) skewY(-10deg)
    }

    33.3% {
        transform: skewX(5deg) skewY(5deg)
    }

    44.4% {
        transform: skewX(-2.5deg) skewY(-2.5deg)
    }

    55.5% {
        transform: skewX(1.25deg) skewY(1.25deg)
    }

    66.6% {
        transform: skewX(-.6deg) skewY(-.6deg)
    }

    77.7% {
        transform: skewX(.3deg) skewY(.3deg)
    }

    88.8% {
        transform: skewX(-.15deg) skewY(-.15deg)
    }
}

.jello {
    animation-name: jello;
    transform-origin: center;
    animation-timing-function: var(--ease-in-out-smooth)
}

/* ---------------------------------------------------------------------
   Bouncing entrances — simplified to one clean overshoot instead of
   multi-stage oscillation
   --------------------------------------------------------------------- */

@keyframes bounceIn {
    from {
        opacity: 0;
        transform: scale3d(.9, .9, .9);
        animation-timing-function: var(--ease-smooth)
    }

    60% {
        opacity: 1;
        transform: scale3d(1.03, 1.03, 1.03);
        animation-timing-function: var(--ease-soft-back)
    }

    to {
        opacity: 1;
        transform: scale3d(1, 1, 1)
    }
}

.bounceIn {
    animation-name: bounceIn
}

@keyframes bounceInDown {
    from {
        opacity: 0;
        transform: translate3d(0, -60px, 0);
        animation-timing-function: var(--ease-smooth)
    }

    60% {
        opacity: 1;
        transform: translate3d(0, 8px, 0);
        animation-timing-function: var(--ease-soft-back)
    }

    to {
        opacity: 1;
        transform: translate3d(0, 0, 0)
    }
}

.bounceInDown {
    animation-name: bounceInDown
}

@keyframes bounceInLeft {
    from {
        opacity: 0;
        transform: translate3d(-60px, 0, 0);
        animation-timing-function: var(--ease-smooth)
    }

    60% {
        opacity: 1;
        transform: translate3d(8px, 0, 0);
        animation-timing-function: var(--ease-soft-back)
    }

    to {
        opacity: 1;
        transform: translate3d(0, 0, 0)
    }
}

.bounceInLeft {
    animation-name: bounceInLeft
}

@keyframes bounceInRight {
    from {
        opacity: 0;
        transform: translate3d(60px, 0, 0);
        animation-timing-function: var(--ease-smooth)
    }

    60% {
        opacity: 1;
        transform: translate3d(-8px, 0, 0);
        animation-timing-function: var(--ease-soft-back)
    }

    to {
        opacity: 1;
        transform: translate3d(0, 0, 0)
    }
}

.bounceInRight {
    animation-name: bounceInRight
}

@keyframes bounceInUp {
    from {
        opacity: 0;
        transform: translate3d(0, 60px, 0);
        animation-timing-function: var(--ease-smooth)
    }

    60% {
        opacity: 1;
        transform: translate3d(0, -8px, 0);
        animation-timing-function: var(--ease-soft-back)
    }

    to {
        opacity: 1;
        transform: translate3d(0, 0, 0)
    }
}

.bounceInUp {
    animation-name: bounceInUp
}

/* ---------------------------------------------------------------------
   Fades — small fixed-distance travel (28-32px) instead of huge
   percentage-based throws. This is the highest-impact change since
   fadeIn* is almost always the most-used entrance animation on a site.
   --------------------------------------------------------------------- */

@keyframes fadeIn {
    from {
        opacity: 0
    }

    to {
        opacity: 1
    }
}

.fadeIn {
    animation-name: fadeIn;
    animation-timing-function: var(--ease-smooth)
}

@keyframes fadeInDown {
    from {
        opacity: 0;
        transform: translate3d(0, -32px, 0)
    }

    to {
        opacity: 1;
        transform: none
    }
}

.fadeInDown {
    animation-name: fadeInDown;
    animation-timing-function: var(--ease-smooth)
}

@keyframes fadeInLeft {
    from {
        opacity: 0;
        transform: translate3d(-32px, 0, 0)
    }

    to {
        opacity: 1;
        transform: none
    }
}

.fadeInLeft {
    animation-name: fadeInLeft;
    animation-timing-function: var(--ease-smooth)
}

@keyframes fadeInRight {
    from {
        opacity: 0;
        transform: translate3d(32px, 0, 0)
    }

    to {
        opacity: 1;
        transform: none
    }
}

.fadeInRight {
    animation-name: fadeInRight;
    animation-timing-function: var(--ease-smooth)
}

@keyframes fadeInUp {
    from {
        opacity: 0;
        transform: translate3d(0, 32px, 0)
    }

    to {
        opacity: 1;
        transform: none
    }
}

.fadeInUp {
    animation-name: fadeInUp;
    animation-timing-function: var(--ease-smooth)
}

@keyframes lightSpeedIn {
    from {
        transform: translate3d(24px, 0, 0) skewX(-20deg);
        opacity: 0
    }

    60% {
        transform: skewX(8deg);
        opacity: 1
    }

    80% {
        transform: skewX(-3deg);
        opacity: 1
    }

    to {
        transform: none;
        opacity: 1
    }
}

.lightSpeedIn {
    animation-name: lightSpeedIn;
    animation-timing-function: var(--ease-smooth)
}

@keyframes rotateIn {
    from {
        transform-origin: center;
        transform: rotate3d(0, 0, 1, -120deg);
        opacity: 0
    }

    to {
        transform-origin: center;
        transform: none;
        opacity: 1
    }
}

.rotateIn {
    animation-name: rotateIn;
    animation-timing-function: var(--ease-smooth)
}

@keyframes rotateInDownLeft {
    from {
        transform-origin: left bottom;
        transform: rotate3d(0, 0, 1, -35deg);
        opacity: 0
    }

    to {
        transform-origin: left bottom;
        transform: none;
        opacity: 1
    }
}

.rotateInDownLeft {
    animation-name: rotateInDownLeft;
    animation-timing-function: var(--ease-smooth)
}

@keyframes rotateInDownRight {
    from {
        transform-origin: right bottom;
        transform: rotate3d(0, 0, 1, 35deg);
        opacity: 0
    }

    to {
        transform-origin: right bottom;
        transform: none;
        opacity: 1
    }
}

.rotateInDownRight {
    animation-name: rotateInDownRight;
    animation-timing-function: var(--ease-smooth)
}

@keyframes rotateInUpLeft {
    from {
        transform-origin: left bottom;
        transform: rotate3d(0, 0, 1, 35deg);
        opacity: 0
    }

    to {
        transform-origin: left bottom;
        transform: none;
        opacity: 1
    }
}

.rotateInUpLeft {
    animation-name: rotateInUpLeft;
    animation-timing-function: var(--ease-smooth)
}

@keyframes rotateInUpRight {
    from {
        transform-origin: right bottom;
        transform: rotate3d(0, 0, 1, -60deg);
        opacity: 0
    }

    to {
        transform-origin: right bottom;
        transform: none;
        opacity: 1
    }
}

.rotateInUpRight {
    animation-name: rotateInUpRight;
    animation-timing-function: var(--ease-smooth)
}

@keyframes rollIn {
    from {
        opacity: 0;
        transform: translate3d(-24px, 0, 0) rotate3d(0, 0, 1, -80deg)
    }

    to {
        opacity: 1;
        transform: none
    }
}

.rollIn {
    animation-name: rollIn;
    animation-timing-function: var(--ease-smooth)
}

/* ---------------------------------------------------------------------
   Zooms — fixed to always resolve to a clean scale(1)/opacity 1 end
   state (the original never explicitly returned to scale 1)
   --------------------------------------------------------------------- */

@keyframes zoomIn {
    from {
        opacity: 0;
        transform: scale3d(.9, .9, .9)
    }

    to {
        opacity: 1;
        transform: scale3d(1, 1, 1)
    }
}

.zoomIn {
    animation-name: zoomIn;
    animation-timing-function: var(--ease-smooth)
}

@keyframes zoomInDown {
    from {
        opacity: 0;
        transform: scale3d(.9, .9, .9) translate3d(0, -40px, 0)
    }

    to {
        opacity: 1;
        transform: none
    }
}

.zoomInDown {
    animation-name: zoomInDown;
    animation-timing-function: var(--ease-smooth)
}

@keyframes zoomInLeft {
    from {
        opacity: 0;
        transform: scale3d(.9, .9, .9) translate3d(-40px, 0, 0)
    }

    to {
        opacity: 1;
        transform: none
    }
}

.zoomInLeft {
    animation-name: zoomInLeft;
    animation-timing-function: var(--ease-smooth)
}

@keyframes zoomInRight {
    from {
        opacity: 0;
        transform: scale3d(.9, .9, .9) translate3d(40px, 0, 0)
    }

    to {
        opacity: 1;
        transform: none
    }
}

.zoomInRight {
    animation-name: zoomInRight;
    animation-timing-function: var(--ease-smooth)
}

@keyframes zoomInUp {
    from {
        opacity: 0;
        transform: scale3d(.9, .9, .9) translate3d(0, 40px, 0)
    }

    to {
        opacity: 1;
        transform: none
    }
}

.zoomInUp {
    animation-name: zoomInUp;
    animation-timing-function: var(--ease-smooth)
}

/* ---------------------------------------------------------------------
   Slides
   --------------------------------------------------------------------- */

@keyframes slideInDown {
    from {
        transform: translate3d(0, -32px, 0);
        visibility: visible
    }

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

.slideInDown {
    animation-name: slideInDown;
    animation-timing-function: var(--ease-smooth)
}

@keyframes slideInLeft {
    from {
        transform: translate3d(-32px, 0, 0);
        visibility: visible
    }

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

.slideInLeft {
    animation-name: slideInLeft;
    animation-timing-function: var(--ease-smooth)
}

@keyframes slideInRight {
    from {
        transform: translate3d(32px, 0, 0);
        visibility: visible
    }

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

.slideInRight {
    animation-name: slideInRight;
    animation-timing-function: var(--ease-smooth)
}

@keyframes slideInUp {
    from {
        transform: translate3d(0, 32px, 0);
        visibility: visible
    }

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

.slideInUp {
    animation-name: slideInUp;
    animation-timing-function: var(--ease-smooth)
}

/* ---------------------------------------------------------------------
   Elementor hover-interaction effects (button/image "Hover Animation"
   dropdown). Amplitudes mostly preserved; easing modernized; several
   keyframes fixed where the original ended on a stray "30%" instead of
   "100%", causing an abrupt snap instead of a clean settle.
   --------------------------------------------------------------------- */

.elementor-animation-grow {
    transition-duration: .3s;
    transition-property: transform;
    transition-timing-function: var(--ease-smooth)
}

.elementor-animation-grow:active,
.elementor-animation-grow:focus,
.elementor-animation-grow:hover {
    transform: scale(1.08)
}

.elementor-animation-shrink {
    transition-duration: .3s;
    transition-property: transform;
    transition-timing-function: var(--ease-smooth)
}

.elementor-animation-shrink:active,
.elementor-animation-shrink:focus,
.elementor-animation-shrink:hover {
    transform: scale(0.94)
}

@keyframes elementor-animation-pulse {
    25% {
        transform: scale(1.08)
    }

    75% {
        transform: scale(0.94)
    }
}

.elementor-animation-pulse:active,
.elementor-animation-pulse:focus,
.elementor-animation-pulse:hover {
    animation-name: elementor-animation-pulse;
    animation-duration: 1s;
    animation-timing-function: var(--ease-in-out-smooth);
    animation-iteration-count: infinite
}

@keyframes elementor-animation-pulse-grow {
    to {
        transform: scale(1.08)
    }
}

.elementor-animation-pulse-grow:active,
.elementor-animation-pulse-grow:focus,
.elementor-animation-pulse-grow:hover {
    animation-name: elementor-animation-pulse-grow;
    animation-duration: .35s;
    animation-timing-function: var(--ease-in-out-smooth);
    animation-iteration-count: infinite;
    animation-direction: alternate
}

@keyframes elementor-animation-pulse-shrink {
    to {
        transform: scale(0.94)
    }
}

.elementor-animation-pulse-shrink:active,
.elementor-animation-pulse-shrink:focus,
.elementor-animation-pulse-shrink:hover {
    animation-name: elementor-animation-pulse-shrink;
    animation-duration: .35s;
    animation-timing-function: var(--ease-in-out-smooth);
    animation-iteration-count: infinite;
    animation-direction: alternate
}

@keyframes elementor-animation-push {
    30% {
        transform: scale(1)
    }

    50% {
        transform: scale(0.86)
    }

    100% {
        transform: scale(1)
    }
}

.elementor-animation-push:active,
.elementor-animation-push:focus,
.elementor-animation-push:hover {
    animation-name: elementor-animation-push;
    animation-duration: .35s;
    animation-timing-function: var(--ease-smooth);
    animation-iteration-count: 1
}

@keyframes elementor-animation-pop {
    50% {
        transform: scale(1.15)
    }
}

.elementor-animation-pop:active,
.elementor-animation-pop:focus,
.elementor-animation-pop:hover {
    animation-name: elementor-animation-pop;
    animation-duration: .3s;
    animation-timing-function: var(--ease-soft-back);
    animation-iteration-count: 1
}

.elementor-animation-bounce-in {
    transition-duration: .4s
}

.elementor-animation-bounce-in:active,
.elementor-animation-bounce-in:focus,
.elementor-animation-bounce-in:hover {
    transform: scale(1.15);
    transition-timing-function: var(--ease-soft-back)
}

.elementor-animation-bounce-out {
    transition-duration: .4s
}

.elementor-animation-bounce-out:active,
.elementor-animation-bounce-out:focus,
.elementor-animation-bounce-out:hover {
    transform: scale(0.88);
    transition-timing-function: var(--ease-soft-back)
}

.elementor-animation-rotate {
    transition-duration: .3s;
    transition-property: transform;
    transition-timing-function: var(--ease-smooth)
}

.elementor-animation-rotate:active,
.elementor-animation-rotate:focus,
.elementor-animation-rotate:hover {
    transform: rotate(4deg)
}

.elementor-animation-grow-rotate {
    transition-duration: .3s;
    transition-property: transform;
    transition-timing-function: var(--ease-smooth)
}

.elementor-animation-grow-rotate:active,
.elementor-animation-grow-rotate:focus,
.elementor-animation-grow-rotate:hover {
    transform: scale(1.08) rotate(4deg)
}

.elementor-animation-float {
    transition-duration: .3s;
    transition-property: transform;
    transition-timing-function: var(--ease-smooth)
}

.elementor-animation-float:active,
.elementor-animation-float:focus,
.elementor-animation-float:hover {
    transform: translateY(-8px)
}

.elementor-animation-sink {
    transition-duration: .3s;
    transition-property: transform;
    transition-timing-function: var(--ease-smooth)
}

.elementor-animation-sink:active,
.elementor-animation-sink:focus,
.elementor-animation-sink:hover {
    transform: translateY(8px)
}

@keyframes elementor-animation-bob {
    0% {
        transform: translateY(-8px)
    }

    50% {
        transform: translateY(-4px)
    }

    100% {
        transform: translateY(-8px)
    }
}

@keyframes elementor-animation-bob-float {
    100% {
        transform: translateY(-8px)
    }
}

.elementor-animation-bob:active,
.elementor-animation-bob:focus,
.elementor-animation-bob:hover {
    animation-name: elementor-animation-bob-float, elementor-animation-bob;
    animation-duration: .3s, 1.5s;
    animation-delay: 0s, .3s;
    animation-timing-function: var(--ease-smooth), var(--ease-in-out-smooth);
    animation-iteration-count: 1, infinite;
    animation-fill-mode: forwards;
    animation-direction: normal, alternate
}

@keyframes elementor-animation-hang {
    0% {
        transform: translateY(8px)
    }

    50% {
        transform: translateY(4px)
    }

    100% {
        transform: translateY(8px)
    }
}

@keyframes elementor-animation-hang-sink {
    100% {
        transform: translateY(8px)
    }
}

.elementor-animation-hang:active,
.elementor-animation-hang:focus,
.elementor-animation-hang:hover {
    animation-name: elementor-animation-hang-sink, elementor-animation-hang;
    animation-duration: .3s, 1.5s;
    animation-delay: 0s, .3s;
    animation-timing-function: var(--ease-smooth), var(--ease-in-out-smooth);
    animation-iteration-count: 1, infinite;
    animation-fill-mode: forwards;
    animation-direction: normal, alternate
}

.elementor-animation-skew {
    transition-duration: .3s;
    transition-property: transform;
    transition-timing-function: var(--ease-smooth)
}

.elementor-animation-skew:active,
.elementor-animation-skew:focus,
.elementor-animation-skew:hover {
    transform: skew(-8deg)
}

.elementor-animation-skew-forward {
    transition-duration: .3s;
    transition-property: transform;
    transition-timing-function: var(--ease-smooth);
    transform-origin: 0 30%
}

.elementor-animation-skew-forward:active,
.elementor-animation-skew-forward:focus,
.elementor-animation-skew-forward:hover {
    transform: skew(-8deg)
}

.elementor-animation-skew-backward {
    transition-duration: .3s;
    transition-property: transform;
    transition-timing-function: var(--ease-smooth);
    transform-origin: 0 30%
}

.elementor-animation-skew-backward:active,
.elementor-animation-skew-backward:focus,
.elementor-animation-skew-backward:hover {
    transform: skew(8deg)
}

@keyframes elementor-animation-wobble-vertical {
    16.65% {
        transform: translateY(8px)
    }

    33.3% {
        transform: translateY(-6px)
    }

    49.95% {
        transform: translateY(4px)
    }

    66.6% {
        transform: translateY(-2px)
    }

    83.25% {
        transform: translateY(1px)
    }

    100% {
        transform: translateY(0)
    }
}

.elementor-animation-wobble-vertical:active,
.elementor-animation-wobble-vertical:focus,
.elementor-animation-wobble-vertical:hover {
    animation-name: elementor-animation-wobble-vertical;
    animation-duration: .9s;
    animation-timing-function: var(--ease-in-out-smooth);
    animation-iteration-count: 1
}

@keyframes elementor-animation-wobble-horizontal {
    16.65% {
        transform: translateX(8px)
    }

    33.3% {
        transform: translateX(-6px)
    }

    49.95% {
        transform: translateX(4px)
    }

    66.6% {
        transform: translateX(-2px)
    }

    83.25% {
        transform: translateX(1px)
    }

    100% {
        transform: translateX(0)
    }
}

.elementor-animation-wobble-horizontal:active,
.elementor-animation-wobble-horizontal:focus,
.elementor-animation-wobble-horizontal:hover {
    animation-name: elementor-animation-wobble-horizontal;
    animation-duration: .9s;
    animation-timing-function: var(--ease-in-out-smooth);
    animation-iteration-count: 1
}

@keyframes elementor-animation-wobble-to-bottom-right {
    16.65% {
        transform: translate(8px, 8px)
    }

    33.3% {
        transform: translate(-6px, -6px)
    }

    49.95% {
        transform: translate(4px, 4px)
    }

    66.6% {
        transform: translate(-2px, -2px)
    }

    83.25% {
        transform: translate(1px, 1px)
    }

    100% {
        transform: translate(0, 0)
    }
}

.elementor-animation-wobble-to-bottom-right:active,
.elementor-animation-wobble-to-bottom-right:focus,
.elementor-animation-wobble-to-bottom-right:hover {
    animation-name: elementor-animation-wobble-to-bottom-right;
    animation-duration: .9s;
    animation-timing-function: var(--ease-in-out-smooth);
    animation-iteration-count: 1
}

@keyframes elementor-animation-wobble-to-top-right {
    16.65% {
        transform: translate(8px, -8px)
    }

    33.3% {
        transform: translate(-6px, 6px)
    }

    49.95% {
        transform: translate(4px, -4px)
    }

    66.6% {
        transform: translate(-2px, 2px)
    }

    83.25% {
        transform: translate(1px, -1px)
    }

    100% {
        transform: translate(0, 0)
    }
}

.elementor-animation-wobble-to-top-right:active,
.elementor-animation-wobble-to-top-right:focus,
.elementor-animation-wobble-to-top-right:hover {
    animation-name: elementor-animation-wobble-to-top-right;
    animation-duration: .9s;
    animation-timing-function: var(--ease-in-out-smooth);
    animation-iteration-count: 1
}

@keyframes elementor-animation-wobble-top {
    16.65% {
        transform: skew(-10deg)
    }

    33.3% {
        transform: skew(8deg)
    }

    49.95% {
        transform: skew(-5deg)
    }

    66.6% {
        transform: skew(3deg)
    }

    83.25% {
        transform: skew(-1.5deg)
    }

    100% {
        transform: skew(0)
    }
}

.elementor-animation-wobble-top {
    transform-origin: 0 30%
}

.elementor-animation-wobble-top:active,
.elementor-animation-wobble-top:focus,
.elementor-animation-wobble-top:hover {
    animation-name: elementor-animation-wobble-top;
    animation-duration: .9s;
    animation-timing-function: var(--ease-in-out-smooth);
    animation-iteration-count: 1
}

@keyframes elementor-animation-wobble-bottom {
    16.65% {
        transform: skew(-10deg)
    }

    33.3% {
        transform: skew(8deg)
    }

    49.95% {
        transform: skew(-5deg)
    }

    66.6% {
        transform: skew(3deg)
    }

    83.25% {
        transform: skew(-1.5deg)
    }

    100% {
        transform: skew(0)
    }
}

.elementor-animation-wobble-bottom {
    transform-origin: 30% 0
}

.elementor-animation-wobble-bottom:active,
.elementor-animation-wobble-bottom:focus,
.elementor-animation-wobble-bottom:hover {
    animation-name: elementor-animation-wobble-bottom;
    animation-duration: .9s;
    animation-timing-function: var(--ease-in-out-smooth);
    animation-iteration-count: 1
}

@keyframes elementor-animation-wobble-skew {
    16.65% {
        transform: skew(-10deg)
    }

    33.3% {
        transform: skew(8deg)
    }

    49.95% {
        transform: skew(-5deg)
    }

    66.6% {
        transform: skew(3deg)
    }

    83.25% {
        transform: skew(-1.5deg)
    }

    100% {
        transform: skew(0)
    }
}

.elementor-animation-wobble-skew:active,
.elementor-animation-wobble-skew:focus,
.elementor-animation-wobble-skew:hover {
    animation-name: elementor-animation-wobble-skew;
    animation-duration: .9s;
    animation-timing-function: var(--ease-in-out-smooth);
    animation-iteration-count: 1
}

@keyframes elementor-animation-buzz {

    0%,
    100% {
        transform: translateX(-3px) rotate(-2deg)
    }

    50% {
        transform: translateX(3px) rotate(2deg)
    }
}

.elementor-animation-buzz:active,
.elementor-animation-buzz:focus,
.elementor-animation-buzz:hover {
    animation-name: elementor-animation-buzz;
    animation-duration: .15s;
    animation-timing-function: var(--ease-in-out-smooth);
    animation-iteration-count: infinite
}

@keyframes elementor-animation-buzz-out {
    10% {
        transform: translateX(3px) rotate(2deg)
    }

    20% {
        transform: translateX(-3px) rotate(-2deg)
    }

    30% {
        transform: translateX(3px) rotate(2deg)
    }

    40% {
        transform: translateX(-3px) rotate(-2deg)
    }

    50% {
        transform: translateX(2px) rotate(1deg)
    }

    60% {
        transform: translateX(-2px) rotate(-1deg)
    }

    70% {
        transform: translateX(2px) rotate(1deg)
    }

    80% {
        transform: translateX(-2px) rotate(-1deg)
    }

    90% {
        transform: translateX(1px) rotate(0)
    }

    100% {
        transform: translateX(0) rotate(0)
    }
}

.elementor-animation-buzz-out:active,
.elementor-animation-buzz-out:focus,
.elementor-animation-buzz-out:hover {
    animation-name: elementor-animation-buzz-out;
    animation-duration: .75s;
    animation-timing-function: var(--ease-in-out-smooth);
    animation-iteration-count: 1
}
