Headings

Headings are split between the global baseline and .prose. Globally, headings get a tight line-height, a color from --heading (or inherited), and progressive text-wrap: balance. They do not get a font-size, a font-weight, or margins. The reason is that a card heading, a dialog title, or a sidebar section should not be auto-magically enlarged by selector. Inside .prose, headings get a font-weight from --font-weight-strong, a tighter line-height from --prose-heading-line-height, a margin-block rhythm, and an explicit text-wrap: balance. The h1 to h4 font sizes are also scoped to .prose and are not exposed as a public scale. The hgroup element gets only structural styling: a grid layout, a gap, and a reset of internal margins. No font-size, no color, no weight. Its visual identity is the responsibility of the headings and paragraphs it contains.