/* ───────────────────────────────────────────────────────────────────────── * 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; }