:root {
  --font-serif-family: "Crimson Text", serif;
  --font-sans-family: "Fira Sans", sans-serif;
  --font-code-family: "Fira Code", monospace;
  --font-family-default: var(--font-sans-family);
  --font-default: 1rem/1.3 var(--font-family-default);
  --font-caption: 1rem/1 var(--font-sans-family);
  --font-family-h: var(--font-sans-family);
  --font-code: 1rem var(--font-code-family);
  --font-p: 1rem/1.3 var(--font-sans-family);
  --font-feature-settings-serif: "lnum", "tnum", "ss13";
}

html {
  font: var(--font-default);
  letter-spacing: 0px;
}

article p,
article .line,
article ul,
article ol,
article dl,
section p,
section .line,
section ul,
section ol,
section dl,
.abstract p,
.abstract .line,
.abstract ul,
.abstract ol,
.abstract dl,
.preview p,
.preview .line,
.preview ul,
.preview ol,
.preview dl {
  font: var(--font-p);
  font-feature-settings: var(--font-feature-settings-serif);
}
article h1, article h2, article h3, article h4, article h5, article h6,
section h1,
section h2,
section h3,
section h4,
section h5,
section h6,
.abstract h1,
.abstract h2,
.abstract h3,
.abstract h4,
.abstract h5,
.abstract h6,
.preview h1,
.preview h2,
.preview h3,
.preview h4,
.preview h5,
.preview h6 {
  font-family: var(--font-family-h);
}

pre,
code,
kbd,
samp {
  font: var(--font-code);
}

a,
a.external {
  text-decoration: none;
}

a:hover {
  text-decoration: underline;
}

a.headerlink {
  text-decoration: none;
}

figcaption {
  font: var(--font-caption);
}
figcaption p {
  font: var(--font-caption);
}

.align-left {
  text-align: left;
}

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

.align-default {
  text-align: left;
}

.align-right {
  text-align: right;
}

.hljs {
  background: var(--code-bg);
}

pre code.hljs,
code.hljs {
  padding: unset;
}

pre {
  overflow: auto;
  border: 1px var(--code-border-color) solid;
  padding: 1ex;
  background: var(--code-bg);
}
pre.stderr {
  background: var(--stderr-bg);
}
pre.stderr code, pre.stderr code.hljs {
  color: var(--code-stderr);
}

:root {
  --textcolor: #444444;
  --linkcolor: #114a8a;
  --gray: #7d7d7d;
  --lightgray: #aeaeae;
  --darkgray: #515151;
  --bg: #ffffff;
  --bg-one: #cff0d7;
  --bg-two: #cfdaf0;
  --bg-three: #f0eecf;
  --bg-four: #f0e3cf;
  --bg-five: #fae7fc;
  --bg-six: #cff0e8;
  --bg-seven: #f0dccf;
  --bg-eight: #cff0d7;
  --bg-dark-one: #122616;
  --bg-dark-two: #080a1f;
  --bg-dark-three: #080a1f;
  --bg-dark-four: #080a1f;
  --bg-dark-five: #080a1f;
  --bg-dark-six: #080a1f;
  --bg-dark-seven: #080a1f;
  --bg-dark-eight: #080a1f;
  --border-color: #e3e3e3;
  --code-bg: #f4f4f4;
  --code-border-color: #e3e3e3;
  --code-stderr: #9b1313;
  --stderr-bg: #ffe0e0;
}

body {
  color: var(--textcolor);
  background: var(--bg);
}
body p, body ul {
  color: var(--textcolor);
}
body a {
  color: var(--linkcolor);
}

.bg-one {
  background: var(--bg-one);
}

.bg-two {
  background: var(--bg-two);
}

.bg-three {
  background: var(--bg-three);
}

.bg-four {
  background: var(--bg-four);
}

.bg-five {
  background: var(--bg-five);
}

.bg-six {
  background: var(--bg-six);
}

.bg-seven {
  background: var(--bg-seven);
}

.bg-eight {
  background: var(--bg-eight);
}

.bg-dark-one {
  background: var(--bg-dark-one);
  --textcolor: #ffffff;
  --linkcolor: #bbdaff;
}

.bg-dark-two {
  background: var(--bg-dark-two);
  --textcolor: #ffffff;
  --linkcolor: #bbdaff;
}

.bg-dark-three {
  background: var(--bg-dark-three);
  --textcolor: #ffffff;
  --linkcolor: #bbdaff;
}

.bg-dark-four {
  background: var(--bg-dark-four);
  --textcolor: #ffffff;
  --linkcolor: #bbdaff;
}

.bg-dark-five {
  background: var(--bg-dark-five);
  --textcolor: #ffffff;
  --linkcolor: #bbdaff;
}

.bg-dark-six {
  background: var(--bg-dark-six);
  --textcolor: #ffffff;
  --linkcolor: #bbdaff;
}

.bg-dark-seven {
  background: var(--bg-dark-six);
  --textcolor: #ffffff;
  --linkcolor: #bbdaff;
}

.bg-dark-eight {
  background: var(--bg-dark-six);
  --textcolor: #ffffff;
  --linkcolor: #bbdaff;
}

:root {
  --gutter-x: .125rem;
  --gutter-y: .125rem;
}

.flex {
  display: flex;
}

.row {
  display: flex;
  flex-wrap: wrap;
  max-width: 100%;
}
.row > div {
  margin-top: var(--gutter-y);
  margin-bottom: var(--gutter-y);
}
.row > div > * {
  margin-left: var(--gutter-x);
  margin-right: var(--gutter-x);
}
@media (min-width: 576px) {
  .row section {
    padding-left: 2ex;
    padding-right: 2ex;
  }
}

@media (min-width: 576px) {
  .col-sm-1 {
    flex: 0 0 auto;
    width: 8.3333333333%;
    margin: 0 auto;
  }
  .col-sm-2 {
    flex: 0 0 auto;
    width: 16.6666666667%;
    margin: 0 auto;
  }
  .col-sm-3 {
    flex: 0 0 auto;
    width: 25%;
    margin: 0 auto;
  }
  .col-sm-4 {
    flex: 0 0 auto;
    width: 33.3333333333%;
    margin: 0 auto;
  }
  .col-sm-5 {
    flex: 0 0 auto;
    width: 41.6666666667%;
    margin: 0 auto;
  }
  .col-sm-6 {
    flex: 0 0 auto;
    width: 50%;
    margin: 0 auto;
  }
  .col-sm-7 {
    flex: 0 0 auto;
    width: 58.3333333333%;
    margin: 0 auto;
  }
  .col-sm-8 {
    flex: 0 0 auto;
    width: 66.6666666667%;
    margin: 0 auto;
  }
  .col-sm-9 {
    flex: 0 0 auto;
    width: 75%;
    margin: 0 auto;
  }
  .col-sm-10 {
    flex: 0 0 auto;
    width: 83.3333333333%;
    margin: 0 auto;
  }
  .col-sm-11 {
    flex: 0 0 auto;
    width: 91.6666666667%;
    margin: 0 auto;
  }
}
@media (min-width: 768px) {
  .row {
    width: 768px;
    margin: 0 auto;
  }
  .col-md-1 {
    flex: 0 0 auto;
    width: 8.3333333333%;
  }
  .col-md-2 {
    flex: 0 0 auto;
    width: 16.6666666667%;
  }
  .col-md-3 {
    flex: 0 0 auto;
    width: 25%;
  }
  .col-md-4 {
    flex: 0 0 auto;
    width: 33.3333333333%;
  }
  .col-md-5 {
    flex: 0 0 auto;
    width: 41.6666666667%;
  }
  .col-md-6 {
    flex: 0 0 auto;
    width: 50%;
  }
  .col-md-7 {
    flex: 0 0 auto;
    width: 58.3333333333%;
  }
  .col-md-8 {
    flex: 0 0 auto;
    width: 66.6666666667%;
  }
  .col-md-9 {
    flex: 0 0 auto;
    width: 75%;
  }
  .col-md-10 {
    flex: 0 0 auto;
    width: 83.3333333333%;
  }
  .col-md-11 {
    flex: 0 0 auto;
    width: 91.6666666667%;
  }
}
@media (min-width: 992px) {
  .row {
    width: 992px;
    margin: 0 auto;
  }
  .col-lg-1 {
    flex: 0 0 auto;
    width: 8.3333333333%;
  }
  .col-lg-2 {
    flex: 0 0 auto;
    width: 16.6666666667%;
  }
  .col-lg-3 {
    flex: 0 0 auto;
    width: 25%;
  }
  .col-lg-4 {
    flex: 0 0 auto;
    width: 33.3333333333%;
  }
  .col-lg-5 {
    flex: 0 0 auto;
    width: 41.6666666667%;
  }
  .col-lg-6 {
    flex: 0 0 auto;
    width: 50%;
  }
  .col-lg-7 {
    flex: 0 0 auto;
    width: 58.3333333333%;
  }
  .col-lg-8 {
    flex: 0 0 auto;
    width: 66.6666666667%;
  }
  .col-lg-9 {
    flex: 0 0 auto;
    width: 75%;
  }
  .col-lg-10 {
    flex: 0 0 auto;
    width: 83.3333333333%;
  }
  .col-lg-11 {
    flex: 0 0 auto;
    width: 91.6666666667%;
  }
}
@media (min-width: 1200px) {
  .row {
    width: 1820px;
    margin: 0 auto;
  }
  .col-xl-1 {
    flex: 0 0 auto;
    width: 8.3333333333%;
  }
  .col-xl-2 {
    flex: 0 0 auto;
    width: 16.6666666667%;
  }
  .col-xl-3 {
    flex: 0 0 auto;
    width: 25%;
  }
  .col-xl-4 {
    flex: 0 0 auto;
    width: 33.3333333333%;
  }
  .col-xl-5 {
    flex: 0 0 auto;
    width: 41.6666666667%;
  }
  .col-xl-6 {
    flex: 0 0 auto;
    width: 50%;
  }
  .col-xl-7 {
    flex: 0 0 auto;
    width: 58.3333333333%;
  }
  .col-xl-8 {
    flex: 0 0 auto;
    width: 66.6666666667%;
  }
  .col-xl-9 {
    flex: 0 0 auto;
    width: 75%;
  }
  .col-xl-10 {
    flex: 0 0 auto;
    width: 83.3333333333%;
  }
  .col-xl-11 {
    flex: 0 0 auto;
    width: 91.6666666667%;
  }
}
img, video {
  margin: 0;
  max-width: 100%;
}

img.align-left,
figure.align-left,
object.align-left {
  clear: left;
  float: left;
  margin-right: 1em;
  margin-bottom: 1em;
}
img.align-right,
figure.align-right,
object.align-right {
  clear: right;
  float: right;
  margin-left: 1em;
  margin-bottom: 1em;
}

body {
  padding-left: 6px;
  padding-right: 6px;
}
body main {
  width: 768px;
  max-width: 100%;
  margin: 0 auto;
}

section::after {
  content: "";
  clear: both;
  display: table;
}

@media (min-width: 576px) {
  main > section {
    padding: 0 1rem;
  }
}
dd p {
  margin-top: 0;
}

ul {
  list-style-type: square;
  padding-left: 3ex;
}
ul ul {
  list-style-type: disc;
}

li p {
  margin-bottom: 0;
}

ul.litlist {
  list-style-type: none;
  padding-left: unset;
  font: var(--font-p);
}
ul.litlist li {
  padding-left: 2ex;
  text-indent: -2ex;
  text-align: left;
  padding-bottom: 1.2ex;
  line-height: 1.4;
}

@media (min-width: 768px) {
  body.wide-body main {
    width: 100%;
  }
  body.wide-body section h1 {
    text-align: center;
  }
}
nav#main-menu {
  overflow-y: scroll;
  height: 100%;
  background-color: var(--darkgray);
}
nav#main-menu p.logo {
  text-align: center;
  width: 70%;
  margin: 2rem auto;
}
nav#main-menu p.logo img {
  width: 70%;
}
nav#main-menu a {
  color: white;
  background-color: var(--darkgray);
  height: 100%;
}
nav#main-menu ul {
  list-style: none;
}
nav#main-menu div ul {
  padding-left: 0;
  margin-left: 2ex;
}
nav#main-menu li {
  padding-top: 0.5ex;
  padding-bottom: 0.5ex;
  padding-right: 1ex;
  margin-right: -1ex;
}
nav#main-menu li.toctree-l1 {
  margin-left: -2ex;
  padding-left: 2ex;
}
nav#main-menu li.toctree-l2 {
  margin-left: -4ex;
  padding-left: 4ex;
}
nav#main-menu li.toctree-l3 {
  margin-left: -6ex;
  padding-left: 6ex;
}
nav#main-menu li.toctree-l4 {
  margin-left: -8ex;
  padding-left: 8ex;
}
nav#main-menu li.toctree-l5 {
  margin-left: -10ex;
  padding-left: 10ex;
}
nav#main-menu li.toctree-l6 {
  margin-left: -12ex;
  padding-left: 12ex;
}
nav#main-menu li.toctree-l7 {
  margin-left: -14ex;
  padding-left: 14ex;
}
nav#main-menu li.toctree-l8 {
  margin-left: -16ex;
  padding-left: 16ex;
}
nav#main-menu li.toctree-l9 {
  margin-left: -18ex;
  padding-left: 18ex;
}
nav#main-menu li.toctree-l10 {
  margin-left: -20ex;
  padding-left: 20ex;
}
nav#main-menu li.current {
  background-color: var(--gray);
}
nav#main-menu li.current a {
  background-color: var(--gray);
}
nav#main-menu li.current-page > a {
  font-weight: bold;
}

nav#main-menu {
  width: 14rem;
  position: fixed;
  top: 0;
  left: -14rem;
  visibility: hidden;
  -webkit-transition: all 0.3s ease-in-out;
  /* NB: this has to be "all" for the slide effect */
  transition: all 0.3s ease-in-out;
}

main,
nav,
.sidebar-toggle {
  -webkit-transition: -webkit-transform 0.3s ease-in-out;
  transition: transform 0.3s ease-in-out;
}

body main {
  margin-top: 2rem;
}

#sidebar-checkbox {
  position: absolute;
  opacity: 0;
  -webkit-user-select: none;
  -moz-user-select: none;
  user-select: none;
}
#sidebar-checkbox:checked ~ nav#main-menu {
  visibility: visible;
}
#sidebar-checkbox:checked ~ main {
  position: relative;
}
#sidebar-checkbox:checked ~ nav,
#sidebar-checkbox:checked ~ main,
#sidebar-checkbox:checked ~ .sidebar-toggle {
  -webkit-transform: translateX(14rem);
  -ms-transform: translateX(14rem);
  transform: translateX(14rem);
}

#sidebar-toggle {
  position: absolute;
  top: 1ex;
  left: 1ex;
  color: var(--lightgray);
}
@media print {
  #sidebar-toggle {
    visibility: hidden;
  }
}
#sidebar-toggle label {
  color: inherit;
  background: none;
  font: inherit;
}
#sidebar-toggle svg {
  width: 0.8rem;
  fill: currentColor;
}

.preview img {
  width: 90%;
  margin-bottom: 1em;
  margin-left: auto;
  margin-right: auto;
  display: block;
}

section.post h2,
article h2 {
  line-height: 1.2;
  font-size: 120%;
  margin-bottom: 0;
  padding-bottom: 0;
}
section.post h2 a,
article h2 a {
  color: var(--textcolor);
}
section.post p.post-info,
article p.post-info {
  font: var(--font-default);
  margin-top: 0;
}

p.read-more {
  font-family: var(--font-family-default);
}

.card section.post h2 {
  text-align: left;
}
.card section p.read-more {
  font-size: 90%;
}

nav#relations {
  position: fixed;
  top: 0;
  right: 0;
}
nav#relations ul {
  list-style-type: none;
  display: flex;
  padding: 0;
  margin: 0;
}
nav#relations ul li {
  padding-top: 6px;
  padding-bottom: 6px;
  padding-right: 12px;
}
nav#relations ul li a {
  text-decoration: none;
  color: var(--lightgray);
}
nav#relations ul li a svg {
  width: 0.5rem;
  fill: currentColor;
}

div.jupyter-code-cell {
  margin-bottom: 1em;
}
div.jupyter-code-cell pre.jupyter-input,
div.jupyter-code-cell pre.jupyter-output {
  margin: 1px;
}
div.jupyter-code-cell pre.jupyter-output {
  background: var(--bg);
}
div.jupyter-code-cell pre.jupyter-output code {
  background: unset;
}
div.jupyter-code-cell pre.jupyter-output.stderr {
  background: var(--bg);
}
div.jupyter-code-cell details.jupyter-output-details {
  margin-left: 1px;
  margin-right: 1px;
  margin-top: -2px;
  margin-bottom: -2px;
  background: var(--code-bg);
  border: 1px var(--code-border-color) solid;
}
div.jupyter-code-cell details.jupyter-output-details summary {
  font-size: xx-small;
  padding-left: 1em;
}
div.jupyter-code-cell details.jupyter-output-details pre {
  margin-left: -1px;
  margin-right: -1px;
  margin-bottom: -1px;
}
div.jupyter-code-cell div.jupyter-protocol {
  font-size: x-small;
  background: var(--code-bg);
  border: 1px var(--code-border-color) solid;
  margin-left: 1px;
  margin-right: 1px;
  padding-left: 1ex;
  margin-top: -2px;
  margin-bottom: -2px;
}

:root {
  --admonition-title-bg: #cadcea;
  --admonition-bg: #e4ebf2;
}

.admonition {
  background-color: var(--admonition-bg);
  clear: both;
}
.admonition .admonition-title {
  background-color: var(--admonition-title-bg);
  font-weight: bold;
  margin-bottom: 0;
}
.admonition p {
  padding: 1ex;
}
.admonition::after {
  display: block;
  content: "";
  clear: both;
}
.admonition .admonition-title + p {
  margin-top: 0;
}

:root {
  --color-card-border: #e3e3e3;
}

.card {
  height: 100%;
  background-clip: border-box;
}
.card section h2 {
  text-align: center;
  margin-top: 0;
  padding-top: 0.5rem;
  padding-bottom: 0.75rem;
  color: var(--textcolor);
}
.card section h2 a {
  color: var(--textcolor);
}
.card section p, .card section ul {
  font: var(--font-default);
  font-size: 95%;
}
.card section p code, .card section ul code {
  font-size: 90%;
}
.card section ul {
  padding-left: 4ex;
}
.card section ul ul {
  padding-left: 2ex;
}
.card section ul.litlist {
  padding-left: unset;
}

figure img {
  display: block;
  margin: 0 auto;
  width: 400px;
}
figure img.wide {
  width: 100%;
}
figure img.wide-70 {
  width: 70%;
}

figcaption {
  padding-top: 1em;
  font-size: smaller;
}

details {
  border: 1px var(--border-color) solid;
}
details summary {
  padding: 3px;
  padding-left: 9px;
}
details summary p {
  display: inline;
}
details object {
  width: 100%;
}
details[open] object {
  height: 90vh;
  border: 1px var(--border-color) solid;
  margin-left: -1px;
}
details[open] button.expand-button {
  margin-left: 0.5rem;
  margin-bottom: 0.5rem;
  font-size: small;
}

dl.abstract dt,
dl.abstract dt:not(.label) {
  padding-left: 0;
  font-weight: bold;
  margin-left: 0;
  padding-bottom: 1ex;
  font-family: var(--font-family-default);
}
dl.abstract dd {
  margin-left: 0;
}
dl.abstract p {
  margin-top: 0;
  font-size: smaller;
}