@import "https://assets.elements.dev/assets/app/shared/ui-catalog/catalog/style.c38e1d7304920e3.css";

.carousel-demo {
  width:     100%;
  max-width: 20rem;
}

.carousel-demo.is-wide {
  max-width: 28rem;
}

.carousel-demo-card {
  display:         flex;
  align-items:     center;
  justify-content: center;
  aspect-ratio:    1;
  padding:         var(--surface-padding);
  border:          var(--surface-border-width) solid var(--surface-border);
  border-radius:   var(--radius-surface);
  background:      var(--surface-bg);
  box-shadow:      var(--surface-shadow);
  font-family:     var(--font-heading);
  font-size:       var(--text-h2);
  font-weight:     var(--weight-strong);
}

.carousel-demo-card.is-small {
  font-size: var(--text-h4);
}

.carousel-demo-vertical {
  height: 13rem;
}

.carousel-demo-vertical .carousel-demo-card {
  aspect-ratio: auto;
  height:       100%;
}

.carousel-demo-third {
  --carousel-item-size: 33.333%;
}

.carousel-demo-half {
  --carousel-item-size: 50%;
}

.carousel-demo-tight {
  --carousel-gap: var(--space-1);
}

.carousel-demo-col {
  display:        flex;
  flex-direction: column;
  align-items:    center;
  gap:            var(--space-3);
  width:          100%;
}

.carousel-demo-log {
  font-family: var(--font-mono);
  font-size:   var(--text-xs);
  color:       var(--ink-dim);
  text-align:  center;
}

.carousel-demo-vstage {
  width:         100%;
  max-width:     20rem;
  padding-block: var(--space-12);
}

/* One across on a phone, two from 30rem, three from 48rem (shadcn md:basis-1/2 lg:basis-1/3). */
.carousel-demo-responsive {
  --carousel-item-size: 100%;
}

@media (min-width: 30rem) {
  .carousel-demo-responsive {
    --carousel-item-size: 50%;
  }
}

@media (min-width: 48rem) {
  .carousel-demo-responsive {
    --carousel-item-size: 33.333%;
  }
}

/* Spacing per breakpoint (shadcn -ml-2 md:-ml-4): tight below 48rem. */
.carousel-demo.carousel-demo-responsive {
  --carousel-gap: var(--space-2);
}

@media (min-width: 48rem) {
  .carousel-demo.carousel-demo-responsive {
    --carousel-gap: var(--space-4);
  }
}

.carousel-demo-heading {
  font-family: var(--font-heading);
  font-size:   var(--text-h4);
  margin:      0;
}

.carousel-demo-inner {
  font:          inherit;
  padding:       var(--space-2) var(--space-3);
  border:        var(--control-border-width) solid var(--control-border);
  border-radius: var(--radius-control);
  background:    var(--bg-elevated);
  color:         inherit;
}

.carousel-demo-inner:focus-visible {
  outline:    none;
  box-shadow: var(--focus-ring);
}

.carousel-demo-hover {
  display:         flex;
  justify-content: center;
  width:           100%;
}

.carousel-demo-wrap {
  display:         flex;
  justify-content: center;
  width:           100%;
}

/* Auto height: cards of three heights. */
.carousel-demo-card.is-free {
  aspect-ratio: auto;
}

.carousel-demo-card.is-short {
  height: var(--space-24);
}

.carousel-demo-card.is-medium {
  height: calc(var(--space-24) * 1.5);
}

.carousel-demo-card.is-tall {
  height: calc(var(--space-24) * 2);
}

/* Class names: slides that are not snapped are dimmed. */
.carousel-demo-classes .carousel-item .carousel-demo-card {
  transition: opacity var(--duration-fast) var(--ease-out);
}

.carousel-demo-classes .carousel-item:not(.is-snapped) .carousel-demo-card {
  opacity: 0.5;
}

.carousel-demo-classes .carousel-viewport.is-draggable {
  cursor: grab;
}

.carousel-demo-classes .carousel-viewport.is-dragging {
  cursor: grabbing;
}
