/**
 * WooCommerce — capa base harmonitzada amb tokens Bressol (`app.css`).
 * No alterar `li.product`, `post-{id}` ni wrappers de contracte plugin.
 */

.bressol-theme-main--woocommerce .woocommerce {
    width: 100%;
    font-family: var(--bressol-font-body);
    color: var(--bressol-color-text);
}

/* Capçalera d’arxiu (títol + descripció via hooks) */
.woocommerce-products-header {
    margin-bottom: var(--bressol-rhythm-section);
}

/* Regió loop + controls (després de `woocommerce_shop_loop_header`; vegeu `wc-archive-hooks.php`) */
.bressol-theme-plp__main {
    /* El flux ve del header; sense salt extra a la botiga genèrica. */
    margin-top: 0;
}

/* `product_cat`: separació més clara capçalera (títol + editorial top) ↔ controls/grid */
.tax-product_cat .woocommerce-products-header {
    margin-bottom: calc(var(--bressol-rhythm-section) + var(--bressol-space-sm));
}

/* Slot editorial `product_cat` (wrapper del tema; no s’estila el HTML intern del plugin) */
.bressol-theme-plp-slot--top {
    margin-bottom: var(--bressol-rhythm-title);
}

.tax-product_cat .bressol-theme-plp-slot--top {
    margin-top: var(--bressol-space-sm);
    margin-bottom: calc(var(--bressol-rhythm-section) + var(--bressol-space-sm));
}

/* PR2 — cap comercial `product_cat` (hero + strip; imatge = thumbnail natiu Woo) */
.tax-product_cat .bressol-plp-commercial-stack {
    margin-bottom: var(--bressol-rhythm-section);
}

.tax-product_cat .bressol-plp-hero__inner {
    max-width: var(--bressol-max-width);
    margin-inline: auto;
    padding-inline: var(--bressol-shell-inline);
}

.tax-product_cat .bressol-plp-hero__grid {
    display: grid;
    gap: var(--bressol-space-lg);
    align-items: start;
}

@media (min-width: 48rem) {
    .tax-product_cat .bressol-plp-hero__grid--has-media {
        grid-template-columns: minmax(0, 1.1fr) minmax(0, 0.9fr);
        gap: var(--bressol-space-xl);
        align-items: center;
    }
}

.tax-product_cat .bressol-plp-hero__title {
    margin: 0 0 var(--bressol-space-sm);
    font-family: var(--bressol-font-heading);
    font-size: clamp(1.5rem, 3.2vw, 2rem);
    font-weight: 700;
    line-height: 1.15;
    letter-spacing: 0.03em;
    color: var(--bressol-color-text);
}

.tax-product_cat .bressol-plp-hero__sub {
    margin: 0 0 var(--bressol-space-md);
    font-size: 1.0625rem;
    font-weight: 600;
    line-height: 1.45;
    color: var(--bressol-color-text);
}

.tax-product_cat .bressol-plp-hero__intro,
.tax-product_cat .bressol-plp-hero__intro p {
    margin: 0;
    font-size: 0.9375rem;
    line-height: 1.6;
    color: var(--bressol-color-muted);
    max-width: 40rem;
}

.tax-product_cat .bressol-plp-hero__intro p + p {
    margin-top: var(--bressol-space-sm);
}

.tax-product_cat .bressol-plp-hero__media {
    margin: 0;
}

.tax-product_cat .bressol-plp-hero__figure {
    margin: 0;
    border-radius: var(--bressol-radius);
    overflow: hidden;
    border: 1px solid var(--bressol-color-border);
    background: var(--bressol-color-surface);
}

.tax-product_cat .bressol-plp-hero__img {
    display: block;
    width: 100%;
    height: auto;
    vertical-align: middle;
}

.tax-product_cat .bressol-plp-commercial-strip {
    margin-bottom: var(--bressol-rhythm-title);
}

.tax-product_cat .bressol-plp-commercial-strip__inner {
    max-width: var(--bressol-max-width);
    margin-inline: auto;
    padding-inline: var(--bressol-shell-inline);
    display: grid;
    gap: var(--bressol-space-xl);
}

@media (min-width: 52rem) {
    .tax-product_cat .bressol-plp-commercial-strip__inner {
        grid-template-columns: repeat(3, minmax(0, 1fr));
        align-items: start;
    }
}

.tax-product_cat .bressol-plp-highlights__title,
.tax-product_cat .bressol-plp-moments__title,
.tax-product_cat .bressol-plp-subcats__title {
    margin: 0 0 var(--bressol-space-sm);
    font-family: var(--bressol-font-heading);
    font-size: 0.8125rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--bressol-color-muted);
}

.tax-product_cat .bressol-plp-highlights__list {
    margin: 0;
    padding-left: 1.1rem;
    font-size: 0.9375rem;
    line-height: 1.5;
    color: var(--bressol-color-text);
}

.tax-product_cat .bressol-plp-highlights__item + .bressol-plp-highlights__item {
    margin-top: var(--bressol-space-xs);
}

.tax-product_cat .bressol-plp-moments__list,
.tax-product_cat .bressol-plp-subcats__list {
    margin: 0;
    padding: 0;
    list-style: none;
    display: flex;
    flex-wrap: wrap;
    gap: var(--bressol-space-sm);
}

.tax-product_cat .bressol-plp-moments__link,
.tax-product_cat .bressol-plp-subcats__link {
    display: inline-flex;
    align-items: center;
    padding: 0.35rem 0.75rem;
    font-size: 0.8125rem;
    font-weight: 600;
    text-decoration: none;
    color: var(--bressol-color-text);
    background: var(--bressol-color-surface);
    border: 1px solid var(--bressol-color-border);
    border-radius: 999px;
    transition: var(--bressol-transition);
}

.tax-product_cat .bressol-plp-moments__link:hover,
.tax-product_cat .bressol-plp-subcats__link:hover {
    border-color: var(--bressol-color-accent);
    color: var(--bressol-color-text);
}

.tax-product_cat .bressol-plp-moments__link:focus-visible,
.tax-product_cat .bressol-plp-subcats__link:focus-visible {
    outline: 2px solid var(--bressol-focus-ring);
    outline-offset: 2px;
}

.bressol-theme-plp-slot--bottom {
    margin-top: var(--bressol-rhythm-section);
    margin-bottom: var(--bressol-rhythm-title);
}

.tax-product_cat .bressol-theme-plp-slot--bottom {
    margin-top: calc(var(--bressol-rhythm-section) + var(--bressol-space-sm));
}

/* Aire entre toolbar de botiga i graella dins la regió PLP */
.bressol-theme-plp__main ul.products {
    margin-top: var(--bressol-space-md, 1rem);
}

.woocommerce-products-header__title {
    margin-block-start: 0;
    margin-block-end: var(--bressol-rhythm-title);
    font-family: var(--bressol-font-heading);
    font-size: clamp(1.5rem, 3vw, 1.75rem);
    font-weight: 600;
    letter-spacing: 0.03em;
}

.term-description,
.woocommerce-products-header .term-description {
    color: var(--bressol-color-muted);
    font-size: 0.9375rem;
    max-width: 50rem;
}

/* Botiga arrel `/shop/` — banda editorial (només `is_shop()`; veure `bressol_theme_shop_root_editorial_band`) */
.bressol-shop-root-band {
    margin-bottom: var(--bressol-rhythm-section);
    padding: var(--bressol-space-lg);
    background-color: var(--bressol-color-surface);
    border: 1px solid var(--bressol-color-border);
    border-radius: var(--bressol-radius);
}

@media (min-width: 48rem) {
    .bressol-shop-root-band {
        padding: var(--bressol-space-xl);
    }
}

.bressol-shop-root-band__title {
    margin: 0 0 var(--bressol-space-sm);
    font-family: var(--bressol-font-heading);
    font-weight: 700;
    font-size: clamp(1.5rem, 3.2vw, 1.875rem);
    line-height: 1.2;
    letter-spacing: 0.03em;
    color: var(--bressol-color-text);
}

.bressol-shop-root-band__lead {
    margin: 0 0 var(--bressol-space-lg);
    max-width: 42rem;
    font-size: 0.9375rem;
    line-height: 1.55;
    color: var(--bressol-color-muted);
}

.bressol-shop-root-band__ctas {
    display: flex;
    flex-wrap: wrap;
    gap: var(--bressol-space-sm) var(--bressol-space);
}

.bressol-shop-root-band__cta {
    display: inline-flex;
    align-items: center;
    font-weight: 600;
    font-size: 0.875rem;
    text-decoration: none;
    color: var(--bressol-color-text);
    border-bottom: 1px solid var(--bressol-color-accent);
    padding-bottom: 0.12em;
    transition: var(--bressol-transition);
}

.bressol-shop-root-band__cta:hover {
    color: var(--bressol-color-accent);
}

.bressol-shop-root-band__cta:focus-visible {
    outline: 2px solid var(--bressol-focus-ring);
    outline-offset: 3px;
    border-radius: var(--bressol-radius-sm);
}

.bressol-shop-root-band__subnav {
    margin-top: var(--bressol-space-lg);
    padding-top: var(--bressol-space-lg);
    border-top: 1px solid var(--bressol-color-border);
}

.bressol-shop-root-band__subnav-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    gap: var(--bressol-space-xs) var(--bressol-space-lg);
}

.bressol-shop-root-band__subnav-link {
    font-weight: 600;
    font-size: 0.8125rem;
    text-decoration: none;
    color: var(--bressol-color-muted);
    border-bottom: 1px solid transparent;
    padding-bottom: 0.08em;
    transition: var(--bressol-transition);
}

.bressol-shop-root-band__subnav-link:hover {
    color: var(--bressol-color-text);
    border-bottom-color: rgba(188, 175, 74, 0.45);
}

.bressol-shop-root-band__subnav-link:focus-visible {
    outline: 2px solid var(--bressol-focus-ring);
    outline-offset: 2px;
    border-radius: var(--bressol-radius-sm);
}

/* Botiga arrel — filtres família + moment (GET, sense AJAX) */
.bressol-shop-filters {
    margin-bottom: var(--bressol-rhythm-section);
    padding: var(--bressol-space-md) var(--bressol-space-lg);
    background-color: var(--bressol-color-surface);
    border: 1px solid var(--bressol-color-border);
    border-radius: var(--bressol-radius);
}

/* Dins la banda editorial: mateixa targeta, separador suau (no doble caixa) */
.bressol-shop-root-band .bressol-shop-filters {
    margin-bottom: 0;
    margin-top: var(--bressol-space-lg);
    padding: var(--bressol-space-lg) 0 0;
    background: transparent;
    border: none;
    border-radius: 0;
    border-top: 1px solid var(--bressol-color-border);
}

@media (min-width: 48rem) {
    .bressol-shop-filters {
        padding: var(--bressol-space-lg) var(--bressol-space-xl);
    }

    .bressol-shop-root-band .bressol-shop-filters {
        padding-left: 0;
        padding-right: 0;
        padding-top: var(--bressol-space-xl);
    }
}

.bressol-shop-filters__grid {
    display: grid;
    gap: var(--bressol-space-md) var(--bressol-space-xl);
    grid-template-columns: 1fr;
}

@media (min-width: 52rem) {
    .bressol-shop-filters__grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
        align-items: end;
    }
}

.bressol-shop-filters__field {
    min-width: 0;
}

.bressol-shop-filters__field--search {
    grid-column: 1 / -1;
}

.bressol-shop-filters__search {
    display: block;
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
    padding: 0.55rem 0.75rem;
    font-family: var(--bressol-font-body);
    font-size: 0.9375rem;
    font-weight: 500;
    color: var(--bressol-color-text);
    background-color: var(--bressol-color-bg, #fff);
    border: 1px solid var(--bressol-color-border);
    border-radius: var(--bressol-radius-sm, 4px);
    transition: var(--bressol-transition);
}

.bressol-shop-filters__search:focus-visible {
    outline: 2px solid var(--bressol-focus-ring);
    outline-offset: 2px;
}

.bressol-shop-filters__field--sub-idle .bressol-shop-filters__hint {
    opacity: 0.72;
}

.bressol-shop-filters__label {
    display: block;
    margin: 0 0 0.2rem;
    font-family: var(--bressol-font-heading);
    font-weight: 700;
    font-size: 0.8125rem;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--bressol-color-text);
}

.bressol-shop-filters__hint {
    margin: 0 0 var(--bressol-space-sm);
    font-size: 0.8125rem;
    line-height: 1.4;
    color: var(--bressol-color-muted);
}

.bressol-shop-filters__select {
    display: block;
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
    padding: 0.55rem 0.75rem;
    font-family: var(--bressol-font-body);
    font-size: 0.9375rem;
    font-weight: 500;
    color: var(--bressol-color-text);
    background-color: var(--bressol-color-bg, #fff);
    border: 1px solid var(--bressol-color-border);
    border-radius: var(--bressol-radius-sm, 4px);
    transition: var(--bressol-transition);
}

.bressol-shop-filters__select:focus-visible {
    outline: 2px solid var(--bressol-focus-ring);
    outline-offset: 2px;
}

.bressol-shop-filters__select:disabled {
    opacity: 0.55;
    cursor: not-allowed;
}

.bressol-shop-filters__actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--bressol-space-sm) var(--bressol-space-lg);
    margin-top: var(--bressol-space-lg);
    padding-top: var(--bressol-space-md);
    border-top: 1px solid var(--bressol-color-border);
}

.bressol-shop-filters__submit {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 2.5rem;
    padding: 0.5rem 1.25rem;
    font-family: var(--bressol-font-body);
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--bressol-color-bg, #fff);
    background-color: var(--bressol-color-text);
    border: 1px solid var(--bressol-color-text);
    border-radius: var(--bressol-radius-sm, 4px);
    cursor: pointer;
    transition: var(--bressol-transition);
}

.bressol-shop-filters__submit:hover {
    background-color: var(--bressol-color-accent);
    border-color: var(--bressol-color-accent);
    color: var(--bressol-color-text);
}

.bressol-shop-filters__submit:focus-visible {
    outline: 2px solid var(--bressol-focus-ring);
    outline-offset: 3px;
}

.bressol-shop-filters__clear {
    font-size: 0.875rem;
    font-weight: 600;
    text-decoration: none;
    color: var(--bressol-color-muted);
    border-bottom: 1px solid transparent;
    transition: var(--bressol-transition);
}

.bressol-shop-filters__clear:hover {
    color: var(--bressol-color-text);
    border-bottom-color: rgba(188, 175, 74, 0.45);
}

.bressol-shop-filters__clear:focus-visible {
    outline: 2px solid var(--bressol-focus-ring);
    outline-offset: 2px;
    border-radius: var(--bressol-radius-sm);
}

.bressol-shop-filters__count {
    margin: var(--bressol-space-md) 0 0;
    font-size: 0.875rem;
    color: var(--bressol-color-muted);
}

.bressol-shop-filters__count-value {
    font-weight: 700;
    color: var(--bressol-color-text);
}

/* Breadcrumb */
.woocommerce .woocommerce-breadcrumb {
    font-size: 0.875rem;
    font-weight: 500;
    color: var(--bressol-color-muted);
    margin-bottom: var(--bressol-rhythm-title);
}

.woocommerce .woocommerce-breadcrumb a {
    color: inherit;
}

.woocommerce .woocommerce-breadcrumb a:hover {
    color: var(--bressol-color-accent);
}

/* Notificacions i toolbar de botiga */
.woocommerce-notices-wrapper:empty {
    display: none;
}

.woocommerce-result-count,
.woocommerce-ordering {
    margin-bottom: var(--bressol-space, 1rem);
}

.bressol-plp-toolbar .woocommerce-result-count,
.bressol-plp-toolbar .woocommerce-ordering {
    margin-bottom: 0;
}

/**
 * PLP fase 1 — barra resultats + sortering (`bressol_theme_plp_toolbar_*`, `woocommerce.php`).
 */
.bressol-plp-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: var(--bressol-space-md);
    padding: var(--bressol-space-sm) var(--bressol-space-md);
    margin-bottom: var(--bressol-space-lg);
    background-color: var(--bressol-color-surface);
    border: 1px solid var(--bressol-color-border);
    border-radius: var(--bressol-radius);
}

.bressol-plp-toolbar .woocommerce-result-count {
    margin: 0;
    font-size: 0.875rem;
    font-weight: 500;
    color: var(--bressol-color-muted);
}

.bressol-plp-toolbar .woocommerce-ordering {
    margin: 0;
}

.bressol-plp-toolbar .woocommerce-ordering select {
    font-family: var(--bressol-font-body);
    font-size: 0.875rem;
    font-weight: 500;
    padding: 0.5rem 2rem 0.5rem 0.65rem;
    color: var(--bressol-color-text);
    background-color: var(--bressol-color-bg);
    border: 1px solid var(--bressol-color-border);
    border-radius: var(--bressol-radius-sm);
    cursor: pointer;
    transition: var(--bressol-transition);
}

.bressol-plp-toolbar .woocommerce-ordering select:focus-visible {
    outline: 2px solid var(--bressol-focus-ring);
    outline-offset: 2px;
}

/* -------------------------------------------------------------------------
 * PLP fase 1 — graella de productes (cards; sense alterar `li.product` / `post-*`)
 * Columnes explícites per breakpoint: evita auto-fill massa estret + reset width % de Woo layout.
 *
 * Woo `woocommerce-layout` aplica un clearfix a `ul.products` (`::before`/`::after`, display:table).
 * Amb `display:grid` al mateix `ul`, aquests pseudoelements passen a ser ítems de graella i ocupen
 * cel·les (símptoma típic: primera columna buida, última fila estranya). Es neutralitzen ací.
 * ------------------------------------------------------------------------- */
.woocommerce ul.products::before,
.woocommerce ul.products::after,
body.woocommerce ul.products::before,
body.woocommerce ul.products::after,
body.woocommerce-page ul.products::before,
body.woocommerce-page ul.products::after {
    content: none !important;
    display: none !important;
}

.woocommerce ul.products li.product.first,
body.woocommerce ul.products li.product.first,
body.woocommerce-page ul.products li.product.first {
    clear: none !important;
}

/*
 * PR-FIX-PLP-LAYOUT — Hardening del grid del loop Woo davant CSS legacy
 *
 * `woocommerce-layout.css` aplica `float:left; width:22.05%` al `li.product` amb
 * especificitat (0,2,2) — la mateixa que la nostra. En empat guanya el que carrega
 * després; a producció (caché/optimitzadors/CDN) sovint guanya Woo i les cards
 * surten estretes amb buit horitzontal. Reforcem amb `body.woocommerce` (0,3,3)
 * + `!important` només sobre les 4 propietats de layout (float/width/max-width/margin).
 * Cap canvi cromàtic ni tipogràfic; PDP related queda dins del mateix selector
 * (Woo native), no es trenca. Cart/checkout no usen `ul.products`.
 */
body.woocommerce ul.products,
body.woocommerce-page ul.products,
.woocommerce ul.products {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr);
    gap: var(--bressol-space-lg);
    list-style: none;
    margin: 0 0 var(--bressol-space-xl);
    padding: 0;
    width: 100%;
    justify-content: stretch;
}

/* Cobreix `.products.columns-1..6` que Woo injecta a `<ul>` segons setting */
body.woocommerce ul.products.columns-1,
body.woocommerce ul.products.columns-2,
body.woocommerce ul.products.columns-3,
body.woocommerce ul.products.columns-4,
body.woocommerce ul.products.columns-5,
body.woocommerce ul.products.columns-6,
body.woocommerce-page ul.products.columns-1,
body.woocommerce-page ul.products.columns-2,
body.woocommerce-page ul.products.columns-3,
body.woocommerce-page ul.products.columns-4,
body.woocommerce-page ul.products.columns-5,
body.woocommerce-page ul.products.columns-6 {
    display: grid !important;
}

/* Tablet: 2 columnes (alineat amb ~768px) */
@media (min-width: 48rem) {
    body.woocommerce ul.products,
    body.woocommerce-page ul.products,
    .woocommerce ul.products {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

/* Desktop mitjà: 3 columnes (~992px) */
@media (min-width: 62rem) {
    body.woocommerce ul.products,
    body.woocommerce-page ul.products,
    .woocommerce ul.products {
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: var(--bressol-space-xl);
    }
}

/* Desktop gran: 4 columnes */
@media (min-width: 75rem) {
    body.woocommerce ul.products,
    body.woocommerce-page ul.products,
    .woocommerce ul.products {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

body.woocommerce ul.products li.product,
body.woocommerce-page ul.products li.product,
.woocommerce ul.products li.product {
    display: flex;
    flex-direction: column;
    float: none !important;
    width: auto !important;
    max-width: none !important;
    min-width: 0;
    margin: 0 !important;
    min-height: 100%;
    position: relative;
    background-color: var(--bressol-color-surface);
    border: 1px solid var(--bressol-color-border);
    border-radius: var(--bressol-radius);
    /* visible: el popover d’info no ha de quedar retallat; la imatge ja és rectangular dins la card */
    overflow: visible;
    transition: var(--bressol-transition);
}

.woocommerce ul.products li.product a.woocommerce-loop-product__link {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;
    text-decoration: none;
    color: inherit;
    position: relative;
}

/*
 * PR-VISUAL-02 — PLP product image: contain + fixed square zone (doc 43, PDP gallery parity).
 * No crop: packaging stays legible; whitespace is intentional editorial calm (not marketplace cover).
 */
.woocommerce ul.products li.product a.woocommerce-loop-product__link > img {
    box-sizing: border-box;
    width: 100%;
    aspect-ratio: var(--bressol-plp-image-aspect, 1 / 1);
    height: auto;
    flex-shrink: 0;
    object-fit: contain;
    object-position: center;
    display: block;
    margin: 0;
    padding: var(--bressol-plp-image-padding, clamp(0.75rem, 9%, 2.25rem));
    background-color: var(--bressol-plp-image-bg, var(--bressol-color-bg));
    border-bottom: 1px solid var(--bressol-color-border);
    border-radius: calc(var(--bressol-radius) - 1px) calc(var(--bressol-radius) - 1px) 0 0;
}

.woocommerce ul.products li.product a.woocommerce-loop-product__link > img.woocommerce-placeholder,
.woocommerce ul.products li.product img.woocommerce-placeholder {
    object-fit: contain;
    object-position: center;
    padding: var(--bressol-plp-image-padding, clamp(0.75rem, 9%, 2.25rem));
    opacity: 0.85;
}

/* Oferta: badge discret sobre la imatge */
.woocommerce ul.products li.product span.onsale {
    position: absolute;
    top: var(--bressol-space-sm);
    left: var(--bressol-space-sm);
    z-index: 1;
    min-height: 0;
    margin: 0;
    padding: 0.2rem 0.45rem;
    font-size: 0.65rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    line-height: 1.2;
    color: var(--bressol-color-text);
    background-color: var(--bressol-color-accent);
    border-radius: var(--bressol-radius-sm);
}

/* Títol: 2 línies màx., ritme estable */
.woocommerce ul.products li.product .woocommerce-loop-product__title {
    font-family: var(--bressol-font-body);
    font-size: 0.9375rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    line-height: 1.35;
    margin: 0;
    padding: var(--bressol-space-sm) var(--bressol-space-md) 0;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    overflow: hidden;
    min-height: calc(2 * 1.35em + var(--bressol-space-sm));
}

/* PLP: info + popover (fora de l’enllaç; posició sobre la card, vora del títol visualment) */
.woocommerce ul.products li.product .bressol-plp-popover-wrap {
    position: absolute;
    top: var(--bressol-space-sm);
    right: var(--bressol-space-sm);
    z-index: 4;
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: var(--bressol-space-xs);
    max-width: calc(100% - var(--bressol-space-md));
    pointer-events: auto;
}

.woocommerce ul.products li.product .bressol-plp-info-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2rem;
    height: 2rem;
    margin: 0;
    padding: 0;
    color: var(--bressol-color-text);
    background-color: rgba(250, 250, 248, 0.92);
    border: 1px solid var(--bressol-color-border);
    border-radius: 999px;
    cursor: pointer;
    box-shadow: 0 1px 3px rgba(7, 12, 12, 0.08);
    transition: var(--bressol-transition);
}

.woocommerce ul.products li.product .bressol-plp-info-btn:hover {
    border-color: var(--bressol-color-accent);
    color: var(--bressol-color-text);
}

.woocommerce ul.products li.product .bressol-plp-info-btn:focus-visible {
    outline: 2px solid var(--bressol-focus-ring);
    outline-offset: 2px;
}

.woocommerce ul.products li.product .bressol-plp-popover-wrap.is-open .bressol-plp-info-btn {
    border-color: var(--bressol-color-accent);
    background-color: var(--bressol-color-surface);
}

.woocommerce ul.products li.product .bressol-plp-popover {
    position: absolute;
    top: calc(100% + 4px);
    right: 0;
    left: auto;
    width: min(17.5rem, calc(100vw - var(--bressol-space-xl)));
    max-width: min(17.5rem, calc(100vw - var(--bressol-space-xl)));
    max-height: min(12rem, 42vh);
    overflow-y: auto;
    margin: 0;
    padding: var(--bressol-space-sm) var(--bressol-space-md);
    font-family: var(--bressol-font-body);
    font-size: 0.8125rem;
    font-weight: 500;
    line-height: 1.45;
    letter-spacing: 0.01em;
    color: var(--bressol-color-text);
    background-color: var(--bressol-color-surface);
    border: 1px solid var(--bressol-color-border);
    border-radius: var(--bressol-radius-sm);
    box-shadow: 0 4px 18px rgba(7, 12, 12, 0.12);
}

.woocommerce ul.products li.product .bressol-plp-popover__text {
    margin: 0;
}

.woocommerce ul.products li.product .star-rating {
    margin: var(--bressol-space-xs) var(--bressol-space-md) 0;
    font-size: 0.7rem;
    width: 4.2em;
    letter-spacing: 0.06em;
}

/* Preu: jerarquia clara */
.woocommerce ul.products li.product .price {
    display: block;
    margin: 0;
    padding: var(--bressol-space-xs) var(--bressol-space-md) var(--bressol-space-md);
    font-family: var(--bressol-font-body);
    font-size: 1.0625rem;
    font-weight: 700;
    color: var(--bressol-color-text);
    line-height: 1.3;
}

.woocommerce ul.products li.product .price del {
    font-size: 0.8125rem;
    font-weight: 500;
    opacity: 0.65;
    margin-right: 0.35em;
}

.woocommerce ul.products li.product .price ins {
    text-decoration: none;
}

/* CTA loop (Add to cart / Bekijk / Opties): fora de l’enllaç al PDP */
.woocommerce ul.products li.product > a.button,
.woocommerce ul.products li.product > a.add_to_cart_button {
    align-self: stretch;
    margin: 0 var(--bressol-space-md) var(--bressol-space-md);
    margin-top: auto;
    padding: 0.6rem 0.85rem;
    font-family: var(--bressol-font-body);
    font-size: 0.8125rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    text-align: center;
    text-decoration: none;
    line-height: 1.3;
    color: var(--bressol-color-bg);
    background-color: var(--bressol-color-text);
    border: 1px solid var(--bressol-color-text);
    border-radius: var(--bressol-radius-sm);
    transition: var(--bressol-transition);
}

.woocommerce ul.products li.product > a.button:hover,
.woocommerce ul.products li.product > a.add_to_cart_button:hover {
    color: var(--bressol-color-text);
    background-color: var(--bressol-color-accent);
    border-color: var(--bressol-color-accent);
}

.woocommerce ul.products li.product > a.button:focus-visible,
.woocommerce ul.products li.product > a.add_to_cart_button:focus-visible {
    outline: 2px solid var(--bressol-focus-ring);
    outline-offset: 2px;
}

.woocommerce ul.products li.product > a.button.loading {
    opacity: 0.75;
    pointer-events: none;
}

/* Paginació */
.woocommerce nav.woocommerce-pagination {
    margin-top: var(--bressol-space-lg, 1.5rem);
}

.woocommerce nav.woocommerce-pagination ul {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    list-style: none;
    margin: 0;
    padding: 0;
}

/* Botons i preus base (sense overrides agressius per pantalla) */
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.woocommerce #respond input#submit {
    font-family: var(--bressol-font-body);
    font-weight: 600;
    border-radius: var(--bressol-radius);
    transition: var(--bressol-transition);
}

.woocommerce a.button.alt,
.woocommerce button.button.alt,
.woocommerce input.button.alt,
.woocommerce button.alt,
.woocommerce a.button.alt.disabled,
.woocommerce button.button.alt.disabled {
    background-color: var(--bressol-color-accent);
    color: var(--bressol-color-text);
    border-color: transparent;
}

.woocommerce a.button.alt:hover,
.woocommerce button.button.alt:hover,
.woocommerce input.button.alt:hover {
    filter: brightness(0.94);
}

.woocommerce a.button:focus-visible,
.woocommerce button.button:focus-visible,
.woocommerce input.button:focus-visible,
.woocommerce #respond input#submit:focus-visible {
    outline: 2px solid var(--bressol-focus-ring);
    outline-offset: 2px;
    box-shadow: 0 0 0 1px var(--bressol-focus-offset);
}

/* Blocs de secció Woo: títol h2 utilitari (Montserrat semibold), sense tocar graella */
.woocommerce .related.products > h2,
.woocommerce .up-sells > h2 {
    margin-block: 0 var(--bressol-rhythm-title);
    font-family: var(--bressol-font-body);
    font-weight: 600;
    letter-spacing: 0.01em;
    font-size: clamp(1.125rem, 2vw, 1.25rem);
}

.woocommerce .price,
.woocommerce .woocommerce-Price-amount {
    font-family: var(--bressol-font-body);
    font-weight: 600;
    color: var(--bressol-color-text);
}

.woocommerce form .form-row input.input-text,
.woocommerce form .form-row textarea,
.woocommerce form .form-row select {
    font-family: var(--bressol-font-body);
    border-radius: var(--bressol-radius);
}

.woocommerce-tabs ul.tabs li a {
    font-family: var(--bressol-font-body);
    font-weight: 500;
    letter-spacing: 0.02em;
}

/* -------------------------------------------------------------------------
 * PDP shell (PR-03 + desktop balance) — layout base, sense acabat editorial final
 *
 * Equilibri desktop: contenidor més ample només per a la PDP, grid asimètric
 * a favor de la galeria (≈ 56% / 44%) i activació de 2 columnes a partir de
 * 60rem per evitar squeeze a tauleta. A pantalles grans (≥ 80rem) la galeria
 * és sticky perquè la imatge no desaparega mentre s'avança per l'editorial.
 * ------------------------------------------------------------------------- */

.bressol-pdp {
    width: 100%;
}

/* PDP gaudeix de més aire que la resta del CMS: el cos editorial del summary
   creix força vertically (subheadline + intro + highlights + 3 seccions +
   FAQs + related landing) i necessita un canvas més ample per equilibrar-se
   amb la galeria. Limitat a la pàgina de producte únic. */
body.single-product .bressol-theme-main--woocommerce {
    max-width: min(80rem, 100%);
}

.bressol-pdp__top {
    display: grid;
    gap: var(--bressol-rhythm-section);
    margin-bottom: var(--bressol-rhythm-section);
}

/* 60rem (≈ 960px): per sota d'això la galeria patia massa al passar a 2 cols
   a 48rem. La columna de summary, plena d'editorial, es feia molt prima. */
@media (min-width: 60rem) {
    .bressol-pdp__top {
        grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr);
        gap: var(--bressol-space-2xl);
        align-items: start;
    }
}

.bressol-pdp__hero {
    min-width: 0;
}

/* Neutralitza Woo defaults (`woocommerce-layout.css`):
 *   div.product div.images   { float: left;  width: 48% }       (0,2,2)
 *   div.product div.summary  { float: right; width: 46.42857% } (0,2,2)
 * Aquestes regles deixaven la galeria i el summary ocupant ~48 % de la seua
 * cel·la del grid, generant un buit central enorme entre columnes que no
 * tenia res a veure amb el `gap`. Dins del nostre shell `.bressol-pdp`
 * volem que cada cel·la s'omplisca al 100 %. Especificitat ≥ (0,3,0)
 * per superar els selectors per defecte de Woo. */
.bressol-pdp.product .bressol-pdp__hero .woocommerce-product-gallery,
.bressol-pdp.product .bressol-pdp__summary .summary {
    float: none;
    width: 100%;
    max-width: 100%;
}

.bressol-pdp__hero .woocommerce-product-gallery {
    margin-bottom: 0;
}

/* Galeria sticky a desktop gran: la imatge acompanya la lectura del bloc
   editorial sense forçar redisseny ni moure el render del plugin.
   Header del tema és `position: relative`, no fa falta compensar offset. */
@media (min-width: 80rem) {
    .bressol-pdp__hero {
        position: sticky;
        top: var(--bressol-space-lg);
        align-self: start;
    }
}

/* -------------------------------------------------------------------------
 * PDP gallery (PR-G1) — baseline Woo (slider + lightbox + zoom) + presentació
 *
 * Marcatge real amb `wc-product-gallery-slider` actiu:
 *   .woocommerce-product-gallery
 *     figure.woocommerce-product-gallery__wrapper.flex-viewport
 *       .woocommerce-product-gallery__image  (N)
 *     ol.flex-control-nav.flex-control-thumbs
 *       li > img.flex-active? (N)
 *
 * - Les thumbs venien amb floats + amplades percentuals de Woo → desalineades.
 *   Passem a CSS Grid per coherència i estat `:focus-visible` + `.flex-active`.
 * - Hero image sense contenció es feia massa dominant en fotos verticals.
 *   Limitem `max-height` suau a desktop i centrem; sense aspect-ratio fixat
 *   (això entra al PR-G3 quan es decidisca pattern editorial).
 * ------------------------------------------------------------------------- */

/* Hero image: contenció visual bàsica, sense aspect-ratio fixat.
   Especificitat (0,3,1) — supera Woo defaults (0,2,2) de `div.product`. */
.bressol-pdp.product .woocommerce-product-gallery__image img {
    display: block;
    width: 100%;
    height: auto;
    max-width: 100%;
    margin-inline: auto;
}

/* Contenció d'alçada a tablet/desktop perquè fotos verticals extremes no
   ocupen tota la viewport. Mòbil es queda natural (scroll natiu). */
@media (min-width: 48rem) {
    .bressol-pdp.product .woocommerce-product-gallery__wrapper {
        max-height: 72vh;
    }

    .bressol-pdp.product .woocommerce-product-gallery__image img {
        max-height: 72vh;
        width: auto;
        object-fit: contain;
    }
}

/* Zoom inline (zoomjs): la lupa s'ancora al wrapper de la imatge actual.
   Forcem `position: relative` per si algun reset del tema l'aplana. */
.bressol-pdp.product .woocommerce-product-gallery__image {
    position: relative;
}

/* Thumbnails: reset de floats legacy de Woo i layout en graella regular.
   Woo emet `.flex-control-thumbs` com `ol` amb `li` flotats que cal neutralitzar. */
.bressol-pdp.product .woocommerce-product-gallery .flex-control-nav.flex-control-thumbs {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: var(--bressol-space-sm);
    margin: var(--bressol-space) 0 0;
    padding: 0;
    list-style: none;
}

.bressol-pdp.product .woocommerce-product-gallery .flex-control-thumbs li {
    float: none;
    width: auto;
    margin: 0;
    padding: 0;
    list-style: none;
}

/* Thumb image: graella estable 1:1 + packshot llegible (doc 42 — contain, no crop agressiu). */
.bressol-pdp.product .woocommerce-product-gallery .flex-control-thumbs li img {
    display: block;
    width: 100%;
    height: auto;
    aspect-ratio: 1 / 1;
    object-fit: contain;
    object-position: center;
    box-sizing: border-box;
    background-color: var(--bressol-color-bg);
    border: 1px solid var(--bressol-color-border);
    border-radius: var(--bressol-radius-sm, 0.25rem);
    cursor: pointer;
    opacity: 0.75;
    transition: opacity 120ms ease, border-color 120ms ease, transform 120ms ease;
}

.bressol-pdp.product .woocommerce-product-gallery .flex-control-thumbs li img:hover {
    opacity: 1;
    border-color: var(--bressol-color-accent, currentColor);
}

/* Estat seleccionat: Flexslider aplica `.flex-active` a la thumb de la imatge
   actualment visible al viewport. Marquem clarament amb border accent + full
   opacity. */
.bressol-pdp.product .woocommerce-product-gallery .flex-control-thumbs li img.flex-active {
    opacity: 1;
    border-color: var(--bressol-color-accent, currentColor);
}

/* A11y: focus visible quan es navega amb teclat (Flexslider no afegeix
   `tabindex` però l'usuari pot reach via shift+tab a la imatge gran).
   `:focus-visible` al wrapper per no duplicar amb hover. */
.bressol-pdp.product .woocommerce-product-gallery .flex-control-thumbs li img:focus-visible {
    outline: 2px solid var(--bressol-color-accent, currentColor);
    outline-offset: 2px;
}

/* Mòbil: 4 cols segueixen sent usables per thumbs petites; si el producte té
   moltes imatges i queden massa menudes, el següent salt (5+ cols) s'afegiria
   al PR-G3 segons producte real. */

.bressol-pdp__summary {
    min-width: 0;
}

.bressol-pdp__summary .summary {
    margin-top: 0;
}

/* Lectura còmoda dins del summary quan la columna és ampla (>~ 30rem):
   evita línies de text molt llargues a title/short/editorial sense tocar
   el contracte ni el max-width intern del plugin (`.bressol-pdp-editorial`
   ja limita a 65ch). */
@media (min-width: 80rem) {
    .bressol-pdp__summary .summary > * {
        max-width: 38rem;
    }

    .bressol-pdp__summary .summary > form.cart,
    .bressol-pdp__summary .summary > .bressol-theme-pdp-editorial-slot,
    .bressol-pdp__summary .summary > .bressol-pdp-editorial--support {
        max-width: none;
    }
}

/* Ritmes dels blocs split del renderer (PR-G2):
 *   --moments  (prio 3)  → chips abans del H1: marge inferior xicotet, top 0.
 *   --tagline  (prio 7)  → subheadline just sota H1: tight amb el títol.
 *   --primary  (prio 35) → wrappejat amb `.bressol-theme-pdp-editorial-slot`.
 *   --support  (prio 36) → sense wrapper, segueix el primary amb ritme de secció.
 */
.bressol-pdp__summary .summary > .bressol-pdp-editorial--moments {
    margin-block: 0 var(--bressol-space-sm, 0.5rem);
}

.bressol-pdp__summary .summary > .bressol-pdp-editorial--tagline {
    margin-block: calc(-1 * var(--bressol-rhythm-title)) var(--bressol-space, 1rem);
}

.bressol-pdp__summary .summary > .bressol-pdp-editorial--tagline .bressol-pdp-editorial__sub {
    margin: 0;
}

.bressol-pdp__summary .summary > .bressol-pdp-editorial--support {
    margin-block: var(--bressol-space-lg, 1.5rem) 0;
}

.bressol-pdp__summary .product_title {
    margin-block-start: 0;
    margin-block-end: var(--bressol-rhythm-title);
    font-family: var(--bressol-font-heading);
    font-size: clamp(1.5rem, 3vw, 1.75rem);
    font-weight: 600;
    line-height: 1.2;
    letter-spacing: 0.03em;
}

.bressol-pdp__summary .price {
    margin-block: var(--bressol-space-xs, 0.25rem) var(--bressol-rhythm-title);
    font-size: 1.25rem;
    font-family: var(--bressol-font-body);
    font-weight: 600;
}

/* PR-PDP-01 — aire vertical al voltant del preu/excerpt/meta Woo al summary */
/* PR-FIX-STORE-01 — enllaços valoracions sense color visitat Woo (#720eec) */
body.single-product .bressol-pdp__summary .woocommerce-product-rating a:link,
body.single-product .bressol-pdp__summary .woocommerce-product-rating a:visited {
    color: var(--bressol-color-muted);
}

body.single-product .bressol-pdp__summary .woocommerce-product-rating a:hover,
body.single-product .bressol-pdp__summary .woocommerce-product-rating a:focus-visible {
    color: var(--bressol-color-text);
}

body.single-product .bressol-pdp__summary .woocommerce-product-rating a:focus-visible {
    outline: 2px solid var(--bressol-focus-ring);
    outline-offset: 2px;
}

.bressol-pdp__summary .woocommerce-product-rating {
    margin-block: 0 var(--bressol-space-md);
}

.bressol-pdp__summary .woocommerce-product-details__short-description {
    margin-block: var(--bressol-space-sm) var(--bressol-space-lg);
}

/* Blocs Català(plugin) densos: més ritme entre import, vi/likeur i productor selector */
.bressol-pdp__summary .summary .bressol-pdp-content-amount,
.bressol-pdp__summary .summary .bressol-pdp-wine,
.bressol-pdp__summary .summary .bressol-pdp-liqueur,
.bressol-pdp__summary .summary .bressol-pdp-liqueur-selector,
.bressol-pdp__summary .summary .bressol-pdp-producer {
    margin-block-end: var(--bressol-space-lg);
}

.bressol-pdp__summary form.cart {
    margin-top: var(--bressol-space-lg);
}

.bressol-pdp__summary form.cart .single_add_to_cart_button {
    flex-shrink: 0;
}

.bressol-pdp__summary .product_meta {
    margin-top: var(--bressol-space-lg);
    padding-top: var(--bressol-space-md);
    border-top: 1px solid var(--bressol-color-border);
    font-size: 0.8125rem;
    line-height: 1.55;
    color: var(--bressol-color-muted);
}

.bressol-pdp__summary .product_meta a {
    color: inherit;
}

/* Slot editorial del plugin (wrapper del tema; contingut intern `.bressol-pdp-editorial` del plugin) */
.bressol-theme-pdp-editorial-slot {
    margin-top: var(--bressol-rhythm-section);
    padding-top: var(--bressol-rhythm-section);
    border-top: 1px solid var(--bressol-color-border);
}

.bressol-pdp__extended {
    clear: both;
    margin-top: var(--bressol-rhythm-section);
    padding-top: var(--bressol-rhythm-section);
    border-top: 1px solid var(--bressol-color-border);
}

/* Tabs i blocs inferiors: espaiat mínim + menys leakage visual Woo (tabs “pill”). */
.bressol-pdp__extended .woocommerce-tabs {
    margin-bottom: var(--bressol-rhythm-section);
}

.bressol-pdp__extended .woocommerce-tabs ul.tabs {
    display: flex;
    flex-wrap: wrap;
    gap: 0;
    margin: 0 0 var(--bressol-space-lg);
    padding: 0;
    list-style: none;
    border-bottom: 1px solid var(--bressol-color-border);
}

.bressol-pdp__extended .woocommerce-tabs ul.tabs::before {
    display: none;
}

.bressol-pdp__extended .woocommerce-tabs ul.tabs li {
    margin: 0;
    padding: 0;
    background: transparent;
    border: 0;
    border-radius: 0;
}

.bressol-pdp__extended .woocommerce-tabs ul.tabs li a {
    display: inline-block;
    margin: 0;
    padding: var(--bressol-space-sm) var(--bressol-space);
    font-family: var(--bressol-font-body);
    font-weight: 600;
    font-size: 0.875rem;
    letter-spacing: 0.015em;
    color: var(--bressol-color-muted);
    text-decoration: none;
    background: transparent;
    border: 0;
    border-bottom: 2px solid transparent;
    transition: color 120ms ease, border-color 120ms ease;
}

.bressol-pdp__extended .woocommerce-tabs ul.tabs li.active a,
.bressol-pdp__extended .woocommerce-tabs ul.tabs li a:hover {
    color: var(--bressol-color-text);
}

.bressol-pdp__extended .woocommerce-tabs ul.tabs li.active a {
    border-bottom-color: var(--bressol-color-accent);
}

.bressol-pdp__extended .woocommerce-tabs ul.tabs li a:focus-visible {
    outline: 2px solid var(--bressol-focus-ring);
    outline-offset: 2px;
}

.bressol-pdp__extended .woocommerce-tabs .woocommerce-Tabs-panel,
.bressol-pdp__extended .woocommerce-tabs .panel {
    padding-top: var(--bressol-space-md);
}

.bressol-pdp__extended .woocommerce-tabs .woocommerce-Tabs-panel h2:first-child,
.bressol-pdp__extended .woocommerce-tabs .panel h2:first-child {
    margin-top: 0;
    font-family: var(--bressol-font-body);
    font-size: 1rem;
    font-weight: 600;
}

.bressol-pdp__extended .related.products > h2,
.bressol-pdp__extended .up-sells > h2 {
    font-family: var(--bressol-font-body);
    font-weight: 600;
    font-size: clamp(1rem, 2vw, 1.0625rem);
    letter-spacing: 0.02em;
}

.bressol-pdp__extended .related.products,
.bressol-pdp__extended .up-sells {
    margin-top: var(--bressol-rhythm-section);
}

/* -------------------------------------------------------------------------
 * PR-PDP-01B — PDP: Woo usa --wc-primary (#720eec) i enllaços visitats → fuga violeta/blau en hover/focus.
 * Neutralització explícita dins `.product.bressol-pdp`; focus amb --bressol-focus-ring (--bressol-focus-offset).
 * ------------------------------------------------------------------------- */
body.single-product .bressol-pdp .woocommerce a.button:link,
body.single-product .bressol-pdp .woocommerce a.button:visited {
    color: var(--bressol-color-text);
}

body.single-product .bressol-pdp .woocommerce a.button.alt:link,
body.single-product .bressol-pdp .woocommerce a.button.alt:visited {
    color: var(--bressol-color-text);
}

body.single-product .bressol-pdp .woocommerce button.button.alt,
body.single-product .bressol-pdp .woocommerce a.button.alt,
body.single-product .bressol-pdp .woocommerce input.button.alt,
body.single-product .bressol-pdp .woocommerce input#submit.alt,
body.single-product .bressol-pdp .woocommerce .single_add_to_cart_button.alt,
body.single-product .bressol-pdp #review_form input#submit.alt {
    background-color: var(--bressol-color-accent);
    color: var(--bressol-color-text);
    border-color: transparent;
    filter: none !important;
    box-shadow: none;
}

body.single-product .bressol-pdp .woocommerce button.button.alt:hover,
body.single-product .bressol-pdp .woocommerce a.button.alt:hover,
body.single-product .bressol-pdp .woocommerce input.button.alt:hover,
body.single-product .bressol-pdp .woocommerce input#submit.alt:hover,
body.single-product .bressol-pdp .woocommerce .single_add_to_cart_button.alt:hover,
body.single-product .bressol-pdp #review_form input#submit.alt:hover,
body.single-product .bressol-pdp .woocommerce button.button.alt:focus-visible,
body.single-product .bressol-pdp .woocommerce a.button.alt:focus-visible,
body.single-product .bressol-pdp .woocommerce input.button.alt:focus-visible,
body.single-product .bressol-pdp .woocommerce input#submit.alt:focus-visible,
body.single-product .bressol-pdp .woocommerce .single_add_to_cart_button.alt:focus-visible,
body.single-product .bressol-pdp #review_form input#submit.alt:focus-visible,
body.single-product .bressol-pdp .woocommerce button.button.alt:active,
body.single-product .bressol-pdp .woocommerce a.button.alt:active,
body.single-product .bressol-pdp .woocommerce input.button.alt:active,
body.single-product .bressol-pdp .woocommerce input#submit.alt:active,
body.single-product .bressol-pdp .woocommerce .single_add_to_cart_button.alt:active,
body.single-product .bressol-pdp #review_form input#submit.alt:active {
    filter: none !important;
    background-color: var(--bressol-accent-hover-solid);
    color: var(--bressol-color-text);
    border-color: transparent;
}

body.single-product .bressol-pdp .woocommerce button.button.alt:focus-visible,
body.single-product .bressol-pdp .woocommerce a.button.alt:focus-visible,
body.single-product .bressol-pdp .woocommerce input.button.alt:focus-visible,
body.single-product .bressol-pdp .woocommerce input#submit.alt:focus-visible,
body.single-product .bressol-pdp .woocommerce .single_add_to_cart_button.alt:focus-visible,
body.single-product .bressol-pdp #review_form input#submit.alt:focus-visible {
    outline: 2px solid var(--bressol-focus-ring);
    outline-offset: 2px;
    box-shadow: 0 0 0 1px var(--bressol-focus-offset);
}

/*
 * PR-PDP-02B — ATC PDP principal (#product-xx .bressol-pdp … form.cart): Woo aplica `--wc-primary` via shorthand `background` i selectors propis;
 * aquest botó quasi mai està baix `.bressol-pdp .woocommerce` (no hi ha wrapper Woo dins `#product-xx`), clar PR-PDP-01B no hi arribava.
 */
body.single-product .product.bressol-pdp form.cart button[type="submit"].single_add_to_cart_button.button.alt,
body.single-product .product.bressol-pdp form.cart button.single_add_to_cart_button.button.alt {
    background: none;
    background-color: var(--bressol-color-accent);
    color: var(--bressol-color-text, #070c0c);
    border-color: var(--bressol-color-accent);
    filter: none !important;
    box-shadow: none;
}

body.single-product .product.bressol-pdp form.cart button[type="submit"].single_add_to_cart_button.button.alt:hover:not(:disabled),
body.single-product .product.bressol-pdp form.cart button.single_add_to_cart_button.button.alt:hover:not(:disabled),
body.single-product .product.bressol-pdp form.cart button[type="submit"].single_add_to_cart_button.button.alt:focus:not(:disabled),
body.single-product .product.bressol-pdp form.cart button.single_add_to_cart_button.button.alt:focus:not(:disabled),
body.single-product .product.bressol-pdp form.cart button[type="submit"].single_add_to_cart_button.button.alt:focus-visible:not(:disabled),
body.single-product .product.bressol-pdp form.cart button.single_add_to_cart_button.button.alt:focus-visible:not(:disabled),
body.single-product .product.bressol-pdp form.cart button[type="submit"].single_add_to_cart_button.button.alt:active:not(:disabled),
body.single-product .product.bressol-pdp form.cart button.single_add_to_cart_button.button.alt:active:not(:disabled) {
    background: none;
    background-color: var(--bressol-accent-hover-solid, #bcaf4a);
    color: var(--bressol-color-text, #070c0c);
    border-color: var(--bressol-accent-hover-solid, #bcaf4a);
    filter: none !important;
}

body.single-product .product.bressol-pdp form.cart button[type="submit"].single_add_to_cart_button.button.alt:focus-visible:not(:disabled),
body.single-product .product.bressol-pdp form.cart button.single_add_to_cart_button.button.alt:focus-visible:not(:disabled) {
    outline: 2px solid var(--bressol-focus-ring);
    outline-offset: 2px;
    box-shadow: 0 0 0 1px var(--bressol-focus-offset);
}

body.single-product .bressol-pdp .woocommerce a.button:not(.alt):hover,
body.single-product .bressol-pdp .woocommerce button.button:not(.alt):hover,
body.single-product .bressol-pdp .woocommerce input.button:not(.alt):hover,
body.single-product .bressol-pdp #respond input#submit:not(.alt):hover,
body.single-product .bressol-pdp .woocommerce a.button:not(.alt):focus-visible,
body.single-product .bressol-pdp .woocommerce button.button:not(.alt):focus-visible,
body.single-product .bressol-pdp .woocommerce input.button:not(.alt):focus-visible,
body.single-product .bressol-pdp #respond input#submit:not(.alt):focus-visible,
body.single-product .bressol-pdp .woocommerce a.button:not(.alt):active,
body.single-product .bressol-pdp .woocommerce button.button:not(.alt):active,
body.single-product .bressol-pdp .woocommerce input.button:not(.alt):active,
body.single-product .bressol-pdp #respond input#submit:not(.alt):active {
    filter: none !important;
    background-color: var(--bressol-color-accent-muted);
    color: var(--bressol-color-text);
    border-color: var(--bressol-color-accent);
}

body.single-product .bressol-pdp .woocommerce a.button:not(.alt):focus-visible,
body.single-product .bressol-pdp .woocommerce button.button:not(.alt):focus-visible,
body.single-product .bressol-pdp .woocommerce input.button:not(.alt):focus-visible,
body.single-product .bressol-pdp #respond input#submit:not(.alt):focus-visible {
    outline: 2px solid var(--bressol-focus-ring);
    outline-offset: 2px;
    box-shadow: 0 0 0 1px var(--bressol-focus-offset);
}

body.single-product .bressol-pdp .woocommerce-error a.button,
body.single-product .bressol-pdp .woocommerce-info a.button,
body.single-product .bressol-pdp .woocommerce-message a.button {
    filter: none !important;
}

body.single-product .bressol-pdp .woocommerce-error a.button:link,
body.single-product .bressol-pdp .woocommerce-error a.button:visited,
body.single-product .bressol-pdp .woocommerce-info a.button:link,
body.single-product .bressol-pdp .woocommerce-info a.button:visited,
body.single-product .bressol-pdp .woocommerce-message a.button:link,
body.single-product .bressol-pdp .woocommerce-message a.button:visited {
    color: var(--bressol-color-text);
}

body.single-product .bressol-pdp .woocommerce-error a.button:hover,
body.single-product .bressol-pdp .woocommerce-info a.button:hover,
body.single-product .bressol-pdp .woocommerce-message a.button:hover,
body.single-product .bressol-pdp .woocommerce-error a.button:focus-visible,
body.single-product .bressol-pdp .woocommerce-info a.button:focus-visible,
body.single-product .bressol-pdp .woocommerce-message a.button:focus-visible,
body.single-product .bressol-pdp .woocommerce-error a.button:active,
body.single-product .bressol-pdp .woocommerce-info a.button:active,
body.single-product .bressol-pdp .woocommerce-message a.button:active {
    filter: none !important;
    background-color: var(--bressol-color-accent-muted);
    color: var(--bressol-color-text);
    border-color: var(--bressol-color-accent);
}

body.single-product .bressol-pdp .woocommerce-error a.button:focus-visible,
body.single-product .bressol-pdp .woocommerce-info a.button:focus-visible,
body.single-product .bressol-pdp .woocommerce-message a.button:focus-visible {
    outline: 2px solid var(--bressol-focus-ring);
    outline-offset: 2px;
    box-shadow: 0 0 0 1px var(--bressol-focus-offset);
}

/* Related / upsells (fora dels shells reco tema): mateix antisèptic */
body.single-product .bressol-pdp ul.products li.product a.woocommerce-LoopProduct-link:link,
body.single-product .bressol-pdp ul.products li.product a.woocommerce-LoopProduct-link:visited {
    color: inherit;
}

body.single-product .bressol-pdp ul.products li.product a.woocommerce-LoopProduct-link:hover,
body.single-product .bressol-pdp ul.products li.product a.woocommerce-LoopProduct-link:focus-visible,
body.single-product .bressol-pdp ul.products li.product a.woocommerce-LoopProduct-link:active {
    color: var(--bressol-color-text);
}

body.single-product .bressol-pdp ul.products li.product a.add_to_cart_button:link,
body.single-product .bressol-pdp ul.products li.product a.add_to_cart_button:visited {
    color: var(--bressol-color-bg);
}

body.single-product .bressol-pdp ul.products li.product a.button:hover,
body.single-product .bressol-pdp ul.products li.product a.button:focus-visible,
body.single-product .bressol-pdp ul.products li.product a.button:active {
    filter: none !important;
}

/* Meta producte (“SKU / category”): enllaços sense visitat magenta */
body.single-product .bressol-pdp .product_meta a:link,
body.single-product .bressol-pdp .product_meta a:visited {
    color: var(--bressol-color-muted);
}

body.single-product .bressol-pdp .product_meta a:hover,
body.single-product .bressol-pdp .product_meta a:focus-visible {
    color: var(--bressol-color-text);
}

body.single-product .bressol-pdp .product_meta a:focus-visible {
    outline: 2px solid var(--bressol-focus-ring);
    outline-offset: 2px;
}

/* Tabs PDP: inactive i visitat coherents; focus sense auto outline navegador */
body.single-product .bressol-pdp__extended .woocommerce-tabs ul.tabs li a:link,
body.single-product .bressol-pdp__extended .woocommerce-tabs ul.tabs li a:visited {
    color: var(--bressol-color-muted);
}

body.single-product .bressol-pdp__extended .woocommerce-tabs ul.tabs li.active a:link,
body.single-product .bressol-pdp__extended .woocommerce-tabs ul.tabs li.active a:visited {
    color: var(--bressol-color-text);
}

body.single-product .bressol-pdp__extended .woocommerce-tabs ul.tabs li a:focus-visible {
    outline: 2px solid var(--bressol-focus-ring);
    outline-offset: 2px;
    box-shadow: 0 0 0 1px var(--bressol-focus-offset);
}

body.single-product .bressol-pdp__extended .woocommerce-tabs .woocommerce-Tabs-panel a:link,
body.single-product .bressol-pdp__extended .woocommerce-tabs .woocommerce-Tabs-panel a:visited,
body.single-product .bressol-pdp__extended .woocommerce-tabs .panel a:link,
body.single-product .bressol-pdp__extended .woocommerce-tabs .panel a:visited {
    color: var(--bressol-color-text);
}

body.single-product .bressol-pdp__extended .woocommerce-tabs .woocommerce-Tabs-panel a:hover,
body.single-product .bressol-pdp__extended .woocommerce-tabs .panel a:hover {
    color: var(--bressol-color-accent);
}

body.single-product .bressol-pdp__extended .woocommerce-tabs .woocommerce-Tabs-panel a:focus-visible,
body.single-product .bressol-pdp__extended .woocommerce-tabs .panel a:focus-visible {
    outline: 2px solid var(--bressol-focus-ring);
    outline-offset: 2px;
    box-shadow: 0 0 0 1px var(--bressol-focus-offset);
}

/* -------------------------------------------------------------------------
 * PR-VISUAL-03 — Blocs editorials plugin (fora de `.woocommerce` wrapper al summary).
 * Neutralitza enllaços visitats / --wc-primary (#720eec) i presets WP blaus.
 * ------------------------------------------------------------------------- */
body.single-product .product.bressol-pdp .bressol-pdp-editorial a:not(.bressol-pdp-editorial__related-cta):link,
body.single-product .product.bressol-pdp .bressol-pdp-editorial a:not(.bressol-pdp-editorial__related-cta):visited {
    color: var(--bressol-color-text);
}

body.single-product .product.bressol-pdp .bressol-pdp-editorial a:not(.bressol-pdp-editorial__related-cta):hover {
    color: var(--bressol-color-accent);
}

body.single-product .product.bressol-pdp .bressol-pdp-editorial a:not(.bressol-pdp-editorial__related-cta):focus-visible {
    outline: 2px solid var(--bressol-focus-ring);
    outline-offset: 2px;
    box-shadow: 0 0 0 1px var(--bressol-focus-offset);
}

body.single-product .product.bressol-pdp .bressol-pdp-producer__cta:link,
body.single-product .product.bressol-pdp .bressol-pdp-producer__cta:visited {
    color: var(--bressol-color-accent);
}

body.single-product .product.bressol-pdp .bressol-pdp-producer__cta:hover,
body.single-product .product.bressol-pdp .bressol-pdp-producer__cta:focus-visible {
    color: var(--bressol-accent-hover-solid);
    filter: none !important;
}

body.single-product .product.bressol-pdp .bressol-pdp-editorial__related-cta,
body.single-product .product.bressol-pdp .bressol-pdp-editorial__related-cta:link,
body.single-product .product.bressol-pdp .bressol-pdp-editorial__related-cta:visited {
    color: var(--bressol-color-text);
    background-color: var(--bressol-color-accent-muted);
    border-color: var(--bressol-color-accent);
    filter: none !important;
}

body.single-product .product.bressol-pdp .bressol-pdp-editorial__related-cta:hover,
body.single-product .product.bressol-pdp .bressol-pdp-editorial__related-cta:focus-visible {
    color: var(--bressol-color-text);
    background-color: color-mix(in srgb, var(--bressol-color-accent) 22%, #fff);
    border-color: var(--bressol-accent-hover-solid);
    filter: none !important;
}

body.single-product .product.bressol-pdp .bressol-pdp-editorial__related-cta:focus-visible {
    outline: 2px solid var(--bressol-focus-ring);
    outline-offset: 2px;
    box-shadow:
        0 0 0 1px var(--bressol-focus-offset),
        0 2px 6px rgba(7, 12, 12, 0.08);
}

/* -------------------------------------------------------------------------
 * Checkout fase 1 — clàssic (`form-checkout`) + Woo Blocks (superfície segura: CSS + franja trust)
 * Sense alterar ordre de camps, gateways ni JS del checkout.
 * ------------------------------------------------------------------------- */

/* La pàgina CMS limita `.entry-content` a lectura estreta; el checkout necessita més aire per 2 columnes. */
body.woocommerce-checkout .bressol-theme-main--page .entry-content {
    max-width: min(var(--bressol-max-width), 100%);
}

/* Franja de confiança (PHP: `checkout-visual.php`) */
.bressol-checkout-trust {
    margin-bottom: var(--bressol-rhythm-title);
    padding: var(--bressol-space-md) var(--bressol-space-lg);
    background-color: var(--bressol-color-surface);
    border: 1px solid var(--bressol-color-border);
    border-radius: var(--bressol-radius);
}

.bressol-checkout-trust__list {
    margin: 0;
    padding: 0;
    list-style: none;
    display: flex;
    flex-wrap: wrap;
    gap: var(--bressol-space-sm) var(--bressol-space-xl);
    font-size: 0.8125rem;
    font-weight: 600;
    color: var(--bressol-color-muted);
    line-height: 1.4;
}

.bressol-checkout-trust__item {
    margin: 0;
    padding: 0;
}

.bressol-checkout-trust a {
    color: inherit;
    text-decoration: underline;
    text-underline-offset: 0.15em;
    transition: var(--bressol-transition);
}

.bressol-checkout-trust a:hover {
    color: var(--bressol-color-text);
}

/* Context natiu “account aanmaken” (clàssic), sota facturació */
.bressol-checkout-account-intro {
    margin-top: var(--bressol-space-lg);
    padding-top: var(--bressol-space-lg);
    border-top: 1px solid var(--bressol-color-border);
}

.bressol-checkout-account-intro__text {
    margin: 0;
    font-size: 0.875rem;
    line-height: 1.55;
    color: var(--bressol-color-muted);
    max-width: 40rem;
}

/* Formulari clàssic */
.woocommerce-checkout .woocommerce-billing-fields > h3,
.woocommerce-checkout .woocommerce-shipping-fields > h3,
.woocommerce-checkout .woocommerce-additional-fields > h3 {
    margin: 0 0 var(--bressol-space-md);
    font-family: var(--bressol-font-body);
    font-weight: 600;
    font-size: 1.0625rem;
    letter-spacing: 0.02em;
    color: var(--bressol-color-text);
}

#order_review_heading {
    margin: var(--bressol-rhythm-section) 0 var(--bressol-space-md);
    font-family: var(--bressol-font-body);
    font-weight: 600;
    font-size: 1.125rem;
    letter-spacing: 0.02em;
}

.woocommerce-checkout #customer_details {
    margin-bottom: var(--bressol-rhythm-section);
}

.woocommerce-checkout form.checkout .form-row {
    margin-bottom: var(--bressol-space-md);
}

.woocommerce-checkout form.checkout label {
    font-size: 0.875rem;
    font-weight: 500;
    color: var(--bressol-color-text);
}

.woocommerce-checkout form.checkout .input-text,
.woocommerce-checkout form.checkout select,
.woocommerce-checkout form.checkout textarea {
    width: 100%;
    max-width: 100%;
    padding: 0.55rem 0.75rem;
    font-size: 0.9375rem;
    line-height: 1.45;
    color: var(--bressol-color-text);
    background-color: var(--bressol-color-surface);
    border: 1px solid var(--bressol-color-border);
    border-radius: var(--bressol-radius-sm);
    transition: var(--bressol-transition);
}

.woocommerce-checkout form.checkout .input-text:focus-visible,
.woocommerce-checkout form.checkout select:focus-visible,
.woocommerce-checkout form.checkout textarea:focus-visible {
    outline: 2px solid var(--bressol-focus-ring);
    outline-offset: 2px;
    box-shadow: 0 0 0 1px var(--bressol-focus-offset);
}

.woocommerce-checkout .woocommerce-account-fields {
    margin-top: var(--bressol-space-lg);
    padding: var(--bressol-space-md) var(--bressol-space-lg);
    background-color: var(--bressol-color-accent-muted);
    border: 1px solid var(--bressol-color-border);
    border-radius: var(--bressol-radius);
}

.woocommerce-checkout .woocommerce-account-fields .create-account .checkbox span,
.woocommerce-checkout .woocommerce-account-fields .woocommerce-form__label-for-checkbox span {
    font-size: 0.9375rem;
    font-weight: 600;
    color: var(--bressol-color-text);
}

.woocommerce-checkout #order_review {
    margin-top: var(--bressol-space-md);
}

.woocommerce-checkout table.shop_table.woocommerce-checkout-review-order-table {
    border: 1px solid var(--bressol-color-border);
    border-radius: var(--bressol-radius);
    overflow: hidden;
    font-size: 0.9375rem;
}

.woocommerce-checkout table.shop_table.woocommerce-checkout-review-order-table th,
.woocommerce-checkout table.shop_table.woocommerce-checkout-review-order-table td {
    border-color: var(--bressol-color-border);
    padding: var(--bressol-space-sm) var(--bressol-space-md);
}

.woocommerce-checkout #payment {
    margin-top: var(--bressol-space-lg);
    padding: var(--bressol-space-lg);
    background-color: var(--bressol-color-surface);
    border: 1px solid var(--bressol-color-border);
    border-radius: var(--bressol-radius);
}

.woocommerce-checkout #payment ul.payment_methods {
    margin: 0 0 var(--bressol-space-md);
    padding: 0;
    list-style: none;
    border-bottom: 1px solid var(--bressol-color-border);
    padding-bottom: var(--bressol-space-md);
}

.woocommerce-checkout #payment div.payment_box {
    background-color: var(--bressol-color-bg);
    border-radius: var(--bressol-radius-sm);
}

.woocommerce-checkout #place_order {
    width: 100%;
    max-width: 22rem;
    margin-top: var(--bressol-space-md);
    min-height: 2.75rem;
    font-weight: 700;
    letter-spacing: 0.02em;
}

@media (min-width: 48rem) {
    .woocommerce-checkout #place_order {
        width: auto;
    }
}

/* Woo Blocks checkout: tipografia i coherència de superfície (sense forçar layout intern) */
.wp-block-woocommerce-checkout,
.wc-block-checkout {
    font-family: var(--bressol-font-body);
    color: var(--bressol-color-text);
}

.wp-block-woocommerce-checkout .wc-block-components-title,
.wc-block-checkout .wc-block-components-title {
    font-family: var(--bressol-font-body);
    font-weight: 600;
    letter-spacing: 0.02em;
    color: var(--bressol-color-text);
}

.wp-block-woocommerce-checkout .wc-block-components-text-input input,
.wp-block-woocommerce-checkout .wc-block-components-text-input textarea,
.wp-block-woocommerce-checkout .wc-block-components-select select,
.wc-block-checkout .wc-block-components-text-input input,
.wc-block-checkout .wc-block-components-text-input textarea {
    border-radius: var(--bressol-radius-sm);
}

.wp-block-woocommerce-checkout .wc-block-components-text-input input:focus-visible,
.wp-block-woocommerce-checkout .wc-block-components-select select:focus-visible,
.wc-block-checkout .wc-block-components-text-input input:focus-visible {
    outline: 2px solid var(--bressol-focus-ring);
    outline-offset: 2px;
}

.wp-block-woocommerce-checkout-order-summary-block,
.wc-block-checkout__sidebar {
    border-color: var(--bressol-color-border);
}

/**
 * PR-THEME-04 — Woo Blocks: CTA principal (neutralitzar lleak tipogràfic/cromàtic Woo default)
 */
.bressol-theme .wc-block-components-checkout-place-order-button {
    padding: max(var(--bressol-cta-pad-block, 0.6rem), 0.625rem)
        max(var(--bressol-cta-pad-inline, 1.1rem), 1rem) !important;
    font-family: var(--bressol-font-body) !important;
    font-weight: 600 !important;
    background-color: var(--bressol-color-accent) !important;
    color: var(--bressol-color-text) !important;
    border: 1px solid transparent !important;
    border-radius: var(--bressol-radius) !important;
    transition: var(--bressol-transition);
}

.bressol-theme .wc-block-components-checkout-place-order-button:not(:disabled):hover {
    background-color: var(--bressol-accent-hover-solid, #c8bc55) !important;
    color: var(--bressol-color-text) !important;
}

.bressol-theme .wc-block-components-checkout-place-order-button:focus-visible {
    outline: 2px solid var(--bressol-focus-ring) !important;
    outline-offset: 3px !important;
    box-shadow: 0 0 0 1px var(--bressol-focus-offset) !important;
}

.bressol-theme .wc-block-components-checkout-place-order-button .wc-block-components-button__text > svg {
    fill: currentColor !important;
}
