/* Site polish.
   1 · Line reveal. Display headings arrive line by line from behind their own
       mask, rather than fading. This is the one change that touches every page.
   2 · The grain breathes, so the surface never reads as a flat screen.
   3 · Primary buttons pull very slightly toward the pointer. Two or three
       pixels: felt, not seen. */
.rv-l{display:block;overflow:hidden;padding-bottom:.22em;margin-bottom:-.22em}
.rv-i{display:block}
@media screen and (prefers-reduced-motion:no-preference){
  .rv-split[data-rise]{opacity:1!important;transform:none!important;transition:none!important}
  .rv-i{transform:translateY(112%);transition:transform 1.05s var(--ease);
    transition-delay:calc(var(--i,0) * 90ms)}
  .rv-on .rv-i{transform:none}
  /* the geometry drawn over photography sits in the surface, not on it */
  .layer--on-photo{mix-blend-mode:soft-light}
  .layer--on-photo *{stroke:#FFFBF3}
  .atmos-breathe::after{animation:grain-breathe 37s ease-in-out infinite}
  .cta{will-change:transform}
  .group-magnetic{transform:translate3d(var(--mx,0px),var(--my,0px),0)}
}
@keyframes grain-breathe{0%,100%{opacity:.30}50%{opacity:.19}}
@media(prefers-reduced-motion:reduce),print{
  .rv-i{transform:none!important}
  .layer--on-photo{mix-blend-mode:normal}
  body::after{animation:none!important}
}
