Branch review by Fable is in — approve with changes — and a fix round has landed at 3cc81ea, CI green.
The CSS was sound: it verified the negative-margin breakout against rastrillo's actual tokens.css and column.html, and measured it in headless Chromium at 320/375/414/576/577/600 with a real 15px classic scrollbar present. No horizontal scroll anywhere, alignment claim confirmed (first character and h1 both at 16px, sheet at 0), and 400% zoom on a 1280px window now passes SC 1.4.10 where it previously produced a 64px column.
It also found the 100vw critique is more right than I knew: rastrillo sets scrollbar-gutter: stable on html, so 100vw would overhang even when no scrollbar is drawn.
What was wrong, and it was the comment
The opening arithmetic counted two insets when there are three — and the third is the shell padding that the same comment, twenty lines further down, already explains how to cancel. So the block contradicted itself, and the before-numbers were wrong in the direction that flatters the change: 151px at 375 and 96px at 320 were really 119px and 64px, measured. The after-numbers (343/288) were correct.
The breakpoint derivation inherited the error. "45 characters at 576px" only works if you forget an inset; honestly it is about 40, and holding out for 45 would put the breakpoint nearer 38rem. 36rem stays — reflow only promises 320px viewports, and 577-600px still yields a readable 306-330px column — but it is now written down as the judgement it is rather than a formula that does not add up.
That is the second time on these two branches that a stale derived number survived into a comment after the thing it was derived from had changed. Both times the code was right and the prose was wrong, which is the failure mode this repo already names, and both times the fix was to measure rather than to re-derive.
Second defect: the media query had no type, so it applied to print. Letter and A4 print boxes are ~700-800 CSS px and stay above the breakpoint, but A5 portrait is about 559px and crosses it — printing on A5 would have dropped the 1in and applied a phone's negative margin, in the one medium where a page margin is not a metaphor at all. Now @media screen and (max-width: 36rem), which is what makes the paragraph above it true.
Also folded in: the prose now mentions that the canvas's block padding drops from --rst-sp-6 to --rst-sp-4, which the rule always did and the comment never said.
Explicitly verified sound
The flex column and min-block-size that keep the click-below-the-last-paragraph target working; [docs-save-status]'s fixed positioning, independent of the breakout; the scriptless read view, which shares [docs-text]/[docs-page] and gets the identical narrow layout; [docs-back]'s 24px target floor; the literal colours; the rem breakpoint's behaviour for large-text users (they shed the paper at proportionally wider windows, which is the right direction); and RTL, where margin-inline is already logical and the shell's padding is symmetric.
One note recorded rather than acted on: nothing pins the breakpoint behaviour as an automated regression. That matches the repo's current practice of pinning markup grammar rather than layout, so it stays a note.