Qué resuelve cada selector funcional
Usa cada uno con intención: agrupar, resetear especificidad o excluir.
:is() simplifica listas repetidas. En lugar de escribir header a, main a, footer a, puedes escribir :is(header, main, footer) a.
:where() tiene especificidad 0, ideal para estilos base que no deben competir con clases de componentes.
:not() evita ramas duplicadas cuando quieres aplicar una regla general excepto unos pocos casos.
:is(): agrupa sin repetir prefijos.:where(): base fácil de sobrescribir.:not(): exclusión explícita y mantenible.
:is(header, main, footer) a {
color: #1d4ed8;
}
:where(article, section) h2 {
margin-top: 0;
}
.button:not(.button--primary, .button--danger) {
background: #e2e8f0;
color: #0f172a;
}