/* One responsive rhythm contract for the main product archive and every
 * product-category/tag archive, regardless of native WooCommerce or Elementor markup. */
:is(body.tax-product_cat, body.tax-product_tag, body.post-type-archive-product) #page {
  --kv2-product-grid-column-gap: 48px;
  --kv2-product-grid-row-gap: 56px;
  --kv2-product-card-media-gap: 28px;
}

@media (min-width: 64rem) and (max-width: 74.99rem) {
  :is(body.tax-product_cat, body.tax-product_tag, body.post-type-archive-product) #page {
    --kv2-product-grid-column-gap: 44px;
    --kv2-product-grid-row-gap: 52px;
  }
}

@media (min-width: 48rem) and (max-width: 63.99rem) {
  :is(body.tax-product_cat, body.tax-product_tag, body.post-type-archive-product) #page {
    --kv2-product-grid-column-gap: 28px;
    --kv2-product-grid-row-gap: 48px;
    --kv2-product-card-media-gap: 26px;
  }
}

@media (max-width: 47.99rem) {
  :is(body.tax-product_cat, body.tax-product_tag, body.post-type-archive-product) #page {
    --kv2-product-grid-column-gap: 16px;
    --kv2-product-grid-row-gap: 36px;
    --kv2-product-card-media-gap: 16px;
  }
}

:is(body.tax-product_cat, body.tax-product_tag, body.post-type-archive-product) .site-main--commerce ul.products {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  clear: both;
  column-gap: var(--kv2-product-grid-column-gap);
  row-gap: var(--kv2-product-grid-row-gap);
  width: 100%;
}

:is(body.tax-product_cat, body.tax-product_tag, body.post-type-archive-product) .site-main--commerce ul.products::before,
:is(body.tax-product_cat, body.tax-product_tag, body.post-type-archive-product) .site-main--commerce ul.products::after {
  display: none;
  content: none;
}

:is(body.tax-product_cat, body.tax-product_tag, body.post-type-archive-product) .site-main--commerce ul.products > li.product {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  box-sizing: border-box;
  float: none;
  width: 100%;
  margin: 0;
  border: 0;
  padding: 0;
  background: transparent;
}

:is(body.tax-product_cat, body.tax-product_tag, body.post-type-archive-product) .site-main--commerce ul.products > li.product .woocommerce-loop-product__link {
  display: block;
  color: inherit;
  text-decoration: none;
}

:is(body.tax-product_cat, body.tax-product_tag, body.post-type-archive-product) .site-main--commerce ul.products > li.product a img {
  display: block;
  width: 100%;
  aspect-ratio: auto;
  margin: 0 0 var(--kv2-product-card-media-gap);
  border: 0;
  border-radius: 3px;
  padding: 0;
  background: transparent;
  object-fit: contain;
}

:is(body.tax-product_cat, body.tax-product_tag, body.post-type-archive-product) .site-main--commerce ul.products > li.product .woocommerce-loop-product__title {
  margin: 0 0 var(--kv2-space-3);
  padding-inline: 0;
  color: var(--kv2-airbnb-ink);
  font-family: var(--font-body);
  font-size: var(--kv2-type-title-md-size);
  font-weight: var(--kv2-type-title-md-weight);
  line-height: var(--kv2-type-title-md-line);
  overflow-wrap: anywhere;
}

:is(body.tax-product_cat, body.tax-product_tag, body.post-type-archive-product) .site-main--commerce ul.products > li.product .price {
  margin: 0 0 var(--kv2-space-4);
  padding-inline: 0;
  color: var(--kv2-color-primary-dark);
  font-family: var(--font-body);
  font-size: var(--kv2-type-body-md-size);
  font-weight: var(--kv2-type-body-md-weight);
  line-height: var(--kv2-type-body-md-line);
}

@media (min-width: 48rem) and (max-width: 63.99rem) {
  :is(body.tax-product_cat, body.tax-product_tag, body.post-type-archive-product) .site-main--commerce ul.products {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

@media (max-width: 47.99rem) {
  :is(body.tax-product_cat, body.tax-product_tag, body.post-type-archive-product) .site-main--commerce ul.products {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: var(--kv2-product-grid-column-gap);
    row-gap: var(--kv2-product-grid-row-gap);
  }
}

:is(body.tax-product_cat, body.tax-product_tag, body.post-type-archive-product) .site-main--commerce nav.woocommerce-pagination {
  margin-block-start: var(--kv2-space-7);
}

:is(body.tax-product_cat, body.tax-product_tag, body.post-type-archive-product) .site-main--commerce nav.woocommerce-pagination ul {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: var(--kv2-space-2);
  margin: 0;
  border: 0;
}

:is(body.tax-product_cat, body.tax-product_tag, body.post-type-archive-product) .site-main--commerce nav.woocommerce-pagination ul li {
  border: 0;
}

:is(body.tax-product_cat, body.tax-product_tag, body.post-type-archive-product) .site-main--commerce nav.woocommerce-pagination ul li .page-numbers {
  display: inline-flex;
  min-width: 44px;
  min-height: 44px;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--kv2-airbnb-ink);
  border-radius: var(--kv2-radius-sm);
  padding: var(--kv2-space-2);
  color: var(--kv2-airbnb-ink);
  background: var(--kv2-color-surface);
  line-height: 1;
  text-decoration: none;
}

:where(html:not([data-kiddee-input="touch"])) :is(body.tax-product_cat, body.tax-product_tag, body.post-type-archive-product) .site-main--commerce nav.woocommerce-pagination ul li a.page-numbers:hover,
:is(body.tax-product_cat, body.tax-product_tag, body.post-type-archive-product) .site-main--commerce nav.woocommerce-pagination ul li a.page-numbers:focus,
:is(body.tax-product_cat, body.tax-product_tag, body.post-type-archive-product) .site-main--commerce nav.woocommerce-pagination ul li a.page-numbers:focus-visible{
  border-color: var(--kv2-airbnb-ink);
  color: var(--kv2-airbnb-ink);
  background: var(--kv2-color-surface-alt);
}

:is(body.tax-product_cat, body.tax-product_tag, body.post-type-archive-product) .site-main--commerce nav.woocommerce-pagination ul li .page-numbers.current {
  border-color: var(--kv2-airbnb-ink);
  color: var(--kv2-airbnb-canvas);
  background: var(--kv2-airbnb-ink);
  font-weight: var(--font-weight-bold);
}

/* Preserve WooCommerce/Elementor column calculations; style only the cards. */
.kiddee-v2-has-woocommerce .woocommerce ul.products { align-items: stretch; row-gap: var(--kv2-space-6); padding: 0; }
.kiddee-v2-has-woocommerce .woocommerce ul.products li.product {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  box-sizing: border-box;
  height: 100%;
  margin-block-end: 0;
  border: 0;
  border-radius: 0;
  padding: clamp(var(--kv2-space-4), 1.5vw, var(--kv2-space-5));
  background: transparent;
  box-shadow: none;
}
.kiddee-v2-has-woocommerce .woocommerce ul.products li.product .woocommerce-loop-product__link { display: block; color: inherit; text-decoration: none; }
.kiddee-v2-has-woocommerce .woocommerce ul.products li.product a img { display: block; width: 100%; aspect-ratio: 1; margin: 0 0 var(--kv2-space-5); border: 0; border-radius: 3px; padding: 0; background: transparent; object-fit: cover; }
.kiddee-v2-has-woocommerce .woocommerce ul.products li.product :where(.woocommerce-loop-product__title, .price) { font-family: var(--font-body); }
.kiddee-v2-has-woocommerce .woocommerce ul.products li.product .woocommerce-loop-product__title { min-height: 0; margin: 0 0 var(--kv2-space-3); padding-inline: var(--kv2-space-2); color: var(--kv2-airbnb-ink); font-size: var(--kv2-type-title-md-size); font-weight: var(--kv2-type-title-md-weight); line-height: var(--kv2-type-title-md-line); overflow-wrap: anywhere; text-wrap: pretty; }
.kiddee-v2-has-woocommerce .woocommerce ul.products li.product .price { display: block; margin: 0 0 var(--kv2-space-4); padding-inline: var(--kv2-space-2); color: var(--kv2-color-primary-dark); font-size: var(--kv2-type-body-md-size); font-weight: var(--kv2-type-body-md-weight); line-height: var(--kv2-type-body-md-line); }
.kiddee-v2-has-woocommerce .woocommerce ul.products li.product .button { align-self: flex-start; margin-block-start: auto; margin-inline: var(--kv2-space-2); }
.woocommerce a.button, .woocommerce button.button, .woocommerce input.button, .yith-ywraq-add-to-quote a, .yith_ywraq_add_item_browse_message a { min-height: 44px; border-radius: var(--kv2-radius-md); padding: var(--kv2-space-3) var(--kv2-space-5); transition: color 220ms ease, background-color 220ms ease, border-color 220ms ease, box-shadow 220ms ease, transform 220ms ease; }
:where(html:not([data-kiddee-input="touch"])) .woocommerce a.button:hover,
:where(html:not([data-kiddee-input="touch"])) .woocommerce button.button:hover,
:where(html:not([data-kiddee-input="touch"])) .woocommerce input.button:hover,
:where(html:not([data-kiddee-input="touch"])) .yith-ywraq-add-to-quote a:hover,
:where(html:not([data-kiddee-input="touch"])) .yith_ywraq_add_item_browse_message a:hover{ color: var(--kv2-color-surface); background-color: var(--kv2-color-brand-dark); box-shadow: 0 10px 24px color-mix(in srgb, var(--kv2-color-primary-dark) 20%, transparent); transform: translateY(-2px); }
.woocommerce a.button:active, .woocommerce button.button:active, .woocommerce input.button:active, .yith-ywraq-add-to-quote a:active, .yith_ywraq_add_item_browse_message a:active { box-shadow: 0 4px 10px color-mix(in srgb, var(--kv2-color-primary-dark) 14%, transparent); transform: translateY(0); }
.woocommerce-message, .woocommerce-info, .woocommerce-error { border-radius: var(--kv2-radius-md); background: var(--kv2-color-surface-alt); }
.woocommerce table.shop_table { border-color: var(--kv2-color-border); border-radius: var(--kv2-radius-md); }
.woocommerce div.product { display: flow-root; }
.woocommerce div.product div.images img { width: 100%; border: 0; border-radius: 3px; padding: 0; background: transparent; object-fit: contain; }

/* Category templates may also carry the shared WooCommerce card defaults.
 * Keep their product media and copy flush with the grid at every breakpoint. */
:is(body.tax-product_cat, body.tax-product_tag, body.post-type-archive-product) #page .site-main--commerce ul.products > li.product {
  padding: 0;
}
:is(body.tax-product_cat, body.tax-product_tag, body.post-type-archive-product) #page .site-main--commerce ul.products > li.product a img {
  aspect-ratio: auto;
  object-fit: contain;
}
:is(body.tax-product_cat, body.tax-product_tag, body.post-type-archive-product) #page .site-main--commerce ul.products > li.product :is(.woocommerce-loop-product__title, .price) {
  padding-inline: 0;
}

/* Elementor archive templates use #primary instead of .site-main--commerce.
 * Apply the same grid rhythm and full-width media treatment to those grids too. */
:is(body.tax-product_cat, body.tax-product_tag, body.post-type-archive-product) #page .elementor-products-grid ul.products.elementor-grid {
  column-gap: var(--kv2-product-grid-column-gap);
  row-gap: var(--kv2-product-grid-row-gap);
}
:is(body.tax-product_cat, body.tax-product_tag, body.post-type-archive-product) #page .elementor-products-grid ul.products.elementor-grid > li.product {
  padding: 0;
}
:is(body.tax-product_cat, body.tax-product_tag, body.post-type-archive-product) #page .elementor-products-grid ul.products.elementor-grid > li.product a img {
  width: 100%;
  height: auto;
  aspect-ratio: auto;
  margin-bottom: var(--kv2-product-card-media-gap);
  object-fit: contain;
}
:is(body.tax-product_cat, body.tax-product_tag, body.post-type-archive-product) #page .elementor-products-grid ul.products.elementor-grid > li.product :is(.woocommerce-loop-product__title, .price) {
  padding-inline: 0;
}
