/* Isolated test routes only. Reserve the whole photo surface, never an inset
   rectangle suggesting a product silhouette that has not arrived. */
.ge-search-thumb[data-photo-state] {
  width: 52px;
  height: 52px;
  flex: 0 0 52px;
  border: 1px solid #edf0f6;
  border-radius: 10px;
}
.ge-search-thumb[data-photo-state] img {
  border: 0;
  border-radius: inherit;
  background: transparent;
}
.ge-search-thumb[data-photo-state="pending"] {
  background: linear-gradient(105deg, #edf0f4 20%, #fafbfc 50%, #edf0f4 80%) !important;
  background-size: 200% 100% !important;
  animation: ge-flow-thumb 1.4s ease-in-out infinite;
}
@keyframes ge-flow-thumb { from { background-position: 100% 0; } to { background-position: -100% 0; } }
@media (prefers-reduced-motion: reduce) { .ge-search-thumb[data-photo-state="pending"] { animation: none; } }
.catalog-card-visual .catalog-image-skeleton {
  inset: 0;
  border-radius: inherit;
  background: linear-gradient(135deg, #eef1f5, #e6ebf1 55%, #edf0f5);
  pointer-events: none;
}
.catalog-card-visual .catalog-image-skeleton::after {
  background: linear-gradient(105deg, transparent 20%, #ffffff80 50%, transparent 80%);
  animation: ge-flow-photo-surface 1.6s ease-in-out infinite;
}
@keyframes ge-flow-photo-surface {
  from { transform: translateX(-100%); }
  to { transform: translateX(100%); }
}
@media (prefers-reduced-motion: reduce) {
  .catalog-card-visual .catalog-image-skeleton::after {
    animation: none;
    transform: none;
    background: #ffffff30;
  }
}
