Andrei is right. My pure css is also a lot simpler. Also move logical. No "if" this then make a "tr" or "td", etc. Also I think your comment of more predictable may not be that objective. CSS should be more predictable, since its one of reason why we have CSS. Needs unlearning, in fact even now I am still on trial and basis with css. Hehehe.
The form I made, the errors a summarized above. And elements with errors are just now highlighted. This is more logical and seems to be used by others too. Also comes will nice icons too :) You might think that that has nothing to do with css. But it does, because all the layout and even the icons are on .css file only. That means that I can change the style on the css only.
Its nice and spiffy. But I think the best benefit is clean html. Also adp and html code can be done without breaking the tag nesting. How many times have we seen a if putting out the other pair of a tag. "if" is a tag too. So therefore it should logically not break the nesting.
BUT I am not saying we go pure css. My opinion is to move to that direction and just have older browser degrade their display. Even to the point of still using some simple table for layout.
Isn't this tip and Don's other tip is almost similar?