*, *::before, *::after {
  box-sizing: border-box;
}

html {
  -moz-text-size-adjust: none;
  -webkit-text-size-adjust: none;
  text-size-adjust: none;
  scroll-behavior: smooth;
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }
}
body {
  margin: 0;
  min-height: 100vh;
  line-height: 1.5;
}

h1, h2, h3, h4, h5, h6, button, input, label {
  line-height: 1.1;
}

h1, h2, h3, h4, h5, h6 {
  margin-top: 0;
  margin-bottom: 1rem;
  text-wrap: balance;
}

blockquote, figure {
  margin: 0 0 1rem;
}

ol, ul {
  margin-top: 0;
  margin-bottom: 1rem;
}

p {
  margin-top: 0;
  margin-bottom: 1rem;
  overflow-wrap: break-word;
  hyphens: auto;
}

hr {
  box-sizing: content-box;
  height: 0;
  overflow: visible;
}

input, button, textarea, select {
  font: inherit;
}

img, picture, video, svg {
  display: block;
  max-width: 100%;
  height: auto;
}

:target {
  scroll-margin-block: 3rem;
}

:root {
  color-scheme: light dark;
  --color-text: #212529;
  --color-primary: #007bff;
  --color-light: #f8f9fa;
  --color-white: #fff;
  --color-black: #000;
  --color-btn: #343a40;
  --color-border: #dee2e6;
  --color-selection: #dee2e6;
}

@media (prefers-color-scheme: dark) {
  :root {
    --color-text: #d1cdc7;
    --color-primary: #33a3ff;
    --color-light: #1b1e1f;
    --color-white: #181a1b;
    --color-black: #e7e5e4;
    --color-btn: #cbc5bf;
  }
  .dark-invert, pre.z-code code {
    filter: invert(90%) hue-rotate(180deg) sepia(10%);
  }
  img:not(.dark-invert) {
    filter: brightness(80%);
  }
}
::selection {
  background: var(--color-selection);
}

::-moz-selection {
  background: var(--color-selection);
}

body {
  background-color: var(--color-light);
  font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
  font-size: 1rem;
  font-weight: 400;
  line-height: 1.5;
  color: var(--color-text);
}

a {
  text-decoration: none;
  color: var(--color-primary);
}

a:hover {
  color: color-mix(in srgb, var(--color-primary), var(--color-black) 15%);
}

hr {
  margin-top: 1rem;
  margin-bottom: 1rem;
  border: 0;
  border-top: 1px solid var(--color-border);
}

h1 {
  font-size: 2rem;
}

h2 {
  font-size: 1.75rem;
}

h3 {
  font-size: 1.5rem;
}

h4 {
  font-size: 1.25rem;
}

h5 {
  font-size: 1rem;
}

h6 {
  font-size: 1rem;
}

h1, h2, h3, h4 {
  font-weight: 300;
}

h4, h5 {
  font-weight: 400;
}

small {
  font-size: 80%;
  font-weight: 400;
}

.container {
  width: 100%;
  max-width: 1140px;
  padding-right: 15px;
  padding-left: 15px;
  margin-right: auto;
  margin-left: auto;
}

.header {
  text-align: center;
  margin-top: 2rem;
  margin-bottom: 2rem;
}
.header a {
  text-wrap: nowrap;
}
.header h1 {
  font-size: 2.5rem;
}
.header h2 {
  font-size: 1.25rem;
}
.header h2 + p {
  margin-top: -1rem;
}
.header > * {
  margin-bottom: 1rem;
}
.header .btn {
  margin: 0.25rem;
}

.content h1, .content h2, .content h3, .content h4, .content h5, .content h6 {
  margin-top: 2rem;
}
.content p {
  text-align: justify;
}
.content blockquote {
  border-left: 4px solid color-mix(in srgb, var(--color-secondary), var(--color-white) 25%);
  padding-left: 1rem;
  font-style: italic;
}
.content pre {
  border: 1px solid color-mix(in srgb, var(--color-secondary), var(--color-white) 87.5%);
  border-radius: 0.25rem;
  background-color: var(--color-white);
  padding: 0.75rem;
  margin-bottom: 1rem;
  white-space: pre-wrap;
}
.content h1:has(+ .footnote-definition) {
  font-size: 1.375rem;
}

.footer {
  margin-top: 1rem;
  opacity: 50%;
  text-align: center;
}

.btn {
  display: inline-block;
  font-weight: 400;
  color: var(--color-white);
  text-align: center;
  vertical-align: middle;
  user-select: none;
  background-color: var(--color-btn);
  border: 1px solid var(--color-btn);
  padding: 0.375rem 0.75rem;
  font-size: 1rem;
  line-height: 1.5;
  border-radius: 1.5rem;
  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
.btn svg {
  width: 1.25rem;
  display: inline-block;
  vertical-align: text-bottom;
}

.btn:hover {
  color: var(--color-white);
  background-color: color-mix(in srgb, var(--color-btn), var(--color-white) 15%);
  text-decoration: none;
}

@media (prefers-reduced-motion: reduce) {
  .btn {
    transition: none !important;
  }
}
figure {
  display: flex;
  flex-direction: column;
  align-items: center;
}
figure video {
  border: 1px solid var(--color-border);
  border-radius: 0.25rem;
}
figure img, figure video {
  margin-bottom: 0.5rem;
}
figure > div {
  display: flex;
  flex-direction: column;
  align-items: center;
}
figure figure {
  margin-left: 1rem;
  margin-right: 1rem;
}

@media (min-width: 768px) {
  figure > div {
    flex-direction: row;
    align-items: baseline;
    justify-content: center;
  }
}
.content .footnote-definition {
  display: flex;
}
.content .footnote-definition > sup {
  margin-left: 1rem;
  margin-right: 0.5rem;
  vertical-align: baseline;
  font-size: inherit;
}
.content .footnote-definition > sup:after {
  content: ".";
}
.content .footnote-definition p {
  text-align: left;
}

.z-code {
  color: #334;
}

.z-comment {
  color: #99a;
}

.z-variable.z-parameter.z-function {
  color: #334;
}

.z-keyword {
  color: #a2a;
}

.z-variable {
  color: #d54;
}

.z-entity.z-name.z-function, .z-meta.z-require, .z-support.z-function.z-any-method {
  color: #08b;
}

.z-support.z-class, .z-entity.z-name.z-class, .z-entity.z-name.z-type.z-class {
  color: #b80;
}

.z-meta.z-class {
  color: #b80;
}

.z-keyword.z-other.z-special-method {
  color: #08b;
}

.z-storage {
  color: #a2a;
}

.z-support.z-function {
  color: #08b;
}

.z-string {
  color: #595;
}

.z-constant.z-numeric {
  color: #b80;
}

.z-none {
  color: #b80;
}

.z-none {
  color: #b80;
}

.z-constant {
  color: #b80;
}

.z-entity.z-name.z-tag {
  color: #d54;
}

.z-entity.z-other.z-attribute-name {
  color: #b80;
}

.z-entity.z-other.z-attribute-name.z-id, .z-punctuation.z-definition.z-entity {
  color: #b80;
}

.z-meta.z-selector {
  color: #a2a;
}

.z-markup.z-heading .z-punctuation.z-definition.z-heading, .z-entity.z-name.z-section {
  color: #08b;
}

.z-markup.z-bold, .z-punctuation.z-definition.z-bold {
  color: #a2a;
}

.z-markup.z-italic, .z-punctuation.z-definition.z-italic {
  color: #a2a;
}

.z-markup.z-raw.z-inline {
  color: #595;
}

.z-meta.z-link {
  color: #595;
}

.z-markup.z-quote {
  color: #595;
}

.z-markup.z-inserted {
  color: #9b7;
}

.z-markup.z-deleted {
  color: #d67;
}

.z-markup.z-changed {
  color: #db7;
}

.z-string.z-regexp {
  color: #595;
}

.z-constant.z-character.z-escape {
  color: #19b;
}

.z-invalid.z-illegal {
  color: #fff;
  background-color: #d67;
}

.z-invalid.z-broken {
  color: #fff;
  background-color: #db7;
}

.z-invalid.z-deprecated {
  color: #fff;
  background-color: #db7;
}

.z-invalid.z-unimplemented {
  color: #fff;
  background-color: #c7d;
}