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
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.
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.
- ...
Hierarchy
| Token | Size | Weight | Line Height | Letter Spacing | Use |
|---|---|---|---|---|---|
| ... | ... | ... | ... | ... | ... |
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.
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
Depth & Elevation
| Level | Treatment | Use |
|---|---|---|
| ... | ... | ... |
Decorative Depth
- Product UI screenshots dominate as decorative depth.
- No atmospheric gradients, no spotlight cards.
- ...
Elevation Level Showcase:
Elevation Level Example
Used for background layers, sidebar headers, or baseline borders.
Used for floating product elements, cards, and hover states.
Used for modals, select menus, code editor tooltips, and overlay headers.
Border Radius & Shape Scale:
Component Stylings
Border Radius Scale
| Token | Value | Use |
|---|---|---|
| ... | ... | ... |
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
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
#000000true black as the canvas. - Don't combine multiple bright accents in product screenshot mockups.
- 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 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
#000000true black as the canvas. - Don't combine multiple bright accents in product screenshot mockups.
Responsive Behavior
Breakpoints
| Name | Width | Key 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
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
Full System Design Tokens
The parsed design tokens extracted from the core stylesheet of this design system:
| Design Token | Hex Value | System Palette Role |
|---|---|---|
| --primary | #5e6ad2 | System color representation for primary |
| --on-primary | #ffffff | System color representation for on-primary |
| --primary-hover | #828fff | System color representation for primary-hover |
| --primary-focus | #5e69d1 | System color representation for primary-focus |
| --ink | #f7f8f8 | System color representation for ink |
| --ink-muted | #d0d6e0 | System color representation for ink-muted |
| --ink-subtle | #8a8f98 | System color representation for ink-subtle |
| --ink-tertiary | #62666d | System color representation for ink-tertiary |
| --canvas | #010102 | System color representation for canvas |
| --surface-1 | #0f1011 | System color representation for surface-1 |
| --surface-2 | #141516 | System color representation for surface-2 |
| --surface-3 | #18191a | System color representation for surface-3 |
| --surface-4 | #191a1b | System color representation for surface-4 |
| --hairline | #23252a | System color representation for hairline |
| --hairline-strong | #34343a | System color representation for hairline-strong |
| --hairline-tertiary | #3e3e44 | System color representation for hairline-tertiary |
| --inverse-canvas | #ffffff | System color representation for inverse-canvas |
| --inverse-surface-1 | #f5f6f6 | System color representation for inverse-surface-1 |
| --inverse-surface-2 | #f6f7f7 | System color representation for inverse-surface-2 |
| --inverse-ink | #000000 | System color representation for inverse-ink |
| --brand-secure | #7a7fad | System color representation for brand-secure |
| --semantic-success | #27a644 | System color representation for semantic-success |
| --semantic-overlay | #000000 | System color representation for semantic-overlay |