/* ───────────────────────────────────────────────────────────────────────── * design-systems/linear-app/tokens.css * * Structured token bindings for the "Linear" brand — the dark-mode-native * project management tool's precision engineering voice. * * Brand identity in three sentences: * 1. Darkness as the native medium — near-black canvas (#08090a) where * information density is managed through luminance steps rather than * color variation; semi-transparent white borders throughout. * 2. Inter Variable with OpenType "cv01","ss03" at all sizes, signature * weight 510 (between regular and medium), aggressive negative * letter-spacing at display sizes (-1.584px at 72px). * 3. Almost entirely achromatic — the single chromatic color is Linear's * indigo-violet (#5e6ad2 bg / #7170ff interactive), used only for * CTAs and active states; everything else is grayscale. * * Schema decisions: * - --bg: #08090a (marketing black); --surface: #191a1b (elevated). * - --surface-warm aliases --surface (dark system, no warm tier). * - --fg: #f7f8f8 (near-white — not pure white, prevents eye strain). * - --fg-2: #d0d6e0 (silver-gray body text). * - --border: rgba(255,255,255,0.08); --border-soft: rgba(255,255,255,0.05). * - --accent: #5e6ad2 (brand indigo bg); --accent-hover: #828fff. * - --tracking-display: -0.022em (-1.584px / 72px normalized). * - --radius-sm: 6px (buttons/inputs); --radius-md: 8px (cards). * - --elev-raised: luminance stepping — no opaque shadow on dark. * ─────────────────────────────────────────────────────────────────── */ :root { /* ─── Surface ──────────────────────────────────────────────────── */ --bg: #08090a; /* marketing black — hero canvas */ --surface: #191a1b; /* elevated surface — cards, dropdowns */ --surface-warm: var(--surface); /* no warm tier in dark achromatic system */ /* ─── Foreground ───────────────────────────────────────────────── */ --fg: #f7f8f8; /* near-white primary text */ --fg-2: #d0d6e0; /* silver-gray body / secondary text */ --muted: #8a8f98; /* tertiary — placeholders, metadata */ --meta: #62666d; /* quaternary — timestamps, disabled */ /* ─── Border ───────────────────────────────────────────────────── */ --border: rgba(255, 255, 255, 0.08); /* standard semi-transparent white */ --border-soft: rgba(255, 255, 255, 0.05); /* ultra-subtle divider */ /* ─── Accent ───────────────────────────────────────────────────── */ --accent: #5e6ad2; /* brand indigo — CTA backgrounds */ --accent-on: #ffffff; --accent-hover: #828fff; /* lighter saturated hover */ --accent-active: #4752c4; /* darker pressed state */ /* ─── Semantic ─────────────────────────────────────────────────── */ --success: #27a644; /* Linear green */ --warn: #eab308; --danger: #dc2626; /* ─── Typography ───────────────────────────────────────────────── */ --font-display: "Inter Variable", "Inter", "SF Pro Display", -apple-system, system-ui, "Segoe UI", Roboto, sans-serif; --font-body: "Inter Variable", "Inter", "SF Pro Display", -apple-system, system-ui, "Segoe UI", Roboto, sans-serif; --font-mono: "Berkeley Mono", ui-monospace, "SF Mono", Menlo, Monaco, Consolas, monospace; /* Type scale — DESIGN.md §Typography Hierarchy. * Linear's display range 72px→10px; the 8 schema slots map the * key stops. 64px secondary-hero lives inline in components.html. */ --text-xs: 12px; /* label / micro */ --text-sm: 14px; /* caption large / link small */ --text-base: 16px; /* body — standard reading */ --text-lg: 18px; /* body large — feature descriptions */ --text-xl: 24px; /* heading 2 */ --text-2xl: 32px; /* heading 1 */ --text-3xl: 48px; /* display — section headlines */ --text-4xl: 72px; /* display XL — hero */ /* Leading + tracking. * --leading-tight=1.00: Linear's signature "engineered" compression. * h2 (32px) → 1.13; h3 (24px) → 1.33 per DESIGN.md spec. * --tracking-display: -0.022em = -1.584px / 72px normalized. */ --leading-body: 1.5; --leading-tight: 1.00; --tracking-display: -0.022em; /* ─── Spacing ──────────────────────────────────────────────────── */ --space-1: 4px; --space-2: 8px; --space-3: 12px; --space-4: 16px; --space-5: 20px; --space-6: 24px; --space-8: 32px; --space-12: 48px; /* Section rhythm — DESIGN.md §Whitespace Philosophy. */ --section-y-desktop: 80px; --section-y-tablet: 48px; --section-y-phone: 32px; /* ─── Radius ───────────────────────────────────────────────────── */ /* 6px for buttons/inputs (comfortable), 8px cards, 12px panels. */ --radius-sm: 6px; --radius-md: 8px; --radius-lg: 12px; --radius-pill: 9999px; /* ─── Elevation ────────────────────────────────────────────────── */ /* On dark surfaces: luminance stepping, not opaque drop shadows. --elev-raised uses semi-transparent border-as-shadow technique. */ --elev-flat: none; --elev-ring: 0 0 0 1px var(--border); --elev-raised: rgba(0, 0, 0, 0.4) 0px 2px 4px, 0 0 0 1px rgba(255, 255, 255, 0.05); /* ─── Focus ────────────────────────────────────────────────────── */ /* Multi-layer stack per DESIGN.md §6 + §7: accent ring makes the indicator visible on the near-black #08090a canvas. */ --focus-ring: 0 0 0 2px color-mix(in oklab, var(--accent), transparent 30%), 0 4px 12px rgba(0, 0, 0, 0.1); /* ─── Motion ───────────────────────────────────────────────────── */ --motion-fast: 150ms; --motion-base: 200ms; --ease-standard: cubic-bezier(0.2, 0, 0, 1); /* ─── Layout ───────────────────────────────────────────────────── */ --container-max: 1200px; --container-gutter-desktop: 24px; --container-gutter-tablet: 16px; --container-gutter-phone: 12px; }