/* fx.css — Effets progressifs d’apparition/disparition */
.fx {
    opacity: 0;
    transition: opacity 0.7s, transform 0.7s;
    will-change: opacity, transform;
}

.fx-in {
    opacity: 1;
    pointer-events: auto;
}

.fx-out {
    opacity: 0;
    pointer-events: none;
}

/* Fade effet (déjà géré par .fx) */
.fx-fade {}

/* Slide gauche */
.fx-slide-left {
    transform: translateX(-40px);
}

.fx-in.fx-slide-left {
    transform: translateX(0);
}

/* Slide droite */
.fx-slide-right {
    transform: translateX(40px);
}

.fx-in.fx-slide-right {
    transform: translateX(0);
}

/* Slide haut */
.fx-slide-up {
    transform: translateY(40px);
}

.fx-in.fx-slide-up {
    transform: translateY(0);
}

/* Slide bas */
.fx-slide-down {
    transform: translateY(-40px);
}

.fx-in.fx-slide-down {
    transform: translateY(0);
}