Linear (iOS)
Identity
Mobile Apps
Fast issue tracker. Linear Purple #5E6AD2 on near-OLED #08090A, ultra-dense issue list, the Cmd+K command menu, cycle bars, drawn status iconography
Typography
Ag
Ag
Ag
--text-4xl · 36pxThe quick brown fox--text-3xl · 28pxThe quick brown fox--text-2xl · 28pxThe quick brown fox--text-xl · 22pxThe quick brown fox--text-lg · 17pxThe quick brown fox--text-base · 15pxThe quick brown fox--text-sm · 14pxThe quick brown fox--text-xs · 11pxThe quick brown foxPalette
#08090APage background — defines the brand canvas.#141516Card / lifted container background.color-mix(in oklab, var(--surface), var(--fg) 6%)Tertiary surface tier (kami warm-sand).#F7F8F8Primary text color.color-mix(in oklab, var(--fg), var(--bg) 15%)Secondary text tier (kami dark-warm).#8A8F98Subtext / captions.color-mix(in oklab, var(--muted), var(--bg) 25%)Tertiary FG / metadata tier (kami stone).#23252ADefault border / card edge.color-mix(in oklab, var(--border), var(--bg) 50%)Inner row separator that should not visually compete.#5E6AD2Brand accent. ≤2 visible uses per screen (lint enforced).#FFFFFFFG when --accent is the bg.#4CB782Success state.#F2C94CWarning state.#EB5757Danger state.Also named in DESIGN.md
#4f58b8Active/pressed state for purple CTAs and the focused row on key-down.#1c1d1fHigher elevation — modals, context menus, the active/hover row.#232428Pressed state on dark surfaces, input field fill.#5c5f6aDisabled state, placeholder text, very-low-emphasis labels.Imagery & layout
Radius
6px8px12px9999pxSpacing
--space-1 · 4px--space-2 · 8px--space-3 · 12px--space-4 · 16px--space-5 · 20px--space-6 · 24px--space-8 · 32px--space-12 · 48pxElevation
--elev-raisedLayout
Layout rules
- Base unit: 4pt
- Scale: 4, 6, 8, 12, 16, 20, 24, 32, 40, 56
- Standard margin: 16pt horizontal on lists; 8pt internal row padding
- Issue rows touch (0pt between) — separation is via hover state and group headers, not gaps
- Content width: full device width, 16pt horizontal insets
- Issue list: single column, full-bleed rows