/* Sorti de resources/views/site_app.blade.php le 10/11/2026 (gabarit allégé) : copie exacte du bloc <style>, servie par Apache
   et gardée par le navigateur. Le modifier ici, plus dans la vue. */
        .lazy-container {
            position: relative;
            display: inline-block;
            overflow: hidden;
            width: 100%;
        }

        .lazy-spinner {
            position: absolute;
            top: 50%;
            left: 50%;
            width: 16px;
            height: 16px;
            margin: -8px 0 0 -8px;
            border: 2px solid #f3f3f3;
            border-top: 2px solid var(--primary-color);
            border-radius: 50%;
            animation: spin 0.6s linear infinite;
            z-index: 2;
            pointer-events: none;
        }

        @keyframes spin {
            to {
                transform: rotate(360deg);
            }
        }

        .lazy-fallback-text {
            width: 100%;
            height: 100%;
            padding: 20px;
            box-sizing: border-box;
            color: #4b5563;
            /* gris foncé neutre */
            font-weight: 500;
            font-size: 14px;
            border: 1px solid #d1d5db;
            border-radius: 6px;

            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            text-align: center;

            position: absolute;
            /* Pour s'adapter au container parent */
            top: 0;
            left: 0;
            right: 0;
            bottom: 0;
        }

        .lazy-fallback-text .icon {
            font-size: 24px;
            color: #6b7280;
            /* gris moyen */
            margin-bottom: 6px;
        }

        .toast {
            position: fixed;
            bottom: 20px;
            /* right: 20px; */
            width: 518px;
            max-width: 100%;
            background-color: #323232;
            color: white;
            padding: 15px 20px;
            border-radius: 8px;
            box-shadow: 0 4px 6px rgba(0, 0, 0, 0.2);
            z-index: 1000;
            opacity: 0;
            transform: translateY(20px);
            transition: opacity 0.3s, transform 0.3s;
            display: flex;
            flex-direction: column;
            gap: 10px;
            border-top: 5px solid var(--primary-color);
        }

        .toast.show {
            opacity: 1;
            transform: translateY(0);
        }

        .toast-close {
            position: absolute;
            top: 10px;
            right: 10px;
            background: none;
            border: none;
            font-size: 18px;
            color: white;
            cursor: pointer;
        }

        .toast-close i {
            font-size: 20px;
        }

        .toast-close:hover i {
            color: var(--primary-color);
        }

        .toast-title {
            font-size: 18px;
            color: var(--primary-color);
            font-weight: bold;
            margin-bottom: 5px;
        }

        .toast-message {
            font-size: 14px;
            line-height: 1.5;
            color: #ffffff;
        }

        p.toast-message {
            margin-top: 10px !important;
        }

        .toast-dismiss {
            background-color: #444444;
            color: #aaaaaa;
            border: none;
            padding: 5px 10px;
            border-radius: 5px;
            cursor: pointer;
            font-size: 14px;
            align-self: flex-end;
        }

        .toast-dismiss:hover {
            background-color: #555555;
            color: white;
        }

        .offer-card {
            background-color: var(--primary-color);
            color: #fff;
            border: none;
            padding: 5px 10px;
            border-radius: 5px;
            cursor: pointer;
            font-size: 14px;
            align-self: flex-end;
        }

        .offer-card:hover {
            background-color: var(--primary-enhanced-color);
            color: white;
        }

        /* Conteneur principal */
        .reviews-carousel-wrapper {
            width: 100vw;
            /* 100% viewport width */
            margin-left: calc(-50vw + 50%);
            /* recentre en débordant du container parent */
            padding-left: 2rem;
            /* espace à gauche */
            padding-right: 2rem;
            /* espace à droite */
            background-color: var(--primary-color);
            box-sizing: border-box;
            overflow-x: auto;
            border-radius: 0px !important;
        }

        /* Ligne scrollable */
        #reviewsCarousel {
            display: flex;
            overflow-x: auto;
            scroll-behavior: smooth;
            gap: 1.5rem;
            padding: 1rem 2rem;
            will-change: scroll-position;
            contain: layout style paint;
        }

        #reviewsCarousel::-webkit-scrollbar {
            display: none;
        }

        #reviewsCarousel {
            -ms-overflow-style: none;
            scrollbar-width: none;
        }

        /* Carte d’avis */
        .review-card {
            background-color: #ffffff;
            border-radius: 16px;
            padding: 1.2rem;
            box-shadow: 0 10px 20px rgba(0, 0, 0, 0.07);
            min-width: 280px;
            max-width: 280px;
            color: var(--primary-text-color);
            transition: 0.5s;
            text-decoration: none;
            cursor: pointer;
            position: relative;
            will-change: transform;
            transform: translateZ(0);
            /* Force GPU acceleration */
        }

        .review-card:hover {
            transform: translateY(-6px);
            box-shadow: 0 12px 25px rgba(0, 0, 0, 0.15);
        }

        .review-card img {
            width: 48px;
            height: 48px;
            border-radius: 50%;
            margin-right: 0.75rem;
        }

        .review-header {
            display: flex;
            align-items: center;
            margin-bottom: 0.75rem;
            font-weight: bold;
            color: #004d66;
        }

        .review-stars {
            color: var(--tertiary-color, #f59e0b);
            margin-bottom: 0.5rem;
        }

        /* Flèches */
        .carousel-arrow {
            position: absolute;
            top: 50%;
            transform: translateY(-50%);
            background: var(--primary-color);
            border: none;
            box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
            border-radius: 50%;
            width: 40px;
            height: 40px;
            font-size: 18px;
            display: flex;
            align-items: center;
            justify-content: center;
            z-index: 5;
            cursor: pointer;
            color: #ffffff;
            transition: 0.2s;
        }

        .carousel-arrow:hover {
            background: #eeeeee;
            color: #000000;
        }

        .left-arrow {
            left: 10px;
        }

        .right-arrow {
            right: 10px;
        }

        .review-comment {
            font-style: italic;
            color: #444;
            font-size: 0.95rem;
            display: -webkit-box;
            -webkit-line-clamp: 3;
            -webkit-box-orient: vertical;
            overflow: hidden;
            text-overflow: ellipsis;
            position: relative;
            padding-right: 0.5rem;
            /* pour l'espace avant les guillemets */
        }

        .review-comment::after {
            position: absolute;
            right: 0.5rem;
            bottom: 0.3rem;
            color: #444;
            font-style: normal;
            background-color: white;
            /* optionnel selon ton fond */
        }

        .review-popup {
            position: absolute;
            z-index: 9999;
            width: 280px;
            max-width: 95vw;
            background: white;
            border-radius: 16px;
            box-shadow: 0 12px 25px rgba(0, 0, 0, 0.25);
            transition: opacity 0.2s ease;
            opacity: 0;
            display: none;
            pointer-events: none;
            padding: 1rem !important;
        }

        .review-popup.show {
            display: block;
            opacity: 1;
        }

        .review-popup .review-header img {
            width: 40px;
            height: 40px;
            object-fit: cover;
        }

        .review-popup .review-comment {
            display: block !important;
            -webkit-line-clamp: unset !important;
            white-space: normal !important;
            overflow: visible !important;
            text-overflow: unset !important;
            font-size: 0.95rem !important;
            color: #333 !important;
        }

        .review-popup .review-stars {
            margin-top: 0.25rem;
            margin-bottom: 0.5rem;
        }

        .center-cards {
            justify-content: center !important;
        }

        @media (max-width: 768px) {
            .reviews-carousel-wrapper {
                width: 100%;
                padding: 1rem 1rem;
            }

            #reviewsCarousel {
                padding: 1rem 0.25rem;
            }
        }

        /* Optimisations spécifiques pour Firefox */
        @-moz-document url-prefix() {
            #reviewsCarousel {
                scroll-behavior: auto !important;
                overflow-x: hidden;
                /* Puis réactivé par JS */
            }

            .review-card {
                transform: translateZ(0);
                /* Force l'accélération matérielle */
                backface-visibility: hidden;
            }
        }

        /* Optimisations spécifiques pour Chrome */
        @supports (-webkit-appearance: none) {
            #reviewsCarousel {
                scroll-behavior: auto !important;
                -webkit-overflow-scrolling: touch;
                transform: translateZ(0);
            }

            .review-card {
                backface-visibility: hidden;
                -webkit-backface-visibility: hidden;
                transform: translate3d(0, 0, 0);
                -webkit-transform: translate3d(0, 0, 0);
            }
        }

        /* Amélioration générale pour tous les navigateurs Webkit */
        @media screen and (-webkit-min-device-pixel-ratio: 0) {
            #reviewsCarousel {
                will-change: scroll-position;
                contain: layout style paint;
            }
        }
    
