.animating {
    visibility: visible;
}

.onFocus {
    opacity: 0;
    transform: translateX(0);
    transition: opacity 0.5s ease-in-out, transform 0.5s ease-in-out;
}

@keyframes fadeIn {
    from {
        opacity: 0;
    }

    to {
        opacity: 1;
    }
}

.anim--fadeIn {
    animation: fadeIn .5s ease-in;
}

@keyframes fadeInLeft {
    from {
        opacity: 0;
        transform: translateX(-100%);
    }

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

.anim--fadeInLeft {
    animation: fadeInLeft .5s ease-in;
}

@keyframes fadeInRight {
    from {
        opacity: 0;
        transform: translateX(100%);
    }

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

.anim--fadeInRight {
    animation: fadeInRight .5s ease-in;
}

@keyframes fadeOut {
    from {
        opacity: 1;
    }

    to {
        opacity: 0;
    }
}

.anim--fadeOut {
    animation: fadeOut .5s ease-out;
}

@keyframes fadeOutLeft {
    from {
        opacity: 1;
        transform: translateX(0);
    }

    to {
        opacity: 0;
        transform: translateX(-100%);
    }
}

.anim--fadeOutLeft {
    animation: fadeOutLeft .5s ease-out;
}

@keyframes fadeOutRight {
    from {
        opacity: 1;
        transform: translateX(0);
    }

    to {
        opacity: 0;
        transform: translateX(100%);
    }
}

.anim--fadeOutRight {
    animation: fadeOutRight .5s ease-out;
}

@keyframes bounceIn {
    from {
        opacity: 0;
        transform: scale(0.3);
    }

    50% {
        opacity: 1;
        transform: scale(1.05);
    }

    to {
        transform: scale(1);
    }
}

.anim--bounceIn {
    animation: bounceIn .5s ease-out;
}

@keyframes bounceInLeft {
    from {
        opacity: 0;
        transform: translateX(-300%);
    }

    50% {
        opacity: 1;
        transform: translateX(25%);
    }

    to {
        transform: translateX(0);
    }
}

.anim--bounceInLeft {
    animation: bounceInLeft .5s ease-out;
}

@keyframes bounceInRight {
    from {
        opacity: 0;
        transform: translateX(300%);
    }

    50% {
        opacity: 1;
        transform: translateX(-25%);
    }

    to {
        transform: translateX(0);
    }
}

.anim--bounceInRight {
    animation: bounceInRight .5s ease-out;
}

@keyframes bounceOut {
    20% {
        transform: scale(0.9);
    }

    50%,
    55% {
        opacity: 1;
        transform: scale(1.1);
    }

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

.anim--bounceOut {
    animation: bounceOut .5s ease-out;
}

@keyframes bounceOutLeft {
    20% {
        opacity: 1;
        transform: translateX(20%);
    }

    to {
        opacity: 0;
        transform: translateX(-200%);
    }
}

.anim--bounceOutLeft {
    animation: bounceOutLeft .5s ease-out;
}

@keyframes bounceOutRight {
    20% {
        opacity: 1;
        transform: translateX(-20%);
    }

    to {
        opacity: 0;
        transform: translateX(200%);
    }
}

.anim--bounceOutRight {
    animation: bounceOutRight .5s ease-out;
}

@keyframes swipeUp {
    from {
        opacity: 0;
        transform: translateY(100%);
    }

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

.anim--swipeUp {
    animation: swipeUp .2s ease-out;
}

@keyframes swipeDown {
    from {
        opacity: 0;
        transform: translateY(-100%);
    }

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

.anim--swipeDown {
    animation: swipeDown .2s ease-out;
}

@keyframes askFocus {
    0% {
        transform: translateY(0);
    }

    50% {
        transform: translateY(5px);
    }

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

.anim--askFocus {
    animation: askFocus 2s ease-in-out infinite;
}

@keyframes backGlow {
    0% {
        box-shadow: 0 40px 100px 15px var(--accent-yellow-bg-color-vivid);
    }

    50% {
        box-shadow: 0 60px 100px 0 var(--accent-yellow-bg-color-vivid);
    }

    100% {
        box-shadow: 0 40px 100px 15px var(--accent-yellow-bg-color-vivid);
    }
}

.anim--backGlow {
    animation: backGlow 2s ease-in-out infinite;
}

@keyframes backCardGlow {
    0% {
        box-shadow: var(--base-shadow), 0 40px 100px 15px var(--accent-yellow-bg-color-vivid);
    }

    50% {
        box-shadow: var(--base-shadow), 0 60px 100px 0 var(--accent-yellow-bg-color-vivid);
    }

    100% {
        box-shadow: var(--base-shadow), 0 40px 100px 15px var(--accent-yellow-bg-color-vivid);
    }
}

.anim--backCardGlow {
    animation: backCardGlow 2s ease-in-out infinite;
}


/* Remove all animations and transitions
for people that prefer not to see them */
@media (prefers-reduced-motion: reduce) {

    *,
    *::before,
    *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
        scroll-behavior: auto !important;
    }
}