/* ═════════════════════════════════════════════════════════════════
   RIVIO — entrada.css · camada 5 de 5, a ÚLTIMA das compartilhadas

   A revelação disparada por scroll (`data-rise`, `data-rise-lines`).
   Carrega depois dos componentes e da home DE PROPÓSITO: `.js [data-rise]`
   tem o mesmo peso de muita regra de estado (`:hover`, `.is-ativo`), e o
   estado escondido precisa vencer o repouso do componente — era assim no
   arquivo único, e é o que mantém um bloco invisível até entrar em cena.
   A folha da página ainda vem depois desta.
   ═════════════════════════════════════════════════════════════════ */

/* ── Reveal ao entrar em cena ───────────────────────────────────── */

.js [data-rise] {
  opacity: 0;
  transform: translateY(18px);
}

.js .is-seen [data-rise],
.js [data-rise].is-seen {
  opacity: 1;
  transform: none;
  transition: opacity 0.9s var(--ease-out-expo) var(--d, 0ms),
    transform 1s var(--ease-out-expo) var(--d, 0ms);
}

/* títulos que sobem linha a linha ao entrar em cena — mesma máscara do
   hero, disparada por scroll em vez de pelo load */
.js [data-rise-lines].is-seen .line__i {
  transform: none;
  transition: transform 1.05s var(--ease-out-expo) var(--d, 0ms);
}

@media (prefers-reduced-motion: reduce) {
  .js [data-rise] {
    opacity: 1;
    transform: none;
    transition: none !important;
  }
}
