Snap
The specialist Stack engine. One fixed 25-column grid, shared by every Section, that every layout is fitted to.
Where ratio builds a module out of the weights you wrote, snap has one module and fits your weights to it: repeat(25, minmax(0, 1fr)), the same 25 lines in every Section. A lane is placed with grid-column, so its edges can only ever fall on one of those lines.
Gutters are columns, not gap. column-gap is zero; the space between lanes is reservedtracks, and edges reserves them at both ends too — so a snap Stack takes no paddingX, its edge breathing being part of the grid. That is what makes the overlay honest: the lines you see are the tracks, and there are no spacer elements anywhere.
Each example measures itself, so its gutters are to scale rather than to the page's. The arrangements are exact.
One grid, every layout
Whatever a row asks for, its edges land on lines that already existed.
The single lane spans columns 2–24, and so does the outer edge of every row beneath it — column 1 and column 25 are the reserved edge gutters. 1|1 and 1|1|1|1 also share their midline, both breaking at column 13.
This is the one thing ratio cannot offer. Two ratio Stacks share boundaries only when one weight total is a multiple of the other, so alignment is an authoring convention there. Here the coordinate system is fixed before you write anything — which is why snap is worth keeping for a layout that must align across every Section regardless of what each one contains.
Equal splits, and the one that misses
One of these cannot land on the grid.
Halves land on 11|11, thirds on 7|7|7, quarters on 5|5|5|5, sixths on 3|3|3|3|3|3 — all exact. Fifths land on 4|4|4|4|3, and the short last lane is visible in the row above.
The rule is not about 25. The slots never divide 25 — they divide what is left after the gutters take theirs, which at the default gutter is 24 − n. An even split is therefore exact whenever the lane count divides 24: 2, 3, 4, 6, 8 and 12 all work, 5 and 7 cannot. Widen gutter and the divisor moves with it — at two columns the slots share 23 − 2n and thirds stop being exact.
Unequal weights approximate
Where the grid's indivisibility shows.
A weight has to become a whole number of columns, so it is rounded — by largest remainder, so the spans and gutters still sum to exactly 25. 1|2 becomes 7|15, which is 1:2.14 rather than 1:2. 1|2|1 becomes the 5|11|5 this page has always been known for: 1:2.2:1.
So both engines distort an unequal ratio, and it is worth being precise about the difference. Ratio distorts because a wide lane absorbs the gutters it spans, and the error shrinks as the gap does. Snap distorts because a column is indivisible, and the error is fixed by the grid — it will not improve at any width. What you buy for it is that the result is always on a line you can name.