tokEns
Every visual decision codified as a token. Colour, typography, spacing, radius, shadow, and motion — consumed as CSS custom properties, Tailwind utilities, or TypeScript constants. This is the single source of truth for every interface built under the Alchemy system.
colour — primary scaleS
Full 11-step scales for Orange and Blue. Anchored at 500. Generated with perceptually uniform lightness distribution.
Orange
50
#FFF4ED
100
#FFE4D1
200
#FFC59E
300
#FFA06B
400
#FF7633
500
#FF4D00
600
#DB3F00
700
#B53300
800
#8C2800
900
#661D00
950
#331000
Blue
50
#EBF2FE
100
#D2E2FC
200
#A5C5F9
300
#78A8F6
400
#4B8BF3
500
#126EF5
600
#0E58C4
700
#0B4293
800
#072C62
900
#041B3E
950
#051B3D
colour — neutrals
Cool-gray neutral scale aligned to Tailwind Slate. Used for text, borders, backgrounds, and all structural UI.
Neutral
50
#F8FAFC
100
#F1F5F9
200
#E2E8F0
300
#CBD5E1
400
#94A3B8
500
#64748B
600
#475569
700
#334155
800
#1E293B
900
#0F172A
950
#020617
colour — semantic mapping
Purpose-driven tokens that map to primitive values. Always reference semantic tokens in components — never primitives directly.
colour — stAtus
Semantic status colours for feedback, validation, and data states. Each has a primary, light background, and dark text variant.
Success
#16A34A--color-status-success
Confirmations, positive metrics, completed states, form validation pass, trend-up indicators
Warning
#D97706--color-status-warning
Caution states, attention needed, degraded metrics, approaching thresholds, pending actions
Error
#DC2626--color-status-error
Destructive actions, failed validations, broken tracking, critical alerts, trend-down indicators
typoGraphy — families
Three font families serve distinct roles. Display for brand moments, body for readability, mono for data and code.
Display
ED Nimpkish
Tracking Becomes Visible
Body
Inter
Your ad platforms are optimising on incomplete data. Most advertisers are missing 30-40% of their conversion signals.
Mono
JetBrains Mono
ROAS: 4.2x | CPA: $18.40 | Conv: 1,247 | CTR: 3.8%
typography — scalE
Full type scale from 12px to 72px. Display font (ED Nimpkish) for 3xl and above, body font (Inter) for the rest.
72px
lh 1.1
w400
Hero Display
56px
lh 1.1
w400
Heading One
40px
lh 1.1
w400
Heading Two
32px
lh 1.25
w400
Heading Three
24px
lh 1.25
w600
Subheading text
20px
lh 1.5
w400
Lead paragraph text
17px
lh 1.5
w400
Large body text for emphasis
15px
lh 1.5
w400
Base body text — the default reading size for all content
13px
lh 1.5
w400
Small text for captions and metadata
12px
lh 1.5
w500
Extra small — labels and fine print
typoGraphy — usage patterns
How type is applied in practice. Each pattern maps to a specific role in the interface hierarchy.
Buttons
Inter 11px / uppercase / tracking-widest / medium
--font-body / --font-size-xs / letter-spacing: 0.15em
Badges
Inter 11px / uppercase / tracking-wide / medium
--font-body / --font-size-xs / letter-spacing: 0.12em
Headings
Section Heading
Sub-section Heading
ED Nimpkish 32px / 24px+ / regular / tight tracking
--font-display / --font-size-3xl+ / line-height: 1.1-1.25
Body Text
Your ad platforms are optimising on incomplete data. Most advertisers are missing 30-40% of their conversion signals. Kazam finds the gaps.
Inter 15px / regular / relaxed leading / text-secondary
--font-body / --font-size-base / line-height: 1.625
Captions
Last updated 2 hours ago
Conversion tracking status: active
Inter 12-13px / regular / text-tertiary
--font-body / --font-size-xs to --font-size-sm
Data / Metrics
$14.5M
ROAS 4.2x | CPA $18.40
conv: 1,247 | ctr: 3.8%
JetBrains Mono / various sizes / tabular numerals
--font-mono / bold for hero KPIs, regular for supporting
Form Labels
Inter 13px / medium / text-primary for labels
--font-body / --font-size-sm / font-weight: 500
Navigation Links
Inter 12px / uppercase / tracking-widest / medium
--font-body / --font-size-xs / letter-spacing: 0.1em
spacinG
4px base unit. Every spatial decision uses this scale. Consistent rhythm across all components and layouts.
radius, shadow, motion
Spatial modifiers and transition tokens. Sharp rectangles by default, with controlled rounding, elevation, and movement.
Radius
--radius-none
--radius-sm
--radius-md
--radius-lg
--radius-xl
--radius-full
Shadow
Cards, subtle elevation
0 1px 2px 0 rgba(0,0,0,0.05)
Dropdowns, popovers
0 4px 6px -1px rgba(0,0,0,0.07)
Modals, overlays
0 10px 15px -3px rgba(0,0,0,0.10)
Motion
Hovers, toggles, micro-interactions
--duration-fast
State changes, tab switches
--duration-normal
Entrances, page transitions, complex reveals
--duration-slow
Easing Curves
cubic-bezier(0, 0, 0.2, 1)
--ease-out
cubic-bezier(0.4, 0, 1, 1)
--ease-in
cubic-bezier(0.4, 0, 0.2, 1)
--ease-in-out
token uSage
Three ways to consume tokens: CSS custom properties for stylesheets, Tailwind utilities for components, TypeScript imports for programmatic access.
/* CSS Custom Properties */
.card {
background: var(--color-bg-page);
border: 1px solid var(--color-border-default);
border-radius: var(--radius-md);
padding: var(--spacing-6);
box-shadow: var(--shadow-sm);
}
.card-title {
font-family: var(--font-display);
font-size: var(--font-size-3xl);
line-height: var(--line-height-tight);
color: var(--color-text-primary);
}
.card-body {
font-family: var(--font-body);
font-size: var(--font-size-base);
color: var(--color-text-secondary);
margin-top: var(--spacing-3);
}
.card:hover {
border-color: var(--color-brand-primary);
transition: border-color var(--duration-fast)
var(--ease-out);
}{/* Tailwind CSS Classes */}
<div className="
bg-white
border border-neutral-200
rounded-md
p-6
shadow-sm
hover:border-orange-500
transition-colors duration-fast
">
<h3 className="
font-display text-3xl
leading-tight tracking-tight
text-text-primary
">
Card Title
</h3>
<p className="
font-body text-base
text-text-secondary
mt-3
">
Card body text using semantic
colour tokens.
</p>
<span className="
font-mono text-xs
text-orange-500
">
$14.5M
</span>
</div>// TypeScript Imports
import {
colors,
typography,
spacing,
radius,
shadow,
motion,
} from '@kazam-au/tokens';
// Access primitive values
colors.primitive.orange[500]
// → '#FF4D00'
// Access semantic tokens
colors.semantic.brand.primary
// → '#FF4D00' (resolves reference)
colors.semantic.text.primary
// → '#1A1A2E'
// Typography composites
typography.styles.display.hero
// → { fontFamily, fontSize, fontWeight,
// lineHeight }
// Spacing scale
spacing[4] // → '16px'
spacing[8] // → '32px'
// Motion
motion.duration.fast // → '150ms'
motion.easing['ease-out']
// → [0, 0, 0.2, 1]
// Use in styled components or
// inline styles
const chartColors = [
colors.primitive.orange[500],
colors.primitive.blue[500],
colors.semantic.status.success,
colors.semantic.status.warning,
];