.nm-horizontal-carousel {
    --nm-carousel-gap: 1rem;
    --nm-carousel-slide-width: clamp(10.5rem, 42vw, 13.75rem);
}

.nm-horizontal-carousel__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 1rem;
}

.nm-horizontal-carousel__title {
    margin: 0;
    font-size: 1.25rem;
    font-weight: 600;
    line-height: 1.3;
    color: var(--bs-dark);
}

.nm-horizontal-carousel__title-highlight {
    color: var(--primary-color);
}

.nm-horizontal-carousel__nav {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-shrink: 0;
}

.nm-horizontal-carousel__btn {
    width: 2.5rem;
    height: 2.5rem;
    padding: 0;
    border: 1px solid rgba(32, 32, 32, 0.12);
    border-radius: 50%;
    background: var(--white-color);
    color: var(--bs-dark);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
    transition: opacity 0.2s ease, border-color 0.2s ease, background-color 0.2s ease;
}

.nm-horizontal-carousel__btn:not(:disabled):hover {
    border-color: rgba(var(--primary-color-rgb), 0.35);
    background: rgba(var(--primary-color-rgb), 0.04);
}

.nm-horizontal-carousel__btn:disabled {
    opacity: 0.35;
    cursor: not-allowed;
}

.nm-horizontal-carousel__viewport {
    overflow-x: auto;
    overflow-y: hidden;
    scroll-snap-type: x mandatory;
    scroll-behavior: smooth;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior-x: contain;
    touch-action: pan-x;
    scrollbar-width: none;
    cursor: grab;
    margin-inline: -0.25rem;
    padding-inline: 0.25rem;
    padding-top: 0.5rem;
}

.nm-horizontal-carousel__viewport::-webkit-scrollbar {
    display: none;
}

.nm-horizontal-carousel__viewport.is-dragging {
    cursor: grabbing;
    scroll-behavior: auto;
    user-select: none;
}

.nm-horizontal-carousel__track {
    display: flex;
    flex-wrap: nowrap;
    gap: var(--nm-carousel-gap);
    width: max-content;
    min-width: 100%;
    padding-bottom: 0.25rem;
}

.nm-horizontal-carousel__slide {
    flex: 0 0 auto;
    width: var(--nm-carousel-slide-width);
    scroll-snap-align: start;
}

.nm-horizontal-carousel__empty {
    margin: 0;
    padding: 1.5rem 0;
    color: rgba(32, 32, 32, 0.55);
    font-size: 0.9375rem;
}
