/* ───────────────────────────────────────────────────────────────────────── * design-systems/perplexity/tokens.css * * Structured token bindings for the "Perplexity" brand — the research- * terminal voice of a conversational AI search engine. * * Brand identity in three sentences: * 1. Dark canvas as the native medium — a flat near-black (#0f0f10) * that recedes so citations, sources, and the answer column lead; * depth is three luminance steps (base → surface → elevated), never * shadow. * 2. Inter for all UI and reading, JetBrains Mono for code and * citations; weight 600 is the cap for display (700 reads too * thin against #0f0f10), generous 1.65 body leading for dense * research paragraphs. * 3. A single chromatic accent — Perplexity Purple (#a855f7) — * reserved for the primary CTA and active focus state; everything * else is grayscale. Color appears once per view, never twice. * * Schema decisions: * - --bg: #0f0f10 (page background, anti-gradient flat). * - --surface: #19191a (card / sidebar surface). * - --surface-warm aliases --surface — dark achromatic system, no warm * tier; the third luminance step (#232325) lives in --border-soft so * hover/elevated states can borrow it without inventing a token. * - --fg: #f0f0f0 (near-white, not pure white — prevents eye strain). * - --fg-2 aliases --fg — DESIGN.md §2 lists a single primary text * color; secondary lives in --muted, tertiary in --meta. * - --border: #2e2e30; --border-soft: #232325 (also the elevated tier). * - --accent: #a855f7 (purple); --accent-hover: #c084fc; * --accent-active: #9333ea (darker pressed — one step down the * violet scale, since DESIGN.md does not name an active value). * - --tracking-display: -0.01em (Inter at 32px tightens slightly). * - --radius-sm: 4px; --radius-md: 8px; --radius-lg: 12px (DESIGN.md §4). * - --elev-raised: hairline ring only — DESIGN.md §6 §9 forbids * drop shadows; elevation is communicated through border contrast. * - --motion-fast: 120ms (DESIGN.md §7 hover), --motion-base: 200ms * (modal); ease-out flavored cubic-bezier per DESIGN.md guidance. * ─────────────────────────────────────────────────────────────────── */ :root { /* ─── Surface ──────────────────────────────────────────────────── */ --bg: #0f0f10; /* flat near-black canvas — no gradient */ --surface: #19191a; /* card / sidebar / search bar fill */ --surface-warm: var(--surface); /* no warm tier in dark achromatic system */ /* ─── Foreground ───────────────────────────────────────────────── */ --fg: #f0f0f0; /* near-white — body copy, headings */ --fg-2: var(--fg); /* DESIGN.md §2 has a single primary tier */ --muted: #9b9b9b; /* secondary — meta, captions, labels */ --meta: #5c5c5e; /* tertiary — placeholder, disabled */ /* ─── Border ───────────────────────────────────────────────────── */ --border: #2e2e30; /* divider, input border, card edge */ --border-soft: #232325; /* inner row separator + elevated tier */ /* ─── Accent ───────────────────────────────────────────────────── */ --accent: #a855f7; /* Perplexity purple — sole chromatic color */ --accent-on: #ffffff; /* white on accent for buttons / badges */ --accent-hover: #c084fc; /* lighter violet hover */ --accent-active: #9333ea; /* darker pressed — derived, DESIGN.md silent */ /* ─── Semantic ─────────────────────────────────────────────────── */ --success: #22c55e; /* verified source badge */ --warn: #f59e0b; /* caution */ --danger: #ef4444; /* error state */ /* ─── Typography ───────────────────────────────────────────────── */ /* Inter for UI/body/display (weight 600 cap at display sizes). JetBrains Mono for code, citations, inline tags. */ --font-display: "Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; --font-body: "Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; --font-mono: "JetBrains Mono", ui-monospace, "Cascadia Code", Menlo, Monaco, Consolas, monospace; /* Type scale — DESIGN.md §3. * 4xl=32 display, 3xl=22 heading-l, 2xl=18 heading-m, lg=16 reading-large, * base=15 body, sm=13 body-sm, xs=11 caption. The 3xl/2xl→xl gap (16) is * the natural reading-large bridge for source-card titles. */ --text-xs: 11px; /* caption — source labels, timestamps */ --text-sm: 13px; /* body-sm — secondary, meta */ --text-base: 15px; /* body — primary reading copy */ --text-lg: 16px; /* reading-large — source card titles */ --text-xl: 18px; /* heading-m — sub-section heading */ --text-2xl: 22px; /* heading-l — section heading */ --text-3xl: 28px; /* sub-display — intermediate hero step */ --text-4xl: 32px; /* display — page title, hero answer */ /* Leading + tracking. * --leading-body=1.65: dense research paragraphs (DESIGN.md §3 body). * --leading-tight=1.2: display compression (DESIGN.md display row). * --tracking-display=-0.01em: Inter at 32px tightens subtly; never stretch. */ --leading-body: 1.65; --leading-tight: 1.2; --tracking-display: -0.01em; /* ─── Spacing ──────────────────────────────────────────────────── */ /* 8px base unit (DESIGN.md §4). Schema spine maps the key stops; DESIGN.md's 48/64 page/above-fold tiers ride --space-12 and the section-y tokens below. */ --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 §4: 48px page-level, 64px above-fold. */ --section-y-desktop: 64px; --section-y-tablet: 48px; --section-y-phone: 32px; /* ─── Radius ───────────────────────────────────────────────────── */ /* DESIGN.md §4: 4 tag, 8 input/card, 12 modal/popover. Pill for avatars/tags only — never on cards (DESIGN.md §9 anti-pattern). */ --radius-sm: 4px; --radius-md: 8px; --radius-lg: 12px; --radius-pill: 9999px; /* ─── Elevation ────────────────────────────────────────────────── */ /* DESIGN.md §6 §9: no drop shadows. Elevation = border contrast. --elev-raised intentionally collapses to a hairline ring — the visual lift comes from the background stepping to #232325 in the consuming rule, not from a cast shadow. */ --elev-flat: none; --elev-ring: 0 0 0 1px var(--border); --elev-raised: 0 0 0 1px var(--border); /* ─── Focus ────────────────────────────────────────────────────── */ /* DESIGN.md §5 search bar: --accent 2px outline, no box-shadow halo. */ --focus-ring: 0 0 0 2px var(--accent); /* ─── Motion ───────────────────────────────────────────────────── */ /* DESIGN.md §7: hover 120ms, modal 200ms; anti-animation brand. Easing reads as "ease-out-like" (cubic-bezier(0.2, 0, 0, 1)) since DESIGN.md prescribes ease-out for panel/modal openers. */ --motion-fast: 120ms; --motion-base: 200ms; --ease-standard: cubic-bezier(0.2, 0, 0, 1); /* ─── Layout ───────────────────────────────────────────────────── */ /* DESIGN.md §4: 1100px full-page shell (answer column 720px lives inline in components that want the reading width). Gutter 16px on phone matches DESIGN.md's stated side margin. */ --container-max: 1100px; --container-gutter-desktop: 24px; --container-gutter-tablet: 16px; --container-gutter-phone: 16px; }