Doctrine

Clean 16 is the canonical design system for all ops/admin HTML surfaces

productdesign-systemcsshtmlclean-16heartwoodcamber

Clean 16 is the canonical design system for all ops/admin HTML surfaces

Rule

Every HTML surface that is NOT client-facing MUST use Clean 16 tokens exclusively. No hardcoded hex colors, no bespoke font stacks, no one-off palettes.

Two design systems exist in the fleet. Use the right one:

SystemPrefixScopeToken fileFont
Clean 16--c16-Ops, admin, internal tools, dashboards, manifests, receipts, reconciliation, bill coversheartwood/clean-16/tokens.cssFira Sans
Dollhouse v0.2--v2-Client-facing surfaces (project pages, proof chains, walkthroughs)heartwood/dollhouse-v0.2/tokens.cssFraunces

Token locations

  • CSS custom properties: /Users/chadbarlow/gh/heartwood/clean-16/tokens.css (16 tokens, :root { --c16-*: ... })
  • JS module (CommonJS): /Users/chadbarlow/gh/heartwood/api/_lib/clean-16.js (exports token values for server-side HTML string building)
  • HTTP endpoint: /api/woodbery-shared-css (serves aggregated CSS including Clean 16 tokens)

The 16 tokens

TokenValueUsage
--c16-hw#264b33Primary brand green, nav bg, buttons, badges
--c16-gray#7f8c8dMuted text, labels
--c16-light#ecf0f1Light backgrounds, section headers
--c16-red#c0392bError, needs-review states
--c16-amber#e67e22Warning, auto-approvable states
--c16-card-radius6pxAll card/panel border-radius
--c16-card-border#e0e0e0Card and divider borders
--c16-card-bg#fffCard backgrounds
--c16-card-shadow0 1px 4px rgba(0,0,0,.06)Default card elevation
--c16-card-shadow-hover0 2px 8px rgba(0,0,0,.08)Hover elevation
--c16-card-padding16pxStandard card content padding
--c16-room-gap16pxGap between major sections
--c16-section-gap12pxGap between items within a section
--c16-base-size13pxBody text size
--c16-title-size14pxCard/section title size
--c16-title-weight500Title font weight

Composite recipes (not individual tokens — combinations of the 16):

  • Body: bg #fafafa, color #222, font "Fira Sans",-apple-system,sans-serif
  • Labels: 11px uppercase, letter-spacing .66px, color --c16-gray, weight 500
  • Nav: bg --c16-hw, height 56px, sticky, white text 13px/500

How to use in server-side HTML generators

var c16 = require("./clean-16");

var html = '<div style="background:' + c16.cardBg + ';border:1px solid ' + c16.cardBorder + ';border-radius:' + c16.cardRadius + '">';

How to use in static HTML

Link to the shared CSS endpoint or import the token file directly:

<link rel="stylesheet" href="/api/woodbery-shared-css">

Then use var(--c16-hw) etc. in your CSS.

What was purged (2026-04-24)

27 files across heartwood, camber, orbit, and ora had bespoke inline styles stripped and replaced with either Clean 16 token references (heartwood JS generators) or migration comments (static HTML, camber edge functions). ~6,400 lines of CSS eliminated. Any file with / Clean 16 migration pending / needs its styles rebuilt using these tokens.

Enforcement

When reviewing any PR that introduces HTML output: 1. Check for hardcoded hex colors — reject if not from Clean 16 2. Check for inline font-family declarations — must be c16.bodyFont or var(--c16-*) equivalent 3. Check for new <style> blocks with custom palettes — reject, point to this doctrine