/* 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: #dcfce7; color: #047857; 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 {
    overflow-x: auto; overflow-y: hidden;
    scroll-snap-type: x mandatory;
    scroll-behavior: smooth;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    border-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.is-dragging,
.ecomsb-banners.is-dragging * {
    -webkit-user-select: none;
    user-select: none;
    cursor: grabbing;
}
.ecomsb-banners__track {
    display: flex;
    touch-action: 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: 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%; }
.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; }


/* PATCH 51.528 Corrected R4 — 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;
}
body .ecomsb-success-overlay .ecomsb-success-actions :is(a.ecomsb-success-btn, button.ecomsb-success-btn) {
    box-shadow: none !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; filter: none !important; transform: none !important;
}
body .ecomsb-success-overlay .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;
}
body .ecomsb-success-overlay .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;
}


/* PATCH 51.528 Corrected R5 — 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;
}
