tools/brand
toolsdesign systems
Brand-in-a-Box
Turn one seed colour (or an image) into a complete design system — OKLCH-computed scales, accessible pairings with one-tap fixes, a modular type scale, and exports to CSS, Tailwind and Figma tokens.
OKLCH colour science · runs entirely in your browser
Brand name
Seed — Molten Clay
From image — or drop anywhere
Type · ratio & base
Harmony — generates the secondary hue
Palette — OKLCH, gamut-mapped
Primary
Secondary
Neutral
Accessibility — WCAG 2 + APCA, with one-tap fix
Aa
Primary on whiteWCAG 5.30 · APCA Lc 75
AAAAAAPCA
Aa
White on primaryWCAG 5.30 · APCA Lc 80
AAAAAAPCA
Aa
Accent on whiteWCAG 3.49 · APCA Lc 62
AAAAAAPCA
Aa
light text on bgWCAG 12.15 · APCA Lc 94
AAAAAAPCA
Type scale
Atlas5xl · 3.815rem
Atlas4xl · 3.052rem
Atlas3xl · 2.441rem
Atlas2xl · 1.953rem
Atlasxl · 1.563rem
Atlaslg · 1.25rem
Atlasbase · 1rem
Atlassm · 0.8rem
Atlasxs · 0.64rem
Live preview
atlas.app
Atlas · design system
Built from a single seed.
Tints, neutrals and accents computed in OKLCH and gamut-mapped — so every step is as vivid as the screen allows, in light and dark alike.
Primary actionSecondaryAccent
Surface card
Muted copy on an elevated surface.
Export
:root {
/* ramps */
--color-primary-50: #fff3f0;
--color-primary-100: #ffe5de;
--color-primary-200: #feccbf;
--color-primary-300: #fda58f;
--color-primary-400: #fd7351;
--color-primary-500: #e55029;
--color-primary-600: #c73608;
--color-primary-700: #a12a04;
--color-primary-800: #7d1d01;
--color-primary-900: #5b1100;
--color-primary-950: #3e0600;
--color-neutral-50: #fff3ef;
--color-neutral-100: #f4e8e5;
--color-neutral-200: #e2d6d3;
--color-neutral-300: #c8bcb9;
--color-neutral-400: #aba09d;
--color-neutral-500: #918683;
--color-neutral-600: #796f6c;
--color-neutral-700: #625856;
--color-neutral-800: #4c4340;
--color-neutral-900: #372e2c;
--color-neutral-950: #241c1a;
--color-secondary-50: #e7faff;
--color-secondary-100: #caf4fe;
--color-secondary-200: #92e9fe;
--color-secondary-300: #1fd5f7;
--color-secondary-400: #18b6d3;
--color-secondary-500: #1299b2;
--color-secondary-600: #0c7f94;
--color-secondary-700: #076677;
--color-secondary-800: #034e5c;
--color-secondary-900: #003742;
--color-secondary-950: #00232b;
--color-accent: #1a96ad;
--color-success: #20a04e;
--color-warning: #ac7c15;
--color-danger: #d5584f;
--color-info: #2389e2;
/* semantic roles — light */
--bg: #fff3ef;
--surface: #ffffff;
--surface-alt: #f4e8e5;
--text: #372e2c;
--text-muted: #796f6c;
--border: #e2d6d3;
--primary: #c73608;
--primary-fg: #ffffff;
--accent: #1a96ad;
--accent-fg: #0a0a0a;
/* type */
--text-xs: 0.64rem;
--text-sm: 0.8rem;
--text-base: 1rem;
--text-lg: 1.25rem;
--text-xl: 1.563rem;
--text-2xl: 1.953rem;
--text-3xl: 2.441rem;
--text-4xl: 3.052rem;
--text-5xl: 3.815rem;
--font-display: 'Fraunces', serif;
--font-body: 'Inter', sans-serif;
}
[data-theme="dark"] {
/* semantic roles — dark */
--bg: #241c1a;
--surface: #372e2c;
--surface-alt: #4c4340;
--text: #fff3ef;
--text-muted: #aba09d;
--border: #4c4340;
--primary: #fd7351;
--primary-fg: #0a0a0a;
--accent: #1a96ad;
--accent-fg: #0a0a0a;
}