/* ===============================
   Act On Scroll Animations v1.1.5
   =============================== */

/* Restringe apenas a elementos internos — nunca body/main */
:where([class*="act-"]:not(body):not(main)) {
  transition: all 0.8s ease-out;
  will-change: opacity, transform;
  contain: paint; /* melhora performance */
}

/* Impede overflow lateral apenas nesses elementos */
:where([class*="act-"]:not(body):not(main):not(.act-visible)) {
  overflow-x: clip;
  overflow-y: visible;
}

/* Estado inicial — ainda não visíveis */
:where(.act-fade-in:not(.act-visible),
       .act-slide-up:not(.act-visible),
       .act-slide-left:not(.act-visible),
       .act-slide-right:not(.act-visible),
       .act-zoom-in:not(.act-visible),
       .act-rotate-in:not(.act-visible)) {
  opacity: 0;
}

/* ======== Variações ======== */

/* Fade In */
.act-fade-in:not(.act-visible) {
  opacity: 0;
}

/* Slide Up */
.act-slide-up:not(.act-visible) {
  transform: translateY(30px);
}

/* Slide Left */
.act-slide-left:not(.act-visible) {
  transform: translateX(-20px);
}

/* Slide Right */
.act-slide-right:not(.act-visible) {
  transform: translateX(20px);
  clip-path: inset(0 -30px 0 0);
}

/* Zoom In */
.act-zoom-in:not(.act-visible) {
  transform: scale(0.9);
}

/* Rotate In */
.act-rotate-in:not(.act-visible) {
  transform: rotate(-4deg);
}

/* ======== Estado Final ======== */
.act-visible {
  opacity: 1;
  transform: none;
  overflow: visible;
}
