리셋 CSS, 디자인 시스템, 컴포넌트, 유틸리티 클래스가 한 프로젝트에 섞이면 특이도 싸움이 벌어집니다. 유틸리티 클래스 `.text-red`가 컴포넌트의 `.card .title`을 이기게 하려고 `!important`를 붙이거나 선택자를 일부러 복잡하게 만드는 임시방편이 흔했습니다.
`@layer reset, base, components, utilities;`로 순서를 먼저 선언하면, 그 뒤로는 각 층 안의 선택자가 아무리 특이도가 낮아도 나중 층이 이전 층을 이깁니다 — 특이도 계산은 레이어 안에서만 일어나고, 레이어 간 우선순위는 오직 선언 순서로 정해집니다. Tailwind 같은 유틸리티 프레임워크도 내부적으로 레이어를 씁니다.
기본 지원은 caniuse/MDN baseline을 확인하세요. 미지원 브라우저에서는 지금까지처럼 CSS 파일을 로드 순서로 관리하고 특이도를 신중히 설계하는 것이 유일한 대안입니다.
언제 쓰나
리셋·디자인 시스템·유틸리티 클래스가 섞인 대규모 프로젝트에서 `!important` 없이 우선순위를 정할 때.