:root {
  --color-nav: #4a0000;
  --color-back: #010018;
  --color-text: #e2e2e2;
  --color-head: #ffffff;
  --color-link: #ecec00;
  --color-hover: #c4f74c;
  --color-pre-text:  #dcecec;
  --color-pre-back:  #030039;
}

@font-face {
  font-display: swap;
  font-family: 'IBM Plex Serif';
  font-style: normal;
  font-weight: 400;
  src: url('/assets/ibm-plex-sans-v21-latin-regular.woff2') format('woff2');
}

@font-face {
  font-display: swap;
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  src: url('/assets/ibm-plex-mono-v19-latin-regular.woff2') format('woff2');
}


html {
  overflow-y: scroll;
  font-family: 'IBM Plex Serif', serif;
}

body {
  margin: 0;
  padding: 0;
  background-color: var(--color-back);
  color: var(--color-text);
  font-size: 14pt;
}


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

body a:hover {
  color: var(--color-hover);
  transition: 0.4s;
}


body header {
  background: black;
  border-bottom: 0.1em solid black;
  position: sticky;
  top: 0;
  z-index: 42;
  font-size: 12pt;
}

body header nav {
  background-color: var(--color-nav);
  font-family: 'IBM Plex Mono', monospace;
  font-size: 15pt;
  text-align: center;
  vertical-align: middle;
}

body header nav ul {
  display: inline-block;
  margin: 0.4em;
  padding: 0;
}

body header nav ul li {
  display: inline-block;
  margin: 0.2em 0.4em;
  padding: 0;
}

body header nav a {
  border-radius: 0.4em;
  padding: 0 0.2em 0.1em 0.2em;
}

body header nav a.selected {
  background: var(--color-back);
}


body.error {
  background: var(--color-nav);
  ::selection {
    background: var(--color-nav);
    color: var(--color-text);
  }
}

body.error div {
  font-size: 16pt;
  position: absolute;
  top: 45%;
  left: 50%;
  transform: translate(-50%, -50%);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}

body.error p {
  text-align: center;
  margin: 0.4em 0;
  padding: 0;
}


body main {
  font-size: 14pt;
  margin: 0.2em auto 0.2em auto;
  max-width: 60em;
  padding: 0.5em;
  width: min(80%, 64em);
}

body main h1,
body main h2,
body main h3,
body main h4 {
  color: var(--color-head);
  font-weight: bolder;
  margin: 0;
  margin-block-start: 1.2em;
  margin-block-end: 0.4em;
  padding: 0;
}

body main h1 {
  font-size: 18pt;
  margin-block-start: 0.4em;
}

body main h2 {
  font-size: 17pt;
}

body main h3 {
  font-size: 16pt;
}

body main h4 {
  font-size: 15pt;
}

body main pre {
  background: var(--color-pre-back);
  color: var(--color-pre-text);
  border: 1px solid var(--color-text);
  border-radius: 0.4em 0 0 0;
  font-family: 'IBM Plex Code', monospace;
  font-size: 13pt;
  margin: 0;
  margin-left: 1.1em;
  margin-block-start: 0.4em;
  margin-block-end: 0.4em;
  padding: 0.2em 0.4em;
}

body main code {
  color: var(--color-pre-text);
  margin: 0;
  padding: 0;
}

body main p {
  color: var(--color-text);
  margin: 0;
  margin-block-start: 0.8em;
  margin-block-end: 0.4em;
  padding: 0;
}

body main ul {
  margin: 0;
  margin-left: 2em;
  margin-block-start: -0.2em;
  margin-block-end: 0.4em;
  padding: 0;
}

body main ul li {
  margin-block-start: 0;
  margin-block-end: 0.2em;
}

body main ul p {
  margin: 0;
  margin-block-start: 0;
  margin-block-end: 0;
  padding: 0;
}

body main table {
  border: 1px solid;
  border-radius: 0.4em;
  margin: 0.6em 1em 0.6em ;
  width: calc(100% - 1em);
}

body main table th,
body main table td {
  padding: 0.1em 0.4em;
}

body main hr {
  border-color: var(--color-back);
  margin: 2em auto 1.6em auto;
  width: 20%;
}
