Earn its place

Every name, every file, every layer has to justify itself against the one beneath it. The test is simple: does it add meaning, or only a synonym? A role that points at a primitive and renames it — blue to brand-blue to button-blue — is indirection wearing a layer's clothes. Three names, one idea, no decision recorded.

A name earns its place when the mapping is a decision that could diverge, not merely when the value differs today. --color-accent: blue-600 earns it: the accent could become any colour, and the role marks where that choice lives. --color-button-blue: blue-600 doesn't: it's the same fact said twice, and the second saying can only ever drift from the first.

The same rule governs files. Splitting a stylesheet into thirty fragments isn't tidiness if twenty-nine of them hold a single selector — you've traded a long file you can read for a directory you assemble in your head. Size is a hint, never the judge. A file earns its place the way a role does: by holding an idea the others don't.

So the discipline runs both ways. Add a layer when something real needs it — a second presentation, a forced-colours mode, a component that genuinely recurs. Don't add one in advance, on the theory that you might. Most speculative roles are never spent; they sit there, a vocabulary nobody speaks, drift waiting to happen.