﻿:root {
  --admonition-note-border: #5b6167;
  --admonition-note-bg: #f2f4f7;
  --admonition-note-code: #e1e3ed;
  --admonition-tip-border: #03970f;
  --admonition-tip-bg: #f0fdf0;
  --admonition-tip-code: #d3edc5;
  --admonition-info-border: #15a2b2;
  --admonition-info-bg: #f5fbff;
  --admonition-info-code: #d5e2f2;
  --admonition-warning-border: #eea719;
  --admonition-warning-bg: #fff8e6;
  --admonition-warning-code: #feee96;
  --admonition-danger-border: #d8292e;
  --admonition-danger-bg: #ffebed;
  --admonition-danger-code: #fcc1c5;
}
[data-theme="dark"] {
  --admonition-note-border: #d0d1d4;
  --admonition-note-bg: #3d3e40;
  --admonition-note-code: #495057;
  --admonition-tip-border: #01b010;
  --admonition-tip-bg: #013100;
  --admonition-tip-code: #005f00;
  --admonition-info-border: #50a9d5;
  --admonition-info-bg: #193c47;
  --admonition-info-code: #245e70;
  --admonition-warning-border: #e19d0a;
  --admonition-warning-bg: #4f3a01;
  --admonition-warning-code: #8c6b00;
  --admonition-danger-border: #e74f54;
  --admonition-danger-bg: #4c1012;
  --admonition-danger-code: #8c2e00;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --admonition-note-border: #d0d1d4;
    --admonition-note-bg: #3d3e40;
    --admonition-note-code: #495057;
    --admonition-tip-border: #01b010;
    --admonition-tip-bg: #013100;
    --admonition-tip-code: #005f00;
    --admonition-info-border: #50a9d5;
    --admonition-info-bg: #193c47;
    --admonition-info-code: #245e70;
    --admonition-warning-border: #e19d0a;
    --admonition-warning-bg: #4f3a01;
    --admonition-warning-code: #8c6b00;
    --admonition-danger-border: #e74f54;
    --admonition-danger-bg: #4c1012;
    --admonition-danger-code: #8c2e00;
  }
}
.admonition {
  display: flex;
  align-items: flex-start;
  margin-block: 1em;
  border-radius: 10px;
  border-inline-start: 6px solid;
  padding: 0.8rem;
  color: var(--text-color-high-contrast);
  font-family: var(--sans-serif-font);
}
.admonition p {
  margin-inline-start: -1.75rem;
  margin-block-end: 0;
  font-family: inherit;
}
.admonition a code {
  color: inherit;
}
.admonition-content {
  flex: 1;
}
.admonition-content strong {
  font-weight: 580;
}
.admonition-icon {
  display: flex;
  align-items: center;
  margin: 0.3rem;
  background-size: contain;
  background-repeat: no-repeat;
  aspect-ratio: 1/1;
  width: 1.5rem;
}
.admonition-title {
  opacity: 0.92;
  font-weight: bold;
  font-size: 0.82rem;
}
.admonition-icon-note {
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960' %3E%3Cpath d='M440-280h80v-240h-80v240Zm40-320q17 0 28.5-11.5T520-640q0-17-11.5-28.5T480-680q-17 0-28.5 11.5T440-640q0 17 11.5 28.5T480-600Zm0 520q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z'/%3E%3C/svg%3E");
}
.admonition-icon-tip {
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960' %3E%3Cpath d='M480-78.258q-33.718 0-56.974-22.166-23.256-22.167-23.59-55.885h161.128q-.334 33.718-23.59 55.885Q513.718-78.258 480-78.258ZM318.257-210.515v-67.588h323.486v67.588H318.257Zm7.846-121.128q-67.692-42.487-106.896-109.134-39.205-66.648-39.205-147.479 0-123.769 88.149-211.884 88.149-88.115 211.967-88.115 123.817 0 211.849 88.115 88.031 88.115 88.031 211.884 0 80.831-38.999 147.479-39 66.647-107.102 109.134H326.103Zm21.927-67.588h264.351q46.311-32 73.17-81.681 26.859-49.68 26.859-107.144 0-96.918-68-164.765-68-67.846-164.564-67.846t-164.41 67.713q-67.846 67.712-67.846 164.725 0 57.52 26.859 107.259t73.581 81.739Zm131.97 0Z'/%3E%3C/svg%3E");
}
.admonition-icon-info {
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960' %3E%3Cpath d='M479.789-288Q495-288 505.5-298.289q10.5-10.29 10.5-25.5Q516-339 505.711-349.5q-10.29-10.5-25.5-10.5Q465-360 454.5-349.711q-10.5 10.29-10.5 25.5Q444-309 454.289-298.5q10.29 10.5 25.5 10.5ZM444-432h72v-240h-72v240Zm36.276 336Q401-96 331-126q-70-30-122.5-82.5T126-330.958q-30-69.959-30-149.5Q96-560 126-629.5t82.5-122Q261-804 330.958-834q69.959-30 149.5-30Q560-864 629.5-834t122 82.5Q804-699 834-629.276q30 69.725 30 149Q864-401 834-331q-30 70-82.5 122.5T629.276-126q-69.725 30-149 30ZM480-168q130 0 221-91t91-221q0-130-91-221t-221-91q-130 0-221 91t-91 221q0 130 91 221t221 91Zm0-312Z'/%3E%3C/svg%3E");
}
.admonition-icon-warning {
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960' %3E%3Cpath d='M109-120q-11 0-20-5.5T75-140q-5-9-5.5-19.5T75-180l370-640q6-10 15.5-15t19.5-5q10 0 19.5 5t15.5 15l370 640q6 10 5.5 20.5T885-140q-5 9-14 14.5t-20 5.5H109Zm69-80h604L480-720 178-200Zm302-40q17 0 28.5-11.5T520-280q0-17-11.5-28.5T480-320q-17 0-28.5 11.5T440-280q0 17 11.5 28.5T480-240Zm0-120q17 0 28.5-11.5T520-400v-120q0-17-11.5-28.5T480-560q-17 0-28.5 11.5T440-520v120q0 17 11.5 28.5T480-360Zm0-100Z'/%3E%3C/svg%3E");
}
.admonition-icon-danger {
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960' %3E%3Cpath d='M239.256-400q0 58.091 27.975 108.995t76.13 81.237q-5.616-8.513-8.487-18.398-2.872-9.885-2.872-19.167 1.333-26.436 12.153-50.307 10.821-23.872 31.41-43.461L480-443.921l105.819 102.82q18.923 19.311 29.885 43.321 10.961 24.011 12.294 50.447 0 9.282-2.872 19.167-2.871 9.885-7.82 18.398 47.488-30.333 75.796-81.237Q721.41-341.909 721.41-400q0-47.622-19.258-93.169-19.259-45.547-53.998-82.549-19.951 13.41-42.202 19.859Q583.7-549.41 561-549.41q-62.448 0-105.108-38.039-42.661-38.038-51.225-98.628v-9.744q-39.385 31.949-69.898 67.68-30.513 35.73-51.987 74.166t-32.5 77.464Q239.256-437.483 239.256-400ZM480-349.539l-57.436 56.436q-12.154 11.821-17.731 26.029-5.577 14.208-5.577 29.074 0 32.769 23.498 55.757 23.497 22.987 57.246 22.987 33.432 0 57.421-22.906 23.989-22.906 23.989-55.561 0-16.162-6.116-30.162-6.116-13.999-17.454-25.154l-57.84-56.5Zm-11.002-469.022V-708q0 38.637 26.832 64.819 26.831 26.183 65.17 26.183 15.609 0 30.818-5.923 15.208-5.923 28.131-17.718l22.615-24.102q67.564 44.128 106.999 114.917 39.435 70.79 39.435 150.156 0 128.206-89.846 218.103Q609.307-91.668 480-91.668q-129.027 0-218.68-89.652-89.652-89.653-89.652-218.68 0-119.178 79.371-232.447t217.959-186.114Z'/%3E%3C/svg%3E");
}
.admonition.note {
  border-color: var(--admonition-note-border);
  background-color: var(--admonition-note-bg);
}
.admonition.note > .admonition-content > p > code {
  background-color: var(--admonition-note-code);
}
.admonition.note a {
  border-bottom: 1px solid var(--admonition-note-border);
  color: var(--admonition-note-border);
}
.admonition.note a:hover {
  background-color: var(--admonition-note-border);
  color: var(--hover-color);
}
.admonition.note .admonition-icon {
  background-color: var(--admonition-note-border);
}
.admonition.tip {
  border-color: var(--admonition-tip-border);
  background-color: var(--admonition-tip-bg);
}
.admonition.tip > .admonition-content > p > code {
  background-color: var(--admonition-tip-code);
}
.admonition.tip a {
  border-bottom: 1px solid var(--admonition-tip-border);
  color: var(--admonition-tip-border);
}
.admonition.tip a:hover {
  background-color: var(--admonition-tip-border);
  color: var(--hover-color);
}
.admonition.tip .admonition-icon {
  background-color: var(--admonition-tip-border);
}
.admonition.info {
  border-color: var(--admonition-info-border);
  background-color: var(--admonition-info-bg);
}
.admonition.info > .admonition-content > p > code {
  background-color: var(--admonition-info-code);
}
.admonition.info a {
  border-bottom: 1px solid var(--admonition-info-border);
  color: var(--admonition-info-border);
}
.admonition.info a:hover {
  background-color: var(--admonition-info-border);
  color: var(--hover-color);
}
.admonition.info .admonition-icon {
  background-color: var(--admonition-info-border);
}
.admonition.warning {
  border-color: var(--admonition-warning-border);
  background-color: var(--admonition-warning-bg);
}
.admonition.warning > .admonition-content > p > code {
  background-color: var(--admonition-warning-code);
}
.admonition.warning a {
  border-bottom: 1px solid var(--admonition-warning-border);
  color: var(--admonition-warning-border);
}
.admonition.warning a:hover {
  background-color: var(--admonition-warning-border);
  color: var(--hover-color);
}
.admonition.warning .admonition-icon {
  background-color: var(--admonition-warning-border);
}
.admonition.danger {
  border-color: var(--admonition-danger-border);
  background-color: var(--admonition-danger-bg);
}
.admonition.danger > .admonition-content > p > code {
  background-color: var(--admonition-danger-code);
}
.admonition.danger a {
  border-bottom: 1px solid var(--admonition-danger-border);
  color: var(--admonition-danger-border);
}
.admonition.danger a:hover {
  background-color: var(--admonition-danger-border);
  color: var(--hover-color);
}
.admonition.danger .admonition-icon {
  background-color: var(--admonition-danger-border);
}
.archive {
  margin-block-start: 4vmin;
}
.archive .listing-title {
  margin-block-end: 1rem;
  font-size: 1.5rem;
}
.archive .listing-item {
  display: flex;
  gap: 1rem;
  margin-block-end: 0.5rem;
  padding-inline: 1rem;
  padding-block: 0.2rem;
}
.archive .listing-item .post-time {
  padding-inline-start: 1vmin;
  min-inline-size: 5rem;
  text-align: start;
}
.archive .listing-item .post-time .date {
  color: var(--meta-color);
  white-space: nowrap;
}
.archive ul {
  margin: 0;
  padding: 0;
  list-style: none;
}
.archive li {
  margin-bottom: 1.3rem;
}
aside {
  margin-block-end: var(--paragraph-spacing);
  border-radius: 4px;
  background: var(--bg-0);
  padding-block: 0.8rem;
  padding-inline: 1rem;
  color: var(--meta-color);
  font-size: 0.9rem;
}
article aside p {
  margin: 0;
  font-family: var(--sans-serif-font);
}
@media only screen and (min-width: 1300px) {
  aside {
    position: absolute;
    inset-inline-start: -14rem;
    margin-block: 0;
    border-radius: 0;
    background: none;
    padding: 0;
    width: 12rem;
    text-align: end;
  }
  aside[data-position="right"] {
    inset-inline-start: auto;
    inset-inline-end: -14rem;
    text-align: start;
  }
}
.filter-controls {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: 12px;
  margin-top: 1.2rem;
  margin-bottom: -1rem;
  padding: 0;
  list-style: none;
}
.filter-controls #all-projects-filter {
  display: none;
}
.filter-controls .taxonomy-item {
  margin: 0;
}
.filter-controls .taxonomy-item a {
  display: inline-block;
  box-shadow:
    rgba(0, 0, 0, 0.1) 0px 1px 3px 0px,
    rgba(0, 0, 0, 0.06) 0px 1px 2px 0px;
  border-radius: 1rem;
  background: var(--bg-2);
  padding: 0 16px;
  color: var(--text-color);
  font-size: 0.8rem;
  text-decoration: none;
}
.filter-controls .taxonomy-item a:hover {
  background: var(--primary-color);
  color: var(--hover-color);
}
.filter-controls .taxonomy-item a.active {
  background: var(--primary-color);
  color: var(--hover-color);
}
.cards {
  display: grid;
  grid-template-rows: auto;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  gap: 24px;
  margin-top: 4vmin;
  padding-block: 12px;
}
.cards .card {
  box-shadow:
    rgba(50, 50, 93, 0.25) 0px 2px 5px -1px,
    rgba(0, 0, 0, 0.3) 0px 1px 3px -1px;
  border-radius: 1rem;
  background: var(--bg-2);
  min-height: 100px;
  overflow: hidden;
}
.cards .card:hover {
  background-color: var(--primary-color);
}
.cards .card:hover .card-description {
  color: var(--hover-color);
}
.cards .card .card-info {
  padding-inline: 24px;
  padding-block-start: 0;
  padding-block-end: 24px;
  text-align: center;
}
.cards .card .card-image {
  margin: 1.6rem;
  margin-bottom: 1.0666666667rem;
  width: calc(100% - 3.2rem);
  height: auto;
}
.cards .card .card-image-placeholder {
  width: 100%;
  height: 12px;
}
.cards .card .card-description {
  margin-top: 0.5em;
  overflow: hidden;
  color: var(--text-color);
}
@media all and (max-width: 720px) {
  .cards {
    gap: 18px;
  }
  .filter-controls {
    gap: 8px;
    margin: 18px 0;
  }
  .filter-controls .taxonomy-item a {
    padding: 4px 12px;
  }
}
code {
  -webkit-text-size-adjust: 100%;
  border-radius: 5px;
  background-color: var(--bg-1);
  padding-inline: 0.2em;
  padding-block: 0.1em;
  font-size: 0.9rem;
  font-family: var(--code-font);
}
code mark {
  display: block;
  filter: brightness(110%);
  background-color: var(--codeblock-highlight);
  color: inherit;
}
code table {
  margin: 0rem;
  border-collapse: collapse;
  border-spacing: 0rem;
  width: 100%;
  text-align: start;
}
code table td,
code table th,
code table tr {
  border: none;
  padding: 0rem;
}
code table tbody td:first-child {
  opacity: 50%;
  padding-inline-end: 0.8rem;
  width: 1px;
  user-select: none;
  text-align: end;
}
code table tbody tr:nth-child(even) {
  background-color: inherit;
}
a:hover code {
  background-color: inherit;
}
pre {
  display: block;
  position: relative;
  border-radius: 5px;
  padding-inline: 1rem;
  padding-block-start: 2.4rem;
  padding-block-end: 1rem;
  overflow: hidden;
  overflow-x: auto;
  line-height: 1.4;
}
pre code,
pre code td {
  font-size: 0.8rem;
}
pre code {
  display: block;
  border: 0rem;
  border-radius: 5px;
  background-color: rgba(0, 0, 0, 0);
  padding: 0rem;
  overflow-x: auto;
  color: inherit;
  white-space: pre;
}
pre code::before {
  display: block;
  position: absolute;
  top: 0;
  inset-inline-start: 0;
  background-color: var(--primary-color);
  padding: 0.3rem;
  padding-inline-start: 1rem;
  width: calc(100% - 1.3rem);
  height: 0.9rem;
  content: attr(data-lang);
  color: var(--hover-color);
  font-size: 0.65rem;
  text-align: start;
  text-transform: uppercase;
}
pre code .source-path {
  display: block;
  position: absolute;
  top: 0;
  inset-inline-end: 1.3rem;
  padding-top: 0.3rem;
  padding-inline-end: 1.3rem;
  max-width: calc(100% - 14em);
  height: 0.9rem;
  overflow: hidden;
  color: var(--hover-color);
  font-size: 0.65rem;
  text-align: end;
  text-overflow: ellipsis;
  white-space: nowrap;
}
code,
pre {
  direction: ltr;
}
html[data-code-direction="inherit"] code,
html[data-code-direction="inherit"] pre {
  direction: inherit;
}
.copy-code {
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960' %3E%3Cpath d='M217.002-67.694q-37.732 0-64.02-26.288-26.287-26.287-26.287-64.019V-707.69h77.999v549.689q0 4.615 3.846 8.462 3.846 3.846 8.462 3.846h451.689v77.999H217.002Zm175.999-175.999q-37.733 0-64.02-26.287T302.694-334v-463.383q0-37.732 26.287-64.02 26.287-26.287 64.02-26.287h365.383q37.732 0 64.019 26.287 26.288 26.288 26.288 64.02V-334q0 37.733-26.288 64.02-26.287 26.287-64.019 26.287H393.001Zm0-77.998h365.383q4.615 0 8.462-3.847 3.846-3.846 3.846-8.462v-463.383q0-4.616-3.846-8.462-3.847-3.846-8.462-3.846H393.001q-4.616 0-8.462 3.846-3.847 3.846-3.847 8.462V-334q0 4.616 3.847 8.462 3.846 3.847 8.462 3.847Zm-12.309 0v-488V-321.691Z'/%3E%3C/svg%3E");
  position: absolute;
  top: 0.3rem;
  align-self: center;
  z-index: 1;
  cursor: pointer;
  inset-inline-end: 0.7rem;
  background: var(--hover-color);
  background-size: contain;
  width: 0.9rem;
  height: 0.9rem;
  color: #fff;
}
.copy-code.checked {
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960' %3E%3Cpath d='M395-253 194-455l83-83 118 117 288-287 83 84-371 371Z'/%3E%3C/svg%3E");
  width: 1rem;
  height: 1rem;
}
.copy-code.error {
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960' %3E%3Cpath d='M479.386-248Q509-248 529-267.386q20-19.386 20-49T529.614-366.5q-19.386-20.5-49-20.5T431-366.886q-20 20.114-20 49.728t19.386 49.386q19.386 19.772 49 19.772ZM416-431h128v-265H416v265Zm64.276 381q-88.916 0-167.743-33.104-78.828-33.103-137.577-91.852-58.749-58.749-91.852-137.535Q50-391.277 50-480.458q0-89.438 33.162-167.491 33.163-78.053 92.175-136.942 59.011-58.889 137.533-91.999Q391.393-910 480.458-910q89.428 0 167.518 33.093T784.94-784.94q58.874 58.874 91.967 137.215Q910-569.385 910-480.192q0 89.192-33.11 167.518-33.11 78.326-91.999 137.337-58.889 59.012-137.167 92.174Q569.447-50 480.276-50Z'/%3E%3C/svg%3E");
}
.utterances-frame {
  width: 100%;
}
.comments {
  margin-top: 2rem;
  border-top: var(--divider-color) solid 0.5px;
  border-bottom: var(--divider-color) solid 0.5px;
  padding-top: 2rem;
  padding-bottom: 2rem;
}
.comments iframe {
  margin: 0;
  border: none;
  aspect-ratio: inherit;
  width: 100%;
  max-width: 100%;
}
.comments .load-comments-button {
  display: block;
  cursor: pointer;
  margin: 0.5em auto;
  border: none;
  background: none;
  padding-block: 0.5em;
  padding-inline: 1em;
  color: inherit;
  font-size: 0.95rem;
  font-family: var(--sans-serif-font);
  text-decoration: none;
}
footer {
  margin-top: auto;
  margin-block-end: 1.4rem;
  color: var(--meta-color);
  font-size: 0.88rem;
  font-family: var(--post-font-family);
  text-align: center;
}
footer .nav-links {
  color: var(--primary-color);
}
footer p {
  margin: 0;
}
footer section {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0rem;
}
footer nav {
  display: flex;
  margin: 0 0rem;
}
.socials {
  display: flex;
  flex-grow: 0;
  flex-wrap: wrap;
  justify-content: center;
  align-items: flex-end;
}
.socials svg {
  max-height: 15px;
}
.socials ul {
  gap: 5px;
}
.social {
  display: flex;
  justify-content: center;
  align-items: center;
  background-image: unset;
  padding: 0.5vmin;
}
.social > img {
  aspect-ratio: 1/1;
  width: 1.5rem;
  height: auto;
  color: #000;
}
.social:hover > img {
  filter: invert(1);
}
[data-theme="dark"] .social:hover > img {
  filter: invert(0);
}
[data-theme="dark"] .social > img {
  filter: invert(1);
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .social:hover > img {
    filter: invert(0);
  }
  :root:not([data-theme="light"]) .social > img {
    filter: invert(1);
  }
}
.header-anchor {
  display: inline-flex;
  position: absolute;
  justify-content: center;
  align-items: center;
  opacity: 0;
  margin-inline-start: -2rem;
  padding-inline-end: 0.3rem;
  width: 1.9rem;
  height: 100%;
  user-select: none;
}
@media (max-width: 500px) {
  .header-anchor {
    display: none;
  }
}
.link-icon {
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M14.78 3.653a3.936 3.936 0 1 1 5.567 5.567l-3.627 3.627a3.936 3.936 0 0 1-5.88-.353.75.75 0 0 0-1.18.928 5.436 5.436 0 0 0 8.12.486l3.628-3.628a5.436 5.436 0 1 0-7.688-7.688l-3 3a.75.75 0 0 0 1.06 1.061l3-3Z'%3E%3C/path%3E%3Cpath d='M7.28 11.153a3.936 3.936 0 0 1 5.88.353.75.75 0 0 0 1.18-.928 5.436 5.436 0 0 0-8.12-.486L2.592 13.72a5.436 5.436 0 1 0 7.688 7.688l3-3a.75.75 0 1 0-1.06-1.06l-3 3a3.936 3.936 0 0 1-5.567-5.568l3.627-3.627Z'%3E%3C/path%3E%3C/svg%3E");
  align-self: center;
  cursor: pointer;
  background: var(--text-color);
  width: 1rem;
  height: 1rem;
}
h1:hover .header-anchor,
h2:hover .header-anchor,
h3:hover .header-anchor,
h4:hover .header-anchor,
h5:hover .header-anchor,
h6:hover .header-anchor {
  opacity: 1;
}
h1 .header-anchor:hover,
h2 .header-anchor:hover,
h3 .header-anchor:hover,
h4 .header-anchor:hover,
h5 .header-anchor:hover,
h6 .header-anchor:hover {
  background-color: rgba(0, 0, 0, 0);
}
header {
  width: 100%;
  font-family: "Inter Subset", var(--sans-serif-font);
}
.page-header {
  margin-block: 4rem 1rem;
  font-size: 3em;
  line-height: 100%;
  font-family: var(--header-font);
}
.navbar {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: center;
  margin: 0 auto;
  padding-block: 1em;
  max-width: var(--max-layout-width);
}
.nav-navs {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
}
.nav-navs ul {
  display: flex;
  flex-wrap: inherit;
  justify-content: inherit;
  align-items: inherit;
  gap: inherit;
  gap: 1px;
  margin: 0;
  padding: 0;
  list-style: none;
}
#menu-icons-group {
  gap: 1px;
  margin: 0;
  padding: 0;
}
.nav-links {
  justify-content: right;
  padding: 0.66rem;
  color: var(--text-color);
  font-weight: 340;
  font-size: 1em;
  line-height: 2.5;
  text-decoration: none;
}
.home-title {
  margin-inline-start: -0.12rem;
  border: none;
  padding: 0.12rem;
  color: var(--primary-color);
  font-weight: 450;
  font-size: 1.7em;
  text-decoration: none;
}
.meta {
  padding: 0;
  padding-top: 0.7vmin;
  padding-bottom: 3vmin;
  color: var(--meta-color);
  font-weight: 300;
  font-size: 0.8rem;
  line-height: 1.4rem;
  letter-spacing: -0.4px;
}
.meta a {
  color: var(--meta-color);
  font-weight: inherit;
  text-decoration: none;
  text-decoration-color: none;
}
.meta ul,
.meta li {
  display: inline-block;
  margin-inline-end: 0.2rem;
  font-family: var(--sans-serif-font);
  list-style-type: none;
}
.meta .tag {
  margin-inline-end: 0;
}
.meta .separator {
  margin-inline-end: 0.2rem;
  user-select: none;
}
.language-switcher {
  display: flex;
  justify-content: center;
  align-items: center;
  margin-inline-start: 0.5rem;
  margin-inline-end: 0.5rem;
}
.language-switcher .language-switcher-icon {
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%23000' stroke-width='1.8' d='M1 12a11 11 90 0 0 22 0 11 11 90 0 0-22 0m1-4h20M2 16h20M11 1a21 21 90 0 0 0 22m2-22a21 21 90 0 1 0 22'/%3E%3C/svg%3E%0A");
  position: relative;
  align-self: center;
  cursor: pointer;
  background: var(--text-color);
  width: 1rem;
  height: 1rem;
}
.language-switcher .language-switcher-icon:hover {
  background: var(--meta-color);
}
.dropdown {
  display: inline-block;
  position: relative;
  z-index: 1;
  font-size: 0.8rem;
}
.dropdown:hover .dropdown-content,
.dropdown:focus-within .dropdown-content {
  display: block;
}
.dropdown summary {
  list-style: none;
}
.dropdown summary::-webkit-details-marker {
  display: none;
}
.dropdown .dropdown-content {
  display: none;
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  z-index: 1;
  background: var(--background-color);
  padding-inline-start: 0.5rem;
  padding-inline-end: 0.5rem;
  text-align: center;
  white-space: nowrap;
}
.dropdown .dropdown-content a {
  display: block;
}
@media only screen and (max-width: 1000px) {
  .navbar {
    max-width: var(--normal-layout-width);
  }
  .nav-navs {
    display: flex;
    justify-content: center;
  }
}
@media only screen and (max-width: 600px) {
  .nav-navs {
    margin-top: 0.8rem;
  }
  .navbar {
    flex-direction: column;
    align-items: center;
  }
}
@media only screen and (max-width: 300px) {
  .navbar {
    max-width: var(--small-layout-width);
  }
}
#banner-container-home {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  margin: 0.2rem auto;
  width: 100%;
}
@media only screen and (max-width: 600px) {
  #banner-container-home {
    display: block;
    margin-block-end: 2rem;
  }
}
#banner-container-home #home-banner-text {
  flex: 1;
  margin-block-end: 1.5rem;
  color: var(--primary-color);
  font-size: 1.875rem;
  line-height: 3rem;
}
#banner-container-home #home-banner-text li {
  font-size: 1rem;
}
#banner-container-home #home-banner-text #home-banner-header {
  margin: 0;
  margin-block-end: 1rem;
  font-weight: 550;
  font-size: 2.8rem;
}
@media only screen and (max-width: 600px) {
  #banner-container-home #home-banner-text #home-banner-header {
    margin-block-end: 0;
    font-size: 2.2rem;
  }
}
#banner-container-home #home-banner-text #banner-home-subtitle {
  color: var(--text-color);
  font-weight: 250;
  line-height: 1.75rem;
}
#banner-container-home #home-banner-text #banner-home-subtitle p {
  font-size: 1rem;
}
#banner-container-home #home-banner-text #banner-home-subtitle a {
  font-weight: 400;
}
@media only screen and (max-width: 600px) {
  #banner-container-home #home-banner-text {
    width: 100%;
  }
}
#banner-container-home #image-container-home {
  position: relative;
  margin: auto 0;
  padding-inline-start: 2rem;
  max-width: 11rem;
  overflow: hidden;
  text-align: center;
}
#banner-container-home #image-container-home #banner-home-img {
  border: none;
  aspect-ratio: 1/1;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
@media only screen and (max-width: 600px) {
  #banner-container-home #image-container-home #banner-home-img {
    max-width: 12rem;
    max-height: 12rem;
  }
}
@media only screen and (max-width: 600px) {
  #banner-container-home #image-container-home {
    padding-inline-start: 0;
    width: 100%;
    max-width: none;
  }
}
.image-hover-container {
  position: relative;
  width: 100%;
}
.image-hover-container .image-default {
  display: inline;
}
.image-hover-container .image-hovered {
  display: none;
}
.image-hover-container:hover .image-default {
  display: none;
}
.image-hover-container:hover .image-hovered {
  display: inline;
}
.image-label {
  cursor: pointer;
}
.image-toggled {
  position: absolute;
  top: 0;
  left: 0;
  visibility: hidden;
}
.image-toggler-toggle {
  display: none;
}
.image-toggler-toggle:checked ~ .image-label .image-toggled {
  position: static;
  visibility: visible;
}
.image-toggler-toggle:checked ~ .image-label .image-default {
  position: absolute;
  visibility: hidden;
}
figure {
  display: inline-block;
  box-sizing: border-box;
  margin: 0;
  max-width: 100%;
  height: auto;
}
figcaption {
  color: var(--meta-color);
  font-size: 0.72rem;
  font-family: var(--serif-font);
  text-align: center;
}
img {
  display: block;
  margin: 0 auto;
  max-width: 100%;
  height: auto;
}
img.inline {
  display: inline;
  vertical-align: middle;
}
figure h4 {
  margin: 0;
  margin-block-end: 1em;
  font-size: 1rem;
}
figure h4::before {
  content: "↳ ";
}
.img-dark {
  display: none;
}
.img-dark.inline {
  display: none;
}
.img-light.inline {
  display: inline;
}
[data-theme="dark"] .img-dark {
  display: block;
}
[data-theme="dark"] .img-dark.inline {
  display: inline;
}
[data-theme="dark"] .img-light {
  display: none;
}
kbd {
  border: 1px solid var(--divider-color);
  border-radius: 5px;
  background-color: var(--bg-0);
  padding: 0.1rem 0.3rem;
  font-size: 0.8rem;
}
.draft-label {
  margin-inline-end: 0.3rem;
  background-color: var(--primary-color);
  padding-inline: 4px;
  padding-block: 2px;
  color: var(--hover-color);
}
.article-title {
  display: block;
  margin: 0;
  color: var(--text-color-high-contrast);
  font-weight: 550;
  font-size: 2rem;
  line-height: 3rem;
}
iframe {
  display: block;
  margin-inline-start: 15%;
  margin-inline-end: 15%;
  margin-block-end: 3vmin;
  border: none;
  aspect-ratio: 16/9;
  width: 100vmin;
  max-width: 70%;
}
ul {
  margin-top: 0;
}
.toc-container {
  margin-block-end: 4vmin;
}
.padding-top {
  padding-top: 4vmin;
}
.title-container {
  padding-bottom: 8px;
}
.bottom-divider {
  border-bottom: var(--divider-color) solid 0.5px;
}
::-moz-selection {
  background: var(--primary-color);
  color: var(--hover-color);
  text-shadow: none;
}
::selection {
  background: var(--primary-color);
  color: var(--hover-color);
}
.nav.tags {
  display: inline-block;
}
blockquote {
  margin: 0;
  border-inline-start: 0.3rem solid var(--primary-color);
  padding-inline-start: 1em;
}
a {
  position: relative;
  color: var(--primary-color);
  font-weight: inherit;
  text-decoration: inherit;
}
a:hover {
  background-color: var(--primary-color);
  color: var(--hover-color);
}
a:hover rt {
  color: var(--text-color);
}
a:not(.no-hover-padding):hover::after {
  display: inline-block;
  position: absolute;
  z-index: -1;
  inset-block-end: 0;
  inset-block-start: 0;
  inset-inline-end: -0.15em;
  inset-inline-start: -0.15em;
  background-color: var(--primary-color);
  max-inline-size: 105%;
  content: "";
}
@media screen and (max-width: 600px) {
  .list > ul {
    margin: 0;
    padding: 0;
  }
}
hr {
  margin: 3.5rem 0 1rem;
  border: none;
  background-color: var(--divider-color);
  height: 1px;
}
.footnote-reference {
  font-size: 0.7rem;
  font-family: var(--serif-font);
}
.footnote-definition {
  margin-block-end: 0.6rem;
}
.footnote-definition sup {
  margin-inline-end: 0.15rem;
  font-size: 0.75rem;
  font-family: var(--serif-font);
}
.footnote-definition p {
  display: inline;
}
.footnote-backlink {
  margin-inline-start: 0.2rem;
  font-size: 0.8rem;
}
.footnotes-list a[href^="#fr-"] {
  font-size: 0.8rem;
}
.references p {
  margin-inline-start: 2.4rem;
  text-indent: -2.4rem;
}
.info-box {
  margin-top: 1rem;
  margin-block-end: 1rem;
  border: 1px solid var(--primary-color);
  border-radius: 10px;
  border-inline-start-width: 0.3rem;
  padding: 1rem;
  text-align: center;
}
#page-content {
  margin-top: 4vmin;
}
.hidden {
  display: none;
  visibility: hidden;
}
.visually-hidden {
  clip: rect(0 0 0 0);
  position: absolute;
  margin: -1px;
  border: 0;
  padding: 0;
  width: 1px;
  height: 1px;
  overflow: hidden;
  white-space: nowrap;
}
details summary {
  cursor: pointer;
}
.interactive-icon {
  cursor: pointer;
}
.interactive-icon path {
  fill: var(--text-color);
}
.interactive-icon :hover path {
  fill: var(--meta-color);
}
.article-navigation {
  display: flex;
  margin-block-start: 2rem;
  border-block-start: var(--divider-color) solid 0.5px;
  padding-block-start: 2rem;
}
.article-navigation div:first-child {
  flex: 1;
  text-align: start;
}
.article-navigation div:last-child {
  flex: 1;
  text-align: end;
}
.article-navigation div p {
  color: var(--meta-color);
  font-weight: 300;
  line-height: 1.2rem;
  font-family: var(--sans-serif-font);
  letter-spacing: -0.4px;
}
@media (max-width: 600px) {
  .article-navigation {
    flex-direction: column;
  }
  .article-navigation div {
    text-align: center !important;
  }
}
:dir(rtl) .arrow {
  display: inline-block;
  transform: scaleX(-1);
}
:dir(rtl) .arrow-corner {
  display: inline-block;
  transform: rotate(-90deg);
}
.mermaid p {
  font-family: var(--sans-serif-font) !important;
}
.mermaid .node .label {
  max-width: none !important;
}
[data-force-text-direction="ltr"] {
  direction: ltr;
  unicode-bidi: bidi-override;
}
[data-force-text-direction="rtl"] {
  direction: rtl;
  unicode-bidi: bidi-override;
}
[data-force-text-direction="ltr"] *,
[data-force-text-direction="rtl"] * {
  direction: inherit;
}
.title-with-jump {
  display: flex;
  justify-content: space-between;
  align-items: center;
}
.title-with-jump h1 {
  flex: 1;
}
.jump-link {
  flex-shrink: 0;
  font-size: 0.9rem;
}
@media (max-width: 500px) {
  .title-with-jump {
    flex-direction: column;
  }
}
.quote-container {
  border: none;
}
.quote-toggle {
  display: none;
}
.quote-label {
  display: none;
  cursor: pointer;
  border-radius: 5px;
  color: var(--meta-color);
  font-size: 0.75rem;
  font-family: var(--sans-serif-font);
  text-align: center;
  text-decoration: none;
}
.quote-toggle:not(:checked) ~ .quote .translated .quote-label-original,
.quote-toggle:checked ~ .quote .original .quote-label-translate {
  display: inline;
}
.original {
  display: none;
}
.quote-toggle:checked ~ .quote .original {
  display: block;
}
.quote-toggle:checked ~ .quote .translated {
  display: none;
}
.pagination {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-top: 2rem;
  padding: 0;
  font-size: 1em;
  list-style: none;
}
.pagination .page-item .disabled {
  opacity: 0.5;
  pointer-events: none;
}
.pagination .page-numbers {
  color: var(--meta-color);
  font-size: 0.9rem;
}
.bloglist-container {
  display: grid;
  grid-template-columns: 1fr 8fr;
}
.bloglist-meta {
  display: flex;
  align-items: flex-start;
  background-color: var(--navbar-color);
  padding-block: 2.5rem;
  min-width: 13.5rem;
}
.bloglist-meta .thumbnail-image {
  margin: 0;
  margin-inline: auto;
  max-width: 70%;
}
.bloglist-meta li.date + li.post-thumbnail .thumbnail-image {
  margin-inline: 0;
  margin-block-start: 0.7rem;
}
.bloglist-meta ul {
  margin-inline-end: 0.7rem;
  padding: 0;
  color: var(--meta-color);
  font-weight: 300;
  font-size: 0.9rem;
}
.bloglist-meta ul li {
  list-style-type: none;
  white-space: nowrap;
}
.bloglist-meta ul li.draft-label {
  width: fit-content;
  line-height: 1.2rem;
}
.bloglist-content {
  display: flex;
  position: relative;
  align-items: flex-start;
  background-color: var(--navbar-color);
  padding: 2.5rem 0;
}
.bloglist-content .pinned-label {
  display: flex;
  position: absolute;
  top: 0.8rem;
  align-items: center;
  gap: 0.3rem;
  color: var(--meta-color);
  font-weight: 300;
  font-size: 0.8rem;
}
.bloglist-content .pinned-label svg {
  width: 0.8rem;
  height: 0.8rem;
}
.bloglist-content div {
  flex: 1;
}
.bloglist-content div .bloglist-title {
  margin: 0;
  font-weight: bold;
  font-size: 1.2em;
}
.bloglist-content div .bloglist-title a {
  color: var(--text-color-high-contrast);
  font-weight: 550;
}
.bloglist-content div .bloglist-title a:hover {
  color: var(--hover-color);
}
.bloglist-content div .bloglist-tags {
  margin-top: 0.1rem;
}
.bloglist-content div .bloglist-tags .tag {
  display: inline-block;
  margin-inline-end: 0.7rem;
  font-weight: 400;
  font-size: 0.75rem;
  text-transform: uppercase;
}
.bloglist-content div .description p {
  margin: 0.5rem 0 1rem;
  color: var(--text-color);
  font-weight: 250;
  font-size: 0.9rem;
  line-height: 1.5rem;
}
.all-posts {
  font-weight: 350;
  font-size: 1.3rem;
}
#all-projects {
  margin-top: 2rem;
}
.posts-first #featured-projects {
  margin-top: 4rem;
}
.projects-first #posts-list {
  margin-top: 4rem;
}
@media only screen and (max-width: 1100px) {
  .bloglist-container {
    grid-template-columns: 1fr;
  }
  .pinned-label svg {
    margin-bottom: -2px;
  }
  .bloglist-meta {
    border-bottom: 0;
    padding-block: 2rem;
  }
  .bloglist-meta ul {
    margin-block-end: 0;
    width: 100%;
  }
  .bloglist-meta ul li {
    display: inline;
    margin-inline-end: 0.3rem;
  }
  .bloglist-meta .post-thumbnail {
    display: none;
  }
  .bloglist-content {
    flex-direction: column;
    align-items: flex-start;
    padding: 0;
    padding-bottom: 2rem;
  }
  .bloglist-content .pinned-label {
    position: static;
    margin: 0;
    margin-top: -1.9rem;
  }
  .bloglist-content div {
    width: 100%;
  }
}
#button-container {
  display: flex;
  position: fixed;
  right: 2rem;
  bottom: 2rem;
  flex-direction: column;
  gap: 0.6rem;
  z-index: 2;
}
#button-container #toc-button,
#button-container #comments-button,
#button-container #top-button {
  display: flex;
  justify-content: center;
  align-items: center;
  z-index: 2;
  cursor: pointer;
  border: none;
  border-radius: 50%;
  background-color: var(--bg-1);
  padding: 0.4rem;
  width: 1rem;
  height: 1rem;
  text-align: center;
}
#button-container #toc-button:hover,
#button-container #comments-button:hover,
#button-container #top-button:hover {
  background-color: var(--bg-3);
}
#button-container #toc-button:hover svg,
#button-container #comments-button:hover svg,
#button-container #top-button:hover svg {
  fill: var(--primary-color);
}
#button-container #toc-button:hover::before,
#button-container #comments-button:hover::before,
#button-container #top-button:hover::before {
  background-color: rgba(0, 0, 0, 0);
}
#button-container #toc-button svg,
#button-container #comments-button svg,
#button-container #top-button svg {
  fill: var(--text-color);
  width: 1rem;
  height: 1rem;
}
#button-container #toc-floating-container #toc-button {
  position: relative;
  z-index: 2;
}
#button-container #toc-floating-container .toc-container {
  margin: 0;
  margin-top: 0.7rem;
  max-width: 80vw;
}
#button-container #toc-floating-container .toc-content {
  display: none;
  position: absolute;
  right: 0;
  bottom: 100%;
  z-index: 2;
  margin-block-end: 0.7rem;
  box-shadow: rgba(0, 0, 0, 0.15) 1.95px 1.95px 2.6px;
  border: 1px solid var(--divider-color);
  border-radius: 5px;
  background-color: var(--background-color);
  padding-inline-end: 1rem;
  max-height: 70vh;
  overflow-y: auto;
  font-size: 0.8rem;
  text-align: start;
  white-space: nowrap;
}
#button-container #toc-floating-container .toc-content ul {
  padding-inline-start: 1rem;
  list-style: none;
}
#button-container #toc-floating-container .toggle {
  display: none;
}
#button-container #toc-floating-container .toggle:checked + .overlay,
#button-container
  #toc-floating-container
  .toggle:checked
  + .overlay
  + #toc-button
  + .toc-content {
  display: block;
}
#button-container
  #toc-floating-container
  .toggle:checked
  + .overlay
  + #toc-button
  svg {
  fill: var(--primary-color);
}
#button-container #toc-floating-container .overlay {
  display: none;
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  opacity: 40%;
  z-index: 1;
  background: var(--background-color);
}
@media (max-width: 700px) {
  #button-container {
    display: none !important;
  }
}
@media print {
  #button-container {
    display: none;
  }
}
#searchModal {
  background: color-mix(in srgb, var(--primary-color) 5%, rgba(0, 0, 0, 0));
  text-align: start;
}
#searchModal #searchContainer {
  padding: 1rem;
}
#searchModal #searchBar {
  display: flex;
  position: relative;
  justify-content: center;
  align-items: center;
  box-sizing: border-box;
  padding: 1rem;
}
#searchModal #searchBar .search-icon {
  position: absolute;
  inset-inline-start: 1rem;
  width: 1.3rem;
  height: 1.3rem;
}
#searchModal #searchBar .search-icon path {
  fill: var(--text-color);
}
#searchModal #searchBar .close-icon {
  display: none;
  position: absolute;
  right: 1.3rem;
  margin-inline-start: 1rem;
  margin-inline-end: 0.5rem;
  width: 1.3rem;
  height: 1.3rem;
}
#searchModal #searchBar #searchInput {
  flex: 1;
  border: 1px solid var(--divider-color);
  border-radius: 20px;
  background-color: var(--input-background-color);
  padding-inline: 3rem 1rem;
  padding-block: 0.75rem;
  width: calc(100% - 2rem);
  color: var(--text-color);
  font-size: 1rem;
}
#searchModal #results-container {
  display: none;
  border-top: var(--divider-color) solid 0.5px;
  border-bottom-right-radius: 1rem;
  border-bottom-left-radius: 1rem;
  overflow: hidden;
}
#searchModal #results-container #results-info {
  padding: 0.5rem;
  color: var(--meta-color);
  font-size: 0.8rem;
  text-align: center;
}
#searchModal #results-container #results {
  display: flex;
  flex-direction: column;
  max-height: 50vh;
  overflow-y: auto;
}
#searchModal #results-container #results b {
  font-weight: 590;
}
#searchModal #results-container #results a {
  display: block;
}
#searchModal #results-container #results a:hover {
  background-color: inherit;
}
#searchModal #results-container #results > div {
  cursor: pointer;
  padding-inline: 1rem;
  padding-block: 0.5rem;
}
#searchModal #results-container #results > div[aria-selected="true"] {
  background-color: var(--primary-color);
  color: var(--hover-color);
}
#searchModal #results-container #results > div[aria-selected="true"] a,
#searchModal #results-container #results > div[aria-selected="true"] span {
  color: inherit;
}
#searchModal #results-container #results span:first-child {
  display: block;
  color: var(--primary-color);
  font-weight: 590;
}
#searchModal #results-container #results span:nth-child(2) {
  color: var(--text-color);
}
.search-icon {
  display: block;
  position: relative;
  align-self: center;
  margin-inline-start: 1rem;
  margin-inline-end: 0.5rem;
  width: 1.3rem;
  height: 1.3rem;
}
.search-modal {
  -webkit-backdrop-filter: blur(8px);
  display: none;
  position: fixed;
  top: 0;
  left: 0;
  z-index: 1000;
  backdrop-filter: blur(8px);
  background-color: rgba(0, 0, 0, 0.1);
  width: 100%;
  height: 100%;
  overflow: auto;
}
.search-modal #modal-content {
  position: relative;
  margin: 8% auto;
  border: var(--divider-color) solid 0.5px;
  border-radius: 1rem;
  background-color: var(--background-color);
  width: 80%;
  max-width: 28rem;
}
@media only screen and (max-width: 600px) {
  .search-modal #modal-content {
    top: 3.5rem;
    width: 92%;
  }
  .search-modal #modal-content #results {
    max-height: 70vh;
  }
}
.spoiler-toggle {
  display: none;
}
.spoiler-content {
  display: inline-block;
  cursor: help;
}
.spoiler-content .spoiler-hidden {
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  filter: blur(6px);
  user-select: none;
}
.spoiler-content .spoiler-hidden a {
  pointer-events: none;
}
.spoiler-toggle:checked + .spoiler-content .spoiler-hidden {
  filter: none;
  user-select: auto;
}
.spoiler-toggle:checked + .spoiler-content .spoiler-hidden a {
  pointer-events: auto;
}
.spoiler-container.fixed-blur .spoiler-content:before {
  display: inline-block;
  filter: blur(6px);
  content: "SPOILER";
}
.spoiler-container.fixed-blur .spoiler-content .spoiler-hidden {
  display: none;
}
.spoiler-container.fixed-blur
  .spoiler-toggle:checked
  + .spoiler-content:before {
  content: none;
}
.spoiler-container.fixed-blur
  .spoiler-toggle:checked
  + .spoiler-content
  .spoiler-hidden {
  display: inline;
}
:root {
  --rosewater: #f2d5cf;
  --flamingo: #eebebe;
  --pink: #f4b8e4;
  --mauve: #ca9ee6;
  --red: #e78284;
  --maroon: #ea999c;
  --peach: #ef9f76;
  --yellow: #e5c890;
  --green: #a6d189;
  --teal: #81c8be;
  --sky: #99d1db;
  --blue: #8caaee;
  --lavender: #b4befe;
  --text: #cdd6f4;
  --overlay0: #737994;
}
.z-code {
  background-color: var(--codeblock-bg);
  color: var(--text);
}
.z-comment {
  color: var(--overlay0);
  font-style: italic;
}
.z-string {
  color: var(--green);
}
.z-string.z-regexp {
  color: var(--sky);
}
.z-constant.z-numeric,
.z-string.z-regexp {
  color: var(--sky);
}
.z-constant.z-character.z-escape {
  color: var(--sky);
}
.z-constant.z-language {
  color: var(--lavender);
}
.z-support.z-function.z-builtin.z-variable.z-other.z-constant {
  color: var(--sky);
}
.z-keyword {
  color: var(--red);
}
.z-keyword.z-control.z-loop,
.z-keyword.z-control.z-conditional,
.z-keyword.z-control.z-c++ {
  color: var(--mauve);
}
.z-keyword.z-control.z-return,
.z-keyword.z-control.z-flow.z-return {
  color: var(--pink);
}
.z-support.z-type.z-exception {
  color: var(--sky);
}
.z-keyword.z-operator {
  color: var(--teal);
}
.z-punctuation.z-accessor {
  color: var(--teal);
}
.z-punctuation.z-section {
  color: var(--text);
}
.z-keyword.z-control.z-import.z-include {
  color: var(--peach);
}
.z-storage {
  color: var(--red);
}
.z-storage.z-type {
  color: var(--yellow);
}
.z-storage.z-modifier {
  color: var(--red);
}
.z-entity.z-name.z-namespace,
.z-meta.z-path,
.z-storage.z-type.z-class {
  color: var(--rosewater);
}
.z-entity.z-name.z-label {
  color: var(--blue);
}
.z-keyword.z-declaration.z-class {
  color: var(--red);
}
.z-entity.z-name.z-class,
.z-meta.z-toc-list.z-full-identifier {
  color: var(--teal);
}
.z-entity.z-other.z-inherited-class {
  color: var(--teal);
}
.z-entity.z-name.z-function {
  color: var(--blue);
  font-style: italic;
}
.z-variable.z-function {
  color: var(--blue);
  font-style: italic;
}
.z-entity.z-name.z-function.z-preprocessor,
.z-keyword.z-control.z-import {
  color: var(--red);
}
.z-entity.z-name.z-function.z-constructor,
.z-entity.z-name.z-function.z-destructor {
  color: var(--lavender);
}
.z-variable.z-parameter.z-function {
  color: var(--rosewater);
}
.z-keyword.z-declaration.z-function {
  color: var(--maroon);
}
.z-support.z-function {
  color: var(--teal);
}
.z-support.z-constant {
  color: var(--blue);
}
.z-support.z-type,
.z-support.z-class {
  color: var(--blue);
  font-style: italic;
}
.z-variable.z-function {
  color: var(--blue);
}
.z-variable.z-parameter {
  color: var(--rosewater);
}
.z-variable.z-other {
  color: var(--text);
}
.z-variable.z-other.z-member {
  color: var(--rosewater);
}
.z-variable.z-language {
  color: var(--peach);
}
.z-entity.z-name.z-tag {
  color: var(--sky);
}
.z-entity.z-other.z-attribute-name {
  color: var(--mauve);
  font-style: italic;
}
.z-punctuation.z-definition.z-tag {
  color: var(--maroon);
}
.z-markup.z-underline.z-link.z-markdown {
  color: var(--rosewater);
  font-style: underline;
  font-style: italic;
}
.z-comment.z-block.z-markdown,
.z-meta.z-code-fence {
  color: var(--peach);
  font-style: italic;
}
.z-markup.z-raw.z-code-fence,
.z-markup.z-raw.z-inline {
  color: var(--peach);
  font-style: italic;
}
.z-punctuation.z-definition.z-heading,
.z-entity.z-name.z-section {
  color: var(--blue);
}
.z-markup.z-italic {
  color: var(--maroon);
  font-style: italic;
}
.z-markup.z-bold {
  color: var(--maroon);
  font-weight: bold;
}
.z-constant.z-character.z-escape,
.z-source.z-shell.z-bash
  .z-meta.z-function.z-shell
  .z-meta.z-compound.z-shell
  .z-meta.z-function-call.z-identifier.z-shell {
  color: var(--pink);
}
.z-variable.z-language.z-shell {
  color: var(--red);
}
.z-source.z-lua
  .z-meta.z-function.z-lua
  .z-meta.z-block.z-lua
  .z-meta.z-mapping.z-value.z-lua
  .z-meta.z-mapping.z-key.z-lua
  .z-string.z-unquoted.z-key.z-lua {
  color: var(--lavender);
}
.z-source.z-lua
  .z-meta.z-function.z-lua
  .z-meta.z-block.z-lua
  .z-meta.z-mapping.z-key.z-lua
  .z-string.z-unquoted.z-key.z-lua {
  color: var(--flamingo);
}
.z-entity.z-name.z-constant.z-java {
  color: var(--peach);
}
.z-support.z-type.z-property-name.z-css {
  color: var(--flamingo);
}
.z-support.z-constant.z-property-value.z-css {
  color: var(--text);
}
.z-constant.z-numeric.z-suffix.z-css,
.z-keyword.z-other.z-unit.z-css,
.z-variable.z-other.z-custom-property.z-name.z-css,
.z-support.z-type.z-custom-property.z-name.z-css,
.z-punctuation.z-definition.z-custom-property.z-css {
  color: var(--peach);
}
.z-entity.z-name.z-tag.z-css {
  color: var(--lavender);
}
.z-variable.z-other.z-sass {
  color: var(--peach);
}
.z-invalid {
  background-color: var(--red);
  color: var(--text);
}
.z-invalid.z-deprecated {
  background-color: var(--mauve);
  color: var(--text);
}
.z-meta.z-diff {
  color: --OVERLAY0;
}
.z-meta.z-diff.z-header {
  color: --OVERLAY0;
}
.z-markup.z-deleted {
  color: var(--red);
}
.z-markup.z-inserted {
  color: var(--green);
}
.z-markup.z-changed {
  color: var(--yellow);
}
.z-message.z-error {
  color: var(--red);
}
table {
  margin: 1rem auto;
  border-style: hidden !important;
  border-radius: 5px;
  border-collapse: collapse;
  border-spacing: 0;
  overflow: hidden;
  font: inherit;
  text-align: center;
}
table th,
table td {
  border: 1px solid var(--bg-1);
  padding-inline: 13px;
  padding-block: 6px;
  font-size: large;
}
table thead tr {
  background-color: var(--primary-color);
  color: var(--hover-color);
}
table thead tr code {
  background-color: rgba(0, 0, 0, 0);
}
table tbody tr:nth-child(even) {
  background-color: var(--bg-0);
}
table details,
table summary {
  font-family: inherit !important;
}
#tag-cloud {
  margin-top: 4vmin;
}
#tag-cloud ul {
  margin: 0;
  padding: 0;
  list-style: none;
}
#tag-cloud .tags-item {
  margin-block-end: 1rem;
}
.two-columns ul {
  -webkit-column-count: 2;
  -moz-column-count: 2;
  column-count: 2;
}
.three-columns ul {
  -webkit-column-count: 3;
  -moz-column-count: 3;
  column-count: 3;
}
@media (max-width: 1000px) {
  .three-columns ul {
    -webkit-column-count: 2;
    -moz-column-count: 2;
    column-count: 2;
  }
}
@media (max-width: 600px) {
  .two-columns ul,
  .three-columns ul {
    -webkit-column-count: 1;
    -moz-column-count: 1;
    column-count: 1;
  }
}
.theme-switcher {
  -webkit-mask: var(--theme-switcher-svg);
  position: relative;
  align-self: center;
  cursor: pointer;
  margin-inline-start: 0.5rem;
  background: var(--text-color);
  width: 1rem;
  height: 1rem;
}
.theme-switcher:hover {
  background: var(--meta-color);
}
.theme-switcher-wrapper {
  position: relative;
}
.theme-resetter {
  -webkit-mask: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960" %3E%3Cpath d="M295.87-193.869v-78.001h291.152q43.63 0 72.369-33.424 28.739-33.423 28.739-79.271t-28.739-79.391Q630.652-497.5 587.022-497.5H343.913l87.478 87.478-55.652 55.153L193.869-536.5l181.87-181.631 55.652 55.653-87.478 86.978h243.109q75.435 0 127.272 56.522 51.837 56.521 51.837 134.174 0 77.652-51.837 134.293-51.837 56.642-127.272 56.642H295.87Z"/%3E%3C/svg%3E');
  position: absolute;
  visibility: hidden;
  opacity: 0;
  transition:
    opacity 0.3s ease,
    visibility 0.3s ease;
  transition-delay: 0.5s;
  cursor: pointer;
  inset-block-start: -0.6rem;
  inset-inline-end: -0.6rem;
  background: var(--text-color);
  width: 0.8rem;
  height: 0.8rem;
}
.theme-switcher-wrapper:hover .theme-resetter.has-custom-theme {
  visibility: visible;
  opacity: 1;
  transition:
    opacity 0.1s ease,
    visibility 0.1s ease;
  transition-delay: 0s;
}
.theme-switcher-wrapper:hover .theme-resetter.has-custom-theme:hover {
  background: var(--meta-color);
}
body > div:last-child > div:last-child[style]:not([class]):not([id]) {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 9999;
  box-shadow:
    rgba(50, 50, 93, 0.25) 0px 50px 100px -20px,
    rgba(0, 0, 0, 0.3) 0px 30px 60px -30px;
  border: 2px solid var(--admonition-danger-border);
  border-radius: 5px;
  background-color: var(--admonition-danger-bg);
  padding: 15px;
  width: fit-content;
  max-width: 80%;
}
body
  > div:last-child
  > div:last-child[style]:not([class]):not([id])
  > p[style]:first-child {
  margin: 0;
  color: var(--admonition-danger-border);
  font-weight: bold;
}
body
  > div:last-child
  > div:last-child[style]:not([class]):not([id])
  > pre[style]:last-child {
  margin-block-end: 0;
  background-color: var(--admonition-danger-code);
  padding: 10px;
  overflow-x: auto;
}
@font-face {
  src:
    local("Inter"),
    url("fonts/Inter4.woff2") format("woff2");
  font-family: "Inter";
  font-display: swap;
}
@font-face {
  src:
    local("Source Serif"),
    url("fonts/SourceSerif4Variable-Roman.ttf.woff2") format("woff2");
  font-family: "Source Serif";
  font-display: swap;
}
@font-face {
  src:
    local("Cascadia Code"),
    url("fonts/CascadiaCode-SemiLight.woff2") format("woff2");
  font-family: "Cascadia Code";
  font-display: swap;
}
:root {
  --background-color: white;
  --bg-0: #f0f0f0;
  --bg-1: #e7e7e7;
  --bg-2: #fefefe;
  --bg-3: #d8dcdd;
  --hover-color: white;
  --primary-color: #087e96;
  --divider-color: #d7d7d7;
  --text-color: #222226;
  --text-color-high-contrast: #313333;
  --meta-color: #5b5b65;
  --codeblock-bg: #26232e;
  --codeblock-highlight: #383444;
  --theme-switcher-svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M283.211 512c78.962 0 151.079-35.925 198.857-94.792 7.068-8.708-.639-21.43-11.562-19.35-124.203 23.654-238.262-71.576-238.262-196.954 0-72.222 38.662-138.635 101.498-174.394 9.686-5.512 7.25-20.197-3.756-22.23A258.156 258.156 0 0 0 283.211 0c-141.309 0-256 114.511-256 256 0 141.309 114.511 256 256 256z'/%3E%3C/svg%3E%0A");
  color-scheme: light;
  --max-layout-width: 1000px;
  --normal-layout-width: 600px;
  --medium-layout-width: 400px;
  --small-layout-width: 200px;
  --paragraph-spacing: max(2.3vmin, 24px);
  --sans-serif-font: "Inter", Helvetica, Arial, sans-serif;
  --serif-font: "Source Serif", "Georgia", serif;
  --code-font: "Cascadia Code";
  scrollbar-color: var(--primary-color) rgba(0, 0, 0, 0);
  accent-color: var(--primary-color);
  line-height: 190%;
  font-family: var(--sans-serif-font);
}
[data-theme="dark"] {
  --background-color: #1f1f1f;
  --bg-0: #2f2f2f;
  --bg-1: #3c3c3c;
  --bg-2: #171717;
  --bg-3: #535555;
  --hover-color: black;
  --primary-color: #91e0ee;
  --divider-color: #4a4a4a;
  --text-color: #d4d4d4;
  --text-color-high-contrast: #eceeef;
  --meta-color: #b0b0b0;
  --codeblock-bg: #19181e;
  --codeblock-highlight: #282834;
  --theme-switcher-svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 96 960 960' %3E%3Cpath d='M480 776q-83 0-141.5-58.5T280 576q0-83 58.5-141.5T480 376q83 0 141.5 58.5T680 576q0 83-58.5 141.5T480 776ZM80 616q-17 0-28.5-11.5T40 576q0-17 11.5-28.5T80 536h80q17 0 28.5 11.5T200 576q0 17-11.5 28.5T160 616H80Zm720 0q-17 0-28.5-11.5T760 576q0-17 11.5-28.5T800 536h80q17 0 28.5 11.5T920 576q0 17-11.5 28.5T880 616h-80ZM480 296q-17 0-28.5-11.5T440 256v-80q0-17 11.5-28.5T480 136q17 0 28.5 11.5T520 176v80q0 17-11.5 28.5T480 296Zm0 720q-17 0-28.5-11.5T440 976v-80q0-17 11.5-28.5T480 856q17 0 28.5 11.5T520 896v80q0 17-11.5 28.5T480 1016ZM226 378l-43-42q-12-11-11.5-28t11.5-29q12-12 29-12t28 12l42 43q11 12 11 28t-11 28q-11 12-27.5 11.5T226 378Zm494 495-42-43q-11-12-11-28.5t11-27.5q11-12 27.5-11.5T734 774l43 42q12 11 11.5 28T777 873q-12 12-29 12t-28-12Zm-42-495q-12-11-11.5-27.5T678 322l42-43q11-12 28-11.5t29 11.5q12 12 12 29t-12 28l-43 42q-12 11-28 11t-28-11ZM183 873q-12-12-12-29t12-28l43-42q12-11 28.5-11t27.5 11q12 11 11.5 27.5T282 830l-42 43q-11 12-28 11.5T183 873Z'/%3E%3C/svg%3E");
  color-scheme: dark;
}
[data-theme="dark"] .invertible-image {
  filter: invert(0.88);
}
[data-theme="dark"] .dimmable-image {
  filter: brightness(0.8) contrast(1.2);
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --background-color: #1f1f1f;
    --bg-0: #2f2f2f;
    --bg-1: #3c3c3c;
    --bg-2: #171717;
    --bg-3: #535555;
    --hover-color: black;
    --primary-color: #91e0ee;
    --divider-color: #4a4a4a;
    --text-color: #d4d4d4;
    --text-color-high-contrast: #eceeef;
    --meta-color: #b0b0b0;
    --codeblock-bg: #19181e;
    --codeblock-highlight: #282834;
    --theme-switcher-svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 96 960 960' %3E%3Cpath d='M480 776q-83 0-141.5-58.5T280 576q0-83 58.5-141.5T480 376q83 0 141.5 58.5T680 576q0 83-58.5 141.5T480 776ZM80 616q-17 0-28.5-11.5T40 576q0-17 11.5-28.5T80 536h80q17 0 28.5 11.5T200 576q0 17-11.5 28.5T160 616H80Zm720 0q-17 0-28.5-11.5T760 576q0-17 11.5-28.5T800 536h80q17 0 28.5 11.5T920 576q0 17-11.5 28.5T880 616h-80ZM480 296q-17 0-28.5-11.5T440 256v-80q0-17 11.5-28.5T480 136q17 0 28.5 11.5T520 176v80q0 17-11.5 28.5T480 296Zm0 720q-17 0-28.5-11.5T440 976v-80q0-17 11.5-28.5T480 856q17 0 28.5 11.5T520 896v80q0 17-11.5 28.5T480 1016ZM226 378l-43-42q-12-11-11.5-28t11.5-29q12-12 29-12t28 12l42 43q11 12 11 28t-11 28q-11 12-27.5 11.5T226 378Zm494 495-42-43q-11-12-11-28.5t11-27.5q11-12 27.5-11.5T734 774l43 42q12 11 11.5 28T777 873q-12 12-29 12t-28-12Zm-42-495q-12-11-11.5-27.5T678 322l42-43q11-12 28-11.5t29 11.5q12 12 12 29t-12 28l-43 42q-12 11-28 11t-28-11ZM183 873q-12-12-12-29t12-28l43-42q12-11 28.5-11t27.5 11q12 11 11.5 27.5T282 830l-42 43q-11 12-28 11.5T183 873Z'/%3E%3C/svg%3E");
    color-scheme: dark;
  }
  :root:not([data-theme="light"]) .invertible-image {
    filter: invert(0.88);
  }
  :root:not([data-theme="light"]) .dimmable-image {
    filter: brightness(0.8) contrast(1.2);
  }
}
html {
  background-color: var(--background-color);
  color: var(--text-color);
  line-height: 1.6em;
  text-rendering: optimizeLegibility;
}
body {
  display: flex;
  flex-direction: column;
  margin-inline: 5vmin;
  margin-block: 0;
  min-height: 100vh;
}
.content {
  word-wrap: break-word;
  margin: 0 auto;
  margin-top: 6vmin;
  margin-block-end: 4rem;
  width: 100%;
  max-width: var(--max-layout-width);
}
.use-sans-serif {
  --serif-font: var(--sans-serif-font);
}
article {
  position: relative;
  margin: 0 auto;
  max-width: calc(var(--max-layout-width) - 12rem);
}
article p,
article li,
article details,
article summary {
  font-family: var(--serif-font);
}
article strong {
  font-weight: 620;
}
article .full-width {
  margin-inline-start: -6rem;
  margin-inline-end: -6rem;
  max-width: calc(100% + 12rem);
}
article li p:not(:last-child) {
  margin-block-end: 0;
}
article li p + :last-child {
  margin-block-end: var(--paragraph-spacing);
}
.section-title {
  display: block;
  margin: 0;
  margin-top: -0.15em;
  color: var(--text-color-high-contrast);
  font-weight: 550;
  font-size: 2.2em;
  line-height: 1.2em;
}
.last-updated {
  margin-top: -5vmin;
}
h1,
h2,
h3,
h4,
h5,
h6 {
  display: block;
  position: relative;
  margin: 0;
}
h1 {
  margin-top: 0.67em;
  font-weight: 550;
  font-size: 1.62rem;
}
h2 {
  margin-top: 0.5em;
  font-weight: 550;
  font-size: 1.4rem;
}
h3 {
  margin-top: 0.3em;
  font-weight: 550;
  font-size: 1.2rem;
}
h4 {
  margin-top: 0.83em;
  font-weight: 550;
  font-size: 1rem;
}
h5 {
  margin-top: 0.83em;
  font-weight: normal;
  font-size: 1rem;
}
p {
  margin-top: 0.4rem;
  margin-block-end: var(--paragraph-spacing);
  font-size: 1em;
  line-height: 2rem;
}
strong {
  font-weight: 580;
}
.centered-text {
  text-align: center;
}
video {
  max-width: 100%;
}
.center-content {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  margin: 0;
  width: 100%;
  height: 100vh;
  text-align: center;
}
.subheader {
  margin-block-end: 2rem;
}
.mobile-only {
  display: none;
}
@media only screen and (max-width: 1000px) {
  .content {
    max-width: var(--normal-layout-width);
  }
  body {
    margin: 0 32px;
  }
  article .full-width {
    display: block;
    margin-inline-start: 0;
    margin-inline-end: 0;
    max-width: none;
    overflow-x: auto;
  }
  .mobile-only {
    display: block;
  }
}
@media only screen and (max-width: 600px) {
  .content {
    margin-top: 0rem;
    max-width: var(--medium-layout-width);
  }
  article {
    margin-top: 1.3rem;
  }
  body {
    margin-inline: 16px;
    margin-block: 0;
  }
}
@media only screen and (max-width: 300px) {
  .content {
    max-width: var(--small-layout-width);
  }
}
@media all and (min-width: 600px) {
  html {
    font-size: 16.5px;
  }
}
@media all and (min-width: 960px) {
  html {
    font-size: 20px;
  }
}
