/* ring: commons
 * seed: inherit (parallax is scrub, not personality — the door seed still owns transitions)
 * still: ./still.md
 * reduced: replace (planes stack as designed still — reduced.css)
 * when-not: login, vs-card, receipt, RCS, email, dense product tables, theserails, weshipads
 *
 * C-PARALLAX — three planes max: near / mid / far. Far moves least.
 * t from the raf-scroll-t contract (--c-t via ../../css-scroll/scroll-t.mjs), or the
 * native scroll-timeline tier (../../css-scroll/scroll-timeline.css). Never both on one subtree.
 * LAW #3: payload numbers never ride a plane. First paint: hero already in place (t=0 → zero offset).
 * WCAG: decorative, non-essential, disableable. Z-travel is vestibular — replace on reduce, never slow down.
 */

[data-c-parallax] {
  position: relative;
  overflow: clip;
}

[data-c-parallax] [data-plane] {
  will-change: transform;
}

[data-c-driver="js"] [data-c-parallax] [data-plane="near"],
[data-c-parallax][data-c-driver="js"] [data-plane="near"] {
  transform: translate3d(0, calc(var(--c-t, 0) * var(--c-travel-near, 96px) * -1), 0);
}
[data-c-driver="js"] [data-c-parallax] [data-plane="mid"],
[data-c-parallax][data-c-driver="js"] [data-plane="mid"] {
  transform: translate3d(0, calc(var(--c-t, 0) * var(--c-travel-mid, 48px) * -1), 0);
}
[data-c-driver="js"] [data-c-parallax] [data-plane="far"],
[data-c-parallax][data-c-driver="js"] [data-plane="far"] {
  transform: translate3d(0, calc(var(--c-t, 0) * var(--c-travel-far, 16px) * -1), 0);
}

[data-c-parallax] [data-payload] {
  transform: none !important;
}
