Contract a CngxRangeSlider provides so each CngxSliderThumb
can read the shared track config, learn its sibling-clamped bounds, and
write its end of the tuple - all without injecting the concrete parent
class (which would create a cyclic type and block Atomic Decompose). The
cross-clamp lives in boundsFor, so two thumbs can never pass each
other and no effect is needed to keep them ordered.
Map a pointer position to a 0..1 fraction along the shared track, using
the range host's own geometry. A thumb cannot measure this itself - its
element is the tiny handle, not the full track - so the host owns the math.