Go Beyond Colors: Spacing, Radius & Elevation Tokens in CSS
When people think about CSS variables, they think about colors. And sure, brand palettes matter. But some of the biggest wins happen when you token-ize your spacing, radius, and elevation.
Why? Because these are the silent heroes of great design. The things you only notice when they’re wrong, margins that clash, buttons that feel off, cards that float like ghosts instead of anchoring like content.
So I define them. I name them. And I use them everywhere.
My Token Philosophy
I don’t memorize pixels, I name intentions. That means:
--space-xs= tiny gaps, like badge padding or tight icons--space-md= default spacing for blocks or components--radius-lg= relaxed corners for friendly UI--shadow-elevated= a component that's supposed to rise above the rest
Tokens give your project a design language. Not just styles, but structure and vocabulary you can trust.
The Base Kit I Use Across Projects
:root {
/* Spacing */
--space-xs: 0.25rem;
--space-sm: 0.5rem;
--space-md: 1rem;
--space-lg: 2rem;
--space-xl: 4rem;
/* Border Radius */
--radius-sm: 4px;
--radius-md: 8px;
--radius-lg: 16px;
/* Elevation (Shadows) */
--shadow-soft: 0 1px 4px rgba(0, 0, 0, 0.05);
--shadow-medium: 0 2px 8px rgba(0, 0, 0, 0.1);
--shadow-elevated: 0 4px 16px rgba(0, 0, 0, 0.15);
}
This block sits in base.css or a design-tokens.css file. Every component pulls from it. And when the client says “tighten all the padding by 20%,” I don’t cry, I tweak a variable.
Real-World Before & After
❌ Hardcoded (The Headache Way)
.card {
padding: 1rem 2rem;
border-radius: 8px;
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
}
✅ Tokenized (The Sanity Way)
.card {
padding: var(--space-md) var(--space-lg);
border-radius: var(--radius-md);
box-shadow: var(--shadow-elevated);
}
Now if you update your elevation tokens across the site? Every modal, every card, every dropdown updates, instantly and uniformly.
Scaling Responsively
Want to go even further? Tokenize for breakpoints too:
@media (max-width: 768px) {
:root {
--space-md: 0.75rem;
--space-lg: 1.5rem;
}
}
This way, you adapt your spacing scale for mobile without rewriting component logic. It’s responsive design with a designer’s mind, and a developer’s efficiency.
Final Thought
I didn’t invent this idea, I adopted it after years of inconsistent UI, repeated CSS audits, and time wasted guessing why a page felt “off.”
Tokens are boring. Until they aren’t. Until they save you hours. Until they become the reason your project actually feels polished, not patched.
Still naming things like .blue-padding-box? Or duplicating the same shadow across ten files? Contact me here and let’s put some structure in place. I’ll help you build a design system that makes sense, and makes money.