/* ===== Logos clients — marquee défilant (migration fidèle) ===== */
.partners { position: relative; background-color: var(--blanc-ivoire); padding: 5rem 6rem; overflow: hidden; }
.partners__inner { max-width: var(--max-width); margin: 0 auto; }
.partners__header { max-width: 720px; margin: 0 auto 3rem; text-align: center; }
.partners__title { font-family: var(--font-titre); color: var(--noir-onyx); font-size: clamp(2rem, 4vw, 3rem); line-height: 1; font-weight: 400; }
.partners__title-mark { color: var(--bleu-cobalt); }

.partners__marquee { position: relative; display: flex; flex-direction: column; gap: 2rem; }
.partners__row {
    position: relative; overflow: hidden;
    -webkit-mask-image: linear-gradient(to right, transparent 0%, black 10%, black 90%, transparent 100%);
            mask-image: linear-gradient(to right, transparent 0%, black 10%, black 90%, transparent 100%);
}
.partners__track { display: flex; gap: 4rem; width: max-content; }
.partners__track--left { animation: partnersScrollLeft 60s linear infinite; }
.partners__track--right { animation: partnersScrollRight 60s linear infinite; }
.partners__track:hover { animation-play-state: paused; }

@keyframes partnersScrollLeft { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@keyframes partnersScrollRight { from { transform: translateX(-50%); } to { transform: translateX(0); } }

.partners__logo { flex-shrink: 0; display: flex; align-items: center; justify-content: center; height: 130px; padding: 0 1rem; transition: opacity 0.3s ease, filter 0.3s ease, transform 0.3s ease; }
.partners__logo img { max-height: 100%; max-width: 180px; width: auto; height: auto; object-fit: contain; filter: grayscale(100%); opacity: 0.65; transition: filter 0.3s ease, opacity 0.3s ease; }
.partners__logo:hover img { filter: grayscale(0%); opacity: 1; }

@media (max-width: 640px) {
    .partners { padding: 4rem 1.25rem; }
    .partners__track { gap: 2.5rem; }
    .partners__logo { height: 60px; }
    .partners__logo img { max-width: 130px; }
}
