body {
   max-width: 70ch;
   padding: 3em 1em;
   margin: auto;
   line-height: 1.5;
   font-size: 1.05em;
   font-family: sans-serif;
}

h2 {
   font-size: 1.6em;
   font-weight: 600;
   margin-top: 0;
   margin-bottom: 0.6em;
   border-bottom: 2px solid #444;
   padding-bottom: 0.2em;
}

h1, h2, h3, h4, h5, h6 {
   color: #000;
}

a {
   color: #004080;
}

h2 a {
   color: inherit;
   text-decoration: none;
}

.article-topic {
   font-size: small;
   padding-top: 4em;
   color: #444;
   margin: 0 0 0.2em 0;
   font-style: italic;
}

.article-meta {
   font-size: 0.85em;
   color: #444;
   font-style: italic;
}


.article-sep {
   margin: 6em 0;
}

.article img {
   max-width: 100%;
   height: auto;
   display: block;
   margin: 1em auto;
}

blockquote {
   margin: 1.5em 0;
   padding: 0.8em 1.2em;
   border-left: 4px solid #999;
   background: #d9d9d9;
   font-style: italic;
}

blockquote p {
   margin: 0;
}

blockquote p + p {
   margin-top: 0.8em;
}

.license-footer {
   font-style: italic;
   color: #444;
   font-size: 0.9em;
   text-align: center;
   margin-top: 40px;
   padding: 15px 10px;
   border-top: 1px solid #ddd;
}

.series-box {
   background-color: #f9f9f9;
   border: 1px solid #ddd;
   padding: 1em;
   margin: 2em 0;
   font-size: 0.95em;
   border-radius: 8px;
   box-shadow: 0 2px 5px rgba(0,0,0,0.05);
}

.series-box h1, .series-box h2, .series-box h3 {
   margin-top: 0;
}

.site-banner {
   display: flex;
   align-items: center;
   padding: 0px 20px 10px 0px;
   font-family: sans-serif;
   gap: 40px;
   justify-content: space-between;
   border-bottom: 4px dashed #444;
}

.site-banner a {
   color: #000;
   text-decoration: none;
   display: flex;
   align-items: center;
}

.logo a {
   gap: 15px;
   font-size: 1.5em;
   font-weight: bold;
}

.site-nav {
   display: flex;
   gap: 30px;
   font-style: italic;
}

.archive-link {
   margin-top: 5em;
   display: block;
   font-size: 0.95em;
   color: #555;
   font-style: italic;
}

.date {
    display: inline-block;
    width: 7em;
    margin-right: 0.5em;
    white-space: nowrap;
}

code {
  word-break: break-all;
}

.codehilite {
   background: #222;
   color: #f8f8f2;
   padding: 0.25em 1em;
   border-radius: 6px;
   overflow-x: auto;
}

pre { line-height: 140%; }
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; }
.hll { background-color: #49483e }
.c { color: #95917e } /* Comment */
.err { color: #960050; background-color: #1e0010 } /* Error */
.esc { color: #f8f8f2 } /* Escape */
.g { color: #f8f8f2 } /* Generic */
.k { color: #66d9ef } /* Keyword */
.l { color: #ae81ff } /* Literal */
.n { color: #f8f8f2 } /* Name */
.o { color: #f92672 } /* Operator */
.x { color: #f8f8f2 } /* Other */
.p { color: #f8f8f2 } /* Punctuation */
.ch { color: #95917e } /* Comment.Hashbang */
.cm { color: #95917e } /* Comment.Multiline */
.cp { color: #ff66ff } /* Comment.Preproc */
.cpf { color: #ff66ff } /* Comment.PreprocFile */
.c1 { color: #95917e } /* Comment.Single */
.cs { color: #95917e } /* Comment.Special */
.gd { color: #f92672 } /* Generic.Deleted */
.ge { color: #f8f8f2; font-style: italic } /* Generic.Emph */
.gr { color: #f8f8f2 } /* Generic.Error */
.gh { color: #f8f8f2 } /* Generic.Heading */
.gi { color: #a6e22e } /* Generic.Inserted */
.go { color: #66d9ef } /* Generic.Output */
.gp { color: #f92672; font-weight: bold } /* Generic.Prompt */
.gs { color: #f8f8f2; font-weight: bold } /* Generic.Strong */
.gu { color: #95917e } /* Generic.Subheading */
.gt { color: #f8f8f2 } /* Generic.Traceback */
.kc { color: #66d9ef } /* Keyword.Constant */
.kd { color: #66d9ef } /* Keyword.Declaration */
.kn { color: #f92672 } /* Keyword.Namespace */
.kp { color: #66d9ef } /* Keyword.Pseudo */
.kr { color: #66d9ef } /* Keyword.Reserved */
.kt { color: #66d9ef } /* Keyword.Type */
.ld { color: #e6db74 } /* Literal.Date */
.m { color: #ae81ff } /* Literal.Number */
.s { color: #e6db74 } /* Literal.String */
.na { color: #a6e22e } /* Name.Attribute */
.nb { color: #f8f8f2 } /* Name.Builtin */
.nc { color: #a6e22e } /* Name.Class */
.no { color: #66d9ef } /* Name.Constant */
.nd { color: #a6e22e } /* Name.Decorator */
.ni { color: #f8f8f2 } /* Name.Entity */
.ne { color: #a6e22e } /* Name.Exception */
.nf { color: #a6e22e } /* Name.Function */
.nl { color: #f8f8f2 } /* Name.Label */
.nn { color: #f8f8f2 } /* Name.Namespace */
.nx { color: #a6e22e } /* Name.Other */
.py { color: #f8f8f2 } /* Name.Property */
.nt { color: #f92672 } /* Name.Tag */
.nv { color: #f8f8f2 } /* Name.Variable */
.ow { color: #f92672 } /* Operator.Word */
.w { color: #f8f8f2 } /* Text.Whitespace */
.mb { color: #ae81ff } /* Literal.Number.Bin */
.mf { color: #ae81ff } /* Literal.Number.Float */
.mh { color: #ae81ff } /* Literal.Number.Hex */
.mi { color: #ae81ff } /* Literal.Number.Integer */
.mo { color: #ae81ff } /* Literal.Number.Oct */
.sa { color: #e6db74 } /* Literal.String.Affix */
.sb { color: #e6db74 } /* Literal.String.Backtick */
.sc { color: #e6db74 } /* Literal.String.Char */
.dl { color: #e6db74 } /* Literal.String.Delimiter */
.sd { color: #e6db74 } /* Literal.String.Doc */
.s2 { color: #e6db74 } /* Literal.String.Double */
.se { color: #ae81ff } /* Literal.String.Escape */
.sh { color: #e6db74 } /* Literal.String.Heredoc */
.si { color: #e6db74 } /* Literal.String.Interpol */
.sx { color: #e6db74 } /* Literal.String.Other */
.sr { color: #e6db74 } /* Literal.String.Regex */
.s1 { color: #e6db74 } /* Literal.String.Single */
.ss { color: #e6db74 } /* Literal.String.Symbol */
.bp { color: #f8f8f2 } /* Name.Builtin.Pseudo */
.fm { color: #a6e22e } /* Name.Function.Magic */
.vc { color: #f8f8f2 } /* Name.Variable.Class */
.vg { color: #f8f8f2 } /* Name.Variable.Global */
.vi { color: #f8f8f2 } /* Name.Variable.Instance */
.vm { color: #f8f8f2 } /* Name.Variable.Magic */
.il { color: #ae81ff } /* Literal.Number.Integer.Long */

@media print {
   /* reset the container */
   .codehilite {
      background: none !important;
      color: #000 !important;
      border: 1px solid #999;  /* optional */
      padding: 0.1em 0.5em;
      border-radius: 0;
   }

   /* reset all Pygments token colors */
   .hll, .c, .err, .esc, .g, .k, .l, .n, .o, .x, .p, .ch, .cm, .cp, .cpf, .c1, .cs,
   .gd, .ge, .gr, .gh, .gi, .go, .gp, .gs, .gu, .gt, .kc, .kd, .kn, .kp, .kr, .kt,
   .ld, .m, .s, .na, .nb, .nc, .no, .nd, .ni, .ne, .nf, .nl, .nn, .nx, .py, .nt,
   .nv, .ow, .w, .mb, .mf, .mh, .mi, .mo, .sa, .sb, .sc, .dl, .sd, .s2, .se, .sh,
   .si, .sx, .sr, .s1, .ss, .bp, .fm, .vc, .vg, .vi, .vm,
   .il {
      color: #000 !important;  /* all tokens become black */
      background: none !important; /* remove any background */
   }
}

