When was the last time a website surprised you? Not with a clever animation or a loading trick, but with something that felt genuinely… alive? Most of what we build now is pristine, predictable, and — let's be honest — a bit boring.
That might be starting to change. And the signal is coming from an unlikely place.
What happened
Two things worth paying attention to this week. First, CSS now has a random() function. It lets you introduce genuine randomness into your layouts, typography, and animations — natively, without JavaScript, without preprocessor hacks. Think slightly varied letter-spacing, cards that splay like a dealt hand, elements that feel organic rather than grid-snapped.
Meanwhile, Sunlife unveiled a stripped-back logo described as "optimised for a digital world," and the reaction has been mixed. The debate isn't really about Sunlife. It's about whether the entire industry's march toward minimal, scalable, characterless design has finally gone too far.
These two stories are pulling in opposite directions. The tension between them is worth sitting with.
The bigger picture
We've spent the last decade building design systems, component libraries, and brand guidelines that prize consistency above almost everything else. And rightly so — consistency is hard-won craft. But somewhere along the way, consistency became sterility.
Look at the logo landscape. Insurance companies, tech startups, food brands — strip away the colour and you'd struggle to tell half of them apart. Every geometric sans-serif wordmark. Every rounded icon. Every "digital-first" rebrand that files away the very details that made a brand recognisable.
Sunlife's new mark is the latest example, but it's not an outlier. It's the logical endpoint of a design philosophy that optimises for scalability and legibility at the expense of personality. Optimised for screens, sure. But optimised for people? That's a different question.
Now look at what CSS is doing. The random() function is a small thing technically, but it's a meaningful signal philosophically. The language of the web itself is saying: not everything has to be pixel-perfect. You can introduce variation. You can let things breathe.
This matters because the most human-feeling designs have always had a degree of controlled imperfection. Hand-lettered type. Slightly uneven spacing. Photography with grain. These things communicate warmth, personality, life. And for years, achieving any of this on the web meant fighting the tools — writing JavaScript, generating hundreds of static values in a preprocessor, or faking it with carefully placed assets.
Now the platform is meeting us halfway.
But here's the part I find most interesting: this isn't chaos vs. order. The random() function works within constraints you define. You set the range. You set the boundaries. The randomness operates inside a system.
That's not the opposite of a design system — it's an evolution of one.
Imagine a component library where cards have subtly varied shadow depths. Where section spacing has a touch of organic rhythm rather than a rigid 8px grid. Where micro-interactions feel slightly different each time, the way real objects behave differently each time you handle them.
None of this means abandoning structure. It means building systems sophisticated enough to accommodate variation. That's harder than enforcing uniformity — which is exactly why it's worth doing.
The Sunlife debate and the CSS random() function are symptoms of the same underlying question: have we optimised the humanity out of digital design?
I think we have, in places. Not everywhere, and not irreversibly. But when a brand's big move is to remove the details that made it distinctive, and when a new CSS feature that enables imperfection feels genuinely refreshing — that's a signal worth reading.
We spent years learning to systematise everything. Maybe the next skill is learning where to let the system loosen its grip.
Tool spotlight
The CSS random() function is worth experimenting with if you do any front-end work. It generates a random value within a range you define, directly in your stylesheet — no JavaScript required. You can use it for subtle typographic variation, organic layouts, playful hover states, or anywhere rigid uniformity feels lifeless. Browser support is still rolling out, so check compatibility before shipping to production. But as a prototyping and exploration tool, it's immediately useful. Start small: try randomising a single property you'd normally hard-code — a rotation, a margin, an opacity — and see how it changes the feel of the page.
Takeaway
Next time you're building a component or refining a brand system, ask yourself: where could a little imperfection make this feel more human? You don't need to make everything random. But if every element on the page is perfectly uniform and every brand mark has been sanded down to the same smooth shape — you might have designed the life right out of it.