Repeating selectors that belong to the same component — `.card .title`, `.card:hover`, `.card .body` — is exactly what Sass/Less have solved for years. Projects sticking to plain CSS had no choice but to live with the repetition.
Native nesting lets you write rules inside rules: `.card { .title { ... } &:hover { ... } }`. `&` refers to the parent selector, and omitting a combinator implies a descendant selector automatically. Behavior isn't 100% identical to Sass nesting — specificity calculation for nested rules that don't start with `&` differs — so it's worth diffing the compiled CSS once when migrating.
Check caniuse/MDN baseline for support. Where it's missing, precompiling to flat CSS at build time with Sass/PostCSS remains the standard fallback.
When to use
Writing component-scoped CSS concisely without a preprocessor, or removing a build step.