/* Shared catalogue presentation. Native cards, forms, sorting and facet hooks remain intact. */
body #products #js-product-list > .products {
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  align-items:stretch;
  gap:32px 20px;
}
body #products #js-product-list > .products:has(> .product-miniature:only-child) {
  grid-template-columns:repeat(3,minmax(0,1fr));
}
body #js-product-list .product-miniature { min-width:0; height:100%; }
body #js-product-list .product-miniature__inner { display:flex; flex-direction:column; height:100%; border:0; box-shadow:none; }
body #js-product-list .product-miniature__top { position:relative; flex:none; background:var(--vl-surface); }
body #js-product-list .product-miniature__image-container { width:100%; }
body #js-product-list .product-miniature__image-link {
  display:flex; align-items:center; width:100%; aspect-ratio:4/5; overflow:hidden; background:var(--vl-surface);
}
body #js-product-list .product-miniature__image-link picture { display:block; width:100%; height:auto; }
body #js-product-list .product-miniature__image {
  display:block; width:100%; height:auto; object-fit:contain; object-position:center;
}
body #js-product-list .product-miniature:hover .product-miniature__image { transform:none; }
body #js-product-list .product-flags { position:absolute; inset:14px auto auto 14px; z-index:1; margin:0; gap:6px; }
body #js-product-list .product-miniature__bottom { display:flex; flex:1; flex-direction:column; padding:18px 0 0; }
body #js-product-list .product-miniature__infos {
  display:grid; grid-template-columns:minmax(0,1fr); grid-template-rows:42px 30px auto;
  gap:0; align-content:start; flex:1; min-width:0;
}
body #js-product-list .product-miniature__title {
  grid-row:1; align-self:start; display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2;
  overflow:hidden; margin:0; font-size:12px; line-height:1.7; font-weight:500; overflow-wrap:anywhere;
}
body #js-product-list .product-miniature__variants { grid-row:2; align-self:start; margin:0; min-height:20px; gap:8px; }
body #js-product-list .product-miniature__prices { grid-row:3; align-self:start; display:flex; align-items:center; gap:10px; margin:0; min-height:24px; }
body #js-product-list .product-miniature__price { font-size:13px; font-weight:500; }
body #js-product-list .product-miniature__regular-price { font-size:10px; color:var(--vl-muted); }
body #js-product-list .product-miniature__actions { margin-top:16px; }
body #js-product-list .product-miniature__form { display:flex; flex-wrap:nowrap; align-items:stretch; gap:10px; border-top:1px solid var(--vl-line); padding-top:16px; }
body #js-product-list .product-miniature__form .quantity-button { flex:0 0 126px; width:126px; max-width:126px; min-width:0; }
body #js-product-list .product-miniature__form .form-control { min-width:0; font-size:12px; }
body #js-product-list .product-miniature__add { display:flex; flex:1; justify-content:center; align-items:center; gap:8px; min-width:0; min-height:44px; padding:10px 14px; font-size:11px; }
body #js-product-list .product-miniature__add-text { display:inline; }
body #js-product-list .product-miniature__details { width:100%; min-height:44px; }
body #js-product-list-top .products__selection { display:flex; justify-content:space-between; align-items:center; gap:16px; border-block:1px solid var(--vl-line); padding:14px 0; margin-bottom:28px; }
body #js-product-list-top .products__count { flex:1; width:auto; color:var(--vl-muted); font-size:12px; }
body #js-product-list-top .products__sort { flex:0 0 auto; justify-content:flex-end; align-items:center; width:auto; gap:12px; }
body #js-product-list-top .products__sort-dropdown { width:210px; flex:0 0 210px; }
body #js-product-list-top .products__sort-dropdown-button { min-height:44px; font-size:12px; border:0; border-bottom:1px solid var(--vl-ink); padding:10px 0; background:transparent; }
body #js-product-list .products__pagination { margin-top:32px; border-top:1px solid var(--vl-line); padding-top:20px; }
body #js-product-list .pagination__container { align-items:center; gap:20px; }
body #js-product-list .pagination__number { font-size:12px; color:var(--vl-muted); }
@media(min-width:768px) and (max-width:1100px) {
  body #products #js-product-list > .products,
  body #products #js-product-list > .products:has(> .product-miniature:only-child) { grid-template-columns:repeat(2,minmax(0,1fr)); gap:32px 20px; }
  body #js-product-list .product-miniature__form { flex-wrap:wrap; gap:8px; }
  body #js-product-list .product-miniature__form .quantity-button { flex:1 0 100%; width:100%; max-width:none; }
  body #js-product-list .product-miniature__add { flex:1 0 100%; }
}
@media(max-width:767px) {
  body #products #js-product-list > .products,
  body #products #js-product-list > .products:has(> .product-miniature:only-child) { grid-template-columns:repeat(2,minmax(0,1fr)); gap:28px 14px; }
  body #js-product-list-top .products__selection { gap:12px; flex-wrap:wrap; padding:12px 0; margin-bottom:22px; }
  body #js-product-list-top .products__count { flex:1 0 100%; font-size:11px; }
  body #js-product-list-top .products__sort { width:100%; flex:1; gap:12px; }
  body #js-product-list-top .products__sort-dropdown { flex:1; width:auto; min-width:0; }
  body #js-product-list .product-miniature__infos { grid-template-rows:38px 28px auto; }
  body #js-product-list .product-miniature__title { font-size:11px; line-height:1.65; }
  body #js-product-list .product-miniature__bottom { padding-top:14px; }
  body #js-product-list .product-miniature__price { font-size:12px; }
  body #js-product-list .product-miniature__regular-price { font-size:9px; }
  body #js-product-list .product-miniature__actions { margin-top:12px; }
  body #js-product-list .product-miniature__form { flex-wrap:wrap; padding-top:12px; gap:8px; }
  body #js-product-list .product-miniature__form .quantity-button { flex:1 0 100%; width:100%; max-width:none; }
  body #js-product-list .product-miniature__add { flex:1 0 100%; padding:10px 6px; font-size:10px; }
  body #js-product-list .product-flags { inset:8px auto auto 8px; gap:4px; }
  body #js-product-list .product-flags .badge { font-size:7px; padding:5px; }
  body #js-product-list .products__pagination { margin-top:24px; padding-top:16px; }
}
