
    @keyframes ft-fadeIn {
      0% {
        opacity: 0
      }

      to {
        opacity: 1
      }
    }

    @keyframes ft-blurIn {
      0% {
        opacity: 0;
        filter: blur(5px)
      }

      to {
        opacity: 1;
        filter: blur()
      }
    }

    @keyframes ft-typewriter {
      0% {
        width: 0;
        overflow: hidden
      }

      to {
        width: fit-content
      }
    }

    @keyframes ft-slideInFromLeft {
      0% {
        opacity: 0;
        transform: translate(-100%)
      }

      to {
        opacity: 1;
        transform: translate(0%)
      }
    }

    @keyframes ft-fadeAndScale {
      0% {
        opacity: 0;
        transform: scale(.5)
      }

      to {
        opacity: 1;
        transform: scale(1)
      }
    }

    @keyframes ft-colorTransition {
      0% {
        color: red
      }

      to {
        color: #000
      }
    }

    @keyframes ft-rotateIn {
      0% {
        opacity: 0;
        transform: rotate(-360deg)
      }

      to {
        opacity: 1;
        transform: rotate(0)
      }
    }

    @keyframes ft-bounceIn {

      0%,
      40%,
      80%,
      to {
        transform: translateY(0)
      }

      20% {
        transform: translateY(-10%)
      }

      60% {
        transform: translateY(-5%)
      }
    }

    @keyframes ft-elastic {

      0%,
      to {
        transform: scale(1)
      }

      10% {
        transform: scale(1.2)
      }
    }

    @keyframes ft-highlight {
      0% {
        background-color: #ff0
      }

      to {
        background-color: #0000
      }
    }

    @keyframes ft-blurAndSharpen {
      0% {
        filter: blur(5px);
        opacity: 0
      }

      to {
        filter: blur();
        opacity: 1
      }
    }

    @keyframes ft-dropIn {
      0% {
        opacity: 0;
        transform: translateY(-10%)
      }

      to {
        opacity: 1;
        transform: translateY(0)
      }
    }

    @keyframes ft-slideUp {
      0% {
        opacity: 0;
        transform: translateY(10%)
      }

      to {
        opacity: 1;
        transform: translateY(0)
      }
    }

    @keyframes ft-wave {
      0% {
        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)
    }
  