Test counters() handling against longhand rather than shorthand. Because that's where it'll be passed
Start testing counters implementations, fix syntactic shorthand lowering for counter[s]() functions.
Release new Haskell Stylist & XML Conduit Stylist! XML Conduit Stylist changed to abstract away Haskell Stylist's breaking datastructure changes.
Correct pseudoclass to pseudoelement rewrites to apply to only rightmost selector. I previously got the semantics of my datastructures backwards: the head is the rightmost selector.
Remove preceding whitespace from all CSS at-rules.
Lower psuedoclasses & namespaces throughout CSS selectors. Previously I just applied to them to the rightmost.
Rewrite parsed namespaces according to @namespace rules.
Evaluate attribute namespace selectors.
Parse namespace selectors.
Rewrite trivial cases of :where & :is. This is mostly for the psuedoselector rewrites performed in Data.CSS.Preprocessor.PsuedoClasses
Compute correct specificity for :is() & :not() pseudoclasses.
Implement :nth-child() & :nth-of-type(). I don't think I'll implement :nth-last-child() & :nth-last-of-type() until I'm shown their value, Haskell Stylist doesn't yet have access to the data to support them.
Implement :is, :where, & :not functional pseudoclasses. This is needed by some of the lowerings for other pseudoclasses. TODO correctly compute specificity.
Prepare to interpret functional pseudoclasses.
Correct legacy :before/:after syntax.
Support lowering single-arg psuedoclasses.
Implement psuedoclass rewrite rules.
Substitute in counters for any CSS textual property, not just `content`. Will be required by Rhapsode for navigational markers.
Implement style tree flattening utility. This will be useful in Rhapsode for making sure voice synthesizers continue to have full voice features information as the user jumps around the document. And it will be useful for visual browsers in transitioning from layout to render.
Implement whitespace collapse, togglable via white-space: pre/normal;