@import url("https://fonts.googleapis.com/css2?family=DM+Mono:ital,wght@0,300;1,500&display=swap");

/* Colors from SCSS variables */
/* $purple: #8a15ff; */
/* $blue: #3800e7; */
/* $ltblue: #15e0ff; */
/* $magenta: #d000c5; */

.logo {
  width: 70px;
  fill: white;
  padding-right: 15px;
  display: inline-block;
  vertical-align: middle;
}

body {
  background: linear-gradient(#3800e7, #8a15ff);
  height: 100vh;
  font-size: calc(14px + (26 - 14) * ((100vw - 300px) / (1600 - 300)));
  font-family: "DM Mono", monospace;
  font-weight: 300;
  overflow: hidden;
  color: white;
  text-align: center;
}

h1 {
  font-size: 2em;
  margin-bottom: 0.2em;
}

h2 {
  font-size: 2em;
}

.main {
  height: 100vh;
  display: flex;
  flex-direction: column;
  flex-wrap: wrap;
  position: relative;
  justify-content: center;
  align-items: center;
}

.main::before,
.main::after {
  content: "";
  display: block;
  position: absolute;
  z-index: -3;
}

.main::before {
  right: 0;
  bottom: -19px;
  height: 30em;
  width: 30em;
  border-radius: 30em;
  background: linear-gradient(#3800e7, #8a15ff);
  align-self: flex-end;
  animation: gradient-fade 8s ease-in-out 3s infinite alternate;
}

.main::after {
  top: 0;
  left: 30px;
  height: 10em; /* $circle-unit: 10em; */
  width: 10em;
  border-radius: 10em;
  background: linear-gradient(#3800e7, #8a15ff);
  animation: gradient-fade-alt 6s ease-in-out 3s infinite alternate;
}

.main__text-wrapper {
  position: relative;
  padding: 2em;
}

.main__text-wrapper::before,
.main__text-wrapper::after {
  content: "";
  display: block;
  position: absolute;
}

.main__text-wrapper::before {
  /* $circle-unit: 13em; */
  z-index: -1;
  top: -3em;
  right: -3em;
  width: 13em;
  height: 13em;
  opacity: 0.7;
  border-radius: 13em;
  background: linear-gradient(#15e0ff, #8a15ff);
  animation: rotation 7s linear infinite;
}

.main__text-wrapper::after {
  /* $circle-unit: 20em; */
  z-index: -1;
  bottom: -20em;
  width: 20em;
  height: 20em;
  border-radius: 20em;
  background: linear-gradient(#d000c5, #8a15ff);
  animation: rotation 7s linear infinite;
}

.arrow {
  z-index: 1000;
  opacity: 0.5;
  position: absolute;
}

.arrow--top {
  top: 0;
  left: -5em;
}

.arrow--bottom {
  bottom: 0;
  right: 3em;
}

.circle {
  transform: translate(50%, -50%) rotate(0deg);
  transform-origin: center;
}

.circle--ltblue {
  /* $circle-unit: 20em; */
  height: 20em;
  width: 20em;
  border-radius: 20em;
  background: linear-gradient(#15e0ff, #3800e7);
}

.backdrop {
  position: absolute;
  width: 100vw;
  height: 100vh;
  display: block;
  background-color: pink;
}

.dotted-circle {
  position: absolute;
  top: 0;
  right: 0;
  opacity: 0.3;
  animation: rotation 38s linear infinite;
}

/* SVG strokes � moved out of <style> in the SVGs */
.geo-arrow {
  fill: none;
  stroke: #fff;
  stroke-width: 2;
  stroke-miterlimit: 10;
}

/* Optional: if you want .st0 same as .geo-arrow */
.st0 {
  fill: none;
  stroke: #fff;
  stroke-width: 2;
  stroke-miterlimit: 10;
}

/* animations */
.draw-in {
  stroke-dasharray: 1000;
  stroke-dashoffset: 10;
  animation: draw 15s ease-in-out alternate infinite;
}

@keyframes draw {
  from {
    stroke-dashoffset: 1000;
  }

  to {
    stroke-dashoffset: 0;
  }
}

.item-to {
  animation-duration: 10s;
  animation-iteration-count: infinite;
  transform-origin: bottom;
}

.bounce-1 {
  animation-name: bounce-1;
  animation-timing-function: ease;
}

.bounce-2 {
  animation-name: bounce-2;
  animation-timing-function: ease;
}

.bounce-3 {
  animation-name: bounce-3;
  animation-timing-function: ease;
}

@keyframes bounce-1 {
  0% {
    transform: translateY(0);
  }

  50% {
    transform: translateY(50px);
  }

  100% {
    transform: translateY(0);
  }
}

@keyframes bounce-2 {
  0% {
    transform: translateY(0);
  }

  50% {
    transform: translateY(-30px);
  }

  100% {
    transform: translateY(0);
  }
}

@keyframes bounce-3 {
  0% {
    transform: translateY(0);
  }

  50% {
    transform: translateY(30px);
  }

  100% {
    transform: translateY(0);
  }
}

/* gradient fade & rotation */

@keyframes rotation {
  from {
    transform: rotate(0deg);
  }

  to {
    transform: rotate(360deg);
  }
}

@keyframes gradient-fade {
  from {
    transform: translate(10%, -10%) rotate(0deg);
  }

  to {
    transform: translate(50%, -50%) rotate(360deg);
  }
}

@keyframes gradient-fade-alt {
  from {
    transform: translate(-20%, 20%) rotate(0deg);
  }

  to {
    transform: translate(-60%, 60%) rotate(360deg);
  }
}

/* Footer styles */
.footer {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  padding: 1.5em 2em;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.5em;
  background: linear-gradient(to top, rgba(56, 0, 231, 0.8), transparent);
  z-index: 100;
}

.footer p {
  font-size: 0.55em;
  margin: 0;
  opacity: 0.85;
}

.footer .logo {
  width: 70px;
  padding: 0;
  margin-bottom: 0.3em;
}
