Foundations
The ground rules: principles, the token model, and the visual primitives every component is built from.
Principles
Four ideas every token, component, and pattern answers to.
Tokens
Savant runs on a three-tier token model. Primitives hold raw values, semantic tokens give them meaning, and component tokens map meaning onto specific parts. A component never references a raw value directly, so a single change flows everywhere.
--grey-900: #121212;
--space-4: 16px;
--surface-page: var(--grey-900);
--field-border-focus: var(--purple-500);
Color
Six families, each a nine-step scale from 100 to 900. Purple leads as the primary. Teal carries the secondary accent, green, amber, and red carry status, and a dark neutral scale sets every surface. Click any swatch to copy its value.
The default action color. Anchors buttons, focus, links, and brand moments across the system.
Semantic roles
Icons
An outline set on a 24px grid, drawn in one consistent stroke and colored with currentColor, so every icon inherits text color and themes automatically. Click any icon to copy its SVG.
Typography
One typeface, Coinbase Sans, self-hosted so it renders on every device. Three weights: regular (400), medium (500), and bold (700). There is no 600, so 600 renders as bold.
Spacing
An eight-step scale on a 4px base. Use the tokens, not arbitrary pixels, so rhythm stays consistent across the system.
Grid
A twelve column grid governs page layout. Columns are fluid, gutters come from the spacing scale, and content sits inside a centered container. Compose a layout by spanning columns, then let it fold to a single column as the viewport narrows.
Columns and spans
Breakpoints
Radius
Four options. Sharp and pill are the button choices, 4px is the field default, and 14px softens panels.
Elevation
On a dark UI, elevation is mostly a border and a soft shadow. Four levels, from flat surfaces to modals.
Motion
Three durations and one easing curve. Motion is quick and purposeful. Hover the tiles to feel each speed.
120ms
200ms
340ms
Standard easing is cubic-bezier(0.22, 1, 0.36, 1). Every transition and smooth scroll is disabled under prefers-reduced-motion.
Accessibility
Savant targets WCAG 2.1 AA. Accessibility is a property of the components, so you inherit most of it for free.