/* Cascina Bonfiglio — Componenti overlay condivisi:
   sidebar carrello, popup vasetto, popup ordine, qty dropdown.
*/

/* ===================== SIDEBAR CARRELLO (Figma 47:740 / 48:744 / 48:832) ===================== */
.cb-cart-sidebar { position: fixed; inset: 0; z-index: 220; }
.cb-cart-sidebar[hidden] { display: none; }
.cb-cart-sidebar__backdrop {
    position: absolute; inset: 0;
    background: rgba(15, 18, 12, .55);
    animation: cb-fade-in .28s ease both;
}
.cb-cart-sidebar__panel {
    position: absolute;
    top: 0; right: 0; bottom: 0;
    width: min(556px, 100%);
    background: #fff;
    box-shadow: -12px 0 40px rgba(0,0,0,.25);
    display: flex;
    flex-direction: column;
    animation: cb-slide-in .35s cubic-bezier(0.22, 1, 0.36, 1) both;
    overflow: hidden;
}
/* Animazione di uscita: lo JS aggiunge .is-closing prima di hidden, ascolta animationend. */
.cb-cart-sidebar.is-closing .cb-cart-sidebar__panel {
    animation: cb-slide-out .28s cubic-bezier(0.55, 0, 0.68, 0.05) forwards;
}
.cb-cart-sidebar.is-closing .cb-cart-sidebar__backdrop {
    animation: cb-fade-out .28s ease forwards;
}
/* Keyframes locali — non dipendere da cofanetto.css che è enqueued solo nella
   pagina cofanetto: senza queste, su altre pagine la cart non aveva animazione di entry. */
@keyframes cb-slide-in {
    from { transform: translateX(100%); }
    to   { transform: translateX(0); }
}
@keyframes cb-fade-in {
    from { opacity: 0; }
    to   { opacity: 1; }
}
@keyframes cb-slide-out {
    from { transform: translateX(0); }
    to   { transform: translateX(100%); }
}
@keyframes cb-fade-out {
    from { opacity: 1; }
    to   { opacity: 0; }
}

/* HEADER verde con icona carrello + close X (Figma 47:741). */
.cb-cart-sidebar__head {
    display: flex; align-items: center; justify-content: space-between;
    padding: 18px 24px;
    background: var(--cb-green);
    color: #fff;
}
.cb-cart-sidebar__title {
    display: inline-flex; align-items: center; gap: 10px;
    margin: 0;
    font-family: var(--cb-font-heading);
    font-size: 20px; font-weight: 700;
    color: #fff;
}
.cb-cart-sidebar__close {
    width: 30px; height: 30px;
    border: 0;
    background: rgba(255,255,255,.18);
    color: #fff;
    border-radius: 50%;
    cursor: pointer;
    display: inline-flex; align-items: center; justify-content: center;
}
.cb-cart-sidebar__close:hover { background: rgba(255,255,255,.28); }

/* BODY cream — area scroll, flex column per spingere il gift box in fondo. */
.cb-cart-sidebar__body {
    flex: 1;
    background: #fff5e6;
    padding: 22px 24px 18px;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
}

/* Messaggio step + barra step circles (step 1/2). */
.cb-cart-sidebar__steps-msg {
    text-align: center;
    margin: 4px 0 18px;
}
.cb-cart-sidebar__steps-msg strong {
    display: block;
    font-family: var(--cb-font-heading);
    font-size: 16px; font-weight: 700;
    color: var(--cb-brown);
    margin-bottom: 4px;
}
.cb-cart-sidebar__steps-msg span { font-size: 13px; color: #6f7268; }

.cb-cart-sidebar__steps {
    list-style: none;
    margin: 0 0 22px;
    padding: 0;
    display: grid;
    grid-auto-flow: column;
    grid-auto-columns: 1fr;
    align-items: center;
    position: relative;
}
.cb-cart-sidebar__steps::before {
    content: "";
    position: absolute;
    left: 12%; right: 12%;
    top: 50%;
    height: 2px;
    background: #d8d2c8;
    z-index: 0;
}
.cb-cart-sidebar__steps li {
    display: flex; align-items: center; justify-content: center;
    position: relative;
    z-index: 1;
}
.cb-cart-sidebar__steps li span {
    width: 30px; height: 30px;
    border-radius: 50%;
    background: #fff;
    border: 2px solid #d8d2c8;
    display: inline-flex; align-items: center; justify-content: center;
    font-weight: 700; font-size: 13px;
    color: #9c9c92;
}
.cb-cart-sidebar__steps li.is-done span,
.cb-cart-sidebar__steps li.is-active span {
    background: var(--cb-green);
    border-color: var(--cb-green);
    color: #fff;
}
.cb-cart-sidebar__steps li.is-active span { background: #fff; color: var(--cb-green); }

/* Step 3: barra spedizione gratuita. */
.cb-cart-sidebar__shipbar { margin: 0 0 18px; }
.cb-cart-sidebar__shipbar p {
    margin: 0 0 8px;
    display: flex; align-items: center; gap: 10px;
    font-size: 14px; line-height: 1.35;
    color: var(--cb-brown);
}
.cb-cart-sidebar__shipbar p > span:not(.cb-cart-sidebar__truck) { display: inline; }
.cb-cart-sidebar__truck { flex-shrink: 0; display: inline-flex; }
.cb-cart-sidebar__shipbar strong { font-weight: 700; }
.cb-cart-sidebar__shipbar-bar {
    height: 6px;
    background: #efe9e2;
    border-radius: 999px;
    overflow: hidden;
}
.cb-cart-sidebar__shipbar-bar span {
    display: block; height: 100%;
    background: var(--cb-green);
    border-radius: 999px;
}

/* Lista prodotti — card bianche (Figma 47:768). */
.cb-cart-mini { list-style: none; margin: 0; padding: 0; display: grid; gap: 14px; }
.cb-cart-mini__row {
    display: grid;
    grid-template-columns: 88px 1fr auto;
    gap: 14px; align-items: center;
    background: #fff;
    border-radius: 14px;
    padding: 12px 14px;
    box-shadow: 0 2px 6px rgba(0,0,0,.04);
}
.cb-cart-mini__row img {
    width: 88px; aspect-ratio: 1;
    object-fit: cover;
    border-radius: 10px;
    background: #f3eddf;
}
.cb-cart-mini__info strong {
    display: block;
    font-family: var(--cb-font-heading);
    font-size: 15px; font-weight: 700;
    color: var(--cb-brown);
    line-height: 1.25;
}
.cb-cart-mini__weight {
    display: block;
    font-size: 12px;
    color: #6f7268;
    margin: 2px 0 6px;
}
.cb-cart-mini__price {
    display: block;
    font-family: var(--cb-font-heading);
    font-size: 16px; font-weight: 700;
    color: var(--cb-brown);
}

.cb-cart-mini__actions {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 8px;
}
.cb-cart-mini__remove {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border-radius: 6px;
    color: #6f7268;
    background: transparent;
    border: 0;
    cursor: pointer;
    transition: color 0.18s ease, background 0.18s ease;
    text-decoration: none;
}
.cb-cart-mini__remove svg { display: block; }
.cb-cart-mini__remove:hover,
.cb-cart-mini__remove:focus-visible { color: #b94a3a; background: rgba(185, 74, 58, 0.08); }

.cb-cart-mini__qty {
    display: inline-flex; align-items: center;
    border: 1.5px solid var(--cb-green);
    border-radius: 999px;
    padding: 2px 6px;
    background: #fff;
    min-width: 78px;
    justify-content: space-between;
}
.cb-cart-mini__qty-btn {
    background: transparent; border: 0;
    width: 22px; height: 22px;
    border-radius: 50%;
    color: var(--cb-green);
    font-weight: 700; font-size: 16px;
    cursor: pointer;
    display: inline-flex; align-items: center; justify-content: center;
    line-height: 1;
}
.cb-cart-mini__qty-btn:hover { background: rgba(168, 199, 128, .15); }
.cb-cart-mini__qty-btn[disabled] { opacity: .35; cursor: not-allowed; }
.cb-cart-mini__qty-num {
    min-width: 18px; text-align: center;
    font-weight: 700; color: var(--cb-brown);
    font-size: 14px;
}

.cb-cart-sidebar__empty {
    text-align: center;
    color: #6f7268;
    padding: 24px 0;
}

/* Threshold gift box (Figma 48:861) — bg #fae7cc, radius 20, padding 15, img 87x84.
   Sticky in basso al body se c'è abbastanza spazio, altrimenti sta sotto la lista
   e l'utente scrolla per raggiungerlo. */
.cb-cart-sidebar__gift {
    display: flex;
    align-items: center;
    gap: 10px;
    background: #fae7cc;
    border-radius: 20px;
    padding: 15px;
    margin-top: auto;
    flex-shrink: 0;
    margin-top: 15px;
}
.cb-cart-sidebar__gift-media {
    width: 87px;
    height: 84px;
    border-radius: 20px;
    overflow: hidden;
    flex-shrink: 0;
}
.cb-cart-sidebar__gift-media img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.cb-cart-sidebar__gift-text {
    flex: 1;
    font-family: var(--cb-font-body);
    font-size: 16px;
    font-weight: 400;
    line-height: normal;
    letter-spacing: 0.8952px;
    color: #000;
}
.cb-cart-sidebar__gift-text p { margin: 0; }
.cb-cart-sidebar__gift-text strong { font-weight: 700; }

/* FOOTER bianco — totali + CTA + payment icons. */
.cb-cart-sidebar__foot {
    background: #fff;
    border-top: 1px solid #efe9e2;
    padding: 18px 24px 16px;
}
.cb-cart-sidebar__totals { margin-bottom: 14px; }
.cb-cart-sidebar__line {
    display: flex; justify-content: space-between;
    font-size: 14px;
    color: var(--cb-brown);
    padding: 6px 0;
}
.cb-cart-sidebar__line--total {
    border-top: 1px solid #efe9e2;
    margin-top: 6px;
    padding-top: 12px;
    font-family: var(--cb-font-heading);
    font-size: 22px; font-weight: 800;
}

/* CTA peach (step <3) o green (step 3+). */
.cb-cart-sidebar__cta {
    display: flex; align-items: center; justify-content: center; gap: 10px;
    width: 100%;
    padding: 14px 22px;
    border: 0;
    border-radius: 999px;
    font-family: var(--cb-font-body);
    font-size: 15px; font-weight: 700;
    color: #fff;
    cursor: pointer;
    text-decoration: none;
    transition: background .2s ease;
}
.cb-cart-sidebar__cta--wait { background: #f0a85c; cursor: not-allowed; }
.cb-cart-sidebar__cta--wait:hover { background: #e6993f; }
.cb-cart-sidebar__cta--ok { background: var(--cb-green); }
.cb-cart-sidebar__cta--ok:hover { background: #6a8a4f; }

/* Payment icons row — riusa cb-footer__pay ma su sfondo bianco (footer sidebar). */
.cb-cart-sidebar__pay {
    margin-top: 14px;
    justify-content: center;
}
.cb-cart-sidebar__pay.cb-footer__pay .cb-footer__pay-pill {
    background: #FFF5E6;
    border: 1px solid #efe9e2;
}

/* ===================== POPUP VASETTO ===================== */
.cb-vasetto-popup { position: fixed; inset: 0; z-index: 230; }
.cb-vasetto-popup[hidden] { display: none; }
.cb-vasetto-popup__backdrop {
    position: absolute; inset: 0;
    background: rgba(15, 18, 12, .55);
    animation: cb-fade-in .25s ease;
}
.cb-vasetto-popup__panel {
    position: absolute;
    top: 50%; left: 50%;
    transform: translate(-50%, -50%);
    width: min(680px, calc(100% - 32px));
    background: #fff;
    border-radius: 16px;
    padding: 32px;
    display: grid;
    grid-template-columns: 220px 1fr;
    gap: 24px;
    box-shadow: 0 20px 60px rgba(0,0,0,.3);
    animation: cb-pop-in .25s ease;
}
.cb-vasetto-popup__close {
    position: absolute; top: 14px; right: 14px;
    width: 32px; height: 32px;
    border: 0; background: transparent;
    font-size: 24px; line-height: 1;
    color: #51544c; cursor: pointer;
}
.cb-vasetto-popup__media {
    aspect-ratio: 1;
    border-radius: 12px;
    overflow: hidden;
    background: #f5efe6;
}
.cb-vasetto-popup__media img { width: 100%; height: 100%; object-fit: cover; }
.cb-vasetto-popup__check {
    margin: 0 0 8px;
    color: var(--cb-green);
    font-weight: 700;
    font-size: 14px;
}
.cb-vasetto-popup__info h3 {
    margin: 0 0 6px;
    font-family: var(--cb-font-heading);
    font-size: 22px; font-weight: 800;
    color: var(--cb-brown);
}
.cb-vasetto-popup__sub {
    margin: 0 0 20px;
    color: #6f7268;
    font-size: 14px;
}
.cb-vasetto-popup__cta-row {
    display: flex; gap: 10px; flex-wrap: wrap;
}
.cb-vasetto-popup__continue {
    background: transparent;
    border: 1px solid var(--cb-green);
    color: var(--cb-green);
    padding: 12px 18px;
    border-radius: 999px;
    font-weight: 700; cursor: pointer;
}
.cb-vasetto-popup__checkout {
    background: var(--cb-green);
    color: #fff;
    padding: 12px 22px;
    border-radius: 999px;
    font-weight: 700;
    text-decoration: none;
    display: inline-flex; align-items: center;
}

/* ===================== POPUP ORDINE ===================== */
.cb-order-popup { position: fixed; inset: 0; z-index: 240; }
.cb-order-popup[hidden] { display: none; }
.cb-order-popup__backdrop {
    position: absolute; inset: 0;
    background: rgba(15, 18, 12, .55);
    animation: cb-fade-in .25s ease;
}
.cb-order-popup__panel {
    position: absolute;
    top: 50%; left: 50%;
    transform: translate(-50%, -50%);
    width: min(480px, calc(100% - 32px));
    background: #fff;
    border-radius: 18px;
    padding: 36px;
    text-align: center;
    box-shadow: 0 20px 60px rgba(0,0,0,.3);
    animation: cb-pop-in .25s ease;
}
.cb-order-popup__icon { color: var(--cb-green); display: block; margin: 0 auto 16px; }
.cb-order-popup__panel h3 {
    margin: 0 0 8px;
    font-family: var(--cb-font-heading);
    font-size: 26px; font-weight: 800;
    color: var(--cb-brown);
}
.cb-order-popup__panel p { margin: 0 0 6px; color: #51544c; font-size: 15px; }
.cb-order-popup__num { margin-top: 14px; }
.cb-order-popup__points {
    display: inline-block;
    margin: 18px 0;
    padding: 8px 16px;
    background: rgba(168, 199, 128, .2);
    color: var(--cb-green-dark, #6a8a4f);
    border-radius: 999px;
    font-weight: 700;
    font-size: 14px;
}
.cb-order-popup__cta {
    display: inline-block; margin-top: 8px;
    background: var(--cb-green); color: #fff;
    padding: 12px 28px;
    border-radius: 999px;
    font-weight: 700; text-decoration: none;
}

/* ===================== QTY DROPDOWN ===================== */
.cb-qty-dropdown {
    position: absolute;
    background: #fff;
    border-radius: 12px;
    box-shadow: 0 12px 32px rgba(0, 0, 0, .16);
    padding: 8px 0;
    z-index: 80;
    min-width: 280px;
}
.cb-qty-dropdown[hidden] { display: none; }
.cb-qty-dropdown button {
    display: flex;
    width: 100%;
    align-items: center;
    justify-content: space-between;
    padding: 10px 18px;
    background: transparent; border: 0;
    text-align: left;
    font: inherit;
    color: var(--cb-brown);
    cursor: pointer;
}
.cb-qty-dropdown button:hover { background: rgba(168, 199, 128, .14); color: var(--cb-green-dark); }
.cb-qty-dropdown button span {
    font-size: 12px;
    color: var(--cb-green);
    font-weight: 700;
}

/* ===================== ANIMATIONS ===================== */
@keyframes cb-pop-in {
    from { opacity: 0; transform: translate(-50%, -50%) scale(.95); }
    to { opacity: 1; transform: translate(-50%, -50%) scale(1); }
}

@media (max-width: 768px) {
    .cb-cart-sidebar__panel { width: 100%; }
    .cb-cart-sidebar__head { padding: 14px 16px; }
    .cb-cart-sidebar__title { font-size: 18px; }
    .cb-cart-sidebar__body { padding: 16px 16px 14px; }

    /* Banner spedizione: tight + flex bilanciato */
    .cb-cart-sidebar__shipbar p {
        align-items: flex-start;
        gap: 8px;
        font-size: 13px;
        line-height: 1.4;
        margin: 0 0 10px;
    }
    .cb-cart-sidebar__shipbar-text { display: inline; }

    /* Riga prodotto: media 76 + info + qty 80 */
    .cb-cart-mini__row {
        grid-template-columns: 76px 1fr auto;
        gap: 10px;
        padding: 10px 12px;
    }
    .cb-cart-mini__row img { width: 76px; }
    .cb-cart-mini__info strong { font-size: 14px; }
    .cb-cart-mini__weight { font-size: 11px; margin: 1px 0 4px; }
    .cb-cart-mini__price { font-size: 15px; }
    .cb-cart-mini__qty { min-width: 72px; padding: 2px 4px; }
    .cb-cart-mini__qty-btn { width: 20px; height: 20px; font-size: 14px; }

    /* Box gift: testo più piccolo, letter-spacing 0, line-height tight */
    .cb-cart-sidebar__gift { padding: 12px; gap: 12px; border-radius: 16px; margin-top: 20px; }
    .cb-cart-sidebar__gift-media { width: 76px; height: 76px; border-radius: 14px; }
    .cb-cart-sidebar__gift-text {
        font-size: 13px;
        line-height: 1.4;
        letter-spacing: 0;
    }

    /* Footer pay: tutti inline, compatti */
    .cb-cart-sidebar__pay { gap: 6px; flex-wrap: wrap; justify-content: center; }
    .cb-cart-sidebar__pay .cb-footer__pay-pill { padding: 4px 8px; }
    .cb-footer__secure-line { font-size: 10px; }

    .cb-vasetto-popup__panel { grid-template-columns: 1fr; max-width: 92vw; }
    .cb-order-popup__panel { padding: 28px 22px; max-width: 92vw; }
    .cb-order-popup__panel h3 { font-size: 22px; }
    .cb-qty-dropdown { min-width: 220px; }
}

@media (max-width: 480px) {
    .cb-cart-sidebar__steps-msg strong { font-size: 14px; }
    .cb-cart-sidebar__steps-msg span { font-size: 12px; }
    .cb-cart-mini__row { grid-template-columns: 64px 1fr auto; gap: 8px; padding: 8px 10px; }
    .cb-cart-mini__row img { width: 64px; }
    .cb-cart-sidebar__gift-media { width: 64px; height: 64px; }
    .cb-cart-sidebar__gift-text { font-size: 12px; }
}

/* ===================================================================
   STICKY BOTTOM BAR MOBILE (sostituisce popup vasetto sotto i 640px).
   Cliente: "quando aggiungo al carrello un prodotto, mi viene fuori un popup
   di conferma. Ti chiedo di eliminare il pop up e di sostituirlo con una barra
   fissa in basso. Barra gialla scritta 'aggiungi ancora 2 prodotti'. Barra verde
   scritta '3 prodotti aggiunti' e 'carrello'."
   =================================================================== */
.cb-cart-stickybar { display: none; }
.cb-cart-stickybar[hidden] { display: none !important; }
/* Nascondi sticky bar quando la sidebar carrello è aperta (cliente). */
body.cb-cart-open .cb-cart-stickybar { display: none !important; }
@media (max-width: 640px) {
    .cb-cart-stickybar {
        position: fixed;
        left: 0;
        right: 0;
        bottom: 0;
        z-index: 240;
        display: flex !important;
        align-items: center;
        justify-content: space-between;
        gap: 12px;
        padding: 14px 16px calc(14px + env(safe-area-inset-bottom));
        background: var(--cb-green, #A8C780);
        color: #fff;
        font-family: var(--cb-font-body);
        font-size: 14px;
        font-weight: 600;
        line-height: 1.2;
        box-shadow: 0 -6px 18px rgba(0,0,0,0.12);
        transition: background-color .25s ease, color .25s ease;
    }
    .cb-cart-stickybar[hidden] { display: none !important; }
    .cb-cart-stickybar[data-mode="ready"] {
        background: var(--cb-green, #A8C780);
        color: #fff;
    }
    .cb-cart-stickybar__text {
        flex: 1 1 auto;
        min-width: 0;
        color: #fff;
        font-size: 16px;
        font-weight: 500;
        text-align: center;
    }
    .cb-cart-stickybar__text strong { font-weight: 800; }
    .cb-cart-stickybar__divider {
        flex: 0 0 1px;
        align-self: stretch;
        background: rgba(255, 255, 255, 0.5);
        margin: 4px 0;
    }
    .cb-cart-stickybar__btn {
        display: inline-flex;
        align-items: center;
        gap: 8px;
        padding: 8px 0;
        background: transparent;
        color: #fff;
        font-family: inherit;
        font-weight: 600;
        text-decoration: none;
        font-size: 16px;
        white-space: nowrap;
        flex: 1 1 auto;
        justify-content: center;
    }
    .cb-cart-stickybar__btn svg { flex-shrink: 0; }
    .cb-cart-stickybar[data-mode="incomplete"] .cb-cart-stickybar__btn { display: inline-flex; }
    /* Nascondi il popup vasetto modale: lo sostituisce la sticky bar. */
    .cb-vasetto-popup { display: none !important; }
}

/* Header "Cofanetto regalo" nella sidebar carrello: raggruppa i 3 vasetti del cofanetto. */
.cb-cart-mini__cofanetto-head {
    list-style: none;
    margin: 14px 0 4px;
    padding: 10px 12px;
    background: rgba(168, 199, 128, .15);
    border-radius: 10px;
    display: flex;
    flex-direction: column;
    gap: 2px;
}
.cb-cart-mini__cofanetto-title { font-size: 14px; color: #2C1A0E; }
.cb-cart-mini__cofanetto-color { font-size: 12px; color: #5b8a3a; }
.cb-cart-mini__row--cofanetto { padding-left: 12px; border-left: 3px solid #A8C780; }
