/* windicss layer base */
*, ::before, ::after {
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
  border-width: 0;
  border-style: solid;
  border-color: var(--bg-soft);
}
* {
  --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/);
  --tw-ring-offset-width: 0px;
  --tw-ring-offset-color: #fff;
  --tw-ring-color: rgba(59, 130, 246, 0.5);
  --tw-ring-offset-shadow: 0 0 #0000;
  --tw-ring-shadow: 0 0 #0000;
  --tw-shadow: 0 0 #0000;
}
:root {
  -moz-tab-size: 4;
  -o-tab-size: 4;
  tab-size: 4;
}
:-moz-focusring {
  outline: 1px dotted ButtonText;
}
:-moz-ui-invalid {
  box-shadow: none;
}
::moz-focus-inner {
  border-style: none;
  padding: 0;
}
::-webkit-inner-spin-button, ::-webkit-outer-spin-button {
  height: auto;
}
::-webkit-search-decoration {
  -webkit-appearance: none;
}
::-webkit-file-upload-button {
  -webkit-appearance: button;
  font: inherit;
}
[type='search'] {
  -webkit-appearance: textfield;
  outline-offset: -2px;
}
abbr[title] {
  -webkit-text-decoration: underline dotted;
  text-decoration: underline dotted;
}
a {
  color: inherit;
  text-decoration: inherit;
}
body {
  margin: 0;
  font-family: inherit;
  line-height: inherit;
}
button {
  text-transform: none;
  background-color: transparent;
  background-image: none;
}
button, [type='button'], [type='reset'], [type='submit'] {
  -webkit-appearance: button;
}
blockquote, figure, blockquote, figure, p, h2, h3, h1, hr {
  margin: 0;
}
button, [role="button"] {
  cursor: pointer;
}
code, code {
  font-size: 1em;
  font-family: ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;
}
html {
  -webkit-text-size-adjust: 100%;
  font-family: "Inter",ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";
  line-height: 1.5;
}
hr {
  height: 0;
  color: inherit;
  border-top-width: 1px;
}
h2, h3, h1 {
  font-size: inherit;
  font-weight: inherit;
}
input, button {
  font-family: inherit;
  font-size: 100%;
  line-height: 1.15;
  margin: 0;
  padding: 0;
  line-height: inherit;
  color: inherit;
}
input::placeholder {
  opacity: 1;
  color: #9ca3af;
}
input::webkit-input-placeholder {
  opacity: 1;
  color: #9ca3af;
}
input::-moz-placeholder {
  opacity: 1;
  color: #9ca3af;
}
input:-ms-input-placeholder {
  opacity: 1;
  color: #9ca3af;
}
input::-ms-input-placeholder {
  opacity: 1;
  color: #9ca3af;
}
iframe {
  display: block;
  vertical-align: middle;
}
strong {
  font-weight: bolder;
}
small {
  font-size: 80%;
}
ul {
  list-style: none;
  margin: 0;
  padding: 0;
}
/* windicss layer components */

/* windicss layer utilities */
.focus\:bg-warm-gray-200:focus {
  --tw-bg-opacity: 1;
  background-color: rgba(231, 229, 228, var(--tw-bg-opacity));
}
.bg-warm-gray-100 {
  --tw-bg-opacity: 1;
  background-color: rgba(245, 245, 244, var(--tw-bg-opacity));
}
.hover\:bg-warm-gray-200:hover {
  --tw-bg-opacity: 1;
  background-color: rgba(231, 229, 228, var(--tw-bg-opacity));
}
.dark .dark\:bg-dark-400 {
  --tw-bg-opacity: 1;
  background-color: rgba(34, 34, 34, var(--tw-bg-opacity));
}
.dark .dark\:hover\:bg-dark-300:hover {
  --tw-bg-opacity: 1;
  background-color: rgba(45, 45, 45, var(--tw-bg-opacity));
}
.dark .dark\:focus\:bg-dark-300:focus {
  --tw-bg-opacity: 1;
  background-color: rgba(45, 45, 45, var(--tw-bg-opacity));
}
.bg-primary-soft {
  background-color: var(--fc-primary-soft);
}
.rounded-lg {
  border-radius: 0.5rem;
}
.rounded {
  border-radius: 0.25rem;
}
.rounded-full {
  border-radius: 9999px;
}
.cursor-pointer {
  cursor: pointer;
}
.block {
  display: block;
}
.inline-block {
  display: inline-block;
}
.inline {
  display: inline;
}
.flex {
  display: -webkit-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
}
.inline-flex {
  display: -webkit-inline-box;
  display: -ms-inline-flexbox;
  display: -webkit-inline-flex;
  display: inline-flex;
}
.grid {
  display: -ms-grid;
  display: grid;
}
.hidden {
  display: none;
}
.flex-col {
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -ms-flex-direction: column;
  -webkit-flex-direction: column;
  flex-direction: column;
}
.items-start {
  -webkit-box-align: start;
  -ms-flex-align: start;
  -webkit-align-items: flex-start;
  align-items: flex-start;
}
.items-center {
  -webkit-box-align: center;
  -ms-flex-align: center;
  -webkit-align-items: center;
  align-items: center;
}
.justify-center {
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  -webkit-justify-content: center;
  justify-content: center;
}
.justify-between {
  -webkit-box-pack: justify;
  -ms-flex-pack: justify;
  -webkit-justify-content: space-between;
  justify-content: space-between;
}
.justify-self-end {
  -ms-grid-column-align: end;
  justify-self: end;
}
.font-extrabold {
  font-weight: 800;
}
.font-bold {
  font-weight: 700;
}
.font-normal {
  font-weight: 400;
}
.font-semibold {
  font-weight: 600;
}
.h-10 {
  height: 2.5rem;
}
.h-full {
  height: 100%;
}
.h-6 {
  height: 1.5rem;
}
.text-sm {
  font-size: 0.875rem;
  line-height: 1.25rem;
}
.text-3xl {
  font-size: 1.875rem;
  line-height: 2.25rem;
}
.text-xs {
  font-size: 0.75rem;
  line-height: 1rem;
}
.text-xl {
  font-size: 1.25rem;
  line-height: 1.75rem;
}
.text-lg {
  font-size: 1.125rem;
  line-height: 1.75rem;
}
.text-base {
  font-size: 1rem;
  line-height: 1.5rem;
}
.text-2xl {
  font-size: 1.5rem;
  line-height: 2rem;
}
.text-1\.05rem {
  font-size: 1.05rem;
  line-height: 1;
}
.leading-tight {
  line-height: 1.25;
}
.m-auto {
  margin: auto;
}
.my-16 {
  margin-top: 4rem;
  margin-bottom: 4rem;
}
.mx-auto {
  margin-left: auto;
  margin-right: auto;
}
.my-2 {
  margin-top: 0.5rem;
  margin-bottom: 0.5rem;
}
.my-1 {
  margin-top: 0.25rem;
  margin-bottom: 0.25rem;
}
.my-8 {
  margin-top: 2rem;
  margin-bottom: 2rem;
}
.mx-1 {
  margin-left: 0.25rem;
  margin-right: 0.25rem;
}
.-mx-8 {
  margin-left: -2rem;
  margin-right: -2rem;
}
.mx-4 {
  margin-left: 1rem;
  margin-right: 1rem;
}
.mb-2 {
  margin-bottom: 0.5rem;
}
.ml-14 {
  margin-left: 3.5rem;
}
.mr-2 {
  margin-right: 0.5rem;
}
.ml-4 {
  margin-left: 1rem;
}
.mt-4 {
  margin-top: 1rem;
}
.mr-4 {
  margin-right: 1rem;
}
.mr-1 {
  margin-right: 0.25rem;
}
.ml-1 {
  margin-left: 0.25rem;
}
.min-w-\$w-container {
  min-width: var(--w-container);
}
.focus\:outline-none:focus {
  outline: 2px solid transparent;
  outline-offset: 2px;
}
.overflow-x-auto {
  overflow-x: auto;
}
.p-2 {
  padding: 0.5rem;
}
.p-4 {
  padding: 1rem;
}
.pt-4 {
  padding-top: 1rem;
}
.static {
  position: static;
}
.relative {
  position: relative;
}
.shadow {
  --tw-shadow: 0 1px 3px 0 rgb(0 0 0/0.1),0 1px 2px -1px rgb(0 0 0/0.1);
  --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);
  -webkit-box-shadow: var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);
  box-shadow: var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);
}
.shadow\.innerHTML {
  --tw-shadow: 0 1px 3px 0 rgb(0 0 0/0.1),0 1px 2px -1px rgb(0 0 0/0.1);
  --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);
  -webkit-box-shadow: var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);
  box-shadow: var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);
}
.fill-current {
  fill: currentColor;
}
.stroke-current {
  stroke: currentColor;
}
.text-center {
  text-align: center;
}
.text-soft {
  color: var(--fc-soft);
}
.hover\:text-primary-soft:hover {
  color: var(--fc-primary-soft);
}
.text-\$c-text {
  color: var(--c-text);
}
.text-hard {
  color: var(--fc-hard);
}
.text-primary {
  color: var(--fc-primary);
}
.italic {
  font-style: italic;
}
.uppercase {
  text-transform: uppercase;
}
.hover\:underline:hover {
  -webkit-text-decoration-line: underline;
  text-decoration-line: underline;
}
.\!no-underline {
  text-decoration: none !important;
}
.tracking-tight {
  letter-spacing: -0.025em;
}
.select-none {
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}
.whitespace-nowrap {
  white-space: nowrap;
}
.w-full {
  width: 100%;
}
.w-6 {
  width: 1.5rem;
}
.w-80px {
  width: 80px;
}
.gap-4 {
  grid-gap: 1rem;
  gap: 1rem;
}
.grid-cols-3 {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.grid-cols-2 {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.col-start-1 {
  grid-column-start: 1;
}
.col-start-2 {
  grid-column-start: 2;
}
.filter {
  --tw-blur: var(--tw-empty,/*!*/ /*!*/);
  --tw-brightness: var(--tw-empty,/*!*/ /*!*/);
  --tw-contrast: var(--tw-empty,/*!*/ /*!*/);
  --tw-grayscale: var(--tw-empty,/*!*/ /*!*/);
  --tw-hue-rotate: var(--tw-empty,/*!*/ /*!*/);
  --tw-invert: var(--tw-empty,/*!*/ /*!*/);
  --tw-saturate: var(--tw-empty,/*!*/ /*!*/);
  --tw-sepia: var(--tw-empty,/*!*/ /*!*/);
  --tw-drop-shadow: var(--tw-empty,/*!*/ /*!*/);
  -webkit-filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
}
@media (min-width: 500px) {
  .xs\:justify-self-end {
    -ms-grid-column-align: end;
    justify-self: end;
  }
  .xs\:-mx-4 {
    margin-left: -1rem;
    margin-right: -1rem;
  }
  .xs\:p-4 {
    padding: 1rem;
  }
  .xs\:gap-4 {
    grid-gap: 1rem;
    gap: 1rem;
  }
  .xs\:grid-cols-\[12rem\2c 1fr\] {
    grid-template-columns: 12rem 1fr;
  }
}
@media (min-width: 640px) {
  .sm\:inline {
    display: inline;
  }
  .sm\:flex-row {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
    -ms-flex-direction: row;
    -webkit-flex-direction: row;
    flex-direction: row;
  }
  .sm\:items-center {
    -webkit-box-align: center;
    -ms-flex-align: center;
    -webkit-align-items: center;
    align-items: center;
  }
}
@media (min-width: 768px) {
  .md\:rounded-md {
    border-radius: 0.375rem;
  }
  .md\:flex {
    display: -webkit-box;
    display: -ms-flexbox;
    display: -webkit-flex;
    display: flex;
  }
  .md\:grid {
    display: -ms-grid;
    display: grid;
  }
  .md\:text-right {
    text-align: right;
  }
  .md\:gap-4 {
    grid-gap: 1rem;
    gap: 1rem;
  }
}
@media (min-width: 1024px) {
  .lg\:block {
    display: block;
  }
  .lg\:hidden {
    display: none;
  }
  .lg\:fixed {
    position: fixed;
  }
}
@media (max-width: 767.9px) {
  .\<md\:hidden {
    display: none;
  }
}
@media (max-width: 499.9px) {
  .\<xs\:mt-2 {
    margin-top: 0.5rem;
  }
}:root {
  --bg-html: #fff;
  --bg-scrollbar-track: var(--bg-highlight);
  --bg-scrollbar-thumb: var(--bg-soft);
  --bg-scrollbar-thumb-hover: var(--bg-primary);
  --bg-highlight: rgba(126, 185, 220, 0.15);
  --bg-primary: var(--fc-primary-soft);
  --bg-soft: rgba(126, 185, 220, 0.35);
  --fc-soft: #6b7280;
  --fc: #374151;
  --fc-hard: #1f2937;
  --fc-intense: #111827;
  --fc-primary-soft: #0ea5e9;
  --fc-primary: #0284c7;
  --fc-primary-intense: #0369a1;
  --w-container: 65ch;
  --h-background: #fbfbfb;
  --h-foreground: #393a34;
  --h-boolean: #1c6b48;
  --h-builtin: #ab5959;
  --h-class: #795da3;
  --h-comment: #a0ada0;
  --h-constant: #2993a3;
  --h-decorator: #bd8f8f;
  --h-deleted: #a14f55;
  --h-function: #795da3;
  --h-keyword: #a71d5d;
  --h-literal: #2f8a89;
  --h-namespace: #b05a78;
  --h-number: #296aa3;
  --h-property: #b58451;
  --h-punctuation: #a71d5d;
  --h-regex: #ab5e3f;
  --h-string: #b56959;
  --h-operator: var(--h-punctuation);
  --h-variable: var(--h-literal);
  --h-symbol: var(--h-literal);
  --h-interpolation: var(--h-literal);
  --h-selector: var(--h-keyword);
  --h-keyword-control: var(--h-keyword);
}
html.dark {
  --bg-html: #1c1917;
  --fc-soft: #78716c;
  --fc: #d6d3d1;
  --fc-hard: #e7e5e4;
  --fc-intense: #f5f5f4;
  --fc-primary-soft: #0ea5e9;
  --fc-primary-intense: #0ea5e9;
  --h-foreground: #d4cfbf;
  --h-background: #1e1e1e;
  --h-boolean: #1c6b48;
  --h-builtin: #e0a569;
  --h-class: #54b1bf;
  --h-comment: #758575;
  --h-constant: var(--h-literal);
  --h-decorator: #bd8f8f;
  --h-deleted: #a14f55;
  --h-function: #67b1b5;
  --h-keyword: #e3428c;
  --h-literal: #429988;
  --h-namespace: #db889a;
  --h-number: #6394bf;
  --h-property: #dd8e6e;
  --h-punctuation: #858585;
  --h-regex: #ab5e3f;
  --h-string: #d48372;
  --h-variable: #c2b36e;
}
.hover\:larger {
  --tw-translate-x: 0;
  --tw-translate-y: 0;
  --tw-translate-z: 0;
  --tw-rotate: 0;
  --tw-rotate-x: 0;
  --tw-rotate-y: 0;
  --tw-rotate-z: 0;
  --tw-skew-x: 0;
  --tw-skew-y: 0;
  --tw-scale-x: 1;
  --tw-scale-y: 1;
  --tw-scale-z: 1;
  -webkit-transform: translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) translateZ(var(--tw-translate-z)) rotate(var(--tw-rotate)) rotateX(var(--tw-rotate-x)) rotateY(var(--tw-rotate-y)) rotateZ(var(--tw-rotate-z)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) scaleZ(var(--tw-scale-z));
  -ms-transform: translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) translateZ(var(--tw-translate-z)) rotate(var(--tw-rotate)) rotateX(var(--tw-rotate-x)) rotateY(var(--tw-rotate-y)) rotateZ(var(--tw-rotate-z)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) scaleZ(var(--tw-scale-z));
  transform: translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) translateZ(var(--tw-translate-z)) rotate(var(--tw-rotate)) rotateX(var(--tw-rotate-x)) rotateY(var(--tw-rotate-y)) rotateZ(var(--tw-rotate-z)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) scaleZ(var(--tw-scale-z));
  -webkit-transition-property: -webkit-transform;
  -o-transition-property: transform;
  transition-property: transform, -webkit-transform;
  -webkit-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  -o-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  -webkit-transition-duration: 150ms;
  -o-transition-duration: 150ms;
  transition-duration: 150ms;
  -webkit-transition-duration: 400ms;
  -o-transition-duration: 400ms;
  transition-duration: 400ms;
}
.hover\:larger:hover {
  --tw-scale-x: 1.1;
  --tw-scale-y: 1.1;
  --tw-scale-z: 1.1;
}
.section-title {
  font-weight: 800;
  font-size: 1.875rem;
  line-height: 2.25rem;
  line-height: 1.25;
  margin-top: 2rem;
  margin-bottom: 2rem;
  color: var(--fc-hard);
}
@media (min-width: 640px) {
  .section-title {
    font-size: 2.25rem;
    line-height: 2.5rem;
  }
}
@media (min-width: 768px) {
  .section-title {
    font-size: 3rem;
    line-height: 1;
  }
}
.layout {
  margin-left: auto;
  margin-right: auto;
  margin-top: 2rem;
  margin-bottom: 2rem;
  padding-left: 2rem;
  padding-right: 2rem;
  max-width: calc(var(--w-container) + 15vw);
}
.container {
  margin: 0 auto;
  max-width: var(--w-container);
}
.hoverable {
  transition: background 80ms ease;
}
.hoverable.active, .hoverable:hover {
  background: var(--bg-highlight);
}
.transition-bg {
  transition: background 0.3s ease;
}
html {
  background-color: var(--bg-html);
  color: var(--fc);
  line-height: 1.6;
}
body {
  overflow-y: scroll;
}
svg {
  height: inherit;
  width: inherit;
}
img {
  object-fit: cover;
  vertical-align: middle;
}
strong {
  font-weight: 600;
}
blockquote {
  background-color: var(--bg-highlight);
  color: var(--fc-intense);
  position: relative;
}
blockquote::before {
  border-left: 0.4rem solid var(--bg-primary);
  bottom: 0;
  content: '';
  height: 100%;
  left: 0;
  position: absolute;
  top: 0;
}
iframe {
  border-radius: inherit;
}
::selection {
  background: var(--bg-soft);
}
@media (min-width: 500px) {
  ::-webkit-scrollbar {
    background: var(--bg-scrollbar-track);
    height: 15px;
    width: 15px;
  }
  @media (min-width: 768px) {
    pre::-webkit-scrollbar:horizontal {
      border-bottom-right-radius: 0.375rem;
      border-bottom-left-radius: 0.375rem;
    }
  }
  ::-webkit-scrollbar-thumb {
    border-radius: 9999px;
    background-clip: content-box;
    background-color: var(--bg-scrollbar-thumb);
    border: 3px solid transparent;
  }
  ::-webkit-scrollbar-thumb:hover {
    background-color: var(--bg-scrollbar-thumb-hover);
  }
}
.navbar {
  padding: 1rem;
  grid-gap: 1rem;
  gap: 1rem;
  grid-template-columns: min-content 1fr min-content;
  max-width: calc(6rem + var(--w-container) + (100vw - var(--w-container)) / 2);
}
@media (min-width: 640px) {
  .navbar {
    font-size: 1.125rem;
    line-height: 1.75rem;
    padding-top: 2rem;
    padding-bottom: 2rem;
  }
}
@media (min-width: 1024px) {
  .navbar {
    padding-top: 3rem;
    padding-bottom: 3rem;
  }
}
.navbar-menu {
  place-items: center;
  height: 2rem;
  line-height: 1.25rem;
  margin-left: auto;
}
.navbar-menu > li + li, .navbar-menu + div, .navbar-menu + ile-root > div {
  margin-left: 1rem;
}
@media (min-width: 1024px) {
  .navbar-menu > li + li, .navbar-menu + div, .navbar-menu + ile-root > div {
    margin-left: 2rem;
  }
}
.navbar-menu-item {
  margin-top: -0.125rem;
}
.navbar-menu-item > a {
  border-color: transparent;
  border-bottom-width: 2px;
  opacity: 0.8;
  padding-top: 0.25rem;
  transition: opacity 80ms ease, border-color 80ms ease;
}
.navbar-menu-item > a:hover, .navbar-menu-item > a:active, .navbar-menu-item > a.active {
  border-color: var(--fc-primary);
  opacity: 1;
}
.ending {
  font-size: 13px;
  margin: 6rem 0;
}
.ending a.website-logo {
  height: 32px;
  left: calc(50% - 16px);
  margin-top: -6px;
  position: absolute;
}
@media (max-width: 499.9px) {
  .ending .last-name {
    display: none;
  }
}
.twitter-share-button {
  border-radius: 3px;
  float: right;
  font-family: "Helvetica Neue", Arial, sans-serif;
  font-size: 12px;
  font-weight: 500;
  padding: 1px 8px 1px 6px;
}
.twitter-share-button:active, .twitter-share-button:hover {
  background-color: var(--fc-primary);
}
.twitter-icon {
  background-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2072%2072%22%3E%3Cpath%20fill%3D%22none%22%20d%3D%22M0%200h72v72H0z%22%2F%3E%3Cpath%20class%3D%22icon%22%20fill%3D%22%23fff%22%20d%3D%22M68.812%2015.14c-2.348%201.04-4.87%201.744-7.52%202.06%202.704-1.62%204.78-4.186%205.757-7.243-2.53%201.5-5.33%202.592-8.314%203.176C56.35%2010.59%2052.948%209%2049.182%209c-7.23%200-13.092%205.86-13.092%2013.093%200%201.026.118%202.02.338%202.98C25.543%2024.527%2015.9%2019.318%209.44%2011.396c-1.125%201.936-1.77%204.184-1.77%206.58%200%204.543%202.312%208.552%205.824%2010.9-2.146-.07-4.165-.658-5.93-1.64-.002.056-.002.11-.002.163%200%206.345%204.513%2011.638%2010.504%2012.84-1.1.298-2.256.457-3.45.457-.845%200-1.666-.078-2.464-.23%201.667%205.2%206.5%208.985%2012.23%209.09-4.482%203.51-10.13%205.605-16.26%205.605-1.055%200-2.096-.06-3.122-.184%205.794%203.717%2012.676%205.882%2020.067%205.882%2024.083%200%2037.25-19.95%2037.25-37.25%200-.565-.013-1.133-.038-1.693%202.558-1.847%204.778-4.15%206.532-6.774z%22%2F%3E%3C%2Fsvg%3E);
  display: inline-block;
  height: 14px;
  position: relative;
  top: 2px;
  width: 14px;
}
.twitter-label {
  color: white;
  margin-left: 3px;
  vertical-align: 1px;
}
.rss {
  width: 1.5rem;
}
.prose {
  line-height: 1.75;
}
.prose a {
  color: var(--fc-intense);
  text-decoration: underline;
  text-decoration-color: var(--fc-soft);
  transition: color 80ms ease;
}
.prose a:hover, .prose a:active {
  color: var(--fc-primary-soft);
  text-decoration-color: var(--fc-primary-soft);
}
.prose ul > li {
  padding-left: 1.75em;
  position: relative;
}
.prose ul > li::before {
  background-color: var(--bg-primary);
  border-radius: 50%;
  content: "";
  height: 0.375em;
  left: 0.25em;
  position: absolute;
  top: 0.75em;
  width: 0.375em;
}
.prose figure {
  margin: 2em 0 1.5em;
}
.prose hr {
  margin: 3em 0;
}
.prose h2 {
  font-size: 1.5em;
  font-weight: 700;
  line-height: 1.3333333;
  margin-bottom: 1em;
  margin-top: 1.8em;
}
.prose h3 {
  font-size: 1.25em;
  font-weight: 600;
  line-height: 1.6;
  margin-bottom: 0.6em;
  margin-top: 1.6em;
}
.prose h4 {
  font-weight: 600;
  line-height: 1.5;
  margin-bottom: 0.5em;
  margin-top: 1.5em;
}
.prose p, .prose blockquote, .prose pre {
  margin-bottom: 1.25em;
  margin-top: 1.25em;
}
.prose blockquote p {
  margin: 0;
}
.prose p code {
  border-radius: 0.25rem;
  background-color: var(--bg-highlight);
  font-size: 0.9em;
  padding: 0.1em 0.3em 0.2em;
}
.prose h2 + *, .prose h3 + *, .prose h4 + * {
  margin-top: 0;
}
.prose iframe.example {
  width: 100%;
}
.prose .img {
  display: block;
  margin: 2em 0;
  width: calc(100% + 4rem);
}
.prose .caption {
  display: block;
  margin: 1.5rem 0 2rem;
  text-align: center;
}
.prose .code.caption {
  margin: -1rem 0 2rem;
}
.prose .code.caption > code {
  background: none;
  font-style: italic;
}
.prose blockquote, .prose pre {
  padding-left: 2rem;
  padding-right: 2rem;
  padding-top: 1rem;
  padding-bottom: 1rem;
  padding-right: 1rem;
}
.prose figure, .prose .img, .prose div[class*='language-'] {
  margin-left: -2rem;
  margin-right: -2rem;
}
@media (min-width: 768px) {
  .prose figure, .prose .img, .prose div[class*='language-'] {
    border-radius: 0.375rem;
  }
}
.prose blockquote {
  margin-left: -2rem;
  margin-right: -2rem;
  padding-top: 1.5rem;
  padding-bottom: 1.5rem;
}
@media (min-width: 768px) {
  .prose blockquote {
    border-top-right-radius: 0.375rem;
    border-bottom-right-radius: 0.375rem;
  }
}
.prose blockquote p + p {
  margin-top: 1rem;
}
span[role=img] {
  display: inline-block;
  font-size: 1.4em;
  margin: -0.8em 0.1em;
  vertical-align: -0.05em;
}
a.heading-anchor {
  color: var(--fc-primary);
  --link-size: 18px;
  float: left;
  font-size: 0.85em;
  margin-left: calc(0px - var(--link-size) - 6px);
  margin-top: 0.5rem;
  opacity: 0;
  padding-right: 0.23em;
  text-decoration: none !important;
}
a.heading-anchor::before {
  background-image: url('data:image/png;base64,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');
  background-size: var(--link-size);
  content: ' ';
  display: block;
  height: var(--link-size);
  width: var(--link-size);
}
.heading::before {
  --offset: 1rem;
  content: " ";
  display: block;
  height: var(--offset);
  margin-top: calc(var(--offset) * -1);
  pointer-events: none;
  visibility: hidden;
}
.heading:focus a.heading-anchor, .heading:hover a.heading-anchor {
  opacity: 1;
}
.img.square {
  border-radius: 0;
}
.img.captioned {
  margin-bottom: 1.5rem;
}
@media (min-width: 1024px) {
  .img.narrow {
    margin-left: 5%;
    width: 80%;
  }
  .img.wide {
    --width: clamp(var(--w-container), 70vw, 940px);
    margin-left: calc((var(--width) - var(--w-container)) / -2);
    width: var(--width);
  }
}
.about h2 {
  display: -webkit-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  -webkit-box-align: center;
  -ms-flex-align: center;
  -webkit-align-items: center;
  align-items: center;
}
.about h2 a:not(.heading-anchor) {
  display: -webkit-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  margin-left: 1rem;
  width: 2rem;
}
.about h2 a:not(.heading-anchor) + a {
  margin-left: 0.5rem;
}
div[class*='language-'] {
  background: var(--h-background);
  color: var(--h-foreground);
  font-size: 14px;
  hyphens: none;
  line-height: 1.6em;
  position: relative;
  tab-size: 2;
  white-space: pre;
  word-break: normal;
  word-spacing: normal;
}
div[class*='language-'].line-numbers-mode {
  --gutter-width: 2rem;
  padding-left: var(--gutter-width);
}
div[class*='language-'].line-numbers-mode pre[class*='language-'] {
  padding-left: 1rem;
}
div[class*='language-'] pre {
  padding-right: 0;
}
pre[class*='language-'] {
  overflow: auto;
  position: relative;
}
pre.line-highlight, pre.line-numbers {
  bottom: 0;
  left: 0;
  margin: 0 !important;
  margin: 0;
  overflow: hidden;
  padding-left: 0;
  position: absolute;
  top: 0;
  user-select: none;
  width: 100%;
}
pre.line-numbers {
  border-right: 1px solid var(--bg-soft);
  color: #888;
  text-align: center;
  width: var(--gutter-width);
}
pre.line-highlight .highlighted {
  background-color: var(--bg-highlight);
}
* ::selection {
  background: var(--bg-highlight);
}
.token.comment, .token.prolog, .token.doctype, .token.cdata {
  color: var(--h-comment);
  font-style: var(--h-comment-style);
}
.token.namespace {
  color: var(--h-namespace);
}
.token.interpolation {
  color: var(--h-interpolation);
}
.token.string {
  color: var(--h-string);
}
.token.punctuation {
  color: var(--h-punctuation);
}
.token.operator {
  color: var(--h-operator);
}
.token.keyword.module, .token.keyword.control-flow {
  color: var(--h-keyword-control);
}
.token.url, .token.symbol, .token.inserted {
  color: var(--h-symbol);
}
.token.constant {
  color: var(--h-constant);
}
.token.string.url {
  text-decoration: var(--h-url-decoration);
}
.token.boolean, .language-json .token.boolean {
  color: var(--h-boolean);
}
.token.number, .language-json .token.number {
  color: var(--h-number);
}
.token.variable {
  color: var(--h-variable);
}
.token.keyword {
  color: var(--h-keyword);
}
.token.atrule, .token.attr-value, .token.selector {
  color: var(--h-selector);
}
.token.function {
  color: var(--h-function);
}
.token.deleted {
  color: var(--h-deleted);
}
.token.important, .token.bold {
  font-weight: bold;
}
.token.italic {
  font-style: italic;
}
.token.class-name {
  color: var(--h-class);
}
.token.tag, .token.builtin {
  color: var(--h-builtin);
}
.token.attr-name, .token.property, .token.entity {
  color: var(--h-property);
}
.language-json .token.property {
  color: var(--h-json-property);
}
.token.regex {
  color: var(--h-regex);
}
.token.decorator, .token.annotation {
  color: var(--h-decorator);
}