Skip to content
Back to ORBIT
Preview theme

Styleguide

The tokens and components every Orbit screen is built from. Graphite neutrals, a warm-white canvas, one periwinkle accent, hairline borders, figures in mono. Data screens stay still; motion is reserved for the orbit motif and for state changes.

Colour

Roles, not raw values: components use these names and the theme supplies the colour. Dark is designed alongside light, not inverted.

Colour roles with light and dark values
RoleUseLightDark
canvasPage background#f6f6f4#101113
surfacePanels, tables, inputs#ffffff#17181b
surface-2Table headers, hover, sunken areas#efefec#1f2024
lineHairline dividers#e3e2de#2b2c31
line-strongControl borders (3:1)#8a8a90#6f7078
inkPrimary text#16171a#ecebe7
ink-2Secondary text#46474d#b6b6bb
ink-3Muted text, placeholders#67686f#8e8f96
accentPrimary action, links, focus#4b4fc4#a3a6f6
accent-inkText on accent#ffffff#14153a
accent-subtleSelection, accent badges#ebecfa#24254a
accent-textAccent text on subtle#3a3da3#c5c7ff
successWon, success text#1d6e47#73cf9f
success-subtleSuccess background#e3f1e9#11281c
warningAttention text#81530a#e9bd66
warning-subtleAttention background#f8eed9#2c2310
dangerLost, errors, destructive#ad2330#ff8b91
danger-subtleError background#f9e6e7#331719

Contrast

Every pairing the components use, computed from the token file (the same numbers a unit test enforces). Text needs 4.5:1; control borders and focus rings need 3:1.

Contrast ratios of colour pairings
Foreground on backgroundMinimumLightDark
ink on canvas4.5:116.5615.84
ink on surface4.5:117.9214.88
ink on surface-24.5:115.5613.64
ink-2 on canvas4.5:18.559.35
ink-2 on surface4.5:19.268.79
ink-2 on surface-24.5:18.038.06
ink-3 on canvas4.5:15.135.86
ink-3 on surface4.5:15.555.51
ink-3 on surface-24.5:14.815.05
accent on canvas4.5:16.048.40
accent on surface4.5:16.537.90
accent-ink on accent4.5:16.537.80
accent-text on accent-subtle4.5:17.549.03
success on success-subtle4.5:15.348.30
success on surface4.5:16.229.43
warning on warning-subtle4.5:15.748.81
warning on surface4.5:16.6110.09
danger on danger-subtle4.5:15.727.32
danger on surface4.5:16.867.91
line-strong on surface3:13.433.61
line-strong on canvas3:13.173.84
accent on surface-23:15.677.24

Typography

Geist for text, Geist Mono for figures, identifiers and labels. Product screens set 14px body for density; reading pages use 16 to 17px. Inputs are 16px on touch screens.

Display · 48/1.0 · −3.5%

Every opportunity

Title · 24/1.25 · −2%

Pipeline overview

Heading · 16/1.4 · 600

Deals closing this month

Body · 14/1.6

Notes, descriptions and table cells use the product body size.

Small · 13/1.5

Hints, metadata and secondary labels.

Mono figures · 14

$48,000.00 · ₹1,800,000.00 · 75%

Label · mono 11 · caps

Expected close

Space and shape

A 4px grid. One radius scale: 4px for badges, 6px for controls, 8px for panels; circles only for point-like markers. Hairline borders group content; shadows appear only on things that float (dialogs, menus).

Spacing (4px grid)

4
8
12
16
24
32
48

Radius and elevation

4 · badge
6 · control
8 · panel
pop · floating only

Focus

Press Tab: every interactive element shows the same 2px accent ring with a 2px offset. Focus is never removed, only replaced.

A link

Buttons

One primary action per view. Danger only for irreversible actions, and always behind a confirmation. Pending buttons keep their label so nothing shifts.

Variants

Sizes (32 · 36 · 40)

States

Forms

Visible labels, hints under the control, errors that say what is wrong and how to fix it, connected for screen readers. Specimen only: these fields are not connected to anything.

Fields

What the customer is buying, in their words.

Use digits and up to two decimals, for example 48000.50.

Only active members of this workspace can own a deal.

Text, choices, disabled

Required to move a deal to Lost. Shown in loss-reason reports.

Notify me when

Status

Every status is a word with a glyph; colour is the third cue, never the only one. Activity provenance says exactly how an entry came to exist.

Deals and leads

OpenWonLost
NewContactedQualifiedUnqualifiedConverted
LowMediumHigh

Activity provenance

  • Recorded by Orbit
  • Recorded by a person
  • Simulated (demonstration)
  • Your change in this demo
  • Confirmed by a providerOnly with a provider's confirmation. None is connected.
  • Neutral tag

Tables

Dense, scannable, mono figures aligned right. Totals are per currency: Orbit has no exchange rates, so it never adds different currencies together. Weighted value rounds each deal to a whole minor unit.

Sample deals (fictional)
DealOwnerStageStatusAmountProbabilityExpected close

Halden Freight: fleet renewal

Halden Freight

Rita OkaforProposalOpen$48,00050%14 Nov 2026

Marlow & Pike: 40 seats

Marlow & Pike

Ravi MenonNegotiationOpen£22,50075%28 Oct 2026

Saanvi Textiles pilot

Saanvi Textiles

Rita OkaforDiscoveryOpen₹18,00,00025%Not set

Kestrel Labs expansion

Kestrel Labs

Ana DuarteWonWon$12,000100%02 Oct 2026

Brightwater onboarding

Brightwater

Ravi MenonLostLost6.400 €0%29 Sep 2026
Open pipeline (3 open deals)Weighted = amount × probability, rounded per deal
  • USD$48,000
  • GBP£22,500
  • INR₹18,00,000

Weighted

  • USD$24,000
  • GBP£16,875
  • INR₹4,50,000

Dialogs

Native modal dialogs: focus stays inside, Escape cancels, focus returns to the button that opened it. Cancel is focused first; destructive actions are never the default.

Confirmation

Mark Halden Freight as lost?

The deal leaves the open pipeline and its expected value is removed from the forecast. You can reopen it later; the change is recorded in its history.

Reassign to Ravi Menon?

Ravi becomes the owner and Rita loses edit access unless she is an admin. Both see the change in the deal's timeline.

Empty, loading, feedback

Empty states say what is missing and how to add it. Loading shows the shape of what is coming. Notices stay where the problem is; errors say how to recover.

Empty

No deals in this stage

Drag a deal here from another stage, or add one. Deals you cannot see because of your role are not counted.

Loading

Notices

This workspace is a demonstration

Everything here is fictional and resets when you leave. Emails are never sent.

Deal moved to Negotiation

Someone changed this deal while you were editing

Your move was not applied. The board now shows the latest version.