/* V944 — prevent white flashes/jank when vertically scrolling product cards.
   V774 used content-visibility/paint containment to skip off-screen cards. That
   optimization can show a blank frame while Chrome reconstructs a card/image
   after scrolling back. Keep product cards painted and avoid forced GPU layers. */

#productGrid > .product,
#memberRewardGridV74 > .product,
#publicProductGrid > .public-product,
.public-products > .public-product{
  content-visibility:visible!important;
  contain:none!important;
  contain-intrinsic-size:none!important;
}

#productGrid img.image-stable-v60,
#publicProductGrid img,
#memberRewardGridV74 img.image-stable-v60,
.banner-main img,
.public-banner-main img,
.coupon-clean-cover img{
  content-visibility:visible!important;
  will-change:auto!important;
}

/* Hundreds of translateZ(0) image layers can exhaust GPU texture memory and
   force re-rasterization while scrolling. Normal raster images are smoother here. */
#productGrid .cover img,
#publicProductGrid .public-product-cover img,
#memberRewardGridV74 .cover img,
.coupon-clean-cover img{
  transform:none!important;
  -webkit-transform:none!important;
  backface-visibility:visible!important;
  -webkit-backface-visibility:visible!important;
}

.image-scroll-wait-v944{
  background:linear-gradient(135deg,#eef6ff 0%,#f7fbff 50%,#edf7ff 100%)!important;
}
.image-scroll-ready-v944{
  opacity:1!important;
  visibility:visible!important;
}

@media (max-width:980px),(pointer:coarse){
  #productGrid > .product,
  #memberRewardGridV74 > .product,
  #publicProductGrid > .public-product,
  .public-products > .public-product{
    content-visibility:visible!important;
    contain:none!important;
    contain-intrinsic-size:none!important;
  }

  /* Avoid extra compositor work from a transform on the entire sticky shell. */
  body .header,
  body .bottom-nav{
    transform:none!important;
    -webkit-transform:none!important;
  }
}

/* V987: reserve visible image space and use a tinted skeleton instead of white. */
#productGrid .cover, #memberRewardGridV74 .cover,
#publicProductGrid .public-product-cover, .public-products .public-product-cover,
.coupon-clean-cover, .my-coupon-thumb-v752,
.banner-main,.public-banner-main,.banner-slide,.mini-banner,.public-mini-banner{
  background-color:#eef4fa;
}
#productGrid img, #memberRewardGridV74 img, #publicProductGrid img,
.public-products img, #couponList img, #memberCouponListV74 img,
.banner-main img,.public-banner-main img,.banner-slide img{
  content-visibility:visible!important;
  backface-visibility:visible!important;
  will-change:auto!important;
}
/* Prevent competing animations from fading covers out during grid refreshes. */
#productGrid>.product, #memberRewardGridV74>.product,
#publicProductGrid>.public-product, .public-products>.public-product{
  content-visibility:visible!important;
  contain:none!important;
  contain-intrinsic-size:none!important;
}
