mirror of
https://github.com/nexu-io/open-design.git
synced 2026-06-01 03:14:35 +07:00
Brands added (each with full 56-token :root + self-contained fixture): - Devtools / data infra: clickhouse, hashicorp, mongodb, mintlify, sentry-adjacent (lovable, superhuman) - AI-app builder / messaging: intercom, lovable, superhuman - Fintech / crypto: coinbase, binance, wise All 10 declare the complete shared schema (26 A1 + 26 A2 + 4 B-slot) with no C-extensions; pnpm guard reports all 6 contract checks passing. Co-authored-by: chaoxiaoche <chaoxiaoche@chaoxiaochedeMacBook-Pro.local> Co-authored-by: Cursor <cursoragent@cursor.com>
176 lines
11 KiB
CSS
176 lines
11 KiB
CSS
/* ─────────────────────────────────────────────────────────────────────────
|
||
* design-systems/mongodb/tokens.css
|
||
*
|
||
* Structured token bindings for "Design System Inspired by MongoDB".
|
||
* Forest-dark database aesthetic: a near-black teal canvas (#001e2b) lit
|
||
* by a single bioluminescent neon green (#00ed64), serif authority at
|
||
* hero scale, and shadows that carry the brand color into elevation.
|
||
*
|
||
* Key brand decisions encoded here:
|
||
* - Forest Black (#001e2b) as the primary canvas — never pure black;
|
||
* the teal undertone is what keeps the dark mode feeling alive
|
||
* rather than void
|
||
* - MongoDB Green (#00ed64) as the singular electric accent — used
|
||
* for highlights, underlines, and one CTA per screen
|
||
* - MongoDB Value Serif for display sizes — editorial authority at
|
||
* database-company scale; Euclid Circular A for everything else
|
||
* - Source Code Pro as the mono voice — wide-tracked uppercase
|
||
* labels are the "database field" identity
|
||
* - Teal-tinted shadows (rgba(0,30,43,0.12)) — depth that belongs to
|
||
* the MongoDB color world, not generic neutral black
|
||
* - Full 4-tier fg/border ramps — MongoDB genuinely uses #ffffff →
|
||
* #e8edeb → #b8c4c2 → #5c6c75 for cascading text hierarchies and
|
||
* #3d4f58 for dark-surface edges
|
||
* ─────────────────────────────────────────────────────────────────── */
|
||
|
||
:root {
|
||
/* ─── Surface ─────────────────────────────────────────────────────
|
||
* Forest-dark canvas: the page is the deepest teal-black; cards lift
|
||
* on a slightly warmer deep-teal panel. No warm tier — MongoDB's
|
||
* palette is strictly cool (teal, green, blue) and surface-warm
|
||
* aliases to the dark surface rather than introducing an amber tint
|
||
* that would break the forest atmosphere. */
|
||
--bg: #001e2b; /* Forest Black — the deepest teal-black canvas */
|
||
--surface: #1c2d38; /* Deep Teal — lifted cards / secondary dark panels */
|
||
--surface-warm: var(--surface); /* alias — MongoDB has no warm tier */
|
||
|
||
/* ─── Foreground ──────────────────────────────────────────────────
|
||
* Four-tier ramp matches MongoDB's real usage on dark surfaces:
|
||
* pure white for headings, light-input for body, silver-teal for
|
||
* captions, cool-gray for metadata. Independently bound (not
|
||
* aliased) because the brand actually paints each tier somewhere. */
|
||
--fg: #ffffff; /* Pure White — primary text on dark */
|
||
--fg-2: #e8edeb; /* Light Input — body text, secondary headings */
|
||
--muted: #b8c4c2; /* Silver Teal — captions, supporting text */
|
||
--meta: #5c6c75; /* Cool Gray — metadata, tertiary labels */
|
||
|
||
/* ─── Border ──────────────────────────────────────────────────────
|
||
* Teal Gray edges on dark surfaces — the cool border tone that
|
||
* belongs to the forest palette. border-soft aliases because
|
||
* MongoDB does not draw an inner-separator tier distinct from the
|
||
* card edge on dark mode. */
|
||
--border: #3d4f58; /* Teal Gray — dark-surface card edge */
|
||
--border-soft: var(--border); /* alias — no inner separator tier on dark */
|
||
|
||
/* ─── Accent ──────────────────────────────────────────────────────
|
||
* MongoDB Green — neon, electric, bioluminescent. Used sparingly
|
||
* (≤2 per screen) for headline highlights, accent underlines, and
|
||
* one CTA per section. accent-on is Forest Black (not white)
|
||
* because neon green is luminous enough that dark text reads with
|
||
* far more contrast than white. accent-hover is the functional
|
||
* muted Dark Green (#00684a) from DESIGN.md §2 — the brand's own
|
||
* darker green variant, not a synthesized darken. */
|
||
--accent: #00ed64;
|
||
--accent-on: #001e2b; /* Forest Black text on neon green CTAs */
|
||
--accent-hover: #00684a; /* Dark Green — MongoDB's own muted variant */
|
||
--accent-active: color-mix(in oklab, var(--accent-hover), black 12%);
|
||
|
||
/* ─── Semantic ────────────────────────────────────────────────────
|
||
* Standard semantic palette. MongoDB's brand green is already the
|
||
* accent; success keeps the schema default so it does not collide
|
||
* with the neon brand voice. */
|
||
--success: #16a34a;
|
||
--warn: #eab308;
|
||
--danger: #dc2626;
|
||
|
||
/* ─── Typography ──────────────────────────────────────────────────
|
||
* Three voices, three roles:
|
||
* --font-display: MongoDB Value Serif for editorial hero headlines
|
||
* --font-body: Euclid Circular A for geometric body / UI
|
||
* --font-mono: Source Code Pro for code and wide-tracked labels
|
||
* The serif-at-hero choice is the typographic signature; component
|
||
* CSS should never substitute the body face for display sizes. */
|
||
--font-display: "MongoDB Value Serif", "Times New Roman", Times, ui-serif, Georgia, serif;
|
||
--font-body: "Euclid Circular A", "Akzidenz-Grotesk Std", -apple-system, "Segoe UI", Helvetica, Arial, sans-serif;
|
||
--font-mono: "Source Code Pro", ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Monaco, Consolas, monospace;
|
||
|
||
/* Type scale — distilled from DESIGN.md §3 hierarchy table.
|
||
* 96px hero (MongoDB Value Serif) and 64px sub-hero are the
|
||
* editorial moves; the rest follows Euclid Circular A from 11px
|
||
* small to 36px section heading. Weight 300 body is encoded in
|
||
* component CSS (the schema does not carry weight tokens). */
|
||
--text-xs: 11px; /* Small — tags, annotations */
|
||
--text-sm: 14px; /* Caption, Code Label */
|
||
--text-base: 16px; /* Body Light, Nav, Code Body */
|
||
--text-lg: 20px; /* Body Large — introductions */
|
||
--text-xl: 24px; /* Sub-heading — feature titles */
|
||
--text-2xl: 36px; /* Section Heading */
|
||
--text-3xl: 64px; /* Display Secondary — serif sub-hero */
|
||
--text-4xl: 96px; /* Display Hero — serif at editorial scale */
|
||
|
||
/* Leading + tracking — DESIGN.md §3.
|
||
* Body Light uses 1.5–2.0; we sit at 1.5 so paragraphs breathe
|
||
* without losing rhythm. Hero display uses 1.20 (tight). Display
|
||
* letter-spacing is `normal` — MongoDB Value Serif at 96px does
|
||
* not compress like Geist or industrial sans; the serif drawing
|
||
* carries the authority without negative tracking. */
|
||
--leading-body: 1.5;
|
||
--leading-tight: 1.2;
|
||
--tracking-display: normal;
|
||
|
||
/* ─── Spacing ─────────────────────────────────────────────────────
|
||
* 8px-rooted scale; MongoDB's documented spacing (1/4/7/8/10/12/
|
||
* 14/15/16/18/20/24/32) includes odd sub-tiers (7, 14, 15, 18)
|
||
* for fine-grained type alignment that stay component-internal.
|
||
* The schema's 4/8/12/16/20/24/32/48 covers the structural rhythm. */
|
||
--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 §5 Whitespace Philosophy: dark hero
|
||
* sections use extra vertical padding (80px+) to let the forest-
|
||
* dark background breathe. 96px desktop sits at the generous end
|
||
* of MongoDB's documented range. */
|
||
--section-y-desktop: 96px;
|
||
--section-y-tablet: 64px;
|
||
--section-y-phone: 40px;
|
||
|
||
/* ─── Radius ──────────────────────────────────────────────────────
|
||
* DESIGN.md §5 radius scale: 1/2/4/8/16/20/24/30/32/48/100/9999.
|
||
* Schema slots bind to: 4 (input subtle), 8 (standard card / link),
|
||
* 16 (card), 9999 (pill button). The 30–32px image radius and
|
||
* 48px hero radius live as inline overrides in components.html
|
||
* where they apply — they are surface-specific, not scale-wide. */
|
||
--radius-sm: 4px; /* inputs, small buttons */
|
||
--radius-md: 8px; /* standard cards, links */
|
||
--radius-lg: 16px; /* feature cards, containers */
|
||
--radius-pill: 9999px; /* pill buttons, badges */
|
||
|
||
/* ─── Elevation ───────────────────────────────────────────────────
|
||
* Forest-tinted shadow signature. DESIGN.md §6: the primary card
|
||
* elevation uses rgba(0, 30, 43, 0.12) — a teal-tinted shadow that
|
||
* carries the forest-dark brand color into the depth system. Even
|
||
* on light surfaces, shadows feel like they belong to the MongoDB
|
||
* color world rather than being generic neutral black. */
|
||
--elev-flat: none;
|
||
--elev-ring: 0 0 0 1px var(--border);
|
||
--elev-raised:
|
||
0 26px 44px rgba(0, 30, 43, 0.12),
|
||
0 7px 13px rgba(0, 0, 0, 0.13);
|
||
|
||
/* ─── Focus ring ──────────────────────────────────────────────────
|
||
* Neon-green-tinted halo at 30% alpha — uses the brand accent so
|
||
* keyboard focus reads as part of the MongoDB color world rather
|
||
* than a generic blue ring. */
|
||
--focus-ring: 0 0 0 3px color-mix(in oklab, var(--accent), transparent 70%);
|
||
|
||
/* ─── Motion ──────────────────────────────────────────────────────
|
||
* Standard durations — MongoDB's identity lives in color, type,
|
||
* and shadow; animation is purposeful, not choreographed. */
|
||
--motion-fast: 150ms;
|
||
--motion-base: 200ms;
|
||
--ease-standard: cubic-bezier(0.2, 0, 0, 1);
|
||
|
||
/* ─── Layout ──────────────────────────────────────────────────────
|
||
* 1200px max content width — contained editorial layouts within
|
||
* generous full-bleed dark sections. */
|
||
--container-max: 1200px;
|
||
--container-gutter-desktop: 24px;
|
||
--container-gutter-tablet: 16px;
|
||
--container-gutter-phone: 12px;
|
||
}
|