.awcf-kv-carousel {
    --awcf-kv-cols: 3;
    --awcf-kv-gap: 30px;
    --awcf-kv-page: 0;
    --awcf-kv-accent: var(--e-global-color-primary, #dd3333);
    width: 100%;

    .awcf-kv-viewport {
        overflow: hidden;
        padding: 10px 0 30px;
        margin: -10px 0 -30px;
    }

    .awcf-kv-track {
        display: flex;
        gap: var(--awcf-kv-gap);
        transform: translateX(calc(var(--awcf-kv-page) * -1 * (100% + var(--awcf-kv-gap))));
        transition: transform 0.7s cubic-bezier(0.65, 0, 0.35, 1);
        touch-action: pan-y;
    }

    .awcf-kv-card {
        position: relative;
        flex: 0 0 calc((100% - (var(--awcf-kv-cols) - 1) * var(--awcf-kv-gap)) / var(--awcf-kv-cols));
        display: flex;
        flex-direction: column;
        box-sizing: border-box;
        padding: 32px 30px 28px;
        background: #fff;
        border-radius: 3px;
        border-top: 3px solid var(--awcf-kv-accent);
        box-shadow: 0 12px 30px rgba(0, 0, 0, 0.06);
        text-align: left;

        &::after {
            content: "\201D";
            position: absolute;
            top: 6px;
            right: 22px;
            font-family: Georgia, serif;
            font-size: 90px;
            line-height: 1;
            color: var(--awcf-kv-accent);
            opacity: 0.12;
            pointer-events: none;
        }
    }

    .awcf-kv-card-top {
        display: flex;
        align-items: center;
        gap: 10px;
        margin-bottom: 16px;
    }

    .awcf-kv-stars {
        display: inline-flex;
        gap: 2px;
        font-size: 18px;
        line-height: 1;
        color: #ffb400;
    }

    .awcf-kv-star-empty {
        color: #e2e2e2;
    }

    .awcf-kv-score {
        font-size: 13px;
        font-weight: 700;
        line-height: 1;
        padding: 4px 7px;
        border-radius: 3px;
        color: #fff;
        background: var(--awcf-kv-accent);
    }

    .awcf-kv-title {
        margin: 0 0 10px;
        padding-right: 40px;
        font-size: 19px;
        font-weight: 700;
        line-height: 1.3;
    }

    .awcf-kv-text {
        flex-grow: 1;
        margin: 0 0 24px;
        font-size: 15px;
        line-height: 1.65;
    }

    .awcf-kv-author {
        display: flex;
        align-items: center;
        gap: 12px;
        padding-top: 18px;
        border-top: 1px solid #eee;
    }

    .awcf-kv-avatar {
        flex: 0 0 40px;
        width: 40px;
        height: 40px;
        display: flex;
        align-items: center;
        justify-content: center;
        border-radius: 50%;
        font-weight: 700;
        color: #fff;
        background: var(--awcf-kv-accent);
    }

    .awcf-kv-author-meta {
        display: flex;
        flex-direction: column;
        line-height: 1.3;
    }

    .awcf-kv-name {
        font-weight: 700;
        font-size: 15px;
    }

    .awcf-kv-place {
        font-size: 13px;
        opacity: 0.65;
    }

    .awcf-kv-dots {
        display: flex;
        justify-content: center;
        gap: 10px;
        margin-top: 34px;

        &:empty {
            display: none;
        }

        button {
            width: 10px;
            height: 10px;
            padding: 0;
            border: 0;
            border-radius: 10px;
            background: #cfcfcf;
            cursor: pointer;
            transition: width 0.3s ease, background-color 0.3s ease;

            &.is-active {
                width: 28px;
                background: var(--awcf-kv-accent);
            }

            &:focus-visible {
                outline: 2px solid var(--awcf-kv-accent);
                outline-offset: 3px;
            }
        }
    }

    @media (max-width: 1024px) {
        --awcf-kv-cols: 2;
        --awcf-kv-gap: 20px;
    }

    @media (max-width: 767px) {
        --awcf-kv-cols: 1;

        .awcf-kv-card {
            padding: 26px 22px 22px;
        }
    }

    @media (prefers-reduced-motion: reduce) {
        .awcf-kv-track {
            transition: none;
        }
    }
}
