.topbar {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 100;
  background: rgba(252, 252, 252, 0.94);
  border-bottom: 1px solid #e5e5e5;
  -webkit-backdrop-filter: saturate(180%) blur(8px);
  backdrop-filter: saturate(180%) blur(8px);
}

.topbar ul {
  list-style: none;
  margin: 0 auto;
  padding: 0 20px;
  height: 44px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 1.4em;
  overflow-x: auto;
  white-space: nowrap;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
}

.topbar ul::-webkit-scrollbar { display: none; }

.topbar li { margin: 0; }

.topbar a {
  color: #043361;
  font-size: 0.85rem;
  letter-spacing: 0.02em;
  text-decoration: none;
  border-bottom: 2px solid transparent;
  padding-bottom: 2px;
}

.topbar a:hover {
  color: #267CB9;
  border-bottom-color: #267CB9;
}

body { padding-top: 44px; }

h1, h2, h3 { scroll-margin-top: 60px; }

@media (prefers-color-scheme: dark) {
  .topbar {
    background: rgba(20, 20, 20, 0.94);
    border-bottom-color: #333;
  }
  .topbar a { color: #3eb7f0; }
  .topbar a:hover { color: #8ed6f7; border-bottom-color: #8ed6f7; }
}

@media (max-width: 960px) {
  .topbar ul {
    justify-content: flex-start;
    gap: 1.1em;
    padding: 0 14px;
  }
}

/* Code blocks: use the full column width instead of the theme's 500px cap. */
pre {
  max-width: 100%;
  font-size: 0.82rem;
  line-height: 1.45;
}

@media (prefers-color-scheme: dark) {
  pre {
    background: #1b1b1b;
    border-color: #333;
  }
  pre, code {
    color: #d8d8d8;
  }
}

/* ---- Syntax highlighting (Rouge) ---- */

.highlight, .highlight pre {
  background: transparent;
}

.highlight table td { padding: 5px; }
.highlight table pre { margin: 0; }
.highlight .cm {
  color: #999988;
  font-style: italic;
}
.highlight .cp {
  color: #999999;
  font-weight: bold;
}
.highlight .c1 {
  color: #999988;
  font-style: italic;
}
.highlight .cs {
  color: #999999;
  font-weight: bold;
  font-style: italic;
}
.highlight .c, .highlight .ch, .highlight .cd, .highlight .cpf {
  color: #999988;
  font-style: italic;
}
.highlight .err {
  color: #a61717;
  background-color: #e3d2d2;
}
.highlight .gd {
  color: #000000;
  background-color: #ffdddd;
}
.highlight .ge {
  color: #000000;
  font-style: italic;
}
.highlight .gr {
  color: #aa0000;
}
.highlight .gh {
  color: #999999;
}
.highlight .gi {
  color: #000000;
  background-color: #ddffdd;
}
.highlight .go {
  color: #888888;
}
.highlight .gp {
  color: #555555;
}
.highlight .gs {
  font-weight: bold;
}
.highlight .gu {
  color: #aaaaaa;
}
.highlight .gt {
  color: #aa0000;
}
.highlight .kc {
  color: #000000;
  font-weight: bold;
}
.highlight .kd {
  color: #000000;
  font-weight: bold;
}
.highlight .kn {
  color: #000000;
  font-weight: bold;
}
.highlight .kp {
  color: #000000;
  font-weight: bold;
}
.highlight .kr {
  color: #000000;
  font-weight: bold;
}
.highlight .kt {
  color: #445588;
  font-weight: bold;
}
.highlight .k, .highlight .kv {
  color: #000000;
  font-weight: bold;
}
.highlight .mf {
  color: #009999;
}
.highlight .mh {
  color: #009999;
}
.highlight .il {
  color: #009999;
}
.highlight .mi {
  color: #009999;
}
.highlight .mo {
  color: #009999;
}
.highlight .m, .highlight .mb, .highlight .mx {
  color: #009999;
}
.highlight .sa {
  color: #000000;
  font-weight: bold;
}
.highlight .sb {
  color: #d14;
}
.highlight .sc {
  color: #d14;
}
.highlight .sd {
  color: #d14;
}
.highlight .s2 {
  color: #d14;
}
.highlight .se {
  color: #d14;
}
.highlight .sh {
  color: #d14;
}
.highlight .si {
  color: #d14;
}
.highlight .sx {
  color: #d14;
}
.highlight .sr {
  color: #009926;
}
.highlight .s1 {
  color: #d14;
}
.highlight .ss {
  color: #990073;
}
.highlight .s, .highlight .dl {
  color: #d14;
}
.highlight .na {
  color: #008080;
}
.highlight .bp {
  color: #999999;
}
.highlight .nb {
  color: #0086B3;
}
.highlight .nc {
  color: #445588;
  font-weight: bold;
}
.highlight .no {
  color: #008080;
}
.highlight .nd {
  color: #3c5d5d;
  font-weight: bold;
}
.highlight .ni {
  color: #800080;
}
.highlight .ne {
  color: #990000;
  font-weight: bold;
}
.highlight .nf, .highlight .fm {
  color: #990000;
  font-weight: bold;
}
.highlight .nl {
  color: #990000;
  font-weight: bold;
}
.highlight .nn {
  color: #555555;
}
.highlight .nt {
  color: #000080;
}
.highlight .vc {
  color: #008080;
}
.highlight .vg {
  color: #008080;
}
.highlight .vi {
  color: #008080;
}
.highlight .nv, .highlight .vm {
  color: #008080;
}
.highlight .ow {
  color: #000000;
  font-weight: bold;
}
.highlight .o {
  color: #000000;
  font-weight: bold;
}
.highlight .w {
  color: #bbbbbb;
}
.highlight {
  background-color: #f8f8f8;
}

@media (prefers-color-scheme: dark) {
  .highlight table td { padding: 5px; }
  .highlight table pre { margin: 0; }
  .highlight, .highlight .w {
    color: #d0d0d0;
    background-color: #151515;
  }
  .highlight .err {
    color: #151515;
    background-color: #ac4142;
  }
  .highlight .c, .highlight .ch, .highlight .cd, .highlight .cm, .highlight .cpf, .highlight .c1, .highlight .cs {
    color: #505050;
  }
  .highlight .cp {
    color: #f4bf75;
  }
  .highlight .nt {
    color: #f4bf75;
  }
  .highlight .o, .highlight .ow {
    color: #d0d0d0;
  }
  .highlight .p, .highlight .pi {
    color: #d0d0d0;
  }
  .highlight .gi {
    color: #90a959;
  }
  .highlight .gd {
    color: #ac4142;
  }
  .highlight .gh {
    color: #6a9fb5;
    background-color: #151515;
    font-weight: bold;
  }
  .highlight .k, .highlight .kn, .highlight .kp, .highlight .kr, .highlight .kv {
    color: #aa759f;
  }
  .highlight .kc {
    color: #d28445;
  }
  .highlight .kt {
    color: #d28445;
  }
  .highlight .kd {
    color: #d28445;
  }
  .highlight .s, .highlight .sb, .highlight .sc, .highlight .dl, .highlight .sd, .highlight .s2, .highlight .sh, .highlight .sx, .highlight .s1 {
    color: #90a959;
  }
  .highlight .sa {
    color: #aa759f;
  }
  .highlight .sr {
    color: #75b5aa;
  }
  .highlight .si {
    color: #8f5536;
  }
  .highlight .se {
    color: #8f5536;
  }
  .highlight .nn {
    color: #f4bf75;
  }
  .highlight .nc {
    color: #f4bf75;
  }
  .highlight .no {
    color: #f4bf75;
  }
  .highlight .na {
    color: #6a9fb5;
  }
  .highlight .m, .highlight .mb, .highlight .mf, .highlight .mh, .highlight .mi, .highlight .il, .highlight .mo, .highlight .mx {
    color: #90a959;
  }
  .highlight .ss {
    color: #90a959;
  }
}

@media (prefers-color-scheme: dark) {
  /* base16.dark renders function names too dim against this background. */
  .highlight .nf, .highlight .fm { color: #7cafc2; }
  .highlight .cp, .highlight .cpf { color: #b8b8b8; }
}
