/* ═══════════════════════════════════════════════════════════════════
   COMPANY BASTOS — REVEALS CONDUZIDOS PELO SCROLL (padrão Gcore)
   Cada elemento anima amarrado à própria posição no viewport:
   avançar = surge, voltar = reverte, como scrubbing de vídeo.
   Navegadores sem suporte mantêm o sistema .rv antigo (fallback).
   ═══════════════════════════════════════════════════════════════════ */

@keyframes cbUp    { from { opacity: 0; translate: 0 1.75rem; } to { opacity: 1; translate: none; } }
@keyframes cbUpBig { from { opacity: 0; translate: 0 2.5rem; }  to { opacity: 1; translate: none; } }
@keyframes cbScale { from { opacity: 0; scale: .955; }          to { opacity: 1; scale: none; } }
@keyframes cbLeft  { from { opacity: 0; translate: -2.5rem 0; } to { opacity: 1; translate: none; } }
@keyframes cbRight { from { opacity: 0; translate: 2.5rem 0; }  to { opacity: 1; translate: none; } }

@supports (animation-timeline: view()) {
  .rvl       { animation: cbUp both linear;    animation-timeline: view(); animation-range: entry 0% entry 40%; }
  .rvl-big   { animation: cbUpBig both linear; animation-timeline: view(); animation-range: entry 0% entry 32%; }
  .rvl-scale { animation: cbScale both linear; animation-timeline: view(); animation-range: entry 0% entry 35%; }
  .rvl-left  { animation: cbLeft both linear;  animation-timeline: view(); animation-range: entry 0% entry 40%; }
  .rvl-right { animation: cbRight both linear; animation-timeline: view(); animation-range: entry 0% entry 40%; }

  /* cascata por posição: cada irmão completa um pouco depois */
  .rvl-d1 { animation-range: entry 6% entry 46%; }
  .rvl-d2 { animation-range: entry 12% entry 54%; }
  .rvl-d3 { animation-range: entry 18% entry 62%; }
  .rvl-d4 { animation-range: entry 24% entry 70%; }
}

@media (prefers-reduced-motion: reduce) {
  .rvl, .rvl-big, .rvl-scale, .rvl-left, .rvl-right { animation: none; }
}
