154 lines
9.8 KiB
CSS
154 lines
9.8 KiB
CSS
/* ─────────────────────────────────────────────────────────────────────────
|
||||
|
|
* design-systems/spacex/tokens.css
|
|||
|
|
*
|
|||
|
|
* Structured token bindings for "Design System Inspired by SpaceX".
|
|||
|
|
* Cinematic aerospace minimalism: pure black canvas, full-viewport
|
|||
|
|
* photography, D-DIN industrial type, universal uppercase + positive
|
|||
|
|
* tracking, zero shadows / cards / decoration. The interface disappears
|
|||
|
|
* behind the imagery — only type, photography, and a single ghost button.
|
|||
|
|
*
|
|||
|
|
* Key brand decisions encoded here:
|
|||
|
|
* - Pure Space Black (#000000) — the void of space; never a soft black
|
|||
|
|
* - Spectral White (#f0f0fa) — slight blue-violet tint that mimics starlight
|
|||
|
|
* - --surface aliases to --bg — SpaceX has NO cards, panels, or containers
|
|||
|
|
* - Ghost border (rgba(240,240,250,0.35)) — only visible interactive edge
|
|||
|
|
* - D-DIN industrial typeface — DIN heritage, stenciled aerospace voice
|
|||
|
|
* - Display tracking 0.02em (= 0.96px at 48px) — DESIGN.md §3 verbatim
|
|||
|
|
* - Tight leading 1.0 — compressed mission-briefing rhythm
|
|||
|
|
* - --elev-raised: none — zero shadows; depth comes from photography
|
|||
|
|
* - --radius-pill: 32px — the ghost button is the SOLE rounded element
|
|||
|
|
* ─────────────────────────────────────────────────────────────────── */
|
|||
|
|
|
|||
|
|
:root {
|
|||
|
|
/* ─── Surface ─────────────────────────────────────────────────────
|
|||
|
|
* The void of space. There is no card tier, no warm tier — every
|
|||
|
|
* SpaceX section is text-on-photograph, not text-on-surface. We
|
|||
|
|
* still declare --surface so cross-brand components that paint a
|
|||
|
|
* card still resolve, but it deliberately matches --bg. */
|
|||
|
|
--bg: #000000; /* Space Black — pure void, the foundation canvas */
|
|||
|
|
--surface: #000000; /* No card surfaces — content sits directly on the void */
|
|||
|
|
--surface-warm: var(--surface); /* alias — no warm tier in an achromatic system */
|
|||
|
|
|
|||
|
|
/* ─── Foreground ──────────────────────────────────────────────────
|
|||
|
|
* Spectral White, never pure white. The slight blue-violet tint
|
|||
|
|
* mimics starlight on a spacecraft hull and prevents the clinical
|
|||
|
|
* feel of #ffffff against pure black. */
|
|||
|
|
--fg: #f0f0fa; /* Spectral White — primary text, mission-critical signal */
|
|||
|
|
--fg-2: var(--fg); /* alias — single text weight throughout the system */
|
|||
|
|
--muted: rgba(240, 240, 250, 0.7); /* Dimmed spectral — captions, secondary labels */
|
|||
|
|
--meta: var(--muted); /* alias — tertiary FG identical to muted on dark canvas */
|
|||
|
|
|
|||
|
|
/* ─── Border ──────────────────────────────────────────────────────
|
|||
|
|
* The Ghost Border (35% spectral) is the only edge that ever
|
|||
|
|
* appears — on the lone ghost CTA button. Inner separators borrow
|
|||
|
|
* the 10% spectral surface tint so they barely register. */
|
|||
|
|
--border: rgba(240, 240, 250, 0.35); /* Ghost Border — DESIGN.md §2 verbatim */
|
|||
|
|
--border-soft: rgba(240, 240, 250, 0.1); /* Inner separators / barely-visible dividers */
|
|||
|
|
|
|||
|
|
/* ─── Accent ──────────────────────────────────────────────────────
|
|||
|
|
* SpaceX has no chromatic accent — Spectral White IS the accent.
|
|||
|
|
* Hover lifts to pure white (Hover White / --white-100 in DESIGN.md);
|
|||
|
|
* active gently dims. The full ghost-button affordance is
|
|||
|
|
* implemented in components, not in the accent token. */
|
|||
|
|
--accent: #f0f0fa; /* Spectral White stands in for any brand accent */
|
|||
|
|
--accent-on: #000000; /* Black text when accent is the bg */
|
|||
|
|
--accent-hover: #ffffff; /* Hover White — pure white per DESIGN.md §2 */
|
|||
|
|
--accent-active: #d8d8e6; /* Dimmed spectral — pressed state */
|
|||
|
|
|
|||
|
|
/* ─── Semantic ────────────────────────────────────────────────────
|
|||
|
|
* Schema defaults preserved. SpaceX's homepage is purely
|
|||
|
|
* presentational and almost never surfaces semantic state, but the
|
|||
|
|
* tokens must resolve when shared components reference them. */
|
|||
|
|
--success: #16a34a;
|
|||
|
|
--warn: #eab308;
|
|||
|
|
--danger: #dc2626;
|
|||
|
|
|
|||
|
|
/* ─── Typography ──────────────────────────────────────────────────
|
|||
|
|
* D-DIN — industrial geometric, German DIN heritage. Two weights
|
|||
|
|
* only: 700 (Bold) for display + nav emphasis, 400 for body.
|
|||
|
|
* Fallbacks per DESIGN.md §3: Arial, Verdana. */
|
|||
|
|
--font-display: "D-DIN-Bold", "D-DIN", "DIN Alternate", "Helvetica Neue", Arial, Verdana, sans-serif;
|
|||
|
|
--font-body: "D-DIN", "DIN Alternate", "Helvetica Neue", Arial, Verdana, sans-serif;
|
|||
|
|
--font-mono: ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Monaco, Consolas, monospace;
|
|||
|
|
|
|||
|
|
/* Type scale — DESIGN.md §3 anchors: 10px (Micro), 12px (Caption /
|
|||
|
|
* Nav), 16px (Body), 48px (Display Hero). Intermediate tiers
|
|||
|
|
* (20/24/32/40) are interpolated for the few moments a SpaceX-style
|
|||
|
|
* layout needs them; the actual brand uses very few sizes. */
|
|||
|
|
--text-xs: 10px; /* Micro — uppercase ghost labels */
|
|||
|
|
--text-sm: 12px; /* Caption / Nav Link — uppercase */
|
|||
|
|
--text-base: 16px; /* Body — standard reading text */
|
|||
|
|
--text-lg: 20px;
|
|||
|
|
--text-xl: 24px;
|
|||
|
|
--text-2xl: 32px;
|
|||
|
|
--text-3xl: 40px;
|
|||
|
|
--text-4xl: 48px; /* Display Hero — D-DIN-Bold uppercase, "MISSION" weight */
|
|||
|
|
|
|||
|
|
--leading-body: 1.5; /* DESIGN.md says 1.5–1.7 for reading body */
|
|||
|
|
--leading-tight: 1.0; /* Display / mission-briefing rhythm */
|
|||
|
|
--tracking-display: 0.02em; /* = 0.96px at 48px — DESIGN.md §3 hero spec verbatim */
|
|||
|
|
|
|||
|
|
/* ─── Spacing ─────────────────────────────────────────────────────
|
|||
|
|
* 8px base unit per DESIGN.md §5. Schema-default scale preserved —
|
|||
|
|
* SpaceX's irregular published scale (3/5/12/15/18/20/24/30) is a
|
|||
|
|
* brand-specific rhythm; cross-brand components paint at 4/8/12/16. */
|
|||
|
|
--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: each section is one full viewport. We can't bind
|
|||
|
|
* "100vh" to padding (it would collapse on short content), so
|
|||
|
|
* section-y is generous to evoke the cinematic single-viewport
|
|||
|
|
* rhythm in fixture renderings. */
|
|||
|
|
--section-y-desktop: 120px;
|
|||
|
|
--section-y-tablet: 80px;
|
|||
|
|
--section-y-phone: 56px;
|
|||
|
|
|
|||
|
|
/* ─── Radius ──────────────────────────────────────────────────────
|
|||
|
|
* Sharp 4px on dividers / utility — DESIGN.md §5 "Sharp (4px)".
|
|||
|
|
* --radius-pill rebound to 32px because SpaceX's ghost button IS
|
|||
|
|
* the only rounded element in the system, and "pill" semantically
|
|||
|
|
* maps to that lone interactive surface. */
|
|||
|
|
--radius-sm: 4px;
|
|||
|
|
--radius-md: 4px; /* No medium tier exists — same as sm */
|
|||
|
|
--radius-lg: 4px; /* No large tier exists — same as sm */
|
|||
|
|
--radius-pill: 32px; /* Ghost button radius — the only rounded element */
|
|||
|
|
|
|||
|
|
/* ─── Elevation (ZERO shadows) ────────────────────────────────────
|
|||
|
|
* DESIGN.md §6: "SpaceX uses ZERO shadows." Every surface is
|
|||
|
|
* already a photograph with natural lighting; CSS shadows would
|
|||
|
|
* compete with the cinematic content. --elev-raised resolves to
|
|||
|
|
* `none` so any shared component requesting a raised surface
|
|||
|
|
* silently flattens instead of painting a synthetic drop shadow. */
|
|||
|
|
--elev-flat: none;
|
|||
|
|
--elev-ring: 0 0 0 1px var(--border); /* Hairline spectral ring — ghost-button edge */
|
|||
|
|
--elev-raised: none; /* Zero shadows — photography carries depth */
|
|||
|
|
|
|||
|
|
/* ─── Focus ring ──────────────────────────────────────────────────
|
|||
|
|
* Solid 2px spectral ring — high contrast on black canvas. No
|
|||
|
|
* blurred glow (consistent with the zero-shadow philosophy). */
|
|||
|
|
--focus-ring: 0 0 0 2px var(--accent);
|
|||
|
|
|
|||
|
|
/* ─── Motion ──────────────────────────────────────────────────────
|
|||
|
|
* Standard schema durations. SpaceX's drama is in the photography
|
|||
|
|
* and type, not in animated state changes. */
|
|||
|
|
--motion-fast: 150ms;
|
|||
|
|
--motion-base: 200ms;
|
|||
|
|
--ease-standard: cubic-bezier(0.2, 0, 0, 1);
|
|||
|
|
|
|||
|
|
/* ─── Layout ──────────────────────────────────────────────────────
|
|||
|
|
* 1440px container — wide-format layouts honour the cinematic
|
|||
|
|
* full-bleed feel without letting hero copy stretch beyond
|
|||
|
|
* readable on ultra-wide displays. Generous gutters keep the
|
|||
|
|
* "edge-to-edge imagery" feel even at smaller breakpoints. */
|
|||
|
|
--container-max: 1440px;
|
|||
|
|
--container-gutter-desktop: 24px;
|
|||
|
|
--container-gutter-tablet: 20px;
|
|||
|
|
--container-gutter-phone: 18px;
|
|||
|
|
}
|