:root {
  --esl-slide-initial-size: 100%;
  --esl-carousel-side-space: 5px;
  --esl-carousel-step-duration: 250ms;
}
esl-carousel {
  position: relative;
  display: block;
  max-width: 100%;
  box-sizing: content-box;
  margin: calc(var(--esl-carousel-side-space, 0) * -1);
  padding: var(--esl-carousel-side-space, 0);
  /* stylelint-disable */
  overflow: hidden;
  overflow: clip;
  /* stylelint-enable */
}
esl-carousel:not(.esl-carousel) [esl-carousel-slide] {
  max-width: 100%;
  max-height: 100%;
}
esl-carousel.esl-carousel-vertical {
  touch-action: pan-x;
}
esl-carousel.esl-carousel-vertical [esl-carousel-slides] {
  flex-direction: column;
}
esl-carousel.esl-carousel-horizontal {
  touch-action: pan-y;
}
esl-carousel.esl-carousel-horizontal [esl-carousel-slides] {
  flex-direction: row;
}
esl-carousel[dragging] {
  cursor: grabbing;
}
esl-carousel[animating] {
  padding-inline: 0;
  margin-inline: 0;
}
esl-carousel[dragging] [esl-carousel-slides],
esl-carousel[animating] [esl-carousel-slides] {
  user-select: none;
  pointer-events: none;
}
esl-carousel[empty] {
  --esl-carousel-side-space: 0;
}
esl-carousel[empty] [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;
}
.esl-carousel-default-renderer [esl-carousel-slides] {
  display: flex;
  flex-wrap: nowrap;
  transition: none;
  max-width: 100%;
  max-height: 100%;
}
.esl-carousel-default-renderer.esl-carousel-horizontal [esl-carousel-slide] {
  width: var(--esl-slide-size, var(--esl-slide-initial-size));
}
.esl-carousel-default-renderer.esl-carousel-vertical [esl-carousel-slide] {
  height: var(--esl-slide-size, var(--esl-slide-initial-size));
}
.esl-carousel-grid-renderer {
  /* stylelint-disable-next-line */
  /* stylelint-disable-next-line */
}
.esl-carousel-grid-renderer [esl-carousel-slides] {
  display: grid;
  grid-template-rows: 1fr 1fr;
  grid-auto-columns: auto;
  grid-auto-flow: column;
  transition: none;
  max-width: 100%;
  max-height: 100%;
}
.esl-carousel-grid-renderer.esl-carousel-vertical [esl-carousel-slides] {
  grid-template-columns: 1fr 1fr;
  grid-auto-rows: auto;
  grid-auto-flow: row;
}
.esl-carousel-grid-renderer.esl-carousel-horizontal :is([esl-carousel-slide], [esl-carousel-fake-slide]) {
  width: var(--esl-slide-size, --esl-slide-initial-size, 100%);
}
.esl-carousel-grid-renderer.esl-carousel-vertical :is([esl-carousel-slide], [esl-carousel-fake-slide]) {
  height: var(--esl-slide-size, --esl-slide-initial-size, 100%);
}
.esl-carousel-css-renderer [esl-carousel-slides] {
  display: grid;
  grid-template-areas: 'slide';
  position: relative;
  width: 100%;
}
.esl-carousel-css-renderer [esl-carousel-slide] {
  grid-area: slide;
  z-index: 0;
  position: relative;
  backface-visibility: hidden;
  top: 100%;
  visibility: hidden;
}
.esl-carousel-css-renderer [esl-carousel-slide]:is([active], [pre-active]) {
  top: 0;
  visibility: visible;
}
.esl-carousel-css-renderer [esl-carousel-slide][active] {
  z-index: 1;
}
.esl-carousel-css-renderer.esl-carousel-css-fade[animating] [esl-carousel-slide] {
  transition: opacity var(--esl-carousel-step-duration) linear;
}
.esl-carousel-css-renderer.esl-carousel-css-fade [esl-carousel-slide] {
  opacity: 0;
}
.esl-carousel-css-renderer.esl-carousel-css-fade [esl-carousel-slide][active] {
  opacity: 1;
}
.esl-carousel-css-renderer.esl-carousel-css-fade[animating] [esl-carousel-slide][pre-active] {
  z-index: 2;
  opacity: 1;
}
.esl-carousel-css-renderer.esl-carousel-css-fade[shifted] [esl-carousel-slide][pre-active] {
  z-index: 2;
  opacity: var(--esl-carousel-offset-ratio, 0);
}
.esl-carousel-css-renderer.esl-carousel-css-slide[animating] :is([esl-carousel-slide], [esl-carousel-slides]) {
  transition: transform var(--esl-carousel-step-duration) linear;
}
.esl-carousel-css-renderer.esl-carousel-css-slide.esl-carousel-horizontal [esl-carousel-slides] {
  transform: translate3d(var(--esl-carousel-offset, 0), 0, 0);
}
.esl-carousel-css-renderer.esl-carousel-css-slide.esl-carousel-horizontal [esl-carousel-slides].forward {
  transform: translate3d(-100%, 0, 0);
}
.esl-carousel-css-renderer.esl-carousel-css-slide.esl-carousel-horizontal [esl-carousel-slides].backward {
  transform: translate3d(100%, 0, 0);
}
.esl-carousel-css-renderer.esl-carousel-css-slide.esl-carousel-horizontal [esl-carousel-slide] {
  top: 0;
  left: 100%;
}
.esl-carousel-css-renderer.esl-carousel-css-slide.esl-carousel-horizontal [esl-carousel-slide][pre-active][next] {
  left: 100%;
}
.esl-carousel-css-renderer.esl-carousel-css-slide.esl-carousel-horizontal [esl-carousel-slide][active] {
  left: 0;
}
.esl-carousel-css-renderer.esl-carousel-css-slide.esl-carousel-horizontal [esl-carousel-slide][pre-active][prev] {
  left: -100%;
}
.esl-carousel-css-renderer.esl-carousel-css-slide.esl-carousel-vertical [esl-carousel-slides] {
  transform: translate3d(0, var(--esl-carousel-offset, 0), 0);
}
.esl-carousel-css-renderer.esl-carousel-css-slide.esl-carousel-vertical [esl-carousel-slides].forward {
  transform: translate3d(0, -100%, 0);
}
.esl-carousel-css-renderer.esl-carousel-css-slide.esl-carousel-vertical [esl-carousel-slides].backward {
  transform: translate3d(0, 100%, 0);
}
.esl-carousel-css-renderer.esl-carousel-css-slide.esl-carousel-vertical [esl-carousel-slide][pre-active][next] {
  top: 100%;
}
.esl-carousel-css-renderer.esl-carousel-css-slide.esl-carousel-vertical [esl-carousel-slide][active] {
  top: 0;
}
.esl-carousel-css-renderer.esl-carousel-css-slide.esl-carousel-vertical [esl-carousel-slide][pre-active][prev] {
  top: -100%;
}
/** Nav control mixin defaults */
[esl-carousel-nav]:not([active]) {
  display: none;
}
[esl-carousel-nav][disabled] {
  pointer-events: none;
}
:root {
  --esl-carousel-arrow-size: 40px;
  --esl-carousel-arrow-padding: 0px;
  --esl-carousel-arrow-bg: grey;
}
/** Arrow navigation styles */
.esl-carousel-nav-container {
  position: relative;
  /* stylelint-disable-next-line */
  --esl-carousel-arrow-offset: calc((var(--esl-carousel-arrow-size) + var(--esl-carousel-arrow-padding) + var(--esl-carousel-side-space)) * -1);
}
.esl-carousel-arrow {
  position: absolute;
  z-index: 3;
  top: 50%;
  transform: translateY(-50%);
  padding: var(--esl-carousel-arrow-padding);
  display: grid;
  place-content: center;
  background: none;
  border: none;
  cursor: pointer;
  appearance: none;
  filter: drop-shadow(0 0 4px var(--esl-carousel-arrow-bg));
  opacity: 0.75;
}
.esl-carousel-arrow:hover {
  opacity: 1;
}
.esl-carousel-arrow[disabled] {
  opacity: 0.25;
}
.esl-carousel-arrow.prev {
  left: var(--esl-carousel-arrow-offset);
}
.esl-carousel-arrow.prev.inner {
  left: 0;
}
.esl-carousel-arrow.next {
  right: var(--esl-carousel-arrow-offset);
}
.esl-carousel-arrow.next.inner {
  right: 0;
}
.esl-carousel-arrow::before {
  content: '';
  display: block;
  width: var(--esl-carousel-arrow-size);
  height: var(--esl-carousel-arrow-size);
  background: var(--esl-carousel-arrow-bg);
  clip-path: polygon(20% 50%, 70% 0%, 80% 5%, 35% 50%, 80% 95%, 70% 100%);
}
.esl-carousel-arrow.next::before {
  transform: scaleX(-1);
}
/* ESLCarouselNavDots default styles */
.esl-carousel-dots {
  display: flex;
  align-items: center;
  width: fit-content;
  gap: 0.5rem;
  margin: 1rem auto;
}
.esl-carousel-dots:empty {
  display: none;
}
.esl-carousel-dot {
  margin: 0;
  padding: 0;
  flex: 0 0 auto;
  min-width: 9px;
  box-sizing: content-box;
  aspect-ratio: 1;
  border-radius: 100%;
  text-align: center;
  vertical-align: middle;
  cursor: pointer;
  appearance: none;
}
.esl-carousel-dot:is(*, :focus, :active, :hover) {
  border: var(--esl-carousel-dot-border, 1px solid transparent);
  background: var(--esl-carousel-dot-color, rgba(118, 118, 118, 0.5));
  background-clip: content-box;
}
.esl-carousel-dot[active] {
  border: var(--esl-carousel-dot-active-border, 1px solid #bababa);
  background: var(--esl-carousel-dot-active-color, rgba(255, 255, 255, 0.5));
  background-clip: content-box;
}
