@GordonBrune I undestand that rules in the body rule-set apply to everything, but I thought that conflicting rules would override the body rule.
I have added a color:green; rule to the body rule-set. That makes the heading turn green, but the paragraph is still blue because the color:blueviolet rule in the paragraph rule-set overrides the rule in the body rule-set.
You have apparently found an exception to the rule that I didn’t even know about … but … according to css rules (this one being fairly obscure), …
Text decorations are drawn across descendant text elements. This means that if an element specifies a text decoration, then a child element can’t remove the decoration. For example, in the markup <p>This text has <em>some emphasized words</em> in it.</p> , the style rule p { text-decoration: underline; } would cause the entire paragraph to be underlined. The style rule em { text-decoration: none; } would not cause any change; the entire paragraph would still be underlined.
This comes from the official web docs issued by the html5 authors … Why normal precedence doesn’t work with text-decoration is another question … it kind of doesn’t make sense, but it is “the rules”.