Cascade layers

Every site gets one stylesheet, concatenated in Go in a fixed order:

@layer reset, tokens, brand, layout, components, site;

Because the builder writes both the @layer statement and the blocks that follow it, layer order cannot drift. That is the whole reason this project does not use a JavaScript bundler: esbuild cannot order @layer correctly and errors on @import ... layer().

The practical consequence: a site’s own CSS is always in the last layer, so it wins over the theme without a single !important.

Back to the index