Imisium design systemV2October 2026

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.

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.

    --blue-600On white 6.88:1Text OK

  • Bright blue#3563FC

    Support. The breath meter, progress, the rising lines of the breath field.

    --blue-500On white 4.84:1Text OK

  • Cyan#02C9EE

    Fresh air. Highlights on Night and on brand blue. Never text on a light ground.

    --cyan-400On white 1.98:1Never text on light

Apricot#FFB481

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.

  1. 50#F3F7FF1.07
  2. 100#E2EBFF1.2
  3. 200#C8D9FF1.42
  4. 300#9FBDFF1.88
  5. 400#6C96FF2.82
  6. 500#3563FC4.84 AALogo bright blue
  7. 600#3045E06.88 AALogo indigo
  8. 700#2332B79.5 AAA
  9. 800#13268A12.56 AAA
  10. 900#081E6015.39 AAA
  11. 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.

  1. 50#EDFCFF1.05
  2. 100#D6F7FF1.13
  3. 200#B0EFFF1.26
  4. 300#72E3FF1.48
  5. 400#02C9EE1.98Logo cyan
  6. 500#17A9CB2.77
  7. 600#0C87A74.17 Large
  8. 700#086B866.07 AA
  9. 800#044F669.07 AAA
  10. 900#04384B12.56 AAA
  11. 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.

  1. 0#FFFFFF1
  2. 50#F9FAFC1.04
  3. 100#F0F2F71.12
  4. 200#E3E6ED1.25
  5. 300#CFD4DE1.49
  6. 400#8289983.51 Large
  7. 500#6C73834.75 AA
  8. 600#535B6C6.82 AA
  9. 700#3B425410.03 AAA
  10. 800#242B3D14.11 AAA
  11. 900#11172917.82 AAAInk
  12. 950#060B1B19.6 AAA

Apricot

The complement. Used rarely, and only to mark the human: an approval, a person checking, a highlight.

  1. 50#FFF5ED1.07
  2. 100#FFE8D71.18
  3. 200#FFD2B31.39
  4. 300#FFB4811.74Apricot
  5. 400#F9965C2.2
  6. 500#EB7B442.82
  7. 600#CD60333.95 Large
  8. 700#A54A285.82 AA
  9. 800#80361E8.52 AAA
  10. 900#5F271911.73 AAA
  11. 950#431B1114.96 AAA

Roles

Components use roles, never raw scale steps, so the system can be tuned in one place.

RoleTokenValueUsed forContrast
Paper--paper#FFFFFFThe page, and the logo’s homeSurface
Mist--mist#F0F2F7Panels, open rows, quiet fieldsSurface
Mist blue--mist-blue#F3F7FFBrand-tinted panelsSurface
Ink--ink#111729Headings and body text17.82:1AAA
Ink 2--ink-2#3B4254Secondary text, ledes10.03:1AAA
Muted--muted#535B6CQuiet text, captions6.82:1AA
Subtle--subtle#6C7383Placeholders and meta4.75:1AA
Line--line#E3E6EDHairlines between thingsSurface
Line control--line-control#828998Borders of inputs, chips, steppers3.51:1Non-text 3:1
Action--action#3045E0Buttons, links, checked states6.88:1AA
Action hover--action-hover#2332B7Hover on the action9.5:1AAA
Night--night#04153AThe one dark field: the automation demoSurface
On night--on-night-2#C8D9FFSecondary text on Night12.63:1AAA
Waiting on night--on-night-4#8197C9Steps that have not run yet6.14:1AA
Brand field--brand-field#3045E0The closing call to actionSurface
On brand--on-brand-2#E2EBFFSecondary text on brand blue5.75:1AA
Human--human#FFB481Approval steps, human checksSurface
Human ink--human-ink#80361EText on apricot tints7.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.

breathe75
breathe100
breathe112
breathe125
breathelive

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.

  1. Display

    48 to 96px

    Width 125 · weight 300 · line 1.0 · tracking −0.035em

    Room to breathe.

  2. Heading 2

    34 to 64px

    Width 125 · weight 330 · line 1.04 · tracking −0.03em

    Four steps. No surprises.

  3. Heading 3

    26 to 40px

    Width 116 · weight 380 · line 1.1

    The busywork, handled.

  4. Heading 4

    20 to 26px

    Width 108 · weight 500 · line 1.22

    People stay in charge.

  5. Lede

    18 to 21px

    Width 100 · weight 400 · line 1.5

    A simple process for busy people.

  6. Body

    16 to 17px

    Width 100 · weight 400 · line 1.6 · measure 66ch

    We build in short cycles and show you working software every week.

  7. Small

    15px

    Width 100 · weight 400 · line 1.55

    We only use this to reply to you.

  8. Caption

    13px

    Width 100 · weight 400 to 500 · line 1.45

    An example workflow with sample data.

  9. Data

    12px

    Martian Mono · weight 400 · tabular figures

    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

  1. --space-3xs4
  2. --space-2xs8
  3. --space-xs12
  4. --space-s16
  5. --space-m24
  6. --space-l32
  7. --space-xl48
  8. --space-2xl64
  9. --space-3xl96
  10. --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.

HairlineFloat

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 step

Tags

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.