.l2arts-cfx{--l2cfx-dur:700ms;--l2cfx-delay:0ms;--l2cfx-hover:300ms;--l2cfx-dist:35px;will-change:opacity,transform,filter}
.l2arts-cfx[data-l2arts-cfx]:not([data-l2arts-cfx="none"]):not(.l2arts-cfx-visible){opacity:0}
.l2arts-cfx.l2arts-cfx-visible{opacity:1}

/* Entrada: cada efeito possui keyframes próprios. */
.l2arts-cfx-entry-fade.l2arts-cfx-visible{animation:l2cfxFade var(--l2cfx-dur) ease var(--l2cfx-delay) both}
.l2arts-cfx-entry-fade-up.l2arts-cfx-visible{animation:l2cfxFadeUp var(--l2cfx-dur) cubic-bezier(.2,.72,.2,1) var(--l2cfx-delay) both}
.l2arts-cfx-entry-fade-down.l2arts-cfx-visible{animation:l2cfxFadeDown var(--l2cfx-dur) cubic-bezier(.2,.72,.2,1) var(--l2cfx-delay) both}
.l2arts-cfx-entry-fade-left.l2arts-cfx-visible{animation:l2cfxFadeLeft var(--l2cfx-dur) cubic-bezier(.2,.72,.2,1) var(--l2cfx-delay) both}
.l2arts-cfx-entry-fade-right.l2arts-cfx-visible{animation:l2cfxFadeRight var(--l2cfx-dur) cubic-bezier(.2,.72,.2,1) var(--l2cfx-delay) both}
.l2arts-cfx-entry-zoom.l2arts-cfx-visible{animation:l2cfxZoom var(--l2cfx-dur) cubic-bezier(.16,1,.3,1) var(--l2cfx-delay) both}
.l2arts-cfx-entry-blur.l2arts-cfx-visible{animation:l2cfxBlur var(--l2cfx-dur) ease-out var(--l2cfx-delay) both}
.l2arts-cfx-entry-cinematic.l2arts-cfx-visible{animation:l2cfxCinematic var(--l2cfx-dur) cubic-bezier(.16,1,.3,1) var(--l2cfx-delay) both}
@keyframes l2cfxFade{from{opacity:0}to{opacity:1}}
@keyframes l2cfxFadeUp{from{opacity:0;transform:translate3d(0,var(--l2cfx-dist),0)}to{opacity:1;transform:translate3d(0,0,0)}}
@keyframes l2cfxFadeDown{from{opacity:0;transform:translate3d(0,calc(var(--l2cfx-dist) * -1),0)}to{opacity:1;transform:translate3d(0,0,0)}}
@keyframes l2cfxFadeLeft{from{opacity:0;transform:translate3d(var(--l2cfx-dist),0,0)}to{opacity:1;transform:translate3d(0,0,0)}}
@keyframes l2cfxFadeRight{from{opacity:0;transform:translate3d(calc(var(--l2cfx-dist) * -1),0,0)}to{opacity:1;transform:translate3d(0,0,0)}}
@keyframes l2cfxZoom{from{opacity:0;transform:scale(.72)}60%{opacity:1}to{opacity:1;transform:scale(1)}}
@keyframes l2cfxBlur{from{opacity:0;filter:blur(18px);transform:scale(.96)}to{opacity:1;filter:blur(0);transform:scale(1)}}
@keyframes l2cfxCinematic{from{opacity:0;filter:blur(10px);transform:translate3d(0,var(--l2cfx-dist),0) scale(.985);clip-path:inset(0 0 42% 0)}to{opacity:1;filter:blur(0);transform:translate3d(0,0,0) scale(1);clip-path:inset(0 0 0 0)}}

/* Depois da entrada, libera transform/filter para hover e loop. */
.l2arts-cfx-entry-done{animation:none!important;opacity:1!important;filter:none;clip-path:none;transform:none;transition:transform var(--l2cfx-hover) ease,filter var(--l2cfx-hover) ease,box-shadow var(--l2cfx-hover) ease}
.l2arts-cfx-entry-done.l2arts-cfx-hover-grow:hover{transform:scale(1.035)}
.l2arts-cfx-entry-done.l2arts-cfx-hover-lift:hover{transform:translateY(-8px)}
.l2arts-cfx-entry-done.l2arts-cfx-hover-tilt:hover{transform:perspective(900px) rotateX(2deg) rotateY(-3deg) scale(1.015)}
.l2arts-cfx-entry-done.l2arts-cfx-hover-glow:hover{filter:brightness(1.1);box-shadow:0 0 30px rgba(112,170,255,.32)}
.l2arts-cfx-hover-shine{overflow:visible}.l2arts-cfx-hover-shine:after{content:"";position:absolute;inset:-50%;pointer-events:none;background:linear-gradient(115deg,transparent 40%,rgba(255,255,255,.18) 50%,transparent 60%);transform:translateX(-70%) rotate(8deg);transition:transform calc(var(--l2cfx-hover) * 2) ease}.l2arts-cfx-hover-shine:hover:after{transform:translateX(70%) rotate(8deg)}
.l2arts-cfx-entry-done.l2arts-cfx-hover-bgzoom:hover{transform:scale(1.02)}
.l2arts-cfx-entry-done.l2arts-cfx-loop-float{animation:l2cfxFloat 4s ease-in-out infinite!important}.l2arts-cfx-entry-done.l2arts-cfx-loop-pulse{animation:l2cfxPulse 3.2s ease-in-out infinite!important}
@keyframes l2cfxFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes l2cfxPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.018)}}
@media(max-width:767px){.l2arts-cfx-no-mobile{opacity:1!important;transform:none!important;filter:none!important;clip-path:none!important;animation:none!important;transition:none!important}}
@media(prefers-reduced-motion:reduce){.l2arts-cfx{opacity:1!important;transform:none!important;filter:none!important;clip-path:none!important;animation:none!important;transition:none!important}}

/* v2.17.9: after entrance, never keep animation properties that create stacking contexts.
   Important for Elementor mobile menu/header overlays. */
.l2arts-cfx.l2arts-cfx-entry-done{
  animation:none !important;
  opacity:1 !important;
  transform:none !important;
  filter:none !important;
  clip-path:none !important;
}

/* v2.17.9 — structural-safe menu/header effects.
   The header/menu container keeps its Elementor positioning/z-index/overlay context;
   only its visual child wrapper receives entrance/hover transforms. */
.l2arts-cfx-structural{
  transform:none !important;
  filter:none !important;
  clip-path:none !important;
  animation:none !important;
  opacity:1 !important;
}
.l2arts-cfx-structural > .l2arts-cfx-visual-wrap{
  width:100%;
  min-width:0;
  position:relative;
  z-index:inherit;
}
