/* 
    +++ Reveal FX v2 +++
*/
/* ===== Reveal FX v2 ===== */

.fx{
    /* position:relative; */
    position: absolute;
    overflow:hidden;
}

/* ---------- SHAPES ---------- */

.fx-shape::before,
.fx-shape::after{
    content:"";
    position:absolute;
    background: var(--swiper-client-theme-color);
    z-index:5;
    will-change:transform;
}

/* diagonal single */
.fx-shape-diagonal::before{
    inset:0;
    clip-path:polygon(0 0,75% 0,55% 100%,0 100%);
    transform:translateX(-130%);
}
.fx-animate.fx-shape-diagonal::before{
    animation:fxDiag 1.2s cubic-bezier(.77,0,.18,1);
}
@keyframes fxDiag{
    0%{transform:translateX(-130%)}
    60%{transform:translateX(0)}
    100%{transform:translateX(130%)}
}

/* diagonal double */
.fx-shape-double::before,
.fx-shape-double::after{
    inset:0;
    clip-path:polygon(0 0,70% 0,50% 100%,0 100%);
}
.fx-shape-double::before{
    transform:translateX(-120%);
}
.fx-shape-double::after{
    transform:translateX(-160%);
    opacity:.6;
}
.fx-animate.fx-shape-double::before{
    animation:fxDiag 1.2s ease;
}
.fx-animate.fx-shape-double::after{
    animation:fxDiag 1.5s ease;
}

/* polygon slide */
.fx-shape-poly::before{
    inset:0;
    clip-path:polygon(0 0,90% 0,70% 100%,0 100%);
    transform:translateX(-150%);
}
.fx-animate.fx-shape-poly::before{
    animation:fxPoly 1.3s cubic-bezier(.77,0,.18,1);
}
@keyframes fxPoly{
    0%{transform:translateX(-150%)}
    70%{transform:translateX(0)}
    100%{transform:translateX(150%)}
}

/* split vertical */
.fx-shape-split-v::before,
.fx-shape-split-v::after{
    width:100%;
    height:50%;
}
.fx-shape-split-v::before{top:0}
.fx-shape-split-v::after{bottom:0}

.fx-animate.fx-shape-split-v::before{
    animation:fxSplitTop 1s ease;
}
.fx-animate.fx-shape-split-v::after{
    animation:fxSplitBottom 1s ease;
}

@keyframes fxSplitTop{
    to{transform:translateY(-110%)}
}

@keyframes fxSplitBottom{
    to{transform:translateY(110%)}
}


/* ---------- MEDIA REVEAL ---------- */
.fx-media{
    display:block;
    width:100%;
    opacity:0;
    transform:scale(1.12);
    will-change:transform,opacity;
}
.fx-animate .fx-media{
    animation:fxMedia 1.3s ease forwards;
}
@keyframes fxMedia{
    0%{
        opacity:0;
        transform:scale(1.12);
    }
    100%{
        opacity:1;
        transform:scale(1);
    }
}

/* ---------- TEXT ---------- */
.fx-text{
    opacity:0;
    transform:translateY(40px);
}
.fx-animate.fx-text{
    animation:fxText .9s ease forwards;
}
@keyframes fxText{
    to{
        opacity:1;
        transform:translateY(0);
    }
}

/* ---------- STAGGER GROUP ---------- */
.fx-group .fx-text:nth-child(1){animation-delay:.1s}
.fx-group .fx-text:nth-child(2){animation-delay:.25s}
.fx-group .fx-text:nth-child(3){animation-delay:.4s}
.fx-group .fx-text:nth-child(4){animation-delay:.55s}
.fx-group .fx-text:nth-child(5){animation-delay:.7s}

/* ---------- SPEED ---------- */
.fx-fast *{
    animation-duration:.6s!important;
}
.fx-slow *{
    animation-duration:1.6s!important;
}