pre { line-height: 125%; }
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.code .hll { background-color: #ffffcc }
.code { background: #f8f8f8; }
.code .c { color: #3D7B7B; font-style: italic } /* Comment */
.code .err { border: 1px solid #F00 } /* Error */
.code .k { color: #008000; font-weight: bold } /* Keyword */
.code .o { color: #666 } /* Operator */
.code .ch { color: #3D7B7B; font-style: italic } /* Comment.Hashbang */
.code .cm { color: #3D7B7B; font-style: italic } /* Comment.Multiline */
.code .cp { color: #9C6500 } /* Comment.Preproc */
.code .cpf { color: #3D7B7B; font-style: italic } /* Comment.PreprocFile */
.code .c1 { color: #3D7B7B; font-style: italic } /* Comment.Single */
.code .cs { color: #3D7B7B; font-style: italic } /* Comment.Special */
.code .gd { color: #A00000 } /* Generic.Deleted */
.code .ge { font-style: italic } /* Generic.Emph */
.code .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */
.code .gr { color: #E40000 } /* Generic.Error */
.code .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.code .gi { color: #008400 } /* Generic.Inserted */
.code .go { color: #717171 } /* Generic.Output */
.code .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
.code .gs { font-weight: bold } /* Generic.Strong */
.code .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.code .gt { color: #04D } /* Generic.Traceback */
.code .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
.code .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
.code .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
.code .kp { color: #008000 } /* Keyword.Pseudo */
.code .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
.code .kt { color: #B00040 } /* Keyword.Type */
.code .m { color: #666 } /* Literal.Number */
.code .s { color: #BA2121 } /* Literal.String */
.code .na { color: #687822 } /* Name.Attribute */
.code .nb { color: #008000 } /* Name.Builtin */
.code .nc { color: #00F; font-weight: bold } /* Name.Class */
.code .no { color: #800 } /* Name.Constant */
.code .nd { color: #A2F } /* Name.Decorator */
.code .ni { color: #717171; font-weight: bold } /* Name.Entity */
.code .ne { color: #CB3F38; font-weight: bold } /* Name.Exception */
.code .nf { color: #00F } /* Name.Function */
.code .nl { color: #767600 } /* Name.Label */
.code .nn { color: #00F; font-weight: bold } /* Name.Namespace */
.code .nt { color: #008000; font-weight: bold } /* Name.Tag */
.code .nv { color: #19177C } /* Name.Variable */
.code .ow { color: #A2F; font-weight: bold } /* Operator.Word */
.code .w { color: #BBB } /* Text.Whitespace */
.code .mb { color: #666 } /* Literal.Number.Bin */
.code .mf { color: #666 } /* Literal.Number.Float */
.code .mh { color: #666 } /* Literal.Number.Hex */
.code .mi { color: #666 } /* Literal.Number.Integer */
.code .mo { color: #666 } /* Literal.Number.Oct */
.code .sa { color: #BA2121 } /* Literal.String.Affix */
.code .sb { color: #BA2121 } /* Literal.String.Backtick */
.code .sc { color: #BA2121 } /* Literal.String.Char */
.code .dl { color: #BA2121 } /* Literal.String.Delimiter */
.code .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
.code .s2 { color: #BA2121 } /* Literal.String.Double */
.code .se { color: #AA5D1F; font-weight: bold } /* Literal.String.Escape */
.code .sh { color: #BA2121 } /* Literal.String.Heredoc */
.code .si { color: #A45A77; font-weight: bold } /* Literal.String.Interpol */
.code .sx { color: #008000 } /* Literal.String.Other */
.code .sr { color: #A45A77 } /* Literal.String.Regex */
.code .s1 { color: #BA2121 } /* Literal.String.Single */
.code .ss { color: #19177C } /* Literal.String.Symbol */
.code .bp { color: #008000 } /* Name.Builtin.Pseudo */
.code .fm { color: #00F } /* Name.Function.Magic */
.code .vc { color: #19177C } /* Name.Variable.Class */
.code .vg { color: #19177C } /* Name.Variable.Global */
.code .vi { color: #19177C } /* Name.Variable.Instance */
.code .vm { color: #19177C } /* Name.Variable.Magic */
.code .il { color: #666 } /* Literal.Number.Integer.Long */
@media (prefers-color-scheme: dark) {
pre { line-height: 125%; }
td.linenos .normal { color: #6e7681; background-color: #0d1117; padding-left: 5px; padding-right: 5px; }
span.linenos { color: #6e7681; background-color: #0d1117; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #e6edf3; background-color: #6e7681; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #e6edf3; background-color: #6e7681; padding-left: 5px; padding-right: 5px; }
.code .hll { background-color: #6e7681 }
.code { background: #0d1117; color: #E6EDF3 }
.code .c { color: #8B949E; font-style: italic } /* Comment */
.code .err { color: #F85149 } /* Error */
.code .esc { color: #E6EDF3 } /* Escape */
.code .g { color: #E6EDF3 } /* Generic */
.code .k { color: #FF7B72 } /* Keyword */
.code .l { color: #A5D6FF } /* Literal */
.code .n { color: #E6EDF3 } /* Name */
.code .o { color: #FF7B72; font-weight: bold } /* Operator */
.code .x { color: #E6EDF3 } /* Other */
.code .p { color: #E6EDF3 } /* Punctuation */
.code .ch { color: #8B949E; font-style: italic } /* Comment.Hashbang */
.code .cm { color: #8B949E; font-style: italic } /* Comment.Multiline */
.code .cp { color: #8B949E; font-weight: bold; font-style: italic } /* Comment.Preproc */
.code .cpf { color: #8B949E; font-style: italic } /* Comment.PreprocFile */
.code .c1 { color: #8B949E; font-style: italic } /* Comment.Single */
.code .cs { color: #8B949E; font-weight: bold; font-style: italic } /* Comment.Special */
.code .gd { color: #FFA198; background-color: #490202 } /* Generic.Deleted */
.code .ge { color: #E6EDF3; font-style: italic } /* Generic.Emph */
.code .ges { color: #E6EDF3; font-weight: bold; font-style: italic } /* Generic.EmphStrong */
.code .gr { color: #FFA198 } /* Generic.Error */
.code .gh { color: #79C0FF; font-weight: bold } /* Generic.Heading */
.code .gi { color: #56D364; background-color: #0F5323 } /* Generic.Inserted */
.code .go { color: #8B949E } /* Generic.Output */
.code .gp { color: #8B949E } /* Generic.Prompt */
.code .gs { color: #E6EDF3; font-weight: bold } /* Generic.Strong */
.code .gu { color: #79C0FF } /* Generic.Subheading */
.code .gt { color: #FF7B72 } /* Generic.Traceback */
.code .g-Underline { color: #E6EDF3; text-decoration: underline } /* Generic.Underline */
.code .kc { color: #79C0FF } /* Keyword.Constant */
.code .kd { color: #FF7B72 } /* Keyword.Declaration */
.code .kn { color: #FF7B72 } /* Keyword.Namespace */
.code .kp { color: #79C0FF } /* Keyword.Pseudo */
.code .kr { color: #FF7B72 } /* Keyword.Reserved */
.code .kt { color: #FF7B72 } /* Keyword.Type */
.code .ld { color: #79C0FF } /* Literal.Date */
.code .m { color: #A5D6FF } /* Literal.Number */
.code .s { color: #A5D6FF } /* Literal.String */
.code .na { color: #E6EDF3 } /* Name.Attribute */
.code .nb { color: #E6EDF3 } /* Name.Builtin */
.code .nc { color: #F0883E; font-weight: bold } /* Name.Class */
.code .no { color: #79C0FF; font-weight: bold } /* Name.Constant */
.code .nd { color: #D2A8FF; font-weight: bold } /* Name.Decorator */
.code .ni { color: #FFA657 } /* Name.Entity */
.code .ne { color: #F0883E; font-weight: bold } /* Name.Exception */
.code .nf { color: #D2A8FF; font-weight: bold } /* Name.Function */
.code .nl { color: #79C0FF; font-weight: bold } /* Name.Label */
.code .nn { color: #FF7B72 } /* Name.Namespace */
.code .nx { color: #E6EDF3 } /* Name.Other */
.code .py { color: #79C0FF } /* Name.Property */
.code .nt { color: #7EE787 } /* Name.Tag */
.code .nv { color: #79C0FF } /* Name.Variable */
.code .ow { color: #FF7B72; font-weight: bold } /* Operator.Word */
.code .pm { color: #E6EDF3 } /* Punctuation.Marker */
.code .w { color: #6E7681 } /* Text.Whitespace */
.code .mb { color: #A5D6FF } /* Literal.Number.Bin */
.code .mf { color: #A5D6FF } /* Literal.Number.Float */
.code .mh { color: #A5D6FF } /* Literal.Number.Hex */
.code .mi { color: #A5D6FF } /* Literal.Number.Integer */
.code .mo { color: #A5D6FF } /* Literal.Number.Oct */
.code .sa { color: #79C0FF } /* Literal.String.Affix */
.code .sb { color: #A5D6FF } /* Literal.String.Backtick */
.code .sc { color: #A5D6FF } /* Literal.String.Char */
.code .dl { color: #79C0FF } /* Literal.String.Delimiter */
.code .sd { color: #A5D6FF } /* Literal.String.Doc */
.code .s2 { color: #A5D6FF } /* Literal.String.Double */
.code .se { color: #79C0FF } /* Literal.String.Escape */
.code .sh { color: #79C0FF } /* Literal.String.Heredoc */
.code .si { color: #A5D6FF } /* Literal.String.Interpol */
.code .sx { color: #A5D6FF } /* Literal.String.Other */
.code .sr { color: #79C0FF } /* Literal.String.Regex */
.code .s1 { color: #A5D6FF } /* Literal.String.Single */
.code .ss { color: #A5D6FF } /* Literal.String.Symbol */
.code .bp { color: #E6EDF3 } /* Name.Builtin.Pseudo */
.code .fm { color: #D2A8FF; font-weight: bold } /* Name.Function.Magic */
.code .vc { color: #79C0FF } /* Name.Variable.Class */
.code .vg { color: #79C0FF } /* Name.Variable.Global */
.code .vi { color: #79C0FF } /* Name.Variable.Instance */
.code .vm { color: #79C0FF } /* Name.Variable.Magic */
.code .il { color: #A5D6FF } /* Literal.Number.Integer.Long */
}
:root {
  --text: #1f2328; --muted: #59636e; --bg: #fdfdfb; --panel: #f4f3ee;
  --rule: #d8d6cc; --accent: #8a2b1e; --code-bg: #f7f6f1; --link: #1a5fb4;
}
@media (prefers-color-scheme: dark) {
  :root {
    --text: #e6e3da; --muted: #a29f95; --bg: #18191b; --panel: #222326;
    --rule: #3a3b3f; --accent: #e7a08f; --code-bg: #0d1117; --link: #8cb4f0;
  }
}
* { box-sizing: border-box; }
body { margin: 0; background: var(--bg); color: var(--text);
  font: 17px/1.55 Charter, "Bitstream Charter", "Iowan Old Style", Georgia, serif; }
a { color: var(--link); text-decoration: none; }
a:hover { text-decoration: underline; }
header.site { display: flex; flex-wrap: wrap; gap: .4em 1em; align-items: baseline;
  padding: .7em 16px; border-bottom: 1px solid var(--rule); background: var(--panel);
  font-family: system-ui, sans-serif; font-size: 14px; color: var(--muted); }
header.site .home { font-weight: 600; color: var(--accent); font-size: 16px; }
header.site .links { margin-left: auto; }
.layout { display: flex; max-width: 74rem; margin: 0 auto; }
nav.chapters { flex: 0 0 15rem; padding: 1.5em 1em; font: 14px/1.4 system-ui, sans-serif;
  position: sticky; top: 0; align-self: flex-start; max-height: 100vh; overflow-y: auto; }
nav.chapters ol { margin: 0; padding-left: 1.4em; }
nav.chapters li { margin: .35em 0; }
nav.chapters li.current a { color: var(--accent); font-weight: 600; }
main { flex: 1; min-width: 0; max-width: 48rem; padding: 1em 16px 4em; }
h1, h2, h3 { color: var(--accent); line-height: 1.25; font-weight: 600; }
h1 { font-size: 1.8em; }
h2 { font-size: 1.35em; margin-top: 1.8em; }
h3 { font-size: 1.1em; margin-top: 1.5em; }
code { font: .86em/1.4 ui-monospace, "SF Mono", Menlo, Consolas, monospace; }
pre { overflow-x: auto; }
.chunk { margin: 1.2em 0; }
.chunk-name { font: italic 14px/1.4 Charter, Georgia, serif; color: var(--muted); }
.chunk-name a { color: var(--accent); }
pre.code, div.code pre { margin: .25em 0; padding: .6em .8em; background: var(--code-bg);
  border-left: 3px solid var(--rule); font: 13.5px/1.45 ui-monospace, "SF Mono", Menlo, Consolas, monospace; }
div.code { background: none; }
.code a.ref { color: var(--accent); font-family: Charter, Georgia, serif; font-style: italic; }
.undefined { color: #c01c28; font-style: italic; }
.chunk-notes { font: 13px/1.4 system-ui, sans-serif; color: var(--muted); }
table { border-collapse: collapse; margin: 1em 0; font-size: .95em; }
td { border-bottom: 1px solid var(--rule); padding: .3em .7em .3em 0; vertical-align: top; }
tr:first-child td { font-weight: 600; }
blockquote { margin: 1em 0; padding: .2em 1em; border-left: 3px solid var(--rule); color: var(--muted); }
blockquote.alert { border-left: 4px solid #bf8700; background: var(--panel); color: var(--text); }
blockquote.alert > p:first-child::before { content: "Warning. "; font-weight: 600; }
blockquote.note > p:first-child::before { content: "Note. "; }
ul.chunks { padding-left: 1.2em; }
h1 img.symbol { height: 1.1em; width: auto; vertical-align: -0.12em; margin-right: 0.35em; }
header.site img.symbol { height: 1.15em; width: auto; vertical-align: -0.2em; margin-right: 0.4em; }
@media (prefers-color-scheme: dark) { img.symbol { filter: invert(1); } }
nav.turn { display: flex; justify-content: space-between; gap: 1em; margin-top: 3em;
  padding-top: 1em; border-top: 1px solid var(--rule); font: 14px system-ui, sans-serif; }
nav.turn .next { margin-left: auto; text-align: right; }
@media (max-width: 52rem) {
  .layout { display: block; }
  nav.chapters { position: static; max-height: none; border-bottom: 1px solid var(--rule); }
}
