:root {
  /* Tomorrow (base16) */
  --base00: #ffffff;
  --base01: #e0e0e0;
  --base02: #d6d6d6;
  --base03: #8e908c;
  --base04: #969896;
  --base05: #4d4d4c;
  --base06: #282a2e;
  --base07: #1d1f21;
  --base08: #c82829;
  --base09: #f5871f;
  --base0A: #eab700;
  --base0B: #718c00;
  --base0C: #3e999f;
  --base0D: #4271ae;
  --base0E: #8959a8;
  --base0F: #a3685a;
}

/* Any dark-mode overrides */
@media (prefers-color-scheme: dark) {
  :root {
    /* Tomorrow Night (base16) */
    --base00: #1d1f21;
    --base01: #282a2e;
    --base02: #373b41;
    --base03: #969896;
    --base04: #b4b7b4;
    --base05: #c5c8c6;
    --base06: #e0e0e0;
    --base07: #ffffff;
    --base08: #cc6666;
    --base09: #de935f;
    --base0A: #f0c674;
    --base0B: #b5bd68;
    --base0C: #8abeb7;
    --base0D: #81a2be;
    --base0E: #b294bb;
    --base0F: #a3685a;
  }
}

.chroma { color: var(--text); }

.chroma .hll { background-color: var(--base02) }
.chroma .c { color: var(--base03) } /* Comment */
.chroma .err { color: var(--base08) } /* Error */
.chroma .k { color: var(--base0E) } /* Keyword */
.chroma .l { color: var(--base09) } /* Literal */
.chroma .n { color: var(--base07) } /* Name */
.chroma .o { color: var(--base0C) } /* Operator */
.chroma .p { color: var(--base07) } /* Punctuation */
.chroma .cm { color: var(--base03) } /* Comment.Multiline */
.chroma .cp { color: var(--base03) } /* Comment.Preproc */
.chroma .c1 { color: var(--base03) } /* Comment.Single */
.chroma .cs { color: var(--base03) } /* Comment.Special */
.chroma .gd { color: var(--base08) } /* Generic.Deleted */
.chroma .ge { font-style: italic } /* Generic.Emph */
.chroma .gh { color: var(--base07); font-weight: bold } /* Generic.Heading */
.chroma .gi { color: var(--base0B) } /* Generic.Inserted */
.chroma .gp { color: var(--base03); font-weight: bold } /* Generic.Prompt */
.chroma .gs { font-weight: bold } /* Generic.Strong */
.chroma .gu { color: var(--base0C); font-weight: bold } /* Generic.Subheading */
.chroma .kc { color: var(--base0E) } /* Keyword.Constant */
.chroma .kd { color: var(--base0E) } /* Keyword.Declaration */
.chroma .kn { color: var(--base0C) } /* Keyword.Namespace */
.chroma .kp { color: var(--base0E) } /* Keyword.Pseudo */
.chroma .kr { color: var(--base0E) } /* Keyword.Reserved */
.chroma .kt { color: var(--base0A) } /* Keyword.Type */
.chroma .ld { color: var(--base0B) } /* Literal.Date */
.chroma .m { color: var(--base09) } /* Literal.Number */
.chroma .s { color: var(--base0B) } /* Literal.String */
.chroma .na { color: var(--base0D) } /* Name.Attribute */
.chroma .nb { color: var(--base07) } /* Name.Builtin */
.chroma .nc { color: var(--base0A) } /* Name.Class */
.chroma .no { color: var(--base08) } /* Name.Constant */
.chroma .nd { color: var(--base0C) } /* Name.Decorator */
.chroma .ni { color: var(--base07) } /* Name.Entity */
.chroma .ne { color: var(--base08) } /* Name.Exception */
.chroma .nf { color: var(--base0D) } /* Name.Function */
.chroma .nl { color: var(--base07) } /* Name.Label */
.chroma .nn { color: var(--base0A) } /* Name.Namespace */
.chroma .nx { color: var(--base0D) } /* Name.Other */
.chroma .py { color: var(--base07) } /* Name.Property */
.chroma .nt { color: var(--base0C) } /* Name.Tag */
.chroma .nv { color: var(--base08) } /* Name.Variable */
.chroma .ow { color: var(--base0C) } /* Operator.Word */
.chroma .w { color: var(--base07) } /* Text.Whitespace */
.chroma .mf { color: var(--base09) } /* Literal.Number.Float */
.chroma .mh { color: var(--base09) } /* Literal.Number.Hex */
.chroma .mi { color: var(--base09) } /* Literal.Number.Integer */
.chroma .mo { color: var(--base09) } /* Literal.Number.Oct */
.chroma .sb { color: var(--base0B) } /* Literal.String.Backtick */
.chroma .sc { color: var(--base07) } /* Literal.String.Char */
.chroma .sd { color: var(--base03) } /* Literal.String.Doc */
.chroma .s2 { color: var(--base0B) } /* Literal.String.Double */
.chroma .se { color: var(--base09) } /* Literal.String.Escape */
.chroma .sh { color: var(--base0B) } /* Literal.String.Heredoc */
.chroma .si { color: var(--base09) } /* Literal.String.Interpol */
.chroma .sx { color: var(--base0B) } /* Literal.String.Other */
.chroma .sr { color: var(--base0B) } /* Literal.String.Regex */
.chroma .s1 { color: var(--base0B) } /* Literal.String.Single */
.chroma .ss { color: var(--base0B) } /* Literal.String.Symbol */
.chroma .bp { color: var(--base07) } /* Name.Builtin.Pseudo */
.chroma .vc { color: var(--base08) } /* Name.Variable.Class */
.chroma .vg { color: var(--base08) } /* Name.Variable.Global */
.chroma .vi { color: var(--base08) } /* Name.Variable.Instance */
.chroma .il { color: var(--base09) } /* Literal.Number.Integer.Long */
