/* Modern Reveal Module Styles */
.flateffects-reveal-text {
    --fe-duration: 1.5s;
    --fe-color: inherit;
    --fe-bg-color: transparent;
    --fe-delay: 0s;

    position: relative;
    display: block;
    width: 100%;
    overflow: hidden;
    opacity: 0;
    transition: opacity 0.1s;
    background-color: var(--fe-bg-color);
}

.flateffects-reveal-text.is-visible {
    opacity: 1;
}

.flateffects-reveal-text .fe-content {
    color: var(--fe-color);
    position: relative;
    z-index: 5;
}

/* Fade In */
.flateffects-reveal-text.fade-in {
    transition: opacity var(--fe-duration) ease-out;
}

/* Slide Up */
.flateffects-reveal-text.slide-up .fe-content {
    transform: translateY(100%);
    transition: transform var(--fe-duration) cubic-bezier(0.25, 1, 0.5, 1);
}

.flateffects-reveal-text.slide-up.is-visible .fe-content {
    transform: translateY(0);
}

/* Reveal Box */
.flateffects-reveal-text.reveal-box .fe-reveal-overlay {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: var(--fe-box-color, var(--fe-color, currentColor));
    transform: scaleX(0);
    transform-origin: left;
    z-index: 10;
}

.flateffects-reveal-text.reveal-box.is-visible .fe-reveal-overlay {
    animation: fe-reveal-box var(--fe-duration) cubic-bezier(0.77, 0, 0.175, 1) forwards;
}

.flateffects-reveal-text.reveal-box .fe-content {
    opacity: 0;
}

.flateffects-reveal-text.reveal-box.is-visible .fe-content {
    animation: fe-fade-in 0.1s linear forwards;
    animation-delay: calc(var(--fe-duration) * 0.5);
}

/* Sunrise */
.flateffects-reveal-text.sunrise .fe-content {
    transform: translateY(100%);
    transition: transform var(--fe-duration) cubic-bezier(0.23, 1, 0.32, 1);
}

.flateffects-reveal-text.sunrise.is-visible .fe-content {
    transform: translateY(0);
}

/* Sunset */
.flateffects-reveal-text.sunset .fe-content {
    transform: translateY(-100%);
    transition: transform var(--fe-duration) cubic-bezier(0.23, 1, 0.32, 1);
}

.flateffects-reveal-text.sunset.is-visible .fe-content {
    transform: translateY(0);
}

/* Word Flight */
.flateffects-reveal-text.word-flight .fe-word {
    display: inline-block;
    opacity: 0;
    transform: translateY(20px);
    transition: transform 0.5s ease-out, opacity 0.5s ease-out;
}

.flateffects-reveal-text.word-flight.is-visible .fe-word {
    opacity: 1;
    transform: translateY(0);
}

@keyframes fe-reveal-box {
    0% {
        transform: scaleX(0);
        transform-origin: left;
    }

    50% {
        transform: scaleX(1);
        transform-origin: left;
    }

    51% {
        transform: scaleX(1);
        transform-origin: right;
    }

    100% {
        transform: scaleX(0);
        transform-origin: right;
    }
}

@keyframes fe-fade-in {
    from {
        opacity: 0;
    }

    to {
        opacity: 1;
    }
}