/*
Theme Name: Vastori
Theme URI: https://www.vastori.com
Description: Vastori — minimal-luxury child theme for Botiga. Premium e-commerce UX with quiet sophistication.
Author: Vastori
Author URI: https://www.vastori.com
Template: botiga
Version: 0.9.109
Text Domain: vastori
*/

/* ============================================================
   1. Brand tokens
   ============================================================ */
:root {
    /* v0.6.0 — Full toa.st calibration. Ink shifts to actual forest
       green (was warm-near-black), page bg lightens toward cream-white.
       Forest green now the dominant brand color, not just an accent.
       Brand canon (packaging / IG / lookbooks) unchanged.
       See CLAUDE.md for the web-canon record.

       v0.9.4 — All four surface tokens collapsed to pure #FFFFFF so
       the whole site adopts the cart-drawer's clean white surface.
       The earlier warm sand / sand-soft / cream distinctions are
       retired; aliases kept so legacy selectors keep resolving. */
    --vastori-sand:        #FFFFFF;   /* page bg — pure white (v0.9.4) */
    --vastori-sand-soft:   #FFFFFF;   /* alias — collapsed (v0.9.4) */
    --vastori-cream:       #FFFFFF;   /* alias — collapsed (v0.9.4) */
    --vastori-surface:     #FFFFFF;   /* pure white — product cards */
    --vastori-ink:         #2A3D27;   /* primary text — DEEP FOREST GREEN (was #1F2317) */
    --vastori-ink-soft:    #3F4D32;   /* secondary text — slightly lighter forest */
    --vastori-muted:       #5D6B4D;   /* tertiary — sage olive (unchanged from v0.4.2) */
    --vastori-line:        #BCC0AC;   /* hairlines — sage-taupe (unchanged) */
    --vastori-cocoa:       #A89580;   /* earth accent — clay (unchanged) */
    --vastori-hairline:    rgba(42, 61, 39, 0.10);

    --vastori-font-serif:  'Cormorant Garamond', Georgia, 'Times New Roman', serif;
    --vastori-font-sans:   'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;

    --vastori-track-tight:   0.01em;
    --vastori-track-normal:  0.04em;
    --vastori-track-wide:    0.18em;
    --vastori-track-widest:  0.4em;

    --vastori-ease:          cubic-bezier(0.4, 0, 0.2, 1);
    --vastori-dur-fast:      0.2s;
    --vastori-dur-base:      0.35s;
    --vastori-dur-slow:      0.6s;
}

/* ============================================================
   2. Global base
   ============================================================ */
body,
body.botiga {
    background-color: var(--vastori-sand);
    color: var(--vastori-ink-soft);
    font-family: var(--vastori-font-sans);
    font-weight: 400;
    font-size: 15px;
    line-height: 1.7;
    letter-spacing: var(--vastori-track-tight);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

#page, .site-content, .site {
    background-color: var(--vastori-sand);
}

h1, h2, h3, h4, h5, h6,
.site-title, .entry-title {
    font-family: var(--vastori-font-serif);
    font-weight: 400;
    color: var(--vastori-ink);
    letter-spacing: var(--vastori-track-tight);
    line-height: 1.15;
}

p { line-height: 1.75; }

a {
    color: var(--vastori-ink);
    text-decoration: none;
    transition: opacity var(--vastori-dur-fast) var(--vastori-ease), color var(--vastori-dur-fast) var(--vastori-ease);
}

a:hover { opacity: 0.65; }

/* v0.9.85 — Visible keyboard focus ring (none existed anywhere; a
   site-wide a11y gap). Only shows for keyboard users (:focus-visible),
   so mouse clicks stay clean. Uses the brand ink. */
body a:focus-visible,
body button:focus-visible,
body .button:focus-visible,
body input:focus-visible,
body select:focus-visible,
body textarea:focus-visible,
body [tabindex]:focus-visible,
body .single_add_to_cart_button:focus-visible,
body .vastori-colour-swatch:focus-visible,
body .vastori-card-plus:focus-visible {
    outline: 2px solid var(--vastori-ink) !important;
    outline-offset: 2px !important;
    opacity: 1 !important;
}

::selection { background-color: var(--vastori-ink); color: var(--vastori-sand); }

/* ============================================================
   3. Site header — minimal, sticky, premium
   ============================================================ */
.site-header,
.site-header.box-shadow,
.botiga-header-row,
.botiga-header-row-wrapper {
    background-color: var(--vastori-sand) !important;
    box-shadow: none !important;
    border-bottom: 0.5px solid var(--vastori-hairline);
}

.site-title, .site-title a {
    font-family: var(--vastori-font-serif);
    font-size: 22px;
    letter-spacing: 0.28em;
    color: var(--vastori-ink) !important;
    text-transform: uppercase;
    font-weight: 400;
}

.main-navigation a, .botiga-menu-item a {
    font-family: var(--vastori-font-sans);
    font-size: 11px;
    font-weight: 500;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--vastori-ink) !important;
}

/* Mini cart badge */
.botiga-cart-icon-count,
.site-header .cart-count {
    background-color: var(--vastori-ink);
    color: var(--vastori-sand);
    border-radius: 50%;
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0;
    min-width: 16px;
    height: 16px;
    line-height: 16px;
    text-align: center;
    padding: 0 4px;
}

/* ============================================================
   4. Hero block pattern
   ============================================================ */
.vastori-hero {
    background-color: var(--vastori-sand);
    text-align: center;
    padding: 88px 24px 96px;
}

.vastori-hero .vastori-overline {
    font-family: var(--vastori-font-sans);
    font-size: 11px;
    letter-spacing: var(--vastori-track-widest);
    color: var(--vastori-muted);
    text-transform: uppercase;
    margin: 0 0 32px;
    line-height: 1;
}

.vastori-hero .vastori-wordmark {
    font-family: var(--vastori-font-serif);
    font-size: clamp(64px, 10vw, 112px);
    font-weight: 400;
    letter-spacing: 0.05em;
    color: var(--vastori-ink);
    margin: 0 0 28px;
    line-height: 1;
}

.vastori-hero .vastori-rule {
    width: 32px; height: 1px;
    border: 0;
    background-color: var(--vastori-muted);
    margin: 0 auto 32px;
    opacity: 1;
}

.vastori-hero .vastori-poem {
    font-family: var(--vastori-font-serif);
    font-style: italic;
    font-size: clamp(17px, 1.6vw, 21px);
    line-height: 1.95;
    color: var(--vastori-ink-soft);
    max-width: 520px;
    margin: 0 auto 44px;
    font-weight: 400;
}

.vastori-hero .vastori-poem em {
    font-style: italic;
    color: var(--vastori-ink);
}

.vastori-hero .vastori-cta .wp-block-button__link,
.vastori-hero .wp-block-button.vastori-cta .wp-block-button__link {
    background-color: transparent;
    color: var(--vastori-ink);
    border: 0.5px solid var(--vastori-ink);
    border-radius: 0;
    font-family: var(--vastori-font-sans);
    font-size: 11px;
    font-weight: 500;
    letter-spacing: 0.3em;
    text-transform: uppercase;
    padding: 14px 32px;
    transition: background-color var(--vastori-dur-base) var(--vastori-ease), color var(--vastori-dur-base) var(--vastori-ease);
}

.vastori-hero .vastori-cta .wp-block-button__link:hover {
    background-color: var(--vastori-ink);
    color: var(--vastori-sand);
    opacity: 1;
}

/* ============================================================
   5. Section: Featured collections — 3-column image cards
   ============================================================ */
.vastori-featured-collections {
    padding: 80px 24px;
    background-color: var(--vastori-sand);
}

.vastori-featured-collections .vastori-section-title {
    text-align: center;
    margin-bottom: 8px;
}

.vastori-featured-collections .vastori-section-sub {
    text-align: center;
    color: var(--vastori-muted);
    font-size: 13px;
    letter-spacing: var(--vastori-track-wide);
    text-transform: uppercase;
    margin-bottom: 56px;
}

.vastori-collection-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 16px;
    max-width: 1200px;
    margin: 0 auto;
}

.vastori-collection-card {
    position: relative;
    overflow: hidden;
    aspect-ratio: 3/4;
    cursor: pointer;
}

.vastori-collection-card img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform var(--vastori-dur-slow) var(--vastori-ease);
}

.vastori-collection-card:hover img { transform: scale(1.04); }

.vastori-collection-card .vastori-collection-label {
    position: absolute;
    bottom: 24px;
    left: 24px;
    right: 24px;
    color: #fff;
    font-family: var(--vastori-font-serif);
    font-size: 22px;
    letter-spacing: 0.02em;
    text-shadow: 0 1px 12px rgba(0,0,0,0.3);
}

/* ============================================================
   6. Section: Trust badges row
   ============================================================ */
.vastori-trust-badges {
    background-color: var(--vastori-sand-soft);
    padding: 32px 24px;
    border-top: 0.5px solid var(--vastori-hairline);
    border-bottom: 0.5px solid var(--vastori-hairline);
}

.vastori-trust-badges-row {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 32px;
    max-width: 1100px;
    margin: 0 auto;
    text-align: center;
}

.vastori-trust-badge {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 12px;
}

.vastori-trust-badge .vastori-badge-icon {
    width: 32px; height: 32px;
    stroke: var(--vastori-ink);
    stroke-width: 1;
    fill: none;
}

.vastori-trust-badge .vastori-badge-title {
    font-family: var(--vastori-font-sans);
    font-size: 11px;
    font-weight: 500;
    letter-spacing: var(--vastori-track-wide);
    text-transform: uppercase;
    color: var(--vastori-ink);
}

.vastori-trust-badge .vastori-badge-sub {
    font-family: var(--vastori-font-sans);
    font-size: 12px;
    color: var(--vastori-muted);
    line-height: 1.5;
}

/* ============================================================
   7. Section: Brand story
   ============================================================ */
.vastori-story {
    padding: 96px 24px;
    background-color: var(--vastori-cream);
}

.vastori-story .vastori-overline {
    text-align: center;
    font-size: 11px;
    letter-spacing: var(--vastori-track-widest);
    color: var(--vastori-muted);
    text-transform: uppercase;
    margin-bottom: 24px;
}

.vastori-story h2 {
    text-align: center;
    font-size: clamp(28px, 4vw, 40px);
    margin-bottom: 24px;
}

.vastori-story p {
    max-width: 600px;
    margin: 0 auto;
    text-align: center;
    font-size: 16px;
    line-height: 1.85;
    color: var(--vastori-ink-soft);
}

/* ============================================================
   8. Section: Newsletter
   ============================================================ */
.vastori-newsletter {
    padding: 80px 24px;
    background-color: var(--vastori-sand);
    text-align: center;
    border-top: 0.5px solid var(--vastori-hairline);
}

.vastori-newsletter .vastori-overline {
    font-size: 11px;
    letter-spacing: var(--vastori-track-widest);
    color: var(--vastori-muted);
    text-transform: uppercase;
    margin-bottom: 16px;
}

.vastori-newsletter h2 {
    font-size: clamp(26px, 3.5vw, 36px);
    margin-bottom: 12px;
}

.vastori-newsletter p {
    max-width: 460px;
    margin: 0 auto 36px;
    color: var(--vastori-muted);
    font-size: 14px;
}

.vastori-newsletter-form {
    max-width: 460px;
    margin: 0 auto;
    display: flex;
    gap: 0;
    border-bottom: 0.5px solid var(--vastori-ink);
}

.vastori-newsletter-form input[type="email"] {
    flex: 1;
    background: transparent;
    border: 0;
    padding: 14px 0;
    font-family: var(--vastori-font-sans);
    font-size: 14px;
    color: var(--vastori-ink);
    letter-spacing: 0.04em;
}

.vastori-newsletter-form input[type="email"]:focus { outline: none; }

.vastori-newsletter-form button {
    background: transparent;
    border: 0;
    color: var(--vastori-ink);
    font-family: var(--vastori-font-sans);
    font-size: 11px;
    font-weight: 500;
    letter-spacing: var(--vastori-track-wide);
    text-transform: uppercase;
    padding: 14px 0 14px 16px;
    cursor: pointer;
    transition: opacity var(--vastori-dur-fast);
}

.vastori-newsletter-form button:hover { opacity: 0.6; }

/* ============================================================
   9. Section: Instagram feed grid
   ============================================================ */
.vastori-instagram {
    padding: 64px 24px 80px;
    background-color: var(--vastori-sand);
}

.vastori-instagram .vastori-section-title {
    text-align: center;
    font-size: clamp(22px, 3vw, 28px);
    margin-bottom: 8px;
}

.vastori-instagram .vastori-handle {
    text-align: center;
    color: var(--vastori-muted);
    font-size: 13px;
    letter-spacing: var(--vastori-track-wide);
    margin-bottom: 32px;
}

.vastori-ig-grid {
    display: grid;
    grid-template-columns: repeat(6, 1fr);
    gap: 4px;
    max-width: 1200px;
    margin: 0 auto;
}

.vastori-ig-grid .vastori-ig-tile {
    aspect-ratio: 1;
    background-color: var(--vastori-line);
    overflow: hidden;
}

.vastori-ig-grid img {
    width: 100%; height: 100%; object-fit: cover;
    transition: transform var(--vastori-dur-slow) var(--vastori-ease);
}

.vastori-ig-grid .vastori-ig-tile:hover img { transform: scale(1.06); }

/* ============================================================
   10. Footer — 4 columns, refined
   ============================================================ */
.site-footer,
.botiga-footer-row {
    background-color: var(--vastori-cream) !important;
    color: var(--vastori-ink-soft);
    border-top: 0.5px solid var(--vastori-hairline);
    font-family: var(--vastori-font-sans);
    font-size: 13px;
    letter-spacing: var(--vastori-track-normal);
    padding: 64px 24px 32px;
}

.site-footer a { color: var(--vastori-ink-soft); }

.site-footer h3, .site-footer h4 {
    font-family: var(--vastori-font-sans);
    font-size: 11px;
    font-weight: 500;
    letter-spacing: var(--vastori-track-wide);
    text-transform: uppercase;
    color: var(--vastori-ink);
    margin-bottom: 20px;
}

.site-footer .vastori-footer-bottom {
    margin-top: 48px;
    padding-top: 24px;
    border-top: 0.5px solid var(--vastori-hairline);
    text-align: center;
    font-size: 11px;
    color: var(--vastori-muted);
    letter-spacing: var(--vastori-track-wide);
}

/* Policy strip — rendered by inc/footer-menu.php after Botiga's footer. */
.vastori-policy-strip {
    background-color: var(--vastori-cream);
    border-top: 0.5px solid var(--vastori-hairline);
    padding: 20px 24px;
    font-family: var(--vastori-font-sans);
    font-size: 11px;
    letter-spacing: var(--vastori-track-wide);
    text-transform: uppercase;
}

.vastori-policy-strip .vastori-policy-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    gap: 12px 20px;
}

.vastori-policy-strip .vastori-policy-list a {
    color: var(--vastori-ink-soft);
    text-decoration: none;
    transition: color var(--vastori-dur-fast) var(--vastori-ease);
}

.vastori-policy-strip .vastori-policy-list a:hover,
.vastori-policy-strip .vastori-policy-list a:focus {
    color: var(--vastori-ink);
}

.vastori-policy-strip .vastori-policy-list li + li {
    position: relative;
    padding-left: 20px;
}

.vastori-policy-strip .vastori-policy-list li + li::before {
    content: "";
    position: absolute;
    left: 0;
    top: 50%;
    transform: translateY(-50%);
    width: 1px;
    height: 10px;
    background-color: var(--vastori-line);
}

@media (max-width: 480px) {
    .vastori-policy-strip .vastori-policy-list li + li {
        padding-left: 0;
    }
    .vastori-policy-strip .vastori-policy-list li + li::before {
        display: none;
    }
}

/* ============================================================
   11. WooCommerce — primary buttons
   ============================================================ */
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.woocommerce #respond input#submit,
.woocommerce .button,
.woocommerce-page .button,
.woocommerce a.button.alt,
.woocommerce button.button.alt,
.woocommerce-page #respond input#submit.alt {
    background-color: var(--vastori-ink);
    color: var(--vastori-sand) !important;
    border-radius: 0;
    font-family: var(--vastori-font-sans);
    font-size: 11px;
    letter-spacing: 0.28em;
    text-transform: uppercase;
    font-weight: 500;
    padding: 14px 28px;
    border: 0.5px solid var(--vastori-ink);
    transition: all var(--vastori-dur-base) var(--vastori-ease);
    box-shadow: none;
}

.woocommerce a.button:hover,
.woocommerce button.button:hover,
.woocommerce a.button.alt:hover,
.woocommerce button.button.alt:hover {
    background-color: var(--vastori-sand);
    color: var(--vastori-ink) !important;
    opacity: 1;
}

/* ============================================================
   12. WooCommerce — product loop card (premium)
   ============================================================ */
.woocommerce ul.products,
.woocommerce-page ul.products {
    gap: 32px 16px;
}

.woocommerce ul.products li.product,
.woocommerce-page ul.products li.product {
    background-color: transparent;
    position: relative;
    transition: transform var(--vastori-dur-base) var(--vastori-ease);
}

.woocommerce ul.products li.product a img {
    aspect-ratio: 3/4;
    object-fit: cover;
    background-color: var(--vastori-cream);
    margin-bottom: 0;
    transition: opacity var(--vastori-dur-base) var(--vastori-ease);
}

/* Image swap on hover (when product has gallery image) — Botiga supports this */
.woocommerce ul.products li.product:hover a img {
    opacity: 0.92;
}

.woocommerce ul.products li.product .woocommerce-loop-product__title,
.woocommerce ul.products li.product h2,
.woocommerce ul.products li.product h3 {
    font-family: var(--vastori-font-serif);
    font-weight: 400;
    font-size: 17px;
    color: var(--vastori-ink);
    letter-spacing: var(--vastori-track-tight);
    margin-top: 18px;
    margin-bottom: 4px;
    padding: 0;
}

.woocommerce ul.products li.product .price,
.woocommerce-page ul.products li.product .price {
    font-family: var(--vastori-font-sans);
    font-size: 13px;
    font-weight: 400;
    letter-spacing: 0.06em;
    color: var(--vastori-ink-soft);
    margin-bottom: 0;
}

.woocommerce ul.products li.product .price ins {
    background: transparent;
    color: var(--vastori-ink);
    font-weight: 500;
    text-decoration: none;
}

.woocommerce ul.products li.product .price del {
    color: var(--vastori-muted);
    opacity: 0.7;
}

/* "Add to cart" button on loop — hairline outline that fills on hover */
.woocommerce ul.products li.product .button {
    margin-top: 12px;
    background-color: transparent;
    color: var(--vastori-ink) !important;
    border: 0.5px solid var(--vastori-ink);
    width: 100%;
    text-align: center;
    padding: 12px 18px;
    opacity: 0;
    transform: translateY(8px);
    transition: opacity var(--vastori-dur-base) var(--vastori-ease),
                transform var(--vastori-dur-base) var(--vastori-ease),
                background-color var(--vastori-dur-base) var(--vastori-ease),
                color var(--vastori-dur-base) var(--vastori-ease);
}

.woocommerce ul.products li.product:hover .button {
    opacity: 1;
    transform: translateY(0);
}

.woocommerce ul.products li.product .button:hover {
    background-color: var(--vastori-ink);
    color: var(--vastori-sand) !important;
}

/* Mobile: always show button (no hover) */
@media (max-width: 768px) {
    .woocommerce ul.products li.product .button {
        opacity: 1;
        transform: none;
    }
}

/* Sale badge — minimal hairline */
.woocommerce span.onsale {
    background-color: transparent;
    color: var(--vastori-muted);
    border: 0.5px solid var(--vastori-muted);
    border-radius: 0;
    font-family: var(--vastori-font-sans);
    font-size: 10px;
    letter-spacing: 0.25em;
    text-transform: uppercase;
    font-weight: 500;
    padding: 6px 10px;
    min-height: auto;
    min-width: auto;
    line-height: 1;
    top: 12px;
    left: 12px;
}

/* Wishlist heart icon top-right of image (added via JS or theme template) */
.vastori-wishlist-toggle {
    position: absolute;
    top: 12px;
    right: 12px;
    width: 32px;
    height: 32px;
    background-color: rgba(250, 247, 241, 0.85);
    backdrop-filter: blur(8px);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: background-color var(--vastori-dur-fast);
    z-index: 2;
}

.vastori-wishlist-toggle:hover { background-color: var(--vastori-cream); }

/* ============================================================
   13. WooCommerce — single product page
   ============================================================ */
.woocommerce div.product .product_title {
    font-family: var(--vastori-font-serif);
    font-weight: 400;
    font-size: clamp(28px, 4vw, 40px);
    color: var(--vastori-ink);
    letter-spacing: 0.01em;
    margin-bottom: 12px;
    line-height: 1.2;
}

.woocommerce div.product p.price,
.woocommerce div.product span.price {
    font-family: var(--vastori-font-sans);
    color: var(--vastori-ink);
    font-size: 20px;
    font-weight: 400;
    letter-spacing: 0.04em;
    margin-bottom: 28px;
}

.woocommerce div.product .woocommerce-product-details__short-description {
    font-family: var(--vastori-font-sans);
    color: var(--vastori-ink-soft);
    font-size: 15px;
    line-height: 1.85;
    margin: 24px 0 32px;
}

/* Variation labels */
.woocommerce div.product form.cart .variations label {
    font-family: var(--vastori-font-sans);
    font-size: 11px;
    letter-spacing: var(--vastori-track-wide);
    text-transform: uppercase;
    color: var(--vastori-muted);
    font-weight: 500;
}

/* Quantity input */
.woocommerce .quantity .qty {
    background: transparent;
    border: 0.5px solid var(--vastori-line);
    border-radius: 0;
    font-family: var(--vastori-font-sans);
    width: 80px;
    text-align: center;
    padding: 14px 8px;
}

/* Product tabs */
.woocommerce div.product .woocommerce-tabs ul.tabs {
    border-bottom: 0.5px solid var(--vastori-hairline);
    padding: 0;
    margin-bottom: 32px;
}

.woocommerce div.product .woocommerce-tabs ul.tabs li {
    background: transparent;
    border: 0;
    border-radius: 0;
    margin: 0 24px 0 0;
    padding: 0;
}

.woocommerce div.product .woocommerce-tabs ul.tabs li a {
    font-family: var(--vastori-font-sans);
    font-size: 11px;
    letter-spacing: var(--vastori-track-wide);
    text-transform: uppercase;
    font-weight: 500;
    color: var(--vastori-muted) !important;
    padding: 16px 0;
    border-bottom: 0.5px solid transparent;
}

.woocommerce div.product .woocommerce-tabs ul.tabs li.active a {
    color: var(--vastori-ink) !important;
    border-bottom-color: var(--vastori-ink);
}

/* ============================================================
   14. WooCommerce — cart page
   ============================================================ */
.woocommerce-cart table.cart {
    border: 0;
    background: transparent;
}

.woocommerce-cart table.cart thead th {
    font-family: var(--vastori-font-sans);
    font-size: 11px;
    letter-spacing: var(--vastori-track-wide);
    text-transform: uppercase;
    color: var(--vastori-muted);
    font-weight: 500;
    border-bottom: 0.5px solid var(--vastori-hairline);
    background: transparent;
    padding: 16px 12px;
}

.woocommerce-cart table.cart tbody td {
    border-bottom: 0.5px solid var(--vastori-hairline);
    background: transparent;
    padding: 24px 12px;
    vertical-align: middle;
}

.woocommerce-cart .cart_totals h2 {
    font-family: var(--vastori-font-serif);
    font-size: 24px;
    margin-bottom: 24px;
}

.woocommerce-cart .cart-collaterals .cart_totals table {
    border: 0;
}

.woocommerce-cart .cart-collaterals .cart_totals table th,
.woocommerce-cart .cart-collaterals .cart_totals table td {
    border-bottom: 0.5px solid var(--vastori-hairline);
    padding: 14px 0;
}

/* v0.9.95 — Brand the empty-cart state (was WooCommerce's default blue
   info box + plain button). */
body.woocommerce-cart .cart-empty.woocommerce-info {
    background: transparent !important;
    border: 0 !important;
    color: var(--vastori-muted) !important;
    font-family: var(--vastori-font-serif) !important;
    font-size: 18px !important;
    text-align: center !important;
    padding: 40px 0 20px !important;
}
body.woocommerce-cart .cart-empty.woocommerce-info::before { display: none !important; }
body.woocommerce-cart .return-to-shop { text-align: center !important; }
body.woocommerce-cart .return-to-shop a.button {
    background: transparent !important;
    color: var(--vastori-ink) !important;
    border: 1px solid var(--vastori-ink) !important;
    border-radius: 0 !important;
    text-transform: uppercase !important;
    letter-spacing: 0.22em !important;
    font-size: 11px !important;
    padding: 14px 28px !important;
    transition: background-color 0.25s var(--vastori-ease), color 0.25s var(--vastori-ease) !important;
}
body.woocommerce-cart .return-to-shop a.button:hover {
    background: var(--vastori-ink) !important;
    color: #FFFFFF !important;
}

/* v0.9.95 — Cart table: vertically centre price/qty/subtotal/remove in the
   100px image row (was floating to the top). */
body.woocommerce-cart table.cart td.product-price,
body.woocommerce-cart table.cart td.product-subtotal,
body.woocommerce-cart table.cart td.product-quantity,
body.woocommerce-cart table.cart td.product-remove {
    vertical-align: middle !important;
}

/* ============================================================
   15. WooCommerce — checkout
   ============================================================ */
.woocommerce-checkout h3 {
    font-family: var(--vastori-font-serif);
    font-size: 22px;
    margin-bottom: 20px;
    padding-bottom: 12px;
    border-bottom: 0.5px solid var(--vastori-hairline);
}

.woocommerce-checkout .form-row label {
    font-family: var(--vastori-font-sans);
    font-size: 11px;
    letter-spacing: var(--vastori-track-wide);
    text-transform: uppercase;
    color: var(--vastori-muted);
    font-weight: 500;
    margin-bottom: 8px;
}

.woocommerce form .form-row input.input-text,
.woocommerce form .form-row textarea,
.woocommerce form .form-row select {
    background-color: transparent;
    border: 0;
    border-bottom: 0.5px solid var(--vastori-line);
    border-radius: 0;
    padding: 12px 0;
    font-family: var(--vastori-font-sans);
    font-size: 14px;
    color: var(--vastori-ink);
    box-shadow: none;
}

.woocommerce form .form-row input.input-text:focus,
.woocommerce form .form-row textarea:focus {
    outline: 0;
    border-bottom-color: var(--vastori-ink);
}

.woocommerce-checkout #payment {
    /* v0.9.95 — --vastori-cream collapsed to #FFFFFF, leaving this payment
       "card" invisible on the white page. Give it a faint sage tint + a
       hairline so it reads as a distinct panel. */
    background-color: rgba(188, 192, 172, 0.10);
    border: 1px solid var(--vastori-line);
    border-radius: 0;
    padding: 24px;
}

.woocommerce-checkout #payment ul.payment_methods {
    border-bottom: 0.5px solid var(--vastori-hairline);
    padding-bottom: 16px;
    margin-bottom: 16px;
}

.woocommerce-checkout #payment ul.payment_methods li label {
    font-family: var(--vastori-font-sans);
    font-size: 14px;
    color: var(--vastori-ink);
    text-transform: none;
    letter-spacing: 0;
    font-weight: 400;
}

/* ============================================================
   16. WooCommerce — My Account
   ============================================================ */
.woocommerce-account .woocommerce-MyAccount-navigation ul {
    list-style: none;
    padding: 0;
}

.woocommerce-account .woocommerce-MyAccount-navigation ul li {
    border-bottom: 0.5px solid var(--vastori-hairline);
}

.woocommerce-account .woocommerce-MyAccount-navigation ul li a {
    display: block;
    padding: 14px 0;
    font-family: var(--vastori-font-sans);
    font-size: 13px;
    letter-spacing: var(--vastori-track-normal);
    text-transform: uppercase;
    font-weight: 500;
    color: var(--vastori-ink-soft);
}

.woocommerce-account .woocommerce-MyAccount-navigation ul li.is-active a {
    color: var(--vastori-ink);
}

/* ============================================================
   17. Mobile sticky add-to-cart bar (single product)
   ============================================================ */
.vastori-sticky-cart {
    display: none;
    position: fixed;
    bottom: 0; left: 0; right: 0;
    background-color: var(--vastori-sand);
    border-top: 0.5px solid var(--vastori-hairline);
    padding: 12px 16px;
    z-index: 999;
    transform: translateY(100%);
    transition: transform var(--vastori-dur-base) var(--vastori-ease);
}

.vastori-sticky-cart.is-visible { transform: translateY(0); }

.vastori-sticky-cart .vastori-sticky-info {
    flex: 1;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
}

.vastori-sticky-cart .vastori-sticky-title {
    font-family: var(--vastori-font-serif);
    font-size: 14px;
    color: var(--vastori-ink);
    display: block;
}

.vastori-sticky-cart .vastori-sticky-price {
    font-family: var(--vastori-font-sans);
    font-size: 13px;
    color: var(--vastori-ink-soft);
}

.vastori-sticky-cart button {
    flex-shrink: 0;
    background-color: var(--vastori-ink);
    color: var(--vastori-sand);
    border: 0;
    padding: 12px 24px;
    font-family: var(--vastori-font-sans);
    font-size: 11px;
    letter-spacing: 0.25em;
    text-transform: uppercase;
    font-weight: 500;
    cursor: pointer;
}

@media (max-width: 768px) {
    body.single-product .vastori-sticky-cart { display: flex; align-items: center; gap: 16px; }
}

/* v0.9.105 — sticky bar is variation-aware (sticky-cart.js). Keep the mirrored
   variation price_html inline + on-brand, and brief-flash the swatches when a
   shopper taps "Select options" with nothing chosen yet. */
.vastori-sticky-cart .vastori-sticky-price .price,
.vastori-sticky-cart .vastori-sticky-price .amount {
    font-size: inherit;
    color: inherit;
}
.vastori-sticky-cart .vastori-sticky-price del { opacity: 0.55; margin-right: 6px; }
.vastori-sticky-cart .vastori-sticky-price ins { text-decoration: none; }

@keyframes vastori-variation-flash {
    0%, 100% { box-shadow: 0 0 0 0 rgba(42, 61, 39, 0); }
    35%      { box-shadow: 0 0 0 3px rgba(42, 61, 39, 0.30); }
}
.vastori-flash-variations table.variations {
    animation: vastori-variation-flash 1.2s ease;
    border-radius: 4px;
}

/* ============================================================
   18. Forms — global hairline inputs
   ============================================================ */
input[type="text"], input[type="email"], input[type="tel"],
input[type="password"], input[type="search"], input[type="number"],
textarea, select {
    background-color: transparent;
    border: 0;
    border-bottom: 0.5px solid var(--vastori-muted);
    border-radius: 0;
    padding: 12px 0;
    font-family: var(--vastori-font-sans);
    font-size: 14px;
    color: var(--vastori-ink);
    box-shadow: none;
}

input:focus, textarea:focus, select:focus {
    outline: 0;
    border-bottom-color: var(--vastori-ink);
}

/* ============================================================
   19. Promo banner block
   ============================================================ */
.vastori-promo {
    background-color: var(--vastori-ink);
    color: var(--vastori-sand);
    text-align: center;
    padding: 12px 16px;
    font-family: var(--vastori-font-sans);
    font-size: 11px;
    letter-spacing: var(--vastori-track-wide);
    text-transform: uppercase;
}

.vastori-promo a { color: var(--vastori-sand); text-decoration: underline; }

/* ============================================================
   20. Search overlay (FiboSearch refinement)
   ============================================================ */
.dgwt-wcas-search-form {
    background-color: var(--vastori-cream) !important;
    border: 0.5px solid var(--vastori-hairline) !important;
}

.dgwt-wcas-search-input {
    font-family: var(--vastori-font-sans) !important;
    color: var(--vastori-ink) !important;
    background: transparent !important;
}

/* ============================================================
   21. Quick view — CENTERED MODAL (v0.9.87)
   Reverted from the v0.9.62 right-side drawer back to a centered
   floating pop-up (per user request). Content layout stays the same
   (image on top, details below, one natural scroll); only the
   container is re-centered and the entrance is a fade + scale.
   ============================================================ */
#yith-quick-view-modal .yith-wcqv-wrapper {
    background-color: var(--vastori-surface) !important;
    border-radius: 2px !important;
    position: fixed !important;
    top: 50% !important;
    left: 50% !important;
    right: auto !important;
    bottom: auto !important;
    transform: translate(-50%, -50%) !important;
    width: min(520px, 94vw) !important;
    height: auto !important;
    max-height: 90vh !important;
    margin: 0 !important;
    box-shadow: 0 18px 60px rgba(42, 61, 39, 0.22) !important;
    animation: vastori-qv-pop 0.32s cubic-bezier(0.22, 1, 0.36, 1) !important;
    /* v0.9.100 — clip the wrapper so ONLY .yith-wcqv-main scrolls (was a
       double scrollbar). */
    overflow: hidden !important;
}
@keyframes vastori-qv-pop {
    from { opacity: 0; transform: translate(-50%, -50%) scale(0.96); }
    to   { opacity: 1; transform: translate(-50%, -50%) scale(1); }
}
#yith-quick-view-modal .yith-wcqv-main {
    width: 100% !important;
    height: auto !important;
    max-height: 90vh !important;
    overflow-y: auto !important;
    overflow-x: hidden !important;
    background: var(--vastori-surface) !important;
}
/* v0.9.100 — Quick view: only .yith-wcqv-main scrolls (the .summary was a
   second scroll container → double scrollbar). */
#yith-quick-view-modal div.product .summary,
#yith-quick-view-modal div.product div.summary.entry-summary {
    overflow: visible !important;
    max-height: none !important;
}
/* Variable products in the quick view: the button lives in
   .botiga-single-addtocart-wrapper and Save in .woocommerce-variation-add-to-cart
   (different parents), so render a clean FULL-WIDTH stack — quantity, then
   Add to Bag, then Save for Later — instead of a broken half-row. */
#yith-quick-view-modal form.cart .single_variation_wrap,
#yith-quick-view-modal form.cart .woocommerce-variation-add-to-cart,
#yith-quick-view-modal form.cart .botiga-single-addtocart-wrapper {
    display: block !important;
    width: 100% !important;
    font-size: 12px !important;
}
#yith-quick-view-modal form.cart .quantity {
    display: flex !important;
    width: 100% !important;
    margin: 0 0 10px !important;
}
#yith-quick-view-modal form.cart button.single_add_to_cart_button {
    display: flex !important;
    width: 100% !important;
    margin: 0 0 10px !important;
}
#yith-quick-view-modal form.cart .vastori-save-wrap {
    display: block !important;
    width: 100% !important;
    margin: 0 0 6px !important;
}
#yith-quick-view-modal form.cart .vastori-save-wrap .tinvwl_add_to_wishlist_button,
#yith-quick-view-modal form.cart .vastori-save-wrap a {
    width: 100% !important;
    display: flex !important;
    justify-content: center !important;
}
/* v0.9.109 — Quick-view add-to-cart polish (user report):
   (a) the quantity stepper overflowed its .quantity box and overlapped the
       Add-to-Bag button — give .quantity auto height + a real bottom gap and
       keep the stepper a tidy, fixed-width box;
   (b) the Add-to-Bag label sat left while Save-for-Later was centred — the
       button is a flex container, so it needs justify-content (not just
       text-align) to centre its label;
   (c) reserve the stock-slot height so "X in stock" appearing (after the
       quick-view pre-select in product-page.php) never shifts the layout. */
#yith-quick-view-modal form.cart .quantity {
    display: block !important;
    width: auto !important;
    height: auto !important;
    min-height: 0 !important;
    overflow: visible !important;
    margin: 0 0 14px !important;
}
#yith-quick-view-modal form.cart .vastori-qty-controls {
    width: 140px !important;
    max-width: 100% !important;
    margin: 0 !important;
    float: none !important;
}
#yith-quick-view-modal form.cart button.single_add_to_cart_button,
body.single-product .summary form.cart button.single_add_to_cart_button {
    justify-content: center !important;
    text-align: center !important;
}
#yith-quick-view-modal form.cart .vastori-stock-slot {
    min-height: 1.25em !important;
}
#yith-quick-view-modal div.product {
    display: block !important;
    width: 100% !important;
    height: auto !important;
    padding: 0 !important;
    margin: 0 !important;
    float: none !important;
}
/* image: full-width on top, contained height */
#yith-quick-view-modal div.product .images,
#yith-quick-view-modal div.product .woocommerce-product-gallery,
#yith-quick-view-modal div.product figure.woocommerce-product-gallery__wrapper {
    width: 100% !important;
    max-width: 100% !important;
    float: none !important;
    margin: 0 !important;
    padding: 0 !important;
}
#yith-quick-view-modal div.product .woocommerce-product-gallery img,
#yith-quick-view-modal div.product a.woocommerce-main-image img {
    width: 100% !important;
    height: auto !important;
    max-height: 46vh !important;
    object-fit: cover !important;
    margin: 0 !important;
    display: block !important;
}
/* the image is no longer a zoom target — drop the zoom cursor */
#yith-quick-view-modal div.product a.woocommerce-main-image,
#yith-quick-view-modal div.product a.woocommerce-main-image.zoom {
    cursor: default !important;
    pointer-events: none !important;
}
/* details below the image */
#yith-quick-view-modal div.product .summary,
#yith-quick-view-modal div.product div.summary.entry-summary {
    width: 100% !important;
    float: none !important;
    box-sizing: border-box !important;
    padding: 28px 34px 44px !important;
    margin: 0 !important;
}
#yith-quick-view-modal .product_title {
    font-family: var(--vastori-font-serif) !important;
}
/* The quick view renders a standalone TI-Wishlist "Add to Wishlist"
   button in ADDITION to our styled "Save for Later" (inside
   .vastori-save-wrap). Our JS strips the heart class off the wrapped
   button, so the only .tinvwl-icon-heart left belongs to the standalone
   duplicate — hide that wrapper, leave ours untouched. */
#yith-quick-view-modal .tinv-wraper:has(.tinvwl-icon-heart) {
    display: none !important;
}
/* Add to Bag + Save for Later read as a clean stacked pair in the
   narrow drawer. */
#yith-quick-view-modal .vastori-save-wrap .tinvwl_add_to_wishlist_button,
#yith-quick-view-modal .vastori-save-fallback {
    width: 100% !important;
    height: 50px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    border: 0.8px solid var(--vastori-ink) !important;
    background: transparent !important;
    color: var(--vastori-ink) !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 12px !important;
    letter-spacing: 0.24em !important;
    text-transform: uppercase !important;
}
/* close button — circular, top-right inside the drawer, over the image */
#yith-quick-view-modal .yith-wcqv-head {
    position: absolute !important;
    top: 16px !important;
    right: 16px !important;
    left: auto !important;
    width: 36px !important;
    height: 36px !important;
    z-index: 12 !important;
    background: rgba(255, 255, 255, 0.92) !important;
    border-radius: 50% !important;
    box-shadow: 0 1px 6px rgba(0, 0, 0, 0.12) !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
}
#yith-quick-view-modal .yith-wcqv-head a.yith-quick-view-close {
    color: var(--vastori-ink) !important;
    opacity: 1 !important;
    width: 18px !important;
    height: 18px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
}
#yith-quick-view-modal .yith-wcqv-head a.yith-quick-view-close svg {
    width: 18px !important;
    height: 18px !important;
}
/* dim overlay behind the drawer */
#yith-quick-view-modal {
    background: rgba(20, 24, 18, 0.42) !important;
}
@media (max-width: 600px) {
    #yith-quick-view-modal .yith-wcqv-wrapper { width: 100vw !important; }
    #yith-quick-view-modal div.product .woocommerce-product-gallery img,
    #yith-quick-view-modal div.product a.woocommerce-main-image img { max-height: 42vh !important; }
}

/* ============================================================
   22. Mobile refinements
   ============================================================ */
@media (max-width: 768px) {
    .vastori-hero { padding: 64px 20px 72px; }
    .vastori-hero .vastori-wordmark { font-size: clamp(52px, 14vw, 80px); }
    .vastori-hero .vastori-poem { font-size: 16px; line-height: 1.85; }

    .vastori-collection-grid { grid-template-columns: 1fr; gap: 12px; }
    .vastori-trust-badges-row { grid-template-columns: repeat(2, 1fr); gap: 24px; }
    .vastori-ig-grid { grid-template-columns: repeat(3, 1fr); }

    .site-title, .site-title a { font-size: 17px; letter-spacing: 0.24em; }
}

/* ============================================================
   99. Polish overrides — v0.3.1
   - Defeat Botiga UL/list defaults on the policy strip
   - Hide the "Home" page header on the front page
   - Hide front-end "Edit" link bleeding into hero
   - Restyle Botiga's bottom credit row from gray → cream
   ============================================================ */

/* Policy strip: re-declare with body-prefixed selectors + !important
   so we beat any Botiga `body ul` or `.site-footer ul` cascade. */
body .vastori-policy-strip {
    background-color: var(--vastori-cream) !important;
    border-top: 0.5px solid var(--vastori-hairline) !important;
    padding: 20px 24px !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 11px !important;
    letter-spacing: var(--vastori-track-wide) !important;
    text-transform: uppercase !important;
}

body .vastori-policy-strip ul.vastori-policy-list,
body .vastori-policy-strip ul#menu-secondary {
    list-style: none !important;
    margin: 0 !important;
    padding: 0 !important;
    display: flex !important;
    flex-wrap: wrap !important;
    justify-content: center !important;
    align-items: center !important;
    gap: 12px 20px !important;
}

body .vastori-policy-strip ul.vastori-policy-list li,
body .vastori-policy-strip ul#menu-secondary li {
    list-style: none !important;
    margin: 0 !important;
    padding: 0 !important;
    position: relative !important;
}

body .vastori-policy-strip ul.vastori-policy-list li::marker,
body .vastori-policy-strip ul#menu-secondary li::marker {
    content: "" !important;
}

body .vastori-policy-strip ul li + li {
    padding-left: 20px !important;
}

body .vastori-policy-strip ul li + li::before {
    content: "" !important;
    position: absolute !important;
    left: 0 !important;
    top: 50% !important;
    transform: translateY(-50%) !important;
    width: 1px !important;
    height: 10px !important;
    background-color: var(--vastori-line) !important;
}

body .vastori-policy-strip a,
body .vastori-policy-strip .botiga-dropdown-link {
    color: var(--vastori-ink-soft) !important;
    text-decoration: none !important;
    transition: color var(--vastori-dur-fast) var(--vastori-ease) !important;
}

body .vastori-policy-strip a:hover,
body .vastori-policy-strip a:focus,
body .vastori-policy-strip .botiga-dropdown-link:hover {
    color: var(--vastori-ink) !important;
}

@media (max-width: 480px) {
    body .vastori-policy-strip ul li + li { padding-left: 0 !important; }
    body .vastori-policy-strip ul li + li::before { display: none !important; }
}

/* Hide the WP-rendered "Home" page title on the front page.
   Botiga uses one of these wrappers depending on the page-header style. */
body.home .page-header,
body.home .botiga-page-header,
body.home .entry-header,
body.home .entry-title,
body.page-template-default.home > .page-title { display: none !important; }

/* Hide the front-end "Edit" link that WP/Botiga emit for logged-in
   editors. It's harmless but disrupts the hero block visually. */
body .post-edit-link,
.entry-footer .edit-link,
.botiga-edit-link { display: none !important; }

/* Restyle Botiga's bottom credit row so its gray background stops
   clashing with the cream brand palette. Match the surrounding tone
   and tighten the type to feel intentional, not boilerplate. */
.bhfb-below_footer_row,
.bhfb-row-wrapper.bhfb-below_footer_row {
    background-color: var(--vastori-cream) !important;
    color: var(--vastori-muted) !important;
    border-top: 0.5px solid var(--vastori-hairline) !important;
    padding: 18px 24px !important;
}

.bhfb-below_footer_row,
.bhfb-below_footer_row * {
    font-family: var(--vastori-font-sans) !important;
    font-size: 11px !important;
    letter-spacing: var(--vastori-track-wide) !important;
    text-transform: uppercase !important;
}

.bhfb-below_footer_row a {
    color: var(--vastori-ink-soft) !important;
    text-decoration: none !important;
}

.bhfb-below_footer_row a:hover { color: var(--vastori-ink) !important; }

/* ============================================================
   100. Primary header nav — fit 6 items on one row
   - Tighten letter-spacing from 0.22em (brand-wide) to 0.10em
   - Reduce per-item padding
   - Force nowrap so ABOUT doesn't drop to row 2
   ============================================================ */
@media (min-width: 768px) {
    #site-navigation .menu,
    #site-navigation > div > ul,
    .main-navigation > div > ul,
    .botiga-dropdown.main-navigation ul {
        flex-wrap: nowrap !important;
        white-space: nowrap !important;
    }

    #site-navigation .main-navigation a,
    #site-navigation a,
    .main-navigation > div > ul > li > a,
    .botiga-dropdown.main-navigation > div > ul > li > a {
        letter-spacing: 0.10em !important;
        padding-left: 10px !important;
        padding-right: 10px !important;
    }

    .botiga-dropdown.main-navigation > div > ul > li {
        margin: 0 !important;
    }
}

/* At narrower desktop widths (e.g. 768–1024), tighten one more notch
   in case the header column is still pinched between logo and icons. */
@media (min-width: 768px) and (max-width: 1100px) {
    #site-navigation a,
    .main-navigation > div > ul > li > a,
    .botiga-dropdown.main-navigation > div > ul > li > a {
        letter-spacing: 0.06em !important;
        padding-left: 8px !important;
        padding-right: 8px !important;
        font-size: 10.5px !important;
    }
}

/* ============================================================
   101. Header right-side polish — v0.3.3
   - Cart count badge: brand ink/sand, not Botiga's coral default
     (earlier .site-header .cart-count rule never matched because
     Botiga's BHFB renders cart under #site-header-cart, not .site-header)
   - Search + account + cart icon baselines aligned
   ============================================================ */

body .cart-count,
body .botiga-cart-icon-count,
body #site-header-cart .cart-count,
body .site-header-cart .cart-count,
body .header-item .cart-count,
body .cart-contents .cart-count,
body .cart-contents .count-number {
    background-color: var(--vastori-ink) !important;
    color: var(--vastori-sand) !important;
    border-radius: 50% !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 10px !important;
    font-weight: 500 !important;
    letter-spacing: 0 !important;
    text-transform: none !important;
    min-width: 16px !important;
    height: 16px !important;
    line-height: 16px !important;
    text-align: center !important;
    padding: 0 4px !important;
    box-sizing: border-box !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    box-shadow: none !important;
    border: none !important;
}

/* Header right-side icon strip — align search, account, cart on one baseline */
body .site-header .header-item,
body .site-header .header-item > a,
body .header-actions .header-item,
body .header-actions .header-item > a {
    display: inline-flex !important;
    align-items: center !important;
    vertical-align: middle !important;
    line-height: 1 !important;
}

body .site-header .header-item svg,
body .header-actions .header-item svg {
    width: 20px !important;
    height: 20px !important;
    vertical-align: middle !important;
    color: var(--vastori-ink) !important;
}

/* ============================================================
   102. Cart badge — split wrapper from count (v0.3.4 fix)
   The earlier rule styled .cart-count as the badge, but in the
   rendered DOM .cart-count is actually the wrapper containing
   <i class="ws-svg-icon"><svg/></i><span class="count-number"/>.
   So the wrapper went dark and swallowed the icon. Reset the
   wrapper; turn ONLY .count-number into the small ink circle
   pinned to the cart icon's top-right.
   ============================================================ */
body .cart-count,
body .cart-contents .cart-count,
body .botiga-cart-icon-count {
    background: transparent !important;
    background-color: transparent !important;
    width: auto !important;
    min-width: 0 !important;
    height: auto !important;
    border-radius: 0 !important;
    padding: 0 !important;
    box-shadow: none !important;
    color: inherit !important;
    position: relative !important;
    display: inline-flex !important;
    align-items: center !important;
    line-height: 1 !important;
}

body .count-number,
body .cart-contents .count-number,
body .cart-count .count-number {
    position: absolute !important;
    top: -6px !important;
    right: -8px !important;
    background-color: var(--vastori-ink) !important;
    color: var(--vastori-sand) !important;
    border-radius: 50% !important;
    min-width: 16px !important;
    width: 16px !important;
    height: 16px !important;
    line-height: 16px !important;
    font-size: 9px !important;
    font-weight: 500 !important;
    font-family: var(--vastori-font-sans) !important;
    letter-spacing: 0 !important;
    text-align: center !important;
    padding: 0 !important;
    box-shadow: 0 0 0 2px var(--vastori-sand) !important;
    display: inline-block !important;
    z-index: 1;
}

/* ============================================================
   103. "Read our story" CTA inside vastori/story pattern is
   cyclic on the About page itself (links to /about/). Hide it
   only there — keep it as the home page's narrative CTA.
   ============================================================ */
body.page-id-20 .vastori-story .wp-block-buttons,
body.page-id-20 .vastori-story .wp-block-button {
    display: none !important;
}

/* ============================================================
   104. Header / footer / nav polish — v0.3.4
   - Hide Botiga's big serif page title on pages whose content
     already provides an h1 (avoids duplicate Lookbook/FAQ/etc.)
   - Restrain it on the remaining pages (About, WC pages) so it
     feels intentional, not template-default huge
   - Style .botiga-credits footer copyright text
   - Slightly looser primary nav spacing for 6-item breathing
   (Cart badge sizing intentionally OMITTED — section 102 above
    handles wrapper-vs-count split for the icon-swallow fix.)
   ============================================================ */

/* Pages whose content has its own h1 — hide Botiga's auto title. */
body.page-id-21 .entry-header,   /* Lookbook */
body.page-id-22 .entry-header,   /* FAQ */
body.page-id-23 .entry-header,   /* Shipping */
body.page-id-24 .entry-header,   /* Returns */
body.page-id-25 .entry-header,   /* Privacy */
body.page-id-26 .entry-header,   /* Terms */
body.page-id-27 .entry-header,   /* Contact */
body.home .entry-header,
body.home .page-header,
body.home .botiga-page-header {
    display: none !important;
}

/* Remaining pages (About + WC pages): refined header instead of
   the default huge serif slab. Smaller h1, less vertical space. */
body .entry-header,
body .botiga-page-header {
    background-color: var(--vastori-cream) !important;
    padding: 48px 24px 32px !important;
    text-align: center !important;
    border-bottom: 0.5px solid var(--vastori-hairline) !important;
}

body .entry-header .entry-title,
body .entry-header .page-title,
body .botiga-page-header .entry-title,
body .botiga-page-header .page-title {
    font-family: var(--vastori-font-serif) !important;
    font-size: 36px !important;
    font-weight: 400 !important;
    letter-spacing: 0.01em !important;
    color: var(--vastori-ink) !important;
    margin: 0 !important;
    line-height: 1.2 !important;
}

@media (max-width: 480px) {
    body .entry-header,
    body .botiga-page-header { padding: 32px 16px 24px !important; }
    body .entry-header .entry-title,
    body .entry-header .page-title,
    body .botiga-page-header .entry-title,
    body .botiga-page-header .page-title { font-size: 28px !important; }
}

/* WooCommerce shop / category archive headers — same refined size. */
body .woocommerce-products-header,
body .woocommerce-products-header__title,
body .term-description {
    text-align: center !important;
}

body .woocommerce-products-header__title.page-title {
    font-family: var(--vastori-font-serif) !important;
    font-size: 36px !important;
    font-weight: 400 !important;
    letter-spacing: 0.01em !important;
    color: var(--vastori-ink) !important;
    margin: 0 0 12px !important;
}

body .term-description {
    font-family: var(--vastori-font-sans) !important;
    font-size: 13px !important;
    color: var(--vastori-ink-soft) !important;
    letter-spacing: var(--vastori-track-normal) !important;
    max-width: 540px;
    margin: 0 auto !important;
}

/* Credit row text: target .botiga-credits specifically since
   the previous .bhfb-below_footer_row rule didn't catch the
   inner copyright div. */
body .botiga-credits,
body .bhfb-component-copyright .botiga-credits,
body .bhfb-below_footer_row .botiga-credits {
    color: var(--vastori-muted) !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 11px !important;
    letter-spacing: var(--vastori-track-wide) !important;
    text-transform: uppercase !important;
    text-align: center !important;
}

body .botiga-credits a {
    color: var(--vastori-ink-soft) !important;
    text-decoration: none !important;
}

body .botiga-credits a:hover {
    color: var(--vastori-ink) !important;
}

/* Slightly more breathing room between primary nav items at
   desktop widths (was 10/8px, bumping to 14/12px) so the row
   doesn't feel cramped now that all 6 fit. */
@media (min-width: 1101px) {
    #site-navigation .main-navigation a,
    #site-navigation a,
    .main-navigation > div > ul > li > a,
    .botiga-dropdown.main-navigation > div > ul > li > a {
        padding-left: 14px !important;
        padding-right: 14px !important;
    }
}
@media (min-width: 768px) and (max-width: 1100px) {
    #site-navigation a,
    .main-navigation > div > ul > li > a,
    .botiga-dropdown.main-navigation > div > ul > li > a {
        padding-left: 12px !important;
        padding-right: 12px !important;
    }
}

/* ============================================================
   104. Custom logo polish — v0.4.1
   - Hide the duplicated site-title + tagline now that a real logo
     PNG is set (Botiga doesn't auto-hide them on this layout).
   - Cap logo height so the 1600x400 source doesn't dominate the
     header row.
   ============================================================ */
body .site-branding .site-title,
body .site-branding .site-description,
body .bhfb-component-logo .site-title,
body .bhfb-component-logo .site-description {
    display: none !important;
}

body .custom-logo,
body .site-header .custom-logo,
body .bhfb-component-logo .custom-logo {
    max-height: 56px !important;
    width: auto !important;
    height: auto !important;
    max-width: 220px !important;
    object-fit: contain;
}

@media (max-width: 768px) {
    body .custom-logo {
        max-height: 44px !important;
        max-width: 160px !important;
    }
}

/* ============================================================
   200. toa.st calibration (v0.5.0)
   A comprehensive editorial pass: olive outline buttons, refined
   product cards, lighter headings, tighter header, restyled
   page-headers, single-product polish. Uses the v0.4.2 olive tokens.
   ============================================================ */

/* ---- 200.1 Editorial type rhythm ------------------------- */
body,
body.botiga {
    background-color: var(--vastori-sand);
    font-size: 14px;
    line-height: 1.75;
    color: var(--vastori-ink-soft);
}

body h1, body h2, body h3, body h4, body h5, body h6 {
    font-family: var(--vastori-font-serif) !important;
    font-weight: 400 !important;
    color: var(--vastori-ink) !important;
    letter-spacing: -0.005em !important;
    line-height: 1.12 !important;
}

body h1 { font-size: clamp(36px, 5.4vw, 56px) !important; }
body h2 { font-size: clamp(28px, 3.4vw, 40px) !important; }
body h3 { font-size: clamp(20px, 2vw, 26px) !important; }

body p {
    font-size: 14px;
    line-height: 1.85;
    color: var(--vastori-ink-soft);
}

/* All-caps small label across the site */
body .vastori-overline,
body .vastori-section-sub {
    font-family: var(--vastori-font-sans) !important;
    font-size: 10.5px !important;
    letter-spacing: 0.32em !important;
    color: var(--vastori-muted) !important;
    text-transform: uppercase !important;
    font-weight: 500 !important;
}

/* ---- 200.2 Header — tighter editorial header ------------ */
body .site-header,
body .botiga-header-row,
body .bhfb-header,
body .bhfb-main_header_row {
    background-color: var(--vastori-sand) !important;
    border-bottom: 0.5px solid var(--vastori-hairline) !important;
    box-shadow: none !important;
}

body .bhfb-main_header_row .bhfb-row {
    padding-top: 18px !important;
    padding-bottom: 18px !important;
}

body .custom-logo,
body .site-header .custom-logo,
body .bhfb-component-logo .custom-logo {
    max-height: 40px !important;
    max-width: 180px !important;
}

/* v0.7.2 — HTML text wordmark (replaces inline SVG for sharper
   rendering at small display sizes). Color inherits --vastori-ink. */
body .vastori-wordmark-logo,
body .custom-logo-link.vastori-wordmark-logo {
    display: inline-flex !important;
    align-items: center;
    text-decoration: none !important;
    line-height: 1 !important;
    padding: 0 !important;
    margin: 0 !important;
}

body .vastori-wordmark-logo__text {
    font-family: var(--vastori-font-serif) !important;
    font-weight: 500 !important;
    font-size: 32px !important;
    letter-spacing: 0.04em !important;
    color: var(--vastori-ink) !important;
    line-height: 1 !important;
    white-space: nowrap;
}

body .vastori-wordmark-logo:hover .vastori-wordmark-logo__text {
    color: var(--vastori-muted) !important;
    opacity: 1 !important;
}

@media (max-width: 768px) {
    body .vastori-wordmark-logo__text {
        font-size: 26px !important;
    }
}

@media (max-width: 768px) {
    body .custom-logo { max-height: 32px !important; max-width: 130px !important; }
}

/* ---- 200.3 Buttons — toa.st outline olive system -------- */
body .wp-block-button .wp-block-button__link,
body .wp-block-button__link,
body .woocommerce a.button,
body .woocommerce button.button,
body .woocommerce input.button,
body .woocommerce #respond input#submit,
body .woocommerce .button.alt,
body button[type="submit"]:not(.search-submit):not(.dgwt-wcas-search-submit),
body input[type="submit"],
body .single_add_to_cart_button {
    background-color: transparent !important;
    background: transparent !important;
    color: var(--vastori-ink) !important;
    border: 1px solid var(--vastori-ink) !important;
    border-radius: 0 !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 11px !important;
    font-weight: 500 !important;
    letter-spacing: 0.24em !important;
    text-transform: uppercase !important;
    padding: 14px 28px !important;
    line-height: 1 !important;
    box-shadow: none !important;
    text-shadow: none !important;
    transition: background-color 0.25s var(--vastori-ease), color 0.25s var(--vastori-ease) !important;
    cursor: pointer;
}

body .wp-block-button .wp-block-button__link:hover,
body .wp-block-button__link:hover,
body .woocommerce a.button:hover,
body .woocommerce button.button:hover,
body .woocommerce input.button:hover,
body .woocommerce #respond input#submit:hover,
body .woocommerce .button.alt:hover,
body .single_add_to_cart_button:hover {
    background-color: var(--vastori-ink) !important;
    color: var(--vastori-sand) !important;
    opacity: 1 !important;
}

/* Outline-style buttons (block editor "outline" style) — already
   transparent; keep the same calibration but slightly tighter. */
body .is-style-outline .wp-block-button__link {
    background-color: transparent !important;
    color: var(--vastori-ink) !important;
    border: 1px solid var(--vastori-ink) !important;
    padding: 13px 30px !important;
}

/* ---- 200.4 Product card — editorial grid ---------------- */
body .woocommerce ul.products,
body .woocommerce .products.columns-3,
body .woocommerce .products.columns-4,
body .woocommerce-page ul.products {
    gap: 56px 28px !important;
    margin-top: 24px !important;
}

body .woocommerce ul.products li.product,
body .woocommerce-page ul.products li.product {
    margin: 0 !important;
    background: transparent !important;
    padding: 0 !important;
    text-align: left !important;
}

body .woocommerce ul.products li.product a img,
body .woocommerce-page ul.products li.product a img {
    margin-bottom: 18px !important;
    aspect-ratio: 4/5;
    object-fit: cover;
    width: 100% !important;
    height: auto !important;
    box-shadow: none !important;
    transition: opacity 0.35s var(--vastori-ease);
}

body .woocommerce ul.products li.product:hover a img {
    opacity: 0.88;
}

body .woocommerce ul.products li.product .woocommerce-loop-product__title,
body .woocommerce ul.products li.product h2,
body .woocommerce ul.products li.product h3,
body .woocommerce-page ul.products li.product .woocommerce-loop-product__title {
    font-family: var(--vastori-font-serif) !important;
    font-size: 15px !important;
    font-weight: 400 !important;
    line-height: 1.35 !important;
    color: var(--vastori-ink) !important;
    margin: 0 0 6px !important;
    padding: 0 !important;
    text-align: left !important;
    letter-spacing: 0 !important;
}

body .woocommerce ul.products li.product .price,
body .woocommerce-page ul.products li.product .price,
body .woocommerce ul.products li.product .price ins,
body .woocommerce ul.products li.product .price .amount {
    font-family: var(--vastori-font-sans) !important;
    font-size: 12px !important;
    font-weight: 400 !important;
    color: var(--vastori-muted) !important;
    letter-spacing: 0.04em !important;
    text-align: left !important;
}

body .woocommerce ul.products li.product .price del { opacity: 0.5 !important; }

/* Hide the "Add to bag" button on archive cards — toa.st keeps
   cards quiet; tap card → product page → add there. */
body .woocommerce ul.products li.product .button,
body .woocommerce-page ul.products li.product .button,
body .woocommerce ul.products li.product .add_to_cart_button,
body .woocommerce ul.products li.product .added_to_cart {
    display: none !important;
}

/* v0.9.102 — On cards, our branded .vastori-card-badge--sale already shows
   "Sale" top-left, so hide WooCommerce's default .onsale there (was a
   duplicate badge in the same corner). */
body .woocommerce ul.products li.product .onsale {
    display: none !important;
}
/* Onsale badge styling kept for single/other contexts. */
body .woocommerce span.onsale {
    background: transparent !important;
    color: var(--vastori-muted) !important;
    border: 0.5px solid var(--vastori-muted) !important;
    border-radius: 0 !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 9.5px !important;
    font-weight: 500 !important;
    letter-spacing: 0.2em !important;
    text-transform: uppercase !important;
    padding: 4px 8px !important;
    min-width: 0 !important;
    min-height: 0 !important;
    line-height: 1 !important;
    top: 12px !important;
    left: 12px !important;
    right: auto !important;
    box-shadow: none !important;
}

/* ---- 200.5 Page-header / archive title — editorial ----- */
body .entry-header,
body .botiga-page-header,
body .woocommerce-products-header {
    background-color: var(--vastori-sand) !important;
    padding: 56px 24px 36px !important;
    text-align: center !important;
    border-bottom: 0.5px solid var(--vastori-hairline) !important;
}

body .entry-header .entry-title,
body .entry-header .page-title,
body .botiga-page-header .entry-title,
body .botiga-page-header .page-title,
body .woocommerce-products-header__title {
    font-family: var(--vastori-font-serif) !important;
    font-size: 32px !important;
    font-weight: 400 !important;
    color: var(--vastori-ink) !important;
    margin: 0 !important;
    letter-spacing: 0 !important;
    line-height: 1.15 !important;
}

@media (max-width: 480px) {
    body .entry-header,
    body .botiga-page-header,
    body .woocommerce-products-header { padding: 36px 16px 24px !important; }
    body .entry-header .entry-title,
    body .entry-header .page-title,
    body .woocommerce-products-header__title { font-size: 24px !important; }
}

/* WC breadcrumb above title — small caps olive */
body .woocommerce-breadcrumb {
    font-family: var(--vastori-font-sans) !important;
    font-size: 10.5px !important;
    letter-spacing: 0.22em !important;
    text-transform: uppercase !important;
    color: var(--vastori-muted) !important;
    text-align: center !important;
    margin: 0 0 18px !important;
}

body .woocommerce-breadcrumb a {
    color: var(--vastori-muted) !important;
}

body .woocommerce-breadcrumb a:hover { color: var(--vastori-ink) !important; }

/* WC result count + sorting — quiet meta strip */
body .woocommerce .woocommerce-result-count,
body .woocommerce-page .woocommerce-result-count {
    font-family: var(--vastori-font-sans) !important;
    font-size: 11px !important;
    color: var(--vastori-muted) !important;
    letter-spacing: 0.12em !important;
    text-transform: uppercase !important;
    margin-bottom: 24px !important;
}

body .woocommerce .woocommerce-ordering select,
body .woocommerce-page .woocommerce-ordering select {
    background: transparent !important;
    border: 1px solid var(--vastori-line) !important;
    border-radius: 0 !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 11px !important;
    letter-spacing: 0.12em !important;
    text-transform: uppercase !important;
    color: var(--vastori-ink) !important;
    padding: 10px 36px 10px 14px !important;
}

/* ---- 200.6 Single product page polish ------------------ */
body .single-product .product .product_title,
body .single-product .product h1.product_title {
    font-family: var(--vastori-font-serif) !important;
    font-size: clamp(28px, 3.5vw, 38px) !important;
    font-weight: 400 !important;
    color: var(--vastori-ink) !important;
    letter-spacing: 0 !important;
    margin: 0 0 18px !important;
}

body .single-product .summary .price,
body .single-product .summary .price .amount {
    font-family: var(--vastori-font-sans) !important;
    font-size: 17px !important;
    font-weight: 400 !important;
    color: var(--vastori-ink) !important;
    letter-spacing: 0.02em !important;
}

body .single-product .summary .woocommerce-product-details__short-description {
    color: var(--vastori-ink-soft) !important;
    font-size: 14px !important;
    line-height: 1.85 !important;
    margin: 24px 0 !important;
}

body .single-product .product .quantity input {
    border: 1px solid var(--vastori-ink) !important;
    border-radius: 0 !important;
    background: transparent !important;
    color: var(--vastori-ink) !important;
    font-family: var(--vastori-font-sans) !important;
    height: 48px !important;
}

body .single-product .related,
body .single-product .upsells {
    border-top: 0.5px solid var(--vastori-hairline) !important;
    padding-top: 64px !important;
    margin-top: 80px !important;
}

body .single-product .related > h2,
body .single-product .upsells > h2 {
    font-family: var(--vastori-font-serif) !important;
    font-size: 22px !important;
    text-align: center !important;
    margin-bottom: 40px !important;
}

/* ---- 200.7 Forms, inputs — editorial -------------------- */
body input[type="text"],
body input[type="email"],
body input[type="tel"],
body input[type="number"],
body input[type="password"],
body input[type="search"],
body textarea,
body select {
    background: transparent !important;
    border: 1px solid var(--vastori-line) !important;
    border-radius: 0 !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 13px !important;
    color: var(--vastori-ink) !important;
    padding: 12px 14px !important;
    transition: border-color 0.2s var(--vastori-ease);
}

body input[type="text"]:focus,
body input[type="email"]:focus,
body textarea:focus,
body select:focus {
    border-color: var(--vastori-ink) !important;
    outline: none !important;
}

/* ---- 200.8 Links — quiet ink, olive hover -------------- */
body a {
    color: var(--vastori-ink);
    text-decoration: none;
    transition: color 0.2s var(--vastori-ease);
}

body a:hover, body a:focus {
    color: var(--vastori-muted);
    opacity: 1 !important;
}

/* ---- 200.9 Hero refinement (toa.st calmer) ------------- */
body .vastori-hero {
    padding: 100px 24px 110px !important;
}

body .vastori-hero .vastori-wordmark {
    font-size: clamp(56px, 8vw, 90px) !important;
    letter-spacing: 0.03em !important;
}

body .vastori-hero .vastori-poem {
    font-family: var(--vastori-font-serif) !important;
    font-style: italic;
    font-size: clamp(16px, 1.5vw, 19px) !important;
    line-height: 2 !important;
    color: var(--vastori-ink-soft) !important;
    max-width: 480px !important;
}

body .vastori-hero .vastori-cta .wp-block-button__link {
    /* v0.9.83 — match the 0.24em tracking of the site-wide button system
       (was 0.32em, the lone letter-spacing outlier across all CTAs). */
    letter-spacing: 0.24em !important;
}

/* ---- 200.10 Promo strip + footer credit ---------------- */
body .vastori-promo {
    background-color: var(--vastori-ink) !important;
    color: var(--vastori-sand) !important;
    padding: 12px 24px !important;
    border-bottom: 0;
}

body .vastori-promo p,
body .vastori-promo a {
    font-family: var(--vastori-font-sans) !important;
    font-size: 11px !important;
    letter-spacing: 0.18em !important;
    text-transform: uppercase !important;
    color: var(--vastori-sand) !important;
    margin: 0 !important;
}

body .vastori-promo a {
    text-decoration: underline;
    text-underline-offset: 4px;
}

body .vastori-promo a:hover {
    color: var(--vastori-cocoa) !important;
}

/* ============================================================
   300. toa.st v0.6.0 — full editorial calibration
   Stacks on top of Section 200. Overrides where v0.5.0 was
   subtly wrong for a true toa.st match.
   ============================================================ */

/* ---- 300.1 Filled-by-default button system ---------------
   v0.5.0 had buttons outline-by-default, fill-on-hover.
   toa.st uses filled-by-default (forest on cream), then
   reverses to outline on hover. Flip primary buttons. The
   .is-style-outline (block editor outline style) stays as
   the secondary/outline variant. */
body .wp-block-button:not(.is-style-outline) .wp-block-button__link,
body .wp-block-button__link:not(.is-style-outline):not(.is-style-outline--4),
body .woocommerce a.button:not(.is-style-outline),
body .woocommerce button.button:not(.is-style-outline),
body .woocommerce input.button:not(.is-style-outline),
body .woocommerce #respond input#submit,
body .woocommerce .button.alt,
body .single_add_to_cart_button {
    background-color: var(--vastori-ink) !important;
    background: var(--vastori-ink) !important;
    color: var(--vastori-sand) !important;
    border: 1px solid var(--vastori-ink) !important;
}

body .wp-block-button:not(.is-style-outline) .wp-block-button__link:hover,
body .wp-block-button__link:not(.is-style-outline):hover,
body .woocommerce a.button:not(.is-style-outline):hover,
body .woocommerce button.button:not(.is-style-outline):hover,
body .woocommerce input.button:not(.is-style-outline):hover,
body .woocommerce #respond input#submit:hover,
body .woocommerce .button.alt:hover,
body .single_add_to_cart_button:hover {
    background-color: transparent !important;
    background: transparent !important;
    color: var(--vastori-ink) !important;
    border: 1px solid var(--vastori-ink) !important;
}

/* Outline-style buttons (e.g. hero "Enter the Collection")
   keep their outline default and fill on hover — the
   inverse of the primary buttons above. */
body .is-style-outline .wp-block-button__link,
body .wp-block-button.is-style-outline .wp-block-button__link {
    background-color: transparent !important;
    color: var(--vastori-ink) !important;
    border: 1px solid var(--vastori-ink) !important;
}

body .is-style-outline .wp-block-button__link:hover,
body .wp-block-button.is-style-outline .wp-block-button__link:hover {
    background-color: var(--vastori-ink) !important;
    color: var(--vastori-sand) !important;
}

/* ---- 300.2 Product cards on white surface -------------- */
body .woocommerce ul.products li.product,
body .woocommerce-page ul.products li.product {
    background: var(--vastori-surface) !important;
    padding: 12px 12px 18px !important;
}

body .woocommerce ul.products li.product .woocommerce-loop-product__title,
body .woocommerce ul.products li.product h2,
body .woocommerce ul.products li.product h3 {
    color: var(--vastori-ink) !important;   /* now forest green */
    padding: 0 4px !important;
}

body .woocommerce ul.products li.product .price,
body .woocommerce ul.products li.product .price .amount {
    color: var(--vastori-ink) !important;   /* price also forest, like toa.st */
    padding: 0 4px !important;
}

/* ---- 300.3 Nav links colored forest ------------------- */
body #site-navigation a,
body .main-navigation a,
body .botiga-dropdown-link {
    color: var(--vastori-ink) !important;
}

body #site-navigation a:hover,
body .main-navigation a:hover,
body .botiga-dropdown-link:hover {
    color: var(--vastori-muted) !important;
    opacity: 1 !important;
}

/* ---- 300.4 Cormorant Garamond sizing recalibrated -----
   Cormorant is lighter/more elegant than DM Serif. Headings
   need slight scale-up + tighter line-height to feel anchored. */
body h1, body h2, body h3, body h4, body h5, body h6 {
    font-weight: 500 !important;   /* was 400 — Cormorant runs lighter */
    letter-spacing: 0 !important;
}

body h1 { font-size: clamp(40px, 6vw, 64px) !important; line-height: 1.1 !important; }
body h2 { font-size: clamp(30px, 3.6vw, 44px) !important; line-height: 1.15 !important; }
body h3 { font-size: clamp(22px, 2.2vw, 28px) !important; line-height: 1.2 !important; }

/* Hero wordmark needs the most love — Cormorant at huge size
   reads beautifully but the letter-spacing wants to be wider. */
body .vastori-hero .vastori-wordmark {
    font-size: clamp(64px, 9vw, 104px) !important;
    font-weight: 500 !important;
    letter-spacing: 0.04em !important;
}

/* ---- 300.5 Section padding more generous -------------- */
body .vastori-hero { padding: 120px 24px 130px !important; }
body .vastori-featured-collections { padding: 100px 24px !important; }
body .vastori-trust-badges { padding: 80px 24px !important; }

/* ---- 300.6 Promo top strip stays ink, ensure new sand
        contrast still works -------------------------------- */
body .vastori-promo {
    background-color: var(--vastori-ink) !important;
}

/* ============================================================
   400. India regional notice pill (v0.6.0)
   Subtle bottom-right fixed pill, toa.st-style. Dismissable for
   the browser session. Renders via inc/region-notice.php hooked
   to wp_footer.
   ============================================================ */
.vastori-region-pill {
    position: fixed;
    bottom: 20px;
    right: 20px;
    z-index: 999;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background-color: var(--vastori-cream);
    border: 0.5px solid var(--vastori-line);
    padding: 10px 14px 10px 16px;
    font-family: var(--vastori-font-sans);
    font-size: 10.5px;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--vastori-ink);
    box-shadow: 0 1px 6px rgba(42, 61, 39, 0.04);
}

.vastori-region-pill__label {
    color: var(--vastori-muted);
}

.vastori-region-pill__country {
    font-weight: 500;
    color: var(--vastori-ink);
}

.vastori-region-pill__close {
    background: transparent;
    border: 0;
    color: var(--vastori-muted);
    font-size: 18px;
    line-height: 1;
    margin-left: 8px;
    padding: 0 2px;
    cursor: pointer;
    transition: color 0.2s var(--vastori-ease);
}

.vastori-region-pill__close:hover {
    color: var(--vastori-ink);
}

@media (max-width: 480px) {
    .vastori-region-pill {
        bottom: 12px;
        right: 12px;
        padding: 8px 10px 8px 12px;
        font-size: 9.5px;
    }
    .vastori-region-pill__close { font-size: 16px; }
}

/* ============================================================
   500. WC archive layout — toa.st alignment (v0.6.2)
   Removes the giant white void between site header and product
   grid on /shop/ and /product-category/*. Hides the redundant
   page title + breadcrumb (the nav already says SHOP). Tightens
   the result-count / sort row to sit immediately under the
   sticky site header. Continues uniformly across the page bg.
   ============================================================ */

/* Hide the page-title header block on WC archive pages */
body.woocommerce-shop .woocommerce-products-header,
body.woocommerce-shop .entry-header,
body.woocommerce-shop .page-header,
body.archive.post-type-archive-product .woocommerce-products-header,
body.archive.post-type-archive-product .entry-header,
body.tax-product_cat .woocommerce-products-header,
body.tax-product_cat .entry-header,
body.tax-product_cat .page-header {
    display: none !important;
}

/* Hide the breadcrumb on WC archive pages (toa.st doesn't show one
   on category pages; nav already provides context) */
body.woocommerce-shop .woocommerce-breadcrumb,
body.archive.post-type-archive-product .woocommerce-breadcrumb,
body.tax-product_cat .woocommerce-breadcrumb {
    display: none !important;
}

/* Tighten the wrapper around the product loop so the result-count
   strip sits immediately under the sticky header */
body.woocommerce-shop .content-wrapper,
body.archive.post-type-archive-product .content-wrapper,
body.tax-product_cat .content-wrapper {
    padding-top: 24px !important;
}

body.woocommerce-shop #primary,
body.archive.post-type-archive-product #primary,
body.tax-product_cat #primary {
    padding-top: 0 !important;
}

/* Result count + sort row — compact horizontal strip flush
   against the page bg (no separate sand band) */
body.woocommerce-shop .woocommerce-notices-wrapper + .woocommerce-result-count,
body.woocommerce-shop .woocommerce-result-count,
body.archive.post-type-archive-product .woocommerce-result-count,
body.tax-product_cat .woocommerce-result-count {
    background-color: transparent !important;
    margin: 8px 0 32px !important;
    padding: 0 !important;
    text-align: left !important;
}

body.woocommerce-shop .woocommerce-ordering,
body.archive.post-type-archive-product .woocommerce-ordering,
body.tax-product_cat .woocommerce-ordering {
    background-color: transparent !important;
    margin: 8px 0 32px !important;
    padding: 0 !important;
    float: right !important;
}

/* Force consistent page background across the entire WC archive
   surface — eliminates the white-band-between-header-and-products
   that BHFB sometimes introduces. */
body.woocommerce-shop,
body.woocommerce-shop #page,
body.woocommerce-shop .site-content,
body.archive.post-type-archive-product,
body.archive.post-type-archive-product #page,
body.archive.post-type-archive-product .site-content,
body.tax-product_cat,
body.tax-product_cat #page,
body.tax-product_cat .site-content {
    background-color: var(--vastori-sand) !important;
}

body.woocommerce-shop .content-wrapper,
body.archive.post-type-archive-product .content-wrapper,
body.tax-product_cat .content-wrapper {
    background-color: transparent !important;
}

/* Mobile: tighten the gap further */
@media (max-width: 768px) {
    body.woocommerce-shop .content-wrapper,
    body.archive.post-type-archive-product .content-wrapper,
    body.tax-product_cat .content-wrapper {
        padding-top: 16px !important;
    }
}

/* ============================================================
   600. toa.st parity push (v0.7.0)
   Promo ribbon with country pill, inline header search,
   multi-column footer, bottom country row.
   ============================================================ */

/* ---- 600.1 Promo ribbon — Toast-style black band ------- */
body .vastori-promo {
    background-color: var(--vastori-ink) !important;
    padding: 10px 32px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    border: 0 !important;
}

body .vastori-promo p {
    font-family: var(--vastori-font-sans) !important;
    font-size: 11px !important;
    font-weight: 500 !important;
    letter-spacing: 0.12em !important;
    text-transform: uppercase !important;
    color: #ffffff !important;
    margin: 0 !important;
    text-align: left !important;
    flex: 1;
}

body .vastori-promo p.has-text-align-center {
    text-align: left !important;
}

body .vastori-promo a {
    color: #ffffff !important;
    text-decoration: underline;
    text-underline-offset: 3px;
}

body .vastori-promo a:hover {
    color: var(--vastori-line) !important;
}

/* Country pill rendered via inc/promo-country.php */
.vastori-country-pill {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-family: var(--vastori-font-sans);
    font-size: 11px;
    font-weight: 500;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: #ffffff;
    white-space: nowrap;
}

.vastori-country-pill__flag {
    font-size: 14px;
    line-height: 1;
}

/* ---- 600.2 Inline header search ----------------------- */
/* Always show the search FORM (not the icon toggle). Hide the
   click-to-open icon and let the form sit inline in the right
   column of the BHFB header. */
@media (min-width: 992px) {
    body .bhfb-component-search > a.header-search {
        display: none !important;
    }

    body .header-search-form,
    body .header-search-form-row {
        position: static !important;
        display: block !important;
        background: transparent !important;
        padding: 0 !important;
        margin: 0 !important;
        max-width: 220px !important;
        width: 220px !important;
        opacity: 1 !important;
        visibility: visible !important;
        height: auto !important;
    }

    /* Place the search form inside the right column of the main
       header row, before the WC icons. */
    body .bhfb-component-search {
        order: -1;
        margin-right: 16px;
    }

    body .header-search-form form,
    body .header-search-form-row form {
        display: flex !important;
        align-items: center !important;
        background: transparent !important;
        border-bottom: 0.5px solid var(--vastori-ink) !important;
        padding: 0 !important;
    }

    body .header-search-form input[type="search"],
    body .header-search-form-row input[type="search"],
    body .header-search-form .search-field {
        background: transparent !important;
        border: 0 !important;
        font-family: var(--vastori-font-sans) !important;
        font-size: 11px !important;
        letter-spacing: 0.2em !important;
        text-transform: uppercase !important;
        color: var(--vastori-ink) !important;
        padding: 8px 4px !important;
        flex: 1;
    }

    body .header-search-form input[type="search"]::placeholder,
    body .header-search-form-row input[type="search"]::placeholder {
        color: var(--vastori-muted) !important;
        opacity: 1;
        letter-spacing: 0.2em;
    }

    body .header-search-form .search-submit,
    body .header-search-form-row .search-submit {
        background: transparent !important;
        border: 0 !important;
        padding: 4px 8px !important;
        color: var(--vastori-ink) !important;
    }

    body .header-search-form .search-submit svg,
    body .header-search-form-row .search-submit svg {
        width: 14px !important;
        height: 14px !important;
    }
}

/* ---- 600.3 Custom multi-column footer ----------------- */
.vastori-footer-cols {
    background-color: var(--vastori-sand) !important;
    padding: 64px 32px 48px !important;
    border-top: 0.5px solid var(--vastori-hairline);
}

.vastori-footer-cols__grid {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr 1.5fr;
    gap: 48px;
    max-width: 1280px;
    margin: 0 auto;
}

.vastori-footer-cols__heading {
    font-family: var(--vastori-font-sans) !important;
    font-size: 11px !important;
    font-weight: 500 !important;
    letter-spacing: 0.18em !important;
    text-transform: uppercase !important;
    color: var(--vastori-ink) !important;
    margin: 0 0 24px !important;
}

.vastori-footer-cols__list {
    list-style: none;
    margin: 0;
    padding: 0;
}

.vastori-footer-cols__list li {
    margin: 0 0 12px;
}

.vastori-footer-cols__list a {
    font-family: var(--vastori-font-sans) !important;
    font-size: 13px !important;
    color: var(--vastori-ink-soft) !important;
    text-decoration: none;
}

.vastori-footer-cols__list a:hover {
    color: var(--vastori-ink) !important;
    opacity: 1 !important;
}

/* Newsletter column */
.vastori-newsletter__intro {
    font-family: var(--vastori-font-sans) !important;
    font-size: 13px !important;
    color: var(--vastori-ink-soft) !important;
    line-height: 1.6 !important;
    margin: 0 0 18px !important;
}

.vastori-newsletter__form {
    display: flex;
    align-items: center;
    border-bottom: 0.5px solid var(--vastori-ink);
    margin-bottom: 24px;
}

.vastori-newsletter__form input[type="email"] {
    flex: 1;
    border: 0 !important;
    background: transparent !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 13px !important;
    color: var(--vastori-ink) !important;
    padding: 10px 0 !important;
}

.vastori-newsletter__form input[type="email"]::placeholder {
    color: var(--vastori-muted);
}

.vastori-newsletter__form button {
    background: transparent !important;
    border: 0 !important;
    color: var(--vastori-ink) !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 11px !important;
    font-weight: 500 !important;
    letter-spacing: 0.22em !important;
    text-transform: uppercase !important;
    padding: 10px 0 10px 12px !important;
    cursor: pointer;
}

.vastori-newsletter__form button:hover {
    color: var(--vastori-muted) !important;
}

/* v0.9.99 — Mobile footer: the 4-column grid had no breakpoint, so on a
   phone each column was ~60px (text wrapped to single words) and the
   newsletter form overflowed the viewport. Collapse to two columns, give
   the newsletter its own full-width row, and stack its input + button. */
@media (max-width: 768px) {
    .vastori-footer-cols { padding: 40px 20px 32px !important; }
    .vastori-footer-cols__grid {
        grid-template-columns: 1fr 1fr !important;
        gap: 28px 20px !important;
    }
    .vastori-footer-cols__grid > *:last-child {
        grid-column: 1 / -1 !important;
    }
    .vastori-footer-cols__list a { font-size: 14px !important; }
    .vastori-newsletter__form { flex-wrap: wrap !important; }
    .vastori-newsletter__form input[type="email"] {
        flex: 1 1 100% !important;
        width: 100% !important;
    }
    .vastori-newsletter__form button {
        padding-left: 0 !important;
        margin-top: 6px !important;
    }
    /* belt-and-braces: nothing in the footer pushes past the viewport */
    .vastori-footer-cols,
    .vastori-footer-cols__grid { max-width: 100% !important; overflow-x: hidden !important; }
}
@media (max-width: 480px) {
    .vastori-footer-cols__grid { grid-template-columns: 1fr !important; gap: 28px !important; }
}

.vastori-social {
    display: flex;
    gap: 16px;
}

.vastori-social a {
    color: var(--vastori-ink) !important;
    transition: color 0.2s var(--vastori-ease);
}

.vastori-social a:hover {
    color: var(--vastori-muted) !important;
}

.vastori-social svg {
    width: 18px;
    height: 18px;
    display: block;
}

/* Bottom country row */
.vastori-footer-bottom {
    background-color: var(--vastori-sand) !important;
    padding: 16px 32px !important;
    display: flex;
    align-items: center;
    justify-content: space-between;
    border-top: 0.5px solid var(--vastori-hairline);
    font-family: var(--vastori-font-sans);
    font-size: 11px;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--vastori-muted);
}

.vastori-footer-bottom a {
    color: var(--vastori-muted) !important;
    margin-left: 28px;
}

.vastori-footer-bottom a:hover {
    color: var(--vastori-ink) !important;
}

.vastori-footer-bottom__country {
    display: inline-flex;
    align-items: center;
    gap: 8px;
}

@media (max-width: 768px) {
    .vastori-footer-cols__grid {
        grid-template-columns: 1fr 1fr;
        gap: 36px 24px;
    }
    .vastori-footer-bottom {
        flex-direction: column;
        gap: 12px;
        text-align: center;
    }
    .vastori-footer-bottom a { margin: 0 12px; }
}

/* Hide the old Botiga BHFB below_footer_row credit since we now
   render our own multi-column footer + bottom row. */
body .bhfb-below_footer_row {
    display: none !important;
}

/* Hide the region-pill (bottom-right floater) on shop/category
   pages — it duplicates the country row now in the footer. */
body.woocommerce-shop .vastori-region-pill,
body.archive.post-type-archive-product .vastori-region-pill,
body.tax-product_cat .vastori-region-pill {
    display: none !important;
}

/* ============================================================
   700. v0.7.1 — Top promo bar + header restructure + saved link
   ============================================================ */

/* ---- 700.1 Top promo bar (renders via wp_body_open) ---- */
.vastori-top-promo {
    background-color: var(--vastori-ink);
    padding: 0;
    position: relative;
    z-index: 50;
}

.vastori-top-promo__inner {
    max-width: 100%;
    padding: 9px 32px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
}

.vastori-top-promo__text,
.vastori-top-promo__country {
    font-family: var(--vastori-font-sans);
    font-size: 11px;
    font-weight: 500;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: #ffffff;
    line-height: 1;
}

.vastori-top-promo__text a {
    color: #ffffff;
    text-decoration: underline;
    text-underline-offset: 3px;
    margin-left: 4px;
}

.vastori-top-promo__text a:hover {
    color: #c5c2b5;
}

.vastori-top-promo__country {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    white-space: nowrap;
}

.vastori-top-promo__country [aria-hidden] {
    font-size: 13px;
    letter-spacing: normal;
}

@media (max-width: 768px) {
    .vastori-top-promo__inner {
        padding: 8px 16px;
        gap: 12px;
    }
    .vastori-top-promo__text,
    .vastori-top-promo__country {
        font-size: 9.5px;
        letter-spacing: 0.1em;
    }
}

/* Hide the WP admin bar pushdown ONLY for the top promo's
   absolute zero — we want the promo to actually be the topmost
   element when logged out. Logged-in admins still see the toolbar. */

/* ---- 700.2 Header column reorder: logo LEFT, nav CENTER, icons RIGHT ---- */
@media (min-width: 992px) {
    body .bhfb-main_header_row .bhfb-row {
        display: flex !important;
        align-items: center !important;
        gap: 24px;
    }

    /* column-1 currently holds nav (per default Botiga + our Phase
       3 wiring). Send it to the CENTER (order: 2), flex-grow. */
    body .bhfb-main_header_row .bhfb-column-1 {
        order: 2 !important;
        flex: 1 1 auto !important;
        display: flex !important;
        justify-content: center !important;
        text-align: center !important;
    }

    /* column-2 currently holds the logo. Send it to the LEFT
       (order: 1), no grow, flush left. */
    body .bhfb-main_header_row .bhfb-column-2 {
        order: 1 !important;
        flex: 0 0 auto !important;
        display: flex !important;
        justify-content: flex-start !important;
        text-align: left !important;
    }

    /* column-3 currently holds search + WC icons. Stay on the RIGHT
       (order: 3), no grow, flush right. */
    body .bhfb-main_header_row .bhfb-column-3 {
        order: 3 !important;
        flex: 0 0 auto !important;
        display: flex !important;
        align-items: center !important;
        justify-content: flex-end !important;
        gap: 16px;
    }

    /* Logo block flush left, no centering */
    body .bhfb-main_header_row .bhfb-column-2 .bhfb-component-logo,
    body .bhfb-main_header_row .bhfb-column-2 .site-branding {
        margin: 0 !important;
        text-align: left !important;
    }
    body .bhfb-main_header_row .bhfb-column-2 .custom-logo-link {
        margin-left: 0 !important;
    }
}

/* ---- 700.3 Inline header search (v0.7.2) ----------------
   The actual form is now injected as <form class="vastori-inline-search">
   by inc/header-search.php's JS. The legacy Botiga form row at the
   bottom of the header is hidden via the same script. */
@media (min-width: 992px) {
    body .bhfb-component-search {
        order: -1;
        margin-right: 12px;
        display: inline-flex !important;
        align-items: center;
    }
    /* Hide the legacy Botiga search form-row at the bottom of the
       header. JS also sets display:none but this prevents flash. */
    body .header-search-form,
    body .header-search-form-row {
        display: none !important;
    }
}

.vastori-inline-search {
    display: inline-flex !important;
    align-items: center !important;
    background: transparent !important;
    border-bottom: 0.5px solid var(--vastori-ink) !important;
    padding: 0 !important;
    margin: 0 !important;
    width: 200px !important;
    max-width: 200px !important;
}

.vastori-inline-search input[type="search"] {
    flex: 1 !important;
    background: transparent !important;
    border: 0 !important;
    outline: none !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 11px !important;
    font-weight: 500 !important;
    letter-spacing: 0.18em !important;
    text-transform: uppercase !important;
    color: var(--vastori-ink) !important;
    padding: 8px 4px !important;
    box-shadow: none !important;
}

.vastori-inline-search input[type="search"]::placeholder {
    color: var(--vastori-muted) !important;
    opacity: 1 !important;
    letter-spacing: 0.22em !important;
    text-transform: uppercase !important;
}

.vastori-inline-search input[type="search"]::-webkit-search-decoration,
.vastori-inline-search input[type="search"]::-webkit-search-cancel-button {
    -webkit-appearance: none;
}

/* v0.9.74 — Botiga's search component applies a bordered box to the
   submit button via a higher-specificity .bhfb-component-search rule,
   which boxed the magnifier into a detached square. Match that
   specificity (and force border-width/style + auto sizing) so the
   magnifier is just an inline icon at the end of the underline. */
.bhfb-component-search form.vastori-inline-search button,
.bhfb-component-search form.vastori-inline-search button[type="submit"],
.vastori-inline-search button,
.vastori-inline-search button[type="submit"] {
    background: transparent !important;
    border: 0 none !important;
    border-width: 0 !important;
    border-style: none !important;
    box-shadow: none !important;
    border-radius: 0 !important;
    width: auto !important;
    min-width: 0 !important;
    height: auto !important;
    min-height: 0 !important;
    padding: 4px 2px 4px 8px !important;
    margin: 0 !important;
    color: var(--vastori-ink) !important;
    cursor: pointer;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
}

.bhfb-component-search form.vastori-inline-search button:hover,
.vastori-inline-search button:hover,
.vastori-inline-search button[type="submit"]:hover {
    color: var(--vastori-muted) !important;
}

.vastori-inline-search svg {
    width: 14px;
    height: 14px;
}

@media (max-width: 991px) {
    .vastori-inline-search {
        display: none !important;
    }
    body .bhfb-component-search > a.header-search {
        display: inline-flex !important;
    }
}

/* ---- 700.4 SAVED link styling --------------------------- */
.vastori-saved-link {
    display: inline-flex !important;
    align-items: center !important;
    gap: 4px !important;
    color: var(--vastori-ink) !important;
    text-decoration: none !important;
    padding: 0 4px !important;
    font-family: var(--vastori-font-sans) !important;
    transition: color 0.2s var(--vastori-ease);
}

.vastori-saved-link:hover {
    color: var(--vastori-muted) !important;
}

.vastori-saved-link svg {
    width: 20px !important;
    height: 20px !important;
    color: var(--vastori-ink) !important;
}

.vastori-saved-link__count {
    font-size: 11px;
    font-weight: 500;
    letter-spacing: 0.04em;
    color: var(--vastori-muted) !important;
    margin-left: 2px;
}

@media (max-width: 768px) {
    .vastori-saved-link__count { display: none; }
    .vastori-saved-link svg { width: 18px !important; height: 18px !important; }
}

/* ============================================================
   800. v0.8.0 — toa.st header text labels + bag drawer +
   search panel + wishlist tile redesign
   ============================================================ */

/* ---- 800.1 Header right-side text labels -------------- */
.vastori-h-link {
    display: inline-flex !important;
    align-items: center;
    gap: 4px;
    color: var(--vastori-ink) !important;
    text-decoration: none !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 11px !important;
    font-weight: 500 !important;
    letter-spacing: 0.18em !important;
    text-transform: uppercase !important;
    padding: 0 10px !important;
    line-height: 1 !important;
    transition: color 0.2s var(--vastori-ease);
    /* v0.9.99 — never let "BAG (0)" wrap to "BA / G ( 0 )" when the mobile
       header squeezes it. */
    white-space: nowrap !important;
    flex-shrink: 0 !important;
}
.vastori-h-link__label,
.vastori-h-link__count { white-space: nowrap !important; }

.vastori-h-link:hover {
    color: var(--vastori-muted) !important;
    opacity: 1 !important;
}

.vastori-h-link__count {
    color: var(--vastori-ink) !important;
    font-weight: 500;
}

@media (max-width: 991px) {
    .vastori-h-link {
        font-size: 10px !important;
        padding: 0 6px !important;
    }
    /* v0.8.2 — ACCOUNT label kept visible on phones per user direction */
}

/* Hide the heart icon SVG from the now-text Saved link */
.vastori-h-link--saved svg { display: none !important; }

/* ---- 800.2 Slide-out cart drawer ---------------------- */
.vastori-cart-drawer-backdrop {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.35);
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.3s var(--vastori-ease);
    z-index: 9998;
}

.vastori-cart-drawer {
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    width: 480px;
    max-width: 100%;
    background: var(--vastori-surface);
    box-shadow: -2px 0 24px rgba(0, 0, 0, 0.08);
    transform: translateX(100%);
    transition: transform 0.35s var(--vastori-ease);
    z-index: 9999;
    display: flex;
    flex-direction: column;
}

.vastori-cart-drawer.is-open {
    transform: translateX(0);
}

/* v0.9.104 — REMOVED the `:has(.vastori-cart-drawer.is-open)` rule: all three
   drawers (bag/saved/account) share the .vastori-cart-drawer class, so it lit
   up ALL three backdrops whenever ANY drawer opened. The topmost backdrop
   (account, last in DOM) then swallowed every outside-click and closed the
   wrong (un-open) drawer — so the open one never closed. Now ONLY the open
   drawer's own backdrop gets .is-open (toggled in JS), so outside-click hits
   the correct backdrop and closes the right drawer. */
.vastori-cart-drawer-backdrop.is-open {
    opacity: 1 !important;
    pointer-events: auto !important;
}
/* v0.9.96 — auto-close countdown bar shown when a drawer auto-opens on
   add/save. Links to the full bag/wishlist page. */
.vastori-drawer-autoclose {
    background: rgba(188, 192, 172, 0.18);
    color: var(--vastori-muted);
    font-family: var(--vastori-font-sans);
    font-size: 11px;
    letter-spacing: 0.04em;
    text-align: center;
    padding: 9px 16px;
    border-bottom: 0.5px solid var(--vastori-line);
}
.vastori-drawer-autoclose strong { color: var(--vastori-ink); font-weight: 600; }
.vastori-drawer-autoclose a {
    color: var(--vastori-ink) !important;
    text-decoration: underline !important;
    text-underline-offset: 2px;
}

/* v0.9.97 — Account drawer: brand WooCommerce's My Account view inside the
   drawer (login/register when logged out; dashboard when logged in). */
.vastori-account-drawer .woocommerce { margin: 0 !important; }
.vastori-account-drawer h2,
.vastori-account-drawer h3 {
    font-family: var(--vastori-font-serif) !important;
    font-size: 18px !important;
    margin: 0 0 14px !important;
    border: 0 !important;
    padding: 0 !important;
}
/* stack login/register columns */
.vastori-account-drawer .u-columns,
.vastori-account-drawer .col2-set .col-1,
.vastori-account-drawer .col2-set .col-2 {
    width: 100% !important;
    float: none !important;
    margin: 0 0 28px !important;
    padding: 0 !important;
}
.vastori-account-drawer .woocommerce-form-login,
.vastori-account-drawer .woocommerce-form-register {
    border: 0 !important;
    padding: 0 !important;
    margin: 0 0 8px !important;
}
.vastori-account-drawer .woocommerce-Button,
.vastori-account-drawer button[name="login"],
.vastori-account-drawer button[name="register"] {
    width: 100% !important;
    margin-top: 12px !important;
}
.vastori-account-drawer .woocommerce-form-login__rememberme {
    display: block !important;
    margin: 10px 0 !important;
    font-size: 12px !important;
    color: var(--vastori-muted) !important;
    text-transform: none !important;
    letter-spacing: 0 !important;
}
.vastori-account-drawer .lost_password { font-size: 12px !important; margin-top: 10px !important; }
.vastori-account-drawer .lost_password a { color: var(--vastori-muted) !important; text-decoration: underline !important; }
/* logged-in dashboard: nav as a clean hairline list */
.vastori-account-drawer .woocommerce-MyAccount-navigation ul {
    list-style: none !important;
    margin: 0 0 24px !important;
    padding: 0 !important;
}
.vastori-account-drawer .woocommerce-MyAccount-navigation li {
    margin: 0 !important;
    border-bottom: 0.5px solid var(--vastori-line) !important;
}
.vastori-account-drawer .woocommerce-MyAccount-navigation li a {
    display: block !important;
    padding: 14px 0 !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 12px !important;
    letter-spacing: 0.16em !important;
    text-transform: uppercase !important;
    color: var(--vastori-ink) !important;
    text-decoration: none !important;
}
.vastori-account-drawer .woocommerce-MyAccount-navigation li.is-active a {
    color: var(--vastori-muted) !important;
}
.vastori-account-drawer .woocommerce-MyAccount-content {
    font-family: var(--vastori-font-sans) !important;
    font-size: 13px !important;
    color: var(--vastori-ink) !important;
}
.vastori-account-drawer .woocommerce-MyAccount-content p { line-height: 1.6 !important; }

.vastori-cart-drawer__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 28px 32px;
    border-bottom: 0.5px solid var(--vastori-hairline);
}

.vastori-cart-drawer__title {
    font-family: var(--vastori-font-serif) !important;
    font-weight: 500 !important;
    font-size: 28px !important;
    margin: 0 !important;
    color: var(--vastori-ink) !important;
}

.vastori-cart-drawer__close {
    background: transparent;
    border: 0;
    font-size: 28px;
    line-height: 1;
    color: var(--vastori-ink);
    cursor: pointer;
    padding: 0 4px;
}

.vastori-cart-drawer__close:hover { color: var(--vastori-muted); }

.vastori-cart-drawer__body {
    flex: 1;
    overflow-y: auto;
    padding: 24px 32px;
}

/* ============================================================
   v0.9.90 — Saved / Wishlist drawer. Reuses the .vastori-cart-drawer
   container; here we tame TI Wishlist's page table into clean stacked
   line items that match the bag drawer.
   ============================================================ */
.vastori-saved-drawer .tinv-header,
.vastori-saved-drawer .tinv-wishlist .social-buttons,
.vastori-saved-drawer .tinv-wishlist .tinvwl-bottom-controls,
.vastori-saved-drawer .tinv-wishlist .tinvwl-input-group,
.vastori-saved-drawer .tinv-wishlist .navigation-button,
.vastori-saved-drawer table.tinvwl-table thead,
.vastori-saved-drawer .tinv-wishlist td.product-cb,
.vastori-saved-drawer .tinv-wishlist td.product-stock,
.vastori-saved-drawer .tinv-wishlist td.product-date {
    display: none !important;
}
.vastori-saved-drawer .tinv-wishlist,
.vastori-saved-drawer table.tinvwl-table,
.vastori-saved-drawer table.tinvwl-table tbody {
    display: block !important;
    width: 100% !important;
    border: 0 !important;
    margin: 0 !important;
    background: transparent !important;
}
.vastori-saved-drawer .tinv-wishlist tr.wishlist_item {
    display: grid !important;
    grid-template-columns: 80px 1fr 24px !important;
    grid-template-rows: auto auto auto !important;
    column-gap: 16px !important;
    row-gap: 4px !important;
    align-items: start !important;
    padding: 20px 0 !important;
    border: 0 0 0.5px 0 !important;
    border-bottom: 0.5px solid var(--vastori-line) !important;
    background: transparent !important;
}
.vastori-saved-drawer .tinv-wishlist td {
    display: block !important;
    padding: 0 !important;
    border: 0 !important;
    background: transparent !important;
    text-align: left !important;
}
.vastori-saved-drawer .tinv-wishlist td.product-thumbnail {
    grid-column: 1 !important;
    grid-row: 1 / -1 !important;
}
.vastori-saved-drawer .tinv-wishlist td.product-thumbnail img {
    width: 80px !important;
    height: 100px !important;
    object-fit: cover !important;
    display: block !important;
    border-radius: 0 !important;
}
.vastori-saved-drawer .tinv-wishlist td.product-name {
    grid-column: 2 !important;
    grid-row: 1 !important;
}
.vastori-saved-drawer .tinv-wishlist td.product-name a {
    font-family: var(--vastori-font-serif) !important;
    font-size: 15px !important;
    line-height: 1.3 !important;
    color: var(--vastori-ink) !important;
    text-decoration: none !important;
}
/* TI prints the chosen variation (Colour / Size) under the name */
.vastori-saved-drawer .tinv-wishlist td.product-name .tinvwl-of,
.vastori-saved-drawer .tinv-wishlist td.product-name dl,
.vastori-saved-drawer .tinv-wishlist td.product-name .variation {
    font-family: var(--vastori-font-sans) !important;
    font-size: 11.5px !important;
    letter-spacing: 0.04em !important;
    color: var(--vastori-muted) !important;
    margin: 2px 0 0 !important;
}
.vastori-saved-drawer .tinv-wishlist td.product-price {
    grid-column: 2 !important;
    grid-row: 2 !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 13px !important;
    color: var(--vastori-ink) !important;
}
.vastori-saved-drawer .tinv-wishlist td.product-price del { color: var(--vastori-muted) !important; opacity: 0.6 !important; }
.vastori-saved-drawer .tinv-wishlist td.product-action {
    grid-column: 2 !important;
    grid-row: 3 !important;
    margin-top: 8px !important;
}
.vastori-saved-drawer .tinv-wishlist td.product-action .button,
.vastori-saved-drawer .tinv-wishlist td.product-action a.button {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: auto !important;
    min-height: 40px !important;
    padding: 10px 20px !important;
    background: transparent !important;
    color: var(--vastori-ink) !important;
    border: 1px solid var(--vastori-ink) !important;
    border-radius: 0 !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 11px !important;
    letter-spacing: 0.2em !important;
    text-transform: uppercase !important;
    transition: background-color 0.25s var(--vastori-ease), color 0.25s var(--vastori-ease) !important;
}
.vastori-saved-drawer .tinv-wishlist td.product-action .button:hover {
    background: var(--vastori-ink) !important;
    color: #FFFFFF !important;
}
.vastori-saved-drawer .tinv-wishlist td.product-remove {
    grid-column: 3 !important;
    grid-row: 1 !important;
    text-align: right !important;
}
.vastori-saved-drawer .tinv-wishlist td.product-remove .button,
.vastori-saved-drawer .tinv-wishlist td.product-remove button {
    background: transparent !important;
    border: 0 !important;
    color: var(--vastori-muted) !important;
    font-size: 18px !important;
    padding: 0 !important;
    line-height: 1 !important;
    cursor: pointer !important;
}
.vastori-saved-drawer .tinv-wishlist .tinvwl-empty,
.vastori-saved-drawer .tinv-wishlist .wishlist-empty {
    font-family: var(--vastori-font-serif) !important;
    font-size: 16px !important;
    color: var(--vastori-muted) !important;
    text-align: center !important;
    padding: 48px 0 !important;
}
/* v0.9.90b — kill TI's responsive data-title labels (the stray "Product
   Name" text) and any leftover header cells, and stop the table from
   overflowing the drawer horizontally. */
.vastori-saved-drawer .tinv-wishlist td::before,
.vastori-saved-drawer .tinv-wishlist th,
.vastori-saved-drawer .tinv-wishlist thead,
.vastori-saved-drawer .tinv-wishlist caption {
    display: none !important;
    content: none !important;
}
.vastori-saved-drawer .vastori-saved-drawer__view,
.vastori-saved-drawer .tinv-wishlist,
.vastori-saved-drawer table.tinvwl-table,
.vastori-saved-drawer table.tinvwl-table tbody {
    overflow-x: hidden !important;
    max-width: 100% !important;
}
.vastori-saved-drawer .tinv-wishlist tr.wishlist_item {
    max-width: 100% !important;
    box-sizing: border-box !important;
}
.vastori-saved-drawer .tinv-wishlist td {
    max-width: 100% !important;
    box-sizing: border-box !important;
    word-break: break-word !important;
}
/* v0.9.101 — Saved drawer footer: a "View all saved" button (parity with the
   bag drawer's View Bag), pinned at the bottom. */
.vastori-saved-drawer__foot {
    padding: 16px 32px 24px !important;
    border-top: 0.5px solid var(--vastori-line) !important;
}
.vastori-saved-drawer__foot .vastori-saved-viewall {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 100% !important;
    min-height: 48px !important;
    background: transparent !important;
    color: var(--vastori-ink) !important;
    border: 1px solid var(--vastori-ink) !important;
    border-radius: 0 !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 12px !important;
    letter-spacing: 0.22em !important;
    text-transform: uppercase !important;
    text-decoration: none !important;
    transition: background-color 0.25s var(--vastori-ease), color 0.25s var(--vastori-ease) !important;
}
.vastori-saved-drawer__foot .vastori-saved-viewall:hover {
    background: var(--vastori-ink) !important;
    color: #FFFFFF !important;
}
@media (max-width: 768px) {
    .vastori-saved-drawer__foot { padding: 16px !important; }
}

/* ============================================================
   v0.9.102 — Autonomous sweep batch (high-impact audit findings).
   See playbook/AUTONOMOUS-SWEEP-NOTES.md.
   ============================================================ */
/* A6 — inline "choose options" prompt was raw black Times; brand it. */
.vastori-atc-msg {
    margin: 10px 0 0 !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 11.5px !important;
    letter-spacing: 0.06em !important;
    text-transform: uppercase !important;
    color: var(--vastori-cocoa, #A89580) !important;
}
/* A7 — disabled add-to-cart / submit state (e.g. variable product before a
   variation is chosen) reads as clearly inactive. */
body .single_add_to_cart_button[disabled],
body .single_add_to_cart_button.disabled,
body .single_add_to_cart_button.wc-variation-selection-needed,
body .woocommerce button.button:disabled,
body .woocommerce a.button.disabled {
    opacity: 0.4 !important;
    cursor: not-allowed !important;
}
/* A3 — pin the cart drawer's View Bag / Checkout buttons so they stay
   reachable when the item list is long (were scrolling out of view). */
.vastori-cart-drawer .woocommerce-mini-cart__buttons {
    position: sticky !important;
    bottom: 0 !important;
    background: var(--vastori-surface) !important;
    padding: 14px 0 8px !important;
    margin-top: 8px !important;
    z-index: 3 !important;
}
.vastori-cart-drawer .woocommerce-mini-cart__total {
    position: sticky !important;
    bottom: 112px !important;
    background: var(--vastori-surface) !important;
    z-index: 2 !important;
}
/* B1 — classic checkout Place Order button (was unstyled Botiga default). */
body.woocommerce-checkout #place_order {
    background: var(--vastori-ink) !important;
    color: #FFFFFF !important;
    border: 1px solid var(--vastori-ink) !important;
    border-radius: 0 !important;
    width: 100% !important;
    padding: 18px 16px !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 11px !important;
    font-weight: 500 !important;
    letter-spacing: 0.24em !important;
    text-transform: uppercase !important;
    box-shadow: none !important;
    transition: background 0.25s var(--vastori-ease), color 0.25s var(--vastori-ease) !important;
}
body.woocommerce-checkout #place_order:hover {
    background: var(--vastori-ink-soft) !important;
    color: #FFFFFF !important;
}
/* B2 — classic checkout order-review table gets the same hairline framing as
   the cart totals (was the bare Botiga default). */
body.woocommerce-checkout .woocommerce-checkout-review-order-table {
    border: 0.5px solid var(--vastori-line) !important;
    border-radius: 0 !important;
}
body.woocommerce-checkout .woocommerce-checkout-review-order-table th,
body.woocommerce-checkout .woocommerce-checkout-review-order-table td {
    padding: 12px 14px !important;
}
/* Footer newsletter: underline under the EMAIL input only (the full-width
   line under email + Sign Up read as odd — user flagged). */
.vastori-newsletter__form { border-bottom: 0 !important; }
.vastori-newsletter__form input[type="email"] {
    border-bottom: 0.5px solid var(--vastori-ink) !important;
}
/* "X in stock" relocated into a fixed slot ABOVE the swatches (JS in
   product-page.php) so selecting a variation doesn't shift the layout. The
   default in-flow availability below the swatches is hidden. */
body.single-product .summary form.cart .vastori-stock-slot,
#yith-quick-view-modal form.cart .vastori-stock-slot {
    display: block !important;
    width: 100% !important;
    grid-column: 1 / -1 !important;
    margin: 0 0 16px !important;
}
body.single-product .vastori-stock-slot .stock,
body.single-product .vastori-stock-slot p,
#yith-quick-view-modal .vastori-stock-slot .stock,
#yith-quick-view-modal .vastori-stock-slot p {
    margin: 0 !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 13px !important;
    color: var(--vastori-muted) !important;
}
body.single-product .single_variation .woocommerce-variation-availability,
body.single-product .single_variation .availability,
#yith-quick-view-modal .single_variation .woocommerce-variation-availability,
#yith-quick-view-modal .single_variation .availability {
    display: none !important;
}
/* Saved drawer refresh: the /wishlist/ fetch pulls a tinvwl-table-manage-list
   (different class than the initial view), which the drawer left as a raw
   table. Blockify ANY table in the drawer + hide its head/bulk tools so the
   stacked item layout (tr.wishlist_item / td rules above) applies post-refresh. */
.vastori-saved-drawer .tinv-wishlist table,
.vastori-saved-drawer .tinv-wishlist table tbody {
    display: block !important;
    width: 100% !important;
    border: 0 !important;
    margin: 0 !important;
}
.vastori-saved-drawer .tinv-wishlist table thead,
.vastori-saved-drawer .tinv-wishlist .tinvwl-buttons-group,
.vastori-saved-drawer .tinv-wishlist .tinvwl-table-manage-list-tools,
.vastori-saved-drawer .tinv-wishlist .tinvwl-table-manage-list-totals,
.vastori-saved-drawer .tinv-wishlist .global-cb,
.vastori-saved-drawer .tinv-wishlist td.product-cb {
    display: none !important;
}

.vastori-cart-drawer .widget_shopping_cart_content {
    padding: 0 !important;
}

.vastori-cart-drawer ul.woocommerce-mini-cart {
    list-style: none;
    margin: 0;
    padding: 0;
}

/* v0.9.3 — Switched to flex on the LI itself so children are
   actually side-by-side regardless of WC's nested anchor structure.
   Image is plucked out via flex order and pinned left; everything
   else stacks vertically in a right-side column. */

.vastori-cart-drawer ul.woocommerce-mini-cart li.mini_cart_item {
    position: relative;
    display: flex !important;
    flex-direction: row !important;
    align-items: flex-start !important;
    gap: 16px !important;
    padding: 24px 32px 24px 0 !important;
    border-bottom: 0.5px solid var(--vastori-hairline);
    margin: 0 !important;
    overflow: visible !important;
    flex-wrap: wrap;
}

/* The thumbnail-bearing anchor becomes order-1 with shrink:0 so it
   acts like an image-only column on the left. */
.vastori-cart-drawer ul.woocommerce-mini-cart li.mini_cart_item > a:not(.remove) {
    order: 1 !important;
    flex: 0 0 72px !important;
    width: 72px !important;
    display: block !important;
    font-size: 0 !important; /* swallow any text inside the anchor */
    line-height: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
}

.vastori-cart-drawer ul.woocommerce-mini-cart li.mini_cart_item > a:not(.remove) img {
    width: 72px !important;
    height: 90px !important;
    object-fit: cover;
    margin: 0 !important;
    float: none !important;
    border-radius: 0 !important;
    padding: 0 !important;
    display: block !important;
}

/* WC also outputs the product name as a TEXT NODE inside the anchor.
   We muted it via font-size:0 above, then re-emit the name via a
   pseudo-element so it sits in the right column. */
.vastori-cart-drawer ul.woocommerce-mini-cart li.mini_cart_item {
    /* placeholder; product-name flow handled by JS below if needed */
}

/* The right column wraps everything that isn't the remove × or the
   image anchor. We achieve this by making non-image children share
   order:2 and live in a 1fr-equivalent flex space. */
.vastori-cart-drawer ul.woocommerce-mini-cart li.mini_cart_item .quantity,
.vastori-cart-drawer ul.woocommerce-mini-cart li.mini_cart_item .variation {
    order: 2 !important;
    flex: 1 1 calc(100% - 88px) !important;
    margin: 0 !important;
    display: block !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 12px !important;
    color: var(--vastori-ink) !important;
    letter-spacing: 0.04em;
}

.vastori-cart-drawer ul.woocommerce-mini-cart li.mini_cart_item .quantity {
    margin-top: 4px !important;
}

/* Inject the product name as a vastori-mini-title pseudo via JS-free
   approach: use the original anchor visible to screen readers but
   show it via a sibling we render in PHP. Simpler: ALSO let the
   anchor stay visible but on its own row above quantity. */
.vastori-cart-drawer ul.woocommerce-mini-cart li.mini_cart_item .vastori-mini-title {
    order: 2 !important;
    flex: 1 1 calc(100% - 88px) !important;
    font-family: var(--vastori-font-serif) !important;
    font-size: 14px !important;
    line-height: 1.35 !important;
    color: var(--vastori-ink) !important;
    margin: 0 0 4px !important;
    padding-right: 32px !important; /* room for × */
}

.vastori-cart-drawer ul.woocommerce-mini-cart li.mini_cart_item .quantity .amount,
.vastori-cart-drawer ul.woocommerce-mini-cart li.mini_cart_item .quantity .woocommerce-Price-amount {
    color: var(--vastori-ink) !important;
    font-weight: 500;
}

/* v0.9.12 — Cart drawer +/- stepper inside .vastori-mini-qty.
   Renders as a small outlined [-] [n] [+] unit with the line item
   price shown to its right. */
.vastori-cart-drawer .vastori-mini-qty {
    display: flex !important;
    align-items: center !important;
    justify-content: flex-start !important;
    gap: 12px !important;
    margin-top: 6px !important;
}

.vastori-cart-drawer .vastori-mini-qty__stepper {
    display: inline-flex !important;
    align-items: stretch !important;
    border: 1px solid var(--vastori-line);
    border-radius: 0;
    background: var(--vastori-surface);
}

.vastori-cart-drawer .vastori-mini-qty__btn {
    width: 28px !important;
    height: 28px !important;
    padding: 0 !important;
    margin: 0 !important;
    background: transparent !important;
    border: 0 !important;
    color: var(--vastori-ink) !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 14px !important;
    font-weight: 400 !important;
    line-height: 1 !important;
    cursor: pointer;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    border-radius: 0 !important;
    transition: background 0.15s var(--vastori-ease);
}
.vastori-cart-drawer .vastori-mini-qty__btn:hover {
    background: var(--vastori-sand-soft) !important;
}
.vastori-cart-drawer .vastori-mini-qty__minus {
    border-right: 1px solid var(--vastori-line) !important;
}
.vastori-cart-drawer .vastori-mini-qty__plus {
    border-left: 1px solid var(--vastori-line) !important;
}

.vastori-cart-drawer .vastori-mini-qty__count {
    min-width: 32px !important;
    text-align: center !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 13px !important;
    line-height: 28px !important;
    color: var(--vastori-ink) !important;
}

.vastori-cart-drawer .vastori-mini-qty__price {
    font-family: var(--vastori-font-sans) !important;
    font-size: 13px !important;
    font-weight: 500 !important;
    color: var(--vastori-ink) !important;
    line-height: 28px !important;
}
.vastori-cart-drawer .vastori-mini-qty__price .amount,
.vastori-cart-drawer .vastori-mini-qty__price .woocommerce-Price-amount {
    color: var(--vastori-ink) !important;
    font-weight: 500 !important;
}

.vastori-cart-drawer ul.woocommerce-mini-cart li.mini_cart_item .variation {
    display: block !important;
    margin-left: calc(80px + 16px) !important;
    font-size: 12px !important;
    color: var(--vastori-muted) !important;
    margin-top: 2px !important;
}

.vastori-cart-drawer ul.woocommerce-mini-cart li.mini_cart_item .variation dd,
.vastori-cart-drawer ul.woocommerce-mini-cart li.mini_cart_item .variation dt,
.vastori-cart-drawer ul.woocommerce-mini-cart li.mini_cart_item .variation p {
    display: inline !important;
    margin: 0 !important;
    color: var(--vastori-muted) !important;
}

.vastori-cart-drawer ul.woocommerce-mini-cart li.mini_cart_item a.remove,
.vastori-cart-drawer ul.woocommerce-mini-cart li.mini_cart_item a.remove_from_cart_button {
    position: absolute !important;
    top: 22px !important;
    right: 0 !important;
    width: 22px !important;
    height: 22px !important;
    line-height: 20px !important;
    text-align: center !important;
    background: transparent !important;
    border: 0 !important;
    color: var(--vastori-muted) !important;
    font-size: 18px !important;
    font-weight: 400 !important;
    text-decoration: none !important;
    border-radius: 0 !important;
    padding: 0 !important;
    margin: 0 !important;
    box-shadow: none !important;
    cursor: pointer;
    z-index: 2;
}

.vastori-cart-drawer ul.woocommerce-mini-cart li.mini_cart_item a.remove:hover {
    color: var(--vastori-ink) !important;
    background: transparent !important;
}

.vastori-cart-drawer .woocommerce-mini-cart__total,
.vastori-cart-drawer p.woocommerce-mini-cart__total,
.vastori-cart-drawer .total {
    background: var(--vastori-surface) !important;
    border-top: 0.5px solid var(--vastori-hairline);
    margin-top: 16px !important;
    padding: 20px 0 0 0 !important;
    display: flex;
    justify-content: space-between;
    font-family: var(--vastori-font-sans) !important;
    font-size: 13px !important;
    color: var(--vastori-ink) !important;
}

.vastori-cart-drawer .woocommerce-mini-cart__total strong {
    font-weight: 500;
}

.vastori-cart-drawer .woocommerce-mini-cart__buttons {
    margin-top: 24px !important;
    padding: 0 !important;
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.vastori-cart-drawer .woocommerce-mini-cart__buttons a.button {
    width: 100% !important;
    text-align: center !important;
    margin: 0 !important;
    padding: 16px !important;
    display: block !important;
    font-size: 12px !important;
    letter-spacing: 0.22em !important;
}

/* v0.8.3 — View Bag = secondary outline, Checkout = primary filled */
/* v0.9.74 — force the View Bag (non-checkout) button to the same padded
   height as Checkout; some rule was zeroing its padding so it rendered
   as a thin 14px strip. */
.vastori-cart-drawer .woocommerce-mini-cart__buttons a.button:first-child,
.vastori-cart-drawer .woocommerce-mini-cart__buttons a.wc-forward:not(.checkout) {
    background-color: transparent !important;
    color: var(--vastori-ink) !important;
    border: 1px solid var(--vastori-ink) !important;
    padding: 15px 16px !important;
    min-height: 48px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    box-sizing: border-box !important;
    line-height: 1 !important;
}
/* keep both buttons visually identical in height */
.vastori-cart-drawer .woocommerce-mini-cart__buttons a.button {
    min-height: 48px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    box-sizing: border-box !important;
    line-height: 1 !important;
    border-radius: 0 !important; /* kill the rounded-corner notch */
    transition: background-color 0.25s var(--vastori-ease), color 0.25s var(--vastori-ease) !important;
}
/* product-name link inside the mini-cart title inherits the title look */
.vastori-cart-drawer .vastori-mini-title a {
    color: var(--vastori-ink) !important;
    text-decoration: none !important;
    font: inherit !important;
}

.vastori-cart-drawer .woocommerce-mini-cart__buttons a.checkout,
.vastori-cart-drawer .woocommerce-mini-cart__buttons a.button.checkout {
    background-color: var(--vastori-ink) !important;
    color: var(--vastori-sand) !important;
    border: 1px solid var(--vastori-ink) !important;
}

/* v0.9.76 — consistent hover animation on BOTH drawer buttons (opacity:1
   defeats the global a:hover{opacity:.65}). Checkout lightens; View Bag
   fills with ink — matching the same animated feel. */
.vastori-cart-drawer .woocommerce-mini-cart__buttons a.checkout:hover,
.vastori-cart-drawer .woocommerce-mini-cart__buttons a.button.checkout:hover {
    /* v0.9.79 — clearly-visible hover: filled forest inverts to outline */
    background-color: transparent !important;
    border-color: var(--vastori-ink) !important;
    color: var(--vastori-ink) !important;
    opacity: 1 !important;
}
.vastori-cart-drawer .woocommerce-mini-cart__buttons a.button:first-child:hover,
.vastori-cart-drawer .woocommerce-mini-cart__buttons a.wc-forward:not(.checkout):hover {
    background-color: var(--vastori-ink) !important;
    border-color: var(--vastori-ink) !important;
    color: var(--vastori-sand) !important;
    opacity: 1 !important;
}

.vastori-cart-drawer p.woocommerce-mini-cart__empty-message {
    text-align: center;
    color: var(--vastori-muted);
    padding: 40px 0;
    font-style: italic;
    font-family: var(--vastori-font-serif);
    font-size: 16px;
}

body.vastori-no-scroll {
    overflow: hidden !important;
}

@media (max-width: 768px) {
    .vastori-cart-drawer { width: 88vw; max-width: 420px; }
    .vastori-cart-drawer__head { padding: 20px 16px; }
    .vastori-cart-drawer__body { padding: 16px; }
}

/* ---- 800.3 Search panel ------------------------------- */
.vastori-search-backdrop {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.35);
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.3s var(--vastori-ease);
    z-index: 9997;
}

.vastori-search-panel {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    background: var(--vastori-surface);
    transform: translateY(-100%);
    transition: transform 0.35s var(--vastori-ease);
    z-index: 9998;
    padding: 80px 32px 48px;
    max-height: 90vh;
    overflow-y: auto;
}

.vastori-search-panel.is-open {
    transform: translateY(0);
}

.vastori-search-panel.is-open ~ .vastori-search-backdrop,
body:has(.vastori-search-panel.is-open) .vastori-search-backdrop {
    opacity: 1;
    pointer-events: auto;
}

.vastori-search-panel__inner {
    max-width: 1280px;
    margin: 0 auto;
    position: relative;
}

.vastori-search-panel__cols {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr 1fr;
    gap: 32px;
    align-items: start;
}

.vastori-search-panel__heading {
    font-family: var(--vastori-font-serif) !important;
    font-size: 18px !important;
    color: var(--vastori-ink) !important;
    margin: 0 0 16px !important;
}

.vastori-search-panel__heading--second {
    margin-top: 32px !important;
}

.vastori-search-panel__list {
    list-style: none;
    margin: 0;
    padding: 0;
}

.vastori-search-panel__list li {
    margin: 0 0 10px;
}

.vastori-search-panel__list a {
    font-family: var(--vastori-font-sans) !important;
    font-size: 13px !important;
    color: var(--vastori-ink-soft) !important;
    text-decoration: none;
}

.vastori-search-panel__list a:hover {
    color: var(--vastori-ink) !important;
    opacity: 1 !important;
}

.vastori-search-panel__card {
    display: block;
    text-decoration: none;
    color: var(--vastori-ink);
}

.vastori-search-panel__card-img {
    width: 100% !important;
    height: auto !important;
    aspect-ratio: 4/5;
    object-fit: cover;
    margin: 0 0 12px !important;
}

.vastori-search-panel__card-label {
    font-family: var(--vastori-font-sans) !important;
    font-size: 13px !important;
    color: var(--vastori-ink) !important;
}

.vastori-search-panel__card:hover .vastori-search-panel__card-label {
    color: var(--vastori-muted) !important;
}

.vastori-search-panel__close {
    position: absolute;
    top: -56px;
    right: 0;
    background: transparent;
    border: 0;
    font-size: 28px;
    color: var(--vastori-ink);
    cursor: pointer;
}

.vastori-search-panel__close:hover { color: var(--vastori-muted); }

/* v0.9.79 — FiboSearch submit was a bordered box (the "small rectangle"
   next to the search field). Make it a clean borderless magnifier. */
.vastori-search-panel .dgwt-wcas-search-form,
.vastori-search-panel form.dgwt-wcas-search-form {
    border: 0 none !important;
    box-shadow: none !important;
    background: transparent !important;
}
.vastori-search-panel .dgwt-wcas-search-submit,
.vastori-search-panel button.dgwt-wcas-search-submit {
    border: 0 none !important;
    background: transparent !important;
    box-shadow: none !important;
    border-radius: 0 !important;
    width: auto !important;
    min-width: 0 !important;
    height: auto !important;
    padding: 6px 10px !important;
    color: var(--vastori-ink) !important;
}
.vastori-search-panel .dgwt-wcas-search-submit svg,
.vastori-search-panel .dgwt-wcas-search-submit .dgwt-wcas-ico-magnifier {
    width: 16px !important;
    height: 16px !important;
    fill: currentColor !important;
}

@media (max-width: 991px) {
    .vastori-search-panel__cols {
        grid-template-columns: 1fr 1fr;
    }
    .vastori-search-panel { padding: 60px 16px 32px; }
}
@media (max-width: 600px) {
    .vastori-search-panel__cols { grid-template-columns: 1fr; }
}

/* ---- 800.4 Wishlist as tile grid (override TI table) -- */
body.page-id-125 .tinv-wishlist,
body.page-id-125 .tinvwl-wishlist {
    background: transparent !important;
    border: 0 !important;
    padding: 0 !important;
}

body.page-id-125 table.tinvwl-table-manage-list {
    display: grid !important;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 56px 28px !important;
    border: 0 !important;
    border-collapse: separate !important;
    background: transparent !important;
}

body.page-id-125 table.tinvwl-table-manage-list thead,
body.page-id-125 table.tinvwl-table-manage-list tfoot,
body.page-id-125 .tinvwl-buttons-group,
body.page-id-125 .tinvwl-table-manage-list-tools,
body.page-id-125 .tinvwl-table-manage-list-totals,
body.page-id-125 .product-stock,
body.page-id-125 .product-date {
    display: none !important;
}

body.page-id-125 table.tinvwl-table-manage-list tbody {
    display: contents !important;
}

body.page-id-125 table.tinvwl-table-manage-list tbody tr.wishlist_item {
    display: flex !important;
    flex-direction: column;
    border: 0 !important;
    padding: 0 !important;
    background: transparent !important;
}

body.page-id-125 table.tinvwl-table-manage-list tbody tr.wishlist_item td {
    display: block !important;
    border: 0 !important;
    padding: 0 !important;
    background: transparent !important;
    text-align: left !important;
}

body.page-id-125 td.product-thumbnail {
    margin-bottom: 18px !important;
}

body.page-id-125 td.product-thumbnail img {
    width: 100% !important;
    height: auto !important;
    aspect-ratio: 4/5;
    object-fit: cover;
}

body.page-id-125 td.product-name a {
    font-family: var(--vastori-font-serif) !important;
    font-size: 15px !important;
    color: var(--vastori-ink) !important;
    text-decoration: none;
    margin-bottom: 6px;
    display: block;
}

body.page-id-125 td.product-price,
body.page-id-125 td.product-price .amount {
    font-family: var(--vastori-font-sans) !important;
    font-size: 12px !important;
    color: var(--vastori-ink) !important;
    margin-bottom: 12px;
}

body.page-id-125 td.product-action a.button,
body.page-id-125 td.product-action .add_to_cart_button {
    width: 100% !important;
    text-align: center !important;
    padding: 12px 16px !important;
    font-size: 11px !important;
    margin-top: 8px !important;
    display: inline-block !important;
}

body.page-id-125 td.product-remove a {
    position: absolute;
    top: 8px;
    right: 8px;
    color: var(--vastori-muted) !important;
    background: transparent !important;
    font-size: 18px;
    line-height: 1;
}

body.page-id-125 table.tinvwl-table-manage-list tbody tr.wishlist_item {
    position: relative;
}

/* ============================================================
   v0.9.2 — Stronger wishlist styling (TI default was leaking
   through the v0.8.0 selectors). Hide everything Toast doesn't
   show, force a tile grid even if TI's class names vary.
   ============================================================ */

/* Hide the "Default wishlist" sub-heading that TI emits */
body.page-id-125 .tinv-header,
body.page-id-125 .tinv-wishlist .tinv-header,
body.page-id-125 .tinv-wishlist > h2 {
    display: none !important;
}

/* Hide the checkbox + select-all controls (kept just in case the
   option toggle didn't fully apply) */
body.page-id-125 .product-cb,
body.page-id-125 th.product-cb,
body.page-id-125 td.product-cb,
body.page-id-125 .tinvwl-buttons-group,
body.page-id-125 .product-stock,
body.page-id-125 th.product-stock,
body.page-id-125 td.product-stock,
body.page-id-125 .product-date,
body.page-id-125 th.product-date,
body.page-id-125 td.product-date,
body.page-id-125 .stock,
body.page-id-125 .add-date {
    display: none !important;
}

/* Hide the table head (column labels) — toa.st doesn't show them */
body.page-id-125 .tinvwl-table-manage-list thead,
body.page-id-125 .tinvwl-table-manage-list tfoot {
    display: none !important;
}

/* Hide the wishlist actions tools row (select all / actions
   dropdown) — toa.st doesn't show them */
body.page-id-125 .tinvwl-table-manage-list-tools,
body.page-id-125 .tinvwl-table-manage-list-totals {
    display: none !important;
}

/* Force the table → grid even if TI swaps class names */
body.page-id-125 .tinv-wishlist,
body.page-id-125 .tinv-wishlist-content {
    background: transparent !important;
    border: 0 !important;
    padding: 0 !important;
}

body.page-id-125 .tinv-wishlist table {
    display: grid !important;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)) !important;
    gap: 64px 28px !important;
    border: 0 !important;
    border-collapse: separate !important;
    border-spacing: 0 !important;
    background: transparent !important;
    width: 100% !important;
}

body.page-id-125 .tinv-wishlist tbody {
    display: contents !important;
}

body.page-id-125 .tinv-wishlist tbody tr {
    display: flex !important;
    flex-direction: column !important;
    border: 0 !important;
    padding: 0 !important;
    background: transparent !important;
    position: relative;
}

body.page-id-125 .tinv-wishlist tbody tr > td {
    display: block !important;
    border: 0 !important;
    padding: 0 !important;
    background: transparent !important;
    text-align: left !important;
    width: auto !important;
}

/* Product image cell */
body.page-id-125 .product-thumbnail,
body.page-id-125 td.product-thumbnail {
    margin: 0 0 18px !important;
    order: 1;
}

body.page-id-125 .product-thumbnail img,
body.page-id-125 td.product-thumbnail img {
    width: 100% !important;
    height: auto !important;
    aspect-ratio: 4/5;
    object-fit: cover;
    max-width: 100% !important;
}

/* Title */
body.page-id-125 .product-name,
body.page-id-125 td.product-name {
    order: 2;
    margin: 0 0 6px !important;
}

body.page-id-125 .product-name a {
    font-family: var(--vastori-font-serif) !important;
    font-size: 15px !important;
    color: var(--vastori-ink) !important;
    text-decoration: none !important;
    line-height: 1.3;
}

/* Price */
body.page-id-125 .product-price,
body.page-id-125 td.product-price {
    order: 3;
    margin: 0 0 14px !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 12px !important;
    color: var(--vastori-ink) !important;
}

body.page-id-125 .product-price .amount,
body.page-id-125 .product-price ins,
body.page-id-125 .product-price del {
    color: var(--vastori-ink) !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 12px !important;
}

/* Add to Cart button area */
body.page-id-125 .product-action,
body.page-id-125 td.product-action {
    order: 4;
    margin: 0 !important;
}

body.page-id-125 .product-action a.button,
body.page-id-125 .product-action .add_to_cart_button,
body.page-id-125 .product-action button {
    width: 100% !important;
    text-align: center !important;
    padding: 12px 16px !important;
    font-size: 11px !important;
    font-weight: 500 !important;
    letter-spacing: 0.22em !important;
    text-transform: uppercase !important;
    background: var(--vastori-ink) !important;
    color: var(--vastori-sand) !important;
    border: 1px solid var(--vastori-ink) !important;
    border-radius: 0 !important;
    margin: 0 !important;
    display: inline-block !important;
}

body.page-id-125 .product-action a.button:hover {
    background: transparent !important;
    color: var(--vastori-ink) !important;
}

/* Remove × — top-right of each tile */
body.page-id-125 .product-remove,
body.page-id-125 td.product-remove {
    position: absolute;
    top: 6px;
    right: 6px;
    z-index: 2;
    background: rgba(252, 250, 244, 0.92) !important;
    border-radius: 50% !important;
    width: 24px;
    height: 24px;
    display: flex !important;
    align-items: center;
    justify-content: center;
    margin: 0 !important;
}

body.page-id-125 .product-remove a {
    color: var(--vastori-ink) !important;
    background: transparent !important;
    font-size: 14px !important;
    line-height: 1 !important;
    text-decoration: none !important;
}

/* Hide WC's default empty-cart "Return to Shop" link styling so we
   can show a quieter empty state */
body.page-id-125 .cart-empty.woocommerce-info {
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
    text-align: center !important;
    font-family: var(--vastori-font-serif) !important;
    font-style: italic !important;
    font-size: 18px !important;
    color: var(--vastori-muted) !important;
    padding: 48px 0 !important;
    margin: 0 !important;
}

body.page-id-125 .cart-empty.woocommerce-info::before { display: none !important; }

body.page-id-125 .return-to-shop {
    text-align: center !important;
    margin-top: 16px !important;
}

/* ============================================================
   900. v0.8.1 — FiboSearch live-search panel + cookie notice
   ============================================================ */

.vastori-search-panel__live {
    margin-bottom: 40px;
    padding-bottom: 32px;
    border-bottom: 0.5px solid var(--vastori-hairline);
}

/* FiboSearch input styling — make it match our inline search aesthetic */
.vastori-search-panel__live .dgwt-wcas-search-form,
.vastori-search-panel__live .dgwt-wcas-search-wrapp {
    max-width: 720px !important;
    margin: 0 auto !important;
}

.vastori-search-panel__live .dgwt-wcas-search-input {
    background: transparent !important;
    border: 0 !important;
    border-bottom: 1px solid var(--vastori-ink) !important;
    border-radius: 0 !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 14px !important;
    letter-spacing: 0.06em !important;
    color: var(--vastori-ink) !important;
    padding: 14px 8px !important;
    box-shadow: none !important;
    height: auto !important;
}

.vastori-search-panel__live .dgwt-wcas-search-input::placeholder {
    color: var(--vastori-muted) !important;
    text-transform: uppercase !important;
    letter-spacing: 0.18em !important;
    font-size: 11px;
}

.vastori-search-panel__live .dgwt-wcas-search-submit,
.vastori-search-panel__live .dgwt-wcas-preloader,
.vastori-search-panel__live .dgwt-wcas-voice-search {
    background: transparent !important;
    color: var(--vastori-ink) !important;
    border: 0 !important;
}

.vastori-search-panel__live .dgwt-wcas-suggestions-wrapp,
.vastori-search-panel__live .dgwt-wcas-suggestions-wrapp .dgwt-wcas-st {
    background: var(--vastori-surface) !important;
    border: 0.5px solid var(--vastori-hairline) !important;
    box-shadow: 0 2px 12px rgba(42,61,39,0.06) !important;
    font-family: var(--vastori-font-sans) !important;
}

.vastori-search-panel__live .dgwt-wcas-suggestion-product .dgwt-wcas-st-title {
    font-family: var(--vastori-font-serif) !important;
    color: var(--vastori-ink) !important;
}

.vastori-search-panel__live .dgwt-wcas-suggestion-product .dgwt-wcas-st-price {
    color: var(--vastori-muted) !important;
    font-size: 12px !important;
}

.vastori-search-panel__live .dgwt-wcas-suggestion-product:hover,
.vastori-search-panel__live .dgwt-wcas-suggestion.dgwt-wcas-suggestion-nores {
    background: var(--vastori-sand-soft) !important;
}

/* Cookie Notice — toa.st-style bottom-right pill */
body #cookie-notice.vastori-cookie-notice,
body #cookie-notice {
    background-color: var(--vastori-ink) !important;
    color: #FFFFFF !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 12px !important;
    letter-spacing: 0.04em !important;
    line-height: 1.6 !important;
    border-top: 0 !important;
    box-shadow: 0 -1px 6px rgba(0,0,0,0.06) !important;
}

body #cookie-notice .cookie-notice-container {
    padding: 16px 24px !important;
    text-align: left !important;
    max-width: 1280px;
    margin: 0 auto;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
    flex-wrap: wrap;
}

body #cookie-notice #cn-notice-text {
    color: #FFFFFF !important;
    display: inline-block !important;
    flex: 1;
    min-width: 200px;
}

body #cookie-notice .cn-buttons-container {
    display: inline-flex;
    gap: 12px;
    align-items: center;
}

body #cookie-notice .cn-button,
body #cookie-notice .cn-set-cookie,
body #cookie-notice .cn-more-info {
    background: transparent !important;
    border: 1px solid #FFFFFF !important;
    color: #FFFFFF !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 10.5px !important;
    font-weight: 500 !important;
    letter-spacing: 0.2em !important;
    text-transform: uppercase !important;
    padding: 10px 18px !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    text-shadow: none !important;
    text-decoration: none !important;
    line-height: 1 !important;
    cursor: pointer;
    transition: background 0.2s var(--vastori-ease), color 0.2s var(--vastori-ease);
}

body #cookie-notice .cn-button:hover,
body #cookie-notice .cn-set-cookie:hover,
body #cookie-notice .cn-more-info:hover {
    background: #FFFFFF !important;
    color: var(--vastori-ink) !important;
    opacity: 1 !important;
}

/* ============================================================
   1000. v0.8.2 — Cleanup
   ============================================================ */

/* Hide the legacy policy strip (rendered by inc/footer-menu.php on
   botiga_footer_after). The full 4-column footer + bottom row from
   v0.7.0 covers those links now. Keep footer-menu.php in place so
   future setups that don't enable the multi-col footer can still
   use the legacy strip. */
body .vastori-policy-strip {
    display: none !important;
}

/* FiboSearch — ensure the input is visible and reasonably wide in
   the search panel. The default .dgwt-wcas-search-wrapp limits the
   width; widen it so the search input fills the panel. */
.vastori-search-panel__live .dgwt-wcas-search-wrapp,
.vastori-search-panel__live .dgwt-wcas-search-form,
.vastori-search-panel__live form.dgwt-wcas-search-form {
    display: block !important;
    width: 100% !important;
    max-width: 720px !important;
    margin: 0 auto !important;
    position: relative;
}

.vastori-search-panel__live .dgwt-wcas-sf-wrapp {
    display: flex !important;
    align-items: center;
    width: 100% !important;
    background: transparent !important;
    border: 0 !important;
    border-bottom: 1px solid var(--vastori-ink) !important;
    border-radius: 0 !important;
    box-shadow: none !important;
}

.vastori-search-panel__live input.dgwt-wcas-search-input,
.vastori-search-panel__live .dgwt-wcas-search-input {
    flex: 1 !important;
    width: 100% !important;
    background: transparent !important;
    border: 0 !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 14px !important;
    color: var(--vastori-ink) !important;
    padding: 14px 8px !important;
    box-shadow: none !important;
    line-height: 1.4 !important;
    height: auto !important;
    min-height: 0 !important;
}

/* v0.8.3 — Move FiboSearch magnifier icon OUTSIDE the input (was
   absolute-overlay over placeholder text). Push it to the right
   side of the wrapper as an explicit submit affordance. */
.vastori-search-panel__live .dgwt-wcas-sf-wrapp {
    flex-direction: row !important;
}

.vastori-search-panel__live .dgwt-wcas-search-icon,
.vastori-search-panel__live .dgwt-wcas-ico-magnifier,
.vastori-search-panel__live .dgwt-wcas-search-submit {
    order: 2 !important;
    position: static !important;
    background: transparent !important;
    color: var(--vastori-ink) !important;
    fill: var(--vastori-ink) !important;
    width: 22px !important;
    height: 22px !important;
    margin-left: 8px !important;
    padding: 0 !important;
    align-self: center;
}

.vastori-search-panel__live .dgwt-wcas-search-icon svg,
.vastori-search-panel__live .dgwt-wcas-ico-magnifier svg {
    width: 16px !important;
    height: 16px !important;
}

.vastori-search-panel__live input.dgwt-wcas-search-input {
    order: 1 !important;
    padding-left: 0 !important;
}

/* Helper label above FiboSearch input */
.vastori-search-panel__live::before {
    content: "Search Vastori";
    display: block;
    text-align: center;
    font-family: var(--vastori-font-sans);
    font-size: 10.5px;
    font-weight: 500;
    letter-spacing: 0.3em;
    text-transform: uppercase;
    color: var(--vastori-muted);
    margin-bottom: 16px;
}

/* ============================================================
   1100. v0.9.0 — Single product page toa.st alignment
   ============================================================ */

/* NEW badge above title */
body.single-product .vastori-new-badge {
    display: inline-block;
    background: var(--vastori-sand-soft);
    color: var(--vastori-ink);
    font-family: var(--vastori-font-sans);
    font-size: 10.5px;
    font-weight: 500;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    padding: 6px 12px;
    margin-bottom: 12px;
    line-height: 1;
}

/* Free shipping line above buttons */
body.single-product .vastori-shipping-line {
    font-family: var(--vastori-font-sans) !important;
    font-size: 12px !important;
    color: var(--vastori-ink-soft) !important;
    margin: 24px 0 16px !important;
    padding: 0 !important;
}

/* What's My Size link */
body.single-product .vastori-size-chart-link {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-family: var(--vastori-font-sans) !important;
    font-size: 12px !important;
    color: var(--vastori-ink) !important;
    text-decoration: underline !important;
    text-underline-offset: 3px;
    text-decoration-color: var(--vastori-line) !important;
    margin: 0 0 18px !important;
    cursor: pointer;
}

body.single-product .vastori-size-chart-link__t {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 18px;
    height: 18px;
    background: var(--vastori-ink);
    color: var(--vastori-sand);
    font-family: var(--vastori-font-serif);
    font-size: 11px;
    font-weight: 600;
    line-height: 1;
}

/* Add to Bag + Save for later — 50/50 button row */
body.single-product .single_add_to_cart_button {
    width: 100% !important;
    padding: 18px 12px !important;
    font-size: 12px !important;
    letter-spacing: 0.24em !important;
    margin: 0 !important;
}

body.single-product .vastori-save-wrap {
    margin-top: 0;
}

body.single-product .tinvwl-wishlistexistsbrowse,
body.single-product .tinvwl-wishlistaftercart,
body.single-product .vastori-save-wrap > div {
    margin: 0 !important;
    width: 100% !important;
}

body.single-product .vastori-save-wrap .tinvwl_add_to_wishlist_button,
body.single-product .vastori-save-wrap .tinvwl_add_to_wishlist-text,
body.single-product .vastori-save-wrap a.button,
body.single-product .vastori-save-fallback {
    width: 100% !important;
    background: transparent !important;
    color: var(--vastori-ink) !important;
    border: 1px solid var(--vastori-ink) !important;
    padding: 18px 12px !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 12px !important;
    font-weight: 500 !important;
    letter-spacing: 0.24em !important;
    text-transform: uppercase !important;
    text-align: center !important;
    text-decoration: none !important;
    box-shadow: none !important;
    margin: 0 !important;
    transition: background-color 0.25s var(--vastori-ease), color 0.25s var(--vastori-ease);
    line-height: 1 !important;
    cursor: pointer;
    display: block !important;
}

body.single-product .vastori-save-wrap .tinvwl_add_to_wishlist_button:hover,
body.single-product .vastori-save-wrap a.button:hover,
body.single-product .vastori-save-fallback:hover {
    background: var(--vastori-ink) !important;
    color: var(--vastori-sand) !important;
}

/* Hide the wishlist heart inside the Save button */
body.single-product .vastori-save-wrap .tinvwl_add_to_wishlist_button i,
body.single-product .vastori-save-wrap .tinvwl_add_to_wishlist_button svg,
body.single-product .vastori-save-wrap .tinv-wishlist-icon {
    display: none !important;
}

/* v0.9.5 — Single product page form.cart layout fix.
   Botiga wraps `.quantity` + `.single_add_to_cart_button` together in
   a div.botiga-single-addtocart-wrapper. That means the cart button
   is a GRANDCHILD of form.cart, not a child, so the earlier
   `form.cart > button` direct-child selectors didn't apply. We use
   `display: contents` on the Botiga wrapper to lift its children up
   into form.cart's grid context. Then everything lines up:

     v0.9.106 — REWORKED to a single-column block flow (was a 2-col grid).
     The real DOM nests the whole variations form under a class-less wrapper
     <div> (injected by the variation-swatches/Botiga layer) that is the SOLE
     direct child of form.cart. A 2-col grid forced that wrapper into one
     251px column, cramming Add to Bag + Save into the LEFT HALF of the
     summary (the bug the user reported on product pages AND quick view). All
     the grid-column:1/-1 rules were inert because their grid container was
     that block wrapper, not form.cart. Block flow makes the wrapper full
     width; Add to Bag and Save for Later then stack full width (see the
     .woocommerce-variation-add-to-cart rules below), identical in the
     product page and the narrow quick-view modal.

     Stacked order: shipping line · quantity · Add to Bag · Save for Later   */
body.single-product .summary form.cart {
    display: block !important;
    grid-template-columns: none !important;
    margin-bottom: 8px !important;
}

/* Botiga's wrapper — make its kids act as direct grid items */
body.single-product .summary form.cart > .botiga-single-addtocart-wrapper {
    display: contents !important;
}

body.single-product .summary form.cart > .vastori-shipping-line,
body.single-product .summary form.cart .quantity {
    grid-column: 1 / -1 !important;
}

body.single-product .summary form.cart button[type="submit"].single_add_to_cart_button {
    grid-column: 1 !important;
}

body.single-product .summary form.cart > .vastori-save-wrap {
    grid-column: 2 !important;
}

/* HIDE the TI Wishlist button auto-injected at
   woocommerce_after_add_to_cart_button. We render ours inside
   .vastori-save-wrap below via the shortcode — without this rule
   the page shows two heart links. */
body.single-product .summary form.cart > .tinv-wraper {
    display: none !important;
}

/* v0.9.77 — VARIABLE products nest qty / Add to Bag / Save inside
   .single_variation_wrap > .woocommerce-variation-add-to-cart, so the
   form.cart grid + the direct-child wishlist hide never reached them
   (buttons stacked/misaligned + a duplicate "Add to Wishlist" heart).
   IMPORTANT: do NOT override the display of .woocommerce-variation-add-
   to-cart — WooCommerce's variation JS toggles it, and forcing
   display:contents broke variation selection ("please choose options").
   Instead the wrap is one full-width grid item; we lay out its INTERNALS
   as a full-width stack. */
body.single-product .summary form.cart .single_variation_wrap {
    grid-column: 1 / -1 !important;
}
body.single-product .summary form.cart table.variations {
    grid-column: 1 / -1 !important;
}
/* v0.9.106 — internal layout of the variation add-to-cart wrap: a clean
   FULL-WIDTH STACK — quantity, then Add to Bag, then Save for Later. (Was a
   50/50 row, but the Add-to-Bag button is nested another level down inside
   .botiga-single-addtocart-wrapper, so the 50/50 never lined up and the row
   broke. Stacked full-width is robust in both the wide product page and the
   narrow quick-view modal, and matches the rest of the form.) We set
   flex-direction:column (NOT display) so WooCommerce's show/hide toggle on
   .woocommerce-variation-add-to-cart is preserved. */
body.single-product .summary form.cart .woocommerce-variation-add-to-cart {
    flex-direction: column !important;
    align-items: stretch !important;
    width: 100% !important;
    font-size: 12px !important;
}
body.single-product .summary form.cart .woocommerce-variation-add-to-cart .botiga-single-addtocart-wrapper {
    display: block !important;
    width: 100% !important;
}
body.single-product .summary form.cart .woocommerce-variation-add-to-cart .quantity {
    display: flex !important;
    width: 100% !important;
    margin: 0 0 12px !important;
    font-size: 12px !important;
}
body.single-product .summary form.cart .woocommerce-variation-add-to-cart button.single_add_to_cart_button {
    display: flex !important;
    width: 100% !important;
    box-sizing: border-box !important;
    margin: 0 0 10px !important;
    font-size: 12px !important;
}
body.single-product .summary form.cart .woocommerce-variation-add-to-cart .vastori-save-wrap {
    display: block !important;
    width: 100% !important;
    box-sizing: border-box !important;
    margin: 0 !important;
    font-size: 12px !important;
}
body.single-product .summary form.cart .woocommerce-variation-add-to-cart .vastori-save-wrap .tinvwl_add_to_wishlist_button {
    width: 100% !important;
    display: flex !important;
    font-size: 12px !important;
}
body.single-product .summary form.cart .woocommerce-variation-add-to-cart .vastori-shipping-line {
    width: 100% !important;
}
/* Hide the duplicate raw wishlist wherever it sits — the heart class
   marks the untransformed TI button; our Save button has it stripped. */
body.single-product .summary .tinv-wraper:has(.tinvwl-icon-heart) {
    display: none !important;
}
/* collapse the empty variation price row so there's no big gap before
   a size is chosen */
body.single-product .summary form.cart .single_variation:empty {
    margin: 0 !important;
    min-height: 0 !important;
}
/* v0.9.98 — kill the residual gap between the swatches and the
   quantity/free-shipping block before a variation is chosen. */
body.single-product .summary form.cart .single_variation_wrap {
    margin: 0 !important;
}
body.single-product .summary form.cart .woocommerce-variation {
    margin: 0 !important;
    min-height: 0 !important;
}
body.single-product .summary form.cart table.variations {
    margin-bottom: 14px !important;
}
/* the relocated "What's My Size?" link now sits just above quantity */
body.single-product .summary form.cart .vastori-size-chart-link {
    grid-column: 1 / -1 !important;
    margin: 0 0 14px !important;
}

/* Quantity row — label on its own line, then [- input +] controls */
body.single-product .summary form.cart .quantity {
    display: flex !important;
    flex-wrap: wrap !important;
    align-items: center !important;
    gap: 0 !important;
    margin: 0 0 4px !important;
}

body.single-product .summary form.cart .quantity::before {
    content: "Quantity";
    width: 100% !important;
    margin-bottom: 8px !important;
    font-family: var(--vastori-font-sans);
    font-size: 10.5px;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--vastori-muted);
}

/* Botiga's anchor +/- buttons — proper squares */
body.single-product .summary form.cart .quantity a.botiga-quantity-minus,
body.single-product .summary form.cart .quantity a.botiga-quantity-plus {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 40px !important;
    height: 44px !important;
    padding: 0 !important;
    border: 1px solid var(--vastori-line) !important;
    background: var(--vastori-surface) !important;
    color: var(--vastori-ink) !important;
    text-decoration: none !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 16px !important;
    font-weight: 400 !important;
    line-height: 1 !important;
    border-radius: 0 !important;
    transition: background 0.2s var(--vastori-ease);
}

body.single-product .summary form.cart .quantity a.botiga-quantity-minus:hover,
body.single-product .summary form.cart .quantity a.botiga-quantity-plus:hover {
    background: var(--vastori-sand) !important;
    color: var(--vastori-ink) !important;
}

body.single-product .summary form.cart .quantity a.botiga-quantity-minus {
    border-right: 0 !important;
}

body.single-product .summary form.cart .quantity a.botiga-quantity-plus {
    border-left: 0 !important;
}

body.single-product .summary form.cart .quantity input.qty {
    width: 56px !important;
    height: 44px !important;
    padding: 0 !important;
    border: 1px solid var(--vastori-line) !important;
    border-left: 0 !important;
    border-right: 0 !important;
    background: var(--vastori-surface) !important;
    color: var(--vastori-ink) !important;
    text-align: center !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 13px !important;
    border-radius: 0 !important;
    -moz-appearance: textfield;
}

body.single-product .summary form.cart .quantity input.qty::-webkit-outer-spin-button,
body.single-product .summary form.cart .quantity input.qty::-webkit-inner-spin-button {
    -webkit-appearance: none !important;
    margin: 0 !important;
}

/* Screen-reader label inside .quantity stays visually hidden */
body.single-product .summary form.cart .quantity label.screen-reader-text {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    padding: 0 !important;
    margin: -1px !important;
    overflow: hidden !important;
    clip: rect(0,0,0,0) !important;
    white-space: nowrap !important;
    border: 0 !important;
}

/* Force the Add to Bag button to filled forest green even when
   Botiga's wrapper or LiteSpeed reorders the cascade. */
body.single-product .summary form.cart button.single_add_to_cart_button,
body.single-product .summary form.cart button[type="submit"].single_add_to_cart_button.alt {
    background: var(--vastori-ink) !important;
    background-color: var(--vastori-ink) !important;
    color: #FFFFFF !important;
    border: 1px solid var(--vastori-ink) !important;
    width: 100% !important;
    padding: 18px 12px !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 12px !important;
    font-weight: 500 !important;
    letter-spacing: 0.24em !important;
    text-transform: uppercase !important;
    line-height: 1 !important;
    border-radius: 0 !important;
    margin: 0 !important;
    align-self: stretch !important;
    cursor: pointer;
    transition: background 0.25s var(--vastori-ease), color 0.25s var(--vastori-ease);
}

body.single-product .summary form.cart button.single_add_to_cart_button:hover {
    background: transparent !important;
    background-color: transparent !important;
    color: var(--vastori-ink) !important;
}

/* v0.9.9 — Hoist form.cart layout + button + quantity + save-wrap
   rules OUT of body.single-product scope so they apply equally to:
     - single product page
     - YITH quick view modal (rendered on archive, body.single-product
       is false there)
     - any future location that injects a WC form.cart

   The body.single-product rules above are kept for back-compat /
   safety but the truly scope-agnostic rules below win because they
   come later in source order and have equal or higher specificity. */

form.cart {
    display: block !important;
    grid-template-columns: none !important;
    margin-bottom: 8px !important;
    border: 0 !important;
    padding: 0 !important;
    background: transparent !important;
}

form.cart > .botiga-single-addtocart-wrapper {
    display: contents !important;
}

form.cart > .vastori-shipping-line,
form.cart .quantity {
    grid-column: 1 / -1 !important;
}

form.cart > .vastori-save-wrap {
    grid-column: 2 !important;
    align-self: stretch !important;
}

form.cart button[type="submit"].single_add_to_cart_button,
form.cart button.single_add_to_cart_button,
form.cart button[type="submit"].single_add_to_cart_button.alt {
    grid-column: 1 !important;
    background: var(--vastori-ink) !important;
    background-color: var(--vastori-ink) !important;
    color: #FFFFFF !important;
    border: 1px solid var(--vastori-ink) !important;
    width: 100% !important;
    padding: 18px 12px !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 12px !important;
    font-weight: 500 !important;
    letter-spacing: 0.24em !important;
    text-transform: uppercase !important;
    line-height: 1 !important;
    border-radius: 0 !important;
    margin: 0 !important;
    align-self: stretch !important;
    cursor: pointer;
    transition: background 0.25s var(--vastori-ease), color 0.25s var(--vastori-ease);
}
form.cart button.single_add_to_cart_button:hover {
    background: transparent !important;
    background-color: transparent !important;
    color: var(--vastori-ink) !important;
}

/* HIDE TI's auto-injected wishlist button at form.cart top level
   (rendered by TI at woocommerce_after_add_to_cart_button by default).
   We keep only the one inside .vastori-save-wrap. */
form.cart > .tinv-wraper {
    display: none !important;
}

/* Quantity row — label on its own line, then [- input +] controls.
   Wipes any inherited padding/border so it doesn't draw an extra
   outer box around the widget. */
form.cart .quantity {
    display: flex !important;
    flex-wrap: wrap !important;
    align-items: center !important;
    gap: 0 !important;
    margin: 0 0 4px !important;
    padding: 0 !important;
    border: 0 !important;
    background: transparent !important;
}

form.cart .quantity::before {
    content: "Quantity";
    width: 100% !important;
    margin-bottom: 8px !important;
    font-family: var(--vastori-font-sans);
    font-size: 10.5px;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--vastori-muted);
}

form.cart .quantity a.botiga-quantity-minus,
form.cart .quantity a.botiga-quantity-plus {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 40px !important;
    height: 44px !important;
    padding: 0 !important;
    border: 1px solid var(--vastori-line) !important;
    background: var(--vastori-surface) !important;
    color: var(--vastori-ink) !important;
    text-decoration: none !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 16px !important;
    font-weight: 400 !important;
    line-height: 1 !important;
    border-radius: 0 !important;
    transition: background 0.2s var(--vastori-ease);
}
form.cart .quantity a.botiga-quantity-minus:hover,
form.cart .quantity a.botiga-quantity-plus:hover {
    background: var(--vastori-sand) !important;
    color: var(--vastori-ink) !important;
}
form.cart .quantity a.botiga-quantity-minus { border-right: 0 !important; }
form.cart .quantity a.botiga-quantity-plus  { border-left: 0 !important; }

form.cart .quantity input.qty,
form.cart .quantity input[type="number"] {
    width: 56px !important;
    height: 44px !important;
    padding: 0 !important;
    border: 1px solid var(--vastori-line) !important;
    border-left: 0 !important;
    border-right: 0 !important;
    background: var(--vastori-surface) !important;
    color: var(--vastori-ink) !important;
    text-align: center !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 13px !important;
    border-radius: 0 !important;
    -moz-appearance: textfield;
}
form.cart .quantity input.qty::-webkit-outer-spin-button,
form.cart .quantity input.qty::-webkit-inner-spin-button {
    -webkit-appearance: none !important;
    margin: 0 !important;
}
form.cart .quantity label.screen-reader-text {
    position: absolute !important;
    width: 1px !important; height: 1px !important;
    padding: 0 !important; margin: -1px !important;
    overflow: hidden !important;
    clip: rect(0,0,0,0) !important;
    white-space: nowrap !important;
    border: 0 !important;
}

/* Save-wrap (Add to Wishlist secondary button) — scope-agnostic.
   The TI shortcode renders <div class="tinv-wraper"><a class="...">.
   Force the inner anchor to fill the wrap as a proper outlined button.
   This was previously scoped to body.single-product so quick view
   showed it as a tiny inline link. */
.vastori-save-wrap {
    margin-top: 0;
    display: flex;
    align-items: stretch;
}
.vastori-save-wrap > div,
.vastori-save-wrap .tinv-wraper,
.vastori-save-wrap .tinvwl-wishlistexistsbrowse,
.vastori-save-wrap .tinvwl-wishlistaftercart {
    width: 100% !important;
    margin: 0 !important;
    display: block !important;
}
.vastori-save-wrap .tinvwl_add_to_wishlist_button,
.vastori-save-wrap .tinvwl_add_to_wishlist-text,
.vastori-save-wrap a.button,
.vastori-save-wrap .vastori-save-fallback {
    width: 100% !important;
    background: transparent !important;
    color: var(--vastori-ink) !important;
    border: 1px solid var(--vastori-ink) !important;
    padding: 18px 12px !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 12px !important;
    font-weight: 500 !important;
    letter-spacing: 0.24em !important;
    text-transform: uppercase !important;
    text-align: center !important;
    text-decoration: none !important;
    box-shadow: none !important;
    margin: 0 !important;
    line-height: 1 !important;
    cursor: pointer;
    display: block !important;
    transition: background 0.25s var(--vastori-ease), color 0.25s var(--vastori-ease);
}
.vastori-save-wrap .tinvwl_add_to_wishlist_button:hover,
.vastori-save-wrap a.button:hover {
    background: var(--vastori-ink) !important;
    color: #FFFFFF !important;
}
/* Hide TI's tooltip + the icon inside our Save button. */
.vastori-save-wrap .tinvwl-tooltip,
.vastori-save-wrap .tinvwl_add_to_wishlist_button i,
.vastori-save-wrap .tinvwl_add_to_wishlist_button svg,
.vastori-save-wrap .tinv-wishlist-icon {
    display: none !important;
}

/* v0.9.11 — Rename TI's "Add to Wishlist" / "Remove from Wishlist"
   anchor text to "SAVE FOR LATER" / "SAVED" via pseudo-element so we
   don't have to touch the plugin's i18n strings. Hide the original
   text via font-size:0 + clip so screen readers still see it. */
.vastori-save-wrap .tinvwl_add_to_wishlist_button {
    font-size: 0 !important;
    position: relative !important;
}
.vastori-save-wrap .tinvwl_add_to_wishlist-text,
.vastori-save-wrap .tinvwl_remove_from_wishlist-text,
.vastori-save-wrap .tinvwl_add_to_wishlist_button > span {
    font-size: 0 !important;
    line-height: 0 !important;
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    margin: -1px !important;
    padding: 0 !important;
    overflow: hidden !important;
    clip: rect(0,0,0,0) !important;
    white-space: nowrap !important;
}
.vastori-save-wrap .tinvwl_add_to_wishlist_button::before {
    content: "Save for Later";
    display: block !important;
    font-size: 12px !important;
    font-weight: 500 !important;
    letter-spacing: 0.24em !important;
    text-transform: uppercase !important;
    line-height: 1 !important;
    color: var(--vastori-ink) !important;
    width: 100% !important;
    text-align: center !important;
}
/* When the product is already saved, TI sets data-tinv-wl-action="remove" */
.vastori-save-wrap .tinvwl_add_to_wishlist_button[data-tinv-wl-action="remove"]::before {
    content: "Saved";
}
.vastori-save-wrap .tinvwl_add_to_wishlist_button:hover::before {
    color: #FFFFFF !important;
}

/* v0.9.11 — Force Save anchor to stretch full row height so it
   visually matches the Add to Bag button exactly. The previous
   v0.9.9 rules gave the wrap `display: flex` but the anchor inside
   didn't stretch; now we use a flex column with flex:1 to fill. */
.vastori-save-wrap {
    display: flex !important;
    align-items: stretch !important;
}
.vastori-save-wrap > div,
.vastori-save-wrap .tinv-wraper {
    flex: 1 !important;
    display: flex !important;
    align-items: stretch !important;
}
.vastori-save-wrap .tinvwl_add_to_wishlist_button,
.vastori-save-wrap a.button {
    flex: 1 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    height: auto !important;
    min-height: 0 !important;
    box-sizing: border-box !important;
}
/* Match Add to Bag's padding exactly — same 18px top/bottom yields
   identical heights given identical font-size + line-height. */
.vastori-save-wrap .tinvwl_add_to_wishlist_button,
.vastori-save-wrap a.button,
.vastori-save-wrap .vastori-save-fallback {
    padding: 18px 12px !important;
}

/* v0.9.10 — YITH quick view modal: push the quantity widget styling
   to win against YITH/WC's modal-scoped defaults. The single product
   page renders fine, but inside #yith-quick-view-modal the +/- anchors
   were collapsing and the input was getting an underline-only style.
   Higher-specificity overrides with !important pinned to every
   variant of the selector. */
#yith-quick-view-modal form.cart,
#yith-quick-view-modal .product form.cart {
    display: block !important;
    grid-template-columns: none !important;
    border: 0 !important;
    padding: 0 !important;
    background: transparent !important;
}

#yith-quick-view-modal form.cart > .botiga-single-addtocart-wrapper,
#yith-quick-view-modal .botiga-single-addtocart-wrapper {
    display: contents !important;
}

/* v0.9.84 — Quick view keeps its QUANTITY stepper (restored: hiding it
   was a mistake). Lay it out on its own full-width row above the buttons. */
#yith-quick-view-modal form.cart .quantity,
#yith-quick-view-modal .product .quantity,
#yith-quick-view-modal div.quantity {
    grid-column: 1 / -1 !important;
    display: flex !important;
    flex-wrap: wrap !important;
    align-items: center !important;
    justify-content: flex-start !important;
    gap: 0 !important;
    margin: 0 0 4px !important;
    padding: 0 !important;
    border: 0 !important;
    background: transparent !important;
    width: 100% !important;
}

#yith-quick-view-modal form.cart .quantity::before,
#yith-quick-view-modal .product .quantity::before {
    content: "Quantity" !important;
    width: 100% !important;
    display: block !important;
    margin-bottom: 8px !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 10.5px !important;
    letter-spacing: 0.22em !important;
    text-transform: uppercase !important;
    color: var(--vastori-muted) !important;
}

/* v0.9.84 — In the quick view the BAG DRAWER is the add-to-cart
   confirmation, so never show a leftover "View bag/cart" link or a
   post-add checkmark on the button (these were appearing next to
   "Add to Bag" and breaking the button row). */
#yith-quick-view-modal a.added_to_cart,
#yith-quick-view-modal .single_add_to_cart_button.added::after,
#yith-quick-view-modal .single_add_to_cart_button.added::before {
    display: none !important;
    content: none !important;
}

/* v0.9.84 — inline "choose your size" prompt shown when Add to Bag is
   pressed before a variation is selected (replaces the old session
   error that leaked onto archive pages). */
#yith-quick-view-modal .vastori-qv-choose {
    margin: 0 0 12px !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 12px !important;
    letter-spacing: 0.02em !important;
    color: var(--vastori-cocoa, #A89580) !important;
}

#yith-quick-view-modal form.cart .quantity a.botiga-quantity-minus,
#yith-quick-view-modal form.cart .quantity a.botiga-quantity-plus,
#yith-quick-view-modal .quantity a.botiga-quantity-minus,
#yith-quick-view-modal .quantity a.botiga-quantity-plus,
#yith-quick-view-modal a.botiga-quantity-minus,
#yith-quick-view-modal a.botiga-quantity-plus {
    display: inline-flex !important;
    visibility: visible !important;
    opacity: 1 !important;
    width: 40px !important;
    min-width: 40px !important;
    max-width: 40px !important;
    height: 44px !important;
    padding: 0 !important;
    margin: 0 !important;
    border: 1px solid var(--vastori-line) !important;
    background: var(--vastori-surface) !important;
    color: var(--vastori-ink) !important;
    text-decoration: none !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 16px !important;
    font-weight: 400 !important;
    line-height: 1 !important;
    border-radius: 0 !important;
    align-items: center !important;
    justify-content: center !important;
    box-shadow: none !important;
    text-shadow: none !important;
    flex: 0 0 40px !important;
}
#yith-quick-view-modal form.cart .quantity a.botiga-quantity-minus,
#yith-quick-view-modal .quantity a.botiga-quantity-minus,
#yith-quick-view-modal a.botiga-quantity-minus {
    border-right: 0 !important;
}
#yith-quick-view-modal form.cart .quantity a.botiga-quantity-plus,
#yith-quick-view-modal .quantity a.botiga-quantity-plus,
#yith-quick-view-modal a.botiga-quantity-plus {
    border-left: 0 !important;
}

#yith-quick-view-modal form.cart .quantity input.qty,
#yith-quick-view-modal form.cart .quantity input[type="number"],
#yith-quick-view-modal .quantity input.qty,
#yith-quick-view-modal .quantity input[type="number"],
#yith-quick-view-modal input.qty {
    width: 56px !important;
    min-width: 56px !important;
    max-width: 56px !important;
    height: 44px !important;
    padding: 0 !important;
    margin: 0 !important;
    border: 1px solid var(--vastori-line) !important;
    border-left: 0 !important;
    border-right: 0 !important;
    background: var(--vastori-surface) !important;
    color: var(--vastori-ink) !important;
    text-align: center !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 13px !important;
    line-height: 1 !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    -moz-appearance: textfield !important;
    flex: 0 0 56px !important;
    vertical-align: middle !important;
}
#yith-quick-view-modal .quantity input.qty::-webkit-outer-spin-button,
#yith-quick-view-modal .quantity input.qty::-webkit-inner-spin-button {
    -webkit-appearance: none !important;
    margin: 0 !important;
}
#yith-quick-view-modal .quantity label.screen-reader-text {
    position: absolute !important;
    width: 1px !important; height: 1px !important;
    padding: 0 !important; margin: -1px !important;
    overflow: hidden !important;
    clip: rect(0,0,0,0) !important;
    white-space: nowrap !important;
    border: 0 !important;
}

/* Quick view Add to Bag + Save wrap — same as single page */
#yith-quick-view-modal form.cart button.single_add_to_cart_button,
#yith-quick-view-modal form.cart button[type="submit"].single_add_to_cart_button {
    grid-column: 1 !important;
    background: var(--vastori-ink) !important;
    background-color: var(--vastori-ink) !important;
    color: #FFFFFF !important;
    border: 1px solid var(--vastori-ink) !important;
    width: 100% !important;
    padding: 18px 12px !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 12px !important;
    font-weight: 500 !important;
    letter-spacing: 0.24em !important;
    text-transform: uppercase !important;
    line-height: 1 !important;
    border-radius: 0 !important;
    margin: 0 !important;
}
#yith-quick-view-modal form.cart > .vastori-save-wrap {
    grid-column: 2 !important;
    align-self: stretch !important;
    display: flex !important;
}
#yith-quick-view-modal form.cart > .vastori-save-wrap > div,
#yith-quick-view-modal form.cart > .vastori-save-wrap .tinv-wraper {
    width: 100% !important;
    margin: 0 !important;
}
#yith-quick-view-modal form.cart > .vastori-save-wrap .tinvwl_add_to_wishlist_button,
#yith-quick-view-modal form.cart > .vastori-save-wrap a.button {
    width: 100% !important;
    background: transparent !important;
    color: var(--vastori-ink) !important;
    border: 1px solid var(--vastori-ink) !important;
    padding: 18px 12px !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 12px !important;
    font-weight: 500 !important;
    letter-spacing: 0.24em !important;
    text-transform: uppercase !important;
    text-align: center !important;
    text-decoration: none !important;
    line-height: 1 !important;
    border-radius: 0 !important;
    margin: 0 !important;
    display: block !important;
}
#yith-quick-view-modal form.cart > .tinv-wraper {
    display: none !important;
}

/* Find in shop line */
body.single-product .vastori-shop-locator {
    display: flex;
    align-items: center;
    gap: 8px;
    font-family: var(--vastori-font-sans) !important;
    font-size: 12px !important;
    color: var(--vastori-ink-soft) !important;
    margin: 24px 0 0 !important;
    padding: 16px 0 0 !important;
    border-top: 0.5px solid var(--vastori-hairline);
}

body.single-product .vastori-shop-locator svg {
    color: var(--vastori-ink-soft);
}

body.single-product .vastori-shop-locator a {
    color: var(--vastori-ink) !important;
    text-decoration: underline !important;
    text-underline-offset: 3px;
}

/* Size chart modal */
.vastori-size-modal-backdrop {
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,0.35);
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.3s var(--vastori-ease);
    z-index: 9998;
}

.vastori-size-modal {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%) scale(0.96);
    background: var(--vastori-surface);
    width: min(90vw, 640px);
    max-height: 80vh;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.3s var(--vastori-ease), transform 0.3s var(--vastori-ease);
    z-index: 9999;
    display: flex;
    flex-direction: column;
}

.vastori-size-modal.is-open {
    opacity: 1;
    pointer-events: auto;
    transform: translate(-50%, -50%) scale(1);
}

.vastori-size-modal.is-open ~ .vastori-size-modal-backdrop,
body:has(.vastori-size-modal.is-open) .vastori-size-modal-backdrop {
    opacity: 1;
    pointer-events: auto;
}

.vastori-size-modal__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 24px 32px;
    border-bottom: 0.5px solid var(--vastori-hairline);
}

.vastori-size-modal__head h2 {
    font-family: var(--vastori-font-serif) !important;
    font-weight: 500 !important;
    font-size: 22px !important;
    margin: 0 !important;
    color: var(--vastori-ink) !important;
}

.vastori-size-modal__close {
    background: transparent;
    border: 0;
    font-size: 24px;
    line-height: 1;
    color: var(--vastori-ink);
    cursor: pointer;
}

.vastori-size-modal__body {
    padding: 24px 32px 32px;
    overflow-y: auto;
}

.vastori-size-modal__intro {
    font-family: var(--vastori-font-sans);
    font-size: 13px;
    color: var(--vastori-ink-soft);
    margin: 0 0 20px;
    line-height: 1.7;
}

.vastori-size-modal__table {
    width: 100%;
    border-collapse: collapse;
    font-family: var(--vastori-font-sans);
    font-size: 12px;
}

.vastori-size-modal__table th,
.vastori-size-modal__table td {
    padding: 10px 12px;
    text-align: left;
    border-bottom: 0.5px solid var(--vastori-hairline);
    color: var(--vastori-ink);
}

.vastori-size-modal__table th {
    text-transform: uppercase;
    letter-spacing: 0.14em;
    font-size: 10.5px;
    font-weight: 500;
    color: var(--vastori-muted);
}

.vastori-size-modal__footnote {
    margin: 20px 0 0;
    font-family: var(--vastori-font-sans);
    font-size: 12px;
    color: var(--vastori-muted);
}

/* Inch / cm unit toggle */
.vastori-size-units {
    display: inline-flex;
    border: 0.5px solid var(--vastori-line);
    border-radius: 2px;
    overflow: hidden;
    margin: 0 0 18px;
}
.vastori-size-unit {
    appearance: none;
    background: transparent;
    border: 0;
    cursor: pointer;
    font-family: var(--vastori-font-sans);
    font-size: 11px;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--vastori-muted);
    padding: 8px 18px;
    transition: background .18s ease, color .18s ease;
}
.vastori-size-unit + .vastori-size-unit {
    border-left: 0.5px solid var(--vastori-line);
}
.vastori-size-unit.is-active {
    background: var(--vastori-ink);
    color: #fff;
}

/* How-to-measure list */
.vastori-size-modal__subhead {
    font-family: var(--vastori-font-sans);
    font-size: 10.5px;
    text-transform: uppercase;
    letter-spacing: 0.14em;
    font-weight: 500;
    color: var(--vastori-muted);
    margin: 26px 0 12px;
}
.vastori-size-measure {
    list-style: none;
    margin: 0;
    padding: 0;
}
.vastori-size-measure li {
    font-family: var(--vastori-font-sans);
    font-size: 12.5px;
    line-height: 1.7;
    color: var(--vastori-ink-soft);
    padding: 0 0 8px;
}
.vastori-size-measure strong {
    color: var(--vastori-ink);
    font-weight: 600;
}

/* ---- 1100.2 Two-column block below summary ------------ */
.vastori-pp-cols {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 64px;
    max-width: 1280px;
    margin: 64px auto 80px;
    padding: 0 32px;
    border-top: 0.5px solid var(--vastori-hairline);
    padding-top: 56px;
}

.vastori-pp-cols__heading {
    font-family: var(--vastori-font-serif) !important;
    font-weight: 500 !important;
    font-size: 17px !important;
    color: var(--vastori-ink) !important;
    margin: 32px 0 12px !important;
}

.vastori-pp-cols__left p,
.vastori-pp-cols__right p {
    font-family: var(--vastori-font-sans) !important;
    font-size: 14px !important;
    line-height: 1.85 !important;
    color: var(--vastori-ink-soft) !important;
    margin: 0 0 14px !important;
}

.vastori-pp-cols__desc p:first-child {
    margin-top: 0 !important;
}

.vastori-pp-cols a {
    color: var(--vastori-ink) !important;
    text-decoration: underline !important;
    text-underline-offset: 3px;
    text-decoration-color: var(--vastori-line) !important;
}

.vastori-pp-cols a:hover {
    text-decoration-color: var(--vastori-ink) !important;
}

@media (max-width: 768px) {
    .vastori-pp-cols { grid-template-columns: 1fr; gap: 32px; padding: 32px 16px 64px; margin-top: 32px; }
}

/* Hide WC's now-empty product-tabs container */
body.single-product .woocommerce-tabs {
    display: none !important;
}

/* ============================================================
   1200. v0.9.1 — Mobile polish
   Most v0.7/v0.8/v0.9 features were JS-injected only into the
   desktop header. Fixing both the JS (querySelectorAll in
   header-saved.php and header-search.php) and adding mobile-
   sized styling here.
   ============================================================ */

@media (max-width: 768px) {
    /* Top promo: smaller padding, smaller text */
    .vastori-top-promo__inner {
        padding: 7px 12px !important;
        gap: 8px !important;
        flex-wrap: nowrap;
    }
    .vastori-top-promo__text,
    .vastori-top-promo__country {
        font-size: 9px !important;
        letter-spacing: 0.08em !important;
    }
    .vastori-top-promo__text {
        text-overflow: ellipsis;
        overflow: hidden;
        white-space: nowrap;
    }

    /* Header text labels on mobile — compact */
    .vastori-h-link {
        font-size: 9.5px !important;
        padding: 0 5px !important;
        letter-spacing: 0.12em !important;
        gap: 2px !important;
    }
    .vastori-h-link__count {
        font-size: 9.5px !important;
    }

    /* Make the BHFB mobile row gap actually allow icons + labels */
    body .bhfb-mobile .bhfb-main_header_row .bhfb-row {
        gap: 6px !important;
    }
    body .bhfb-mobile .bhfb-component-woo_icons,
    body .bhfb-mobile .bhfb-column-3 {
        display: inline-flex !important;
        align-items: center !important;
        gap: 4px !important;
    }
}

@media (max-width: 480px) {
    .vastori-top-promo__text {
        max-width: 60vw;
    }
    .vastori-h-link__label {
        /* on the smallest screens, drop the ACCOUNT label down to icon
           only would be ideal but we promised it stays visible —
           shrink instead. */
        font-size: 8.5px !important;
    }
}

/* Product page mobile — buttons stack rather than 50/50 cramped */
@media (max-width: 480px) {
    body.single-product .summary form.cart {
        grid-template-columns: 1fr !important;
        gap: 10px !important;
    }
    body.single-product .summary form.cart > button[type="submit"].single_add_to_cart_button {
        grid-column: 1 !important;
    }
    body.single-product .summary form.cart > .vastori-save-wrap {
        grid-column: 1 !important;
    }
    body.single-product .vastori-shipping-line {
        font-size: 11px !important;
    }
}

/* v0.9.100 — Cart/saved/account drawers on mobile: leave a backdrop strip
   on the left so tapping outside closes them (a full-width 100vw drawer has
   no "outside" to tap). */
@media (max-width: 768px) {
    .vastori-cart-drawer {
        width: 88vw !important;
        max-width: 420px !important;
        box-shadow: -8px 0 40px rgba(42, 61, 39, 0.18) !important;
    }
    .vastori-cart-drawer__head {
        padding: 16px !important;
    }
    .vastori-cart-drawer__title {
        font-size: 22px !important;
    }
    .vastori-cart-drawer__body {
        padding: 16px !important;
    }
}

/* Search panel on mobile — single column for everything */
@media (max-width: 600px) {
    .vastori-search-panel {
        padding: 56px 16px 24px !important;
    }
    .vastori-search-panel__live::before {
        font-size: 9.5px !important;
    }
    .vastori-search-panel__live input.dgwt-wcas-search-input {
        font-size: 13px !important;
    }
}

/* ============================================================
   v0.9.21 — Reintroducing v0.9.13/0.9.14 CSS additions in
   isolation. Earlier batch broke the site; this batch is
   intentionally narrower so we can isolate the culprit.
   ============================================================ */

/* v0.9.13 — Bulletproof quantity controls wrapper class.
   Currently inert because form-cart-relayout.php is disabled
   (no DOM class .vastori-qty-controls exists yet). Adding the
   rules now is harmless and ready for when we re-enable the JS. */
.vastori-qty-controls {
    display: inline-flex !important;
    align-items: stretch !important;
    flex-wrap: nowrap !important;
    gap: 0 !important;
    width: auto !important;
    max-width: 160px !important;
    border: 1px solid var(--vastori-line) !important;
    background: var(--vastori-surface) !important;
    border-radius: 0 !important;
}
.vastori-qty-controls a.botiga-quantity-minus,
.vastori-qty-controls a.botiga-quantity-plus {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 40px !important;
    min-width: 40px !important;
    height: 44px !important;
    padding: 0 !important;
    margin: 0 !important;
    border: 0 !important;
    background: transparent !important;
    color: var(--vastori-ink) !important;
    text-decoration: none !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 16px !important;
    line-height: 1 !important;
    border-radius: 0 !important;
    cursor: pointer;
}
.vastori-qty-controls a.botiga-quantity-minus {
    border-right: 1px solid var(--vastori-line) !important;
}
.vastori-qty-controls a.botiga-quantity-plus {
    border-left: 1px solid var(--vastori-line) !important;
}
.vastori-qty-controls input.qty,
.vastori-qty-controls input[type="number"] {
    width: 56px !important;
    min-width: 56px !important;
    height: 44px !important;
    padding: 0 !important;
    margin: 0 !important;
    border: 0 !important;
    background: transparent !important;
    color: var(--vastori-ink) !important;
    text-align: center !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 14px !important;
    line-height: 44px !important;
    vertical-align: middle !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    -moz-appearance: textfield !important;
}
.vastori-qty-controls input.qty::-webkit-outer-spin-button,
.vastori-qty-controls input.qty::-webkit-inner-spin-button {
    -webkit-appearance: none !important;
    margin: 0 !important;
}
.vastori-qty-controls .bt-d-none {
    position: absolute !important;
    width: 1px !important; height: 1px !important;
    margin: -1px !important;
    overflow: hidden !important;
    clip: rect(0,0,0,0) !important;
}

/* v0.9.13 — Save for Later label class (injected by JS — inert
   until JS is re-enabled). */
.vastori-save-wrap .vastori-save-label {
    display: inline-block !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 12px !important;
    font-weight: 500 !important;
    letter-spacing: 0.24em !important;
    text-transform: uppercase !important;
    color: var(--vastori-ink) !important;
    line-height: 1 !important;
    text-align: center !important;
    width: 100% !important;
}
.vastori-save-wrap a.tinvwl_add_to_wishlist_button:hover .vastori-save-label {
    color: #FFFFFF !important;
}
/* v0.9.50 — Bulletproof the injected Save-for-Later label: some
   earlier SR-clip / font-size:0 rule (meant for TI's original text
   spans) was also collapsing OUR label inside the YITH quick-view
   modal, leaving the Save button visually empty. Force it back. */
#yith-quick-view-modal .vastori-save-wrap .vastori-save-label,
.vastori-save-wrap a.tinvwl_add_to_wishlist_button .vastori-save-label {
    font-size: 12px !important;
    width: auto !important;
    height: auto !important;
    position: static !important;
    clip: auto !important;
    overflow: visible !important;
    margin: 0 !important;
    white-space: nowrap !important;
}

/* v0.9.14 — Variable product size-pill skin (Variation Swatches
   plugin output). Scoped to form.cart ul.variable-items-wrapper
   — only renders on variable product pages, so homepage / non-
   variable pages are untouched. */
form.cart ul.variable-items-wrapper {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 8px !important;
    margin: 0 !important;
    padding: 0 !important;
    list-style: none !important;
}
form.cart ul.variable-items-wrapper li.variable-item.button-variable-item {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    min-width: 44px !important;
    height: 44px !important;
    padding: 0 14px !important;
    margin: 0 !important;
    border: 1px solid var(--vastori-line) !important;
    background: var(--vastori-surface) !important;
    color: var(--vastori-ink) !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    cursor: pointer;
    transition: background 0.18s var(--vastori-ease), color 0.18s var(--vastori-ease), border-color 0.18s var(--vastori-ease);
}
form.cart ul.variable-items-wrapper li.variable-item .variable-item-contents,
form.cart ul.variable-items-wrapper li.variable-item .variable-item-span,
form.cart ul.variable-items-wrapper li.variable-item .variable-item-span-button {
    background: transparent !important;
    color: inherit !important;
    border: 0 !important;
    box-shadow: none !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 12px !important;
    font-weight: 500 !important;
    letter-spacing: 0.18em !important;
    text-transform: uppercase !important;
    line-height: 1 !important;
    padding: 0 !important;
    margin: 0 !important;
    text-align: center !important;
}
form.cart ul.variable-items-wrapper li.variable-item:hover {
    border-color: var(--vastori-ink) !important;
}
form.cart ul.variable-items-wrapper li.variable-item.selected,
form.cart ul.variable-items-wrapper li.variable-item[aria-checked="true"] {
    background: var(--vastori-ink) !important;
    color: #FFFFFF !important;
    border-color: var(--vastori-ink) !important;
}
form.cart ul.variable-items-wrapper li.variable-item.selected .variable-item-span,
form.cart ul.variable-items-wrapper li.variable-item[aria-checked="true"] .variable-item-span {
    color: #FFFFFF !important;
}
form.cart ul.variable-items-wrapper li.variable-item.disabled {
    opacity: 0.35 !important;
    cursor: not-allowed !important;
    text-decoration: line-through !important;
}
/* Pill display order S → M → L → XL */
form.cart ul.variable-items-wrapper li.variable-item[data-value="xs"] { order: 0 !important; }
form.cart ul.variable-items-wrapper li.variable-item[data-value="s"]  { order: 1 !important; }
form.cart ul.variable-items-wrapper li.variable-item[data-value="m"]  { order: 2 !important; }
form.cart ul.variable-items-wrapper li.variable-item[data-value="l"]  { order: 3 !important; }
form.cart ul.variable-items-wrapper li.variable-item[data-value="xl"] { order: 4 !important; }
form.cart ul.variable-items-wrapper li.variable-item[data-value="xxl"]{ order: 5 !important; }

/* ============================================================
   v0.9.22 — Reintroducing the rest of the size selector + save
   button polish, still scoped.
   ============================================================ */

/* SIZE label cleanup — kill the plugin-appended "Size : S" text,
   render our own "Size" caption via pseudo. Scoped to
   form.cart table.variations only. */
form.cart table.variations {
    border: 0 !important;
    margin: 0 0 4px !important;
    width: 100% !important;
    grid-column: 1 / -1 !important;
}
form.cart table.variations,
form.cart table.variations tbody,
form.cart table.variations tr,
form.cart table.variations th,
form.cart table.variations td {
    display: block !important;
    padding: 0 !important;
    background: transparent !important;
    border: 0 !important;
}
form.cart table.variations th.label {
    margin: 0 0 8px !important;
}
/* v0.9.88 — show the REAL attribute label (Colour / Size). Colour is now
   a variation too, so hard-coding "Size" mislabels the colour row. */
form.cart table.variations th.label label {
    font-family: var(--vastori-font-sans) !important;
    font-size: 10.5px !important;
    letter-spacing: 0.22em !important;
    text-transform: uppercase !important;
    color: var(--vastori-muted) !important;
    line-height: 1 !important;
}
form.cart table.variations th.label label::before {
    content: none !important;
}
form.cart table.variations td.value {
    display: flex !important;
    flex-wrap: wrap !important;
    align-items: center !important;
    gap: 8px !important;
}
form.cart a.reset_variations {
    font-family: var(--vastori-font-sans) !important;
    font-size: 10.5px !important;
    letter-spacing: 0.18em !important;
    text-transform: uppercase !important;
    color: var(--vastori-muted) !important;
    text-decoration: underline !important;
    margin-left: auto !important;
    display: inline-block !important;
    visibility: hidden !important;
}
form.cart a.reset_variations.show {
    visibility: visible !important;
}

/* Kill the floating WVS tooltip pill that hovers next to the SIZE
   label — was showing permanently in screenshot. Scoped narrowly. */
form.cart .wvs-tooltip,
form.cart ul.variable-items-wrapper .wvs-tooltip,
form.cart ul.variable-items-wrapper li.variable-item .wvs-tooltip {
    display: none !important;
    visibility: hidden !important;
    opacity: 0 !important;
    pointer-events: none !important;
}

/* TI Wishlist heart icon suppression — only inside our save-wrap
   container. Clears the plugin's ::before / ::after font glyph
   and the original "Add to Wishlist" text spans, so the JS-
   injected .vastori-save-label can be the only visible text.
   (Still inert until form-cart-relayout.php JS is re-enabled —
   these rules just sit ready.) */
.vastori-save-wrap a.tinvwl_add_to_wishlist_button::before,
.vastori-save-wrap a.tinvwl_add_to_wishlist_button::after {
    content: none !important;
    display: none !important;
    background: none !important;
}
.vastori-save-wrap a.tinvwl_add_to_wishlist_button > span.tinvwl_add_to_wishlist-text,
.vastori-save-wrap a.tinvwl_add_to_wishlist_button > span.tinvwl_remove_from_wishlist-text {
    display: none !important;
}

/* ============================================================
   v0.9.24 — VIEW BAG underline kill + cart drawer variation
   styling + cart page skin (body.woocommerce-cart only).
   Drawer line-item grid layout deferred to v0.9.25.
   ============================================================ */

/* VIEW BAG button — no underline (was visible from the .button
   text-decoration:underline default). */
.vastori-cart-drawer .woocommerce-mini-cart__buttons a.button {
    text-decoration: none !important;
}

/* Cart drawer line-item .variation (Size: M) — small uppercase
   muted caption, inline dt/dd. Scoped to .vastori-cart-drawer
   so we don't touch the cart page. */
.vastori-cart-drawer ul.woocommerce-mini-cart li.mini_cart_item dl.variation,
.vastori-cart-drawer ul.woocommerce-mini-cart li.mini_cart_item .variation {
    margin: 4px 0 0 !important;
    padding: 0 !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 11.5px !important;
    letter-spacing: 0.06em !important;
    text-transform: uppercase !important;
    color: var(--vastori-muted) !important;
}
.vastori-cart-drawer ul.woocommerce-mini-cart li.mini_cart_item .variation dt,
.vastori-cart-drawer ul.woocommerce-mini-cart li.mini_cart_item .variation dd {
    display: inline !important;
    margin: 0 !important;
    padding: 0 !important;
    color: inherit !important;
    font-weight: 400 !important;
}
.vastori-cart-drawer ul.woocommerce-mini-cart li.mini_cart_item .variation dt {
    margin-right: 4px !important;
}
.vastori-cart-drawer ul.woocommerce-mini-cart li.mini_cart_item .variation dd p {
    display: inline !important;
    margin: 0 !important;
}

/* ============================================================
   v0.9.24 — Cart page (/cart/) skin. Every rule prefixed with
   body.woocommerce-cart so non-cart pages are untouched. */

body.woocommerce-cart .woocommerce-cart-form,
body.woocommerce-cart .cart-collaterals {
    font-family: var(--vastori-font-sans) !important;
}

body.woocommerce-cart table.shop_table.cart,
body.woocommerce-cart .woocommerce-cart-form table.cart {
    border: 0 !important;
    background: transparent !important;
}

body.woocommerce-cart table.cart th,
body.woocommerce-cart table.cart td {
    background: transparent !important;
    border-bottom: 0.5px solid var(--vastori-hairline) !important;
    padding: 24px 16px !important;
    vertical-align: top !important;
}

body.woocommerce-cart table.cart th {
    font-size: 11px !important;
    letter-spacing: 0.22em !important;
    text-transform: uppercase !important;
    color: var(--vastori-muted) !important;
    font-weight: 500 !important;
}

body.woocommerce-cart table.cart td.product-thumbnail img {
    width: 80px !important;
    height: 100px !important;
    object-fit: cover !important;
}

body.woocommerce-cart table.cart td.product-name a {
    font-family: var(--vastori-font-serif) !important;
    font-size: 16px !important;
    color: var(--vastori-ink) !important;
    text-decoration: none !important;
}

body.woocommerce-cart table.cart td.product-name .variation,
body.woocommerce-cart table.cart td.product-name dl.variation {
    margin: 8px 0 0 !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 11.5px !important;
    letter-spacing: 0.06em !important;
    text-transform: uppercase !important;
    color: var(--vastori-muted) !important;
}
body.woocommerce-cart table.cart td.product-name .variation dt,
body.woocommerce-cart table.cart td.product-name .variation dd {
    display: inline !important;
    margin: 0 !important;
    color: inherit !important;
    font-weight: 400 !important;
}
body.woocommerce-cart table.cart td.product-name .variation dd p {
    display: inline !important;
    margin: 0 !important;
}

body.woocommerce-cart table.cart td.product-price,
body.woocommerce-cart table.cart td.product-subtotal {
    font-family: var(--vastori-font-sans) !important;
    font-size: 13px !important;
    color: var(--vastori-ink) !important;
}

/* Remove × button on cart page — quiet trash style */
body.woocommerce-cart table.cart td.product-remove a.remove {
    background: transparent !important;
    color: var(--vastori-muted) !important;
    border: 0 !important;
    width: 24px !important;
    height: 24px !important;
    line-height: 22px !important;
    font-size: 16px !important;
    text-decoration: none !important;
    box-shadow: none !important;
    text-align: center !important;
    border-radius: 0 !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
}
body.woocommerce-cart table.cart td.product-remove a.remove:hover {
    color: var(--vastori-ink) !important;
    background: transparent !important;
}

/* Update Cart button: outlined secondary */
body.woocommerce-cart .woocommerce-cart-form button[name="update_cart"] {
    background: transparent !important;
    color: var(--vastori-ink) !important;
    border: 1px solid var(--vastori-ink) !important;
    border-radius: 0 !important;
    padding: 12px 20px !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 11px !important;
    font-weight: 500 !important;
    letter-spacing: 0.22em !important;
    text-transform: uppercase !important;
}

/* Cart totals card */
body.woocommerce-cart .cart_totals,
body.woocommerce-cart .cart-collaterals .cart_totals {
    background: var(--vastori-surface) !important;
    border: 0.5px solid var(--vastori-hairline) !important;
    padding: 24px !important;
    border-radius: 0 !important;
}
body.woocommerce-cart .cart_totals h2 {
    font-family: var(--vastori-font-sans) !important;
    font-size: 11px !important;
    letter-spacing: 0.22em !important;
    text-transform: uppercase !important;
    color: var(--vastori-muted) !important;
    font-weight: 500 !important;
    margin: 0 0 16px !important;
}
body.woocommerce-cart .cart_totals table tr th,
body.woocommerce-cart .cart_totals table tr td {
    background: transparent !important;
    border: 0 !important;
    color: var(--vastori-ink) !important;
}

/* PROCEED TO CHECKOUT — filled forest green */
body.woocommerce-cart .wc-proceed-to-checkout a.checkout-button {
    background: var(--vastori-ink) !important;
    color: #FFFFFF !important;
    border: 1px solid var(--vastori-ink) !important;
    border-radius: 0 !important;
    width: 100% !important;
    padding: 18px 16px !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 12px !important;
    font-weight: 500 !important;
    letter-spacing: 0.24em !important;
    text-transform: uppercase !important;
    line-height: 1 !important;
    text-align: center !important;
    text-decoration: none !important;
    box-shadow: none !important;
    transition: background 0.25s var(--vastori-ease), color 0.25s var(--vastori-ease);
}
body.woocommerce-cart .wc-proceed-to-checkout a.checkout-button:hover {
    background: transparent !important;
    color: var(--vastori-ink) !important;
}

/* ============================================================
   v0.9.25 — Cart drawer line-item grid rebuild.
   Replaces the v0.9.3-era flex-with-order layout above with a
   clean 3-column CSS grid:
       col 1 = thumbnail (80px), stretches all rows
       col 2 = title / variation / qty stepper stack (1fr)
       col 3 = remove × (24px)
   Override applies via source order; scoped strictly to
   .vastori-cart-drawer so nothing else can be affected.
   ============================================================ */

.vastori-cart-drawer ul.woocommerce-mini-cart li.mini_cart_item {
    display: grid !important;
    grid-template-columns: 80px 1fr 24px !important;
    grid-template-rows: auto auto auto !important;
    grid-auto-rows: auto !important;
    column-gap: 16px !important;
    row-gap: 4px !important;
    align-items: start !important;
    padding: 20px 0 !important;
    overflow: visible !important;
    flex-wrap: nowrap !important; /* unused for grid but unblocks the prior wrap directive */
}

/* Thumbnail anchor — col 1, spans all rows; font-size:0 swallows
   the WC-emitted product-name text node (our relayoutMiniCart JS
   then re-emits it as .vastori-mini-title in col 2 row 1). */
.vastori-cart-drawer ul.woocommerce-mini-cart li.mini_cart_item > a:not(.remove) {
    grid-column: 1 !important;
    grid-row: 1 / -1 !important;
    align-self: start !important;
    display: block !important;
    width: 80px !important;
    font-size: 0 !important;
    line-height: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    order: initial !important;   /* reset prior flex order */
    flex: initial !important;
}
.vastori-cart-drawer ul.woocommerce-mini-cart li.mini_cart_item > a:not(.remove) img {
    width: 80px !important;
    height: 100px !important;
    object-fit: cover !important;
    margin: 0 !important;
    float: none !important;
    border-radius: 0 !important;
    padding: 0 !important;
    display: block !important;
}

/* Title — col 2, row 1 */
.vastori-cart-drawer ul.woocommerce-mini-cart li.mini_cart_item .vastori-mini-title {
    grid-column: 2 !important;
    grid-row: 1 !important;
    align-self: start !important;
    font-family: var(--vastori-font-serif) !important;
    font-size: 15px !important;
    line-height: 1.3 !important;
    color: var(--vastori-ink) !important;
    margin: 0 !important;
    padding: 0 !important;
    order: initial !important;
    flex: initial !important;
}

/* v0.9.84 — Our compact "Size · Colour" meta line (rendered in
   cart-drawer.php) sits at col 2, row 2. We hide WC's native <dl
   class="variation"> to avoid a duplicate, since .vastori-mini-meta
   already lists every chosen attribute in one tidy line. */
.vastori-cart-drawer ul.woocommerce-mini-cart li.mini_cart_item .vastori-mini-meta {
    grid-column: 2 !important;
    grid-row: 2 !important;
    align-self: start !important;
    margin: 2px 0 0 !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 11.5px !important;
    letter-spacing: 0.04em !important;
    line-height: 1.4 !important;
    color: var(--vastori-muted) !important;
}
.vastori-cart-drawer ul.woocommerce-mini-cart li.mini_cart_item .variation {
    display: none !important;
}

/* Qty stepper widget — col 2, row 3 */
.vastori-cart-drawer ul.woocommerce-mini-cart li.mini_cart_item .vastori-mini-qty {
    grid-column: 2 !important;
    grid-row: 3 !important;
    align-self: end !important;
    margin: 8px 0 0 !important;
}

/* Fallback for the unfiltered WC qty span (mini-cart filter still
   disabled in v0.9.18; this rule positions WC's default span until
   we re-enable the filter). */
.vastori-cart-drawer ul.woocommerce-mini-cart li.mini_cart_item .quantity {
    grid-column: 2 !important;
    grid-row: 3 !important;
    margin: 8px 0 0 !important;
    display: block !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 13px !important;
    color: var(--vastori-ink) !important;
    order: initial !important;
    flex: initial !important;
}

/* Remove × — col 3, row 1; no longer position:absolute */
.vastori-cart-drawer ul.woocommerce-mini-cart li.mini_cart_item a.remove,
.vastori-cart-drawer ul.woocommerce-mini-cart li.mini_cart_item a.remove_from_cart_button {
    grid-column: 3 !important;
    grid-row: 1 !important;
    position: static !important;
    align-self: start !important;
    justify-self: end !important;
    top: auto !important;
    right: auto !important;
}

/* ============================================================
   v0.9.27 — Single product page additions:
     - Reviews from Our Customers (.vastori-reviews)
     - Fabric Care Guide (.vastori-care)
     - "Pieces You May Like" related products heading polish
   All sections scoped, separated by hairline borders, white bg.
   ============================================================ */

body.single-product .vastori-reviews,
body.single-product .vastori-care {
    max-width: 1280px;
    margin: 40px auto 0;       /* v0.9.29: tighter — was 64px */
    padding: 40px 24px;        /* v0.9.29: tighter — was 56px */
    border-top: 0.5px solid var(--vastori-hairline);
    font-family: var(--vastori-font-sans);
    color: var(--vastori-ink);
}

/* Reviews */
body.single-product .vastori-reviews__head {
    display: grid;
    grid-template-columns: 1fr auto;
    align-items: end;
    gap: 24px;
    margin-bottom: 32px;
}
body.single-product .vastori-reviews__title {
    font-family: var(--vastori-font-serif);
    font-size: clamp(26px, 3vw, 36px);
    font-weight: 400;
    color: var(--vastori-ink);
    margin: 0;
    grid-column: 1 / -1;
    line-height: 1.2;
}
body.single-product .vastori-reviews__summary {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    font-size: 13px;
    color: var(--vastori-ink);
}
body.single-product .vastori-reviews__stars {
    display: inline-flex;
    gap: 1px;
    font-size: 16px;
    line-height: 1;
}
body.single-product .vastori-reviews__star {
    color: var(--vastori-line);
}
body.single-product .vastori-reviews__star.is-filled {
    color: var(--vastori-ink);
}
body.single-product .vastori-reviews__avg {
    font-weight: 500;
}
body.single-product .vastori-reviews__divider {
    color: var(--vastori-line);
}
body.single-product .vastori-reviews__count {
    color: var(--vastori-muted);
}
body.single-product .vastori-reviews__sort {
    justify-self: end;
    align-self: center;
    font-size: 12px;
    color: var(--vastori-muted);
    letter-spacing: 0.04em;
    position: relative;
}

/* v0.9.32 — Functional sort dropdown */
body.single-product .vastori-rsort__btn {
    background: transparent;
    border: 0;
    padding: 8px 0;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-family: var(--vastori-font-sans);
    font-size: 13px;
    color: var(--vastori-ink);
    line-height: 1;
}
body.single-product .vastori-rsort__label {
    color: var(--vastori-muted);
}
body.single-product .vastori-rsort__value {
    color: var(--vastori-ink);
    font-weight: 500;
}
body.single-product .vastori-rsort__chev {
    width: 8px;
    height: 8px;
    border-right: 1px solid currentColor;
    border-bottom: 1px solid currentColor;
    transform: translateY(-2px) rotate(45deg);
    transition: transform 0.18s var(--vastori-ease);
    margin-left: 2px;
}
body.single-product .vastori-rsort__btn[aria-expanded="true"] .vastori-rsort__chev {
    transform: translateY(2px) rotate(225deg);
}
body.single-product .vastori-rsort__panel {
    position: absolute;
    top: calc(100% + 12px);
    right: 0;
    background: var(--vastori-surface);
    box-shadow: 0 16px 36px rgba(0,0,0,0.08);
    padding: 12px 0;
    min-width: 260px;
    z-index: 50;
}
body.single-product .vastori-rsort__panel[hidden] {
    display: none;
}
body.single-product .vastori-rsort__list {
    list-style: none;
    margin: 0;
    padding: 0;
}
body.single-product .vastori-rsort__item {
    margin: 0;
    padding: 0;
    list-style: none;
}
body.single-product .vastori-rsort__item a {
    display: block;
    padding: 10px 24px;
    font-family: var(--vastori-font-sans);
    font-size: 14px;
    color: var(--vastori-ink);
    text-decoration: none;
    line-height: 1.4;
    background: transparent;
}
body.single-product .vastori-rsort__item a:hover {
    background: var(--vastori-sand-soft);
}
body.single-product .vastori-rsort__item.is-active a {
    color: var(--vastori-ink);
    font-weight: 500;
    background: var(--vastori-sand-soft);
}

/* v0.9.32 — "Write a review" CTA below the review list */
body.single-product .vastori-reviews__cta {
    margin: 24px 0 0;
    padding: 24px 0 0;
    border-top: 0.5px solid var(--vastori-hairline);
    text-align: center;
}

/* v0.9.32 — Review form */
body.single-product .vastori-reviews__form {
    margin: 40px auto 0;
    padding: 40px 0 0;
    border-top: 0.5px solid var(--vastori-hairline);
    max-width: 720px;
}
body.single-product .vastori-reviews__form-title {
    font-family: var(--vastori-font-serif);
    font-size: clamp(22px, 2.6vw, 28px);
    font-weight: 400;
    color: var(--vastori-ink);
    margin: 0 0 12px;
    line-height: 1.2;
}
body.single-product .vastori-reviews__form-intro {
    font-family: var(--vastori-font-sans);
    font-size: 14px;
    line-height: 1.7;
    color: var(--vastori-muted);
    margin: 0 0 24px;
}

body.single-product .vastori-comment-form p {
    margin: 0 0 16px;
}
body.single-product .vastori-comment-form label {
    display: block;
    font-family: var(--vastori-font-sans);
    font-size: 11px;
    font-weight: 500;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--vastori-muted);
    margin: 0 0 8px;
}
body.single-product .vastori-comment-form input[type="text"],
body.single-product .vastori-comment-form input[type="email"],
body.single-product .vastori-comment-form input[type="url"],
body.single-product .vastori-comment-form select,
body.single-product .vastori-comment-form textarea {
    width: 100%;
    background: var(--vastori-surface) !important;
    border: 1px solid var(--vastori-line) !important;
    border-radius: 0 !important;
    padding: 12px 14px !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 14px !important;
    color: var(--vastori-ink) !important;
    line-height: 1.5;
    box-shadow: none !important;
    transition: border-color 0.18s var(--vastori-ease);
}
body.single-product .vastori-comment-form textarea {
    min-height: 120px;
    resize: vertical;
}
body.single-product .vastori-comment-form input:focus,
body.single-product .vastori-comment-form select:focus,
body.single-product .vastori-comment-form textarea:focus {
    border-color: var(--vastori-ink) !important;
    outline: 0;
}
body.single-product .vastori-comment-form .form-submit {
    margin-top: 24px;
}
body.single-product .vastori-comment-form input[type="submit"],
body.single-product .vastori-comment-form button[type="submit"] {
    background: var(--vastori-ink) !important;
    color: #FFFFFF !important;
    border: 1px solid var(--vastori-ink) !important;
    border-radius: 0 !important;
    padding: 16px 36px !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 12px !important;
    font-weight: 500 !important;
    letter-spacing: 0.24em !important;
    text-transform: uppercase !important;
    line-height: 1 !important;
    cursor: pointer;
    transition: background 0.25s var(--vastori-ease), color 0.25s var(--vastori-ease);
}
body.single-product .vastori-comment-form input[type="submit"]:hover,
body.single-product .vastori-comment-form button[type="submit"]:hover {
    background: transparent !important;
    color: var(--vastori-ink) !important;
}
body.single-product .vastori-comment-form .required {
    color: var(--vastori-muted);
}
body.single-product .vastori-comment-form .comment-form-cookies-consent {
    font-size: 12px;
    color: var(--vastori-muted);
}
body.single-product .vastori-comment-form .comment-form-cookies-consent label {
    display: inline;
    font-family: var(--vastori-font-sans);
    font-size: 12px;
    letter-spacing: 0;
    text-transform: none;
    color: var(--vastori-muted);
    margin: 0 0 0 6px;
}
body.single-product .vastori-comment-form .logged-in-as,
body.single-product .vastori-comment-form .must-log-in {
    font-family: var(--vastori-font-sans);
    font-size: 13px;
    color: var(--vastori-muted);
}
body.single-product .vastori-comment-form .logged-in-as a,
body.single-product .vastori-comment-form .must-log-in a {
    color: var(--vastori-ink);
    text-decoration: underline;
    text-underline-offset: 3px;
}
body.single-product .vastori-reviews__closed {
    margin: 24px 0 0;
    font-family: var(--vastori-font-sans);
    font-size: 13px;
    color: var(--vastori-muted);
    text-align: center;
}

/* ============================================================
   v0.9.33 — Listing + card + menu fixes
   ============================================================ */

/* Kill WC's default products header on archives — we render our
   own .vastori-listing-header. Without this we got "Dresses /
   Considered dresses for slow living." rendered twice. */
.woocommerce-products-header,
body.woocommerce .woocommerce-products-header,
body.archive .woocommerce-products-header,
body.tax-product_cat .woocommerce-products-header,
body.tax-product_tag .woocommerce-products-header,
body.woocommerce-shop .woocommerce-products-header {
    display: none !important;
}
/* Also hide Botiga's archive title block if it's still emitted */
body.archive.post-type-archive-product .page-title,
body.tax-product_cat .page-title,
body.tax-product_tag .page-title,
body.woocommerce-shop .page-title {
    display: none !important;
}

/* v0.9.41 — Botiga ALSO emits a sibling <div class="term-description">
   next to .page-title inside .woocommerce-page-header. We hid the
   title but left the description visible above the listing header
   (it sat alone in the wrapper, creating a 500px+ floating gap).
   Hide both elements AND the empty container that holds them. */
body.woocommerce .woocommerce-page-header .term-description,
body.woocommerce .woocommerce-page-header .woocommerce-products-header__title,
body.woocommerce .woocommerce-page-header .woocommerce-products-header__title.page-title {
    display: none !important;
}
/* The second .container child of woocommerce-page-header is the
   one holding title + description (first child is breadcrumb).
   Collapse it so the wrapper takes no extra space. */
body.woocommerce .woocommerce-page-header > .container + .container,
body.archive .woocommerce-page-header > .container + .container,
body.tax-product_cat .woocommerce-page-header > .container + .container,
body.woocommerce-shop .woocommerce-page-header > .container + .container {
    display: none !important;
}
/* Tighten the breadcrumb wrapper too */
body.woocommerce .woocommerce-page-header {
    padding: 12px 0 0 !important;
    margin: 0 !important;
    background: transparent !important;
}

/* Kill Botiga's hover dropdown chevron — our ::after caret is the
   only one we want. Botiga uses <span class="dropdown-symbol">
   with an inline SVG inside; hide the whole span. */
.bhfb .main-navigation .botiga-dropdown-li > .dropdown-symbol,
.bhfb .main-navigation .botiga-dropdown-li > span.dropdown-symbol,
.bhfb .main-navigation .botiga-dropdown-li > i.dropdown-symbol {
    display: none !important;
}

/* ----- Product card refinements ----- */

/* Botiga wraps the image + add-to-cart in a .loop-image-wrap div
   inside the link. Make it actually fill the link so the image
   shows over the soft sand-grey background instead of leaving
   the card empty. */
ul.products li.product .loop-image-wrap {
    width: 100% !important;
    height: 100% !important;
    display: block !important;
    position: relative !important;
    overflow: hidden !important;
    background: transparent !important;
}
ul.products li.product .loop-image-wrap > img {
    width: 100% !important;
    height: 100% !important;
    object-fit: cover !important;
    display: block !important;
}

/* Hide Botiga's in-card Add to Bag button + the extra empty
   loop-button-wrap rows + the unstyled Quick View text link (we
   will re-introduce a styled + icon in a later commit). */
ul.products li.product .loop-image-wrap > .loop-button-wrap,
ul.products li.product > .loop-button-wrap,
ul.products li.product > a.yith-wcqv-button:not(.vastori-card-plus),
ul.products li.product .add_to_cart_button {
    display: none !important;
}

/* v0.9.100 — Card fav heart: the position + circle live in ONE block
   below (top-right, stacked under the "+"). The old bottom-right block and
   its hover rule that filled the ENTIRE circle green are removed — the
   circle stays white at all times; only the heart GLYPH changes (outline →
   forest) on hover/saved, via the ::before rules. */
ul.products li.product .tinv-wraper .tinv-wishlist-clear {
    display: none !important;
}
ul.products li.product .tinvwl_add_to_wishlist_button {
    text-decoration: none !important;
    font-size: 0 !important; /* swallow the visible text spans */
    line-height: 1 !important;
    transition: none !important;
}
/* The text spans — hidden, screen-reader still picks them up via
   the anchor's aria-label */
ul.products li.product .tinvwl_add_to_wishlist_button > span.tinvwl_add_to_wishlist-text,
ul.products li.product .tinvwl_add_to_wishlist_button > span.tinvwl_remove_from_wishlist-text {
    display: none !important;
}
/* v0.9.84 — Two-state SVG heart so the fav clearly reads saved vs not.
   Default = OUTLINE heart (forest stroke). Saved (TI sets
   data-tinv-wl-action="remove") = FILLED forest heart. Hover on an
   unsaved heart previews the filled state. (Switched from the mask
   approach to background-image so outline vs fill is possible.) */
ul.products li.product .tinvwl_add_to_wishlist_button.tinvwl-icon-heart::before {
    content: "" !important;
    width: 17px !important;
    height: 17px !important;
    /* v0.9.89 — absolutely centre the heart in its circle (optical nudge
       1px up so the heart's point doesn't read as low). Flex centring left
       it sitting slightly low. */
    position: absolute !important;
    top: 50% !important;
    left: 50% !important;
    transform: translate(-50%, calc(-50% - 0.5px)) !important;
    margin: 0 !important;
    font-size: 0 !important;
    line-height: 1 !important;
    -webkit-mask: none !important;
    mask: none !important;
    background-color: transparent !important;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%232A3D27' stroke-width='1.7'%3E%3Cpath d='M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z'/%3E%3C/svg%3E") !important;
    background-size: contain !important;
    background-repeat: no-repeat !important;
    background-position: center !important;
}
/* Hover preview on an unsaved heart — hint that clicking will fill it. */
ul.products li.product .tinvwl_add_to_wishlist_button.tinvwl-icon-heart:hover::before {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%232A3D27'%3E%3Cpath d='M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z'/%3E%3C/svg%3E") !important;
    opacity: 0.55 !important;
}
/* SAVED state — solid forest fill (this is the "it worked" feedback). */
ul.products li.product .tinvwl_add_to_wishlist_button.tinvwl-icon-heart[data-tinv-wl-action="remove"]::before {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%232A3D27'%3E%3Cpath d='M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z'/%3E%3C/svg%3E") !important;
    opacity: 1 !important;
}
/* Same mask for the class-stripped variant (defensive). */
ul.products li.product .tinvwl_add_to_wishlist_button::before {
    content: "" !important;
    width: 17px !important;
    height: 17px !important;
    display: inline-block !important;
    background-color: currentColor !important;
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z'/%3E%3C/svg%3E") center / contain no-repeat !important;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z'/%3E%3C/svg%3E") center / contain no-repeat !important;
}
/* Kill the plugin's font-glyph ::after if it draws on top */
ul.products li.product .tinvwl_add_to_wishlist_button::after {
    content: none !important;
    display: none !important;
}

/* ============================================================
   v0.9.34 — Card hover image swap + "+" quick view button +
   "View Full Product" link inside the YITH quick view modal.
   The PHP that renders these is in inc/product-loop.php.
   ============================================================ */

/* Hover image overlay — second gallery image, faded in on hover.
   The PHP injects a <span class="vastori-card-hover" style=
   "background-image: url(...)"> inside the link wrapper, before
   the primary image. CSS positions it absolutely over the .loop-
   image-wrap so it covers the primary thumb. */
ul.products li.product .vastori-card-hover {
    position: absolute !important;
    top: 0 !important;
    left: 0 !important;
    width: 100% !important;
    height: 100% !important;
    background-size: cover !important;
    background-position: center !important;
    background-repeat: no-repeat !important;
    opacity: 0;
    transition: opacity 0.45s var(--vastori-ease);
    z-index: 3;
    pointer-events: none;
}
ul.products li.product:hover .vastori-card-hover {
    opacity: 1;
}

/* "+" quick view button — top-right of the image card. Outside
   the link wrapper so the click doesn't navigate; carries the
   yith-wcqv-button class so YITH binds the modal open. */
ul.products li.product .vastori-card-plus {
    position: absolute !important;
    top: 12px !important;
    right: 12px !important;
    width: 36px !important;
    height: 36px !important;
    background: rgba(255, 255, 255, 0.85) !important;
    border: 0 !important;
    border-radius: 50% !important;
    color: var(--vastori-ink) !important;
    text-decoration: none !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    line-height: 1 !important;
    z-index: 6 !important;
    cursor: pointer;
    transition: background 0.2s var(--vastori-ease), color 0.2s var(--vastori-ease), transform 0.2s var(--vastori-ease);
    opacity: 0.92;
    box-shadow: 0 2px 8px rgba(0,0,0,0.06);
}
ul.products li.product .vastori-card-plus:hover {
    background: var(--vastori-ink) !important;
    color: #FFFFFF !important;
    transform: scale(1.06);
    opacity: 1;
}
ul.products li.product .vastori-card-plus__icon {
    display: inline-block;
    font-family: var(--vastori-font-sans);
    font-size: 22px;
    font-weight: 300;
    line-height: 1;
    margin-top: -2px;
    color: inherit;
}

/* "View Full Product" link inside the YITH quick view modal.
   Rendered by the product-loop PHP only in YITH AJAX context, so
   no leakage to the regular single product page. */
#yith-quick-view-modal .vastori-qv-fullview {
    display: inline-block;
    margin-top: 20px;
    padding-bottom: 4px;
    font-family: var(--vastori-font-sans) !important;
    font-size: 11px !important;
    font-weight: 500 !important;
    letter-spacing: 0.22em !important;
    text-transform: uppercase !important;
    color: var(--vastori-ink) !important;
    text-decoration: underline !important;
    text-underline-offset: 4px !important;
    transition: color 0.18s var(--vastori-ease);
}
#yith-quick-view-modal .vastori-qv-fullview:hover {
    color: var(--vastori-ink-soft) !important;
}
body.single-product .vastori-reviews__empty {
    padding: 24px 0;
    color: var(--vastori-muted);
    font-size: 14px;
    line-height: 1.6;
}
body.single-product .vastori-reviews__write {
    display: inline-block;
    margin-top: 12px;
    font-size: 11px;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--vastori-ink);
    text-decoration: underline;
    text-underline-offset: 3px;
}
body.single-product .vastori-reviews__list {
    list-style: none;
    margin: 0;
    padding: 0;
}
body.single-product .vastori-reviews__item {
    display: grid;
    grid-template-columns: 1fr 2fr 1fr;
    gap: 32px;
    padding: 32px 0;
    border-top: 0.5px solid var(--vastori-hairline);
    list-style: none;
}
body.single-product .vastori-reviews__item:first-child {
    border-top: 0;
}
body.single-product .vastori-reviews__meta {
    display: flex;
    flex-direction: column;
    gap: 6px;
}
body.single-product .vastori-reviews__item-title {
    font-size: 14px;
    font-weight: 600;
    color: var(--vastori-ink);
    margin: 0 0 6px;
    line-height: 1.3;
}
body.single-product .vastori-reviews__author {
    font-size: 13px;
    color: var(--vastori-ink);
    margin: 0;
}
body.single-product .vastori-reviews__date {
    font-size: 12px;
    color: var(--vastori-muted);
    margin: 0;
}
body.single-product .vastori-reviews__rating {
    font-size: 14px;
    margin: 4px 0 0;
    line-height: 1;
    display: inline-flex;
    gap: 1px;
}
body.single-product .vastori-reviews__body {
    font-size: 14px;
    line-height: 1.7;
    color: var(--vastori-ink);
}
body.single-product .vastori-reviews__body p {
    margin: 0 0 12px;
}
body.single-product .vastori-reviews__body p:last-child {
    margin-bottom: 0;
}
body.single-product .vastori-reviews__verdict {
    font-size: 13px;
    color: var(--vastori-ink);
    display: flex;
    align-items: baseline;
    gap: 8px;
    flex-wrap: wrap;
}
body.single-product .vastori-reviews__verdict-label,
body.single-product .vastori-reviews__verdict-yes,
body.single-product .vastori-reviews__verdict-no {
    font-weight: 500;
}
body.single-product .vastori-reviews__verdict-no {
    color: var(--vastori-muted);
}

/* Fabric care guide */
body.single-product .vastori-care__title {
    font-family: var(--vastori-font-serif);
    font-size: clamp(26px, 3vw, 36px);
    font-weight: 400;
    color: var(--vastori-ink);
    margin: 0 0 20px;
    line-height: 1.2;
}
body.single-product .vastori-care__intro {
    font-size: 14px;
    line-height: 1.8;
    color: var(--vastori-ink-soft);
    margin: 0 0 24px;
    max-width: 760px;
}
body.single-product .vastori-care__list {
    list-style: disc;
    padding: 0 0 0 22px;
    margin: 0;
    max-width: 760px;
}
body.single-product .vastori-care__list li {
    font-size: 14px;
    line-height: 1.8;
    color: var(--vastori-ink);
    margin: 0 0 8px;
}
body.single-product .vastori-care__list li::marker {
    color: var(--vastori-ink);
}

/* "Pieces You May Like" (related products) heading polish */
body.single-product .related.products > h2,
body.single-product section.related > h2 {
    font-family: var(--vastori-font-serif) !important;
    font-size: clamp(26px, 3vw, 36px) !important;
    font-weight: 400 !important;
    color: var(--vastori-ink) !important;
    margin: 40px auto 24px !important;  /* v0.9.29: tighter — was 64px / 32px */
    max-width: 1280px;
    padding: 40px 24px 0;
    border-top: 0.5px solid var(--vastori-hairline);
    text-align: left !important;
    line-height: 1.2 !important;
    letter-spacing: 0 !important;
    text-transform: none !important;
}

/* v0.9.28 — Pieces You May Like product grid (toa.st-style).
   3-column on desktop, image-first cards on a soft sand background
   container, title + price below in quiet sans + serif, no
   in-grid Add-to-Bag button. */
body.single-product section.related,
body.single-product .related.products {
    max-width: 1280px !important;
    margin: 0 auto !important;
    padding: 0 24px 80px !important;
    background: transparent !important;
}
body.single-product section.related ul.products,
body.single-product .related.products ul.products,
body.single-product section.related > ul.products,
body.single-product section.related .products {
    display: grid !important;
    grid-template-columns: repeat(3, 1fr) !important;
    gap: 32px !important;
    margin: 0 !important;
    padding: 0 !important;
    list-style: none !important;
    background: transparent !important;
}
body.single-product section.related ul.products li.product,
body.single-product section.related .products .product {
    width: 100% !important;
    max-width: 100% !important;
    margin: 0 !important;
    padding: 0 !important;
    list-style: none !important;
    background: transparent !important;
    float: none !important;
    text-align: left !important;
    border: 0 !important;
    box-shadow: none !important;
}

/* Image — light tinted studio container */
body.single-product section.related .products .product a.woocommerce-LoopProduct-link,
body.single-product section.related .products .product a.woocommerce-loop-product__link {
    display: block !important;
    text-decoration: none !important;
    background: #F3F1ED !important; /* light sand-grey card background */
    overflow: hidden !important;
    aspect-ratio: 3 / 4 !important;
    position: relative !important;
}
body.single-product section.related .products .product img {
    width: 100% !important;
    height: 100% !important;
    object-fit: cover !important;
    display: block !important;
    margin: 0 !important;
    padding: 0 !important;
    border-radius: 0 !important;
    transition: transform 0.6s var(--vastori-ease);
}
body.single-product section.related .products .product:hover img {
    transform: scale(1.03);
}

/* Title + price — below the card, quiet typography */
body.single-product section.related .products .product .woocommerce-loop-product__title,
body.single-product section.related .products .product h2.woocommerce-loop-product__title,
body.single-product section.related .products .product h3.woocommerce-loop-product__title {
    font-family: var(--vastori-font-serif) !important;
    font-size: 15px !important;
    font-weight: 400 !important;
    color: var(--vastori-ink) !important;
    text-align: left !important;
    margin: 18px 0 4px !important;
    padding: 0 !important;
    line-height: 1.3 !important;
    text-transform: none !important;
    letter-spacing: 0 !important;
}
body.single-product section.related .products .product .price,
body.single-product section.related .products .product span.price {
    font-family: var(--vastori-font-sans) !important;
    font-size: 13px !important;
    font-weight: 400 !important;
    color: var(--vastori-ink) !important;
    text-align: left !important;
    margin: 0 !important;
    padding: 0 !important;
    line-height: 1.4 !important;
    background: transparent !important;
    display: block !important;
}
body.single-product section.related .products .product .price .amount,
body.single-product section.related .products .product .price .woocommerce-Price-amount {
    color: var(--vastori-ink) !important;
    font-weight: 400 !important;
}

/* Hide noisy WC bits inside the grid card */
body.single-product section.related .products .product .button,
body.single-product section.related .products .product .add_to_cart_button,
body.single-product section.related .products .product .ajax_add_to_cart,
body.single-product section.related .products .product .added_to_cart,
body.single-product section.related .products .product .star-rating,
body.single-product section.related .products .product .onsale,
body.single-product section.related .products .product .botiga-product-add-to-cart-link,
body.single-product section.related .products .product .botiga-quick-view {
    display: none !important;
}

/* Keep the TI Wishlist heart toggle visible but quietly placed in
   the top-right of the image card (toa.st-style) */
body.single-product section.related .products .product .tinv-wraper,
body.single-product section.related .products .product .tinv-wishlist {
    position: absolute !important;
    top: 12px !important;
    right: 12px !important;
    z-index: 2 !important;
    background: transparent !important;
    margin: 0 !important;
    padding: 0 !important;
}
body.single-product section.related .products .product .tinvwl_add_to_wishlist_button {
    background: rgba(255,255,255,0.85) !important;
    border: 0 !important;
    border-radius: 50% !important;
    width: 32px !important;
    height: 32px !important;
    padding: 0 !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    color: var(--vastori-ink) !important;
}

/* Mobile: 2-col grid then 1-col below 480px */
@media (max-width: 900px) {
    body.single-product section.related ul.products,
    body.single-product section.related .products {
        grid-template-columns: repeat(2, 1fr) !important;
        gap: 24px !important;
    }
}
@media (max-width: 480px) {
    body.single-product section.related ul.products,
    body.single-product section.related .products {
        grid-template-columns: 1fr !important;
        gap: 24px !important;
    }
}

/* ============================================================
   v0.9.30 — Hover-revealed primary nav dropdown (toa.st-style).
   Botiga emits .botiga-dropdown-li > .sub-menu for child items.
   We restyle that as a clean white panel that fades in on hover.
   ============================================================ */
.bhfb .main-navigation .botiga-dropdown-li {
    position: relative;
}
.bhfb .main-navigation .botiga-dropdown-li > .sub-menu,
.bhfb .main-navigation .botiga-dropdown-ul ul.sub-menu {
    position: absolute !important;
    top: 100% !important;
    left: 0 !important;
    background: var(--vastori-surface) !important;
    border: 0 !important;
    box-shadow: 0 12px 28px rgba(0,0,0,0.06) !important;
    padding: 24px 32px !important;
    min-width: 240px !important;
    list-style: none !important;
    margin: 0 !important;
    border-radius: 0 !important;
    opacity: 0;
    visibility: hidden;
    transform: translateY(2px);
    transition: opacity 0.18s var(--vastori-ease), transform 0.18s var(--vastori-ease), visibility 0s linear 0.18s;
    z-index: 9100 !important;
}
.bhfb .main-navigation .botiga-dropdown-li:hover > .sub-menu,
.bhfb .main-navigation .botiga-dropdown-li:focus-within > .sub-menu,
.bhfb .main-navigation .botiga-dropdown-li > .sub-menu.is-open {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
    transition-delay: 0s;
}

/* Bridge gap between top-level item and the dropdown so the hover
   doesn't break when the cursor crosses the empty pixel between them */
.bhfb .main-navigation .botiga-dropdown-li > .sub-menu::before {
    content: "";
    position: absolute;
    top: -10px;
    left: 0;
    right: 0;
    height: 10px;
    background: transparent;
}

.bhfb .main-navigation .botiga-dropdown-li > .sub-menu li {
    list-style: none !important;
    margin: 0 0 14px !important;
    padding: 0 !important;
    background: transparent !important;
    border: 0 !important;
}
.bhfb .main-navigation .botiga-dropdown-li > .sub-menu li:last-child {
    margin-bottom: 0 !important;
}
.bhfb .main-navigation .botiga-dropdown-li > .sub-menu li a,
.bhfb .main-navigation .botiga-dropdown-li > .sub-menu li a.botiga-dropdown-link {
    display: block !important;
    padding: 0 !important;
    background: transparent !important;
    color: var(--vastori-ink) !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 14px !important;
    font-weight: 400 !important;
    letter-spacing: 0 !important;
    text-transform: none !important;
    text-decoration: none !important;
    line-height: 1.5 !important;
    transition: color 0.18s var(--vastori-ease);
    white-space: nowrap !important;
}
.bhfb .main-navigation .botiga-dropdown-li > .sub-menu li a:hover,
.bhfb .main-navigation .botiga-dropdown-li > .sub-menu li a:focus {
    color: var(--vastori-ink-soft) !important;
    text-decoration: underline !important;
    text-underline-offset: 3px !important;
}

/* Subtle caret on top-level items that have children */
.bhfb .main-navigation .menu-item-has-children > a::after,
.bhfb .main-navigation .botiga-dropdown-li.menu-item-has-children > a::after {
    content: "";
    display: inline-block;
    width: 6px;
    height: 6px;
    margin-left: 6px;
    border-right: 1px solid currentColor;
    border-bottom: 1px solid currentColor;
    transform: translateY(-2px) rotate(45deg);
    transition: transform 0.18s var(--vastori-ease);
    opacity: 0.6;
}
.bhfb .main-navigation .menu-item-has-children:hover > a::after {
    transform: translateY(0) rotate(225deg);
    opacity: 1;
}

/* Hide Botiga's own dropdown chevron icon if present so it doesn't
   collide with our caret */
.bhfb .main-navigation .botiga-dropdown-li > a > .botiga-dropdown-icon,
.bhfb .main-navigation .botiga-dropdown-li > a > svg.botiga-dropdown-arrow {
    display: none !important;
}

/* Mobile: dropdown becomes inline expansion rather than absolute popover */
@media (max-width: 991px) {
    .bhfb .main-navigation .botiga-dropdown-li > .sub-menu {
        position: static !important;
        opacity: 1 !important;
        visibility: visible !important;
        transform: none !important;
        box-shadow: none !important;
        padding: 8px 0 8px 16px !important;
        min-width: 0 !important;
    }
    .bhfb .main-navigation .botiga-dropdown-li > .sub-menu::before {
        display: none !important;
    }
}

/* ============================================================
   v0.9.31 — Product listing page (shop / category / tag /
   search archives). Top header + filter bar + sort dropdown +
   toa.st-style centered product card grid.
   ============================================================ */

/* ----- Listing header ----- */
.vastori-listing-header {
    max-width: 900px;
    margin: 40px auto 32px;
    padding: 0 24px;
    text-align: center;
}
.vastori-listing-header__title {
    font-family: var(--vastori-font-serif);
    font-size: clamp(32px, 4vw, 48px);
    font-weight: 400;
    color: var(--vastori-ink);
    margin: 0 0 16px;
    line-height: 1.15;
    letter-spacing: 0;
    text-transform: none;
}
.vastori-listing-header__desc {
    font-family: var(--vastori-font-sans);
    font-size: 15px;
    line-height: 1.75;
    color: var(--vastori-ink-soft);
    max-width: 640px;
    margin: 0 auto;
}
.vastori-listing-header__desc p {
    margin: 0;
}

/* v0.9.35 — Sub-category navigation row (above the filter bar).
   Centered horizontal row of underlined sans links pointing at the
   current category's children. Hidden when the category has no
   children. */
.vastori-subcat-nav {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    gap: 16px 40px;
    max-width: 1280px;
    margin: 0 auto 32px;
    padding: 0 24px;
    font-family: var(--vastori-font-sans);
}
.vastori-subcat-nav__link {
    font-size: 14px;
    font-weight: 400;
    color: var(--vastori-ink);
    text-decoration: underline;
    text-underline-offset: 4px;
    text-decoration-thickness: 1px;
    line-height: 1.4;
    transition: color 0.18s var(--vastori-ease), text-underline-offset 0.18s var(--vastori-ease);
}
.vastori-subcat-nav__link:hover,
.vastori-subcat-nav__link:focus {
    color: var(--vastori-ink-soft);
    text-underline-offset: 6px;
}
@media (max-width: 768px) {
    .vastori-subcat-nav {
        gap: 12px 24px;
        padding: 0 20px;
    }
    .vastori-subcat-nav__link {
        font-size: 13px;
    }
}

/* v0.9.36 — Sub-category IMAGE TILES (toa.st Women / Men / Home
   pattern). Used when one or more children resolve to a thumbnail.
   Falls back to plain .vastori-subcat-nav when none do. */
.vastori-subcat-tiles {
    /* v0.9.40 — tighter, centered, capped at 5-up so we don't
       inflate to 426px/tile when only 3 children exist. */
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(140px, 180px));
    justify-content: center;
    gap: 16px 12px;
    max-width: 1100px;
    margin: 0 auto 24px;
    padding: 0 24px;
}
.vastori-subcat-tiles__item {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-decoration: none;
    color: var(--vastori-ink);
    transition: opacity 0.2s var(--vastori-ease);
}
.vastori-subcat-tiles__item:hover {
    opacity: 0.88;
}
.vastori-subcat-tiles__img {
    display: block;
    width: 100%;
    /* v0.9.40 — square aspect (was 3/4 — too tall). */
    aspect-ratio: 1 / 1;
    background-color: #F3F1ED;
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    margin-bottom: 8px;
    transition: transform 0.5s var(--vastori-ease);
}
.vastori-subcat-tiles__item:hover .vastori-subcat-tiles__img {
    transform: scale(1.02);
}
.vastori-subcat-tiles__img--placeholder {
    background-color: #F3F1ED;
}
.vastori-subcat-tiles__name {
    font-family: var(--vastori-font-serif);
    font-size: 14px;       /* v0.9.40 — was 16px */
    font-weight: 400;
    color: var(--vastori-ink);
    text-align: center;
    line-height: 1.3;
    letter-spacing: 0;
    text-transform: none;
}

/* v0.9.40 — Compress the listing-header section so the product
   grid opens visibly near the top of the viewport instead of
   500-700px below. */
body.woocommerce .vastori-listing-header,
body.archive .vastori-listing-header,
body.tax-product_cat .vastori-listing-header {
    margin-top: 24px;
    margin-bottom: 16px;
}
body.woocommerce .vastori-listing-header__title,
body.archive .vastori-listing-header__title,
body.tax-product_cat .vastori-listing-header__title {
    margin-bottom: 10px;
}

/* v0.9.37 — Suppress WC's default "Added to bag" success message
   site-wide (the drawer is the new feedback). Keep error notices
   visible so failed validation still surfaces. */
body .woocommerce-message,
body div.woocommerce-message,
body .woocommerce-notices-wrapper > .woocommerce-message {
    display: none !important;
}

/* v0.9.44 — Numbered pagination hidden; replaced by Load More.
   (Kept the chip styling below in case we ever re-enable it.) */
body.woocommerce nav.woocommerce-pagination {
    display: none !important;
}

/* v0.9.44 — Load More button + status */
.vastori-loadmore-wrap {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 12px;
    margin: 24px auto 80px;
    padding: 0 24px;
    max-width: 1280px;
}
.vastori-loadmore-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    min-width: 220px;
    padding: 16px 36px;
    background: transparent;
    color: var(--vastori-ink);
    border: 1px solid var(--vastori-ink);
    border-radius: 0;
    font-family: var(--vastori-font-sans);
    font-size: 12px;
    font-weight: 500;
    letter-spacing: 0.24em;
    text-transform: uppercase;
    line-height: 1;
    cursor: pointer;
    transition: background 0.25s var(--vastori-ease), color 0.25s var(--vastori-ease);
}
.vastori-loadmore-btn:hover {
    background: var(--vastori-ink);
    color: #FFFFFF;
}
.vastori-loadmore-btn.is-loading {
    opacity: 0.7;
    cursor: wait;
}
.vastori-loadmore-btn__spinner {
    display: none;
    width: 14px;
    height: 14px;
    border: 2px solid currentColor;
    border-top-color: transparent;
    border-radius: 50%;
    animation: vastori-spin 0.7s linear infinite;
}
.vastori-loadmore-btn.is-loading .vastori-loadmore-btn__spinner {
    display: inline-block;
}
@keyframes vastori-spin { to { transform: rotate(360deg); } }
.vastori-loadmore-status {
    font-family: var(--vastori-font-sans);
    font-size: 12px;
    color: var(--vastori-muted);
    margin: 0;
    letter-spacing: 0.04em;
}

/* v0.9.44 — NEW / SALE / LIMITED card badge (top-left of image) */
ul.products li.product .vastori-card-badge {
    position: absolute;
    top: 12px;
    left: 12px;
    z-index: 5;
    display: inline-block;
    padding: 6px 12px;
    font-family: var(--vastori-font-sans);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    line-height: 1;
    background: var(--vastori-surface);
    color: var(--vastori-ink);
    border: 0;
}
ul.products li.product .vastori-card-badge--sale {
    background: var(--vastori-ink);
    color: #FFFFFF;
}
ul.products li.product .vastori-card-badge--limited {
    background: var(--vastori-cocoa);
    color: #FFFFFF;
}
ul.products li.product .vastori-card-badge--new {
    /* v0.9.85 — was white-on-white (invisible over pale image areas).
       Give it a hairline + subtle tint so it always reads, while staying
       lighter than the filled SALE/LIMITED badges. */
    background: rgba(255, 255, 255, 0.92);
    color: var(--vastori-ink);
    border: 0.5px solid var(--vastori-line);
    -webkit-backdrop-filter: blur(2px);
    backdrop-filter: blur(2px);
}

/* (retained, unused) old pagination chip styling for reference */
body.woocommerce nav.woocommerce-pagination--disabled,
body.archive nav.woocommerce-pagination--disabled,
body.tax-product_cat nav.woocommerce-pagination--disabled,
body.woocommerce-shop nav.woocommerce-pagination--disabled {
    display: flex !important;
    justify-content: center !important;
    margin: 16px auto 80px !important;
    padding: 0 24px !important;
    max-width: 1280px !important;
    text-align: center !important;
    border: 0 !important;
    background: transparent !important;
}
body.woocommerce nav.woocommerce-pagination ul,
body.woocommerce nav.woocommerce-pagination ul.page-numbers {
    display: inline-flex !important;
    align-items: center !important;
    gap: 6px !important;
    list-style: none !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
}
body.woocommerce nav.woocommerce-pagination ul li {
    list-style: none !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    background: transparent !important;
}
body.woocommerce nav.woocommerce-pagination ul li a.page-numbers,
body.woocommerce nav.woocommerce-pagination ul li span.page-numbers {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    min-width: 38px !important;
    height: 38px !important;
    padding: 0 12px !important;
    margin: 0 !important;
    border: 1px solid var(--vastori-line) !important;
    background: var(--vastori-surface) !important;
    color: var(--vastori-ink) !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 13px !important;
    font-weight: 400 !important;
    letter-spacing: 0 !important;
    line-height: 1 !important;
    text-decoration: none !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    transition: background 0.2s var(--vastori-ease), color 0.2s var(--vastori-ease), border-color 0.2s var(--vastori-ease);
}
body.woocommerce nav.woocommerce-pagination ul li a.page-numbers:hover {
    border-color: var(--vastori-ink) !important;
    color: var(--vastori-ink) !important;
}
body.woocommerce nav.woocommerce-pagination ul li span.page-numbers.current {
    background: var(--vastori-ink) !important;
    color: #FFFFFF !important;
    border-color: var(--vastori-ink) !important;
    font-weight: 500 !important;
}
body.woocommerce nav.woocommerce-pagination ul li span.page-numbers.dots {
    border: 0 !important;
    background: transparent !important;
    color: var(--vastori-muted) !important;
    min-width: 24px !important;
}
body.woocommerce nav.woocommerce-pagination ul li a.next,
body.woocommerce nav.woocommerce-pagination ul li a.prev {
    /* arrow chips — same as numbered ones */
    font-size: 16px !important;
}
@media (max-width: 480px) {
    body.woocommerce nav.woocommerce-pagination {
        margin: 8px auto 56px !important;
    }
    body.woocommerce nav.woocommerce-pagination ul.page-numbers {
        gap: 4px !important;
        flex-wrap: wrap !important;
        justify-content: center !important;
    }
    body.woocommerce nav.woocommerce-pagination ul li a.page-numbers,
    body.woocommerce nav.woocommerce-pagination ul li span.page-numbers {
        min-width: 32px !important;
        height: 32px !important;
        padding: 0 8px !important;
        font-size: 12px !important;
    }
}
@media (max-width: 600px) {
    .vastori-subcat-tiles {
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 12px 8px;
        max-width: 480px;
        margin-bottom: 16px;
    }
    .vastori-subcat-tiles__name {
        font-size: 12.5px;
    }
}

/* ----- Filter / sort bar ----- */
.vastori-listing-bar {
    position: relative;
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: center;
    gap: 24px;
    max-width: 1280px;
    margin: 0 auto 40px;
    padding: 16px 24px;
    border-top: 0.5px solid var(--vastori-hairline);
    border-bottom: 0.5px solid var(--vastori-hairline);
    font-family: var(--vastori-font-sans);
}
.vastori-listing-bar__count {
    font-size: 13px;
    color: var(--vastori-ink);
    letter-spacing: 0;
}
.vastori-listing-bar__filters {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 32px;
}
.vastori-listing-bar__sort {
    justify-self: end;
}

/* ----- Filter dropdown button ----- */
.vastori-filter-dropdown {
    position: relative;
}
.vastori-filter-dropdown__btn,
.vastori-sort-dropdown__btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: transparent;
    border: 0;
    padding: 8px 0;
    font-family: var(--vastori-font-sans);
    font-size: 14px;
    font-weight: 500;
    color: var(--vastori-ink);
    cursor: pointer;
    line-height: 1;
}
.vastori-filter-dropdown__btn.is-active {
    color: var(--vastori-ink);
}
.vastori-filter-dropdown__count {
    color: var(--vastori-muted);
    font-weight: 400;
    font-size: 13px;
}
.vastori-filter-dropdown__chev {
    width: 8px;
    height: 8px;
    border-right: 1px solid currentColor;
    border-bottom: 1px solid currentColor;
    transform: translateY(-2px) rotate(45deg);
    transition: transform 0.18s var(--vastori-ease);
    margin-left: 4px;
    opacity: 0.7;
}
.vastori-filter-dropdown__btn[aria-expanded="true"] .vastori-filter-dropdown__chev,
.vastori-sort-dropdown__btn[aria-expanded="true"] .vastori-filter-dropdown__chev {
    transform: translateY(2px) rotate(225deg);
    opacity: 1;
}

/* ----- Filter dropdown panel ----- */
.vastori-filter-dropdown__panel {
    position: absolute;
    top: calc(100% + 16px);
    left: 50%;
    transform: translateX(-50%);
    background: var(--vastori-surface);
    box-shadow: 0 16px 36px rgba(0,0,0,0.08);
    padding: 32px 32px 24px;
    min-width: 640px;
    max-width: 720px;
    z-index: 200;
}
.vastori-filter-dropdown__panel[hidden] {
    display: none;
}
.vastori-filter-dropdown__list {
    list-style: none;
    margin: 0 0 16px;
    padding: 0;
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 12px 32px;
}
.vastori-filter-dropdown__item {
    margin: 0;
    padding: 0;
    list-style: none;
}
.vastori-filter-dropdown__item label {
    display: flex;
    align-items: center;
    gap: 10px;
    cursor: pointer;
    font-family: var(--vastori-font-sans);
    font-size: 14px;
    color: var(--vastori-ink);
}
.vastori-filter-dropdown__item input[type="checkbox"] {
    width: 16px;
    height: 16px;
    margin: 0;
    accent-color: var(--vastori-ink);
}
.vastori-filter-dropdown__termcount {
    color: var(--vastori-muted);
    font-size: 13px;
    margin-left: 4px;
}
.vastori-filter-dropdown__actions {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 16px;
    margin-top: 16px;
}
.vastori-filter-dropdown__apply {
    background: var(--vastori-ink);
    color: #FFFFFF;
    border: 0;
    padding: 12px 32px;
    font-family: var(--vastori-font-sans);
    font-size: 12px;
    font-weight: 500;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    line-height: 1;
    cursor: pointer;
    transition: background 0.2s var(--vastori-ease);
}
.vastori-filter-dropdown__apply:hover {
    background: var(--vastori-ink-soft);
}
.vastori-filter-dropdown__clear {
    font-family: var(--vastori-font-sans);
    font-size: 11px;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--vastori-muted);
    text-decoration: underline;
    text-underline-offset: 3px;
}

/* ----- Sort dropdown ----- */
.vastori-sort-dropdown {
    position: relative;
}
.vastori-sort-dropdown__value {
    color: var(--vastori-muted);
    font-weight: 400;
    font-size: 13px;
}
.vastori-sort-dropdown__panel {
    position: absolute;
    top: calc(100% + 16px);
    right: 0;
    background: var(--vastori-surface);
    box-shadow: 0 16px 36px rgba(0,0,0,0.08);
    padding: 16px 0;
    min-width: 240px;
    z-index: 200;
}
.vastori-sort-dropdown__panel[hidden] {
    display: none;
}
.vastori-sort-dropdown__list {
    list-style: none;
    margin: 0;
    padding: 0;
}
.vastori-sort-dropdown__item {
    margin: 0;
    padding: 0;
    list-style: none;
}
.vastori-sort-dropdown__item a {
    display: block;
    padding: 10px 24px;
    font-family: var(--vastori-font-sans);
    font-size: 14px;
    color: var(--vastori-ink);
    text-decoration: none;
    line-height: 1.4;
    background: transparent;
}
.vastori-sort-dropdown__item a:hover {
    background: var(--vastori-sand-soft);
}
.vastori-sort-dropdown__item.is-active a {
    background: var(--vastori-ink);
    color: #FFFFFF;
}

/* Mobile: bar collapses to a stack */
@media (max-width: 768px) {
    .vastori-listing-bar {
        grid-template-columns: 1fr;
        text-align: center;
    }
    .vastori-listing-bar__count {
        order: 1;
    }
    .vastori-listing-bar__filters {
        order: 2;
        gap: 20px;
        flex-wrap: wrap;
        justify-content: center;
    }
    .vastori-listing-bar__sort {
        order: 3;
        justify-self: center;
    }
    .vastori-filter-dropdown__panel {
        position: fixed;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        min-width: 0;
        width: calc(100vw - 32px);
        max-width: 360px;
        max-height: 80vh;
        overflow-y: auto;
    }
    .vastori-filter-dropdown__list {
        grid-template-columns: 1fr;
    }
}

/* ============================================================
   v0.9.31 — Toa.st-style product card grid for all WC product
   loops: shop archive, category/tag archives, search results,
   AND the related products grid we styled earlier in v0.9.28.
   Centered title, centered price, no card chrome.
   ============================================================ */

ul.products,
body.woocommerce-shop ul.products,
body.archive.post-type-archive-product ul.products,
body.tax-product_cat ul.products,
body.tax-product_tag ul.products,
body.search-results ul.products {
    display: grid !important;
    grid-template-columns: repeat(3, 1fr) !important;
    gap: 48px 32px !important;
    margin: 0 auto !important;
    padding: 0 24px 80px !important;
    max-width: 1280px !important;
    list-style: none !important;
    background: transparent !important;
}
ul.products li.product,
body.woocommerce-shop ul.products li.product,
body.archive.post-type-archive-product ul.products li.product,
body.tax-product_cat ul.products li.product {
    width: 100% !important;
    max-width: 100% !important;
    margin: 0 !important;
    padding: 0 !important;
    list-style: none !important;
    background: transparent !important;
    float: none !important;
    text-align: center !important;
    border: 0 !important;
    box-shadow: none !important;
    position: relative !important;
}

/* Image card — soft sand-grey container.
   v0.9.58: only the product link that actually CONTAINS the <img>
   becomes the 3/4 crop box. Botiga also emits a second, empty
   `woocommerce-LoopProduct-link` (badge only, no image) as a direct
   <li> child — without the :has(img) guard that empty link inherited
   the aspect-ratio box and reserved a tall BLANK panel above the real
   image ("blank image then the image" on every card, home + archives). */
ul.products li.product a.woocommerce-LoopProduct-link:has(img),
ul.products li.product a.woocommerce-loop-product__link:has(img) {
    display: block !important;
    text-decoration: none !important;
    background: #F3F1ED !important;
    overflow: hidden !important;
    aspect-ratio: 3 / 4 !important;
    position: relative !important;
    margin-bottom: 18px !important;
}
/* Stray empty product link (no <img>) — collapse it so it stops
   reserving blank space; the badge inside is absolutely positioned. */
ul.products li.product a.woocommerce-LoopProduct-link:not(:has(img)),
ul.products li.product a.woocommerce-loop-product__link:not(:has(img)) {
    display: block !important;
    aspect-ratio: auto !important;
    height: 0 !important;
    min-height: 0 !important;
    margin: 0 !important;
    background: transparent !important;
    overflow: visible !important;
}
/* Botiga wraps the thumbnail in `.loop-image-wrap{height:100%}`; with
   `grid-auto-rows:minmax(0,auto)` that let the image's intrinsic height
   inflate every grid-row track (cards ballooned to 700–990px). Pin the
   wrap to its content height so the track sizes to the 3/4 crop box. */
ul.products li.product .loop-image-wrap {
    height: auto !important;
}
ul.products li.product img {
    width: 100% !important;
    height: 100% !important;
    object-fit: cover !important;
    display: block !important;
    margin: 0 !important;
    padding: 0 !important;
    border-radius: 0 !important;
    transition: transform 0.6s var(--vastori-ease);
}
ul.products li.product:hover img {
    transform: scale(1.03);
}

/* Title — centered serif */
ul.products li.product .woocommerce-loop-product__title,
ul.products li.product h2.woocommerce-loop-product__title,
ul.products li.product h3.woocommerce-loop-product__title {
    font-family: var(--vastori-font-serif) !important;
    font-size: 16px !important;
    font-weight: 400 !important;
    color: var(--vastori-ink) !important;
    text-align: center !important;
    margin: 0 0 6px !important;
    padding: 0 !important;
    line-height: 1.3 !important;
    text-transform: none !important;
    letter-spacing: 0 !important;
}

/* Price — centered sans, ink */
ul.products li.product .price,
ul.products li.product span.price {
    font-family: var(--vastori-font-sans) !important;
    font-size: 13px !important;
    font-weight: 400 !important;
    color: var(--vastori-ink) !important;
    text-align: center !important;
    margin: 0 0 6px !important;
    padding: 0 !important;
    line-height: 1.4 !important;
    background: transparent !important;
    display: block !important;
}
ul.products li.product .price .amount,
ul.products li.product .price .woocommerce-Price-amount {
    color: var(--vastori-ink) !important;
    font-weight: 400 !important;
}

/* Star rating — small + centered */
ul.products li.product .star-rating {
    display: inline-block !important;
    margin: 0 auto !important;
    font-size: 11px !important;
}

/* Hide noisy WC chrome in the card */
ul.products li.product .button,
ul.products li.product .add_to_cart_button,
ul.products li.product .ajax_add_to_cart,
ul.products li.product .added_to_cart,
ul.products li.product .onsale,
ul.products li.product .botiga-product-add-to-cart-link,
ul.products li.product .botiga-quick-view {
    display: none !important;
}

/* TI Wishlist (fav heart) — top-right, stacked under the quick-view "+"
   with a clear gap (was a broken calc() that overlapped the "+"). */
ul.products li.product .tinv-wraper,
ul.products li.product .tinv-wishlist {
    position: absolute !important;
    top: 58px !important;
    bottom: auto !important;
    right: 12px !important;
    z-index: 6 !important;
    background: transparent !important;
    margin: 0 !important;
    padding: 0 !important;
}
ul.products li.product .tinvwl_add_to_wishlist_button {
    background: rgba(255,255,255,0.85) !important;
    border: 0 !important;
    border-radius: 50% !important;
    width: 32px !important;
    height: 32px !important;
    padding: 0 !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    color: var(--vastori-ink) !important;
}

/* Responsive grid */
@media (max-width: 900px) {
    ul.products,
    body.woocommerce-shop ul.products,
    body.archive.post-type-archive-product ul.products,
    body.tax-product_cat ul.products {
        grid-template-columns: repeat(2, 1fr) !important;
        gap: 32px 24px !important;
    }
}
@media (max-width: 480px) {
    ul.products,
    body.woocommerce-shop ul.products,
    body.archive.post-type-archive-product ul.products,
    body.tax-product_cat ul.products {
        grid-template-columns: 1fr !important;
        gap: 32px !important;
        padding: 0 16px 60px !important;
    }
}

/* Mobile breakpoints */
@media (max-width: 768px) {
    body.single-product .vastori-reviews,
    body.single-product .vastori-care {
        padding: 40px 20px;
        margin-top: 32px;
    }
    body.single-product .vastori-reviews__head {
        grid-template-columns: 1fr;
    }
    body.single-product .vastori-reviews__sort {
        justify-self: start;
    }
    body.single-product .vastori-reviews__item {
        grid-template-columns: 1fr;
        gap: 16px;
        padding: 24px 0;
    }
    body.single-product .vastori-reviews__verdict {
        padding-top: 8px;
        border-top: 0.5px solid var(--vastori-hairline);
    }
}

/* ============================================================
   v0.9.45 — Mobile hardening pass
   Targets overflow-prone areas on phones (≤600px) across all the
   custom components added in v0.9.x. No desktop impact.
   ============================================================ */

/* Global: never allow horizontal scroll on phones */
@media (max-width: 600px) {
    html, body { max-width: 100%; overflow-x: hidden; }

    /* --- Mobile header: keep it to one tidy row ---
       hamburger | logo | search-icon + BAG.  SAVED + ACCOUNT text
       labels are reachable from the off-canvas menu + account icon,
       so we drop them on small phones to stop the header wrapping
       into two cramped lines. BAG stays (with its count). */
    body .bhfb-mobile .vastori-h-link--saved,
    body .bhfb-mobile .vastori-h-link--account {
        display: none !important;
    }
    body .bhfb-mobile .vastori-h-link--bag {
        font-size: 10px !important;
        padding: 0 4px !important;
    }
    body .bhfb-mobile .bhfb-component-woo_icons,
    body .bhfb-mobile .bhfb-column-3 {
        gap: 8px !important;
        flex-wrap: nowrap !important;
    }

    /* --- Listing bar: stack cleanly, no overflow --- */
    .vastori-listing-bar {
        grid-template-columns: 1fr !important;
        gap: 12px !important;
        padding: 14px 16px !important;
        text-align: center !important;
    }
    .vastori-listing-bar__filters {
        flex-wrap: wrap !important;
        gap: 14px 18px !important;
        justify-content: center !important;
    }
    .vastori-listing-bar__sort { justify-self: center !important; }
    .vastori-filter-dropdown__btn,
    .vastori-sort-dropdown__btn { font-size: 13px !important; }

    /* Sort panel: anchor centered like the filter panels */
    .vastori-sort-dropdown__panel {
        position: fixed !important;
        top: 50% !important;
        left: 50% !important;
        right: auto !important;
        transform: translate(-50%, -50%) !important;
        width: calc(100vw - 48px) !important;
        max-width: 320px !important;
        z-index: 9300 !important;
    }

    /* --- Listing header: tighter on phones --- */
    .vastori-listing-header { padding: 0 16px !important; }
    .vastori-listing-header__title { font-size: clamp(26px, 8vw, 34px) !important; }
    .vastori-listing-header__desc { font-size: 14px !important; }

    /* --- Product card: ensure tap targets + badge fit --- */
    ul.products li.product .vastori-card-plus,
    ul.products li.product .tinvwl_add_to_wishlist_button {
        width: 40px !important;
        height: 40px !important;
    }
    ul.products li.product .vastori-card-badge {
        top: 8px !important;
        left: 8px !important;
        font-size: 9px !important;
        padding: 5px 9px !important;
    }

    /* --- Single product: gallery + summary full width, no clipping --- */
    body.single-product div.product {
        display: block !important;
    }
    body.single-product .woocommerce-product-gallery,
    body.single-product .summary.entry-summary {
        width: 100% !important;
        float: none !important;
        margin: 0 0 24px !important;
    }
    body.single-product .vastori-pp-cols {
        grid-template-columns: 1fr !important;
        gap: 24px !important;
    }

    /* --- Size pills + qty controls: comfortable tap size --- */
    form.cart ul.variable-items-wrapper li.variable-item.button-variable-item {
        min-width: 48px !important;
        height: 48px !important;
    }
    .vastori-qty-controls a.botiga-quantity-minus,
    .vastori-qty-controls a.botiga-quantity-plus {
        width: 44px !important;
        height: 48px !important;
    }
    .vastori-qty-controls input.qty,
    .vastori-qty-controls input[type="number"] {
        height: 48px !important;
        line-height: 48px !important;
    }

    /* --- Footer: single column, centered --- */
    body .vastori-footer-cols,
    body .site-footer .vastori-footer-cols {
        grid-template-columns: 1fr !important;
        gap: 28px !important;
        text-align: center !important;
    }

    /* --- Search panel: full-width, no side clip --- */
    .vastori-search-panel__inner { padding-left: 16px !important; padding-right: 16px !important; }

    /* --- Reviews form fields: full width --- */
    body.single-product .vastori-reviews__form { padding-left: 0 !important; padding-right: 0 !important; }

    /* --- Sub-cat tiles: 2-up reads better than 3 on small phones --- */
    .vastori-subcat-tiles {
        grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
        max-width: 360px !important;
    }
}

/* Tablet (601–900px): listing grid 2-up already; keep filter panel
   from overflowing the viewport. */
@media (min-width: 601px) and (max-width: 900px) {
    .vastori-filter-dropdown__panel {
        min-width: 0 !important;
        width: calc(100vw - 64px) !important;
        max-width: 560px !important;
        left: 50% !important;
        transform: translateX(-50%) !important;
    }
}

/* ============================================================
   v0.9.46 — Dynamic homepage sections
   ============================================================ */
.vastori-home-section {
    max-width: 1280px;
    margin: 0 auto;
    padding: 64px 24px;
    border-top: 0.5px solid var(--vastori-hairline);
    text-align: center;
}
.vastori-home-section__title {
    font-family: var(--vastori-font-serif);
    font-size: clamp(28px, 3.4vw, 40px);
    font-weight: 400;
    color: var(--vastori-ink);
    margin: 0 0 10px;
    line-height: 1.15;
}
.vastori-home-section__sub {
    font-family: var(--vastori-font-sans);
    font-size: 15px;
    color: var(--vastori-ink-soft);
    margin: 0 0 40px;
}
.vastori-home-section__cta {
    margin: 36px 0 0;
}
.vastori-home-section__cta a {
    font-family: var(--vastori-font-sans);
    font-size: 11px;
    letter-spacing: 0.24em;
    text-transform: uppercase;
    color: var(--vastori-ink);
    text-decoration: underline;
    text-underline-offset: 5px;
}
.vastori-home-section__cta a:hover { color: var(--vastori-ink-soft); }

/* Category tiles row */
.vastori-home-cats__grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 24px;
}
.vastori-home-cat {
    display: block;
    text-decoration: none;
    color: var(--vastori-ink);
    position: relative;
}
.vastori-home-cat__img {
    display: block;
    width: 100%;
    aspect-ratio: 3 / 4;
    background-color: #F3F1ED;
    background-size: cover;
    background-position: center;
    margin-bottom: 16px;
    transition: transform 0.5s var(--vastori-ease);
}
.vastori-home-cat:hover .vastori-home-cat__img { transform: scale(1.02); }
.vastori-home-cat__name {
    display: block;
    font-family: var(--vastori-font-serif);
    font-size: 20px;
    color: var(--vastori-ink);
    line-height: 1.2;
}
.vastori-home-cat__count {
    display: block;
    font-family: var(--vastori-font-sans);
    font-size: 12px;
    letter-spacing: 0.06em;
    color: var(--vastori-muted);
    margin-top: 4px;
}

/* Home product grids reuse ul.products card styling, but center the
   shortcode output and constrain to 4-up. */
.vastori-home-section ul.products {
    padding: 0 !important;
    margin: 0 auto !important;
}
.vastori-home-section ul.products,
.vastori-home-new ul.products,
.vastori-home-sale ul.products {
    grid-template-columns: repeat(4, 1fr) !important;
    gap: 28px 20px !important;
}

@media (max-width: 900px) {
    .vastori-home-section ul.products {
        grid-template-columns: repeat(2, 1fr) !important;
    }
    .vastori-home-cats__grid { gap: 14px; }
    .vastori-home-cat__name { font-size: 17px; }
}
@media (max-width: 600px) {
    .vastori-home-section { padding: 40px 16px; }
    .vastori-home-cats__grid { grid-template-columns: 1fr; gap: 20px; max-width: 360px; margin: 0 auto; }
    .vastori-home-section ul.products { grid-template-columns: 1fr !important; }
}

/* ============================================================
   v0.9.48 — Clean product cards: hide ALL in-card button chrome
   so each card is image + title + price only (with the + and heart
   as icon overlays). Removes the stacked "Add to bag / Quick View /
   Add to Wishlist" text rows that read as a duplicate entry below
   each product. Descendant selectors (not >) so it catches YITH's
   button + Botiga's loop-button-wrap wherever they sit. */
ul.products li.product .loop-button-wrap,
ul.products li.product .add_to_cart_button,
ul.products li.product .added_to_cart,
ul.products li.product a.button.product_type_simple,
ul.products li.product a.button.product_type_variable,
ul.products li.product a.yith-wcqv-button:not(.vastori-card-plus),
ul.products li.product .yith-wcqv-button:not(.vastori-card-plus),
ul.products li.product .botiga-quick-view,
ul.products li.product .botiga-product-add-to-cart-link {
    display: none !important;
}
/* The TI wishlist text spans must never show as text in the card */
ul.products li.product .tinvwl_add_to_wishlist-text,
ul.products li.product .tinvwl_remove_from_wishlist-text,
ul.products li.product .tinvwl-tooltip {
    position: absolute !important;
    width: 1px !important; height: 1px !important;
    overflow: hidden !important;
    clip: rect(0,0,0,0) !important;
    white-space: nowrap !important;
}

/* ============================================================
   v0.9.52 — Homepage dedup + block-cart/checkout brand styling
   ============================================================ */

/* Homepage: hide the two STATIC sections whose concept is now
   covered by the live dynamic sections (Shop by Category replaces
   "Edits", New Arrivals replaces the static "Just landed"). Keeps
   the unique editorial sections (story, instagram, trust badges). */
body.home .vastori-featured-collections,
body.home .vastori-featured-products {
    display: none !important;
}

/* ---- WooCommerce BLOCK Cart + Checkout brand styling ---- */
/* Primary buttons (Proceed to Checkout / Place Order) → forest green */
.wp-block-woocommerce-cart .wc-block-components-button.contained,
.wp-block-woocommerce-cart .wc-block-cart__submit-button,
.wc-block-cart__submit-container a,
.wp-block-woocommerce-checkout .wc-block-components-button.contained,
.wc-block-checkout__actions_row .wc-block-components-button.contained,
.wc-block-components-button.wc-block-components-button.contained {
    background-color: var(--vastori-ink) !important;
    background: var(--vastori-ink) !important;
    color: #FFFFFF !important;
    border: 1px solid var(--vastori-ink) !important;
    border-radius: 0 !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 12px !important;
    font-weight: 500 !important;
    letter-spacing: 0.22em !important;
    text-transform: uppercase !important;
    box-shadow: none !important;
    transition: background 0.25s var(--vastori-ease), color 0.25s var(--vastori-ease) !important;
}
.wp-block-woocommerce-cart .wc-block-components-button.contained:hover,
.wp-block-woocommerce-checkout .wc-block-components-button.contained:hover {
    background-color: var(--vastori-ink-soft) !important;
    background: var(--vastori-ink-soft) !important;
    color: #FFFFFF !important;
}
.wc-block-components-button.contained .wc-block-components-button__text {
    color: #FFFFFF !important;
}

/* Quantity selector → clean outlined unit (was grey filled) */
.wc-block-components-quantity-selector {
    border: 1px solid var(--vastori-line) !important;
    border-radius: 0 !important;
    background: var(--vastori-surface) !important;
    max-width: 120px !important;
}
.wc-block-components-quantity-selector__button,
.wc-block-components-quantity-selector__button--minus,
.wc-block-components-quantity-selector__button--plus,
.wp-block-woocommerce-cart .wc-block-components-quantity-selector__button {
    background: transparent !important;
    background-color: transparent !important;
    color: var(--vastori-ink) !important;
    fill: var(--vastori-ink) !important;
    border: 0 !important;
    font-size: 16px !important;
    line-height: 1 !important;
    transition: background 0.15s var(--vastori-ease) !important;
}
.wc-block-components-quantity-selector__button svg,
.wc-block-components-quantity-selector__button path {
    fill: var(--vastori-ink) !important;
    color: var(--vastori-ink) !important;
}
.wc-block-components-quantity-selector__button:hover {
    background: var(--vastori-sand-soft) !important;
    background-color: var(--vastori-sand-soft) !important;
    color: var(--vastori-ink) !important;
}
.wc-block-components-quantity-selector__input {
    background: transparent !important;
    color: var(--vastori-ink) !important;
    font-family: var(--vastori-font-sans) !important;
    font-size: 13px !important;
}

/* Cart/checkout headings + totals in brand type */
.wp-block-woocommerce-cart .wc-block-cart-items__header,
.wp-block-woocommerce-checkout .wc-block-components-title,
.wc-block-components-order-summary__title {
    font-family: var(--vastori-font-sans) !important;
    letter-spacing: 0.06em !important;
    color: var(--vastori-ink) !important;
}
.wc-block-cart__totals-title,
.wc-block-components-totals-item__label {
    font-family: var(--vastori-font-sans) !important;
    color: var(--vastori-ink) !important;
}
.wc-block-formatted-money-amount,
.wc-block-components-totals-item__value {
    color: var(--vastori-ink) !important;
}
/* Product titles in cart/checkout → serif */
.wc-block-cart-item__product-name,
.wc-block-components-product-name,
.wc-block-cart-items__row .wc-block-components-product-name {
    font-family: var(--vastori-font-serif) !important;
    font-size: 16px !important;
    color: var(--vastori-ink) !important;
}
/* Remove-item link */
.wc-block-cart-item__remove-link {
    color: var(--vastori-muted) !important;
    text-underline-offset: 3px !important;
}
/* Coupon + form inputs */
.wp-block-woocommerce-cart input.wc-block-components-text-input__input,
.wp-block-woocommerce-checkout input.wc-block-components-text-input__input,
.wp-block-woocommerce-checkout .wc-block-components-text-input input,
.wc-block-components-text-input input {
    border-radius: 0 !important;
    border-color: var(--vastori-line) !important;
}
/* Order summary card border */
.wc-block-components-sidebar .wc-block-components-panel,
.wc-block-cart__sidebar .wc-block-components-totals-wrapper {
    border-radius: 0 !important;
}

/* v0.9.54 — Colour filter swatch dot */
.vastori-filter-dropdown__swatch {
    display: inline-block;
    width: 14px;
    height: 14px;
    border-radius: 50%;
    border: 1px solid var(--vastori-line);
    margin-right: 8px;
    vertical-align: middle;
    flex-shrink: 0;
}
.vastori-filter-dropdown__item label {
    align-items: center;
}

/* v0.9.55 — Single product page colour row (toa.st-style) */
body.single-product .vastori-colour-row {
    margin: 18px 0 4px;
    font-family: var(--vastori-font-sans);
}
body.single-product .vastori-colour-row__label {
    display: block;
    font-size: 11px;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--vastori-muted);
    margin-bottom: 10px;
}
body.single-product .vastori-colour-row__name {
    color: var(--vastori-ink);
    font-weight: 500;
}
body.single-product .vastori-colour-row__swatches {
    display: inline-flex;
    gap: 10px;
    flex-wrap: wrap;
}
body.single-product .vastori-colour-swatch {
    display: inline-block;
    width: 34px;
    height: 34px;
    border-radius: 0;
    border: 1px solid var(--vastori-line) !important;
    box-shadow: inset 0 0 0 2px #fff;
    cursor: pointer;
    /* button reset — these are <button>s now, defeat theme button styling */
    padding: 0 !important;
    margin: 0 !important;
    appearance: none;
    -webkit-appearance: none;
    font: inherit;
    line-height: 0;
    min-height: 0 !important;
    background-clip: padding-box;
    transition: box-shadow 0.18s var(--vastori-ease), transform 0.18s var(--vastori-ease);
}
body.single-product .vastori-colour-swatch:hover { opacity: 1 !important; }
body.single-product .vastori-colour-swatch:hover {
    transform: scale(1.06);
}
body.single-product .vastori-colour-swatch.is-active {
    /* v0.9.85 — stronger active ring (2px ink) so it reads even on a
       white/pale swatch, with a white inner gap for contrast. */
    box-shadow: inset 0 0 0 2px #fff, 0 0 0 2px var(--vastori-ink);
    border-color: var(--vastori-ink) !important;
}
/* v0.9.94 — informational (simple-product) swatch: not a selector, so no
   pointer/hover affordance and no active ring. */
body.single-product .vastori-colour-row--static .vastori-colour-swatch {
    cursor: default !important;
}
body.single-product .vastori-colour-row--static .vastori-colour-swatch:hover {
    transform: none !important;
}
body.single-product .vastori-colour-row--static .vastori-colour-swatch.is-active {
    box-shadow: none !important;
}

/* ============================================================
   v0.9.65 — Full-site audit fixes
   ============================================================ */

/* Checkout (WC blocks): the step headings shipped at 44px / weight 500
   — far too loud for the minimal brand. Bring them to a refined serif
   heading consistent with the rest of the site. */
h2.wc-block-components-checkout-step__title,
.wc-block-components-title.wc-block-components-checkout-step__title,
.wp-block-woocommerce-checkout .wc-block-components-checkout-step__title {
    font-family: var(--vastori-font-serif) !important;
    font-size: 23px !important;
    font-weight: 400 !important;
    letter-spacing: 0 !important;
    line-height: 1.25 !important;
    color: var(--vastori-ink) !important;
    text-transform: none !important;
}

/* v0.9.72 — Greyscale image filter removed. Imagery shows in full
   colour (per brand direction). Relevant colour photography to follow. */
