.how-to-carousel-block {
    padding: 60px 0;
    container-type: inline-size;

    .container {
        max-width: var(--page-max-width);
        margin: 0 auto;
    }

    .how-to-carousel-title {
        text-align: center;
        margin-bottom: 40px;
        font-weight: 700;
        color: var(--text);
    }

    .how-to-carousel-title:has(+ .how-to-carousel-subtitle) {
        margin-bottom: 16px;
    }

    .how-to-carousel-subtitle {
        text-align: center;
        margin: 0 auto 40px;
        max-width: 600px;
        color: var(--text);
        opacity: 0.8;
        font-size: var(--font-base);
        line-height: 1.6;
    }

    .how-to-carousel-wrapper {
        position: relative;
        display: flex;
        align-items: center;
        gap: 1rem;
    }

    .how-to-carousel-track {
        display: grid;
        grid-template-columns: repeat(3, 1fr);
        gap: 24px;
        width: 100%;
    }

    /* Carousel mode - more than 3 items */
    &[data-carousel-mode="true"] .how-to-carousel-track {
        display: flex;
        overflow-x: auto;
        scroll-snap-type: x mandatory;
        scroll-behavior: smooth;
        scrollbar-width: none;
        gap: 24px;
        padding: 0 4px;
    }

    &[data-carousel-mode="true"] .how-to-carousel-item {
        flex: 0 0 calc(33.333% - 16px);
        scroll-snap-align: start;
    }

    .how-to-carousel-item {
        position: relative;
        overflow: hidden;
    }

    .how-to-carousel-img {
        position: relative;
        border-radius: 24px;
        overflow: hidden;
        border: solid 12px var(--ncs-container-strong);
        background: var(--ncs-container-weak);

        img {
            width: 100%;
            aspect-ratio: 4/3;
            object-fit: cover;
            display: block;
        }
    }

    .how-to-carousel-content {
        background-color: var(--ncs-container-strong);
        padding: 20px;
        width: 85%;
        margin-inline-start: 7.5%;
        margin-top: -60px;
        z-index: 2;
        position: relative;
        text-align: start;
        border-radius: 12px;

        h3 {
            color: var(--text);
            font-size: var(--font-lg);
            font-weight: 600;
            margin: 0 0 8px 0;
            line-height: 1.3;
        }

        .how-to-carousel-description {
            color: var(--text);
            opacity: 0.8;
            font-size: var(--font-sm);
            line-height: 1.5;

            p {
                margin: 0;
            }
        }
    }

    .carousel-arrow {
        position: absolute;
        top: 50%;
        transform: translateY(-50%);
        z-index: 10;
        width: 48px;
        height: 48px;
        border-radius: 50%;
        background: var(--background);
        border: 1px solid var(--ncs-container-strong);
        color: var(--text);
        cursor: pointer;
        display: flex;
        align-items: center;
        justify-content: center;
        transition: all 0.2s ease, visibility 0s linear 0.2s, opacity 0.2s ease;
        box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);

        &:hover {
            background: var(--ncs-container-weak);
            box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
        }

        svg {
            width: 24px;
            height: 24px;
        }
    }

    .carousel-arrow-prev {
        inset-inline-start: -24px;
    }

    .carousel-arrow-next {
        inset-inline-end: -24px;
    }

    /* Grid mode - hide arrows */
    &[data-carousel-mode="false"] .carousel-arrow {
        display: none;
    }
}

@container (max-width: 900px) {
    .how-to-carousel-block {
        .how-to-carousel-track {
            grid-template-columns: repeat(2, 1fr);
        }

        &[data-carousel-mode="true"] .how-to-carousel-item {
            flex: 0 0 calc(50% - 12px);
        }

        .carousel-arrow {
            width: 40px;
            height: 40px;

            svg {
                width: 20px;
                height: 20px;
            }
        }

        .carousel-arrow-prev {
            inset-inline-start: -20px;
        }

        .carousel-arrow-next {
            inset-inline-end: -20px;
        }
    }
}

@container (max-width: 600px) {
    .how-to-carousel-block {
        padding: 40px 0;

        .container {
            padding: 0;
        }

        .how-to-carousel-title {
            margin-bottom: 40px;
            padding: 0 1.5rem;
        }

        .how-to-carousel-title:has(+ .how-to-carousel-subtitle) {
            margin-bottom: 12px;
        }

        .how-to-carousel-subtitle {
            margin-bottom: 40px;
            padding: 0 1.5rem;
        }

        .how-to-carousel-wrapper {
            gap: 0;
            width: 100vw;
        }

        .how-to-carousel-track {
            display: flex;
            overflow-x: auto;
            scroll-snap-type: x mandatory;
            scroll-behavior: smooth;
            scrollbar-width: none;
            gap: 16px;
            padding: 0;
        }

        .how-to-carousel-item,
        &[data-carousel-mode="true"] .how-to-carousel-item,
        &[data-carousel-mode="false"] .how-to-carousel-item {
            flex: 0 0 60vw;
            scroll-snap-align: start;
        }

        .how-to-carousel-item:first-child {
            padding-inline-start: 1rem;
        }

        .how-to-carousel-item:last-child {
            padding-inline-end: 1rem;
        }

        .carousel-arrow {
            display: none !important;
        }

        .how-to-carousel-img {
            border-width: 8px;
            border-radius: 16px;
        }

        .how-to-carousel-content {
            margin-top: -40px;
            padding: 16px;
            border-radius: 8px;
            width: 90%;
            margin-inline-start: 5%;
        }
    }
}

