/* From https://jwarby.github.io/jekyll-pygments-themes/languages/ruby.html */
/* Licensed under MIT */
@media (prefers-color-scheme: dark) {
  .highlight .c {
    color: #75715e;
  } /* Comment */
  .highlight .err {
    color: #960050;
    background-color: #1e0010;
  } /* Error */
  .highlight .k {
    color: #66d9ef;
  } /* Keyword */
  .highlight .l {
    color: #ae81ff;
  } /* Literal */
  .highlight .n {
    color: #f8f8f2;
  } /* Name */
  .highlight .o {
    color: #f92672;
  } /* Operator */
  .highlight .p {
    color: #f8f8f2;
  } /* Punctuation */
  .highlight .cm {
    color: #75715e;
  } /* Comment.Multiline */
  .highlight .cp {
    color: #75715e;
  } /* Comment.Preproc */
  .highlight .c1 {
    color: #75715e;
  } /* Comment.Single */
  .highlight .cs {
    color: #75715e;
  } /* Comment.Special */
  .highlight .ge {
    font-style: italic;
  } /* Generic.Emph */
  .highlight .gs {
    font-weight: bold;
  } /* Generic.Strong */
  .highlight .kc {
    color: #66d9ef;
  } /* Keyword.Constant */
  .highlight .kd {
    color: #66d9ef;
  } /* Keyword.Declaration */
  .highlight .kn {
    color: #f92672;
  } /* Keyword.Namespace */
  .highlight .kp {
    color: #66d9ef;
  } /* Keyword.Pseudo */
  .highlight .kr {
    color: #66d9ef;
  } /* Keyword.Reserved */
  .highlight .kt {
    color: #66d9ef;
  } /* Keyword.Type */
  .highlight .ld {
    color: #e6db74;
  } /* Literal.Date */
  .highlight .m {
    color: #ae81ff;
  } /* Literal.Number */
  .highlight .s {
    color: #e6db74;
  } /* Literal.String */
  .highlight .na {
    color: #a6e22e;
  } /* Name.Attribute */
  .highlight .nb {
    color: #f8f8f2;
  } /* Name.Builtin */
  .highlight .nc {
    color: #a6e22e;
  } /* Name.Class */
  .highlight .no {
    color: #66d9ef;
  } /* Name.Constant */
  .highlight .nd {
    color: #a6e22e;
  } /* Name.Decorator */
  .highlight .ni {
    color: #f8f8f2;
  } /* Name.Entity */
  .highlight .ne {
    color: #a6e22e;
  } /* Name.Exception */
  .highlight .nf {
    color: #a6e22e;
  } /* Name.Function */
  .highlight .nl {
    color: #f8f8f2;
  } /* Name.Label */
  .highlight .nn {
    color: #f8f8f2;
  } /* Name.Namespace */
  .highlight .nx {
    color: #a6e22e;
  } /* Name.Other */
  .highlight .py {
    color: #f8f8f2;
  } /* Name.Property */
  .highlight .nt {
    color: #f92672;
  } /* Name.Tag */
  .highlight .nv {
    color: #f8f8f2;
  } /* Name.Variable */
  .highlight .ow {
    color: #f92672;
  } /* Operator.Word */
  .highlight .w {
    color: #f8f8f2;
  } /* Text.Whitespace */
  .highlight .mf {
    color: #ae81ff;
  } /* Literal.Number.Float */
  .highlight .mh {
    color: #ae81ff;
  } /* Literal.Number.Hex */
  .highlight .mi {
    color: #ae81ff;
  } /* Literal.Number.Integer */
  .highlight .mo {
    color: #ae81ff;
  } /* Literal.Number.Oct */
  .highlight .sb {
    color: #e6db74;
  } /* Literal.String.Backtick */
  .highlight .sc {
    color: #e6db74;
  } /* Literal.String.Char */
  .highlight .sd {
    color: #e6db74;
  } /* Literal.String.Doc */
  .highlight .s2 {
    color: #e6db74;
  } /* Literal.String.Double */
  .highlight .se {
    color: #ae81ff;
  } /* Literal.String.Escape */
  .highlight .sh {
    color: #e6db74;
  } /* Literal.String.Heredoc */
  .highlight .si {
    color: #e6db74;
  } /* Literal.String.Interpol */
  .highlight .sx {
    color: #e6db74;
  } /* Literal.String.Other */
  .highlight .sr {
    color: #e6db74;
  } /* Literal.String.Regex */
  .highlight .s1 {
    color: #e6db74;
  } /* Literal.String.Single */
  .highlight .ss {
    color: #e6db74;
  } /* Literal.String.Symbol */
  .highlight .bp {
    color: #f8f8f2;
  } /* Name.Builtin.Pseudo */
  .highlight .vc {
    color: #f8f8f2;
  } /* Name.Variable.Class */
  .highlight .vg {
    color: #f8f8f2;
  } /* Name.Variable.Global */
  .highlight .vi {
    color: #f8f8f2;
  } /* Name.Variable.Instance */
  .highlight .il {
    color: #ae81ff;
  } /* Literal.Number.Integer.Long */
  /* Generic Heading & Diff Header */
  .highlight .gu {
    color: #75715e;
  } /* Generic.Subheading & Diff Unified/Comment? */
  .highlight .gd {
    color: #f92672;
  } /* Generic.Deleted & Diff Deleted */
  .highlight .gi {
    color: #a6e22e;
  } /* Generic.Inserted & Diff Inserted */
}
/* From https://jwarby.github.io/jekyll-pygments-themes/languages/ruby.html */
/* Licensed under MIT */
@media (prefers-color-scheme: light) {
  .highlight .hll {
    background-color: #ffffcc;
  }
  .highlight .c {
    color: #808080;
  } /* Comment */
  .highlight .err {
    color: #F00000;
    background-color: #F0A0A0;
  } /* Error */
  .highlight .k {
    color: #008000;
    font-weight: bold;
  } /* Keyword */
  .highlight .o {
    color: #303030;
  } /* Operator */
  .highlight .cm {
    color: #808080;
  } /* Comment.Multiline */
  .highlight .cp {
    color: #507090;
  } /* Comment.Preproc */
  .highlight .c1 {
    color: #808080;
  } /* Comment.Single */
  .highlight .cs {
    color: #cc0000;
    font-weight: bold;
  } /* Comment.Special */
  .highlight .gd {
    color: #A00000;
  } /* Generic.Deleted */
  .highlight .ge {
    font-style: italic;
  } /* Generic.Emph */
  .highlight .gr {
    color: #FF0000;
  } /* Generic.Error */
  .highlight .gh {
    color: #000080;
    font-weight: bold;
  } /* Generic.Heading */
  .highlight .gi {
    color: #00A000;
  } /* Generic.Inserted */
  .highlight .go {
    color: #808080;
  } /* Generic.Output */
  .highlight .gp {
    color: #c65d09;
    font-weight: bold;
  } /* Generic.Prompt */
  .highlight .gs {
    font-weight: bold;
  } /* Generic.Strong */
  .highlight .gu {
    color: #800080;
    font-weight: bold;
  } /* Generic.Subheading */
  .highlight .gt {
    color: #0040D0;
  } /* Generic.Traceback */
  .highlight .kc {
    color: #008000;
    font-weight: bold;
  } /* Keyword.Constant */
  .highlight .kd {
    color: #008000;
    font-weight: bold;
  } /* Keyword.Declaration */
  .highlight .kn {
    color: #008000;
    font-weight: bold;
  } /* Keyword.Namespace */
  .highlight .kp {
    color: #003080;
    font-weight: bold;
  } /* Keyword.Pseudo */
  .highlight .kr {
    color: #008000;
    font-weight: bold;
  } /* Keyword.Reserved */
  .highlight .kt {
    color: #303090;
    font-weight: bold;
  } /* Keyword.Type */
  .highlight .m {
    color: #6000E0;
    font-weight: bold;
  } /* Literal.Number */
  .highlight .s {
    background-color: #fff0f0;
  } /* Literal.String */
  .highlight .na {
    color: #0000C0;
  } /* Name.Attribute */
  .highlight .nb {
    color: #007020;
  } /* Name.Builtin */
  .highlight .nc {
    color: #B00060;
    font-weight: bold;
  } /* Name.Class */
  .highlight .no {
    color: #003060;
    font-weight: bold;
  } /* Name.Constant */
  .highlight .nd {
    color: #505050;
    font-weight: bold;
  } /* Name.Decorator */
  .highlight .ni {
    color: #800000;
    font-weight: bold;
  } /* Name.Entity */
  .highlight .ne {
    color: #F00000;
    font-weight: bold;
  } /* Name.Exception */
  .highlight .nf {
    color: #0060B0;
    font-weight: bold;
  } /* Name.Function */
  .highlight .nl {
    color: #907000;
    font-weight: bold;
  } /* Name.Label */
  .highlight .nn {
    color: #0e84b5;
    font-weight: bold;
  } /* Name.Namespace */
  .highlight .nt {
    color: #007000;
  } /* Name.Tag */
  .highlight .nv {
    color: #906030;
  } /* Name.Variable */
  .highlight .ow {
    color: #000000;
    font-weight: bold;
  } /* Operator.Word */
  .highlight .w {
    color: #bbbbbb;
  } /* Text.Whitespace */
  .highlight .mf {
    color: #6000E0;
    font-weight: bold;
  } /* Literal.Number.Float */
  .highlight .mh {
    color: #005080;
    font-weight: bold;
  } /* Literal.Number.Hex */
  .highlight .mi {
    color: #0000D0;
    font-weight: bold;
  } /* Literal.Number.Integer */
  .highlight .mo {
    color: #4000E0;
    font-weight: bold;
  } /* Literal.Number.Oct */
  .highlight .sb {
    background-color: #fff0f0;
  } /* Literal.String.Backtick */
  .highlight .sc {
    color: #0040D0;
  } /* Literal.String.Char */
  .highlight .sd {
    color: #D04020;
  } /* Literal.String.Doc */
  .highlight .s2 {
    background-color: #fff0f0;
  } /* Literal.String.Double */
  .highlight .se {
    color: #606060;
    font-weight: bold;
    background-color: #fff0f0;
  } /* Literal.String.Escape */
  .highlight .sh {
    background-color: #fff0f0;
  } /* Literal.String.Heredoc */
  .highlight .si {
    background-color: #e0e0e0;
  } /* Literal.String.Interpol */
  .highlight .sx {
    color: #D02000;
    background-color: #fff0f0;
  } /* Literal.String.Other */
  .highlight .sr {
    color: #000000;
    background-color: #fff0ff;
  } /* Literal.String.Regex */
  .highlight .s1 {
    background-color: #fff0f0;
  } /* Literal.String.Single */
  .highlight .ss {
    color: #A06000;
  } /* Literal.String.Symbol */
  .highlight .bp {
    color: #007020;
  } /* Name.Builtin.Pseudo */
  .highlight .vc {
    color: #306090;
  } /* Name.Variable.Class */
  .highlight .vg {
    color: #d07000;
    font-weight: bold;
  } /* Name.Variable.Global */
  .highlight .vi {
    color: #3030B0;
  } /* Name.Variable.Instance */
  .highlight .il {
    color: #0000D0;
    font-weight: bold;
  } /* Literal.Number.Integer.Long */
}
@font-face {
  font-family: "PT Sans";
  src: local("PT Sans");
  src: url("/assets/fonts/PTSans-Regular.ttf");
}
@font-face {
  font-family: "PT Sans Italic";
  src: local("PT Sans Italic");
  src: url("/assets/fonts/PTSans-Italic.ttf");
  font-style: italic;
}
@font-face {
  font-family: "PT Sans Bold";
  src: local("PT Sans Bold");
  src: url("/assets/fonts/PTSans-Bold.ttf");
  font-weight: bold;
}
@font-face {
  font-family: "PT Sans Bold Italic";
  src: local("PT Sans Bold Italic");
  src: url("/assets/fonts/PTSans-BoldItalic.ttf");
  font-weight: bold;
  fount-style: italic;
}
html {
  --fg-color: #222;
  --bg-color: #FFE;
  overflow-x: hidden;
}
@media (prefers-contrast: more) {
  html {
    --fg-color: black;
    --bg-color: white;
  }
}

@media screen {
  body {
    font-family: sans-serif;
  }
  body > *:not(.full-width), body > .full-width > * {
    max-width: 1000px;
    margin-left: auto;
    margin-right: auto;
    padding-left: 0.5rem;
    padding-right: 0.5rem;
  }
}
@media screen and (min-width: 768px) {
  body > *:not(.full-width), body > .full-width > * {
    padding-left: 5rem;
    padding-right: 5rem;
  }
}
@media screen {
  h1, h2, h3, h4, h5, h6, .main-nav {
    font-family: "PT Sans", sans-serif;
  }
}
@media screen and (max-width: 767px) {
  nav.main-nav > a:not(:first-child) {
    display: none;
  }
  .project-title {
    flex-direction: column;
  }
}
@media (prefers-color-scheme: dark) {
  html {
    --fg-color: #DDD;
    --bg-color: #22201A;
  }
}
@media (prefers-color-scheme: dark) and (prefers-contrast: more) {
  html {
    --fg-color: white;
    --bg-color: black;
  }
}
@media (prefers-color-scheme: dark) {
  a {
    color: skyblue;
  }
  a:visited {
    color: mediumpurple;
  }
  mark {
    background-color: #774;
    color: var(--fg-color);
  }
}
body {
  color: var(--fg-color);
  background-color: var(--bg-color);
  margin-left: 0;
  margin-right: 0;
}

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

.date, .byline {
  font-size: 1.3em;
  opacity: 0.7;
}

blockquote {
  border-left: 5px solid;
  margin-left: 1em;
  padding-left: 1em;
}

img {
  max-width: 100%;
  border-radius: 5px;
}

pre {
  overflow-x: auto;
}

.flex {
  display: flex;
}

.spacer {
  flex-grow: 1;
}

nav.main-nav {
  display: flex;
  font-size: 1.5em;
}
nav.main-nav > a {
  color: var(--fg-color);
  margin: 0.5em 0;
  margin-right: 0.7em;
  text-decoration: none;
}
nav.main-nav .social-links a {
  text-decoration: none;
}
nav.main-nav .social-links img {
  height: 2em;
  vertical-align: middle;
}
nav.main-nav .social-links img.mastodon {
  height: 1.3em;
}
nav.main-nav .social-links img.github {
  height: 1.2em;
}

img.before {
  border: 1px solid red;
}

img.after {
  border: 1px solid green;
}

.project a, .footer-notice a {
  padding: 0.7em;
  display: flex;
  flex-direction: row;
  color: unset;
  text-decoration: none;
  border-radius: 1em;
  transition: background 250ms;
}
.project a img, .footer-notice a img {
  height: 4em;
  width: 4em;
  margin-right: 1em;
  flex-shrink: 0;
  border-radius: 5px;
}
.project a h2, .footer-notice a h2 {
  margin: 0.1em 0;
}
@media (prefers-contrast: more) {
  .project a, .footer-notice a {
    background: none;
    border: 2px dotted transparent;
  }
}

.project a:hover {
  background: linear-gradient(rgba(127, 127, 127, 0.2), rgba(127, 127, 127, 0.1333333333));
}
@media (prefers-contrast: more) {
  .project a:hover {
    background: none;
    border: 2px dotted var(--fg-color);
  }
}

.project .date {
  font-size: 1em;
}

.footer-notice a {
  color: #FFE;
  margin: 2em 0.5em;
  background: linear-gradient(#006dea 0%, #c500ea 50%, rgba(234, 69, 0, 0.6666666667) 100%);
  background-size: 100% 200%;
  background-position-y: 0%;
  transition: background-position-y 250ms;
}
.footer-notice a:hover {
  background-position-y: 100%;
}
.footer-notice a h4 {
  margin-top: 0.2em;
  margin-bottom: 0.5em;
  font-size: 1.2em;
}
.footer-notice a img {
  align-self: center;
  transition: transform 250ms;
  margin-left: 0.5em;
}
.footer-notice a:hover img {
  transform: scale(1.1);
}
@media (prefers-contrast: more) {
  .footer-notice a {
    background: none;
    border: 8px solid blue;
    color: var(--fg-color);
  }
  .footer-notice a:hover {
    border-style: dotted;
  }
}

.footer-notice-alt {
  text-align: center;
  margin-bottom: 2em;
}

figure {
  margin: 0;
}
figure figcaption {
  opacity: 0.75;
  font-style: italic;
}

footer {
  text-align: center;
  margin: 3rem;
}
footer a, footer a:visited {
  color: var(--fg-color);
}

.tabs .tabcontent {
  margin-left: 9px;
}
.tabs .tabbar button {
  cursor: pointer;
  border: none;
  background: none;
  color: var(--fg-color);
  margin-right: 6px;
  padding: 6px;
  border-bottom: 3px solid transparent;
}
.tabs .tabbar button[aria-selected=true] {
  border-color: var(--fg-color);
}

@media print {
  nav.main-nav,
  footer,
  .no-print {
    display: none;
  }
  body, h1 {
    margin-top: 0;
    font-family: serif;
  }
  .link-footnote-marker a {
    margin-left: 0.25em;
    text-decoration: none !important;
  }
  .footer-notice a {
    padding: 0;
    margin: 0;
    background: none;
    color: unset;
  }
  .footer-notice-alt {
    text-align: left;
    margin-bottom: 0;
  }
  .tabs h4 {
    margin-bottom: 0;
  }
  .tabs .tabbar {
    display: none;
  }
  .tabs .tabcontent {
    display: unset;
    margin-left: 0;
  }
}
@media not print {
  .print-only {
    display: none;
  }
}

/*# sourceMappingURL=styles.css.map */