/* ==========================================================================
   Nexo, movimento

   Escrito do zero em 29/07/2026. O arquivo anterior era de origem externa e
   trazia 19 keyframes, dos quais a pagina usava TRES, keyframe sem chamador e
   a prova de que o arquivo foi capturado, nao escrito.
   O historico esta em `docs/REMOCAO-2026-07-28.md`.

   Regra deste arquivo: se um keyframe nao tem chamador em `index.html` ou em
   `landing.css`, ele nao existe aqui. Nome descreve a FUNCAO, nunca a marca.
   ========================================================================== */

/* --------------------------------------------------------------------------
   Reveal ao entrar na viewport, 44 usos em `index.html`
   Transicao, nao animacao: o estado final e estatico e o JS so acrescenta
   `.is-visible`. Se o JS falhar, o `@media` no fim deste arquivo garante que
   nada fica invisivel, mas a rede real e o `<noscript>` do `index.html`.
   -------------------------------------------------------------------------- */
.nx-reveal {
  opacity: 0;
  transform: translateY(16px);
}
.nx-reveal.is-visible {
  opacity: 1;
  transform: none;
  transition:
    opacity   var(--nx-dur-slow) var(--nx-ease-out),
    transform var(--nx-dur-slow) var(--nx-ease-out);
}

/* --------------------------------------------------------------------------
   Faixa horizontal infinita, chamada por `.strip__track` (landing.css)
   O `- 40px` casa com o `gap: 40px` da faixa: e o que faz a emenda entre as
   duas copias (o JS duplica a lista) passar despercebida.
   -------------------------------------------------------------------------- */
@keyframes nx-marquee {
  to { transform: translateX(calc(-100% - 40px)); }
}

/* --------------------------------------------------------------------------
   Flutuacao suave, 1 uso em `index.html`
   Amplitude curta de proposito: 10px chama atencao, 24px vira distracao ao
   lado de texto que a pessoa esta tentando ler.
   -------------------------------------------------------------------------- */
@keyframes nx-float {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(-10px); }
}
.nx-float {
  animation: nx-float 5s ease-in-out .7s infinite;
}

/* --------------------------------------------------------------------------
   Movimento reduzido, obrigatorio.
   Quem liga isso no sistema operacional costuma ter motivo clinico (enxaqueca
   vestibular, transtorno de equilibrio). Nao e preferencia estetica: desligar
   tudo e a resposta certa, e `.nx-reveal` precisa voltar a ser VISIVEL, nunca
   ficar preso em `opacity: 0`.
   -------------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation: none !important;
    transition: none !important;
    scroll-behavior: auto !important;
  }
  .nx-reveal { opacity: 1; transform: none; }
}
