.wf-people {
    width: 100%;
}

.wf-people-preface {
    max-width: 54rem;
    margin: 0 auto 1rem;
    color: var(--wf-muted, var(--bs-secondary-color));
    text-align: center;
}

.wf-people-grid {
    display: flex;
    flex-wrap: wrap;
    gap: var(--wf-people-gap, 1rem);
}

.wf-people-grid-center {
    justify-content: center;
}

.wf-people-grid-start {
    justify-content: start;
}

.wf-people-grid-stretch {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--wf-people-card-min, 14rem)), 1fr));
}

.wf-person-card {
    display: flex;
    flex: 1 1 var(--wf-people-card-min, 14rem);
    flex-direction: column;
    gap: 0.85rem;
    max-width: var(--wf-people-card-max, 18rem);
    min-height: 100%;
    padding: 1.15rem;
    color: var(--wf-text, var(--bs-body-color));
    background: var(--wf-surface, var(--bs-body-bg));
    border: 1px solid var(--wf-border, var(--bs-border-color));
    border-radius: 0.5rem;
    box-shadow: 0 0.35rem 0.85rem rgba(0, 0, 0, 0.08);
    transition:
        transform 160ms ease,
        box-shadow 160ms ease;
}

.wf-person-card:hover {
    box-shadow: 0 0.8rem 1.6rem rgba(0, 0, 0, 0.16);
    transform: translateY(-2px);
}

.wf-people-grid-stretch .wf-person-card {
    max-width: none;
}

.wf-people-density-compact .wf-person-card {
    gap: 0.65rem;
    padding: 0.9rem;
}

.wf-person-card-center {
    align-items: center;
    text-align: center;
}

.wf-person-card-start {
    align-items: flex-start;
    text-align: left;
}

.wf-person-avatar-wrap {
    display: grid;
    flex: 0 0 auto;
    place-items: center;
    width: var(--wf-people-avatar-size, 4.25rem);
    height: var(--wf-people-avatar-size, 4.25rem);
    overflow: hidden;
    background: var(--wf-bg, var(--bs-tertiary-bg));
    border: 1px solid var(--wf-border, var(--bs-border-color));
    border-radius: 50%;
}

.wf-person-avatar {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.wf-person-avatar-initials {
    color: var(--wf-accent, var(--bs-primary));
    background: color-mix(in srgb, var(--wf-accent, var(--bs-primary)) 11%, var(--wf-surface, var(--bs-body-bg)));
    font-size: calc(var(--wf-people-avatar-size, 4.25rem) * 0.32);
    font-weight: 700;
    letter-spacing: 0;
}

.wf-person-main {
    display: flex;
    flex: 1 1 auto;
    flex-direction: column;
    gap: 0.28rem;
    min-width: 0;
}

.wf-person-name {
    margin: 0;
    font-size: 1rem;
    font-weight: 650;
    line-height: 1.2;
}

.wf-person-title,
.wf-person-affiliation {
    margin: 0;
    color: var(--wf-muted, var(--bs-secondary-color));
    font-size: 0.86rem;
    line-height: 1.3;
}

.wf-person-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 0.3rem;
    justify-content: center;
    margin-top: 0.2rem;
}

.wf-person-card-start .wf-person-tags {
    justify-content: flex-start;
}

.wf-person-tags span {
    padding: 0.12rem 0.42rem;
    color: var(--wf-muted, var(--bs-secondary-color));
    background: var(--wf-bg, var(--bs-tertiary-bg));
    border: 1px solid var(--wf-border, var(--bs-border-color));
    border-radius: 999px;
    font-size: 0.74rem;
    line-height: 1.2;
}

.wf-person-bio {
    margin-top: 0.35rem;
    font-size: 0.88rem;
    line-height: 1.45;
}

.wf-person-bio > :last-child {
    margin-bottom: 0;
}

.wf-person-links {
    display: flex;
    flex-wrap: wrap;
    gap: 0.7rem;
    justify-content: center;
    padding-top: 0.2rem;
}

.wf-person-card-start .wf-person-links {
    justify-content: flex-start;
}

.wf-person-link {
    display: inline-flex;
    align-items: center;
    gap: 0.28rem;
    color: var(--wf-link, var(--bs-link-color));
    border: 0;
    background: transparent;
    font-size: 0.82rem;
    line-height: 1.2;
    text-decoration: none;
    text-underline-offset: 0.18em;
    transition:
        color 140ms ease;
}

.wf-person-link:hover,
.wf-person-link:focus {
    color: var(--wf-link-hover, var(--bs-link-hover-color));
    text-decoration: underline;
}

.wf-person-link i {
    font-size: 0.9em;
}

@media (max-width: 575.98px) {
    .wf-person-card {
        flex-basis: 100%;
        max-width: none;
    }
}
