duply
Preview of Linear

Linear

The canonical dark product-tool aesthetic — a near-black canvas (#08090a) with layered graphite surfaces, precise Inter Variable typography at custom axis weights (510/590/680), and a restrained indigo accent family (#5e6ad2 brand,

---
version: alpha
name: Linear-design-analysis
description: The canonical dark product-tool aesthetic — a near-black canvas (#08090a) with layered graphite surfaces, precise Inter Variable typography at custom axis weights (510/590/680), and a restrained indigo accent family (#5e6ad2 brand, #828fff links). Surfaces stack through translucent white overlays and hairline borders rather than shadows; app screenshots sit in glassy panel frames. The system reads as engineered software minimalism — quiet, dense, obsessively tuned, with a serif display face (Tiempos) reserved for rare editorial moments.
colors:
  brand: "#5e6ad2"
  accent: "#7170ff"
  accent-bright: "#828fff"
  accent-tint: "#18182f"
  link: "#828fff"
  canvas: "#08090a"
  canvas-deep: "#010102"
  surface: "#1c1c1f"
  surface-raised: "#232326"
  surface-high: "#28282c"
  surface-panel: "#0f1011"
  surface-tint: "#141516"
  overlay-soft: "rgba(255,255,255,0.05)"
  header-veil: "rgba(11,11,11,0.8)"
  inverse: "#ffffff"
  ink: "#f7f8f8"
  body: "#d0d6e0"
  muted: "#8a8f98"
  quiet: "#62666d"
  hairline: "#23252a"
  hairline-strong: "#34343a"
  hairline-bright: "#3e3e44"
  hairline-veil: "rgba(255,255,255,0.08)"
  on-brand: "#ffffff"
  plan-green: "#68cc58"
  build-yellow: "#d4b144"
  security-slate: "#7a7fad"
  success: "#27a644"
  error: "#eb5757"
typography:
  display-xl:
    fontFamily: "Inter Variable, SF Pro Display, sans-serif"
    fontSize: 56px
    fontWeight: 590
    lineHeight: 1.06
    letterSpacing: -0.022em
  display-lg:
    fontFamily: "Inter Variable, SF Pro Display, sans-serif"
    fontSize: 48px
    fontWeight: 590
    lineHeight: 1.08
    letterSpacing: -0.022em
  display-md:
    fontFamily: "Inter Variable, SF Pro Display, sans-serif"
    fontSize: 40px
    fontWeight: 590
    lineHeight: 1.1
    letterSpacing: -0.022em
  display-sm:
    fontFamily: "Inter Variable, SF Pro Display, sans-serif"
    fontSize: 32px
    fontWeight: 590
    lineHeight: 1.12
    letterSpacing: -0.022em
  serif-accent:
    fontFamily: "Tiempos Headline, ui-serif, Georgia, serif"
    fontSize: 48px
    fontWeight: 400
    lineHeight: 1.1
    letterSpacing: -0.01em
  title-lg:
    fontFamily: "Inter Variable, SF Pro Display, sans-serif"
    fontSize: 24px
    fontWeight: 590
    lineHeight: 1.25
    letterSpacing: -0.012em
  title-md:
    fontFamily: "Inter Variable, SF Pro Display, sans-serif"
    fontSize: 20px
    fontWeight: 510
    lineHeight: 1.3
    letterSpacing: -0.012em
  title-sm:
    fontFamily: "Inter Variable, SF Pro Display, sans-serif"
    fontSize: 17px
    fontWeight: 510
    lineHeight: 1.4
    letterSpacing: -0.012em
  body-lg:
    fontFamily: "Inter Variable, SF Pro Display, sans-serif"
    fontSize: 18px
    fontWeight: 400
    lineHeight: 1.55
    letterSpacing: 0
  body-md:
    fontFamily: "Inter Variable, SF Pro Display, sans-serif"
    fontSize: 15px
    fontWeight: 400
    lineHeight: 1.6
    letterSpacing: 0
  body-sm:
    fontFamily: "Inter Variable, SF Pro Display, sans-serif"
    fontSize: 13px
    fontWeight: 400
    lineHeight: 1.5
    letterSpacing: 0
  caption:
    fontFamily: "Inter Variable, SF Pro Display, sans-serif"
    fontSize: 12px
    fontWeight: 510
    lineHeight: 1.4
    letterSpacing: 0
  micro:
    fontFamily: "Inter Variable, SF Pro Display, sans-serif"
    fontSize: 11px
    fontWeight: 510
    lineHeight: 1.35
    letterSpacing: 0
  code:
    fontFamily: "Berkeley Mono, ui-monospace, SF Mono, Menlo, monospace"
    fontSize: 13px
    fontWeight: 400
    lineHeight: 1.5
    letterSpacing: 0
  button:
    fontFamily: "Inter Variable, SF Pro Display, sans-serif"
    fontSize: 15px
    fontWeight: 510
    lineHeight: 1
    letterSpacing: 0
  nav-link:
    fontFamily: "Inter Variable, SF Pro Display, sans-serif"
    fontSize: 14px
    fontWeight: 510
    lineHeight: 1.4
    letterSpacing: 0
rounded:
  xs: 4px
  sm: 6px
  md: 8px
  lg: 12px
  xl: 16px
  xxl: 24px
  pill: 9999px
  full: 9999px
spacing:
  xs: 8px
  sm: 12px
  md: 16px
  lg: 24px
  xl: 32px
  xxl: 48px
  section: 96px
  section-lg: 160px
components:
  button-primary:
    backgroundColor: "{colors.inverse}"
    textColor: "{colors.canvas}"
    typography: "{typography.button}"
    rounded: "{rounded.md}"
    padding: 0 16px
    height: 36px
  button-secondary:
    backgroundColor: "{colors.overlay-soft}"
    textColor: "{colors.ink}"
    typography: "{typography.button}"
    rounded: "{rounded.md}"
    padding: 0 16px
    height: 36px
  button-brand:
    backgroundColor: "{colors.brand}"
    textColor: "{colors.on-brand}"
    typography: "{typography.button}"
    rounded: "{rounded.md}"
    padding: 0 16px
    height: 36px
  text-link:
    backgroundColor: transparent
    textColor: "{colors.link}"
    typography: "{typography.body-md}"
  top-nav:
    backgroundColor: "{colors.header-veil}"
    textColor: "{colors.ink}"
    typography: "{typography.nav-link}"
    height: 64px
  hero-band:
    backgroundColor: "{colors.canvas-deep}"
    textColor: "{colors.ink}"
    typography: "{typography.display-xl}"
    padding: 160px
  section-band:
    backgroundColor: "{colors.canvas}"
    textColor: "{colors.body}"
    padding: 96px
  eyebrow-label:
    backgroundColor: transparent
    textColor: "{colors.muted}"
    typography: "{typography.caption}"
  product-frame:
    backgroundColor: "{colors.surface-panel}"
    rounded: "{rounded.xl}"
  feature-card:
    backgroundColor: "{colors.surface-tint}"
    textColor: "{colors.ink}"
    typography: "{typography.title-md}"
    rounded: "{rounded.lg}"
    padding: 24px
  feature-card-glass:
    backgroundColor: "{colors.overlay-soft}"
    textColor: "{colors.ink}"
    rounded: "{rounded.lg}"
    padding: 24px
  badge-pill:
    backgroundColor: "{colors.accent-tint}"
    textColor: "{colors.accent-bright}"
    typography: "{typography.caption}"
    rounded: "{rounded.pill}"
    padding: 2px 10px
  keyboard-key:
    backgroundColor: "{colors.surface-raised}"
    textColor: "{colors.body}"
    typography: "{typography.code}"
    rounded: "{rounded.xs}"
    padding: 2px 6px
  text-input:
    backgroundColor: "{colors.surface}"
    textColor: "{colors.ink}"
    typography: "{typography.body-md}"
    rounded: "{rounded.md}"
    padding: 8px 12px
    height: 36px
  testimonial-card:
    backgroundColor: "{colors.surface-tint}"
    textColor: "{colors.body}"
    typography: "{typography.body-md}"
    rounded: "{rounded.lg}"
    padding: 24px
  code-block:
    backgroundColor: "{colors.surface-panel}"
    textColor: "{colors.body}"
    typography: "{typography.code}"
    rounded: "{rounded.lg}"
    padding: 24px
  footer:
    backgroundColor: "{colors.canvas-deep}"
    textColor: "{colors.muted}"
    typography: "{typography.body-sm}"
    padding: 64px
---

## Overview

Linear's marketing surface is the genre-defining dark product site: a near-black canvas (`{colors.canvas}`#08090a, dropping to `{colors.canvas-deep}` #010102 on marketing bands) where hierarchy is built from *layers of faint light* — graphite surfaces (#1c1c1f#28282c), translucent white overlays (`{colors.overlay-soft}`), and hairline borders — rather than shadows or saturated color.

Typography is **Inter Variable** tuned at custom axis weights: 510 ("medium"), 590 ("semibold"), 680 ("bold") — deliberately off the standard 500/600/700 stops. Display headlines run 590 with −0.022em tracking; body text sits at Linear's famous 15px/1.6. A licensed serif, **Tiempos Headline**, appears rarely as an editorial accent (`{typography.serif-accent}`); **Berkeley Mono** handles code and keyboard keys.

Color is rationed: the indigo brand family (`{colors.brand}` #5e6ad2, `{colors.accent}` #7170ff, links `{colors.link}` #828fff) plus three product-area accents (plan green, build yellow, security slate) that tint icons and diagrams — never large surfaces. Primary CTAs invert to **white** (`{component.button-primary}`), the brightest object on any page.

**Key Characteristics:**
- Near-black layered canvas: #010102#08090a#0f1011#1c1c1f#232326#28282c; elevation = lighter surface, not shadow.
- Inter Variable at precision weights 510/590/680; display tracking −0.022em; body 15px at 1.6.
- White primary buttons (`{colors.inverse}` on `{colors.canvas}`) at compact 36px, radius `{rounded.md}` (8px) — never pill.
- Indigo accent family for links/badges only; `{colors.accent-tint}` (#18182f) for badge fills.
- Translucent, blurred top nav (`{colors.header-veil}` — rgba(11,11,11,0.8)).
- App screenshots in `{component.product-frame}` glassy panels (#0f1011, 16px radius, hairline border) — the product is the imagery.
- `{component.keyboard-key}` chips (Berkeley Mono on #232326) — the keyboard-first identity rendered as UI.
- Massive vertical rhythm on marketing bands (~96–160px) against dense 15px body text.

## Colors

### Brand & Accent
- **Brand** (`{colors.brand}`#5e6ad2): the Linear indigo — logo, brand badges, occasional filled buttons (`{component.button-brand}`). Muted by design; never neon.
- **Accent** (`{colors.accent}`#7170ff) and **Accent Bright** (`{colors.accent-bright}`#828fff): interactive accents and links (`{colors.link}`); bright variant also serves as the link tone. **Accent Tint** (`{colors.accent-tint}`#18182f): badge/selection fills.
- **Product-area accents**: `{colors.plan-green}` #68cc58 (Plan), `{colors.build-yellow}` #d4b144 (Build), `{colors.security-slate}` #7a7fad (Security) — icon and diagram tints for product pillars.

### Surface (the elevation ramp)
- **Canvas Deep** (`{colors.canvas-deep}`#010102): marketing hero/footer floor.
- **Canvas** (`{colors.canvas}`#08090a): default page floor.
- **Surface Panel** (`{colors.surface-panel}`#0f1011): screenshot frames, code panels.
- **Surface Tint** (`{colors.surface-tint}`#141516): cards one step above canvas.
- **Surface / Raised / High** (#1c1c1f / #232326 / #28282c): menus, inputs, keys, hover layers — each step is "closer to the light".
- **Overlay Soft** (`{colors.overlay-soft}` — rgba(255,255,255,0.05)): glassy card fill over any surface.
- **Header Veil** (`{colors.header-veil}` — rgba(11,11,11,0.8)): the blurred sticky-nav background.

### Text
- **Ink** (`{colors.ink}`#f7f8f8): headlines, button-secondary labels. Not pure white.
- **Body** (`{colors.body}`#d0d6e0): running text — a cool, slightly blue light gray.
- **Muted / Quiet** (`{colors.muted}` #8a8f98, `{colors.quiet}` #62666d): secondary copy, eyebrows, fine print.
- **Inverse** (`{colors.inverse}`#ffffff): primary-button surface; the only pure white in the system.

### Borders
- **Hairline ramp** (`{colors.hairline}` #23252a`{colors.hairline-strong}` #34343a`{colors.hairline-bright}` #3e3e44) plus `{colors.hairline-veil}` (rgba(255,255,255,0.08)) for glass edges.

### Semantic
- **Success** (`{colors.success}`#27a644), **Error** (`{colors.error}`#eb5757): mostly inside product UI screenshots; marketing chrome stays neutral.

## Typography

### Font Family
- **Inter Variable** (`"Inter Variable","SF Pro Display",…`) for everything — with OpenType settings `cv01, ss03` (alternate glyphs) and custom variable weights.
- **Tiempos Headline** (Klim Type Foundry, licensed) — rare serif editorial accents.
- **Berkeley Mono** (U.S. Graphics, licensed) — code, keyboard keys, terminal frames.

### Hierarchy

| Token | Size | Weight | Line Height | Letter Spacing | Use |
|---|---|---|---|---|---|
| `{typography.display-xl}` | 56px | 590 | 1.06 | -0.022em | Homepage h1 ("The product development system…") |
| `{typography.display-lg}` | 48px | 590 | 1.08 | -0.022em | Section heads |
| `{typography.display-md}` | 40px | 590 | 1.1 | -0.022em | Sub-section heads |
| `{typography.display-sm}` | 32px | 590 | 1.12 | -0.022em | Feature-block heads |
| `{typography.serif-accent}` | 48px | 400 | 1.1 | -0.01em | Rare editorial serif moments — Tiempos |
| `{typography.title-lg}` | 24px | 590 | 1.25 | -0.012em | Card/feature titles |
| `{typography.title-md}` | 20px | 510 | 1.3 | -0.012em | Sub-titles |
| `{typography.title-sm}` | 17px | 510 | 1.4 | -0.012em | List titles, dense headers |
| `{typography.body-lg}` | 18px | 400 | 1.55 | 0 | Hero sub-copy |
| `{typography.body-md}` | 15px | 400 | 1.6 | 0 | Default running text — the Linear 15px |
| `{typography.body-sm}` | 13px | 400 | 1.5 | 0 | Captions, footer links |
| `{typography.caption}` | 12px | 510 | 1.4 | 0 | Eyebrows, badges |
| `{typography.micro}` | 11px | 510 | 1.35 | 0 | Tags, metadata |
| `{typography.code}` | 13px | 400 | 1.5 | 0 | Code, keyboard keys — Berkeley Mono |
| `{typography.button}` | 15px | 510 | 1.0 | 0 | Button labels |
| `{typography.nav-link}` | 14px | 510 | 1.4 | 0 | Top-nav items |

### Principles
The weight system is *custom-stop variable*: 510/590/680 instead of 500/600/700 — a half-step heavier than defaults, which is part of why Linear type feels dense and machined. Tracking tightens with size (−0.012em titles, −0.022em display). Hierarchy comes from weight + tone (ink vs body vs muted), rarely from size jumps.

### Note on Font Substitutes
- **Inter Variable** is free (SIL OFL) — use it directly; enable `cv01`/`ss03` and use 510/590/680 axis weights (static Inter: round to 500/600/700, slightly lighter than the original).
- **Tiempos Headline is licensed** (Klim). Substitutes: **Source Serif 4** (free) or Georgia at 400 with tight leading.
- **Berkeley Mono is licensed**. Substitutes: **JetBrains Mono** or **IBM Plex Mono** at 13px.

## Layout

### Spacing System
- **Base unit**: 4px grid; controls sit on 8px steps.
- **Tokens**: `{spacing.xs}` 8px · `{spacing.sm}` 12px · `{spacing.md}` 16px · `{spacing.lg}` 24px · `{spacing.xl}` 32px · `{spacing.xxl}` 48px · `{spacing.section}` 96px · `{spacing.section-lg}` 160px.
- Marketing bands breathe at 96–160px; inside cards everything is dense (24px padding, 8–12px gaps).

### Grid & Container
- **Max content width**: ~1024–1200px centered; hero text columns cap narrower (~640px) for measure.
- **Hero**: centered or left-aligned headline + sub-copy + button pair, with a full-width product screenshot panel below.
- **Feature grids**: 2–3-up `{component.feature-card}` / glass cards; bento-style mixed-size grids on product pages.
- **Footer**: 5–6 link columns of `{typography.body-sm}` on `{colors.canvas-deep}`.

### Whitespace Philosophy
Inverted density: enormous space *between* bands, high density *inside* components. The dark canvas makes 160px gaps feel like silence rather than emptiness; 15px/1.6 body keeps reading-line rhythm tight and product-like.

## Elevation & Depth

| Level | Treatment | Use |
|---|---|---|
| Floor | `{colors.canvas-deep}` / `{colors.canvas}` | Page background |
| Tint | `{colors.surface-tint}` | Cards one step up |
| Panel | `{colors.surface-panel}` + 1px `{colors.hairline}` | Screenshot/code frames |
| Glass | `{colors.overlay-soft}` fill + `{colors.hairline-veil}` border | Feature cards, hover layers |
| Raised | `{colors.surface}``{colors.surface-high}` | Menus, inputs, keys |
| Veil | `{colors.header-veil}` + backdrop blur | Sticky navigation |

**Light is elevation.** Almost no drop shadows on the dark theme — a surface is "higher" because it is lighter and/or carries a brighter hairline. Subtle glows (accent at low alpha) appear behind hero product frames.

### Decorative Depth
- Product screenshots emit faint indigo glow halos.
- Thin gradient strokes (accent → transparent) trace diagram lines and connector paths in feature illustrations.

## Shapes

### Border Radius Scale

| Token | Value | Use |
|---|---|---|
| `{rounded.xs}` | 4px | Keyboard keys, tiny chips |
| `{rounded.sm}` | 6px | Small controls, inline tags |
| `{rounded.md}` | 8px | Buttons, inputs — the workhorse |
| `{rounded.lg}` | 12px | Cards |
| `{rounded.xl}` | 16px | Screenshot panels, large frames |
| `{rounded.xxl}` | 24px | Oversized bento tiles |
| `{rounded.pill}` | 9999px | Badge pills only |
| `{rounded.full}` | 9999px / 50% | Avatars |

Buttons are **not** pills — 8px radius at 36px height is a Linear signature (compact, squared, machine-like). Pills are reserved for small badges.

## Components

### Navigation

**`top-nav`** — Sticky, translucent (`{colors.header-veil}`) with backdrop blur, 64px, hairline bottom edge. Wordmark left; center menu (Product, Resources, Pricing, Customers, Blog…) in `{typography.nav-link}`; right cluster "Log in" text-link + `{component.button-primary}` ("Sign up").

### Buttons & Links

**`button-primary`** — White (`{colors.inverse}`) with near-black text (`{colors.canvas}`), `{typography.button}` (15px/510), `{rounded.md}`, 36px tall, 0×16px padding. The brightest element on the page — used once or twice per band.

**`button-secondary`** — Glass: `{colors.overlay-soft}` fill, `{colors.ink}` label, `{colors.hairline-veil}` border, same geometry as primary.

**`button-brand`** — Indigo fill (`{colors.brand}`) with white label; used for product-context CTAs and in-app-style moments, not the main marketing CTA.

**`text-link`**`{colors.link}` (#828fff) inline links; no underline at rest.

### Bands & Content

**`hero-band`**`{colors.canvas-deep}` floor, `{typography.display-xl}` ink headline, `{typography.body-lg}` sub-copy in `{colors.body}`, button pair, then a full-width `{component.product-frame}` screenshot.

**`section-band`** — Default band: canvas floor, `{component.eyebrow-label}` caption in muted, display-md/lg headline, supporting copy and card grids. Bands separate by `{spacing.section}``{spacing.section-lg}`.

**`eyebrow-label`** — Small `{typography.caption}` label in `{colors.muted}` above headlines, often with a product-area accent dot.

**`product-frame`** — The screenshot vessel: `{colors.surface-panel}`, `{rounded.xl}`, 1px `{colors.hairline}`, faint accent glow. Holds full app captures; inner chrome is the product's own.

**`feature-card`** / **`feature-card-glass`** — Bento tiles: tint fill (`{colors.surface-tint}`) or glass fill (`{colors.overlay-soft}` + `{colors.hairline-veil}`), `{rounded.lg}`, `{spacing.lg}` padding, `{typography.title-md}` title + `{typography.body-md}` copy in `{colors.muted}`, often with an embedded mini-diagram.

**`badge-pill`**`{colors.accent-tint}` fill, `{colors.accent-bright}` caption text: "New", release tags, plan labels.

**`keyboard-key`** — Berkeley Mono on `{colors.surface-raised}` with `{rounded.xs}` and a bright top hairline; used in copy whenever a shortcut is referenced (⌘K everywhere).

**`testimonial-card`**`{colors.surface-tint}` card with quote in `{typography.body-md}` body color, name + role in `{colors.muted}`, logo top-right.

### Forms & Code

**`text-input`**`{colors.surface}` fill, `{colors.hairline-strong}` border, `{rounded.md}`, 36px, `{typography.body-md}`.

**`code-block`**`{colors.surface-panel}` panel, `{rounded.lg}`, `{spacing.lg}` padding, Berkeley Mono 13px with indigo/green syntax tints.

### Footer

**`footer`**`{colors.canvas-deep}`, 5–6 columns of `{typography.body-sm}` links in `{colors.muted}` (hover ink), status indicator with `{colors.success}` dot, fine print in `{colors.quiet}`.

## Do's and Don'ts

### Do
- Build elevation with lighter surfaces and hairlines — `{colors.surface-tint}``{colors.surface-high}` — not shadows.
- Keep primary CTAs white, compact (36px), and 8px-cornered; ration them to one or two per band.
- Use the custom weights (510/590/680) — standard 500/600/700 reads slightly thin against the original.
- Keep body at 15px/1.6 in `{colors.body}`; reserve `{colors.ink}` for headlines and labels.
- Tint icons/diagrams with the product-area accents (plan/build/security); keep large surfaces neutral.
- Frame every screenshot in `{component.product-frame}`; let the app be the artwork.
- Use Berkeley-Mono keyboard keys whenever shortcuts appear in copy.

### Don't
- Don't use pure black (#000) or pure-white text; the system lives between #010102 and #f7f8f8.
- Don't make buttons pills, and don't exceed `{rounded.xxl}` on tiles.
- Don't use the indigo accent for large fills or headline text — it's for links, badges, and glows.
- Don't add heavy drop shadows; a glow or brighter hairline is the maximum depth cue.
- Don't bold beyond 680, and don't use the serif outside rare editorial accents.
- Don't brighten the canvas per-section; bands vary by content, not background hue.

## Responsive Behavior

### Breakpoints

| Name | Width | Key Changes |
|---|---|---|
| Mobile | < 640px | Hamburger nav; display-xl → ~36–40px; bento grids stack 1-up; product frames bleed edge-to-edge |
| Tablet | 640–1024px | 2-up grids; nav keeps core items; section spacing compresses toward 64–96px |
| Desktop | 1024–1440px | Full bento layouts, 3-up grids, 96–160px rhythm |
| Wide | > 1440px | Content capped ~1200px; canvas keeps full-bleed darkness |

### Touch Targets
- Their CSS sets `--min-tap-size: 44px` — controls grow to ≥44px on touch even though desktop buttons render 36px.
- Keyboard-key chips are decorative on touch; tap targets defer to surrounding rows.

### Collapsing Strategy
- Bento grids reduce column count; tiles never shrink type below 15px body.
- Screenshot panels switch from framed (inset with radius) to full-bleed on mobile.
- The blurred header stays sticky at all sizes; menu opens as a full-screen dark sheet.

### Image Behavior
- App screenshots keep aspect ratio, cropping right-side panels first on narrow screens.
- Glows and gradient strokes scale down or drop on mobile for performance.

## Iteration Guide

1. One component at a time, by key (`{component.feature-card-glass}`, `{component.keyboard-key}`).
2. Variants are separate entries; no hover documentation (the CSS's `-hover` tokens are intentionally not specced here).
3. `{token.refs}` everywhere — never inline hex.
4. When something needs emphasis: raise its surface one step or brighten its hairline before reaching for color.
5. Accent color budget per band: links + one badge + one glow. More indigo than that reads off-system.
6. Type emphasis ladder: muted → body → ink → weight 590. Size is the last resort.
7. If a button looks friendly rather than machined, check: it should be 36px, 8px radius, weight 510.

## Known Gaps

- **Spacing scale is observational**: unlike colors/typography/radii (extracted from `--color-*`, `--font-*`, `--radius-*` variables), Linear's CSS exposes no named spacing scale; the `{spacing.*}` tokens document the observed 4/8px grid and 96–160px band rhythm from layout inspection, not from tokens.
- **Display sizes**: the marketing title scale (`--title-1` 17px … `--title-7` 56px) is extracted, but fluid scaling between breakpoints (clamp behavior) was not fully resolved; values documented at desktop rendering.
- **Hero headline weight**: rendered between 538–590 on the variable axis depending on element; documented uniformly as 590.
- **Animation**: scroll-reveals, glow pulses, and the product-tour transitions are out of scope.
- **Light theme**: linear.app's marketing surface ships dark-only — `colors` documents the dark canvas as the site's default; there is no `colors-dark` set because dark IS the default (the format's optional dark set is for light-default sites).
- **Product/dashboard UI**: the Linear app itself (its `--color-*` product tokens overlap with what's documented) deserves a separate dashboard-surface analysis — high-value future entry.
- **Translucent values**: rgba overlay values are documented as authored in their CSS; compositing against different canvases shifts perceived tone.

<!-- Documented by duply · real-world design systems as ready-to-use DESIGN.md for AI coding agents · https://duply.ai/linear/design-md -->

Color Palette

Accent

Neutrals

Typography

display-xl56px · 590 · 1.06
The quick brown fox jumps
display-lg48px · 590 · 1.08
The quick brown fox jumps
display-md40px · 590 · 1.1
The quick brown fox jumps
display-sm32px · 590 · 1.12
The quick brown fox jumps
serif-accent48px · 400 · 1.1
The quick brown fox jumps
title-lg24px · 590 · 1.25
The quick brown fox jumps

Spacing & Shape

Spacing

NameValuePreview
xs8px
sm12px
md16px
lg24px
xl32px
xxl48px
section96px
section-lg160px

Border Radius

NameValuePreview
xs4px
sm6px
md8px
lg12px
xl16px
xxl24px
pill9999px
full9999px

More like this

Build in any
design language

Free to browse. Real design systems, documented as DESIGN.md. New designs land weekly.

Browse the libraryHow it works