/* ============================================================
   Nupiki motion kit — shared by the v11 style studies.
   Every easing below is a real spring, sampled numerically
   (underdamped step response, y = 1 - e^-ζωt(cos ωd t + …))
   and emitted as CSS linear(). That is what gives the pages
   their velocity curve: fast departure, long settle, a little
   overshoot — never a symmetric ease-in-out.
   ============================================================ */
:root{
  /* ζ .78 · ω 10.5 — the default. Confident, barely overshoots. */
  --sp-soft: linear(0, 0.0546 3.8%, 0.1798 7.7%, 0.3327 11.5%, 0.4859 15.4%, 0.6241 19.2%, 0.7400 23.1%, 0.8316 26.9%, 0.9004 30.8%, 0.9494 34.6%, 0.9822 38.5%, 1.0026 42.3%, 1.0139 46.2%, 1.0189 50.0%, 1.0199 53.8%, 1.0184 57.7%, 1.0158 61.5%, 1.0127 65.4%, 1.0097 69.2%, 1.0070 73.1%, 1.0048 76.9%, 1.0031 80.8%, 1.0018 84.6%, 1.0009 88.5%, 1.0003 92.3%, 0.9999 96.2%, 1);
  /* ζ .68 · ω 16 — small interactive things: hover, taps, chips. */
  --sp-snap: linear(0, 0.0610 3.8%, 0.2026 7.7%, 0.3764 11.5%, 0.5498 15.4%, 0.7035 19.2%, 0.8283 23.1%, 0.9218 26.9%, 0.9862 30.8%, 1.0261 34.6%, 1.0469 38.5%, 1.0541 42.3%, 1.0522 46.2%, 1.0453 50.0%, 1.0361 53.8%, 1.0265 57.7%, 1.0179 61.5%, 1.0107 65.4%, 1.0053 69.2%, 1.0014 73.1%, 0.9990 76.9%, 0.9976 80.8%, 0.9971 84.6%, 0.9971 88.5%, 0.9974 92.3%, 0.9979 96.2%, 1);
  /* ζ .52 · ω 14 — visible overshoot. Objects that "land". */
  --sp-pop: linear(0, 0.0720 3.8%, 0.2439 7.7%, 0.4579 11.5%, 0.6707 15.4%, 0.8540 19.2%, 0.9934 23.1%, 1.0853 26.9%, 1.1340 30.8%, 1.1477 34.6%, 1.1368 38.5%, 1.1113 42.3%, 1.0797 46.2%, 1.0483 50.0%, 1.0213 53.8%, 1.0008 57.7%, 0.9873 61.5%, 0.9802 65.4%, 0.9782 69.2%, 0.9798 73.1%, 0.9836 76.9%, 0.9883 80.8%, 0.9929 84.6%, 0.9969 88.5%, 0.9999 92.3%, 1.0019 96.2%, 1);
  /* ζ .92 · ω 8 — long, no overshoot. Big slow masses, opacity. */
  --sp-glide: linear(0, 0.0466 3.8%, 0.1521 7.7%, 0.2804 11.5%, 0.4099 15.4%, 0.5293 19.2%, 0.6330 23.1%, 0.7197 26.9%, 0.7899 30.8%, 0.8453 34.6%, 0.8881 38.5%, 0.9205 42.3%, 0.9446 46.2%, 0.9622 50.0%, 0.9748 53.8%, 0.9837 57.7%, 0.9899 61.5%, 0.9940 65.4%, 0.9968 69.2%, 0.9985 73.1%, 0.9996 76.9%, 1.0002 80.8%, 1.0005 84.6%, 1.0006 88.5%, 1.0006 92.3%, 1.0006 96.2%, 1);

  --d-soft:.90s; --d-snap:.62s; --d-pop:.76s; --d-glide:1.1s;
  /* the stagger unit. Layering comes from index * this, and from
     opacity resolving faster than transform on the same element. */
  --stag:70ms;
}

/* Elements opt in with [data-rv]; kit.js adds .is-in and sets --rvi.
   Each page writes its own transform — only the timing is shared. */
[data-rv]{ --rvd: calc(var(--rvi, 0) * var(--stag)); }

@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{
    animation-duration:.001ms!important;animation-iteration-count:1!important;
    transition-duration:.001ms!important;scroll-behavior:auto!important;
  }
}
