/* ══════════════════════════════════════════════════════════════════════════
   partners-strip — homepage row of collaborating organisations' logos.
   Token-driven: every colour/space/radius comes from the theme's --brand-*
   custom properties so a skin restyles it for free. Loaded via the asset
   registry (register_asset in __init__.init_feature), never inlined.
   ══════════════════════════════════════════════════════════════════════════ */

.partners-strip {
    padding: var(--brand-space-xl, 3rem) 0;
    background: var(--brand-surface-muted, var(--brand-surface, transparent));
}

.partners-strip__title {
    margin: 0 0 var(--brand-space-lg, 2rem);
    text-align: center;
    font-size: var(--brand-font-size-h2, 1.5rem);
    font-weight: var(--brand-font-weight-bold, 700);
    color: var(--brand-text, inherit);
}

/* ── Responsive logo row: wraps and centres, even spacing ─────────────────── */
.partners-strip__row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: var(--brand-space-md, 1.5rem) var(--brand-space-lg, 2rem);
}

/* Every item is the same fixed-height box; the logo letterboxes inside it
   (object-fit: contain), so wide logos never dwarf square ones. */
.partners-strip__item {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 1 auto;
    min-width: 0;
    height: var(--partners-logo-height, 112px);
    max-width: var(--partners-logo-max-width, 240px);
    text-decoration: none;
}

.partners-strip__logo {
    display: block;
    width: auto;
    height: 100%;
    max-width: 100%;
    object-fit: contain;
    transition: opacity .2s ease, filter .2s ease, transform .2s ease;
}

/* A partner that has no logo yet shows its name as a wordmark, so it takes
   the same slot in the row and swaps in the logo without a layout change. */
.partners-strip__item--wordmark {
    padding: 0 var(--brand-space-md, 1.5rem);
    min-width: 7rem;
    border: 1px solid var(--brand-border, rgba(0, 0, 0, .12));
    border-radius: var(--brand-radius, 8px);
    background: var(--brand-surface, transparent);
    color: var(--brand-heading, inherit);
}

.partners-strip__name {
    font-family: var(--brand-font-body, system-ui, sans-serif);
    font-weight: var(--brand-font-weight-bold, 700);
    font-size: .95rem;
    letter-spacing: .01em;
    text-align: center;
    white-space: normal;
    overflow-wrap: break-word;
    hyphens: none;
    line-height: 1.25;
}

/* One row on desktop: items shrink together instead of wrapping. */
@media (min-width: 768px) {
    .partners-strip__row {
        flex-wrap: nowrap;
    }
}

/* ── Greyscale option (admin "Greyscale logos" setting) ───────────────────── */
.partners-strip--grayscale .partners-strip__logo {
    filter: grayscale(1);
    opacity: .65;
}

.partners-strip--grayscale .partners-strip__item:hover .partners-strip__logo,
.partners-strip--grayscale .partners-strip__item:focus-visible .partners-strip__logo {
    filter: grayscale(0);
    opacity: 1;
}

/* Subtle lift on hover for linked logos, regardless of greyscale. */
.partners-strip__item[href]:hover .partners-strip__logo,
.partners-strip__item[href]:focus-visible .partners-strip__logo {
    transform: translateY(-2px);
}

@media (max-width: 575.98px) {
    .partners-strip__row {
        gap: var(--brand-space-md, 1.5rem);
    }

    .partners-strip__item {
        height: var(--partners-logo-height-sm, 88px);
        max-width: var(--partners-logo-max-width-sm, 180px);
    }
}
