* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

::selection {
  color: #fff;
  background: #000c;
}

html {
  font-size: 16px;
  -webkit-text-size-adjust: none;
  text-size-adjust: none;
  text-rendering: optimizeLegibility;
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  -webkit-tap-highlight-color: transparent;
  touch-action: manipulation;
  overscroll-behavior: contain;
  cursor: crosshair;
}
body {
  font: 1rem/1.5 var(--font-family);
  font-feature-settings: var(--font-feature);
  color: #333;
  background: #fff;
  transition: .2s ease-in;
  transition-property: color, background, opacity;
}

.loading, [onload] {
  opacity: 0;
}
a {
  text-decoration: none;
  color: #333;
  cursor: pointer;
}
img {
  transition: opacity .2s ease-in;
}
h1, h2, h3, h4, h5, h6 {
  font-weight: 400;
}
main {
  margin: 0 auto;
}


:root {
  --font-family: -apple-system, "MiSans", "HarmonyOS Sans", "Source Han Sans SC", "Noto Sans CJK SC", "Noto Sans SC", sans-serif;
  --font-feature: "ss01", "cv01", "cv06", "cv11";
  --ch: 200;
  --csm:  1;
  --cl010:  10%;
  --cl020:  20%;
  --cl030:  30%;
  --cl040:  40%;
  --cl050:  50%;
  --cl060:  60%;
  --cl070:  70%;
  --cl080:  80%;
  --cl090:  90%;
  --cl095:  95%;
  --cl100: 100%;
  --color-neutral-010: hsl(240, calc(5% + 5% * var(--csm)), var(--cl010));
  --color-neutral-020: hsl(240, calc(5% + 5% * var(--csm)), var(--cl020));
  --color-neutral-030: hsl(240, 5%, var(--cl030));
  --color-neutral-040: hsl(240, 5%, var(--cl040));
  --color-neutral-050: hsl(240, 5%, var(--cl050));
  --color-neutral-060: hsl(240, 5%, var(--cl060));
  --color-neutral-070: hsl(240, 5%, var(--cl070));
  --color-neutral-080: hsl(240, 5%, var(--cl080));
  --color-neutral-090: hsl(240, 5%, var(--cl090));
  --color-neutral-095: hsl(240, 5%, var(--cl095));
  --color-neutral-100: hsl(240, calc(5% - 5% * var(--csm)), var(--cl100));
  --color-neutral-100a: hsla(240, calc(5% - 5% * var(--csm)), var(--cl100), .5);
  --color-primary-050: hsl(var(--ch), calc(80% - 10% * var(--csm)), var(--cl050));
  --color-primary-060: hsl(var(--ch), 80%, var(--cl060));
  --color-primary-070: hsl(var(--ch), 80%, var(--cl070));
  --color-primary-080: hsl(var(--ch), 80%, var(--cl080));
  --color-primary-090: hsl(var(--ch), calc(80% + 10% * var(--csm)), var(--cl090));
  --color-primary-095: hsl(var(--ch), calc(80% + 10% * var(--csm)), var(--cl095));
  --color-secondary-030: hsl(var(--ch), calc(15% - 5% * var(--csm)), var(--cl030));
  --color-secondary-050: hsl(var(--ch), 15%, var(--cl050));
  --color-secondary-080: hsl(var(--ch), calc(15% + 5% * var(--csm)), var(--cl080));
}

@font-face {
  font-family: "JetBrains Mono";
  font-style: normal;
  font-weight: 100 800;
  src: url("https://fonts.gstatic.com/s/jetbrainsmono/v23/tDbV2o-flEEny0FZhsfKu5WU4xD7OwE.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Iosevka";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: local("Iosevka Term"), url("/assets/fonts/iosevka.woff2") format("woff2");
}
