/* fx.css — estilos de base do motor de animações (cores vêm das variáveis de cada site) */

/* Lenis */
html.lenis, html.lenis body { height:auto; }
.lenis.lenis-smooth { scroll-behavior:auto !important; }
.lenis.lenis-smooth [data-lenis-prevent] { overscroll-behavior:contain; }
.lenis.lenis-stopped { overflow:hidden; }

/* palavras quebradas para animar */
.sw { display:inline-block; overflow:hidden; vertical-align:top; padding-bottom:.1em; margin-bottom:-.1em; }
.sw__i { display:inline-block; will-change:transform; transform-origin:0 100%; }

/* enquanto o JS não termina a entrada, o topo fica escondido (atrás da tela de carregamento) */
.fx-js [data-intro] { visibility:hidden; }

/* cursor personalizado */
.fx-cursor, .fx-cursor * { cursor:none !important; }
.cursor { position:fixed; inset:0 auto auto 0; z-index:1000; pointer-events:none; }
.cursor.is-hidden { opacity:0; }
.cursor__dot, .cursor__ring { position:fixed; left:0; top:0; border-radius:50%; translate:-50% -50%; }
.cursor__dot { width:6px; height:6px; background:var(--cursor, #fff); mix-blend-mode:difference; }
.cursor__ring {
  width:38px; height:38px; border:1.5px solid var(--cursor, #fff); mix-blend-mode:difference;
  display:flex; align-items:center; justify-content:center;
  transition:width .35s cubic-bezier(.2,.8,.2,1), height .35s cubic-bezier(.2,.8,.2,1), background-color .35s, border-color .35s;
}
.cursor.is-link .cursor__ring { width:64px; height:64px; background:var(--cursor, #fff); }
.cursor.is-label .cursor__ring { width:96px; height:96px; background:var(--cursor-solid, #fff); border-color:transparent; mix-blend-mode:normal; }
.cursor__label { font:700 12px/1.1 var(--font, system-ui); color:var(--cursor-ink, #000); text-align:center; opacity:0; transition:opacity .25s; padding:0 8px; }
.cursor.is-label .cursor__label { opacity:1; }

/* foto que segue o mouse */
.hover-img {
  position:fixed; left:0; top:0; z-index:60; width:300px; aspect-ratio:4/5; pointer-events:none;
  translate:-50% -55%; border-radius:16px; overflow:hidden; opacity:0; visibility:hidden; scale:.85;
  box-shadow:0 30px 60px -20px rgba(0,0,0,.6);
}
.hover-img img { width:100%; height:100%; object-fit:cover; }

/* inclinação 3D com brilho */
[data-tilt] { transform-style:preserve-3d; will-change:transform; }
.tilt-glare { position:absolute; inset:0; border-radius:inherit; pointer-events:none; background:radial-gradient(circle at var(--gx,50%) var(--gy,50%), rgba(255,255,255,.28), transparent 55%); mix-blend-mode:soft-light; opacity:0; transition:opacity .4s; }
[data-tilt]:hover .tilt-glare { opacity:1; }

/* faixa que acelera com a rolagem */
.marquee { overflow:hidden; white-space:nowrap; }
.marquee__track { display:inline-flex; will-change:transform; }
.marquee__group { display:inline-flex; align-items:center; }

@media (prefers-reduced-motion: reduce) {
  .fx-js [data-intro] { visibility:visible; }
  .cursor, .hover-img { display:none; }
}
