/** Shopify CDN: Minification failed

Line 1215:0 All "@import" rules must come first

**/
/* Cache-bust: 202605131740 */
/* ============================================================================
   VDB Editorial Layer — v5 (2026-04-27)
   Targets the ACTUAL header icons in the .header__top of the preview theme.
   v4 was wrong: it hid the header buttons and styled the Debora chat pills
   instead (which are the floating support widget at bottom of page).
   This rewrite undoes that and styles the real header.
   ============================================================================ */

:root {
  --vdb-ed-wine:        #9a000b;
  --vdb-ed-wine-deep:   #7a0009;
  --vdb-ed-ink-strong:  #000000;
  --vdb-ed-cream:       #faf7f2;
  --vdb-ed-line:        #e1e1e1;
}

/* ============================================================================
   v4 ROLLBACKS — restore what v4 broke
   ============================================================================ */

/* a) UN-hide legacy header icon buttons (they ARE the real header icons) */
.site-header .header-actions a.button.button--solid.button--icon[href*="/cart"],
.site-header .header-actions a.button.button--outline.button--icon[href*="/account"],
.site-header .header-actions a.button--solid.button--icon,
.site-header .header-actions a.button--outline.button--icon {
  display: inline-flex !important;
}

/* b) Debora floating pills — square corners (was border-radius: 99px,
      fully rounded pills). Match the squared chat widget. */
.debora-floating-pills-row a.debora-floating-pill-h,
a.debora-floating-pill-h {
  border-radius: 8px !important;
}
.debora-floating-pills-row a.debora-floating-pill-h .pill-icon-wrap,
a.debora-floating-pill-h .pill-icon-wrap {
  border-radius: 6px !important;
}

/* ============================================================================
   1. CENTER THE SEARCH BAR in the top row of the desktop header
   ----------------------------------------------------------------------------
   v5 used absolute positioning + transform — that BROKE the search overlay
   (transformed ancestor traps fixed-position descendants, so the overlay
   covered only half the page when search was focused).
   v6: pure flex layout. Search is centered within .header-actions via
   `margin: 0 auto`. No transform, no absolute, overlay works again.
   ============================================================================ */
@media screen and (min-width: 1024px) {
  /* Make .header__top a normal flex row */
  .site-header .header__top {
    display: flex !important;
    align-items: center !important;
    gap: 24px !important;
    position: static !important;
  }

  /* Logo: natural size on the left */
  .site-header .header__top > .logo {
    flex: 0 0 auto !important;
  }

  /* Header-actions: takes the remaining space */
  .site-header .header__top .header-actions {
    flex: 1 1 auto !important;
    display: flex !important;
    align-items: center !important;
    justify-content: flex-end !important;
    gap: 12px !important;
    position: static !important;
  }

  /* search-form: layout geometry. z-index: auto so it does NOT create a
     stacking context — the overlay inside participates in header__top's
     context where the handle (200000001) beats the overlay (199999999). */
  .site-header .header__top search-form,
  .site-header .header-actions search-form {
    position: relative !important;
    transform: none !important;
    left: auto !important;
    top: auto !important;
    margin: 0 auto !important;
    width: 420px !important;
    max-width: 38vw !important;
    height: 42px !important;
    flex: 0 0 420px !important;
    z-index: auto !important;
  }

  /* Handle (the visible input bar): ABOVE the overlay (199999999) */
  .site-header .header__top .site-search-handle,
  .site-header .header-actions .site-search-handle {
    position: relative !important;
    height: 42px !important;
    z-index: 200000001 !important;
    /* Premium editorial look */
    display: flex !important;
    align-items: center !important;
    background: #fff !important;
    border: 1.5px solid #D4CCBF !important;
    border-radius: 0 !important;
    padding: 0 !important;
    width: 100% !important;
    cursor: text !important;
    transition: border-color 0.15s ease !important;
  }
  .site-header .header__top .site-search-handle:hover,
  .site-header .header-actions .site-search-handle:hover {
    border-color: #1A1A1A !important;
  }

  /* Search icon — left-inset, non-interactive */
  .site-header .header__top .site-search-handle .button__icon,
  .site-header .header-actions .site-search-handle .button__icon {
    position: absolute !important;
    left: 14px !important;
    top: 50% !important;
    transform: translateY(-50%) !important;
    width: 16px !important;
    height: 16px !important;
    pointer-events: none !important;
    z-index: 2 !important;
    color: #888 !important;
  }

  /* Input inside the handle */
  .site-header .header__top .site-search-handle input,
  .site-header .header-actions .site-search-handle input {
    display: block !important;
    width: 100% !important;
    height: 100% !important;
    background: transparent !important;
    border: none !important;
    outline: none !important;
    font-family: Inter, -apple-system, sans-serif !important;
    font-size: 14px !important;
    font-weight: 400 !important;
    color: #1A1A1A !important;
    padding: 0 16px 0 44px !important;
    margin: 0 !important;
    caret-color: #9a000b !important;
  }
  .site-header .header__top .site-search-handle input::placeholder,
  .site-header .header-actions .site-search-handle input::placeholder {
    color: #A89F96 !important;
    font-size: 13px !important;
    font-style: italic !important;
    font-weight: 400 !important;
    opacity: 1 !important;
  }
  .site-header .header__top .site-search-handle input:focus,
  .site-header .header-actions .site-search-handle input:focus {
    box-shadow: none !important;
  }
  .site-header .header__top .site-search-handle:focus-within,
  .site-header .header-actions .site-search-handle:focus-within {
    border-color: #9a000b !important;
    box-shadow: 0 0 0 2px rgba(154,0,11,0.12) !important;
  }
}

/* ============================================================================
   2. Real header icons: account + cart — clean, square, icon centered
   These target ONLY buttons inside .site-header .header-actions
   ============================================================================ */
@media screen and (min-width: 1024px) {
  /* shared base */
  .site-header .header-actions a.button--icon,
  .site-header .header-actions a.button.button--solid.button--icon,
  .site-header .header-actions a.button.button--outline.button--icon {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 40px !important;
    height: 40px !important;
    padding: 0 !important;            /* kill the 0 20 0 53 mess */
    border-radius: 999px !important;
    font-size: 0 !important;
    line-height: 1 !important;
    position: relative !important;
    overflow: visible !important;
    box-shadow: none !important;
    text-decoration: none !important;
  }

  /* Icon inside the button — center, not absolute, no negative margin */
  .site-header .header-actions a.button--icon .button__icon,
  .site-header .header-actions a.button--icon svg,
  .site-header .header-actions a.button.button--solid.button--icon .button__icon,
  .site-header .header-actions a.button.button--outline.button--icon .button__icon {
    position: static !important;
    transform: none !important;
    margin: 0 !important;
    width: 20px !important;
    height: 20px !important;
    inset: auto !important;
    left: auto !important;
    right: auto !important;
    top: auto !important;
  }
  .site-header .header-actions a.button--icon svg {
    width: 20px !important;
    height: 20px !important;
    margin: 0 !important;
    stroke-width: 1.7 !important;
  }

  /* Cart button (solid wine) */
  .site-header .header-actions a.button.button--solid.button--icon[href*="/cart"],
  .site-header .header-actions a.button--solid.button--icon[href*="/cart"] {
    background: var(--vdb-ed-wine) !important;
    border: 1px solid var(--vdb-ed-wine) !important;
    color: #fff !important;
  }
  .site-header .header-actions a.button.button--solid.button--icon[href*="/cart"]:hover {
    background: var(--vdb-ed-wine-deep) !important;
    border-color: var(--vdb-ed-wine-deep) !important;
  }

  /* Account button (outline ink) */
  .site-header .header-actions a.button.button--outline.button--icon[href*="/account"],
  .site-header .header-actions a.button--outline.button--icon[href*="/account"] {
    background: transparent !important;
    border: 1px solid var(--vdb-ed-ink-strong) !important;
    color: var(--vdb-ed-ink-strong) !important;
  }
  .site-header .header-actions a.button.button--outline.button--icon[href*="/account"]:hover {
    background: var(--vdb-ed-ink-strong) !important;
    color: #fff !important;
  }

  /* Cart count badge — small floating chip, not an oversized circle */
  .site-header .header-actions [data-header-cart-count],
  .site-header .header-actions .cart-count,
  .site-header .header-actions a.button--solid [data-header-cart-count],
  .site-header .header-actions a.button.button--solid.button--icon [data-header-cart-count] {
    position: absolute !important;
    top: -6px !important;
    right: -6px !important;
    min-width: 18px !important;
    height: 18px !important;
    padding: 0 5px !important;
    background: #fff !important;
    color: var(--vdb-ed-wine) !important;
    border: 1.5px solid var(--vdb-ed-wine) !important;
    border-radius: 999px !important;
    font-size: 10px !important;
    font-weight: 700 !important;
    line-height: 1 !important;
    letter-spacing: 0 !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
  }
}

/* ============================================================================
   Fix multi-line hover underline: box-decoration-break: clone makes every
   wrapped line get its own background sweep instead of just the widest line
   ============================================================================ */
.text-animation--underline,
.text-animation--underline-thin {
  -webkit-box-decoration-break: clone;
  box-decoration-break: clone;
}

/* ============================================================================
   3. Announcement bar: KILL the underline on "Prepara le tue feste!" link
   AGGRESSIVELY — multiple selector patterns + neutralize text-animation classes
   ============================================================================ */
.announcement-bar a,
.announcement-bar .announcement a,
.announcement-bar__inner a,
.announcement-bar__content a,
.announcement-bar__slider a,
.announcement-bar__slider .announcement a,
.announcement-bar__message a,
.announcement-bar p a,
.announcement-bar span a,
.announcement-bar [class*="announcement"] a,
announcement-bar a {
  text-decoration: none !important;
  border-bottom: 0 !important;
  background: transparent !important;
  background-image: none !important;
  background-size: 0 0 !important;
  box-shadow: none !important;
  padding-bottom: 0 !important;
}

.announcement-bar a:hover,
.announcement-bar .announcement a:hover,
announcement-bar a:hover {
  text-decoration: none !important;
  opacity: 0.85 !important;
}

/* Kill the theme's text-animation--underline on links inside announcement */
.announcement-bar a *,
.announcement-bar a .text-animation,
.announcement-bar a [class*="text-animation"],
.announcement-bar .text-animation,
.announcement-bar [class*="text-animation"] {
  background-image: none !important;
  background-size: 0 0 !important;
  text-decoration: none !important;
  border-bottom: 0 !important;
  padding-bottom: 0 !important;
}

.announcement-bar mark,
.announcement-bar .announcement-bar__highlight,
.announcement-bar .text-highlight {
  background: transparent !important;
  color: inherit !important;
  padding: 0 !important;
  border: 0 !important;
}

/* Top-bar text legibility on multi-color backgrounds */
.announcement-bar,
.announcement-bar__inner {
  color: #fff !important;
}
.announcement-bar a,
.announcement-bar p,
.announcement-bar span:not([class*="price"]) {
  color: #fff !important;
  text-shadow: 0 1px 1px rgba(0,0,0,0.18);
}

/* ============================================================================
   4. Dropdown menus: lift them ABOVE everything including the announcement bar
   ============================================================================ */

/* Lower the announcement bar's z-index so dropdowns float over it */
.announcement-bar,
.shopify-section .announcement-bar,
announcement-bar,
.mount-announcement-bar {
  z-index: 1 !important;
  position: relative !important;
}

/* Force visible overflow on every header container */
.site-header,
.site-header .header__top,
.site-header .header__bottom,
.site-header .header-container,
.site-header .header-container--bottom,
.site-header .site-nav,
.site-header .site-nav .link-list,
.site-header .site-nav .has-submenu,
.site-header .header-links,
header-group,
.shopify-section-header,
.shopify-section-header-group,
.shopify-section-group-header-group {
  overflow: visible !important;
}

/* Header stays above the search overlay (overlay = 199999999).
   The overlay lives INSIDE the header's stacking context, so every
   header row needs its own z-index above 199999999. */
.site-header,
.site-header.shopify-section-header-sticky,
.site-header[data-sticky="true"],
.shopify-section-header,
.shopify-section-group-header-group {
  z-index: 200000001 !important;
  position: relative !important;
}
/* header__top (search bar row) must paint ABOVE header__bottom (nav row).
   Both rows had z-index:200000000 and equal DOM depth; header__bottom appeared
   later so it was covering the search dropdown. Give the top row a higher value.
   Use compound class selectors to target only the top row's outer container. */
.site-header .header-container.header-container--top,
.site-header .header__top {
  position: relative !important;
  z-index: 200000002 !important;
}
.site-header .header-container.header-container--bottom,
.site-header .header-container--bottom,
.site-header .header__bottom {
  position: relative !important;
  z-index: 200000000 !important;
}

/* Submenus float WAY above */
.site-header .site-nav .submenu,
.site-header .site-nav .submenu.normal-menu,
.site-header .site-nav .submenu.mega-menu,
.site-header .site-nav .has-submenu .submenu,
.site-header .site-nav .submenu .submenu-holder,
.header__bottom .site-nav .submenu,
.header__bottom .site-nav .submenu.normal-menu {
  z-index: 99999 !important;
  position: absolute !important;
}

/* Inside sticky header, submenu wins over everything */
.site-header.shopify-section-header-sticky .site-nav .submenu,
.site-header[data-sticky="true"] .site-nav .submenu,
.shopify-section-header-sticky .site-nav .submenu {
  z-index: 999999 !important;
}

/* Push main content stack BELOW header */
.shopify-section-group-main-group,
.main-content,
#main,
main {
  position: relative !important;
  z-index: 1 !important;
}

/* ============================================================================
   5. PRODUCT BADGES — colored character pills (wine-character system)
   ----------------------------------------------------------------------------
   Badges are colored by CHARACTERISTIC. The mapping is done by vdb-editorial.js
   which reads the badge text and adds a `.vdb-bd--{family}` class.
   Color families:
     potente   = red       (POTENTE / INTENSO / CORPOSO / STRUTTURATO)
     compl     = amber/gold (COMPLESSO / AFFINATO / FRAGRANTE / RISERVA)
     fresco    = teal      (FRESCO / MINERALE / LEGGERO / CRISPY)
     fruttato  = orange    (FRUTTATO / FRUTTI ROSSI)
     elegante  = purple    (ELEGANTE / RICERCATO / PREGIATO / SIGNORILE)
     dolce     = pink      (DOLCE / RAFFINATO / DESSERT)
     sost      = green     (SOSTENIBILE / BIO / VEGAN / NATURAL)
     aromatico = violet    (AROMATICO / FLOREALE / SPEZIATO)
   ============================================================================ */

/* Base badge style (size, shape, typography) — applies to ALL surfaces */
.product-item__badge,
.product-item__badge.clickable-badge,
.product-item__badge--left-only,
[class*="debora-recently"] [class*="badge"]:not([class*="--sale"]),
[class*="debora-upsell"] [class*="badge"]:not([class*="--sale"]),
[class*="debora-recommended"] [class*="badge"]:not([class*="--sale"]),
[data-debora-component] [class*="badge"]:not([class*="--sale"]),
.upsell-cart [class*="badge"]:not([class*="--sale"]) {
  border-radius: 4px !important;
  font-family: inherit !important;
  font-size: 11px !important;
  font-weight: 700 !important;
  letter-spacing: 0.06em !important;
  text-transform: uppercase !important;
  padding: 4px 10px !important;
  line-height: 1.3 !important;
  white-space: nowrap !important;
  box-shadow: none !important;
  text-decoration: none !important;
}

/* Mobile: scale down badges inside debora-upsell cards — compact upsell grid */
@media (max-width: 1023px) {
  [class*="debora-upsell"] [class*="badge"]:not([class*="--sale"]),
  [class*="debora-upsell"] .debora-badges [class*="badge"] {
    font-size: 9px !important;
    padding: 2px 6px !important;
    letter-spacing: 0.04em !important;
  }
}

/* Default fallback (badges without an inferred family) — neutral cream */
.product-item__badge:not([class*="vdb-bd--"]):not([class*="--sale"]):not([class*="--sold"]):not([class*="--soldout"]) {
  background: var(--vdb-ed-cream) !important;
  color: var(--vdb-ed-ink-strong) !important;
  border: 1px solid var(--vdb-ed-line) !important;
}

/* === Color families — applied by vdb-editorial.js based on badge text ===
   v9: SOLID, vibrant fills with WHITE text. Catchy & editorial.
   Each family gets a deep, recognizable color + a soft drop shadow so
   they pop on any product image. */
.product-item__badge.vdb-bd--potente,
span.vdb-bd--potente,
.vdb-bd--potente {
  background: #9a000b !important;
  color: #fff !important;
  border: 1px solid #9a000b !important;
}
.product-item__badge.vdb-bd--compl,
span.vdb-bd--compl,
.vdb-bd--compl {
  background: #b88c38 !important;
  color: #fff !important;
  border: 1px solid #b88c38 !important;
}
.product-item__badge.vdb-bd--fresco,
span.vdb-bd--fresco,
.vdb-bd--fresco {
  /* Brighter, more cheerful sky/teal — was muted #167080 */
  background: #1ba8c4 !important;
  color: #fff !important;
  border: 1px solid #1ba8c4 !important;
}
.product-item__badge.vdb-bd--fruttato,
span.vdb-bd--fruttato,
.vdb-bd--fruttato {
  background: #c75d18 !important;
  color: #fff !important;
  border: 1px solid #c75d18 !important;
}
.product-item__badge.vdb-bd--elegante,
span.vdb-bd--elegante,
.vdb-bd--elegante {
  background: #6d3e8f !important;
  color: #fff !important;
  border: 1px solid #6d3e8f !important;
}
.product-item__badge.vdb-bd--dolce,
span.vdb-bd--dolce,
.vdb-bd--dolce {
  background: #c43d76 !important;
  color: #fff !important;
  border: 1px solid #c43d76 !important;
}
.product-item__badge.vdb-bd--sost,
span.vdb-bd--sost,
.vdb-bd--sost {
  background: #2b5600 !important;
  color: #fff !important;
  border: 1px solid #2b5600 !important;
}
.product-item__badge.vdb-bd--aromatico,
span.vdb-bd--aromatico,
.vdb-bd--aromatico {
  background: #5b3aa8 !important;
  color: #fff !important;
  border: 1px solid #5b3aa8 !important;
}

/* Hover: subtle scale + shadow lift (color stays as the family's solid fill) */
.vdb-bd--potente:hover, .vdb-bd--compl:hover, .vdb-bd--fresco:hover,
.vdb-bd--fruttato:hover, .vdb-bd--elegante:hover, .vdb-bd--dolce:hover,
.vdb-bd--sost:hover, .vdb-bd--aromatico:hover {
  transform: translateY(-1px) !important;
  filter: brightness(1.08) !important;
}

/* === Sale and Sold-out badges — special, NOT color-mapped === */
.product-item__badge--sale,
.product-item__badges .product-item__badge--sale,
.product-badges__badge--sale,
.product-card .product-item__badge--sale,
.main-product .product-gallery-item .product-item__badge--sale {
  background: var(--vdb-ed-wine) !important;
  color: #fff !important;
  border: 1px solid var(--vdb-ed-wine) !important;
  border-radius: 999px !important;
  font-weight: 700 !important;
  letter-spacing: 0.04em !important;
}

/* === Detached SOSTENIBILE / BIOLOGICO / BIO badges → TOP-RIGHT === */
/* JS moves any .vdb-bd--sost out of .product-item__badges into .card__image
   and adds .vdb-bd--sost-detached. Solid green, white text, top-right. */
.vdb-bd--sost-detached {
  position: absolute !important;
  top: 10px !important;
  right: 10px !important;
  left: auto !important;
  bottom: auto !important;
  margin: 0 !important;
  z-index: 6 !important;
  background: #2b5600 !important;
  color: #fff !important;
  border: 1px solid #2b5600 !important;
  border-radius: 999px !important;
  font-size: 11px !important;
  font-weight: 700 !important;
  letter-spacing: 0.06em !important;
  text-transform: uppercase !important;
  padding: 4px 10px !important;
  line-height: 1.3 !important;
  white-space: nowrap !important;
  box-shadow: 0 2px 6px rgba(43,86,0,0.30) !important;
}
@media (max-width: 640px) {
  .vdb-bd--sost-detached {
    top: 6px !important;
    right: 6px !important;
    font-size: 9.5px !important;
    padding: 3px 7px !important;
  }
}

/* === Detached sale badge: pinned to BOTTOM-RIGHT of card image === */
/* The JS moves .product-item__badge--sale OUT of .product-item__badges
   into the .card__image / .product-item__image wrapper, then adds
   .vdb-bd--sale-detached. We style it as a wine-red circle in the
   bottom-right corner. */
.vdb-bd--sale-detached {
  position: absolute !important;
  bottom: 10px !important;
  right: 10px !important;
  top: auto !important;
  left: auto !important;
  margin: 0 !important;
  width: 46px !important;
  height: 46px !important;
  min-width: 46px !important;
  border-radius: 50% !important;
  background: var(--vdb-ed-wine) !important;
  color: #fff !important;
  border: 1px solid var(--vdb-ed-wine) !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  font-size: 13px !important;
  font-weight: 700 !important;
  letter-spacing: 0 !important;
  padding: 0 !important;
  line-height: 1 !important;
  text-transform: none !important;
  box-shadow: 0 2px 8px rgba(154,0,11,0.25) !important;
  z-index: 6 !important;
  white-space: nowrap !important;
}
@media (max-width: 640px) {
  .vdb-bd--sale-detached {
    width: 38px !important;
    height: 38px !important;
    min-width: 38px !important;
    font-size: 11px !important;
    bottom: 6px !important;
    right: 6px !important;
  }
}

/* === ESAURITO / Sold-out badge — must always be on TOP of the stack === */
.product-item__badge--sold,
.product-item__badge--sold-out,
.product-item__badge--soldout,
.badge--sold,
.badge--sold-out,
[class*="sold-out"].product-item__badge,
[class*="esaurito"] {
  background: var(--vdb-ed-ink-strong) !important;
  color: #fff !important;
  border: 1px solid var(--vdb-ed-ink-strong) !important;
  font-weight: 700 !important;
  letter-spacing: 0.06em !important;
  /* push above the other character/sale badges via flex order */
  order: -10 !important;
  /* and as a safety net, position-stick it to the top-left of the badges container */
  align-self: flex-start !important;
}

/* Badges container: pin to top-left of card, flex column so `order: -10`
   stacks ESAURITO on top, sale stays below it. Constrained width so badges
   don't overflow horizontally past the card edge. */
.product-item .product-item__badges,
.product-card .product-item__badges,
.card .product-item__badges,
.product-item__image-wrapper .product-item__badges,
[class*="product-item"] .product-item__badges {
  position: absolute !important;
  top: 10px !important;
  left: 10px !important;
  right: 10px !important;          /* constrain so badges don't overflow */
  bottom: auto !important;
  display: flex !important;
  flex-direction: column !important;
  align-items: flex-start !important;
  gap: 4px !important;
  z-index: 5 !important;
  max-width: calc(100% - 20px) !important;
  pointer-events: none;
}
.product-item__badges > * {
  pointer-events: auto;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* Hide empty badges — caused the broken red square in mega-menu dropdowns */
.product-item__badge:empty,
.product-item__badge--sale:empty,
.badge:empty,
[class*="product-item__badge"]:empty {
  display: none !important;
}

/* Sale badge: when standalone (without other badges), make sure it stays
   pinned top-left, not floating in the middle of the card image */
.product-item .product-item__badge--sale,
.product-card .product-item__badge--sale,
[class*="product-item"] .product-item__badge--sale {
  margin: 0 !important;
}

/* ============================================================================
   6. DROPDOWN vs ANNOUNCEMENT — bury the banner under the dropdown
   ----------------------------------------------------------------------------
   v6 lowered announcement-bar to z-index: 1, but the dropdown still showed
   the banner cutting through (the banner has its own stacking context with
   a higher implied z). Push it FURTHER down + isolate header stack.
   ============================================================================ */
.announcement-bar,
announcement-bar,
.shopify-section .announcement-bar,
.shopify-section-group-header-group .announcement-bar,
.mount-announcement-bar,
.mount-announcement-bar .announcement-bar {
  z-index: 0 !important;
  position: relative !important;
  isolation: auto !important;
}

/* The Shopify section that wraps the announcement-bar must NOT create a
   higher stacking context than the dropdown */
#shopify-section-sections--28741786173775__announcement_bar_rYE9hA,
[id*="announcement_bar"] {
  z-index: 0 !important;
  position: relative !important;
}

/* Header container (which contains the nav + dropdowns) gets a stacking
   context HIGHER than the announcement, so dropdowns from it always win */
.shopify-section-header,
.shopify-section-group-header-group > div:has(.site-header),
header[role="banner"],
.site-header {
  z-index: 500 !important;
  position: relative !important;
}

/* Re-affirm dropdown z-index higher than everything in case other CSS
   tries to set it lower */
.has-submenu .submenu,
.site-nav .submenu,
.site-nav .submenu.normal-menu,
.site-nav .submenu.mega-menu,
.header__bottom .submenu {
  z-index: 999999 !important;
}

/* ============================================================================
   7. DROPDOWN — nuclear option: force dropdown into its own top-layer stack
   ----------------------------------------------------------------------------
   Even with high z-index, if the dropdown's ANCESTOR Shopify section has a
   lower z-index than the announcement section, it loses the stacking war.
   Solution: force `isolation: isolate` on the header section to create a
   stacking context, AND give the section itself an extreme z-index so its
   descendants always win.
   ============================================================================ */

/* The Shopify section wrapping the header gets the highest stacking */
.shopify-section-group-header-group {
  position: relative !important;
  z-index: 200000001 !important;
  isolation: auto !important;
}
.shopify-section-group-header-group > .shopify-section:not([id*="announcement"]) {
  position: relative !important;
  z-index: 200000001 !important;
}
/* Demote the announcement section to bottom */
.shopify-section-group-header-group > .shopify-section[id*="announcement"],
.shopify-section[id*="announcement_bar"] {
  position: relative !important;
  z-index: 0 !important;
  isolation: isolate !important;
}

/* Section containing the actual header (with logo, nav, etc.) */
.shopify-section-header,
.shopify-section[id*="header"]:not([id*="announcement"]):not([id*="footer"]) {
  position: relative !important;
  z-index: 200000001 !important;
  isolation: auto !important;
}

/* The actual <header> element */
.site-header {
  position: relative !important;
  z-index: 200000001 !important;
}

/* search-results-overlay z-index is set in vdb-brand-overrides.css (199999999).
   Do NOT set it here — the old 99999999 value was lower than the handle (200000001)
   so it worked, but 199999999 is the canonical value and is set in brand-overrides. */

/* As ultra-safety net, force the dropdown to position: fixed with computed
   top so it floats above absolutely everything. Trade-off: dropdown won't
   scroll with the page. Acceptable for short-lived hover state. */
.site-header .has-submenu:hover .submenu.normal-menu,
.site-header .has-submenu.focus .submenu.normal-menu,
.has-submenu:hover > .submenu,
.has-submenu.focus > .submenu {
  z-index: 9999999 !important;
}

/* Ensure the parent has overflow: visible all the way up the tree */
body, html, main, #main, .main-content,
.shopify-section, .shopify-section > div,
.shopify-section-header, .shopify-section-group-header-group {
  overflow: visible !important;
}
/* Note: overflow: visible on body is normal, but Shopify sections are
   sometimes wrapped in containers that clip — this guarantees they don't */

/* ============================================================================
   8. DROPDOWN BACKGROUND — force white opaque bg (was rendering transparent)
   ----------------------------------------------------------------------------
   v7's isolation/z-index gymnastics somehow let the submenu render with
   `background: rgba(0,0,0,0)` (transparent), so the menu items showed
   over whatever was behind them. Force the bg + border + shadow.
   ============================================================================ */
.site-nav .submenu,
.site-nav .submenu.normal-menu,
.site-nav .submenu.mega-menu,
.has-submenu > .submenu,
.has-submenu .submenu,
.has-submenu .submenu.normal-menu,
.has-submenu .submenu.mega-menu,
.header__bottom .site-nav .submenu,
.header__bottom .site-nav .submenu.normal-menu,
.site-header .site-nav .submenu,
.site-header .site-nav .submenu.normal-menu {
  background: #ffffff !important;
  background-color: #ffffff !important;
  background-image: none !important;
  border: 1px solid #E8E2D9 !important;
  border-radius: 8px !important;
  box-shadow: 0 12px 40px rgba(0,0,0,0.14), 0 4px 12px rgba(0,0,0,0.08) !important;
  padding: 8px 0 !important;
  min-width: 220px !important;
}

/* ul.submenu.normal-menu is a transparent 0-height shell — the visually styled
   box lives in .submenu-holder (position:absolute). Override the bg/border/padding
   set above so the ul ghost collapses to 0×0 in DevTools. */
.header__bottom .site-nav .submenu.normal-menu {
  background: transparent !important;
  background-color: transparent !important;
  border: none !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  padding: 0 !important;
  min-width: 0 !important;
}

/* Inner submenu-holder (where the links live) */
.site-nav .submenu-holder,
.site-nav .submenu .submenu-holder {
  background: #ffffff !important;
  background-color: #ffffff !important;
}

/* End of v8 (dropdown bg) */

/* ============================================================================
   9. STICKY HEADER COMPACT LAYOUT (desktop only)
   ----------------------------------------------------------------------------
   When user scrolls past ~80 px, JS adds `.vdb-scrolled` to <body>. The
   sticky header collapses into a SINGLE ROW: hamburger on far left, search
   in center, account/cart on right. Announcement bar hidden, bottom nav
   row hidden. Restored when user scrolls back up.
   ============================================================================ */
@media (min-width: 1024px) {
  /* Hide announcement-bar in sticky mode */
  body.vdb-scrolled .announcement-bar,
  body.vdb-scrolled .mount-announcement-bar,
  body.vdb-scrolled [id*="announcement_bar"] {
    display: none !important;
  }

  /* Hide the bottom nav row (the categories) in sticky mode */
  body.vdb-scrolled .header-container--bottom,
  body.vdb-scrolled .header__bottom {
    display: none !important;
  }

  /* Top row: collapse, with the search bar centered */
  body.vdb-scrolled .site-header {
    box-shadow: 0 2px 12px rgba(0,0,0,0.08) !important;
    transition: box-shadow 0.2s ease !important;
  }
  body.vdb-scrolled .site-header .header__top {
    height: 56px !important;
    padding-top: 4px !important;
    padding-bottom: 4px !important;
    transition: height 0.2s ease !important;
  }

  /* Show hamburger on the far left in sticky mode */
  body.vdb-scrolled .site-header .mobile-menu-button {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 40px !important;
    height: 40px !important;
    border: 1px solid var(--vdb-ed-ink-strong) !important;
    border-radius: 999px !important;
    background: transparent !important;
    color: var(--vdb-ed-ink-strong) !important;
    margin-right: 12px !important;
    flex: 0 0 40px !important;
    order: -1 !important;
  }
  body.vdb-scrolled .site-header .mobile-menu-button:hover {
    background: var(--vdb-ed-ink-strong) !important;
    color: #fff !important;
  }
  body.vdb-scrolled .site-header .mobile-menu-button svg,
  body.vdb-scrolled .site-header .mobile-menu-button .button__icon {
    width: 18px !important;
    height: 18px !important;
    margin: 0 !important;
  }

  /* Hide the logo in sticky mode (the menu pill replaces the brand
     anchor — Daniele explicitly asked for "as in mobile") */
  body.vdb-scrolled .site-header .header__top > .logo {
    /* keep the logo but make it small + clickable */
    transform: scale(0.85) !important;
    transform-origin: left center !important;
    transition: transform 0.2s ease !important;
  }
  body.vdb-scrolled .site-header .header__top > .logo img {
    max-height: 28px !important;
  }

  /* Search bar — keep centered (already from section 1), but tighter */
  body.vdb-scrolled .site-header .header__top search-form,
  body.vdb-scrolled .site-header .header__top .site-search-handle,
  body.vdb-scrolled .site-header .header-actions search-form,
  body.vdb-scrolled .site-header .header-actions .site-search-handle {
    height: 36px !important;
    width: 340px !important;
  }
  body.vdb-scrolled .site-header .site-search-handle input {
    height: 34px !important;
  }

  /* Header icons: tighter spacing in sticky mode */
  body.vdb-scrolled .site-header .header-actions a.button--icon,
  body.vdb-scrolled .site-header .header-actions a.button.button--solid.button--icon,
  body.vdb-scrolled .site-header .header-actions a.button.button--outline.button--icon {
    width: 36px !important;
    height: 36px !important;
  }
}

/* ============================================================================
   9b. MOBILE HEADER COMPACT
   Real height drivers: mobile-menu-button + mobile-cart-button (hardcoded
   40px in section-header.css) + search input padding. Override those directly.
   ============================================================================ */
@media (max-width: 1023px) {
  /* Top row: zero padding, button height alone controls row height */
  .site-header .header__top {
    padding-top: 0 !important;
    padding-bottom: 0 !important;
  }
  /* Shrink the 40px icon buttons → main height driver for the top row */
  .site-header .mobile-menu-button,
  .site-header .mobile-cart-button {
    width: 34px !important;
    height: 34px !important;
  }
  /* Smaller logo to match tighter row */
  .site-header .header__top .logo img,
  .site-header .header__top .logo-img img {
    max-height: 26px !important;
  }
  /* Bottom row: zero padding */
  .site-header .header__bottom {
    padding-top: 0 !important;
    padding-bottom: 0 !important;
  }
  .site-header .header__bottom .site-search-handle input,
  .site-header .header__bottom search-form input {
    padding-top: 5px !important;
    padding-bottom: 5px !important;
  }
}

/* ============================================================================
   9c. DESKTOP NAV DROPDOWN — transparent hover bridge to close the gap
   ----------------------------------------------------------------------------
   The theme's .submenu has padding-top: calc(var(--header-vertical-space)/2)
   which creates a visual dead zone between the nav trigger and the dropdown.
   A transparent ::after on the trigger extends the hover zone downward so the
   cursor can cross the gap without dismissing the dropdown.
   ============================================================================ */
@media (min-width: 1024px) {
  .header__bottom .site-nav .has-submenu {
    position: relative !important;
  }
  .header__bottom .site-nav .has-submenu::after {
    content: '';
    position: absolute;
    bottom: -18px;
    left: -8px;
    right: -8px;
    height: 18px;
    background: transparent;
    z-index: 9999998;
    pointer-events: all;
  }
}

/* End of v9 (sticky header compact) */

/* ============================================================================
   10. GIFT BANNER — sandwich menu LEFT + search RIGHT
   ----------------------------------------------------------------------------
   The "REGALO SBLOCCATO" / free-gift banner gets a hamburger menu pill on
   the FAR LEFT and a search pill on the FAR RIGHT. Center keeps the
   existing unlock-message and "IL VINO DEL GIORNO È..." button.
   JS injects .vdb-gift-menu-btn and .vdb-gift-search-btn into the banner.
   ============================================================================ */
#vdb-gift-banner-wrapper {
  display: flex !important;
  align-items: center !important;
  gap: 14px !important;
  padding: 0 16px !important;
}
#vdb-gift-banner-wrapper > .vdb-gift-banner__content,
#vdb-gift-banner-wrapper > .vdb-gift-banner {
  flex: 1 1 auto !important;
  min-width: 0 !important;
}

/* Sandwich menu button on the left */
.vdb-gift-menu-btn {
  flex: 0 0 auto !important;
  width: 36px !important;
  height: 36px !important;
  border: 1px solid rgba(255,255,255,0.45) !important;
  background: rgba(255,255,255,0.10) !important;
  color: #fff !important;
  border-radius: 999px !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  cursor: pointer !important;
  padding: 0 !important;
  margin: 0 !important;
  transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease !important;
}
.vdb-gift-menu-btn:hover {
  background: #fff !important;
  color: #1d1d1d !important;
  border-color: #fff !important;
}
.vdb-gift-menu-btn svg {
  width: 18px !important;
  height: 18px !important;
}

/* Search pill on the right — WHITE pill with dark text so it's readable
   on the dark gift-banner background */
.vdb-gift-search-btn {
  flex: 0 0 auto !important;
  display: inline-flex !important;
  align-items: center !important;
  gap: 8px !important;
  background: #ffffff !important;
  border: 1px solid #ffffff !important;
  color: #1d1d1d !important;
  padding: 8px 18px !important;
  border-radius: 999px !important;
  font-size: 12.5px !important;
  font-weight: 600 !important;
  letter-spacing: 0.02em !important;
  text-decoration: none !important;
  white-space: nowrap !important;
  cursor: pointer !important;
  max-width: 320px !important;
  transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease !important;
}
.vdb-gift-search-btn:hover {
  background: #f6f4ef !important;
  color: var(--vdb-ed-wine) !important;
  border-color: #f6f4ef !important;
}
.vdb-gift-search-btn svg {
  color: #1d1d1d !important;
  stroke: currentColor !important;
}
.vdb-gift-search-btn span {
  color: #1d1d1d !important;
}
.vdb-gift-search-btn svg {
  flex: 0 0 16px !important;
}
.vdb-gift-search-btn span {
  text-overflow: ellipsis !important;
  overflow: hidden !important;
}

@media (max-width: 768px) {
  .vdb-gift-search-btn span { display: none !important; }
  .vdb-gift-search-btn { padding: 7px 10px !important; }
}

/* End of v10 (gift banner left/right) */

/* ============================================================================
   11. Drawer/menu overlay — kill the backdrop blur
   ----------------------------------------------------------------------------
   When the side menu drawer opens (triggered by sandwich pill in gift banner
   OR mobile hamburger), the theme's .site-overlay applies backdrop-filter:
   blur(3px) to the page. Daniele finds this blur visually noisy. Replace
   with a clean dim overlay (no blur).
   ============================================================================ */
.site-overlay,
.site-overlay.active,
.site-overlay.is-active {
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  background: rgba(0,0,0,0.42) !important;
}

/* End of v11 (overlay no-blur) */

/* ============================================================================
   12. Hide gift-banner sandwich + search until scrolled
   ----------------------------------------------------------------------------
   At the top of the page, the regular header has its own search and nav,
   so the menu+search pills inside the gift banner are redundant. Show
   them only when body has .vdb-scrolled.
   ============================================================================ */
@media (min-width: 1024px) {
  .vdb-gift-menu-btn,
  .vdb-gift-search-btn {
    display: none !important;
  }
  body.vdb-scrolled .vdb-gift-menu-btn,
  body.vdb-scrolled .vdb-gift-search-btn {
    display: inline-flex !important;
  }
}

/* ============================================================================
   13. Side menu drawer: ensure it can receive clicks above .site-header
   ----------------------------------------------------------------------------
   v7 raised .site-header z-index to 1000 which can intercept clicks meant
   for the drawer when the drawer is open. Make sure the sidebar/drawer
   wins.
   ============================================================================ */
.sidebar,
.site-sidebar,
.sidebar.is-open,
.sidebar[aria-hidden="false"],
[data-sidebar],
[data-sidebar][aria-hidden="false"],
.menu-drawer,
.menu-drawer.is-open {
  z-index: 1500 !important;
  pointer-events: auto !important;
}
.site-overlay,
.site-overlay.active,
.site-overlay.is-active {
  z-index: 1400 !important;
}

/* When sidebar is open, push everything else (including header) below */
body.sidebar-open .site-header,
body.menu-open .site-header,
body[class*="sidebar-open"] .site-header,
body[class*="menu-open"] .site-header,
body.sidebar-active .site-header {
  z-index: 100 !important;
}

/* End of v12-13 (gift pills toggle + drawer z-index) */

/* ============================================================================
   14. Nav row — fade gradient on edges + smooth scroll to indicate overflow
   ----------------------------------------------------------------------------
   The category nav has many items (Regioni, Champagne, Bollicine, Rossi,
   Bianchi, Rosati, Passiti, Olio, Liquori, Chi siamo, Promo, Formati,
   Idee Regalo, Contatti, Programma Porta, Enoteca Mondovì) and overflows
   the viewport, getting cut off on both sides. Add fade indicators on
   left/right edges so users see there's more, plus smooth scroll.
   ============================================================================ */
@media (min-width: 1024px) {
  .header__bottom,
  .header-container--bottom {
    position: relative !important;
  }

  /* Nav links list — overflow:visible so babymenu can extend beyond the container's
     right edge. Scroll arrows are hidden via display:none so clip is not needed. */
  .header__bottom .header-links,
  .header-container--bottom .header-links {
    overflow: visible !important;
    scrollbar-width: none !important;
  }
}

/* End of v14 (nav fade + scroll) */

/* ============================================================================
   15. PRODUCT CARD TITLE — red italic, more visible
   ----------------------------------------------------------------------------
   Daniele asked: make the wine title (e.g. "Barolo DOCG 2018 Magnum")
   more visible. Red wine color + italic + larger so it pops.
   Loads Playfair Display from Google Fonts for the editorial look.
   ============================================================================ */
@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,700;1,700&display=swap');

.product-item__title,
.product-item__title h4,
.product-item__title a,
.product-item__title h4 a,
.card .product-item__title,
[class*="product-item__title"] {
  font-family: 'Playfair Display', 'Newsreader', Georgia, serif !important;
  font-style: italic !important;
  font-weight: 700 !important;
  color: var(--vdb-ed-wine) !important;
  font-size: 1.05rem !important;
  line-height: 1.2 !important;
  letter-spacing: 0 !important;
}
.product-item__title a:hover,
.product-item__title h4 a:hover {
  color: var(--vdb-ed-wine-deep) !important;
  text-decoration: none !important;
}

/* Slightly bigger on larger viewports */
@media (min-width: 1024px) {
  .product-item__title,
  .product-item__title h4,
  .product-item__title a {
    font-size: 1.15rem !important;
  }
}

/* End of v15 (title red italic Playfair) */

/* ============================================================================
   16. v16 — kill remaining empty-red squares + softer overlay
   ----------------------------------------------------------------------------
   - Empty sale badges that remain at original position get hidden too
   - Empty detached sale badges (no discount text) hidden
   - Overlay made VERY subtle (was still appearing as a heavy dim)
   ============================================================================ */

/* Empty badges everywhere (especially inside search-results-container) */
.search-results-container .product-item__badge:empty,
.search-results-container .product-item__badge--sale:empty,
.search-results-container .product-item__badges:empty,
.search-results-container [class*="badge"]:empty,
.product-item__badge:empty,
.product-item__badge--sale:empty,
.product-item__badges:empty,
.vdb-bd--sale-detached:empty {
  display: none !important;
}

/* Detached sale-badge with only whitespace */
.vdb-bd--sale-detached:not(:has(*:not(:empty))) {
  /* fallback for empty detached sale */
}

/* Overlay: nearly invisible so the sandwich-menu open state doesn't
   visually muffle anything (Daniele kept seeing it as "blurred") */
.site-overlay,
.site-overlay.active,
.site-overlay.is-active {
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  background: rgba(0,0,0,0.08) !important;
}

/* Search-results "view more / cerca di piu" button: ensure it has
   visible text. Some themes render an empty wine-red square for this
   link when only the icon is loaded — force the label to show. */
.search-results-container a:empty,
.search-results-container button:empty,
.search-results-container [class*="search-more"]:empty,
.search-results-container [class*="view-all"]:empty {
  position: relative;
  min-width: 140px !important;
  padding: 10px 18px !important;
  border-radius: 999px !important;
}
.search-results-container a:empty::after,
.search-results-container button:empty::after,
.search-results-container [class*="search-more"]:empty::after,
.search-results-container [class*="view-all"]:empty::after {
  content: 'CERCA DI PIÙ →';
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.08em;
  color: #fff;
  white-space: nowrap;
}

/* Better path: target the actual "view all"/"see more" link by common
   class names — make it a proper text link, not a tiny red square */
.search-results-container .search-form__submit,
.search-results-container .search__submit,
.search-results-container .search__view-all,
.search-results-container .search-results__view-all,
.search-results-container [class*="view-all"],
.search-results-container a[href*="/search?q="] {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 10px 22px !important;
  background: var(--vdb-ed-wine) !important;
  color: #fff !important;
  text-decoration: none !important;
  border-radius: 999px !important;
  font-size: 12px !important;
  font-weight: 700 !important;
  letter-spacing: 0.08em !important;
  text-transform: uppercase !important;
  min-width: 140px !important;
  width: auto !important;
  height: auto !important;
  margin: 12px !important;
}
.search-results-container .search-form__submit:hover,
.search-results-container .search__submit:hover,
.search-results-container [class*="view-all"]:hover,
.search-results-container a[href*="/search?q="]:hover {
  background: var(--vdb-ed-wine-deep) !important;
}

/* End of v16 */

/* ============================================================================
   17. v21 — Force sidebar visible when classes are right
   ----------------------------------------------------------------------------
   The theme JS sets display: grid as INLINE STYLE when the real
   .mobile-menu-button is clicked. Adding only the .sidebar--opened class
   doesn't trigger that. This rule provides the missing CSS so the
   sidebar shows whenever both body and sidebar have the open classes.
   When classes are removed (close), the rule stops matching and the
   sidebar reverts to its default display:none.
   ============================================================================ */
body.sidebar-opened--left .sidebar.sidebar--left.sidebar--opened,
body.sidebar-opened .sidebar.sidebar--left.sidebar--opened {
  display: grid !important;
  visibility: visible !important;
  transform: translateX(0) !important;
  opacity: 1 !important;
  pointer-events: auto !important;
  left: 0 !important;
}

/* End of v17 (sidebar force display) */

/* ============================================================================
   18. v22 — .search-more button (CERCA DI PIÙ)
   ----------------------------------------------------------------------------
   Confirmed actual class: .search-more.button.button--solid.button--regular.button--fullwidth
   Force readable white-on-wine pill with the label text.
   ============================================================================ */
.search-more,
button.search-more,
a.search-more,
.search-more.button,
.search-more.button--solid,
.search-more.button--regular,
.search-more.button--fullwidth {
  background: var(--vdb-ed-wine) !important;
  background-color: var(--vdb-ed-wine) !important;
  color: #ffffff !important;
  border: 1px solid var(--vdb-ed-wine) !important;
  font-family: inherit !important;
  font-size: 13px !important;
  font-weight: 700 !important;
  letter-spacing: 0.08em !important;
  text-transform: uppercase !important;
  padding: 12px 24px !important;
  border-radius: 4px !important;
  text-decoration: none !important;
  text-indent: 0 !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: auto !important;
  min-width: 180px !important;
  height: auto !important;
  line-height: 1 !important;
}
.search-more:hover,
.search-more.button:hover {
  background: var(--vdb-ed-wine-deep) !important;
  border-color: var(--vdb-ed-wine-deep) !important;
  color: #ffffff !important;
}
/* If the button is rendered empty (no text), inject the label */
.search-more:empty::after,
.search-more.button:empty::after {
  content: 'CERCA DI PIÙ →';
  color: #ffffff !important;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

/* Force any descendant text/span to white + visible size — covers
   .button__text wrapper, empty <span>, etc. */
.search-more *,
.search-more .button__text,
.search-more span,
.search-more svg,
.search-more::before,
.search-more::after {
  color: #ffffff !important;
  fill: currentColor !important;
}
.search-more,
.search-more.button {
  font-size: 13px !important;  /* override any font-size: 0 */
}

/* ============================================================================
   19. v22 — Drawer items: ensure clicks navigate
   ----------------------------------------------------------------------------
   The theme may be auto-closing the drawer on link click before navigation
   completes. Make sure pointer-events are auto and links are routed normally.
   ============================================================================ */
.sidebar.sidebar--left .sidebar__content a[href],
.sidebar.sidebar--left a[href]:not([href="#"]):not([href^="javascript"]),
.sidebar.sidebar--left .menu-link[href] {
  pointer-events: auto !important;
  cursor: pointer !important;
}

/* End of v18-v19 (search-more + drawer) */

/* ============================================================================
   20. v27 — SEARCH MODAL RESTYLE (desktop + mobile)
   ----------------------------------------------------------------------------
   Cleaner predictive-search panel: editorial spacing, sharper product
   rows, prominent "CERCA DI PIÙ" button, dim backdrop, mobile-friendly.
   ============================================================================ */

/* The container that holds all search results when typing */
.search-results-container:not(:empty) {
  background: #ffffff !important;
  border: 1px solid var(--vdb-ed-line) !important;
  border-radius: 8px !important;
  box-shadow: 0 24px 60px rgba(0,0,0,0.18), 0 4px 14px rgba(0,0,0,0.08) !important;
  padding: 12px 14px 14px !important;
  overflow: hidden !important;
  max-width: 540px !important;
}

/* Section heads inside results: "Prodotti", "Categorie", "Articoli del blog" */
.search-results-container > h3,
.search-results-container > .search-results__section-title,
.search-results-container [class*="section-title"],
.search-results-container [class*="results-title"] {
  font-family: 'Newsreader', Georgia, serif !important;
  font-size: 11px !important;
  font-weight: 700 !important;
  letter-spacing: 0.18em !important;
  text-transform: uppercase !important;
  color: var(--vdb-ed-muted, #6b6b6b) !important;
  margin: 8px 0 6px !important;
  padding-bottom: 4px !important;
  border-bottom: 1px solid var(--vdb-ed-line) !important;
}
.search-results-container > h3:first-child {
  margin-top: 0 !important;
}

/* Kill all spacing between rows — no margins, no padding, no separators */
.search-results-container ul,
.search-results-container ol,
.search-results-container li,
.search-results-container .search-results__inner,
.search-results-container [class*="results-list"],
.search-results-container [class*="results__list"] {
  margin: 0 !important;
  padding: 0 !important;
  list-style: none !important;
  border: 0 !important;
}
.search-results-container li {
  margin: 0 !important;
  padding: 0 !important;
  border-bottom: 1px solid var(--vdb-ed-line) !important;
}
.search-results-container li:last-child {
  border-bottom: 0 !important;
}

/* Each product/result row — micro-compact, ZERO outer spacing */
.search-results-container [class*="result-item"],
.search-results-container .predictive-search__result-item,
.search-results-container [class*="result"] > a,
.search-results-container .search-results__item,
.search-results-container .search-results__inner > a,
.search-results-container > * > a,
.search-results-container li > a {
  display: flex !important;
  align-items: center !important;
  gap: 6px !important;
  padding: 0 4px !important;
  margin: 0 !important;
  border-bottom: 1px solid var(--vdb-ed-line) !important;
  transition: background 0.15s ease !important;
  text-decoration: none !important;
  color: var(--vdb-ed-ink, #1d1d1d) !important;
  min-height: 0 !important;
  height: 36px !important;
  max-height: 36px !important;
  overflow: hidden !important;
}
/* Last row drops the bottom border */
.search-results-container li:last-child > a,
.search-results-container [class*="result-item"]:last-child,
.search-results-container .search-results__item:last-child {
  border-bottom: 0 !important;
}
/* Zero-out everything inside the row */
.search-results-container [class*="result"] > a *,
.search-results-container .search-results__item * {
  margin: 0 !important;
  padding-top: 0 !important;
  padding-bottom: 0 !important;
  line-height: 1.05 !important;
}
.search-results-container [class*="result"] .product-item__title,
.search-results-container [class*="result"] h4 {
  line-height: 1.05 !important;
  font-size: 12px !important;
  display: -webkit-box !important;
  -webkit-line-clamp: 1 !important;
  -webkit-box-orient: vertical !important;
  overflow: hidden !important;
}
.search-results-container [class*="result"] .product-price {
  line-height: 1.05 !important;
  font-size: 13px !important;
}
.search-results-container [class*="result-item"]:last-child,
.search-results-container .predictive-search__result-item:last-child,
.search-results-container .search-results__item:last-child {
  border-bottom: 0 !important;
}
.search-results-container [class*="result-item"]:hover,
.search-results-container [class*="result"] > a:hover {
  background: var(--vdb-ed-cream, #faf7f2) !important;
}

/* Product image inside result row — micro 26x32 */
.search-results-container .product-item__image img,
.search-results-container .search-result__image img {
  width: 26px !important;
  height: 32px !important;
  object-fit: contain !important;
  border-radius: 2px !important;
  background: var(--vdb-ed-cream, #faf7f2) !important;
  margin: 0 !important;
  display: block !important;
}
.search-results-container .product-item__image,
.search-results-container .search-result__image {
  flex: 0 0 auto !important;
  margin: 0 !important;
  padding: 0 !important;
}

/* Title and price text size in search modal — slightly smaller */
.search-results-container [class*="result"] .product-item__title,
.search-results-container [class*="result"] h4,
.search-results-container [class*="result"] [class*="title"] {
  font-size: 14px !important;
  line-height: 1.15 !important;
}
.search-results-container [class*="result"] .product-price,
.search-results-container [class*="result"] [class*="price"] {
  font-size: 15px !important;
  line-height: 1.15 !important;
}

/* Result title — bigger, BLACK (not red), italic Playfair */
.search-results-container [class*="result"] .product-item__title,
.search-results-container [class*="result"] h4,
.search-results-container [class*="result"] [class*="title"] {
  font-family: 'Playfair Display', 'Newsreader', Georgia, serif !important;
  font-size: 16px !important;
  line-height: 1.3 !important;
  font-style: italic !important;
  color: #1d1d1d !important;
  font-weight: 700 !important;
  margin: 0 !important;
}

/* Price — bigger, wine red italic */
.search-results-container [class*="result"] .product-price,
.search-results-container [class*="result"] [class*="price"] {
  font-family: 'Playfair Display', 'Newsreader', Georgia, serif !important;
  font-style: italic !important;
  font-weight: 700 !important;
  color: var(--vdb-ed-wine) !important;
  font-size: 18px !important;
}
.search-results-container [class*="result"] [class*="price"][class*="compare"],
.search-results-container [class*="result"] [class*="price--compare"] {
  text-decoration: line-through !important;
  color: var(--vdb-ed-muted, #6b6b6b) !important;
  font-size: 12px !important;
  font-style: normal !important;
}

/* HIDE the theme's broken .search-more button (empty wine rectangle) */
.search-results-container .search-more,
.search-results-container button.search-more,
.search-results-container a.search-more,
.search-results-container .search-more.button {
  display: none !important;
}

/* OUR CLEAN CERCA DI PIÙ — full-width footer spanning both grid columns */
.search-results-container .vdb-cerca-piu {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 100% !important;
  background: var(--vdb-ed-wine) !important;
  color: #ffffff !important;
  border: none !important;
  border-top: 2px solid var(--vdb-ed-wine) !important;
  font-family: Inter, -apple-system, sans-serif !important;
  font-size: 11px !important;
  font-weight: 700 !important;
  letter-spacing: 0.14em !important;
  text-transform: uppercase !important;
  padding: 13px 22px !important;
  border-radius: 0 !important;
  text-decoration: none !important;
  margin: 0 !important;
  cursor: pointer !important;
  transition: background 0.15s ease !important;
  box-sizing: border-box !important;
}
.search-results-container .vdb-cerca-piu:hover {
  background: var(--vdb-ed-wine-deep, #7a0009) !important;
  color: #ffffff !important;
}

/* Mobile tweaks */
@media (max-width: 768px) {
  .search-results-container {
    border-radius: 0 !important;
    border-left: 0 !important;
    border-right: 0 !important;
    box-shadow: 0 16px 40px rgba(0,0,0,0.15) !important;
    padding: 14px !important;
    max-width: 100% !important;
  }
  .search-results-container [class*="result-item"],
  .search-results-container [class*="result"] > a {
    padding: 8px 4px !important;
    gap: 10px !important;
  }
  .search-results-container [class*="result"] img,
  .search-results-container .product-item__image img {
    width: 44px !important;
    height: 56px !important;
  }
  .search-results-container [class*="result"] .product-item__title,
  .search-results-container [class*="result"] h4 {
    font-size: 13px !important;
  }
  .search-more,
  .search-more.button {
    padding: 12px 22px !important;
    font-size: 12px !important;
  }
}

/* End of v20 (search modal restyle) */

/* ============================================================================
   21. v36 — NUCLEAR compact for search rows. Limit EVERY descendant.
   ----------------------------------------------------------------------------
   Previous layers were partially defeated by theme div/li wrappers that
   weren't matching my selectors. Apply max-height + zero margins to
   EVERY descendant of .search-results-container that could be a row.
   ============================================================================ */

/* Cap ANY image inside search results to 28x36 */
.search-results-container img {
  max-width: 28px !important;
  max-height: 36px !important;
  width: auto !important;
  height: auto !important;
  object-fit: contain !important;
  margin: 0 !important;
  padding: 0 !important;
  display: block !important;
}

/* Force every direct child + grandchild that wraps a row to 0 padding/margin */
.search-results-container > *,
.search-results-container > * > *,
.search-results-container ul,
.search-results-container ul *,
.search-results-container [class*="result"],
.search-results-container [class*="item"],
.search-results-container [class*="list"] > * {
  margin-top: 0 !important;
  margin-bottom: 0 !important;
  padding-top: 0 !important;
  padding-bottom: 0 !important;
}

/* Cap row height aggressively */
.search-results-container li,
.search-results-container ul > div,
.search-results-container [class*="result"]:not(.search-results-container),
.search-results-container [class*="item"]:not(.search-results-container) {
  min-height: 0 !important;
  max-height: 38px !important;
  height: 38px !important;
  overflow: hidden !important;
}

/* And the link/anchor that wraps each row content */
.search-results-container li > a,
.search-results-container [class*="result"] > a,
.search-results-container [class*="item"] > a {
  height: 38px !important;
  max-height: 38px !important;
  min-height: 0 !important;
  overflow: hidden !important;
}

/* End of v36 (nuclear search compact) */

/* ============================================================================
   22. v37 — Reset overly-aggressive height caps + shrink images directly
   ----------------------------------------------------------------------------
   v36 max-height: 38px was cutting off entire products. Back off the caps
   and instead just shrink the actual images so rows naturally compress.
   ============================================================================ */

/* Reset the height caps from v36 (kept margin/padding zeroing) */
.search-results-container li,
.search-results-container ul > div,
.search-results-container [class*="result"]:not(.search-results-container),
.search-results-container [class*="item"]:not(.search-results-container),
.search-results-container li > a,
.search-results-container [class*="result"] > a,
.search-results-container [class*="item"] > a {
  height: auto !important;
  max-height: none !important;
  overflow: visible !important;
}

/* Add breathing room via the IMAGE — applies regardless of row markup */
.search-results-container img,
predictive-search img,
[class*="predictive-search"] img,
[class*="search-results"] img {
  margin-top: 8px !important;
  margin-bottom: 8px !important;
}
/* Plus on any anchor that contains an image (catches all row markup variants) */
.search-results-container a {
  padding-top: 6px !important;
  padding-bottom: 6px !important;
}

/* Aggressively shrink every product image in any search-related container */
.search-results-container img,
.search-results-container .product-item__image,
.search-results-container .search-result__image,
predictive-search img,
[class*="predictive-search"] img,
[class*="search-results"] img {
  width: 32px !important;
  max-width: 32px !important;
  height: 40px !important;
  max-height: 40px !important;
  object-fit: contain !important;
  background: var(--vdb-ed-cream, #faf7f2) !important;
  border-radius: 2px !important;
  margin: 0 !important;
  padding: 0 !important;
  display: block !important;
}

/* Wrap the image cell tightly */
.search-results-container .product-item__image,
.search-results-container .search-result__image,
.search-results-container [class*="image"] {
  flex: 0 0 32px !important;
  width: 32px !important;
  max-width: 32px !important;
  height: 40px !important;
  margin: 0 !important;
  padding: 0 !important;
}

/* End of v37 (image-shrink approach) */

/* ============================================================================
   23. v41 — Fixes from mobile audit
   ----------------------------------------------------------------------------
   1. PDP price overlap with vendor/region metadata
   2. Mobile search bar click was no-op (pointer-events conflict)
   3. -7% discount circle clipped on right edge of mobile cards
   4. PDP cross-sell box card price/badge overlap
   ============================================================================ */

/* No PDP layout overrides — theme grid handles it */

/* (2) Mobile search bar: ensure clicks reach the input */
@media (max-width: 1023px) {
  .site-header .site-search-handle,
  .site-header .site-search-handle input,
  .site-header search-form,
  .site-header search-form input {
    pointer-events: auto !important;
    cursor: text !important;
    z-index: 5 !important;
    position: relative !important;
  }
  .site-header .site-search-handle .button__icon {
    pointer-events: none !important;
  }
}

/* (3) -7% discount circle — pull it slightly inward on mobile so it doesn't
   clip past the card right edge */
@media (max-width: 768px) {
  .vdb-bd--sale-detached {
    width: 36px !important;
    height: 36px !important;
    min-width: 36px !important;
    font-size: 10.5px !important;
    bottom: 4px !important;
    right: 4px !important;
  }
}

/* (4) PDP cross-sell / "Box Degustazioni" cards: prevent badge overlap with
   price block */
.main-product .product-recommendations,
.main-product .cart-recommendations,
.main-product [class*="recommendations"] {
  padding: 0 12px !important;
}
.main-product [class*="recommendations"] .product-item .product-price,
.main-product [class*="recommendations"] .product-item .product-price__compare {
  display: block !important;
  margin: 2px 0 !important;
  padding: 0 !important;
  white-space: nowrap !important;
}

/* End of v41 */

/* ============================================================================
   24. v42 — Blog post entries in search panel: consistent flat style
   ----------------------------------------------------------------------------
   Some blog post results were rendering with wine-red bg + white text
   (looking like the CTA), others as plain text. Force them all to plain
   text rows with consistent styling.
   ============================================================================ */

.search-results-container [class*="article"],
.search-results-container [class*="blog"],
.search-results-container [class*="post"],
.search-results-container .article-item,
.search-results-container .blog-item {
  background: transparent !important;
  background-color: transparent !important;
  color: var(--vdb-ed-ink, #1d1d1d) !important;
  font-family: 'Newsreader', Georgia, serif !important;
  font-size: 13px !important;
  font-weight: 500 !important;
  letter-spacing: 0 !important;
  text-transform: none !important;
  padding: 4px 0 !important;
  margin: 0 !important;
  border-radius: 0 !important;
  border-bottom: 1px solid var(--vdb-ed-line, #e1e1e1) !important;
  text-decoration: none !important;
  display: block !important;
  line-height: 1.35 !important;
}
.search-results-container [class*="article"]:last-child,
.search-results-container [class*="blog"]:last-child,
.search-results-container [class*="post"]:last-child {
  border-bottom: 0 !important;
}
.search-results-container [class*="article"] *,
.search-results-container [class*="blog"] *,
.search-results-container [class*="post"] * {
  background: transparent !important;
  color: inherit !important;
  font-family: inherit !important;
  font-size: inherit !important;
  font-weight: inherit !important;
  letter-spacing: 0 !important;
  text-transform: none !important;
  padding: 0 !important;
  margin: 0 !important;
  border-radius: 0 !important;
}
.search-results-container [class*="article"]:hover,
.search-results-container [class*="blog"]:hover,
.search-results-container [class*="post"]:hover {
  color: var(--vdb-ed-wine) !important;
}

/* Force the CERCA DI PIÙ button to square corners — extra-specificity
   in case anything overrides */
.search-results-container .vdb-cerca-piu,
.search-results-container a.vdb-cerca-piu {
  border-radius: 0 !important;
  -webkit-border-radius: 0 !important;
}

/* End of v42 */

/* ============================================================================
   25. v44 — Mobile PDP price overlap. The REAL cause.
   ----------------------------------------------------------------------------
   Live DOM inspection: the price block .vdb-price-avail-row__price is
   position: absolute inside a 28-px-tall .vdb-price-avail-row flex row.
   The price (39px tall, 87px wide) is absolutely positioned and extends
   ABOVE the row, overlapping the vendor/region metadata above it.
   Fix: force the price wrapper to position:relative so it stays in flex
   flow; let the row grow to fit; add proper align-items.
   ============================================================================ */

/* ============================================================================
   PDP price/availability — SEPARATE mobile and desktop layouts
   ============================================================================ */

/* SHARED reset: kill the absolute positioning that causes overlap.
   The theme's Liquid <style> block injects:
     .vdb-price-avail-row__price { position: absolute; left: 50%; transform: translateX(-50%); }
   We must reset position, inset AND transform — otherwise the wrapper
   renders shifted -50% width on first paint (the "flash" before JS runs). */
.main-product .vdb-price-avail-row__price,
.main-product .product-actions__price.vdb-price-avail-row__price,
.main-product .product-actions__price,
.main-product .vdb-price-avail-row__avail,
.main-product .product-actions__availability {
  position: relative !important;
  inset: auto !important;
  top: auto !important;
  right: auto !important;
  bottom: auto !important;
  left: auto !important;
  transform: none !important;
  -webkit-transform: none !important;
  margin: 0 !important;
  padding: 0 !important;
  float: none !important;
}

/* === DESKTOP (>=1024px): horizontal row, price LEFT, availability after === */
@media (min-width: 1024px) {
  .main-product .vdb-price-avail-row,
  .main-product .vdb-price-avail-row.show-block-if-variant-selected {
    display: flex !important;
    flex-direction: row !important;
    align-items: center !important;
    flex-wrap: wrap !important;
    gap: 14px !important;
    width: 100% !important;
    padding: 10px 0 !important;
  }
  .main-product .vdb-price-avail-row__price {
    flex: 0 0 auto !important;
    order: 1 !important;
  }
  .main-product .vdb-price-avail-row__avail {
    flex: 0 0 auto !important;
    order: 2 !important;
    font-size: 13px !important;
    color: #2b5600 !important;
  }
}

/* === MOBILE (<1024px): vertical stack, CENTERED === */
@media (max-width: 1023px) {
  .main-product .vdb-price-avail-row,
  .main-product .vdb-price-avail-row.show-block-if-variant-selected {
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    text-align: center !important;
    gap: 6px !important;
    width: 100% !important;
    padding: 10px 0 !important;
  }
  .main-product .vdb-price-avail-row > *,
  .main-product .vdb-price-avail-row__price,
  .main-product .vdb-price-avail-row__avail {
    width: 100% !important;
    flex: 0 0 auto !important;
    text-align: center !important;
    justify-content: center !important;
  }
  .main-product .vdb-price-avail-row__price {
    order: 1 !important;
    display: flex !important;
    justify-content: center !important;
  }
  .main-product .vdb-price-avail-row__avail {
    order: 2 !important;
    font-size: 12px !important;
    color: #2b5600 !important;
  }
  /* Inside .product-price on MOBILE: stack each line (current / compare / savings)
     vertically and CENTER each — so €12,26 sits at full center of the row. */
  .main-product .vdb-price-avail-row__price .product-price,
  .main-product .product-price {
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    justify-content: center !important;
    text-align: center !important;
    gap: 2px !important;
    width: 100% !important;
    margin: 0 auto !important;
    transform: none !important;
  }
  .main-product .product-price > * {
    display: block !important;
    width: 100% !important;
    text-align: center !important;
    margin: 0 auto !important;
    transform: none !important;
  }
}

/* DESKTOP (>=1024px) only: current + compare-at + savings flow horizontally */
@media (min-width: 1024px) {
  .main-product .product-price,
  .main-product .vdb-price-avail-row__price .product-price {
    display: flex !important;
    flex-direction: row !important;
    align-items: baseline !important;
    flex-wrap: wrap !important;
    justify-content: flex-start !important;
    gap: 12px !important;
    margin: 0 !important;
    padding: 0 !important;
  }
  /* Bump the main visible price on desktop ONLY — €12,00 should be prominent */
  .main-product .product-price .product-price--original,
  .main-product .vdb-price-avail-row__price .product-price--original {
    font-size: 36px !important;
    line-height: 1.05 !important;
    font-weight: 600 !important;
    letter-spacing: -0.01em !important;
  }
  .main-product .product-price .product-price--compare {
    font-size: 18px !important;
    line-height: 1.1 !important;
  }
}

/* End of v44 */

/* ============================================================================
   26. v45 — All .product-actions children stack vertically, no overlap
   ----------------------------------------------------------------------------
   Mobile Aglianico product still showed price overlap because the
   product-actions block had multiple absolute children. Force every
   direct child of .product-actions and .product-text to stack vertically
   with breathing room.
   ============================================================================ */

/* No product-actions override — let theme handle layout */

/* End of v45 */

/* ============================================================================
   27. v56 — PDP title in signature red + bolder vendor name
   ----------------------------------------------------------------------------
   Title: signature wine red #9a000b, italic Newsreader, slightly heavier
   weight for editorial presence. Keeps the existing centered layout and
   the .vdb-title-accent divider that sits between title and vendor.
   Vendor (Cantina di Venosa): grassetto bold 700, same wine red, gently
   uppercased so it reads as a producer line, not a body sentence.
   ============================================================================ */
.main-product .vdb-product-title,
.main-product .product__title.vdb-product-title,
.main-product h1.product__title,
.main-product h1.product__title a,
.main-product h1.product__title span {
  color: #9a000b !important;
  font-family: 'Playfair Display', Georgia, Cambria, "Times New Roman", serif !important;
  font-style: normal !important;
  font-weight: 600 !important;
  letter-spacing: -0.005em !important;
  line-height: 1.1 !important;
}

/* MOBILE only: producer name above the title (vendor → accent → title)
   The container .product-title-vendor wraps all three siblings; turn it
   into a flex column on small viewports and use `order` to swap. */
@media (max-width: 1023px) {
  .main-product .product-title-vendor {
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
  }
  .main-product .product-title-vendor .vdb-product-vendor,
  .main-product .product-title-vendor .product__vendor {
    order: 1 !important;
    margin-bottom: 0.35rem !important;
  }
  .main-product .product-title-vendor .vdb-title-accent {
    order: 2 !important;
  }
  .main-product .product-title-vendor .vdb-product-title,
  .main-product .product-title-vendor h1.product__title {
    order: 3 !important;
    margin-top: 0.35rem !important;
  }
}
@media (min-width: 1024px) {
  .main-product .vdb-product-title,
  .main-product h1.product__title {
    font-size: 2.8rem !important;
  }
}
@media (max-width: 767px) {
  .main-product .vdb-product-title,
  .main-product h1.product__title {
    font-size: 1.55rem !important;
  }
}

/* Wine-red divider so it ties to the title color, not generic gray */
.main-product .vdb-title-accent {
  background: #9a000b !important;
  opacity: 1 !important;
}

/* Producer name — bold BLACK uppercase. Sits above the title on mobile,
   below it on desktop; either way it reads as a producer label. */
.main-product .vdb-product-vendor,
.main-product .product__vendor.vdb-product-vendor {
  font-weight: 700 !important;
  color: #1d1d1d !important;
  letter-spacing: 0.04em !important;
  text-transform: uppercase !important;
  font-size: 0.95rem !important;
}
.main-product .vdb-product-vendor a,
.main-product .product__vendor.vdb-product-vendor a {
  color: #1d1d1d !important;
  font-weight: 700 !important;
  text-decoration: none !important;
  border-bottom: 1px solid transparent !important;
}
.main-product .vdb-product-vendor a:hover {
  border-bottom-color: rgba(29, 29, 29, 0.6) !important;
}
/* End of v56 */

/* ============================================================================
   28. v58 — Center the variant picker (Annata pills)
   ----------------------------------------------------------------------------
   .product-variant__container is display:flex but justify-content:normal,
   so pills (2020 / 2022) hug the left edge. Center them on both
   mobile and desktop. Also center the picker's label/heading.
   ============================================================================ */
.main-product .product-variants,
.main-product product-variants {
  margin-top: 1.6rem !important;
}
.main-product .product-variant {
  text-align: center !important;
  margin-top: 0.6rem !important;
}
.main-product .product-variant__container {
  justify-content: center !important;
  flex-wrap: wrap !important;
  gap: 10px !important;
  margin-top: 0.6rem !important;
}
.main-product .product-variant__label-wrapper,
.main-product .product-variant__title,
.main-product .product-variant > legend,
.main-product .product-variant > label {
  text-align: center !important;
  display: block !important;
  width: 100% !important;
}
/* End of v58 */

/* ============================================================================
   29. v59 — Editorial pills + remove calendar icon next to Annata
   ----------------------------------------------------------------------------
   The variant title ("Annata") had an inline SVG calendar prepended to it
   that broke the typographic line. Hide it. The pills used the legacy
   burgundy #9a000b with 23px corners — refine them: signature wine red,
   subtle 4px corners, hairline 1px border, uppercase tracking.
   ============================================================================ */
/* Strip the calendar SVG injected before "Annata" */
.main-product .product-variant__name > svg,
.main-product .product-variant__name svg:first-child {
  display: none !important;
}

/* Variant section heading — refined editorial label */
.main-product .product-variant__name {
  font-family: Newsreader, Georgia, Cambria, "Times New Roman", serif !important;
  font-size: 1.1rem !important;
  font-weight: 500 !important;
  color: #1d1d1d !important;
  letter-spacing: 0.01em !important;
}

/* Pills — unselected (default) state: ivory bg, hairline wine border */
.main-product .product-variant__label {
  background: #fbf9f4 !important;
  color: #1d1d1d !important;
  border: 1px solid #1d1d1d !important;
  border-radius: 4px !important;
  padding: 9px 22px !important;
  font-family: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif !important;
  font-weight: 500 !important;
  font-size: 14px !important;
  letter-spacing: 0.06em !important;
  text-transform: uppercase !important;
  transition: background-color .18s ease, color .18s ease, border-color .18s ease !important;
  min-width: 76px !important;
  text-align: center !important;
}
.main-product .product-variant__label:hover {
  background: #f3eee2 !important;
  border-color: #9a000b !important;
}

/* Pills — SELECTED state: signature wine red bg + ivory text */
.main-product .product-variant__item input:checked + .product-variant__label,
.main-product .product-variant__item--selected .product-variant__label,
.main-product .product-variant__label.is-active,
.main-product .product-variant__label[aria-checked="true"] {
  background: #9a000b !important;
  color: #fbf9f4 !important;
  border-color: #9a000b !important;
}
/* End of v59 */

/* ============================================================================
   30. v68 — Featured Collection mobile cards: bigger, 1 + peek
   ----------------------------------------------------------------------------
   Featured collection sections (mount-css-slider) showed 2 cards per row on
   mobile via .grid-palm-2 (--visible-cols: 2). Cards looked cramped at
   ~155px each. Match the upsell pattern: 1 card visible with a peek of the
   next.
   Approach: keep --visible-cols at 1, but switch the grid to slider-mode
   on mobile (overflow-x: auto + grid-auto-flow: column) and set --col-size
   to ~82% so each card occupies most of the viewport with the next peeking.
   ============================================================================ */
@media (max-width: 474px) {
  .shopify-section.mount-css-slider .grid-palm-2,
  .shopify-section.mount-css-slider .grid--layout.grid-palm-2 {
    --visible-cols: 1 !important;
    --col-size: 75vw !important;
    grid-auto-flow: column !important;
    grid-template-columns: 75vw !important;
    grid-auto-columns: 75vw !important;
    overflow-x: auto !important;
    overflow-y: hidden !important;
    scroll-snap-type: x mandatory !important;
    scrollbar-width: none !important;
    -webkit-overflow-scrolling: touch !important;
    padding-inline: 12px !important;
    gap: 12px !important;
  }
  .shopify-section.mount-css-slider .grid-palm-2::-webkit-scrollbar {
    display: none !important;
    width: 0 !important;
    height: 0 !important;
  }
  .shopify-section.mount-css-slider .grid-palm-2 > * {
    scroll-snap-align: start !important;
    width: 75vw !important;
    min-width: 75vw !important;
    max-width: 75vw !important;
  }
}
@media (max-width: 359px) {
  .shopify-section.mount-css-slider .grid-palm-2 {
    --col-size: 80vw !important;
    grid-template-columns: 80vw !important;
    grid-auto-columns: 80vw !important;
  }
  .shopify-section.mount-css-slider .grid-palm-2 > * {
    width: 80vw !important;
    min-width: 80vw !important;
    max-width: 80vw !important;
  }
}
/* End of v68 */

/* ============================================================================
   v73 — Card consistency: vendor style, title vendor-stripping, card-meta height
   ----------------------------------------------------------------------------
   Three issues fixed:
   1. Vendor link was using legacy inline wine-red #9a000b + underline. Now dark,
      uppercase, small — consistent with the brand editorial direction.
   2. Title now strips vendor prefix in Liquid (both "Vendor - Name" and
      "Vendor Name" formats), so "Box Degustazione I Grandi Rossi" → "I Grandi Rossi".
   3. .vdb-card-meta wraps the wine-color-bar + grape/region row and reserves a
      fixed min-height so cards WITHOUT those rows (Box, gift sets, etc.) still
      have the same gap before the title — making the grid visually uniform.
   ============================================================================ */

/* 1. Vendor link — collection cards */
.vdb-card-vendor-wrap {
  text-align: center !important;
  margin-top: 5px !important;
  margin-bottom: 0 !important;
  padding: 0 !important;
  line-height: 1 !important;
}
a.vdb-card-vendor {
  font-family: Inter, sans-serif !important;
  font-size: clamp(10px, 1.1vw, 12px) !important;
  font-weight: 700 !important;
  letter-spacing: 0.1em !important;
  text-transform: uppercase !important;
  color: #1d1d1d !important;
  text-decoration: none !important;
  line-height: 1.2 !important;
  display: inline-block !important;
}
a.vdb-card-vendor:hover { color: #9a000b !important; }

/* 2. Wine color bar */
.vdb-wine-color-bar {
  display: block !important;
  height: 4px !important;
  max-width: 180px !important;
  width: 100% !important;
  margin: 4px auto 0 !important;
  border-radius: 999px !important;
  position: relative !important;
  z-index: 1 !important;
}

/* 3. Card-meta wrapper — small placeholder so cards with/without grape row
      stay aligned. Single-line grape row = ~1.4em; use that as min. */
.vdb-card-meta {
  min-height: 1.5em !important;
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 2px 0 !important;
}

/* 4. Grape / region row — single line, scales with viewport */
.gl-wrap.gl-wrap--card {
  flex-wrap: nowrap !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  max-width: 100% !important;
  margin-top: 3px !important;
  font-size: clamp(9px, 1vw, 11px) !important;
}
.gl-wrap.gl-wrap--card .gl-group {
  flex-shrink: 1 !important;
  min-width: 0 !important;
  overflow: hidden !important;
}
.gl-wrap.gl-wrap--card .gl-links {
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  white-space: nowrap !important;
}

/* 5. Title line-clamp — 2 lines max for uniform card height grid.
      Title font also scales with viewport. */
.product-item__title h4,
.product-item__title h5 {
  display: -webkit-box !important;
  -webkit-line-clamp: 2 !important;
  line-clamp: 2 !important;
  -webkit-box-orient: vertical !important;
  overflow: hidden !important;
  margin-bottom: 0 !important;
  min-height: calc(1.15em * 2) !important;
  font-size: clamp(12px, 1.1vw, 15px) !important;
  line-height: 1.15 !important;
}

/* 6. Card text area — compact: no flex-stretch, remove the auto margin
      that was pushing price 58px away from the title */
.product-item .card__text,
.product-item .product-item__text {
  display: block !important;
}
.product-item .product-item__bottom-group {
  margin-top: 4px !important;
}

/* 7. Kill excess spacing from theme utility classes inside cards */
.product-item .card__text.spacing--xlarge > * + * {
  margin-top: 4px !important;
}
.product-item .product-item__title {
  margin-bottom: 0 !important;
  margin-top: 4px !important;
}
/* End of v73/74 */

/* ============================================================================
   v75 — Card polish: compact ATC, adaptive badges, remove sost shadow
   ============================================================================ */

/* 1. ATC "Aggiungi Al Carrello" button on product cards.
      Scales with viewport: 10px mobile → 12px desktop, never wraps to 2 lines. */
.product-item .product-item__quick-buy .button,
.product-item .quick-buy-button,
.product-item [data-js-quick-buy] .button {
  font-size: clamp(10px, 1vw, 12px) !important;
  padding: clamp(6px, 0.6vw, 9px) clamp(8px, 1vw, 14px) !important;
  letter-spacing: 0.07em !important;
  line-height: 1.3 !important;
  border-radius: 4px !important;
  white-space: nowrap !important;
}

/* 2. Stock / availability row — tighten gap to price */
.product-item .product-item__stock-info {
  font-size: 11px !important;
  margin-top: 2px !important;
  gap: 4px !important;
}
.product-item .product-item__stock-info span:last-child {
  font-size: 11px !important;
}

/* 3. Badges — adaptive sizing with clamp() so they scale with the card.
      Uses container-relative logic: card is ~25% viewport on desktop (4-col),
      ~50% on mobile (2-col). 1.8vw on mobile 390px = 7px → clamped to 8px.
      On desktop 1400px, 1.8vw = 25px → clamped to 10px. Safe range. */
.product-item__badge,
.clickable-badge,
.product-item .product-item__badges .product-item__badge {
  font-size: clamp(8px, 1.8vw, 10px) !important;
  padding: clamp(3px, 0.4vw, 4px) clamp(5px, 1vw, 9px) !important;
  letter-spacing: 0.06em !important;
  line-height: 1.3 !important;
  border-radius: 3px !important;
  white-space: nowrap !important;
  max-width: calc(100% - 8px) !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}

/* 4. Remove the ugly green blur shadow on SOSTENIBILE / BIO badges.
      Use same subtle single-pixel offset as character badges — no blur. */
.vdb-bd--sost,
.vdb-bd--sost-detached {
  box-shadow: rgba(43, 86, 0, 0.2) 0px 1px 0px !important;
}

/* 5. Also remove shadow from all other detached card badges for consistency */
.vdb-bd--sale-detached,
.vdb-bd--potente, .vdb-bd--compl, .vdb-bd--fresco,
.vdb-bd--fruttato, .vdb-bd--elegante, .vdb-bd--dolce,
.vdb-bd--aromatico {
  box-shadow: none !important;
}
/* End of v75 */

/* ============================================================================
   v77 — Vendor ALL CAPS everywhere: collection cards, PDP, Debora upsell,
         cart, search results, and any theme element exposing vendor text.
   ============================================================================ */
a.vdb-card-vendor,
.product-item__vendor,
.product-item__vendor a,
.product-item .product-item__vendor,
.product-item .product-item__vendor a,
.product-vendor,
.product-vendor a,
.main-product .vdb-product-vendor,
.main-product .vdb-product-vendor a,
.main-product .product__vendor,
.main-product .product__vendor a,
.product-main__vendor,
.product-main__vendor a,
.debora-card .vendor,
.debora-card .vendor a,
.debora-pdp-upsell .vendor,
.debora-pdp-upsell .vendor a,
.cart-item__vendor,
.cart-item__vendor a,
.search-item__vendor,
.search-item__vendor a,
.predictive-search__vendor,
[class*="product-vendor"],
[class*="product-vendor"] a,
[class*="item-vendor"],
[class*="item-vendor"] a {
  text-transform: uppercase !important;
}
/* End of v77 */

/* ============================================================================
   v78 — Equal card heights, no badge shadows, centered stock info
   1. vdb-card-meta now wraps wine-bar + grape/region. Fixed min-height so
      Box cards (no bar, no grape row) reserve the same vertical space as
      full wine cards (bar 4px + grape/region row ~22px).
   2. SOSTENIBILE / BIOLOGICO shadow → none (was still 1px green offset).
   3. Disponibilità / stock text centered in every card.
   ============================================================================ */

/* 1. Card meta zone — fixed height, content centered */
.vdb-card-meta {
  min-height: 38px !important;
  justify-content: center !important;
}
.vdb-wine-color-bar {
  margin: 0 auto 4px !important;
}

/* 2. Kill SOST / BIOLOGICO badge shadow completely */
.vdb-bd--sost,
.vdb-bd--sost-detached {
  box-shadow: none !important;
}

/* 3. Center stock / Disponibilità row */
.product-item .product-item__stock-info {
  display: flex !important;
  justify-content: center !important;
  align-items: center !important;
  text-align: center !important;
  width: 100% !important;
}
/* End of v78 */

/* ============================================================================
   v79 — ATC button always at the same height across every card in the grid.
   Strategy: make the card a flex column so card__text fills the remaining
   height after the image/vendor/meta. Inside card__text, the bottom-group
   (price + stock) gets margin-top:auto → pushes it (and the ATC below it)
   to the bottom of every card regardless of title length or badge count.
   ============================================================================ */

/* Card is a flex column — fills the grid cell height via align-items:stretch */
.product-item.card {
  display: flex !important;
  flex-direction: column !important;
}

/* Image: fixed aspect-ratio, never grows */
.product-item .card__image.product-item__image {
  flex-shrink: 0 !important;
  flex-grow: 0 !important;
}

/* Vendor + meta: fixed-size blocks, don't stretch */
.product-item .vdb-card-vendor-wrap,
.product-item .vdb-card-meta {
  flex-shrink: 0 !important;
}

/* Text area: grows to fill whatever height remains in the card */
.product-item .card__text,
.product-item .product-item__text {
  flex: 1 !important;
  display: flex !important;
  flex-direction: column !important;
  min-height: 0 !important;
}

/* Price/stock group: auto top margin pushes it (+ ATC below) to the bottom */
.product-item .product-item__bottom-group {
  margin-top: auto !important;
}

/* ATC: sits naturally just below price/stock with consistent gap */
.product-item .product-item__quick-buy {
  flex-shrink: 0 !important;
  margin-top: 6px !important;
}
/* End of v79 */

/* ============================================================================
   v80 — Fix ATC alignment root causes
   1. Hide legacy .wine-color-bar-under inside card__text: some products render
      this old div (12px) inside the flex column, shifting title + ATC down
      inconsistently. We now use .vdb-wine-color-bar inside .vdb-card-meta.
   2. margin-top:auto on .product-item__bottom-group wasn't applying because
      .spacing--xlarge > * + * has specificity 0,3,0 vs our v79 rule's 0,2,0.
      Use .card__text .product-item__bottom-group (0,3,0) + later position wins.
   ============================================================================ */

/* 1. Kill the legacy duplicate wine bar inside card text */
.wine-color-bar-under {
  display: none !important;
}

/* 2. Bottom-align price/stock group — higher-specificity selector beats
      the spacing--xlarge child rule that was overriding margin-top:auto */
.product-item .card__text .product-item__bottom-group,
.product-item .product-item__text .product-item__bottom-group {
  margin-top: auto !important;
}
/* End of v80 */

/* ============================================================================
   v81 — Square buttons on Consentmo GDPR cookie banner.
   CSS custom properties inherit across Shadow DOM boundaries, so setting
   --csm-button-border-radius on the host element overrides the banner's
   internal button border-radius without touching the app's own CSS.
   ============================================================================ */
csm-cookie-consent {
  --csm-button-border-radius: 0px;
}
/* End of v81 */

/* ============================================================================
   v82 — Debora chat above the gift banner
   Banner is at 9999999 (must beat header at 999999). Debora chat panel,
   button, and pills are at 99998–99999 — below the banner. Raise them all
   above the banner so the open chat always renders on top.
   ============================================================================ */
.debora-chat-panel,
.debora-chat-btn,
.debora-floating-pills-row {
  z-index: 99999999 !important;
}
/* End of v82 */

/* ============================================================================
   vSearch v3 — Full rewrite with vdb-sr-* classes (zero conflict risk).
   Template rebuilt in helper-predictive-search.liquid with direct <img> tags.
   ============================================================================ */

/* --- Outer container ------------------------------------------------------- */
.search-results-container:not(:empty) {
  background: #fff !important;
  border: 1px solid #E8E2D9 !important;
  border-radius: 0 !important;
  box-shadow: 0 24px 64px rgba(0,0,0,0.16) !important;
  overflow: hidden !important;
  overflow: hidden !important;
  padding: 0 !important;
}

/* --- Scroll list ----------------------------------------------------------- */
.vdb-sr-list {
  max-height: 72vh;
  overflow-y: auto;
  overflow-x: hidden;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch; /* iOS momentum scroll */
  touch-action: pan-y;               /* allow vertical swipe on touch devices */
  scrollbar-width: thin;             /* Firefox */
  scrollbar-color: #DDD7CF transparent;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
}
.vdb-sr-list::-webkit-scrollbar { width: 5px; }
.vdb-sr-list::-webkit-scrollbar-track { background: transparent; }
.vdb-sr-list::-webkit-scrollbar-thumb { background: #DDD7CF; border-radius: 2px; }
.vdb-sr-list::-webkit-scrollbar-button { display: none; } /* no <> arrows */

/* --- Section groups ------------------------------------------------------- */
.vdb-sr-block { padding: 0; }
.vdb-sr-block--sep { border-top: 1px solid #F0EBE3; }

/* Section label */
.vdb-sr-label {
  display: block;
  font-family: Inter, -apple-system, sans-serif;
  font-size: 9.5px;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: #b0a89e;
  padding: 14px 20px 6px;
}
.vdb-sr-label--mt { padding-top: 16px; }

/* --- Suggestion rows ------------------------------------------------------ */
.vdb-sr-suggestion {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 20px;
  font-family: Inter, -apple-system, sans-serif;
  font-size: 13.5px;
  font-weight: 400;
  color: #1a1a1a;
  text-decoration: none;
  background: transparent;
  transition: background 0.12s ease, box-shadow 0.12s ease;
}
.vdb-sr-suggestion:hover,
.vdb-sr-suggestion:focus,
.vdb-sr-suggestion[aria-selected="true"] {
  background: #FAF7F2 !important;
  color: #9a000b !important;
  box-shadow: inset 3px 0 0 #9a000b !important;
  border-radius: 0 !important;
  outline: none;
}
/* Kill theme pill on any aria-selected within our results list */
[data-js-search-results-holder] [data-js-search-item][aria-selected="true"] {
  background: #FAF7F2 !important;
  color: #9a000b !important;
  border-radius: 0 !important;
}
/* Nuclear: strip border-radius from every link in the results panel */
.vdb-sr-list a,
.search-results-container a { border-radius: 0 !important; }
.vdb-sr-suggestion__icon { font-size: 11px; color: #ccc; flex-shrink: 0; line-height: 1; }

/* --- Product rows --------------------------------------------------------- */
.vdb-sr-product {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 10px 20px;
  text-decoration: none;
  background: transparent !important;
  color: inherit !important;
  transition: background 0.12s ease, box-shadow 0.12s ease;
}
.vdb-sr-product.active,
.vdb-sr-product[aria-selected="true"] {
  background: transparent !important;
  color: inherit !important;
}
.vdb-sr-product:hover,
.vdb-sr-product:focus {
  background: #FAF7F2 !important;
  box-shadow: inset 3px 0 0 #9a000b;
  color: inherit !important;
  outline: none;
}

.vdb-sr-product__thumb {
  flex-shrink: 0;
  width: 48px;
  height: 62px;
  overflow: hidden;
  border: 1px solid #E8E2D9;
  background: #F5F0EB;
  display: flex;
  align-items: center;
  justify-content: center;
}
.vdb-sr-product__thumb img {
  display: block;
  object-fit: contain;
  object-position: center;
}

.vdb-sr-product__body {
  flex: 1 1 0;
  min-width: 0;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 3px;
  padding-left: 2px;
}
.vdb-sr-product__title {
  font-family: Inter, -apple-system, sans-serif;
  font-size: 13px;
  font-weight: 500;
  color: #1a1a1a;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  display: block;
  line-height: 1.3;
}
.vdb-sr-product__price {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 6px;
  font-family: Inter, -apple-system, sans-serif;
  white-space: nowrap;
}
.vdb-sr-product__price > span {
  font-size: 13px;
  font-weight: 700;
  color: #9a000b;
}
.vdb-sr-product__price del {
  font-size: 11px;
  font-weight: 400;
  color: #b0a89e;
  text-decoration: line-through;
}

/* --- Article / Page rows -------------------------------------------------- */
.vdb-sr-article {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 7px 20px;
  text-decoration: none;
  background: transparent;
  transition: background 0.12s ease, box-shadow 0.12s ease;
}
.vdb-sr-article:hover,
.vdb-sr-article:focus,
.vdb-sr-article[aria-selected="true"] {
  background: #FAF7F2 !important;
  box-shadow: inset 3px 0 0 #9a000b !important;
  border-radius: 0 !important;
  outline: none;
}
.vdb-sr-article:hover .vdb-sr-article__title,
.vdb-sr-article:focus .vdb-sr-article__title,
.vdb-sr-article[aria-selected="true"] .vdb-sr-article__title { color: #9a000b !important; }

.vdb-sr-article__thumb {
  flex-shrink: 0;
  width: 38px;
  height: 38px;
  overflow: hidden;
  background: #F5F0EB;
  border: 1px solid #E8E2D9;
  display: flex;
  align-items: center;
  justify-content: center;
}
.vdb-sr-article__thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.vdb-sr-article__body {
  flex: 1 1 0;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 1px;
}
.vdb-sr-article__title {
  font-family: Inter, -apple-system, sans-serif;
  font-size: 12.5px;
  font-weight: 500;
  color: #1a1a1a;
  line-height: 1.3;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  display: block;
}
.vdb-sr-article__meta {
  font-family: Inter, -apple-system, sans-serif;
  font-size: 10px;
  font-weight: 400;
  color: #b0a89e;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  display: block;
}

/* --- Explore categories grid ---------------------------------------------- */
.vdb-sr-explore-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 6px;
  padding: 8px 16px 14px;
}
.vdb-sr-explore-grid--single {
  grid-template-columns: 1fr;
  padding: 6px 14px 12px;
  gap: 5px;
}
.vdb-sr-explore-tile {
  display: flex;
  align-items: flex-start;
  padding: 9px 12px;
  border: 1px solid #E8E2D9;
  font-family: Inter, -apple-system, sans-serif;
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0.02em;
  line-height: 1.35;
  color: #1a1a1a;
  text-decoration: none;
  background: #FAFAF8;
  transition: background 0.1s ease, border-color 0.1s ease, color 0.1s ease;
  border-radius: 0;
  word-break: break-word;
}
.vdb-sr-explore-tile:hover {
  background: #FAF7F2;
  border-color: #9a000b;
  color: #9a000b;
}

/* --- Desktop: wider panel + two-column grid ------------------------------- */
@media (min-width: 1024px) {
  .search-results-container:not(:empty) {
    min-width: 680px !important;
    max-width: 54vw !important;
  }

  /* Two-column: left=explore | right=products+articles.
     Grid explicit placement works regardless of DOM order. */
  .vdb-sr-list:has(.vdb-sr-block--products) {
    display: grid;
    grid-template-columns: 200px 1fr;
    align-items: start;
  }
  .vdb-sr-list:has(.vdb-sr-block--products) .vdb-sr-block--queries {
    grid-column: 1;
    grid-row: 1;
    border-right: 1px solid #F0EBE3;
    border-top: none;
    align-self: stretch;
  }
  .vdb-sr-list:has(.vdb-sr-block--products) .vdb-sr-block--products {
    grid-column: 2;
    grid-row: 1;
    border-top: none;
  }
  .vdb-sr-list:has(.vdb-sr-block--products) .vdb-sr-block--pages {
    grid-column: 2;
  }
  /* Articles: full-width footer spanning both columns */
  .vdb-sr-list:has(.vdb-sr-block--products) .vdb-sr-block--articles {
    grid-column: 1 / -1;
    grid-row: 2;
    border-top: 2px solid #E8E2D9;
    background: #F7F3EE;
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: stretch;
    padding: 0 24px 14px 32px;
    gap: 0;
  }
  .vdb-sr-list:has(.vdb-sr-block--products) .vdb-sr-block--articles .vdb-sr-label {
    flex: 0 0 100%;
    padding: 14px 0 8px;
    text-align: center;
    border-bottom: none;
    letter-spacing: 0.12em;
  }
  .vdb-sr-list:has(.vdb-sr-block--products) .vdb-sr-block--articles .vdb-sr-article {
    flex: 0 0 calc(50% - 1px);
    padding: 10px 18px 10px 0;
    border-radius: 0;
    background: transparent;
    gap: 0;
    align-items: flex-start;
  }
  .vdb-sr-list:has(.vdb-sr-block--products) .vdb-sr-block--articles .vdb-sr-article:nth-child(even) {
    border-left: 1px solid #E8E2D9;
    padding-left: 18px;
  }
  .vdb-sr-list:has(.vdb-sr-block--products) .vdb-sr-block--articles .vdb-sr-article__thumb {
    display: none;
  }
  .vdb-sr-list:has(.vdb-sr-block--products) .vdb-sr-block--articles .vdb-sr-article__body {
    padding-left: 0;
  }
  .vdb-sr-list:has(.vdb-sr-block--products) .vdb-sr-block--articles .vdb-sr-article__title {
    font-family: 'Newsreader', Georgia, serif;
    font-size: 13.5px;
    font-weight: 600;
    font-style: italic;
    color: #2a1a0e;
    white-space: normal;
    line-height: 1.45;
    overflow: visible;
    text-overflow: unset;
  }
  .vdb-sr-list:has(.vdb-sr-block--products) .vdb-sr-block--articles .vdb-sr-article__meta {
    font-size: 10.5px;
    color: #9a000b;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    font-weight: 500;
  }
}

/* --- Mobile --------------------------------------------------------------- */
@media (max-width: 1023px) {
  .vdb-sr-list { max-height: 52vh; }
  .vdb-sr-label { padding: 9px 14px 4px; }
  .vdb-sr-suggestion { padding: 8px 14px; font-size: 14px; }
  .vdb-sr-product { padding: 7px 14px; gap: 10px; }
  .vdb-sr-product__thumb { width: 36px; height: 46px; display: flex; align-items: center; justify-content: center; }
  .vdb-sr-product__title { font-size: 12.5px; }
  .vdb-sr-article { padding: 8px 14px; }
  /* Hide blog articles on mobile — not useful in a compact search overlay */
  .vdb-sr-block--articles,
  .vdb-sr-block--pages { display: none !important; }
  /* Categories: 3 columns, smaller tiles */
  .vdb-sr-explore-grid--single { grid-template-columns: 1fr 1fr 1fr; }
  .vdb-sr-explore-grid { padding: 5px 10px 8px; gap: 5px; }
  .vdb-sr-explore-tile { padding: 6px 8px; font-size: 11px; }
  .vdb-sr-block--queries .vdb-sr-label { padding: 8px 14px 3px; font-size: 9px; }
}
/* --- Article footer overrides (desktop only) ------------------------------- */
@media (min-width: 1024px) {
  .vdb-sr-block--articles { display: block !important; }
  .vdb-sr-block--articles { padding-left: 32px !important; }
  .vdb-sr-block--articles .vdb-sr-label { display: none !important; }
  /* Full-width row: text left, image right, image fills row height */
  .vdb-sr-block--articles .vdb-sr-article {
    padding-left: 20px !important;
    padding-right: 0 !important;
    align-items: stretch !important;
    overflow: hidden !important;
  }
  .vdb-sr-block--articles .vdb-sr-article__thumb { display: none !important; }
  .vdb-sr-block--articles .vdb-sr-article__body {
    flex: 1 1 0 !important;
    display: flex !important;
    flex-direction: column !important;
    justify-content: center !important;
  }
  .vdb-sr-block--articles .vdb-sr-article__title {
    font-size: 14px !important;
    font-weight: 600 !important;
    color: #9a000b !important;
    white-space: normal !important;
    overflow: visible !important;
    text-overflow: unset !important;
  }
}

/* ============================================================================
   MOBILE: lower only the actual header element z-index.
   CRITICAL: do NOT set z-index on wrapper divs (.shopify-section-header,
   .shopify-section-group-header-group) — those wrappers contain
   sidebar-drawer, and giving them a stacking context traps the sidebar
   inside z:10, making it paint BELOW the site-overlay (z:1999999) even
   though the sidebar itself has z:2000000.
   ============================================================================ */
@media (max-width: 1023px) {
  .site-header,
  .site-header.shopify-section-header-sticky,
  .site-header[data-sticky="true"] {
    z-index: 10 !important;
  }
}

/* ============================================================================
   MOBILE MENU DRAWER — fix X button, links, and background scroll
   Root cause of bugs 1+2: wrapper divs around sidebar had z-index set
   (above), trapping sidebar's own z-2000000 inside a z:10 stacking
   context → site-overlay at z:1999999 (root) won every click.
   Now that wrapper has no z-index, sidebar is in root context at z:2000000.
   ============================================================================ */

/* Sidebar: root-context z beats the overlay and any Debora widget */
body.sidebar-opened .sidebar,
body.sidebar-opened--left .sidebar {
  z-index: 2000000 !important;
  pointer-events: auto !important;
}

/* Overlay: sits between page and sidebar */
body.sidebar-opened .site-overlay,
body.sidebar-opened--left .site-overlay {
  z-index: 1999999 !important;
}

/* Bury floating app widgets behind the overlay when sidebar is open.
   #vdb-gift-banner-wrapper is position:fixed; z:210000000 (root) — higher
   than the header-group stacking context at z:200000001, so it paints over
   the sidebar unless explicitly lowered here. */
body.sidebar-opened [class*="debora"],
body.sidebar-opened--left [class*="debora"],
body.sidebar-opened [id*="debora"],
body.sidebar-opened--left [id*="debora"],
body.sidebar-opened [id*="vdb-gift"],
body.sidebar-opened--left [id*="vdb-gift"],
body.sidebar-opened [class*="vdb-gift"],
body.sidebar-opened--left [class*="vdb-gift"] {
  z-index: 5 !important;
  pointer-events: none !important;
}

/* Lock background scroll — overflow:hidden on body prevents page scrolling.
   touch-action left alone so the sidebar itself can scroll (it's position:fixed
   with overflow-y:auto, so it manages its own touch scroll). */
body.sidebar-opened,
body.sidebar-opened--left {
  overflow: hidden !important;
}
html:has(body.sidebar-opened),
html:has(body.sidebar-opened--left) {
  overflow: hidden !important;
}

/* Sidebar close button: larger tap target + visible border so it's obvious */
@media (max-width: 1023px) {
  .sidebar__close {
    width: 40px !important;
    height: 40px !important;
    border: 1.5px solid #1A1A1A !important;
    border-radius: 50% !important;
    background: transparent !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
  }
  .sidebar__close svg {
    width: 16px !important;
    height: 16px !important;
  }
  .sidebar__close svg path {
    stroke: #1A1A1A !important;
    stroke-width: 2 !important;
  }
}

/* ============================================================================
   PDP two-column layout: description left, spec (nutrition) table right.
   Desktop: spec block floats right so description text wraps beside it.
   Mobile: spec block first (order -1), description below.
   The nutrition block is the only .card-widget inside .product-content-below
   that does NOT have the .card-widget--is-accordion-item class.
   ============================================================================ */

/* --- Desktop ---------------------------------------------------------------- */
@media (min-width: 750px) {
  /* Title: always full-width, clears any stray floats */
  .product-content-below > .vdb-auto-desc-title {
    float: none !important;
    clear: both;
    width: 100%;
  }
  /* Right-column group (subtitle label + spec card): float right */
  .product-content-below > .vdb-spec-group {
    float: right;
    width: 44%;
    max-width: 340px;
    margin-left: 28px;
    margin-bottom: 20px;
  }
  /* Spec card is now inside the group, not a direct child of pcb — reset float */
  .product-content-below > .vdb-spec-group > .card-widget {
    float: none !important;
    width: 100% !important;
    max-width: none !important;
    margin-left: 0 !important;
    margin-bottom: 0 !important;
  }
  /* Fallback: any bare card-widget still a direct child of pcb (e.g. Shopify nutrition) */
  .product-content-below > .card-widget:not(.card-widget--is-accordion-item) {
    float: right;
    width: 44%;
    max-width: 340px;
    margin-left: 28px;
    margin-bottom: 20px;
  }
  /* Producer block: always full-width below the float */
  .product-content-below .vdb-auto-producer {
    clear: both;
  }
  .product-content-below #product-description {
    overflow: visible;
  }
}

/* Kill theme JS description truncation — we manage layout ourselves */
#product-description.description-truncated { max-height: none !important; overflow: visible !important; }
#product-description.description-truncated::after { display: none !important; }

/* --- Mobile ----------------------------------------------------------------- */
@media (max-width: 749px) {
  .product-content-below {
    display: flex !important;
    flex-direction: column !important;
  }
  /* Proper Shopify nutrition block → first; exclude our spec group */
  .product-content-below > .card-widget:not(.card-widget--is-accordion-item):not(.vdb-spec-group),
  .product-content-below > .card-widget:has(.toggle--table):not(.vdb-spec-group) {
    order: -1 !important;
    margin-bottom: 16px;
  }
  .product-content-below > .vdb-auto-desc-title { order: 0; }
  /* spec group (subtitle + spec card): after title, before description */
  .product-content-below > .vdb-spec-group { order: 2 !important; margin-bottom: 16px; }
  /* description: after spec */
  .product-content-below > #product-description { order: 3 !important; }
  /* producer: last */
  .product-content-below > .vdb-auto-producer { order: 4 !important; }
  /* Subtitle inside group: bigger and centered on mobile */
  .vdb-spec-group .vdb-auto-desc-subtitle {
    text-align: center;
    margin-bottom: 8px;
  }
  .vdb-spec-group .vdb-auto-desc-subtitle h1,
  .vdb-spec-group .vdb-auto-desc-subtitle h2,
  .vdb-spec-group .vdb-auto-desc-subtitle h3,
  .vdb-spec-group .vdb-auto-desc-subtitle h4,
  .vdb-spec-group .vdb-auto-desc-subtitle h5,
  .vdb-spec-group .vdb-auto-desc-subtitle h6 {
    justify-content: center;
  }
}

/* --- Full-width title heading above spec ------------------------------------ */
.vdb-auto-desc-title {
  display: block;
  width: 100%;
}
/* Style the extracted heading to match vdb-accordion__heading (expanded state) */
.vdb-auto-desc-title h1,
.vdb-auto-desc-title h2,
.vdb-auto-desc-title h3,
.vdb-auto-desc-title h4 {
  display: flex;
  align-items: center;
  padding: 0.875rem 0;
  margin: 0;
  font-size: 1em;
  font-weight: 600;
  letter-spacing: 0.01em;
  border-top: 1px solid rgba(0, 0, 0, 0.08);
  border-bottom: 1px solid rgba(0, 0, 0, 0.08);
  color: #1a1a1a;
  cursor: default;
  font-family: inherit;
}
/* If vdb-global-scripts already ran and added the class, hide the toggle chevron */
.vdb-auto-desc-title .vdb-accordion__heading {
  cursor: default;
}
.vdb-auto-desc-title .vdb-accordion__heading::after {
  display: none !important;
}

/* --- "In breve" subtitle heading between title and spec -------------------- */
.vdb-auto-desc-subtitle {
  display: block;
  width: 100%;
}
.vdb-auto-desc-subtitle h1,
.vdb-auto-desc-subtitle h2,
.vdb-auto-desc-subtitle h3,
.vdb-auto-desc-subtitle h4,
.vdb-auto-desc-subtitle h5,
.vdb-auto-desc-subtitle h6 {
  display: block;
  padding: 0.375rem 0;
  margin: 0;
  font-size: 0.9375em;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: #9a000b;
  cursor: default;
  font-family: inherit;
  border: none;
}
/* Neutralise any vdb-accordion__heading wrapping added by vdb-global-scripts */
.vdb-auto-desc-subtitle .vdb-accordion__heading,
.vdb-auto-desc-subtitle .vdb-accordion__heading * {
  font-size: inherit !important;
  font-weight: inherit !important;
  letter-spacing: inherit !important;
  text-transform: inherit !important;
  color: inherit !important;
  cursor: default !important;
  pointer-events: none !important;
}
.vdb-auto-desc-subtitle .vdb-accordion__heading::before,
.vdb-auto-desc-subtitle .vdb-accordion__heading::after { display: none !important; }

/* --- Auto-parsed spec + producer blocks: hard borders, no radius ----------- */
.vdb-auto-spec,
.vdb-auto-producer {
  border: 1px solid #2c2420 !important;
  border-radius: 0 !important;
}
.vdb-auto-spec .toggle__content,
.vdb-auto-producer .toggle__content {
  border-radius: 0 !important;
}
.vdb-auto-spec .toggle__title,
.vdb-auto-producer .toggle__title {
  border-radius: 0 !important;
}
/* SCHEDA TECNICA header: force white text on all nested elements */
.vdb-auto-spec .toggle__title,
.vdb-auto-spec .toggle__title * {
  color: #fff !important;
}
.vdb-auto-spec .toggle__title .toggle__icon svg *,
.vdb-auto-spec .toggle__title svg * {
  fill: #fff !important;
  stroke: #fff !important;
}
/* Strip heading tag styling from inside the producer accordion body */
.vdb-auto-producer .toggle__content h1,
.vdb-auto-producer .toggle__content h2,
.vdb-auto-producer .toggle__content h3,
.vdb-auto-producer .toggle__content h4 {
  font-size: inherit !important;
  font-weight: 600 !important;
  margin: 0 0 0.5em !important;
  font-family: inherit !important;
  letter-spacing: inherit !important;
}
