Design System
Foundations

Colors

Neutral first. Colour only marks meaning — a tool type, a state — or the single call to action. Every token has a light and a dark value and switches with the theme.

Rules

  • One green per view. Solid accent is reserved for the action the view exists for. Rows, cards and dialogs never add a second one.
  • Location is white, not green. The selected sidebar item, tab or segment is the selected surface with shadow-card (dark adds a 1px selected-edge ring).
  • A choice you made is an outline with a check (the chip Toggle, in a ToggleGroup). Form checks — Checkbox, RadioGroup, Slider — use link.
  • Canvases are the exception: a selected workflow step is blue (selection).
  • faint is below 4.5:1 in both themes. Use it only for 12px secondary text that never carries meaning on its own.
  • Colours that must be told apart differ in lightness, not hue alone.

Surfaces

The UI is greys on greys. Dark greys are blue-green tinted, never neutral.
light
dark
app-bgbg-app-bg
☀ #f2f2f2☾ #040909

Window background behind the panels (the 4px gutter around sidebar, chat and editor).

light
dark
panelbg-panel
☀ #fbfbfb☾ #080d0d

Panels: chat, editor browser, project sidebar. Dark is a blue-green tinted near-black, never a neutral grey.

light
dark
panel-homebg-panel-home
☀ #f3f3f3☾ #080d0d

The home page's main panel (Build, Agents, Skills) and the Login page; a touch darker than `panel` in light. The BoxField's ground.

light
dark
panel-edgebg-panel-edge
☀ #ffffff☾ #141a1b

1px border on panels, cards, menus and tabs.

light
dark
surfacebg-surface
☀ #ffffff☾ #0c1112

Cards, inputs, dropdown sheets, buttons, the composer.

light
dark
selectedbg-selected
☀ #ffffff☾ #162021

Fill of the selected sidebar row or nav item (with `shadow-card`; dark adds a 1px inset ring of `selected-edge`). Selected is this surface, never green.

light
dark
selected-edgebg-selected-edge
☀ #ffffff☾ #1f2b2c

Inset 1px ring on a selected row in dark.

light
dark
hoverbg-hover
☀ #f2f2f2☾ #11181a

Hover fill for rows, menu items, icon buttons.

light
dark
secondarybg-secondary
☀ #f3f3f3☾ #11171a

Track of the view switcher, the idle send button, focus halo of inputs.

light
dark
chipbg-chip
☀ #f1f1f1☾ #141b1c

Neutral chip fill: connector mention chips, 'Used by' chips.

light
dark
calloutbg-callout
☀ #f6f6f6☾ #0c1112

Callout block in the instructions editor.

light
dark
code-surfacebg-code-surface
☀ #f4f4f4☾ #0e1415

Inline code and code blocks: `bg-code-surface` (not `code`, which would clash with the `text-code` style).

light
dark
bubblebg-bubble
☀ #ededed☾ #0d1213

The person's chat bubble. Darker than `panel-home` (#f3f3f3) so it shows on the page glow, as in the platform design.

light
dark
linebg-line
☀ #eaeaea☾ #161d1e

Dividers inside cards and lists, input and button borders.

light
dark
dimbg-dim
☀ rgba(251,251,251,0.72)☾ rgba(0,0,0,0.5)

Focus overlay behind the runs hover card; fades in over 600ms ease-in.

light
dark
tooltipbg-tooltip
☀ #141414☾ #e8e8e8

Tooltip and toast fill (inverted ink); text on it is `panel`.

light
dark
island-glowbg-island-glow
☀ rgba(255, 255, 255, 0.95)☾ rgba(160, 255, 230, 0.035)

The soft light in the top-left corner of a page panel (`panel-home`): Build, lists, settings, the chat page. Drawn as `bg-page-glow`.

Text

Contrast is measured on surface in each theme.
Aa
Aa
inkbg-ink
☀ #141414☾ #e8e8e8
light: 18.4:1 AAAdark: 15.5:1 AAA

Primary text and icons on `panel`, `surface`, `selected`. 15:1+ in both themes.

Aa
Aa
ink-strongbg-ink-strong
☀ #141414☾ #ffffff
light: 18.4:1 AAAdark: 19.0:1 AAA

Text of the ONE selected item in a list (sidebar session, nav). Dark: pure white is reserved for this.

Aa
Aa
ink-navbg-ink-nav
☀ #141414☾ rgba(255,255,255,0.8)
light: 18.4:1 AAAdark: 12.2:1 AAA

Unselected sidebar items and recent conversations. Dark: 80% white, so the selected item stands out.

Aa
Aa
ink-2bg-ink-2
☀ #2e2e2e☾ #cfcfcf
light: 13.6:1 AAAdark: 12.2:1 AAA

Agent replies in chat, menu icons, values that sit next to `ink` labels.

Aa
Aa
mutedbg-muted
☀ #6b6b6b☾ #97a1a2
light: 5.3:1 AAdark: 7.2:1 AAA

Descriptions, meta lines, unselected tab icons, section headers. 5.3:1 on `surface` light, 7:1 dark.

Aa
Aa
faintbg-faint
☀ #9b9b9b☾ #5f6a6c
light: 2.8:1 below AAdark: 3.4:1 below AA

Timestamps, uppercase labels, placeholders, chevrons. Below 4.5:1 in both themes (2.8:1 light, 3.3:1 dark): source value kept, use only for 12px secondary text that is never the only carrier of meaning.

Action

Green means do it. accent is the one call to action per view; text actions and checks use link.
light
dark
accentbg-accent
☀ #017b61☾ #017b61

THE call-to-action green: Create agent, Publish, Save changes, Connect. One per view. Same value in both themes.

light
dark
accent-edgebg-accent-edge
☀ #4da390☾ #4da390

1px border of a green primary button (accent mixed 70/30 with white).

light
dark
accent-inkbg-accent-ink
☀ #ffffff☾ #ffffff

Text and icons on `accent` fills: Primary buttons, the CTA, Send, count badges. 5.4:1.

light
dark
linkbg-link
☀ #017b61☾ #3fa78d

Text actions and checks: 'Clear all', 'Reset all', the check in a selected menu row, the Live tag. Not a fill.

Status

Status only — never decoration. danger for destructive actions and failures, warn for needs-connecting and unsaved changes.
light
dark
okbg-ok
☀ #2e9a7c☾ #3fa382

Status only: healthy and live states, added lines (+) in diffs. Charts use chart-1.

light
dark
successbg-success
☀ #016650☾ #7ccba9

Done and positive states: progress fills, completed checks, success text ("This subdomain is available"), the success Alert. Not for actions: the call to action is `accent`.

light
dark
success-softbg-success-soft
☀ #dcefea☾ #1c3329

Fill of the success Alert, the Live and New tags, positive status tags (Connected, On track) and the published check.

light
dark
warnbg-warn
☀ #9c4a0a☾ #eba061

Not-connected tools, the unsaved-changes dot, the connect notice text, an environment that is “Not set up yet”. 6.6:1 on `warn-soft` light, 6.1:1 dark.

light
dark
warn-softbg-warn-soft
☀ #fbebdb☾ #3a2817

Fill of the connect notice and of a not-connected object chip.

light
dark
dangerbg-danger
☀ #c4352b☾ #f08c84

Delete in menus, removed lines (−) in diffs, failed trace steps, the danger zone.

light
dark
danger-softbg-danger-soft
☀ #fbe7e6☾ #3a1e1c

Fill of danger buttons in Settings.

Objects

Each tool type has a fixed colour in chips. Connectors stay neutral; their own tile carries the brand.
light
dark
object-greenbg-object-green
☀ #016650☾ #7ccba9

Application chips (inline and in Details), managed-service tiles and Trigger steps on the workflow canvas.

light
dark
object-green-softbg-object-green-soft
☀ #dcefea☾ #1c3329

Fill of application chips, managed-service tiles and Trigger step tags.

light
dark
object-purplebg-object-purple
☀ #5a3fa6☾ #bba9f2

Skill chips (inline and in Details) and Agent steps on the workflow canvas.

light
dark
object-purple-softbg-object-purple-soft
☀ #ece8f8☾ #2e2742

Fill of skill chips and Agent step tags.

light
dark
object-bluebg-object-blue
☀ #22508f☾ #91b7ee

Variable chips ({} RECIPIENT_EMAIL, set in mono) and App call steps on the workflow canvas.

light
dark
object-blue-softbg-object-blue-soft
☀ #e3ecf9☾ #1e2a3d

Fill of variable chips and App call step tags.

light
dark
selectionbg-selection
☀ #22508f☾ #91b7ee

The selected step on the workflow canvas (border and soft glow), and the Composer's element picker: its on icon and the outline on hovered elements.

light
dark
selection-softbg-selection-soft
☀ #e3ecf9☾ #1e2a3d

Fill of elements picked with the Composer's element picker.

light
dark
avatarbg-avatar
☀ #017b61☾ #2fa182

Owner avatar disc.

light
dark
avatar-inkbg-avatar-ink
☀ #ffffff☾ #04140f

Initials on your own `avatar` disc (white in light; near-black in dark, where the disc is light).

Charts

In order: chart-1, then chart-2, then chart-3. Never tool or status colours in charts.
light
dark
chart-1bg-chart-1
☀ #2e9a7c☾ #3fa382

First series in charts (Model, Schedule, Running apps…). Same value as ok today, but independent of status.

light
dark
chart-2bg-chart-2
☀ #4f7fe0☾ #6b92e6

Second series in charts.

light
dark
chart-3bg-chart-3
☀ #b8862a☾ #b07f2a

Third series in charts.

Using colours in code

// Tailwind (with @major/ui/tailwind.css)
<div className="bg-surface text-ink border border-line" />
<p className="text-muted">Edited 2 days ago</p>

/* Plain CSS — the same file defines the variables */
.card { background: var(--color-surface); color: var(--color-ink); }

// JavaScript (charts, canvas)
import { tokens } from "@major/ui/lib/major-tokens";
tokens.color["chart-1"].light; // "#2e9a7c"