:root {
  --color-text: #dddddd;
  --color-background: #17052d;
  --color-link: #ff91e9;
  --color-title: #d391ff;
  --color-sun: #ff6c50;
  --sun-height: 20vh;
  --sun-widht: 40vh;
  --menu-width: 16rem;
  --content-width: 40rem;
  --font-size: 1.4rem;
  --line-height:  1.6rem;
}

[data-footnote-ref]::before {
  content: '[';
}

[data-footnote-ref]::after {
  content: ']';
}

/* atkinson-hyperlegible-next-latin-200-normal */
@font-face {
  font-family: 'Atkinson Hyperlegible Next';
  font-style: normal;
  font-display: swap;
  font-weight: 200;
  src: url(./font/atkinson-hyperlegible-next-latin-200-normal.woff2) format('woff2'), url(./font/atkinson-hyperlegible-next-latin-200-normal.woff) format('woff');
  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;
}

/* atkinson-hyperlegible-next-latin-300-normal */
@font-face {
  font-family: 'Atkinson Hyperlegible Next';
  font-style: normal;
  font-display: swap;
  font-weight: 300;
  src: url(./font/atkinson-hyperlegible-next-latin-300-normal.woff2) format('woff2'), url(./font/atkinson-hyperlegible-next-latin-300-normal.woff) format('woff');
  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;
}

/* atkinson-hyperlegible-next-latin-400-normal */
@font-face {
  font-family: 'Atkinson Hyperlegible Next';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(./font/atkinson-hyperlegible-next-latin-400-normal.woff2) format('woff2'), url(./font/atkinson-hyperlegible-next-latin-400-normal.woff) format('woff');
  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;
}

/* atkinson-hyperlegible-next-latin-500-normal */
@font-face {
  font-family: 'Atkinson Hyperlegible Next';
  font-style: normal;
  font-display: swap;
  font-weight: 500;
  src: url(./font/atkinson-hyperlegible-next-latin-500-normal.woff2) format('woff2'), url(./font/atkinson-hyperlegible-next-latin-500-normal.woff) format('woff');
  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;
}

/* atkinson-hyperlegible-next-latin-600-normal */
@font-face {
  font-family: 'Atkinson Hyperlegible Next';
  font-style: normal;
  font-display: swap;
  font-weight: 600;
  src: url(./font/atkinson-hyperlegible-next-latin-600-normal.woff2) format('woff2'), url(./font/atkinson-hyperlegible-next-latin-600-normal.woff) format('woff');
  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;
}

/* atkinson-hyperlegible-next-latin-700-normal */
@font-face {
  font-family: 'Atkinson Hyperlegible Next';
  font-style: normal;
  font-display: swap;
  font-weight: 700;
  src: url(./font/atkinson-hyperlegible-next-latin-700-normal.woff2) format('woff2'), url(./font/atkinson-hyperlegible-next-latin-700-normal.woff) format('woff');
  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;
}

/* atkinson-hyperlegible-next-latin-800-normal */
@font-face {
  font-family: 'Atkinson Hyperlegible Next';
  font-style: normal;
  font-display: swap;
  font-weight: 800;
  src: url(./font/atkinson-hyperlegible-next-latin-800-normal.woff2) format('woff2'), url(./font/atkinson-hyperlegible-next-latin-800-normal.woff) format('woff');
  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;
}

/* atkinson-hyperlegible-next-latin-200-italic */
@font-face {
  font-family: 'Atkinson Hyperlegible Next';
  font-style: italic;
  font-display: swap;
  font-weight: 200;
  src: url(./font/atkinson-hyperlegible-next-latin-200-italic.woff2) format('woff2'), url(./font/atkinson-hyperlegible-next-latin-200-italic.woff) format('woff');
  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;
}

/* atkinson-hyperlegible-next-latin-300-italic */
@font-face {
  font-family: 'Atkinson Hyperlegible Next';
  font-style: italic;
  font-display: swap;
  font-weight: 300;
  src: url(./font/atkinson-hyperlegible-next-latin-300-italic.woff2) format('woff2'), url(./font/atkinson-hyperlegible-next-latin-300-italic.woff) format('woff');
  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;
}

/* atkinson-hyperlegible-next-latin-400-italic */
@font-face {
  font-family: 'Atkinson Hyperlegible Next';
  font-style: italic;
  font-display: swap;
  font-weight: 400;
  src: url(./font/atkinson-hyperlegible-next-latin-400-italic.woff2) format('woff2'), url(./font/atkinson-hyperlegible-next-latin-400-italic.woff) format('woff');
  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;
}

/* atkinson-hyperlegible-next-latin-500-italic */
@font-face {
  font-family: 'Atkinson Hyperlegible Next';
  font-style: italic;
  font-display: swap;
  font-weight: 500;
  src: url(./font/atkinson-hyperlegible-next-latin-500-italic.woff2) format('woff2'), url(./font/atkinson-hyperlegible-next-latin-500-italic.woff) format('woff');
  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;
}

/* atkinson-hyperlegible-next-latin-600-italic */
@font-face {
  font-family: 'Atkinson Hyperlegible Next';
  font-style: italic;
  font-display: swap;
  font-weight: 600;
  src: url(./font/atkinson-hyperlegible-next-latin-600-italic.woff2) format('woff2'), url(./font/atkinson-hyperlegible-next-latin-600-italic.woff) format('woff');
  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;
}

/* atkinson-hyperlegible-next-latin-700-italic */
@font-face {
  font-family: 'Atkinson Hyperlegible Next';
  font-style: italic;
  font-display: swap;
  font-weight: 700;
  src: url(./font/atkinson-hyperlegible-next-latin-700-italic.woff2) format('woff2'), url(./font/atkinson-hyperlegible-next-latin-700-italic.woff) format('woff');
  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;
}

/* atkinson-hyperlegible-next-latin-800-italic */
@font-face {
  font-family: 'Atkinson Hyperlegible Next';
  font-style: italic;
  font-display: swap;
  font-weight: 800;
  src: url(./font/atkinson-hyperlegible-next-latin-800-italic.woff2) format('woff2'), url(./font/atkinson-hyperlegible-next-latin-800-italic.woff) format('woff');
  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;
}

html {
  height: 100%;
  font-family: "Atkinson Hyperlegible Next", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
  padding: 0;
  margin: 0;
  color: var(--color-text);
  background: var(--color-background);
  background: linear-gradient(
    0deg, 
    var(--color-background), 
    oklch(from var(--color-background) l calc(c + 0.25) calc(h + 30)) 50%, 
    oklch(from var(--color-background) l calc(c + 0.2) calc(h + 40)) 50%,
    var(--color-background) 100%
  );
  background-position: fixed;
  font-size: var(--font-size);
  font-smooth: auto;
}

body {
  height: 100%;
  margin: 0 auto;
  box-sizing: border-box;
  display: flex;
  padding: 0;
  align-items: stretch;
}

body > menu{
  border-right: 1px solid oklch(from var(--color-background) calc(l + 0.2) c h / 50%);
  background: oklch(from var(--color-background) l c h / 60%);
  width: var(--menu-width);
  padding: 2rem;
  margin: 0;
  box-sizing: border-box;
  backdrop-filter: blur(5px);
}

body > menu header section figure {
  padding: 0;
  margin: 0;
}

body > menu header p {
  font-size: .8rem;
}

body > menu video,
body > menu img {
  width: 100%;
  border-radius: 1rem;
}

body > menu img {
  display: none;
}

body > menu h1 {
  color: white;
  font-size: 1.5rem;
}

body > menu h1 a{
  color: white;
  text-decoration: none;
}

body > menu ul{
  padding: 0;
  list-style: none;
  font-size: .8rem;
}

body > menu ul li a,
body > menu footer a {
  color: var(--color-link);
  text-decoration: none;
}

body > menu ul li a:hover,
body > menu footer a:hover {
  text-decoration: underline;
}

body > menu footer {
  position: absolute;
  bottom: 2rem;
  font-size: .60rem;
  padding-right: 2rem;
}

body > section {
  box-sizing: border-box;
  height: 100%;
  flex: 1;
  position: relative;
  overflow: hidden;
}

body > section article {
  box-sizing: border-box;
  max-width: var(--content-width);
  border-right: 1px solid oklch(from var(--color-background) calc(l + 0.3) c h / 50%);
  background: oklch(from var(--color-background) calc(l - 0.1) c h / 60%);
  backdrop-filter: blur(5px);
  overflow: hidden;
}

body > section article:not(:last-child) {
  border-bottom: 1px solid oklch(100% 0% 0 / 20%)
}

body > section .scroll {
  box-sizing: border-box;
  height: 100%;
  overflow: auto;
  position: relative;
  z-index: 2;
}

body > section article > section {
  padding-left: 2rem;
  border-bottom: 1px solid oklch(100% 0% 0 / 10%);
}

body > section article > section ul,
body > section article > section ol {
  padding-left: 1rem;
}

body > section article > section p,
body > section article > section ul,
body > section article > section ol {
  padding-right: 2rem;
  margin: 2rem 0;
  line-height: var(--line-height);
  text-align: justify;
  text-justify: distribute;
  text-rendering: optimizeLegibility;  
}

body > section article > section p sup,
body > section article > section ul sup,
body > section article > section ol sup  {
  line-height: initial;
}

body > section article > section p code,
body > section article > section ul li code,
body > section article > section ol li code {
  display: inline-block;
  padding: .10rem .25rem;
  font-size: 1rem;
  background: oklch(0% 0% 0 / 20%);
}

body > section article > section ul li p,
body > section article > section ol li p {
  margin: auto;
}

body > section article > section pre code.hljs {
  padding: 2rem;
}

body > section article > section figure,
body > section article > section pre {
  position: relative;
  left: -2rem;
  width: calc(100% + 2rem);
  margin: 0;
}

body > section article > section figure figcaption {
  background: oklch(0% 0% 0 / 20%);
  padding: 1rem;
  text-align: center;
  font-style: italic;
}

body > section article > section img,
body > section article > section video {
  width: 100%;
  display: block;
}

body > section article > section strong {
  color: oklch(from var(--color-text) calc(l + 0.2) c calc(h - 20.0))
}

body > section article header {
  padding: 0 2rem;
  border-bottom: 1px solid oklch(100% 0% 0 / 10%);
}

body > section article header h1 {
  font-size: 3rem;
}

body > section article header h1 a {
  color: var(--color-title);
}

body > section article h2 {
  font-size: 2rem;
  color: var(--color-title);
}

body > section article footer {
  display: flex;
  padding: 2rem;
}

body > section article footer aside {
  flex: 1;
}

body > section article footer ul {
  list-style: none;
  margin: 0;
  padding: 0;
  display: inline;
}

body > section article footer ul li {
  display: inline;
}

body > section .scroll nav {
  max-width: var(--content-width);
  border-top: 1px solid oklch(100% 0% 0 / 20%);
  border-right: 1px solid oklch(100% 0% 0 / 10%);
  box-sizing: border-box;
  background: oklch(0% 0% 0 / 20%);
  padding: 2rem;
  backdrop-filter: blur(5px);
}

body > section .scroll nav ul {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  justify-content: center;
  gap: 1rem;
}

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

body > section a:hover {
  text-decoration: underline;
}

body section.comments {
  box-sizing: border-box;
  max-width: var(--content-width);
  border-right: 1px solid oklch(100% 0% 0 / 10%);
  border-top: 1px solid oklch(100% 0% 0 / 20%);
  background: oklch(0% 0% 0 / 20%);
  backdrop-filter: blur(5px);
  overflow: hidden;
}

body section.comments .comments > p:last-child{
  padding-left: 2rem;
}

body section.comments h2 {
  padding-left: 2rem;
}

body section.comments > aside {
  display: flex;
  padding-left: 2rem;
}

body section.comments > aside p:last-child {
  text-align: right;
  flex: 1;
  padding-right: 2rem;
}

body section.comments .comment aside {
  display: flex;
  flex-direction: row;
  align-items: center;
}

body section.comments .comment aside a,
body section.comments .comment aside img,
body section.comments .comment aside time {
  display: block;
}

body section.comments .comment aside img {
  width: 2rem;
  border-radius: 1rem;
  margin-right: 1rem;
}

body section.comments .comment {
  --level: 0;
  margin-left: calc(var(--level) * 2rem);
  padding: 2rem;
  box-sizing: border-box;
}

body section.comments .comment:not(:last-child) {
  border-bottom: 1px solid oklch(100% 0% 0 / 10%);
}

body section.comments .comment:not([data-level="0"]) {
  border-left: 1px solid oklch(100% 0% 0 / 10%);
}

body section.comments .comment[data-level="1"] { --level: 1; }
body section.comments .comment[data-level="2"] { --level: 2; } 
body section.comments .comment[data-level="3"] { --level: 3; } 
body section.comments .comment[data-level="4"] { --level: 4; }
body section.comments .comment[data-level="5"] { --level: 5; } 
body section.comments .comment[data-level="6"] { --level: 6; }  

body section.comments .comment aside figure.avatar {
  padding: 0;
  margin: 0;
}

body section.comments .comment aside time {
  font-size: .75rem;
  padding-left: 1rem;
  flex: 1;
  text-align: right;
}

body section.comments .comment p {
  white-space: pre-line;
}

.background {
  position: absolute;
  top: 0%;
  height: 100%;
  width: 100%;
  perspective: 20vw;
  perspective-origin: center;
  overflow: hidden;
}

.lines {
  background-size: 40px 40px;
  background-image:
    linear-gradient(to right, rgba(255, 255, 255, .2) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(255, 255, 255, .2) 1px, transparent 1px);
  height: inherit;
  transform: rotateX(50deg);
  transform-origin: top center;
  animation: 120s linear infinite crawlingWall;
	background-position-y: top;
  position: fixed;
  top: 50%;
  left: 0;
  bottom: -100%;
  right: 0;
  z-index: 1;
}

.sun {
  width: var(--sun-widht);
  height: var(--sun-height);
  position: absolute;
  z-index: -1;
  top: 50%;
  right: 0%;
  background: var(--color-sun);
  border-radius: var(--sun-widht) var(--sun-widht) 0 0;
  transform: translate(50%, calc(-1 * var(--sun-height)));
  background: linear-gradient(0deg, var(--color-sun) 0%, oklch(from var(--color-sun) calc(l + 1) c calc(h + 30)) 100%);
  box-shadow: var(--color-sun) 0 0 20rem;
}

.footnotes ol {
  padding-left: 0;
  font-size: 0.75rem;
  padding-left: 1rem;
}

@keyframes crawlingWall {
  to {
    background-position-y: bottom;
  }
}

@media only screen and (min-width: 2000px) {
  .sun {
    left: 50%;
  }  
}

@media only screen and (max-width: 1200px) {
  :root {
    --menu-width: 12rem;
  }
}

@media only screen and (max-width: 800px) {
  :root {
    --font-size: 1.2rem;
    --line-height:  1.6rem;
  }

  html {
    background: oklch(from var(--color-background) l calc(c + 0.1) calc(h + 30));
  }

  body {
    flex-direction: column;
    height: auto;
  }

  body > menu {
    width: 100%;
    border-right: none;
    border-bottom: 1px solid oklch(100% 0% 0 / 20%);
  }

  body > menu h1 {
    margin: 0
  }
  
  body > menu header section {
    display: flex;
    flex-direction: row;
    align-items: center;
  }

  body > menu video {
    display: none;
  }

  body > menu img {
    display: inline-block;
    max-width: 50px;
    margin-right: 1rem;
  }

  body > section {
    height: auto;
    overflow: initial;
    width: auto;
    max-width: 100%;
  }

  body > section .scroll {
    height: auto;
    overflow: initial;
  }

  body > section article,
  body > section .scroll nav {
    width: 100%;
    max-width: 100%;
    border-right: none;
  }

  body > section article > section {
    padding: 2rem;
    border: none;
  }

  body > section article > section p {
    padding-right: 0;
  }

  body > section article > section figure,
  body > section article > section pre {
    width: calc(100% + 4rem);
  }

  .background, .lines, .sun {
    display: none;
  }

  body section.comments {
    width: 100%;
  }

  body section.comments > aside {
    flex-direction: column;
  }

  body section.comments > aside p:last-child {
    text-align: left;
  }

  body section.comments .comment {
    margin-left: calc(var(--level) * 1rem);
  }
  
  body > menu footer {
    margin-top: 1rem;
    position: initial;
  }
}

@media only screen and (max-height: 700px) {
  body > menu footer {
    margin-top: 1rem;
    position: initial;
  }
}