.gb-logo-grid-showcase,
.gb-logo-marquee-showcase {
  --gb-logo-columns-desktop: 5;
  --gb-logo-columns-tablet: 3;
  --gb-logo-columns-mobile: 2;
  --gb-logo-item-width-desktop: calc(20% - 19.2px);
  --gb-logo-item-width-tablet: calc(33.33333333% - 16px);
  --gb-logo-item-width-mobile: calc(50% - 12px);
  --gb-logo-gap: 24px;
  --gb-logo-height: 70px;
  --gb-logo-card-min-height: 120px;
  --gb-logo-card-padding: 18px;
  --gb-logo-card-radius: 14px;
  --gb-logo-marquee-speed: 28s;
  --gb-logo-marquee-items-desktop: 6;
  --gb-logo-marquee-items-tablet: 3;
  --gb-logo-marquee-items-mobile: 2;
  width: 100%;
  box-sizing: border-box;
}

.gb-logo-grid-showcase *,
.gb-logo-marquee-showcase * {
  box-sizing: border-box;
}

/* Static centered grid mode */
.gb-logo-grid-showcase {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: stretch;
  gap: var(--gb-logo-gap);
}

.gb-logo-grid-item {
  flex: 0 0 var(--gb-logo-item-width-desktop);
  max-width: var(--gb-logo-item-width-desktop);
  min-width: 0;
}

/* Marquee rows mode */
.gb-logo-marquee-showcase {
  display: grid;
  gap: var(--gb-logo-gap);
  overflow: hidden;
}

.gb-logo-marquee-row {
  width: 100%;
  overflow: hidden;
}

.gb-logo-marquee-track {
  display: flex;
  width: var(--gb-logo-marquee-track-width-desktop);
  max-width: none;
  will-change: transform;
  animation: gbLogoMarqueeLeft var(--gb-logo-marquee-speed) linear infinite;
}

.gb-logo-marquee-row-right .gb-logo-marquee-track {
  animation-name: gbLogoMarqueeRight;
}

.gb-logo-marquee-pause:hover .gb-logo-marquee-track {
  animation-play-state: paused;
}

/*
 * Responsive marquee fix:
 * Keep each marquee row as ONE horizontal line on tablet/mobile.
 * The visible count changes by breakpoint, but the logo cards never wrap
 * into a stacked grid inside the row.
 */
.gb-logo-marquee-group {
  flex: 0 0 50%;
  max-width: 50%;
  display: flex;
  flex-wrap: nowrap;
  align-items: stretch;
  gap: var(--gb-logo-gap);
  padding-left: calc(var(--gb-logo-gap) / 2);
  padding-right: calc(var(--gb-logo-gap) / 2);
}

.gb-logo-marquee-item {
  flex: 0 0 var(--gb-logo-marquee-item-inner-width);
  max-width: var(--gb-logo-marquee-item-inner-width);
  min-width: 0;
}

@keyframes gbLogoMarqueeLeft {
  from {
    transform: translate3d(0, 0, 0);
  }
  to {
    transform: translate3d(-50%, 0, 0);
  }
}

@keyframes gbLogoMarqueeRight {
  from {
    transform: translate3d(-50%, 0, 0);
  }
  to {
    transform: translate3d(0, 0, 0);
  }
}

/* Shared logo card style */
.gb-logo-grid-box,
.gb-logo-marquee-box {
  width: 100%;
  min-height: var(--gb-logo-card-min-height);
  padding: var(--gb-logo-card-padding);
  border: 1px solid rgba(15, 23, 42, 0.1);
  border-radius: var(--gb-logo-card-radius);
  background: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  text-decoration: none;
  transition: transform 200ms ease, box-shadow 200ms ease, border-color 200ms ease, opacity 200ms ease;
}

.gb-logo-grid-no-border .gb-logo-grid-box,
.gb-logo-grid-no-border .gb-logo-marquee-box {
  border-color: transparent;
}

.gb-logo-grid-shadow .gb-logo-grid-box,
.gb-logo-grid-shadow .gb-logo-marquee-box {
  box-shadow: 0 10px 28px rgba(15, 23, 42, 0.08);
}

.gb-logo-grid-hover .gb-logo-grid-box:hover,
.gb-logo-grid-hover .gb-logo-marquee-box:hover {
  transform: translateY(-3px);
  box-shadow: 0 14px 32px rgba(15, 23, 42, 0.12);
  border-color: rgba(15, 23, 42, 0.18);
}

.gb-logo-grid-box img,
.gb-logo-marquee-box img {
  display: block;
  width: auto;
  max-width: 88%;
  height: var(--gb-logo-height);
  object-fit: contain;
}

.gb-logo-grid-grayscale .gb-logo-grid-box img,
.gb-logo-grid-grayscale .gb-logo-marquee-box img {
  filter: grayscale(1);
  opacity: 0.72;
  transition: filter 200ms ease, opacity 200ms ease;
}

.gb-logo-grid-grayscale .gb-logo-grid-box:hover img,
.gb-logo-grid-grayscale .gb-logo-marquee-box:hover img {
  filter: grayscale(0);
  opacity: 1;
}

@media (max-width: 1024px) {
  .gb-logo-grid-item {
    flex-basis: var(--gb-logo-item-width-tablet);
    max-width: var(--gb-logo-item-width-tablet);
  }

  .gb-logo-marquee-track {
    width: var(--gb-logo-marquee-track-width-tablet);
  }
}

@media (max-width: 640px) {
  .gb-logo-grid-item {
    flex-basis: var(--gb-logo-item-width-mobile);
    max-width: var(--gb-logo-item-width-mobile);
  }

  .gb-logo-marquee-track {
    width: var(--gb-logo-marquee-track-width-mobile);
  }
}

@media (prefers-reduced-motion: reduce) {
  .gb-logo-marquee-track {
    animation-duration: 1ms;
    animation-iteration-count: 1;
  }
}
