/*
 * BaoStyle Unified Card System.
 * This file is the final card layer for product cards, post cards, term cards,
 * review cards and slider cards. Keep module-specific CSS for layout only.
 */

:root {
  --baostyle-card-bg: var(--baostyle-color-surface, var(--bs-body-bg, #fff));
  --baostyle-card-border: var(--baostyle-color-border, rgba(0, 0, 0, .08));
  --baostyle-card-border-hover: var(--baostyle-color-border-strong, rgba(0, 0, 0, .14));
  --baostyle-card-radius-core: var(--baostyle-card-radius, .75rem);
  --baostyle-card-shadow-core: var(--baostyle-shadow-sm, 0 .25rem .75rem rgba(0, 0, 0, .045));
  --baostyle-card-shadow-hover-core: var(--baostyle-shadow-md, 0 .75rem 1.5rem rgba(0, 0, 0, .08));
  --baostyle-card-gap-core: var(--all-archive-card-gap, 1.5rem);
  --baostyle-card-thumb-bg: var(--bs-tertiary-bg, #f8f9fa);
  --baostyle-card-title-color: var(--baostyle-color-heading, var(--bs-heading-color, #212529));
  --baostyle-card-text-muted: var(--bs-secondary-color, #6c757d);
}

/* Base cards. */
.baostyle-product-card,
.baostyle-post-card,
.baostyle-term-card,
.baostyle-review-card,
.baostyle-unified-card,
.baostyle-icon-box {
  width: 100%;
  min-width: 0;
  border: 1px solid var(--baostyle-card-border) !important;
  border-radius: var(--baostyle-card-radius-core) !important;
  background: var(--baostyle-card-bg) !important;
  box-shadow: var(--baostyle-card-shadow-core);
  overflow: hidden;
  transition: border-color .2s ease, box-shadow .2s ease, transform .2s ease;
}

.baostyle-product-card:hover,
.baostyle-post-card:hover,
.baostyle-term-card:hover,
.baostyle-review-card:hover,
.baostyle-unified-card:hover,
.baostyle-icon-box:hover {
  border-color: var(--baostyle-card-border-hover) !important;
  box-shadow: var(--baostyle-card-shadow-hover-core);
}

.baostyle-product-card,
.baostyle-product-card-grid,
.baostyle-post-card-grid,
.baostyle-term-card,
.baostyle-review-card,
.baostyle-unified-card,
.baostyle-icon-box {
  display: flex !important;
  flex-direction: column !important;
  height: 100% !important;
}

.baostyle-product-card .card-body,
.baostyle-post-card .card-body,
.baostyle-term-card .card-body,
.baostyle-review-card .card-body,
.baostyle-unified-card .card-body,
.baostyle-icon-box .card-body {
  min-width: 0;
  display: flex !important;
  flex-direction: column !important;
  flex: 1 1 auto !important;
}

.baostyle-product-card-actions,
.baostyle-post-card .card-body > .mt-auto,
.baostyle-unified-card .card-body > .mt-auto {
  margin-top: auto !important;
}

.baostyle-product-card a,
.baostyle-post-card a,
.baostyle-term-card a,
.baostyle-review-card a,
.baostyle-unified-card a {
  text-decoration: none;
}

.baostyle-product-card-thumb,
.baostyle-post-card-thumb,
.baostyle-term-card-thumb,
.baostyle-unified-card-thumb {
  background: var(--baostyle-card-thumb-bg);
}

.baostyle-product-card-thumb img,
.baostyle-post-card-thumb img,
.baostyle-term-card-thumb img,
.baostyle-unified-card-thumb img {
  display: block;
  max-width: 100%;
}

.baostyle-product-card .woocommerce-loop-product__title,
.baostyle-product-card-title,
.baostyle-post-card-title,
.baostyle-unified-card-title,
.baostyle-term-card-title,
.baostyle-review-product-title {
  color: var(--baostyle-card-title-color);
  line-height: 1.35;
  word-break: normal;
  overflow-wrap: anywhere;
}

.baostyle-product-card .woocommerce-loop-product__title a,
.baostyle-product-card-title a,
.baostyle-post-card-title a,
.baostyle-unified-card-title a,
.baostyle-term-card-title a,
.baostyle-review-product-title a {
  color: inherit;
}

.baostyle-product-card-price,
.baostyle-product-card .price {
  color: var(--baostyle-card-title-color);
  font-weight: 700;
}

.baostyle-product-card-term-line,
.baostyle-product-card-sku,
.baostyle-product-card-stock,
.baostyle-post-card-excerpt,
.baostyle-post-card-meta-line,
.baostyle-term-card-description {
  color: var(--baostyle-card-text-muted);
}

/* Unified Woo archive product loop. Applies to shop, category, brand, tag and product search. */
.woocommerce ul.products:not(.swiper-wrapper):has(> li.product.baostyle-product-loop-item),
.woocommerce-page ul.products:not(.swiper-wrapper):has(> li.product.baostyle-product-loop-item) {
  margin: 0 !important;
  padding: 0 !important;
  list-style: none !important;
}

@media (min-width: 992px) {
  .woocommerce ul.products.baostyle-products-view-grid:not(.swiper-wrapper):has(> li.product.baostyle-product-loop-item),
  .woocommerce-page ul.products.baostyle-products-view-grid:not(.swiper-wrapper):has(> li.product.baostyle-product-loop-item) {
    display: grid !important;
    gap: var(--baostyle-card-gap-core) !important;
    align-items: stretch !important;
  }

  .woocommerce ul.products.baostyle-products-view-grid.columns-1:not(.swiper-wrapper):has(> li.product.baostyle-product-loop-item),
  .woocommerce-page ul.products.baostyle-products-view-grid.columns-1:not(.swiper-wrapper):has(> li.product.baostyle-product-loop-item) { grid-template-columns: repeat(1, minmax(0, 1fr)) !important; }

  .woocommerce ul.products.baostyle-products-view-grid.columns-2:not(.swiper-wrapper):has(> li.product.baostyle-product-loop-item),
  .woocommerce-page ul.products.baostyle-products-view-grid.columns-2:not(.swiper-wrapper):has(> li.product.baostyle-product-loop-item) { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }

  .woocommerce ul.products.baostyle-products-view-grid.columns-3:not(.swiper-wrapper):has(> li.product.baostyle-product-loop-item),
  .woocommerce-page ul.products.baostyle-products-view-grid.columns-3:not(.swiper-wrapper):has(> li.product.baostyle-product-loop-item) { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; }

  .woocommerce ul.products.baostyle-products-view-grid.columns-4:not(.swiper-wrapper):has(> li.product.baostyle-product-loop-item),
  .woocommerce-page ul.products.baostyle-products-view-grid.columns-4:not(.swiper-wrapper):has(> li.product.baostyle-product-loop-item) { grid-template-columns: repeat(4, minmax(0, 1fr)) !important; }

  .woocommerce ul.products.baostyle-products-view-grid.columns-5:not(.swiper-wrapper):has(> li.product.baostyle-product-loop-item),
  .woocommerce-page ul.products.baostyle-products-view-grid.columns-5:not(.swiper-wrapper):has(> li.product.baostyle-product-loop-item) { grid-template-columns: repeat(5, minmax(0, 1fr)) !important; }

  .woocommerce ul.products.baostyle-products-view-grid.columns-6:not(.swiper-wrapper):has(> li.product.baostyle-product-loop-item),
  .woocommerce-page ul.products.baostyle-products-view-grid.columns-6:not(.swiper-wrapper):has(> li.product.baostyle-product-loop-item) { grid-template-columns: repeat(6, minmax(0, 1fr)) !important; }

  .woocommerce ul.products.baostyle-products-view-grid:not(.swiper-wrapper) > li.product.baostyle-product-loop-item,
  .woocommerce-page ul.products.baostyle-products-view-grid:not(.swiper-wrapper) > li.product.baostyle-product-loop-item {
    width: auto !important;
    max-width: none !important;
    float: none !important;
    clear: none !important;
    margin: 0 !important;
    padding: 0 !important;
    display: flex !important;
    min-width: 0 !important;
    height: 100% !important;
  }

  .woocommerce ul.products.baostyle-products-view-list:not(.swiper-wrapper):has(> li.product.baostyle-product-loop-item),
  .woocommerce-page ul.products.baostyle-products-view-list:not(.swiper-wrapper):has(> li.product.baostyle-product-loop-item) {
    display: flex !important;
    flex-direction: column !important;
    gap: var(--baostyle-card-gap-core) !important;
  }

  .woocommerce ul.products.baostyle-products-view-list:not(.swiper-wrapper) > li.product.baostyle-product-loop-item,
  .woocommerce-page ul.products.baostyle-products-view-list:not(.swiper-wrapper) > li.product.baostyle-product-loop-item {
    width: 100% !important;
    max-width: 100% !important;
    float: none !important;
    clear: both !important;
    margin: 0 !important;
    padding: 0 !important;
    display: block !important;
  }
}

@media (max-width: 991.98px) {
  .woocommerce ul.products:not(.swiper-wrapper):has(> li.product.baostyle-product-loop-item),
  .woocommerce-page ul.products:not(.swiper-wrapper):has(> li.product.baostyle-product-loop-item) {
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: .75rem !important;
  }

  .woocommerce ul.products:not(.swiper-wrapper) > li.product.baostyle-product-loop-item,
  .woocommerce-page ul.products:not(.swiper-wrapper) > li.product.baostyle-product-loop-item {
    width: auto !important;
    max-width: none !important;
    float: none !important;
    clear: none !important;
    margin: 0 !important;
    padding: 0 !important;
    display: flex !important;
    min-width: 0 !important;
    height: 100% !important;
  }
}

/* Product grid/list switcher. */
.baostyle-product-card-switcher,
.baostyle-product-card-variant,
.baostyle-product-card-variant-grid,
.baostyle-product-card-variant-list {
  width: 100%;
  min-width: 0;
}

.woocommerce ul.products.baostyle-products-view-grid .baostyle-product-card-variant-grid,
.woocommerce-page ul.products.baostyle-products-view-grid .baostyle-product-card-variant-grid,
ul.products.baostyle-products-view-grid .baostyle-product-card-variant-grid {
  display: block !important;
}

.woocommerce ul.products.baostyle-products-view-grid .baostyle-product-card-variant-list,
.woocommerce-page ul.products.baostyle-products-view-grid .baostyle-product-card-variant-list,
ul.products.baostyle-products-view-grid .baostyle-product-card-variant-list {
  display: none !important;
}

.woocommerce ul.products.baostyle-products-view-list .baostyle-product-card-variant-grid,
.woocommerce-page ul.products.baostyle-products-view-list .baostyle-product-card-variant-grid,
ul.products.baostyle-products-view-list .baostyle-product-card-variant-grid {
  display: none !important;
}

.woocommerce ul.products.baostyle-products-view-list .baostyle-product-card-variant-list,
.woocommerce-page ul.products.baostyle-products-view-list .baostyle-product-card-variant-list,
ul.products.baostyle-products-view-list .baostyle-product-card-variant-list {
  display: block !important;
}

/* Unified product list card. */
.baostyle-product-card-list .row {
  height: 100%;
}

.baostyle-product-card-list .row > [class*="col-"] {
  min-width: 0;
}

@media (max-width: 991.98px) {
  .baostyle-product-card-list .row > [class*="col-"] {
    width: 100%;
    flex: 0 0 100%;
    max-width: 100%;
  }
}

/* Unified blog archive and post sliders. */
.baostyle-blog-archive-posts-view-grid > article,
.baostyle-blog-archive-posts-view-grid > div,
.baostyle-blog-archive-posts-view-grid > [class*="col-"],
.baostyle-blog-archive-posts.row > [class*="col-"] {
  min-width: 0;
  display: flex;
}

.baostyle-blog-archive-posts-view-grid .baostyle-post-card,
.baostyle-blog-archive-posts.row .baostyle-post-card {
  width: 100%;
  height: 100%;
}

.baostyle-blog-archive-posts-view-list {
  row-gap: var(--baostyle-card-gap-core);
}

.baostyle-blog-archive-posts-view-list .baostyle-post-card-list {
  width: 100%;
  margin-bottom: 0 !important;
}

.baostyle-post-card-list {
  height: 100%;
}

.baostyle-post-card-list .row {
  height: 100%;
}

@media (min-width: 992px) {
  .baostyle-post-card-list .baostyle-post-card-thumb {
    height: 100%;
    min-height: 220px;
  }
}

@media (max-width: 991.98px) {
  .baostyle-post-card-list .baostyle-post-card-thumb {
    aspect-ratio: 4 / 3;
    height: auto;
    min-height: 0;
  }
}

/* Unified slider card behavior for products, posts, terms and reviews. */
.baostyle-slider-track {
  align-items: stretch !important;
}

.baostyle-slider-item {
  min-width: 0;
  display: flex !important;
  height: auto !important;
}

.baostyle-slider-item > .baostyle-product-card,
.baostyle-slider-item > .baostyle-post-card,
.baostyle-slider-item > .baostyle-term-card,
.baostyle-slider-item > .baostyle-review-card,
.baostyle-slider-item > .baostyle-unified-card,
.baostyle-slider-item > .baostyle-product-card-switcher,
.baostyle-slider-item > article,
.baostyle-slider-item > div {
  width: 100%;
  min-width: 0;
}

.baostyle-slider-item .baostyle-product-card-switcher,
.baostyle-slider-item .baostyle-product-card-variant-grid,
.baostyle-slider-item .baostyle-product-card-grid,
.baostyle-slider-item .baostyle-post-card-grid {
  height: 100%;
}

/* Utility line clamp support used by both product and post cards. */
.title-lines-1,
.title-lines-2,
.title-lines-3,
.title-lines-4 {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.title-lines-1 { -webkit-line-clamp: 1; }
.title-lines-2 { -webkit-line-clamp: 2; }
.title-lines-3 { -webkit-line-clamp: 3; }
.title-lines-4 { -webkit-line-clamp: 4; }

/* Archive product card vertical alignment fix.
 * Keep archive, brand, tag, search and shop product buttons aligned like slider cards.
 */
.woocommerce ul.products:not(.swiper-wrapper) > li.product.baostyle-product-loop-item .baostyle-product-card-switcher,
.woocommerce-page ul.products:not(.swiper-wrapper) > li.product.baostyle-product-loop-item .baostyle-product-card-switcher {
  display: flex !important;
  flex-direction: column !important;
  width: 100% !important;
  height: 100% !important;
  min-width: 0 !important;
}

.woocommerce ul.products.baostyle-products-view-grid:not(.swiper-wrapper) > li.product.baostyle-product-loop-item .baostyle-product-card-variant-grid,
.woocommerce-page ul.products.baostyle-products-view-grid:not(.swiper-wrapper) > li.product.baostyle-product-loop-item .baostyle-product-card-variant-grid,
ul.products.baostyle-products-view-grid:not(.swiper-wrapper) > li.product.baostyle-product-loop-item .baostyle-product-card-variant-grid {
  display: flex !important;
  flex-direction: column !important;
  width: 100% !important;
  height: 100% !important;
  min-width: 0 !important;
}

.woocommerce ul.products.baostyle-products-view-grid:not(.swiper-wrapper) > li.product.baostyle-product-loop-item .baostyle-product-card-grid,
.woocommerce-page ul.products.baostyle-products-view-grid:not(.swiper-wrapper) > li.product.baostyle-product-loop-item .baostyle-product-card-grid,
ul.products.baostyle-products-view-grid:not(.swiper-wrapper) > li.product.baostyle-product-loop-item .baostyle-product-card-grid {
  display: flex !important;
  flex-direction: column !important;
  width: 100% !important;
  height: 100% !important;
  min-width: 0 !important;
}

.woocommerce ul.products.baostyle-products-view-grid:not(.swiper-wrapper) > li.product.baostyle-product-loop-item .baostyle-product-card-grid > .card-body,
.woocommerce-page ul.products.baostyle-products-view-grid:not(.swiper-wrapper) > li.product.baostyle-product-loop-item .baostyle-product-card-grid > .card-body,
ul.products.baostyle-products-view-grid:not(.swiper-wrapper) > li.product.baostyle-product-loop-item .baostyle-product-card-grid > .card-body {
  display: flex !important;
  flex-direction: column !important;
  flex: 1 1 auto !important;
  min-height: 0 !important;
}

.woocommerce ul.products.baostyle-products-view-grid:not(.swiper-wrapper) > li.product.baostyle-product-loop-item .baostyle-product-card-actions,
.woocommerce-page ul.products.baostyle-products-view-grid:not(.swiper-wrapper) > li.product.baostyle-product-loop-item .baostyle-product-card-actions,
ul.products.baostyle-products-view-grid:not(.swiper-wrapper) > li.product.baostyle-product-loop-item .baostyle-product-card-actions {
  margin-top: auto !important;
  padding-top: .75rem !important;
}

.woocommerce ul.products.baostyle-products-view-grid:not(.swiper-wrapper) > li.product.baostyle-product-loop-item .baostyle-product-card-actions .button,
.woocommerce-page ul.products.baostyle-products-view-grid:not(.swiper-wrapper) > li.product.baostyle-product-loop-item .baostyle-product-card-actions .button,
ul.products.baostyle-products-view-grid:not(.swiper-wrapper) > li.product.baostyle-product-loop-item .baostyle-product-card-actions .button {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  min-height: 38px !important;
}
