Design System / Foundations
Show the receipts.
Every value below is read live from echo-tokens.css — not retyped — so this page can’t drift from the system the screens ship. Toggle the contract on the right.
… tokens · one source of truth
Color
Monochrome at rest. Hue only where it carries meaning — Crimson / Saffron / Emerald for signal, Iris for active only.
Neutrals · resting palette
Text
Signal
Brand · Iris
Type scale
Roles, not free sizes. Proof text on the left; live token + computed size on the right.
Fonts
Two families. Inter for UI copy; JetBrains Mono for IDs, metrics, timestamps.
ECHO Threat Intel
--font-sans ·
42.8K · IOC_185.220
--font-mono ·
Guidelines
The rules that keep the system from drifting.
Do
- Read tokens (
var(--…)), never retype hex or px into screens. - Keep one page background (
--background). Reserve--cardfor elevated surfaces — never full-bleed sections. - Treat Iris (
--brand) as active/selected fill or ring only. Use--brand-foregroundfor Iris text. - Pair every signal color with an icon or label — never color alone.
- Snap spacing to
--sp-*. Keep nav inecho-chrome.js.
Don’t
- Don’t hardcode a hex or a px. If it isn’t a token, it doesn’t ship.
- Don’t put Iris on buttons or use it as decoration.
- Don’t invent a third text brightness — dim tiers are documented exceptions only.
- Don’t use radius
13or16— they’re off-scale and lint-fail. - Don’t animate for ornament. Every motion must communicate state.