DESIGN.md inspired by xAI
White canvas, Universal Sans, a stark near-black pill, and warm-grey terminal panels — frontier minimalism.
Compare to…
- bg
#ffffff - bg-soft
#fafafa - surface
#f9f8f6 - surface-terminal
#f8f7f5 - surface-card
#fffffff2 - surface-hover
rgba(10,10,10,0.04) - surface-press
rgba(10,10,10,0.08) - header-bg
rgba(255,255,255,0.85) - text AAA · 19.8
#0a0a0a - text-strong
#0a0a0a - text-terminal
#262626 - text-muted
#6b7280 - text-subtle
#8a8f98 - text-on-brand
#ffffff - brand AAA · 19.8
#0a0a0a - brand-hover
#1f1f1f - brand-active
#2c2c2c - on-brand
#0a0a0a - link
#111827 - link-hover
#0a0a0a - link-visited
#111827 - ring
#3b82f6 - border — · 1.4
#d5d9e2 - border-soft
rgba(10,10,10,0.08) - border-strong — · 1.4
rgba(10,10,10,0.16) - scrim
rgba(10,10,10,0.5) - shadow-color
rgba(0,0,0,0.10) - terminal-fg
#262626 - terminal-green
#248430 - terminal-green-bg
#e3efe4 - terminal-red
#be2e31 - terminal-red-bg
#f8eaea - success
#248430 - success-bg
#ecfdf3 - info
#3b82f6 - info-bg
#f0f8ff - warning
#b45309 - warning-bg
#fffcf0 - danger
#be2e31 - danger-bg
#fff0f0
- step-0 0px
- step-1 4px
- step-2 8px
- step-3 12px
- step-4 16px
- step-5 24px
- step-6 32px
- step-7 48px
- step-8 64px
- step-9 96px
- step-10 128px
- micro
2px - sm
4px - md
8px - lg
12px - card
12px - xl
16px - terminal
16px - pill
9999px
Maps the 8 canonical role names to this entry's actual tokens. Use these to plug the design into role-aware tools — shadcn/ui themes, role-aware Tailwind plugins, atelier-lint — without hard-coding token names.
- background → bg
- foreground → text
- primary → brand
- primary-foreground → on-brand
- accent → accent
- muted → text-muted
- border → border
- ring → ring
xAI's corporate site is frontier minimalism rendered in two inks. The canvas is pure `#ffffff`; the only other primary value is a stark **near-black `#0a0a0a`** that carries every heading, every body line, and the single full-pill **Get API Access** CTA. The typeface is **Universal Sans** — a display cut at a calm 500 weight for the 60px H1, a humanist body cut at 16px / 400 for prose — chosen for the same reason OpenAI chose OpenAI Sans and Anthropic chose its Styrene/serif pairing: a custom-feeling, neutral-technical voice that reads as a research institution rather than a startup. The one warm note in the whole system is an off-white **`#f9f8f6`** surface used for the Grok terminal panels at a 16px radius, where a frugal engineering palette — diff-green `#248430`, diff-red `#be2e31`, monospace foreground — lets the product's command-line heritage show through. The blue `#3b82f6` appears only as a focus ring and a prose-link tone; it is never a brand colour. The lineage is unmistakably the post-2020 AI-lab editorial wave — Apple's white-paper reduction, the broadsheet's monochrome type discipline, and the Unix terminal's spare functional honesty fused into a single light-mono surface. The Grok product UI runs darker, but the public face is almost monastic: black ink on white paper, one pill, one warm panel, no decoration.
- White-paper reduction — pure white canvas, generous whitespace, a single CTA, type-as-image.
- Sibling-lab light-mono register — custom sans at calm medium weight, monochrome restraint, one black pill.
- Stark black-on-white technical minimalism with a monospace accent and frontier-engineering posture.
- The grotesque/humanist sans family the site's display and body cuts derive from.
- Token scaffolding under the hood — prose, ring, and semantic HSL variables are Tailwind's defaults.
theme.extend block for tailwind.config.js
:root { --bg, --text, --brand, … } you can paste anywhere
W3C Design Tokens Community Group format
Importable into Figma → Variables → Import
---
name: xAI
tagline: 'White canvas, Universal Sans, a stark near-black pill, and warm-grey terminal panels — frontier minimalism.'
updated_at: 2026-05-29T21:43:54.558Z
published_at: 2026-05-29T21:43:54.558Z
author: webdesignhot
source_url: https://x.ai
spec: webdesignhot/0.1
quality: curated
featured: false
categories: [ai]
tags: [light, minimal, mono, sans, monochrome, technical, spacious, structured]
preview_swatch: ['#ffffff', '#0a0a0a', '#f9f8f6']
related: [openai, anthropic, vercel]
description: 'xAI''s corporate site is frontier minimalism in two inks — a pure `#ffffff` canvas and a stark near-black `#0a0a0a` that carries every heading, body line, and the single full-pill `Get API Access` CTA. The type is **Universal Sans**: a display cut at a calm 500 weight for the 60px H1, a humanist body cut at 16px/400 for prose. Where most AI labs reach for gradients, xAI reaches for restraint — the one warm note in the system is an off-white `#f9f8f6` surface used for the Grok terminal panels (r16px), where a frugal diff palette (green `#248430`, red `#be2e31`) hints at the engineering register underneath. The corporate marketing surface is light-mono and almost monastic; the Grok product UI runs darker. The result reads technical and self-assured: a company that builds the model and lets the work speak.'
# Canonical 8-role aliases (bg / text / brand / border / accent / muted / surface / danger).
# Maps role names to this entry's actual token names so role-aware
# downstream tools resolve `theme.background` → entry's `bg`, etc.
# Auto-generated by scripts/add-aliases.mjs — do not edit manually;
# regenerate after changing color token names.
aliases:
background: bg
foreground: text
primary: brand
primary-foreground: on-brand
accent: accent
muted: text-muted
border: border
ring: ring
colors:
bg: '#ffffff' # pure white canvas — corporate marketing surface
bg-soft: '#fafafa' # barely-there grey for subtle module floors
surface: '#f9f8f6' # warm off-white — Grok terminal panels, demo cards
surface-terminal: '#f8f7f5' # terminal editor background (--terminal-bg)
surface-card: '#fffffff2' # near-opaque white card lift (--terminal-surface)
surface-hover: 'rgba(10,10,10,0.04)' # 4% near-black wash on hover
surface-press: 'rgba(10,10,10,0.08)' # 8% near-black for active state
header-bg: 'rgba(255,255,255,0.85)' # sticky header — 85% white with backdrop-blur
text: '#0a0a0a' # stark near-black — body, headings, the brand ink
text-strong: '#0a0a0a' # no separate display tier — same near-black at all weights
text-terminal: '#262626' # terminal foreground (#000000d9 over white)
text-muted: '#6b7280' # captions, metadata, secondary copy
text-subtle: '#8a8f98' # tertiary, timestamps, footer micro-text
text-on-brand: '#ffffff' # white label on the near-black pill
brand: '#0a0a0a' # primary CTA fill — stark near-black pill
brand-hover: '#1f1f1f' # subtle warm-up on hover
brand-active: '#2c2c2c' # pressed state
on-brand: '#0a0a0a'
link: '#111827' # prose links — cool near-black (--tw-prose-links)
link-hover: '#0a0a0a' # link hover deepens to the brand ink
link-visited: '#111827' # xAI doesn't differentiate visited
ring: '#3b82f6' # focus ring — the one blue in the system (--tw-ring-color base)
border: '#d5d9e2' # cool hairline divider
border-soft: 'rgba(10,10,10,0.08)' # 8% near-black sub-divisions
border-strong: 'rgba(10,10,10,0.16)' # heavier divider / focus hairline
scrim: 'rgba(10,10,10,0.5)' # modal backdrop
shadow-color: 'rgba(0,0,0,0.10)' # --tw-shadow-color base 0000001a
terminal-fg: '#262626' # Grok terminal text
terminal-green: '#248430' # diff insert / success accent in terminal
terminal-green-bg: '#e3efe4' # diff-insert wash (#24843021 over white)
terminal-red: '#be2e31' # diff delete / error accent in terminal
terminal-red-bg: '#f8eaea' # diff-delete wash (#be2e311a over white)
success: '#248430' # terminal green — semantic success
success-bg: '#ecfdf3' # success surface (hsl 143 85% 96%)
info: '#3b82f6' # the system blue — links / focus / info
info-bg: '#f0f8ff' # info surface (hsl 208 100% 97%)
warning: '#b45309' # amber for caution copy
warning-bg: '#fffcf0' # warning surface (hsl 49 100% 97%)
danger: '#be2e31' # terminal red — error states
danger-bg: '#fff0f0' # error surface (hsl 359 100% 97%)
typography:
display:
family: '"Universal Sans Display", universalSansDisplay, system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif'
weights: [500, 600, 700]
opentype-features: ['liga', 'kern']
body:
family: '"Universal Sans", universalSans, system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif'
weights: [400, 500, 600]
opentype-features: ['liga', 'kern']
mono:
family: 'ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace'
weights: [400, 500]
opentype-features: ['liga', 'tnum']
scale:
display-hero: { size: 80, weight: 500, lineHeight: 1.0, tracking: '-0.03em', family: display, opentype: ['liga'] }
display-lg: { size: 60, weight: 500, lineHeight: 1.05, tracking: '-0.025em', family: display, opentype: ['liga'] }
h1: { size: 60, weight: 500, lineHeight: 1.05, tracking: '-0.02em', family: display }
h2: { size: 48, weight: 400, lineHeight: 1.1, tracking: '-0.015em', family: display }
h3: { size: 32, weight: 600, lineHeight: 1.2, tracking: '-0.01em', family: display }
h4: { size: 24, weight: 600, lineHeight: 1.25, tracking: '-0.005em', family: display }
h5: { size: 20, weight: 600, lineHeight: 1.3, tracking: '0', family: body }
sub-section: { size: 18, weight: 500, lineHeight: 1.4, tracking: '0', family: body }
body-lg: { size: 18, weight: 400, lineHeight: 1.55, tracking: '0', family: body }
body: { size: 16, weight: 400, lineHeight: 1.55, tracking: '0', family: body }
body-sm: { size: 14, weight: 400, lineHeight: 1.5, tracking: '0', family: body }
label: { size: 13, weight: 500, lineHeight: 1.4, tracking: '0', family: body }
nav-link: { size: 14, weight: 500, lineHeight: 1.0, tracking: '0', family: body }
button-cta: { size: 14, weight: 500, lineHeight: 1.0, tracking: '0', family: body }
caption: { size: 12, weight: 500, lineHeight: 1.4, tracking: '0.02em', family: body }
eyebrow: { size: 12, weight: 500, lineHeight: 1.3, tracking: '0.06em', family: body, transform: uppercase }
code: { size: 13, weight: 400, lineHeight: 1.5, tracking: '0', family: mono }
radius:
micro: 2
sm: 4
md: 8
lg: 12
card: 12
xl: 16
terminal: 16
pill: 9999
spacing:
base: 4
scale: [0, 4, 8, 12, 16, 24, 32, 48, 64, 96, 128]
layout:
page-width: 1280
prose-width: 720
header-height: 64
rhythm: 8
components:
button-primary:
bg: '#0a0a0a'
color: '#ffffff'
radius: 9999
padding: '10px 20px'
height: 44
font: 'Universal Sans 500 / 14px'
use: 'Get API Access — the single full-pill hero CTA. Solid near-black, no shadow.'
button-ghost:
bg: 'transparent'
color: '#0a0a0a'
radius: 9999
border: '1px solid #d5d9e2'
padding: '10px 20px'
height: 44
font: 'Universal Sans 500 / 14px'
use: 'Secondary actions — outlined pill, fills with 4% near-black on hover.'
button-soft:
bg: '#f9f8f6'
color: '#0a0a0a'
radius: 16
padding: '12px 18px'
font: 'Universal Sans 500 / 14px'
use: 'Warm-surface suggestion chips inside the Grok demo — "Explain quantum entangle".'
button-tertiary:
bg: 'transparent'
color: '#0a0a0a'
radius: 9999
padding: '8px 14px'
use: 'Nav action items — invisible until hover, then gains the 4% near-black wash.'
card:
bg: '#f9f8f6'
color: '#0a0a0a'
border: '1px solid #d5d9e2'
radius: 12
padding: '24px'
use: 'Content / feature card — warm off-white surface, cool hairline, 12px radius.'
card-terminal:
bg: '#f8f7f5'
color: '#262626'
border: '1px solid #d5d9e2'
radius: 16
padding: '20px'
use: 'Grok terminal / code-demo panel — warm bg, monospace fg, diff palette inside.'
input:
bg: '#ffffff'
color: '#0a0a0a'
radius: 8
padding: '8px 12px'
border: '1px solid #d5d9e2'
focus: '2px solid #3b82f6'
use: 'Text input — white fill, cool hairline, blue focus ring.'
badge:
bg: '#f9f8f6'
color: '#0a0a0a'
radius: 9999
padding: '4px 10px'
font: 'Universal Sans 500 / 12px'
use: 'Status pill — "New", "Beta". Warm off-white background, near-black text.'
nav-global:
bg: 'rgba(255,255,255,0.85)'
color: '#0a0a0a'
height: 64
use: 'Sticky top bar — 85% white with backdrop-blur, wordmark left, pill CTA right.'
motion:
ease-standard: 'cubic-bezier(0.4, 0, 0.2, 1)'
ease-out: 'cubic-bezier(0, 0, 0.2, 1)'
ease-emphasized: 'cubic-bezier(0.2, 0, 0, 1)'
duration-instant: 100
duration-fast: 150
duration-standard: 240
duration-slow: 320
cta-press: 'CTA fill deepens #0a0a0a → #1f1f1f over 150ms on :hover'
hover-fade: 'nav / tertiary buttons fade-in a 4% near-black surface (rgba(10,10,10,0.04)) over 150ms'
terminal-type: 'Grok demo terminal types responses in monospace with a blinking caret'
page-fade: 'opacity 0 → 1 over 320ms on initial paint; subsequent navigation has no transition'
reduced-motion: 'respects prefers-reduced-motion: reduce — typing / scale / translate suppressed; opacity remains'
breakpoints:
mobile: 640
tablet: 1024
desktop: 1280
wide: 1536
shadows:
ambient: 'none — xAI defaults flat'
card: 'rgba(0,0,0,0.06) 0 1px 3px — barely-there on terminal panels'
card-hover: 'rgba(0,0,0,0.10) 0 4px 12px'
modal: 'rgba(0,0,0,0.20) 0 24px 48px'
ring: '0 0 0 3px rgba(59,130,246,0.5)'
accessibility:
contrast-text-on-bg: 19.8 # #0a0a0a on #ffffff — AAA
contrast-text-on-cta: 19.8 # #ffffff on #0a0a0a — AAA
contrast-text-on-surface: 18.65 # #0a0a0a on #f9f8f6 — AAA
contrast-terminal-fg: 14.26 # #262626 on #f9f8f6 — AAA
contrast-link-on-bg: 17.74 # #111827 on #ffffff — AAA
contrast-muted-on-bg: 4.83 # #6b7280 on #ffffff — AA
contrast-subtle-on-bg: 3.25 # #8a8f98 on #ffffff — AA-large only
contrast-terminal-green: 4.48 # #248430 on #f9f8f6 — AA (and AA-large)
contrast-terminal-red: 5.46 # #be2e31 on #f9f8f6 — AA
focus-ring: '2px solid #3b82f6 with 2px outline-offset; the one chromatic accent on the otherwise mono surface'
reduced-motion-honored: true
touch-target-min: 44
keyboard-nav: 'Tab: skip → masthead → main content → terminal demo → footer; Esc closes overlays.'
dark-mode: optional
colors-dark:
bg: '#0a0a0a' # Grok product UI canvas — near-black
bg-soft: '#141414'
surface: '#1a1a1a'
surface-card: '#1f1f1f'
surface-hover: 'rgba(255,255,255,0.04)'
text: '#f5f5f5'
text-strong: '#ffffff'
text-muted: '#a1a1aa'
text-subtle: '#71717a'
brand: '#ffffff' # CTA inverts to white-on-near-black in product UI
brand-hover: '#e5e5e5'
on-brand: '#0a0a0a'
border: 'rgba(255,255,255,0.1)'
border-soft: 'rgba(255,255,255,0.06)'
link: '#ffffff' # --tw-prose-invert-links
ring: '#3b82f6'
success: '#46954a' # --added-accent-color
danger: '#cf222e' # --deleted-accent-color
lineage:
summary: |
xAI's corporate site is frontier minimalism rendered in two inks. The
canvas is pure `#ffffff`; the only other primary value is a stark
**near-black `#0a0a0a`** that carries every heading, every body line,
and the single full-pill **Get API Access** CTA. The typeface is
**Universal Sans** — a display cut at a calm 500 weight for the 60px
H1, a humanist body cut at 16px / 400 for prose — chosen for the same
reason OpenAI chose OpenAI Sans and Anthropic chose its Styrene/serif
pairing: a custom-feeling, neutral-technical voice that reads as a
research institution rather than a startup. The one warm note in the
whole system is an off-white **`#f9f8f6`** surface used for the Grok
terminal panels at a 16px radius, where a frugal engineering palette
— diff-green `#248430`, diff-red `#be2e31`, monospace foreground — lets
the product's command-line heritage show through. The blue `#3b82f6`
appears only as a focus ring and a prose-link tone; it is never a brand
colour. The lineage is unmistakably the post-2020 AI-lab editorial wave
— Apple's white-paper reduction, the broadsheet's monochrome type
discipline, and the Unix terminal's spare functional honesty fused into
a single light-mono surface. The Grok product UI runs darker, but the
public face is almost monastic: black ink on white paper, one pill, one
warm panel, no decoration.
influences:
- name: Apple
role: White-paper reduction — pure white canvas, generous whitespace, a single CTA, type-as-image.
url: https://www.apple.com
- name: OpenAI
role: Sibling-lab light-mono register — custom sans at calm medium weight, monochrome restraint, one black pill.
url: https://openai.com
- name: Vercel
role: Stark black-on-white technical minimalism with a monospace accent and frontier-engineering posture.
url: https://vercel.com
- name: Universal Sans (Newglyph)
role: The grotesque/humanist sans family the site's display and body cuts derive from.
url: https://universalsans.com
- name: Tailwind CSS
role: Token scaffolding under the hood — prose, ring, and semantic HSL variables are Tailwind's defaults.
url: https://tailwindcss.com
---
## 1. Visual Theme & Atmosphere
xAI's corporate site opens onto pure white. There is no hero gradient, no animated mesh of particles, no glowing orb — just a stark near-black `#0a0a0a` headline set in Universal Sans Display at 60px / 500, a line of calm body copy beneath it, and a single full-pill **Get API Access** button. The temperature of the page is cool and even; the only warmth anywhere is the off-white `#f9f8f6` of a Grok terminal panel sitting lower on the page. Walking in from a typical AI-startup site — gradients, hero video, three competing CTAs — the shift is immediate: this surface is quieter, more confident, and more technical.
The chromatic identity is essentially two inks. **Pure white** (`#ffffff`) is the canvas; **near-black** (`#0a0a0a`) is everything that matters — body, headings, the brand pill, the wordmark. xAI deliberately stops just short of true `#000000`; the `#0a0a0a` value is a hair softer, which reads as engineered rather than absolute. There is no brand blue, no brand green, no accent gradient. The single blue value in the system (`#3b82f6`) lives only in the focus ring and the prose-link tone — it is functional chrome, never identity.
The typeface carries the whole register. **Universal Sans** is a contemporary grotesque-humanist family (Newglyph); the site runs a Display cut for headings and a text cut for body. The H1 holds a calm 500 weight at 60px with tight `-0.02em` tracking — the same discipline OpenAI uses with OpenAI Sans, where medium weight does the work that bold does elsewhere. The H2 actually drops to a 400 weight at 48px, which is unusually light for a section opener and reinforces the spare, un-shouty atmosphere. Body is 16px / 400 at a generous 1.55 line-height — editorial, paced like a paper rather than a landing page.
The one place the brand lets its engineering personality show is the **Grok terminal panel**. Set on the warm off-white `#f9f8f6` surface at a 16px radius, it renders a monospace foreground (`#262626`) with a frugal diff palette — insert-green `#248430`, delete-red `#be2e31`, each backed by a faint tinted wash. It is the only moment of colour on the page, and it is borrowed straight from the command line. The message is clear: this is a company that builds the model, and the terminal is where the work actually happens.
The defining experience is **restraint that reads as capability**. xAI's marketing surface doesn't perform — it states. A near-monochrome page, one pill, one warm panel, and the implicit claim that the product is interesting enough not to need decoration. The corporate site is light-mono and almost monastic; the Grok product UI runs darker (near-black canvas, inverted pill), but the public face stays stark, white, and self-assured.
**Key Characteristics:**
- Pure white canvas (`#ffffff`) with a stark near-black (`#0a0a0a`) for text, headings, and the brand pill — two-ink monochrome
- Universal Sans Display at a calm 500 weight for the 60px H1; H2 actually lighter (400) — un-shouty hierarchy
- One full-pill (`9999px`) CTA — solid near-black **Get API Access**, no shadow, no gradient
- A single warm note: off-white `#f9f8f6` surface for Grok terminal panels at 16px radius
- Engineering register inside the terminal — monospace fg `#262626`, diff-green `#248430`, diff-red `#be2e31`
- The only blue (`#3b82f6`) is functional chrome — focus ring + prose links, never brand identity
- Cool hairline dividers (`#d5d9e2`) and 4% near-black hover wash — flat, no drop shadows on the marketing surface
- Generous 96–128px section rhythm; body at 16 / 1.55 — broadsheet pacing
- Corporate site light-mono; Grok product UI inverts to a near-black canvas
## 2. Color Palette & Roles
### Primary
- **Canvas** (`#ffffff`) [→ `bg`, `body bg`]: pure white page floor — no warmth, no tint
- **Bg Soft** (`#fafafa`) [→ `bg-soft`]: barely-there grey for subtle module floors
- **Near-Black Ink** (`#0a0a0a`) [→ `text`, `body color`]: the stark near-black that carries body, headings, and the brand pill
- **Text Strong** (`#0a0a0a`) [→ `text-strong`]: no separate display tier — the same near-black at all weights
### Brand & Action
- **Brand Near-Black** (`#0a0a0a`) [→ `brand`, CTA bg]: the single full-pill CTA fill — **Get API Access**
- **Brand Hover** (`#1f1f1f`) [→ `brand-hover`]: subtle warm-up on hover, barely perceptible
- **Brand Active** (`#2c2c2c`) [→ `brand-active`]: pressed state on `:active`
- **On-Brand White** (`#ffffff`) [→ `text-on-brand`]: white label on the near-black pill
### Accent
- **System Blue** (`#3b82f6`) [→ `ring`, `info`, `--tw-ring-color`]: the only blue — focus ring and prose-link tone. Functional chrome, never brand.
- **Terminal Green** (`#248430`) [→ `terminal-green`, `--terminal-diff-insert-fg`]: diff-insert / success accent inside the Grok terminal
- **Terminal Red** (`#be2e31`) [→ `terminal-red`, `--terminal-diff-delete-fg`]: diff-delete / error accent inside the terminal
### Interactive
- **Link Default** (`#111827`) [→ `link`, `--tw-prose-links`]: prose links — a cool near-black, distinct from the warm `#0a0a0a` body ink
- **Link Hover** (`#0a0a0a`) [→ `link-hover`]: deepens to the brand ink on hover
- **Visited** (`#111827`) [→ `link-visited`]: no differentiation
- **Focus Ring**: `2px solid #3b82f6` with 2px outline-offset — the system's one chromatic moment
- **Hover Surface** (`rgba(10,10,10,0.04)`) [→ `surface-hover`]: 4% near-black wash on nav / tertiary buttons
### Neutral Scale
- **Near-Black Ink** (`#0a0a0a`): primary text
- **Terminal FG** (`#262626`) [→ `terminal-fg`, `--terminal-fg` `#000000d9`]: monospace foreground inside terminal panels
- **Muted** (`#6b7280`) [→ `text-muted`]: captions, secondary copy, metadata
- **Subtle** (`#8a8f98`) [→ `text-subtle`]: tertiary, timestamps, footer micro-text
- **Hairline** (`#d5d9e2`) [→ `border`]: cool primary divider
- **Border Soft** (`rgba(10,10,10,0.08)`) [→ `border-soft`]: 8% near-black sub-divisions
- **Border Strong** (`rgba(10,10,10,0.16)`) [→ `border-strong`]: heavier dividers
### Surface & Borders
- **Canvas** (`#ffffff`): default ground
- **Warm Surface** (`#f9f8f6`) [→ `surface`]: the off-white for terminal panels, demo cards — the page's one warm note
- **Terminal Bg** (`#f8f7f5`) [→ `surface-terminal`, `--terminal-bg`]: the editor background inside the Grok terminal
- **Card Surface** (`#fffffff2`) [→ `surface-card`, `--terminal-surface`]: near-opaque white lift on raised panels
- **Header Bg** (`rgba(255,255,255,0.85)`) [→ `header-bg`, `--site-header-bg`]: sticky header — 85% white over backdrop-blur
- **Hairline** (`#d5d9e2`): cool divider, used wherever a separator is needed
### Shadow Colors
xAI defaults flat. The marketing surface uses hairline borders rather than elevation; the only shadows are a near-imperceptible `0 1px 3px rgba(0,0,0,0.06)` on raised terminal panels and a heavier overlay on modals. Depth comes from spacing and the warm-surface contrast, not from drop shadows.
- `rgba(0,0,0,0.06) 0 1px 3px` — raised panel (rare)
- `rgba(0,0,0,0.10) 0 4px 12px` — card hover
- `rgba(0,0,0,0.20) 0 24px 48px` — modal
### Semantic
- **Success Green** (`#248430`) [→ `success`]: the terminal green doubles as semantic success; `success-bg` `#ecfdf3` for surfaces
- **Info Blue** (`#3b82f6`) [→ `info`]: the system blue; `info-bg` `#f0f8ff`
- **Warning Amber** (`#b45309`) [→ `warning`]: caution copy; `warning-bg` `#fffcf0`
- **Danger Red** (`#be2e31`) [→ `danger`]: error states, reusing the terminal delete-red; `danger-bg` `#fff0f0`
## 3. Typography Rules
### Font Family
**Display**: `Universal Sans Display` — the display cut of the Universal Sans family (Newglyph), used on every heading. Fallback chain: `universalSansDisplay, system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif`. The Display cut runs tighter and more characterful at large sizes; the H1 sits at 60px / 500 with `-0.02em` tracking.
**Body**: `Universal Sans` — the text cut, used for all prose, nav, buttons, and labels. Same fallback chain through `universalSans`. The body cut is optimised for legibility at 14–18px and carries the calm, paced editorial feel of the page.
**Mono**: a system monospace stack — `ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace` — used exclusively inside the Grok terminal panels for code, diffs, and command output. xAI does not ship a custom mono on the marketing surface.
**OpenType features**: `liga` and `kern` everywhere; `tnum` on the mono stack so terminal numerics align in columns. No stylistic-set swaps.
### Hierarchy
| Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
|------|------|------|--------|-------------|----------------|-------|
| display-hero | Universal Sans Display | 80 | 500 | 1.0 | -0.03em | Page-take-over hero (flagship launches) |
| display-lg | Universal Sans Display | 60 | 500 | 1.05 | -0.025em | Standard hero — observed H1 variant |
| h1 | Universal Sans Display | 60 | 500 | 1.05 | -0.02em | Major page titles — calm medium weight |
| h2 | Universal Sans Display | 48 | 400 | 1.1 | -0.015em | Section openers — unusually light (400) |
| h3 | Universal Sans Display | 32 | 600 | 1.2 | -0.01em | Sub-section heads |
| h4 | Universal Sans Display | 24 | 600 | 1.25 | -0.005em | Card / panel titles |
| h5 | Universal Sans | 20 | 600 | 1.3 | 0 | Minor heads inside long bands |
| sub-section | Universal Sans | 18 | 500 | 1.4 | 0 | Lead-in copy above body |
| body-lg | Universal Sans | 18 | 400 | 1.55 | 0 | Hero sub-copy |
| body | Universal Sans | 16 | 400 | 1.55 | 0 | Default paragraph — observed base |
| body-sm | Universal Sans | 14 | 400 | 1.5 | 0 | Card body, secondary copy |
| label | Universal Sans | 13 | 500 | 1.4 | 0 | Form labels, metadata |
| nav-link | Universal Sans | 14 | 500 | 1.0 | 0 | Top nav links |
| button-cta | Universal Sans | 14 | 500 | 1.0 | 0 | Primary CTA label — medium, never bold |
| caption | Universal Sans | 12 | 500 | 1.4 | 0.02em | Timestamps, fine print |
| eyebrow | Universal Sans | 12 | 500 | 1.3 | 0.06em | Uppercase section eyebrows |
| code | system mono | 13 | 400 | 1.5 | 0 | Terminal / diff content |
### Principles
- **Universal Sans at 500 is the headline register.** The 60px H1 holds a calm medium weight — Universal Sans Display does the work that bold does on other sites, the same discipline OpenAI applies with OpenAI Sans.
- **The H2 is lighter than the H1.** At 48px / 400, the section opener is actually *lighter* in weight than the page title — an unusual, deliberately un-shouty move that keeps the surface even and spare.
- **Tracking tightens with size.** `-0.02em` at 60px, `-0.03em` at 80px. The negative tracking gives large headings a compressed, frontier-technical feel without ever feeling cramped.
- **No 700+ bold on the marketing surface.** The Display family ships heavier cuts, but the public site overwhelmingly uses 500–600. Restraint reinforces the institutional register.
- **Body at 16 / 1.55** is the editorial baseline; hero sub-copy lifts to 18 / 1.55. The generous line-height paces the page like a paper.
- **Mono lives only in the terminal.** The system monospace stack appears exclusively inside Grok terminal panels — code, diffs, command output — never in prose.
- **No display serif, no italic counter-voice.** Universal Sans is the only family on the marketing surface; there are no decorative typographic moments.
- **Cool prose links.** Links use `#111827`, a fractionally cooler near-black than the `#0a0a0a` body ink — the only typographic tell that a span is interactive (alongside underline).
## 4. Component Stylings
### Buttons
**`button-primary`** — solid near-black (`#0a0a0a`) fill, white text in Universal Sans 14 / 500, **full-pill `9999px` radius**, ~10×20px padding, ~44px height. The defining CTA: "Get API Access". On hover the fill warms to `#1f1f1f` over 150ms — barely perceptible. No drop-shadow, no border, no gradient. One per viewport.
**`button-ghost`** — transparent fill, near-black text, `1px solid #d5d9e2` cool hairline border, full-pill radius, same height. Used for secondary actions beside the primary CTA. On hover it gains the 4% near-black wash (`rgba(10,10,10,0.04)`).
**`button-soft`** — warm off-white (`#f9f8f6`) fill, near-black text, **16px radius** (not pill), ~12×18px padding. The Grok-demo suggestion chips — "Explain quantum entanglement", "Write a poem". These live on the terminal surface and borrow its rounding and warmth.
**`button-tertiary`** — fully transparent until hover, near-black text, full-pill radius. Used for nav action items; materialises the 4% near-black wash only on interaction. The "invisible-until-hover" pattern.
### Cards
**`card`** — warm off-white (`#f9f8f6`) surface, `1px solid #d5d9e2` cool hairline, **12px radius**, 24px padding. The general content / feature card. Flat by default; depth comes from the warm-surface contrast against the white canvas, not from shadow.
**`card-terminal`** — the signature panel. Terminal background (`#f8f7f5`), `1px solid #d5d9e2` hairline, **16px radius**, ~20px padding. Renders monospace foreground (`#262626`) with a diff palette inside — insert lines on `#e3efe4` with green `#248430` accent, delete lines on `#f8eaea` with red `#be2e31` accent. Often animated with a typing caret.
**`card-surface`** — near-opaque white lift (`#fffffff2`) over the warm surface, used for raised sub-panels inside the terminal (e.g. an editor pane floating above the terminal floor). Carries the only near-imperceptible shadow on the surface.
### Inputs / Forms
**`input`** — white (`#ffffff`) fill, `1px solid #d5d9e2` cool hairline, **8px radius**, ~8×12px padding, Universal Sans 16 / 400. On focus the border is replaced by a `2px solid #3b82f6` ring with 2px offset — the system blue making its only appearance as state, not identity.
**`textarea`** — same hairline + fill, 8px radius, ~96px min-height, `resize: vertical`. Used for the Grok prompt box.
**`prompt-box`** — the Grok input on the terminal surface: warm `#f9f8f6` fill, 16px radius to match the terminal panels, with the send affordance inset right.
### Badges, Tags, Pills
**`badge`** — warm off-white (`#f9f8f6`) fill, near-black text in Universal Sans 12 / 500, full-pill `9999px` radius, ~4×10px padding. Status pills like "New", "Beta", "Available now". Subtle; fades into the page.
**`badge-eyebrow`** — no fill, 12 / 500 uppercase Universal Sans with `0.06em` tracking in muted grey. Section eyebrow labels above titles.
**`diff-chip`** — inside the terminal: a small inline marker (`+` / `−`) on the green-wash (`#e3efe4`) or red-wash (`#f8eaea`) background, signalling code insert / delete.
### Navigation
**`nav-global`** — sticky top bar, `rgba(255,255,255,0.85)` fill rendered with `backdrop-filter: blur(...)`, ~64px height. Wordmark left, primary links centre/right (Grok, API, Company, Careers), the near-black **Get API Access** pill anchored right. Nav links are near-black at 14 / 500; on hover each link gains a 4% near-black pill surface.
**`nav-mobile`** — full-screen overlay with stacked nav items in Universal Sans Display 24 / 600. Closing X anchored top-right; the Get API Access pill pinned at the bottom.
**`footer`** — multi-column link list with 14 / 400 links over the white canvas, `1px solid #d5d9e2` top hairline. Bottom band carries the xAI wordmark + copyright in 12 / 500 subtle grey.
### Modals & Overlays
**`modal`** — centred dialog over a 50% near-black scrim (`rgba(10,10,10,0.5)`). White surface, 12px radius, no border, `0 24px 48px rgba(0,0,0,0.20)` shadow. Close X anchored top-right.
## 5. Layout Principles
### Spacing System
- Base unit: **4px**; modular grid runs on an **8px** rhythm
- Scale: `0 · 4 · 8 · 12 · 16 · 24 · 32 · 48 · 64 · 96 · 128`
- Section padding (vertical): **96–128px** between major bands — broadsheet rhythm
- Card internal padding: **24px** for content cards; **~20px** for terminal panels
- Gutters: **24px** between columns at desktop, **16px** at tablet
### Grid & Container
- Max content width: **1280px** centred
- Prose width inside long-form: **720px**
- Hero: full-width band, content capped at 1280, type left-aligned
- Terminal demo: typically a single wide panel or a two-up (prompt left / output right)
### Whitespace Philosophy
xAI gives each section generous breath. The 96–128px vertical rhythm, combined with a 16px body type at 1.55 line-height, paces the marketing surface like a paper rather than a landing page. Inside a section, density stays moderate — the hero column rarely fills more than 60% of the viewport, and the lone warm terminal panel sits in a sea of white. The visual rhythm is **stark type → generous breath → one warm panel → repeat**.
### Section Cadence
The site overwhelmingly uses **white bands** (default `#ffffff`). The only break in the monochrome is the **warm off-white terminal panel** (`#f9f8f6`), which appears as a contained surface inside an otherwise white section rather than as a full-width alternating band. xAI resists chromatic alternation entirely — most pages run pure white top to bottom, with the terminal demo providing the single moment of warmth and the diff palette providing the single moment of colour.
## 6. Shapes & Radius Scale
| Tier | Value | Use |
|------|-------|-----|
| Micro | 2px | Hairline accents, the smallest UI marks |
| Small | 4px | Tight internal controls |
| Comfortable | 8px | Inputs, ghost-button corners, small modules |
| Card | 12px | Content cards, modals |
| Terminal | 16px | Grok terminal panels, soft suggestion chips |
| Pill | 9999px | Primary CTA, badges, nav hover surfaces |
The radii ladder is **comfortable controls (8px) → cards (12px) → terminal panels (16px) → full pills (9999px)**. The defining shapes are the **full-pill CTA** and the **16px terminal panel** — the pill carries the action, the 16px rounding signals the warm engineering surface. xAI keeps a complete small-to-large scale (unlike OpenAI's deliberate gap), but the visible identity lives at the two extremes.
## 7. Depth & Elevation
| Level | Treatment | Use |
|-------|-----------|-----|
| 0 — Flat | no shadow | Body, masthead, footer, most editorial bands (~95% of surface) |
| 1 — Hairline | `1px #d5d9e2` border | Cards, inputs, terminal panels, footer top rule |
| 2 — Hover Surface | `rgba(10,10,10,0.04)` fill | Nav / tertiary buttons on hover |
| 3 — Press Surface | `rgba(10,10,10,0.08)` fill | Active state |
| 4 — Raised Panel | `0 1px 3px rgba(0,0,0,0.06)` | Sub-panel floating above the terminal floor |
| 5 — Card Hover | `0 4px 12px rgba(0,0,0,0.10)` | Interactive card hover |
| 6 — Modal | `0 24px 48px rgba(0,0,0,0.20)` | Centred dialog over scrim |
### Shadow Philosophy
xAI achieves depth almost entirely through **spacing and surface contrast**. Cards and terminal panels are flat with a cool `#d5d9e2` hairline; the warm `#f9f8f6` fill reading against the white canvas is what makes a panel feel raised — not a shadow. The single faint shadow (`0 1px 3px`) appears only on a sub-panel floating inside the terminal. Buttons have no elevation treatment at all: the near-black pill is solid `#0a0a0a` on white, and that flatness is the point. Where Linear and Stripe use layered elevation, xAI uses the white-paper-and-one-warm-panel contrast.
## 8. Interaction & Motion
### Easing
- **Standard**: `cubic-bezier(0.4, 0, 0.2, 1)` — default for hover, focus, fades
- **Out**: `cubic-bezier(0, 0, 0.2, 1)` — entering surfaces
- **Emphasized**: `cubic-bezier(0.2, 0, 0, 1)` — modal entry
### Durations
| Bucket | Value | Use |
|--------|-------|-----|
| Instant | 100ms | Focus ring fade-in |
| Fast | 150ms | CTA warm-up, nav hover surface fade |
| Standard | 240ms | Card / panel transitions |
| Slow | 320ms | Initial page paint fade |
### Per-Component Recipes
- **CTA hover**: fill transitions `#0a0a0a` → `#1f1f1f` over 150ms standard easing — barely perceptible, a press of breath.
- **CTA press**: deepens to `#2c2c2c` momentarily on `:active`.
- **Nav hover**: nav buttons fade-in a 4% near-black surface (`rgba(10,10,10,0.04)`) over 150ms — the invisible-until-hover pattern.
- **Terminal typing**: the Grok demo terminal types its response character-by-character in monospace with a blinking caret — the page's one signature motion, evoking a live command line.
- **Diff reveal**: insert / delete lines animate in on their tinted washes as the terminal "runs".
- **Focus ring**: `2px solid #3b82f6` appears instantly on `:focus-visible`, fading opacity 0 → 1 over 100ms.
- **Page transitions**: initial paint fades opacity 0 → 1 over 320ms; subsequent navigation has no transition — perceived speed over flourish.
- **Modal enter**: scrim fades over 240ms; dialog scales `0.96 → 1` and translates from `translateY(8px)` over 240ms emphasized.
### Reduced Motion
Respects `prefers-reduced-motion: reduce`. The terminal typing animation, card scale, and modal translate all degrade — the terminal renders its final state instantly, scale and translate become opacity-only. The page-paint fade and CTA warm-up remain because they communicate state without large movement.
## 9. Accessibility & A11y
### Contrast Pairs
| Pair | Ratio | Level |
|------|-------|-------|
| #0a0a0a text on #ffffff | 19.8 | AAA |
| #ffffff on #0a0a0a CTA | 19.8 | AAA |
| #0a0a0a text on #f9f8f6 warm surface | 18.65 | AAA |
| #262626 terminal-fg on #f9f8f6 | 14.26 | AAA |
| #111827 prose link on #ffffff | 17.74 | AAA |
| #6b7280 muted on #ffffff | 4.83 | AA |
| #8a8f98 subtle on #ffffff | 3.25 | AA-large only — used on micro / decorative text |
| #248430 terminal green on #f9f8f6 | 4.48 | AA (and AA-large) |
| #be2e31 terminal red on #f9f8f6 | 5.46 | AA |
| #3b82f6 focus ring on #ffffff | 3.68 | AA-large / non-text UI (passes 3:1 for focus indicators) |
xAI's core pairs sit at AAA — the near-black on white CTA hits 19.8:1, and the warm-surface body ink holds 18.65:1. The muted grey clears AA for body text; the subtle grey is reserved for non-essential micro-text where it only needs AA-large. The terminal diff colours clear AA against the warm surface, and the system blue clears the 3:1 threshold required of focus indicators and non-text UI.
### Focus Indicators
Focus ring is **2px solid `#3b82f6`** with 2px outline-offset, applied via `:focus-visible`. It is the one consistently chromatic element on the otherwise monochrome surface — the blue makes a focused control unmistakable against white. On the dark Grok product canvas the ring keeps the same blue, which reads clearly against near-black.
### ARIA Patterns
- **Skip link**: `<a href="#main">Skip to content</a>` as the first focusable element.
- **Global nav**: `<header role="banner">` wrapping `<nav aria-label="Global">`.
- **Hero CTA**: `<a href="/api">Get API Access</a>` — standard link, no extra ARIA.
- **Terminal demo**: the live terminal output is `aria-live="polite"` so the typed response is announced; the typing animation is decorative and `aria-hidden` on the caret.
- **Diff lines**: insert / delete lines carry `aria-label` ("added line", "removed line") so colour is not the sole signal.
- **Modal**: `role="dialog"` + `aria-modal="true"` + focus trap + Esc closes.
- **Status badges**: "Beta" / "New" pills include `aria-label` with full meaning.
### Keyboard Navigation
- Skip link → masthead → main content → terminal demo (focusable, controls reachable) → footer
- Nav: Tab moves through links; Esc closes any open dropdown
- Terminal: the prompt input is reachable by Tab; output region is read by screen readers via the live region
- Modal: focus trapped; Esc closes; focus returns to trigger
### Screen Reader Hints
Verbose `aria-label` on icon-only buttons (the terminal "run" / "copy" controls announce their action). The xAI wordmark is `<svg aria-hidden="true">` with the brand name as visible text. Diff colour is always backed by an `aria-label` so green/red are never the only signal.
### Reduced Motion
The terminal typing animation and all scale / translate transitions degrade to instant or opacity-only under `prefers-reduced-motion: reduce`. Page-paint fade and CTA warm-up remain.
## 10. Responsive Behavior
### Breakpoints
| Name | Width | Key Changes |
|------|-------|-------------|
| Mobile | <640px | Masthead collapses to wordmark + Get API Access pill + hamburger; hero drops to ~36/500; terminal panel full-bleed |
| Tablet | 640–1024px | Partial nav; hero at ~48/500; terminal at comfortable width |
| Desktop | 1024–1280px | Full nav with all primary links; hero at 60/500; terminal at native width |
| Wide | 1280–1536px | Content caps at 1280; hero may scale to 80/500 on flagship pages |
### Touch Targets
- Primary CTA: ~44px height — meets AAA touch sizing
- Nav links: ~44px hit area (text 14px + padding)
- Form inputs: ~40–44px
- Terminal controls: ≥40px tap targets
### Collapsing Strategy
- Masthead: primary links collapse to a hamburger below tablet; the Get API Access pill stays visible at all sizes
- Hero: display scales 80 → 60 → 48 → 36px across breakpoints
- Terminal panel: a two-up (prompt / output) collapses to stacked single-column on mobile
- Footer: multi-column link list collapses to 2-column at tablet, 1-column at mobile
### Image Behavior
The marketing surface is type-led and uses little imagery; where product screenshots appear they use `aspect-ratio` with `object-fit: cover` and `loading="lazy"` for off-screen art. The terminal panel is rendered as live DOM (not an image), so it stays crisp and accessible at every size.
### Container Queries
Terminal sub-panels use container queries to switch from side-by-side (editor + output) to stacked when the panel narrows below its two-column threshold.
## 11. Content & Voice
### Tone
Spare, technical, frontier-confident. xAI's voice is "the lab that builds the model" — direct, engineer-coded, never hyped. Headlines state what the company is doing ("Understand the universe", "Grok") rather than selling the visitor on a feeling. The register is closer to a research charter than a product pitch.
### Microcopy Patterns
- **Button verbs**: "Get API Access", "Try Grok", "Read the docs", "Join us"
- **Error message recipe**: terse + factual — "Something went wrong. Try again."
- **Success confirmations**: minimal — "Done", "Copied"
- **Field labels**: short and engineer-coded — "Email", "API key", "Organization"
- **Terminal copy**: command-line literal — prompts, diffs, and output rendered as the real thing
### Empty States
Empty terminal: a prompt and a blinking caret with a suggestion chip row ("Explain quantum entanglement", "Write a poem") — the empty state *is* the demo.
Empty results: "No results. Try a different query." — short, no apology.
### CTA Verb Conventions
- Primary: **"Get API Access"** (default, top of every page), **"Try Grok"**
- Secondary: **"Read the docs"**, **"Learn more"**, **"View pricing"**
- Tertiary: **"Join us"**, **"See careers"**
- Avoided: "Click here", "Buy now", "Sign up free!" — exclamation and hard-sell verbs break the frontier-technical register
## 12. Dark Mode & Theming
The corporate marketing site is **light-only** — it stays on the white canvas with near-black ink end to end; there is no theme toggle on the public surface. The dark register belongs to the **Grok product UI**, which runs on a near-black `#0a0a0a` canvas with light text and an inverted (white-on-near-black) pill.
The `colors-dark:` block documents that product surface: canvas steps through `#0a0a0a → #141414 → #1f1f1f` (bg / soft / card), text lands on `#f5f5f5`, hairlines become `rgba(255,255,255,0.1)`, and the brand action inverts to white (`#ffffff` on near-black). The diff palette shifts to its dark variants — added-accent `#46954a`, deleted-accent `#cf222e` (the `--added-accent-color` / `--deleted-accent-color` tokens from the terminal system) — and the focus ring keeps its `#3b82f6` blue, which reads cleanly against near-black.
The brand position: dark mode is **a product concession, not a marketing register**. The corporate site depends on the stark white-paper aesthetic to read as institutional and frontier-serious; the near-black product UI is where the engineering identity comes fully forward.
## 13. Lineage & Influences
xAI's visual lineage runs through three traditions fused onto a single light-mono surface. First, **Apple's white-paper reduction** — pure white canvas, generous whitespace, a single CTA per viewport, type carrying the page. Second, the **post-2020 AI-research-lab editorial wave** — the same neighbourhood as OpenAI's OpenAI-Sans light-mono and Anthropic's calm editorial register, where a custom-feeling neutral sans at a calm medium weight signals "research institution" rather than "startup". Third, the **Unix terminal** — the warm-grey panel, monospace foreground, and frugal diff palette (green insert, red delete) are borrowed straight from the command line, and they are the one place the brand lets its engineering personality show.
The closest contemporaries are **OpenAI** and **Vercel**. OpenAI shares the near-monochrome marketing discipline, the custom sans at calm weight, and the single black pill — xAI's `#0a0a0a` ink is a near-twin of OpenAI's black, and both reserve their product colour for inside the app. Vercel shares the stark black-on-white technical minimalism and the monospace-accent posture. Where xAI diverges is the **warm `#f9f8f6` terminal panel**: OpenAI stays rigorously cool-white, while xAI permits exactly one warm surface, and that surface is functional (the demo), not decorative. What xAI rejects is everything performative — brand gradients, hero animation beyond the terminal type-out, drop shadows on the marketing surface, marketing-bold headlines, and any colour register that reads as consumer-startup. The position is **frontier-lab confidence**: white paper, near-black ink, one pill, one warm panel, and the implicit claim that the model is the message.
**Influences:**
- Apple — white-paper reduction, single CTA, type-as-image, [apple.com](https://www.apple.com)
- OpenAI — sibling-lab light-mono register and the single black pill, [openai.com](https://openai.com)
- Vercel — stark black-on-white technical minimalism with a monospace accent, [vercel.com](https://vercel.com)
- Universal Sans (Newglyph) — the grotesque/humanist sans the display and body cuts derive from, [universalsans.com](https://universalsans.com)
- Tailwind CSS — the token scaffolding under the hood (prose, ring, semantic HSL vars), [tailwindcss.com](https://tailwindcss.com)
- The Unix terminal — the warm panel, monospace foreground, and diff palette that carry the engineering register
## 14. Do's and Don'ts
**Do**
- Anchor the canvas on pure white (`#ffffff`) — no warm tint on the page floor
- Use stark near-black (`#0a0a0a`) — not true `#000000` — for body, headings, and the brand pill
- Set Universal Sans Display at a calm 500 weight for the 60px H1 — medium does the work of bold
- Let the H2 sit *lighter* (400 at 48px) than the H1 — the un-shouty hierarchy is part of the identity
- Use one full-pill (`9999px`) near-black CTA per viewport — **Get API Access**, no shadow
- Reserve the single warm surface (`#f9f8f6`, 16px radius) for terminal panels and demo chips
- Render the engineering register inside the terminal — monospace fg `#262626`, diff-green `#248430`, diff-red `#be2e31`
- Treat the 4% near-black wash (`rgba(10,10,10,0.04)`) as the hover vocabulary
- Use the cool hairline (`#d5d9e2`) for dividers and card borders — depth from contrast, not shadow
- Keep the blue (`#3b82f6`) to the focus ring and prose links only — never as a brand colour
- Maintain 96–128px section rhythm — broadsheet pacing, generous breath
**Don't**
- Don't reach for `#000000` true black — xAI's ink is the softer engineered `#0a0a0a`
- Don't introduce a brand gradient, hero mesh, or glowing orb — the surface is stark by design
- Don't promote the blue to a brand accent — it is functional chrome (focus / links) and nothing more
- Don't stack drop shadows on marketing cards — the language is hairline borders + warm-surface contrast
- Don't set headings in 700+ bold on the marketing surface — 500–600 is the discipline
- Don't make the H2 heavier than the H1 — the lighter section opener is intentional
- Don't add a second warm colour — the `#f9f8f6` terminal surface is the only warmth the system allows
- Don't run more than one primary CTA per viewport — the single near-black pill carries the action
- Don't put the terminal diff colours on the marketing surface outside the terminal — they belong to the command-line context
- Don't use exclamation marks or hard-sell verbs — the voice is frontier-technical, never hyped
- Don't apply the dark product palette to the corporate marketing surface — that page is light-only
## 15. Agent Prompt Guide
### Quick Color Reference
```
Canvas: #ffffff
Near-Black Ink: #0a0a0a
Brand (CTA): #0a0a0a
Brand Hover: #1f1f1f
On-Brand: #ffffff
Warm Surface: #f9f8f6
Terminal Bg: #f8f7f5
Terminal FG: #262626
Diff Green: #248430
Diff Red: #be2e31
Hairline: #d5d9e2
Muted: #6b7280
Prose Link: #111827
Focus Ring: #3b82f6
Hover Surface: rgba(10,10,10,0.04)
```
### Example Component Prompts
- "Create an xAI-style primary CTA: a ~44px-tall full-pill (`9999px` radius) with solid near-black (`#0a0a0a`) fill, white text in Universal Sans 14/500, ~10×20px padding. On hover the fill warms to `#1f1f1f` over 150ms. No drop-shadow, no border, no gradient. One CTA per viewport — label it 'Get API Access'."
- "Build an xAI hero band: pure white (`#ffffff`) ground, content capped at 1280px, 96–128px vertical padding. Display headline in Universal Sans Display 60/500 with -0.02em tracking — 'Understand the universe'. Body-large sub-copy at 18/400 in `#0a0a0a`. Single near-black full-pill CTA left-aligned. No image, no animation — just stark type and white space."
- "Design an xAI terminal panel: warm off-white (`#f8f7f5`) surface, `1px solid #d5d9e2` cool hairline, 16px radius, ~20px padding. Render monospace foreground in `#262626`. Inside, show a diff — insert lines on `#e3efe4` with green `#248430` accent and a `+`, delete lines on `#f8eaea` with red `#be2e31` accent and a `−`. Animate a blinking caret typing the prompt response."
- "Create an xAI ghost button: transparent fill, near-black (`#0a0a0a`) text in Universal Sans 14/500, `1px solid #d5d9e2` border, full-pill radius, ~10×20px padding. On hover it gains a 4% near-black wash (`rgba(10,10,10,0.04)`). Use it as the secondary action beside the primary pill."
- "Build an xAI suggestion chip: warm off-white (`#f9f8f6`) fill, near-black text in Universal Sans 14/500, 16px radius (not pill), ~12×18px padding. Row of them under the Grok prompt box — 'Explain quantum entanglement', 'Write a poem'. They match the terminal surface's warmth and rounding."
- "Design an xAI input: white (`#ffffff`) fill, `1px solid #d5d9e2` cool hairline, 8px radius, Universal Sans 16/400. On focus, replace the border with a `2px solid #3b82f6` ring at 2px offset — the system blue is the only chromatic state on the surface."
### Iteration Guide
1. **Pure white, near-black ink.** If your canvas has warmth or your ink is true `#000000`, it isn't xAI. `#ffffff` floor, `#0a0a0a` ink — the soft near-black is engineered, not absolute.
2. **Universal Sans at 500, H2 lighter than H1.** The 60px H1 holds a calm medium weight; the 48px H2 drops to 400. The un-shouty, slightly-inverted hierarchy is the typographic signature.
3. **One full-pill CTA.** Near-black `#0a0a0a`, `9999px` radius, white label, no shadow. One per viewport. If there are two primary pills, you've broken the discipline.
4. **One warm surface, and it's the terminal.** `#f9f8f6` at 16px radius for the Grok panel and its chips. Don't add a second warm colour anywhere on the page.
5. **Colour lives in the terminal.** Diff-green `#248430` and diff-red `#be2e31` only appear inside the command-line panel. Keep them out of the marketing surface.
6. **Blue is chrome, not brand.** `#3b82f6` for the focus ring and prose links — never a button fill, never a hero accent.
7. **Flat, hairline depth.** `#d5d9e2` borders and the warm-surface contrast carry elevation. No drop shadows on marketing cards.
8. **Broadsheet breath.** 96–128px section rhythm, body at 16/1.55. If the page feels dense, add white space — the restraint is the brand.
1. Visual Theme & Atmosphere
xAI’s corporate site opens onto pure white. There is no hero gradient, no animated mesh of particles, no glowing orb — just a stark near-black #0a0a0a headline set in Universal Sans Display at 60px / 500, a line of calm body copy beneath it, and a single full-pill Get API Access button. The temperature of the page is cool and even; the only warmth anywhere is the off-white #f9f8f6 of a Grok terminal panel sitting lower on the page. Walking in from a typical AI-startup site — gradients, hero video, three competing CTAs — the shift is immediate: this surface is quieter, more confident, and more technical.
The chromatic identity is essentially two inks. Pure white (#ffffff) is the canvas; near-black (#0a0a0a) is everything that matters — body, headings, the brand pill, the wordmark. xAI deliberately stops just short of true #000000; the #0a0a0a value is a hair softer, which reads as engineered rather than absolute. There is no brand blue, no brand green, no accent gradient. The single blue value in the system (#3b82f6) lives only in the focus ring and the prose-link tone — it is functional chrome, never identity.
The typeface carries the whole register. Universal Sans is a contemporary grotesque-humanist family (Newglyph); the site runs a Display cut for headings and a text cut for body. The H1 holds a calm 500 weight at 60px with tight -0.02em tracking — the same discipline OpenAI uses with OpenAI Sans, where medium weight does the work that bold does elsewhere. The H2 actually drops to a 400 weight at 48px, which is unusually light for a section opener and reinforces the spare, un-shouty atmosphere. Body is 16px / 400 at a generous 1.55 line-height — editorial, paced like a paper rather than a landing page.
The one place the brand lets its engineering personality show is the Grok terminal panel. Set on the warm off-white #f9f8f6 surface at a 16px radius, it renders a monospace foreground (#262626) with a frugal diff palette — insert-green #248430, delete-red #be2e31, each backed by a faint tinted wash. It is the only moment of colour on the page, and it is borrowed straight from the command line. The message is clear: this is a company that builds the model, and the terminal is where the work actually happens.
The defining experience is restraint that reads as capability. xAI’s marketing surface doesn’t perform — it states. A near-monochrome page, one pill, one warm panel, and the implicit claim that the product is interesting enough not to need decoration. The corporate site is light-mono and almost monastic; the Grok product UI runs darker (near-black canvas, inverted pill), but the public face stays stark, white, and self-assured.
Key Characteristics:
- Pure white canvas (
#ffffff) with a stark near-black (#0a0a0a) for text, headings, and the brand pill — two-ink monochrome - Universal Sans Display at a calm 500 weight for the 60px H1; H2 actually lighter (400) — un-shouty hierarchy
- One full-pill (
9999px) CTA — solid near-black Get API Access, no shadow, no gradient - A single warm note: off-white
#f9f8f6surface for Grok terminal panels at 16px radius - Engineering register inside the terminal — monospace fg
#262626, diff-green#248430, diff-red#be2e31 - The only blue (
#3b82f6) is functional chrome — focus ring + prose links, never brand identity - Cool hairline dividers (
#d5d9e2) and 4% near-black hover wash — flat, no drop shadows on the marketing surface - Generous 96–128px section rhythm; body at 16 / 1.55 — broadsheet pacing
- Corporate site light-mono; Grok product UI inverts to a near-black canvas
2. Color Palette & Roles
Primary
- Canvas (
#ffffff) [→bg,body bg]: pure white page floor — no warmth, no tint - Bg Soft (
#fafafa) [→bg-soft]: barely-there grey for subtle module floors - Near-Black Ink (
#0a0a0a) [→text,body color]: the stark near-black that carries body, headings, and the brand pill - Text Strong (
#0a0a0a) [→text-strong]: no separate display tier — the same near-black at all weights
Brand & Action
- Brand Near-Black (
#0a0a0a) [→brand, CTA bg]: the single full-pill CTA fill — Get API Access - Brand Hover (
#1f1f1f) [→brand-hover]: subtle warm-up on hover, barely perceptible - Brand Active (
#2c2c2c) [→brand-active]: pressed state on:active - On-Brand White (
#ffffff) [→text-on-brand]: white label on the near-black pill
Accent
- System Blue (
#3b82f6) [→ring,info,--tw-ring-color]: the only blue — focus ring and prose-link tone. Functional chrome, never brand. - Terminal Green (
#248430) [→terminal-green,--terminal-diff-insert-fg]: diff-insert / success accent inside the Grok terminal - Terminal Red (
#be2e31) [→terminal-red,--terminal-diff-delete-fg]: diff-delete / error accent inside the terminal
Interactive
- Link Default (
#111827) [→link,--tw-prose-links]: prose links — a cool near-black, distinct from the warm#0a0a0abody ink - Link Hover (
#0a0a0a) [→link-hover]: deepens to the brand ink on hover - Visited (
#111827) [→link-visited]: no differentiation - Focus Ring:
2px solid #3b82f6with 2px outline-offset — the system’s one chromatic moment - Hover Surface (
rgba(10,10,10,0.04)) [→surface-hover]: 4% near-black wash on nav / tertiary buttons
Neutral Scale
- Near-Black Ink (
#0a0a0a): primary text - Terminal FG (
#262626) [→terminal-fg,--terminal-fg#000000d9]: monospace foreground inside terminal panels - Muted (
#6b7280) [→text-muted]: captions, secondary copy, metadata - Subtle (
#8a8f98) [→text-subtle]: tertiary, timestamps, footer micro-text - Hairline (
#d5d9e2) [→border]: cool primary divider - Border Soft (
rgba(10,10,10,0.08)) [→border-soft]: 8% near-black sub-divisions - Border Strong (
rgba(10,10,10,0.16)) [→border-strong]: heavier dividers
Surface & Borders
- Canvas (
#ffffff): default ground - Warm Surface (
#f9f8f6) [→surface]: the off-white for terminal panels, demo cards — the page’s one warm note - Terminal Bg (
#f8f7f5) [→surface-terminal,--terminal-bg]: the editor background inside the Grok terminal - Card Surface (
#fffffff2) [→surface-card,--terminal-surface]: near-opaque white lift on raised panels - Header Bg (
rgba(255,255,255,0.85)) [→header-bg,--site-header-bg]: sticky header — 85% white over backdrop-blur - Hairline (
#d5d9e2): cool divider, used wherever a separator is needed
Shadow Colors
xAI defaults flat. The marketing surface uses hairline borders rather than elevation; the only shadows are a near-imperceptible 0 1px 3px rgba(0,0,0,0.06) on raised terminal panels and a heavier overlay on modals. Depth comes from spacing and the warm-surface contrast, not from drop shadows.
rgba(0,0,0,0.06) 0 1px 3px— raised panel (rare)rgba(0,0,0,0.10) 0 4px 12px— card hoverrgba(0,0,0,0.20) 0 24px 48px— modal
Semantic
- Success Green (
#248430) [→success]: the terminal green doubles as semantic success;success-bg#ecfdf3for surfaces - Info Blue (
#3b82f6) [→info]: the system blue;info-bg#f0f8ff - Warning Amber (
#b45309) [→warning]: caution copy;warning-bg#fffcf0 - Danger Red (
#be2e31) [→danger]: error states, reusing the terminal delete-red;danger-bg#fff0f0
3. Typography Rules
Font Family
Display: Universal Sans Display — the display cut of the Universal Sans family (Newglyph), used on every heading. Fallback chain: universalSansDisplay, system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif. The Display cut runs tighter and more characterful at large sizes; the H1 sits at 60px / 500 with -0.02em tracking.
Body: Universal Sans — the text cut, used for all prose, nav, buttons, and labels. Same fallback chain through universalSans. The body cut is optimised for legibility at 14–18px and carries the calm, paced editorial feel of the page.
Mono: a system monospace stack — ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace — used exclusively inside the Grok terminal panels for code, diffs, and command output. xAI does not ship a custom mono on the marketing surface.
OpenType features: liga and kern everywhere; tnum on the mono stack so terminal numerics align in columns. No stylistic-set swaps.
Hierarchy
| Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
|---|---|---|---|---|---|---|
| display-hero | Universal Sans Display | 80 | 500 | 1.0 | -0.03em | Page-take-over hero (flagship launches) |
| display-lg | Universal Sans Display | 60 | 500 | 1.05 | -0.025em | Standard hero — observed H1 variant |
| h1 | Universal Sans Display | 60 | 500 | 1.05 | -0.02em | Major page titles — calm medium weight |
| h2 | Universal Sans Display | 48 | 400 | 1.1 | -0.015em | Section openers — unusually light (400) |
| h3 | Universal Sans Display | 32 | 600 | 1.2 | -0.01em | Sub-section heads |
| h4 | Universal Sans Display | 24 | 600 | 1.25 | -0.005em | Card / panel titles |
| h5 | Universal Sans | 20 | 600 | 1.3 | 0 | Minor heads inside long bands |
| sub-section | Universal Sans | 18 | 500 | 1.4 | 0 | Lead-in copy above body |
| body-lg | Universal Sans | 18 | 400 | 1.55 | 0 | Hero sub-copy |
| body | Universal Sans | 16 | 400 | 1.55 | 0 | Default paragraph — observed base |
| body-sm | Universal Sans | 14 | 400 | 1.5 | 0 | Card body, secondary copy |
| label | Universal Sans | 13 | 500 | 1.4 | 0 | Form labels, metadata |
| nav-link | Universal Sans | 14 | 500 | 1.0 | 0 | Top nav links |
| button-cta | Universal Sans | 14 | 500 | 1.0 | 0 | Primary CTA label — medium, never bold |
| caption | Universal Sans | 12 | 500 | 1.4 | 0.02em | Timestamps, fine print |
| eyebrow | Universal Sans | 12 | 500 | 1.3 | 0.06em | Uppercase section eyebrows |
| code | system mono | 13 | 400 | 1.5 | 0 | Terminal / diff content |
Principles
- Universal Sans at 500 is the headline register. The 60px H1 holds a calm medium weight — Universal Sans Display does the work that bold does on other sites, the same discipline OpenAI applies with OpenAI Sans.
- The H2 is lighter than the H1. At 48px / 400, the section opener is actually lighter in weight than the page title — an unusual, deliberately un-shouty move that keeps the surface even and spare.
- Tracking tightens with size.
-0.02emat 60px,-0.03emat 80px. The negative tracking gives large headings a compressed, frontier-technical feel without ever feeling cramped. - No 700+ bold on the marketing surface. The Display family ships heavier cuts, but the public site overwhelmingly uses 500–600. Restraint reinforces the institutional register.
- Body at 16 / 1.55 is the editorial baseline; hero sub-copy lifts to 18 / 1.55. The generous line-height paces the page like a paper.
- Mono lives only in the terminal. The system monospace stack appears exclusively inside Grok terminal panels — code, diffs, command output — never in prose.
- No display serif, no italic counter-voice. Universal Sans is the only family on the marketing surface; there are no decorative typographic moments.
- Cool prose links. Links use
#111827, a fractionally cooler near-black than the#0a0a0abody ink — the only typographic tell that a span is interactive (alongside underline).
4. Component Stylings
Buttons
button-primary — solid near-black (#0a0a0a) fill, white text in Universal Sans 14 / 500, full-pill 9999px radius, ~10×20px padding, ~44px height. The defining CTA: “Get API Access”. On hover the fill warms to #1f1f1f over 150ms — barely perceptible. No drop-shadow, no border, no gradient. One per viewport.
button-ghost — transparent fill, near-black text, 1px solid #d5d9e2 cool hairline border, full-pill radius, same height. Used for secondary actions beside the primary CTA. On hover it gains the 4% near-black wash (rgba(10,10,10,0.04)).
button-soft — warm off-white (#f9f8f6) fill, near-black text, 16px radius (not pill), ~12×18px padding. The Grok-demo suggestion chips — “Explain quantum entanglement”, “Write a poem”. These live on the terminal surface and borrow its rounding and warmth.
button-tertiary — fully transparent until hover, near-black text, full-pill radius. Used for nav action items; materialises the 4% near-black wash only on interaction. The “invisible-until-hover” pattern.
Cards
card — warm off-white (#f9f8f6) surface, 1px solid #d5d9e2 cool hairline, 12px radius, 24px padding. The general content / feature card. Flat by default; depth comes from the warm-surface contrast against the white canvas, not from shadow.
card-terminal — the signature panel. Terminal background (#f8f7f5), 1px solid #d5d9e2 hairline, 16px radius, ~20px padding. Renders monospace foreground (#262626) with a diff palette inside — insert lines on #e3efe4 with green #248430 accent, delete lines on #f8eaea with red #be2e31 accent. Often animated with a typing caret.
card-surface — near-opaque white lift (#fffffff2) over the warm surface, used for raised sub-panels inside the terminal (e.g. an editor pane floating above the terminal floor). Carries the only near-imperceptible shadow on the surface.
Inputs / Forms
input — white (#ffffff) fill, 1px solid #d5d9e2 cool hairline, 8px radius, ~8×12px padding, Universal Sans 16 / 400. On focus the border is replaced by a 2px solid #3b82f6 ring with 2px offset — the system blue making its only appearance as state, not identity.
textarea — same hairline + fill, 8px radius, ~96px min-height, resize: vertical. Used for the Grok prompt box.
prompt-box — the Grok input on the terminal surface: warm #f9f8f6 fill, 16px radius to match the terminal panels, with the send affordance inset right.
Badges, Tags, Pills
badge — warm off-white (#f9f8f6) fill, near-black text in Universal Sans 12 / 500, full-pill 9999px radius, ~4×10px padding. Status pills like “New”, “Beta”, “Available now”. Subtle; fades into the page.
badge-eyebrow — no fill, 12 / 500 uppercase Universal Sans with 0.06em tracking in muted grey. Section eyebrow labels above titles.
diff-chip — inside the terminal: a small inline marker (+ / −) on the green-wash (#e3efe4) or red-wash (#f8eaea) background, signalling code insert / delete.
Navigation
nav-global — sticky top bar, rgba(255,255,255,0.85) fill rendered with backdrop-filter: blur(...), ~64px height. Wordmark left, primary links centre/right (Grok, API, Company, Careers), the near-black Get API Access pill anchored right. Nav links are near-black at 14 / 500; on hover each link gains a 4% near-black pill surface.
nav-mobile — full-screen overlay with stacked nav items in Universal Sans Display 24 / 600. Closing X anchored top-right; the Get API Access pill pinned at the bottom.
footer — multi-column link list with 14 / 400 links over the white canvas, 1px solid #d5d9e2 top hairline. Bottom band carries the xAI wordmark + copyright in 12 / 500 subtle grey.
Modals & Overlays
modal — centred dialog over a 50% near-black scrim (rgba(10,10,10,0.5)). White surface, 12px radius, no border, 0 24px 48px rgba(0,0,0,0.20) shadow. Close X anchored top-right.
5. Layout Principles
Spacing System
- Base unit: 4px; modular grid runs on an 8px rhythm
- Scale:
0 · 4 · 8 · 12 · 16 · 24 · 32 · 48 · 64 · 96 · 128 - Section padding (vertical): 96–128px between major bands — broadsheet rhythm
- Card internal padding: 24px for content cards; ~20px for terminal panels
- Gutters: 24px between columns at desktop, 16px at tablet
Grid & Container
- Max content width: 1280px centred
- Prose width inside long-form: 720px
- Hero: full-width band, content capped at 1280, type left-aligned
- Terminal demo: typically a single wide panel or a two-up (prompt left / output right)
Whitespace Philosophy
xAI gives each section generous breath. The 96–128px vertical rhythm, combined with a 16px body type at 1.55 line-height, paces the marketing surface like a paper rather than a landing page. Inside a section, density stays moderate — the hero column rarely fills more than 60% of the viewport, and the lone warm terminal panel sits in a sea of white. The visual rhythm is stark type → generous breath → one warm panel → repeat.
Section Cadence
The site overwhelmingly uses white bands (default #ffffff). The only break in the monochrome is the warm off-white terminal panel (#f9f8f6), which appears as a contained surface inside an otherwise white section rather than as a full-width alternating band. xAI resists chromatic alternation entirely — most pages run pure white top to bottom, with the terminal demo providing the single moment of warmth and the diff palette providing the single moment of colour.
6. Shapes & Radius Scale
| Tier | Value | Use |
|---|---|---|
| Micro | 2px | Hairline accents, the smallest UI marks |
| Small | 4px | Tight internal controls |
| Comfortable | 8px | Inputs, ghost-button corners, small modules |
| Card | 12px | Content cards, modals |
| Terminal | 16px | Grok terminal panels, soft suggestion chips |
| Pill | 9999px | Primary CTA, badges, nav hover surfaces |
The radii ladder is comfortable controls (8px) → cards (12px) → terminal panels (16px) → full pills (9999px). The defining shapes are the full-pill CTA and the 16px terminal panel — the pill carries the action, the 16px rounding signals the warm engineering surface. xAI keeps a complete small-to-large scale (unlike OpenAI’s deliberate gap), but the visible identity lives at the two extremes.
7. Depth & Elevation
| Level | Treatment | Use |
|---|---|---|
| 0 — Flat | no shadow | Body, masthead, footer, most editorial bands (~95% of surface) |
| 1 — Hairline | 1px #d5d9e2 border | Cards, inputs, terminal panels, footer top rule |
| 2 — Hover Surface | rgba(10,10,10,0.04) fill | Nav / tertiary buttons on hover |
| 3 — Press Surface | rgba(10,10,10,0.08) fill | Active state |
| 4 — Raised Panel | 0 1px 3px rgba(0,0,0,0.06) | Sub-panel floating above the terminal floor |
| 5 — Card Hover | 0 4px 12px rgba(0,0,0,0.10) | Interactive card hover |
| 6 — Modal | 0 24px 48px rgba(0,0,0,0.20) | Centred dialog over scrim |
Shadow Philosophy
xAI achieves depth almost entirely through spacing and surface contrast. Cards and terminal panels are flat with a cool #d5d9e2 hairline; the warm #f9f8f6 fill reading against the white canvas is what makes a panel feel raised — not a shadow. The single faint shadow (0 1px 3px) appears only on a sub-panel floating inside the terminal. Buttons have no elevation treatment at all: the near-black pill is solid #0a0a0a on white, and that flatness is the point. Where Linear and Stripe use layered elevation, xAI uses the white-paper-and-one-warm-panel contrast.
8. Interaction & Motion
Easing
- Standard:
cubic-bezier(0.4, 0, 0.2, 1)— default for hover, focus, fades - Out:
cubic-bezier(0, 0, 0.2, 1)— entering surfaces - Emphasized:
cubic-bezier(0.2, 0, 0, 1)— modal entry
Durations
| Bucket | Value | Use |
|---|---|---|
| Instant | 100ms | Focus ring fade-in |
| Fast | 150ms | CTA warm-up, nav hover surface fade |
| Standard | 240ms | Card / panel transitions |
| Slow | 320ms | Initial page paint fade |
Per-Component Recipes
- CTA hover: fill transitions
#0a0a0a→#1f1f1fover 150ms standard easing — barely perceptible, a press of breath. - CTA press: deepens to
#2c2c2cmomentarily on:active. - Nav hover: nav buttons fade-in a 4% near-black surface (
rgba(10,10,10,0.04)) over 150ms — the invisible-until-hover pattern. - Terminal typing: the Grok demo terminal types its response character-by-character in monospace with a blinking caret — the page’s one signature motion, evoking a live command line.
- Diff reveal: insert / delete lines animate in on their tinted washes as the terminal “runs”.
- Focus ring:
2px solid #3b82f6appears instantly on:focus-visible, fading opacity 0 → 1 over 100ms. - Page transitions: initial paint fades opacity 0 → 1 over 320ms; subsequent navigation has no transition — perceived speed over flourish.
- Modal enter: scrim fades over 240ms; dialog scales
0.96 → 1and translates fromtranslateY(8px)over 240ms emphasized.
Reduced Motion
Respects prefers-reduced-motion: reduce. The terminal typing animation, card scale, and modal translate all degrade — the terminal renders its final state instantly, scale and translate become opacity-only. The page-paint fade and CTA warm-up remain because they communicate state without large movement.
9. Accessibility & A11y
Contrast Pairs
| Pair | Ratio | Level |
|---|---|---|
| #0a0a0a text on #ffffff | 19.8 | AAA |
| #ffffff on #0a0a0a CTA | 19.8 | AAA |
| #0a0a0a text on #f9f8f6 warm surface | 18.65 | AAA |
| #262626 terminal-fg on #f9f8f6 | 14.26 | AAA |
| #111827 prose link on #ffffff | 17.74 | AAA |
| #6b7280 muted on #ffffff | 4.83 | AA |
| #8a8f98 subtle on #ffffff | 3.25 | AA-large only — used on micro / decorative text |
| #248430 terminal green on #f9f8f6 | 4.48 | AA (and AA-large) |
| #be2e31 terminal red on #f9f8f6 | 5.46 | AA |
| #3b82f6 focus ring on #ffffff | 3.68 | AA-large / non-text UI (passes 3:1 for focus indicators) |
xAI’s core pairs sit at AAA — the near-black on white CTA hits 19.8:1, and the warm-surface body ink holds 18.65:1. The muted grey clears AA for body text; the subtle grey is reserved for non-essential micro-text where it only needs AA-large. The terminal diff colours clear AA against the warm surface, and the system blue clears the 3:1 threshold required of focus indicators and non-text UI.
Focus Indicators
Focus ring is 2px solid #3b82f6 with 2px outline-offset, applied via :focus-visible. It is the one consistently chromatic element on the otherwise monochrome surface — the blue makes a focused control unmistakable against white. On the dark Grok product canvas the ring keeps the same blue, which reads clearly against near-black.
ARIA Patterns
- Skip link:
<a href="#main">Skip to content</a>as the first focusable element. - Global nav:
<header role="banner">wrapping<nav aria-label="Global">. - Hero CTA:
<a href="/api">Get API Access</a>— standard link, no extra ARIA. - Terminal demo: the live terminal output is
aria-live="polite"so the typed response is announced; the typing animation is decorative andaria-hiddenon the caret. - Diff lines: insert / delete lines carry
aria-label(“added line”, “removed line”) so colour is not the sole signal. - Modal:
role="dialog"+aria-modal="true"+ focus trap + Esc closes. - Status badges: “Beta” / “New” pills include
aria-labelwith full meaning.
Keyboard Navigation
- Skip link → masthead → main content → terminal demo (focusable, controls reachable) → footer
- Nav: Tab moves through links; Esc closes any open dropdown
- Terminal: the prompt input is reachable by Tab; output region is read by screen readers via the live region
- Modal: focus trapped; Esc closes; focus returns to trigger
Screen Reader Hints
Verbose aria-label on icon-only buttons (the terminal “run” / “copy” controls announce their action). The xAI wordmark is <svg aria-hidden="true"> with the brand name as visible text. Diff colour is always backed by an aria-label so green/red are never the only signal.
Reduced Motion
The terminal typing animation and all scale / translate transitions degrade to instant or opacity-only under prefers-reduced-motion: reduce. Page-paint fade and CTA warm-up remain.
10. Responsive Behavior
Breakpoints
| Name | Width | Key Changes |
|---|---|---|
| Mobile | <640px | Masthead collapses to wordmark + Get API Access pill + hamburger; hero drops to ~36/500; terminal panel full-bleed |
| Tablet | 640–1024px | Partial nav; hero at ~48/500; terminal at comfortable width |
| Desktop | 1024–1280px | Full nav with all primary links; hero at 60/500; terminal at native width |
| Wide | 1280–1536px | Content caps at 1280; hero may scale to 80/500 on flagship pages |
Touch Targets
- Primary CTA: ~44px height — meets AAA touch sizing
- Nav links: ~44px hit area (text 14px + padding)
- Form inputs: ~40–44px
- Terminal controls: ≥40px tap targets
Collapsing Strategy
- Masthead: primary links collapse to a hamburger below tablet; the Get API Access pill stays visible at all sizes
- Hero: display scales 80 → 60 → 48 → 36px across breakpoints
- Terminal panel: a two-up (prompt / output) collapses to stacked single-column on mobile
- Footer: multi-column link list collapses to 2-column at tablet, 1-column at mobile
Image Behavior
The marketing surface is type-led and uses little imagery; where product screenshots appear they use aspect-ratio with object-fit: cover and loading="lazy" for off-screen art. The terminal panel is rendered as live DOM (not an image), so it stays crisp and accessible at every size.
Container Queries
Terminal sub-panels use container queries to switch from side-by-side (editor + output) to stacked when the panel narrows below its two-column threshold.
11. Content & Voice
Tone
Spare, technical, frontier-confident. xAI’s voice is “the lab that builds the model” — direct, engineer-coded, never hyped. Headlines state what the company is doing (“Understand the universe”, “Grok”) rather than selling the visitor on a feeling. The register is closer to a research charter than a product pitch.
Microcopy Patterns
- Button verbs: “Get API Access”, “Try Grok”, “Read the docs”, “Join us”
- Error message recipe: terse + factual — “Something went wrong. Try again.”
- Success confirmations: minimal — “Done”, “Copied”
- Field labels: short and engineer-coded — “Email”, “API key”, “Organization”
- Terminal copy: command-line literal — prompts, diffs, and output rendered as the real thing
Empty States
Empty terminal: a prompt and a blinking caret with a suggestion chip row (“Explain quantum entanglement”, “Write a poem”) — the empty state is the demo.
Empty results: “No results. Try a different query.” — short, no apology.
CTA Verb Conventions
- Primary: “Get API Access” (default, top of every page), “Try Grok”
- Secondary: “Read the docs”, “Learn more”, “View pricing”
- Tertiary: “Join us”, “See careers”
- Avoided: “Click here”, “Buy now”, “Sign up free!” — exclamation and hard-sell verbs break the frontier-technical register
12. Dark Mode & Theming
The corporate marketing site is light-only — it stays on the white canvas with near-black ink end to end; there is no theme toggle on the public surface. The dark register belongs to the Grok product UI, which runs on a near-black #0a0a0a canvas with light text and an inverted (white-on-near-black) pill.
The colors-dark: block documents that product surface: canvas steps through #0a0a0a → #141414 → #1f1f1f (bg / soft / card), text lands on #f5f5f5, hairlines become rgba(255,255,255,0.1), and the brand action inverts to white (#ffffff on near-black). The diff palette shifts to its dark variants — added-accent #46954a, deleted-accent #cf222e (the --added-accent-color / --deleted-accent-color tokens from the terminal system) — and the focus ring keeps its #3b82f6 blue, which reads cleanly against near-black.
The brand position: dark mode is a product concession, not a marketing register. The corporate site depends on the stark white-paper aesthetic to read as institutional and frontier-serious; the near-black product UI is where the engineering identity comes fully forward.
13. Lineage & Influences
xAI’s visual lineage runs through three traditions fused onto a single light-mono surface. First, Apple’s white-paper reduction — pure white canvas, generous whitespace, a single CTA per viewport, type carrying the page. Second, the post-2020 AI-research-lab editorial wave — the same neighbourhood as OpenAI’s OpenAI-Sans light-mono and Anthropic’s calm editorial register, where a custom-feeling neutral sans at a calm medium weight signals “research institution” rather than “startup”. Third, the Unix terminal — the warm-grey panel, monospace foreground, and frugal diff palette (green insert, red delete) are borrowed straight from the command line, and they are the one place the brand lets its engineering personality show.
The closest contemporaries are OpenAI and Vercel. OpenAI shares the near-monochrome marketing discipline, the custom sans at calm weight, and the single black pill — xAI’s #0a0a0a ink is a near-twin of OpenAI’s black, and both reserve their product colour for inside the app. Vercel shares the stark black-on-white technical minimalism and the monospace-accent posture. Where xAI diverges is the warm #f9f8f6 terminal panel: OpenAI stays rigorously cool-white, while xAI permits exactly one warm surface, and that surface is functional (the demo), not decorative. What xAI rejects is everything performative — brand gradients, hero animation beyond the terminal type-out, drop shadows on the marketing surface, marketing-bold headlines, and any colour register that reads as consumer-startup. The position is frontier-lab confidence: white paper, near-black ink, one pill, one warm panel, and the implicit claim that the model is the message.
Influences:
- Apple — white-paper reduction, single CTA, type-as-image, apple.com
- OpenAI — sibling-lab light-mono register and the single black pill, openai.com
- Vercel — stark black-on-white technical minimalism with a monospace accent, vercel.com
- Universal Sans (Newglyph) — the grotesque/humanist sans the display and body cuts derive from, universalsans.com
- Tailwind CSS — the token scaffolding under the hood (prose, ring, semantic HSL vars), tailwindcss.com
- The Unix terminal — the warm panel, monospace foreground, and diff palette that carry the engineering register
14. Do’s and Don’ts
Do
- Anchor the canvas on pure white (
#ffffff) — no warm tint on the page floor - Use stark near-black (
#0a0a0a) — not true#000000— for body, headings, and the brand pill - Set Universal Sans Display at a calm 500 weight for the 60px H1 — medium does the work of bold
- Let the H2 sit lighter (400 at 48px) than the H1 — the un-shouty hierarchy is part of the identity
- Use one full-pill (
9999px) near-black CTA per viewport — Get API Access, no shadow - Reserve the single warm surface (
#f9f8f6, 16px radius) for terminal panels and demo chips - Render the engineering register inside the terminal — monospace fg
#262626, diff-green#248430, diff-red#be2e31 - Treat the 4% near-black wash (
rgba(10,10,10,0.04)) as the hover vocabulary - Use the cool hairline (
#d5d9e2) for dividers and card borders — depth from contrast, not shadow - Keep the blue (
#3b82f6) to the focus ring and prose links only — never as a brand colour - Maintain 96–128px section rhythm — broadsheet pacing, generous breath
Don’t
- Don’t reach for
#000000true black — xAI’s ink is the softer engineered#0a0a0a - Don’t introduce a brand gradient, hero mesh, or glowing orb — the surface is stark by design
- Don’t promote the blue to a brand accent — it is functional chrome (focus / links) and nothing more
- Don’t stack drop shadows on marketing cards — the language is hairline borders + warm-surface contrast
- Don’t set headings in 700+ bold on the marketing surface — 500–600 is the discipline
- Don’t make the H2 heavier than the H1 — the lighter section opener is intentional
- Don’t add a second warm colour — the
#f9f8f6terminal surface is the only warmth the system allows - Don’t run more than one primary CTA per viewport — the single near-black pill carries the action
- Don’t put the terminal diff colours on the marketing surface outside the terminal — they belong to the command-line context
- Don’t use exclamation marks or hard-sell verbs — the voice is frontier-technical, never hyped
- Don’t apply the dark product palette to the corporate marketing surface — that page is light-only
15. Agent Prompt Guide
Quick Color Reference
Canvas: #ffffff
Near-Black Ink: #0a0a0a
Brand (CTA): #0a0a0a
Brand Hover: #1f1f1f
On-Brand: #ffffff
Warm Surface: #f9f8f6
Terminal Bg: #f8f7f5
Terminal FG: #262626
Diff Green: #248430
Diff Red: #be2e31
Hairline: #d5d9e2
Muted: #6b7280
Prose Link: #111827
Focus Ring: #3b82f6
Hover Surface: rgba(10,10,10,0.04)
Example Component Prompts
- “Create an xAI-style primary CTA: a ~44px-tall full-pill (
9999pxradius) with solid near-black (#0a0a0a) fill, white text in Universal Sans 14/500, ~10×20px padding. On hover the fill warms to#1f1f1fover 150ms. No drop-shadow, no border, no gradient. One CTA per viewport — label it ‘Get API Access’.” - “Build an xAI hero band: pure white (
#ffffff) ground, content capped at 1280px, 96–128px vertical padding. Display headline in Universal Sans Display 60/500 with -0.02em tracking — ‘Understand the universe’. Body-large sub-copy at 18/400 in#0a0a0a. Single near-black full-pill CTA left-aligned. No image, no animation — just stark type and white space.” - “Design an xAI terminal panel: warm off-white (
#f8f7f5) surface,1px solid #d5d9e2cool hairline, 16px radius, ~20px padding. Render monospace foreground in#262626. Inside, show a diff — insert lines on#e3efe4with green#248430accent and a+, delete lines on#f8eaeawith red#be2e31accent and a−. Animate a blinking caret typing the prompt response.” - “Create an xAI ghost button: transparent fill, near-black (
#0a0a0a) text in Universal Sans 14/500,1px solid #d5d9e2border, full-pill radius, ~10×20px padding. On hover it gains a 4% near-black wash (rgba(10,10,10,0.04)). Use it as the secondary action beside the primary pill.” - “Build an xAI suggestion chip: warm off-white (
#f9f8f6) fill, near-black text in Universal Sans 14/500, 16px radius (not pill), ~12×18px padding. Row of them under the Grok prompt box — ‘Explain quantum entanglement’, ‘Write a poem’. They match the terminal surface’s warmth and rounding.” - “Design an xAI input: white (
#ffffff) fill,1px solid #d5d9e2cool hairline, 8px radius, Universal Sans 16/400. On focus, replace the border with a2px solid #3b82f6ring at 2px offset — the system blue is the only chromatic state on the surface.”
Iteration Guide
- Pure white, near-black ink. If your canvas has warmth or your ink is true
#000000, it isn’t xAI.#fffffffloor,#0a0a0aink — the soft near-black is engineered, not absolute. - Universal Sans at 500, H2 lighter than H1. The 60px H1 holds a calm medium weight; the 48px H2 drops to 400. The un-shouty, slightly-inverted hierarchy is the typographic signature.
- One full-pill CTA. Near-black
#0a0a0a,9999pxradius, white label, no shadow. One per viewport. If there are two primary pills, you’ve broken the discipline. - One warm surface, and it’s the terminal.
#f9f8f6at 16px radius for the Grok panel and its chips. Don’t add a second warm colour anywhere on the page. - Colour lives in the terminal. Diff-green
#248430and diff-red#be2e31only appear inside the command-line panel. Keep them out of the marketing surface. - Blue is chrome, not brand.
#3b82f6for the focus ring and prose links — never a button fill, never a hero accent. - Flat, hairline depth.
#d5d9e2borders and the warm-surface contrast carry elevation. No drop shadows on marketing cards. - Broadsheet breath. 96–128px section rhythm, body at 16/1.55. If the page feels dense, add white space — the restraint is the brand.
Drop xai into your project, then ship the actual sections in an afternoon.
npx @webdesignhot/design-md add xai npx agentkit init --design xai