Headings follow the outline
One h1 per page; nest h2–h4 in order. Level follows structure, size follows style.
Draft — not yet reviewed by a maintainer
Why it matters
Screen-reader users move through a page by its headings, so the outline is its table of contents. Choosing a level for its default size breaks that outline and makes a component wrong as soon as it is reused elsewhere.
How to check it
Run axe heading-order or list the outline: one h1, no skipped levels.
The default it guards against
Every section title an h2 regardless of nesting, card titles that jump from h2 to h5 to get a smaller font, or styled divs standing in for headings.
Library items that apply it
Where it comes from
- WCAG 2.2 SC 1.3.1 Info and Relationships (A)
- WCAG 2.2 SC 2.4.6 Headings and Labels (AA)
- docs/quality-gates.md (Accessibility: semantic landmarks and heading order)
Repository paths refer to the Tessli repository ; WCAG references are to WCAG 2.2.