/* --- "We help you select" partner logos ---
   Shared by the homepage (flagship row) and About (full wall). Spacing follows
   the same rhythm as every other section: 26px from the top rule to content,
   180px before the next section's rule. */

.cc-partners {
  width: 100%;
  max-width: var(--cc-max-width);
  margin: 0 auto;
  padding: 0 var(--cc-gutter) 180px;
}

.cc-partners__divider {
  height: 1px;
  background: var(--cc-newsprint);
  margin-bottom: 26px;
}

.cc-partners__heading {
  font-family: var(--cc-font-heading);
  font-weight: 400;
  font-size: 30px;
  line-height: 1.2;
  color: var(--cc-ink);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* Matches the site's body copy: Graphik 14px / 1.48. */
.cc-partners__intro {
  font-family: var(--cc-font-body);
  font-size: 14px;
  line-height: 1.48;
  color: var(--cc-ink-2);
  max-width: 620px;
  margin-top: 16px;
}

.cc-partners__list {
  list-style: none;
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 34px 56px;
  margin: 0;
  padding: 0;
}

.cc-partners__item {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
}

.cc-partners__logo {
  display: block;
  width: auto;
  object-fit: contain;
}

/* --- Homepage: flagship marquee ---
   The track holds two identical sets. Shifting it by one set's width lands the
   duplicate exactly where the original began, so the loop has no seam. That
   distance is half the track plus half a gap, not a flat 50% — the track
   carries one more gap than a single set does. */
.cc-partners--flagship .cc-partners__viewport {
  margin-top: 46px;
  overflow: hidden;
  /* Long fades so a logo leaving the track dissolves rather than being sliced. */
  -webkit-mask-image: linear-gradient(to right, transparent, #000 96px, #000 calc(100% - 96px), transparent);
          mask-image: linear-gradient(to right, transparent, #000 96px, #000 calc(100% - 96px), transparent);
}

.cc-partners--flagship .cc-partners__list {
  --cc-partners-gap: 72px;
  width: max-content;
  flex-wrap: nowrap;
  justify-content: flex-start;
  gap: var(--cc-partners-gap);
  margin-top: 0;
  animation: cc-partners-scroll 44s linear infinite;
}

.cc-partners--flagship .cc-partners__viewport:hover .cc-partners__list,
.cc-partners--flagship .cc-partners__viewport:focus-within .cc-partners__list {
  animation-play-state: paused;
}

@keyframes cc-partners-scroll {
  from { transform: translateX(0); }
  to   { transform: translateX(calc(-50% - (var(--cc-partners-gap) / 2))); }
}

/* Anyone who has asked the OS to reduce motion gets a static row instead. */
@media (prefers-reduced-motion: reduce) {
  .cc-partners--flagship .cc-partners__viewport {
    -webkit-mask-image: none;
            mask-image: none;
  }
  .cc-partners--flagship .cc-partners__list {
    animation: none;
    width: auto;
    flex-wrap: wrap;
    justify-content: space-between;
    gap: 34px 58px;
  }
  .cc-partners--flagship .cc-partners__item[aria-hidden="true"] {
    display: none;
  }
}

.cc-partners__more {
  display: inline-block;
  margin-top: 44px;
  font-family: var(--cc-font-body);
  font-size: 10px;
  font-weight: 500;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  text-decoration: underline;
  color: var(--cc-dark-parchment);
}

/* --- About: grouped wall ---
   The mission section above carries no bottom padding, so without a top pad
   here the rule lands hard against its caption. And the footer already supplies
   its own 110px margin, so a bottom pad on top of that stacks into a ~290px
   hole — this variant is always the last section, so it adds none. */
.cc-partners--all {
  padding-top: 110px;
  padding-bottom: 0;
}

.cc-partners__group {
  display: grid;
  grid-template-columns: 190px minmax(0, 1fr);
  align-items: start;
  gap: 0 32px;
  padding-top: 40px;
  margin-top: 40px;
  border-top: 1px solid var(--cc-newsprint);
}

.cc-partners--all .cc-partners__group:first-of-type {
  margin-top: 56px;
}

.cc-partners__group-label {
  font-family: var(--cc-font-body);
  font-size: 10px;
  font-weight: 500;
  line-height: 1.6;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  color: var(--cc-archive);
  padding-top: 10px;
}

/* Per-logo optical heights. These marks run from a square Savills tile to a
   13:1 FRONT Financial wordmark — one shared height would let the wide ones
   dominate the wall, so each is scaled to carry similar visual weight. */
.cc-partners__logo--bf-money         { height: 42px; }
.cc-partners__logo--shore-financial  { height: 31px; }
.cc-partners__logo--stamford-capital { height: 39px; }
.cc-partners__logo--azura-financial  { height: 28px; }
.cc-partners__logo--front-financial  { height: 17px; }
.cc-partners__logo--speirs-ryan      { height: 22px; }
.cc-partners__logo--hitch            { height: 29px; }
.cc-partners__logo--bayse-law        { height: 26px; }
.cc-partners__logo--madison-lawyers  { height: 42px; }
.cc-partners__logo--hfk-lawyers      { height: 38px; }
.cc-partners__logo--cba              { height: 24px; }
.cc-partners__logo--westpac          { height: 23px; }
.cc-partners__logo--nab              { height: 31px; }
.cc-partners__logo--anz              { height: 30px; }
.cc-partners__logo--goldman-sachs    { height: 34px; }
.cc-partners__logo--boq              { height: 28px; }
.cc-partners__logo--kpmg             { height: 33px; }
.cc-partners__logo--deloitte         { height: 24px; }
.cc-partners__logo--ey               { height: 42px; }
.cc-partners__logo--pwc              { height: 42px; }
.cc-partners__logo--pitcher-partners { height: 30px; }
.cc-partners__logo--vantage-partners { height: 24px; }
.cc-partners__logo--jll              { height: 34px; }
.cc-partners__logo--cbre             { height: 27px; }
.cc-partners__logo--savills          { height: 42px; }
.cc-partners__logo--colliers         { height: 38px; }
.cc-partners__logo--ray-white        { height: 22px; }
.cc-partners__logo--stonebridge      { height: 21px; }

@media (max-width: 768px) {
  .cc-partners {
    padding-bottom: 90px;
  }

  .cc-partners__list {
    gap: 26px 38px;
  }

  .cc-partners--flagship .cc-partners__viewport {
    margin-top: 34px;
  }

  .cc-partners--flagship .cc-partners__list {
    --cc-partners-gap: 48px;
    animation-duration: 30s;
  }

  /* Stack the group label above its logos rather than squeezing both. */
  .cc-partners__group {
    grid-template-columns: minmax(0, 1fr);
    gap: 18px;
    padding-top: 30px;
    margin-top: 30px;
  }

  .cc-partners__group-label {
    padding-top: 0;
  }
}
