/* ai-frontier — reading surface for the notebooks.

   Colour tokens, the dark band, and the theme toggle are lifted verbatim from
   knewman23.github.io/styles.css so the two sites are one system. Typography
   diverges on purpose: this site carries long technical prose, so body copy is
   serif at a fixed measure. */

/* Self-hosted, the same files knewman23.github.io serves, so headings and
   labels render in Space Grotesk and Plex Mono here too instead of silently
   falling back to system-ui. */
@font-face {
  font-family: "Space Grotesk";
  src: url("fonts/space-grotesk-var.woff2") format("woff2-variations");
  font-weight: 300 700; font-style: normal; font-display: swap;
}
@font-face { font-family:"IBM Plex Mono"; src:url("fonts/plex-mono-400.woff2") format("woff2"); font-weight:400; font-style:normal; font-display:swap; }
@font-face { font-family:"IBM Plex Mono"; src:url("fonts/plex-mono-500.woff2") format("woff2"); font-weight:500; font-style:normal; font-display:swap; }
@font-face { font-family:"IBM Plex Mono"; src:url("fonts/plex-mono-600.woff2") format("woff2"); font-weight:600; font-style:normal; font-display:swap; }

:root {
  color-scheme: light;
  --bg:      #fbfbf9;
  --card:    #ffffff;
  --sunken:  #f5f5f2;
  --ink:     #0e0f11;
  --ink-2:   #2c2e33;
  --soft:    #5c5f67;
  --faint:   #71747c;
  --line:    #e2e2df;
  --line-2:  #cfcfcb;
  --accent:  #1f4ed8;
  --band-bg: #0e0f11;
  --band-ink:#ffffff;
  --band-dim:#8b8f98;

  --mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
  --sans: "Space Grotesk", system-ui, -apple-system, "Segoe UI", sans-serif;
  --serif: ui-serif, "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;

  --gut: 40px;
  --max: 1120px;
  --measure: 40rem;
}

:root[data-theme="dark"] {
  color-scheme: dark;
  --bg:      #0b0c0e;
  --card:    #13151a;
  --sunken:  #0f1116;
  --ink:     #edeef1;
  --ink-2:   #d2d4da;
  --soft:    #9a9da6;
  --faint:   #7b7e88;
  --line:    #22252c;
  --line-2:  #2e323b;
  --accent:  #8b9bff;
  --band-bg: #06070a;
  --band-ink:#ffffff;
  --band-dim:#7e828d;
}

@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    color-scheme: dark;
    --bg:#0b0c0e; --card:#13151a; --sunken:#0f1116;
    --ink:#edeef1; --ink-2:#d2d4da; --soft:#9a9da6; --faint:#7b7e88;
    --line:#22252c; --line-2:#2e323b;
    --accent:#8b9bff;
    --band-bg:#06070a; --band-ink:#fff; --band-dim:#7e828d;
  }
}

@media (max-width: 760px) { :root { --gut: 22px; } }

*, *::before, *::after { box-sizing: border-box; }

body {
  margin: 0;
  background: var(--bg);
  color: var(--ink);
  font-family: var(--serif);
  font-size: 1.0625rem;
  line-height: 1.7;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

.wrap { max-width: var(--max); margin: 0 auto; padding: 0 var(--gut); }
.measure { max-width: var(--measure); }

/* ---------- band (dark in both themes, as on the index) ---------- */

.band {
  background: var(--band-bg);
  color: var(--band-ink);
  position: sticky; top: 0; z-index: 10;
  border-bottom: 1px solid #23262d;
}
.band .wrap {
  display: flex; align-items: center; justify-content: space-between;
  min-height: 44px; gap: 16px;
}

.crumbs {
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--band-dim);
  min-width: 0;
  display: flex; align-items: center; gap: 0;
  white-space: nowrap; overflow: hidden;
}
.crumbs a { color: var(--band-dim); text-decoration: none; }
.crumbs a:hover { color: var(--band-ink); }
.crumbs b { color: var(--band-ink); font-weight: 500; }
.crumbs .sep { padding: 0 .55em; color: #4b515c; }
.crumbs .here {
  color: var(--band-ink);
  overflow: hidden; text-overflow: ellipsis;
}

/* ---------- theme toggle (same component as the index) ---------- */

.theme {
  background: transparent;
  border: 1px solid #33373f;
  color: var(--band-dim);
  font-family: var(--mono); font-size: 10px; letter-spacing: .12em;
  text-transform: uppercase;
  padding: 5px 10px; border-radius: 2px; cursor: pointer;
  display: inline-flex; align-items: center; gap: 7px;
  line-height: 1; flex: none;
}
.theme:hover { color: var(--band-ink); border-color: #4b515c; }
.theme:focus-visible { outline: 2px solid var(--band-dim); outline-offset: 2px; }
.theme svg { width: 12px; height: 12px; }

/* Show the icon for the theme you'd switch TO. */
.theme .i-dark  { display: inline; }
.theme .i-light { display: none; }
:root[data-theme="dark"] .theme .i-dark  { display: none; }
:root[data-theme="dark"] .theme .i-light { display: inline; }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .theme .i-dark  { display: none; }
  :root:not([data-theme="light"]) .theme .i-light { display: inline; }
}

/* ---------- footer ---------- */

/* The shared crest, the same sign-off mark the other three sites carry.
   eagle.png is a black line drawing on transparent, so dark inverts it;
   light leaves it alone and carries more opacity, because black at 42% on
   off-white is a ghost where white at 42% on near-black is not. Below about
   110px the engraving's lines merge into a smudge, hence 132. */
.crest-wrap { padding-top: 3rem; text-align: center; }
.crest-wrap a { display: inline-block; line-height: 0; }
.crest {
  display: block; width: 132px; height: auto;
  opacity: .55; transition: opacity .16s ease;
}
.crest-wrap a:hover .crest { opacity: .8; }
:root[data-theme="dark"] .crest { filter: invert(1); opacity: .42; }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .crest { filter: invert(1); opacity: .42; }
}

footer.page {
  margin-top: 5rem; border-top: 1px solid var(--line);
  font-family: var(--mono); font-size: 10px; letter-spacing: .1em;
  text-transform: uppercase; color: var(--faint);
}
footer.page .wrap {
  padding-top: 1.75rem; padding-bottom: 3rem;
  display: flex; flex-wrap: wrap; gap: 0.6rem 1.75rem;
}
footer.page a { color: var(--soft); text-decoration: none; }
footer.page a:hover { color: var(--accent); }

/* ---------- index ---------- */

.hero { padding: clamp(3rem, 9vw, 6rem) 0 0; }
.hero h1 {
  font-family: var(--sans);
  font-size: clamp(2.1rem, 6vw, 3.1rem); line-height: 1.08;
  margin: 0 0 1rem; letter-spacing: -0.022em; font-weight: 600;
}
.hero .lede { font-size: 1.1875rem; color: var(--soft); margin: 0; max-width: 34rem; }
.hero .kicker {
  font-family: var(--mono); font-size: 10px; font-weight: 500;
  letter-spacing: .18em; text-transform: uppercase;
  color: var(--accent); margin: 0 0 1.1rem;
}

.section-label {
  font-family: var(--mono); font-size: 10px; font-weight: 500;
  letter-spacing: .18em; text-transform: uppercase; color: var(--faint);
  margin: clamp(3rem, 8vw, 4.5rem) 0 0; padding-bottom: 0.6rem;
  border-bottom: 1px solid var(--line);
}

.entries { list-style: none; margin: 0; padding: 0; }
.entry { border-bottom: 1px solid var(--line); }
.entry > a {
  display: grid; grid-template-columns: 3.5rem 1fr; gap: 0 1.25rem;
  padding: 1.75rem 0; text-decoration: none; color: inherit;
  transition: background 0.12s ease;
}
.entry > a:hover { background: var(--sunken); }
.entry .num {
  font-family: var(--mono); font-size: 0.75rem; color: var(--faint);
  padding-top: 0.5rem; letter-spacing: .1em;
}
.entry h2 {
  font-family: var(--sans);
  margin: 0 0 0.4rem; font-size: 1.3125rem; font-weight: 600;
  letter-spacing: -0.012em; line-height: 1.3;
}
.entry > a:hover h2 { color: var(--accent); }
.entry p { margin: 0; color: var(--soft); font-size: 0.9688rem; }
.entry .topics {
  margin: 0.85rem 0 0; display: flex; flex-wrap: wrap; gap: 0.4rem;
  font-family: var(--mono);
}
.entry .topics span {
  font-size: 9.5px; letter-spacing: .1em; text-transform: uppercase;
  color: var(--soft); background: var(--sunken);
  border: 1px solid var(--line); border-radius: 2px; padding: 0.25rem 0.5rem;
}

/* ---------- notebook page ---------- */

.nb-head { padding: clamp(2.5rem, 7vw, 4.5rem) 0 0; }
.nb-head .num {
  font-family: var(--mono); font-size: 10px; letter-spacing: .18em;
  text-transform: uppercase; color: var(--accent); margin: 0 0 0.7rem;
}
.nb-head h1 {
  font-family: var(--sans);
  font-size: clamp(1.9rem, 5vw, 2.6rem); line-height: 1.12;
  margin: 0 0 1rem; letter-spacing: -0.02em; font-weight: 600;
}
.nb-head .lede { color: var(--soft); font-size: 1.0625rem; margin: 0; }
.nb-meta {
  font-family: var(--mono); font-size: 10px; letter-spacing: .1em;
  text-transform: uppercase; color: var(--faint);
  margin: 1.5rem 0 0; padding: 0.9rem 0; display: flex; flex-wrap: wrap;
  gap: 0.5rem 1.5rem; border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
}
.nb-meta a { color: var(--soft); text-decoration: none; }
.nb-meta a:hover { color: var(--accent); }

.nb-body { padding-top: 2.5rem; }

.nb-body .rendered_html > *:first-child { margin-top: 0; }
.nb-body h1, .nb-body h2, .nb-body h3, .nb-body h4 {
  font-family: var(--sans);
  letter-spacing: -0.013em; line-height: 1.25; font-weight: 600;
  margin: 2.75rem 0 0.85rem;
}
.nb-body h1 { font-size: 1.75rem; }
.nb-body h2 { font-size: 1.4375rem; }
.nb-body h3 { font-size: 1.1875rem; }
.nb-body h4 { font-size: 1.0625rem; }
.nb-body p, .nb-body ul, .nb-body ol, .nb-body blockquote { max-width: var(--measure); }
.nb-body p { margin: 0 0 1.15rem; }
.nb-body ul, .nb-body ol { margin: 0 0 1.15rem; padding-left: 1.4rem; }
.nb-body li { margin-bottom: 0.4rem; }
.nb-body li > p:last-child { margin-bottom: 0; }
.nb-body a { color: var(--accent); text-decoration-thickness: 1px; text-underline-offset: 2px; }
.nb-body strong { font-weight: 650; color: var(--ink); }
.nb-body hr { border: 0; border-top: 1px solid var(--line); margin: 3rem 0; }
.nb-body blockquote {
  margin: 0 0 1.15rem; padding: 0.1rem 0 0.1rem 1.1rem;
  border-left: 2px solid var(--accent); color: var(--soft);
}
.nb-body blockquote p:last-child { margin-bottom: 0; }
.nb-body code {
  font-family: var(--mono); font-size: 0.85em;
  background: var(--sunken); border: 1px solid var(--line);
  border-radius: 2px; padding: 0.1em 0.34em;
}
.anchor-link { display: none; }

.nb-body table {
  border-collapse: collapse; margin: 0 0 1.4rem; font-size: 0.9375rem;
  font-family: var(--sans); display: block; overflow-x: auto; max-width: 100%;
}
.nb-body thead th {
  text-align: left; font-family: var(--mono); font-weight: 500; font-size: 10px;
  letter-spacing: .12em; text-transform: uppercase; color: var(--faint);
  border-bottom: 1px solid var(--line); padding: 0.5rem 1rem 0.5rem 0;
  white-space: nowrap;
}
.nb-body tbody td {
  padding: 0.5rem 1rem 0.5rem 0; border-bottom: 1px solid var(--line);
  vertical-align: top;
}
.nb-body tbody tr:last-child td { border-bottom: 0; }

.nb-body .cell { margin: 0 0 1.5rem; }
.nb-body .text_cell { margin-bottom: 0; }
.nb-body .prompt { display: none; }

.nb-body .input_area {
  background: var(--sunken); border: 1px solid var(--line);
  border-radius: 3px; overflow: hidden; position: relative;
}
.nb-body .input_area::before {
  content: "python"; position: absolute; top: 0; right: 0;
  font-family: var(--mono); font-size: 9px; font-weight: 500;
  letter-spacing: .14em; text-transform: uppercase; color: var(--faint);
  padding: 0.45rem 0.7rem; pointer-events: none;
}
.nb-body .input_area pre {
  margin: 0; padding: 0.95rem 1.05rem; overflow-x: auto;
  font-family: var(--mono); font-size: 0.8125rem; line-height: 1.65;
  background: none; border: 0;
}
.nb-body .input_area code { background: none; border: 0; padding: 0; font-size: inherit; }

.nb-body .output_wrapper { margin-top: 0.55rem; }
.nb-body .output_area {
  border-left: 2px solid var(--line-2); padding-left: 1.05rem; margin-left: 0.1rem;
}
.nb-body .output_area pre {
  margin: 0; padding: 0.4rem 0; font-family: var(--mono);
  font-size: 0.8125rem; line-height: 1.6; color: var(--soft);
  overflow-x: auto; background: none; border: 0; white-space: pre-wrap;
}
.nb-body .output_area img, .nb-body .output_area svg { max-width: 100%; height: auto; }

/* matplotlib and graphviz output is transparent-backed, so it needs a light
   plate to stay legible when the page is dark. */
.nb-body .output_png, .nb-body .output_svg {
  background: #ffffff; border: 1px solid var(--line);
  border-radius: 3px; padding: 0.9rem; margin: 0.5rem 0; overflow-x: auto;
}
.nb-body .output_svg svg { display: block; }
:root[data-theme="dark"] .nb-body .output_png,
:root[data-theme="dark"] .nb-body .output_svg { background: #f4f4f1; border-color: var(--line-2); }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .nb-body .output_png,
  :root:not([data-theme="light"]) .nb-body .output_svg { background: #f4f4f1; border-color: var(--line-2); }
}

.nb-body mjx-container[display="true"] { overflow-x: auto; overflow-y: hidden; padding: 0.2rem 0; }

.nb-nav {
  display: flex; justify-content: space-between; gap: 1rem;
  margin-top: 4rem; padding-top: 1.5rem; border-top: 1px solid var(--line);
  font-family: var(--mono); font-size: 10px; letter-spacing: .1em;
  text-transform: uppercase;
}
.nb-nav a { color: var(--accent); text-decoration: none; }
.nb-nav a:hover { text-decoration: underline; }

/* ---------- two-column layout with sticky TOC ---------- */

.nb-layout { display: block; }
.toc { display: none; }

@media (min-width: 64rem) {
  .nb-layout {
    display: grid; grid-template-columns: minmax(0, 1fr) 12rem;
    gap: 3.5rem; align-items: start;
  }
  .toc {
    display: block; position: sticky; top: 4rem;
    font-family: var(--sans); font-size: 0.8125rem; line-height: 1.5;
    padding-top: 2.9rem;
  }
  .toc-label {
    margin: 0 0 0.7rem; font-family: var(--mono); font-size: 9.5px;
    font-weight: 500; letter-spacing: .16em; text-transform: uppercase;
    color: var(--faint);
  }
  .toc ul { list-style: none; margin: 0; padding: 0; border-left: 1px solid var(--line); }
  .toc li { margin: 0; }
  .toc a {
    display: block; padding: 0.28rem 0 0.28rem 0.85rem;
    color: var(--soft); text-decoration: none;
    border-left: 2px solid transparent; margin-left: -1px;
  }
  .toc a:hover { color: var(--accent); border-left-color: var(--accent); }
}

html { scroll-behavior: smooth; }
.nb-body h2 { scroll-margin-top: 4rem; }

@media (max-width: 34rem) {
  .entry > a { grid-template-columns: 1fr; gap: 0.35rem; }
  .entry .num { padding-top: 0; }
  .crumbs { letter-spacing: .12em; }
}

/* ---------- references page ---------- */

.callout {
  margin: 2.25rem 0 0; padding: 1rem 1.15rem;
  background: var(--sunken); border: 1px solid var(--line);
  border-left: 2px solid var(--accent); border-radius: 3px;
  font-size: 0.9688rem; color: var(--soft);
}
.callout code {
  font-family: var(--mono); font-size: 0.85em; color: var(--ink-2);
  background: var(--card); border: 1px solid var(--line);
  border-radius: 2px; padding: 0.1em 0.34em;
}

.group-blurb {
  margin: 1rem 0 0; color: var(--soft); font-size: 0.9688rem;
}

.refs { list-style: none; margin: 0; padding: 0; }
.ref { border-bottom: 1px solid var(--line); padding: 1.9rem 0; }
.ref:last-child { border-bottom: 0; }
.ref h3 {
  font-family: var(--sans); font-size: 1.25rem; font-weight: 600;
  letter-spacing: -0.012em; line-height: 1.3; margin: 0 0 0.3rem;
}
.ref-source {
  margin: 0 0 0.75rem; font-family: var(--mono); font-size: 10px;
  letter-spacing: .12em; text-transform: uppercase; color: var(--faint);
}
.ref-why { margin: 0; max-width: var(--measure); color: var(--ink-2); }
.ref .topics {
  margin: 0.9rem 0 0; display: flex; flex-wrap: wrap; gap: 0.4rem;
  font-family: var(--mono);
}
.ref .topics span {
  font-size: 9.5px; letter-spacing: .1em; text-transform: uppercase;
  color: var(--soft); background: var(--sunken);
  border: 1px solid var(--line); border-radius: 2px; padding: 0.25rem 0.5rem;
}

.ref-where {
  margin: 0.9rem 0 0; font-family: var(--mono); font-size: 0.75rem;
  color: var(--soft); display: flex; align-items: center;
  flex-wrap: wrap; gap: 0.5rem;
}
.ref-where code {
  font-family: var(--mono); font-size: 0.95em; color: var(--ink-2);
  background: var(--sunken); border: 1px solid var(--line);
  border-radius: 2px; padding: 0.1em 0.4em;
}
.tag {
  font-size: 9.5px; font-weight: 500; letter-spacing: .14em;
  text-transform: uppercase; border-radius: 2px; padding: 0.25rem 0.5rem;
  border: 1px solid currentColor; flex: none;
}
.tag-vendored { color: var(--accent); }
.tag-fetch    { color: var(--soft); }
.tag-link     { color: var(--faint); }

.ref-links {
  margin: 0.75rem 0 0; display: flex; flex-wrap: wrap;
  align-items: baseline; gap: 0.4rem 1.25rem;
  font-family: var(--mono); font-size: 0.75rem;
}
.ref-links a { color: var(--accent); text-decoration: none; }
.ref-links a:hover { text-decoration: underline; }
.ref-licence {
  color: var(--faint); margin-left: auto; font-size: 10px;
  letter-spacing: .1em; text-transform: uppercase;
}

@media (max-width: 34rem) {
  .ref-licence { margin-left: 0; }
}

.callout a { color: var(--accent); }
.callout em { font-style: italic; }
.ref-links .here-link { font-weight: 600; }
.ref-links .here-link::before { content: "\2192\00a0"; }

/* Upstream "Open in Colab" / "Open in Kaggle" badges: the header already
   carries those links, and the badges sit awkwardly beside a heading. */
.nb-body img[src*="colab-badge"], .nb-body img[src*="open-in-kaggle"] { display: none; }

/* ---------- search ---------- */

.band-tools { display: flex; align-items: center; gap: 12px; flex: none; }
.band-search {
  display: inline-flex; align-items: center; gap: 6px;
  font-family: var(--mono); font-size: 10px; letter-spacing: .12em;
  text-transform: uppercase; color: var(--band-dim); text-decoration: none;
  padding: 5px 0;
}
.band-search:hover { color: var(--band-ink); }
.band-search svg { width: 12px; height: 12px; }

.search-form { margin: 2.5rem 0 0; }
#q {
  width: 100%; max-width: 34rem; font-family: var(--sans); font-size: 1.0625rem;
  color: var(--ink); background: var(--card);
  border: 1px solid var(--line-2); border-radius: 3px;
  padding: 0.7rem 0.9rem; -webkit-appearance: none;
}
#q:focus { outline: 2px solid var(--accent); outline-offset: 1px; border-color: transparent; }
#q::placeholder { color: var(--faint); }

.search-status {
  margin: 0.9rem 0 0; font-family: var(--mono); font-size: 10px;
  letter-spacing: .14em; text-transform: uppercase; color: var(--faint);
}

.results { list-style: none; margin: 1.5rem 0 0; padding: 0; }
.result { border-top: 1px solid var(--line); }
.result:last-child { border-bottom: 1px solid var(--line); }
.result > a {
  display: block; padding: 1.1rem 0; text-decoration: none; color: inherit;
  transition: background 0.12s ease;
}
.result > a:hover { background: var(--sunken); }
.result-where {
  margin: 0 0 0.35rem; font-family: var(--sans); font-weight: 600;
  font-size: 1.0312rem; line-height: 1.35; display: flex;
  flex-wrap: wrap; align-items: baseline; gap: 0.5rem;
}
.result > a:hover .result-where { color: var(--accent); }
.result-text {
  margin: 0; color: var(--soft); font-size: 0.9688rem; line-height: 1.6;
  max-width: var(--measure);
}
.result-text mark {
  background: transparent; color: var(--ink); font-weight: 600;
  border-bottom: 1px solid var(--accent);
}
.result-source {
  margin: 0.45rem 0 0; font-family: var(--mono); font-size: 10px;
  letter-spacing: .1em; text-transform: uppercase; color: var(--faint);
}
.kind {
  font-family: var(--mono); font-size: 9px; font-weight: 500;
  letter-spacing: .14em; text-transform: uppercase;
  border: 1px solid currentColor; border-radius: 2px;
  padding: 0.2rem 0.42rem; flex: none;
}
.kind-notebook  { color: var(--accent); }
.kind-reference { color: var(--faint); }
.result-sep { color: var(--faint); font-weight: 400; padding: 0 0.15rem; }


/* ---- syntax highlighting ---- */
pre { line-height: 125%; }
td.linenos .normal { color: #666666; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: #666666; 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; }
.highlight .hll { background-color: #ffffcc }
.highlight { background: #f0f0f0; }
.highlight .c { color: #60A0B0; font-style: italic } /* Comment */
.highlight .err { border: 1px solid #F00 } /* Error */
.highlight .k { color: #007020; font-weight: bold } /* Keyword */
.highlight .o { color: #666 } /* Operator */
.highlight .ch { color: #60A0B0; font-style: italic } /* Comment.Hashbang */
.highlight .cm { color: #60A0B0; font-style: italic } /* Comment.Multiline */
.highlight .cp { color: #007020 } /* Comment.Preproc */
.highlight .cpf { color: #60A0B0; font-style: italic } /* Comment.PreprocFile */
.highlight .c1 { color: #60A0B0; font-style: italic } /* Comment.Single */
.highlight .cs { color: #60A0B0; background-color: #FFF0F0 } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */
.highlight .gr { color: #F00 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */
.highlight .go { color: #888 } /* Generic.Output */
.highlight .gp { color: #C65D09; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #04D } /* Generic.Traceback */
.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #007020 } /* Keyword.Pseudo */
.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #902000 } /* Keyword.Type */
.highlight .m { color: #40A070 } /* Literal.Number */
.highlight .s { color: #4070A0 } /* Literal.String */
.highlight .na { color: #4070A0 } /* Name.Attribute */
.highlight .nb { color: #007020 } /* Name.Builtin */
.highlight .nc { color: #0E84B5; font-weight: bold } /* Name.Class */
.highlight .no { color: #60ADD5 } /* Name.Constant */
.highlight .nd { color: #555; font-weight: bold } /* Name.Decorator */
.highlight .ni { color: #D55537; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #007020 } /* Name.Exception */
.highlight .nf { color: #06287E } /* Name.Function */
.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */
.highlight .nn { color: #0E84B5; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #BB60D5 } /* Name.Variable */
.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */
.highlight .w { color: #BBB } /* Text.Whitespace */
.highlight .mb { color: #40A070 } /* Literal.Number.Bin */
.highlight .mf { color: #40A070 } /* Literal.Number.Float */
.highlight .mh { color: #40A070 } /* Literal.Number.Hex */
.highlight .mi { color: #40A070 } /* Literal.Number.Integer */
.highlight .mo { color: #40A070 } /* Literal.Number.Oct */
.highlight .sa { color: #4070A0 } /* Literal.String.Affix */
.highlight .sb { color: #4070A0 } /* Literal.String.Backtick */
.highlight .sc { color: #4070A0 } /* Literal.String.Char */
.highlight .dl { color: #4070A0 } /* Literal.String.Delimiter */
.highlight .sd { color: #4070A0; font-style: italic } /* Literal.String.Doc */
.highlight .s2 { color: #4070A0 } /* Literal.String.Double */
.highlight .se { color: #4070A0; font-weight: bold } /* Literal.String.Escape */
.highlight .sh { color: #4070A0 } /* Literal.String.Heredoc */
.highlight .si { color: #70A0D0; font-style: italic } /* Literal.String.Interpol */
.highlight .sx { color: #C65D09 } /* Literal.String.Other */
.highlight .sr { color: #235388 } /* Literal.String.Regex */
.highlight .s1 { color: #4070A0 } /* Literal.String.Single */
.highlight .ss { color: #517918 } /* Literal.String.Symbol */
.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #06287E } /* Name.Function.Magic */
.highlight .vc { color: #BB60D5 } /* Name.Variable.Class */
.highlight .vg { color: #BB60D5 } /* Name.Variable.Global */
.highlight .vi { color: #BB60D5 } /* Name.Variable.Instance */
.highlight .vm { color: #BB60D5 } /* Name.Variable.Magic */
.highlight .il { color: #40A070 } /* 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; }
:root:not([data-theme="light"]) .highlight .hll { background-color: #6e7681 }
:root:not([data-theme="light"]) .highlight { background: #0d1117; color: #E6EDF3 }
:root:not([data-theme="light"]) .highlight .c { color: #8B949E; font-style: italic } /* Comment */
:root:not([data-theme="light"]) .highlight .err { color: #F85149 } /* Error */
:root:not([data-theme="light"]) .highlight .esc { color: #E6EDF3 } /* Escape */
:root:not([data-theme="light"]) .highlight .g { color: #E6EDF3 } /* Generic */
:root:not([data-theme="light"]) .highlight .k { color: #FF7B72 } /* Keyword */
:root:not([data-theme="light"]) .highlight .l { color: #A5D6FF } /* Literal */
:root:not([data-theme="light"]) .highlight .n { color: #E6EDF3 } /* Name */
:root:not([data-theme="light"]) .highlight .o { color: #FF7B72; font-weight: bold } /* Operator */
:root:not([data-theme="light"]) .highlight .x { color: #E6EDF3 } /* Other */
:root:not([data-theme="light"]) .highlight .p { color: #E6EDF3 } /* Punctuation */
:root:not([data-theme="light"]) .highlight .ch { color: #8B949E; font-style: italic } /* Comment.Hashbang */
:root:not([data-theme="light"]) .highlight .cm { color: #8B949E; font-style: italic } /* Comment.Multiline */
:root:not([data-theme="light"]) .highlight .cp { color: #8B949E; font-weight: bold; font-style: italic } /* Comment.Preproc */
:root:not([data-theme="light"]) .highlight .cpf { color: #8B949E; font-style: italic } /* Comment.PreprocFile */
:root:not([data-theme="light"]) .highlight .c1 { color: #8B949E; font-style: italic } /* Comment.Single */
:root:not([data-theme="light"]) .highlight .cs { color: #8B949E; font-weight: bold; font-style: italic } /* Comment.Special */
:root:not([data-theme="light"]) .highlight .gd { color: #FFA198; background-color: #490202 } /* Generic.Deleted */
:root:not([data-theme="light"]) .highlight .ge { color: #E6EDF3; font-style: italic } /* Generic.Emph */
:root:not([data-theme="light"]) .highlight .ges { color: #E6EDF3; font-weight: bold; font-style: italic } /* Generic.EmphStrong */
:root:not([data-theme="light"]) .highlight .gr { color: #FFA198 } /* Generic.Error */
:root:not([data-theme="light"]) .highlight .gh { color: #79C0FF; font-weight: bold } /* Generic.Heading */
:root:not([data-theme="light"]) .highlight .gi { color: #56D364; background-color: #0F5323 } /* Generic.Inserted */
:root:not([data-theme="light"]) .highlight .go { color: #8B949E } /* Generic.Output */
:root:not([data-theme="light"]) .highlight .gp { color: #8B949E } /* Generic.Prompt */
:root:not([data-theme="light"]) .highlight .gs { color: #E6EDF3; font-weight: bold } /* Generic.Strong */
:root:not([data-theme="light"]) .highlight .gu { color: #79C0FF } /* Generic.Subheading */
:root:not([data-theme="light"]) .highlight .gt { color: #FF7B72 } /* Generic.Traceback */
:root:not([data-theme="light"]) .highlight .g-Underline { color: #E6EDF3; text-decoration: underline } /* Generic.Underline */
:root:not([data-theme="light"]) .highlight .kc { color: #79C0FF } /* Keyword.Constant */
:root:not([data-theme="light"]) .highlight .kd { color: #FF7B72 } /* Keyword.Declaration */
:root:not([data-theme="light"]) .highlight .kn { color: #FF7B72 } /* Keyword.Namespace */
:root:not([data-theme="light"]) .highlight .kp { color: #79C0FF } /* Keyword.Pseudo */
:root:not([data-theme="light"]) .highlight .kr { color: #FF7B72 } /* Keyword.Reserved */
:root:not([data-theme="light"]) .highlight .kt { color: #FF7B72 } /* Keyword.Type */
:root:not([data-theme="light"]) .highlight .ld { color: #79C0FF } /* Literal.Date */
:root:not([data-theme="light"]) .highlight .m { color: #A5D6FF } /* Literal.Number */
:root:not([data-theme="light"]) .highlight .s { color: #A5D6FF } /* Literal.String */
:root:not([data-theme="light"]) .highlight .na { color: #E6EDF3 } /* Name.Attribute */
:root:not([data-theme="light"]) .highlight .nb { color: #E6EDF3 } /* Name.Builtin */
:root:not([data-theme="light"]) .highlight .nc { color: #F0883E; font-weight: bold } /* Name.Class */
:root:not([data-theme="light"]) .highlight .no { color: #79C0FF; font-weight: bold } /* Name.Constant */
:root:not([data-theme="light"]) .highlight .nd { color: #D2A8FF; font-weight: bold } /* Name.Decorator */
:root:not([data-theme="light"]) .highlight .ni { color: #FFA657 } /* Name.Entity */
:root:not([data-theme="light"]) .highlight .ne { color: #F0883E; font-weight: bold } /* Name.Exception */
:root:not([data-theme="light"]) .highlight .nf { color: #D2A8FF; font-weight: bold } /* Name.Function */
:root:not([data-theme="light"]) .highlight .nl { color: #79C0FF; font-weight: bold } /* Name.Label */
:root:not([data-theme="light"]) .highlight .nn { color: #FF7B72 } /* Name.Namespace */
:root:not([data-theme="light"]) .highlight .nx { color: #E6EDF3 } /* Name.Other */
:root:not([data-theme="light"]) .highlight .py { color: #79C0FF } /* Name.Property */
:root:not([data-theme="light"]) .highlight .nt { color: #7EE787 } /* Name.Tag */
:root:not([data-theme="light"]) .highlight .nv { color: #79C0FF } /* Name.Variable */
:root:not([data-theme="light"]) .highlight .ow { color: #FF7B72; font-weight: bold } /* Operator.Word */
:root:not([data-theme="light"]) .highlight .pm { color: #E6EDF3 } /* Punctuation.Marker */
:root:not([data-theme="light"]) .highlight .w { color: #6E7681 } /* Text.Whitespace */
:root:not([data-theme="light"]) .highlight .mb { color: #A5D6FF } /* Literal.Number.Bin */
:root:not([data-theme="light"]) .highlight .mf { color: #A5D6FF } /* Literal.Number.Float */
:root:not([data-theme="light"]) .highlight .mh { color: #A5D6FF } /* Literal.Number.Hex */
:root:not([data-theme="light"]) .highlight .mi { color: #A5D6FF } /* Literal.Number.Integer */
:root:not([data-theme="light"]) .highlight .mo { color: #A5D6FF } /* Literal.Number.Oct */
:root:not([data-theme="light"]) .highlight .sa { color: #79C0FF } /* Literal.String.Affix */
:root:not([data-theme="light"]) .highlight .sb { color: #A5D6FF } /* Literal.String.Backtick */
:root:not([data-theme="light"]) .highlight .sc { color: #A5D6FF } /* Literal.String.Char */
:root:not([data-theme="light"]) .highlight .dl { color: #79C0FF } /* Literal.String.Delimiter */
:root:not([data-theme="light"]) .highlight .sd { color: #A5D6FF } /* Literal.String.Doc */
:root:not([data-theme="light"]) .highlight .s2 { color: #A5D6FF } /* Literal.String.Double */
:root:not([data-theme="light"]) .highlight .se { color: #79C0FF } /* Literal.String.Escape */
:root:not([data-theme="light"]) .highlight .sh { color: #79C0FF } /* Literal.String.Heredoc */
:root:not([data-theme="light"]) .highlight .si { color: #A5D6FF } /* Literal.String.Interpol */
:root:not([data-theme="light"]) .highlight .sx { color: #A5D6FF } /* Literal.String.Other */
:root:not([data-theme="light"]) .highlight .sr { color: #79C0FF } /* Literal.String.Regex */
:root:not([data-theme="light"]) .highlight .s1 { color: #A5D6FF } /* Literal.String.Single */
:root:not([data-theme="light"]) .highlight .ss { color: #A5D6FF } /* Literal.String.Symbol */
:root:not([data-theme="light"]) .highlight .bp { color: #E6EDF3 } /* Name.Builtin.Pseudo */
:root:not([data-theme="light"]) .highlight .fm { color: #D2A8FF; font-weight: bold } /* Name.Function.Magic */
:root:not([data-theme="light"]) .highlight .vc { color: #79C0FF } /* Name.Variable.Class */
:root:not([data-theme="light"]) .highlight .vg { color: #79C0FF } /* Name.Variable.Global */
:root:not([data-theme="light"]) .highlight .vi { color: #79C0FF } /* Name.Variable.Instance */
:root:not([data-theme="light"]) .highlight .vm { color: #79C0FF } /* Name.Variable.Magic */
:root:not([data-theme="light"]) .highlight .il { color: #A5D6FF } /* Literal.Number.Integer.Long */
}
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; }
:root[data-theme="dark"] .highlight .hll { background-color: #6e7681 }
:root[data-theme="dark"] .highlight { background: #0d1117; color: #E6EDF3 }
:root[data-theme="dark"] .highlight .c { color: #8B949E; font-style: italic } /* Comment */
:root[data-theme="dark"] .highlight .err { color: #F85149 } /* Error */
:root[data-theme="dark"] .highlight .esc { color: #E6EDF3 } /* Escape */
:root[data-theme="dark"] .highlight .g { color: #E6EDF3 } /* Generic */
:root[data-theme="dark"] .highlight .k { color: #FF7B72 } /* Keyword */
:root[data-theme="dark"] .highlight .l { color: #A5D6FF } /* Literal */
:root[data-theme="dark"] .highlight .n { color: #E6EDF3 } /* Name */
:root[data-theme="dark"] .highlight .o { color: #FF7B72; font-weight: bold } /* Operator */
:root[data-theme="dark"] .highlight .x { color: #E6EDF3 } /* Other */
:root[data-theme="dark"] .highlight .p { color: #E6EDF3 } /* Punctuation */
:root[data-theme="dark"] .highlight .ch { color: #8B949E; font-style: italic } /* Comment.Hashbang */
:root[data-theme="dark"] .highlight .cm { color: #8B949E; font-style: italic } /* Comment.Multiline */
:root[data-theme="dark"] .highlight .cp { color: #8B949E; font-weight: bold; font-style: italic } /* Comment.Preproc */
:root[data-theme="dark"] .highlight .cpf { color: #8B949E; font-style: italic } /* Comment.PreprocFile */
:root[data-theme="dark"] .highlight .c1 { color: #8B949E; font-style: italic } /* Comment.Single */
:root[data-theme="dark"] .highlight .cs { color: #8B949E; font-weight: bold; font-style: italic } /* Comment.Special */
:root[data-theme="dark"] .highlight .gd { color: #FFA198; background-color: #490202 } /* Generic.Deleted */
:root[data-theme="dark"] .highlight .ge { color: #E6EDF3; font-style: italic } /* Generic.Emph */
:root[data-theme="dark"] .highlight .ges { color: #E6EDF3; font-weight: bold; font-style: italic } /* Generic.EmphStrong */
:root[data-theme="dark"] .highlight .gr { color: #FFA198 } /* Generic.Error */
:root[data-theme="dark"] .highlight .gh { color: #79C0FF; font-weight: bold } /* Generic.Heading */
:root[data-theme="dark"] .highlight .gi { color: #56D364; background-color: #0F5323 } /* Generic.Inserted */
:root[data-theme="dark"] .highlight .go { color: #8B949E } /* Generic.Output */
:root[data-theme="dark"] .highlight .gp { color: #8B949E } /* Generic.Prompt */
:root[data-theme="dark"] .highlight .gs { color: #E6EDF3; font-weight: bold } /* Generic.Strong */
:root[data-theme="dark"] .highlight .gu { color: #79C0FF } /* Generic.Subheading */
:root[data-theme="dark"] .highlight .gt { color: #FF7B72 } /* Generic.Traceback */
:root[data-theme="dark"] .highlight .g-Underline { color: #E6EDF3; text-decoration: underline } /* Generic.Underline */
:root[data-theme="dark"] .highlight .kc { color: #79C0FF } /* Keyword.Constant */
:root[data-theme="dark"] .highlight .kd { color: #FF7B72 } /* Keyword.Declaration */
:root[data-theme="dark"] .highlight .kn { color: #FF7B72 } /* Keyword.Namespace */
:root[data-theme="dark"] .highlight .kp { color: #79C0FF } /* Keyword.Pseudo */
:root[data-theme="dark"] .highlight .kr { color: #FF7B72 } /* Keyword.Reserved */
:root[data-theme="dark"] .highlight .kt { color: #FF7B72 } /* Keyword.Type */
:root[data-theme="dark"] .highlight .ld { color: #79C0FF } /* Literal.Date */
:root[data-theme="dark"] .highlight .m { color: #A5D6FF } /* Literal.Number */
:root[data-theme="dark"] .highlight .s { color: #A5D6FF } /* Literal.String */
:root[data-theme="dark"] .highlight .na { color: #E6EDF3 } /* Name.Attribute */
:root[data-theme="dark"] .highlight .nb { color: #E6EDF3 } /* Name.Builtin */
:root[data-theme="dark"] .highlight .nc { color: #F0883E; font-weight: bold } /* Name.Class */
:root[data-theme="dark"] .highlight .no { color: #79C0FF; font-weight: bold } /* Name.Constant */
:root[data-theme="dark"] .highlight .nd { color: #D2A8FF; font-weight: bold } /* Name.Decorator */
:root[data-theme="dark"] .highlight .ni { color: #FFA657 } /* Name.Entity */
:root[data-theme="dark"] .highlight .ne { color: #F0883E; font-weight: bold } /* Name.Exception */
:root[data-theme="dark"] .highlight .nf { color: #D2A8FF; font-weight: bold } /* Name.Function */
:root[data-theme="dark"] .highlight .nl { color: #79C0FF; font-weight: bold } /* Name.Label */
:root[data-theme="dark"] .highlight .nn { color: #FF7B72 } /* Name.Namespace */
:root[data-theme="dark"] .highlight .nx { color: #E6EDF3 } /* Name.Other */
:root[data-theme="dark"] .highlight .py { color: #79C0FF } /* Name.Property */
:root[data-theme="dark"] .highlight .nt { color: #7EE787 } /* Name.Tag */
:root[data-theme="dark"] .highlight .nv { color: #79C0FF } /* Name.Variable */
:root[data-theme="dark"] .highlight .ow { color: #FF7B72; font-weight: bold } /* Operator.Word */
:root[data-theme="dark"] .highlight .pm { color: #E6EDF3 } /* Punctuation.Marker */
:root[data-theme="dark"] .highlight .w { color: #6E7681 } /* Text.Whitespace */
:root[data-theme="dark"] .highlight .mb { color: #A5D6FF } /* Literal.Number.Bin */
:root[data-theme="dark"] .highlight .mf { color: #A5D6FF } /* Literal.Number.Float */
:root[data-theme="dark"] .highlight .mh { color: #A5D6FF } /* Literal.Number.Hex */
:root[data-theme="dark"] .highlight .mi { color: #A5D6FF } /* Literal.Number.Integer */
:root[data-theme="dark"] .highlight .mo { color: #A5D6FF } /* Literal.Number.Oct */
:root[data-theme="dark"] .highlight .sa { color: #79C0FF } /* Literal.String.Affix */
:root[data-theme="dark"] .highlight .sb { color: #A5D6FF } /* Literal.String.Backtick */
:root[data-theme="dark"] .highlight .sc { color: #A5D6FF } /* Literal.String.Char */
:root[data-theme="dark"] .highlight .dl { color: #79C0FF } /* Literal.String.Delimiter */
:root[data-theme="dark"] .highlight .sd { color: #A5D6FF } /* Literal.String.Doc */
:root[data-theme="dark"] .highlight .s2 { color: #A5D6FF } /* Literal.String.Double */
:root[data-theme="dark"] .highlight .se { color: #79C0FF } /* Literal.String.Escape */
:root[data-theme="dark"] .highlight .sh { color: #79C0FF } /* Literal.String.Heredoc */
:root[data-theme="dark"] .highlight .si { color: #A5D6FF } /* Literal.String.Interpol */
:root[data-theme="dark"] .highlight .sx { color: #A5D6FF } /* Literal.String.Other */
:root[data-theme="dark"] .highlight .sr { color: #79C0FF } /* Literal.String.Regex */
:root[data-theme="dark"] .highlight .s1 { color: #A5D6FF } /* Literal.String.Single */
:root[data-theme="dark"] .highlight .ss { color: #A5D6FF } /* Literal.String.Symbol */
:root[data-theme="dark"] .highlight .bp { color: #E6EDF3 } /* Name.Builtin.Pseudo */
:root[data-theme="dark"] .highlight .fm { color: #D2A8FF; font-weight: bold } /* Name.Function.Magic */
:root[data-theme="dark"] .highlight .vc { color: #79C0FF } /* Name.Variable.Class */
:root[data-theme="dark"] .highlight .vg { color: #79C0FF } /* Name.Variable.Global */
:root[data-theme="dark"] .highlight .vi { color: #79C0FF } /* Name.Variable.Instance */
:root[data-theme="dark"] .highlight .vm { color: #79C0FF } /* Name.Variable.Magic */
:root[data-theme="dark"] .highlight .il { color: #A5D6FF } /* Literal.Number.Integer.Long */
