:root {
  /* --primary: #7347d9ff; */
  --primary100: #cfbff1;
  --secondary: #d947adff;
  --secondary50: #fae2f0;
  --darkbgaccent: #1a1622ff;
  --darkbg: #121212ff;
  --darkbgalpha: #121212f8;
}

html {
  min-height: 100%;
}

body {
  min-height: 100%;

  margin: 0;
  padding: 0;
  color: #fffdf3;
  font-weight: 400;
  font-family: "Inconsolata", monospace;
  font-size: 20px;
  line-height: 120%;

  background-color: var(--darkbgaccent);
}

@media screen and (max-width: 1000px) {
  body {
    font-size: 18px;
  }
}

#ledsFloater {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  min-height: 100%;
  overflow-x: hidden;
  z-index: -11;
}

#ledsWrapper {
  float: left; /* oh god */
  width: 100%;
  min-height: 100%;
}

#leds {
  width: max(60vw, 600px);
  height: max(60vw, 600px);
  transform: rotate(-15deg);
  position: relative;
  top: min(-10vw, -100px);
  left: min(-10vw, -100px);
  z-index: -10;
}

#page {
  max-width: 60rem;
  margin: 6em auto 2em auto;
  background-color: var(--darkbgalpha);

  display: flex;
  flex-direction: column;
}

@media screen and (max-width: 1000px) {
  #page {
    background-color: #121212f0;
  }
}

.about img {
  width: 100%;
  display: block;
  margin: 0 auto;
}

#top {
  display: flex;
  flex-direction: row;
  flex-flow: row wrap;
  height: 10em;
  margin: 2em 0 1em 0;
  justify-content: center;
}

@media screen and (max-width: 1000px) {
  #top {
    margin: 1em 0 1em 0;
  }
}

#logo,
#logo > img {
  height: 100%;
}

@media screen and (max-width: 600px) {
  #top {
    height: 5em;
  }

  #top .type {
    font-size: 18px;
  }
}

#top .type {
  max-width: 15em;
  font-size: min(35px, 2.5vw);
  margin-left: 1em;
  line-height: 1;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

#top .type h1 {
  padding: 0 0 0.5em 0.2em;
  font-family: "Comfortaa", sans-serif;
  color: #fff;
  text-shadow: 0 0 1px var(--secondary), 0 0 5px var(--secondary),
    0 0 20px var(--secondary);
  font-size: 60px;
  animation: neon ease-in-out 4s infinite alternate, blink 5s infinite;
}

@keyframes neon {
  from {
    text-shadow: 0 0 1px var(--secondary), 0 0 3px var(--secondary),
      0 0 15px var(--secondary);
  }
  to {
    text-shadow: 0 0 1px var(--secondary), 0 0 15px var(--secondary),
      0 0 40px var(--secondary);
  }
}
@keyframes blink {
  0% {
    opacity: 1;
  }
  80% {
    opacity: 1;
  }
  81% {
    opacity: 0.4;
  }
  82.7% {
    opacity: 0.4;
  }
  83% {
    opacity: 1;
  }
  94% {
    opacity: 1;
  }
  95% {
    opacity: 0.4;
  }
  95.7% {
    opacity: 0.4;
  }
  96% {
    opacity: 1;
  }
}

@media screen and (max-width: 1000px) {
  #top .type h1 {
    font-size: 40px;
  }
}

@media screen and (max-width: 600px) {
  #top .type h1 {
    font-size: 24px;
  }
}

#map {
  height: 28em;
}

#quicklinks {
  font-size: 16px;
  background-color: rgba(255, 255, 255, 0.05);
}

@media screen and (max-width: 1000px) {
  #quicklinks {
    font-size: 14px;
  }
}

#quicklinks ul {
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: row;
  flex-flow: row wrap;
  justify-content: center;
  font-family: "Comfortaa", sans-serif;
}

#quicklinks ul li {
  display: flex;
}

#quicklinks ul li.left {
  flex-grow: 1;
  font-style: italic;
}

#quicklinks a {
  text-decoration: none;
  padding: 0.8rem 1rem;
  color: #fff;
}
#quicklinks a:hover {
  color: #fff;
}

#quicklinks li:not(.left) a:hover {
  background-color: rgba(255, 255, 255, 0.05);
}

.img-wrapper {
  position: relative;
  height: 0;
  padding-bottom: 60%;
}

.img-wrapper > img {
  position: absolute;
  width: 100%;
  height: 100%;
  left: 0;
  object-fit: contain;
}

.gallery-nav {
  display: flex;
  flex-direction: row;
  padding: 0;
  margin: 0;
  justify-content: center;
  flex-wrap: wrap;
}
.gallery-nav > li {
  margin: 0;
  padding: 0;
}
.gallery-nav > li:hover {
  background-color: var(--darkbgaccent);
}
.gallery-nav > li.active {
  background-color: var(--secondary);
}
.gallery-nav > li > a {
  display: block;
  text-decoration: none;
  padding: 0 15px;
  height: 32px;
  padding-top: 7px;
}

.bottom {
  display: flex;
  flex-direction: column;
  padding: 1em 1em 0 1em;
}

@media screen and (max-width: 1000px) {
  .bottom {
    gap: 1em;
    padding: 2em 1em 0 1em;
  }
}

.bottom .about {
  padding: 1rem 2em 3rem 2em;
}

@media screen and (max-width: 1000px) {
  .bottom .about {
    padding: 0rem 0em 1rem 0em;
  }
}

.bottom .about li + li:not('.gallery-nav') {
  margin-top: 0.5em;
}

p {
  text-align: left;
  color: #eee;
}

h2 {
  margin-bottom: 0;
  font-size: 26px;
  display: inline-block;
  font-family: "Comfortaa", sans-serif;
  line-height: 1.1;
}

h2:after {
  content: " ";
  display: block;
  background-color: var(--secondary);
  height: 0.15em;
  width: 100%;
  margin-top: 0.1em;
  margin-left: 0.3em;
}

@media screen and (max-width: 1000px) {
  h2 {
    margin: 0;
  }
}

* + h2 {
  margin: 2rem 0 0 0;
}

h2 + * {
  margin: 1rem 0 0 0;
}

h3 {
  font-size: 20px;
}

pre {
  background-color: #141000;
  padding: 1rem;
}

a {
  text-decoration: underline;
  text-decoration-color: var(--primary100);
  color: #fff;
}

a:hover {
  color: var(--primary100);
}

b {
  font-weight: 800;
}

ul {
  padding: 0 0 0 1em;
}

@media screen and (max-width: 1000px) {
  ul {
    padding: 0;
  }
}

li {
  list-style: none;
}

li i {
  font-size: 0.9em;
}

#footer {
  margin: 1rem 0 0 0;
  font-size: 0.8rem;
  opacity: 60%;
}

.atlist {
  display: inline;
  list-style: none;
}

.atlist li {
  display: inline;
}

.atlist li:after {
  content: ", ";
}

.atlist li:last-child:after {
  content: ".";
}


@media (prefers-reduced-motion) {
  ::view-transition-group(*),
  ::view-transition-old(*),
  ::view-transition-new(*) {
    animation: none !important;
  }
}
