/* The book's syntax colors, for the listings Prism marks up.
 *
 * Prism's own stylesheet is not loaded. That is the whole design: a token this
 * file says nothing about inherits the surrounding text color, so the default
 * is "not colored" and every color below is a decision rather than something
 * a third-party theme decided for us. Prism recognizes a dozen more kinds --
 * number, operator, punctuation, function, class-name -- and all of them stay
 * in the body color on purpose. Code that is evenly colored everywhere is
 * evenly emphasised nowhere.
 *
 * Red is missing on purpose. In these pages #9e2b25 means "this line is the
 * bug", set by hand in the prose snippets. A theme that spends red on string
 * literals would take that word out of the book's vocabulary.
 *
 * The four that are here are the ones that carry structure rather than detail:
 * what is prose (comment), what is data (string), what is control (keyword),
 * and what happens before the compiler proper (preprocessor). */

.token.comment {
  color: var(--book-muted, #686254);
}

.token.string,
.token.char {
  color: #2f6b4f;
}

.token.keyword {
  color: #2b4a7a;
}

/* A preprocessor line is one gesture, so it takes one color. Prism nests
 * tokens inside it -- the <stdio.h> of an #include parses as a string, the
 * name as macro-name -- and without the descendant rule the line would come
 * out in three colors. */
.token.macro,
.token.macro * {
  color: #795e30;
}
