marnji Expert lanes The system Design only · no code

A theme is six tokens, not a redesign

The risk in this brief is named in the brief: personalisation that becomes a collection of unrelated websites. So the answer is a hard boundary rather than taste. A theme may change exactly six declared tokens. Everything else is the constant.

All three theme pages are rendered by one file, theme.js, from the same block sequence in the same order. Only the words and the six tokens differ — which is why the check below is possible at all: the rendered class sequence of each state is asserted identical across all three themes, and so are the lane and composer geometries.

1The contract

A theme may change

  • --accent / --accent-ink / --accent-wash — one warm hue family
  • --display — heading and quote face only. Body is always Figtree.
  • --rhythm — a single multiplier on block gaps
  • --quote — rule · slab · soft
  • --cite — inline+footer · inline · footer
  • --r-block — block corner radius

A theme may not change

  • The lane width (768px), the sticky head, the composer, the chips
  • The booking block's structure or position in the flow
  • The base spacing unit, the type scale steps, the breakpoints
  • The DOM of any answer block — same classes, same order, every theme
  • Any contrast floor, focus ring, or hit target
  • Navigation, routing, or anything outside the answer lane

Why six and not "use judgement". Every one of the six is a token a developer can diff. "Restrained" as an instruction survives one sprint; a list of six survives the fourth expert who wants their lane to feel special.

2Tokens and accents

Every accent is a pair — the accent carries rules and fills, the ink carries text

Theme Accent (fills, rules) Accent-ink (any text) Display Rhythm · quote · cite · radius
Editorial #C2593A
3.97:1 — fills only
#9E4325
5.78:1 — AA body
Fraunces 1.00 · rule · inline+footer · 16px
Playbook #8A6A2F
4.54:1
#6F5423
6.39:1 — AA body
Figtree 0.92 · slab · inline · 12px
Coach #6E7F5B
3.91:1 — fills only
#57684A
5.45:1 — AA body
Fraunces 1.14 · soft · footer · 22px

All three hues sit in the shipped warm room on #F7F3EB. That is the second guarantee against three-unrelated-websites, and it is why none of them is a blue or a violet — a cool accent on this paper reads as a different product, not a different expert.

Type scale, unchanged across themes. Body 15.5 / mobile 15 · headings 15.5 · quote 18 (coach 19) · captions 12.5 · source pills 12.5 · chips 12.5. Two families only, both already shipped: Fraunces for display, Figtree for everything else. Playbook uses Figtree for headings too — that is the one place a theme drops the serif, and it is what makes it read as businesslike without importing a third face.

3The eight answer block types

Same markup on every theme · what varies is listed per row

Block Class What a theme may vary
Paragraph.txt pNothing. Body copy is identical on all three.
Heading.b-hFace and case — playbook renders it as a small uppercase label.
List.b-lMarker only — dash, or a numbered chip on playbook. Grid stays 22px.
Quote.b-qRule · slab · soft. Attribution line is mandatory and never themed away.
Image.b-imgRadius only. 16:9, caption and approval source are fixed.
Video.b-vidRadius only. 132px thumb desktop, stacked on mobile, on every theme.
Citation.cite · .msg-srcDensity. A theme may move a citation; it may never remove one.
Action.b-actWash colour only. Copy, price position and CTA behaviour are fixed.

4Assignment — a theme is derived, not chosen

This is the part that makes it authentic rather than decorative, and it comes from the 2026-05-28 expert response material audit rather than from taste. That audit found citation behaviour varies enormously across the published roster: source visibility ranged from 3/7 to 6/7 related answers, and library depth from 1 material and 17 chunks at one end to 10 materials and 511 chunks at the other.

So the expert does not pick a skin from a menu. The theme follows what they actually have, which is exactly what the brief asks for — personality from materials rather than arbitrary CSS. An expert with no clear classification gets Editorial, because it is the house default and needs no new brand surface.

5Accessibility

One finding in the existing system, not introduced here. Shipped --muted:#7A7167 is 4.33:1 on paper and is used at 12.5–13px for source pills and the lane subtitle — below AA for body text. #736A60 is 4.79:1 and is the smallest change that clears it; these mocks use it. One token, visually near-identical, and it fixes every small-text instance at once.

6Mobile

7Fallback rendering

Two failure modes, and both are real rather than hypothetical — the audit found published experts with as little as one material and thirteen chunks.

8Recommendation — prototype Editorial first

Editorial insight, and it is not a close call. Four reasons, in order of weight.

The condition I would attach. Editorial is the most demanding of the material, so it will hit the fallback most visibly on thin experts. Ship state 5 with it. If the fallback is deferred, a sparse expert in the most citation-forward theme is the worst possible first impression — a premium editorial lane with nothing in it.

9What this is not

See theme 1 →