One contract, several voices

The audience picks the voice. A theme sets type, colour and density through semantic tokens, declared with data-theme; changing it never moves a section and never changes a fact.

Identical markup in every panel below. Only data-theme differs, and each panel keeps its own theme whatever colour scheme your system asks for.

editorial-coral

Analytical reports

41%
Held by the largest function
of 1,842,110 included units
FunctionUnits
Ingestion612,400
Transform388,910
Methodology
Current snapshot, as of 2026-08-12.

executive-navy

Board and governance

41%
Held by the largest function
of 1,842,110 included units
FunctionUnits
Ingestion612,400
Transform388,910
Methodology
Current snapshot, as of 2026-08-12.

field-notes

Research and audit

41%
Held by the largest function
of 1,842,110 included units
FunctionUnits
Ingestion612,400
Transform388,910
Methodology
Current snapshot, as of 2026-08-12.

console-violet

Engineering readouts

41%
Held by the largest function
of 1,842,110 included units
FunctionUnits
Ingestion612,400
Transform388,910
Methodology
Current snapshot, as of 2026-08-12.

horizon

Client brand

41%
Held by the largest function
of 1,842,110 included units
FunctionUnits
Ingestion612,400
Transform388,910
Methodology
Current snapshot, as of 2026-08-12.

The same proposal, three voices

One body, three themes: the board voice, the analytical voice, and a client's brand. The facts and their order do not move.

Wear the client's brand

Point brand-theme-design at a brand guide, a website, a screenshot or a few hex values. Brand colours are chosen for logos and routinely fail as body text, so nothing is eyeballed.

  1. Extract with provenance

    Computed styles from real elements, each value traced to where it came from.

  2. Map to roles

    Mostly subtraction: one accent, the rest mapped to ink, paper, rule and status roles.

  3. Audit every pair

    Contrast at exact thresholds, accent hue clear of the status colours, a print ramp for dark themes.

See how horizon was built. To start your own, copy core/themes/brand-template.css and fill every TODO. The comparison as standalone documents: light · dark.