CSS tăng không kiểm soát vì hai lý do kỹ thuật: không có scope và không có tín hiệu chết. Chiến lược phải chạm cả hai.
1. Tạo scope thật. Chuyển style sang CSS Modules, utility hoặc quy ước BEM nghiêm ngặt, để mỗi class chỉ thuộc về một component. Khi đó xoá component là xoá được style, việc "dám xoá" mới thành có căn cứ.
2. Dựng trật tự cascade bằng @layer (reset, vendor, components, utilities) để không ai cần leo thang specificity. Đặt ngưỡng trong lint: cấm !important, cấm selector có #id, giới hạn độ sâu lồng nhau — stylelint bắt được cả ba.
3. Chuẩn hoá giá trị thành token. Mọi màu, spacing, radius, shadow đi qua custom property. CSS phình phần lớn vì cùng một ý được viết lại với giá trị lệch nhau vài pixel.
4. Đo thay vì đoán.
- Coverage panel trong DevTools cho tỉ lệ CSS không dùng trên các route chính.
- Theo dõi kích thước file CSS trong CI, đặt budget và fail build khi vượt.
- Trước khi xoá hàng loạt, grep tên class trên toàn repo kể cả template và chuỗi ghép động; đây là chỗ công cụ tự động hay xoá nhầm.
5. Chia nhỏ theo route. Tách CSS theo trang/feature để phần dùng chung thật sự nhỏ, giảm cả byte tải lẫn phạm vi rủi ro khi sửa.
Về xoá dead CSS tự động: công cụ kiểu PurgeCSS chỉ an toàn khi class được viết tĩnh trong source. Class ghép động ('btn-' + variant) sẽ bị cắt nhầm — phải khai báo safelist hoặc đổi sang viết đủ tên class trong code.