:root {
  --esl-slide-initial-size: 100%;
  --esl-carousel-side-space: 5px;
}

// CORE styles
esl-carousel {
  position: relative;
  display: block;
  max-width: 100%;
  // Important to ignore padding/margin hack
  box-sizing: content-box;
  margin: calc(var(--esl-carousel-side-space, 0) * -1);
  padding: var(--esl-carousel-side-space, 0);

  /* stylelint-disable */
  overflow: hidden; // Fallback
  overflow: clip;
  /* stylelint-enable */

  &:not(.esl-carousel) [esl-carousel-slide] {
    max-width: 100%;
    max-height: 100%;
  }

  &.esl-carousel-vertical {
    [esl-carousel-slides] {
      flex-direction: column;
    }
    touch-action: pan-x;
  }
  &.esl-carousel-horizontal {
    [esl-carousel-slides] {
      flex-direction: row;
    }
    touch-action: pan-y;
  }

  &[dragging] {
    cursor: grabbing;
  }

  &[animating] {
    padding-inline: 0;
    margin-inline: 0;
  }

  &[dragging] [esl-carousel-slides],
  &[animating] [esl-carousel-slides] {
    user-select: none;
    pointer-events: none;
  }

  &[empty] {
    --esl-carousel-side-space: 0;

    [esl-carousel-slides] {
      display: none;
    }
  }
}

/* Default carousel area styles */
[esl-carousel-slides] {
  position: relative;
  width: 100%;
  margin: 0;
  display: flex;
  gap: 20px;
  z-index: 0;
  transform: translate3d(0px, 0px, 0px);
}

/* Default carousel slide styles */
[esl-carousel-slide] {
  flex: 0 0 auto;
  margin: 0;
  padding: 0;
  position: relative;
  z-index: 1;
  list-style: none;
}

.esl-carousel-no-extra-space {
  --esl-carousel-side-space: 0;
}
