/* Split out of single-product.css (night-loop item 634, #5428) — the sticky
   mobile CTA bar is `display: none` until JS adds `.is-visible` once the
   purchase section scrolls out of view, the same below-the-fold-until-
   interaction shape as product-card.css's related-products grid (item 629,
   #5401). Deferred via the same preload+onload swap (style_loader_tag on
   'tresser-single-product-sticky-cta') so it no longer counts toward
   single-product.css's always-render-blocking payload. */

/* ==========================================================================
   STICKY MOBILE CTA BAR (single product, ≤768px)
   Shows once the price/add-to-cart section scrolls out of view.
   Hidden by default; JS adds .is-visible when purchase div exits viewport upward.
   ========================================================================== */
.sticky-product-cta {
    display: none; /* hidden above 768px always; JS controls .is-visible below */
    overflow: hidden; /* prevent inner content from ever escaping bounds */
}

@media (max-width: 768px) {
    .sticky-product-cta {
        position: fixed;
        bottom: 0;
        left: 0;
        right: 0;
        width: 100%; /* explicit width so left/right constraint is always respected */
        z-index: 200;
        background: var(--color-white);
        border-top: 1px solid var(--color-gray-200);
        box-shadow: 0 -2px 12px rgba(0, 0, 0, 0.08);
        padding: 0.75rem var(--space-sm);
        flex-direction: row;
        align-items: center;
        gap: var(--space-sm);
        overflow: hidden; /* belt-and-suspenders: clip any overflow inside the bar */
        /* Slide-in from bottom */
        transform: translateY(100%);
        transition: transform 0.22s ease;
    }

    .sticky-product-cta.is-visible {
        display: flex;
        transform: translateY(0);
    }

    .sticky-cta-info {
        flex: 1;
        min-width: 0;
        display: flex;
        flex-direction: column;
        gap: 2px;
    }

    .sticky-cta-title {
        font-size: 0.8125rem;
        font-weight: 500;
        color: var(--color-black);
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }

    .sticky-cta-price {
        font-size: 0.9375rem;
        font-weight: 600;
        color: var(--color-black);
        letter-spacing: -0.01em;
        max-width: 100%;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

    .sticky-cta-price del {
        color: var(--color-gray-400);
        font-weight: 400;
        font-size: 0.8125rem;
        margin-right: 0.25rem;
    }

    .sticky-cta-price ins {
        text-decoration: none;
    }

    .sticky-cta-btn {
        flex-shrink: 0;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        padding: 0.75rem 1.25rem;
        min-height: 48px;
        background: var(--color-black);
        color: var(--color-white);
        font-family: var(--font);
        font-size: 0.875rem;
        font-weight: 500;
        border-radius: var(--radius-md);
        text-decoration: none;
        white-space: nowrap;
        transition: background var(--duration) var(--ease);
    }

    .sticky-cta-btn:hover {
        background: var(--color-gray-800);
    }

    .sticky-cta-btn:focus-visible {
        outline: 2px solid var(--color-white);
        outline-offset: 2px;
        box-shadow: 0 0 0 4px var(--color-black);
    }

    .sticky-cta-btn.is-loading {
        opacity: 0.7;
        pointer-events: none;
    }

    /* Inquiry variant (sold products) — secondary style to avoid implying purchasability */
    .sticky-cta-btn--inquiry {
        background: transparent;
        color: var(--color-gray-700);
        border: 1px solid var(--color-gray-300);
    }

    .sticky-cta-btn--inquiry:hover {
        background: var(--color-bg-alt);
        border-color: var(--color-gray-500);
        color: var(--color-black);
    }

    .sticky-cta-btn--inquiry:focus-visible {
        outline: 2px solid var(--color-black);
        outline-offset: 2px;
        box-shadow: none;
    }

    /* Secondary "Kontakt os" ghost button — sits beside primary CTA for in-stock products */
    .sticky-cta-btn--contact {
        background: transparent;
        color: var(--color-gray-700);
        border: 1px solid var(--color-gray-300);
        padding: 0.75rem 1rem;
        font-size: 0.8125rem;
    }

    .sticky-cta-btn--contact:hover {
        background: var(--color-bg-alt);
        border-color: var(--color-gray-500);
        color: var(--color-black);
    }

    .sticky-cta-btn--contact:focus-visible {
        outline: 2px solid var(--color-black);
        outline-offset: 2px;
        box-shadow: none;
    }

    /* Ghost "Se lignende ↓" button — shown on sold/reserved products to scroll to related items */
    .sticky-cta-btn--related {
        background: transparent;
        color: var(--color-gray-700);
        border: 1px solid var(--color-gray-300);
        padding: 0.75rem 1rem;
        font-size: 0.8125rem;
    }

    .sticky-cta-btn--related:hover {
        background: var(--color-bg-alt);
        border-color: var(--color-gray-500);
        color: var(--color-black);
    }

    .sticky-cta-btn--related:focus-visible {
        outline: 2px solid var(--color-black);
        outline-offset: 2px;
        box-shadow: none;
    }
}

@media (prefers-reduced-motion: reduce) {
    .sticky-product-cta {
        transition: none;
    }
}

/* On very narrow phones, hide secondary ghost buttons to keep the sticky bar from overflowing */
@media (max-width: 360px) {
    .sticky-cta-btn--contact,
    .sticky-cta-btn--related {
        display: none;
    }
}
