@charset "UTF-8";
:root {
  --backgroundColor: white;
  --linkColor: #80c0ff;
  --externalLinkColor: #00c0c080;
  --fallbackLinkColor: #2060ff;
  --headingLinkColor: #0580fc;
  --borderColor: #e0e0e0;
  --secondGradientColor: #8888;
  font-size: 1rem;
  line-height: 1.6; }

body {
  margin: 0px 0px;
  background-color: var(--backgroundColor);
  color: #404040;
  font-family: sans, sans-serif; }

p,
ol > li {
  margin-top: 1em;
  margin-bottom: 1em; }

ol.upperalpha {
  list-style-type: upper-alpha; }

article img {
  max-width: 100%; }

a.toc-backref {
  color: inherit;
  text-decoration: none; }
  a.toc-backref::after {
    content: " ^";
    font-size: 0.8em;
    vertical-align: text-top;
    color: var(--linkColor);
    text-decoration: none;
    font-weight: bold; }
  a.toc-backref:hover {
    text-decoration: underline; }
    a.toc-backref:hover::after {
      text-decoration: none; }

a:not(.toc-backref) {
  font-weight: normal;
  text-decoration-color: var(--linkColor);
  text-underline-offset: auto;
  text-decoration-thickness: 0.15rem; }
  a:not(.toc-backref), a:not(.toc-backref):link, a:not(.toc-backref):visited {
    color: inherit; }
  a:not(.toc-backref):hover {
    color: #000; }
  a:not(.toc-backref)[href^=http]:not([href^="https://lukeplant.me.uk/"]) {
    text-decoration-color: var(--externalLinkColor); }

h1, h2, h3, h4, h5, h6 {
  font-weight: normal;
  color: black;
  font-family: "Alegreya", serif;
  line-height: 1.2; }
  h1 a:not(.toc-backref), h2 a:not(.toc-backref), h3 a:not(.toc-backref), h4 a:not(.toc-backref), h5 a:not(.toc-backref), h6 a:not(.toc-backref) {
    text-underline-offset: 0.1em; }

h1 {
  padding-top: 0.2em;
  font-size: 2.5em;
  font-weight: normal; }

h2,
.post h1 {
  font-size: 1.8em; }

h3,
.post h2 {
  font-size: 1.6em; }

h4,
.post h3 {
  font-size: 1.3em;
  font-style: italic; }

h5,
.post h4 {
  font-size: 1.2em;
  font-style: italic; }

h6,
.post h5 {
  font-size: 1.1em; }

h1 {
  margin-bottom: 0.3em;
  margin-top: 0; }

h2, h3, h4, h5 {
  margin-bottom: 0.2em; }

h1 + p,
h2 + p,
h3 + p,
h4 + p,
h5 + p,
h6 + p,
blockquote > p {
  margin-top: 0em; }

.programmingerror {
  color: red;
  font-weight: bold; }

.admonition {
  background-color: #f2f2f2;
  margin: 0.5em 0em;
  padding: 0.5em 1em;
  border-left: 8px solid;
  border-image: linear-gradient(180deg, #ffb060 0%, var(--secondGradientColor) 100%) 1; }
  .admonition p.admonition-title {
    font-weight: bold;
    margin-top: 0.5em; }
  .admonition > .first {
    margin-top: 0; }
  .admonition > .last {
    margin-bottom: 0; }

blockquote:not(.pull-quote) {
  margin: 0.5em 0em;
  background-color: #f2f2f2;
  border-left: 8px solid;
  border-image: linear-gradient(180deg, var(--linkColor) 0%, var(--secondGradientColor) 100%) 1; }
  blockquote:not(.pull-quote) blockquote {
    background-color: #e0e0e0; }

blockquote.pull-quote {
  margin: 0.5em -20px;
  border: double var(--secondGradientColor);
  border-width: 0px 3px;
  padding: 0 17px;
  font-style: italic; }

@media screen and (max-width: 840px) {
  blockquote.pull-quote {
    margin-left: 0px;
    margin-right: 0px; } }

table {
  border-collapse: collapse;
  margin-right: 5px;
  box-shadow: 2px 2px 5px #888; }
  table td, table th {
    border: 1px solid #888;
    padding: 0.4em; }
    table td p, table th p {
      margin: 0; }
  table > thead > tr > th {
    background-color: #f0f0f0; }

blockquote {
  padding: 0.5em 1em; }
  blockquote p:last-child {
    padding-bottom: 0px;
    margin-bottom: 0px; }

.twitter-tweet.twitter-tweet-rendered {
  margin: 0 auto; }

div.line-block + p {
  margin-top: 1em; }

div.line-block > div.line-block {
  margin-left: 2em; }

.boxed {
  border: 2px solid var(--linkColor);
  background: #e0e0e0; }

div.boxed, pre.boxed {
  padding: 5px 5px; }

span.boxed {
  padding: 2px 3px;
  margin: 0; }

.strike {
  text-decoration: line-through; }

figure {
  margin: 0; }

img.align-center,
figure.align-center img {
  margin-left: auto;
  margin-right: auto;
  display: block; }

figure.align-center figcaption {
  text-align: center; }

.contents .topic-title {
  font-weight: bold; }

.contents p {
  margin-top: 0em;
  margin-bottom: 0em; }

#container, #container-clone {
  width: 800px;
  max-width: 100%;
  margin: 0 auto; }

#maintitle {
  padding: 0.5em 0;
  margin: 0 0 5px 0;
  border-bottom: 3px double var(--borderColor); }

#content {
  background-color: var(--backgroundColor);
  background-image: none;
  /* Formulas */
  /*
*   Copyright (C) 2009,2010 Alex Fernández
*
*   Released under the terms of the `2-Clause BSD license'_, in short:
*   Copying and distribution of this file, with or without modification,
*   are permitted in any medium without royalty provided the copyright
*   notice and this notice are preserved.
*   This file is offered as-is, without any warranty.
*
* .. _2-Clause BSD license: http://www.spdx.org/licenses/BSD-2-Clause
*
*   Based on eLyXer: convert LyX source files to HTML output.
*   http://elyxer.nongnu.org/
*/ }
  #content pre, #content tt, #content code {
    font-size: 0.8rem;
    font-family: "Bitstream Vera Sans Mono", "DejaVu Sans Mono", monospace; }
  #content tt.literal {
    border-radius: 4px;
    background-color: #eee;
    padding: 2px 4px; }
  #content pre {
    line-height: 1.6; }
  #content span.formula {
    white-space: nowrap; }
  #content div.formula {
    padding: 0.5ex;
    margin-left: auto;
    margin-right: auto; }
  #content .formula {
    text-align: center;
    font-family: "Times New Roman", Times, "Droid Serif", "DejaVu Serif", "STIX", serif;
    margin: 1.2em 0; }
  #content .formula {
    /* Basic features */
    /* Alignment */
    /* Structures */
    /* Environments */
    /*
        * CSS file for LaTeX formulas, extra stuff:
        * binomials, vertical braces, stackrel, fonts and colors.
        */
    /* Inline binomials */
    /* Over- and underbraces */
    /* Stackrel */
    /* Fonts */ }
    #content .formula a.eqnumber {
      display: inline-block;
      float: right;
      clear: right;
      font-weight: bold; }
    #content .formula span.unknown {
      color: #800000; }
    #content .formula span.ignored, #content .formula span.arraydef {
      display: none; }
    #content .formula i {
      letter-spacing: 0.1ex; }
    #content .formula .align-left, #content .formula .align-l {
      text-align: left; }
    #content .formula .align-right, #content .formula .align-r {
      text-align: right; }
    #content .formula .align-center, #content .formula .align-c {
      text-align: center; }
    #content .formula span.overline, #content .formula span.bar {
      text-decoration: overline; }
    #content .formula .fraction, #content .formula .fullfraction {
      display: inline-block;
      vertical-align: middle;
      text-align: center; }
    #content .formula .fraction .fraction {
      font-size: 80%;
      line-height: 100%; }
    #content .formula span.numerator {
      display: block; }
    #content .formula span.denominator {
      display: block;
      padding: 0ex;
      border-top: thin solid; }
    #content .formula sup.numerator, #content .formula sup.unit {
      font-size: 70%;
      vertical-align: 80%; }
    #content .formula sub.denominator, #content .formula sub.unit {
      font-size: 70%;
      vertical-align: -20%; }
    #content .formula span.sqrt {
      display: inline-block;
      vertical-align: middle;
      padding: 0.1ex; }
    #content .formula sup.root {
      font-size: 70%;
      position: relative;
      left: 1.4ex; }
    #content .formula span.radical {
      display: inline-block;
      padding: 0ex;
      font-size: 150%;
      vertical-align: top; }
    #content .formula span.root {
      display: inline-block;
      border-top: thin solid;
      padding: 0ex;
      vertical-align: middle; }
    #content .formula span.symbol {
      line-height: 125%;
      font-size: 125%; }
    #content .formula span.bigsymbol {
      line-height: 150%;
      font-size: 150%; }
    #content .formula span.largesymbol {
      font-size: 175%; }
    #content .formula span.hugesymbol {
      font-size: 200%; }
    #content .formula span.scripts {
      display: inline-table;
      vertical-align: middle; }
    #content .formula .script {
      display: table-row;
      text-align: left;
      line-height: 150%; }
    #content .formula span.limits {
      display: inline-table;
      vertical-align: middle; }
    #content .formula .limit {
      display: table-row;
      line-height: 99%; }
    #content .formula sup.limit, #content .formula sub.limit {
      line-height: 100%; }
    #content .formula span.symbolover {
      display: inline-block;
      text-align: center;
      position: relative;
      float: right;
      right: 100%;
      bottom: 0.5em;
      width: 0px; }
    #content .formula span.withsymbol {
      display: inline-block; }
    #content .formula span.symbolunder {
      display: inline-block;
      text-align: center;
      position: relative;
      float: right;
      right: 80%;
      top: 0.3em;
      width: 0px; }
    #content .formula span.array, #content .formula span.bracketcases, #content .formula span.binomial, #content .formula span.environment {
      display: inline-table;
      text-align: center;
      border-collapse: collapse;
      margin: 0em;
      vertical-align: middle; }
    #content .formula span.arrayrow, #content .formula span.binomrow {
      display: table-row;
      padding: 0ex;
      border: 0ex; }
    #content .formula span.arraycell, #content .formula span.bracket, #content .formula span.case, #content .formula span.binomcell, #content .formula span.environmentcell {
      display: table-cell;
      padding: 0ex 0.2ex;
      line-height: 99%;
      border: 0ex; }
    #content .formula span.binom {
      display: inline-block;
      vertical-align: middle;
      text-align: center;
      font-size: 80%; }
    #content .formula span.binomstack {
      display: block;
      padding: 0em; }
    #content .formula span.overbrace {
      border-top: 2pt solid; }
    #content .formula span.underbrace {
      border-bottom: 2pt solid; }
    #content .formula span.stackrel {
      display: inline-block;
      text-align: center; }
    #content .formula span.upstackrel {
      display: block;
      padding: 0em;
      font-size: 80%;
      line-height: 64%;
      position: relative;
      top: 0.15em; }
    #content .formula span.downstackrel {
      display: block;
      vertical-align: bottom;
      padding: 0em; }
    #content .formula span.mathsf, #content .formula span.textsf {
      font-style: normal;
      font-family: sans-serif; }
    #content .formula span.mathrm, #content .formula span.textrm {
      font-style: normal;
      font-family: serif; }
    #content .formula span.text, #content .formula span.textnormal {
      font-style: normal; }
    #content .formula span.textipa {
      color: #008080; }
    #content .formula span.fraktur {
      font-family: "Lucida Blackletter", eufm10, blackletter; }
    #content .formula span.blackboard {
      font-family: Blackboard, msbm10, serif; }
    #content .formula span.scriptfont {
      font-family: "Monotype Corsiva", "Apple Chancery", "URW Chancery L", cursive;
      font-style: italic; }

#contentinner {
  margin: 0 1em; }
  #contentinner h1:first-child {
    padding-top: 0.5em; }

#toplinks {
  font-size: 90%;
  line-height: 1.2em;
  text-align: center; }
  #toplinks ul, #toplinks li {
    list-style-type: none; }
  #toplinks ul ul, #toplinks ul ul li {
    display: inline; }
  #toplinks ul {
    padding: 0px;
    margin-top: 0px;
    margin-bottom: 0px; }
  #toplinks li {
    padding: 0px;
    margin: 0px;
    font-weight: bold; }
  #toplinks #toplinksinner > ul > li {
    margin-top: 5px; }
    #toplinks #toplinksinner > ul > li:first-child {
      margin-top: 0px; }
    #toplinks #toplinksinner > ul > li:only-child {
      padding: 5px; }
    #toplinks #toplinksinner > ul > li li a {
      font-variant: small-caps;
      font-family: "Alegreya";
      font-size: 110%;
      text-underline-offset: 0.1em; }
    #toplinks #toplinksinner > ul > li li a {
      margin: 0px;
      display: inline-block;
      width: auto; }
    #toplinks #toplinksinner > ul > li li::before {
      display: inline-block;
      content: " ~ ";
      padding: 0 8px; }
    #toplinks #toplinksinner > ul > li li:first-child::before {
      content: "";
      padding: 0px; }

#toplinksinner {
  padding: 5px; }

.toplinksheader {
  padding: 0px 3px; }
  .toplinksheader::after {
    content: ":"; }

h1.posttitle {
  padding-top: 0.25em; }

.author {
  font-style: italic;
  color: #808080; }

.post {
  margin-top: 0.5em; }

.metainfo {
  text-align: right;
  padding-bottom: 0.25em;
  border-bottom: 1px solid var(--borderColor); }
  .metainfo a {
    font-variant: small-caps;
    font-family: "Alegreya";
    font-size: 110%;
    text-underline-offset: 0.1em; }

.metainfoindex {
  margin-top: 2px;
  padding-top: 2px;
  margin-left: 1em;
  color: #666; }
  .metainfoindex a {
    font-variant: small-caps;
    font-family: "Alegreya";
    font-size: 110%;
    text-underline-offset: 0.1em; }

.metainfo ul.tags, .metainfoindex ul.tags {
  display: inline;
  margin: 0;
  padding: 0; }
  .metainfo ul.tags li, .metainfoindex ul.tags li {
    list-style: none;
    display: inline; }
  .metainfo ul.tags li:not(:last-child)::after, .metainfoindex ul.tags li:not(:last-child)::after {
    content: ", "; }

.summarylink {
  padding-top: 5px; }

.summary {
  margin: 1em 0 2em 0em;
  padding: 0em 1em; }

a.footnote-reference {
  vertical-align: super;
  font-size: 80%; }
  a.footnote-reference::before {
    background: none;
    display: none; }

a.fn-backref::after {
  content: " ⭜";
  font-size: 0.9em;
  vertical-align: text-bottom; }

#footer {
  margin-top: 1em;
  border-top: 3px double var(--borderColor);
  padding-top: 1em;
  text-align: center;
  padding-bottom: 1em;
  overflow: auto;
  width: 100%; }

#footer p {
  margin: 0; }

.related {
  border-top: 3px double var(--borderColor);
  border-bottom: 3px double var(--borderColor);
  padding: 1em;
  margin: 2em -1em 1em; }

#contentinner .related h1 {
  padding: 0; }

#comments_loading {
  font-style: italic; }

#isso-root {
  overflow-wrap: break-word;
  word-break: break-word;
  hyphens: auto; }

.paginglinks {
  text-align: right; }

div.category {
  margin-top: 0.5em; }

hr.fancy,
hr.docutils {
  border: 0;
  border-top: 1px solid var(--secondGradientColor);
  border-bottom: 1px solid var(--secondGradientColor);
  box-sizing: border-box;
  height: 3px;
  background-image: linear-gradient(to right, #fff0 0%, var(--linkColor) 45%, var(--linkColor) 50%, var(--secondGradientColor) 50%, var(--secondGradientColor) 55%, #fff0 100%);
  text-align: center;
  overflow: visible;
  line-height: 1em;
  margin: 1em -15px; }
  hr.fancy::after,
  hr.docutils::after {
    content: "◇";
    display: inline-block;
    position: relative;
    top: -0.55em;
    padding: 0 4px;
    background: var(--backgroundColor); }

.post hr {
  border: 0;
  border-top: 1px solid var(--secondGradientColor);
  border-bottom: 1px solid var(--secondGradientColor);
  box-sizing: border-box;
  height: 3px;
  background-image: linear-gradient(to right, #fff0 0%, var(--linkColor) 45%, var(--linkColor) 50%, var(--secondGradientColor) 50%, var(--secondGradientColor) 55%, #fff0 100%);
  text-align: center;
  overflow: visible;
  line-height: 1em;
  width: calc(100% + 30px);
  margin: 2em -15px; }
  .post hr::after {
    content: "◇";
    display: inline-block;
    position: relative;
    top: -0.55em;
    padding: 0 4px;
    background: var(--backgroundColor); }

pre {
  overflow: auto; }

pre.code, pre.literal-block {
  border-left: 8px solid;
  padding: 0.5em 0.8em;
  border-color: #888; }

pre.shell, pre.bash {
  background-color: #242424;
  border-color: #7d371b;
  color: #e0e0e0; }

pre.bash .str,
pre.bash .kwd,
pre.bash .com,
pre.bash .typ,
pre.bash .lit,
pre.bash .pun,
pre.bash .pln,
pre.bash .tag,
pre.bash .atn,
pre.bash .atv,
pre.bash .dec, pre.shell .str,
pre.shell .kwd,
pre.shell .com,
pre.shell .typ,
pre.shell .lit,
pre.shell .pun,
pre.shell .pln,
pre.shell .tag,
pre.shell .atn,
pre.shell .atv,
pre.shell .dec {
  color: #e0e0e0; }

pre.python {
  background-color: #e0ffe0;
  border-color: #c0e0c0; }

pre.haskell {
  background-color: #d0d0ff;
  border-color: #9080b0; }

pre.csharp {
  background-color: #b0ddff;
  border-color: #85ccff; }

pre.html,
pre.javascript,
pre.html\+django {
  background-color: #e0e0e0;
  border-color: #c0c0c0; }

pre.sql {
  background-color: #f0f0f0;
  border-color: #e0e0e0; }

code.literal {
  background-color: #f0f0f0;
  border-radius: 4px;
  padding: 2px 4px; }

span.usertext {
  color: #408040;
  font-weight: bold; }

.shell .usertext {
  color: #80ff80; }

.codeblock .p, pre.code .p {
  color: #165316; }

.codeblock .c, .codeblock .comment, .codeblock .cm, .codeblock .c1, pre.code .c, pre.code .comment, pre.code .cm, pre.code .c1 {
  color: #498c81;
  font-weight: 450; }

.codeblock .err, pre.code .err {
  color: #a61717;
  background-color: #e3d2d2; }

.codeblock .k, .codeblock .kn, .codeblock .keyword, pre.code .k, pre.code .kn, pre.code .keyword {
  font-weight: bold; }

.codeblock .o, .codeblock .operator, pre.code .o, pre.code .operator {
  font-weight: bold;
  color: #165316; }

.codeblock .cp, pre.code .cp {
  color: #777777;
  font-weight: bold; }

.codeblock .cs, pre.code .cs {
  color: #777777;
  font-weight: bold;
  font-style: italic; }

.codeblock .gd, pre.code .gd {
  color: #000000;
  background-color: #ffdddd; }

.codeblock .ge, pre.code .ge {
  font-style: italic; }

.codeblock .gr, pre.code .gr {
  color: #aa0000; }

.codeblock .gh, pre.code .gh {
  color: #777777; }

.codeblock .gi, pre.code .gi {
  color: #000000;
  background-color: #ddffdd; }

.codeblock .go, pre.code .go {
  color: #888888; }

.codeblock .gp, pre.code .gp {
  color: #555555; }

.codeblock .gs, pre.code .gs {
  font-weight: bold; }

.codeblock .gu, pre.code .gu {
  color: #aaaaaa; }

.codeblock .gt, pre.code .gt {
  color: #aa0000; }

.codeblock .kc, pre.code .kc {
  font-weight: bold; }

.codeblock .kd, pre.code .kd {
  font-weight: bold; }

.codeblock .kp, pre.code .kp {
  font-weight: bold; }

.codeblock .kr, pre.code .kr {
  font-weight: bold; }

.codeblock .kt, pre.code .kt {
  color: #445588;
  font-weight: bold; }

.codeblock .m, pre.code .m {
  color: #009999; }

.codeblock .s, .codeblock .literal.string, pre.code .s, pre.code .literal.string {
  color: #bb8844; }

.codeblock .na, pre.code .na {
  color: #008080; }

.codeblock .nb, .codeblock .name.builtin, pre.code .nb, pre.code .name.builtin {
  color: #777777; }

.codeblock .nc, .codeblock .name.class, pre.code .nc, pre.code .name.class {
  color: #445588;
  font-weight: bold; }

.codeblock .no, pre.code .no {
  color: #008080; }

.codeblock .ni, pre.code .ni {
  color: #800080; }

.codeblock .ne, pre.code .ne {
  color: #990000;
  font-weight: bold; }

.codeblock .nf, .codeblock .name.function, pre.code .nf, pre.code .name.function {
  color: #990000;
  font-weight: bold; }

.codeblock .nn, pre.code .nn {
  color: #555555; }

.codeblock .nt, pre.code .nt {
  color: #000080; }

.codeblock .nv, pre.code .nv {
  color: #008080; }

.codeblock .ow, pre.code .ow {
  font-weight: bold; }

.codeblock .mf, pre.code .mf {
  color: #009999; }

.codeblock .mh, pre.code .mh {
  color: #009999; }

.codeblock .mi, .codeblock .literal.number, pre.code .mi, pre.code .literal.number {
  color: #009999; }

.codeblock .mo, pre.code .mo {
  color: #009999; }

.codeblock .sb, pre.code .sb {
  color: #bb8844; }

.codeblock .sc, pre.code .sc {
  color: #bb8844; }

.codeblock .sd, pre.code .sd {
  color: #bb8844; }

.codeblock .s2, pre.code .s2 {
  color: #bb8844; }

.codeblock .se, pre.code .se {
  color: #bb8844; }

.codeblock .sh, pre.code .sh {
  color: #bb8844; }

.codeblock .si, pre.code .si {
  color: #bb8844; }

.codeblock .sx, pre.code .sx {
  color: #bb8844; }

.codeblock .sr, pre.code .sr {
  color: #808000; }

.codeblock .s1, pre.code .s1 {
  color: #bb8844; }

.codeblock .ss, pre.code .ss {
  color: #bb8844; }

.codeblock .bp, pre.code .bp {
  color: #777777; }

.codeblock .vc, pre.code .vc {
  color: #008080; }

.codeblock .vg, pre.code .vg {
  color: #008080; }

.codeblock .vi, pre.code .vi {
  color: #008080; }

.codeblock .il, pre.code .il {
  color: #009999; }

pre.code.shell .p {
  color: white; }

div.fractimg {
  text-align: center;
  border-top: 1px dashed #808080;
  margin-top: 10px; }

div.fractimg p.imgsize {
  font-size: small;
  margin: 0px;
  font-weight: bold; }

div.fractimg img {
  border: 2px solid #0000ff; }

.chatgpt-me, .chatgpt-it {
  border-top: 1px solid #ddd;
  border-bottom: 1px solid #ddd;
  padding: 15px 10px 15px 54px;
  margin-left: 2em; }

.chatgpt-it {
  background-color: #f7f7f8;
  background-image: url("/blogmedia/chatgpt.svg"); }

.chatgpt-me {
  background-color: white;
  background-image: url("/blogmedia/chatgpt-me.webp"); }

.chatgpt-me, .chatgpt-it {
  background-repeat: no-repeat;
  background-size: 24px;
  background-position: 15px 15px; }

.chatgpt-it + .chatgpt-me,
.chatgpt-me + .chatgpt-it {
  margin-top: -1px; }

.chatgpt-it > p:first-child, .chatgpt-me > p:first-child {
  margin-top: 0; }

.chatgpt-it > P:last-child, .chatgpt-me > P:last-child {
  margin-bottom: 0; }

.chatgpt-it .line-block + .line-block, .chatgpt-me .line-block + .line-block {
  margin-top: 1em; }

