v2 — production vector supersedes the gpt-image-2 ideation bible
Sri Lankan Parliament · Hansard Record

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 logo system

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.

Mark · on paper
Mark · on ink (accent lifts to #CF6A55)
Monochrome — stamp / emboss / fax (dot → ink)
Clear space — one stem width on every side

Favicon — a redrawn small-size build

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.

favicon.svg · 48 / 32 / 16 px
48
32
16
favicon · on ink
48
32
16

Lockups — mark + outlined wordmark

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.

Horizontal · paper
Horizontal · ink
Stacked · paper
Stacked · ink
Horizontal + tagline — PARLIAMENT. ON RECORD. FOR EVERY CITIZEN.

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

The palette

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

Aa · CR 14.8
ink
#1C2024
Primary text & strokes · the mark’s arcs
Aa
paper
#F6F3EC
Primary surface — warm paper
Aa · CR 4.65
accent · soft red
#B84A38
THE accent — used sparingly
!
alert
#D7372A
Error / alert states ONLY

Neutral ramp — warm greys

Aa · 10.1
ink-strong
#3A3B3C
Strong secondary text
Aa · 6.54
muted
#5C564E
Captions, labels, secondary
Aa · 3.1
faint
#8C8A84
Disabled / placeholder only
rule
#D8D2C4
Hairlines, dividers, borders
rule-faint
#E6E2D9
Subtle dividers, zebra rows
paper-raised
#FBFAF5
Raised surface — tint, no shadow

Accent companions

Aa
accent-strong
#A23E2D
Pressed / active accent on paper
Aa
accent-tint
#EFD9D2
Selection / highlight wash

Dark / inverted surface — data-theme="ink" · same token names, remapped

surface
paper → ink
#1C2024
Surface becomes ink
raised
paper-raised
#25292E
Raised panel on ink
Aa · 14.8
ink → paper
#F6F3EC
Text becomes paper
Aa
muted (on ink)
#A6A39C
Muted text on ink
Aa · 4.56
accent (on ink)
#CF6A55
Lifted soft red — stays AA on ink
rule (on ink)
#3C4147
Hairline on ink

Party dots — DATA, not brand · PENDING the real Sri Lankan register

Placeholder hues — party colour is data and appears only as ≤8 px dots, never as fills. “No green” does not apply here.

Typography

Three families, self-hosted

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

4xl / 61 / wordmarkPolitick
2xl / 39 / h1What your Parliament said this week
xl / 31 / h2Hansard, readable and verifiable
lg / 25 / h3Adjournment debate
italic / editorialpoint of order, Mr Speaker

Body / UI — IBM Plex Sans

base / 16 / bodyThe free layer is whole: every count, speech and citation is public. Paid features are workflow — alerts, exports, dashboards — never withheld information.
sm / 14 / UISearch · Filter by sitting · Open citation
weightsRegular · Medium · Semibold · Bold

Tabular data — IBM Plex Mono (tnum · lnum)

MPSpeechesWordsCitation (date · page · column)
Member A1,24884,0192024-11-21 · p.412 · col.3
Member B2259,3302024-11-08 · p.097 · col.1
Member C781,0042024-10-30 · p.311 · col.2
Member D182112024-10-02 · p.058 · col.4

Figures are tabular — digits align in columns. 0123456789 over 1111111111 / 0000000000.

The broadcast vocabulary

Motif kit

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).

dot · filledon record / active / now
dot · inkprocessed
dot · ringunprocessed / pending
bulletaccent list bullet
pulse · 3live / activity ripple
cite · 2compact provenance mark
tick · 1progress / step
dot · party≤8px party marker
dot · filledon ink
dot · inkon ink
dot · ringon ink
bulleton ink
pulse · 3on ink
cite · 2on ink
tick · 1on ink
dot · partyon ink
Dividers & leader — record rules
…the same rules on ink
Svelte 5 components Dot.svelte Bullet.svelte Pulse.svelte Divider.svelte Leader.svelte in design/system/motifs/

Wayfinding

Icon set

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.

Politick icon set, on paper and ink
40 icons — utility + 18 topic icons, shown small/large on paper and ink.
Download icons.svg (sprite) source in design/system/icons/

Working parts

UI atoms

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.

Politick UI atoms on paper and ink
UI atoms — on paper and ink.
Download ui.css

In context

The key visual

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.

Politick key visual on paper
key-visual.svg — ink on paper. Self-contained, themeable.
Politick key visual on ink
key-visual-ink.svg — paper on ink (lifted accent #CF6A55) for inverted sections.

Patterns

Seamless tilings

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.

Waves tiling
Waves · pg — svg
Fish-scale tiling
Scales (seigaiha) · pmm — svg
Interlock tiling
Interlock · p4m — svg

In context — the tiling behind the home page

From a bold header band to a barely-there full-page watermark.

Bold header band
Bold header band
Light full-page watermark
Light full-page watermark
Subtle background texture
Subtle background texture

Method comparison & build notes: politick-tilings.lukastk.dev.

The identity, applied

The home page — tiling studies

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):

Home with the waves tiling, soft
Waves · soft — open ↗
Home with the scales tiling, soft
Scales · soft — open ↗
Home with the interlock tiling, soft
Interlock · soft — open ↗
Home with the waves tiling, bold
Waves · bold — open ↗
Home with the scales tiling, bold
Scales · bold — open ↗
Home with the interlock tiling, bold
Interlock · bold — open ↗

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

The system in code

Every asset above is generated from a parametric source of truth and encoded in a stable token contract. The bundled sources (for reference / download):

Live in the repo under design/system/ (logo / motifs / keyvisual / tokens) and design/DESIGN.md.

How to use it

Principles