.dm-page-pattern--product-archive {
    width: 100%;
    max-width: var(--dm-container, 1140px);
    margin-inline: auto;
    padding-inline: clamp(16px, 3vw, 32px);
    box-sizing: border-box;
    overflow-x: clip;
}

.dm-page-pattern--product-archive .dm-page-pattern__slot {
    width: 100%;
}

.dm-page-pattern--product-archive .dm-page-pattern__slot--archive-header {
    margin-bottom: clamp(16px, 2.5vw, 28px);
}

.dm-page-pattern--product-archive .dm-page-pattern__slot--archive-result-count,
.dm-page-pattern--product-archive .dm-page-pattern__slot--archive-ordering {
    display: inline-flex;
    align-items: center;
    min-height: 42px;
    margin-bottom: 20px;
}

.dm-page-pattern--product-archive .dm-page-pattern__slot--archive-ordering {
    float: right;
}

.dm-page-pattern--product-archive .dm-page-pattern__slot--archive-products {
    clear: both;
}

.dm-page-pattern--product-archive .dm-page-pattern__slot--archive-products ul.products {
    display: grid;
    /* The Duck Mark commerce settings supply these counts; the numbers are fallbacks. */
    grid-template-columns: repeat(var(--dm-archive-columns-mobile, 1), minmax(0, 1fr));
    gap: var(--dm-gap, 16px);
    margin: 0;
}

.dm-page-pattern--product-archive .dm-page-pattern__slot--archive-products ul.products::before,
.dm-page-pattern--product-archive .dm-page-pattern__slot--archive-products ul.products::after {
    display: none;
}

.dm-page-pattern--product-archive .dm-page-pattern__slot--archive-products ul.products li.product {
    width: auto;
    margin: 0;
    float: none;
}

.dm-page-pattern--product-archive .dm-page-pattern__slot--archive-pagination {
    margin-top: clamp(28px, 5vw, 56px);
}

.dm-page-pattern--product-archive .dm-page-pattern__slot--archive-description {
    color: var(--dm-muted, #6b7280);
}

.dm-page-pattern--product-archive.dm-page-pattern--image-first .dm-page-pattern__slot--archive-description {
    margin-top: var(--dm-section-gap, 72px);
}

@media (min-width: 640px) {
    .dm-page-pattern--product-archive .dm-page-pattern__slot--archive-products ul.products {
        grid-template-columns: repeat(var(--dm-archive-columns-tablet, 2), minmax(0, 1fr));
    }
}

@media (min-width: 1024px) {
    .dm-page-pattern--product-archive .dm-page-pattern__slot--archive-products ul.products {
        grid-template-columns: repeat(var(--dm-archive-columns, 4), minmax(0, 1fr));
    }
}

@media (max-width: 639px) {
    .dm-page-pattern--product-archive .dm-page-pattern__slot--archive-result-count,
    .dm-page-pattern--product-archive .dm-page-pattern__slot--archive-ordering {
        display: flex;
        float: none;
        width: 100%;
    }
}

/* ------------------------------------------------------------------
 * Duck Mark commerce archive settings (v3.7.2)
 *
 * Every class and variable the commerce screen produces is consumed here, on the
 * markup WooCommerce actually renders. The native loop and query are untouched.
 * ----------------------------------------------------------------- */

/* Card image ratio. The thumbnail WooCommerce prints inside li.product. */
body[class*="dm-archive-ratio-"] ul.products li.product a img,
body[class*="dm-archive-ratio-"] ul.products li.product img.attachment-woocommerce_thumbnail {
    aspect-ratio: var(--dm-archive-card-ratio, 1 / 1);
    object-fit: cover;
    width: 100%;
    height: auto;
    display: block;
}
body[class*="dm-archive-ratio-"] ul.products li.product a {
    display: block;
    overflow: hidden;
}

/* Card variants. Each one changes information density or image emphasis. */
body.dm-archive-card-classic ul.products li.product {
    padding: 0;
    text-align: left;
}
body.dm-archive-card-image-first ul.products li.product .woocommerce-loop-product__title {
    margin-top: 10px;
    font-size: .95em;
}
body.dm-archive-card-image-first ul.products li.product a img {
    border-radius: var(--dm-radius-lg, 12px);
}
body.dm-archive-card-compact ul.products li.product {
    padding: 0;
    font-size: .9em;
}
body.dm-archive-card-compact ul.products li.product .woocommerce-loop-product__title {
    margin: 6px 0 2px;
    line-height: 1.3;
}
body.dm-archive-card-editorial ul.products li.product {
    padding: 0 0 14px;
    border-bottom: 1px solid var(--dm-border, rgba(0, 0, 0, .1));
}
body.dm-archive-card-editorial ul.products li.product .woocommerce-loop-product__title {
    margin-top: 12px;
    font-size: 1.05em;
    letter-spacing: .01em;
}

/* Sale badge. WooCommerce prints span.onsale inside the loop item. */
body.dm-archive-show-badge-off ul.products li.product span.onsale {
    display: none;
}
body.dm-archive-show-badge-on ul.products li.product span.onsale {
    display: inline-block;
}

/* Toolbar layout. The native result count and ordering elements. */
body.dm-archive-toolbar-inline .woocommerce-result-count,
body.dm-archive-toolbar-inline .woocommerce-ordering {
    display: inline-block;
    vertical-align: middle;
    float: none;
}
body.dm-archive-toolbar-split .woocommerce-result-count {
    float: left;
}
body.dm-archive-toolbar-split .woocommerce-ordering {
    float: right;
}
body.dm-archive-toolbar-minimal .woocommerce-result-count {
    display: none;
}
body.dm-archive-toolbar-minimal .woocommerce-ordering {
    display: block;
    float: none;
    text-align: right;
}

/* Pagination. The native WooCommerce pagination markup. */
body.dm-archive-pagination-numbers nav.woocommerce-pagination ul li a,
body.dm-archive-pagination-numbers nav.woocommerce-pagination ul li span {
    display: inline-block;
}
body.dm-archive-pagination-compact nav.woocommerce-pagination ul li a.page-numbers:not(.next):not(.prev),
body.dm-archive-pagination-compact nav.woocommerce-pagination ul li span.page-numbers:not(.current) {
    display: none;
}
body.dm-archive-pagination-compact nav.woocommerce-pagination ul li a.next,
body.dm-archive-pagination-compact nav.woocommerce-pagination ul li a.prev,
body.dm-archive-pagination-compact nav.woocommerce-pagination ul li span.current {
    display: inline-block;
}
