---
name: intercom-design-reference
provider: DesignSkill (https://designskill.dev)
reference: intercom.com
source_url: https://www.intercom.com/
tool: designskill-extract/3.2.0
extracted_at: 2026-07-27T09:03:29.251Z
mode: full-render
classification: reference_only
---

# Intercom — Design Reference (measured)

Measured design tokens extracted from `https://www.intercom.com/` by designskill-extract/3.2.0.
Every value below was observed in the live page (×N = observation count). Values not listed were **not observed** — do not invent them.
This document is `reference_only`: an analysis of a third-party site, not a license to its brand assets.

## Overview

- Extraction mode: **full-render** (viewports 390/768/1440px × light/dark), 1 page(s), 453 observation records.
- Primary action color observed as `#000000` (basis: declared, confidence 0.92).
- Dominant font family: **Saans** (×769; secondary Serrif ×159).
- Type scale observed at 8 sizes from 12px to 40px.
- Corner radius values in use: 4px, 6px, 1px.
- Not observed in this extraction: forms, cards, badges, elevation.

## Colors

### Role Tokens

Semantic roles inferred from observed usage. `basis` tells how the role was established (declared CSS var > cross-validated > inferred).

| Token | Value | Basis | Confidence | Observed |
|---|---|---|---|---|
| `{color.primary}` | `#000000` | declared | 0.92 | ×316 — --button-primary-hover-background |
| `{color.background}` | `#000000` | declared | 0.92 | ×316 — --button-primary-hover-background |
| `{color.ink}` | `#000000` | declared | 0.92 | ×316 — --button-secondary-disabled-foreground |
| `{color.muted}` | `#626260` | inferred | 0.57 | ×3 |
| `{color.surface}` | `#111111` | inferred | 0.7 | ×558 |
| `{color.accent}` | `#0007cb` | inferred | 0.65 | ×63 |

### Observed Palette

Full measured palette ordered by usage share. `Used in` lists the CSS properties the color appeared on.

| Hex | Share | Used in | Observed |
|---|---|---|---|
| `#111111` | 33.6% | border-color, color, background-color, fill, --color-black | ×558 (cross-validated, 0.94) |
| `#000000` | 19.0% | background-color, color, border-color, -webkit-mask | ×316 (cross-validated, 0.93) |
| `#ffffff` | 18.1% | background-color, color, border-color, initial-value, --color-off-white | ×301 (cross-validated, 0.93) |
| `#d3cec6` | 13.6% | --color-clay, background-color | ×226 (cross-validated, 0.93) |
| `#f1eee9` | 4.6% | background-color, --color-chalk, --color-cream | ×77 (cross-validated, 0.91) |
| `#0007cb` | 3.8% | --color-helpdesk, background-color | ×63 (cross-validated, 0.91) |
| `#dedbd6` | 3.2% | --color-linen, border-color, --color-canvas, background-color | ×53 (cross-validated, 0.91) |
| `#ff5600` | 0.6% | background-color, --color-orange, --color-report-orange | ×10 (cross-validated, 0.88) |
| `#df2020` | 0.4% | background-color, custom-property | ×6 (cross-validated, 0.88) |
| `#020917` | 0.4% | background-color, --color-navy, --color-dark | ×6 (inferred, 0.58) |
| `#626260` | 0.2% | color, background-color | ×3 (inferred, 0.57) |
| `#000ce1` | 0.1% | --color-focus-outline | ×2 (inferred, 0.57) |
| `#c41c1c` | 0.2% | --color-error, custom-property | ×3 (inferred, 0.57) |
| `#00da00` | 0.1% | --color-green | ×2 (inferred, 0.57) |
| `#37b54a` | 0.1% | --color-voice-accent-green | ×2 (inferred, 0.57) |
| `#7b7b78` | 0.1% | border-color | ×2 (inferred, 0.57) |

## Typography

### Font Families

| Family | Observed |
|---|---|
| `Saans` | ×769 |
| `Serrif` | ×159 |
| `SaansMono` | ×81 |
| `Inter` | ×8 |
| `MediumLL` | ×7 |
| `IvoryLL` | ×2 |

Use **Saans** as the default family — it accounts for the overwhelming majority of observed text nodes.

### Type Scale

| Token | Size | Observed |
|---|---|---|
| `{type.display}` | 40px | ×38 |
| `{type.h1}` | 30px | ×18 |
| `{type.h2}` | 28px | ×30 |
| `{type.h3}` | 24px | ×42 |
| `{type.body-lg}` | 20px | ×108 |
| `{type.body}` | 16px | ×327 |
| `{type.body-sm}` | 14px | ×305 |
| `{type.caption}` | 12px | ×79 |

The most frequently observed size is **16px** (×327) — treat it as the default body size.

## Spacing

| Value | Observed |
|---|---|
| `12px` | ×236 |
| `8px` | ×226 |
| `16px` | ×218 |
| `24px` | ×212 |
| `20px` | ×168 |
| `48px` | ×100 |
| `32px` | ×94 |
| `4px` | ×62 |
| `80px` | ×42 |
| `64px` | ×42 |
| `40px` | ×40 |
| `14px` | ×39 |

## Shape (Border Radius)

| Value | Observed |
|---|---|
| `4px` | ×62 |
| `6px` | ×36 |
| `1px` | ×1 |

## Motion

| Duration | Observed |
|---|---|
| `0.2s` | ×200 |
| `0.15s` | ×18 |
| `0.4s` | ×8 |
| `.5s` | ×3 |
| `.2s` | ×3 |

## Components

Measured computed styles of representative components (desktop viewport).

| Component | Measured spec | Samples |
|---|---|---|
| button.primary | bg `#000000` · text `#ffffff` · radius `6px` · padding `12px 16px` · font `16px/400` | ×1 |
| button.outline | text `#111111` · border `1px solid rgb(17, 17, 17)` · radius `4px` · padding `0px 14px` · font `16px` | ×4 |
| nav | bg `#ffffff` · height `108px` · position `fixed` · link `#000000` | — |

### Hero Gradient (observed)

```css
background-image: linear-gradient(to right in oklab, rgb(17, 17, 17) 0%, rgb(17, 17, 17) 100%);
```

## Accessibility (WCAG Contrast)

| FG | BG | Ratio | AA | Source |
|---|---|---|---|---|
| `#111111` | `#faf9f6` | 17.94 | pass | observed ×117 |
| `#000000` | `#ffffff` | 21 | pass | observed ×106 |
| `#111111` | `#ffffff` | 18.88 | pass | observed ×69 |
| `#111111` | `#f1eee9` | 16.32 | pass | observed ×21 |
| `#ffffff` | `#111111` | 18.88 | pass | observed ×18 |
| `#000000` | `#f1eee9` | 18.15 | pass | observed ×8 |
| `#ffffff` | `#000000` | 21 | pass | observed ×3 |
| `#000000` | `#000000` | 1 | fail | ink_on_background |
| `#ffffff` | `#000000` | 21 | pass | white_on_primary |
| `#626260` | `#000000` | 3.44 | fail | muted_on_background |

2 measured pair(s) fail AA — if you reuse those pairs, adjust lightness until the ratio reaches 4.5:1.

## Usage Rules

### Do
- Use `{color.primary}` (`#000000`) for primary actions only — that is where it was observed.
- Default text pairing: `{color.ink}` (`#000000`) on `{color.background}` (`#000000`).
- Set all text in `Saans` (fallbacks only for glyph coverage).
- Pick corner radii from the measured set (4px, 6px, 1px) — no intermediate values were observed.
- Cite this file's token names (`{color.*}`, `{type.*}`) when generating UI so output stays traceable to observations.

### Don't
- Don't invent colors, sizes, shadows, or spacing not listed above — absence means *not observed*, and this document records observations only.
- Don't assume the missing blocks (forms, cards, badges, elevation) don't exist on the site — they were simply not captured in this run.
- Don't copy brand assets (logo, wordmark, imagery, copy) — `reference_only` covers measured style values, not brand identity.
- Treat `{color.muted}` with caution — confidence below 0.6.

## Provenance

- Source: https://www.intercom.com/ (1 page(s))
- Tool: designskill-extract/3.2.0 · extracted 2026-07-27T09:03:29.251Z
- Mode: full-render — 풀렌더 모드 — 3뷰포트 × 라이트/다크 computed style + 상태 관측.
- Blocks observed: 00, 01, 02, 03, 04, 05, 09, 10, 12 · missing: forms, cards, badges, elevation
- Degraded stages (extraction failure ≠ design change — exclude from diffs): state-observation
- Warning: primary 불일치: static=#ff5600 vs render=#000000 — render 채택

---

<sub>Generated & served by [DesignSkill](https://designskill.dev)</sub>
