/* LogoLabs design system: warm charcoal ramp, one copper accent, Playfair Display +
 * Inter + IBM Plex Mono. Tokens match web/index.html and the design-system zip. */
:root{
  --paper:#1a1816;--card:#211f1c;--stage:#141210;--void:#0c0a09;--surface:#2a2724;--highlight:#35322e;
  --ink:#faf8f5;--dim:rgba(250,248,245,.75);--faint:rgba(250,248,245,.55);--muted:rgba(250,248,245,.4);
  --rule:rgba(250,248,245,.08);--rule2:#2a2724;
  --accent:#c9754a;--accent-hover:#d4896a;--accent-ink:#1a1816;--accent-soft:rgba(201,117,74,.12);
  --gold:#b8976c;--good:#34d399;--bad:#f87171;
  --font-display:"Playfair Display",Georgia,serif;--font-body:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  --font-mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Consolas,monospace;
}
*{box-sizing:border-box}
html{color-scheme:dark}
body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.65 var(--font-body);
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
a{color:var(--accent);text-decoration:none}
a:hover{color:var(--accent-hover)}
::selection{background:rgba(201,117,74,.35)}

/* top bar */
.top{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;
  padding:0 20px;height:56px;background:rgba(26,24,22,.92);backdrop-filter:blur(8px);border-bottom:1px solid var(--rule)}
.brand{display:flex;align-items:center;gap:10px;color:var(--ink)}
.brand img{width:22px;height:22px}
.brand span{font-family:var(--font-display);font-weight:700;font-size:19px;letter-spacing:-.01em}
.toplinks{display:flex;gap:22px;font-size:13.5px;font-weight:500}
.toplinks a{color:var(--dim)}
.toplinks a:hover{color:var(--accent)}

/* shell: sidebar / article / toc rail */
.shell{display:grid;grid-template-columns:240px minmax(0,1fr) 200px;gap:0;max-width:1400px;margin:0 auto}
.side{border-right:1px solid var(--rule);padding:28px 18px 60px 24px;position:sticky;top:56px;
  height:calc(100vh - 56px);overflow-y:auto;scrollbar-width:thin}
.side .grp{margin:0 0 22px}
.side .grp h4{margin:0 0 8px;font:500 10.5px/1 var(--font-mono);letter-spacing:.14em;text-transform:uppercase;
  color:var(--muted)}
.side a{display:block;padding:4px 8px;margin:1px -8px;border-radius:6px;font-size:13.5px;color:var(--faint)}
.side a:hover{color:var(--ink);background:var(--card)}
.side a[aria-current]{color:var(--accent);background:var(--accent-soft)}
.side a .n{font:500 10.5px/1 var(--font-mono);color:var(--muted);margin-right:7px}
.side a[aria-current] .n{color:var(--accent)}

main{padding:44px 48px 90px;min-width:0}
article{max-width:46rem}
article h1,article h2,article h3,article h4{font-family:var(--font-display);font-weight:600;
  letter-spacing:-.01em;line-height:1.2;color:var(--ink);scroll-margin-top:76px}
article h1{font-size:2.1rem;margin:0 0 18px}
article h2{font-size:1.45rem;margin:2.2em 0 .6em;padding-top:.7em;border-top:1px solid var(--rule)}
article h3{font-size:1.12rem;margin:1.8em 0 .5em}
article p{margin:0 0 1em;color:var(--dim)}
article li{color:var(--dim);margin:.3em 0}
article strong{color:var(--ink);font-weight:600}
article hr{border:0;border-top:1px solid var(--rule);margin:2.5em 0}
article img{max-width:100%;border-radius:10px;height:auto}
article a{text-decoration:underline;text-decoration-color:rgba(201,117,74,.35);text-underline-offset:3px}
article a:hover{text-decoration-color:var(--accent)}
.md-anchor{position:relative;top:-70px}

kbd{font-family:var(--font-mono);font-size:.8em;background:var(--surface);color:var(--ink);
  border:1px solid var(--highlight);border-bottom-width:2px;border-radius:5px;padding:.05em .4em;white-space:nowrap}
code{font-family:var(--font-mono);font-size:.86em;background:var(--surface);
  border:1px solid var(--rule);border-radius:5px;padding:.1em .35em;color:var(--ink)}
.codehilite{background:var(--stage)!important;border:1px solid var(--rule);border-radius:10px;
  padding:14px 16px;overflow-x:auto;margin:0 0 1.2em}
.codehilite pre{margin:0;background:transparent!important}
.codehilite code{background:transparent;border:0;padding:0;font-size:13px;line-height:1.6}

table{border-collapse:collapse;width:100%;margin:0 0 1.2em;font-size:14px;display:block;overflow-x:auto}
th,td{border:1px solid var(--rule2);padding:7px 11px;text-align:left;vertical-align:top;color:var(--dim)}
th{background:var(--card);color:var(--ink);font-weight:600;font-size:13px}
tbody tr:nth-child(2n){background:rgba(250,248,245,.02)}
table code{white-space:nowrap}

blockquote{margin:0 0 1.2em;padding:10px 16px;border-left:3px solid var(--accent);
  background:var(--accent-soft);border-radius:0 8px 8px 0}
blockquote p{margin:0 0 .5em;color:var(--ink)}
blockquote p:last-child{margin:0}

.math{overflow-x:auto;overflow-y:hidden;padding:6px 2px;margin:0 0 1.2em}
.katex-display{margin:.4em 0!important}
.katex{color:var(--ink)}

/* per-page toc rail */
.rail{padding:52px 20px 60px 0;position:sticky;top:56px;height:calc(100vh - 56px);overflow-y:auto}
.rail h5{margin:0 0 10px;font:500 10.5px/1 var(--font-mono);letter-spacing:.14em;text-transform:uppercase;
  color:var(--muted)}
.rail ul{list-style:none;margin:0;padding:0}
.rail ul ul{padding-left:12px}
.rail a{display:block;padding:3px 0;font-size:12.5px;color:var(--muted);line-height:1.45}
.rail a:hover{color:var(--accent)}
.rail .l2>a{color:var(--faint)}

/* index hero */
.hero{padding:8px 0 34px;border-bottom:1px solid var(--rule);margin-bottom:34px}
.eyebrow{font:500 11px/1 var(--font-mono);letter-spacing:.22em;color:var(--accent);margin:0 0 14px}
.hero h1{font-family:var(--font-display);font-size:3.4rem;font-weight:700;letter-spacing:-.02em;margin:0 0 14px;line-height:1.05}
.hero .pitch{font-size:1.14rem;color:var(--faint);max-width:34rem;margin:0 0 24px}
.cta{display:flex;gap:12px;flex-wrap:wrap}
.btn{display:inline-block;padding:10px 20px;border-radius:999px;font-size:14px;font-weight:600;
  border:1px solid var(--rule2);color:var(--ink);background:var(--card)}
.btn:hover{border-color:var(--highlight);color:var(--ink)}
.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.btn.primary:hover{background:var(--accent-hover);border-color:var(--accent-hover);color:var(--accent-ink)}
.btn.ghost{background:transparent}

/* pointer to the diagram edition */
.plainlink{margin:-6px 0 1.6em;font-size:14px}
.plainlink a{font-weight:500}

/* the mark before the wordmark in the hero */
.heromark{height:.8em;width:auto;vertical-align:-.08em;margin-right:.22em}

/* about block on the landing page */
.about{margin-top:3.2em;padding-top:1.4em;border-top:1px solid var(--rule)}
.about p{color:var(--faint);max-width:38rem}

/* prev / next */
.pagenav{display:flex;justify-content:space-between;gap:14px;margin-top:3.2em;padding-top:1.2em;
  border-top:1px solid var(--rule)}
.pagenav a{flex:1;border:1px solid var(--rule2);background:var(--card);border-radius:10px;padding:11px 15px;
  text-decoration:none}
.pagenav a:hover{border-color:rgba(201,117,74,.45)}
.pagenav .dir{display:block;font:500 10.5px/1 var(--font-mono);letter-spacing:.12em;color:var(--muted);margin-bottom:4px}
.pagenav .lbl{color:var(--ink);font-weight:600;font-size:14px}
.pagenav .next{text-align:right}

footer{border-top:1px solid var(--rule);padding:26px 24px;display:flex;justify-content:space-between;
  gap:16px;flex-wrap:wrap;font-size:13px;color:var(--muted)}
footer a{color:var(--dim)}
footer a:hover{color:var(--accent)}

@media (max-width:1150px){.rail{display:none}.shell{grid-template-columns:220px minmax(0,1fr)}}
@media (max-width:820px){
  .shell{grid-template-columns:minmax(0,1fr)}
  .side{position:static;height:auto;border-right:0;border-bottom:1px solid var(--rule);padding:18px 24px}
  .side .grp{display:inline-block;vertical-align:top;margin:0 26px 14px 0}
  main{padding:30px 22px 70px}
  .hero h1{font-size:2.5rem}
}

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; }
.codehilite .hll { background-color: #2a2724 }
.codehilite { background: ; color: #FAF8F5 }
.codehilite .c { color: #8A837B; font-style: italic } /* Comment */
.codehilite .err { color: #F87171 } /* Error */
.codehilite .k { color: #C9754A } /* Keyword */
.codehilite .n { color: #FAF8F5 } /* Name */
.codehilite .o { color: #C9754A } /* Operator */
.codehilite .p { color: #BFB9B1 } /* Punctuation */
.codehilite .ch { color: #8A837B; font-style: italic } /* Comment.Hashbang */
.codehilite .cm { color: #8A837B; font-style: italic } /* Comment.Multiline */
.codehilite .cp { color: #8A837B; font-style: italic } /* Comment.Preproc */
.codehilite .cpf { color: #8A837B; font-style: italic } /* Comment.PreprocFile */
.codehilite .c1 { color: #8A837B; font-style: italic } /* Comment.Single */
.codehilite .cs { color: #8A837B; font-style: italic } /* Comment.Special */
.codehilite .gd { color: #F87171 } /* Generic.Deleted */
.codehilite .ge { font-style: italic } /* Generic.Emph */
.codehilite .gi { color: #34D399 } /* Generic.Inserted */
.codehilite .gs { font-weight: bold } /* Generic.Strong */
.codehilite .kc { color: #C9754A } /* Keyword.Constant */
.codehilite .kd { color: #C9754A } /* Keyword.Declaration */
.codehilite .kn { color: #C9754A } /* Keyword.Namespace */
.codehilite .kp { color: #C9754A } /* Keyword.Pseudo */
.codehilite .kr { color: #C9754A } /* Keyword.Reserved */
.codehilite .kt { color: #B8976C } /* Keyword.Type */
.codehilite .m { color: #B8976C } /* Literal.Number */
.codehilite .s { color: #34D399 } /* Literal.String */
.codehilite .na { color: #B8976C } /* Name.Attribute */
.codehilite .nb { color: #B8976C } /* Name.Builtin */
.codehilite .nc { color: #D4896A } /* Name.Class */
.codehilite .no { color: #FAF8F5 } /* Name.Constant */
.codehilite .nd { color: #D4896A } /* Name.Decorator */
.codehilite .ni { color: #FAF8F5 } /* Name.Entity */
.codehilite .ne { color: #FAF8F5 } /* Name.Exception */
.codehilite .nf { color: #D4896A } /* Name.Function */
.codehilite .nl { color: #FAF8F5 } /* Name.Label */
.codehilite .nn { color: #FAF8F5 } /* Name.Namespace */
.codehilite .nx { color: #FAF8F5 } /* Name.Other */
.codehilite .py { color: #FAF8F5 } /* Name.Property */
.codehilite .nt { color: #C9754A } /* Name.Tag */
.codehilite .nv { color: #FAF8F5 } /* Name.Variable */
.codehilite .ow { color: #C9754A } /* Operator.Word */
.codehilite .pm { color: #BFB9B1 } /* Punctuation.Marker */
.codehilite .w { color: #FAF8F5 } /* Text.Whitespace */
.codehilite .mb { color: #B8976C } /* Literal.Number.Bin */
.codehilite .mf { color: #B8976C } /* Literal.Number.Float */
.codehilite .mh { color: #B8976C } /* Literal.Number.Hex */
.codehilite .mi { color: #B8976C } /* Literal.Number.Integer */
.codehilite .mo { color: #B8976C } /* Literal.Number.Oct */
.codehilite .sa { color: #34D399 } /* Literal.String.Affix */
.codehilite .sb { color: #34D399 } /* Literal.String.Backtick */
.codehilite .sc { color: #34D399 } /* Literal.String.Char */
.codehilite .dl { color: #34D399 } /* Literal.String.Delimiter */
.codehilite .sd { color: #34D399 } /* Literal.String.Doc */
.codehilite .s2 { color: #34D399 } /* Literal.String.Double */
.codehilite .se { color: #34D399 } /* Literal.String.Escape */
.codehilite .sh { color: #34D399 } /* Literal.String.Heredoc */
.codehilite .si { color: #34D399 } /* Literal.String.Interpol */
.codehilite .sx { color: #34D399 } /* Literal.String.Other */
.codehilite .sr { color: #34D399 } /* Literal.String.Regex */
.codehilite .s1 { color: #34D399 } /* Literal.String.Single */
.codehilite .ss { color: #34D399 } /* Literal.String.Symbol */
.codehilite .bp { color: #B8976C } /* Name.Builtin.Pseudo */
.codehilite .fm { color: #D4896A } /* Name.Function.Magic */
.codehilite .vc { color: #FAF8F5 } /* Name.Variable.Class */
.codehilite .vg { color: #FAF8F5 } /* Name.Variable.Global */
.codehilite .vi { color: #FAF8F5 } /* Name.Variable.Instance */
.codehilite .vm { color: #FAF8F5 } /* Name.Variable.Magic */
.codehilite .il { color: #B8976C } /* Literal.Number.Integer.Long */
