.highlighter-rouge {
  --base3:   #002b36;
  --base2:   #073642;
  /* --base1:   #586e75; */
  --base0:   #657b83;
  --base00:  #839496;
  --base01:  #93a1a1;
  --base02:  #eee8d5;
  /* --base03:  #fdf6e3; */

  --yellow:  #b58900;
  --orange:  #cb4b16;
  --red:     #dc322f;
  --magenta: #d33682;
  --violet:  #6c71c4;
  --blue:    #268bd2;
  --cyan:    #2aa198;
  --green:   #859900;

  @media (prefers-color-scheme: dark) {
    /* --base03:  #002b36; */
    --base02:  #073642;
    --base01:  #586e75;
    --base00:  #657b83;
    --base0:   #839496;
    /* --base1:   #93a1a1; */
    --base2:   #eee8d5;
    --base3:   #fdf6e3;

    --yellow:  #b58900;
    --orange:  #cb4b16;
    --red:     #dc322f;
    --magenta: #d33682;
    --violet:  #6c71c4;
    --blue:    #268bd2;
    --cyan:    #2aa198;
    --green:   #859900;
  }
}

div.highlight > pre.highlight {
  /* Solarized color scheme */
  background-color: var(--base03);

  > code {
    /* Text */
    color: var(--base0) !important;
    /* Text.Whitespace, 'w' */
    /* without Pygments */
    .w {
      color: var(--base01);
    }

    /* Escape, 'esc' */
    /* Error */
    .err {
      /* color: var(--base03); */
      color: inherit;
      background-color: var(--red);
    }
    /* Other,  'x' */
    .esc, .x {
      color: inherit;
      background-color: var(--violet);
    }

    /* Keyword */
    .k {
      color: var(--green);
    }
    /* Keyword.{Constant,Declaration} */
    .kc, .kd {
      color: var(--cyan);
    }
    /* Keyword.Namespace */
    .kn {
      color: var(--orange);
    }
    /* Keyword.Pseudo,      'kp' */
    /* Keyword.Reserved,    'kr' */
    /* Keyword.Type */
    .kt {
      color: var(--yellow);
    }
    /* Keyword.Variable,    'kv' */
    /* without Pygments */
    .kp {
      color: var(--cyan);
    }
    /* unknowns */
    .kr, .kv {
      color: var(--red);
    }

    /* Name, 'n' */
    /* Name.Attribute,    'na' */
    /* Name.{Builtin{,.Pseudo},Class,Constant,Decorator,Entity,Exception,Function{,.Magic}} */
    .nb, .bp, .nc, .no, .nd, .ni, .ne, .nf, .fm {
      color: var(--blue);
    }
    /* Name.Property,     'py' */
    /* Name.{Label,Namespace} */
    .nl, .nn {
      color: var(--blue);
    }
    /* Name.Other,        'nx' */
    /* Name.{Tag,Variable} */
    .nt, .nv {
      color: var(--blue);
    }
    /* Name.Variable.Class,      'vc' */
    /* Name.Variable.Global */
    .vg {
      color: var(--blue);
    }
    /* Name.Variable.Instance,   'vi' */
    /* Name.Variable.Magic */
    .vm {
      color: var(--blue);
    }
    /* without Pygments */
    .n {
      color: var(--orange);
    }
    .na {
      color: var(--yellow);
    }
    /* unknowns */
    .py, .nx, .vc, .vi {
      color: var(--red);
    }

    /* Literal,      'l' */
    /* Literal.Date,       'ld' */
    /* without Pygments */
    /* unknowns */
    .l, .ld {
      color: var(--red);
    }

    /* Literal.String */
    .s {
      color: var(--cyan);
    }
    /* Literal.String.Affix,     'sa' */
    /* Literal.String.Backtick,  'sb' */
    /* Literal.String.Char,      'sc' */
    /* Literal.String.Delimiter, 'dl' */
    /* Literal.String.Doc */
    .sd {
      color: var(--base01);
    }
    /* Literal.String.Double,    's2' */
    /* Literal.String.Escape,    'se' */
    /* Literal.String.Heredoc,   'sh' */
    /* Literal.String.Interpol,  'si' */
    /* Literal.String.Other,     'sx' */
    /* Literal.String.Regex */
    .sr {
      color: var(--orange);
    }
    /* Literal.String.Single,    's1' */
    /* Literal.String.Symbol,    'ss' */
    /* without Pygments */
    .s1, .s2 {
      color: var(--magenta);
    }
    .ss {
      color: var(--blue);
    }
    /* unknowns */
    .sa, .sb, .sc, .dl, .se, .sh, .si, .sx {
      color: var(--violet);
    }

    /* Literal.Number */
    .m {
      color: var(--cyan);
    }
    /* Literal.Number.Bin,      'mb' */
    /* Literal.Number.Float,    'mf' */
    /* Literal.Number.Hex,      'mh' */
    /* Literal.Number.Integer,  'mi' */
    /* Literal.Number.Integer.Long,   'il' */
    /* Literal.Number.Oct,      'mo' */
    /* Literal.Number.Other,    'mx' */
    /* without Pygments */
    .mi {
      color: var(--cyan);
    }
    /* unknowns */
    .mb, .mf, .mh, .il, .mo, .mx {
      color: var(--red);
    }

    /* Operator */
    .o {
      color: var(--base01);
    }
    /* Operator.Word */
    .ow {
      color: var(--orange);
    }

    /* Punctuation, 'p' */
    /* Punctuation.Indicator, 'pi' */
    /* without Pygments */
    .p, .pi {
      color: inherit;
    }

    /* Comment */
    .c {
      font-style: italic;
      color: var(--base01);
    }
    /* Comment.Hashbang */
    .ch {
      font-style: italic;
      color: var(--base01);
    }
    /* Comment.Doc,         'cd' */
    /* Comment.Multiline */
    .cm {
      font-style: italic;
      color: var(--base01);
    }
    /* Comment.Preproc */
    .cp {
      font-style: normal;
      color: var(--magenta);
    }
    /* Comment.PreprocFile */
    .cpf {
      font-style: normal;
      color: var(--base01);
    }
    /* Comment.Single,      'c1' */
    /* Comment.Special,     'cs' */
    /* without Pygments */
    .c1 {
      font-style: italic;
      font-weight: lighter;
      color: var(--base00);
    }
    /* unknowns */
    .cd, .cs {
      font-style: italic;
      color: var(--base01);
    }

    /* Generic */
    .g {
      color: var(--base0);
    }
    /* Generic.Deleted */
    .gd {
      color: var(--red);

      background-image: linear-gradient(to right, currentColor -75ex, transparent 30ex, transparent);
      background-color: transparent;
    }
    /* Generic.Emph */
    .ge {
      font-style: italic;
      color: var(--base0);
    }
    /* Generic.Error */
    .gr {
      color: var(--red);
    }
    /* Generic.Heading */
    .gh {
      font-weight: bold;
      color: var(--base0);
    }
    /* Generic.Inserted */
    .gi {
      color: var(--green);

      background-image: linear-gradient(to right, currentColor -75ex, transparent 30ex, transparent);
      background-color: transparent;
    }
    /* Generic.Output */
    .go {
      color: var(--base0);
    }
    /* Generic.Prompt */
    .gp {
      font-weight: bold;
      color: var(--blue);
    }
    /* Generic.Strong */
    .gs {
      font-weight: bold;
      color: var(--base0);
    }
    /* Generic.Subheading */
    .gu {
      text-decoration: underline;
      color: var(--base0);
    }
    /* Generic.Traceback */
    .gt {
      color: var(--blue);
    }
    /* Generic.Lineno,     'gl' */
    /* without Pygments */
    /* unknowns */
    .gl {
      font-weight: lighter;
      color: var(--base0);
    }
  }
}

div.highlighter-rouge {
  --padding-y: 0.3em;
  --padding-x: 1ex;

  &[data-filename] {
    background-color: var(--base03);
    padding: 0;

    border-radius: 3px;

    position: relative;

    &::before {
      content: attr(data-filename);
      display: block;
      width: fit-content;
      background-color: var(--base1);
      color: var(--base03);
      position: relative;
      z-index: 1;

      font-size: 85%;

      padding: 0 .5ex;
      margin: 0 0 0 var(--padding-x);
    }
  }

  > div.highlight {
    background-color: transparent;

    margin-bottom: 1rem;

    > pre.highlight {
      font-size: 85%;
      line-height: 1.3;

      padding: var(--padding-y) var(--padding-x);
      margin: 0;

      overflow-x: auto;

      > code {
        padding: 0;
        margin: 0;

        font-size: 100%;
        word-break: normal;
        white-space: pre;

        > span.line {
          padding-right: var(--padding-x);
        }
      }
    }
  }
  &:not(.language-console) {
    --lineno-width: 5ex;

    &[data-filename] {
      &::after {
        content: '';

        position: absolute;
        inset: 0;

        display: inline-block;
        font-size: 85%;
        width: var(--lineno-width);

        border-radius: inherit;

        background-color: var(--base02);
      }

      > div.highlight > pre.highlight {
        position: relative;
        z-index: 1;
      }
    }

    > div.highlight > pre.highlight {
      counter-reset: line-number;

      padding: 0;
      overscroll-behavior-x: none;
      padding-left: calc(var(--lineno-width) + var(--padding-x));

      > code > span.line {
        counter-increment: line-number;

        &::before {
          content: counter(line-number);

          text-align: right;

          position: sticky;
          inset: 0;

          display: inline-block;
          width: calc(var(--lineno-width) - var(--padding-x));
          padding-right: var(--padding-x);

          background-color: var(--base02);
          color: var(--base00);

          margin-right: calc(var(--lineno-width) * -1);
          translate: calc((var(--lineno-width) + var(--padding-x)) * -1);
        }

        &:first-child::before {
          padding-top: var(--padding-y);
        }

        &:last-child::before {
          padding-bottom: var(--padding-y);
        }
      }
    }
  }
}
