:root {
    --brand: #0b5f73;
    --accent: #16a34a;
    --muted: #6b7280;
    --bg: #f6fbfc
}

* {
    box-sizing: border-box
}

body {
    font-family: Inter, system-ui, Helvetica, Arial;
    margin: 0;
    background: var(--bg);
    color: var(--brand);
    -webkit-font-smoothing: antialiased
}

.container {
    max-width: 1200px;
    margin: 0 auto;
    padding: 20px
}

.header {
    background: linear-gradient(90deg, rgba(11, 95, 115, 0.06), rgba(6, 40, 61, 0.02));
    border-bottom: 1px solid rgba(6, 40, 61, 0.06)
}

.top {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 14px 0
}

.logo {
    height: 56px
}

.nav a {
    margin-left: 12px;
    text-decoration: none;
    color: var(--brand);
    font-weight: 600
}

.hero {
    display: grid;
    grid-template-columns: 1fr 420px;
    gap: 28px;
    align-items: center;
    padding: 48px 0;
    background-image: url("/public/assets/hero_palais.jpg");
    /* nouvelle image palais */
    background-size: cover;
    background-position: center;
    border-radius: 12px;
    box-shadow: 0 18px 60px rgba(6, 40, 61, 0.06);
    overflow: hidden
}

.hero-card {
    background: rgba(255, 255, 255, 0.85);
    padding: 26px;
    border-radius: 12px
}

.h-title {
    font-size: 30px;
    margin: 0 0 8px
}

.h-desc {
    color: var(--muted);
    margin: 0 0 12px
}

.cta {
    background: var(--brand);
    color: #fff;
    padding: 10px 14px;
    border-radius: 10px;
    text-decoration: none;
    font-weight: 800;
    display: inline-block
}

.services-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 18px;
    margin-top: 22px
}

.card {
    background: #fff;
    border-radius: 12px;
    padding: 0;
    overflow: hidden;
    box-shadow: 0 12px 30px rgba(6, 40, 61, 0.06);
    transition: transform .38s ease, box-shadow .38s ease
}

.card img {
    width: 100%;
    height: 200px;
    object-fit: cover;
    display: block
}

.card-img {
    width: 100%;
    display: block;
    border-radius: 18px 18px 0 0;
    /* même style que les autres cartes */
    object-fit: cover;
    max-height: 220px;
    /* pour garder une hauteur propre */
}


.card-body {
    padding: 14px
}

.card h4 {
    margin: 0 0 8px;
    color: var(--brand);
    font-size: 18px
}

.card p {
    margin: 0;
    color: var(--muted);
    font-size: 14px
}

.card:hover {
    transform: translateY(-8px);
    box-shadow: 0 30px 70px rgba(6, 40, 61, 0.12)
}

.footer {
    padding: 28px 0;
    margin-top: 28px;
    background: linear-gradient(180deg, rgba(6, 40, 61, 0.02), transparent);
    border-top: 1px solid rgba(6, 40, 61, 0.04)
}

.badge-wh {
    position: fixed;
    right: 18px;
    bottom: 18px;
    background: #25D366;
    color: #fff;
    padding: 12px;
    border-radius: 50px;
    box-shadow: 0 12px 30px rgba(0, 0, 0, 0.15);
    z-index: 999;
    text-decoration: none;
    font-weight: 800
}

@media(max-width:880px) {
    .hero {
        grid-template-columns: 1fr;
        padding: 20px
    }

    .hero-card {
        order: 2
    }

    .hero img {
        width: 100%;
        height: auto
    }
}

/* === Packs villas === */

#villas-packs .pricing-grid {
    display: flex;
    flex-wrap: wrap;
    gap: 24px;
}

#villas-packs .pricing-card {
    flex: 1 1 260px;
    background: linear-gradient(145deg, #ffffff, #f3fbff);
    border-radius: 18px;
    padding: 20px 20px 24px;
    box-shadow: 0 18px 40px rgba(6, 40, 61, 0.08);
    border: 1px solid rgba(6, 40, 61, 0.06);
    transition: transform 0.25s ease, box-shadow 0.25s ease, background 0.25s ease;
    position: relative;
    overflow: hidden;
}

#villas-packs .pricing-card h3 {
    margin: 0 0 8px;
}

#villas-packs .pricing-card .price {
    font-weight: 600;
    color: var(--brand);
    margin-bottom: 12px;
}

#villas-packs .pricing-list {
    list-style: none;
    padding: 0;
    margin: 0 0 16px;
    color: var(--muted);
    font-size: 14px;
}

#villas-packs .pricing-list li {
    margin-bottom: 6px;
}

/* Bouton */
#villas-packs .btn-pack {
    width: 100%;
    border: none;
    border-radius: 999px;
    padding: 10px 16px;
    background: var(--brand);
    color: #fff;
    font-weight: 600;
    cursor: pointer;
    transition: transform 0.2s ease, box-shadow 0.2s ease, background 0.2s ease;
}

#villas-packs .btn-pack:hover {
    transform: translateY(-1px);
    box-shadow: 0 8px 20px rgba(22, 101, 150, 0.4);
}

/* Variantes de couleur */
#villas-packs .pack-basic {
    background: linear-gradient(145deg, #ffffff, #e8f7ff);
}

#villas-packs .pack-grand {
    background: linear-gradient(145deg, #f5fbff, #e0f4ff);
}

#villas-packs .pack-jardin {
    background: linear-gradient(145deg, #f7fff5, #e9ffe0);
}

/* Animation hover sur les cartes */
#villas-packs .pricing-card:hover {
    transform: translateY(-6px) scale(1.01);
    box-shadow: 0 22px 50px rgba(6, 40, 61, 0.15);
}

/* Badge "Le plus demandé" */
#villas-packs .featured {
    border: 2px solid rgba(22, 163, 74, 0.6);
}

#villas-packs .tag-popular {
    position: absolute;
    top: 12px;
    right: 16px;
    background: #16a34a;
    color: #fff;
    font-size: 11px;
    font-weight: 600;
    padding: 4px 10px;
    border-radius: 999px;
    animation: pulse-badge 1.6s ease-in-out infinite;
}

@keyframes pulse-badge {
    0% {
        transform: scale(1);
        box-shadow: 0 0 0 0 rgba(22, 163, 74, 0.5);
    }

    70% {
        transform: scale(1.05);
        box-shadow: 0 0 0 10px rgba(22, 163, 74, 0);
    }

    100% {
        transform: scale(1);
        box-shadow: 0 0 0 0 rgba(22, 163, 74, 0);
    }
}

#villas-packs .pack-prestige {
    background: linear-gradient(145deg, #fdf5ff, #f3e7ff);
    border: 1px solid rgba(147, 51, 234, 0.25);
}

/* HERO villas */
.hero-villas {
    display: grid;
    grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr);
    gap: 32px;
    align-items: center;
    margin-top: 32px;
}

.hero-villas-content h1 {
    font-size: 32px;
    margin-bottom: 12px;
}

.hero-villas-content p {
    color: var(--muted);
    margin-bottom: 18px;
}

.hero-villas-image img {
    width: 100%;
    border-radius: 20px;
    box-shadow: 0 24px 50px rgba(6, 40, 61, 0.25);
    object-fit: cover;
}

/* Boutons */
.btn-primary {
    border: none;
    border-radius: 999px;
    padding: 10px 20px;
    background: var(--brand);
    color: #fff;
    font-weight: 600;
    cursor: pointer;
    margin-right: 8px;
    transition: transform .2s, box-shadow .2s, background .2s;
}

.btn-primary:hover {
    transform: translateY(-1px);
    box-shadow: 0 10px 24px rgba(6, 40, 61, 0.35);
}

.btn-ghost {
    border-radius: 999px;
    padding: 10px 20px;
    border: 1px solid rgba(6, 40, 61, 0.2);
    background: #fff;
    cursor: pointer;
}

/* Packs villas */
#villas-packs .pricing-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 24px;
    margin-top: 24px;
}

#villas-packs .pricing-card {
    background: linear-gradient(145deg, #ffffff, #f3fbff);
    border-radius: 18px;
    padding: 20px 20px 24px;
    box-shadow: 0 18px 40px rgba(6, 40, 61, 0.08);
    border: 1px solid rgba(6, 40, 61, 0.06);
    transition: transform .25s, box-shadow .25s, background .25s;
    position: relative;
    overflow: hidden;
}

#villas-packs .pricing-card:hover {
    transform: translateY(-6px) scale(1.01);
    box-shadow: 0 22px 50px rgba(6, 40, 61, 0.15);
}

#villas-packs .price {
    font-weight: 600;
    color: var(--brand);
    margin-bottom: 12px;
}

#villas-packs .pricing-list {
    list-style: none;
    padding: 0;
    margin: 0 0 16px;
    color: var(--muted);
    font-size: 14px;
}

#villas-packs .pricing-list li {
    margin-bottom: 6px;
}

.btn-pack {
    width: 100%;
    border: none;
    border-radius: 999px;
    padding: 10px 16px;
    background: var(--brand);
    color: #fff;
    font-weight: 600;
    cursor: pointer;
}

/* Variantes couleurs */
.pack-basic {
    background: linear-gradient(145deg, #ffffff, #e8f7ff);
}

.pack-grand {
    background: linear-gradient(145deg, #f5fbff, #e0f4ff);
}

.pack-jardin {
    background: linear-gradient(145deg, #f7fff5, #e9ffe0);
}

.pack-prestige {
    background: linear-gradient(145deg, #fdf5ff, #f3e7ff);
    border: 1px solid rgba(147, 51, 234, 0.25);
}

/* Badge populaire */
.featured {
    border: 2px solid rgba(22, 163, 74, 0.6);
}

.tag-popular {
    position: absolute;
    top: 12px;
    right: 16px;
    background: #16a34a;
    color: #fff;
    font-size: 11px;
    font-weight: 600;
    padding: 4px 10px;
    border-radius: 999px;
    animation: pulse-badge 1.6s ease-in-out infinite;
}

@keyframes pulse-badge {
    0% {
        transform: scale(1);
        box-shadow: 0 0 0 0 rgba(22, 163, 74, .5);
    }

    70% {
        transform: scale(1.05);
        box-shadow: 0 0 0 10px rgba(22, 163, 74, 0);
    }

    100% {
        transform: scale(1);
        box-shadow: 0 0 0 0 rgba(22, 163, 74, 0);
    }
}

/* Bloc devis + calculateur */
.devis-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 24px;
    margin-top: 16px;
}

.devis-box {
    background: #fff;
    border-radius: 18px;
    padding: 20px;
    box-shadow: 0 12px 30px rgba(6, 40, 61, 0.06);
}

.devis-box label {
    display: block;
    font-size: 14px;
    margin-top: 10px;
    margin-bottom: 4px;
}

.devis-box input,
.devis-box select,
.devis-box textarea {
    width: 100%;
    border-radius: 10px;
    border: 1px solid rgba(148, 163, 184, 0.6);
    padding: 8px 10px;
    font-size: 14px;
}

.estimate-result {
    margin-top: 10px;
    font-weight: 600;
    color: var(--brand);
}

.btn-whatsapp {
    width: 100%;
    margin-top: 14px;
    border-radius: 999px;
    border: none;
    padding: 10px 16px;
    background: #25D366;
    color: #fff;
    font-weight: 600;
    cursor: pointer;
}

/* Animation apparition au scroll */
.reveal {
    opacity: 0;
    transform: translateY(18px);
    transition: opacity .6s ease, transform .6s ease;
}

.reveal.visible {
    opacity: 1;
    transform: translateY(0);
}

.card-link {
    text-decoration: none;
    color: inherit;
    display: block;
    transition: transform 0.25s ease, box-shadow 0.25s ease;
}

.card-link:hover {
    transform: translateY(-6px);
    box-shadow: 0 20px 45px rgba(6, 40, 61, 0.15);
}

/* ===== HERO avec piscine + photo ronde ===== */
.hero {
    position: relative;
    display: grid;
    grid-template-columns: minmax(0, 1.3fr) minmax(0, 0.7fr);
    gap: 24px;
    align-items: center;
    padding: 32px 24px;
    border-radius: 20px;
    background: url('/public/assets/hero_bg.jpg') center/cover no-repeat;
    overflow: hidden;
}

/* On garde ta carte blanche par-dessus la piscine */
.hero-card {
    background: rgba(255, 255, 255, 0.9);
    padding: 20px 22px;
    border-radius: 18px;
    box-shadow: 0 18px 40px rgba(6, 40, 61, 0.18);
}

/* Zone de la photo à droite */
.hero-photo-wrapper {
    display: flex;
    justify-content: flex-end;
    align-items: flex-end;
    padding: 0 10px 10px;
}

/* Photo ronde plus petite */
.hero-photo {
    width: 160px;
    /* tu peux mettre 140, 180… selon ce que tu veux */
    height: 160px;
    border-radius: 50%;
    object-fit: cover;
    border: 4px solid #ffffff;
    box-shadow: 0 14px 30px rgba(0, 0, 0, 0.35);
}

/* Optionnel : petit effet hover sur la photo */
.hero-photo-wrapper:hover .hero-photo {
    transform: translateY(-3px);
    transition: transform 0.2s ease;
}

/* ===== HERO PISCINE AVEC TEXTE EN HAUT ===== */

.hero {
    position: relative;
    width: 100%;
    border-radius: 22px;
    background: url("/public/assets/hero_bg.jpg") center/cover no-repeat;
    /* augmente la hauteur pour bien voir la piscine */
    height: 420px;
    overflow: hidden;
}

/* TEXTE EN HAUT */
.hero-top {
    position: absolute;
    top: 20px;
    /* ← Le texte remonte */
    left: 20px;
    right: 20px;

    background: rgba(255, 255, 255, 0.85);
    padding: 22px;
    border-radius: 16px;
    box-shadow: 0 15px 35px rgba(0, 0, 0, 0.18);
}

/* PHOTO RONDE EN BAS À DROITE */
.hero-photo-wrapper {
    position: absolute;
    right: 20px;
    bottom: 20px;
}

.hero-photo {
    width: 150px;
    height: 150px;
    border-radius: 50%;
    object-fit: cover;
    border: 4px solid #fff;
    box-shadow: 0 10px 25px rgba(0, 0, 0, 0.35);
}

/* === Formules Appartements (plans tarifaires) === */

#abos-appart {
    margin-top: 32px;
}

#abos-appart .section-intro {
    color: var(--muted);
    margin: 6px 0 20px;
}

.app-pricing-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 18px;
}

.app-plan {
    background: #ffffff;
    border-radius: 18px;
    padding: 18px 18px 20px;
    box-shadow: 0 12px 28px rgba(6, 40, 61, 0.08);
    border: 1px solid rgba(148, 163, 184, 0.35);
    position: relative;
    overflow: hidden;
    transition: transform .2s ease, box-shadow .2s ease;
}

.app-plan:hover {
    transform: translateY(-4px);
    box-shadow: 0 18px 40px rgba(6, 40, 61, 0.16);
}

.app-title {
    margin: 0 0 2px;
}

.app-sub {
    margin: 0 0 10px;
    font-size: 13px;
    color: var(--muted);
}

.app-price {
    margin: 0 0 12px;
}

.app-price-main {
    font-size: 20px;
    font-weight: 700;
    color: var(--brand);
}

.app-price-sub {
    display: block;
    font-size: 13px;
    color: var(--muted);
}

.app-features {
    list-style: none;
    padding: 0;
    margin: 0;
    font-size: 13px;
    color: var(--muted);
}

.app-features li {
    margin-bottom: 6px;
}

/* Plan Business mis en avant */
.app-plan-featured {
    border-color: rgba(22, 163, 74, 0.6);
    box-shadow: 0 18px 45px rgba(22, 163, 74, 0.18);
}

.app-ribbon {
    position: absolute;
    top: 10px;
    right: -40px;
    background: #16a34a;
    color: #fff;
    font-size: 11px;
    font-weight: 600;
    padding: 4px 40px;
    transform: rotate(15deg);
}

/* === Tarifs Bureaux === */

#abos-bureaux {
    margin-top: 40px;
}

#abos-bureaux .section-intro {
    color: var(--muted);
    margin: 6px 0 22px;
}

.bureau-pricing-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 18px;
}

.bureau-plan {
    background: #ffffff;
    border-radius: 18px;
    padding: 18px 18px 20px;
    box-shadow: 0 12px 28px rgba(6, 40, 61, 0.08);
    border: 1px solid rgba(148, 163, 184, 0.35);
    position: relative;
    transition: transform .2s ease, box-shadow .2s ease;
}

.bureau-plan:hover {
    transform: translateY(-4px);
    box-shadow: 0 18px 40px rgba(6, 40, 61, 0.16);
}

.bureau-title {
    margin: 0 0 2px;
}

.bureau-sub {
    margin: 0 0 10px;
    font-size: 13px;
    color: var(--muted);
}

.bureau-price {
    margin: 0 0 12px;
}

.bureau-price-main {
    font-size: 22px;
    font-weight: 700;
    color: var(--brand);
}

.bureau-price-sub {
    display: block;
    font-size: 13px;
    color: var(--muted);
}

.bureau-features {
    list-style: none;
    padding: 0;
    margin: 0;
    font-size: 13px;
    color: var(--muted);
}

.bureau-features li {
    margin-bottom: 6px;
}

/* Mise en avant du plan Business */
.bureau-plan-featured {
    border-color: rgba(22, 163, 74, 0.6);
    box-shadow: 0 18px 45px rgba(22, 163, 74, 0.18);
}

.bureau-ribbon {
    position: a <section class="section" id="finchantier-tarifs"><h2>Tarifs fin de chantier</h2><p class="section-intro">Tarifs indicatifs HT — varient selon surface,
    état du chantier et délais souhaités. </p><div class="chantier-pricing-grid">< !-- BASIC --><article class="chantier-plan"><h4 class="chantier-title">Basic</h4><p class="chantier-sub">Remise en état légère</p><p class="chantier-price"><span class="chantier-price-main">35 DH</span><span class="chantier-price-sub">/ m²</span></p><ul class="chantier-features"><li>Dépoussiérage général</li><li>Nettoyage sols & surfaces</li><li>Vitres intérieures accessibles</li></ul></article>< !-- STANDARD (highlight) --><article class="chantier-plan chantier-plan-featured"><div class="chantier-ribbon">Le plus demandé</div><h4 class="chantier-title">Standard</h4><p class="chantier-sub">Nettoyage fin de chantier complet</p><p class="chantier-price"><span class="chantier-price-main">45 DH</span><span class="chantier-price-sub">/ m²</span></p><ul class="chantier-features"><li>Dépoussiérage complet</li><li>Lavage sols toutes surfaces</li><li>Vitres intérieures & extérieures</li><li>Dégraissage cuisine & SDB</li></ul></article>< !-- PREMIUM --><article class="chantier-plan"><h4 class="chantier-title">Premium</h4><p class="chantier-sub">Remise en état professionnelle</p><p class="chantier-price"><span class="chantier-price-main">60 DH</span><span class="chantier-price-sub">/ m²</span></p><ul class="chantier-features"><li>Tout le pack Standard</li><li>Monobrosse & aspirateur industriel</li><li>Traitement anti-traces carrelage</li><li>Façades accessibles</li></ul></article></div></section>
    /* === Tarifs Fin de chantier === */

    /* === Tarifs Fin de chantier === */

    #finchantier-tarifs .section-intro {
        color: var(--muted);
        margin: 6px 0 22px;
    }

    .chantier-pricing-grid {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
        gap: 18px;
    }

    .chantier-plan {
        background: #ffffff;
        border-radius: 18px;
        padding: 18px 20px 20px;
        box-shadow: 0 12px 28px rgba(6, 40, 61, 0.08);
        border: 1px solid rgba(148, 163, 184, 0.35);
        position: relative;
        transition: transform .2s ease, box-shadow .2s ease;
    }

    .chantier-plan:hover {
        transform: translateY(-4px);
        box-shadow: 0 18px 45px rgba(6, 40, 61, 0.16);
    }

    .chantier-title {
        margin: 0 0 2px;
    }

    .chantier-sub {
        margin: 0 0 10px;
        font-size: 13px;
        color: var(--muted);
    }

    .chantier-price-main {
        font-size: 22px;
        font-weight: 700;
        color: var(--brand);
    }

    .chantier-price-sub {
        font-size: 13px;
        color: var(--muted);
    }

    .chantier-features {
        list-style: none;
        padding: 0;
        margin: 12px 0 0;
        font-size: 13px;
        color: var(--muted);
    }

    .chantier-features li {
        margin-bottom: 6px;
    }

    /* plan Standard mis en avant */
    .chantier-plan-featured {
        border-color: rgba(22, 163, 74, 0.6);
        box-shadow: 0 18px 45px rgba(22, 163, 74, 0.18);
    }

    .chantier-ribbon {
        position: absolute;
        top: 10px;
        right: -40px;
        background: #16a34a;
        color: white;
        padding: 4px 40px;
        font-size: 11px;
        font-weight: bold;
        transform: rotate(15deg);
    }

    /* === Tarifs Jardinage & Piscines === */

    #jardinage-tarifs .section-intro {
        color: var(--muted);
        margin: 6px 0 22px;
    }

    .jardinage-pricing-grid {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
        gap: 18px;
    }

    .jardinage-plan {
        background: #ffffff;
        border-radius: 18px;
        padding: 18px 20px 20px;
        box-shadow: 0 12px 28px rgba(6, 40, 61, 0.08);
        border: 1px solid rgba(148, 163, 184, 0.35);
        position: relative;
        transition: transform .2s ease, box-shadow .2s ease;
    }

    .jardinage-plan:hover {
        transform: translateY(-4px);
        box-shadow: 0 18px 45px rgba(6, 40, 61, 0.16);
    }

    .jardinage-title {
        margin: 0 0 2px;
    }

    .jardinage-sub {
        margin: 0 0 10px;
        font-size: 13px;
        color: var(--muted);
    }

    .jardinage-price-main {
        font-size: 22px;
        font-weight: 700;
        color: var(--brand);
    }

    .jardinage-price-sub {
        font-size: 13px;
        color: var(--muted);
    }

    .jardinage-features {
        list-style: none;
        padding: 0;
        margin: 12px 0 0;
        font-size: 13px;
        color: var(--muted);
    }

    .jardinage-features li {
        margin-bottom: 6px;
    }

    /* Pack Standard en avant */
    .jardinage-plan-featured {
        border-color: rgba(22, 163, 74, 0.6);
        box-shadow: 0 18px 45px rgba(22, 163, 74, 0.18);
    }

    .jardinage-ribbon {
        position: absolute;
        top: 10px;
        right: -40px;
        background: #16a34a;
        color: white;
        padding: 4px 40px;
        font-size: 11px;
        font-weight: bold;
        transform: rotate(15deg);
    }

    /* === Tarifs Matelas, Chaises & Tapis === */

    #matelas-tapis .section-intro {
        color: var(--muted);
        margin: 6px 0 20px;
    }

    .mt-pricing-grid {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
        gap: 18px;
    }

    .mt-plan {
        background: #ffffff;
        border-radius: 18px;
        padding: 18px 20px 22px;
        box-shadow: 0 12px 28px rgba(6, 40, 61, 0.08);
        border: 1px solid rgba(148, 163, 184, 0.35);
        transition: transform .2s ease, box-shadow .2s ease;
        position: relative;
    }

    .mt-plan:hover {
        transform: translateY(-4px);
        box-shadow: 0 18px 45px rgba(6, 40, 61, 0.16);
    }

    .mt-title {
        margin: 0 0 6px;
        font-weight: 600;
    }

    .mt-price-main {
        font-size: 22px;
        font-weight: 700;
        color: var(--brand);
    }

    .mt-price-sub {
        display: block;
        font-size: 13px;
        color: var(--muted);
    }

    .mt-features {
        margin: 12px 0 0;
        padding: 0;
        list-style: none;
        font-size: 13px;
        color: var(--muted);
    }

    .mt-features li {
        margin-bottom: 6px;
    }

    /* Pack Tapis mis en avant */
    .mt-plan-featured {
        border-color: rgba(22, 163, 74, 0.6);
        box-shadow: 0 18px 45px rgba(22, 163, 74, 0.18);
    }

    .mt-ribbon {
        position: absolute;
        top: 10px;
        right: -40px;
        background: #16a34a;
        color: #fff;
        padding: 4px 40px;
        font-size: 11px;
        font-weight: bold;
        transform: rotate(15deg);
    }

    /* === HERO marbre === */
    .hero-marbres {
        background: url('/public/images/marbre/hero.jpg') center/cover no-repeat;
        padding: 40px 22px;
        border-radius: 18px;
        color: #fff;
        box-shadow: 0 18px 40px rgba(6, 40, 61, 0.35);
    }

    /* === Pourquoi cristalliser === */
    .marbre-why-grid {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
        gap: 18px;
    }

    .why-item {
        background: #fff;
        border-radius: 16px;
        padding: 16px;
        box-shadow: 0 10px 30px rgba(6, 40, 61, 0.06);
    }

    /* === Tarifs marbre === */
    .marbre-pricing-grid {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
        gap: 20px;
    }

    .marbre-plan {
        background: #ffffff;
        padding: 20px;
        border-radius: 18px;
        border: 1px solid rgba(148, 163, 184, 0.35);
        box-shadow: 0 12px 28px rgba(6, 40, 61, 0.08);
        position: relative;
    }

    .marbre-plan:hover {
        transform: translateY(-4px);
        box-shadow: 0 18px 45px rgba(6, 40, 61, 0.16);
    }

    .marbre-price-main {
        font-size: 22px;
        font-weight: 700;
        color: var(--brand);
    }

    .marbre-ribbon {
        position: absolute;
        top: 10px;
        right: -40px;
        background: #16a34a;
        color: white;
        font-size: 11px;
        padding: 4px 40px;
        transform: rotate(15deg);
    }

    /* === Galerie marbre === */
    .marbre-gallery {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
        gap: 12px;
    }

    .marbre-gallery img {
        width: 100%;
        border-radius: 16px;
        object-fit: cover;
        box-shadow: 0 12px 28px rgba(6, 40, 61, 0.15);
    }

    #cristal-hero {
        background: url("/public/images/services/cristalisation.jpg") center/cover no-repeat;
        padding: 60px 0;
        border-radius: 12px;
    }

    #cristal-info .card,
    #cristal-pricing .card {
        transition: transform 0.3s ease, box-shadow 0.3s ease;
    }

    #cristal-info .card:hover,
    #cristal-pricing .card:hover {
        transform: translateY(-6px);
        box-shadow: 0 14px 42px rgba(0, 0, 0, 0.12);
    }

    /* ===== Fin de chantier – bloc premium ===== */

    #finchantier-pro .section-intro {
        color: var(--muted);
        margin: 6px 0 22px;
    }

    .fc-grid {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
        gap: 20px;
    }

    .fc-card {
        background: #ffffff;
        border-radius: 20px;
        padding: 20px 22px 22px;
        border: 1px solid rgba(148, 163, 184, 0.35);
        box-shadow: 0 14px 32px rgba(15, 23, 42, 0.08);
        position: relative;
        overflow: hidden;
        transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease;
    }

    .fc-card::after {
        content: "";
        position: absolute;
        inset: 0;
        background: radial-gradient(circle at top right, rgba(56, 189, 248, 0.15), transparent 55%);
        opacity: 0;
        transition: opacity .25s ease;
    }

    .fc-card:hover {
        transform: translateY(-5px);
        box-shadow: 0 18px 40px rgba(15, 23, 42, 0.18);
        border-color: rgba(56, 189, 248, 0.7);
    }

    .fc-card:hover::after {
        opacity: 1;
    }

    .fc-card-featured {
        border-color: rgba(22, 163, 74, 0.7);
        box-shadow: 0 20px 50px rgba(22, 163, 74, 0.25);
    }

    .fc-badge {
        position: absolute;
        top: 10px;
        right: -40px;
        background: #16a34a;
        color: #fff;
        font-size: 11px;
        font-weight: 600;
        padding: 4px 40px;
        transform: rotate(16deg);
    }

    .fc-tag {
        display: inline-block;
        margin-bottom: 8px;
        padding: 4px 10px;
        border-radius: 999px;
        font-size: 11px;
        text-transform: uppercase;
        letter-spacing: .04em;
        background: rgba(148, 163, 184, 0.16);
        color: rgba(51, 65, 85, 0.9);
    }

    .fc-title {
        margin: 2px 0 2px;
    }

    .fc-sub {
        margin: 0 0 10px;
        color: var(--muted);
        font-size: 13px;
    }

    .fc-price {
        margin: 0 0 12px;
    }

    .fc-price-main {
        font-size: 24px;
        font-weight: 700;
        color: var(--brand);
    }

    .fc-price-sub {
        display: inline-block;
        margin-left: 4px;
        font-size: 13px;
        color: var(--muted);
    }

    .fc-list {
        list-style: none;
        margin: 10px 0 0;
        padding: 0;
        font-size: 13px;
        color: var(--muted);
    }

    .fc-list li {
        margin-bottom: 6px;
    }

    .fc-cta-wrap {
        margin-top: 20px;
        text-align: center;
    }

    /* ===== Matelas / Canapés – bloc premium ===== */

    #mc-pro .section-intro {
        color: var(--muted);
        margin: 6px 0 22px;
    }

    .mc-grid {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
        gap: 18px;
    }

    .mc-card {
        background: #ffffff;
        border-radius: 20px;
        padding: 18px 20px 20px;
        border: 1px solid rgba(148, 163, 184, 0.35);
        box-shadow: 0 12px 30px rgba(15, 23, 42, 0.08);
        position: relative;
        transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease;
    }

    .mc-card:hover {
        transform: translateY(-4px);
        box-shadow: 0 18px 42px rgba(15, 23, 42, 0.18);
        border-color: rgba(56, 189, 248, 0.7);
    }

    .mc-card-featured {
        border-color: rgba(22, 163, 74, 0.8);
        box-shadow: 0 20px 50px rgba(22, 163, 74, 0.25);
    }

    .mc-badge {
        position: absolute;
        top: 10px;
        right: -42px;
        background: #16a34a;
        color: #fff;
        font-size: 11px;
        font-weight: 600;
        padding: 4px 42px;
        transform: rotate(16deg);
    }

    .mc-tag {
        display: inline-block;
        margin-bottom: 8px;
        padding: 3px 9px;
        border-radius: 999px;
        font-size: 11px;
        text-transform: uppercase;
        letter-spacing: .05em;
        background: rgba(148, 163, 184, 0.16);
        color: rgba(30, 64, 175, 0.9);
    }

    .mc-title {
        margin: 2px 0 4px;
    }

    .mc-price {
        margin: 0 0 10px;
    }

    .mc-price-main {
        font-size: 22px;
        font-weight: 700;
        color: var(--brand);
    }

    .mc-price-sub {
        display: block;
        font-size: 12px;
        color: var(--muted);
    }

    .mc-list {
        list-style: none;
        margin: 10px 0 0;
        padding: 0;
        font-size: 13px;
        color: var(--muted);
    }

    .mc-list li {
        margin-bottom: 6px;
    }

    .mc-cta-wrap {
        margin-top: 20px;
        text-align: center;
    }

    /* === Boutique nettoyage – mise en page === */

    .shop-controls {
        display: flex;
        flex-wrap: wrap;
        gap: 16px;
        margin: 18px 0 22px;
        align-items: flex-end;
    }

    .shop-control {
        display: flex;
        flex-direction: column;
        gap: 4px;
    }

    .shop-control label {
        font-size: 13px;
        color: var(--muted);
    }

    #margin-input {
        width: 120px;
        padding: 6px 10px;
        border-radius: 10px;
        border: 1px solid rgba(148, 163, 184, 0.65);
    }

    #category-filter {
        min-width: 190px;
        padding: 6px 10px;
        border-radius: 10px;
        border: 1px solid rgba(148, 163, 184, 0.65);
    }

    .shop-grid {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
        gap: 18px;
    }

    /* === Carte produit === */

    .product-card {
        background: #ffffff;
        border-radius: 18px;
        border: 1px solid rgba(148, 163, 184, 0.35);
        box-shadow: 0 12px 30px rgba(15, 23, 42, 0.07);
        overflow: hidden;
        display: flex;
        flex-direction: column;
        transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
        position: relative;
    }

    .product-card:hover {
        transform: translateY(-4px);
        box-shadow: 0 18px 46px rgba(15, 23, 42, 0.16);
        border-color: rgba(56, 189, 248, 0.75);
    }

    .product-photo {
        height: 130px;
        background-size: cover;
        background-position: center;
        background-repeat: no-repeat;
        background-color: #e5f3ff;
        display: flex;
        align-items: center;
        justify-content: center;
        color: rgba(15, 23, 42, 0.45);
        font-size: 12px;
        font-weight: 500;
    }

    .product-photo.empty::before {
        content: "Photo à ajouter";
    }

    .product-body {
        padding: 12px 14px 14px;
        display: flex;
        flex-direction: column;
        gap: 6px;
    }

    .product-category {
        font-size: 11px;
        text-transform: uppercase;
        letter-spacing: .06em;
        color: rgba(100, 116, 139, 0.95);
    }

    .product-title {
        font-size: 15px;
        font-weight: 600;
        color: #0f172a;
    }

    .product-desc {
        font-size: 13px;
        color: var(--muted);
    }

    .product-pack {
        font-size: 12px;
        color: rgba(71, 85, 105, 0.95);
    }

    .product-prices {
        margin-top: 4px;
        font-size: 13px;
    }

    .product-prices strong {
        font-weight: 700;
        color: var(--brand);
    }

    .product-prices small {
        display: block;
        font-size: 11px;
        color: var(--muted);
    }

    /* Badge petit effet animé */
    .product-badge-gros {
        position: absolute;
        top: 8px;
        left: -32px;
        background: #0f766e;
        color: #fff;
        font-size: 10px;
        padding: 3px 34px;
        transform: rotate(-18deg);
        text-transform: uppercase;
        letter-spacing: .08em;
    }

    /* Section boutique */
    .boutique-section {
        margin-top: 48px;
    }

    .boutique-section .section-title {
        font-size: 28px;
        margin-bottom: 8px;
        color: var(--brand, #005f73);
    }

    .boutique-section .section-intro {
        margin-bottom: 24px;
        color: var(--muted);
        max-width: 720px;
    }

    /* Grille produits */
    .product-grid {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
        gap: 24px;
    }

    /* Carte produit */
    .product-card {
        position: relative;
        background: #ffffff;
        border-radius: 18px;
        padding: 18px 18px 20px;
        box-shadow: 0 10px 30px rgba(0, 0, 0, 0.06);
        overflow: hidden;
        transition: transform 0.25s ease, box-shadow 0.25s ease;
    }

    .product-card::before {
        content: "";
        position: absolute;
        inset: 0;
        background: radial-gradient(circle at top right, rgba(0, 191, 165, 0.12), transparent 60%);
        opacity: 0;
        transition: opacity 0.25s ease;
    }

    .product-card:hover {
        transform: translateY(-6px);
        box-shadow: 0 18px 40px rgba(0, 0, 0, 0.16);
    }

    .product-card:hover::before {
        opacity: 1;
    }

    /* Contenu carte */
    .product-tag {
        display: inline-block;
        padding: 4px 10px;
        font-size: 11px;
        border-radius: 999px;
        background: rgba(0, 191, 165, 0.12);
        color: #008071;
        margin-bottom: 8px;
        text-transform: uppercase;
        letter-spacing: 0.05em;
    }

    .product-name {
        font-size: 18px;
        margin: 0 0 6px;
        color: #003844;
    }

    .product-desc {
        font-size: 13px;
        margin: 0 0 6px;
    }

    .product-pack {
        font-size: 12px;
        color: #607080;
        margin-bottom: 4px;
    }

    .product-price {
        font-weight: 600;
        margin: 6px 0 2px;
    }

    .product-margin {
        font-size: 12px;
        color: #008071;
        margin-bottom: 10px;
    }

    /* Placeholder photo */
    .product-photo-placeholder {
        margin-top: 8px;
        height: 90px;
        border-radius: 12px;
        border: 1px dashed rgba(0, 0, 0, 0.12);
        display: flex;
        align-items: center;
        justify-content: center;
        font-size: 12px;
        color: #90a4ae;
        background: linear-gradient(135deg, #f9fafb, #f1f5f9);
    }

    /* ===========================
   BOUTIQUE – LOOK PREMIUM
   À coller à la fin de styles.css
   =========================== */

    /* Fond léger & structure des sections boutique */
    .boutique-section {
        position: relative;
        padding: 32px 0 40px;
    }

    .boutique-section::before {
        content: "";
        position: absolute;
        inset: 0;
        background: radial-gradient(circle at top left, rgba(56, 189, 248, 0.12), transparent 55%),
            radial-gradient(circle at bottom right, rgba(45, 212, 191, 0.12), transparent 55%);
        opacity: 0.45;
        pointer-events: none;
        z-index: -1;
    }

    /* Titres de section plus “produit” */
    .boutique-section .section-title {
        font-size: 26px;
        letter-spacing: .03em;
        text-transform: uppercase;
        color: var(--brand, #0ea5e9);
        display: inline-flex;
        align-items: center;
        gap: 10px;
    }

    .boutique-section .section-title::after {
        content: "";
        height: 2px;
        width: 64px;
        border-radius: 999px;
        background: linear-gradient(90deg, var(--brand, #0ea5e9), rgba(14, 165, 233, 0));
    }

    .boutique-section .section-intro {
        font-size: 14px;
        color: var(--muted, #64748b);
        max-width: 740px;
    }

    /* Grille produits légèrement resserrée */
    .product-grid {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
        gap: 22px;
    }

    /* Cartes produits : glassmorphism + hover premium */
    .product-card {
        position: relative;
        background: rgba(15, 23, 42, 0.92);
        border-radius: 18px;
        padding: 16px 16px 18px;
        border: 1px solid rgba(148, 163, 184, 0.28);
        box-shadow: 0 18px 45px rgba(15, 23, 42, 0.45);
        color: #e2e8f0;
        overflow: hidden;
        backdrop-filter: blur(12px);
        transform: translateY(0) scale(1);
        transition:
            transform .22s ease,
            box-shadow .22s ease,
            border-color .22s ease,
            background .22s ease;
    }

    .product-card::before {
        content: "";
        position: absolute;
        inset: -1px;
        background: radial-gradient(circle at top right, rgba(56, 189, 248, 0.32), transparent 55%);
        opacity: 0;
        pointer-events: none;
        transition: opacity .22s ease;
    }

    .product-card:hover {
        transform: translateY(-6px) scale(1.01);
        box-shadow: 0 26px 60px rgba(15, 23, 42, 0.75);
        border-color: rgba(56, 189, 248, 0.75);
        background: rgba(15, 23, 42, 0.98);
    }

    .product-card:hover::before {
        opacity: 1;
    }

    /* Animation d’apparition légère */
    @keyframes cardFloatIn {
        from {
            opacity: 0;
            transform: translateY(16px) scale(0.98);
        }

        to {
            opacity: 1;
            transform: translateY(0) scale(1);
        }
    }

    .product-card {
        animation: cardFloatIn .45s ease both;
    }

    /* Petit décalage en cascade */
    .product-card:nth-child(1) {
        animation-delay: 0.02s;
    }

    .product-card:nth-child(2) {
        animation-delay: 0.06s;
    }

    .product-card:nth-child(3) {
        animation-delay: 0.10s;
    }

    .product-card:nth-child(4) {
        animation-delay: 0.14s;
    }

    .product-card:nth-child(5) {
        animation-delay: 0.18s;
    }

    .product-card:nth-child(6) {
        animation-delay: 0.22s;
    }

    /* Tag de catégorie */
    .product-tag {
        display: inline-flex;
        align-items: center;
        gap: 6px;
        padding: 3px 10px;
        border-radius: 999px;
        font-size: 10px;
        font-weight: 600;
        text-transform: uppercase;
        letter-spacing: .12em;
        background: rgba(15, 118, 110, 0.25);
        color: #5eead4;
    }

    .product-tag::before {
        content: "";
        width: 6px;
        height: 6px;
        border-radius: 999px;
        background: #5eead4;
        box-shadow: 0 0 0 4px rgba(45, 212, 191, 0.18);
    }

    /* Textes produits */
    .product-name {
        margin: 8px 0 4px;
        font-size: 16px;
        font-weight: 600;
        color: #f9fafb;
    }

    .product-desc {
        margin: 0 0 4px;
        font-size: 13px;
        color: #cbd5f5;
    }

    .product-pack {
        margin: 0 0 4px;
        font-size: 12px;
        color: #94a3b8;
    }

    /* Prix final mis en avant */
    .product-final-price {
        margin-top: 10px;
        font-size: 15px;
        font-weight: 700;
        color: #e0f2fe;
        display: flex;
        align-items: baseline;
        gap: 4px;
    }

    .product-final-price .sell-price {
        font-size: 18px;
    }

    .product-final-price .sell-unit {
        font-size: 12px;
        opacity: 0.8;
    }

    /* Placeholder photo + hover */
    .product-photo-placeholder {
        margin-top: 10px;
        height: 96px;
        border-radius: 14px;
        border: 1px dashed rgba(148, 163, 184, 0.45);
        background: linear-gradient(135deg, rgba(15, 23, 42, 0.9), rgba(15, 23, 42, 0.75));
        display: flex;
        align-items: center;
        justify-content: center;
        font-size: 11px;
        text-transform: uppercase;
        letter-spacing: .08em;
        color: #64748b;
        transition:
            border-color .2s ease,
            color .2s ease,
            background .2s ease;
    }

    .product-card:hover .product-photo-placeholder {
        border-style: solid;
        border-color: rgba(56, 189, 248, 0.75);
        color: #e2f3ff;
        background: radial-gradient(circle at top, rgba(56, 189, 248, 0.2), rgba(15, 23, 42, 0.9));
    }

    /* Contrôles marge & filtres un peu plus premium */
    .shop-controls {
        display: flex;
        flex-wrap: wrap;
        gap: 14px;
        margin: 14px 0 18px;
        align-items: flex-end;
    }

    .shop-control label {
        font-size: 11px;
        text-transform: uppercase;
        letter-spacing: .14em;
        color: #94a3b8;
    }

    #margin-input,
    #category-filter {
        padding: 6px 10px;
        border-radius: 999px;
        border: 1px solid rgba(148, 163, 184, 0.6);
        background: rgba(15, 23, 42, 0.9);
        color: #e2e8f0;
        font-size: 13px;
        outline: none;
        transition:
            border-color .2s ease,
            box-shadow .2s ease,
            background .2s ease;
    }

    #margin-input:focus,
    #category-filter:focus {
        border-color: rgba(56, 189, 248, 0.9);
        box-shadow: 0 0 0 1px rgba(56, 189, 248, 0.7);
    }

    /* Responsive – cartes plus aérées sur mobile */
    @media (max-width: 768px) {
        .boutique-section {
            padding-top: 20px;
        }

        .boutique-section .section-title {
            font-size: 22px;
        }

        .product-card {
            padding: 14px 14px 16px;
        }

        .product-final-price .sell-price {
            font-size: 17px;
        }
    }

    /* ===========================
   THEME BOUTIQUE CLAIR PREMIUM
   =========================== */

    /* Fond général plus clair pour les sections boutique */
    .boutique-section {
        position: relative;
        padding: 32px 0 40px;
        background: linear-gradient(180deg, #f8fafc, #eef2ff);
        border-radius: 24px;
        margin-bottom: 32px;
    }

    /* Titre de section pro */
    .boutique-section .section-title {
        font-size: 24px;
        letter-spacing: .03em;
        text-transform: uppercase;
        color: #0f766e;
        display: inline-flex;
        align-items: center;
        gap: 10px;
    }

    .boutique-section .section-title::after {
        content: "";
        height: 2px;
        width: 64px;
        border-radius: 999px;
        background: linear-gradient(90deg, #0f766e, rgba(15, 118, 110, 0));
    }

    .boutique-section .section-intro {
        font-size: 14px;
        color: #475569;
        max-width: 760px;
    }

    /* Grille produits */
    .product-grid {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
        gap: 18px;
        margin-top: 18px;
    }

    /* Cartes produits : fond blanc, propre, ombre légère */
    .product-card {
        position: relative;
        background: #ffffff;
        border-radius: 18px;
        padding: 14px 14px 16px;
        border: 1px solid rgba(148, 163, 184, 0.35);
        box-shadow: 0 14px 30px rgba(148, 163, 184, 0.20);
        color: #0f172a;
        overflow: hidden;
        transition:
            transform .18s ease,
            box-shadow .18s ease,
            border-color .18s ease,
            background .18s ease;
    }

    .product-card:hover {
        transform: translateY(-4px);
        box-shadow: 0 20px 40px rgba(148, 163, 184, 0.30);
        border-color: #0f766e;
    }

    /* Tag catégorie */
    .product-tag {
        display: inline-flex;
        align-items: center;
        gap: 6px;
        padding: 3px 10px;
        border-radius: 999px;
        font-size: 10px;
        font-weight: 600;
        text-transform: uppercase;
        letter-spacing: .12em;
        background: rgba(45, 212, 191, 0.12);
        color: #0f766e;
    }

    .product-tag::before {
        content: "";
        width: 6px;
        height: 6px;
        border-radius: 999px;
        background: #0f766e;
    }

    /* Textes */
    .product-name {
        margin: 8px 0 4px;
        font-size: 16px;
        font-weight: 600;
    }

    .product-desc {
        margin: 0 0 4px;
        font-size: 13px;
        color: #475569;
    }

    .product-pack {
        margin: 0 0 6px;
        font-size: 12px;
        color: #64748b;
    }

    /* Prix final mis en avant */
    .product-final-price {
        margin-top: 8px;
        font-size: 15px;
        font-weight: 700;
        color: #0f172a;
        display: flex;
        align-items: baseline;
        gap: 4px;
    }

    .product-final-price .sell-price {
        font-size: 18px;
        color: #0f766e;
    }

    .product-final-price .sell-unit {
        font-size: 12px;
        color: #475569;
    }

    /* Zone photo produit */
    .product-photo {
        margin-top: 10px;
        border-radius: 14px;
        overflow: hidden;
        border: 1px solid rgba(226, 232, 240, 0.9);
        background: #e2e8f0;
    }

    .product-photo img {
        display: block;
        width: 100%;
        height: 140px;
        object-fit: cover;
    }

    /* Ancien placeholder : au cas où */
    .product-photo-placeholder {
        display: none;
    }

    /* Contrôles boutique (marge / filtre) – version plus discrète */
    .shop-controls {
        display: flex;
        flex-wrap: wrap;
        gap: 12px;
        margin: 10px 0 16px;
        align-items: flex-end;
    }

    .shop-control label {
        font-size: 11px;
        text-transform: uppercase;
        letter-spacing: .14em;
        color: #64748b;
    }

    #margin-input,
    #category-filter {
        padding: 6px 10px;
        border-radius: 999px;
        border: 1px solid rgba(148, 163, 184, 0.8);
        background: #f8fafc;
        color: #0f172a;
        font-size: 13px;
        outline: none;
        transition:
            border-color .2s ease,
            box-shadow .2s ease,
            background .2s ease;
    }

    #margin-input:focus,
    #category-filter:focus {
        border-color: #0f766e;
        box-shadow: 0 0 0 1px rgba(16, 185, 129, 0.45);
    }

    /* Tu peux cacher complètement les contrôles pour les clients */
    .shop-controls {
        display: none;
    }

    /* Responsive */
    @media (max-width: 768px) {
        .boutique-section {
            padding: 22px 0 26px;
        }

        .boutique-section .section-title {
            font-size: 20px;
        }

        .product-card {
            padding: 12px 12px 14px;
        }

        .product-photo img {
            height: 120px;
        }
    }

    /* Arrière-plan global de la page boutique */
    body.boutique-page {
        background: radial-gradient(circle at top left, #e0f4ff 0, #f8fafc 45%, #e2e8f0 100%);
    }

    /* Container principal */
    .boutique-section {
        margin-top: 28px;
        padding: 24px 0;
    }

    /* Grille produits */
    .product-grid {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
        gap: 20px;
    }

    /* Carte produit premium */
    .product-card {
        background: #ffffff;
        border-radius: 18px;
        padding: 18px 18px 20px;
        box-shadow: 0 18px 35px rgba(15, 23, 42, 0.08);
        border: 1px solid rgba(148, 163, 184, 0.25);
        transition: transform 0.18s ease, box-shadow 0.18s ease, border-color 0.18s ease;
    }

    .product-card:hover {
        transform: translateY(-4px);
        box-shadow: 0 24px 45px rgba(15, 23, 42, 0.14);
        border-color: #0f766e;
    }

    /* Tag catégorie */
    .product-tag {
        display: inline-block;
        font-size: 11px;
        font-weight: 600;
        text-transform: uppercase;
        letter-spacing: 0.04em;
        padding: 3px 10px;
        border-radius: 999px;
        background: #ecfeff;
        color: #0f766e;
        margin-bottom: 8px;
    }

    /* Nom produit */
    .product-name {
        font-size: 16px;
        font-weight: 700;
        color: #0f172a;
        margin-bottom: 6px;
    }

    /* Texte */
    .product-desc {
        font-size: 13px;
        color: #475569;
        margin-bottom: 4px;
    }

    .product-pack {
        font-size: 12px;
        color: #64748b;
    }

    /* Prix final */
    .product-final-price {
        margin-top: 10px;
        font-size: 15px;
    }

    .product-final-price .sell-price {
        color: #0f766e;
        font-weight: 700;
    }

    .product-final-price .sell-unit {
        margin-left: 4px;
        color: #64748b;
        font-size: 13px;
    }

    /* =========================
   TAPIS & CANAPES – HERO
   ========================= */
    .textile-hero {
        background: radial-gradient(circle at top left, rgba(0, 180, 170, 0.16), transparent 50%),
            radial-gradient(circle at bottom right, rgba(0, 120, 255, 0.18), transparent 55%),
            #f5fafc;
        border-radius: 24px;
        padding: 32px 24px;
        margin-bottom: 40px;
    }

    .textile-hero-grid {
        display: grid;
        grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr);
        gap: 32px;
        align-items: center;
    }

    .textile-hero-text h1 {
        margin-bottom: 12px;
    }

    .section-kicker {
        font-size: 0.9rem;
        text-transform: uppercase;
        letter-spacing: 0.08em;
        color: var(--brand);
        font-weight: 700;
        margin-bottom: 6px;
    }

    .textile-hero-list {
        margin: 14px 0 24px;
        padding-left: 18px;
        font-size: 0.95rem;
        color: var(--muted);
    }

    .textile-hero-list li+li {
        margin-top: 4px;
    }

    .cta.cta-whatsapp {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        padding: 10px 20px;
        border-radius: 999px;
        border: none;
        background: #25d366;
        color: #fff;
        font-weight: 600;
        font-size: 0.95rem;
        text-decoration: none;
        box-shadow: 0 8px 20px rgba(37, 211, 102, 0.35);
        transition: transform 0.18s ease, box-shadow 0.18s ease, background 0.18s ease;
    }

    .cta.cta-whatsapp:hover {
        transform: translateY(-1px);
        background: #1fb556;
        box-shadow: 0 12px 28px rgba(37, 211, 102, 0.42);
    }

    /* Carrousel images */
    .textile-hero-media {
        display: flex;
        justify-content: center;
    }

    .textile-slider {
        width: 100%;
        max-width: 420px;
        aspect-ratio: 4 / 3;
        overflow: hidden;
        border-radius: 20px;
        box-shadow: 0 18px 40px rgba(0, 0, 0, 0.16);
        background: #000;
        position: relative;
    }

    .textile-slider-track {
        display: flex;
        width: max-content;
        animation: textile-slide 28s linear infinite;
    }

    .textile-slider img {
        width: 100%;
        height: 100%;
        object-fit: cover;
        flex: 0 0 100%;
        filter: brightness(1.05);
    }

    /* Animation de slide horizontale */
    @keyframes textile-slide {
        0% {
            transform: translateX(0);
        }

        100% {
            transform: translateX(-50%);
        }
    }

    /* =========================
   GRILLE TARIFS TEXTILE
   ========================= */
    .textile-pricing {
        margin-top: 8px;
    }

    .textile-pricing-grid {
        margin-top: 22px;
        display: grid;
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 20px;
    }

    .pricing-card {
        background: #ffffff;
        border-radius: 18px;
        padding: 18px 18px 20px;
        box-shadow: 0 10px 26px rgba(19, 35, 56, 0.08);
        border: 1px solid rgba(15, 118, 110, 0.08);
        position: relative;
        overflow: hidden;
        transition: transform 0.18s ease, box-shadow 0.18s ease, border-color 0.18s ease;
    }

    .pricing-card:hover {
        transform: translateY(-4px);
        box-shadow: 0 16px 40px rgba(15, 23, 42, 0.16);
        border-color: rgba(15, 118, 110, 0.28);
    }

    .pricing-card.highlight {
        border: 1px solid var(--brand);
        box-shadow: 0 18px 40px rgba(16, 185, 129, 0.23);
    }

    .pricing-tag {
        position: absolute;
        top: 12px;
        right: 12px;
        background: rgba(16, 185, 129, 0.14);
        color: #047857;
        font-size: 0.78rem;
        font-weight: 600;
        padding: 4px 10px;
        border-radius: 999px;
    }

    .pricing-title {
        font-size: 1.1rem;
        margin-bottom: 4px;
    }

    .pricing-subtitle {
        font-size: 0.9rem;
        color: var(--muted);
        margin-bottom: 10px;
    }

    .pricing-amount {
        margin-bottom: 10px;
    }

    .price-main {
        display: block;
        font-size: 1.25rem;
        font-weight: 700;
        color: var(--brand);
    }

    .price-unit {
        display: block;
        font-size: 0.85rem;
        color: var(--muted);
    }

    .pricing-list {
        padding-left: 18px;
        font-size: 0.9rem;
        color: #0f172a;
    }

    .pricing-list li+li {
        margin-top: 4px;
    }

    /* Responsive */
    @media (max-width: 960px) {
        .textile-hero-grid {
            grid-template-columns: minmax(0, 1fr);
        }

        .textile-hero-media {
            order: -1;
            margin-bottom: 18px;
        }

        .textile-pricing-grid {
            grid-template-columns: repeat(2, minmax(0, 1fr));
        }
    }

    @media (max-width: 640px) {
        .textile-hero {
            padding: 20px 16px;
        }

        .textile-pricing-grid {
            grid-template-columns: minmax(0, 1fr);
        }
    }

    .card-img {
        width: 100%;
        height: 220px;
        /* même hauteur que les autres cartes */
        object-fit: cover;
        /* zoom propre */
        border-radius: 18px 18px 0 0;
        display: block;
    }

    /* --- Cartes Services Premium --- */
    .card {
        background: #ffffff;
        border-radius: 22px;
        overflow: hidden;
        box-shadow: 0 8px 25px rgba(0, 0, 0, 0.08);
        transition: transform .25s ease, box-shadow .25s ease;
        cursor: pointer;
    }

    .card:hover {
        transform: translateY(-6px);
        box-shadow: 0 15px 35px rgba(0, 0, 0, 0.12);
    }

    /* Images */
    .card-img {
        width: 100%;
        height: 230px;
        object-fit: cover;
        border-radius: 22px 22px 0 0;
    }

    /* Texte carte */
    .card-body {
        padding: 18px 20px;
    }

    .card-body h3 {
        font-size: 1.3rem;
        color: #0e5379;
        /* ton bleu premium */
        margin-bottom: 6px;
    }

    .card-body p {
        color: #555;
        font-size: 0.95rem;
        line-height: 1.45rem;
    }

    .pub-video {
        width: 100%;
        max-width: 650px;
        border-radius: 12px;
        background: #000;
        margin: 20px 0;
        box-shadow: 0px 8px 25px rgba(0, 0, 0, 0.15);
    }

    /* --- VIDÉOS DE PUBLICITÉ --- */

    .videos-grid {
        display: grid;
        gap: 32px;
    }

    @media (min-width: 900px) {
        .videos-grid {
            grid-template-columns: repeat(3, minmax(0, 1fr));
        }
    }

    .video-card {
        background: #ffffff;
        border-radius: 18px;
        padding: 18px 18px 22px;
        box-shadow: 0 14px 35px rgba(15, 23, 42, 0.12);
        border: 1px solid rgba(148, 163, 184, 0.25);
        display: flex;
        flex-direction: column;
        gap: 10px;
    }

    .video-title {
        font-size: 1.1rem;
        font-weight: 700;
        color: #0f172a;
        margin: 0;
    }

    .video-sub {
        font-size: 0.9rem;
        color: #475569;
        margin: 0 0 6px;
    }

    .video-frame {
        position: relative;
        border-radius: 14px;
        overflow: hidden;
        background: #020617;
    }

    .promo-video {
        display: block;
        width: 100%;
        height: auto;
        aspect-ratio: 16 / 9;
    }

    .video-caption {
        font-size: 0.85rem;
        color: #64748b;
        margin: 6px 0 0;
    }