/* ════════════════════════════════════════════════════════════════
   CENA 35 · FX — pacote de efeitos premium (compartilhado pelo site)
   Carregado por todas as páginas. Par com cena35_fx.js.
   ════════════════════════════════════════════════════════════════ */

/* ── transição entre páginas ── */
body{animation:fx-in .6s ease both}
@keyframes fx-in{from{opacity:0}to{opacity:1}}
html.fx-out body{opacity:0;transition:opacity .26s ease}

/* ── grão de filme (acabamento editorial) ── */
.fx-grain{
  position:fixed;inset:-60%;width:220%;height:220%;
  pointer-events:none;z-index:9990;opacity:.05;
  background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="280" height="280"><filter id="n"><feTurbulence type="fractalNoise" baseFrequency="0.85" numOctaves="2" stitchTiles="stitch"/></filter><rect width="100%25" height="100%25" filter="url(%23n)" opacity="0.55"/></svg>');
  animation:fx-gr 9s steps(8) infinite;
}
@keyframes fx-gr{
  0%{transform:translate(0,0)}
  25%{transform:translate(-2.2%,1.6%)}
  50%{transform:translate(1.8%,-2.4%)}
  75%{transform:translate(-1.4%,-1.2%)}
  100%{transform:translate(0,0)}
}
@media (prefers-reduced-motion:reduce){
  .fx-grain{animation:none}
}

/* ── títulos linha a linha ──
   JS envolve cada linha (split por <br>) em .fx-lm > .fx-li.
   A linha sobe de trás da máscara, em sequência. */
[data-split]{animation:none !important;opacity:1 !important;transform:none !important}
.fx-lm{display:block;overflow:hidden;padding-bottom:.08em;margin-bottom:-.08em}
.fx-li{
  display:block;transform:translateY(118%);
  transition:transform 1.05s cubic-bezier(.16,1,.3,1) calc(var(--li,0)*.1s + var(--sb,0s));
  will-change:transform;
}
.fx-split.in .fx-li{transform:none}
@media (prefers-reduced-motion:reduce){
  .fx-li{transform:none;transition:none}
}

/* ── parallax em camadas (JS posiciona; o scale evita frestas) ── */
[data-prlx]{will-change:transform;transform:scale(1.12)}

/* ── botões magnéticos ── */
.fx-mag{transition:transform .35s cubic-bezier(.16,1,.3,1);will-change:transform}
