/* Snooky catalogue cards. Keep each product image intact in a shared square. */
ul.products > li.product > .mt-eco-product > .mt-product-img,
ul.products > li.product > .mt-eco-product > a.woocommerce-LoopProduct-link > .mt-product-img {
    aspect-ratio: 1;
    width: 100%;
}

ul.products > li.product > .mt-eco-product > .mt-product-img > a,
ul.products > li.product > .mt-eco-product > a.woocommerce-LoopProduct-link:has(> .mt-product-img) {
    display: block;
}

ul.products > li.product > .mt-eco-product > .mt-product-img > a > img,
ul.products > li.product > .mt-eco-product > a.woocommerce-LoopProduct-link > .mt-product-img > img,
.hgr-catalogue-main ul.products > li.product > a.woocommerce-loop-product__link > img {
    display: block;
    width: 100%;
    height: auto;
    aspect-ratio: 1;
    object-fit: contain;
    object-position: center;
}

ul.products > li.product > .mt-eco-product > .mt-product-info > .woocommerce-loop-product__title,
body.hgr-snooky-catalogue.single-product .hgr-catalogue-main .related.products .woocommerce-loop-product__title {
    display: block;
    min-height: 0;
    overflow: visible;
    overflow-wrap: anywhere;
    -webkit-line-clamp: unset;
}

/* Preserve the existing column widths and responsive breakpoints. Each product
   spans the image, title, price and action tracks of its visual row. */
@supports (grid-template-rows: subgrid) {
    ul.products:has(> li.product > .mt-eco-product),
    .hgr-catalogue-main ul.products:has(> li.product > a.woocommerce-loop-product__link > img) {
        row-gap: 0;
    }

    ul.products:not([data-clean-sale-track]) > li.product:has(> .mt-eco-product),
    .hgr-catalogue-main ul.products > li.product:has(> a.woocommerce-loop-product__link > img) {
        margin-block-end: 30px;
    }

    ul.products > li.product:has(> .mt-eco-product),
    body.hgr-snooky-catalogue.single-product .hgr-catalogue-main .related.products ul.products > li.product:has(> a.woocommerce-loop-product__link > img) {
        display: grid;
        grid-row: span 4;
        grid-template-rows: subgrid;
        grid-template-columns: minmax(0, 1fr);
        min-width: 0;
    }

    /* The sale track flows by column and always contains one visual row. */
    [data-clean-sale-carousel="1"] > ul#hgr-sale-track[data-clean-sale-track] {
        grid-template-rows: repeat(4, auto);
        row-gap: 0;
    }

    ul.products > li.product > .mt-eco-product {
        display: grid;
        grid-row: 1 / span 4;
        grid-column: 1;
        grid-template-rows: subgrid;
        grid-template-columns: minmax(0, 1fr);
    }

    /* The stock-theme hover expansion was for the original floating actions. */
    ul.products > li.product > .mt-eco-product:not(:has(.mt-pro-btn.mt-btn)):hover {
        margin-bottom: 0;
        padding-bottom: 0;
    }

    ul.products > li.product > .mt-eco-product > .mt-product-img,
    ul.products > li.product > .mt-eco-product > a.woocommerce-LoopProduct-link:has(> .mt-product-img) {
        grid-row: 1;
        grid-column: 1;
        min-width: 0;
    }

    ul.products > li.product > .mt-eco-product > .mt-product-info {
        display: grid;
        grid-row: 2 / span 2;
        grid-column: 1;
        grid-template-rows: subgrid;
        grid-template-columns: minmax(0, 1fr);
        min-width: 0;
    }

    ul.products > li.product > .mt-eco-product:has(> form.snooky-basket-card) > .mt-product-info {
        padding-bottom: 0;
    }

    ul.products > li.product > .mt-eco-product > .mt-product-info:has(> form.snooky-basket-card) {
        grid-row: 2 / span 3;
    }

    ul.products > li.product > .mt-eco-product > .mt-product-info > .woocommerce-loop-product__title {
        grid-row: 1;
        grid-column: 1;
        align-self: start;
    }

    ul.products > li.product > .mt-eco-product > .mt-product-info > :is(.price, .mt-pro-price) {
        grid-row: 2;
        grid-column: 1;
        align-self: start;
    }

    ul.products > li.product > .mt-eco-product > .mt-product-info > form.snooky-basket-card {
        grid-row: 3;
        grid-column: 1;
        align-self: start;
    }

    ul.products > li.product > .mt-eco-product > form.snooky-basket-card {
        grid-row: 4;
        grid-column: 1;
        align-self: start;
        margin-inline: 25px;
        margin-bottom: 22px;
    }

    body.hgr-snooky-catalogue.single-product .hgr-catalogue-main .related.products ul.products > li.product > a.woocommerce-loop-product__link:has(> img) {
        display: grid;
        grid-row: 1 / span 3;
        grid-column: 1;
        grid-template-rows: subgrid;
        grid-template-columns: minmax(0, 1fr);
    }

    .hgr-catalogue-main ul.products > li.product > a.woocommerce-loop-product__link > img {
        grid-row: 1;
        grid-column: 1;
    }

    .hgr-catalogue-main ul.products > li.product > a.woocommerce-loop-product__link > .woocommerce-loop-product__title {
        grid-row: 2;
        grid-column: 1;
        align-self: start;
    }

    .hgr-catalogue-main ul.products > li.product > a.woocommerce-loop-product__link > .price {
        grid-row: 3;
        grid-column: 1;
        align-self: start;
    }

    .hgr-catalogue-main ul.products > li.product:has(> a.woocommerce-loop-product__link > img) > form.snooky-basket-card {
        grid-row: 4;
        grid-column: 1;
        align-self: start;
    }
}
