Prose Layout

Reading-width content column. 65ch max-width. Centered.

data-layout="prose" constrains content to a comfortable reading width — the classic 65-character line. Text, images, code, and tables sit inside a centered column with the prose serif font applied.


Usage

Apply to any block element — typically an <article> or a <div> wrapping body content.

<article data-layout="prose">
  <h1>The Title</h1>
  <p>Reading content here. The column is 65ch wide — comfortable
  for sustained reading. Centered on wider screens.</p>
</article>

Live demo

The Prose Column

This paragraph lives inside [data-layout="prose"]. Notice the constrained width — comfortable for reading, with the serif prose font active. The container centers itself inside whatever parent wraps it.

Links look like this. Lists feel proportional:

  • First item with enough text to demonstrate line rhythm
  • Second item — the spacing between list items is intentional
  • Third item — no cramping, no excess air

A blockquote inside the prose column. Indented, muted. For attribution or extended quotes.


When to use

Use prose layout for content meant to be read: essays, documentation articles, blog posts, reports. The 65ch constraint isn't arbitrary — it's the line length where eyes don't fatigue tracking from right margin back to left.

Use prose for Don't use prose for
Long-form articles and essays Landing pages with full-width sections
Documentation body text Dashboards and data-dense views
Blog posts, changelogs Card grids, comparison tables
Generated reports meant to be read Full-width media or hero sections

Font behaviour

data-layout="prose" activates the prose font stack (--asw-font-prose): Charter, Bitstream Charter, Sitka Text, Cambria, Georgia — transitional serifs designed for sustained reading. The body of this page uses the UI sans-serif stack (docs layout), but a prose-layout section restores the serif.

This is intentional. An agent generating a readable essay gets the right typography automatically — no class, no explicit font declaration. Layout implies typography.

/* In agentic.css — prose layout resets to the reading font */
[data-layout="prose"] {
  font-family: var(--asw-font-prose);
}

The ch unit and font changes

The 65ch max-width is measured in the prose column's font. If the prose font is unavailable and falls back to a wider face, the column widens proportionally. This is a feature: the constraint tracks the actual character width of the font in use.


Full-width: fluid

The opposite of prose. data-layout="fluid" on <main> removes the reading constraint entirely and lets content fill the viewport.

<main data-layout="fluid">
  <!-- full-width dashboard, map, editor... -->
</main>

Use when the page is a tool, not a document. The main body constraint (800px reading width) is the default — fluid opts out of it.