Built from three soft forms.
Everything on this site, from the colour of a button to the pace of an animation, grows out of the founder’s logo. This page shows how, so anyone can extend the system without breaking it.
Logo
The logo is the founder’s own drawing, used exactly as supplied: three soft forms in indigo, bright blue and cyan, and a wide, light wordmark in indigo. We never redraw, recolour or rearrange it. The site draws it inline from the original paths so it stays sharp at any size.
Lockup. Use it wherever there is room.
Mark. For small spaces: icons, the favicon, the guarantee seal.
Clear space
Keep a margin on every side at least as tall as the cyan form, about half the logo’s height. Nothing else enters that space: no text, no edges, no other marks.
x = the height of the cyan form = 0.46 times the logo’s height.
Minimum size
Below these sizes the wordmark’s thin strokes start to break up. Use the mark on its own when space is tighter.
Where it can sit
Only on white or near-white grounds, where it was designed to live. The number is the wordmark’s contrast on each ground.
Never
- Logo
On dark or saturated colour. The blue wordmark falls to 2.6:1 on Night. Dark sections simply carry no logo.
In any colours but these. No white, black, single-colour or gradient versions. Always indigo, bright blue and cyan, exactly.
Stretched or squashed. Scale it evenly, or not at all.
Rotated or tilted. The forms already lean. The logo itself stays level.
With effects. No shadows, glows, outlines or blur.
- Imisium
Rearranged or retyped. The mark sits to the left of the drawn wordmark. Never stack it or set the name in a font.
Motion and the logo
In the name section the three forms breathe with the site’s rhythm. They settle back to exactly their drawn size on each inhale and ease down by at most 4% on the exhale, so they never grow past the original. With reduced motion on, they never move. Elsewhere the logo is still.
Colour
Three colours from the logo, a cool neutral that sits quietly beside them, one warm complement used sparingly, and three colours that only ever mean something went right, needs attention, or went wrong.
The logo’s colours
- Indigo#3045E0
The action colour and the wordmark. Buttons, links, focus rings, the one thing to press.
- Bright blue#3563FC
Support. The breath meter, progress, the rising lines of the breath field.
- Cyan#02C9EE
Fresh air. Highlights on Night and on brand blue. Never text on a light ground.
Why apricot
Every colour in the logo is cool, so the system needed one warm note to stop it feeling cold. Apricot sits almost exactly opposite the logo blue on the colour wheel (hue 55 against 266 in OKLCH), so the two make each other look brighter instead of fighting. It is soft rather than loud, which suits the logo’s rounded character.
It has one job: it marks the human. The step where a person approves, the draft that waits for your OK, the reassurance that someone checks. Because it is rare, it keeps that meaning. It is never a button, a link or a warning.
Scales
Eleven steps each, generated in OKLCH so equal steps look equally different. The number under each swatch is its contrast against white.
Blue
Both logo blues live on this one scale: Bright blue is 500, Indigo is 600. The darks lean navy, never violet.
- 50#F3F7FF1.07
- 100#E2EBFF1.2
- 200#C8D9FF1.42
- 300#9FBDFF1.88
- 400#6C96FF2.82
- 500#3563FC4.84 AALogo bright blue
- 600#3045E06.88 AALogo indigo
- 700#2332B79.5 AAA
- 800#13268A12.56 AAA
- 900#081E6015.39 AAA
- 950#04153A17.89 AAA
Cyan
Built around the logo cyan at 400. Fresh and light, so it fills and highlights; it never carries text on a light ground.
- 50#EDFCFF1.05
- 100#D6F7FF1.13
- 200#B0EFFF1.26
- 300#72E3FF1.48
- 400#02C9EE1.98Logo cyan
- 500#17A9CB2.77
- 600#0C87A74.17 Large
- 700#086B866.07 AA
- 800#044F669.07 AAA
- 900#04384B12.56 AAA
- 950#04253315.94 AAA
Neutral
Cool greys tinted toward the logo blue (hue 264 to 268), so they sit quietly next to it. No cream, no warm greys.
- 0#FFFFFF1
- 50#F9FAFC1.04
- 100#F0F2F71.12
- 200#E3E6ED1.25
- 300#CFD4DE1.49
- 400#8289983.51 Large
- 500#6C73834.75 AA
- 600#535B6C6.82 AA
- 700#3B425410.03 AAA
- 800#242B3D14.11 AAA
- 900#11172917.82 AAAInk
- 950#060B1B19.6 AAA
Apricot
The complement. Used rarely, and only to mark the human: an approval, a person checking, a highlight.
- 50#FFF5ED1.07
- 100#FFE8D71.18
- 200#FFD2B31.39
- 300#FFB4811.74Apricot
- 400#F9965C2.2
- 500#EB7B442.82
- 600#CD60333.95 Large
- 700#A54A285.82 AA
- 800#80361E8.52 AAA
- 900#5F271911.73 AAA
- 950#431B1114.96 AAA
Roles
Components use roles, never raw scale steps, so the system can be tuned in one place.
| Role | Token | Value | Used for | Contrast |
|---|---|---|---|---|
| Paper | --paper | #FFFFFF | The page, and the logo’s home | Surface |
| Mist | --mist | #F0F2F7 | Panels, open rows, quiet fields | Surface |
| Mist blue | --mist-blue | #F3F7FF | Brand-tinted panels | Surface |
| Ink | --ink | #111729 | Headings and body text | 17.82:1AAA |
| Ink 2 | --ink-2 | #3B4254 | Secondary text, ledes | 10.03:1AAA |
| Muted | --muted | #535B6C | Quiet text, captions | 6.82:1AA |
| Subtle | --subtle | #6C7383 | Placeholders and meta | 4.75:1AA |
| Line | --line | #E3E6ED | Hairlines between things | Surface |
| Line control | --line-control | #828998 | Borders of inputs, chips, steppers | 3.51:1Non-text 3:1 |
| Action | --action | #3045E0 | Buttons, links, checked states | 6.88:1AA |
| Action hover | --action-hover | #2332B7 | Hover on the action | 9.5:1AAA |
| Night | --night | #04153A | The one dark field: the automation demo | Surface |
| On night | --on-night-2 | #C8D9FF | Secondary text on Night | 12.63:1AAA |
| Waiting on night | --on-night-4 | #8197C9 | Steps that have not run yet | 6.14:1AA |
| Brand field | --brand-field | #3045E0 | The closing call to action | Surface |
| On brand | --on-brand-2 | #E2EBFF | Secondary text on brand blue | 5.75:1AA |
| Human | --human | #FFB481 | Approval steps, human checks | Surface |
| Human ink | --human-ink | #80361E | Text on apricot tints | 7.93:1AAA |
Semantic colours
Reserved for state. Each always travels with an icon and words, never colour alone.
Success. Bill created in Xero.
50 #E6FCEC200 #AEE8C1500 #36AC62700 #227240
Text 700 on 50: 5.49:1
Warning. Running cost is near the limit you set.
50 #FFF7DD200 #FADB90500 #F2AB19700 #8B5510
Text 700 on 50: 5.76:1
Error. That didn’t send. Check your connection.
50 #FFF2F1200 #FFC3C0500 #E94646700 #BE2327
Text 700 on 50: 5.56:1
Key contrast pairs
- AaInk on Paper17.82:1AAA
- AaMuted on Paper6.82:1AA
- AaMuted on Mist6.09:1AA
- AaPlaceholder on Paper4.75:1AA
- AaIndigo on Paper6.88:1AA
- AaWhite on Indigo (buttons)6.88:1AA
- AaBlue 200 on Night12.63:1AAA
- AaCyan on Night9.03:1AAA
- AaCyan 200 on brand blue (large text)5.45:1AA
- Cyan on Paper (never as text)1.98:1Fails
How much of each
Roughly, across a page. Blue stays rare enough to mean “act here”, and cyan and apricot stay rarer still.
- Paper and Mist 70%
- Ink 13%
- Blue 10%
- Night 5%
- Cyan 1%
- Apricot 1%
Rules
- One action colour: Indigo. If it is blue and filled, you can press it.
- Cyan is never text on a light ground. It is 1.98:1 on white.
- The logo only sits on white or near-white.
- Night appears once, for the automation demo. Brand blue appears once, for the closing call to action.
- No gradients, except one soft light at the top of the Night panel.
- Secondary text on a coloured ground is a tint of that ground, never grey.
Typography
One family does nearly everything. Width is the lever: wide and light for display, the way the wordmark is drawn, and normal width for reading.
Zalando Sans
Variable: width 75 to 125, weight 200 to 900. By Zalando, 2025. SIL Open Font License, free for commercial use. Self-hosted, Latin subsets, one 86KB file for all text.
Chosen because at full width and light weight it is the closest free match to the wordmark: wide, round bowls, a high x-height. At normal width it is a calm, legible grotesk for reading.
Martian Mono
Variable weight 100 to 800. By Evil Martians. SIL Open Font License. Self-hosted.
Used only for data: timings, IDs, values, token names. Its broad proportions echo the wide display type. Never for labels or decoration.
The width axis
The same word at four widths. On the home page, the hero’s last line, “and nobody else’s.”, moves between 112 and 125 with every breath, and section titles widen into place as they arrive.
Scale
Fluid between a 360px and a 1600px screen. Two tiers: text sizes step by about 1.25, display sizes by about 1.55. Display never passes 96px.
Room to breathe.
Four steps. No surprises.
The busywork, handled.
People stay in charge.
A simple process for busy people.
We build in short cycles and show you working software every week.
We only use this to reply to you.
An example workflow with sample data.
INV-2291 · 7.8s · #3045E0
Usage
- Headings are set wide and light, like the wordmark. Reading text is set at normal width.
- Sentence case for headings, buttons and labels. The guarantee seal is the one place set in capitals, as seals are.
- Emphasis comes from colour, weight or width. There are no italics.
- Body text runs no wider than about 66 characters.
- Numbers in tables and steppers use tabular figures. Big standalone numbers do not.
- Sans-serif only. No serif appears anywhere in the system.
Space and layout
A 4px base, a twelve-column grid, and generous room between sections. Tight inside a group, generous between groups, and always more space above a heading than below it.
Spacing scale
- --space-3xs4
- --space-2xs8
- --space-xs12
- --space-s16
- --space-m24
- --space-l32
- --space-xl48
- --space-2xl64
- --space-3xl96
- --space-4xl128
Grid
- Columns
- 12 on desktop, collapsing to one on phones
- Content width
- 1440px maximum
- Side gutter
- 20 to 64px, fluid
- Column gap
- 16 to 32px, fluid
- Section padding
- 80 to 144px top and bottom
- Breakpoints
- 560 · 720 · 960 · 1024 · 1100
Shape and depth
The mark is made of capsules with soft, round ends. So anything you can press is a capsule too. Things that hold content get softer corners the bigger they are, and rows of data stay square. The same radius is never used for everything.
- --radius-xs6px · Tags, checkboxes
- --radius-s10px · Small inner pieces
- --radius-m16px · Inputs, output cards
- --radius-l24px · Cards, open rows
- --radius-xl36px · Panels, the demo stage
- --radius-pill999px · Anything you press
The capsule bullet
A small capsule leaning 22 degrees, the angle of the mark’s forms. It marks list items and promises, in indigo, bright blue or cyan.
Depth
Hairlines first. One soft shadow for things that float, and a deeper one for cards on Night. No glow, and no glass for decoration: the one frosted material sits under floating controls (the nav, the menu, the pause button) so content can scroll beneath them.
Components
Every piece below is the real component, styled by the same tokens the site uses. Hover, press and tab through them.
Buttons
One action colour. Capsule shape, a small round icon chip that nudges in the direction it points. 48px tall by default and 56px when it leads a section; never smaller than 44px.
Links
Inline links are indigo and underlined. Quiet links in navigation and the footer are ink, underlined on hover.
An arrow link for a single next stepTags
Read-only labels. Small corners, because you can’t press them.
Free · 30 minutesFrom launch dayNeeds your OKResolvedCheck thisFailed
Chips
Pressable filters for picking one or many. They gain a check when selected, so state never relies on colour alone.
Form fields
Enter a valid email address, like [email protected].
Labels sit above fields, in words. Borders are Neutral 400 (3.5:1), focus adds a 2px indigo edge and a soft Blue 200 ring, errors name the problem and how to fix it.
Segmented control
For switching between a few views, as in the demo. A white capsule slides to the chosen option.
Meter
One value against a limit: the fill and its track come from the same blue ramp.
045% of a 38-hour week
Panels and cards
Mist panel
Calculators, forms, open rows.
Blue panel
Promises and guarantees.
Output card
What an automation produces. In the demo these land on Night with a deeper shadow, like cards on a desk.
DraftNeeds your OK
Hi Tolu, thanks for getting in touch. Would Thursday at 10:00 work for a quick call?
Motion
Ìmísí means breathing into something, so the whole site moves to one slow breath: six a minute. Motion is calm, it always has a job, and it never hides content.
Inhale
One clock drives the hero’s breath field and its last line, the nav meter, the logo in the name section and every breathing loop, so they all move together. Pause it, and they all hold still together.
Principles
- Type inhales into place. Headings widen along the width axis as they arrive, like a chest widening on a breath in.
- The hero takes one breath. The headline widens as one piece while the field’s hills rise beneath it. Nothing in the hero slides in, and its line breaks never change while it breathes.
- Respond on press. Anything you can press shows it the moment the finger lands, not when it lifts.
- Springs, so nothing is locked. Opening, closing and sliding run on a critically damped spring that starts from wherever things are, so a second tap mid-way turns them around. Nothing overshoots.
- The browser scrolls. Native scrolling answers the wheel, trackpad and finger at once.
- Statements and steps arrive with the scroll. Promises, steps and beliefs settle into place as you scroll, at the speed of your hand, and lift away if you scroll back. Each moves in its own way, from the mark’s forms. What people read closely or use stays still.
- One moving thing at a time. The demo is the one show; everything else is quiet.
- Visible by default. Content never waits on animation. Without JavaScript everything is there.
- Exits are faster than entrances. Things arrive gently and leave quickly.
- The breathing can be paused. The button in the hero and the nav's breath meter pause every loop on the site, and the choice is remembered.
- Reduced motion is respected. Loops stop, links to a section jump instead of glide, the demo shows its finished state, and state changes still show without travel. Switching pages, workflows and the menu becomes a short cross-fade.
Timing
- --dur-press
- 90ms · Pressing: shows the moment a finger lands
- --dur-fast
- 160ms · Colour and hover changes
- --dur-base
- 280ms · Small state changes
- --dur-spring-fast
- 300ms · Spring for small things: icons, checks, letting go
- --dur-spring
- 450ms · Spring for panels, menus, the nav, the switch
- --dur-spring-slow
- 560ms · Spring for rows and answers opening
- --dur-slow
- 560ms · Big sliding surfaces
- --dur-reveal
- 900ms · Highlights and entrances
- --dur-breath
- 10s · Inhale 4s, hold 1s, exhale 5s
Easing
- --ease-springAnything you open, close or press
- --ease-outEntrances and landings
- --ease-in-outMoving between states
- --ease-breathBreathing loops
Voice
The words follow the same rules as the design: plain, calm and specific.
Say “Invoices get read, matched and filed.”
Not “Unlock seamless AI-powered finance.”
Say “A person approves anything that touches money.”
Not “Human-in-the-loop orchestration.”
Say “Fixed price, agreed before we start.”
Not “Flexible, value-based engagements.”
- Short sentences. Concrete nouns: invoices, leads, inbox, spreadsheet.
- No em dashes or en dashes. Use a full stop, a comma or a colon.
- Never “unlock”, “supercharge”, “seamless” or “elevate”.
- Never invent proof: no fake logos, testimonials or numbers. Label sample data as sample data.