:host(.horizontal) {
  .header {
    .step {
      flex-direction: column;
    }

    .connector {
      height: 2px;
    }
  }

  .label-index {
    margin-bottom: 10px;
  }
}

:host(.vertical) {
  display: flex;
  height: 100%;

  .header {
    flex-direction: column;

    .label {
      margin: 0 10px;
    }

    .connector {
      width: 2px;
    }
  }
}

.header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  margin-bottom: 10px;

  .connector {
    flex: auto;
  }

  .step {
    display: flex;
    align-items: center;
    cursor: pointer;

    &.noninteractive {
      cursor: default;
    }
  }

  .label-index {
    display: flex;
    justify-content: center;
    align-items: center;
  }

  .label {
    width: max-content;
  }
}

/*transition animation*/
.horizontal.prev {
  animation-name: slideLeftToRight;
  animation-duration: 0.5s;
}

.horizontal.next {
  animation-name: slideRightToLeft;
  animation-duration: 0.5s;
}

.vertical.prev {
  animation-name: slideTopToBottom;
  animation-duration: 0.5s;
}

.vertical.next {
  animation-name: slideBottomToTop;
  animation-duration: 0.5s;
  overflow-y: hidden;
}

@keyframes slideLeftToRight {
  0% {
    transform: translateX(-100vw);
    opacity: 0;
  }
  100% {
    transform: translateX(0vw);
    opacity: 100;
  }
}

@keyframes slideRightToLeft {
  0% {
    transform: translateX(100vw);
    opacity: 0;
  }
  100% {
    transform: translateX(0vw);
    opacity: 100;
  }
}

@keyframes slideTopToBottom {
  0% {
    transform: translateY(-100vh);
    opacity: 0;
  }
  100% {
    transform: translateY(0vh);
    opacity: 100;
  }
}

@keyframes slideBottomToTop {
  0% {
    transform: translateY(100vh);
    opacity: 0;
  }
  100% {
    transform: translateY(0vh);
    opacity: 100;
  }
}
