It turns out my original proposal for #20 was correct, but not for the
reasons I thought. We need to set both `background-color` and `color` to
`initial` on `div.highlight pre` because that's where Chroma sets those
colors (including the default `color` if configured). Setting to
`initial` there makes it so that if the selected style *doesn't*
configure a default color, we'll use the `initial` color, which is going
to be the right choice because the reason style author left that unset
because they didn't consider dark color schemes messing with their
style. Then we `unset` the colors on `div.highlight code` because
otherwise the `code` colors from the theme will override the colors that
would otherwise be inherited from Chroma's `<pre>` element.
Stricly speaking I can't say that setting `background-color` to
`initial` is required, because I haven't found a Chroma style that
*doesn't* set a `background-color`, but I figure it's possible (at least
for a light theme) and it makes sense to fix it just in case, and causes
no harm otherwise.
Chroma sets `color` (usually) and `background-color` directly on a
`<pre>` element under a `<div class="highlight">` but the theme was
interfering with those color settings from both the `code` and `pre
code` selectors. Since Chroma highlighting is under a `highlight` class
we can `unset` the colors that are set by the `code` selector elsewhere,
so that under a `<code>` element that's under a `<div
class="highlight">` it will just inherit from the `<pre>` above it where
Chroma sets all it's colors.
The `color: initial;` instead of `color: unset;` is needed because some
Chroma styles don't set a default text color, and if you use `unset`
instead that lets the browser use a lighter default text color when
using a dark color scheme.
That's a sort of long winded way of saying that I think I've fixed the
color interference problem in a way that won't mess with anything else
in the theme. I've tested this on a wide selection of Chroma styles,
with both light and dark color schemes and it seems to work correctly in
all cases. Which is to say that Chroma appears to have full control of
both `color` and `background-color` for code blocks that it's
highlighting.
Fixes#19