/* Motion on scroll for this landing · generated by ../anim_landings.py (28-oct-2026); edit the generator, not this file.
   Only transform (translate/scale) and opacity. The hidden state exists only on elements anim.js tags (.an-pre), so without JS
   everything is visible; with reduced motion the script tags nothing and these rules do not apply. */
:root{--an-rise:18px;--an-dur:450ms;--an-ease:cubic-bezier(.2,.8,.2,1);--an-fs:0.97;--an-lift:3px;--an-lo:0 50%;--an-ls:0;--an-grain:.05}
@media screen and (prefers-reduced-motion:no-preference){
  .an-js .an-pre{transition:opacity var(--an-dur) var(--an-ease) var(--an-d,0ms),translate var(--an-dur) var(--an-ease) var(--an-d,0ms),scale var(--an-dur) var(--an-ease) var(--an-d,0ms)!important}
  .an-js .an-pre:not(.an-go){opacity:0!important;translate:0 var(--an-rise)!important}
  .an-js .an-pre.an-fig:not(.an-go){scale:var(--an-fs)!important}
  .an-js .an-line.an-pre::before,.an-js .an-rvline::before{transform-origin:var(--an-lo);transition:scale var(--an-dur) var(--an-ease) calc(var(--an-d,0ms) + 180ms)!important}
  .an-js .an-line.an-pre:not(.an-go)::before,.an-js .an-rvline:not(.in)::before{scale:var(--an-ls)!important}
  .an-js .an-bars i::before,.an-js .an-bars i::after{transform-origin:0 50%;transition:scale calc(var(--an-dur) + 200ms) var(--an-ease) 160ms!important}
  .an-js .an-bars:not(.an-go) i::before,.an-js .an-bars:not(.an-go) i::after{scale:0 1!important}
  .an-count{font-variant-numeric:tabular-nums}
}
@media (hover:hover) and (prefers-reduced-motion:no-preference){
  .an-hov{transition:translate .4s var(--an-ease)}
  .an-hov:hover{translate:0 calc(var(--an-lift) * -1)}
}
.an-grain{position:absolute;inset:0;z-index:0;pointer-events:none;border-radius:inherit;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.55'/%3E%3C/svg%3E");background-size:220px 220px;opacity:var(--an-grain);mix-blend-mode:overlay}
@media print{.an-grain{display:none}}
