- Move TabBody to its own module and draw DockSurface's docked bodies
through it too, so divider and tab drags no longer re-render bodies.
- State in TabRenderer when the kit calls renderTab again and reuses a
body.
- A corner press during a return ends it at the recorded rectangle; only
a grip press picks the panel up where it is drawn.
- The resistance and its inverse keep the legal size, a resize origin
stays inside a viewport that shrank mid-gesture, and a Windows root
without a published caption height keeps the 20px floor.
- The Web e2e waits for the resting style before checking the clamp.
- Tests say "does not re-render" and also show that a new renderer
re-renders the bodies.