> In general, I'm wary of this proliferation of .gray-tags, .full-quote, etc when the purpose is 
> to modify an existing component as it appears > in certain contexts. The context can be
> captured by descendent selectors. It makes the CSS a lot tidier.
> If we need to, we should add classes or ids to the element which encapsulates
> each stream if we need to style their items differently.

Well, despite the admittedly deceptive name, .gray-tags is just what you have described here: a class that is added [to](https://github.com/hypothesis/h/blob/3f4a5e04413114e7733fe0f02fed7d50a8365dcd/h/templates/displayer.pt#L131) [the](https://github.com/hypothesis/h/blob/3f4a5e04413114e7733fe0f02fed7d50a8365dcd/h/templates/tagstream.pt#L82) [elements](https://github.com/hypothesis/h/blob/3f4a5e04413114e7733fe0f02fed7d50a8365dcd/h/templates/userstream.pt#L82) that encapsulate the tags, so that I can set up [descendent selectors](https://github.com/hypothesis/h/blob/3f4a5e04413114e7733fe0f02fed7d50a8365dcd/h/css/common.scss#L1077) for them. 

Obviously, it would have been nicer to use use the class responsible for the gray bg in the descendant selector, but I could not (easily) do it, because there are cases when there is a white div inside the gray div, and so it's not true that every tag that is a descendant of the gray-bg are should be always painted white. That's why I have added the gray classes immediately above the tags that I wanted to style.

The nice way to write those selectors would be like "if it's C in A but not C in B in A". I will need to check whether CSS supports that at this point...