The design system

Everything on this site reads from one tokens file. The same file feeds our Flutter and React Native apps. Switch the theme in the header to see every token change at once.

Colour

Showing the live theme. Both values are listed; text pairs meet 4.5:1 and borders 3:1 in each.

  • --paper

    Sunrise: #f7f3ea

    Midnight: #0e1320

    Page background in both themes. Text and marks read on it: ink, ink-muted, brand, success.

  • --surface

    Sunrise: #ffffff

    Midnight: #161d2e

    Cards, form fields and raised panels that sit on paper. Same text pairs as paper.

  • --ink

    Sunrise: #14181f

    Midnight: #ece8df

    Primary text on paper and surface (13.7:1 or better in both themes).

  • --ink-muted

    Sunrise: #5a6270

    Midnight: #a3abba

    Secondary text, captions and helper copy on paper and surface (5.5:1 or better).

  • --line

    Sunrise: #d9d3c4

    Midnight: #26304a

    Decorative hairlines and dividers only. Never the sole border of a control: it is below 3:1.

  • --border-strong

    Sunrise: #8a8575

    Midnight: #6b7899

    Borders of inputs, buttons and cards that must be perceivable (3:1 or better on paper and surface in both themes).

  • --brand

    Sunrise: #a52320

    Midnight: #f0694d

    Shrine red, matched to the red logo artwork. The single accent: primary buttons and links. Text and fills on paper and surface (5.4:1 or better).

  • --brand-hover

    Sunrise: #861b18

    Midnight: #ff8566

    Hover and pressed state of brand fills and links. Stronger than brand in both themes.

  • --on-brand

    Sunrise: #ffffff

    Midnight: #0e1320

    Text and icons on a brand or brand-hover fill (6:1 or better). Never literal white in Midnight.

  • --success

    Sunrise: #0b6e7f

    Midnight: #5cc8d9

    Confirmed and sent states, always with a word or icon. Teal-blue so it is never read against red by hue alone. On paper and surface (5.3:1 or better).

  • --danger

    Sunrise: #a52320 (= brand)

    Midnight: #f0694d (= brand)

    Error text and error borders. Shares the brand red on purpose; always paired with an icon and a written message, and never shown beside a brand button.

  • --focus-ring

    Sunrise: #14181f (= ink)

    Midnight: #ece8df (= ink)

    Keyboard focus outline: 2px solid with a 2px gap of paper. Solid, 13:1 or better on every surface.

Type

Fraunces for headlines, Plus Jakarta Sans for interface and copy, JetBrains Mono for labels and data. Display sizes scale fluidly with the screen.

Display

  • display-xl · 70px/72px · 500 Software that ships.
  • display-lg · 56px/60px · 500 Offline-first, by design
  • h1 · 44px/50px · 500 What we build
  • h2 · 36px/42px · 500 Approach
  • h3 · 28px/36px · 500 Apps and software

Interface

  • h4 · 22px/30px · 600 How much does it cost?
  • body-lg · 20px/32px · 400 An engineering studio for apps, backends and AI.
  • body · 18px/29px · 400 We build software that runs your business, not just demos well.
  • body-sm · 15px/24px · 400 Reply within one business day.
  • button · 16px/20px · 600 Book a free roadmap call

Technical

  • label · 13px/16px · 500 CASE STUDY 01
  • code · 14px/22px · 400 --brand

Spacing and radius

  • space-14px
  • space-28px
  • space-312px
  • space-416px
  • space-524px
  • space-632px
  • space-748px
  • space-864px
  • space-996px
  • space-10128px
  • radius-sm4px
  • radius-md8px
  • radius-lg16px
  • radius-pill999px

Components

Primary action Secondary action Disabled CLIENT WORK IN-HOUSE BUILD

The supplied logo artwork, unmodified: red on surface in Sunrise, white in Midnight.