:root{
  --primary: #1f2a44;
  --accent: #c2410c;
  --rule: #d8dee9;
  --font-heading: 'Iowan Old Style', 'Palatino Linotype', Palatino, Georgia, serif;
  --font-body: 'Iowan Old Style', 'Palatino Linotype', Palatino, Georgia, serif;
  --font-code: 'JetBrains Mono', 'Cascadia Mono', Consolas, 'Courier New', monospace;
}

/* ===========================================================================
   King Coding — web theme for the free editions and the landing page.
   Colour + font variables are injected above this file at build time from
   templates/series.yml (bookkit/web.py::_stylesheet).
   =========================================================================== */

:root {
  --bg: #fbfaf8;
  --fg: #1c1c1c;
  --muted: #5c5852;
  --rule-web: #e6e0d6;
  --card: #f2eee7;
  --code-bg: #f6f7f9;
  --code-border: #e5e7eb;
  --link: var(--accent);
  --ui-font: system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
}

@media (prefers-color-scheme: dark) {
  :root {
    --bg: #15171a;
    --fg: #e7e4de;
    --muted: #a2a09a;
    --rule-web: #2b2e33;
    --card: #1d2024;
    --code-bg: #f4f3f0;   /* code stays on a light panel; the syntax theme is light */
    --code-border: #d8d4cc;
    --link: #e8843f;
  }
}

* { box-sizing: border-box; }

html { font-size: 18px; -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }

body {
  margin: 0;
  background: var(--bg);
  color: var(--fg);
  font-family: var(--font-body);
  line-height: 1.65;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
}

a { color: var(--link); text-decoration: none; }
a:hover { text-decoration: underline; }

h1, h2, h3, h4 { font-family: var(--font-heading); line-height: 1.2; color: var(--fg); }

img, svg { max-width: 100%; }

/* --------------------------------------------------------------------------- */
/* Header + footer                                                             */
/* --------------------------------------------------------------------------- */
.site-header {
  position: sticky;
  top: 0;
  z-index: 20;
  display: flex;
  align-items: center;
  gap: 1rem;
  padding: 0.7rem clamp(1rem, 4vw, 2.5rem);
  background: color-mix(in srgb, var(--bg) 86%, transparent);
  backdrop-filter: blur(8px);
  border-bottom: 1px solid var(--rule-web);
}
.brand {
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 1.15rem;
  color: var(--fg);
  white-space: nowrap;
}
.brand:hover { text-decoration: none; }
.header-actions { margin-left: auto; display: flex; align-items: center; gap: 0.75rem; }
.header-book {
  font-family: var(--ui-font);
  font-size: 0.9rem;
  color: var(--muted);
  max-width: 40vw;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.site-footer {
  margin-top: 4rem;
  padding: 2rem clamp(1rem, 4vw, 2.5rem);
  border-top: 1px solid var(--rule-web);
  font-family: var(--ui-font);
  font-size: 0.85rem;
  color: var(--muted);
}
.site-footer a { color: var(--muted); text-decoration: underline; }

/* --------------------------------------------------------------------------- */
/* Buttons                                                                     */
/* --------------------------------------------------------------------------- */
.btn {
  display: inline-block;
  font-family: var(--ui-font);
  font-size: 0.9rem;
  font-weight: 600;
  padding: 0.5rem 0.95rem;
  border-radius: 7px;
  border: 1px solid transparent;
  cursor: pointer;
  white-space: nowrap;
}
.btn:hover { text-decoration: none; }
.btn-pdf, .btn-primary {
  background: var(--accent);
  color: #fff;
}
.btn-pdf:hover, .btn-primary:hover { filter: brightness(1.08); }
.btn-ghost {
  background: transparent;
  border-color: currentColor;
  color: var(--fg);
}
.btn-ghost:hover { background: color-mix(in srgb, var(--fg) 8%, transparent); }

.menu-toggle {
  display: none;
  font-family: var(--ui-font);
  font-size: 0.85rem;
  font-weight: 600;
  padding: 0.4rem 0.7rem;
  background: transparent;
  border: 1px solid var(--rule-web);
  border-radius: 7px;
  color: var(--fg);
  cursor: pointer;
}

/* --------------------------------------------------------------------------- */
/* Reader layout: sidebar + content                                            */
/* --------------------------------------------------------------------------- */
.reader-layout {
  max-width: 1180px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 270px minmax(0, 1fr);
  gap: clamp(1.5rem, 4vw, 3.5rem);
  padding: 1.5rem clamp(1rem, 4vw, 2.5rem) 0;
}

.sidebar {
  position: sticky;
  top: 4.5rem;
  align-self: start;
  max-height: calc(100vh - 6rem);
  overflow-y: auto;
  font-family: var(--ui-font);
  font-size: 0.9rem;
}
.sidebar-title {
  display: block;
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 0.95rem;
  color: var(--fg);
  margin-bottom: 0.75rem;
  padding-bottom: 0.6rem;
  border-bottom: 1px solid var(--rule-web);
}
.sidebar-list { list-style: none; margin: 0; padding: 0; }
.sidebar-list > li { margin: 0.1rem 0; }
.sidebar-list > li > a {
  display: block;
  padding: 0.28rem 0.5rem;
  border-radius: 6px;
  color: var(--muted);
  line-height: 1.4;
}
.sidebar-list > li > a:hover { color: var(--fg); background: var(--card); text-decoration: none; }
.sidebar-list > li.current > a { color: var(--fg); font-weight: 600; background: var(--card); }
.sidebar-sub { list-style: none; margin: 0.15rem 0 0.4rem; padding: 0 0 0 0.9rem; }
.sidebar-sub a {
  display: block;
  padding: 0.18rem 0.4rem;
  font-size: 0.85rem;
  color: var(--muted);
  border-left: 2px solid var(--rule-web);
}
.sidebar-sub a:hover { color: var(--fg); border-left-color: var(--accent); text-decoration: none; }

.content { min-width: 0; padding-bottom: 2rem; }

/* --------------------------------------------------------------------------- */
/* Prose                                                                       */
/* --------------------------------------------------------------------------- */
.prose { max-width: 44rem; }
.prose .kicker {
  font-family: var(--ui-font);
  font-size: 0.8rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--accent);
  margin: 0 0 0.4rem;
}
.prose h1 { font-size: 2rem; margin: 0 0 1.5rem; }
.prose h2 {
  font-size: 1.4rem;
  margin: 2.5rem 0 0.8rem;
  padding-bottom: 0.3rem;
  border-bottom: 1px solid var(--rule-web);
}
.prose h3 { font-size: 1.15rem; margin: 1.8rem 0 0.5rem; }
.prose h4 {
  font-size: 0.95rem;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  margin: 1.5rem 0 0.4rem;
}
.prose p { margin: 0 0 1.1rem; }
.prose ul, .prose ol { margin: 0 0 1.1rem; padding-left: 1.5rem; }
.prose li { margin: 0.3rem 0; }
.prose li > ul, .prose li > ol { margin: 0.3rem 0; }
.prose strong { font-weight: 700; }
.prose hr { border: 0; border-top: 1px solid var(--rule-web); margin: 2.5rem 0; }

.prose blockquote {
  margin: 1.4rem 0;
  padding: 0.3rem 0 0.3rem 1.1rem;
  border-left: 3px solid var(--rule-web);
  color: var(--muted);
  font-style: italic;
}

/* inline code */
.prose :not(pre) > code {
  font-family: var(--font-code);
  font-size: 0.86em;
  background: var(--card);
  padding: 0.12em 0.38em;
  border-radius: 4px;
  color: var(--fg);
}

/* --------------------------------------------------------------------------- */
/* Code blocks + output panels                                                 */
/* --------------------------------------------------------------------------- */
.highlight, .codehilite {
  margin: 1.4rem 0;
  background: var(--code-bg);
  border: 1px solid var(--code-border);
  border-left: 3px solid var(--primary);
  border-radius: 6px;
  overflow: hidden;
}
.highlight pre, .codehilite pre {
  margin: 0;
  padding: 0.9rem 1rem;
  overflow-x: auto;
  font-family: var(--font-code);
  font-size: 0.82rem;
  line-height: 1.55;
  color: #1c1c1c;
  white-space: pre;
}
.highlight code, .codehilite code { font-family: inherit; background: none; padding: 0; }

.highlight:has(+ .io-output),
.codehilite:has(+ .io-output) {
  margin-bottom: 0;
  border-bottom-left-radius: 0;
  border-bottom-right-radius: 0;
}
.io-output, .io-console {
  margin: 0 0 1.4rem;
  background: color-mix(in srgb, var(--code-bg) 60%, #fff);
  border: 1px solid var(--code-border);
  border-top: 1px dashed var(--code-border);
  border-radius: 0 0 6px 6px;
}
.io-console { margin-top: 1.4rem; border-top: 1px solid var(--code-border); border-radius: 6px; }
.io-output .io-label, .io-console .io-label {
  display: block;
  font-family: var(--ui-font);
  font-size: 0.68rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #8a8f98;
  padding: 0.5rem 1rem 0;
}
.io-output pre, .io-console pre {
  margin: 0;
  padding: 0.3rem 1rem 0.8rem;
  overflow-x: auto;
  font-family: var(--font-code);
  font-size: 0.8rem;
  line-height: 1.5;
  color: #333;
  white-space: pre;
}

/* --------------------------------------------------------------------------- */
/* Admonitions                                                                 */
/* --------------------------------------------------------------------------- */
.admonition {
  margin: 1.5rem 0;
  padding: 0.9rem 1.1rem;
  border: 1px solid var(--rule-web);
  border-left: 4px solid var(--accent);
  border-radius: 6px;
  background: var(--card);
  font-size: 0.96rem;
}
.admonition > :last-child { margin-bottom: 0; }
.admonition-title { font-family: var(--font-heading); font-weight: 700; margin: 0 0 0.4rem; }
.admonition.tip { border-left-color: #0f766e; }
.admonition.warning { border-left-color: #b45309; }
.admonition.danger { border-left-color: #b91c1c; }
.admonition.note { border-left-color: #1d4ed8; }
.admonition.question { border-left-color: #6d28d9; }

/* --------------------------------------------------------------------------- */
/* Tables                                                                      */
/* --------------------------------------------------------------------------- */
.prose table {
  width: 100%;
  border-collapse: collapse;
  margin: 1.4rem 0;
  font-size: 0.92rem;
  display: block;
  overflow-x: auto;
}
.prose th, .prose td {
  border: 1px solid var(--rule-web);
  padding: 0.5rem 0.7rem;
  text-align: left;
  vertical-align: top;
}
.prose th { background: var(--card); font-family: var(--font-heading); }

/* --------------------------------------------------------------------------- */
/* Pager + buy card                                                            */
/* --------------------------------------------------------------------------- */
.pager {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  margin: 3rem 0 0;
  max-width: 44rem;
}
.pager-link {
  flex: 1;
  max-width: 48%;
  padding: 0.8rem 1rem;
  border: 1px solid var(--rule-web);
  border-radius: 8px;
  font-family: var(--ui-font);
  font-size: 0.95rem;
  color: var(--fg);
}
.pager-link:hover { border-color: var(--accent); text-decoration: none; }
.pager-link span {
  display: block;
  font-size: 0.72rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--muted);
  margin-bottom: 0.2rem;
}
.pager-next { text-align: right; }

.buy-card {
  margin: 2.5rem 0 0;
  padding: 1.2rem 1.4rem;
  background: var(--card);
  border: 1px solid var(--rule-web);
  border-radius: 10px;
  max-width: 44rem;
}
.buy-card p { margin: 0 0 0.9rem; font-size: 0.95rem; color: var(--muted); }
.buy-card.wide { max-width: none; margin-top: 3rem; }
.buy-card h3 { margin: 0 0 0.5rem; font-size: 1.1rem; }

/* --------------------------------------------------------------------------- */
/* Book landing page                                                           */
/* --------------------------------------------------------------------------- */
.book-hero {
  --cover-fill: rgba(0, 0, 0, 0.22);
  background: var(--track, var(--primary));
  color: #fff;
  padding: clamp(1.8rem, 5vw, 3.5rem) clamp(1.2rem, 4vw, 3rem);
  max-width: 1000px;
  margin: 1.5rem auto 0;
  border-radius: 16px;
  display: grid;
  grid-template-columns: 190px minmax(0, 1fr);
  gap: clamp(1.5rem, 4vw, 3rem);
  align-items: center;
}
.book-hero-illo {
  display: flex;
  align-items: center;
  justify-content: center;
}
.book-hero-illo svg { width: 100%; height: auto; }
.book-hero-text .eyebrow {
  font-family: var(--ui-font);
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.75);
  margin: 0 0 0.5rem;
}
.book-hero-text h1 { font-size: clamp(1.8rem, 5vw, 2.6rem); margin: 0 0 0.5rem; color: #fff; }
.book-hero-text .lede { color: rgba(255, 255, 255, 0.88); }
.book-hero .btn-primary { background: #fff; color: #1c1c1c; }
.book-hero .btn-primary:hover { background: rgba(255, 255, 255, 0.9); }
.book-hero .btn-ghost { border-color: rgba(255, 255, 255, 0.55); color: #fff; }
.book-hero .btn-ghost:hover { background: rgba(255, 255, 255, 0.14); }
.lede { font-size: 1.1rem; color: var(--muted); margin: 0 0 1.2rem; }
.hero-actions, .home-book-actions { display: flex; flex-wrap: wrap; gap: 0.7rem; }

.book-body {
  max-width: 46rem;
  margin: 2.5rem auto 0;
  padding: 0 clamp(1rem, 4vw, 2.5rem);
}
.book-blurb { font-size: 1.05rem; }
.book-body h2 { font-size: 1.4rem; margin: 2.5rem 0 1rem; }
.book-contents { list-style: none; margin: 0; padding: 0; counter-reset: c; }
.book-contents li { margin: 0; }
.book-contents a {
  display: block;
  padding: 0.6rem 0.2rem;
  border-bottom: 1px solid var(--rule-web);
  color: var(--fg);
}
.book-contents a:hover { color: var(--accent); text-decoration: none; }

/* --------------------------------------------------------------------------- */
/* King Coding landing page                                                    */
/* --------------------------------------------------------------------------- */
.home-hero {
  max-width: 46rem;
  margin: clamp(2rem, 8vw, 5rem) auto 0;
  padding: 0 clamp(1rem, 4vw, 2.5rem);
  text-align: center;
}
.home-hero h1 { font-size: clamp(2rem, 6vw, 3rem); margin: 0 0 0.6rem; }
.home-hero .byline { font-family: var(--ui-font); font-size: 0.95rem; color: var(--muted); }

.home-books {
  max-width: 52rem;
  margin: 3rem auto 0;
  padding: 0 clamp(1rem, 4vw, 2.5rem);
  display: flex;
  flex-direction: column;
  gap: 2rem;
}
.home-book {
  display: grid;
  grid-template-columns: 160px minmax(0, 1fr);
  gap: clamp(1rem, 4vw, 2rem);
  padding: 1.5rem;
  border: 1px solid var(--rule-web);
  border-radius: 14px;
  align-items: center;
}
.home-book-illo {
  --cover-fill: rgba(0, 0, 0, 0.22);
  background: var(--track, var(--primary));
  border-radius: 12px;
  padding: 1rem;
}
.home-book-illo svg { width: 100%; height: auto; }
.home-book-text h2 { font-size: 1.4rem; margin: 0 0 0.3rem; }
.home-book-text p { margin: 0 0 0.9rem; }
.home-book-text .lede { font-size: 1rem; margin-bottom: 0.6rem; }

.home-newsletter {
  max-width: 40rem;
  margin: 4rem auto 0;
  padding: 2rem clamp(1rem, 4vw, 2.5rem);
  text-align: center;
}
.home-newsletter form { display: flex; gap: 0.6rem; justify-content: center; flex-wrap: wrap; margin-top: 1rem; }
.home-newsletter input {
  font: inherit;
  padding: 0.55rem 0.8rem;
  border: 1px solid var(--rule-web);
  border-radius: 7px;
  background: var(--bg);
  color: var(--fg);
  min-width: 15rem;
}
.home-newsletter button {
  font-family: var(--ui-font);
  font-weight: 600;
  padding: 0.55rem 1.1rem;
  border: 0;
  border-radius: 7px;
  background: var(--accent);
  color: #fff;
  cursor: pointer;
}

/* --------------------------------------------------------------------------- */
/* Responsive                                                                  */
/* --------------------------------------------------------------------------- */
@media (max-width: 900px) {
  html { font-size: 17px; }
  .site-header { flex-wrap: wrap; gap: 0.5rem 0.6rem; padding: 0.6rem 1rem; }
  .brand { font-size: 1.05rem; }
  .header-actions { gap: 0.5rem; margin-left: auto; }
  .site-header .btn { font-size: 0.82rem; padding: 0.4rem 0.7rem; }
  .prose h1 { font-size: 1.65rem; }
  .prose h2 { font-size: 1.25rem; }
  .reader-layout { grid-template-columns: minmax(0, 1fr); }
  .sidebar {
    position: static;
    max-height: none;
    display: none;
    margin-bottom: 1.5rem;
    padding-bottom: 1rem;
    border-bottom: 1px solid var(--rule-web);
  }
  .sidebar.open { display: block; }
  .menu-toggle { display: inline-block; }
  .header-book { display: none; }
  .book-hero { grid-template-columns: minmax(0, 1fr); text-align: center; }
  .book-hero-illo { max-width: 200px; margin: 0 auto; }
  .hero-actions { justify-content: center; }
  .home-book { grid-template-columns: minmax(0, 1fr); }
  .home-book-illo { max-width: 160px; }
  .pager { flex-direction: column; }
  .pager-link { max-width: none; }
  .pager-next { text-align: left; }
}

/* --- syntax --- */
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; }
.highlight .hll, .codehilite .hll { background-color: #ffffcc }
.highlight , .codehilite { background: #f8f8f8; }
.highlight .c, .codehilite .c { color: #3D7B7B; font-style: italic } /* Comment */
.highlight .err, .codehilite .err { border: 1px solid #F00 } /* Error */
.highlight .k, .codehilite .k { color: #008000; font-weight: bold } /* Keyword */
.highlight .o, .codehilite .o { color: #666 } /* Operator */
.highlight .ch, .codehilite .ch { color: #3D7B7B; font-style: italic } /* Comment.Hashbang */
.highlight .cm, .codehilite .cm { color: #3D7B7B; font-style: italic } /* Comment.Multiline */
.highlight .cp, .codehilite .cp { color: #9C6500 } /* Comment.Preproc */
.highlight .cpf, .codehilite .cpf { color: #3D7B7B; font-style: italic } /* Comment.PreprocFile */
.highlight .c1, .codehilite .c1 { color: #3D7B7B; font-style: italic } /* Comment.Single */
.highlight .cs, .codehilite .cs { color: #3D7B7B; font-style: italic } /* Comment.Special */
.highlight .gd, .codehilite .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge, .codehilite .ge { font-style: italic } /* Generic.Emph */
.highlight .ges, .codehilite .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */
.highlight .gr, .codehilite .gr { color: #E40000 } /* Generic.Error */
.highlight .gh, .codehilite .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi, .codehilite .gi { color: #008400 } /* Generic.Inserted */
.highlight .go, .codehilite .go { color: #717171 } /* Generic.Output */
.highlight .gp, .codehilite .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
.highlight .gs, .codehilite .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu, .codehilite .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt, .codehilite .gt { color: #04D } /* Generic.Traceback */
.highlight .kc, .codehilite .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
.highlight .kd, .codehilite .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
.highlight .kn, .codehilite .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
.highlight .kp, .codehilite .kp { color: #008000 } /* Keyword.Pseudo */
.highlight .kr, .codehilite .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
.highlight .kt, .codehilite .kt { color: #B00040 } /* Keyword.Type */
.highlight .m, .codehilite .m { color: #666 } /* Literal.Number */
.highlight .s, .codehilite .s { color: #BA2121 } /* Literal.String */
.highlight .na, .codehilite .na { color: #687822 } /* Name.Attribute */
.highlight .nb, .codehilite .nb { color: #008000 } /* Name.Builtin */
.highlight .nc, .codehilite .nc { color: #00F; font-weight: bold } /* Name.Class */
.highlight .no, .codehilite .no { color: #800 } /* Name.Constant */
.highlight .nd, .codehilite .nd { color: #A2F } /* Name.Decorator */
.highlight .ni, .codehilite .ni { color: #717171; font-weight: bold } /* Name.Entity */
.highlight .ne, .codehilite .ne { color: #CB3F38; font-weight: bold } /* Name.Exception */
.highlight .nf, .codehilite .nf { color: #00F } /* Name.Function */
.highlight .nl, .codehilite .nl { color: #767600 } /* Name.Label */
.highlight .nn, .codehilite .nn { color: #00F; font-weight: bold } /* Name.Namespace */
.highlight .nt, .codehilite .nt { color: #008000; font-weight: bold } /* Name.Tag */
.highlight .nv, .codehilite .nv { color: #19177C } /* Name.Variable */
.highlight .ow, .codehilite .ow { color: #A2F; font-weight: bold } /* Operator.Word */
.highlight .w, .codehilite .w { color: #BBB } /* Text.Whitespace */
.highlight .mb, .codehilite .mb { color: #666 } /* Literal.Number.Bin */
.highlight .mf, .codehilite .mf { color: #666 } /* Literal.Number.Float */
.highlight .mh, .codehilite .mh { color: #666 } /* Literal.Number.Hex */
.highlight .mi, .codehilite .mi { color: #666 } /* Literal.Number.Integer */
.highlight .mo, .codehilite .mo { color: #666 } /* Literal.Number.Oct */
.highlight .sa, .codehilite .sa { color: #BA2121 } /* Literal.String.Affix */
.highlight .sb, .codehilite .sb { color: #BA2121 } /* Literal.String.Backtick */
.highlight .sc, .codehilite .sc { color: #BA2121 } /* Literal.String.Char */
.highlight .dl, .codehilite .dl { color: #BA2121 } /* Literal.String.Delimiter */
.highlight .sd, .codehilite .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
.highlight .s2, .codehilite .s2 { color: #BA2121 } /* Literal.String.Double */
.highlight .se, .codehilite .se { color: #AA5D1F; font-weight: bold } /* Literal.String.Escape */
.highlight .sh, .codehilite .sh { color: #BA2121 } /* Literal.String.Heredoc */
.highlight .si, .codehilite .si { color: #A45A77; font-weight: bold } /* Literal.String.Interpol */
.highlight .sx, .codehilite .sx { color: #008000 } /* Literal.String.Other */
.highlight .sr, .codehilite .sr { color: #A45A77 } /* Literal.String.Regex */
.highlight .s1, .codehilite .s1 { color: #BA2121 } /* Literal.String.Single */
.highlight .ss, .codehilite .ss { color: #19177C } /* Literal.String.Symbol */
.highlight .bp, .codehilite .bp { color: #008000 } /* Name.Builtin.Pseudo */
.highlight .fm, .codehilite .fm { color: #00F } /* Name.Function.Magic */
.highlight .vc, .codehilite .vc { color: #19177C } /* Name.Variable.Class */
.highlight .vg, .codehilite .vg { color: #19177C } /* Name.Variable.Global */
.highlight .vi, .codehilite .vi { color: #19177C } /* Name.Variable.Instance */
.highlight .vm, .codehilite .vm { color: #19177C } /* Name.Variable.Magic */
.highlight .il, .codehilite .il { color: #666 } /* Literal.Number.Integer.Long */