The chosen identity: Broadcast · Soft red. A non-partisan public record of parliament, made readable and verifiable — built from the broadcast mark (the record, opened and transmitted to every citizen) in a restrained soft red on ink and beige.
This is the v2 bible. Every element below is now a true-vector production asset — real SVG geometry, real self-hosted fonts, a real token contract — generated from a parametric source of truth, not an AI render. The earlier ideation bible (logo / board / assets / applied-home were gpt-image-2 studies) is kept for the record.
The mark
The Broadcast mark is a lowercase “i” — the i of
Politick — whose tittle is a soft-red dot and whose signal radiates as five
concentric semicircular arcs. It reads at once as a letter and as a radio / broadcast icon.
All ink is currentColor; the one dot is var(--pk-accent) — so the
mark inverts onto ink with no edits. True semicircle A-arcs, butt caps, no
rounded corners.
Not a shrunk mark: fewer, heavier arcs and a bigger dot so it survives down to 16 px. Shown here at true 48 / 32 / 16 px next to the paper & ink tile.
The wordmark is “Politick” outlined to true vector paths in Playfair Display SemiBold (HarfBuzz shaping → fontTools outlines) — font-independent, identical everywhere. Letters stay all-ink; the only colour is the mark’s tittle dot and, in the tagline, the phrase ON RECORD.
Minimum size: full mark ≥ 32 px tall; favicon build legible to 16 px;
horizontal lockup ≥ 22 px mark height. Generated by
design/system/logo/mark.py + wordmark.py + favicon.py.
Colour
Ink + warm paper as primary; a single soft-red accent used sparingly.
Red is muted from vermilion #C5482F so it carries no party charge — and there is
no green. A brighter red is reserved only for alert states. Greys are
warm (they carry the paper’s beige cast), so the whole surface reads as one printed material.
Exact values from tokens.css.
Core — FIXED, never altered
Neutral ramp — warm greys
Accent companions
Dark / inverted surface — data-theme="ink" · same token names, remapped
Party dots — DATA, not brand · PENDING the real Sri Lankan register
Typography
An engraved newspaper-of-record serif for display, a clean humanist sans for UI/body, and a tabular monospace for dates, counts and citations. All SIL OFL, self-hosted woff2 (no CDN). This specimen is set in the actual fonts.
Display — Playfair Display
Body / UI — IBM Plex Sans
Tabular data — IBM Plex Mono (tnum · lnum)
| MP | Speeches | Words | Citation (date · page · column) |
|---|---|---|---|
| Member A | 1,248 | 84,019 | 2024-11-21 · p.412 · col.3 |
| Member B | 225 | 9,330 | 2024-11-08 · p.097 · col.1 |
| Member C | 78 | 1,004 | 2024-10-30 · p.311 · col.2 |
| Member D | 18 | 211 | 2024-10-02 · p.058 · col.4 |
Figures are tabular — digits align in columns. 0123456789 over 1111111111 / 0000000000.
The broadcast vocabulary
The mark’s language — an origin dot + concentric
arcs — becomes working UI: status/activity dots, the broadcast fan (pulse / tick /
cite), list bullets, dividers and dotted leaders. True vector from one parametric source
(design/system/motifs.py), mirrored 1:1 as Svelte 5 components. Strokes are
currentColor; accents are var(--pk-accent).
design/system/motifs/
Wayfinding
A single-stroke line family on a 24px grid — utility icons (search,
navigation, mail, calendar, document, feed…) plus one per policy area (18 topics). True
vector, currentColor, butt caps, tuned to the mark’s weight; the
feed glyph echoes the broadcast arcs. From design/system/icons/icons.py.
Working parts
The tokenised interface kit the site is built from: buttons (soft-red
primary / outline secondary), search & filter fields, topic chips, the
AI summary label, provenance & status pills, stat figures, list
rows, tables and surfaces. All square, flat, hairline-ruled — built on
tokens.css, no rounded corners. From design/system/ui/ui.css.
In context
The hero — mark + outlined wordmark, the tagline PARLIAMENT. ON RECORD. FOR EVERY CITIZEN., a short descriptive paragraph and the meta line read · search · verify · made public. Everything is outlined to true paths (real HarfBuzz shaping → fontTools outlines): zero font dependency, pixel-identical in browser and print. Where the AI render set the meta line in green, here those words are ink with soft-red motif-dot separators.
Patterns
The mark made contiguous — true vector <pattern> tiles
(reusable as CSS backgrounds, any scale, recolourable). The production set is parameter-tuned to
the mark and built on named wallpaper-symmetry lattices (pg / pmm / p4m) so seamlessness is
provable. Decorative only — the pattern never competes with the record.
In context — the tiling behind the home page
From a bold header band to a barely-there full-page watermark.
Method comparison & build notes: politick-tilings.lukastk.dev.
The identity, applied
The full home page, built entirely from this system — logo, icons, UI atoms, motif kit and tokens. Each seamless tiling is shown behind it at two strengths: soft (a barely-there watermark) and bold (clearly present). The pattern always sits behind the record and never competes with it. Open each live (desktop):






Built by one generator
(design/bible-v2/home/build.py) over {waves, scales, interlock} × {soft, bold};
opacity tuned per motif by stroke weight (waves 0.05/0.10 · scales 0.06/0.15 · interlock
0.06/0.14).
It’s real code now
Every asset above is generated from a parametric source of truth and encoded in a stable token contract. The bundled sources (for reference / download):
--pk-* custom properties + the data-theme="ink" remap.Params dataclass.mark.py (byte-identical paths).Live in the repo under
design/system/ (logo / motifs / keyvisual / tokens) and design/DESIGN.md.
How to use it
#B84A38, used sparingly — the origin dot, a link, the primary action, one key word. A brighter alert red #D7372A is reserved only for errors and alerts.--pk-paper-raised), never by elevation. A printed document, not a SaaS dashboard.prefers-reduced-motion.