
:root { --bg:#fbfbf8; --fg:#1d1f21; --muted:#5f6368; --line:#e3e3dc; --accent:#1f5fa8; --code:#f3f3ee;
        --hl:#fff4c2; --tag:#eef3fa; --q:#fdf3e7; }
@media (prefers-color-scheme: dark) { :root { --bg:#16181b; --fg:#e4e4e0; --muted:#a0a4a8; --line:#2c3035;
        --accent:#8ab4f8; --code:#1e2125; --hl:#3a3420; --tag:#1f2733; --q:#2b241c; } }
* { box-sizing: border-box; }
body { margin:0; background:var(--bg); color:var(--fg); font:16px/1.55 -apple-system, "Segoe UI", Roboto,
       "Helvetica Neue", Arial, sans-serif; }
header.top { padding:12px 24px; border-bottom:1px solid var(--line); display:flex; gap:16px; align-items:baseline;
             flex-wrap:wrap; }
header.top a { color:var(--accent); text-decoration:none; }
main { max-width:1100px; margin:0 auto; padding:16px 24px 64px; }
a { color:var(--accent); }
h1 { font-size:1.6rem; margin:.4em 0; word-break:break-all; }
h2 { font-size:1.25rem; margin-top:2em; border-bottom:1px solid var(--line); padding-bottom:.2em; }
h3 { font-size:1.05rem; margin:0; font-family: ui-monospace, Menlo, Consolas, monospace; word-break:break-all; }
.muted { color:var(--muted); }
.kind { font:600 .75rem/1 sans-serif; text-transform:uppercase; letter-spacing:.04em; background:var(--tag);
        border-radius:4px; padding:3px 6px; margin-right:6px; color:var(--muted); vertical-align:2px; }
section.def { border:1px solid var(--line); border-radius:8px; padding:12px 16px; margin:14px 0; scroll-margin-top:12px; }
section.def:target { box-shadow:0 0 0 3px var(--hl); }
.bk-results { color:#b3261e; } .bk-output { color:#9a6700; } .bk-fragile { color:var(--muted); } .bk-kc { color:#1e7a34; }
.bk-zero { color:var(--muted); opacity:.6; }
h3.bug { font:600 1.02rem/1.4 -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; word-break:normal;
         margin:1.4em 0 .4em; scroll-margin-top:12px; }
section.bug:target h3.bug { background:var(--hl); }
.diff-file { font-size:.86rem; margin:.6em 0 -.2em; color:var(--muted); }
.diff-file .other { color:#9a6700; font-weight:600; }
pre.diff .add { background:#e6ffec; display:inline-block; min-width:100%; }
pre.diff .del { background:#ffebe9; display:inline-block; min-width:100%; }
pre.diff .hunk { color:var(--muted); }
pre.diff .add .dw { background:#abf2bc; } pre.diff .del .dw { background:#ffc1c0; }
@media (prefers-color-scheme: dark) { pre.diff .add { background:#12331d; } pre.diff .del { background:#3d1a1a; }
  pre.diff .add .dw { background:#1f6b35; } pre.diff .del .dw { background:#7a2a2a; }
  .diff-file .other { color:#fdd663; } }
@media (prefers-color-scheme: dark) { .bk-results { color:#f28b82; } .bk-output { color:#fdd663; } .bk-kc { color:#81c995; } }
pre, code { font-family: ui-monospace, Menlo, Consolas, monospace; font-size:.86rem; }
pre { background:var(--code); padding:10px 12px; border-radius:6px; overflow-x:auto; white-space:pre; }
pre.doc { white-space:pre-wrap; }
pre.src { line-height:1.4; }
pre.src .ln { color:var(--muted); user-select:none; display:inline-block; min-width:4.5ch; text-align:right;
              margin-right:1.2ch; }
pre.src a { text-decoration:underline dotted; }
ul.calls { margin:.3em 0; padding-left:1.2em; }
ul.calls li { margin:.1em 0; }
details > summary { cursor:pointer; color:var(--accent); margin:.4em 0; }
details.review > summary { font-size:1.2em; font-weight:600; margin-top:1.6em; }
table { border-collapse:collapse; width:100%; font-size:.92rem; }
td, th { border-bottom:1px solid var(--line); padding:4px 8px; text-align:left; vertical-align:top; }
td { overflow-wrap:anywhere; }  /* long file patterns in code would otherwise push a table past the page */
.notes { padding:0; }  /* plain text: boxes only for questions, code, and folds (KC, Nov 9, 2026) */
:not(pre) > code { background:var(--code); border:1px solid var(--line); border-radius:4px; padding:0 .3em;
                   font-size:.84rem; }
a > code { color:inherit; }
.hk { color:#a626a4; font-weight:600; } .hc { color:#6a737d; font-style:italic; } .hs { color:#22863a; }
.hn { color:#b35900; } .hb { color:#0b6bcb; }
@media (prefers-color-scheme: dark) { .hk { color:#d19ae6; } .hc { color:#8b949e; } .hs { color:#98c379; }
  .hn { color:#e5a560; } .hb { color:#61afef; } }
.placeholder { color:var(--muted); font-style:italic; }
.tree ul { list-style:none; padding-left:1.2em; margin:.2em 0; }
.tree > ul { padding-left:0; }
.toc { columns: 2 320px; }
.toc li { break-inside: avoid; }
.banner { padding:8px 24px; background:var(--hl); border-bottom:1px solid var(--line); font-size:.92rem; }
details.py > summary { font-weight:600; }
details.vars { margin:.6em 0 1em; } details.vars p { margin:.3em 0; line-height:1.9; }
dl.glossary dt { margin-top:.8em; font-weight:600; } dl.glossary dd { margin:.2em 0 0 1.5em; }
header.top a.gl-link { margin-left:auto; }
a.term { color:inherit; text-decoration:underline dotted var(--accent); text-decoration-thickness:2px; text-underline-offset:4px; }
html.term-popups a.term { cursor:help; }
a.term:hover, a.term:focus { color:var(--accent); }
.term-pop { position:absolute; z-index:20; background:var(--bg); color:var(--fg); border:1px solid var(--line);
            border-radius:6px; padding:10px 12px; box-shadow:0 4px 16px rgba(0,0,0,.18); font-size:.92rem; line-height:1.45; }
.term-pop[hidden] { display:none; }
.term-pop-actions { display:flex; gap:12px; margin-top:6px; font-size:.85rem; }
.term-pop-actions button { background:none; border:0; padding:0; color:var(--accent); cursor:pointer; font:inherit; }
.term-toggle { font-size:.9rem; color:var(--muted); margin:.3em 0; }
@media print { .term-pop { display:none !important; } }
pre.src .line.hl { background:var(--hl); display:inline-block; min-width:100%; }
a.gh { font-size:.72em; text-decoration:none; vertical-align:super; margin-left:1px; }
aside.question { border-left:4px solid #d9822b; background:var(--q); padding:2px 14px; margin:.9em 0; border-radius:4px;
                 scroll-margin-top:12px; }
aside.question:target { box-shadow:0 0 0 3px var(--hl); }
ol.qlist li { margin:.15em 0; }
.outline .seq { display:flex; flex-wrap:wrap; align-items:center; row-gap:6px; margin:.3em 0; }
.outline .arrow { color:var(--muted); margin:0 .45em; }
.outline .call { font-family:ui-monospace, Menlo, Consolas, monospace; font-size:.86rem; background:var(--code);
                 border-radius:4px; padding:1px 6px; white-space:nowrap; }
.outline .call a.at { color:var(--muted); font-size:.75em; margin-left:3px; text-decoration:none; vertical-align:sub; }
.outline .cond { color:var(--muted); font-size:.85em; }
.outline .box { border:1px solid var(--line); border-radius:6px; padding:3px 10px 5px; margin:.4em 0; }
.outline .box > .lbl { font-size:.85rem; color:var(--muted); font-family:ui-monospace, Menlo, Consolas, monospace; }
header.top img.logo { width:24px; height:24px; align-self:center; margin-right:-6px; }
/* the two-column file page (KC, Nov 9, 2026): outline | text | code, the outline and the code kept in view */
.page { display:grid; grid-template-columns:190px minmax(0, 1fr) minmax(0, 1fr); gap:0 24px; padding:0 20px; }
.page.toc-hidden { grid-template-columns:70px minmax(0, 1fr) minmax(0, 1fr); }
.page.home { grid-template-columns:190px minmax(0, 1100px); } .page.home.toc-hidden { grid-template-columns:70px minmax(0, 1100px); }
details.topic { margin:.2em 0 1em; } details.topic > summary { font-size:.9rem; }
table.topic { margin:.4em 0 1.2em; width:auto; } table.topic th, table.topic td { padding:2px 10px 2px 0; } table.topic th { cursor:pointer; } table.topic.files td:nth-child(n+3), table.topic.files th:nth-child(n+3) { text-align:right; }
a.topic-bugs { font-size:.9em; white-space:nowrap; }
.page main.textcol { max-width:none; margin:0; padding:12px 0 64px; min-width:0; }
.page section.def { border:0; padding:0; margin:1em 0; }
nav.toc { columns:auto; position:sticky; top:0; align-self:start; max-height:100vh; overflow-y:auto; overflow-x:hidden; padding:16px 12px 16px 0;
          border-right:1px solid var(--line); font-size:.88rem; line-height:1.4; }
nav.toc .toc-head { display:flex; justify-content:space-between; align-items:baseline; gap:8px; }
nav.toc .toc-title { font-weight:600; }
nav.toc .toc-toggle { font:inherit; font-size:.82rem; color:var(--accent); background:none; border:0; padding:0; cursor:pointer; }
nav.toc .toc-toggle::before { content:"["; color:var(--muted); } nav.toc .toc-toggle::after { content:"]"; color:var(--muted); }
nav.toc ol { list-style:none; margin:6px 0 0; padding:0; } nav.toc ol ol { margin:2px 0 2px .9em; }
nav.toc li { margin:3px 0; overflow-wrap:anywhere; } nav.toc a { text-decoration:none; } nav.toc a.toc-current { color:var(--fg); font-weight:600; }
.page.toc-hidden nav.toc > ol, .page.toc-hidden nav.toc .toc-title { display:none; }
aside.codecol { position:sticky; top:0; align-self:start; height:100vh; display:flex; flex-direction:column;
                padding-top:12px; min-width:0; }
.codebar { display:flex; gap:12px; align-items:center; flex-wrap:wrap; padding-bottom:6px; font-size:.88rem; }
.codebar .sw { display:inline-flex; border:1px solid var(--line); border-radius:6px; overflow:hidden; }
.codebar .sw button { font:inherit; background:var(--bg); color:var(--fg); border:0; padding:3px 10px; cursor:pointer; }
aside.codecol[data-view='f'] .view-sw button[data-view='f'], aside.codecol[data-view='p'] .view-sw button[data-view='p'],
aside.codecol[data-raw='0'] .raw-sw button[data-raw='0'], aside.codecol[data-raw='1'] .raw-sw button[data-raw='1']
  { background:var(--accent); color:var(--bg); }
aside.codecol[data-view='p'] .raw-sw { visibility:hidden; }
.codebar a.ghl { margin-left:auto; }
.panes { position:relative; flex:1; overflow:auto; border:1px solid var(--line); border-radius:6px; background:var(--code); }
.panes pre.src { margin:0; border-radius:0; overflow:visible; }
aside.codecol[data-view='f'] .pane.p, aside.codecol[data-view='p'] .pane.f { display:none; }
aside.codecol[data-raw='0'] .lr, aside.codecol[data-raw='1'] .lt { display:none; }
pre.src .line.warn .ln { color:#c0392b; font-weight:700; }
pre.src .line.warn .ln::after { content:"▲"; font-size:.6em; vertical-align:super; margin-left:1px; }
pre.src a.fl { color:inherit; text-decoration:underline dotted var(--accent); }
h3.sec { font-family:inherit; font-size:1.05rem; margin:1.1em 0 .4em; }
@media (max-width:1100px) {
  .page, .page.toc-hidden { grid-template-columns:minmax(0, 1fr); padding:0 16px; }
  nav.toc { position:static; max-height:none; border-right:0; border:1px solid var(--line); border-radius:8px;
            padding:8px 12px; margin-top:12px; }
  aside.codecol { position:static; height:auto; } .panes { max-height:75vh; }
}
