outlay
Drag-and-Drop Reorder
Grab a card and drag it. On every pointer move the solver re-runs
solveLayout over the whole grid to work out where each card
belongs, and the others glide to make room via
transform: translate(). Nothing here touches DOM layout mid-
drag — the reflow that normally makes this janky simply never happens.