/* =============================================================
   Block: Case Studies Grid
   Prefix: blk-case-studies / blk-cs-card
   ============================================================= */

.blk-case-studies {
    padding-block: clamp(4.5rem, 9vw, 8rem);
    background: var(--sd-color-white);
}

.blk-case-studies__container {
    max-width: var(--sd-container-max);
    margin-inline: auto;
    padding-inline: clamp(1.25rem, 5vw, 3.5rem);
}

/* ── Section header ── */
.blk-case-studies__head {
    margin-bottom: clamp(2.5rem, 5vw, 4rem);
}

.blk-case-studies__overline {
    display: inline-flex;
    align-items: center;
    gap: 0.6rem;
    font-size: 0.9375rem;
    font-weight: 600;
    color: var(--sd-color-cta);
    margin-bottom: var(--sd-space-5);
}

.blk-case-studies__heading {
    font-size: clamp(1.875rem, 3.5vw, 2.75rem);
    font-weight: var(--sd-font-weight-normal);
    line-height: var(--sd-line-height-tight);
    letter-spacing: -0.02em;
    color: var(--sd-color-gray-900);
    margin: 0;
}

.blk-case-studies__heading em {
    font-style: normal;
    color: var(--sd-color-cta);
}

/* ── Card grid ── */
.blk-case-studies__grid {
    display: grid;
    grid-template-columns: repeat(var(--cs-cols, 3), 1fr);
    gap: var(--sd-space-6);
}

/* ── Individual card ── */
.blk-cs-card {
    display: flex;
    flex-direction: column;
    border-radius: var(--sd-radius-lg);
    overflow: hidden;
    background: var(--sd-color-white);
    border: 1px solid var(--sd-color-gray-200);
    text-decoration: none;
    color: inherit;
    transition:
        transform var(--sd-transition-base),
        box-shadow var(--sd-transition-base);
}

.blk-cs-card:hover {
    transform: translateY(-4px);
    box-shadow: var(--sd-shadow-xl);
}

/* ── Card media ── */
.blk-cs-card__media {
    position: relative;
    aspect-ratio: 4 / 3;
    overflow: hidden;
    background: var(--sd-color-gray-100);
}

.blk-cs-card__img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform 0.5s cubic-bezier(0.22, 1, 0.36, 1);
}

.blk-cs-card:hover .blk-cs-card__img {
    transform: scale(1.05);
}

.blk-cs-card__img-placeholder {
    width: 100%;
    height: 100%;
    background: var(--sd-color-gray-200);
}

.blk-cs-card__badge {
    position: absolute;
    top: var(--sd-space-3);
    left: var(--sd-space-3);
    padding: var(--sd-space-1) var(--sd-space-3);
    background: rgba(22, 22, 22, 0.7);
    color: var(--sd-color-white);
    font-size: var(--sd-font-size-xs);
    font-weight: var(--sd-font-weight-medium);
    letter-spacing: 0.06em;
    text-transform: uppercase;
    border-radius: var(--sd-radius-base);
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
}

/* ── Card body ── */
.blk-cs-card__body {
    display: flex;
    flex-direction: column;
    flex: 1;
    padding: var(--sd-space-6);
    gap: var(--sd-space-3);
}

.blk-cs-card__title {
    font-size: var(--sd-font-size-lg);
    font-weight: var(--sd-font-weight-semibold);
    line-height: var(--sd-line-height-tight);
    letter-spacing: -0.01em;
    color: var(--sd-color-gray-900);
    margin: 0;
}

.blk-cs-card__excerpt {
    font-size: var(--sd-font-size-sm);
    color: var(--sd-color-gray-500);
    line-height: var(--sd-line-height-relaxed);
    margin: 0;
    flex: 1;
}

.blk-cs-card__link {
    display: inline-flex;
    align-items: center;
    gap: var(--sd-space-2);
    font-size: var(--sd-font-size-sm);
    font-weight: var(--sd-font-weight-medium);
    color: var(--sd-color-cta);
    margin-top: auto;
    padding-top: var(--sd-space-2);
    transition: gap var(--sd-transition-fast);
}

.blk-cs-card:hover .blk-cs-card__link {
    gap: var(--sd-space-3);
}

.blk-cs-card__link svg {
    flex-shrink: 0;
    transition: transform var(--sd-transition-fast);
}

.blk-cs-card:hover .blk-cs-card__link svg {
    transform: translateX(3px);
}

/* ── Responsive ── */
@media (max-width: 1024px) {
    .blk-case-studies__grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

/* Swipeable scroll-snap carousel on mobile — every card stays in the DOM
   (SSR); the negative margin bleeds the row to the viewport edge so the
   next card peeks. */
@media (max-width: 767px) {
    .blk-case-studies__grid {
        grid-template-columns: none;
        grid-auto-flow: column;
        grid-auto-columns: min(82%, 320px);
        gap: 1rem;
        overflow-x: auto;
        margin-inline: -1.5rem;
        padding-inline: 1.5rem;
        padding-bottom: 0.75rem;
        scroll-snap-type: x mandatory;
        scroll-padding-inline: 1.5rem;
        -webkit-overflow-scrolling: touch;
        scrollbar-width: thin;
    }

    .blk-case-studies__grid > * {
        scroll-snap-align: start;
    }
}
