/* NNB GIDA V310 — FAST IMAGE DELIVERY
   Keeps V309 scroll stability while removing delayed/black image placeholders. */
body #grid .card-visual{
  background:
    radial-gradient(circle at 50% 10%,rgba(255,255,255,1) 0,rgba(255,255,255,1) 14%,rgba(255,255,255,.56) 38%,transparent 62%),
    linear-gradient(180deg,#fbfbfc 0%,#f7f7f8 70%,#f1f1f3 100%)!important;
}
body #grid .card-visual img.nnb-lazy,
body #grid .card-visual img.nnb-loading{
  opacity:0!important;
  visibility:hidden!important;
}
body #grid .card-visual img.nnb-ready{
  opacity:1!important;
  visibility:visible!important;
}
body #grid .card-visual img.nnb-image-error{
  opacity:0!important;
  visibility:hidden!important;
}

/* A subtle neutral loading surface; never render a black square. */
body #grid .card-visual:has(img.nnb-lazy),
body #grid .card-visual:has(img.nnb-loading){
  background:
    radial-gradient(circle at 50% 38%,rgba(255,255,255,.98),rgba(248,248,249,.94) 46%,rgba(240,240,242,.96) 100%)!important;
}

/* Keep transitions very short so images feel instant without GPU pressure. */
body #grid .card-visual img{
  transition:opacity .12s linear!important;
}
body.nnb-scrolling #grid .card-visual img{
  transition:none!important;
}

/* content-visibility remains enabled, but the intrinsic size is closer to real mobile cards. */
body #grid>.card{
  contain-intrinsic-size:280px 360px!important;
}

@media(max-width:820px){
  body #grid .card-visual img.nnb-ready{
    filter:none!important;
  }
}
