Applicable declarations management.
Stores the source order of a block, the cascade level it belongs to, and the counter needed to handle Shadow DOM cascade order properly.
A property declaration together with its precedence among rules of equal specificity so that we can sort them.
We pack the cascade level in a single byte, see CascadeLevel::to_byte_lossy for the different trade-offs there.
Blink uses 18 bits to store source order, and does not check overflow . That’s a limit that could be reached in realistic webpages, so we use 24 bits and enforce defined behavior in the overflow case.
List of applicable declarations. This is a transient structure that shuttles declarations between selector matching and inserting into the rule tree, and therefore we want to avoid heap-allocation where possible.