- Selector lists are split, but function arguments are not
- A rule like .a, .b, .c gets one selector per line, so it is clear how many elements are targeted. Commas inside :is(), :where() and :not() are left alone, since those are argument lists rather than separate selectors.
- At-rules are indented as blocks
- Contents of @media, @supports, @layer and @container are indented one level, making the conditional scope visible. Nested at-rules indent further.
- Strings and url() are preserved
- A semicolon or brace inside a quoted string or a url() is content, not syntax. The formatter tracks quote and parenthesis state, so a content property containing "; }" is not mistaken for the end of a declaration.
- Unbalanced braces are reported
- Because an unclosed rule absorbs all following declarations without producing an error, the symptom is usually "my styles stopped working halfway down the file". The brace count tells you immediately whether that is what happened.
- Declarations are not reordered
- Order within a rule is significant in CSS, later declarations win, and shorthand properties reset longhand ones. Nothing is reordered or merged, so the formatted output behaves identically.