/**
 * Animated Background Effect - SVG Arrows & Gradient Circles
 * Basado en: https://codepen.io/joyanna/pen/NWGYLNW
 */

.animated-bg-wrapper {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100vh;
  z-index: -1;
  overflow: hidden;
  pointer-events: none;
  background: linear-gradient(to bottom, #3800e7, #8a15ff);
}

.animated-bg-wrapper:before,
.animated-bg-wrapper:after {
  content: "";
  display: block;
  position: absolute;
  z-index: -3;
}

.animated-bg-wrapper:before {
  right: 0;
  bottom: -19px;
  height: 30em;
  width: 30em;
  border-radius: 30em;
  background: linear-gradient(to bottom, #3800e7, #8a15ff);
  animation: gradient-fade 8s ease-in-out 3s infinite alternate;
}

.animated-bg-wrapper:after {
  top: 0;
  left: 30px;
  height: 10em;
  width: 10em;
  border-radius: 10em;
  background: linear-gradient(to bottom, #3800e7, #8a15ff);
  animation: gradient-fade-alt 6s ease-in-out 3s infinite alternate;
}

.animated-bg-content {
  height: 100vh;
  display: flex;
  flex-direction: column;
  flex-wrap: wrap;
  position: relative;
  justify-content: center;
  align-items: center;
}

.animated-bg-content:before {
  content: "";
  display: block;
  position: absolute;
  z-index: -1;
  top: -3em;
  right: -3em;
  width: 13em;
  height: 13em;
  opacity: 0.7;
  border-radius: 13em;
  background: linear-gradient(to bottom, #15e0ff, #8a15ff);
  animation: rotation 7s linear infinite;
}

.animated-bg-content:after {
  content: "";
  display: block;
  position: absolute;
  z-index: -1;
  bottom: -20em;
  width: 20em;
  height: 20em;
  border-radius: 20em;
  background: linear-gradient(to bottom, #d000c5, #8a15ff);
  animation: rotation 7s linear infinite;
}

.arrow {
  z-index: 1;
  opacity: 0.5;
  position: absolute;
}

.arrow--top {
  top: 0;
  left: -5em;
}

.arrow--bottom {
  bottom: 0;
  right: 3em;
}

.dotted-circle {
  position: absolute;
  top: 0;
  right: 0;
  opacity: 0.3;
  animation: rotation 38s linear infinite;
}

.geo-arrow {
  fill: none;
  stroke: #fff;
  stroke-width: 2;
  stroke-miterlimit: 10;
}

/* Animaciones */
.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(-50px);
  }
  100% {
    transform: translateY(0);
  }
}

@keyframes rotation {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(359deg);
  }
}

@keyframes gradient-fade {
  0% {
    opacity: 0.3;
  }
  50% {
    opacity: 0.8;
  }
  100% {
    opacity: 0.3;
  }
}

@keyframes gradient-fade-alt {
  0% {
    opacity: 0.5;
  }
  50% {
    opacity: 1;
  }
  100% {
    opacity: 0.5;
  }
}
