Overview
How the token stack is wired, and where a look changes it so every component follows.
Theming is how one look repaints every component at once. This page shows how the token files stack and which layer a look changes, and the pages after it install the tokens, tint the neutral room, retune color and type, and start from a prefab. Foundations holds the specimens you paint with, and this section is the wiring under them.
Components never read a primitive or a raw hue. They read utilities from bindings.css, and
those utilities read --brand-* and --sys-*, so a retune moves color, type, and corners
without touching a component.
Primitives raw scales: neutral, blue, red, green, amber, categories, radius, stroke, motion
| picked by
v
Brand --brand-* primary, secondary, type, radius, UI weight
System --chrome-* and --sys-* chrome, status, washes, categories
| read by
v
Bindings utilities: bg-primary, bg-surface, text-fg-muted, rounded-controlThe four files
| File | Layer | What it holds |
|---|---|---|
primitives.css | gesso.primitives | The neutral, blue, red, green, and amber ramps, the --cat-* categorical hues, the --radius-scale-* and --stroke-* catalogs, and the motion durations. Components never use these directly. |
brand.css | gesso.brand | Identity: --brand-primary, --brand-secondary, a subtle tint for each, the three font roles, the UI weight, and two radius picks. |
system.css | gesso.system | The neutral room (--chrome-* and --sys-*), the status colors, the fill and selected washes, the --sys-cat-* tag colors, and the --alpha-* scale. |
bindings.css | none | The @theme inline block that turns the roles above into Tailwind utilities, plus the shadcn names as aliases so a third-party block still themes. |
A prefab or your own retune is unlayered, and unlayered CSS beats every gesso.* layer, so a
look wins no matter where its import sits. Installation shows
the import order, and Retune shows what a look sets.
What a look changes
A look fills --brand-* with a primary, a second hue, a pair of subtle tints, the three font
roles, the UI weight, and two radii. It can override a status slot. It can also set the chrome knobs described on
Chrome & temperature, which tint the neutral room warm or cool and
leave the brand alone. Chrome stays achromatic gray until a look sets those knobs.
--cat-* are categorical hues for data, and --sys-cat-* adds the flat tag chroma of the room
to them and keeps their hue, except gray, which takes the hue of the room. A brand retune does
not touch them.
--alpha-* is the alpha scale (4, 8, 16, 32, 64, 82, and 100 percent) for washes made with
color-mix. Specimens, and when to pick each step, are on Color.
Next
Installation
Add the tokens and wire the CSS import order.
Chrome & temperature
The neutral room, and how warm or cool paper tints it.
Retune
Set your own color, type, radius, and stroke.
Prefabs
Washi, ICS, Ramson, and Vistula, each installable whole.
Studio
Pick brand colors on a live stage, then copy the CSS.