/* Page load, the linear.app way (measured on linear.app, Oct 2026): each hero line arrives from
   opacity 0, blur(10px) and a small drop (24px headline, 10px copy), over ~0.85s, ease-out,
   staggered ~0.08s apart; the artwork follows with a slower plain fade (~1.3s).
   The <head> script adds .rd-load (hide) then .rd-in (play). Without JS or with reduced motion,
   neither class is added and everything is simply visible. */
:root{--rd-ease:cubic-bezier(.25,.46,.45,.94)}
@keyframes rd-enter{from{opacity:0;filter:blur(10px);transform:translate3d(0,var(--y,24px),0)}}
@keyframes rd-fade{from{opacity:0}}
.rd-line{display:block}
@media (prefers-reduced-motion:no-preference){
 html.rd-load:not(.rd-in) [data-enter]{opacity:0}
 html.rd-in [data-enter]{animation:rd-enter .85s var(--rd-ease) var(--d,0s) backwards}
 html.rd-in [data-enter="fade"]{animation:rd-fade 1.3s var(--rd-ease) var(--d,0s) backwards}
 /* Homepage sections that already revealed on scroll now arrive the same way. */
 .js-motion .reveal{opacity:0;transform:translate3d(0,16px,0);filter:blur(10px);transition:opacity .85s var(--rd-ease),transform .85s var(--rd-ease),filter .85s var(--rd-ease)}
 .js-motion .reveal.visible{opacity:1;transform:none;filter:none}
}
