@mixin arrow-control {
  width: 10%;
  min-width: var(--Carousel-arrowControl-width);
  height: 100%;
  cursor: pointer;
  position: absolute;
  transition-duration: var(--Carousel-transitionDuration);
  svg {
    position: absolute;
    top: 50%;
    left: 50%;
    right: 50%;
    transform: translate(-50%, -50%);
    width: var(--Carousel-svg-width);
    height: var(--Carousel-svg-height);
  }
}

.#{$ns}Carousel {
  min-width: var(--Carousel-minWidth);
  height: var(--Carousel-height);
  position: relative;
  display: block;
  background: var(--Carousel-bg);

  &.#{$ns}Carousel--light {
    .#{$ns}Carousel-dot {
      background: var(--Carousel--light-control);
    }

    svg {
      fill: var(--Carousel--light-control);
    }

    .#{$ns}Carousel-item {
      .title,
      .description {
        color: var(--Carousel--light-control);
      }
    }
  }

  &.#{$ns}Carousel--dark {
    .#{$ns}Carousel-dot {
      background: var(--Carousel--dark-control);
    }

    svg {
      fill: var(--Carousel--dark-control);
    }

    .#{$ns}Carousel-item {
      .title,
      .description {
        color: var(--Carousel--dark-control);
      }
    }
  }

  &-container {
    width: 100%;
    height: 100%;
    position: relative;
    overflow: hidden;

    .#{$ns}Carousel-item {
      width: 100%;
      height: 100%;
      position: absolute;
      transition: ease-out all var(--Carousel-transitionDuration);

      &.fade {
        opacity: 0;
      }

      &.fade.in {
        opacity: 1;
      }

      &.slide {
        transform: translateX(100%);
      }

      &.slide.in {
        transform: translateX(0);
      }

      &.slide.out {
        transform: translateX(-100%);
      }

      &.slideRight {
        transform: translateX(-100%);
      }

      &.slideRight.in {
        transform: translateX(0);
      }

      &.slideRight.out {
        transform: translateX(100%);
      }

      .title {
        position: absolute;
        bottom: var(--Carousel-imageTitle-bottom);
        text-align: center;
        width: 100%;
        opacity: 0.8;
      }

      .description {
        position: absolute;
        bottom: var(--Carousel-imageDescription-bottom);
        text-align: center;
        width: 100%;
        opacity: 0.8;
      }

      .image {
        width: 100%;
        height: 100%;
        background-size: cover;
      }
    }
  }

  &-dotsControl {
    position: absolute;
    bottom: 0px;
    width: 100%;
    z-index: 100;
    text-align: center;

    .#{$ns}Carousel-dot {
      display: inline-block;
      height: var(--Carousel-dot-width);
      width: var(--Carousel-dot-height);
      border-radius: var(--Carousel-dot-borderRadius);
      margin: var(--Carousel-dot-margin);
      transition-duration: var(--Carousel-transitionDuration);
      opacity: 0.3;

      &.is-active {
        opacity: 1;
      }
    }
  }

  &-arrowsControl {
    position: absolute;
    width: 100%;
    height: inherit;
    z-index: 100;
    text-align: center;

    .#{$ns}Carousel-leftArrow {
      @include arrow-control;
      display: none;
      left: 0;
    }

    .#{$ns}Carousel-rightArrow {
      @include arrow-control;
      display: none;
      right: 0;
    }

    &:hover {
      .#{$ns}Carousel-leftArrow {
        display: block;
      }
      .#{$ns}Carousel-rightArrow {
        display: block;
      }
    }
  }
}
