/* ───────────────────────────────────────────────────────────────────────── * design-systems/opencode-ai/tokens.css * * Structured token bindings for "Design System Inspired by OpenCode". * Terminal-native dark theme: warm near-black canvas, Berkeley Mono as * the sole typeface, flat depth (no shadows), Apple HIG semantic colors. * * Key brand decisions encoded here: * - Dark-on-dark: #201d1d (warm near-black) as page bg, #302c2c for surface * - #fdfcfc (barely-warm off-white) as primary text — never pure white * - Berkeley Mono ONLY — no second typeface, no typographic variation * - FLAT depth system — zero shadows; depth via borders and bg shifts * - Warm borders: rgba(15,0,0,0.12) — subtle red tint ties to warm palette * - Apple HIG semantic colors (#007aff, #ff3b30, #30d158, #ff9f0a) * - Narrow reading column (~880px) — single-column, text-centric * ─────────────────────────────────────────────────────────────────── */ :root { /* ─── Surface (dark theme) ──────────────────────────────────────── * Warm near-black → slightly lighter dark surface. * The reddish warmth (rgb(32,29,29)) is subtle but essential. */ --bg: #201d1d; /* OpenCode Dark — warm near-black with reddish undertone */ --surface: #302c2c; /* Dark Surface — elevated containers, slight differentiation */ --surface-warm: var(--surface); /* alias — no separate warm tier needed */ /* ─── Foreground (on dark) ──────────────────────────────────────── * Warm off-white text — never clinical pure white. */ --fg: #fdfcfc; /* OpenCode Light — barely-warm off-white primary text */ --fg-2: #c8c6c4; /* Warm light gray — secondary on dark */ --muted: #9a9898; /* Mid Gray — secondary text, muted links */ --meta: #6e6e73; /* Text Muted — disabled text, placeholders */ /* ─── Border (warm transparent) ────────────────────────────────── * The warm red tint (rgba(15,0,0,...)) in borders ties them to the * overall warm dark palette. Use #646262 for visible outlines. */ --border: #464343; /* Warm dark border — visible against bg */ --border-soft: #302c2c; /* Same as surface — barely-visible inner separator */ /* ─── Accent ────────────────────────────────────────────────────── * Apple system blue — #007aff. Familiar, trustworthy, high-contrast * on the warm dark canvas. The full three-stage hover sequence: * #007aff → #0056b3 (hover) → #004085 (active). */ --accent: #007aff; --accent-on: #ffffff; --accent-hover: #0056b3; /* Accent Blue Hover — explicitly defined */ --accent-active: #004085; /* Accent Blue Active — deeply pressed */ /* ─── Semantic (Apple HIG palette) ──────────────────────────────── * Familiar trustworthy signals on a dark terminal canvas. */ --success: #30d158; /* Apple system green */ --warn: #ff9f0a; /* Apple system orange */ --danger: #ff3b30; /* Apple system red */ /* ─── Typography ────────────────────────────────────────────────── * Berkeley Mono is the ONLY font. No typographic variation — no * display face, no body face — "everything is code" philosophy. * Hierarchy via size and weight alone (400 / 500 / 700). */ --font-display: "Berkeley Mono", "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace; --font-body: "Berkeley Mono", "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace; --font-mono: "Berkeley Mono", "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace; /* Type scale — DESIGN.md §3. Heading 1 at 38px, rest at 16px variants. * The system is intentionally compressed — terminal scale. */ --text-xs: 12px; --text-sm: 14px; /* Caption — footnotes, metadata (lh 2.0) */ --text-base: 16px; /* Body — standard text (weight 400 or 500) */ --text-lg: 18px; --text-xl: 22px; --text-2xl: 28px; --text-3xl: 38px; /* Heading 1 — hero headlines (weight 700, lh 1.5) */ --text-4xl: 48px; /* Extended display if needed */ --leading-body: 1.5; /* Monospace grid breathes at 1.5 */ --leading-tight: 1.0; /* Compact labels, tab items */ --tracking-display: 0em; /* Monospace doesn't need letter-spacing manipulation */ /* ─── Spacing ───────────────────────────────────────────────────── * 8px base unit. Generous extended scale (up to 96px) for sections. * Sections separated by spacing alone — no decorative dividers. */ --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-y-desktop: 80px; /* Terminal-like generous spacing between sections */ --section-y-tablet: 64px; --section-y-phone: 48px; /* ─── Radius ────────────────────────────────────────────────────── * Minimal: 4px everywhere, 6px for form inputs (the roundest element). * "Terminals don't have rounded corners" — utilitarian aesthetic. */ --radius-sm: 4px; /* Default for all elements */ --radius-md: 6px; /* Form inputs — slightly more approachable */ --radius-lg: 8px; /* Rare — largest container radius */ --radius-pill: 9999px; /* Declared but not part of the OpenCode aesthetic */ /* ─── Elevation (FLAT) ──────────────────────────────────────────── * Zero shadows — consistent with the terminal aesthetic. * Depth via border treatments and background color shifts ONLY. * All three levels use rings/outlines, never blur shadows. */ --elev-flat: none; --elev-ring: 0 0 0 1px var(--border); --elev-raised: 0 0 0 2px var(--border); /* Slightly more prominent ring — no blur */ /* ─── Focus ring ────────────────────────────────────────────────── * Accent blue focus ring — no shadow-based ring (flat system). */ --focus-ring: 0 0 0 2px var(--accent); /* ─── Motion ────────────────────────────────────────────────────── * Terminal-inspired: instant state changes. 100ms for snappy feedback. */ --motion-fast: 100ms; --motion-base: 150ms; --ease-standard: cubic-bezier(0.2, 0, 0, 1); /* ─── Layout ────────────────────────────────────────────────────── * Narrow reading column (880px) — single-column, text-centric. * Generous side margins focus attention on the content. */ --container-max: 880px; --container-gutter-desktop: 24px; --container-gutter-tablet: 20px; --container-gutter-phone: 16px; }