Hmm, this is interesting… Originally, I thought that Mozilla’s CSS error parsing was at fault, but discussing it with JesseR, extending the test case, and looking at how CSS2 blocks are defined, it appears that because blocks can be nested, Mozilla’s parsing is correct and the W3C CSS Validator is wrong.

If declaration blocks can be nested, then this:


a { foo:bar; }

b { baz:qux;

c { quux:quuux; }

d { quuuux:quuuux; }

should evaluate to:


/* Mozilla's result */

a { foo:bar; }

b { baz:qux; }

and NOT:


/* W3C css validator */

a { foo:bar; }

b { baz:qux; }

d { quuuux:quuuux; }