/* Movimento das LPs. Tudo só esconde com a classe .js (sem JS o conteúdo aparece normal). */
html,body{overflow-x:clip} /* entradas laterais não criam rolagem horizontal no celular */
.js [data-r]{opacity:0;transform:translate3d(0,32px,0);filter:blur(6px);transition:opacity .9s var(--m-ease),transform .9s var(--m-ease),filter .9s var(--m-ease);transition-delay:var(--d,0s)}
.js [data-r=left]{transform:translate3d(-48px,0,0)}
.js [data-r=right]{transform:translate3d(48px,0,0)}
.js [data-r=zoom]{transform:scale(.92)}
/* mask recorta o filho: o próprio elemento precisa ficar visível para o observer detectar a entrada */
.js [data-r=mask]{filter:none;opacity:1;transform:none}
.js [data-r=mask]>*{clip-path:inset(0 0 100% 0);transition:clip-path 1.2s var(--m-ease)}
.js [data-r=mask].in>*{clip-path:inset(0 0 0 0)}
.js [data-r].in{opacity:1;transform:none;filter:none;clip-path:inset(0 0 0 0)}

.js [data-stagger]>*{opacity:0;transform:translate3d(0,26px,0);transition:opacity .7s var(--m-ease),transform .7s var(--m-ease);transition-delay:calc(var(--i,0)*90ms)}
.js [data-stagger].in>*{opacity:1;transform:none}

/* Título que sobe palavra por palavra */
[data-split] .w{display:inline-block;overflow:hidden;vertical-align:top;padding-bottom:.08em;margin-bottom:-.08em}
[data-split] .w>span{display:inline-block}
.js [data-split] .w>span{transform:translate3d(0,108%,0);transition:transform 1s var(--m-ease);transition-delay:calc(var(--i,0)*55ms)}
.js [data-split].in .w>span{transform:none}

/* Linha que se desenha (linha do tempo, divisórias) */
.js [data-line]{transform:scaleX(0);transform-origin:0 50%;transition:transform 1.4s var(--m-ease)}
.js [data-line=y]{transform:scaleY(0);transform-origin:50% 0}
.js [data-line].in{transform:none}

/* Número grande que conta */
[data-count]{font-variant-numeric:tabular-nums}

/* Card com brilho que segue o ponteiro e leve elevação */
[data-glow]{position:relative;isolation:isolate;transition:transform .5s var(--m-ease),box-shadow .5s var(--m-ease)}
[data-glow]::before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:-1;opacity:0;transition:opacity .35s;background:radial-gradient(380px circle at var(--mx,50%) var(--my,50%),var(--m-glow,rgba(111,168,161,.22)),transparent 62%)}
@media (hover:hover){[data-glow]:hover,.js [data-stagger].in>[data-glow]:hover{transform:translate3d(0,-4px,0);box-shadow:0 18px 40px -22px rgba(13,38,32,.45)}[data-glow]:hover::before{opacity:1}}

/* Faixa que passa (prêmios, credenciais) */
.m-marquee{overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent);mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent)}
.m-track{display:flex;gap:var(--gap,48px);width:max-content;animation:m-mq var(--dur,48s) linear infinite}
.m-marquee[data-rev] .m-track{animation-direction:reverse}
@media (hover:hover){.m-marquee:hover .m-track{animation-play-state:paused}}
@keyframes m-mq{to{transform:translate3d(calc(-50% - var(--gap,48px)/2),0,0)}}

/* Vídeo em loop (HyperFrames) */
video[data-loop]{display:block;width:100%;height:100%;object-fit:cover;background:var(--m-abismo)}

/* Barra de progresso de leitura e CTA fixo no celular */
.m-progress{position:fixed;inset:0 0 auto 0;height:3px;z-index:200;transform:scaleX(0);transform-origin:0 50%;background:var(--m-accent);pointer-events:none}
.m-sticky{position:fixed;left:12px;right:12px;bottom:12px;z-index:150;transform:translate3d(0,140%,0);transition:transform .5s var(--m-ease)}
.m-sticky.on{transform:none}
@media (min-width:900px){.m-sticky.m-sticky{display:none}} /* especificidade dupla: vence o .btn da página */

/* Pulso suave para selos e pontos "ao vivo" */
.m-pulse{position:relative}
.m-pulse::after{content:"";position:absolute;inset:-4px;border-radius:inherit;border:1px solid currentColor;opacity:0;animation:m-pulse 2.4s var(--m-ease) infinite}
@keyframes m-pulse{0%{opacity:.6;transform:scale(.9)}100%{opacity:0;transform:scale(1.25)}}

@media (prefers-reduced-motion:reduce){
  .js [data-r],.js [data-stagger]>*,.js [data-split] .w>span,.js [data-line]{opacity:1!important;transform:none!important;filter:none!important;clip-path:none!important;transition:none!important}
  .m-track,.m-pulse::after{animation:none!important}
}
