:root { --fg: #1b1b1b; --bg: #fffdf8; --accent: #1f4e79; --code-bg: #f3f1ea; --rule: #d8d4c8; color-scheme: light; }
/* Dark colors: by system preference unless the reader chose light, or by the
   reader's choice (data-theme is set by site.js; the single-file HTML has no
   switch and follows the system). */
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) { --fg: #e6e2d8; --bg: #15171a; --accent: #8fb4e0; --code-bg: #1f2227; --rule: #3a3d44; color-scheme: dark; } }
:root[data-theme="dark"] { --fg: #e6e2d8; --bg: #15171a; --accent: #8fb4e0; --code-bg: #1f2227; --rule: #3a3d44; color-scheme: dark; }
html { font-size: 17px; }
body { max-width: 46rem; margin: 0 auto; padding: 1.5rem 1rem 4rem; color: var(--fg); background: var(--bg); font-family: Georgia, "DejaVu Serif", serif; line-height: 1.55; }
h1, h2, h3, h4 { font-family: "Helvetica Neue", Arial, sans-serif; color: var(--accent); line-height: 1.2; }
h1 { font-size: 2rem; margin-top: 3rem; border-bottom: 2px solid var(--rule); padding-bottom: .3rem; }
h1.part { font-size: 1.1rem; letter-spacing: .15em; text-transform: uppercase; border: none; color: var(--fg); opacity: .7; margin-top: 4rem; }
h2 { font-size: 1.45rem; margin-top: 2.2rem; }
h3 { font-size: 1.15rem; margin-top: 1.6rem; }
code, pre { font-family: "DejaVu Sans Mono", Menlo, Consolas, monospace; font-size: .86em; }
pre { background: var(--code-bg); padding: .8rem 1rem; overflow-x: auto; border-left: 3px solid var(--rule); line-height: 1.35; }
code { background: var(--code-bg); padding: .05em .3em; border-radius: 3px; }
pre code { background: none; padding: 0; }
img { max-width: 100%; height: auto; display: block; margin: 1rem auto; }
figure { margin: 1.5rem 0; text-align: center; }
figcaption { font-size: .9rem; opacity: .8; }
table { border-collapse: collapse; margin: 1rem 0; font-size: .95em; }
th, td { border: 1px solid var(--rule); padding: .3rem .6rem; text-align: left; vertical-align: top; }
.example, .exercise { border-left: 3px solid var(--accent); padding: .1rem 0 .1rem 1rem; margin: 1rem 0; }
blockquote { border-left: 3px solid var(--rule); margin-left: 0; padding-left: 1rem; opacity: .9; }
#TOC { font-size: .95em; } #TOC ul { list-style: none; padding-left: 1rem; }
.footnotes { font-size: .9em; }
a { color: var(--accent); }
