/* Shared by the shop, catalog, sale and archive, including newly added pieces. */
.listing-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 40px 12px;
  align-items: start;
}
.listing-grid > article { min-width: 0; }
.listing-grid .photo,
.listing-grid .product-image {
  display: block;
  position: relative;
  width: 100%;
  /* Let the original photo determine height: no letterboxing or crop. */
  aspect-ratio: auto;
  height: auto;
  padding: 0;
  border: 0;
  overflow: hidden;
  background: transparent;
}
.listing-grid .photo img,
.listing-grid .product-image img {
  display: block;
  width: 100%;
  height: auto;
  object-fit: contain;
  object-position: center;
  transform: none;
}
.listing-grid .photo:hover img,
.listing-grid .product-image:hover img { transform: none; }
.listing-grid .item-info,
.listing-grid .product-info { display: block; padding-top: 14px; }
.listing-grid .name,
.listing-grid .product-name {
  display: block;
  font-size: 1.05rem;
  line-height: 1.4;
  overflow-wrap: anywhere;
}
.listing-grid .subtitle,
.listing-grid .product-desc { line-height: 1.45; margin-top: 5px; }
.listing-grid .price-wrap,
.listing-grid .product-info > .price { display: block; margin-top: 12px; }
.listing-grid .price { font-size: 1rem; line-height: 1.5; white-space: normal; }
.listing-grid .soldout,
.listing-grid .product-badge {
  top: auto;
  bottom: 10px;
  left: 10px;
  max-width: calc(100% - 20px);
  border-radius: 24px;
  background: #111;
  color: #fff;
  padding: 9px 14px;
  font-size: .7rem;
  line-height: 1.2;
}
@media (max-width: 850px) {
  .listing-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 550px) {
  .shop, .section { padding-left: 3.2%; padding-right: 3.2%; }
  .listing-grid { gap: 30px 6px; }
  .listing-grid .name,
  .listing-grid .product-name { font-size: .96rem; line-height: 1.4; }
  .listing-grid .price { font-size: .9rem; }
  .listing-grid .subtitle,
  .listing-grid .product-desc { font-size: .78rem; }
  .listing-grid .soldout,
  .listing-grid .product-badge { bottom: 8px; left: 8px; padding: 7px 11px; font-size: .62rem; }
}

.listing-grid .name,.listing-grid .product-name{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;line-height:1.4;min-height:2.8em}.listing-grid .subtitle,.listing-grid .product-desc{font-weight:400}.listing-grid .price,.listing-grid .price-sale{font-weight:600}
