I’ve been writing CSS since float-based layouts, and the current era is the kindest one yet. Container queries, subgrid, color-mix, :has() — the language can do nearly everything the framework community spent a decade replicating.
The interesting tension is no longer ‘how do we lay this out?’ It’s ‘how do we keep the design system from drifting?’ A few things I lean on now:
- A single layer of design tokens, not three.
- One typography scale, not three.
- Use cases, not components, until the same case shows up three times.
The pattern that broke me out of utility-first dogma was finally trusting custom properties. They compose; they cascade; they survive refactors.