Skip to content
GitHub
Sections

Reference · Interface modes

editorial

This is a spec: descriptive guidance, not a checkable rule. It carries no forbidden and instead pair, and no jig check detector applies to it directly.

The spec

For: marketing sites, blogs, documentation, brochureware, landing pages. Reader: first-time, on mobile data, scanning before committing attention. Tiebreaker: legibility over density. When in doubt, larger and further apart.

PropertyThis mode selects
UI text--text-body
Long-form text--text-prose · --leading-prose
Heading ramp--text-h3 → --text-h2 → --text-h1
Type ratio1.250 Major Third — the largest of the three
Measure--measure-prose
Section rhythm--spacing-section
Card padding--spacing-card
Control height--size-control — the tallest of the three
Radius--radius-control (sm) · --radius-surface (md)
Elevation--shadow-none; --shadow-raised for sticky nav only
Motion--duration-base; entrance animation once per visitor, first viewport only, skippable (G-42); ambient motion permitted (P-13)
Colour usageNeutral-dominant. --color-brand for links and primary CTA only.
ImageryCentral. Real photography or commissioned illustration.
KeyboardStandard tab order; no shortcuts expected

Resolved values: 02-tokens.md — the option sets for type, spacing, radius and shadow, and "Sizes and motion, by mode" for control heights, row heights, durations and measure.

Mode-specific rules

  • One hero maximum, at the top. A second full-viewport section is a second hero.
  • Every page states its subject above the fold in text, not only in an image.
  • Prose blocks are measure-capped even when the container is wide.
  • No horizontal scrolling regions on mobile. Reflow instead: a code block wraps its long lines, keeping its line breaks and indents, and a table too wide for the screen stacks its rows, each cell with its column's name (L-01, step 6).
  • JavaScript: none by default. A content page ships no script unless a feature on it needs some: a theme toggle, a search box, a filter. That is a default, not an absolute zero. Each script names, in a comment, the feature and the decision or rule that asks for it, and a review judges whether the feature needs it and whether it is as small as the feature allows, not whether it exists. What the budget forbids is script no feature asks for: a framework runtime to render static text, a library for one effect, tracking bundled into the page. Behaviour a rule requires is not a feature and is not counted: a few lines whose only job is something a rule asks for and the browser does not give, such as Escape closing a <details> menu, or a tap outside closing a menu in a fixed header (P-14), are allowed in every mode, under 1 KB, with the rule named in a comment. Nothing else rides along in them.
Kind
Spec
Section
Interface modes

Read as plain text