Color
Neutral scale
Section titled “Neutral scale”Fixed — never rotates with --hue. Twelve stops; 750 and 900 are dark-mode-only (panel separation and the deepest code-background surface).
| Token | Hex | Swatch |
|---|---|---|
--n-0 |
#f8fafc |
|
--n-50 |
#f1f5f9 |
|
--n-100 |
#e2e8f0 |
|
--n-200 |
#cbd5e1 |
|
--n-300 |
#94a3b8 |
|
--n-400 |
#64748b |
|
--n-500 |
#475569 |
|
--n-600 |
#334155 |
|
--n-700 |
#1e293b |
|
--n-750 |
#16203a |
|
--n-800 |
#0f172a |
|
--n-900 |
#0b1120 |
Semantic states
Section titled “Semantic states”Fixed across every theme — success, warning, error, and info never rotate with --hue.
| Token | Light | Dark |
|---|---|---|
--success |
#0f9d63 |
#3ecf8e |
--warning |
#b45f06 |
#e0a84a |
--error |
#d13c30 |
#f0665a |
--info |
#1d6fbf |
#5fa8e8 |
Hue registry
Section titled “Hue registry”Nine erisera products, one color wheel, zero collisions. The three existing closed products — nominos, nominos-core, the blog — each reserve their hue plus a ±20° buffer; every new OSS theme sits outside all buffers.
| Product | Hue | Status |
|---|---|---|
| erisera (default) / matey | 25° | shipped |
| nominos | 199° | existing, closed |
| nominos-core | 142° | existing, closed |
| blog | 160° | existing, closed |
| objectify | 70° | shipped |
| andbox | 95° | shipped |
| mcp-query | 250° | shipped |
| ecmanim | 285° | shipped |
| clawser | 340° | shipped |
Blocked union: [122°, 219°]. Free arcs: (45°, 122°) and (219°, 365°). Adding a 7th OSS tool? Pick a hue in a free arc, ≥20° from every existing stop. The showcase has the full wheel diagram.
Accent formula
Section titled “Accent formula”--accent: hsl(var(--hue) 95% 46%); /* light */--accent: hsl(var(--hue) 92% 58%); /* dark */Every other color derived from the accent — --accent-hover, --accent-soft, --accent-border, --shadow-accent — is computed from this one value, so a theme is a single number.