/* ───────────────────────────────────────────────────────────────────────── * design-systems/discord/tokens.css * * Structured token bindings for the "Discord" brand — deep blurple, * dark-first surfaces, voice-and-chat for gaming and community. * * Brand identity in three sentences: * 1. Dark-first: three-step depth ladder (#1e1f22 deepest → #2b2d31 * sidebar → #313338 chat surface), pixel-snapped 1px dividers at * low alpha, rounded-square server avatars that morph to circles. * 2. gg sans (friendly geometric, Whitney-replacement) for all text at * 400/500/600/700/800 weights; 16px body never shrinks; hierarchy * comes from weight contrast over color contrast. * 3. Blurple (#5865f2) as the single saturated accent — reserved for * brand mark, primary CTAs, mentions, and "you" affordances; used * sparingly so it pops against the muted dark surface. * * Schema decisions: * - --bg: #313338 (chat surface / primary dark); --surface: #2b2d31. * - --surface-warm: #191a1e (deepest — server list rail, level below). * - --fg: #dbdee1 (text-normal — cooler than pure white). * - --fg-2: #f2f3f5 (header-primary — modal titles, channel headers). * - --muted: #949ba4 (text-muted — timestamps, metadata). * - --border: rgba(255,255,255,0.06); --border-soft: same. * - --accent: #5865f2 (Blurple); --accent-hover: #4752c4. * - --tracking-display: -0.02em (display 56px hero per DESIGN.md). * - --radius-sm: 4px (buttons/inputs); --radius-md: 8px (cards). * ─────────────────────────────────────────────────────────────────── */ :root { /* ─── Surface ──────────────────────────────────────────────────── */ --bg: #313338; /* chat surface / primary dark */ --surface: #2b2d31; /* channel sidebar, settings sidebar */ --surface-warm: #1e1f22; /* server list rail — deepest layer */ /* ─── Foreground ───────────────────────────────────────────────── */ --fg: #dbdee1; /* text-normal — slightly cooler than white */ --fg-2: #f2f3f5; /* header-primary — modal titles */ --muted: #949ba4; /* text-muted — timestamps, server names */ --meta: #80848e; /* channels-default — inactive sidebar names */ /* ─── Border ───────────────────────────────────────────────────── */ --border: rgba(255, 255, 255, 0.06); /* standard divider */ --border-soft: #3f4147; /* solid divider for cards */ /* ─── Accent ───────────────────────────────────────────────────── */ --accent: #5865f2; /* Blurple — brand primary CTA */ --accent-on: #ffffff; --accent-hover: #4752c4; /* darker hover */ --accent-active: color-mix(in oklab, var(--accent), black 14%); /* ─── Semantic ─────────────────────────────────────────────────── */ --success: #23a55a; /* status-online green */ --warn: #f0b232; /* status-idle yellow */ --danger: #f23f43; /* status-dnd / destructive red */ /* ─── Typography ───────────────────────────────────────────────── */ --font-display: "gg sans", "Helvetica Neue", Helvetica, Arial, sans-serif; --font-body: "gg sans", "Helvetica Neue", Helvetica, Arial, sans-serif; --font-mono: "gg mono", Consolas, "Andale Mono", "Courier New", Courier, monospace; /* Type scale — DESIGN.md §Typography Hierarchy. * Discord: 56px display, 24px page heading, 16px body (never shrinks). * Schema spine: xs=12 (timestamp/caption), base=16, 4xl=56. */ --text-xs: 12px; /* timestamp / caption / meta */ --text-sm: 14px; /* compact metadata */ --text-base: 16px; /* message body — never below 16px */ --text-lg: 18px; /* feature heading */ --text-xl: 20px; /* sub-heading */ --text-2xl: 24px; /* page heading — settings/profile */ --text-3xl: 32px; /* section heading */ --text-4xl: 56px; /* display hero — marketing */ /* Leading + tracking. * --leading-tight=1.10: 56px hero compression. * h2 (32px) → 1.20; h3 (24px) → 1.25 per brand feel. * --tracking-display: -0.02em (display 56px per DESIGN.md). */ --leading-body: 1.375; --leading-tight: 1.10; --tracking-display: -0.02em; /* ─── Spacing ──────────────────────────────────────────────────── */ /* 4px base grid per DESIGN.md §Spacing & Layout. */ --space-1: 4px; --space-2: 8px; --space-3: 12px; --space-4: 16px; --space-5: 20px; --space-6: 24px; --space-8: 32px; --space-12: 40px; /* Section rhythm. */ --section-y-desktop: 80px; --section-y-tablet: 48px; --section-y-phone: 32px; /* ─── Radius ───────────────────────────────────────────────────── */ /* 4px for buttons/inputs; 8px for cards. Rounded but not balloon-soft. */ --radius-sm: 4px; --radius-md: 8px; --radius-lg: 16px; --radius-pill: 9999px; /* ─── Elevation ────────────────────────────────────────────────── */ /* Dark surfaces: luminance stepping; semi-transparent white borders as depth signal rather than drop shadows. */ --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.06); /* ─── Focus ────────────────────────────────────────────────────── */ --focus-ring: 0 0 0 3px rgba(88, 101, 242, 0.3); /* ─── Motion ───────────────────────────────────────────────────── */ --motion-fast: 80ms; --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: 16px; }