/* ─────────────────────────────────────────────────────────────────
   Lievo Animations — slide-in (entry alternato sx/dx, "fuori-pagina")
   Versione: v1.4 (2026-06-12)

   Pattern:
     - Sul <section> viene applicata la classe .lv-slide-in (overflow:hidden).
     - Il JS wrappa il contenuto del section in un .lv-slide-in__inner
       che è quello effettivamente traslato di ±100% e poi riportato a 0.
     - L'IntersectionObserver osserva il <section> (che resta nella sua
       posizione originale, non traslato) → il trigger è affidabile anche
       quando l'inner è completamente fuori finestra.

   Dipendenze CSS: nessuna (token canonical opzionali).
   JS richiesto: slide-in.js (fa il wrap dinamico + l'IO).
   ───────────────────────────────────────────────────────────────── */

/* Section: ancora del trigger + clipping orizzontale del contenuto
   traslato. Niente overflow-y forzato — eredita comportamento normale. */
.lv-slide-in {
    overflow: hidden;
}

/* Inner: l'elemento davvero animato. Parte fuori finestra (±100%
   della propria larghezza, che coincide con la larghezza del section,
   quindi completamente al di fuori del viewport visibile). */
.lv-slide-in__inner {
    opacity: 0;
    transition:
        opacity 2s ease-out,
        transform 2s cubic-bezier(0.22, 1, 0.36, 1);
    will-change: opacity, transform;
}

.lv-slide-in__inner--from-left  { transform: translate3d(-100%, 0, 0); }
.lv-slide-in__inner--from-right { transform: translate3d( 100%, 0, 0); }

/* Stato attivato (IO ha visto il section entrare in viewport). */
.lv-slide-in.is-visible .lv-slide-in__inner {
    opacity: 1;
    transform: translate3d(0, 0, 0);
}

/* Reduced motion: tutto immediato, nessun clipping né trasformazione. */
@media (prefers-reduced-motion: reduce) {
    .lv-slide-in,
    .lv-slide-in__inner,
    .lv-slide-in__inner--from-left,
    .lv-slide-in__inner--from-right {
        opacity: 1 !important;
        transform: none !important;
        transition: none !important;
        overflow: visible !important;
    }
}
