Linear Design System

Project management tool · Premium high-density dark mode with purple accents...
Back to Home
01

Visual Theme & Atmosphere

Linear's marketing canvas is the deepest dark surface in this collection — {colors.canvas} is #010102, essentially pure black with a faint blue tint. On top sits a four-step surface ladder ({colors.surface-1} through {colors.surface-4}) for cards, panels, and lifted tiles, with hairline borders running from {colors.hairline} (#23252a) up through {colors.hairline-strong} and {colors.hairline-tertiary}. Light gray text ({colors.ink} #f7f8f8) carries the body and headlines.

The single chromatic accent is Linear lavender-blue {colors.primary} (#5e6ad2) — used on the brand mark, focus rings, and the primary CTA button. A lighter hover state ({colors.primary-hover} #828fff) and a focus-tinted variant ({colors.primary-focus} #5e69d1) extend the same hue. Linear avoids saturated greens, oranges, reds, etc. on the marketing canvas — the only semantic color is {colors.semantic-success} (#27a644) for status pills and the rare success indicator.

...

Key Characteristics:

  • Dark-canvas marketing system{colors.canvas} (#010102) is the deepest dark in this collection.
  • ...

Live Visual Theme Representation:

Visual Theme Example

02

Color Palette & Roles

> Source pages: linear.app (home), /intake, /pricing, /contact/sales, /build.

Brand & Accent

  • Lavender-Blue ({colors.primary}): The signature Linear accent — primary CTA, brand mark, link emphasis.
  • Lavender Hover ({colors.primary-hover}): Lighter lavender (#828fff) — hovered state of the primary CTA.
  • ...

Surface

  • Canvas ({colors.canvas}): Default page background — #010102, near-pure black with a faint blue tint.
  • Surface 1 ({colors.surface-1}): One step above canvas — feature cards, pricing cards, product screenshot panels.
  • ...

Text

  • Ink ({colors.ink}): All headlines and emphasized body type — light gray #f7f8f8.
  • Ink Muted ({colors.ink-muted}): Secondary type at #d0d6e0 — meta info on hero panels.
  • ...

Semantic

  • Success Green ({colors.semantic-success}): Status pills, success indicators. The only semantic color on marketing.
  • Overlay ({colors.semantic-overlay}): Pure black overlay scrim for modals.
primary
#5e6ad2
on-primary
#ffffff
primary-hover
#828fff
primary-focus
#5e69d1
ink
#f7f8f8
ink-muted
#d0d6e0
ink-subtle
#8a8f98
ink-tertiary
#62666d
canvas
#010102
surface-1
#0f1011
surface-2
#141516
surface-3
#18191a
surface-4
#191a1b
hairline
#23252a
hairline-strong
#34343a
hairline-tertiary
#3e3e44
inverse-canvas
#ffffff
inverse-surface-1
#f5f6f6
inverse-surface-2
#f6f7f7
inverse-ink
#000000
brand-secure
#7a7fad
semantic-success
#27a644
semantic-overlay
#000000
03

Typography Rules

Font Family

  • Linear Display — Linear's custom display sans; fallback SF Pro Display, -apple-system, system-ui, Segoe UI, Roboto. Carries display-xl through subhead.
  • Linear Text — Linear's custom text sans (a slightly different cut tuned for body sizes); same fallback stack. Carries body sizes, button labels, captions.
  • ...
The marketing surface treats Display and Text as one continuous voice; the family change is silent.

Hierarchy

TokenSizeWeightLine HeightLetter SpacingUse
..................

Principles

  • Aggressive negative tracking on display (-3.0px at 80px ≈ 4% of size).
  • Single voice from display to body. Display-xl at 600 → body at 400 — same family, narrower weights.
  • ...

Note on Font Substitutes

Linear's custom typeface isn't publicly distributed; the documented fallback SF Pro Display, -apple-system, system-ui is the recommended substitute on macOS. For cross-platform implementation, Inter at weight 500 / 600 / 700 is the closest free substitute. Geist Sans is also viable. For mono, JetBrains Mono or Geist Mono at weight 400 closely approximates Linear Mono.

Dynamic Preview:
display-xl size: 80px | weight: 600 | height: 1.05 | spacing: -3.0px
The quick brown fox jumps over the lazy dog
display-lg size: 56px | weight: 600 | height: 1.10 | spacing: -1.8px
The quick brown fox jumps over the lazy dog
display-md size: 40px | weight: 600 | height: 1.15 | spacing: -1.0px
The quick brown fox jumps over the lazy dog
headline size: 28px | weight: 600 | height: 1.20 | spacing: -0.6px
The quick brown fox jumps over the lazy dog
card-title size: 22px | weight: 500 | height: 1.25 | spacing: -0.4px
The quick brown fox jumps over the lazy dog
subhead size: 20px | weight: 400 | height: 1.40 | spacing: -0.2px
The quick brown fox jumps over the lazy dog
body-lg size: 18px | weight: 400 | height: 1.50 | spacing: -0.1px
The quick brown fox jumps over the lazy dog
body size: 16px | weight: 400 | height: 1.50 | spacing: -0.05px
The quick brown fox jumps over the lazy dog
body-sm size: 14px | weight: 400 | height: 1.50 | spacing: 0
The quick brown fox jumps over the lazy dog
caption size: 12px | weight: 400 | height: 1.40 | spacing: 0
The quick brown fox jumps over the lazy dog
button size: 14px | weight: 500 | height: 1.20 | spacing: 0
The quick brown fox jumps over the lazy dog
eyebrow size: 13px | weight: 500 | height: 1.30 | spacing: 0.4px
The quick brown fox jumps over the lazy dog
mono size: 13px | weight: 400 | height: 1.50 | spacing: 0
The quick brown fox jumps over the lazy dog
04

Layout Principles

Spacing System

  • Base unit: 4px.
  • Tokens (front matter): {spacing.xxs} 4px · {spacing.xs} 8px · {spacing.sm} 12px · {spacing.md} 16px · {spacing.lg} 24px · {spacing.xl} 32px · {spacing.xxl} 48px · {spacing.section} 96px.
  • ...

Grid & Container

  • Max content width sits around 1280px.
  • Card grids are 3-up at desktop, 2-up at tablet, 1-up at mobile.
  • ...

Whitespace Philosophy

The dark canvas IS the whitespace. Sections separate by lift onto surface-1 panels, not by gaps in white. Within a panel, generous {spacing.lg} 24px gaps between content blocks; {spacing.section} 96px between sections.

Grid Layout Wireframe Mockup:

Layout Grid Example

Layout Wireframe blueprint
1
2
3
4
5
6
7
8
9
10
11
12
Gutter spacing: 16px / 24px
Side Margins: 24px (Mobile) / 48px (Desktop)
Max Container Width: 1200px
05

Depth & Elevation

LevelTreatmentUse
.........
Linear's depth is carried by surface ladder + hairline borders. The brand resists drop shadows on dark almost entirely.

Decorative Depth

  • Product UI screenshots dominate as decorative depth.
  • No atmospheric gradients, no spotlight cards.
  • ...

Elevation Level Showcase:

Elevation Level Example

Flat Surface (Level 0)

Used for background layers, sidebar headers, or baseline borders.

Low Elevation (Level 1 / Card)

Used for floating product elements, cards, and hover states.

High Elevation (Level 2 / Popover & Dropdown)

Used for modals, select menus, code editor tooltips, and overlay headers.

Border Radius & Shape Scale:

radius-sm 4px
radius-md 6px
radius-lg 8px
radius-pill Pill / Tag
06

Component Stylings

Border Radius Scale

TokenValueUse
.........

Photography & Illustration Geometry

  • Product UI screenshots dominate; they sit in {rounded.xl} 16px tiles with {spacing.lg} 24px outer padding.
  • Customer logo tiles render at small sizes (~24px logo height) on {colors.canvas} with no border.
  • ...

Buttons

button-primary — Lavender CTA. The default primary CTA across all pages.

  • Background {colors.primary}, text {colors.on-primary}, type {typography.button}, padding 8px 14px, rounded {rounded.md}.
  • ...
button-secondary — Charcoal button. Used for secondary CTAs ("Sign in", "Read changelog").
  • Background {colors.surface-1}, text {colors.ink}, type {typography.button}, padding 8px 14px, rounded {rounded.md}. 1px {colors.hairline} border.
button-tertiary — Plain text button.
  • Background {colors.canvas}, text {colors.ink}, type {typography.button}, rounded {rounded.md}, padding 8px 14px.
button-inverse — White-on-dark inverse CTA.
  • Background {colors.inverse-canvas}, text {colors.inverse-ink}, type {typography.button}, rounded {rounded.md}, padding 8px 14px.

Pricing Tabs

pricing-tab-default + pricing-tab-selected — Pill-toggle on /pricing.

  • Default: {colors.canvas} background, {colors.ink-subtle} text, rounded {rounded.pill}, padding 6px 14px.
  • ...

Cards & Containers

pricing-card — Each tier on /pricing.

  • Background {colors.surface-1}, text {colors.ink}, type {typography.body}, rounded {rounded.lg}, padding 24px. 1px {colors.hairline} border.
pricing-card-featured — Recommended tier — surface lift to surface-2.
  • Background {colors.surface-2}, otherwise identical structure.
feature-card — Generic feature highlight tile.
  • Background {colors.surface-1}, text {colors.ink}, type {typography.body}, rounded {rounded.lg}, padding 24px.
product-screenshot-card — The dominant card type — frames a high-fidelity Linear app UI screenshot.
  • Background {colors.surface-1}, text {colors.ink}, type {typography.body}, rounded {rounded.xl}, padding 24px.
testimonial-card — Customer quote with avatar + name + role.
  • Background {colors.surface-1}, text {colors.ink}, type {typography.body-lg}, rounded {rounded.lg}, padding 32px.
customer-logo-tile — Small tile in the customer marquee.
  • Background {colors.canvas}, text {colors.ink-subtle}, type {typography.caption}, rounded {rounded.xs}, padding 16px.
cta-banner — Closing CTA panel near page bottom.
  • Background {colors.surface-1}, text {colors.ink}, type {typography.headline}, rounded {rounded.lg}, padding 48px.

Inputs & Forms

text-input + text-input-focused — Form fields on /contact/sales and signup overlays.

  • Background {colors.surface-1}, text {colors.ink}, type {typography.body}, rounded {rounded.md}, padding 8px 12px.
  • ...

Status & Build Page

changelog-row — Each row in /build (changelog page) listing version, date, and changes.

  • Background {colors.canvas}, text {colors.ink}, type {typography.body}, rounded {rounded.xs}, padding 24px 0. 1px {colors.hairline} bottom rule.
status-badge — Small status pill.
  • Background {colors.surface-2}, text {colors.ink-muted}, type {typography.caption}, rounded {rounded.pill}, padding 2px 8px.

Navigation

top-nav — Sticky dark bar with the Linear wordmark left, primary nav links centered, and a button-secondary ("Sign in") + button-primary ("Get started") pair right.

  • Background {colors.canvas}, text {colors.ink}, type {typography.body-sm}, height 56px.

Footer

footer — Dense link grid on {colors.canvas} with the Linear wordmark left.

  • Background {colors.canvas}, text {colors.ink-subtle}, type {typography.caption}, padding 64px 32px.

Interactive Component Demonstrations:

Component Interactive Example

07

Do's and Don'ts

Do

  • Reserve {colors.canvas} (#010102) as the system's anchor surface — the faint blue tint is intentional.
  • Use {colors.primary} lavender ONLY for: brand mark, primary CTA, focus ring, link emphasis.
  • Use the four-step surface ladder for hierarchy. Avoid skipping levels.
  • Pair display weight 600 with body weight 400 — Linear resists 700+ display weights.
  • Apply negative letter-spacing aggressively on display.
  • Use product UI screenshots as the protagonist of every section.
  • Compose CTAs as {rounded.md} 8px corners.

Don't

  • Don't ship a light-mode marketing page.
  • Don't use lavender as a section background or card fill.
  • Don't introduce a second chromatic accent (orange, pink, green for marketing).
  • Don't add atmospheric gradients or spotlight cards.
  • Don't pill-round CTAs.
  • Don't use #000000 true black as the canvas.
  • Don't combine multiple bright accents in product screenshot mockups.
✅ Recommended / Do
  • Reserve {colors.canvas} (#010102) as the system's anchor surface — the faint blue tint is intentional.
  • Use {colors.primary} lavender ONLY for: brand mark, primary CTA, focus ring, link emphasis.
  • Use the four-step surface ladder for hierarchy. Avoid skipping levels.
  • Pair display weight 600 with body weight 400 — Linear resists 700+ display weights.
  • Apply negative letter-spacing aggressively on display.
  • Use product UI screenshots as the protagonist of every section.
  • Compose CTAs as {rounded.md} 8px corners.
❌ Discouraged / Don't
  • Don't ship a light-mode marketing page.
  • Don't use lavender as a section background or card fill.
  • Don't introduce a second chromatic accent (orange, pink, green for marketing).
  • Don't add atmospheric gradients or spotlight cards.
  • Don't pill-round CTAs.
  • Don't use #000000 true black as the canvas.
  • Don't combine multiple bright accents in product screenshot mockups.
08

Responsive Behavior

Breakpoints

NameWidthKey Changes
.........

Touch Targets

  • CTAs hold ≥40px tap height across viewports.
  • Pricing tab pills hold ≥36px tap height; touch viewports grow to ≥44px.
  • ...

Collapsing Strategy

  • Top nav: links collapse to hamburger below 768px.
  • Card grids: 3-up → 2-up at 1024px → 1-up below 768px.
  • ...

Image Behavior

  • Product UI screenshots maintain aspect ratio and never crop.
  • Customer logos in the marquee may collapse from 6-up to 3-up below 768px.

Responsive Adaptation Note:

Responsive Behavior Example

Interactive Viewport Simulator
Width: 800px (Desktop Mode) Grid Container
Primary Column

Adjusts layout width

Secondary Column

Folds on viewport change

Sidebar Column

Stacks to bottom on mobile

09

Agent Prompt Guide

1. Focus on ONE component at a time and reference it by its components: token name. 2. When introducing a section, decide first which surface lift it lives on.

  • ...

Copyable Agent Integration Prompt:

Prompt Guide Copy Box

10

Full System Design Tokens

The parsed design tokens extracted from the core stylesheet of this design system:

Design TokenHex ValueSystem Palette Role
--primary#5e6ad2System color representation for primary
--on-primary#ffffffSystem color representation for on-primary
--primary-hover#828fffSystem color representation for primary-hover
--primary-focus#5e69d1System color representation for primary-focus
--ink#f7f8f8System color representation for ink
--ink-muted#d0d6e0System color representation for ink-muted
--ink-subtle#8a8f98System color representation for ink-subtle
--ink-tertiary#62666dSystem color representation for ink-tertiary
--canvas#010102System color representation for canvas
--surface-1#0f1011System color representation for surface-1
--surface-2#141516System color representation for surface-2
--surface-3#18191aSystem color representation for surface-3
--surface-4#191a1bSystem color representation for surface-4
--hairline#23252aSystem color representation for hairline
--hairline-strong#34343aSystem color representation for hairline-strong
--hairline-tertiary#3e3e44System color representation for hairline-tertiary
--inverse-canvas#ffffffSystem color representation for inverse-canvas
--inverse-surface-1#f5f6f6System color representation for inverse-surface-1
--inverse-surface-2#f6f7f7System color representation for inverse-surface-2
--inverse-ink#000000System color representation for inverse-ink
--brand-secure#7a7fadSystem color representation for brand-secure
--semantic-success#27a644System color representation for semantic-success
--semantic-overlay#000000System color representation for semantic-overlay