Foundations
The tokens everything is built from
Every value below resolves from @webzenia/tokens at runtime — primitive scales, semantic tokens, type, spacing, elevation, and motion. Nothing here is hand-typed; the swatches render the live token.
Colour
Two layers: primitive scales (raw oklch) and semantic tokens (what components consume). Components reference semantics only — never primitives. The brand hue is 262.236°.
Neutral scale
Brand · blue scale
Status
Semantic · surface
Semantic · text
Semantic · border
Semantic · accent
Semantic · status
Typography
Role-based. Components render via <Text role='…'>, never inline font-size/weight. 142 roles exist, namespaced per surface; the reusable core is shown here.
Families
Roles
Section heading H2
Section heading H3
Section heading H4
Section subhead — supporting line under a heading.
Body large — the workhorse paragraph role for readable prose.
Spacing
A bespoke 25-step scale (--space-step-0 … 24). Components use step tokens for micro-spacing, semantic layout tokens for structure. Never raw px.
Radius
rounded-full reserved for pills/avatars; cards and panels use the rectangle scale.
Elevation · shadow
Solid content cards use a flat resting shadow; glow is a rare focal device (≤1 per page).
Glassmorphism · blur
Glass is for navigation, modals, and ambient decoration only — content cards are solid. Performance ceiling: blur() ≤ 16px (mid-range Android).
Motion
Durations + easings. All motion wraps useReducedMotion() — Indian low-end devices often have battery-saver on.