open-design/design-systems/shopify/tokens.css
chaoxiaoche 4e38357e7d
feat(design-systems): add structured tokens for notion, linear, github, figma, slack, discord, openai, shopify, spotify, uber (#1794)
* feat(design-systems): add structured tokens for notion, linear, github, figma, slack, discord, openai, shopify, spotify, uber

Hand-authored batch-2 oracle fixtures for 10 high-profile brands.
Each brand ships tokens.css (A1/A2/B-slot declarations) + components.html
(:root pasted verbatim, no off-token values). pnpm guard reports 12
structured brands (up from 2), all 13 checks pass.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(design-systems): correct elev-ring, focus-ring, and spacing schema drift

- slack: rebind --elev-ring to hairline form (0 0 0 1px var(--border)) so
  cross-brand components expecting a 1px outline get a ring, not a soft
  drop shadow; the previous value was Slack DESIGN.md "Low" elevation
  accidentally placed in the wrong slot
- linear-app: expand --focus-ring to the DESIGN.md §6/§7 multi-layer
  stack (accent ring + black blur) so keyboard focus is visible on the
  near-black #08090a canvas
- openai: restore --space-{5,6,8,12} to the shared 4·N px spine and
  introduce --space-16 (64 px) as a brand extension in BRAND_EXTENSIONS;
  syncs components.html :root in all three brands

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: chaoxiaoche <chaoxiaoche@chaoxiaochedeMacBook-Pro.local>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-15 17:21:27 +08:00

141 lines
8.4 KiB
CSS
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* ─────────────────────────────────────────────────────────────────────────
* design-systems/shopify/tokens.css
*
* Structured token bindings for the "Shopify" brand — dark-first cinematic,
* ethereal ultra-light display type, neon green accent.
*
* Brand identity in three sentences:
* 1. Darkness as theatre — deep forest-teal surfaces (not pure black:
* #000000 root, #02090A cards, #061A1C sections, #102620 elevated)
* create a nocturnal keynote atmosphere, staged like a product reveal.
* 2. NeueHaasGrotesk variable at monumental scale (96px) with impossible
* lightness (weight 330400, OpenType ss03); Inter Variable handles
* body at unusual weights (420/450/550); combined they feel etched.
* 3. Neon Green (#36F4A4) is the singular high-energy accent — pulsing
* like a bioluminescent signal exclusively for focus rings and accent
* highlights; white is the only text color on dark.
*
* Schema decisions:
* - --bg: #000000 (void — root page background, true black).
* - --surface: #02090A (deep teal — card surfaces).
* - --surface-warm: #061A1C (dark forest — section backgrounds).
* - --fg: #ffffff (white — the only text color on dark).
* - --fg-2: #ffffff (same; no secondary ink split on dark canvas).
* - --muted: #a1a1aa (muted zinc — secondary text, descriptions).
* - --meta: #71717a (shade-50 — timestamps, tertiary info).
* - --border: #1e2c31 (dark card border); --border-soft: #3f3f46.
* - --accent: #36F4A4 (neon green — focus/accent only, not bg).
* - --accent-on: #000000 (black text on neon green).
* - --tracking-display: 0em (NeueHaasGrotesk at 96px tracks neutral).
* - --leading-tight: 1.00 (display XL line-height at 96px).
* - --radius-sm: 9999px (full pill for all CTAs per brand identity).
* ─────────────────────────────────────────────────────────────────── */
:root {
/* ─── Surface ──────────────────────────────────────────────────── */
--bg: #000000; /* void — true black root */
--surface: #02090a; /* deep teal — card surfaces */
--surface-warm: #061a1c; /* dark forest — section backgrounds */
/* ─── Foreground ───────────────────────────────────────────────── */
--fg: #ffffff; /* white — only text color on dark */
--fg-2: #ffffff; /* same; no secondary ink split */
--muted: #a1a1aa; /* muted zinc — secondary text */
--meta: #71717a; /* shade-50 — timestamps, tertiary */
/* ─── Border ───────────────────────────────────────────────────── */
--border: #1e2c31; /* dark card border */
--border-soft: #3f3f46; /* shade-70 — subtle dividers */
/* ─── Accent ───────────────────────────────────────────────────── */
/* Neon Green is precious — focus rings and critical accent highlights only.
It never fills large surfaces. --accent-on is black for contrast. */
--accent: #36f4a4; /* neon green */
--accent-on: #000000;
--accent-hover: #2de097; /* slightly darker neon on hover */
--accent-active: color-mix(in oklab, var(--accent), black 14%);
/* ─── Semantic ─────────────────────────────────────────────────── */
--success: #36f4a4; /* neon green — success state */
--warn: #eab308;
--danger: #dc2626;
/* ─── Typography ───────────────────────────────────────────────── */
--font-display: "NeueHaasGrotesk", "Helvetica Neue", Helvetica, Arial, sans-serif;
--font-body: "Inter Variable", "Inter", "Helvetica Neue", Helvetica, Arial, sans-serif;
--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
/* Type scale — DESIGN.md §Typography Hierarchy.
* NeueHaasGrotesk from 96px (display XL) to 24px (heading 6).
* Inter Variable from 20px (body large) to 12px (label).
* Schema spine maps the key stops. */
--text-xs: 12px; /* label — uppercase, wide-tracked */
--text-sm: 14px; /* caption — metadata */
--text-base: 18px; /* body — standard Inter reading */
--text-lg: 20px; /* body large — lead paragraphs */
--text-xl: 32px; /* heading 4 — card headings */
--text-2xl: 48px; /* heading 3 — feature titles */
--text-3xl: 70px; /* heading 1 — section titles */
--text-4xl: 96px; /* display XL — cinematic hero */
/* Leading + tracking.
* --leading-tight=1.00: display XL at 96px.
* h2 (70px) → 1.00; h3 (48px) → 1.14 per DESIGN.md.
* --tracking-display: 0em (NeueHaasGrotesk tracks neutral at display).
* NB: positive tracking (0.32px2.4px) exists at smaller NeueHaas sizes
* and is set inline in components.html. */
--leading-body: 1.56;
--leading-tight: 1.00;
--tracking-display: 0em;
/* ─── Spacing ──────────────────────────────────────────────────── */
/* 8px base unit per DESIGN.md §Spacing System. */
--space-1: 4px;
--space-2: 8px;
--space-3: 12px;
--space-4: 16px;
--space-5: 24px;
--space-6: 28px;
--space-8: 36px;
--space-12: 64px;
/* Section rhythm — theatrical pacing: vast dark expanse between sections. */
--section-y-desktop: 96px;
--section-y-tablet: 64px;
--section-y-phone: 40px;
/* ─── Radius ───────────────────────────────────────────────────── */
/* Full pill for all primary CTAs — non-negotiable brand identity.
Cards: 8px standard, 12px featured. */
--radius-sm: 9999px; /* full pill — all CTA buttons */
--radius-md: 8px; /* standard cards, inputs */
--radius-lg: 12px; /* featured cards */
--radius-pill: 9999px;
/* ─── Elevation ────────────────────────────────────────────────── */
/* Multi-layered shadow: 1px ring + progressive blur + inset white glow.
Shadows are "ambient occlusion" on dark surfaces, not traditional lift. */
--elev-flat: none;
--elev-ring: 0 0 0 1px var(--border);
--elev-raised:
rgba(0, 0, 0, 0.1) 0px 0px 0px 1px,
rgba(0, 0, 0, 0.1) 0px 2px 2px,
rgba(0, 0, 0, 0.1) 0px 4px 4px,
rgba(0, 0, 0, 0.1) 0px 8px 8px,
rgba(255, 255, 255, 0.03) 0px 1px 0px inset;
/* ─── Focus ────────────────────────────────────────────────────── */
/* Neon Green focus ring — 2px ring, brand signature. */
--focus-ring: 0 0 0 2px #36f4a4;
/* ─── Motion ───────────────────────────────────────────────────── */
--motion-fast: 150ms;
--motion-base: 200ms;
--ease-standard: ease;
/* ─── Layout ───────────────────────────────────────────────────── */
--container-max: 1280px;
--container-gutter-desktop: 64px;
--container-gutter-tablet: 32px;
--container-gutter-phone: 16px;
}