Nesting
CSS rules can nest inside other rules, natively.
Delete: the build step that exists only to expand nesting. The source stays as written.
One seam. A nested rule resolves the way :is() does: & takes the specificity of the most specific selector in the parent list. A preprocessor expands the same source into a plain selector list, where each branch keeps its own.
#a, b {
& c { color: blue; } /* & is [1,0,0] for both, so [1,0,1] */
}
/* Your build step expanded that to: */
#a c { } /* [1,0,1], same */
b c { } /* [0,0,2], weaker than the native version */The two agree until a parent selector list mixes specificity levels. Before switching, search your source for comma-separated parent selectors containing an ID.