Chapter IX
A Handbook.
Nous is small enough that its rules fit on one page. What follows is that page — the practices that keep the system coherent when it is extended, and the anti-patterns that will, quietly, unmake it.
§1 · Do
Eight rules.
Written to be read in order. Each rule earns its place by being a decision Nous has already made, and by being the one that, when broken, leaves the most damage.
- Set type before colour. Hierarchy is built from size and weight, not from hue. When the typography is wrong, no colour decision will save it; when the typography is right, colour has less to do.
- Use one accent per document. Terracotta for drop-caps and warnings, aegean for links and notes, wine for code — but pick one as the lead, and let the others be secondary. Documents that lead with three accents lead with none.
- Keep the measure. 64ch is the default across every viewport. Margin notes, figures, and editor mockups may exceed it; the body prose may not.
- Let whitespace do the work. Between a paragraph and its sibling, 1em is enough. Between a section and its sibling, --s-7 or --s-8 — not a rule, not a drop-shadow, not an icon.
-
Use old-style figures in prose, tabular figures in data.
EB Garamond carries both; the token system sets
font-feature-settings: "onum"by default. Tables override with"tnum". - Keep links flat. Aegean underline, no icon, no hover lift. A link that animates more than its colour is a link trying to be a button; a reading page has nothing to do with it.
-
Respect reduced motion.
Every transition collapses to 0ms at the token layer when
prefers-reduced-motion: reduce. If a pattern relies on motion to be understood, it is wrong, and must be made legible without it. - When in doubt, remove. The rule Nous cannot ever forget. If an element must justify its presence, it has already failed the test.
§2 · Don't
Eight anti-patterns.
The opposites of the list above would be truisms. These are the traps that look harmless until a second one arrives.
-
Don't invent a new colour.
There are ten in the palette. If the task needs an eleventh, the task is wrong — or the palette is, and the fix belongs in
tokens.css, not in the page. - Don't set body text below 14px. The face degrades; the reader degrades sooner. Metadata may sit at 11px small-caps; running text may not.
- Don't stack two accent colours on the same element. An aegean link inside a terracotta block-quote reads as neither, because the eye arbitrates between them rather than between their meanings.
- Don't add icons to body text. The system has no icon set. Every icon that shows up in prose is borrowed, and carries its borrowing with it. Small caps and italics mark emphasis; they are sufficient.
- Don't put a call-to-action inside a paragraph. A filled button in body text turns the paragraph into a landing page. Read Chapter I again; this is not that kind of system.
-
Don't mix Greek italic with Latin italic in one phrase.
GFS Didot sets Greek upright.
var(--ff-display) italicsets Latin italic. Mixing them produces a tonal mismatch the eye cannot ignore. -
Don't set Chinese and English at the same font-size by default.
CJK characters have a larger optical size; Nous sets CJK at 17 / 1.9 alongside Latin 18 / 1.62 for visual parity. The token system exposes
--ff-cjkfor this. -
Don't animate for variety.
Three durations, one direction per gesture, and a full stop at
prefers-reduced-motion. A page that animates beyond this is telling the reader their attention is not worth keeping; and usually they agree.
§3 · Accessibility
A short audit.
The full contrast table lives in Chapter II. What follows is the rest of the audit — the parts that are not colour.
| Concern | Status | Implementation · notes |
|---|---|---|
| Body text contrast | AAA | Ink on paper = 17.28:1; Ink-2 = 11.72:1. Meets WCAG 2.2 AAA at every body size. Faint ink (decor only) and hairline (borders only) deliberately below AA — they never carry text. |
| Non-text contrast | AA | Rule lines at 1.36:1 are decorative (WCAG 1.4.11 exempts decorative elements). Active-state markers (terracotta dots) at 5:1+ meet the 3:1 minimum. |
| Focus ring | AA | Browser default preserved. The theme never removes outline on focusable elements — it relies on the browser's system contrast. |
| Reduced motion | AAA | @media (prefers-reduced-motion: reduce) sets --dur-fast/base/slow to 0ms at token layer. Every transition in the system honours it without any per-component plumbing. |
| Keyboard navigation | AA | All interactive patterns (footnote popover, TOC rail, reader controls, settings dialog) reach on Tab, activate on Enter/Space, dismiss on Esc. |
| Screen reader | AA | Semantic HTML first: <nav>, <aside>, <main>, <footer>. aria-current, aria-disabled, aria-pressed used where the native element does not carry state. |
| Zoom to 200% | AA | No fixed-pixel widths on body content; ch and em throughout. Layout holds under browser zoom and operating-system font-size multipliers. |
| Language attributes | AA | lang="en" on <html>; inline Greek and Chinese should carry lang="grc" / lang="zh-Hans" for correct hyphenation and pronunciation. |
§4 · CJK
中文排版的小注.
Nous is built Latin-first, but has been tested against Simplified Chinese at every level. The tokens carry CJK fallbacks; the type scale pairs density; the measure accommodates width. Three rules, for anyone extending the system.
-
Use
--ff-cjkfor running Chinese prose, not--ff-serif. The default Latin serif stack falls back to Songti at the browser's pleasure — the result is legible but unloved. Nous providesvar(--ff-cjk)= Noto Serif SC + Source Han Serif SC as the considered choice. - Set CJK body at 17 / 1.9, not 18 / 1.62. CJK characters occupy more optical space; matching the Latin scale produces visual density mismatch. The adjusted scale equalises them.
-
Let
text-spacing: autohandle mixed text. Browsers now ship the CSS Text 4 spacing rules; they insert the correct gap between Latin and CJK without author intervention. Nous applies it at the body level on any element with mixed script content.
Noto Serif SC)、字号(17px)、与 行高(1.9)。当这三者同时对上 Cormorant 或 EB Garamond 的节律,中西文便不再互相争抢读者的注意。
For punctuation: use full-width marks (,。:;"") in Chinese sentences; half-width marks only in mixed technical passages where a Latin word punctuation would read oddly otherwise. Do not swap arbitrarily.
§5 · Print
A reading system should print.
A reading-first system that prints badly is self-contradicting. Nous ships a @media print block in site.css that strips chrome and lets the body prose speak on paper. About forty lines of CSS, no more.
Try ⌘P / Ctrl-P on any chapter. The layout below shows what stays and what leaves.
Kept on paper
- Body prose at the reading measure
- Chapter title, folio, eyebrow
- Headings, blockquotes, tables, figures
- Inline code, kbd, and syntax highlighting
- Footnotes — surfaced inline at the end of the article
- Bibliography (hanging indent)
- Greek & Chinese inline passages
Dropped from paper
- Top navigation (site-nav)
- Chapter prev/next footer
- Site footer imprint
- Theme toggle, reader controls, bookmark
- Settings dialog, search field
- TOC rail (readable in print via headings anyway)
- Decorative gradients, shadows, meander
/* site.css · the entire @media print block */ @media print { .site-nav, .chapter-nav, .site-footer { display: none; } .chapter { max-width: none; padding: 0; } /* ink on white — printers save toner */ body { background: white; } h1, h2, h3 { break-after: avoid-page; } p, blockquote { orphans: 3; widows: 3; } }