/* Shared component constraints, loaded after visual presets. Responsive rules
 * follow the card's width, including related products and account mini-grids. */
body .product-card {
  position: relative;
  container: bp-product / inline-size;
  display: flex;
  flex-direction: column;
  min-width: 0;
}
body .product-card .product-image { flex: none; }
.boppipaw-tool-notice { position: fixed; z-index: 1100; bottom: 24px; left: 50%; transform: translateX(-50%); width: max-content; max-width: calc(100vw - 32px); padding: 14px 20px; background: #183027; color: #fff; border-radius: 12px; box-shadow: 0 4px 24px #0003; font-size: 14px; }
.boppipaw-tool-notice[hidden] { display: none; }
body .product-card .product-copy { min-width: 0; }
body .product-card .product-copy > span { min-width: 0; gap: 8px; }
body .product-card .product-copy b { min-width: 0; overflow-wrap: anywhere; }
body .product-card .product-copy strong { flex-shrink: 0; }
body .product-card .product-copy .amount { white-space: nowrap; }
body .product-layout > .boppipaw-product-media { min-width: 0; }
body .bp-single-sticky-gallery .boppipaw-product-media { position: sticky; top: 112px; align-self: start; }
body .product-page .woocommerce-tabs { margin-top: 72px; }
body .product-page .woocommerce-tabs ul.tabs { display: flex; flex-wrap: wrap; gap: 8px 20px; margin: 0 0 24px; padding: 0; list-style: none; border-bottom: 1px solid rgb(26 61 26 / .15); }
body .product-page .woocommerce-tabs ul.tabs li { margin: 0; }
body .product-page .woocommerce-tabs ul.tabs a { display: block; padding: 15px 3px; border-bottom: 2px solid transparent; color: var(--green); text-decoration: none; }
body .product-page .woocommerce-tabs ul.tabs .active a { border-bottom-color: var(--orange); font-weight: 700; }
body .product-page .woocommerce-tabs .wc-tab { min-width: 0; }
body .product-page .woocommerce-tabs .wc-tab:focus-visible { outline: 2px solid var(--orange); }
body .product-page .product_meta { display: flex; flex-direction: column; gap: 8px; margin-top: 24px; font-size: 14px; }
body .purchase-row form.grouped_form { display: block; width: 100%; }
body .purchase-row .group_table { width: 100%; margin-bottom: 16px; }
body .purchase-row .group_table td { padding: 8px; }
body .purchase-row .group_table .qty { max-width: 64px; }
body .boppipaw-cart-quantity { width: max-content; max-width: 100%; }
body .boppipaw-cart-quantity > .quantity { border: 0; border-radius: 0; background: transparent; }
body .boppipaw-cart-quantity .qty { width: 48px; min-width: 0; min-height: 44px; padding: 4px; border: 0; background: transparent; color: var(--green); text-align: center; appearance: textfield; }
body .boppipaw-cart-quantity .qty::-webkit-inner-spin-button,
body .boppipaw-cart-quantity .qty::-webkit-outer-spin-button { appearance: none; margin: 0; }
body .boppipaw-cart-quantity > button { width: 44px; height: 44px; flex: 0 0 44px; }
body .cart-list article > div { min-width: 0; }
body .cart-list article h2 { padding-right: 30px; overflow-wrap: anywhere; }
@media (max-width: 767px) {
  body .bp-single-sticky-gallery .boppipaw-product-media { position: static; }
  body .product-page .woocommerce-tabs { margin-top: 40px; }
}
body .product-card .product-card-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 8px;
  margin-top: auto;
  padding: 10px 8px;
}
body .product-card .product-card-actions :is(button, a) {
  position: relative;
  flex: 0 0 44px;
  width: 44px;
  min-width: 44px;
  height: 44px;
  min-height: 44px;
  padding: 0;
}
body .product-card .product-card-secondary-actions { display: contents; }
/* Use WooCommerce's maintained mini-cart template and extension hooks. Style
 * its native selectors instead of replacing product data and payment slots. */
body .boppipaw-mini-cart { flex: 1; width: 100%; min-width: 0; }
body .boppipaw-mini-cart > ul.woocommerce-mini-cart { flex: 1; margin: 0 0 20px; padding: 15px 0; list-style: none; }
body .boppipaw-mini-cart ul.product_list_widget li.woocommerce-mini-cart-item { position: relative; display: block; min-height: 106px; margin: 0 0 12px; padding: 14px 48px 14px 100px; border-radius: 18px; background: var(--mint); overflow-wrap: anywhere; }
body .boppipaw-mini-cart ul.product_list_widget li.woocommerce-mini-cart-item img { position: absolute; top: 14px; left: 14px; float: none; width: 72px; height: 72px; margin: 0; border-radius: 12px; object-fit: cover; }
body .boppipaw-mini-cart .woocommerce-mini-cart-item > a:not(.remove) { display: block; font-size: 14px; font-weight: 650; line-height: 1.5; color: var(--green); }
body .boppipaw-mini-cart .woocommerce-mini-cart-item .quantity { display: block; width: auto; min-width: 0; height: auto; margin-top: 8px; padding: 0; border: 0; border-radius: 0; background: transparent; font-size: 13px; line-height: 1.5; }
body .boppipaw-mini-cart .woocommerce-mini-cart-item dl.variation { float: none; display: block; margin: 8px 0 0; padding: 0; border: 0; font-size: 12px; line-height: 1.5; }
body .boppipaw-mini-cart .woocommerce-mini-cart-item dl.variation :is(dt, dd) { float: none; display: inline; margin: 0 4px 0 0; padding: 0; }
body .boppipaw-mini-cart .woocommerce-mini-cart-item dl.variation dd::after { content: ''; display: block; }
body .boppipaw-mini-cart .woocommerce-mini-cart-item dl.variation p { display: inline; margin: 0; font-size: inherit; line-height: inherit; }
body .boppipaw-mini-cart .woocommerce-mini-cart-item a.remove { position: absolute; top: 2px; right: 2px; display: flex; align-items: center; justify-content: center; width: 44px; height: 44px; margin: 0; border: 0; border-radius: 50%; background: transparent; color: var(--green) !important; font-size: 24px; font-weight: 400; }
body .boppipaw-mini-cart .woocommerce-mini-cart-item a.remove:hover { background: rgb(0 0 0 / .06); }
body .boppipaw-mini-cart > .woocommerce-mini-cart__total { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 8px; margin: auto 0 16px; padding-top: 20px; border-top: 1px solid rgb(26 61 26 / .12); font-size: 16px; }
body .boppipaw-mini-cart > .woocommerce-mini-cart__buttons { display: flex; flex-direction: column; gap: 10px; margin: 0; }
body .boppipaw-mini-cart .woocommerce-mini-cart__buttons a.button.wc-forward { display: flex; align-items: center; justify-content: center; min-height: 44px; margin: 0; padding: 12px 16px; border: 1px solid var(--green); border-radius: 28px; background: transparent; color: var(--green); font-size: 14px; line-height: 1.4; text-align: center; }
body .boppipaw-mini-cart .woocommerce-mini-cart__buttons a.button.wc-forward { text-decoration: none; }
body .boppipaw-mini-cart .woocommerce-mini-cart__buttons a.button.checkout.wc-forward { background: var(--bp-button-bg, var(--green)); color: var(--bp-button-text, #fff); }
body .boppipaw-mini-cart .woocommerce-mini-cart-item a.remove { text-decoration: none; }
body .boppipaw-mini-cart .woocommerce-mini-cart__empty-message { margin: 36px 0; font-size: 16px; text-align: center; }
body .boppipaw-mini-cart a:focus-visible { outline: 3px solid var(--orange); outline-offset: 2px; }
/* WooCommerce appends a View cart link after AJAX success. Cards already have
 * a global cart entry: do not turn this duplicate into a fifth action or let it
 * grow a second row. Keep native links outside our card toolbar untouched. */
body .product-card .product-card-actions > a.added_to_cart.wc-forward { display: none; }
body .product-card .product-card-cart > .bi-check-lg { display: none; }
body .product-card .product-card-cart.added:not(.loading) > .bi-bag-plus { display: none; }
body .product-card .product-card-cart.added:not(.loading) > .bi-check-lg { display: inline-block; }
body .product-card .product-card-actions .product-card-more { display: none; }
body .product-card .product-card-actions > :focus-visible,
body .product-card .image-link:focus-visible,
body .product-card .product-copy:focus-visible { outline: 3px solid var(--orange); outline-offset: -3px; }
@container bp-product (max-width: 240px) {
  body .product-card .product-image { aspect-ratio: 1; border-radius: 16px 16px 0 0; }
  body .product-card .product-copy {
    position: static;
    display: block;
    margin: 0;
    padding: 12px;
    border-radius: 0;
    background: transparent;
    color: var(--green);
    opacity: 1;
    transform: none;
  }
  body .product-card .product-copy > span { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; }
  body .product-card .product-copy b { font-size: 14px; line-height: 1.4; }
  body .product-card .product-copy strong { max-width: 100%; font-size: 14px; line-height: 1.5; white-space: normal; }
  body .product-card .product-copy strong del { margin-inline-end: 4px; }
  body .product-card .product-copy small { display: block; margin-top: 8px; color: inherit; opacity: .75; font-size: 10px; line-height: 1.5; overflow-wrap: anywhere; }
  body .product-card .product-card-actions { position: static; display: block; border-top: 0; padding: 0 12px 12px; background: transparent; }
  body .product-card .product-card-actions .product-card-cart { width: 100%; min-width: 0; height: auto; min-height: 44px; padding: 10px 6px; border-radius: 999px; gap: 6px; }
  body .product-card .product-card-actions .product-card-cart > i { display: none; }
  body .product-card .product-card-actions .product-card-cart > span,
  body .product-card .product-card-secondary-actions button > span { position: static; display: block; width: auto; height: auto; margin: 0; overflow: visible; clip: auto; clip-path: none; white-space: normal; font-size: 12px; font-weight: 650; line-height: 1.4; }
  body .product-card .product-card-actions > [data-favorite],
  body .product-card .product-card-actions .product-card-more { position: absolute; z-index: 7; top: 6px; right: 6px; display: flex; width: 44px; height: 44px; min-width: 44px; border: 0; border-radius: 50%; background: rgb(255 255 255 / .96); color: var(--green); box-shadow: 0 2px 8px rgb(0 0 0 / .08); }
  body .product-card .product-card-actions > [data-favorite].active { background: var(--orange); color: #fff; }
  body .product-card .product-card-actions [data-favorite] ~ .product-card-more { top: 54px; }
  body .product-card .product-card-secondary-actions { display: none; position: absolute; z-index: 8; right: 6px; top: 102px; width: calc(100% - 12px); padding: 4px; border: 1px solid rgb(26 61 26 / .12); border-radius: 12px; background: #fff; box-shadow: 0 5px 16px rgb(0 0 0 / .15); }
  body .product-card .product-card-more[aria-expanded="true"] + .product-card-secondary-actions { display: flex; flex-direction: column; gap: 2px; }
  body .product-card .product-card-secondary-actions button { width: 100%; min-width: 0; min-height: 44px; height: auto; flex: none; justify-content: flex-start; gap: 8px; padding: 8px; border: 0; border-radius: 8px; }
  body .product-card .product-card-secondary-actions button > i { flex: none; }
  body .product-card .product-badge { top: 8px; left: 8px; max-width: calc(100% - 16px); padding: 5px 8px; font-size: 9px; }
}
/* The Dog Outdoor wordmark is designed for a dark surface, not the generic
 * mint logo tile used by the original preset. */
body.boppipaw-preset-dog-field .site-footer .footer-logo { background: transparent; border: 0; border-radius: 0; padding: 0; }
.site-main > .woocommerce-breadcrumb { margin: 24px auto 0; width: min(calc(100% - 32px), 1320px); color: var(--muted, #65716a); font-size: 12px; line-height: 1.6; overflow-wrap: anywhere; }
.site-main > .woocommerce-breadcrumb a { color: inherit; }
/* Hover-only information must also be available to keyboard/touch users. */
body .product-card:focus-within .product-copy { opacity: 1; transform: none; }
@media (hover: none) {
  body :is(.boppipaw-card-info-hover, .boppipaw-card-summary-hover) .product-copy,
  body:is(.boppipaw-card-info-hover, .boppipaw-card-summary-hover) .product-copy { position: static; opacity: 1; transform: none; }
}
/* WooCommerce renders nested notices and table fragments; do not inherit the
 * old summary's generic flex treatment for every descendant div. */
body .cart-layout > .woocommerce-cart-form { min-width: 0; margin: 0; }
body .order-summary > .cart_totals { display: block; float: none; width: 100%; padding: 0; border: 0; }
body .order-summary .cart_totals table { width: 100%; border: 0; border-collapse: collapse; table-layout: fixed; }
body .order-summary .cart_totals th,
body .order-summary .cart_totals td { padding: 14px 0; border-top: 1px solid rgb(26 61 26 / .12); font-size: 14px; vertical-align: top; overflow-wrap: anywhere; }
body .order-summary .cart_totals th { width: 46%; text-align: start; }
body .order-summary .cart_totals td { text-align: end; }
body .order-summary .cart_totals .amount { white-space: nowrap; }
body .order-summary .wc-proceed-to-checkout .checkout-button { display: block; width: 100%; min-height: 44px; margin: 16px 0 0; padding: 14px; border-radius: 28px; text-align: center; background: var(--bp-button-bg, #1a3d1a); color: var(--bp-button-text, #fff); }
body .cart-actions .coupon { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
body .cart-actions .coupon input { flex: 1 1 160px; min-width: 0; }
body .cart-actions .coupon .coupon-error-notice { flex-basis: 100%; }
body .boppipaw-order-details { padding-top: 0; }
/* WooCommerce 9.5+ uses a row-header th for the order number, while its
 * small-screen table rule still hides all tbody th. Keep the real accessible
 * table markup and restore this specific row header rather than cloning it. */
/* A display name can be an unbroken email address. Wrap it without clipping
   the greeting or hiding horizontal overflow for the rest of the page. */
body.woocommerce-account .page-hero h1 { overflow-wrap: anywhere; }
/* WooCommerce's empty-cart product grid assumes a padded outer wrapper.
   Theme full-width pages have none; its -8px margins otherwise widen the page. */
body.woocommerce-cart .wc-block-grid__products { margin-inline: 0; }
body.woocommerce-account .woocommerce-MyAccount-content .woocommerce-orders-table { font-size: 14px; }
body.woocommerce-account .woocommerce-MyAccount-content .woocommerce-orders-table .button { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; margin: 4px; padding: 10px 14px; border-radius: 24px; background: var(--bp-button-bg, #1a3d1a); color: var(--bp-button-text, #fff); line-height: 1.4; }
body.woocommerce-account .woocommerce-MyAccount-content :is(.woocommerce-info, .woocommerce-message, .woocommerce-error) { width: 100%; }
@media (max-width: 768px) {
  body.woocommerce-account .woocommerce-MyAccount-content table.woocommerce-orders-table tbody th[scope="row"] { display: flex; justify-content: space-between; align-items: center; gap: 12px; text-align: end; }
  body.woocommerce-account .woocommerce-MyAccount-content table.woocommerce-orders-table tbody th[scope="row"]::before { content: attr(data-title); font-weight: 600; text-align: start; }
  body.woocommerce-account .woocommerce-MyAccount-content table.woocommerce-orders-table tbody th[scope="row"] a { display: inline-flex; min-height: 44px; align-items: center; }
  body.woocommerce-account .woocommerce-MyAccount-content table.woocommerce-orders-table :is(th, td) { padding: 12px; overflow-wrap: anywhere; }
}
body .order-summary .woocommerce-checkout-review-order-table { width: 100%; border-collapse: collapse; table-layout: fixed; margin: 16px 0; }
body .order-summary .woocommerce-checkout-review-order-table th,
body .order-summary .woocommerce-checkout-review-order-table td { padding: 12px 6px; border-bottom: 1px solid rgb(26 61 26 / .12); vertical-align: top; overflow-wrap: anywhere; font-size: 14px; }
body .order-summary .woocommerce-checkout-review-order-table th:first-child { width: 60%; }
body .order-summary .woocommerce-checkout-review-order-table td:last-child { text-align: end; }
body .order-summary .woocommerce-checkout-review-order-table .amount { white-space: nowrap; }
body .order-summary > .woocommerce-checkout-payment { display: block; width: auto; min-width: 0; }
body .order-summary .woocommerce-info { padding: 16px 16px 16px 42px; font-size: 14px; line-height: 1.6; }
body .order-summary .woocommerce-info::before { left: 16px; }
body .order-summary .payment_box { padding: 16px; }
body .order-summary .place-order { padding: 16px 0 0; }
body .bp-dog-header-account .brand-count { position: static; flex: none; transform: none; margin-inline-start: 4px; }
@media (max-width: 575px) {
  body .bp-dog-header-account { gap: 2px; }
  body .bp-dog-header-account a,
  body .bp-dog-header-account .bp-cart-button { position: relative; justify-content: center; width: 44px; height: 44px; padding: 0; }
  body .bp-dog-header-account a .brand-count,
  body .bp-dog-header-account .bp-cart-button .brand-count { display: grid; position: absolute; top: 0; right: 0; width: 18px; min-width: 18px; height: 18px; margin: 0; border: 0; border-radius: 50%; transform: none; place-items: center; font-size: 10px; }
}
