Styleguide

Design system 4.0, called Redaction. This page is built from its canon: one file of token values and one document of rules.

Version 4.0 last ruling 29 October 2026

Overview

Rules
34: 24 have an automatic check, 6 have one for part of the rule (R-4, R-6, R-7, R-13, R-23 and R-29), 4 are checked by review only (R-9, R-16, R-21 and R-26)
Do and don’t
18 pairs; the Storybook draws each in both modes
Parts
34 parts, 8 marked Trial; Link has no part of its own: it is a base rule
Colour
5 colour sets in 2 modes; media and TV stay dark in both
Contrast
364 pairs measured, each at or above the floor for its use (Lc 30 to 75)
Type
3 faces, 8 rungs on the canvas, body 17px

Counted from the canon and the contrast measurements when this page was built.

Rules

Numbered as the canon numbers them; a number is never reused. Where this page and the canon disagree, the canon wins.

Signature and headlines

  1. R-1 The redaction bar is drawn over closed in “The eye is closed.” and nowhere else: not in an H1, a Plate, an entry page, an empty state, a mock or a specimen. The bar stays a signature because it sits on one word in one sentence and nowhere else. pair 1 · ruled
  2. R-2 Every H1 on every surface is one ink at the context’s display weight: no accent word, no <em>, no second colour, no bar. A headline in one ink is read in one pass; an accent word pulls the eye to itself before the sentence. pair 2 · ruled
  3. R-3 No kicker, eyebrow, pill, badge or numbered label above a heading; a source or date is a meta line after it. The reader comes for the heading, and a label above it is read first while saying less. pair 3 · ruled
  4. R-4 One primary fill per page at natural width; a selected tab, row or nav item is text plus a rule, a selected segment is the raised surface tone on a 1px control edge, and no selected state is amber. A fill on a selected item would blur which control is the one to press next. partly by review, pair 10 · changed

Containers and layout

  1. R-5 No card: a bordered or filled block is only Notice, Field, Sheet, Dialog, Confirm or Plate, and none sits inside another; the one other filled block is the television drawn on /tour's beat 05. Every edge is something to look past, so the few boxes that remain each mean one thing. pairs 7 and 8 · changed
  2. R-6 No grid of like boxes: never three or more equal containers in a row each with a glyph, a title and a sentence. A row of like boxes asks the reader to compare shapes before reading what is in them. partly by review, pair 7 · changed
  3. R-7 No stat tile and no hero number: a number sits inline at body size with its server time, or in a Plate with a source, and a round invented figure never ships. If a number is set large and alone, it looks like a boast with no time or source behind it. partly by review, pair 4 · ruled
  4. R-8 Flat on the ground: no shadow, glass, gradient, glow, halo, background pattern, side stripe or hover lift; radius 0 but the bar, the pill and the capsule. A shadow or a glow adds depth to a flat page and draws attention away from the words. pair 9 · ruled
  5. R-9 Content before controls: at 320 a row’s label shows twelve characters before its controls, or the controls move to the row’s detail. On a small screen the reader needs to know what a row is before what it does. by review only · ruled
  6. R-10 No carousel, marquee, auto-scroll, strip of customer quotes or wall of logos. Content that moves by itself or waits behind a swipe can be missed, and a strip of quotes or a wall of logos asks to be taken on trust. pair 15 · ruled

Colour

  1. R-11 No green for a live, ready, ok or up-to-date state anywhere: StatusChip, Plate and Notice lose their live and ok tones, the green role leaves the colour set, and the status palette is warn, alert and neutral. Colour is kept for what needs the reader, so a colour on a working state is noise they learn to skip. pair 5 · ruled
  2. R-12 No indicator of any colour for a thing that works: a working thing is silent, and a state shows only beside the Button or Link that acts on it. When a working thing says nothing, the reader looks only where there is something to do. pairs 5 and 6 · ruled
  3. R-13 Colour never travels alone, no percentage or bar is coloured unless an operation is running, and every colour is a semantic token. Some readers cannot tell colours apart, so a colour always comes with a word and marks only what is happening now. partly by review · ruled
  4. R-14 Body text is --ink-primary or --ink-secondary (Lc ≥ 75); --ink-tertiary carries labels and meta only; --ink-decorative is never text; grey never sits on a coloured ground. Body text uses the two strongest inks because they carry enough contrast for a long read. pair 11 · ruled

Type and readability

  1. R-15 Body is 17px, and nothing a user must read sits under 12px on desktop, 14px on touch or 24px on TV, scaled mocks and tour stages included; a device depiction on /tour is a picture and is held by its scale floor instead. Text under these sizes is hard to read, and the TV size is the largest because a TV is read from across the room. pair 11 · changed
  2. R-16 Prose runs at --measure and no line passes 75 characters; a hero sub-line is prose. Past about 75 characters the eye loses its place on the way back to the start of the next line. by review only, pair 11 · ruled
  3. R-17 Sentence case everywhere: no text-transform: uppercase, no all-caps string, and label tracking 0 (the TV label keeps 0.04em). Sentence case reads as words; capitals spaced wide are read letter by letter. pair 12 · changed
  4. R-18 Mono is for what you copy (codes, keys, references, times) and the Plate label; never nav, row values, footers, headings or prose. Mono marks what the reader copies, and anywhere else it makes plain words look like codes. pair 13 · ruled
  5. R-19 No italic, no bold display, no outlined or gradient text; emphasis in body is upright 600. Italic, outlined and gradient text is harder to read than upright text at a steady weight. pair 2 · ruled
  6. R-20 Three faces, each in its role, and nothing else: the platform face for running text, Atkinson Hyperlegible Next for headlines and the sign-off, Atkinson Hyperlegible Mono for codes and labels. Each face has one job, and the mono is drawn so that 0 and O, or 1 and l, can be told apart. changed
  7. R-21 One heading per section and it says the thing: no intro that restates it, no greeting, no formula (“The [X] for [Y]”, “Meet [name]”, “[Verb] your [noun]”, a question outside the ruled FAQ). Headings that say the thing let a reader skim a page by its headings alone. by review only · ruled

Iconography

  1. R-22 No emoji anywhere and no text glyph as an icon. Emoji and text glyphs are drawn by each device’s own font and look different from one device to the next. pair 14 · ruled
  2. R-23 Icons come only from the design system’s own glyph set, 16 or 20px in currentColor, in a row’s leading slot or an IconButton; never tinted, decorative, in a circle or tile, or above a heading. Icons from one drawn set at two sizes match each other, and an icon that only decorates adds nothing. partly by review, pair 14 · changed
  3. R-24 No stock, generated, 3D or isometric illustration; the pictures are the giraffe, the player’s own interface and footage, and on this page the Storybook’s Do and Don’t pairs. A stock or generated picture shows something that is not the product. changed

Status and reassurance

  1. R-25 The custody sentence appears once per surface in its ruled words; no stacked reassurance, no trust badge, no lock or shield glyph beside a form. A statement made once in its exact words is held to those words, and stacked reassurance around a form makes the reader wonder what is wrong. ruled
  2. R-26 One Notice visible per screen; the rest collapse to a count row. One notice gets read, and several at once get dismissed together. by review only · ruled

Motion

  1. R-27 One curve, three durations, the bar draw as the only signature: nothing pulses, blinks, bounces, floats, shimmers or loops, and nothing moves on scroll. Motion that repeats or follows the scroll competes with reading, and can make some readers unwell. pair 15 · ruled

Copy, public and in-product

  1. R-28 No em-dash and no en-dash pause in any UI string; a sentence ends, or a middle dot joins at most two short segments. A sentence that ends is easier to follow than two halves held together by a dash. pair 17 · ruled
  2. R-29 No forced contrast, no default triplet, no trailing participle clause. These patterns pad a sentence that a plain statement would say in fewer words. partly by review, pair 17 · ruled
  3. R-30 No marketing vocabulary: a word that sells the thing in place of saying what it does. The banned words are kept with the checks. Words that sell leave nothing to check. pair 17 · ruled
  4. R-31 A button is the verb and its object (“Add a source”, “Renew”), never “Get started for free”, “Learn more”, “Submit” or “OK”, and carries no arrow or chevron. A label that names the act and its object tells the reader what happens when they press it. pair 16 · ruled
  5. R-32 No exclamation mark, no greeting, no announced excitement and no cheerful apology; an error names what happened and what the reader can do. Cheerful words get in the way of a reader who wants to know what happened and what to do next. pair 18 · ruled
  6. R-33 Every state is written in its own words (empty, loading, error, disabled, zero-data), with no placeholder name and no filler text. Every state is something a reader will see, so each one says what is true at that moment. ruled
  7. R-34 No recurring saying as decoration: a ruled saying appears once, in its one home, and nowhere else; never as a label, strip, footer, meta line, plate source, placeholder or empty state. A line repeated on every page stops being read; said once, where it is explained, it keeps its meaning. changed

Do and don’t

Each pair sets the plain form beside the pattern it replaces. The pictures are the Storybook’s drawings of each side, one in the dark mode and one in the light. The Storybook page draws the same pairs from the parts.

  1. Sign-off DoThe bar is drawn over closed in “The eye is closed.” and nowhere else.
    R-1 Do: Sign-off, dark modeR-1 Do: Sign-off, light mode
    Don’tA bar over a word in a headline hides a word the reader came for.
    R-1 Don’t: Sign-off, dark modeR-1 Don’t: Sign-off, light mode
    R-1
  2. Headline DoA headline is one ink at the display weight.
    R-2 and R-19 Do: Headline, dark modeR-2 and R-19 Do: Headline, light mode
    Don’tAn accent word, an italic or a gradient.
    R-2 and R-19 Don’t: Headline, dark modeR-2 and R-19 Don’t: Headline, light mode
    R-2 and R-19
  3. Above the heading DoA source or a date is a meta line after the heading.
    R-3 Do: Above the heading, dark modeR-3 Do: Above the heading, light mode
    Don’tA kicker, a pill or a number above it is a label the reader reads before the words.
    R-3 Don’t: Above the heading, dark modeR-3 Don’t: Above the heading, light mode
    R-3
  4. A number DoA number sits inline at body size with its time.
    R-7 Do: A number, dark modeR-7 Do: A number, light mode
    Don’tA tile with the label on top sets a figure above the sentence it belongs to.
    R-7 Don’t: A number, dark modeR-7 Don’t: A number, light mode
    R-7
  5. A working state DoA working thing is silent.
    R-11 and R-12 Do: A working state, dark modeR-11 and R-12 Do: A working state, light mode
    Don’tA green chip or a check announces what the reader never asked about.
    R-11 and R-12 Don’t: A working state, dark modeR-11 and R-12 Don’t: A working state, light mode
    R-11 and R-12
  6. A state with a verb DoA state shows beside the Button that acts on it.
    R-12 Do: A state with a verb, dark modeR-12 Do: A state with a verb, light mode
    Don’tA chip with nothing to do is a status for its own sake.
    R-12 Don’t: A state with a verb, dark modeR-12 Don’t: A state with a verb, light mode
    R-12
  7. Claims DoClaims are prose in the measure.
    R-5 and R-6 Do: Claims, dark modeR-5 and R-6 Do: Claims, light mode
    Don’tThree like boxes in a row make the reader compare boxes instead of reading.
    R-5 and R-6 Don’t: Claims, dark modeR-5 and R-6 Don’t: Claims, light mode
    R-5 and R-6
  8. Containers DoOne Notice with its action.
    R-5 Do: Containers, dark modeR-5 Do: Containers, light mode
    Don’tA box in a box, or a coloured stripe down its side, adds edges and no meaning.
    R-5 Don’t: Containers, dark modeR-5 Don’t: Containers, light mode
    R-5
  9. Ground DoHairlines on the canvas.
    R-8 Do: Ground, dark modeR-8 Do: Ground, light mode
    Don’tA shadow, glass, a glow or a lift on hover moves the eye off the words.
    R-8 Don’t: Ground, dark modeR-8 Don’t: Ground, light mode
    R-8
  10. Selected DoA selected segment is text plus a rule, and the page keeps one amber fill.
    R-4 Do: Selected, dark modeR-4 Do: Selected, light mode
    Don’tA second one competes with the action.
    R-4 Don’t: Selected, dark modeR-4 Don’t: Selected, light mode
    R-4
  11. Body text DoBody text is 17px in the reading ink at the measure.
    R-14, R-15 and R-16 Do: Body text, dark modeR-14, R-15 and R-16 Do: Body text, light mode
    Don’tSmall grey text on a long line is hard to read.
    R-14, R-15 and R-16 Don’t: Body text, dark modeR-14, R-15 and R-16 Don’t: Body text, light mode
    R-14, R-15 and R-16
  12. Case DoSentence case, no tracking.
    R-17 Do: Case, dark modeR-17 Do: Case, light mode
    Don’tCapitals spaced wide are read letter by letter.
    R-17 Don’t: Case, dark modeR-17 Don’t: Case, light mode
    R-17
  13. Mono DoMono is for what the reader copies: a code, a key, a reference.
    R-18 Do: Mono, dark modeR-18 Do: Mono, light mode
    Don’tA nav label or a footer in mono reads as a code.
    R-18 Don’t: Mono, dark modeR-18 Don’t: Mono, light mode
    R-18
  14. Icons DoA 16px glyph in a row’s leading slot.
    R-22 and R-23 Do: Icons, dark modeR-22 and R-23 Do: Icons, light mode
    Don’tAn emoji, a glyph in a circle or a tile above a heading decorates and says nothing.
    R-22 and R-23 Don’t: Icons, dark modeR-22 and R-23 Don’t: Icons, light mode
    R-22 and R-23
  15. Motion DoThe bar draws once, then rests.
    R-10 and R-27 Do: Motion, dark modeR-10 and R-27 Do: Motion, light mode
    Don’tA pulse, a marquee or a reveal on scroll moves while the reader is reading.
    R-10 and R-27 Don’t: Motion, dark modeR-10 and R-27 Don’t: Motion, light mode
    R-10 and R-27
  16. Buttons DoA button is the verb and its object, with no arrow.
    R-31 Do: Buttons, dark modeR-31 Do: Buttons, light mode
    Don’t“Get started for free” says nothing the reader can act on.
    R-31 Don’t: Buttons, dark modeR-31 Don’t: Buttons, light mode
    R-31
  17. Sentences DoA sentence ends.
    R-28, R-29 and R-30 Do: Sentences, dark modeR-28, R-29 and R-30 Do: Sentences, light mode
    Don’tA dash that joins two halves, a “not just” contrast and the marketing vocabulary are the tells of text nobody read twice.
    R-28, R-29 and R-30 Don’t: Sentences, dark modeR-28, R-29 and R-30 Don’t: Sentences, light mode
    R-28, R-29 and R-30
  18. Errors DoAn error names what happened and what the reader can do.
    R-32 Do: Errors, dark modeR-32 Do: Errors, light mode
    Don’tA cheerful apology names neither.
    R-32 Don’t: Errors, dark modeR-32 Don’t: Errors, light mode
    R-32

Foundations

Drawn from the tokens. Every role in every set, with its contrast figures, is in the Storybook’s token pages.

Colour

The canvas roles in the dark and the light mode, each drawn on the ground its contrast was measured on: APCA Lc with the floor for its use, then the WCAG ratio. The light set is the paper one.

Role Dark Light
surface-page #090705 #f7f3eb
surface-raised #110f0d #fdfaf4
surface-sunken #1a1815 #ece7de
edge-hairline #1a1815 #ece7de
edge-default #282623 #dcd7cc
edge-strong #3a3735 #bdb7ab
control-edge #83807c Lc 35 (floor 30) · 5.1:1 #848078 Lc 60 (floor 30) · 3.6:1
ink-primary #f1eeea Lc 97 (floor 75) · 17.4:1 #090705 Lc 99 (floor 75) · 18.2:1
ink-secondary #d7d4d0 Lc 81 (floor 75) · 13.6:1 #3a3735 Lc 90 (floor 75) · 10.7:1
ink-tertiary #adaaa7 Lc 56 (floor 55) · 8.7:1 #605d5a Lc 75 (floor 55) · 5.9:1
ink-decorative #83807c Lc 35 (floor 30) · 5.1:1 #afaaa3 Lc 39 (floor 30) · 2.1:1
ink-on-accent #090705 Lc 37 (floor 30) · 5.0:1 on accent-fill #090705 Lc 37 (floor 30) · 5.0:1 on accent-fill
accent-fill #D6571E Lc 35 (floor 30) · 5.0:1 #D6571E Lc 60 (floor 30) · 3.6:1
accent-fill-hover #ffa746 #ffa746
accent-ink #ffa746 Lc 66 (floor 45) · 10.4:1 #842c00 Lc 83 (floor 45) · 8.1:1
redact-fill #D6571E Lc 35 (floor 30) · 5.0:1 #D6571E Lc 60 (floor 30) · 3.6:1
redact-reveal-fill #ffa746 #ffa746
status-warn #ffa746 Lc 66 (floor 60) · 10.4:1 #842c00 Lc 83 (floor 60) · 8.1:1
status-alert-fill #de3c37 Lc 33 (floor 30) · 4.6:1 #de3c37 Lc 62 (floor 30) · 3.9:1
status-alert-ink #ff988d Lc 62 (floor 60) · 9.7:1 #a92321 Lc 76 (floor 60) · 6.4:1
focus-ring #ffa746 Lc 66 (floor 45) · 10.4:1 #842c00 Lc 83 (floor 45) · 8.1:1
selection-bg #ffa746 #ffa746
selection-ink #090705 Lc 67 (floor 60) · 10.4:1 on selection-bg #090705 Lc 67 (floor 60) · 10.4:1 on selection-bg
scrim-canvas rgba(9,7,5,0.60) rgba(9,7,5,0.60)

Media, dark in both modes

  • surface-page
  • surface-raised
  • surface-sunken
  • surface-video
  • edge-hairline
  • edge-default
  • edge-strong
  • control-edge
  • ink-primary
  • ink-secondary
  • ink-tertiary
  • ink-decorative
  • ink-on-accent
  • accent-fill
  • accent-fill-hover
  • accent-ink
  • redact-fill
  • redact-reveal-fill
  • status-warn
  • status-alert-fill
  • status-alert-ink
  • focus-ring
  • scrim-top
  • scrim-bottom
  • scrim-panel
  • capsule
  • scrim-modal
  • shadow-text

TV, dark in both modes

  • surface-page
  • surface-raised
  • surface-sunken
  • surface-video
  • edge-hairline
  • edge-default
  • edge-strong
  • control-edge
  • ink-primary
  • ink-secondary
  • ink-tertiary
  • ink-decorative
  • ink-on-accent
  • accent-fill
  • accent-fill-hover
  • accent-ink
  • redact-fill
  • redact-reveal-fill
  • status-warn
  • status-alert-fill
  • status-alert-ink
  • focus-ring

Accent

  • surface-page
  • ink-primary
  • edge-default
  • focus-ring

Type

  • Aa 0O 1lI The platform face, running text
  • Aa 0O 1lI Atkinson Hyperlegible Next, the display and title rungs, public headlines and the sign-off
  • Aa 0O 1lI Atkinson Hyperlegible Mono, codes and labels
  • Display 48 to 72px, weight 300, leading 1.0; 44px on a phone
  • Title 36px, weight 300, leading 1.05; 28px on a phone
  • Heading 22px, weight 600, leading 1.25
  • Body 17px, weight 400, leading 1.55
  • Small 15px, weight 400, leading 1.5
  • Label 12px, weight 500, leading 1.4; 14px on touch
  • Code 20px, weight 500, leading 1.4
  • Tab 14px, weight 500, leading 1.3

Prose is set at the measure, 47ch.

Space and edge

  • hair 4px
  • tight 8px
  • inset 12px
  • gap 16px
  • stack 24px
  • section 40px
  • beat 64px
  • page 96px
  • radius 0 everywhere, 1px on the redaction bar
  • round: status chips and glyphs over video

Motion

curve
cubic-bezier(0.32, 0.72, 0, 1)
fast
120ms
base
220ms
slow
480ms
the bar’s draw
480ms

Icons

75 glyphs. In use, each takes the ink of the text beside it.

  • alert
  • arrow-down
  • arrow-left
  • arrow-right
  • arrow-up
  • bell
  • book-open
  • calendar
  • check
  • check-circle
  • chevron-down
  • chevron-left
  • chevron-right
  • copy
  • cpu
  • dashboard
  • download
  • edit
  • eye
  • eye-off
  • fedora
  • film
  • fingerprint
  • football
  • globe
  • grid
  • hash
  • help
  • hockey
  • home
  • info
  • key
  • lineups
  • link
  • list
  • lock
  • mail
  • maximize
  • menu
  • message-square
  • minimize
  • minus
  • monitor
  • more-horizontal
  • music
  • pause
  • pip
  • play
  • plus
  • refresh-cw
  • search
  • send
  • server
  • settings
  • shield
  • sliders
  • smile
  • snowflake
  • sources
  • star
  • star-outline
  • stop
  • sunglasses
  • tennis
  • trophy
  • tv
  • user
  • user-round
  • users
  • video
  • volume-2
  • volume-x
  • webhook
  • x
  • zap

Brand and voice

  • Readability comes first. Every design rule above removes something that stands between the reader and the words or the picture.
  • One idea: the thing that is not there. One device: the redaction bar, the shape of the giraffe’s closed eyes. It is drawn once per view, over the word “closed” in the sign-off, and nowhere else.
  • The players are dark, always. Light mode is for the reading pages.

Voice

Four traits: honesty, calibration, care without flattery and coherence.

  • No unmeasured numbersA number a reader cannot trace to a source is a claim nobody can check.
  • No claim that the source code is publicThe code is private, so a claim that anyone can read it would be untrue.
  • No internal repo references in public copyA private file proves nothing to a reader who cannot open it.
  • No internal-only routes from public copyInternal pages are working tools, and a visitor sent to one finds nothing written for them.
  • Exits are named by number: exit 1, exit 2A name made of a number says nothing about where an exit is or what it runs on.
  • No competitor comparisonAnother product’s choices are its own, so twiga’s pages say what twiga built.
  • No superlatives without proofBecause one counter-example breaks a superlative, the copy says what twiga does instead.

Terms

twiga’s exits
Stream routing infrastructure
provider login
A person’s provider credentials
source
What a person adds to their account
playlist
The M3U field only
account
What a person signs in to; “vault” only where the wiki and the verifier explain how it works
Guide
The programme guide, in every label; “EPG” only where the wiki explains what it is
twiga relay
The server; never “twiga server” or “twiga backend”
twiga player
The player’s name in full; never “TwigaPlayer”

Parts

Each opens in the Storybook with its states drawn. A part still being tried is marked Trial.

Button
Any action on a page: one primary, the rest quieter.
Field
Text or a code that someone types, with its hint and error.
Select
A choice from a list too long to show at once.
Textarea
Text longer than a line, such as a note or feedback.
Toggle
A setting with two values that takes effect as it is flipped.
Checkbox
An option that is ticked or not, alone or in a group.
SegmentedControl
A choice from a few options that all stay in view.
IconButton
An action where a glyph says enough, such as close or copy.
Divider
A hairline between groups of content.
Notice
A message about this page that comes with something to do.
Dialog Trial
A question or form to answer before going on.
Confirm
The extra step before an action that cannot be undone.
Toast
A short note on a failure, or on something that happened off screen.
Skeleton
The shape of content on its way, when the layout is known.
EmptyState
A line that says what is missing, with a way on if there is one.
Sheet
A panel that rises from the bottom edge to hold a short task.
ListRow
One line of a list: a label, a value and its action.
Disclosure
Extra detail, kept behind a row until someone opens it.
ProgressLine
How much of a task is done, when that is known.
Keycap Trial
A key name that hints at a shortcut, shown on hover or focus.
Monogram Trial
The tile for a channel in a list, grid or guide.
NowChip Trial
The way back to now in the guide.
Capsule Trial
A glyph button over the picture, such as play.
Chip Trial
A small label on a row: a category, a quality tier or a state.
Menu Trial
A short list of choices that opens from a control.
Slider Trial
A value set along a line, such as volume.
PageHead
The top of a page: a way back, the title and the page actions.
CopyValue
A value to copy, such as a code or an address.
Plate
One fact, where it comes from and when it was checked.
Redaction
The sign-off, with the bar over its last word.
StatusChip
A state worth naming: a glyph, a word and a colour together.
Lockup
The twiga.tv wordmark, wherever the name stands as a logo.
Mark
The giraffe, on a hero and nowhere else.
Icon
A glyph that takes the colour of the text around it.

Rulings

Design rulings in plain words, newest first.

29 October 2026 3 rulings

Rules changed: R-5, R-15 and R-24

The TV beat on /tour draws its television: one flat bezel and a centre stand in a neutral ink, with no logo, glow, shadow, reflection, gradient or border. R-5 allows it in that beat and nowhere else.

A mock in a device frame on /tour is a picture of the product, drawn from the player’s own parts on every deploy, never a screenshot. It is laid out at the device’s own size and scaled by one factor into its frame; below a minimum scale, a closer view or a simpler state takes over. R-15 holds it by that minimum scale instead of its type size.

The Do and Don’t pairs on this page are now pictures made from the Storybook, in the dark and the light mode. R-24 allows them here and nowhere else.

25 October 2026 5 rulings

Rules changed: R-4, R-5, R-6, R-17, R-20 and R-23

Every page has the same footer.

The redaction bar has one form, drawn inline over “closed” in the sign-off.

Every part has a one-line use and a stage: trial, stable or retiring. Only a part on trial or being retired shows a label.

Each section of the canon now states its rules as they hold today, and the dated rulings are its history. The readability rules keep their numbers, which are never reused, and each says why it exists, what holds it and where it is drawn. Three rules changed their words to match rulings that already stood: the three faces, the selected segment and the TV label.

The styleguide page draws the foundations: colour with its measured contrast, type, space, shapes, motion and icons. R-5, R-6 and R-23 are lifted for those drawings and nowhere else.

24 October 2026 1 ruling

The styleguide gets a public page of its own, built from the canon: the rules, the Do and Don’t pairs, the foundations, the parts and the design rulings. The Storybook, with every token and part in every state, moves to /storybook.

22 October 2026 10 rulings

Rules changed: R-34

A saying away from its one home is decoration, whatever its words.

An interface string says Guide, not EPG, and calls what a person adds to their account a Source, not a Stream.

A ruled saying appears once, in the one place it is explained, and never as decoration: not as a label, a strip, a footer line, a meta line, a placeholder or an empty state.

The signed-in account area is part of the player: it opens inside the player, dark in every mode, and closing it returns to the channel that was playing.

On a touch screen the 12px label steps up to 14px, the touch floor; with a mouse it stays 12px.

The readability rules on this page are adopted. Their purpose is that nothing stands between the reader and the words or the picture. The Storybook gains its page of Do and Don’t pairs.

The start page drops its strip of claim boxes. A claim it keeps is prose in its list, and its brand moment is its close.

No indicator, green or any other colour, for a thing that works: a working thing is silent. The status colours are warn, alert and neutral, and a state shows only beside the button or link that acts on it.

Every H1 on every surface is one ink at its context’s display weight: no accent word, no emphasis, no second colour, no bar.

The bar belongs to the signature alone: it is drawn over closed in “The eye is closed.” and nowhere else, once per view. Headlines lose their bars, and no reason label is drawn anywhere.

21 October 2026 1 ruling

Three faces, three roles. The platform face sets running text: body, small text, the heading rung, buttons and the signed-in product. Atkinson Hyperlegible Next sets the display and title rungs, the headlines of public pages and the sign-off. Atkinson Hyperlegible Mono sets codes and labels, where 0 and O, or 1, l and I, must never be confused.

16 October 2026 1 ruling

The on state of a toggle or a checkbox is the amber fill, and the knob’s position and the tick carry the state too.

15 October 2026 7 rulings

The reading measure is 47ch, which keeps the measured lines of prose under 75 characters. The layers stack base, sticky, overlay, modal and toast, from 0 to 40.

One confirm pattern: the first tap arms it, the word in the alert colour with a 1px alert border; a second tap within 4 seconds acts, and otherwise it disarms. A typed confirm shows the word to type above a code field, and its button waits until the word matches.

The parts list adds IconButton, PageHead, CopyValue and Disclosure, and Menu, Slider and Chip for the player. Label and Prose are utilities, not parts, and a link is a base rule, not a part. No Tag, no Steps and no new tones. Every interactive part declares its hover, focus, disabled, loading, error and empty states, or says why it has none.

No dimming layer behind a sheet: the sheet is opaque with a 1px top rule. Outside the player the one scrim sits behind Dialog and Confirm, where focus is held. A popover or modal in the player has no shadow: an opaque raised surface with a 1px edge.

No kicker above a heading: a source or a date is a meta line after it. Web labels are 12px at 500 with no letter-spacing. At phone width the display headline is 44px and the title 28px; at 1440 the display headline is 72px. No italic anywhere, prose included: emphasis is upright 600. Prose leaves more space above a heading than below it.

Amber is a fill in every context, paper included, and never a text colour: amber words use the accent ink. Each context sets its own colour scheme, caret and selection. A tone always comes with a word that names the state, so colour never travels alone.

Every surface has one mode, and the mode says what outranks expression. Persuade (the start page, the tour, pricing, download, the share cards): the one action, the brand moment, the truth of every claim. Read (the wiki, the journal, the info pages): measure, rhythm, hierarchy. Operate (onboarding, checkout, the account pages): scanability, consistency, states, density, the keyboard. Experience (the players): the picture, with the chrome out of its way.

10 October 2026 1 ruling

The phone tab label has its own step: 14px at weight 500 in the platform face.

2 October 2026 7 rulings

The sign-off is the first line of the footer on every public page, except where the page’s own close already carries it.

The tour alone may frame its pictures in a photographed device, with no drawn chrome and no glow.

No drawn device chrome and no glow anywhere: no drawn browser bar, window dots, address pill, status bar, notch or bezel around a picture of the player, and no bloom, glare or shadow around it.

The reading measure is set in measured characters, not the raw ch unit, because a zero is wider than the average letter: prose stops at about 75 characters a line at 17px.

Selected text takes the revealed word’s pair, so a selection meets the contrast floor too.

A revealed word sits on a lighter amber fill of its own, at the contrast a single word needs, and keeps its weight, so it keeps its width.

A link in running text is the reading ink with a 1px amber underline, so the underline, not the colour alone, marks it. The standalone text link keeps the amber ink, at weight 600 only.

26 September 2026 1 ruling

The signature shows once per view: a page whose own close carries it drops it from the footer. Every bar that hides a word reveals it the same way, on hover, keyboard focus or a tap that holds it, as a colour swap with no motion and no tooltip.

25 September 2026 14 rulings

There is no live chip anywhere. The player’s bar shows the picture quality only.

No caption led by a dash and no arrow on a button: the label is the verb. One primary fill per page, the quiet button second, a text link third.

Every picture of the player on a public page is built from the player’s own parts over footage, never a screenshot or a drawn copy.

The players are dark for good: the web player, its phone layout and the TV app draw only the dark set, and light mode does not reach them.

Nav links are sentence case in the platform face at the small size, never mono capitals. Sign in is an underlined link with a 44px target, not a button, and the page’s one primary action stays in the page.

The sign-off, with the bar over closed, is the signature of the whole site.

The giraffe shows on the start page at desktop widths only, top-aligned with the headline so its closed eyes sit at headline height. On a phone, the start page shows it only in the first-visit veil.

The parts list grows: Notice, SegmentedControl (44px at the least), Select, Textarea, ListRow, Skeleton, Icon, Dialog, Confirm and Toast. Nav, Footer and Row stay with each app. Button has no destructive variant: a destructive action is a quiet button with alert words, a 1px alert border and the arm or the typed confirm.

The touch sheet moves in 220ms, not 350ms, and the panel in 120ms, not 140ms. On TV the guide scroll and the surf strip slide do not animate.

On TV, a size in px at 1080p is half that in sp on the 960dp canvas, so 28px is 14sp.

Codes people have already saved keep the grouping they were saved in; the type they are set in changes.

The player takes the same warm neutral family as the site; the earlier cool cast is dropped. The accent context keeps its four roles only: no part sits on an accent ground.

Light mode stays for reading pages. Media and TV, the player’s contexts, stay dark in every mode. With no stored choice the site is dark, and auto follows the system setting.

Design system 4.0, Redaction, is adopted to replace the earlier system everywhere.