Алгоритм победы стиля
Cascade определяет, какое объявление побеждает при конфликтах. Упрощённо:
- Origin и importance (
user agent < user < author, затем !important в обратном порядке origin);
- Layer (
@layer) — порядок слоёв;
- Specificity селектора;
- Order в исходнике — последнее побеждает при равной специфичности.
Ещё учитываются transitions/animations и scoped стили. Современный каскад сильнее «просто специфичности»: @layer позволяет держать низкую специфичность в утилитах и переопределять в компонентах без гонки !important.
Каскад ≠ наследование: cascade выбирает значение свойства, inheritance передаёт уже выбранное вниз по дереву.