.nmcc-partner-logos {
  width: 100%;
  --nmcc-gap: 16px;
  --nmcc-logo-h: 175px; /* default logo height */
  --nmcc-item-max: 200px; /* max width per tile */
}

/* Size modifiers */
.nmcc-partner-logos.nmcc-logo-small  { --nmcc-logo-h: 75px; }
.nmcc-partner-logos.nmcc-logo-medium { --nmcc-logo-h: 100px; }
.nmcc-partner-logos.nmcc-logo-large  { --nmcc-logo-h: 175px; }

.nmcc-partner-logos.nmcc-layout-grid {
  display: grid;
  gap: var(--nmcc-gap, 16px);
  grid-template-columns: repeat(var(--nmcc-cols, 4), minmax(0, 1fr));
  align-items: start;
  justify-items: center; /* centers the 200px tiles in their columns */
}

.nmcc-partner-logos.nmcc-layout-scroll {
  display: flex;
  gap: var(--nmcc-gap, 16px);
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
}

.nmcc-partner-logos.nmcc-layout-scroll::-webkit-scrollbar {
  display: none;
}

/* Snap scroll option */
.nmcc-partner-logos.nmcc-scroll-snap {
  scroll-snap-type: x mandatory;
  scroll-padding-left: 1px;
}

.nmcc-partner-logos.nmcc-scroll-snap .nmcc-partner-logos__item {
  scroll-snap-align: start;
}

/* Tile sizing */
.nmcc-partner-logos__item {
  width: 100%;
  max-width: var(--nmcc-item-max);
  display: flex;
  justify-content: center;
}

.nmcc-layout-scroll .nmcc-partner-logos__item {
  flex: 0 0 auto;
  width: min(var(--nmcc-item-max), 90vw);
}

/* Make the whole card a centered column */
.nmcc-partner-logos__link,
.nmcc-partner-logos__card {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  text-decoration: none;
  width: 100%;
}

/* Logo image: consistent height, preserve aspect */
.nmcc-partner-logos__img {
  height: var(--nmcc-logo-h);
  width: auto;
  max-width: 100%;
  max-height: 100%;
  display: block;
object-fit: contain;
}

/* Title under logo */
.nmcc-partner-logos__title {
  margin-top: 10px;
  font-size: 14px;
  line-height: 1.2;
  max-width: 100%;
  text-wrap: balance;
}

.nmcc-partner-logos__fallback {
  display: inline-block;
}

/* Arrow shell for snap mode */
.nmcc-partner-logos-shell {
  position: relative;
}

/* Give the scroller padding so arrows don't overlap content */
.nmcc-partner-logos-shell .nmcc-partner-logos.nmcc-layout-scroll {
  padding-left: 44px;
  padding-right: 44px;
  scroll-padding-left: 44px;
  scroll-padding-right: 44px;
}

.nmcc-partner-logos__arrow {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 36px;
  height: 36px;
  border-radius: 999px;
  border: 1px solid rgba(0,0,0,.15);
  background: rgba(255,255,255,.9);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  z-index: 5;
  pointer-events: auto;
}

.nmcc-partner-logos__arrow span {
  font-size: 22px;
  line-height: 1;
}

.nmcc-partner-logos__arrow--prev { left: 6px; }
.nmcc-partner-logos__arrow--next { right: 6px; }

.nmcc-partner-logos__arrow:disabled {
  opacity: .35;
  cursor: default;
}

.nmcc-partner-logos-shell.nmcc-arrows-hidden .nmcc-partner-logos__arrow {
  display: none;
}

/* 2 per row on tablet and mobile */
@media (max-width: 1024px) {
  .nmcc-partner-logos.nmcc-layout-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .nmcc-partner-logos.nmcc-layout-grid .nmcc-partner-logos__item {
    max-width: 90%;
  }
}