Toward a typographic house style, part two: vertical rhythm
Spacing is not decoration. The gaps between paragraphs are where a page explains what it thinks a thought is.
Part one fixed the sizes. Part two fixes the spaces between them, which is where most web typography quietly fails.
The asymmetric rule
Open a well-set book and measure the gaps. A heading sits almost on top of the paragraph it introduces and keeps a wide gap from the paragraph it follows. The ratio is roughly two to one, and it encodes grammar: whitespace binds a heading to its subject.
The web default inverts this. margin-top and margin-bottom get set symmetrically, or margins collapse into whatever the largest value happens to be, and every heading floats in a no-man’s-land that belongs equally to two thoughts and clarifies neither.
The fix is one rule applied everywhere: space above a heading is double the space below it. In this stylesheet that is margin-block-start: 2.2em against margin-block-end: 0.8em, and it is set once in the prose layer, not per page. The em units matter: the spacing scales with the heading’s own size, so an H2 breathes wider than an H4 without a second rule.
Paragraph spacing as punctuation
Between paragraphs the question is whether to indent the first line (book convention) or to space the paragraphs apart (web convention). Indentation is subtler but fragile: it depends on the block above being a paragraph, which breaks down around lists, figures, and code. Block spacing is blunter and honest. One blank line of height, roughly 1.4em, applied to every block boundary.
Applied uniformly it does more than separate. It gives lists, pull quotes, figures, and sidenotes a shared tempo, so the page reads as one voice instead of a stack of widgets. The pull quote gets the same breath as a paragraph; the figure gets it too. When every element keeps the same time, nothing shouts for attention it has not earned.
The edge cases deserve a mention because they are where uniform spacing usually dies. A figure followed immediately by a paragraph wants the same gap as two paragraphs, not a compounded one. A heading directly under a hero image wants less air than a heading mid-essay. The rule that survives contact: spacing attaches to blocks, not to element pairs, and any exception has to argue its case in the stylesheet with a comment naming why it exists.
The baseline grid question
Classic typesetting keeps every line on a multiple of the body line height, a vertical grid that print demands because both sides of the sheet show through. Screens do not show through, and a strict baseline grid fights fluid type and mixed media. The pragmatic version: keep the body rhythm consistent, let figures and code breathe freely, and spend the effort on heading asymmetry instead of pixel-perfect baselines.
The honest summary is that rhythm is set once and then audited forever. The rules above are fewer than twenty declarations. What makes them a house style is not their cleverness but their coverage: every block on the page answers to them, and nothing gets to be a special case because it was designed on a different Tuesday.
The audit is one question asked of every new element: where does your air come from? If the answer is a local margin somebody tuned by eye, it goes back. If the answer is the shared rule, it ships. That is the whole review.
Worth admitting what this system costs: you lose the option to rescue a weak layout with bespoke spacing. When a section feels cramped, the fix is to edit the content or pick a different component, not to nudge a margin. That constraint is the point. A house style that yields to taste on a bad afternoon is a mood board, not a system.
Part three, when it ships, will be the one nobody asks for and everybody notices: hyphenation, rags, and the quiet politics of the right edge.