145cd763ca
A colgroup of percentages is the only state, so widths never touch the cells: one <col> per column, table-layout fixed, and the browser does the rest. A drag moves one seam and the pair either side trade width, so the table box never changes size mid-drag — no reflow of the message around it, no scrollbar appearing under the pointer. Handles are markup inside each <th>; the table listens once and resolves the grabbed seam from the DOM, so there is no context, no per-column component, and no index threading. Tables stay in auto layout until they are resized, and double-clicking a seam hands them back to it — the same reset gesture the pane sashes use. On a 43-row table a 40-step drag mutates 78 col[style] attributes and touches no cell.