/* ───────────────────────────────────────────────────────────────────────── * design-systems/figma/tokens.css * * Structured token bindings for the "Figma" brand — vibrant product * content inside a strictly black-and-white interface shell. * * Brand identity in three sentences: * 1. Monochrome interface absolutely — pure black (#000000) for all * text, borders, and solid buttons; pure white (#ffffff) for all * backgrounds; no mid-tones in the chrome layer whatsoever. * 2. figmaSans variable font at unusual weight stops (320, 330, 340, * 450, 480, 540, 700); figmaMono for uppercase section labels with * positive letter-spacing; OpenType "kern" on all text. * 3. Pill (50px) and circular (50%) geometry on all interactive * elements; dashed 2px focus outlines echoing editor selection * handles; negative tracking even on body text (-0.14px). * * Schema decisions: * - --bg: #ffffff; --surface: #ffffff (gallery wall — no surface tint). * - --surface-warm aliases --surface (B&W system has no warm tier). * - --fg: #000000; --muted: rgba(0,0,0,0.55) for secondary text. * - --accent: #000000 (black IS the accent in a monochrome system). * - --accent-on: #ffffff; hover and active via glass tint overlays. * - --tracking-display: -0.02em (-1.72px / 86px normalized). * - --leading-tight: 1.00 (display hero line-height). * - --radius-sm: 50px (pill — all interactive elements); pill = pill. * - Focus: dashed 2px outline — encoded in components.html, not ring. * ─────────────────────────────────────────────────────────────────── */ :root { /* ─── Surface ──────────────────────────────────────────────────── */ --bg: #ffffff; --surface: #ffffff; /* gallery wall — no surface tint */ --surface-warm: var(--surface); /* no warm tier in B&W system */ /* ─── Foreground ───────────────────────────────────────────────── */ --fg: #000000; --fg-2: #000000; /* B&W — no secondary ink tier */ --muted: rgba(0, 0, 0, 0.55); /* secondary text on white */ --meta: rgba(0, 0, 0, 0.40); /* metadata, captions */ /* ─── Border ───────────────────────────────────────────────────── */ --border: rgba(0, 0, 0, 0.12); /* minimal — only where structurally needed */ --border-soft: rgba(0, 0, 0, 0.06); /* ─── Accent ───────────────────────────────────────────────────── */ /* In a strictly B&W system, black IS the accent (solid CTA). */ --accent: #000000; --accent-on: #ffffff; --accent-hover: rgba(0, 0, 0, 0.85); --accent-active: rgba(0, 0, 0, 0.08); /* glass dark — secondary button bg */ /* ─── Semantic ─────────────────────────────────────────────────── */ --success: #16a34a; --warn: #eab308; --danger: #dc2626; /* ─── Typography ───────────────────────────────────────────────── */ --font-display: "figmaSans", "figmaSans Fallback", "SF Pro Display", system-ui, Helvetica, sans-serif; --font-body: "figmaSans", "figmaSans Fallback", "SF Pro Display", system-ui, Helvetica, sans-serif; --font-mono: "figmaMono", "figmaMono Fallback", "SF Mono", Menlo, ui-monospace, monospace; /* Type scale — DESIGN.md §Typography Hierarchy. * Figma's display range 86px→12px. The schema spine: 86px hero, * 64px section, 26px sub-heading, 20px body-large, 16px body. */ --text-xs: 12px; /* mono small — uppercase tiny labels */ --text-sm: 16px; /* body / button */ --text-base: 16px; /* body baseline */ --text-lg: 20px; /* body large — descriptions */ --text-xl: 26px; /* sub-heading */ --text-2xl: 26px; /* sub-heading (same tier, weight varies) */ --text-3xl: 64px; /* section heading */ --text-4xl: 86px; /* display / hero */ /* Leading + tracking. * --leading-tight=1.00: 86px hero compression. * --tracking-display: -0.02em = -1.72px / 86px normalized. * Body text: -0.14px inline; mono labels: +0.54px inline. */ --leading-body: 1.40; --leading-tight: 1.00; --tracking-display: -0.02em; /* ─── 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 — gallery-like pacing between product sections. */ --section-y-desktop: 96px; --section-y-tablet: 64px; --section-y-phone: 40px; /* ─── Radius ───────────────────────────────────────────────────── */ /* Figma uses pill (50px) for all CTAs/tabs; 8px for card containers. */ --radius-sm: 50px; /* pill — all interactive elements */ --radius-md: 8px; /* cards, images, dialogs */ --radius-lg: 8px; --radius-pill: 9999px; /* ─── Elevation ────────────────────────────────────────────────── */ /* Depth via background contrast, not shadows. */ --elev-flat: none; --elev-ring: 0 0 0 1px var(--border); --elev-raised: 0 4px 16px rgba(0, 0, 0, 0.08); /* ─── Focus ────────────────────────────────────────────────────── */ /* Figma's signature: dashed 2px outline encoded at component level. --focus-ring is used as the fallback shadow for keyboard nav. */ --focus-ring: 0 0 0 2px rgba(0, 0, 0, 0.8); /* ─── Motion ───────────────────────────────────────────────────── */ --motion-fast: 150ms; --motion-base: 200ms; --ease-standard: cubic-bezier(0.2, 0, 0, 1); /* ─── Layout ───────────────────────────────────────────────────── */ --container-max: 1920px; --container-gutter-desktop: 40px; --container-gutter-tablet: 24px; --container-gutter-phone: 16px; }