
primary
#5E6AD2
--color-primary
on primary
#FFFFFF
--color-on-primary
primary hover
#828FFF
--color-primary-hover
primary focus
#5E69D1
--color-primary-focus
ink
#F7F8F8
--color-ink
ink muted
#D0D6E0
--color-ink-muted
ink subtle
#8A8F98
--color-ink-subtle
ink tertiary
#62666D
--color-ink-tertiary
canvas
#010102
--color-canvas
surface 1
#0F1011
--color-surface-1
surface 2
#141516
--color-surface-2
surface 3
#18191A
--color-surface-3
surface 4
#191A1B
--color-surface-4
hairline
#23252A
--color-hairline
hairline strong
#34343A
--color-hairline-strong
hairline tertiary
#3E3E44
--color-hairline-tertiary
inverse canvas
#FFFFFF
--color-inverse-canvas
inverse surface 1
#F5F6F6
--color-inverse-surface-1
inverse surface 2
#F6F7F7
--color-inverse-surface-2
inverse ink
#000000
--color-inverse-ink
brand secure
#7A7FAD
--color-brand-secure
semantic success
#27A644
--color-semantic-success
semantic overlay
#000000
--color-semantic-overlay
字体家族
Linear Display / Linear Text / Linear Mono
字重
备注
3 个字体家族,完整字阶、行高和字距见 DESIGN.md
品牌设计系统的完整 Markdown 文档
Linear — Style Reference
> A near-black product-focused marketing canvas built around #010102 (the deepest dark surface of any tool in this collection), light gray text (#f7f8f8), and the signature Linear lavender-blue (#5e6ad2) used as the single chromatic accent. The system reads as software-craft documentation: dense, technical, and quietly luxurious. Display type is set in the Linear custom sans (SF Pro Display fallback) at 500–700 with measured negative tracking. Cards live as charcoal panels (#0f1011) with hairline borders. The accent lavender appears on the brand mark, focus rings, and a few intentional CTAs — never decoratively. Page rhythm leans on product UI screenshots framed in dark panels rather than atmospheric color.
**Theme:** dark
**Source website:** [https://linear.app/](https://linear.app/)
Use the live official website to compare and validate this extracted snapshot. The current source website remains authoritative.
Tokens — Colors
| Name | Value | Token | Role |
|---|---|---|---|
| primary | `#5e6ad2` | `--color-primary` | primary role extracted from the source design |
| on primary | `#ffffff` | `--color-on-primary` | on primary role extracted from the source design |
| primary hover | `#828fff` | `--color-primary-hover` | primary hover role extracted from the source design |
| primary focus | `#5e69d1` | `--color-primary-focus` | primary focus role extracted from the source design |
| ink | `#f7f8f8` | `--color-ink` | ink role extracted from the source design |
| ink muted | `#d0d6e0` | `--color-ink-muted` | ink muted role extracted from the source design |
| ink subtle | `#8a8f98` | `--color-ink-subtle` | ink subtle role extracted from the source design |
| ink tertiary | `#62666d` | `--color-ink-tertiary` | ink tertiary role extracted from the source design |
| canvas | `#010102` | `--color-canvas` | canvas role extracted from the source design |
| surface 1 | `#0f1011` | `--color-surface-1` | surface 1 role extracted from the source design |
| surface 2 | `#141516` | `--color-surface-2` | surface 2 role extracted from the source design |
| surface 3 | `#18191a` | `--color-surface-3` | surface 3 role extracted from the source design |
| surface 4 | `#191a1b` | `--color-surface-4` | surface 4 role extracted from the source design |
| hairline | `#23252a` | `--color-hairline` | hairline role extracted from the source design |
| hairline strong | `#34343a` | `--color-hairline-strong` | hairline strong role extracted from the source design |
| hairline tertiary | `#3e3e44` | `--color-hairline-tertiary` | hairline tertiary role extracted from the source design |
| inverse canvas | `#ffffff` | `--color-inverse-canvas` | inverse canvas role extracted from the source design |
| inverse surface 1 | `#f5f6f6` | `--color-inverse-surface-1` | inverse surface 1 role extracted from the source design |
| inverse surface 2 | `#f6f7f7` | `--color-inverse-surface-2` | inverse surface 2 role extracted from the source design |
| inverse ink | `#000000` | `--color-inverse-ink` | inverse ink role extracted from the source design |
| brand secure | `#7a7fad` | `--color-brand-secure` | brand secure role extracted from the source design |
| semantic success | `#27a644` | `--color-semantic-success` | semantic success role extracted from the source design |
| semantic overlay | `#000000` | `--color-semantic-overlay` | semantic overlay role extracted from the source design |
Tokens — Typography
Linear Display · `--font-primary`
Linear Text · `--font-family-2`
Linear Mono · `--font-family-3`
Type Scale
| Role | Size | Line Height | Letter Spacing | Token |
|---|---|---|---|---|
| display-xl | 80px | 1.05 | -3.0px | `--text-display-xl` |
| display-lg | 56px | 1.1 | -1.8px | `--text-display-lg` |
| display-md | 40px | 1.15 | -1.0px | `--text-display-md` |
| headline | 28px | 1.2 | -0.6px | `--text-headline` |
| card-title | 22px | 1.25 | -0.4px | `--text-card-title` |
| subhead | 20px | 1.4 | -0.2px | `--text-subhead` |
| body-lg | 18px | 1.5 | -0.1px | `--text-body-lg` |
| body | 16px | 1.5 | -0.05px | `--text-body` |
| body-sm | 14px | 1.5 | 0 | `--text-body-sm` |
| caption | 12px | 1.4 | 0 | `--text-caption` |
| button | 14px | 1.2 | 0 | `--text-button` |
| eyebrow | 13px | 1.3 | 0.4px | `--text-eyebrow` |
| mono | 13px | 1.5 | 0 | `--text-mono` |
Tokens — Spacing & Shapes
**Density:** comfortable
Spacing Scale
| Name | Value | Token |
|---|---|---|
| xxs | 4px | `--spacing-xxs` |
| xs | 8px | `--spacing-xs` |
| sm | 12px | `--spacing-sm` |
| md | 16px | `--spacing-md` |
| lg | 24px | `--spacing-lg` |
| xl | 32px | `--spacing-xl` |
| xxl | 48px | `--spacing-xxl` |
| section | 96px | `--spacing-section` |
Border Radius
| Name | Value | Token |
|---|---|---|
| xs | 4px | `--radius-xs` |
| sm | 6px | `--radius-sm` |
| md | 8px | `--radius-md` |
| lg | 12px | `--radius-lg` |
| xl | 16px | `--radius-xl` |
| xxl | 24px | `--radius-xxl` |
| pill | 9999px | `--radius-pill` |
| full | 9999px | `--radius-full` |
Layout
Components
button primary
**Role:** button primary component
button primary pressed
**Role:** button primary pressed component
button primary hover
**Role:** button primary hover component
button secondary
**Role:** button secondary component
button tertiary
**Role:** button tertiary component
button inverse
**Role:** button inverse component
pricing card
**Role:** pricing card component
pricing card featured
**Role:** pricing card featured component
feature card
**Role:** feature card component
product screenshot card
**Role:** product screenshot card component
testimonial card
**Role:** testimonial card component
customer logo tile
**Role:** customer logo tile component
text input
**Role:** text input component
text input focused
**Role:** text input focused component
pricing tab default
**Role:** pricing tab default component
pricing tab selected
**Role:** pricing tab selected component
cta banner
**Role:** cta banner component
changelog row
**Role:** changelog row component
status badge
**Role:** status badge component
top nav
**Role:** top nav component
footer
**Role:** footer component
Do's and Don'ts
Do
Don't
Layout
Use the documented spacing scale and component geometry as the implementation baseline. Validate responsive composition and current page rhythm against [the live source](https://linear.app/).