Colors
Semantic tokens map to a fixed palette of primitives. Always reference semantic tokens in components — never raw hex values.
Typography
Three IBM Plex families create a clear hierarchy — Serif for display, Sans for UI, Mono for data and labels.
Spacing
8px base grid. All spacing tokens are multiples of 4px. Use --space-N tokens exclusively — never raw pixel values.
Motion
Carbon-aligned durations with expressive easing curves. Productive motion is subtle; expressive is intentional.
Grid
12-column grid with 16px gutters. Use .ds-grid-2 through .ds-grid-4 helpers or custom CSS grid with the column token set.
Buttons
Seven variants, four sizes, icon-only, and disabled state. All respect focus ring and active press feedback.
Badges & Tags
Forms
Cards
21
Alerts
Feedback
Progress indicators, loading states, and skeleton placeholders.
Overlays
Event UI
Countdown, schedule rows, and programme cards — the core event page pattern from the Mandara theme.
Token Reference
Copy this :root block into your project. All tokens are available globally via CSS custom properties.
/* ── Mandara — copy into your project ── */ :root { /* Color */ --background: #0A0A0A; --surface-01: #111111; --surface-02: #1A1A1A; --text-primary: #FDFAF5; --text-secondary: #D9CFC0; --text-brand: #FF5722; --interactive: #E84700; --border-subtle: rgba(255,255,255,0.08); --border-brand: #E84700; --gradient-brand: linear-gradient(135deg,#FF5722,#FF9A3C,#FFD166); /* Typography */ --font-serif: 'IBM Plex Serif', Georgia, serif; --font-sans: 'IBM Plex Sans', system-ui, sans-serif; --font-mono: 'IBM Plex Mono', monospace; /* Spacing */ --space-1: 0.25rem; --space-2: 0.5rem; --space-3: 0.75rem; --space-4: 1rem; --space-6: 1.5rem; --space-7: 2rem; --space-8: 2.5rem; --space-10: 4rem; /* Motion */ --duration-fast: 100ms; --duration-base: 200ms; --ease-standard: cubic-bezier(0.2,0,0.38,0.9); --ease-expressive: cubic-bezier(0.4,0.14,0.3,1); /* Radius */ --radius-md: 4px; --radius-lg: 8px; --radius-xl: 12px; --radius-2xl: 20px; --radius-full: 9999px; }