/* =========================================================================
   ANIMATIONS — transitions and motion helpers only.
   Reveal-on-scroll pattern. IntersectionObserver adds .in when in view.
   ========================================================================= */

.rv{
  opacity:0;
  transform:translateY(18px);
  transition:opacity .7s, transform .7s;
}
.rv.in{opacity:1;transform:none}

/* Hero — single unified fade-in on page load.
   Per Sprint 2.5: 350–400ms, no sequential entrances.
   Everything (headline, image, CTAs) enters together as one moment.
   Custom easing curve is quieter than plain ease-out — deceleration
   settles smoothly without the "landing" feel of ease-out. */
@keyframes hero-fade{
  from{opacity:0;transform:translateY(10px)}
  to  {opacity:1;transform:translateY(0)}
}
.hero .wrap{
  animation:hero-fade 400ms cubic-bezier(0.22, 1, 0.36, 1) both;
}

@media (prefers-reduced-motion:reduce){
  .rv,.panel{opacity:1;transform:none;transition:none}
  .hero .wrap{animation:none}
}
