.herocarousel {
  &:hover {
    --playstate: paused;
  }

  article {
    --duration: 0.2s;

    &.fade-out {
      .category-badge {
        animation: fade-out ease-out forwards;
        animation-duration: var(--duration);
      }

      .content {
        animation: fade-out-content ease-out forwards;
        animation-duration: var(--duration);
      }
    }
  }

  [data-active='true'] {
    .category-badge {
      animation: fade-in ease-out forwards;
      animation-duration: var(--duration);
    }

    .content {
      animation: fade-in ease-out forwards;
      animation-duration: calc(var(--duration) / 2);
      opacity: 0;
      animation-delay: calc(var(--duration) / 2);
    }

    [indicator] {
      &::after {
        content: '';
        display: block;
        position: absolute;
        left: 0;
        right: 0;
        bottom: 0;
        height: 4px;
        background-image: linear-gradient(90deg, var(--primary-eplan-red) 50%, white 50%);
        background-size: 200% 100%;
        background-position: 100%;
        animation: indicator 10s cubic-bezier(0.455, 0.030, 0.515, 0.955) forwards;
        animation-play-state: var(--playstate, running);
      }
    }
  }
}

@keyframes fade-out {
  0% {
    opacity: 1;
  }

  50% {
    opacity: 0;
  }

  100% {
    opacity: 0;
    translate: 0 100%;
  }
}

@keyframes fade-out-content {
  0% {
    opacity: 1;
  }

  50% {
    opacity: 0;
  }

  100% {
    opacity: 0;
    translate: 0 100%;
  }
}

@keyframes fade-in {
  0% {
    opacity: 0;
    translate: 0 100%;
  }

  50% {
    opacity: 0;
  }

  100% {
    opacity: 1;
    translate: 0 0;
  }
}

@keyframes indicator {
  0% {
    background-position: 100%;
  }

  95% {
    background-position: 0%;
  }
  98% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    background-position: 0%;
  }
}
