/* 九宫格推荐（base/promoGrid.html）：PC 静态一行；H5 两组相同内容右→左无缝滚动 */

.promo-grid {
  --promo-grid-gap: 12px;
  --promo-grid-size: 80px;
  width: 100%;
  margin: 4px 0 8px;
  overflow-x: auto;
  scrollbar-width: none;
  -webkit-overflow-scrolling: touch;
}

.promo-grid::-webkit-scrollbar {
  display: none;
}

.promo-grid__track {
  display: flex;
  min-width: 100%;
}

.promo-grid__group {
  display: flex;
  flex: 1 0 auto;
  justify-content: space-between;
  gap: var(--promo-grid-gap);
}

.promo-grid__group[aria-hidden="true"] {
  display: none;
}

.promo-grid__item {
  display: inline-flex;
  flex: 0 0 var(--promo-grid-size);
  flex-direction: column;
  align-items: center;
  gap: 4px;
  width: var(--promo-grid-size);
  color: #fff;
  text-decoration: none;
}

.promo-grid__thumb {
  position: relative;
  display: block;
  width: var(--promo-grid-size);
  height: var(--promo-grid-size);
  overflow: hidden;
  border-radius: 12px;
  background: #464646;
  --promo-grid-line: rgba(255, 255, 255, 0.3);
}

/* Border on an overlay: an inset shadow on the box itself would be covered by the image */
.promo-grid__thumb::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  box-shadow: inset 0 0 0 1px var(--promo-grid-line);
  pointer-events: none;
}

.promo-grid__thumb img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.promo-grid__title {
  width: 100%;
  overflow: hidden;
  font-size: 12px;
  font-weight: 400;
  line-height: 18px;
  text-align: center;
  text-overflow: ellipsis;
  white-space: nowrap;
}

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

@media (max-width: 768px) {
  .promo-grid {
    --promo-grid-gap: 8px;
    --promo-grid-size: 56px;
    width: auto;
    margin: 12px var(--h5-gutter) 0;
    overflow: hidden;
  }

  .promo-grid__track {
    width: max-content;
    min-width: 0;
    animation: promo-grid-marquee calc(var(--promo-grid-count, 8) * 2.5s) linear infinite;
  }

  .promo-grid:focus-within .promo-grid__track {
    animation-play-state: paused;
  }

  /* Trailing padding equals the gap so the seam between the two groups matches the spacing inside them */
  .promo-grid__group,
  .promo-grid__group[aria-hidden="true"] {
    display: flex;
    flex: 0 0 auto;
    justify-content: flex-start;
    padding-right: var(--promo-grid-gap);
  }

  .promo-grid__thumb {
    border-radius: 9px;
    --promo-grid-line: rgba(255, 255, 255, 0.1);
  }
}

@media (max-width: 768px) and (prefers-reduced-motion: reduce) {
  .promo-grid {
    overflow-x: auto;
  }

  .promo-grid__track {
    animation: none;
  }

  .promo-grid__group[aria-hidden="true"] {
    display: none;
  }
}
