/* ==========================================================================
   ASGroup 2026 — Motion
   Principi (Emil Kowalski): movimenti brevi, easing naturali, solo
   transform/opacity (compositor-friendly), intenzionali e mai gratuiti.
   prefers-reduced-motion rispettato globalmente (CSS + guardia JS in ui.js).
   ========================================================================== */

/* Stato iniziale degli elementi "reveal": animati al primo ingresso in viewport
   tramite IntersectionObserver (ui.js aggiunge .is-visible). */
.asgroup-theme .ag-reveal:not(.asg-plugin-container *) {
  opacity: 0;
  transform: translateY(16px);
  transition:
    opacity var(--ag-dur-slow) var(--ag-ease-out),
    transform var(--ag-dur-slow) var(--ag-ease-out);
  will-change: opacity, transform;
}
.asgroup-theme .ag-reveal.is-visible:not(.asg-plugin-container *) {
  opacity: 1;
  transform: none;
}

/* Ritardi a cascata per gruppi di elementi */
.asgroup-theme .ag-reveal[data-delay="1"] { transition-delay: 60ms; }
.asgroup-theme .ag-reveal[data-delay="2"] { transition-delay: 120ms; }
.asgroup-theme .ag-reveal[data-delay="3"] { transition-delay: 180ms; }
.asgroup-theme .ag-reveal[data-delay="4"] { transition-delay: 240ms; }
.asgroup-theme .ag-reveal[data-delay="5"] { transition-delay: 300ms; }

@keyframes ag-fade-in {
  from { opacity: 0; }
  to   { opacity: 1; }
}

/* Rispetto totale di prefers-reduced-motion: niente animazioni/transizioni */
@media (prefers-reduced-motion: reduce) {
  .asgroup-theme *,
  .asgroup-theme *::before,
  .asgroup-theme *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
  html { scroll-behavior: auto; }
  .asgroup-theme .ag-reveal:not(.asg-plugin-container *) {
    opacity: 1;
    transform: none;
  }
}
