@keyframes ft-fadeIn {
    from {
        opacity: 0;
    }
    to {
        opacity: 1;
    }
}

@keyframes ft-blurIn {
    from {
        opacity: 0;
        filter: blur(5px);
    }
    to {
        opacity: 1;
        filter: blur(0px);
    }
}

@keyframes ft-typewriter {
  from {
    width: 0;
    overflow: hidden;
  }
  to {
    width: fit-content;
  }
}

@keyframes ft-slideInFromLeft {
  from {
    transform: translateX(-100%);
    opacity: 0;
  }
  to {
    transform: translateX(0%);
    opacity: 1;
  }
}

@keyframes ft-fadeAndScale {
  from {
    transform: scale(0.5);
    opacity: 0;
  }
  to {
    transform: scale(1);
    opacity: 1;
  }
}

@keyframes ft-colorTransition {
  from {
    color: red;
  }
  to {
    color: black;
  }
}

@keyframes ft-rotateIn {
  from {
    transform: rotate(-360deg);
    opacity: 0;
  }
  to {
    transform: rotate(0deg);
    opacity: 1;
  }
}

@keyframes ft-bounceIn {
  0%, 40%, 80%, 100% {
    transform: translateY(0);
  }
  20% {
    transform: translateY(-10%);
  }
  60% {
    transform: translateY(-5%);
  }
}

@keyframes ft-elastic {
  0%, 100% {
    transform: scale(1);
  }
  10% {
    transform: scale(1.2);
  }
}

@keyframes ft-highlight {
  from {
    background-color: yellow;
  }
  to {
    background-color: transparent;
  }
}

@keyframes ft-blurAndSharpen {
  from {
    filter: blur(5px);
    opacity: 0;
  }
  to {
    filter: blur(0);
    opacity: 1;
  }
}

@keyframes ft-dropIn {
  from {
    transform: translateY(-10%);
    opacity: 0;
  }
  to {
    transform: translateY(0);
    opacity: 1;
  }
}

@keyframes ft-slideUp {
  from {
    transform: translateY(10%);
    opacity: 0;
  }
  to {
    transform: translateY(0);
    opacity: 1;
  }
}

@keyframes ft-wave {
  from {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-10%);
  }
  to {
    transform: translateY(0);
  }
}

:root { 
  --ft-marker-animation: none;
}

.ft-custom-li::marker {
  animation: var(--ft-marker-animation);
}

.ft-code-block {
  animation: var(--ft-marker-animation);
}