Reactive scroll state of a container element.
scrollTop is read synchronously on each scroll event so the rendered
range tracks scroll without an extra frame of latency; Angular's signal
scheduler coalesces a burst of events into one recompute per frame.
clientHeight updates from a ResizeObserver, not on scroll.