--section-accent-1pop-redBuild pages that feel like Tell Your Friends.
This page defines the visual language at section level: hierarchy, shadow behaviour, card construction, and persuasion patterns.
Colour, border and shadow rules
One-pixel borders for now. Shadow colour is selected to reinforce the foreground colour or interaction state, not added as a default decoration.
--brutal-* and --pop-* aliases are legacy — they resolve to the same values but add confusion. The --font-body-brutal and --font-mono-brutal aliases both resolve to --font-sans.
Semantic token roles
Quick reference for what each approved token is for. Click to copy the token name.
Colour scales
Eight approved scales. Forest is intentionally inverted: 50 is the darkest brand anchor. Paper is not a brand scale.
Section accent rotation
Six slot colours keep section-level designs varied without ad-hoc palette choices.
--section-accent-2pop-blue--section-accent-3pop-yellow--section-accent-4pop-green--section-accent-5pop-orange--section-accent-6pop-pinkCorner radius
Compact corners for small objects, field radius for inputs, generous corners for cards, pills only for controls or short labels.
12px18px24px999pxShadow family
Neutral depth
Grounded structure without becoming playful.
4px 4px 0 var(--forest)Brand-led emphasis
Reinforces the lead colour.
4px 4px 0 var(--green)Interactive lift
Hover/focus edge without changing shape.
4px 4px 0 var(--lime)Warm punch
Promotional accents, metric highlights.
4px 4px 0 var(--sun)Surface textures
Reusable corner and surface treatments for block-colour cards.
Halftone fade
Dots dissolving from a corner.
.tex-halftoneStipple edge
Grain dissolving at the edge.
.tex-stipple-edgeDot grid
Uniform quiet rhythm.
.tex-dotgridEditorial gradient
Bottom-darkening wash.
.tex-editorial-gradChoose one voice for the whole header.
Headers use either Instrument Sans or Instrument Serif. Do not switch typeface or introduce italic emphasis inside a heading. Bold is reserved for proof and emphasis.
Type role family
Rare oversized moments that stop the scroll.
Main page-entry heading. Instrument Sans, direct voice.
Oversized non-hero editorial moments.
Editorial or cultural warmth. Instrument Serif, regular.
Working titles that structure the page.
Heading hierarchy
The branded ladder is role-based, not just HTML-level-based.
D0D1Page lead — one clear statement
hero heading · h1 · sansD2h1Page heading — warm editorial voice
page heading · serif 400h2Section heading — structural title
section heading · serif 400h3Card heading — local hierarchy
component heading · serif 400Heading hierarchy — sans voice
Apply .sans-heading when the same structural role needs the direct sans voice.
h1Page lead — one clear statement
sans 400h2Section title — structural heading
sans 400h3Card heading — local hierarchy
sans 400h4Component label — sub-group title
sans 400h5Minor heading — tight context
sans 400h6Lowest-level — rare use
sans 400Weight roles
--weight-displayCampaign momentum400 · large structural copy--weight-headingComponent heading500 · local hierarchy--weight-labelCampaign signal600 · labels & metadata--weight-emphasis42x ROAS700 · proof & interruptionLetter-spacing roles
--tracking-displayCampaign momentum-0.055em · large sans--tracking-headingMake it move-0.04em · structural headings--tracking-serifWord of mouth-0.02em · full serif--tracking-bodyReadable explanation0 · paragraphs & controls--tracking-labelCampaign signal0.01em · compact labelsText-flow spacing
Make it move
label-heading · 16pxOne connected system
Creative, media, data share the same signal.
heading-copy · 24pxParagraph one establishes the point.
Next paragraph develops it.
copy-copy · 12pxGive enough context for the next action.
copy-action · 24pxSet up the idea
Main content begins after a structural pause.
intro-content · 32pxSpacing scale
A 12-step spacing scale from 2px to 192px. Use the semantic token, not the pixel value.
--space-02px--space-14px--space-28px--space-312px--space-416px--space-524px--space-632px--space-748px--space-864px--space-996px--space-10128px--space-11192pxText-size ramp
Fluid type scale for body copy and metadata. Each size uses clamp().
--text-size-tinyMetadata, labels, footnotes.
--text-size-smallUI copy, description, secondary.
--text-size-regularBody text, paragraph copy.
--text-size-mediumEmphasised copy, section intros.
--text-size-largeLeads, deck copy, editorial openers.
Semantic body sizes
Token-based sizes for running copy, ledes, metadata, and labels.
--text-ledeLede — 1.125rem–1.375rem · line-height 1.5
--text-bodyBody — 1rem–1.125rem · line-height 1.6
--text-smallSmall — 0.875rem–0.9375rem · line-height 1.5
--text-labelLabel — 0.8125rem–0.875rem · line-height 1.4
Motion tokens
Easing curves and animation timing used across the system.
--anim-easeStandardcubic-bezier(0.22, 1, 0.36, 1)Primary easing for UI transitions and reveals.
--anim-ease-outOutcubic-bezier(0.33, 1, 0.68, 1)Decelerating motion for exits.
--anim-ease-in-outIn-outcubic-bezier(0.65, 0, 0.35, 1)Symmetric both-direction motion.
--anim-ease-bounceBouncecubic-bezier(0.34, 1.56, 0.64, 1)Overshoot for proof metrics and reveals.
Duration tokens
Animation speed is tokenised. Use the semantic role, not a raw value.
--anim-duration-fastFast · 0.3sMicro-interactions, hover states, immediate feedback.
--anim-duration-normalNormal · 0.6sCard reveals, section transitions, standard UI motion.
--anim-duration-slowSlow · 1sHero animations, scroll-triggered reveals, atmospheric.
Buttons, inputs and chips should look related
The component family should read as one system: rounded, direct, lightly offset, and legible at a glance.
Button family
Button axes
Input family
Text input
Short, single-line information.
Text area
Open context and rough briefs.
Focus state
Visible lime outline without changing border weight.
Validation state
Use message and colour shift together.
Selection controls
Chip family
Status chip
Single-dot state marker.
Choice chip
Interactive option for filters and forms.
Proof stamp
Emphatic evidence marker.
Metadata chip
Non-interactive taxonomy inside cards.
Families, not a pile of snapshots
Colour, content, size, and state differences become explicit variant axes instead of separate component identities.
Site navigation
SiteHeaderOne shared navigation family for the desktop header and open-menu state.
Open menu
SiteMenuForest rounded card with cream link list and close button.
Mobile header
SiteHeaderThe header as it appears on mobile.
Music player
MusicPlayerPlayer controls and track context in one component.
Service card
ServiceCardOne capability card with surface variants.
Make it move.
Creative, media, web connected.
Proof card
ProofCardMetric and supporting line as content properties.
Campaign artefacts
ProofReceiptThe proof receipt as an implemented evidence component.
Unconditional Love at Piccadilly Circus
42x return on ad spend- Attributed sales
- £880k+
- Markets reached
- 22
- Evidence type
- Platform data
A production-ready evidence recipe.
Project card
ProjectCardProject-entry component with taxonomy and client context.
Marina Abramovic x CIRCA
Signal ticker
SignalTickerA repeated editorial line with surface variants.
Creative direction · Paid media · Web & CRM · Tracking & proof
Trust wall
TrustWallName-led credibility section for broad client recognition.
Artists, labels, managers, institutions.
Proven layouts, not one-off arrangements
These section-level components follow the same hierarchy rules and token constraints as the rest of the system.
Process explainer
World multiplied by Flagship equals System
Three layers. One system.
World, flagship, and system accelerate together.
- No agency relay
- No translation loss
- No account managers
Capability wall
World. Flagship. System.
Three connected layers.
Strategy
Timelines, budgets.
Creative
Art direction, content.
Web
Sites, stores, journeys.
Media
Paid, CRM, reporting.
Proof monument
Unconditional Love at Piccadilly Circus.
Marina Abramović × CIRCA. 42x ROAS.
Read the case studyRough brief form
Send the messy version.
You do not need a finished scope. Tell us what is moving, what feels stuck, and what a useful outcome would look like.
- What are you making, launching, or trying to move?
- Who is it for and what matters most right now?
- What feels unclear, stuck, or underperforming?
- What would a good outcome look like in six weeks?
Useful frictionGive structure, but keep the tone human.
Reusable grids and page structures
Structural components that give consistent shape to editorial pages, campaign decks, and data-heavy sections.
Layout patterns (editorial page, deck page, proof page, portal) described in the project README.
Principles that keep the system coherent
These guidelines apply regardless of which component, token, or layout is in use.
One voice per heading
Don't mix serif emphasis inside a sans heading. Change the whole heading's voice.
Proof before philosophy
Lead with the measurable outcome. Context comes after the number.
One border style
1px solid var(--line). No 2px, no dashed except in the rough-brief form.
No inline styles in production
Every visual property maps to a token or Tailwind class.