.firms-section {
  padding: 72px 0;
  background: #ffffff;
  overflow: hidden;
}

.firms-head {
  max-width: 760px;
  margin-bottom: 28px;
}

.firms-marquee {
  position: relative;
  left: 50%;
  width: 100vw;
  margin-left: -50vw;
  overflow: hidden;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  background: linear-gradient(90deg, #ffffff 0%, #fff7f8 50%, #ffffff 100%);
}

.firms-marquee::before,
.firms-marquee::after {
  content: "";
  position: absolute;
  top: 0;
  z-index: 2;
  width: 120px;
  height: 100%;
  pointer-events: none;
}

.firms-marquee::before { left: 0; background: linear-gradient(90deg, #fff 0%, rgba(255,255,255,0) 100%); }
.firms-marquee::after { right: 0; background: linear-gradient(270deg, #fff 0%, rgba(255,255,255,0) 100%); }

.firms-track {
  display: flex;
  width: max-content;
  gap: 22px;
  padding: 24px 0;
  animation: firmsScroll 32s linear infinite;
}

.firms-marquee:hover .firms-track { animation-play-state: paused; }

.firm-logo-card {
  display: grid;
  place-items: center;
  min-width: 168px;
  height: 92px;
  padding: 14px 18px;
  border: 0;
  border-radius: 8px;
  background: transparent;
  font-weight: 900;
  text-align: center;
  box-shadow: none;
}

.firm-logo-card img {
  max-width: 128px;
  max-height: 54px;
  object-fit: contain;
}

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

@media (max-width: 560px) {
  .firms-section {
    padding: 54px 0;
  }

  .firms-marquee::before,
  .firms-marquee::after {
    width: 46px;
  }

  .firms-track {
    gap: 12px;
    padding: 18px 0;
    animation-duration: 26s;
  }

  .firm-logo-card {
    min-width: 132px;
    height: 74px;
    padding: 10px 12px;
  }

  .firm-logo-card img {
    max-width: 108px;
    max-height: 44px;
  }
}
