02 · Foundations
Color
Seven tokens. That’s the whole palette: a white canvas, two graphite anchors, three neutral text steps, and one thin divider tone.
The palette
Every token below is a CSS custom property in tokens.css. Use them directly, don’t hand-pick hex values in components.
Why these, and no more
The system starts with white. It gives typography, black-and-white imagery, and real project wordmarks a neutral surface without adding a mood of its own.
Text primary at #27272A carries headings and the name treatment. Accent at #18181B is a slightly deeper graphite for text-link actions, focus, and the short title rule. It is emphasis without introducing another hue.
The secondary, muted, and faint steps create hierarchy without tinting the page. The divider stays quiet at #E4E4E7; structure comes from a 1px line and whitespace, not from background panels.
Usage
Every page follows the same rules:
--backgroundon the page and card surfaces.--foregroundfor headings and primary UI text.--text-secondaryfor body prose, where softer contrast reads better.--text-mutedfor navigation and supporting labels.--text-faintfor small editorial metadata and quiet affordances; do not use it for essential body copy.--accentfor text-link actions, focus, the title rule, and the cursor. Do not turn it into a large background.--dividerfor borders. Always 1px, never thicker.
In code
Drop tokens.css into a project and reference variables directly:
/* tokens.css */ :root { --background: #FFFFFF; --foreground: #27272A; --accent: #18181B; --text-secondary: #626366; --text-muted: #71717A; --text-faint: #8E8F92; --divider: #E4E4E7; }