.hopa-carousel {
  --hopa-arrow-offset: 12px;
  width: 100%;
  position: relative;
}

.hopa-carousel-title {
  margin: 0;
}

.hopa-carousel-viewport {
  position: relative;
  overflow: hidden;
  width: 100%;
  outline: none;
}

.hopa-carousel-track {
  display: flex;
  align-items: stretch;
  gap: 20px;
  will-change: transform;
  transition-property: transform;
  transition-timing-function: ease;
}

.hopa-carousel-slide {
  flex: 0 0 100%;
  min-width: 0;
}

.hopa-carousel-slide-inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  width: 100%;
  height: 100%;
}

.hopa-carousel-link {
  display: block;
  width: 100%;
  color: inherit;
  text-decoration: none;
}

.hopa-carousel-image {
  display: block;
  width: 100%;
  max-width: 100%;
  height: auto;
  object-fit: cover;
}

.hopa-carousel-caption {
  width: 100%;
  margin-top: 10px;
  text-align: center;
}

.hopa-carousel-arrow {
  position: absolute;
  top: 50%;
  z-index: 3;
  width: 44px;
  height: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  border: 0;
  cursor: pointer;
  transform: translateY(-50%);
  background: rgba(255, 255, 255, 0.85);
  color: #222;
  line-height: 1;
  transition: color 0.2s ease, background-color 0.2s ease, opacity 0.2s ease;
}

.hopa-carousel-arrow:disabled {
  cursor: not-allowed;
  opacity: 0.35;
}

.hopa-carousel-arrow svg,
.hopa-carousel-arrow i {
  width: 1em;
  height: 1em;
}

.hopa-carousel-prev {
  left: var(--hopa-arrow-offset);
}

.hopa-carousel-next {
  right: var(--hopa-arrow-offset);
}

.hopa-arrows-outside .hopa-carousel-prev {
  left: -56px;
}

.hopa-arrows-outside .hopa-carousel-next {
  right: -56px;
}

.hopa-carousel-dots {
  display: flex;
  justify-content: center;
  gap: 8px;
  margin-top: 14px;
}

.hopa-dots-inside .hopa-carousel-dots {
  position: absolute;
  left: 50%;
  bottom: 12px;
  z-index: 4;
  transform: translateX(-50%);
  margin-top: 0;
}

.hopa-carousel-dot {
  width: 10px;
  height: 10px;
  padding: 0;
  border: 0;
  border-radius: 999px;
  cursor: pointer;
  background: rgba(0, 0, 0, 0.28);
  transition: transform 0.2s ease, background-color 0.2s ease;
}

.hopa-carousel-dot.is-active {
  background: rgba(0, 0, 0, 0.78);
  transform: scale(1.18);
}

@media (max-width: 767px) {
  .hopa-arrows-outside .hopa-carousel-prev {
    left: 6px;
  }

  .hopa-arrows-outside .hopa-carousel-next {
    right: 6px;
  }
}
