/* ================================================================
 * Block: Quote cards — quote_cards
 * Design: Figma "GS - LP Design - Service" §11 TESTIMONIALS
 * Tokens: assets/css/tokens.css only (gaps listed in build report).
 * ================================================================ */

.block-quote-cards {
    /* Block-local tokens (values from Figma; gaps listed in build report) */
    --eyebrow-line-w: 33px;
    --eyebrow-line-h: 2px;
    --eyebrow-fs: 20px;
    --eyebrow-lh: 24px;
    --quote-heading-max: 956px;
    --quote-card-border: 1px solid rgba(26, 31, 58, 0.10);
    --quote-text-color: rgba(26, 31, 58, 0.85);
    --fs-quote: 16px;
    --quote-photo-size: 44px;
    --quote-stars-ls: 1px;
    --quote-row-gap: 32px;

    background-color: var(--color-white);
}

.block-quote-cards__container {
    max-width: calc(var(--container-service) + 2 * var(--container-pad));
    margin-inline: auto;
    padding-inline: var(--container-pad);
}

.block-quote-cards__head {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: var(--space-15);
    max-width: var(--quote-heading-max);
}

.block-quote-cards__eyebrow {
    display: flex;
    align-items: center;
    gap: var(--space-10);
    margin: 0;
    font-family: var(--font-body);
    font-size: var(--eyebrow-fs);
    font-weight: var(--fw-light);
    line-height: var(--eyebrow-lh);
    text-transform: uppercase;
    color: var(--color-whimsical-blue);
}

.block-quote-cards__eyebrow::before {
    content: '';
    flex-shrink: 0;
    width: var(--eyebrow-line-w);
    height: var(--eyebrow-line-h);
    background-color: var(--color-whimsical-blue);
}

.block-quote-cards__heading {
    margin: 0;
    font-family: var(--font-display);
    font-size: var(--fs-display-50);
    font-weight: var(--fw-heading);
    line-height: var(--lh-heading);
    color: var(--color-yankees-blue);
}

.block-quote-cards__grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--space-6);
    margin-top: var(--quote-row-gap);
}

.block-quote-cards__card {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: var(--space-4);
    margin: 0;
    padding: var(--space-6);
    background-color: var(--color-white);
    border: var(--quote-card-border);
    border-radius: var(--radius-md);
}

.block-quote-cards__text {
    margin: 0;
    font-family: var(--font-body);
    font-size: var(--fs-quote);
    font-weight: var(--fw-light);
    line-height: var(--lh-relaxed);
    color: var(--quote-text-color);
}

.block-quote-cards__author {
    display: flex;
    align-items: flex-start;
    gap: var(--space-3);
    margin: 0;
}

.block-quote-cards__photo {
    flex-shrink: 0;
    width: var(--quote-photo-size);
    height: var(--quote-photo-size);
    border-radius: var(--radius-avatar);
    object-fit: cover;
}

.block-quote-cards__photo--initials {
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: var(--color-cultured);
    font-family: var(--font-body);
    font-size: var(--fs-quote);
    font-weight: var(--fw-medium);
    text-transform: uppercase;
    color: var(--color-yankees-blue);
}

.block-quote-cards__author-info {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: var(--space-1);
}

.block-quote-cards__name {
    margin: 0;
    font-family: var(--font-body);
    font-size: var(--fs-quote);
    font-weight: var(--fw-medium);
    line-height: var(--lh-stat-label);
    color: var(--color-yankees-blue);
}

.block-quote-cards__role {
    margin: 0;
    font-family: var(--font-body);
    font-size: var(--fs-quote);
    font-weight: var(--fw-light);
    line-height: var(--lh-stat-label);
    color: var(--color-yankees-blue-60);
}

.block-quote-cards__ratings {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    column-gap: var(--space-6);
    row-gap: var(--space-3);
    margin-top: var(--quote-row-gap);
}

.block-quote-cards__rating {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    padding: var(--space-2) var(--space-14);
    background-color: var(--color-white);
    border: var(--quote-card-border);
    border-radius: var(--radius-md);
    text-decoration: none;
}

.block-quote-cards__stars {
    font-family: var(--font-body);
    font-size: var(--fs-pill);
    font-weight: var(--fw-medium);
    line-height: var(--lh-body);
    letter-spacing: var(--quote-stars-ls);
    color: var(--color-pitch-violet);
}

.block-quote-cards__rating-text {
    display: inline-flex;
    align-items: center;
    gap: var(--space-1);
    font-family: var(--font-body);
    font-size: var(--fs-microcopy);
    line-height: var(--lh-body);
    color: var(--color-yankees-blue);
}

.block-quote-cards__rating-value {
    font-family: var(--font-display);
    font-weight: var(--fw-bold);
}

.block-quote-cards__rating-source {
    font-weight: var(--fw-medium);
}

@media (min-width: 900px) {
    .block-quote-cards__grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}
