.typing {
  display: inline-block;
  overflow: hidden;
  border-right: 2px solid white; /* cursor effect */
  white-space: nowrap;
  animation: typing 7s steps(50, end) 1s forwards, blink 0.75s step-end infinite;
}

@keyframes typing {
  from {
    width: 0;
  }
  to {
    width: 100%;
  }
}

@keyframes blink {
  from {
    border-color: transparent;
  }
  to {
    border-color: white;
  }
}
.cursor {
  display: inline-block;
  width: 2px;
  height: 1em;
  background-color: white;
  animation: blink 0.8s infinite;
  vertical-align: bottom;
}

@keyframes fadeInLeft {
  0% {
    opacity: 0;
    transform: translateX(-50px);
  }
  100% {
    opacity: 1;
    transform: translateX(0);
  }
}
@keyframes fadeInRight {
  0% {
    opacity: 0;
    transform: translateX(50px);
  }
  100% {
    opacity: 1;
    transform: translateX(0);
  }
}

.animate-fadeInLeft {
  animation: fadeInLeft 1s forwards;
}
.animate-fadeInRight {
  animation: fadeInRight 1s forwards;
}
