The quiet tokens. A 4px base spacing scale that expands exponentially at the top, a five-step radius scale from compact chips to hero surfaces, and iris-tinted shadows that lift things cleanly toward the viewer.
14 steps, 4px base. Steps 0–7 are linear (work-in-progress UI); 8–13 grow exponentially (section gaps, layout rhythm). Never invent a gap — pick a step.
Dense product UI and comfortable marketing use different ends of the same scale.
Small stack (--space-3 / 8px) for label→control, medium stack (--space-5 / 16px) between fields.
Marketing and editorial lean on --space-9 / 40px and --space-10 / 56px for generous block rhythm — more room to breathe, fewer competing ideas per column.
The spacing step is the same token — just a different choice up the scale.
Six steps plus full. Radius tracks container size: tiny for chips, large for surfaces, full for pills and avatars. Never mismatch radii across a single composition.
Shadows are slightly cool (toward the ink neutral), layered in two planes for soft edges. Two branded variants — iris and coral — for primary/secondary lift moments.
Three durations, one easing curve for 95% of cases. --ease-out for entrances and hover reactions; --ease-in-out only for layout-shifting transitions. Hover a row to trigger.
Paste into :root. Components consume these — never raw px values.
/* Spacing — 4px base */ --space-0: 0; --space-1: 2px; --space-2: 4px; --space-3: 8px; --space-4: 12px; --space-5: 16px; --space-6: 20px; --space-7: 24px; --space-8: 32px; --space-9: 40px; --space-10: 56px; --space-11: 72px; --space-12: 96px; --space-13: 128px; /* Radii */ --radius-xs: 4px; --radius-sm: 6px; --radius-md: 10px; --radius-lg: 14px; --radius-xl: 20px; --radius-2xl: 28px; --radius-full: 999px; /* Elevation */ --shadow-xs: 0 1px 1px -0.5px rgb(15 23 42 / .04), 0 1px 2px -1px rgb(15 23 42 / .06); --shadow-sm: 0 1px 2px -1px rgb(15 23 42 / .06), 0 2px 4px -2px rgb(15 23 42 / .05); --shadow-md: 0 4px 10px -4px rgb(15 23 42 / .10), 0 8px 16px -8px rgb(15 23 42 / .06); --shadow-lg: 0 12px 24px -12px rgb(15 23 42 / .14), 0 20px 40px -20px rgb(15 23 42 / .08); --shadow-xl: 0 24px 48px -24px rgb(15 23 42 / .20), 0 40px 80px -40px rgb(15 23 42 / .10); --shadow-iris: 0 12px 28px -14px rgb(45 17 150 / .35), 0 4px 10px -6px rgb(45 17 150 / .22); --shadow-coral: 0 12px 28px -14px rgb(136 53 24 / .30), 0 4px 10px -6px rgb(136 53 24 / .20); --shadow-inset: inset 0 1px 0 rgb(255 255 255 / .6), inset 0 0 0 1px rgb(15 23 42 / .04); /* Motion */ --ease-out: cubic-bezier(.22, 1, .36, 1); --ease-in-out: cubic-bezier(.65, 0, .35, 1); --dur-fast: 120ms; --dur-base: 180ms; --dur-slow: 280ms;