Селектор :has(): «родитель с потомком» без JavaScript

:has() — «родительский» селектор: например, .card:has(.error) подсвечивает карточку при невалидном поле внутри.
Производительность: браузер пересчитывает селектор при изменении DOM — не вешайте тяжёлые :has(*) на body.
- [:has() — MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/:has) — Синтаксис и поддержка.
- [The :has() selector — web.dev](https://web.dev/articles/css-has) — Практические примеры.
---
## Паттерны
Комбинируйте с :not(:has(img)) для placeholder-состояния каталога.
Для логики бизнес-правил по-прежнему нужен JS — :has() только для визуала.
