/* Match Swiper's initial layout; keep a scrollable fallback if it cannot start. */
.products-featured .js-swiper-products:not(.swiper-container-initialized) {
  overflow-x: auto;
  scrollbar-width: none;
}
.products-featured .js-swiper-products:not(.swiper-container-initialized)::-webkit-scrollbar {
  display: none;
}
.products-featured .js-swiper-products:not(.swiper-container-initialized) > .swiper-wrapper > .swiper-slide {
  margin-right: 10px;
}
@media (min-width: 1200px) {
  .products-featured .js-swiper-products:not(.swiper-container-initialized) > .swiper-wrapper > .swiper-slide {
    margin-right: 0;
  }
}
@media (min-width: 1199px) {
  /* Opacity alone lets offscreen cards flash during the first transition. */
  .products-featured .js-swiper-products.swiper-container-initialized > .swiper-wrapper > .swiper-slide {
    visibility: hidden;
  }
  .products-featured .js-swiper-products.swiper-container-initialized > .swiper-wrapper > .swiper-slide-visible {
    visibility: visible;
  }
}
.products-featured .js-swiper-products .ib-photo-pending {
  position: relative;
}
.products-featured .js-swiper-products .ib-photo-pending::before {
  content: "";
  position: absolute;
  inset: 12% 8%;
  border-radius: 8px;
  background: #f1f2f4;
  animation: ib-photo-pulse 1.4s ease-in-out infinite alternate;
  pointer-events: none;
}
.products-featured .js-swiper-products .ib-photo-pending > img {
  opacity: 0;
}
.products-featured .js-swiper-products .ib-photo-revealed > img {
  animation: ib-photo-reveal 220ms ease-out both;
}
@keyframes ib-photo-pulse {
  from { opacity: 0.55; }
  to { opacity: 1; }
}
@keyframes ib-photo-reveal {
  from { opacity: 0; }
  to { opacity: 1; }
}
@media (prefers-reduced-motion: reduce) {
  .products-featured .js-swiper-products .ib-photo-pending::before,
  .products-featured .js-swiper-products .ib-photo-revealed > img {
    animation: none;
  }
}
