Add hook for callers to run their own tests against attributes.
Expand :is/:where lowering.
Codestyle: remove unnecessary parens.
Move :root handling into interpretor.
Start testing counters implementations, fix syntactic shorthand lowering for counter[s]() functions.
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.
Optimize: use HashMap.Lazy for cascade.
Improve documentation, release version 1.2
Write reference documentation.
Test rules capturing of ConditionalStyleSheet.
Code cleanliness: drop unneeded ' from Data.CSS.Style.Cascade.dispatch'
Implement var() via a PropertyParser decorator.
Expose hooks for implementing var().
The tricky part here is around CSS inheritance, it works naturally in the existing cascade implementation.