widgets3d-layout
Pure layout math for [[widgets3d]] — no tosijs, no DOM, no Babylon, so it is directly unit-testable. The widget collection imports these helpers to stack its children and decide when a panel must scroll.
The layout model: a container has a fixed content width. It hands that width to each child, each child reports the height it needs, and the container stacks them top-to-bottom with a gap. If the stack is taller than the viewport, the container scrolls.