/*
 * TikiCore WooCommerce skin.
 * Native WooCommerce templates are preserved; styling is done around their
 * public classes so updates remain low-maintenance.
 */
.tc-main--shop { padding-block: clamp(2rem, 4vw, 4rem) 5rem; }

.woocommerce .woocommerce-breadcrumb {
    margin: 0 0 1.4rem;
    color: var(--tc-muted);
    font-size: .78rem;
}
.woocommerce .woocommerce-breadcrumb a { text-decoration: none; }
.woocommerce .woocommerce-breadcrumb a:hover { color: var(--tc-accent); }

.woocommerce .woocommerce-result-count { margin: .6rem 0 1.2rem; color: var(--tc-muted); font-size: .84rem; }
.woocommerce .woocommerce-ordering { margin: 0 0 1.3rem; }
.woocommerce .woocommerce-ordering select { min-width: 210px; font-size: .86rem; }

/* Product archives */
.woocommerce ul.products {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: clamp(1.5rem, 2.5vw, 2.5rem) clamp(1rem, 2vw, 1.7rem);
    margin-top: 1.5rem;
}
.woocommerce ul.products::before,
.woocommerce ul.products::after { display: none; }
.woocommerce ul.products li.product {
    display: flex;
    width: auto;
    margin: 0;
    float: none;
    flex-direction: column;
}
.woocommerce ul.products li.product a { text-decoration: none; }
.woocommerce ul.products li.product a img {
    width: 100%;
    aspect-ratio: 4 / 3;
    margin: 0 0 .9rem;
    object-fit: cover;
    border-radius: var(--tc-radius);
    background: var(--tc-soft);
    transition: opacity .18s ease;
}
.woocommerce ul.products li.product a:hover img { opacity: .93; }
.woocommerce ul.products li.product .woocommerce-loop-product__title {
    min-height: 2.9em;
    margin: 0 0 .45rem;
    padding: 0;
    color: var(--tc-brand);
    font-size: .92rem;
    font-weight: 650;
    line-height: 1.35;
}
.woocommerce ul.products li.product .price {
    margin: 0 0 .65rem;
    color: #8f6939;
    font-size: .9rem;
    font-weight: 700;
}
.woocommerce ul.products li.product .button {
    align-self: flex-start;
    margin-top: auto;
    padding: .65rem .85rem;
    background: var(--tc-brand);
    color: #fff;
    font-size: .78rem;
    text-decoration: none;
}
.woocommerce ul.products li.product .button:hover { background: var(--tc-accent); color: var(--tc-brand); }
.woocommerce ul.products li.product .button.disabled,
.woocommerce ul.products li.product .button:disabled { opacity: .38; }

/* Common swatch plugins: keep their own behaviour, harmonize presentation. */
.woocommerce .variable-items-wrapper { gap: .3rem; margin: .25rem 0 .7rem; }
.woocommerce .variable-items-wrapper .variable-item { box-shadow: none !important; border: 1px solid #d5d0ca !important; }
.woocommerce .variable-items-wrapper .variable-item.selected { border-color: var(--tc-brand) !important; box-shadow: 0 0 0 1px var(--tc-brand) !important; }

/* Single product */
.single-product .tc-main--shop { padding-top: 2.5rem; }
.woocommerce div.product { display: flow-root; }
.woocommerce div.product div.images,
.woocommerce div.product div.summary { margin-bottom: 2.4rem; }
.woocommerce div.product .woocommerce-product-gallery__wrapper { margin: 0; }
.woocommerce div.product div.images img { border-radius: var(--tc-radius); background: var(--tc-soft); }
.woocommerce div.product .product_title {
    margin: 0 0 .8rem;
    font-size: clamp(1.6rem, 2.6vw, 2.6rem);
    letter-spacing: -.025em;
}
.woocommerce div.product p.price,
.woocommerce div.product span.price { color: #8f6939; font-size: 1.05rem; font-weight: 700; }
.woocommerce div.product form.cart { margin-top: 1.3rem; }
.woocommerce div.product form.cart .variations { margin-bottom: 1rem; }
.woocommerce div.product form.cart .variations th { padding-right: 1rem; color: var(--tc-brand); font-size: .8rem; text-align: left; }
.woocommerce div.product form.cart .variations select { min-width: 0; }
.woocommerce div.product form.cart div.quantity { margin-right: .6rem; }
.woocommerce div.product form.cart .button { min-height: 44px; background: var(--tc-brand); }
.woocommerce div.product form.cart .button:hover { background: var(--tc-accent); color: var(--tc-brand); }
.woocommerce div.product .product_meta { color: var(--tc-muted); font-size: .78rem; }
.woocommerce div.product .product_meta a { text-decoration: none; }

.woocommerce div.product .woocommerce-tabs { clear: both; padding-top: 1.5rem; }
.woocommerce div.product .woocommerce-tabs ul.tabs { margin-bottom: 1.5rem; padding: 0; border-bottom: 1px solid var(--tc-border); }
.woocommerce div.product .woocommerce-tabs ul.tabs::before { display: none; }
.woocommerce div.product .woocommerce-tabs ul.tabs li {
    margin: 0 .3rem 0 0;
    padding: 0;
    border: 0;
    background: transparent;
}
.woocommerce div.product .woocommerce-tabs ul.tabs li::before,
.woocommerce div.product .woocommerce-tabs ul.tabs li::after { display: none; }
.woocommerce div.product .woocommerce-tabs ul.tabs li a { padding: .75rem .9rem; font-size: .85rem; font-weight: 650; }
.woocommerce div.product .woocommerce-tabs ul.tabs li.active a { border-bottom: 2px solid var(--tc-accent); }
.woocommerce div.product .woocommerce-tabs .panel { max-width: 900px; }
.woocommerce div.product .woocommerce-tabs .panel h2:first-child { font-size: 1.35rem; }

.woocommerce .related.products,
.woocommerce .up-sells { clear: both; padding-top: 2rem; }
.woocommerce .related.products > h2,
.woocommerce .up-sells > h2 { margin-bottom: 1.5rem; font-size: clamp(1.35rem, 2vw, 1.8rem); }

/* Cart / checkout / account */
.woocommerce table.shop_table { border-collapse: collapse; border-color: var(--tc-border); border-radius: 0; }
.woocommerce table.shop_table th,
.woocommerce table.shop_table td { padding: .9rem; border-color: var(--tc-border); }
.woocommerce-message,
.woocommerce-info,
.woocommerce-error { border-top-color: var(--tc-accent); background: var(--tc-soft); }
.woocommerce-message::before,
.woocommerce-info::before { color: #8f6939; }
.woocommerce-cart .cart-collaterals .cart_totals,
.woocommerce-checkout #order_review { padding: 1.25rem; background: var(--tc-soft); }
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.woocommerce #respond input#submit {
    border: 1px solid var(--tc-brand);
    border-radius: var(--tc-radius);
    background: var(--tc-brand);
    color: #fff;
    font-weight: 650;
}
.woocommerce a.button:hover,
.woocommerce button.button:hover,
.woocommerce input.button:hover,
.woocommerce #respond input#submit:hover { background: var(--tc-accent); border-color: var(--tc-accent); color: var(--tc-brand); }

@media (min-width: 769px) {
    .woocommerce div.product div.images { width: 52%; }
    .woocommerce div.product div.summary { width: 43%; }
}
@media (max-width: 1050px) {
    .woocommerce ul.products { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 720px) {
    .woocommerce ul.products { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.5rem .9rem; }
    .woocommerce ul.products li.product .woocommerce-loop-product__title { min-height: 0; font-size: .88rem; }
    .woocommerce .woocommerce-ordering { float: none; }
    .woocommerce .woocommerce-ordering select { width: 100%; }
}
@media (max-width: 420px) {
    .woocommerce ul.products { grid-template-columns: 1fr; }
}


/* 0.2.1 — archive and single-product refinements validated on Loft staging. */
.woocommerce .woocommerce-products-header {
    max-width: 930px;
    margin-bottom: 2.1rem;
}
.woocommerce .woocommerce-products-header__title.page-title {
    margin: 0 0 .7rem;
    font-size: clamp(2rem, 3vw, 2.8rem);
    letter-spacing: -.035em;
}
.woocommerce .woocommerce-products-header .term-description {
    max-width: 900px;
    color: #45413d;
}
.woocommerce .woocommerce-products-header .term-description > :first-child { margin-top: 0; }
.woocommerce .woocommerce-products-header .term-description > :last-child { margin-bottom: 0; }

/* Keep result count and sorting visually on the same toolbar line on wide screens. */
.woocommerce .woocommerce-result-count {
    margin-top: .75rem;
    margin-bottom: 1.3rem;
}
.woocommerce .woocommerce-ordering select {
    border-color: var(--tc-border);
    background-color: #fff;
}

/* Product cards: align controls without forcing large fixed-height cards. */
.woocommerce ul.products li.product .price { min-height: 1.5em; }
.woocommerce ul.products li.product .variable-items-wrapper { margin-top: .1rem; }
.woocommerce ul.products li.product .button { margin-top: .65rem; }

/* Slightly calmer product heading for long SEO titles. */
.woocommerce div.product .product_title {
    max-width: 18ch;
    font-size: clamp(1.75rem, 2.25vw, 2.25rem);
    line-height: 1.08;
}
.woocommerce div.product .summary .price { margin-bottom: 1rem; }

/* When the legacy Loft snippet moves the short description out of .summary,
   force it below BOTH gallery and summary instead of letting it wrap alongside
   the floated gallery. This can be removed once the product template is fully
   migrated away from Code Snippets. */
.single-product .woocommerce div.product > .woocommerce-product-details__short-description {
    clear: both;
    max-width: 920px;
    margin: 0 auto 2.2rem;
    padding-top: 1.5rem;
}
.single-product .woocommerce div.product > .woocommerce-product-details__short-description > :first-child { margin-top: 0; }
.single-product .woocommerce div.product > .woocommerce-product-details__short-description h2,
.single-product .woocommerce div.product > .woocommerce-product-details__short-description h3 {
    max-width: 26ch;
}

/* Gallery thumbnails stay compact and consistent with the main image. */
.woocommerce div.product div.images .flex-control-thumbs {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: .5rem;
    margin-top: .55rem;
}
.woocommerce div.product div.images .flex-control-thumbs li {
    width: auto;
    float: none;
}
.woocommerce div.product div.images .flex-control-thumbs img {
    aspect-ratio: 1 / 1;
    object-fit: cover;
    border: 1px solid transparent;
}
.woocommerce div.product div.images .flex-control-thumbs img.flex-active {
    border-color: var(--tc-accent);
}

@media (max-width: 768px) {
    .woocommerce .woocommerce-products-header { margin-bottom: 1.4rem; }
    .woocommerce div.product .product_title { max-width: none; }
    .single-product .woocommerce div.product > .woocommerce-product-details__short-description {
        margin-inline: 0;
        padding-top: .5rem;
    }
}

/* 0.2.3 — optional visual catalogue mode. Scoped to a per-site body class so
   Loft can use it without changing the behaviour of other TikiCore sites. */
.tc-product-archive--catalogue ul.products li.product .price,
.tc-product-archive--catalogue ul.products li.product .button,
.tc-product-archive--catalogue ul.products li.product .added_to_cart,
.tc-product-archive--catalogue ul.products li.product .variable-items-wrapper,
.tc-product-archive--catalogue ul.products li.product .variations_form,
.tc-product-archive--catalogue ul.products li.product .wvs_archive_variation_wrapper,
.tc-product-archive--catalogue ul.products li.product .woo-variation-swatches,
.tc-product-archive--catalogue ul.products li.product [class*="variation-swatches"],
.tc-product-archive--catalogue ul.products li.product [class*="archive-variation"] {
    display: none !important;
}

.woocommerce ul.products li.product .tc-product-image {
    position: relative;
    display: block;
    overflow: hidden;
    width: 100%;
    aspect-ratio: 4 / 3;
    margin: 0 0 .9rem;
    border-radius: var(--tc-radius);
    background: var(--tc-soft);
}

.woocommerce ul.products li.product .tc-product-image img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    margin: 0;
    object-fit: cover;
    border-radius: 0;
    background: transparent;
    transition: opacity .28s ease, transform .45s ease;
}

.woocommerce ul.products li.product .tc-product-image__primary { opacity: 1; }
.woocommerce ul.products li.product .tc-product-image__hover { opacity: 0; }

.tc-product-archive--hover-image ul.products li.product a:hover .tc-product-image__primary,
.tc-product-archive--hover-image ul.products li.product a:focus-visible .tc-product-image__primary { opacity: 0; }

.tc-product-archive--hover-image ul.products li.product a:hover .tc-product-image__hover,
.tc-product-archive--hover-image ul.products li.product a:focus-visible .tc-product-image__hover {
    opacity: 1;
    transform: scale(1.015);
}

/* Products without a gallery image keep the featured image visible. */
.woocommerce ul.products li.product .tc-product-image:not(:has(.tc-product-image__hover)) .tc-product-image__primary {
    opacity: 1 !important;
}

.tc-product-archive--catalogue ul.products li.product .woocommerce-loop-product__title {
    min-height: 0;
    margin-bottom: 0;
}

@media (prefers-reduced-motion: reduce) {
    .woocommerce ul.products li.product .tc-product-image img { transition: none; }
}
