01 Languages & frameworks

CSS

Modern CSS does what a build step used to, which means one fewer thing between you and the page.

Role
Styling
Licence
Open standard
Since
1996
Upstream
Project site ↗

CSS is on this list as a deliberate statement rather than a formality. We write it directly, and we do not reach for a framework to do it.

Why we still choose it, plainly

Because the language grew up. Custom properties made design tokens native, so a palette lives in one place and themes without a rebuild. Grid and flexbox replaced a decade of layout workarounds. clamp() made fluid typography a one-liner. Container queries, :has(), cascade layers and nesting have absorbed most of what a preprocessor was for.

The practical result is that a bespoke stylesheet is now smaller and clearer than the configuration file for a framework that generates one. This site’s entire design system — light and dark themes, the type scale, the grid, every component — is around 30 kB of CSS with no runtime and no utility classes in the markup.

How we write it

Tokens on :root, a handful of layout primitives, and components named after what they are. Sass survives only for file organisation and nesting; nothing we write depends on it. Dark mode is a token redefinition rather than a parallel stylesheet, and the markup stays readable, because HTML that describes its content outlives HTML that describes its appearance.

The honest limit

Writing CSS well requires someone who knows CSS well, and a utility framework genuinely does help a team without that person hold a large codebase together. We are making a trade: more skill required, far less machinery, and a stylesheet that will still make sense to whoever inherits it.

Nästa steg

Tell us what you are running.
We will tell you what it should be.

A first conversation costs nothing and takes forty minutes. You will leave it with an honest opinion about your stack — including, occasionally, that you should change nothing at all.