/* EcomSaleBooster — Frontend Core CSS (shared storefront primitives) */

/* Component-owned sizing only. This intentionally avoids any global element reset. */
.ecomsb-success-overlay,
.ecomsb-banners,
.ecomsb-restore-overlay {
    box-sizing: border-box;
}
.ecomsb-success-overlay *,
.ecomsb-success-overlay *::before,
.ecomsb-success-overlay *::after,
.ecomsb-banners *,
.ecomsb-banners *::before,
.ecomsb-banners *::after,
.ecomsb-restore-overlay *,
.ecomsb-restore-overlay *::before,
.ecomsb-restore-overlay *::after {
    box-sizing: inherit;
}

/* Success popup (shared by slider + quantity deals) */
.ecomsb-success-overlay { position: fixed; inset: 0; background: rgba(0,0,0,.5); display: flex; align-items: center; justify-content: center; z-index: 999999; animation: ecomsb-fade .2s ease; }
@keyframes ecomsb-fade { from { opacity: 0; } to { opacity: 1; } }
.ecomsb-success-box { background: #fff; border-radius: 16px; padding: 40px; max-width: 460px; width: 90%; text-align: center; }
.ecomsb-success-icon { margin: 0 auto 16px; }
.ecomsb-success-icon--emoji { font-size: 40px; line-height: 1; }
.ecomsb-success-icon--img img { width: 140px; height: auto; display: block; margin: 0 auto; }
.ecomsb-success-title { margin: 0 0 6px; color: var(--ecomsb-notice-title-color, #000); font-family: var(--ecomsb-notice-title-font, inherit); font-size: var(--ecomsb-notice-title-size, 28px); font-weight: var(--ecomsb-notice-title-weight, 900); text-align: var(--ecomsb-notice-title-align, center); }
.ecomsb-success-msg { margin: 0 0 18px; color: var(--ecomsb-notice-text-color, #000); font-family: var(--ecomsb-notice-text-font, inherit); font-size: var(--ecomsb-notice-text-size, 22px); font-weight: var(--ecomsb-notice-text-weight, 700); text-align: var(--ecomsb-notice-text-align, center); opacity: 1; }
.ecomsb-success-gift { margin: 0 0 16px; padding: 12px 14px; border-radius: 10px; background: #ecfdf5; color: #047857; font-weight: 600; font-size: .95em; }
.ecomsb-success-gift-row { display: block; }
.ecomsb-success-gift-row + .ecomsb-success-gift-row { margin-top: 6px; }
.ecomsb-success-gift-prefix { display: inline; }
.ecomsb-success-gift-item { display: inline; }
.ecomsb-success-actions { display: flex; flex-direction: column; gap: 10px; }
.ecomsb-success-btn { padding: 12px 24px; border-radius: 10px; font-weight: 600; font-size: 1em; line-height: 1.25; text-decoration: none; cursor: pointer; border: 0; display: block; width: 100%; min-width: 0; text-align: center; box-sizing: border-box; box-shadow: none; font-family: inherit; text-transform: none; letter-spacing: normal; transition: opacity .15s ease, filter .15s ease; }
.ecomsb-success-btn:hover { filter: brightness(1.05); opacity: .95; }
.ecomsb-success-overlay .ecomsb-success-actions .ecomsb-success-btn {
    -webkit-appearance: none; appearance: none;
    margin: 0; min-width: 0; box-sizing: border-box; text-shadow: none; text-transform: none;
}
.ecomsb-success-overlay .ecomsb-success-actions .ecomsb-success-btn--checkout { background: var(--ecomsb-popup-btn-bg, #111); color: var(--ecomsb-popup-btn-color, #fff); border: 0; }
.ecomsb-success-overlay .ecomsb-success-actions .ecomsb-success-btn--checkout:hover { background: var(--ecomsb-popup-btn-hover-bg, var(--ecomsb-popup-btn-bg, #111)); color: var(--ecomsb-popup-btn-color, #fff); }
.ecomsb-success-overlay .ecomsb-success-actions .ecomsb-success-btn--continue { background: var(--ecomsb-popup-sec-bg, #e2e8f0); color: var(--ecomsb-popup-sec-color, #334155); border: 1px solid rgba(15,23,42,.08); }
.ecomsb-success-overlay .ecomsb-success-actions .ecomsb-success-btn--continue:hover { background: var(--ecomsb-popup-sec-hover-bg, #b1ceef); color: var(--ecomsb-popup-sec-color, #334155); }

/* Free-gift badge on cart lines */
.ecomsb-cart-gift-badge { display: inline-block; background: var(--ecomsb-cart-gift-bg, #dcfce7); color: var(--ecomsb-cart-gift-color, #16a34a); font-size: 12px; font-weight: 600; padding: 2px 10px; border-radius: 4px; line-height: 1.5; max-width: 100%; word-break: break-word; }

/* Offer banners (shared by slider + quantity deals) */
.ecomsb-banners {
    position: relative;
    margin-bottom: 14px;
    -webkit-user-select: none;
    user-select: none;
}
/* Native horizontal scroll-snap carousel (no translateX). The viewport is the
 * scroll container; each slide snaps. We do NOT force direction:ltr anymore — the
 * browser lays slides + dots out per the page direction, so RTL is correct with
 * zero transforms. */
.ecomsb-banners__viewport {
    direction: ltr !important;
    overflow-x: auto; overflow-y: hidden;
    scroll-snap-type: x mandatory;
    scroll-behavior: smooth;
    -webkit-overflow-scrolling: touch;
    touch-action: pan-x pan-y;
    overscroll-behavior-inline: contain;
    scrollbar-width: none;
    border-radius: var(--ecomsb-banner-radius, 10px); width: 100%;
    -webkit-user-select: none;
    user-select: none;
    cursor: grab;
}
.ecomsb-banners__viewport::-webkit-scrollbar { display: none; height: 0; width: 0; }
.ecomsb-banners__viewport.is-grabbing {
    scroll-snap-type: none;
    scroll-behavior: auto;
    cursor: grabbing;
}
.ecomsb-banners__viewport.is-user-scrolling {
    scroll-snap-type: none !important;
    scroll-behavior: auto !important;
}
.ecomsb-banners.is-dragging,
.ecomsb-banners.is-dragging * {
    -webkit-user-select: none;
    user-select: none;
    cursor: grabbing;
}
.ecomsb-banners__track {
    direction: ltr !important;
    display: flex;
    touch-action: pan-x pan-y;
    cursor: grab;
    -webkit-user-select: none;
    user-select: none;
}
.ecomsb-banners--slider .ecomsb-banners__track { display: flex; align-items: flex-start; }
/* Slides are background-images (theme-lazy-load proof) and carry their own inline
   aspect-ratio, so each gets a real height without depending on a parent height. */
.ecomsb-banners__slide {
    background-size: cover; background-position: center; background-repeat: no-repeat;
    overflow: hidden; border-radius: var(--ecomsb-banner-radius, 10px);
    scroll-snap-align: start; scroll-snap-stop: always;
    -webkit-user-select: none;
    user-select: none;
    -webkit-user-drag: none;
}
.ecomsb-banners--slider .ecomsb-banners__slide { flex: 0 0 100%; width: 100%; min-width: 100%; max-width: 100%; box-sizing: border-box; }
.ecomsb-banners--single .ecomsb-banners__slide { width: 100%; }

/* Natural-ratio offer banners. Only banners carrying --natural opt into this
 * contract: each slide owns its attachment ratio and uses contain, so mixed-size
 * images remain fully visible instead of being cropped to the first image. */
html body .ecomsb-banners--natural .ecomsb-banners__viewport {
    transition: aspect-ratio .18s ease;
    background: transparent;
}
html body .ecomsb-banners--natural.ecomsb-banners--slider .ecomsb-banners__track {
    height: 100%;
    align-items: stretch;
}
html body .ecomsb-banners--natural.ecomsb-banners--slider .ecomsb-banners__slide {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 100%;
    background: transparent;
}
html body .ecomsb-banners--natural .ecomsb-banners__slide > img {
    display: block;
    width: 100%;
    height: 100%;
    max-width: 100%;
    max-height: 100%;
    margin: 0;
    object-fit: contain;
    object-position: center;
    border-radius: inherit;
    user-select: none;
    -webkit-user-drag: none;
}
html body .ecomsb-banners--natural.ecomsb-banners--single .ecomsb-banners__viewport,
html body .ecomsb-banners--natural.ecomsb-banners--single .ecomsb-banners__slide {
    overflow: visible;
}
html body .ecomsb-banners--natural.ecomsb-banners--single .ecomsb-banners__slide > img {
    height: auto;
}
.ecomsb-banners .ecomsb-banners__nav {
    position: absolute; top: 50%; transform: translateY(-50%);
    width: 34px; height: 34px; min-width: 0; min-height: 0; border-radius: 50%;
    border: none; background: rgba(255,255,255,.92); cursor: pointer;
    font-size: 0; line-height: 0; color: #333; z-index: 2;
    margin: 0; padding: 0; box-sizing: border-box;
    -webkit-appearance: none; appearance: none; font-family: inherit; text-transform: none; letter-spacing: normal; text-decoration: none; text-shadow: none;
    display: flex; align-items: center; justify-content: center;
    box-shadow: 0 1px 4px rgba(0,0,0,.18);
}
.ecomsb-banners .ecomsb-banners__nav .ecomsb-nav-ico { display: block; width: 13px; height: 13px; flex: 0 0 auto; stroke: #333; }
.ecomsb-banners__nav--prev { left: 8px; }
.ecomsb-banners__nav--next { right: 8px; }
.ecomsb-banners__dots {
    position: static; margin-top: 10px;
    display: flex; justify-content: center; align-items: center; gap: 6px; z-index: 2;
}
.ecomsb-banners .ecomsb-banners__dot {
    width: 8px; height: 4px; padding: 0; border: none; border-radius: 999px;
    background: var(--ecomsb-dot-inactive, #9ca3af); cursor: pointer; opacity: .6; box-sizing: border-box; min-width: 0; min-height: 0;
    -webkit-appearance: none; appearance: none; margin: 0; font-family: inherit; text-transform: none; letter-spacing: normal; box-shadow: none;
    transition: opacity .18s ease, width .18s ease, background .18s ease;
}
.ecomsb-banners .ecomsb-banners__dot.is-near { width: 14px; height: 4px; opacity: .85; }
.ecomsb-banners .ecomsb-banners__dot.is-active { background: var(--ecomsb-dot-color, #111); width: 26px; height: 4px; opacity: 1; }

/* Gift-bundle restore modal — self-contained (loaded globally via core.css so
 * it renders styled wherever a gift line can be removed: product page, cart,
 * checkout, or the mini-cart on any page). */
.ecomsb-restore-overlay {
    position: fixed; inset: 0; z-index: 999999; background: rgba(0,0,0,.5);
    display: flex; align-items: center; justify-content: center; padding: 16px;
    animation: ecomsb-fade .2s ease;
}
.ecomsb-restore-box {
    background: #fff; border-radius: 16px; max-width: 460px; width: 90%;
    padding: 40px; text-align: center; font-family: var(--ecomsb-font, inherit);
}
.ecomsb-restore-icon { font-size: 40px; line-height: 1; margin: 0 auto 16px; }
.ecomsb-restore-msg { margin: 0 0 18px; font-size: 1em; opacity: .8; line-height: 1.5; }
.ecomsb-restore-actions { display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; }
.ecomsb-restore-overlay .ecomsb-restore-yes, .ecomsb-restore-yes {
    background: var(--ecomsb-popup-btn-bg, #111); color: var(--ecomsb-popup-btn-color, #fff);
    border: 0; border-radius: 10px; padding: 12px 24px; font-family: var(--ecomsb-font, inherit); font-weight: 600; font-size: 1em; cursor: pointer;
    -webkit-appearance: none; appearance: none; box-sizing: border-box; line-height: 1.25; letter-spacing: normal; box-shadow: none; text-transform: none; text-shadow: none;
    transition: opacity .15s ease, filter .15s ease;
}
.ecomsb-restore-yes:hover { filter: brightness(1.05); opacity: .95; }
.ecomsb-restore-yes[disabled] { opacity: .6; cursor: default; }
.ecomsb-restore-overlay .ecomsb-restore-no, .ecomsb-restore-no {
    background: var(--ecomsb-popup-sec-bg, #f1f5f9); color: var(--ecomsb-popup-sec-color, #334155);
    border: 1px solid rgba(15,23,42,.08); border-radius: 10px; padding: 12px 24px; font-family: var(--ecomsb-font, inherit); font-weight: 600; font-size: 1em; cursor: pointer;
    -webkit-appearance: none; appearance: none; box-sizing: border-box; line-height: 1.25; letter-spacing: normal; box-shadow: none; text-transform: none; text-shadow: none;
    transition: background .15s ease, color .15s ease;
}
.ecomsb-restore-no:hover { background: var(--ecomsb-popup-sec-hover-bg, #e2e8f0); color: var(--ecomsb-popup-sec-color, #334155); }

/* Free-shipping method label (shown in place of the method name when a
   Free-Shipping deal row is in the cart). Green pill like the offer badges. */
.ecomsb-free-ship-label { display: inline-block; background: #dcfce7; color: #047857; font-size: 15px; font-weight: 700; padding: 4px 14px; border-radius: 6px; line-height: 1.5; }


/* shared success and notice popup critical contracts. */
body .ecomsb-success-overlay .ecomsb-success-box .ecomsb-success-title {
    color: var(--ecomsb-notice-title-color, #000) !important;
    font-family: var(--ecomsb-notice-title-font, var(--ecomsb-font, inherit)) !important;
    font-size: var(--ecomsb-notice-title-size, 28px) !important;
    font-weight: var(--ecomsb-notice-title-weight, 900) !important;
    line-height: 1.25 !important; letter-spacing: normal !important;
    text-align: var(--ecomsb-notice-title-align, center) !important; text-transform: none !important;
}
body .ecomsb-success-overlay .ecomsb-success-box .ecomsb-success-msg {
    color: var(--ecomsb-notice-text-color, #000) !important;
    font-family: var(--ecomsb-notice-text-font, var(--ecomsb-font, inherit)) !important;
    font-size: var(--ecomsb-notice-text-size, 22px) !important;
    font-weight: var(--ecomsb-notice-text-weight, 700) !important;
    line-height: 1.45 !important; letter-spacing: normal !important;
    text-align: var(--ecomsb-notice-text-align, center) !important; text-transform: none !important;
}
html body .ecomsb-success-overlay .ecomsb-success-box .ecomsb-success-actions :is(a.ecomsb-success-btn, button.ecomsb-success-btn) {
    -webkit-appearance: none !important; appearance: none !important;
    background-image: none !important; border-radius: 10px !important; box-shadow: none !important;
    min-height: 44px !important; overflow: hidden !important; padding: 12px 24px !important;
    opacity: 1 !important; font-weight: 700 !important; line-height: 1.25 !important;
    letter-spacing: normal !important; text-decoration: none !important; text-transform: none !important;
    text-shadow: none !important; filter: none !important; transform: none !important;
}
html body .ecomsb-success-overlay .ecomsb-success-box .ecomsb-success-actions :is(a.ecomsb-success-btn--checkout, button.ecomsb-success-btn--checkout) {
    border: 0 !important; background-color: var(--ecomsb-popup-btn-bg, #111) !important; background-image: none !important;
    color: var(--ecomsb-popup-btn-color, #fff) !important; -webkit-text-fill-color: var(--ecomsb-popup-btn-color, #fff) !important;
}
html body .ecomsb-success-overlay .ecomsb-success-box .ecomsb-success-actions :is(a.ecomsb-success-btn--checkout, button.ecomsb-success-btn--checkout):is(:hover, :focus-visible, :active) {
    background-color: var(--ecomsb-popup-btn-hover-bg, var(--ecomsb-popup-btn-bg, #111)) !important;
}


/* shared popup typography follows General Typography
   while notice-specific size and weight settings remain authoritative. */
body .ecomsb-success-overlay .ecomsb-success-box,
body .ecomsb-restore-overlay .ecomsb-restore-box {
    font-family: var(--ecomsb-font, inherit) !important;
    font-synthesis: none;
}
body .ecomsb-success-overlay .ecomsb-success-box :is(.ecomsb-success-msg, .ecomsb-success-gift) {
    font-family: var(--ecomsb-notice-text-font, var(--ecomsb-font, inherit)) !important;
    font-weight: var(--ecomsb-notice-text-weight, 400) !important;
    font-synthesis: none !important;
}
body .ecomsb-success-overlay .ecomsb-success-box .ecomsb-success-btn,
body .ecomsb-restore-overlay .ecomsb-restore-box :is(.ecomsb-restore-yes, .ecomsb-restore-no) {
    font-family: var(--ecomsb-font, inherit) !important;
    font-synthesis: none;
}

/* XStore can leave Sticky Kit inline positioning active after a desktop-to-mobile
   viewport change. This marker is set only when an injected offer is present in
   XStore's fixed product layout; the theme's desktop sticky behavior is untouched. */
@media (max-width: 991.98px) {
    body.single-product:is(.ecomsb-xstore-product-flow-mobile, .ecomsb-xstore-product-flow-candidate) :is(
        .product-fixed-images .images-wrapper,
        .product-fixed-content .product-information-inner,
        .fixed-product-block,
        .et_product-block[data-ecomsb-xstore-builder-sticky],
        .et_product-block.sticky-block,
        .et_product-block.pos-fixed
    ) {
        position: static !important;
        top: auto !important;
        bottom: auto !important;
        left: auto !important;
        right: auto !important;
        width: auto !important;
        max-width: none !important;
        min-height: auto !important;
        transform: none !important;
    }
    body.single-product:is(.ecomsb-xstore-product-flow-mobile, .ecomsb-xstore-product-flow-candidate) .sticky-background {
        display: none !important;
        height: 0 !important;
    }
}

/* Cart and checkout builder compatibility: injected sections remain normal-flow
   siblings and cannot inherit absolute/fixed positioning from a widget wrapper. */
html body.woocommerce-cart .ecomsb-inject-block--cart,
html body.woocommerce-checkout .ecomsb-inject-block--checkout {
    position: relative !important;
    inset: auto !important;
    float: none !important;
    clear: both !important;
    display: block !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    height: auto !important;
    transform: none !important;
    z-index: auto !important;
    box-sizing: border-box !important;
}
html body.woocommerce-cart .ecomsb-inject-block--cart > .ecomsb-slider,
html body.woocommerce-checkout .ecomsb-inject-block--checkout > .ecomsb-slider {
    position: relative !important;
    inset: auto !important;
    float: none !important;
    width: 100% !important;
    max-width: var(--ecomsb-slider-max-width, 100%) !important;
    min-width: 0 !important;
    margin-inline: auto !important;
    transform: none !important;
    box-sizing: border-box !important;
}
/* Restore-gift notice: theme-resistant shell for aggressive WooCommerce themes. */
html body .ecomsb-restore-overlay {
    position: fixed !important;
    inset: 0 !important;
    z-index: 2147483000 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    padding: 20px !important;
    background: rgba(15, 23, 42, .55) !important;
}
html body .ecomsb-restore-box {
    width: min(520px, calc(100vw - 32px)) !important;
    max-height: calc(100vh - 40px) !important;
    overflow: auto !important;
    background: #ffffff !important;
    color: #111827 !important;
    border: 1px solid #e5e7eb !important;
    border-radius: 18px !important;
    box-shadow: 0 24px 70px rgba(15, 23, 42, .25) !important;
    padding: 24px !important;
    text-align: center !important;
    font-family: inherit !important;
}
html body .ecomsb-restore-box :is(h1,h2,h3,p,span,strong) { color: inherit !important; }
html body .ecomsb-restore-actions {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 10px !important;
    justify-content: center !important;
    margin-top: 18px !important;
}
html body .ecomsb-restore-actions :is(button,a) {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    min-height: 42px !important;
    padding: 10px 18px !important;
    border-radius: 999px !important;
    border: 1px solid transparent !important;
    font: inherit !important;
    font-weight: 700 !important;
    line-height: 1.2 !important;
    text-decoration: none !important;
    cursor: pointer !important;
}
html body .ecomsb-restore-actions :is(.ecomsb-restore-confirm, .ecomsb-btn-primary) { background: #2563eb !important; color: #ffffff !important; }
html body .ecomsb-restore-actions :is(.ecomsb-restore-cancel, .ecomsb-btn-ghost) { background: #f8fafc !important; color: #111827 !important; border-color: #d1d5db !important; }



/* Restore-gift modal action contract: primary button first, secondary below.
   Kept as a final override so aggressive theme button radii/layout rules cannot win. */
html body .ecomsb-restore-overlay .ecomsb-restore-actions {
    display: flex !important;
    flex-direction: column !important;
    flex-wrap: nowrap !important;
    align-items: stretch !important;
    justify-content: center !important;
    gap: 10px !important;
    width: min(320px, 100%) !important;
    margin: 18px auto 0 !important;
}
html body .ecomsb-restore-overlay .ecomsb-restore-actions :is(.ecomsb-restore-yes, .ecomsb-restore-no) {
    width: 100% !important;
    min-width: 0 !important;
    min-height: 44px !important;
    padding: 12px 18px !important;
    border-radius: 10px !important;
    font-family: var(--ecomsb-font, inherit) !important;
    font-size: 15px !important;
    font-weight: 800 !important;
    line-height: 1.2 !important;
    letter-spacing: normal !important;
    text-align: center !important;
    text-decoration: none !important;
    text-transform: none !important;
    text-shadow: none !important;
    box-shadow: none !important;
    cursor: pointer !important;
    -webkit-appearance: none !important;
    appearance: none !important;
}
html body .ecomsb-restore-overlay .ecomsb-restore-actions .ecomsb-restore-yes {
    order: 1 !important;
    background: var(--ecomsb-popup-btn-bg, #111111) !important;
    background-image: none !important;
    color: var(--ecomsb-popup-btn-color, #ffffff) !important;
    -webkit-text-fill-color: var(--ecomsb-popup-btn-color, #ffffff) !important;
    border: 1px solid var(--ecomsb-popup-btn-bg, #111111) !important;
}
html body .ecomsb-restore-overlay .ecomsb-restore-actions .ecomsb-restore-yes:is(:hover, :focus-visible, :active) {
    background: var(--ecomsb-popup-btn-hover-bg, var(--ecomsb-popup-btn-bg, #111111)) !important;
    color: var(--ecomsb-popup-btn-color, #ffffff) !important;
    -webkit-text-fill-color: var(--ecomsb-popup-btn-color, #ffffff) !important;
}
html body .ecomsb-restore-overlay .ecomsb-restore-actions .ecomsb-restore-no {
    order: 2 !important;
    background: var(--ecomsb-popup-sec-bg, #eef2f7) !important;
    background-image: none !important;
    color: var(--ecomsb-popup-sec-color, #334155) !important;
    -webkit-text-fill-color: var(--ecomsb-popup-sec-color, #334155) !important;
    border: 1px solid rgba(148, 163, 184, .35) !important;
}
html body .ecomsb-restore-overlay .ecomsb-restore-actions .ecomsb-restore-no:is(:hover, :focus-visible, :active) {
    background: var(--ecomsb-popup-sec-hover-bg, #e2e8f0) !important;
    color: var(--ecomsb-popup-sec-color, #334155) !important;
    -webkit-text-fill-color: var(--ecomsb-popup-sec-color, #334155) !important;
}


/* R106: restore modal final button contract.
   Primary action remains a real full-width button; the dismiss action is a
   text-like secondary control so aggressive theme button styles cannot make it
   look like a second primary CTA. */
html body .ecomsb-restore-overlay .ecomsb-restore-actions {
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 6px !important;
    width: min(320px, 100%) !important;
    margin: 18px auto 0 !important;
}
html body .ecomsb-restore-overlay .ecomsb-restore-actions .ecomsb-restore-yes {
    width: 100% !important;
    min-height: 44px !important;
    border-radius: 10px !important;
}
html body .ecomsb-restore-overlay .ecomsb-restore-actions .ecomsb-restore-no {
    width: auto !important;
    min-width: 0 !important;
    min-height: 0 !important;
    padding: 3px 8px !important;
    margin: 0 auto !important;
    border: 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
    background-image: none !important;
    box-shadow: none !important;
    color: var(--ecomsb-popup-sec-color, #334155) !important;
    -webkit-text-fill-color: var(--ecomsb-popup-sec-color, #334155) !important;
    font-weight: 800 !important;
    line-height: 1.25 !important;
    text-decoration: none !important;
}
html body .ecomsb-restore-overlay .ecomsb-restore-actions .ecomsb-restore-no:is(:hover, :focus-visible, :active) {
    background: transparent !important;
    color: var(--ecomsb-popup-sec-color, #334155) !important;
    -webkit-text-fill-color: var(--ecomsb-popup-sec-color, #334155) !important;
    text-decoration: underline !important;
}

/* R110: restore secondary text needs a small breathing gap below the primary CTA,
   especially on Woodmart where zero-gap text sits too close to the button. */
html body .ecomsb-restore-overlay .ecomsb-restore-actions {
    gap: 5px !important;
}
/* Shared offer-banner arrows are component-owned round controls. */
html body .ecomsb-banners button.ecomsb-banners__nav,
html body .ecomsb-slider .ecomsb-banners button.ecomsb-banners__nav,
html body .ecomsb-qd .ecomsb-banners button.ecomsb-banners__nav {
    width: 34px !important;
    height: 34px !important;
    min-width: 34px !important;
    min-height: 34px !important;
    max-width: 34px !important;
    max-height: 34px !important;
    border-radius: 999px !important;
    clip-path: circle(50%) !important;
    padding: 0 !important;
    margin: 0 !important;
    border: 0 !important;
    background: rgba(255,255,255,.92) !important;
    background-image: none !important;
    line-height: 0 !important;
    font-size: 0 !important;
    text-indent: 0 !important;
    overflow: hidden !important;
    -webkit-appearance: none !important;
    appearance: none !important;
}
html body .ecomsb-banners button.ecomsb-banners__nav::before,
html body .ecomsb-banners button.ecomsb-banners__nav::after {
    content: none !important;
    display: none !important;
}

/* R121 — Offer Banner page spacing and mobile one-banner paging. The 10px
   gutter is part of the measured slide step on every viewport. On touch-sized
   screens native mandatory snap remains active throughout the gesture, rather
   than being disabled and corrected only after momentum stops. */
html body .ecomsb-banners--slider .ecomsb-banners__track {
    gap: 10px !important;
}
html body .ecomsb-banners--slider .ecomsb-banners__slide {
    scroll-snap-align: start !important;
    scroll-snap-stop: always !important;
}
@media (max-width: 600px) {
    html body .ecomsb-banners--slider .ecomsb-banners__viewport,
    html body .ecomsb-banners--slider .ecomsb-banners__viewport.is-user-scrolling:not(.is-grabbing) {
        scroll-snap-type: x mandatory !important;
    }
}


html body .ecomsb-success-overlay .ecomsb-success-actions {
    gap: 8px !important;
    align-items: center !important;
}

/* R122 — Continue Shopping is a true low-emphasis text action. Rendering it as
   an anchor avoids theme button hover/active transforms; the owned reset keeps
   its geometry fixed while the hover colour follows the primary CTA palette. */
html body .ecomsb-success-overlay .ecomsb-success-box .ecomsb-success-actions a.ecomsb-success-btn--continue {
    position: static !important;
    inset: auto !important;
    float: none !important;
    clear: none !important;
    transform: none !important;
    translate: none !important;
    scale: 1 !important;
    rotate: 0deg !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    align-self: center !important;
    width: auto !important;
    min-width: 0 !important;
    max-width: 100% !important;
    min-height: 0 !important;
    height: auto !important;
    margin: 0 !important;
    padding: 4px 8px !important;
    border: 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
    background-image: none !important;
    box-shadow: none !important;
    color: var(--ecomsb-popup-sec-color, #334155) !important;
    -webkit-text-fill-color: var(--ecomsb-popup-sec-color, #334155) !important;
    font-family: var(--ecomsb-font, inherit) !important;
    font-size: 15px !important;
    font-weight: 800 !important;
    line-height: 1.35 !important;
    text-align: center !important;
    text-decoration: underline !important;
    text-underline-offset: 3px !important;
    text-transform: none !important;
    text-shadow: none !important;
    vertical-align: baseline !important;
    opacity: .92 !important;
    filter: none !important;
    cursor: pointer !important;
    transition: color .15s ease, opacity .15s ease !important;
    -webkit-appearance: none !important;
    appearance: none !important;
}
html body .ecomsb-success-overlay .ecomsb-success-box .ecomsb-success-actions a.ecomsb-success-btn--continue:is(:hover, :focus-visible, :active) {
    position: static !important;
    inset: auto !important;
    transform: none !important;
    translate: none !important;
    scale: 1 !important;
    rotate: 0deg !important;
    margin: 0 !important;
    padding: 4px 8px !important;
    border: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
    color: var(--ecomsb-popup-btn-hover-bg, var(--ecomsb-popup-btn-bg, #111)) !important;
    -webkit-text-fill-color: var(--ecomsb-popup-btn-hover-bg, var(--ecomsb-popup-btn-bg, #111)) !important;
    text-decoration: underline !important;
    opacity: 1 !important;
    filter: none !important;
}
html body .ecomsb-success-overlay .ecomsb-success-box .ecomsb-success-actions a.ecomsb-success-btn--continue::before,
html body .ecomsb-success-overlay .ecomsb-success-box .ecomsb-success-actions a.ecomsb-success-btn--continue::after {
    content: none !important;
    display: none !important;
}
