/* Animazioni di ingresso: a nascondere è animations.js, così senza JS il contenuto resta visibile. */

[data-env-animation].env-gjs-animate-pending { opacity: 0; transform: var(--env-gjs-anim-from, none); }

[data-env-animation].env-gjs-animate-in { animation-name: envGjsAnimateIn; animation-duration: var(--env-gjs-anim-duration, 700ms); animation-delay: var(--env-gjs-anim-delay, 0ms); animation-timing-function: var(--env-gjs-anim-easing, ease-out); animation-fill-mode: both; }

[data-env-animation="bounce"].env-gjs-animate-in { animation-name: envGjsBounceIn; }

@keyframes envGjsAnimateIn {
  from { opacity: 0; transform: var(--env-gjs-anim-from, none); }
  to { opacity: 1; transform: none; }
}

@keyframes envGjsBounceIn {
  0% { opacity: 0; transform: var(--env-gjs-anim-from, none); }
  60% { opacity: 1; transform: var(--env-gjs-anim-overshoot, none); }
  100% { opacity: 1; transform: none; }
}

/* Taglia l'eccedenza orizzontale finché un elemento è fuori posto (classe gestita da animations.js). */
html.env-gjs-anim-clip { overflow-x: clip; }

@media (prefers-reduced-motion: reduce) {
  [data-env-animation].env-gjs-animate-pending { opacity: 1; transform: none; }

  [data-env-animation].env-gjs-animate-in { animation: none; }
}
