Interactor design system · v1

Build on-brand Interactor interfaces

The visual language behind the Interactor surface — a dark operating-system canvas, a kelly-green primary, and a monospace information layer. Tokens, type, components, and brand, ready to drop into your own product.

Plain CSS variables No build step MIT-friendly Dark + light
Start · install

Drop in the tokens, build on them

The system is plain CSS custom properties — no framework, no build step. Load the fonts and the two token files, then reference the variables. Everything on this page is built from them.

app.css
/* 1 · fonts — Montserrat, Open Sans, JetBrains Mono */
@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700&family=Open+Sans:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap');

/* 2 · tokens — load first, then the component layer */
@import 'colors_and_type.css';  /* color · type · radii · spacing */
@import 'interactor.css';       /* buttons · cards · nav · inputs */

/* 3 · build on the tokens */
.cta {
  background: var(--lime);
  color: var(--navy);
  border-radius: var(--r-sm);
  font-family: var(--font-display);
}

What you get

Dark canvas + light override Kelly-green primary Mono info layer 8-pt spacing Compact radii Stroked 24-grid icons
Foundations · color

A dark canvas, with green as the only energy

Near-black navy base, four elevation steps, a white text ramp, and kelly green as the single saturated hue. Click any swatch to copy its token.

Brand — Green is the only saturated hue in normal use — rationed to action, state, and brand moments.

Canvas & elevation — Depth comes from slightly lighter navy-blacks — not shadows on white.

Text ramp — White is reserved for type. Four steps from heading to disabled.

Semantic — State only — success is the same kelly green.

Foundations · type

Three families, one instrumented voice

Montserrat sets the display register, Open Sans carries body and UI, and JetBrains Mono is the signature info layer — eyebrows, tags, status, and metadata in uppercase with wide tracking.

Aa
Montserrat
Display · headings
wght 400–700 · −0.025 to −0.04em
Aa
Open Sans
Body · UI
wght 400–700 · line-height 1.55
Aa
JetBrains Mono
The info layer
wght 400–500 · +0.04 to +0.12em

Type scale

.t-display-1Montserrat 500 · clamp 44–76 · −0.035em
Intelligence at work
.t-display-2Montserrat 500 · clamp 32–44 · −0.025em
Three modes, one conversation.
.t-h2Montserrat 600 · 34 · −0.025em
Build on the foundation
.t-titleMontserrat 600 · 22 · −0.02em
Self-host on day one
.t-body-lOpen Sans 400 · 17 · 1.55
Switch between pure chat, a split workspace, or a full app — without losing context, source or thread.
.t-bodyOpen Sans 400 · 15 · 1.55
Talk to your stack. Move beyond LLM wrappers.
.t-monoJetBrains Mono 400 · 12 · +0.04em
claude-sonnet-4.5 · auto-mode · 1.4s
.t-eyebrowJetBrains Mono 500 · 11 · +0.12em · UPPER
FOUNDATIONS · TYPOGRAPHY
Foundations · spacing & radii

8-pt rhythm, compact corners

Spacing steps on an 8-pt scale; a 56px column rhythm drives marketing layout. Radii are deliberately compact — nothing fully sharp, nothing bubble-round.

Spacing scale

4px--space-1
8px--space-2
12px--space-3
16px--space-4
24px--space-5
32px--space-6
48px--space-7
64px--space-8

Radii

6px · controls / buttons
--r-sm
10px · inputs / small cards
--r-md
14px · cards / composer
--r-lg
20px · hero / CTA
--r-xl
999px · chips / badges
--r-pill
Foundations · elevation

Hairlines do the work; one glow is sacred

Borders define most surfaces. Inset hairlines plus a single soft drop for modals — and the mint glow, reserved to mark the agent entry point.

Elev 1
--elev-1
Elev 2
--elev-2
Elev 3
--elev-3
Glow
--elev-glow
Foundations · iconography

One stroked 24-grid set

A single custom set — 1.5–1.7px stroke, rounded caps, no fill, drawn with currentColor so every glyph inherits its parent's color. No icon font, no emoji.

arrow
send
plus
spark
chev
chart
book
code
check
star
paperclip
bolt
link
share
eye
flask
grid
user
refresh
lock
play
Build · components

The core kit

Buttons, chips, status, badges, cards and inputs — built straight from the tokens. Hover states brighten borders; press nudges 1px; focus rings switch to mint.

Buttons

Chips, status & badges

auto-mode indexed pending denied New — agent is live Beta Pending

Card & input

Automation engine

One base card — elev-1 surface, 1px hairline, 14px radius. Roles stack on top; no colored accents.

Build · voice

Confident, technical, plain

A builder talking to builders. Sentence-case headlines, "you / your", outcomes stated as fact. The mono info layer carries the system's signature.

Casing

Headlines and body run sentence case. The info layer — eyebrows, tags, status, metadata — is UPPERCASE mono with wide tracking.

✓ Three modes, one conversation.
✓ FOUNDATIONS · TYPOGRAPHY
✗ Three Modes, One Conversation

The middot

The · middot is the connective tissue of the info layer — joining model names, modes, latency, versions, and status into a system-log rhythm.

claude-sonnet-4.5 · auto-mode · 1.4s
MIT · v2.4 · updated 2026-05-20