*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

:root {
    --vert:         #83B735;
    --vert-c:       #6a9528;
    --texte:        #212121;
    --fond:         #ffffff;
    --header-bg:    #ffffff;
    --footer-bg:    #1a1a2e;
    --footer-texte: #cccccc;
    --police:       'Balsamiq Sans', cursive;
    --slate:        #7e8e9f;
    --gris:         #f5f5f5;
    --radius:       5px;
    --shadow:       0 0 15px rgba(0,0,0,.1);
}

body {
    font-family: var(--police);
    color: var(--texte);
    background: var(--fond);
    line-height: 1.6;
    overflow-x: hidden;
    min-height: 100vh;
    display: flex;
    flex-direction: column;
}
.site-footer { margin-top: auto; }

a { color: inherit; text-decoration: none; }

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

/* ── Header ── */
.site-header {
    background: var(--header-bg);
    border-bottom: none;
    position: sticky; top: 0; z-index: 200;
    padding: 12px 0 10px;
    box-shadow: 0 2px 0 0 var(--vert), 0 3px 16px rgba(0,0,0,.08);
}
.site-header .container {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1.5rem;
}
.logo { display: flex; align-items: center; gap: .5rem; font-size: 1.1rem; font-weight: 700; min-width: 0; }
.logo-amp { background: var(--vert); color: #fff; padding: .2rem .5rem; border-radius: var(--radius); }
.logo-img { max-height: 80px; max-width: 240px; object-fit: contain; display: block; }
.main-nav { flex: 1; min-width: 0; overflow: hidden; }
.main-nav ul { list-style: none; display: flex; flex-wrap: nowrap; gap: 1.25rem; white-space: nowrap; }
.main-nav a { font-weight: 500; font-size: .92rem; transition: color .2s; white-space: nowrap; }
.main-nav a:hover { color: var(--vert); }
.header-actions { display: flex; align-items: center; gap: .75rem; flex-shrink: 0; }
.btn-link { font-weight: 500; }
.btn-link:hover { color: var(--vert); }

/* Hamburger menu */
.hamburger-ticker { display: none; }
.hamburger-label {
    display: none;
    flex-direction: column; gap: 5px;
    cursor: pointer; padding: 6px; z-index: 300; position: relative;
}
.hamburger-label span {
    display: block; width: 26px; height: 2px;
    background: var(--vert);
    transition: all .25s;
}
.slide-menu {
    display: block; position: fixed;
    top: 0; left: -240px; width: 240px; height: 100%;
    background: #fff; border-right: 2px solid var(--vert);
    z-index: 250; padding: 4rem 1.5rem 2rem;
    transition: left .25s ease;
    list-style: none;
}
.slide-menu a { display: block; padding: .75rem 0; font-size: 1.05rem; font-weight: 700; border-bottom: 1px solid #f0f0f0; color: var(--texte); }
.slide-menu a:hover { color: var(--vert); }
.slide-overlay {
    display: none; position: fixed; inset: 0;
    background: rgba(0,0,0,.35); z-index: 240;
}
.hamburger-ticker:checked ~ .slide-menu   { left: 0; }
.hamburger-ticker:checked ~ .slide-overlay { display: block; }
.hamburger-ticker:checked ~ .site-header .hamburger-label span:nth-child(1) { transform: rotate(45deg) translate(5px, 5px); }
.hamburger-ticker:checked ~ .site-header .hamburger-label span:nth-child(2) { opacity: 0; }
.hamburger-ticker:checked ~ .site-header .hamburger-label span:nth-child(3) { transform: rotate(-45deg) translate(5px, -5px); }

/* ── Boutons ── */
.btn-primary, .btn-devis {
    background: var(--vert);
    color: #fff;
    padding: .6rem 1.4rem;
    border-radius: var(--radius);
    font-weight: 600;
    transition: background .2s;
    display: inline-block;
}
.btn-primary:hover, .btn-devis:hover { background: var(--vert-c); }
.btn-secondary {
    border: 2px solid var(--vert);
    color: var(--vert);
    padding: .6rem 1.4rem;
    border-radius: var(--radius);
    font-weight: 600;
    display: inline-block;
    transition: all .2s;
}
.btn-secondary:hover { background: var(--vert); color: #fff; }

/* ── Hero ── */
/* ── Hero slider ── */
.hero-spacer {
    height: var(--hero-spacer, 2rem);
    background: linear-gradient(to bottom, rgba(131,183,53,.07), transparent);
}
.hero-slider {
    position: relative;
    overflow: hidden;
    background: #1a1a2e;
    height: clamp(240px, 33.5vw, 520px);
    color: #fff;
}
.hero-slide {
    position: absolute; inset: 0;
    display: flex; align-items: center; justify-content: center;
    text-align: center;
    opacity: 0;
    transition: opacity .8s ease;
    pointer-events: none;
}
.hero-slide.active { opacity: 1; pointer-events: auto; z-index: 1; }
.hero-slide-bg {
    position: absolute; inset: 0;
    background-size: cover; background-position: center;
}
.hero-slide-overlay {
    position: absolute; inset: 0;
    background: linear-gradient(135deg, rgba(0,0,0,.55) 0%, rgba(0,0,0,.30) 100%);
}
.hero-slide-content {
    position: relative; z-index: 1;
    padding: 2rem 1.5rem;
    max-width: 780px;
}
.hero-slide-content h1 {
    font-size: clamp(1.5rem, 4vw, 2.8rem);
    font-weight: 700;
    margin-bottom: 1rem;
    line-height: 1.2;
    text-shadow: 0 2px 8px rgba(0,0,0,.3);
}
.hero-slide-content p,
.hero-slide-content .hero-slide-sub p {
    font-size: clamp(.95rem, 2vw, 1.15rem);
    opacity: .92;
    margin-bottom: 2rem;
    line-height: 1.6;
    text-shadow: 0 1px 4px rgba(0,0,0,.3);
}
.hero-slide-content .hero-slide-sub { margin: 0; }
.hero-slide-content .btn-primary {
    background: #fff; color: var(--vert);
    font-size: 1rem; padding: .8rem 2rem;
}
.hero-slide-content .btn-primary:hover { background: var(--gris); }

/* Flèches */
.hero-arrow {
    position: absolute; top: 50%; transform: translateY(-50%);
    z-index: 10; background: rgba(255,255,255,.15);
    border: none; border-radius: 50%;
    width: 44px; height: 44px;
    display: flex; align-items: center; justify-content: center;
    cursor: pointer; color: #fff;
    transition: background .2s;
    backdrop-filter: blur(4px);
}
.hero-arrow:hover { background: rgba(255,255,255,.3); }
.hero-arrow--prev { left: 1rem; }
.hero-arrow--next { right: 1rem; }

/* Dots */
.hero-dots {
    position: absolute; bottom: 1rem; left: 50%; transform: translateX(-50%);
    z-index: 10; display: flex; gap: .4rem;
}
.hero-dot {
    width: 8px; height: 8px; border-radius: 50%;
    background: rgba(255,255,255,.45); border: none; cursor: pointer;
    padding: 0; transition: background .2s, transform .2s;
}
.hero-dot.active { background: #fff; transform: scale(1.3); }

/* Fallback : hero statique (si aucune slide) */
.hero {
    position: relative;
    background: linear-gradient(135deg, var(--vert) 0%, var(--vert-c) 100%);
    color: #fff;
    padding: 5rem 0;
    text-align: center;
}
.hero-overlay {
    position: absolute; inset: 0;
    background: linear-gradient(135deg, rgba(0,0,0,.55) 0%, rgba(0,0,0,.35) 100%);
}
.hero h1 { font-size: clamp(1.6rem, 4vw, 2.8rem); margin-bottom: 1rem; font-weight: 700; }
.hero-sub { font-size: 1.1rem; opacity: .9; margin-bottom: 2rem; }
.hero .btn-primary { background: #fff; color: var(--vert); font-size: 1rem; padding: .8rem 2rem; }
.hero .btn-primary:hover { background: var(--gris); }
@media (max-width: 600px) {
    .hero-arrow { width: 36px; height: 36px; }
}

/* ── Sections ── */
section { padding: 3rem 0; }
section:nth-child(even) { background: var(--gris); }
section h2 { font-size: 1.8rem; margin-bottom: 2rem; text-align: center; }

/* ── Grille univers ── */
.univers-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 1.5rem;
}
@media (max-width: 1024px) { .univers-grid { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 700px)  { .univers-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 480px)  { .univers-grid { grid-template-columns: 1fr; } }
.univers-card {
    display: block;
    background: #fff;
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    overflow: hidden;
    transition: transform .2s, box-shadow .2s;
    text-decoration: none;
}
.univers-card:hover { transform: translateY(-4px); box-shadow: 0 8px 20px rgba(0,0,0,.15); }
.univers-card img { width: 100%; height: 200px; object-fit: cover; display: block; }
.univers-card-body { padding: 1rem; }
.univers-card-body h3 { font-size: 1.1rem; color: var(--vert); }

/* ── Grille news ── */
.news-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1.5rem;
    margin-bottom: 2rem;
}
@media (max-width: 800px) { .news-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 500px) { .news-grid { grid-template-columns: 1fr; } }
.news-card {
    display: block;
    background: #fff;
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    overflow: hidden;
    transition: transform .2s;
    text-decoration: none;
}
.news-card:hover { transform: translateY(-3px); }
.news-card img { width: 100%; height: 180px; object-fit: cover; display: block; }
.news-card-body { padding: 1rem; }
.news-card-body h3 { font-size: 1rem; margin-bottom: .5rem; color: var(--vert); }
.news-card-body p { font-size: .9rem; color: #666; }
.derniers-articles { text-align: center; }

/* ── Footer ── */
.site-footer { background: var(--footer-bg); color: var(--footer-texte); padding: 3.5rem 0 1.5rem; font-size: .88rem; }
.footer-cols { display: grid; grid-template-columns: 1.6fr 1fr 1fr 1fr 1fr; gap: 2.5rem; margin-bottom: 2.5rem; }
.footer-cols strong { display: block; color: #fff; font-size: .78rem; text-transform: uppercase; letter-spacing: .08em; margin-bottom: .9rem; }
.footer-cols ul { list-style: none; }
.footer-cols li { margin-bottom: .5rem; }
.footer-cols a { color: var(--footer-texte); transition: color .2s; text-decoration: none; }
.footer-cols a:hover { color: #fff; }
.footer-brand p { font-size: .85rem; line-height: 1.6; margin-bottom: .75rem; color: var(--footer-texte); opacity: .8; }
.footer-contact { font-size: .85rem; line-height: 1.8; margin-bottom: .75rem; }
.footer-contact a { color: var(--footer-texte); }
.footer-contact a:hover { color: #fff; }
.footer-bottom { border-top: 1px solid rgba(0,0,0,.15); padding-top: 1.25rem; text-align: center; font-size: .82rem; color: var(--footer-texte); opacity: .85; }
.footer-bottom a { color: var(--footer-texte); text-decoration: none; }
.footer-bottom a:hover { color: #fff; }
.footer-rs { display: flex; gap: .75rem; margin-top: .75rem; }
.footer-rs a { display: flex; align-items: center; justify-content: center; width: 34px; height: 34px; border-radius: 50%; background: rgba(255,255,255,.1); color: #ccc; transition: background .2s, color .2s; text-decoration: none; }
.footer-rs a:hover { background: var(--vert); color: #fff; }
@media (max-width: 1024px) { .footer-cols { grid-template-columns: 1fr 1fr 1fr; } }
@media (max-width: 640px)  { .footer-cols { grid-template-columns: 1fr 1fr; } .footer-brand { grid-column: 1/-1; } }

/* ── Breadcrumb ── */
.breadcrumb { margin: .75rem 0 1.25rem; font-size: .82rem; color: #888; }
.breadcrumb ol { list-style: none; display: flex; gap: .35rem; flex-wrap: wrap; align-items: center; }
.breadcrumb li + li::before { content: '›'; margin-right: .35rem; color: #ccc; }
.breadcrumb a { color: var(--vert); }

/* ── Catalogue layout ── */
.catalogue-page { padding: 1.5rem 0 3rem; }
.catalogue-hero {
    display: flex; gap: 1.75rem; align-items: flex-start;
    margin-bottom: 1.25rem;
}
.catalogue-hero-img {
    width: 220px; height: 160px; object-fit: cover;
    border-radius: var(--radius); flex-shrink: 0;
    border: 1px solid #e5e7eb;
}
.catalogue-hero-body { flex: 1; }
.catalogue-hero .catalogue-titre { margin-bottom: .4rem; }
.catalogue-hero .catalogue-intro { margin-bottom: 0; }
@media (max-width: 600px) {
    .catalogue-hero { flex-direction: column; }
    .catalogue-hero-img { width: 100%; height: 160px; }
}
.catalogue-titre {
    font-size: clamp(1.3rem, 3vw, 1.8rem);
    font-weight: 700;
    margin-bottom: .5rem;
}
.catalogue-intro {
    font-size: .96rem; color: #4b5563; line-height: 1.7;
    margin-bottom: .75rem; max-width: 820px;
}
.catalogue-intro p { margin: 0 0 .5rem; }
.catalogue-intro p:last-child { margin-bottom: 0; }
.catalogue-header-row { display: flex; align-items: center; gap: .75rem; margin-bottom: .5rem; }
.nb-produits { font-size: .85rem; font-weight: 400; color: #999; }
.catalogue-layout {
    display: grid;
    grid-template-columns: 260px 1fr;
    gap: 2rem;
    margin-top: .75rem;
    align-items: start;
}
.catalogue-layout--full { grid-template-columns: 1fr; }

/* ── Sidebar filtres ── */
.filtres-sidebar {
    position: sticky;
    top: 72px;
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 6px;
    max-height: calc(100vh - 90px);
    overflow-y: auto;
    scrollbar-width: thin;
    scrollbar-color: #d1d5db transparent;
}
.filtres-sidebar::-webkit-scrollbar { width: 4px; }
.filtres-sidebar::-webkit-scrollbar-thumb { background: #d1d5db; border-radius: 4px; }

/* Header */
.filtres-sidebar-head {
    position: sticky; top: 0; z-index: 2;
    display: flex; align-items: center; justify-content: space-between;
    padding: .7rem 1rem;
    background: #fff;
    border-bottom: 2px solid var(--vert);
    font-size: .78rem; font-weight: 700;
    text-transform: uppercase; letter-spacing: .06em; color: #374151;
}
.filtres-reset {
    font-size: .7rem; font-weight: 500; color: var(--vert);
    text-decoration: none; letter-spacing: 0;
}
.filtres-reset:hover { text-decoration: underline; }

/* Chips sélection active */
.filtres-actifs {
    display: flex; flex-wrap: wrap; gap: .3rem;
    padding: .5rem .85rem .4rem;
    border-bottom: 1px solid #e8e8e8;
    background: #fafcfa;
}
.filtre-chip {
    display: inline-flex; align-items: center; gap: .2rem;
    background: #e8f5e9; color: var(--vert);
    font-size: .72rem; font-weight: 600;
    padding: .2rem .45rem .2rem .6rem;
    border-radius: 20px; text-decoration: none;
    transition: background .12s;
}
.filtre-chip:hover { background: #c9eacc; }
.filtre-chip-x { font-size: .9rem; opacity: .5; }

/* Groupes avec accordion */
.filtre-groupe {
    border-bottom: 1px solid #f0f0f0;
}
.filtre-groupe:last-child { border-bottom: none; }
.filtre-groupe > summary {
    list-style: none;
    display: flex; align-items: center;
    padding: .65rem 1rem;
    font-size: .8rem; font-weight: 700;
    color: #374151; cursor: pointer; user-select: none;
    gap: .4rem;
}
.filtre-groupe > summary::-webkit-details-marker { display: none; }
.filtre-groupe > summary:hover { color: var(--vert); }
.filtre-groupe-nom { flex: 1; text-transform: uppercase; letter-spacing: .04em; font-size: .72rem; }
.filtre-groupe-count {
    font-size: .65rem; font-weight: 700; color: #9ca3af;
}
.filtre-groupe-count.has-active { color: var(--vert); }
.filtre-groupe-logique {
    font-size: .6rem; font-weight: 700; letter-spacing: .06em;
    color: #fff; background: #83B735; border-radius: 3px;
    padding: 1px 4px; flex-shrink: 0;
}
.filtre-groupe-chevron {
    width: 14px; height: 14px; color: #9ca3af;
    flex-shrink: 0; transition: transform .18s;
}
.filtre-groupe[open] > summary .filtre-groupe-chevron { transform: rotate(180deg); }

/* Valeurs avec checkboxes */
.filtre-groupe-valeurs {
    padding: .2rem 0 .6rem;
}
.filtre-val {
    display: flex; align-items: center; gap: .55rem;
    padding: .3rem 1rem;
    font-size: .855rem; color: #4b5563;
    cursor: pointer; transition: background .08s;
    user-select: none;
}
.filtre-val:hover { background: #f5faf5; color: #1f2937; }
.filtre-val[data-extra] { display: none; }

/* Checkbox custom */
.filtre-cb { display: none; }
.cb-box {
    width: 15px; height: 15px; min-width: 15px;
    border: 1.5px solid #c8d0d8;
    border-radius: 3px; background: #fff;
    display: flex; align-items: center; justify-content: center;
    flex-shrink: 0; transition: all .12s;
}
.filtre-cb:checked ~ .cb-box {
    background: var(--vert); border-color: var(--vert);
}
.filtre-cb:checked ~ .cb-box::after {
    content: '';
    display: block;
    width: 8px; height: 4.5px;
    border-left: 2px solid #fff;
    border-bottom: 2px solid #fff;
    transform: rotate(-45deg) translateY(-1px);
}
.filtre-val:hover .cb-box { border-color: var(--vert); }
.filtre-val-label { flex: 1; line-height: 1.25; }
.filtre-val-nb {
    font-size: .7rem; color: #adb5bd;
    flex-shrink: 0;
}
.filtre-cb:checked ~ .cb-box + .filtre-val-label { color: var(--vert); font-weight: 600; }

/* "Voir plus" */
.filtre-voir-plus {
    display: block; width: 100%;
    padding: .25rem 1rem; text-align: left;
    background: none; border: none;
    font-size: .76rem; color: var(--vert);
    cursor: pointer; font-family: var(--police);
}
.filtre-voir-plus:hover { text-decoration: underline; }

/* Formulaire invisible */
#form-filtres { display: block; }

/* Bouton mobile */
.filtre-mobile-btn {
    display: none; align-items: center; gap: .45rem;
    background: var(--vert); color: #fff; border: none;
    border-radius: var(--radius); padding: .5rem 1rem;
    font-family: var(--police); font-size: .875rem; font-weight: 600;
    cursor: pointer; margin-bottom: 1rem;
}
.filtre-mobile-btn svg { width: 14px; height: 14px; }
.filtre-mobile-count {
    background: rgba(255,255,255,.2);
    font-size: .7rem; border-radius: 99px; padding: .05rem .4rem;
}

/* Drawer mobile overlay */
.filtre-overlay {
    display: none; position: fixed; inset: 0;
    background: rgba(0,0,0,.4); z-index: 400;
}
.filtre-overlay.open { display: block; }
.filtres-sidebar.drawer-open {
    position: fixed; top: 0; left: 0;
    width: 285px; height: 100%; z-index: 401;
    max-height: 100%; overflow-y: auto;
    border-radius: 0; border: none;
    box-shadow: 3px 0 18px rgba(0,0,0,.18);
}
/* Bouton fermer : invisible sur desktop, visible dans le drawer */
.filtre-drawer-close { display: none; }
.filtres-sidebar.drawer-open .filtre-drawer-close {
    display: flex; align-items: center; justify-content: flex-end;
    width: 100%; padding: .6rem .85rem;
    background: var(--vert); border: none;
    font-size: 1.4rem; color: #fff; cursor: pointer;
    font-family: var(--police); line-height: 1;
}
.nb { color: #aaa; font-size: .8rem; }

/* ── Grille produits — flip cards style Fresh ── */
.produits-grid {
    display: flex;
    flex-wrap: wrap;
    margin: 0 -6px;
}
.produits-grille { background: transparent !important; padding: 0; }
.btn-info-card {
    position: absolute;
    bottom: 10px;
    right: 10px;
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background: var(--vert);
    color: #fff;
    font-size: 1rem;
    display: flex;
    align-items: center;
    justify-content: center;
    text-decoration: none;
    opacity: 0;
    transition: opacity .2s;
    z-index: 2;
}
.produit-card-wrap:hover .btn-info-card { opacity: 1; }

.gamme-separateur {
    width: 100%;
    padding: 18px 10px 8px;
    margin-top: 10px;
    border-bottom: 2px solid var(--vert);
    font-size: .9rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .05em;
    color: var(--vert);
}
.gamme-separateur:first-child { margin-top: 0; }

.produit-card-wrap {
    width: calc(25% - 0px);
    height: 380px;
    perspective: 1000px;
    padding: 0 6px 16px;
    position: relative;
    flex-shrink: 0;
    cursor: pointer;
    touch-action: manipulation;
}
.produit-card {
    display: block;
    width: 100%; height: 100%;
    position: relative;
    color: var(--texte);
    text-decoration: none;
}
.produit-card-inner {
    width: 100%; height: 100%;
    position: relative;
    transform-style: preserve-3d;
    transition: transform .42s ease-in-out, box-shadow .25s;
    box-shadow: 0 2px 8px rgba(0,0,0,.08);
    border-radius: var(--radius);
    background: #fff;
    will-change: transform;
}
.produit-card-wrap:hover .produit-card-inner,
.produit-card-wrap.flipped .produit-card-inner {
    transform: rotateY(180deg);
    box-shadow: 0 8px 28px rgba(0,0,0,.14);
}

.produit-card-front,
.produit-card-back {
    position: absolute; inset: 0;
    border-radius: var(--radius);
    backface-visibility: hidden;
    -webkit-backface-visibility: hidden;
    display: flex; flex-direction: column;
    align-items: center; justify-content: center;
    padding: 1.25rem; text-align: center;
    background: #fff;
    overflow: hidden;
}
/* Face avant : désactiver les pointer-events quand la carte est retournée */
.produit-card-wrap:hover .produit-card-front,
.produit-card-wrap.flipped .produit-card-front {
    pointer-events: none;
}
/* Face arrière : pointer-events uniquement quand visible */
.produit-card-back {
    pointer-events: none;
}
.produit-card-wrap:hover .produit-card-back,
.produit-card-wrap.flipped .produit-card-back {
    pointer-events: auto;
}
/* Dos : légère teinte verte + bordure haute colorée */
.produit-card-back {
    transform: rotateY(180deg);
    justify-content: flex-start;
    padding-top: 1.25rem;
    background: #f8fdf2;
    border-top: 3px solid var(--vert);
}

/* Image en premier, nom en dessous */
.produit-card-img {
    flex: 1; display: flex; align-items: center; justify-content: center;
    width: 100%; overflow: hidden; order: 1; position: relative;
}
.produit-card-img img {
    max-width: 100%; max-height: 230px;
    width: auto; height: auto; display: block;
    -webkit-user-drag: none; user-select: none; pointer-events: none;
}
.produit-card-img::after {
    content: 'aménagement-public.fr';
    position: absolute; bottom: 6px; right: 8px;
    font-size: .58rem; font-weight: 600; letter-spacing: .04em;
    color: rgba(255,255,255,.3); text-shadow: 0 1px 2px rgba(0,0,0,.25);
    pointer-events: none; user-select: none;
}
.produit-no-img { width: 100%; height: 180px; background: #eee; border-radius: 4px; }

.produit-card-front h2,
.produit-card-front .card-nom {
    font-size: .9rem; color: #333;
    margin-top: .65rem; margin-bottom: 0; line-height: 1.35;
    order: 2; font-weight: 600;
}
/* Indicateur "retourner" discret sur le recto */
.produit-card-front::after {
    content: '↻';
    position: absolute; bottom: 8px; right: 10px;
    font-size: .75rem; color: var(--vert); opacity: .45;
    pointer-events: none;
}

.produit-card-back .card-nom,
.produit-card-back h3 { font-size: 1rem; color: var(--vert); margin: 0 0 .55rem; line-height: 1.3; font-weight: 700; }
.produit-card-back p  { font-size: .82rem; color: #555; margin: 0 0 .75rem; line-height: 1.55; flex: 1; }
.produit-card-back .btn-voir { margin-top: auto; }
.btn-voir {
    display: inline-block;
    background: var(--vert); color: #fff;
    padding: .55rem 1.4rem; border-radius: var(--radius);
    font-size: .85rem; font-weight: 700;
    transition: background .2s, transform .15s;
    text-decoration: none;
}
.btn-voir:hover { background: var(--vert-c); color: #fff; transform: translateY(-1px); }

/* Bouton devis circulaire (overlay, hors flip) */
.btn-ajouter-devis-card {
    position: absolute; bottom: 18px; right: 18px;
    width: 44px; height: 44px; border-radius: 50%;
    background: var(--vert); color: #fff;
    border: none; cursor: pointer; font-size: 1.3rem; line-height: 1;
    display: flex; align-items: center; justify-content: center;
    box-shadow: 0 0 0 4px rgba(131,183,53,.3);
    opacity: 0;
    transition: opacity .2s, transform .15s, background .2s;
    z-index: 10;
    font-weight: 700;
    title: "Ajouter au devis";
}
.produit-card-wrap:hover .btn-ajouter-devis-card { opacity: 1; }
.btn-ajouter-devis-card:hover  { background: var(--slate); transform: scale(1.08); }
.btn-ajouter-devis-card.btn-added { background: #27ae60; opacity: 1; }
.btn-ajouter-devis-card:disabled { cursor: default; }

.aucun-produit { padding: 3rem; text-align: center; color: #888; }

/* Pagination */
.pagination { display: flex; align-items: center; justify-content: center; gap: 1.5rem; margin-top: 2rem; padding: 1rem 0; }
.pag-prev, .pag-next { color: var(--vert); font-weight: 600; padding: .5rem 1rem; border: 1px solid var(--vert); border-radius: var(--radius); transition: all .2s; }
.pag-prev:hover, .pag-next:hover { background: var(--vert); color: #fff; }
.pag-info { color: #888; font-size: .9rem; }
.pag-input {
    width: 3.2rem; text-align: center; font-size: .9rem; font-weight: 600;
    color: var(--vert); border: 1px solid var(--vert); border-radius: 6px;
    padding: .2rem .3rem; background: transparent;
    -moz-appearance: textfield;
}
.pag-input::-webkit-outer-spin-button,
.pag-input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.pag-input:focus { outline: none; background: #f0f7e6; }

/* ── Fiche produit ── */
.fiche-produit { padding: 2rem 0 3rem; }
.fiche-layout { display: grid; grid-template-columns: 1fr 1fr; gap: 3rem; margin: 2rem 0; align-items: start; }

/* ── Galerie avec thumbs verticales ── */
.fiche-galerie { position: sticky; top: 1.5rem; }
.galerie-strip { display: flex; gap: .75rem; align-items: flex-start; }
.galerie-thumbs-vert { display: flex; flex-direction: column; gap: .45rem; flex-shrink: 0; }
.thumb-btn { border: 2px solid transparent; border-radius: 6px; padding: 2px; cursor: pointer; background: none; transition: border-color .15s; }
.thumb-btn.active, .thumb-btn:hover { border-color: var(--vert); }
.thumb-btn img { width: 68px; height: 52px; object-fit: contain; border-radius: 4px; display: block; background: #f8f8f8; }
.galerie-main { flex: 1; position: relative; }
.galerie-principale { border-radius: var(--radius); overflow: hidden; background: #fafafa; border: 1px solid #e5e7eb; cursor: zoom-in; position: relative; display: flex; align-items: center; justify-content: center; min-height: 220px; max-height: 420px; }
.galerie-principale::after {
    content: 'aménagement-public.fr';
    position: absolute; bottom: 10px; right: 12px;
    font-size: .65rem; font-weight: 600; letter-spacing: .04em;
    color: rgba(100,100,100,.25); text-shadow: none;
    pointer-events: none; user-select: none;
}
.img-principale { max-width: 100%; max-height: 420px; width: auto; height: auto; display: block; transition: opacity .15s ease; object-fit: contain; -webkit-user-drag: none; user-select: none; }
.galerie-zoom-btn {
    position: absolute; bottom: .6rem; right: .6rem;
    background: rgba(255,255,255,.85); border: 1px solid #e5e7eb; border-radius: 6px;
    width: 36px; height: 36px; display: flex; align-items: center; justify-content: center;
    cursor: pointer; transition: background .15s; color: #374151;
}
.galerie-zoom-btn:hover { background: #fff; }
.galerie-placeholder { display: flex; align-items: center; justify-content: center; min-height: 280px; background: #f3f4f6; border-radius: var(--radius); }

/* Lightbox */
.lightbox {
    position: fixed; inset: 0; z-index: 9999;
    background: rgba(0,0,0,.88);
    display: flex; align-items: center; justify-content: center;
}
.lightbox[hidden] { display: none; }
.lightbox-img { max-width: 90vw; max-height: 88vh; object-fit: contain; border-radius: 4px; }
.lightbox-close {
    position: absolute; top: 1rem; right: 1rem;
    background: rgba(255,255,255,.15); color: #fff; border: none;
    width: 40px; height: 40px; border-radius: 50%; font-size: 1.1rem;
    cursor: pointer; transition: background .15s; z-index: 1;
}
.lightbox-close:hover { background: rgba(255,255,255,.3); }
.lightbox-nav {
    position: absolute; top: 50%; transform: translateY(-50%);
    background: rgba(255,255,255,.15); color: #fff; border: none;
    width: 48px; height: 48px; border-radius: 50%;
    font-size: 2rem; line-height: 1; cursor: pointer;
    transition: background .15s; z-index: 1;
    display: flex; align-items: center; justify-content: center;
}
.lightbox-nav:hover { background: rgba(255,255,255,.3); }
.lightbox-prev { left: 1rem; }
.lightbox-next { right: 1rem; }
.lightbox-counter {
    position: absolute; bottom: 1rem; left: 50%; transform: translateX(-50%);
    color: rgba(255,255,255,.65); font-size: .85rem; letter-spacing: .05em;
    pointer-events: none;
}

/* ── Infos ── */
.fiche-meta-top { display: flex; align-items: center; gap: .75rem; margin-bottom: .4rem; flex-wrap: wrap; }
.fiche-ref { font-size: .78rem; color: #9ca3af; text-transform: uppercase; letter-spacing: .04em; }
.fiche-badge-gamme {
    font-size: .75rem; font-weight: 700; text-transform: uppercase; letter-spacing: .05em;
    background: var(--vert); color: #fff; padding: .2rem .65rem; border-radius: 20px;
}
.fiche-nom { font-size: 1.6rem; line-height: 1.25; margin-bottom: .75rem; }
.fiche-desc-courte { color: #444; margin-bottom: 1.25rem; line-height: 1.7; }
.fiche-desc-courte p { margin: 0 0 .5rem; }

/* Specs rapides */
.fiche-specs {
    display: grid; grid-template-columns: 1fr 1fr; gap: .5rem .75rem;
    background: #f8fafc; border: 1px solid #e5e7eb; border-radius: var(--radius);
    padding: .9rem 1.1rem; margin-bottom: 1.5rem;
}
.spec-item { display: flex; flex-direction: column; gap: .1rem; }
.spec-label { font-size: .7rem; text-transform: uppercase; letter-spacing: .05em; color: #9ca3af; font-weight: 600; }
.spec-val { font-size: .88rem; color: #1f2937; font-weight: 500; }

.tag-group { display: flex; align-items: center; flex-wrap: wrap; gap: .35rem; font-size: .83rem; }
.tag-group-label { color: #6b7280; font-weight: 500; }
.tag-filtre { background: #f0fdf4; color: #166534; font-size: .78rem; padding: .2rem .55rem; border-radius: 20px; border: 1px solid #bbf7d0; }

.fiche-etiquettes { display: flex; align-items: center; flex-wrap: wrap; gap: .4rem; margin-top: .1rem; }
.fiche-etiq-label { font-size: .78rem; color: #9ca3af; font-weight: 500; white-space: nowrap; }
.fiche-etiq-chip {
    font-size: .75rem; padding: .2rem .6rem; border-radius: 20px;
    background: #f5f3ff; color: #6d28d9; border: 1px solid #ddd6fe;
    white-space: nowrap; text-decoration: none;
    transition: background .15s, color .15s;
}
.fiche-etiq-chip:hover { background: #ede9fe; color: #4c1d95; }
.fiche-quantite { display: flex; align-items: center; gap: .75rem; margin-top: 1.25rem; }
.fiche-qte-label { font-size: .9rem; font-weight: 600; color: var(--texte); white-space: nowrap; }
.fiche-qte-wrap { display: flex; align-items: center; border: 1.5px solid #d1d5db; border-radius: 8px; overflow: hidden; }
.fiche-qte-btn { width: 36px; height: 36px; background: #f9fafb; border: none; font-size: 1.2rem; cursor: pointer; color: var(--texte); transition: background .15s; }
.fiche-qte-btn:hover { background: var(--vert); color: #fff; }
.fiche-qte-input { width: 56px; height: 36px; border: none; border-left: 1.5px solid #d1d5db; border-right: 1.5px solid #d1d5db; text-align: center; font-size: 1rem; font-weight: 600; color: var(--texte); -moz-appearance: textfield; }
.fiche-qte-input::-webkit-outer-spin-button,
.fiche-qte-input::-webkit-inner-spin-button { -webkit-appearance: none; }
.fiche-qte-unite { font-size: .95rem; font-weight: 600; color: var(--vert); background: #f0f7e6; border: 1px solid #c8e6a0; border-radius: 6px; padding: .2rem .6rem; }
.fiche-actions { display: flex; align-items: center; gap: 1rem; flex-wrap: wrap; margin-top: 1rem; }
.btn-lg { font-size: 1rem; padding: .75rem 1.75rem; }
.fiche-devis-hint { font-size: .82rem; color: var(--vert); margin-top: .4rem; min-height: 1.2em; }
.fiche-contact-hint { margin-top: 1rem; font-size: .82rem; color: #6b7280; display: flex; align-items: center; gap: .35rem; }
.fiche-contact-hint a { color: var(--vert); }
.btn-fiche-pdf {
    display: inline-flex; align-items: center; gap: .45rem;
    margin-top: 1rem;
    padding: .55rem 1.1rem;
    font-size: .82rem; font-weight: 600;
    color: #555;
    border: 1.5px solid #d1d5db;
    border-radius: 6px;
    background: #fff;
    text-decoration: none;
    transition: border-color .15s, color .15s, background .15s;
}
.btn-fiche-pdf:hover { border-color: var(--vert); color: var(--vert); background: #f4f8ee; }
.fiche-options { margin-top: 1.25rem; display: flex; flex-direction: column; gap: .85rem; }
.fiche-option-groupe { border-top: 1px solid #e5e7eb; padding-top: .75rem; }
.fiche-option-groupe.has-error .option-erreur { display: block !important; }
.fiche-option-label { font-size: .78rem; font-weight: 700; color: #374151; margin-bottom: .45rem; text-transform: uppercase; letter-spacing: .06em; }
.option-requis { color: var(--vert); margin-left: 2px; }
/* Radios */
.fiche-option-radios { display: flex; flex-wrap: wrap; gap: .35rem; }
.option-radio-label { cursor: pointer; }
.option-radio-btn {
    display: inline-block; padding: .3rem .75rem;
    background: #f9fafb; border: 1.5px solid #d1d5db;
    border-radius: 5px; font-size: .82rem; color: #374151;
    transition: border-color .12s, background .12s, color .12s;
    user-select: none;
}
.option-radio-label input:checked + .option-radio-btn {
    border-color: var(--vert); background: #f4f8ee; color: #3a6010; font-weight: 600;
}
.option-radio-btn:hover { border-color: var(--vert); }
/* Select */
.option-select {
    width: 100%; padding: .45rem .65rem;
    border: 1.5px solid #d1d5db; border-radius: 6px;
    font-size: .88rem; color: #374151; background: #fff;
    cursor: pointer;
}
.option-select:focus { outline: none; border-color: var(--vert); box-shadow: 0 0 0 3px rgba(131,183,53,.15); }
/* Erreur */
.option-erreur { font-size: .75rem; color: #dc2626; margin-top: .3rem; }
.fiche-option-groupe.has-error .option-select,
.fiche-option-groupe.has-error .option-radio-btn { border-color: #dc2626; }

/* Onglets */
.fiche-tabs { margin-top: 3rem; border-top: 1px solid #e5e7eb; }
.tabs-nav { display: flex; gap: 0; border-bottom: 2px solid #e5e7eb; margin-bottom: 0; overflow-x: auto; }
.tab-btn {
    background: none; border: none; padding: .85rem 1.5rem;
    font-size: .9rem; font-weight: 500; color: #6b7280;
    cursor: pointer; border-bottom: 2px solid transparent;
    margin-bottom: -2px; white-space: nowrap; transition: color .15s, border-color .15s;
}
.tab-btn:hover { color: var(--texte); }
.tab-btn.active { color: var(--vert); border-bottom-color: var(--vert); font-weight: 600; }
.tab-panel { display: none; padding: 2rem 0; }
.tab-panel.active { display: block; animation: fadePanel .2s ease; }
@keyframes fadePanel { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: translateY(0); } }

/* Contenu onglet caractéristiques */
.caract-table { border-collapse: collapse; font-size: .9rem; }
.caract-table th { text-align: left; color: #6b7280; font-weight: 500; padding: .5rem 2rem .5rem 0; width: 160px; }
.caract-table td { color: var(--texte); padding: .5rem 0; border-bottom: 1px solid #f3f4f6; }
.caract-filtres { margin-top: 1.5rem; display: flex; flex-direction: column; gap: .6rem; }
.caract-row { display: flex; align-items: flex-start; gap: 1rem; font-size: .88rem; }
.caract-label { min-width: 140px; color: #6b7280; font-weight: 500; padding-top: .15rem; }
.caract-val { display: flex; flex-wrap: wrap; gap: .35rem; }
.normes-content { font-size: .88rem; line-height: 1.8; color: #374151; white-space: pre-line; }
.content-html p { margin-bottom: .75rem; }
.content-html ul, .content-html ol { margin: .5rem 0 .75rem 1.5rem; }
.content-html li { margin-bottom: .3rem; }
.content-html table { width: 100%; border-collapse: collapse; margin: 1rem 0; font-size: .9rem; }
.content-html th, .content-html td { border: 1px solid #ddd; padding: .5rem .75rem; text-align: left; }
.content-html th { background: var(--gris); }

/* ── Erreur 404 ── */
.error-page { text-align: center; padding: 6rem 0; }
.error-page h1 { font-size: 2rem; margin-bottom: 1rem; }
.error-page p { color: #666; margin-bottom: 2rem; }

/* ── News liste ── */
.news-page { padding: 1.5rem 0 3rem; }
.news-page h1 { font-size: 1.8rem; margin-bottom: .5rem; }
.news-intro { color: #666; margin-bottom: 2rem; }

.news-liste-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1.75rem;
    margin-bottom: 2.5rem;
}
@media (max-width: 800px) { .news-liste-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 500px) { .news-liste-grid { grid-template-columns: 1fr; } }
.news-cards-grid {
    display: flex;
    flex-wrap: wrap;
    margin: 0 -6px 2.5rem;
}
.news-liste-card {
    background: #fff; border-radius: var(--radius); box-shadow: var(--shadow);
    overflow: hidden; transition: transform .2s; display: flex; flex-direction: column;
}
.news-liste-card:hover { transform: translateY(-3px); }
.news-liste-img { height: 200px; overflow: hidden; background: var(--gris); flex-shrink: 0; }
.news-liste-img img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .3s; }
.news-liste-card:hover .news-liste-img img { transform: scale(1.04); }
.news-no-img { width: 100%; height: 100%; background: #e0e0e0; }
.news-liste-body { padding: 1.1rem; display: flex; flex-direction: column; gap: .5rem; flex: 1; }
.news-date { font-size: .8rem; color: #aaa; text-transform: uppercase; letter-spacing: .04em; }
.news-vues { display: flex; align-items: center; gap: .3rem; font-size: .78rem; color: #aaa; }
.news-liste-body h2, .news-liste-body h3 { font-size: 1rem; line-height: 1.35; color: var(--texte); }
.news-liste-body p { font-size: .88rem; color: #666; flex: 1; }

/* ── News article ── */
.news-article { padding-bottom: 3rem; }
.news-article-inner { max-width: 820px; margin: 0 auto; padding: 1.5rem 1.5rem 2rem; }
.news-article-header { margin-bottom: 2rem; }
.news-article-header h1 { font-size: clamp(1.4rem, 3vw, 2rem); margin: .75rem 0; line-height: 1.3; }
.news-chapeau { font-size: 1.1rem; color: #444; line-height: 1.6; border-left: 3px solid var(--vert); padding-left: 1rem; margin: 1rem 0; }
.news-auteur { font-size: .85rem; color: #999; }
.news-vues { font-size: .82rem; color: #bbb; }
.news-article-img { margin-bottom: 2rem; border-radius: var(--radius); overflow: hidden; }
.news-article-img img { width: 100%; height: auto; display: block; }
.news-article-contenu { line-height: 1.75; font-size: 1rem; }
.news-article-contenu h2 { font-size: 1.3rem; margin: 2rem 0 .75rem; }
.news-article-contenu h3 { font-size: 1.1rem; margin: 1.5rem 0 .5rem; }
.news-article-cta {
    margin-top: 3rem; padding: 2rem;
    background: var(--gris); border-radius: var(--radius);
    text-align: center;
}
.news-article-cta p { margin-bottom: 1rem; color: #555; }

.news-related { background: var(--gris); padding: 3rem 0; margin-top: 2rem; }
.news-related .carousel-item,
.news-suite .carousel-item { flex: 0 0 25%; }
@media (max-width: 1199px) { .news-related .carousel-item, .news-suite .carousel-item { flex: 0 0 33.333%; } }
@media (max-width: 899px)  { .news-related .carousel-item, .news-suite .carousel-item { flex: 0 0 50%; } }
@media (max-width: 599px)  { .news-related .carousel-item, .news-suite .carousel-item { flex: 0 0 100%; } }

/* ── Templates news ── */
/* Bannière */
.news-hero { position: relative; max-height: 520px; overflow: hidden; background: #111; }
.news-hero-img img { width: 100%; height: 520px; object-fit: cover; display: block; opacity: .65; }
.news-hero-overlay { position: absolute; inset: 0; display: flex; flex-direction: column; justify-content: flex-end; padding: 2.5rem; }
.news-hero-overlay h1 { color: #fff; font-size: clamp(1.5rem, 4vw, 2.4rem); margin: .5rem 0; line-height: 1.2; text-shadow: 0 2px 8px rgba(0,0,0,.4); }
.news-hero-overlay .news-chapeau { color: rgba(255,255,255,.9); font-size: 1.05rem; max-width: 700px; }
.breadcrumb--light ol { padding: 0; margin: 0 0 .5rem; list-style: none; display: flex; gap: .4rem; font-size: .8rem; flex-wrap: wrap; }
.breadcrumb--light li { color: rgba(255,255,255,.7); }
.breadcrumb--light a { color: rgba(255,255,255,.85); text-decoration: none; }
.news-date--light { font-size: .8rem; color: rgba(255,255,255,.7); margin-bottom: .3rem; display: block; }
.news-article--banniere .news-article-inner { padding-top: 1.5rem; }

/* Magazine */
.news-magazine-layout { display: grid; grid-template-columns: 1fr 380px; gap: 3rem; align-items: start; }
.news-magazine-img img { width: 100%; height: auto; border-radius: var(--radius); display: block; object-fit: cover; }
.news-magazine-media { position: sticky; top: 1.5rem; }

/* ── Templates produit ── */
/* Vitrine */
.fiche-produit--vitrine .fiche-vitrine-galerie { width: 100%; background: var(--gris); margin-bottom: 2rem; }
.fiche-produit--vitrine .vitrine-principale img { width: 100%; max-height: 560px; object-fit: contain; display: block; margin: 0 auto; }
.fiche-produit--vitrine .vitrine-thumbs { display: flex; gap: .5rem; padding: .75rem 1rem; overflow-x: auto; background: #fff; border-top: 1px solid #e5e7eb; }
.fiche-produit--vitrine .vitrine-thumbs .thumb-btn { flex-shrink: 0; width: 70px; height: 70px; border: 2px solid transparent; border-radius: 4px; overflow: hidden; background: none; padding: 0; cursor: pointer; }
.fiche-produit--vitrine .vitrine-thumbs .thumb-btn.active { border-color: var(--vert); }
.fiche-produit--vitrine .vitrine-thumbs img { width: 100%; height: 100%; object-fit: cover; }
.fiche-vitrine-info { display: grid; grid-template-columns: 1fr 300px; gap: 2.5rem; margin-bottom: 2rem; }
.fiche-vitrine-cta { position: sticky; top: 1.5rem; }

/* ── Responsive ── */
@media (max-width: 1100px) {
    .produit-card-wrap { width: calc(33.333% - 0px); }
    .news-magazine-layout { grid-template-columns: 1fr; }
    .news-magazine-media { position: static; }
    .fiche-vitrine-info { grid-template-columns: 1fr; }
}
@media (max-width: 1024px) {
    .main-nav a { font-size: .82rem; }
    .main-nav ul { gap: .75rem; }
    .header-actions { gap: .5rem; }
    .header-actions .btn-link { font-size: .82rem; }
}
@media (max-width: 860px) {
    .main-nav, .header-actions .btn-link { display: none; }
    .site-header .container { justify-content: space-between; }
    .hamburger-label { display: flex; }
}
@media (max-width: 600px) {
    /* Le logo (largeur fixe jusqu'à 240px) pousse le bouton Devis hors écran
       sur les petits mobiles (ex: iPhone SE 375px) — on le réduit ici. */
    .site-header .container { gap: .5rem; }
    .logo-img { max-width: 130px; max-height: 46px; }
    .header-actions { gap: .4rem; }
    .header-search-btn { padding: .3rem; }
    .btn-devis { padding: .5rem .75rem; font-size: .85rem; }
    .header-panier-badge { font-size: .65rem; }
}
@media (max-width: 768px) {
    .produit-card-wrap { width: calc(50% - 0px); }
}
@media (max-width: 800px) {
    .catalogue-layout { grid-template-columns: 1fr; }
    .filtres-sidebar { display: none; position: fixed; max-height: 100%; border-radius: 0; }
    .filtres-sidebar.drawer-open { display: block; }
    .filtre-mobile-btn { display: flex; }
    .filtre-drawer-close { display: block; }
}
@media (max-width: 480px) {
    .produit-card-wrap { width: 100%; height: 340px; }
}
@media (min-width: 801px) {
    .filtres-sidebar {
        background: transparent;
        border: none;
        border-radius: 0;
        box-shadow: none;
    }
    .filtres-sidebar-head { display: none; }
}

/* ════════════════════════════════════════════════
   MODULE DEVIS
   ════════════════════════════════════════════════ */

/* ── Badge panier header ── */
.header-panier-badge {
    display: inline-flex; align-items: center; justify-content: center;
    background: #e74c3c; color: #fff; border-radius: 999px;
    font-size: .7rem; font-weight: 700;
    min-width: 1.35em; height: 1.35em;
    padding: 0 .3em;
    margin-left: .35rem;
    vertical-align: middle;
    line-height: 1;
}

/* ── Bouton catalogue — voir section flip cards ci-dessus ── */

/* ── Page panier/formulaire ── */
.devis-page { padding: 2rem 0 4rem; }
.devis-titre { font-size: clamp(1.4rem, 3vw, 2rem); margin-bottom: 1.5rem; }

.devis-section {
    background: #fff;
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    padding: 2rem;
    margin-bottom: 2rem;
}
.devis-section-disabled { opacity: .5; pointer-events: none; }
.devis-section-titre {
    font-size: 1.15rem; font-weight: 700;
    margin: 0 0 1.5rem;
    display: flex; align-items: center; gap: .65rem;
}
.devis-step {
    display: inline-flex; align-items: center; justify-content: center;
    background: var(--vert); color: #fff; border-radius: 50%;
    width: 1.8em; height: 1.8em;
    font-size: .9rem; font-weight: 700; flex-shrink: 0;
}
.panier-badge {
    background: var(--vert); color: #fff;
    border-radius: 999px; font-size: .75rem; font-weight: 700;
    padding: .15em .6em;
}

/* ── Tableau panier ── */
.devis-table { width: 100%; border-collapse: collapse; font-size: .93rem; }
.devis-table th, .devis-table td {
    padding: .75rem .6rem;
    border-bottom: 1px solid #eee;
    vertical-align: middle;
    text-align: left;
}
.devis-table thead th { font-weight: 600; color: #555; font-size: .82rem; text-transform: uppercase; letter-spacing: .04em; }
.col-img  { width: 70px; }
.col-nom  { }
.col-ref  { width: 140px; color: #888; font-size: .85rem; }
.col-qte  { width: 130px; }
.col-action { width: 48px; }

.panier-img { width: 60px; height: 50px; object-fit: cover; border-radius: 4px; display: block; }
.panier-no-img { width: 60px; height: 50px; background: #eee; border-radius: 4px; }
.panier-lien { color: var(--texte); text-decoration: none; font-weight: 500; }
.panier-lien:hover { color: var(--vert); }
.panier-options { margin: .3rem 0 0; padding: 0; list-style: none; font-size: .78rem; color: #6b7280; display: flex; flex-wrap: wrap; gap: .2rem .75rem; }
.panier-options li { white-space: nowrap; }
.panier-options strong { color: #374151; font-weight: 600; }

/* Contrôle quantité */
.qte-control { display: flex; align-items: center; gap: .3rem; }
.qte-btn {
    width: 1.9rem; height: 1.9rem;
    border: 1px solid #ddd; border-radius: 4px;
    background: #f5f5f5; cursor: pointer; font-size: 1rem; line-height: 1;
    display: flex; align-items: center; justify-content: center;
    color: #444;
    transition: background .15s;
}
.qte-btn:hover { background: var(--vert); color: #fff; border-color: var(--vert); }
.qte-input {
    width: 3.2rem; text-align: center;
    border: 1px solid #ddd; border-radius: 4px;
    padding: .25rem;
    font-size: .9rem;
    -moz-appearance: textfield;
}
.qte-input::-webkit-inner-spin-button,
.qte-input::-webkit-outer-spin-button { -webkit-appearance: none; }
.qte-unite { font-size: .78rem; font-weight: 600; color: var(--vert); text-align: center; margin-top: .2rem; }

.btn-supprimer {
    background: none; border: none; cursor: pointer;
    color: #ccc; font-size: 1.1rem; line-height: 1;
    padding: .35rem;
    border-radius: 4px;
    transition: color .15s, background .15s;
}
.btn-supprimer:hover { color: #e74c3c; background: #fee; }

.devis-vide { text-align: center; padding: 2.5rem 1rem; color: #999; }
.devis-ajouter-hint { margin-top: 1rem; font-size: .88rem; }

/* ── Formulaire ── */
.form-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
}
.form-group { display: flex; flex-direction: column; gap: .35rem; }
.form-group--full { grid-column: 1 / -1; }
.form-group label { font-size: .88rem; font-weight: 600; color: #444; }
.form-group input,
.form-group textarea {
    border: 1px solid #ddd; border-radius: var(--radius);
    padding: .6rem .8rem;
    font-size: 1rem; font-family: inherit;
    transition: border-color .15s, box-shadow .15s;
    width: 100%; box-sizing: border-box;
}
.form-group input:focus,
.form-group textarea:focus {
    outline: none;
    border-color: var(--vert);
    box-shadow: 0 0 0 3px rgba(52,152,72,.12);
}
.form-group textarea { resize: vertical; min-height: 110px; }
.required { color: #e74c3c; margin-left: .1em; }

.devis-submit { margin-top: 1.75rem; display: flex; flex-direction: column; gap: .75rem; align-items: flex-start; }
.devis-rgpd { font-size: .8rem; color: #999; margin: 0; }
.devis-optin { display: flex; align-items: flex-start; gap: .5rem; font-size: .875rem; color: #374151; cursor: pointer; }
.devis-optin input[type="checkbox"] { margin-top: .15rem; flex-shrink: 0; accent-color: var(--vert); }
/* ── Bouton "Ajouter au devis" fiche produit ── */
.btn-added { background: #27ae60 !important; }

/* ── Alertes ── */
.alert { padding: .9rem 1.25rem; border-radius: var(--radius); margin-bottom: 1.25rem; font-size: .93rem; }
.alert-error   { background: #fdecea; color: #c0392b; border: 1px solid #f5c6cb; }
.alert-success { background: #eafaf1; color: #1e8449; border: 1px solid #a9dfbf; }

/* ── Page confirmation ── */
.devis-confirmation { padding: 3rem 0 5rem; }
.confirmation-card {
    max-width: 580px; margin: 0 auto;
    background: #fff; border-radius: var(--radius); box-shadow: var(--shadow);
    padding: 3rem 2.5rem; text-align: center;
}
.confirmation-icone {
    width: 4rem; height: 4rem;
    background: var(--vert); color: #fff;
    border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    font-size: 2rem; font-weight: 700; margin: 0 auto 1.5rem;
}
.confirmation-card h1 { font-size: 1.4rem; margin-bottom: .75rem; }
.confirmation-card p { color: #555; margin-bottom: .6rem; line-height: 1.6; }
.confirmation-ref { font-size: 1rem; color: #888; }
.confirmation-recap {
    background: var(--gris); border-radius: var(--radius);
    padding: .9rem 1.25rem; margin: 1.25rem 0;
    font-size: .92rem; color: #555;
}
.confirmation-actions { display: flex; gap: 1rem; justify-content: center; margin-top: 1.75rem; flex-wrap: wrap; }

/* ── Responsive fiche produit + devis ── */
@media (max-width: 900px) {
    .carousel-item { flex: 0 0 33.333%; }
}
@media (max-width: 768px) {
    .fiche-layout { grid-template-columns: 1fr; gap: 1.5rem; }
    .fiche-galerie { position: static; }
    .galerie-strip { flex-direction: column-reverse; }
    .galerie-thumbs-vert { flex-direction: row; overflow-x: auto; }
    .fiche-nom { font-size: 1.3rem; }
    .tab-btn { padding: .7rem 1rem; font-size: .85rem; }
    .fiche-specs { grid-template-columns: 1fr; }
    .produits-grille--compact { grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); }
    .carousel-item { flex: 0 0 50%; }
}
@media (max-width: 640px) {
    .form-grid { grid-template-columns: 1fr; }
    .col-ref { display: none; }
    .devis-section { padding: 1.25rem; }
    .confirmation-card { padding: 2rem 1.25rem; }
    .fiche-actions { flex-direction: column; align-items: stretch; }
    .fiche-actions .btn-primary,
    .fiche-actions .btn-secondary { text-align: center; }
    .caract-row { flex-direction: column; gap: .25rem; }
    .caract-label { min-width: auto; }
    .carousel-item { flex: 0 0 100%; }
}

/* ════════════════════════════════════════════════
   GALERIE
   ════════════════════════════════════════════════ */
.galerie-page { padding: 2rem 0 4rem; }
.galerie-titre { font-size: clamp(1.4rem, 3vw, 2rem); margin-bottom: .5rem; }
.galerie-intro { color: #666; margin-bottom: 1.75rem; }
.galerie-vide  { color: #999; text-align: center; padding: 3rem; }

.galerie-filtres { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: 2rem; }
.galerie-filtre-btn {
    padding: .4rem 1rem; border-radius: 999px;
    border: 2px solid var(--vert); color: var(--vert);
    font-size: .85rem; font-weight: 700; font-family: inherit;
    text-decoration: none; transition: all .2s; background: transparent;
    cursor: pointer;
}
.galerie-filtre-btn:hover,
.galerie-filtre-btn.actif { background: var(--vert); color: #fff; }

.galerie-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 1rem;
    margin-bottom: 2rem;
}
/* Mode flipcard galerie */
.galerie-grid--flip { grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); }
.galerie-flip-wrap {
    height: 300px;
    width: 100%;
    padding: 0;
    perspective: 600px;
    position: relative;
    flex-shrink: unset;
}
.galerie-flip-card { height: 100%; width: 100%; }
.galerie-flip-card .produit-card-front,
.galerie-flip-card .produit-card-back {
    padding: .75rem; border-radius: var(--radius);
    border: 1px solid #e5e7eb;
}
.galerie-flip-card .produit-card-back {
    background: #fff; color: var(--texte);
    justify-content: flex-start; padding-top: 1rem;
    border: 1px solid #e5e7eb;
}
.galerie-flip-card .produit-card-back .card-nom { color: var(--vert); }
.galerie-flip-card .produit-card-back p { color: #4b5563; }
.galerie-flip-card .produit-card-img {
    height: 170px; flex: unset;
    border-radius: calc(var(--radius) - 2px); overflow: hidden;
}
.galerie-flip-card .produit-card-img img { width: 100%; height: 100%; object-fit: cover; }
.galerie-item { border-radius: var(--radius); overflow: hidden; }
.galerie-item-btn {
    position: relative; display: block; width: 100%;
    border: none; padding: 0; cursor: pointer; background: none;
    border-radius: var(--radius); overflow: hidden;
}
.galerie-img {
    width: 100%; height: 220px;
    object-fit: cover; display: block;
    transition: transform .35s ease;
}
.galerie-item-btn:hover .galerie-img { transform: scale(1.05); }
.galerie-overlay {
    position: absolute; inset: 0;
    background: linear-gradient(to top, rgba(0,0,0,.6) 0%, transparent 55%);
    opacity: 0; transition: opacity .25s;
    display: flex; flex-direction: column;
    justify-content: flex-end; padding: .75rem;
    gap: .25rem;
}
.galerie-item-btn:hover .galerie-overlay { opacity: 1; }
.galerie-label { color: #fff; font-size: .88rem; font-weight: 700; line-height: 1.3; }
.galerie-tag {
    display: inline-block; background: var(--vert); color: #fff;
    font-size: .72rem; font-weight: 700; padding: .1em .5em; border-radius: 3px;
    align-self: flex-start;
}

/* Lightbox */
.lightbox {
    position: fixed; inset: 0; z-index: 1000;
    background: rgba(0,0,0,.92);
    display: flex; align-items: center; justify-content: center;
}
.lightbox[hidden] { display: none; }
.lightbox-inner { max-width: 90vw; max-height: 90vh; text-align: center; }
.lightbox-img { max-width: 90vw; max-height: 82vh; object-fit: contain; border-radius: 4px; display: block; }
.lightbox-caption { color: #ccc; font-size: .9rem; margin-top: .75rem; }
.lightbox-close,
.lightbox-prev,
.lightbox-next {
    position: fixed; background: rgba(255,255,255,.15); color: #fff;
    border: none; border-radius: 50%; cursor: pointer;
    width: 2.75rem; height: 2.75rem; font-size: 1.4rem; line-height: 1;
    transition: background .2s;
    display: flex; align-items: center; justify-content: center;
}
.lightbox-close:hover,
.lightbox-prev:hover,
.lightbox-next:hover { background: var(--vert); }
.lightbox-close { top: 1.25rem; right: 1.25rem; font-size: 1rem; }
.lightbox-prev  { left: 1.25rem; top: 50%; transform: translateY(-50%); }
.lightbox-next  { right: 1.25rem; top: 50%; transform: translateY(-50%); }

@media (max-width: 640px) {
    .galerie-grid { grid-template-columns: 1fr 1fr; }
    .lightbox-prev { left: .5rem; }
    .lightbox-next { right: .5rem; }
}

/* ════════════════════════════════════════════════
   PAGES LÉGALES
   ════════════════════════════════════════════════ */
.page-legale { padding: 1.5rem 0 4rem; }
.page-legale-inner {
    max-width: 820px; margin: 0 auto;
    background: #fff; border-radius: var(--radius); box-shadow: var(--shadow);
    padding: 2.5rem 3rem;
}
.page-legale-vide { color: #aaa; text-align: center; padding: 3rem 0; }

.content-html h2 { font-size: 1.2rem; margin: 2rem 0 .6rem; color: var(--texte); }
.content-html h3 { font-size: 1rem; margin: 1.5rem 0 .4rem; color: var(--texte); }

/* Case CGV dans le formulaire devis */
.devis-cgv-label {
    display: flex; align-items: flex-start; gap: .5rem;
    font-size: .88rem; color: #444; cursor: pointer;
    margin-bottom: .5rem;
}
.devis-cgv-label input { margin-top: .15rem; flex-shrink: 0; cursor: pointer; }
.devis-cgv-label a { color: var(--vert); text-decoration: underline; }

.form-captcha { margin-top: .25rem; }
.form-captcha label { display: block; font-weight: 600; margin-bottom: .35rem; }
.form-captcha input { border: 2px solid var(--vert); border-radius: 6px; padding: .5rem .75rem; font-size: 1rem; }
.captcha-hint { display: block; margin-top: .25rem; font-size: .78rem; color: #6b7280; }
.field-error { display: block; margin-top: .25rem; font-size: .8rem; color: #dc2626; }

@media (max-width: 640px) {
    .page-legale-inner { padding: 1.5rem 1.25rem; }
}

/* ════════════════════════════════════════════════
   ESPACE CLIENT
   ════════════════════════════════════════════════ */
.ec-login-page { padding: 3rem 0 5rem; }
.ec-login-card {
    max-width: 440px; margin: 0 auto;
    background: #fff; border-radius: var(--radius); box-shadow: var(--shadow);
    padding: 2.5rem 2rem;
}
.ec-login-card h1 { font-size: 1.5rem; margin-bottom: .4rem; }
.ec-login-sub { color: #666; margin-bottom: 1.5rem; font-size: .93rem; }
.ec-form { display: flex; flex-direction: column; gap: 1rem; }
.ec-login-hint { margin-top: 1.5rem; font-size: .82rem; color: #888; text-align: center; line-height: 1.5; }

.ec-page { padding: 2rem 0 4rem; }
.ec-header {
    display: flex; align-items: flex-start; justify-content: space-between;
    flex-wrap: wrap; gap: 1rem;
    margin-bottom: 2rem;
    padding-bottom: 1.5rem;
    border-bottom: 2px solid var(--vert);
}
.ec-header h1 { font-size: 1.5rem; margin-bottom: .2rem; }
.ec-email { color: #888; font-size: .9rem; }

.btn-sm { padding: .45rem 1rem; font-size: .85rem; }

.ec-section {
    background: #fff; border-radius: var(--radius); box-shadow: var(--shadow);
    padding: 1.75rem 2rem; margin-bottom: 2rem;
}
.ec-section h2 { font-size: 1.15rem; margin-bottom: 1.25rem; }
.ec-vide { color: #888; margin-bottom: 1.25rem; }

.ec-table { width: 100%; border-collapse: collapse; font-size: .9rem; }
.ec-table th, .ec-table td {
    padding: .7rem .75rem; border-bottom: 1px solid #f0f0f0;
    text-align: left; vertical-align: middle;
}
.ec-table thead th { font-size: .78rem; text-transform: uppercase; letter-spacing: .04em; color: #888; font-weight: 600; }
.ec-date { color: #aaa; font-size: .85rem; }

.ec-section-contact { text-align: center; }
.ec-section-contact p { color: #666; margin-bottom: 1.25rem; }

@media (max-width: 480px) {
    .ec-login-card { padding: 1.75rem 1.25rem; }
    .ec-table th:nth-child(2), .ec-table td:nth-child(2) { display: none; }
}

/* ── Gamme : produits connexes ───────────────────────────────────────────── */
/* ── Section connexes + Carousel ── */
.connexes-section {
    background: #f8fafc;
    padding: 3rem 0 3.5rem;
    margin-top: 3rem;
    border-top: 2px solid #e5e7eb;
}
.connexes-header {
    display: flex; align-items: center; justify-content: space-between;
    margin-bottom: 1.5rem; flex-wrap: wrap; gap: .75rem;
}
.connexes-titre {
    font-size: 1.25rem; font-weight: 700; color: var(--texte); margin: 0;
}
.connexes-titre span { color: var(--vert); }

/* Zone intro accueil (entre hero et Nos univers) */
.home-intro {
    padding: 3.5rem 0;
    background: #fff;
    border-bottom: 1px solid #f0f0f0;
}
/* Disposition centrée (défaut) */
.home-intro--centree { text-align: center; }
.home-intro--centree .home-intro-titre { margin-left: auto; margin-right: auto; }
.home-intro--centree .home-intro-texte { margin-left: auto; margin-right: auto; }

/* Image centrée (disposition centrée) */
.home-intro-img {
    margin: 0 auto 2rem;
    max-width: 680px;
    border-radius: 12px;
    overflow: hidden;
    box-shadow: 0 4px 20px rgba(0,0,0,.10);
}
.home-intro-img img { width: 100%; display: block; object-fit: cover; }

/* Disposition côte à côte */
.home-intro-split {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 3rem;
    align-items: center;
}
.home-intro-split-img {
    border-radius: 12px;
    overflow: hidden;
    box-shadow: 0 4px 20px rgba(0,0,0,.10);
}
.home-intro-split-img img { width: 100%; display: block; object-fit: cover; aspect-ratio: 4/3; }
@media (max-width: 768px) {
    .home-intro-split { grid-template-columns: 1fr; gap: 1.5rem; }
}

.home-intro-titre {
    font-size: clamp(1.4rem, 3vw, 2rem);
    font-weight: 700;
    color: var(--texte);
    margin-bottom: 1rem;
}
.home-intro-texte {
    font-size: 1.05rem;
    color: #555;
    line-height: 1.75;
    max-width: 800px;
}
.home-intro-texte p { margin-bottom: .75rem; }
.home-intro-texte p:last-child { margin-bottom: 0; }

/* Centrage sections Nos univers + Actualités + modules home */
.univers .connexes-header,
.derniers-articles .connexes-header,
.home-nouveautes .connexes-header,
.home-featured .connexes-header {
    justify-content: center;
    gap: 1.25rem;
}
.univers .connexes-titre,
.derniers-articles .connexes-titre,
.home-nouveautes .connexes-titre,
.home-featured .connexes-titre {
    font-size: 1.6rem;
}

/* Section nouveautés */
.home-nouveautes {
    padding: 3rem 0;
    background: #f9fafb;
}

/* Section produits à la une */
.home-featured {
    padding: 3rem 0;
}

/* Badge "Nouveau" sur les cartes */
.home-badge-new {
    position: absolute;
    top: .6rem;
    left: .6rem;
    background: var(--vert);
    color: #fff;
    font-size: .7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .05em;
    padding: .2rem .55rem;
    border-radius: calc(var(--radius) * 1px);
    z-index: 2;
    pointer-events: none;
}

/* Boutons nav carousel */
.carousel-nav { display: flex; gap: .4rem; }
.carousel-btn {
    width: 38px; height: 38px; border-radius: 50%;
    border: 2px solid #e5e7eb; background: #fff;
    display: flex; align-items: center; justify-content: center;
    cursor: pointer; color: #374151; transition: all .15s;
}
.carousel-btn:hover:not(:disabled) { border-color: var(--vert); color: var(--vert); }
.carousel-btn:disabled { opacity: .35; cursor: default; }

/* Track */
.carousel-wrapper { overflow: hidden; }
.carousel-track {
    display: flex;
    transition: transform .4s cubic-bezier(.25,.46,.45,.94);
}
.carousel-item {
    flex: 0 0 25%; /* 4 visible par défaut */
    padding: 0 .4rem;
    box-sizing: border-box;
}
.carousel-card {
    display: block; text-decoration: none; color: inherit;
    background: #fff; border: 1px solid #e5e7eb; border-radius: var(--radius);
    overflow: hidden; height: 100%;
    transition: box-shadow .2s, transform .2s;
}
.carousel-card:hover { box-shadow: 0 6px 20px rgba(0,0,0,.1); transform: translateY(-2px); }
.carousel-card-img {
    background: #f9fafb; border-bottom: 1px solid #f3f4f6;
    display: flex; align-items: center; justify-content: center;
    height: 160px; overflow: hidden;
}
.carousel-card-img img { width: 100%; height: 160px; object-fit: contain; padding: .5rem; }
.carousel-no-img { width: 100%; height: 160px; background: #f3f4f6; }
.carousel-card-body { padding: .85rem; }
.carousel-card-body h3 { font-size: .88rem; font-weight: 600; margin: 0 0 .35rem; line-height: 1.35; color: var(--texte); }
.carousel-card-body p { font-size: .78rem; color: #6b7280; margin: 0; line-height: 1.4; }

/* Flip cards dans le carousel */
.carousel-item .produit-card-wrap {
    width: 100%;
    height: 320px;
}

/* Dots */
.carousel-dots { display: flex; justify-content: center; gap: .4rem; margin-top: 1.25rem; }

/* Grille statique (sans carousel) */
.static-grid { overflow: visible; }
.static-grid .static-track { flex-wrap: wrap; transform: none !important; transition: none; }

/* Breakpoints alignés sur JS getVisible() : < 1200 → 3, < 900 → 2, < 600 → 1 */
@media (max-width: 1199px) { .static-grid .static-track .carousel-item,
                              .carousel-wrapper .carousel-item { flex: 0 0 33.333%; } }
@media (max-width: 899px)  { .static-grid .static-track .carousel-item,
                              .carousel-wrapper .carousel-item { flex: 0 0 50%; } }
@media (max-width: 599px)  { .static-grid .static-track .carousel-item,
                              .carousel-wrapper .carousel-item { flex: 0 0 100%; } }

/* Univers : 4 → 2 → 1 (jamais 3+1 orphelin)
   Surcharge le 33.333% générique pour rester sur des lignes paires */
.univers-static .static-track .carousel-item { flex: 0 0 25%; }
@media (max-width: 1199px) { .univers-static .static-track .carousel-item { flex: 0 0 50%; } }
@media (max-width: 599px)  { .univers-static .static-track .carousel-item { flex: 0 0 100%; } }

/* Hauteur uniforme static-grid et carousel feat */
.static-grid .carousel-item .produit-card-wrap,
.carousel-wrapper .carousel-item .produit-card-wrap { height: 380px; }
@media (max-width: 1100px) { .static-grid .carousel-item .produit-card-wrap,
                              .carousel-wrapper .carousel-item .produit-card-wrap { height: 360px; } }
@media (max-width: 768px)  { .static-grid .carousel-item .produit-card-wrap,
                              .carousel-wrapper .carousel-item .produit-card-wrap { height: 340px; } }
@media (max-width: 480px)  { .static-grid .carousel-item .produit-card-wrap,
                              .carousel-wrapper .carousel-item .produit-card-wrap { height: 320px; } }
.dot {
    width: 8px; height: 8px; border-radius: 50%; border: none;
    background: #d1d5db; cursor: pointer; padding: 0; transition: background .2s, transform .2s;
}
.dot--active { background: var(--vert); transform: scale(1.3); }

/* Compat ancienne grille (pages non-carousel) */
.produits-grille--compact {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 1rem;
}
.produits-grille--compact .produit-card { background:#fff; border:1px solid #e5e7eb; border-radius:var(--radius); overflow:hidden; transition:box-shadow .15s; }
.produits-grille--compact .produit-card:hover { box-shadow:0 4px 12px rgba(0,0,0,.1); }
.produits-grille--compact .produit-card-link { display:block; color:inherit; text-decoration:none; }
.produits-grille--compact .produit-card-img img { width:100%; height:150px; object-fit:contain; padding:.5rem; }
.produits-grille--compact .produit-card-body { padding:.75rem; }
.produits-grille--compact .produit-card-nom { font-size:.9rem; font-weight:600; color:var(--texte); margin:0 0 .3rem; line-height:1.3; }
.produits-grille--compact .produit-card-desc { font-size:.78rem; color:#6b7280; margin:0; line-height:1.4; }

/* ════════════════════════════════════════════════
   PAGES SERVICE (amenagement-cle-en-main, maintenance)
   ════════════════════════════════════════════════ */
.page-service { }
.service-hero {
    min-height: 420px; background-size: cover; background-position: center;
    position: relative; display: flex; align-items: flex-end;
}
.service-hero-overlay {
    width: 100%; padding: 3rem 0;
    background: linear-gradient(to top, rgba(0,0,0,.75) 0%, rgba(0,0,0,.3) 60%, transparent 100%);
}
.service-hero-overlay .breadcrumb ol { color: rgba(255,255,255,.7); }
.service-hero-overlay .breadcrumb a { color: rgba(255,255,255,.7); }
.service-hero h1 { color: #fff; font-size: clamp(1.6rem, 4vw, 2.4rem); margin: .5rem 0 .75rem; }
.service-hero-sub { color: rgba(255,255,255,.85); font-size: 1.05rem; line-height: 1.55; margin-bottom: 1.5rem; }

.page-service-content { padding: 3rem 0 4rem; }

.service-section { margin-bottom: 3.5rem; }
.service-section-titre { font-size: 1.4rem; margin-bottom: 1.75rem; position: relative; padding-bottom: .6rem; }
.service-section-titre::after { content:''; position:absolute; left:0; bottom:0; width:48px; height:3px; background:var(--vert); border-radius:2px; }

/* Intro 2 colonnes */
.service-intro { display: grid; grid-template-columns: 1fr 1fr; gap: 3rem; align-items: center; }
.service-intro-text h2 { font-size: 1.4rem; margin-bottom: 1rem; }
.service-intro-text p { color: #555; line-height: 1.7; margin-bottom: .85rem; }
.service-intro-img img { width: 100%; border-radius: var(--radius); object-fit: cover; max-height: 340px; }

/* Steps */
.service-steps { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.5rem; }
@media (max-width: 900px) { .service-steps { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 500px) { .service-steps { grid-template-columns: 1fr; } }
.service-step { background: #f9fafb; border: 1px solid #e5e7eb; border-radius: var(--radius); padding: 1.5rem 1.25rem; text-align: center; }
.step-num { width: 44px; height: 44px; border-radius: 50%; background: var(--vert); color: #fff; font-size: 1.1rem; font-weight: 700; display: flex; align-items: center; justify-content: center; margin: 0 auto 1rem; }
.service-step h3 { font-size: 1rem; margin-bottom: .5rem; }
.service-step p { font-size: .85rem; color: #6b7280; line-height: 1.5; margin: 0; }

/* Galerie */
.service-gallery { display: grid; grid-template-columns: repeat(3, 1fr); gap: .75rem; }
.service-gallery-img img { width: 100%; height: 200px; object-fit: cover; border-radius: var(--radius); display: block; transition: transform .3s; }
.service-gallery-img:hover img { transform: scale(1.03); }
.service-gallery-img { overflow: hidden; border-radius: var(--radius); }

/* Cards domaines */
.service-cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.25rem; }
@media (max-width: 800px) { .service-cards { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 500px) { .service-cards { grid-template-columns: 1fr; } }
.service-card { background: #fff; border: 1px solid #e5e7eb; border-radius: var(--radius); padding: 1.5rem; }
.service-card h3 { font-size: 1rem; color: var(--vert); margin-bottom: .5rem; }
.service-card p { font-size: .88rem; color: #555; line-height: 1.55; margin-bottom: 1rem; }
.service-card a { font-size: .85rem; color: var(--vert); font-weight: 600; text-decoration: none; }
.service-card a:hover { text-decoration: underline; }
.service-card--highlight { border-top: 3px solid var(--vert); }

/* Norme */
.service-norme-inner { display: grid; grid-template-columns: 1fr 1fr; gap: 3rem; align-items: center; background: #f0f9e8; border-radius: var(--radius); padding: 2.5rem; }
.service-norme-text h2 { font-size: 1.3rem; margin-bottom: 1rem; }
.service-norme-text p { color: #555; line-height: 1.65; margin-bottom: .85rem; font-size: .93rem; }
.service-norme-list { padding-left: 1.25rem; color: #555; font-size: .9rem; line-height: 1.8; }
.service-norme-img img { width: 100%; border-radius: var(--radius); object-fit: cover; max-height: 280px; }

/* Docs */
.service-docs-grid { display: flex; gap: 1rem; flex-wrap: wrap; }
.service-doc { display: flex; align-items: center; gap: .85rem; padding: 1rem 1.5rem; background: #fff; border: 1px solid #e5e7eb; border-radius: var(--radius); text-decoration: none; color: var(--texte); transition: border-color .2s, box-shadow .2s; }
.service-doc:hover { border-color: var(--vert); box-shadow: 0 2px 8px rgba(0,0,0,.08); }
.service-doc svg { color: var(--vert); flex-shrink: 0; }
.service-doc span { font-size: .88rem; font-weight: 500; }

/* CTA */
.service-cta { margin-top: 3rem; }
.service-cta-inner { background: var(--vert); color: #fff; border-radius: var(--radius); padding: 3rem 2.5rem; text-align: center; }
.service-cta-inner h2 { color: #fff; font-size: 1.5rem; margin-bottom: .75rem; }
.service-cta-inner p { color: rgba(255,255,255,.85); margin-bottom: 1.75rem; font-size: 1rem; }
.service-cta-btns { display: flex; gap: 1rem; justify-content: center; flex-wrap: wrap; }
.service-cta-btns .btn-primary { background: #fff; color: var(--vert); }
.service-cta-btns .btn-primary:hover { background: #f0f0f0; }
.service-cta-btns .btn-secondary { border-color: rgba(255,255,255,.6); color: #fff; }
.service-cta-btns .btn-secondary:hover { border-color: #fff; background: rgba(255,255,255,.1); }

@media (max-width: 768px) {
    .service-intro { grid-template-columns: 1fr; }
    .service-gallery { grid-template-columns: repeat(2, 1fr); }
    .service-norme-inner { grid-template-columns: 1fr; }
    .service-hero { min-height: 320px; }
}
@media (max-width: 480px) {
    .service-gallery { grid-template-columns: 1fr; }
    .service-cta-inner { padding: 2rem 1.25rem; }
}

/* ════════════════════════════════════════════════
   TASK 4 — Améliorations fiche produit
   ════════════════════════════════════════════════ */

/* Galerie : image principale plus haute, transition, zoom hover */
.img-principale { transition: opacity .15s ease, transform .35s ease; }
.galerie-principale:hover .img-principale { transform: scale(1.03); }

/* Info sidebar sticky sur desktop */
.fiche-info { position: sticky; top: 2rem; }

/* Nom produit en plus grand, référence en badge pill */
.fiche-nom { font-size: clamp(1.5rem, 3vw, 2.1rem); font-weight: 700; line-height: 1.2; margin-bottom: .5rem; }
.fiche-accroche { font-size: .97rem; color: #4b5563; line-height: 1.6; margin-bottom: .75rem; }
.fiche-ref {
    display: inline-block;
    font-size: .72rem; font-weight: 600;
    color: #6b7280; background: #f3f4f6;
    border: 1px solid #e5e7eb; border-radius: 20px;
    padding: .2rem .75rem; letter-spacing: .04em;
    text-transform: uppercase; margin-bottom: .5rem;
}

/* Bouton "Ajouter au devis" plus proéminent */
.btn-ajouter-devis {
    display: inline-flex; align-items: center; gap: .55rem;
    font-size: 1.05rem; font-weight: 700;
    padding: .85rem 2rem;
    background: var(--vert); color: #fff;
    border: none; border-radius: var(--radius);
    cursor: pointer; transition: background .18s, transform .12s, box-shadow .18s;
    box-shadow: 0 4px 14px rgba(131,183,53,.35);
}
.btn-ajouter-devis:hover { background: #6fa025; transform: translateY(-1px); box-shadow: 0 6px 18px rgba(131,183,53,.4); }
.btn-ajouter-devis.btn-added { background: #4a7a19; }
.btn-ajouter-devis::before {
    content: '＋';
    font-size: 1.1rem; line-height: 1;
}

/* Onglets : indicateur souligné plus visible */
.tabs-nav { border-bottom: 2px solid #e5e7eb; gap: .25rem; }
.tab-btn {
    font-size: .92rem; font-weight: 600;
    padding: .9rem 1.5rem;
    color: #6b7280; border-bottom: 3px solid transparent;
    transition: color .15s, border-color .15s;
    position: relative;
}
.tab-btn.active {
    color: var(--vert);
    border-bottom-color: var(--vert);
    font-weight: 700;
}
.tab-btn:hover:not(.active) { color: #374151; border-bottom-color: #d1d5db; }

/* Section produits connexes améliorée */
.gamme-connexes {
    background: #f8fafb;
    padding: 3rem 0 4rem;
    margin-top: 3rem;
    border-top: 1px solid #e5e7eb;
}
.gamme-titre {
    font-size: 1.25rem; font-weight: 700;
    margin-bottom: 1.75rem;
    position: relative; padding-bottom: .6rem;
}
.gamme-titre::after {
    content: ''; position: absolute; left: 0; bottom: 0;
    width: 40px; height: 3px;
    background: var(--vert); border-radius: 2px;
}
.produits-grille--compact {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
    gap: 1.25rem;
}
.produits-grille--compact .produit-card {
    background: #fff; border: 1px solid #e5e7eb;
    border-radius: var(--radius); overflow: hidden;
    transition: box-shadow .18s, transform .18s;
}
.produits-grille--compact .produit-card:hover {
    box-shadow: 0 6px 20px rgba(0,0,0,.1);
    transform: translateY(-2px);
}
.produits-grille--compact .produit-card-img img {
    width: 100%; height: 160px; object-fit: contain; padding: .75rem;
    transition: transform .25s;
}
.produits-grille--compact .produit-card:hover .produit-card-img img { transform: scale(1.05); }
.produits-grille--compact .produit-card-body { padding: .85rem; border-top: 1px solid #f3f4f6; }
.produits-grille--compact .produit-card-nom { font-size: .88rem; font-weight: 600; color: var(--texte); margin: 0; line-height: 1.3; }

/* ════════════════════════════════════════════════
   TASK 4 — Template Documentation produit
   ════════════════════════════════════════════════ */

.fiche-produit--documentation { padding: 0; }

/* Hero documentation */
.doc-hero {
    background: linear-gradient(135deg, #1a3a0a 0%, #2d6010 40%, #83B735 100%);
    padding: 3rem 0 4rem;
    color: #fff;
}
.doc-hero .breadcrumb--light ol { padding: 0; margin: 0 0 1.5rem; list-style: none; display: flex; gap: .4rem; font-size: .8rem; flex-wrap: wrap; }
.doc-hero .breadcrumb--light li { color: rgba(255,255,255,.7); }
.doc-hero .breadcrumb--light a { color: rgba(255,255,255,.85); text-decoration: none; }
.doc-hero .breadcrumb--light a:hover { color: #fff; text-decoration: underline; }
.doc-hero-inner { display: grid; grid-template-columns: 1fr 1fr; gap: 3rem; align-items: center; }
.doc-hero-content { display: flex; flex-direction: column; }
.doc-ref-badge {
    display: inline-block; align-self: flex-start;
    font-size: .72rem; font-weight: 700; text-transform: uppercase; letter-spacing: .06em;
    color: #fff; background: rgba(255,255,255,.2); border: 1px solid rgba(255,255,255,.35);
    border-radius: 20px; padding: .2rem .8rem; margin-bottom: .75rem;
}
.doc-hero-titre { font-size: clamp(1.6rem, 4vw, 2.4rem); font-weight: 800; line-height: 1.2; margin-bottom: .5rem; color: #fff; }
.doc-gamme { font-size: .88rem; color: rgba(255,255,255,.75); margin-bottom: .75rem; }
.doc-intro { font-size: .95rem; color: rgba(255,255,255,.85); line-height: 1.65; margin-bottom: 1.5rem; }
.doc-intro p { margin: 0 0 .5rem; }
.doc-hero-actions { display: flex; gap: 1rem; flex-wrap: wrap; }
.doc-cta-primary {
    display: inline-flex; align-items: center; gap: .5rem;
    background: #fff; color: #2d6010;
    font-weight: 700; border: none; border-radius: var(--radius);
    padding: .8rem 1.75rem; font-size: .97rem;
    text-decoration: none; transition: background .15s, box-shadow .15s;
    box-shadow: 0 4px 14px rgba(0,0,0,.2);
}
.doc-cta-primary:hover { background: #f5f5f5; box-shadow: 0 6px 20px rgba(0,0,0,.25); }
.doc-hero-actions .btn-secondary {
    border-color: rgba(255,255,255,.6); color: #fff; background: rgba(255,255,255,.1);
}
.doc-hero-actions .btn-secondary:hover { border-color: #fff; background: rgba(255,255,255,.2); }
.doc-feedback { font-size: .82rem; color: rgba(255,255,255,.9); margin-top: .5rem; min-height: 1.2em; }

/* Image hero */
.doc-hero-image { text-align: center; }
.doc-main-image {
    max-width: 100%; max-height: 420px; object-fit: contain;
    border-radius: var(--radius); background: rgba(255,255,255,.08);
    padding: 1rem; transition: opacity .15s ease;
}
.doc-thumbs { display: flex; gap: .5rem; justify-content: center; margin-top: .75rem; flex-wrap: wrap; }
.doc-thumb-btn {
    width: 60px; height: 60px; border: 2px solid rgba(255,255,255,.3);
    border-radius: 6px; overflow: hidden; cursor: pointer;
    background: rgba(255,255,255,.1); padding: 0; transition: border-color .15s;
}
.doc-thumb-btn.active, .doc-thumb-btn:hover { border-color: rgba(255,255,255,.9); }
.doc-thumb-btn img { width: 100%; height: 100%; object-fit: cover; }

/* Spécifications */
.doc-specs-section { padding: 3rem 0; background: #fff; }
.doc-section-titre {
    font-size: 1.25rem; font-weight: 700;
    margin-bottom: 2rem; position: relative; padding-bottom: .6rem;
}
.doc-section-titre::after { content:''; position:absolute; left:0; bottom:0; width:40px; height:3px; background:var(--vert); border-radius:2px; }
.doc-specs-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 1.5rem; }
.doc-spec-group { background: #f8fafb; border: 1px solid #e5e7eb; border-radius: var(--radius); padding: 1.25rem 1.5rem; }
.doc-spec-group-titre { font-size: .75rem; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: #6b7280; margin-bottom: .85rem; }
.doc-spec-list { margin: 0; padding: 0; display: flex; flex-direction: column; gap: .5rem; }
.doc-spec-row { display: grid; grid-template-columns: 1fr 1fr; gap: .5rem; font-size: .88rem; border-bottom: 1px solid #e5e7eb; padding-bottom: .4rem; }
.doc-spec-row:last-child { border-bottom: none; padding-bottom: 0; }
.doc-spec-row dt { color: #6b7280; font-weight: 500; }
.doc-spec-row dd { color: #1f2937; font-weight: 600; margin: 0; }
.doc-spec-val-full { grid-column: 1 / -1; color: #1f2937; margin: 0; }

/* Normes */
.doc-normes-section { padding: 2.5rem 0; background: #f0f9e8; }
.doc-normes-content { font-size: .9rem; line-height: 1.8; color: #374151; white-space: pre-line; }

/* CTA bas */
.doc-bottom-cta { padding: 3rem 0; background: #fff; border-top: 1px solid #e5e7eb; }
.doc-cta-box {
    display: flex; align-items: center; gap: 2.5rem;
    background: linear-gradient(135deg, #1a3a0a 0%, #2d6010 40%, #83B735 100%);
    border-radius: var(--radius); padding: 2.5rem 3rem; color: #fff;
}
.doc-cta-text { flex: 1; }
.doc-cta-text h2 { color: #fff; font-size: 1.3rem; margin-bottom: .5rem; }
.doc-cta-text p { color: rgba(255,255,255,.85); margin: 0; font-size: .95rem; }
.doc-cta-btns { display: flex; gap: 1rem; flex-wrap: wrap; flex-shrink: 0; }
.doc-cta-btns .btn-primary { background: #fff; color: #2d6010; }
.doc-cta-btns .btn-primary:hover { background: #f5f5f5; }
.doc-cta-btns .btn-secondary { border-color: rgba(255,255,255,.6); color: #fff; }

@media (max-width: 900px) {
    .doc-hero-inner { grid-template-columns: 1fr; }
    .doc-hero-image { order: -1; }
    .doc-cta-box { flex-direction: column; text-align: center; padding: 2rem 1.5rem; }
}
@media (max-width: 600px) {
    .doc-hero { padding: 2rem 0 2.5rem; }
    .doc-specs-grid { grid-template-columns: 1fr; }
}

/* ════════════════════════════════════════════════
   TASK 3 — Templates pages statiques
   ════════════════════════════════════════════════ */

/* page_service.php — hero vert + contenu */
.page-service--tpl { }
.service-tpl-hero {
    background: linear-gradient(135deg, #1a3a0a 0%, #2d6010 40%, #83B735 100%);
    padding: 4rem 0 3.5rem;
    text-align: center;
}
.service-tpl-titre {
    font-size: clamp(1.8rem, 4vw, 2.8rem); font-weight: 800;
    color: #fff; margin-bottom: .75rem; line-height: 1.2;
}
.service-tpl-subtitle {
    font-size: 1.1rem; color: rgba(255,255,255,.85);
    max-width: 680px; margin: 0 auto; line-height: 1.6;
}
.page-service-content { padding: 3rem 0 4rem; }
.service-content { max-width: 960px; margin: 0 auto; }
.service-content h2 { font-size: 1.4rem; margin: 2rem 0 .75rem; }
.service-content h3 { font-size: 1.1rem; margin: 1.5rem 0 .5rem; }
.service-content p { color: #444; line-height: 1.75; margin-bottom: .85rem; }
.service-content ul, .service-content ol { margin: .5rem 0 1rem 1.5rem; }
.service-content li { margin-bottom: .35rem; color: #444; line-height: 1.65; }
.service-content img { max-width: 100%; border-radius: var(--radius); }
.service-content table { width: 100%; border-collapse: collapse; margin: 1rem 0; font-size: .9rem; }
.service-content th, .service-content td { border: 1px solid #ddd; padding: .5rem .75rem; }
.service-content th { background: #f3f4f6; }

/* page_info.php — header accent + colonnes */
.page-info { }
.page-info-header {
    background: #fff; border-bottom: 3px solid var(--vert);
    padding: 2.5rem 0 2rem;
}
.page-info-header-inner { position: relative; padding-left: 1.25rem; }
.page-info-header-inner::before {
    content: ''; position: absolute; left: 0; top: 0; bottom: 0;
    width: 4px; background: var(--vert); border-radius: 2px;
}
.page-info-titre {
    font-size: clamp(1.5rem, 3vw, 2.2rem); font-weight: 700;
    color: var(--texte); margin: 0; line-height: 1.2;
}
.page-info-body { padding: 3rem 0 4rem; }
.page-info-layout { display: grid; grid-template-columns: 1fr 300px; gap: 3rem; align-items: start; }
.page-info-content { max-width: 900px; }
.page-info-content h2 { font-size: 1.25rem; margin: 2rem 0 .75rem; }
.page-info-content h3 { font-size: 1rem; margin: 1.5rem 0 .5rem; }
.page-info-content p { color: #444; line-height: 1.75; margin-bottom: .85rem; }
.page-info-content ul, .page-info-content ol { margin: .5rem 0 1rem 1.5rem; }
.page-info-content li { margin-bottom: .35rem; color: #444; }
.page-info-content img { max-width: 100%; border-radius: var(--radius); }
.page-info-contact-card {
    position: sticky; top: 2rem;
    background: #f0f9e8; border: 1px solid #bbf7d0;
    border-radius: var(--radius); padding: 1.5rem; text-align: center;
}
.page-info-contact-card h3 { font-size: 1rem; font-weight: 700; color: var(--texte); margin-bottom: 1rem; }
.contact-item { display: flex; align-items: center; gap: .5rem; justify-content: center; font-size: .9rem; margin-bottom: .6rem; }
.contact-item a { color: var(--texte); text-decoration: none; font-weight: 500; }
.contact-item a:hover { color: var(--vert); }
.contact-item svg { color: var(--vert); flex-shrink: 0; }
.page-info-cta-btn { display: block; text-align: center; margin-top: 1rem; text-decoration: none; }

@media (max-width: 768px) {
    .page-info-layout { grid-template-columns: 1fr; }
    .page-info-contact-card { position: static; }
}

/* ════════════════════════════════════════════════
   TASK 5 — Bouton quick-add sur cartes catalogue
   ════════════════════════════════════════════════ */

/* Le wrap a déjà position: relative via l'existant ; on s'assure juste */
.produit-card-wrap { position: relative; }

/* Bouton + devis rapide — overlay coin bas droite */
.btn-ajouter-devis-card {
    position: absolute;
    bottom: .6rem; right: .6rem;
    width: 32px; height: 32px;
    background: var(--vert); color: #fff;
    border: none; border-radius: 50%;
    font-size: 1.25rem; line-height: 1;
    display: flex; align-items: center; justify-content: center;
    cursor: pointer;
    box-shadow: 0 2px 8px rgba(0,0,0,.2);
    opacity: 0;
    transition: opacity .18s, transform .18s, background .15s;
    z-index: 2;
}
.produit-card-wrap:hover .btn-ajouter-devis-card { opacity: 1; }
.btn-ajouter-devis-card:hover { background: #6fa025; transform: scale(1.1); }
.btn-ajouter-devis-card.btn-added {
    background: #4a7a19; opacity: 1;
    font-size: .85rem; font-weight: 700;
}

/* Bouton info catalogue (déjà existant, harmonisation) */
.btn-info-card {
    position: absolute;
    bottom: .6rem; right: .6rem;
    width: 32px; height: 32px;
    background: var(--vert); color: #fff;
    border: none; border-radius: 50%;
    font-size: .95rem; line-height: 1;
    display: flex; align-items: center; justify-content: center;
    text-decoration: none;
    box-shadow: 0 2px 8px rgba(0,0,0,.2);
    opacity: 0;
    transition: opacity .18s, transform .18s;
    z-index: 2;
}
.produit-card-wrap:hover .btn-info-card { opacity: 1; }
.btn-info-card:hover { background: #6fa025; transform: scale(1.1); }

/* ════════════════════════════════════════════════
   TASK 1c — Bloc de contenu bas de page catalogue
   ════════════════════════════════════════════════ */
.univers-bloc-bas {
    margin-top: 3rem;
    padding: 2rem;
    background: #f8fbf3;
    border-radius: 8px;
    border-left: 4px solid #83B735;
    font-size: .95rem;
    line-height: 1.7;
}
.univers-bloc-bas h2, .univers-bloc-bas h3 { color: #2d4a1e; margin-bottom: .75rem; }
.univers-bloc-bas a { color: #83B735; }

/* ════════════════════════════════════════════════
   TASK 4 — Tags / description_courte sur cartes catalogue
   ════════════════════════════════════════════════ */
.produit-card-tags {
    display: flex; flex-wrap: wrap; gap: .25rem;
    padding: 0 .75rem .75rem;
}
.produit-card-tag {
    font-size: .65rem; padding: .15rem .45rem;
    background: #f0f4e8; color: #4a7a20; border-radius: 99px;
    white-space: nowrap; border: 1px solid #d4e8b0;
}

/* ── Bloc RDV sidebar (compact) ─────────────────────────────────────────── */
.bloc-rdv-sidebar {
    margin-top: 1.5rem;
    padding: 1.1rem 1rem;
    background: linear-gradient(135deg, #f4faeb 0%, #edf6dc 100%);
    border: 1px solid #d0e8a0;
    border-radius: var(--radius);
    box-shadow: 0 2px 8px rgba(131,183,53,.12);
}
.bloc-rdv-s-icon {
    display: flex; align-items: center; gap: .5rem;
    color: #4a7a20; margin-bottom: .55rem;
    font-size: .88rem; font-weight: 700;
}
.bloc-rdv-s-icon svg { flex-shrink: 0; }
.bloc-rdv-s-text {
    font-size: .8rem; color: #556; line-height: 1.5;
    margin: 0 0 .9rem;
}
.bloc-rdv-s-btn {
    display: block; text-align: center;
    background: var(--vert); color: #fff;
    padding: .55rem .75rem; border-radius: calc(var(--radius) - 2px);
    font-size: .83rem; font-weight: 700;
    text-decoration: none; margin-bottom: .5rem;
    transition: background .2s, transform .15s;
}
.bloc-rdv-s-btn:hover { background: #6a9528; transform: translateY(-1px); }
.bloc-rdv-s-tel {
    display: block; text-align: center;
    font-size: .78rem; color: #4a7a20;
    text-decoration: none; padding: .25rem;
    opacity: .85;
}
.bloc-rdv-s-tel:hover { text-decoration: underline; opacity: 1; }

/* ── Bloc RDV full (bas de page produit) ─────────────────────────────────── */
.bloc-rdv {
    margin: 3rem 0 0;
    background: linear-gradient(120deg, #f0f8e2 0%, #e8f5d0 60%, #f7faf2 100%);
    border: 1px solid #cfe8a8;
    border-radius: var(--radius);
    box-shadow: 0 4px 18px rgba(131,183,53,.13);
    overflow: hidden;
}
.bloc-rdv-inner {
    display: flex; align-items: center; gap: 2rem;
    padding: 2rem 2.5rem; flex-wrap: wrap;
}
.bloc-rdv-icon {
    flex-shrink: 0;
    width: 64px; height: 64px;
    background: var(--vert); border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    color: #fff; box-shadow: 0 4px 14px rgba(131,183,53,.35);
}
.bloc-rdv-content { flex: 1; min-width: 200px; }
.bloc-rdv-title {
    font-size: 1.2rem; font-weight: 700;
    color: #2d4d0e; margin: 0 0 .4rem;
}
.bloc-rdv-text { font-size: .9rem; color: #556; line-height: 1.55; margin: 0; }
.bloc-rdv-text p { margin: 0; }
.bloc-rdv-actions {
    display: flex; flex-direction: column; gap: .6rem;
    flex-shrink: 0; min-width: 200px;
}
.bloc-rdv-btn {
    display: block; text-align: center; text-decoration: none;
    padding: .7rem 1.4rem; border-radius: calc(var(--radius) - 2px);
    font-size: .9rem; font-weight: 700;
    transition: all .2s;
}
.bloc-rdv-btn--primary {
    background: var(--vert); color: #fff;
    box-shadow: 0 3px 10px rgba(131,183,53,.3);
}
.bloc-rdv-btn--primary:hover { background: #6a9528; transform: translateY(-1px); box-shadow: 0 5px 14px rgba(131,183,53,.4); }
.bloc-rdv-btn--secondary {
    background: #fff; color: #4a7a20;
    border: 1.5px solid #b8d97a;
}
.bloc-rdv-btn--secondary:hover { background: #f0f8e2; border-color: var(--vert); }
@media (max-width: 640px) {
    .bloc-rdv-inner { flex-direction: column; text-align: center; padding: 1.5rem; }
    .bloc-rdv-actions { width: 100%; }
}

/* ── Page Mentions légales ───────────────────────────────────────────────── */
.mentions-hero {
    background: #f8f9fa;
    border-bottom: 1px solid #e9ecef;
    padding: 2rem 0 1.75rem;
}
.mentions-hero h1 { font-size: 1.9rem; margin: .4rem 0 .5rem; }
.mentions-maj { font-size: .82rem; color: #999; margin: 0; }

.mentions-body {
    display: flex; gap: 3rem; align-items: flex-start;
    padding-top: 2.5rem; padding-bottom: 4rem;
}
.mentions-toc {
    flex-shrink: 0; width: 230px; position: sticky; top: 1.5rem;
    background: #f8f9fa; border: 1px solid #e4e8ee;
    border-radius: var(--radius); padding: 1.25rem 1.1rem;
    font-size: .83rem;
}
.mentions-toc strong { display: block; margin-bottom: .75rem; font-size: .78rem; text-transform: uppercase; letter-spacing: .06em; color: #999; }
.mentions-toc ol { list-style: decimal; padding-left: 1.1rem; margin: 0; }
.mentions-toc li { margin-bottom: .45rem; line-height: 1.35; }
.mentions-toc a { color: #556; text-decoration: none; transition: color .15s; }
.mentions-toc a:hover { color: var(--vert); }

.mentions-content { flex: 1; min-width: 0; }
.mentions-section { padding-bottom: 2rem; margin-bottom: 2rem; border-bottom: 1px solid #eee; }
.mentions-section:last-child { border-bottom: none; padding-bottom: 0; margin-bottom: 0; }
.mentions-section h2 { font-size: 1.15rem; color: #2d4d0e; margin: 0 0 .9rem; padding-bottom: .5rem; border-bottom: 2px solid #e0eecc; }
.mentions-section h3 { font-size: .97rem; color: var(--texte); margin: 1.1rem 0 .5rem; font-weight: 600; }
.mentions-section p { color: #445; line-height: 1.7; margin: 0 0 .75rem; font-size: .92rem; }
.mentions-section ul { padding-left: 1.4rem; margin: .5rem 0 .75rem; }
.mentions-section li { color: #445; line-height: 1.65; margin-bottom: .4rem; font-size: .92rem; }
.mentions-section a { color: var(--vert); }
.mentions-table { width: 100%; border-collapse: collapse; font-size: .9rem; margin-bottom: .5rem; }
.mentions-table th { text-align: left; font-weight: 600; color: #556; width: 220px; padding: .5rem .75rem .5rem 0; vertical-align: top; white-space: nowrap; }
.mentions-table td { padding: .5rem 0; color: #334; vertical-align: top; }
.mentions-table tr { border-bottom: 1px solid #f0f0f0; }
.mentions-table tr:last-child { border-bottom: none; }
@media (max-width: 860px) {
    .mentions-body { flex-direction: column; }
    .mentions-toc { width: 100%; position: static; }
    .mentions-table th { width: 140px; }
}

/* ── Page À propos ───────────────────────────────────────────────────────── */
.apropos-hero {
    background: linear-gradient(135deg, #f4faeb 0%, #e8f5d0 100%);
    padding: 2.5rem 0 2rem;
    border-bottom: 1px solid #d0e8a0;
}
.apropos-hero h1 { font-size: 2rem; margin: .5rem 0 .75rem; color: var(--texte); }
.apropos-intro { font-size: 1.05rem; color: #556; max-width: 680px; line-height: 1.65; margin: 0; }

.apropos-chiffres {
    display: flex; gap: 1.5rem; flex-wrap: wrap;
    padding: 2rem 0; justify-content: center;
    border-bottom: 1px solid #eee;
    margin-bottom: .5rem;
}
.apropos-chiffre {
    display: flex; flex-direction: column; align-items: center;
    flex: 1; min-width: 140px;
    background: #fff; border: 1px solid #e0eecc;
    border-radius: var(--radius); padding: 1.25rem 1rem;
    box-shadow: 0 2px 8px rgba(131,183,53,.1);
}
.apropos-nb { font-size: 2rem; font-weight: 700; color: var(--vert); line-height: 1; }
.apropos-label { font-size: .82rem; color: #778; margin-top: .35rem; text-align: center; }

.apropos-section { padding: 2.5rem 0; }
.apropos-section--alt { background: #fafdf5; border-top: 1px solid #eef6e0; border-bottom: 1px solid #eef6e0; }
.apropos-section-inner { display: flex; gap: 1.75rem; align-items: flex-start; }
.apropos-icon {
    flex-shrink: 0; width: 56px; height: 56px;
    background: var(--vert); border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    color: #fff; box-shadow: 0 3px 12px rgba(131,183,53,.3);
    margin-top: .25rem;
}
.apropos-section-body { flex: 1; }
.apropos-section-body h2 { font-size: 1.3rem; color: #2d4d0e; margin: 0 0 1rem; }
.apropos-section-body p { color: #445; line-height: 1.7; margin: 0 0 .9rem; }
.apropos-section-body p:last-of-type { margin-bottom: 0; }
.apropos-cta { display: flex; gap: 1rem; flex-wrap: wrap; margin-top: 1.5rem; }
@media (max-width: 640px) {
    .apropos-section-inner { flex-direction: column; }
    .apropos-chiffres { gap: 1rem; }
    .apropos-cta { flex-direction: column; }
    .apropos-cta a { text-align: center; }
}

/* ── Bouton loupe header ── */
.header-search-btn {
    background: none; border: none; cursor: pointer; padding: .4rem;
    color: var(--texte); display: flex; align-items: center;
    border-radius: 6px; transition: background .15s;
}
.header-search-btn:hover { background: rgba(0,0,0,.06); }

/* ── Overlay recherche ── */
.search-overlay {
    position: fixed; inset: 0; z-index: 9000;
    background: rgba(0,0,0,.55);
    display: flex; align-items: flex-start; justify-content: center;
    padding-top: 10vh;
}
.search-overlay-inner {
    background: #fff;
    border-radius: 12px;
    width: 100%; max-width: 620px;
    box-shadow: 0 20px 60px rgba(0,0,0,.25);
    overflow: hidden;
}
.search-form {
    display: flex; align-items: center; gap: .75rem;
    padding: 1rem 1.25rem;
    border-bottom: 1px solid #f3f4f6;
}
.search-form input[type="search"] {
    flex: 1; border: none; outline: none;
    font-size: 1.05rem; color: var(--texte);
    background: transparent;
}
.search-form input[type="search"]::placeholder { color: #9ca3af; }
.search-close {
    background: none; border: none; cursor: pointer;
    font-size: 1.1rem; color: #9ca3af; padding: .25rem .4rem; border-radius: 4px;
}
.search-close:hover { color: var(--texte); background: #f3f4f6; }
.search-results { max-height: 420px; overflow-y: auto; }
.search-list { list-style: none; margin: 0; padding: .4rem 0; }
.search-item {
    display: flex; align-items: center; gap: .7rem;
    padding: .7rem 1.25rem; color: var(--texte); text-decoration: none;
    transition: background .12s;
}
.search-item:hover { background: #f9fafb; }
.search-item-type {
    font-size: .7rem; font-weight: 700; text-transform: uppercase; letter-spacing: .06em;
    color: #83B735; background: rgba(131,183,53,.1); border-radius: 4px;
    padding: 2px 6px; flex-shrink: 0;
}
.search-item-nom { font-size: .9rem; }
.search-more {
    display: block; text-align: center;
    padding: .75rem; font-size: .84rem; color: #4a7a20;
    text-decoration: none; border-top: 1px solid #f3f4f6;
}
.search-more:hover { background: #f9fafb; }
.search-loading, .search-none {
    padding: 1.5rem; text-align: center; color: #9ca3af; font-size: .88rem;
}
.search-item-img {
    width: 46px; height: 46px; object-fit: cover;
    border-radius: 6px; flex-shrink: 0; background: #f3f4f6;
}
.search-item-img--empty {
    display: inline-block; width: 46px; height: 46px;
    border-radius: 6px; background: #f3f4f6; flex-shrink: 0;
}
.search-item-body { display: flex; flex-direction: column; gap: .15rem; min-width: 0; }
.search-more--global { color: #6b7280; }
.search-more--global:hover { color: #374151; }

/* ── Layout fiche produit avec sidebar filtres ── */
.fiche-avec-filtres { padding-top: 1rem; }
.fiche-outer-layout {
    display: grid;
    grid-template-columns: 260px 1fr;
    gap: 2rem;
    align-items: start;
}
.fiche-produit-main { min-width: 0; }
.fiche-outer-layout > .fiche-produit-main:only-child { grid-column: 1 / -1; }
.fiche-produit { padding: 1rem 0 2rem; }
.fiche-filtres-sidebar { top: 72px; }

/* Filtre valeur en mode lien (pas checkbox) */
.filtre-val--link {
    display: flex; align-items: center; gap: .5rem;
    padding: .32rem .2rem; cursor: pointer;
    border-radius: 4px; text-decoration: none;
    color: var(--texte); font-size: .86rem;
    transition: background .12s, color .12s;
}
.filtre-val--link:hover { background: rgba(131,183,53,.08); color: #4a7a20; }
.filtre-val--link .filtre-val-label { flex: 1; }

@media (max-width: 900px) {
    .fiche-outer-layout { grid-template-columns: 1fr; }
    .fiche-filtres-sidebar {
        position: fixed; left: 0; top: 0; bottom: 0;
        width: 280px; z-index: 500; overflow-y: auto;
        transform: translateX(-100%); transition: transform .28s ease;
        box-shadow: none;
    }
    .fiche-filtres-sidebar.drawer-open {
        transform: translateX(0);
        box-shadow: 4px 0 20px rgba(0,0,0,.15);
    }
}

/* ── Bloc contact univers ── */
.univers-contact-bloc {
    background: linear-gradient(135deg, #f0f9e8 0%, #e8f5d4 100%);
    border: 1px solid #c5e08a;
    border-radius: 12px;
    padding: 2rem;
    margin: 2rem 0;
}
.univers-contact-inner {
    display: flex;
    align-items: center;
    gap: 1.5rem;
    flex-wrap: wrap;
}
.univers-contact-titre {
    font-size: 1.1rem;
    font-weight: 700;
    color: #1a1a2e;
    margin: 0 0 .3rem;
}
.univers-contact-texte {
    font-size: .9rem;
    color: #4b5563;
    margin: 0;
    flex: 1;
}
.univers-contact-inner > div {
    flex: 1;
    min-width: 200px;
}

/* ── Bloc intro services (image + texte) ── */
.services-intro-bloc {
    display: flex;
    align-items: flex-start;
    gap: 1.25rem;
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 10px;
    padding: 1.25rem 1.5rem;
    margin: 1.5rem 0;
}
.services-intro-img {
    width: 90px;
    height: 90px;
    object-fit: cover;
    border-radius: 8px;
    flex-shrink: 0;
    border: 1px solid #e5e7eb;
}
.services-intro-texte {
    font-size: .92rem;
    line-height: 1.6;
    color: #374151;
}
@media (max-width: 600px) {
    .services-intro-bloc { flex-direction: column; }
    .services-intro-img { width: 100%; height: 160px; }
}

/* ══════════════════════════════════════════
   Template NEWS SHOWCASE
   ══════════════════════════════════════════ */

/* Hero pleine largeur */
.showcase-hero {
    position: relative;
    min-height: 420px;
    background: #1a2a3a;
    overflow: hidden;
    display: flex;
    align-items: flex-end;
}
.showcase-hero-bg {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center 30%;
    filter: brightness(.55);
}
.showcase-hero-overlay {
    position: relative;
    width: 100%;
    padding: 2.5rem 0 2rem;
    background: linear-gradient(to top, rgba(0,0,0,.65) 0%, rgba(0,0,0,.1) 60%, transparent 100%);
}
.showcase-hero-content { max-width: 720px; }
.showcase-date {
    display: block;
    font-size: .8rem;
    color: rgba(255,255,255,.65);
    text-transform: uppercase;
    letter-spacing: .06em;
    margin-bottom: .4rem;
}
.showcase-hero-content h1 {
    font-size: clamp(1.5rem, 3.5vw, 2.4rem);
    font-weight: 800;
    color: #fff;
    line-height: 1.25;
    margin: 0 0 .6rem;
    text-shadow: 0 2px 8px rgba(0,0,0,.35);
}
.showcase-hero-chapeau {
    font-size: 1rem;
    color: rgba(255,255,255,.85);
    line-height: 1.55;
    margin: .5rem 0 .75rem;
    max-width: 640px;
}
.showcase-meta {
    font-size: .85rem;
    color: rgba(255,255,255,.7);
    margin: 0;
}
/* Breadcrumb blanc sur hero */
.breadcrumb--light ol { padding: 0; margin: 0 0 1rem; }
.breadcrumb--light li,
.breadcrumb--light a { color: rgba(255,255,255,.7) !important; }
.breadcrumb--light li[aria-current] { color: rgba(255,255,255,.9) !important; }
.breadcrumb--light li + li::before { color: rgba(255,255,255,.4) !important; }

/* Chapeau en bandeau accentué */
.showcase-chapeau-wrap {
    background: #f0fdf4;
    border-top: 3px solid var(--vert);
    padding: 1.25rem 0;
}
.showcase-chapeau {
    font-size: 1.1rem;
    line-height: 1.7;
    color: #1a3a2a;
    font-weight: 500;
    margin: 0;
    max-width: 820px;
}

/* Conteneur principal sections */
.showcase-container { max-width: 1100px; margin: 0 auto; padding: 0 1.5rem; }

/* ── Blocs alternés image / texte ── */
.sc-bloc {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 3rem;
    align-items: center;
    padding: 3rem 0;
    border-bottom: 1px solid #f0f0f0;
}
.sc-bloc:last-of-type { border-bottom: none; }
.sc-bloc--text { grid-template-columns: 1fr; max-width: 820px; margin: 0 auto; }
.sc-bloc--reverse .sc-bloc-img { order: 2; }
.sc-bloc--reverse .sc-bloc-body { order: 1; }

.sc-bloc-img img {
    width: 100%;
    height: 320px;
    object-fit: cover;
    border-radius: 12px;
    box-shadow: 0 8px 30px rgba(0,0,0,.12);
    display: block;
}
.sc-bloc-extra-imgs { margin-top: 1rem; display: flex; gap: .75rem; }
.sc-bloc-extra-imgs img { width: 100%; height: 120px; object-fit: cover; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,.1); }

.sc-bloc-titre {
    font-size: 1.35rem;
    font-weight: 700;
    color: #111;
    margin: 0 0 1rem;
    padding-bottom: .5rem;
    border-bottom: 3px solid var(--vert);
    display: inline-block;
}
.sc-bloc-texte { font-size: .97rem; line-height: 1.75; color: #333; }
.sc-bloc-texte p { margin: 0 0 .9rem; text-align: left !important; }
.sc-bloc-texte p:empty { display: none; }
.sc-bloc-texte strong, .sc-bloc-texte b { color: #111; }
.sc-bloc-texte blockquote {
    border-left: 4px solid var(--vert);
    margin: 1.25rem 0;
    padding: .75rem 1rem;
    background: #f0fdf4;
    border-radius: 0 8px 8px 0;
    font-style: italic;
    color: #1a3a2a;
}
.sc-bloc-texte blockquote a { color: var(--vert); }

@media (max-width: 800px) {
    .sc-bloc { grid-template-columns: 1fr; gap: 1.5rem; padding: 2rem 0; }
    .sc-bloc--reverse .sc-bloc-img { order: 0; }
    .sc-bloc--reverse .sc-bloc-body { order: 0; }
    .sc-bloc-img img { height: 220px; }
}

/* CTA bloc vendeur */
.showcase-cta-block {
    margin: 3rem 0;
    background: linear-gradient(135deg, #0f2817 0%, #1e5631 100%);
    border-radius: 14px;
    padding: 2rem 2.5rem;
    color: #fff;
}
.showcase-cta-inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 2rem;
    flex-wrap: wrap;
}
.showcase-cta-titre {
    font-size: 1.25rem;
    font-weight: 700;
    margin: 0 0 .3rem;
}
.showcase-cta-sub {
    font-size: .9rem;
    color: rgba(255,255,255,.8);
    margin: 0;
}
.showcase-cta-actions {
    display: flex;
    gap: .75rem;
    flex-shrink: 0;
    flex-wrap: wrap;
}
.showcase-cta-actions .btn-primary {
    background: #fff;
    color: #1e5631;
    font-weight: 700;
    border: none;
}
.showcase-cta-actions .btn-primary:hover { background: #e8f5e9; }
.btn-devis-outline {
    display: inline-block;
    padding: .6rem 1.25rem;
    border: 2px solid rgba(255,255,255,.6);
    border-radius: 6px;
    color: #fff;
    font-size: .9rem;
    font-weight: 600;
    text-decoration: none;
    transition: border-color .15s, background .15s;
}
.btn-devis-outline:hover {
    border-color: #fff;
    background: rgba(255,255,255,.1);
}

@media (max-width: 700px) {
    .showcase-hero { min-height: 300px; }
    .showcase-cta-block { padding: 1.5rem; }
    .showcase-cta-inner { flex-direction: column; align-items: flex-start; }
    .showcase-container { padding: 1.5rem 1rem 0; }
}

/* ═══════════════════════════════════════════════════════════════════════════
   TEMPLATES NEWS — editorial · galerie · dossier · landing
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── Utilitaire partagé ─────────────────────────────────────────────────── */
.news-article--editorial .content-html p,
.news-article--galerie   .content-html p,
.news-article--dossier   .content-html p,
.news-article--landing   .content-html p { margin: 0 0 1rem; text-align: left !important; }
.news-article--editorial .content-html p:empty,
.news-article--galerie   .content-html p:empty,
.news-article--dossier   .content-html p:empty,
.news-article--landing   .content-html p:empty { display: none; }
.news-article--editorial .content-html strong,
.news-article--galerie   .content-html strong,
.news-article--dossier   .content-html strong,
.news-article--landing   .content-html strong { color: #111; }
.news-article--editorial .content-html blockquote,
.news-article--galerie   .content-html blockquote,
.news-article--dossier   .content-html blockquote,
.news-article--landing   .content-html blockquote {
    border-left: 4px solid var(--vert);
    margin: 1.25rem 0;
    padding: .75rem 1rem;
    background: #f0fdf4;
    border-radius: 0 8px 8px 0;
    font-style: italic;
    color: #1a3a2a;
}

/* ═══════════════════════════════════════════════════════════════════════════
   1. ÉDITORIAL
   ═══════════════════════════════════════════════════════════════════════════ */

/* Hero */
.news-article--editorial .ed-hero {
    position: relative;
    min-height: 480px;
    display: flex;
    align-items: flex-end;
    overflow: hidden;
    background: #111;
}
.ed-hero-bg {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    opacity: .55;
}
.ed-hero-overlay {
    position: relative;
    z-index: 1;
    width: 100%;
    padding: 3rem 0 2.5rem;
}
.ed-hero-content { max-width: 760px; }
.ed-hero-content h1 {
    font-size: clamp(1.8rem, 4vw, 2.8rem);
    font-weight: 800;
    color: #fff;
    margin: .4rem 0 .75rem;
    line-height: 1.2;
    text-shadow: 0 2px 8px rgba(0,0,0,.4);
}
.ed-date {
    font-size: .85rem;
    color: rgba(255,255,255,.75);
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: .05em;
}
.ed-meta {
    font-size: .9rem;
    color: rgba(255,255,255,.8);
    margin: 0;
}

/* Corps éditorial */
.ed-body {
    max-width: 720px;
    margin: 0 auto;
    padding: 2.5rem 1.5rem 3rem;
}
.ed-chapeau {
    font-size: 1.2rem;
    line-height: 1.75;
    color: #333;
    border-left: 4px solid var(--vert);
    padding-left: 1.25rem;
    margin-bottom: 2.5rem;
    font-style: italic;
}
.ed-section { margin-bottom: 2.75rem; }
.ed-section-titre {
    font-size: 1.5rem;
    font-weight: 700;
    color: #111;
    border-left: 5px solid var(--vert);
    padding-left: .9rem;
    margin: 0 0 1.1rem;
    line-height: 1.3;
}
.ed-section-texte {
    font-size: 1rem;
    line-height: 1.85;
    color: #333;
}

/* Figures / images éditoriales */
.ed-section-images { margin-top: 1.5rem; }
.ed-figure {
    margin: 0 0 1.5rem;
}
.ed-figure img {
    width: 100%;
    height: auto;
    border-radius: 10px;
    box-shadow: 0 6px 24px rgba(0,0,0,.1);
    display: block;
}
.ed-figure figcaption {
    font-size: .82rem;
    color: #666;
    margin-top: .45rem;
    text-align: center;
    font-style: italic;
}

@media (max-width: 700px) {
    .news-article--editorial .ed-hero { min-height: 320px; }
    .ed-hero-content h1 { font-size: 1.5rem; }
    .ed-body { padding: 1.5rem 1rem 2rem; }
    .ed-section-titre { font-size: 1.25rem; }
}

/* ═══════════════════════════════════════════════════════════════════════════
   2. GALERIE
   ═══════════════════════════════════════════════════════════════════════════ */

/* Header compact */
.gal-header {
    background: #fff;
    border-bottom: 1px solid #eee;
    padding: 1.5rem 0 1.25rem;
}
.gal-titre {
    font-size: clamp(1.5rem, 3.5vw, 2.4rem);
    font-weight: 800;
    color: #111;
    margin: .5rem 0 .6rem;
    line-height: 1.2;
}
.gal-meta {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem 1.25rem;
    font-size: .87rem;
    color: #666;
}
.gal-meta time { color: #444; }
.gal-meta strong { color: #111; }

/* Image principale */
.gal-hero-img {
    max-height: 500px;
    overflow: hidden;
    background: #000;
}
.gal-hero-img img {
    width: 100%;
    height: 500px;
    object-fit: cover;
    display: block;
    opacity: .92;
}

/* Corps galerie */
.gal-body { padding: 2rem 1.5rem 3rem; }
.gal-chapeau {
    font-size: 1.2rem;
    line-height: 1.75;
    color: #333;
    margin-bottom: 2rem;
    font-style: italic;
    border-left: 4px solid var(--vert);
    padding-left: 1.25rem;
}
.gal-section { margin-bottom: 2.5rem; }
.gal-section-titre {
    font-size: 1.35rem;
    font-weight: 700;
    color: #111;
    margin: 0 0 .9rem;
    padding-bottom: .4rem;
    border-bottom: 3px solid var(--vert);
    display: inline-block;
}
.gal-section-texte {
    font-size: .97rem;
    line-height: 1.8;
    color: #333;
    margin-bottom: 1.25rem;
}

/* Grille images (2 colonnes, masonry-like avec auto-rows) */
.gal-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: .75rem;
    margin-top: 1rem;
}
.gal-grid--global { margin-top: 0; }
.gal-grid-item img {
    width: 100%;
    height: 220px;
    object-fit: cover;
    border-radius: 8px;
    display: block;
    transition: transform .2s;
    box-shadow: 0 4px 14px rgba(0,0,0,.1);
}
.gal-grid-item img:hover { transform: scale(1.02); }

/* Toutes les 3e images occupent toute la largeur */
.gal-grid-item:nth-child(3n) {
    grid-column: span 2;
}
.gal-grid-item:nth-child(3n) img { height: 300px; }

@media (max-width: 600px) {
    .gal-grid { grid-template-columns: 1fr; }
    .gal-grid-item:nth-child(3n) { grid-column: span 1; }
    .gal-grid-item img,
    .gal-grid-item:nth-child(3n) img { height: 200px; }
    .gal-hero-img img { height: 250px; }
    .gal-body { padding: 1.5rem 1rem 2rem; }
}

/* ═══════════════════════════════════════════════════════════════════════════
   3. DOSSIER TECHNIQUE
   ═══════════════════════════════════════════════════════════════════════════ */

/* Barre de progression */
.dos-progress {
    position: fixed;
    top: 0;
    left: 0;
    width: 0;
    height: 3px;
    background: var(--vert);
    z-index: 9999;
    transition: width .1s linear;
    border-radius: 0 2px 2px 0;
}

/* Hero sobre fond sombre */
.dos-hero {
    position: relative;
    min-height: 400px;
    display: flex;
    align-items: flex-end;
    overflow: hidden;
    background: #0d1f14;
}
.dos-hero-bg {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    opacity: .3;
    filter: grayscale(.4);
}
.dos-hero-overlay {
    position: relative;
    z-index: 1;
    width: 100%;
    padding: 3rem 0 2.5rem;
}
.dos-hero-titre {
    font-size: clamp(1.7rem, 3.5vw, 2.6rem);
    font-weight: 800;
    color: #fff;
    margin: .5rem 0 .9rem;
    line-height: 1.2;
}
.dos-hero-chapeau {
    font-size: 1.05rem;
    color: rgba(255,255,255,.8);
    max-width: 680px;
    margin-bottom: 1rem;
    line-height: 1.65;
}
.dos-hero-meta {
    display: flex;
    flex-wrap: wrap;
    gap: .4rem 1.1rem;
    font-size: .85rem;
    color: rgba(255,255,255,.65);
}
.dos-hero-meta strong { color: rgba(255,255,255,.9); }

/* Layout 2 colonnes */
.dos-layout {
    display: grid;
    grid-template-columns: 260px 1fr;
    gap: 3rem;
    align-items: start;
    padding-top: 2.5rem;
    padding-bottom: 3rem;
}

/* Sidebar sommaire sticky */
.dos-sidebar {
    position: sticky;
    top: 80px;
    max-height: calc(100vh - 100px);
    overflow-y: auto;
}
.dos-toc {
    background: #f8fafb;
    border: 1px solid #e5ece8;
    border-radius: 10px;
    padding: 1.25rem 1.25rem 1rem;
}
.dos-toc-titre {
    font-size: .78rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .08em;
    color: #555;
    margin: 0 0 .9rem;
}
.dos-toc-list {
    list-style: none;
    margin: 0;
    padding: 0;
    counter-reset: toc-counter;
}
.dos-toc-list li {
    counter-increment: toc-counter;
    margin-bottom: .1rem;
}
.dos-toc-link {
    display: block;
    padding: .4rem .5rem .4rem 0;
    font-size: .88rem;
    color: #444;
    text-decoration: none;
    border-left: 3px solid transparent;
    padding-left: .75rem;
    transition: border-color .15s, color .15s, background .15s;
    border-radius: 0 4px 4px 0;
    line-height: 1.35;
}
.dos-toc-link:hover,
.dos-toc-link--active {
    border-left-color: var(--vert);
    color: var(--vert);
    background: rgba(0,120,60,.05);
}

/* Sections contenu dossier */
.dos-section {
    margin-bottom: 3rem;
    scroll-margin-top: 90px;
}
.dos-section-titre {
    font-size: 1.45rem;
    font-weight: 700;
    color: #111;
    margin: 0 0 1.1rem;
    padding-bottom: .55rem;
    border-bottom: 2px solid var(--vert);
}
.dos-section-texte {
    font-size: .98rem;
    line-height: 1.85;
    color: #2c2c2c;
}
.dos-section-imgs {
    margin-top: 1.25rem;
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: .75rem;
}
.dos-section-imgs img {
    width: 100%;
    height: 200px;
    object-fit: cover;
    border-radius: 8px;
    box-shadow: 0 4px 14px rgba(0,0,0,.1);
    display: block;
}

@media (max-width: 900px) {
    .dos-layout {
        grid-template-columns: 1fr;
        gap: 0;
    }
    .dos-sidebar {
        position: static;
        max-height: none;
        margin-bottom: 2rem;
    }
    .dos-hero { min-height: 300px; }
    .dos-hero-titre { font-size: 1.5rem; }
}
@media (max-width: 600px) {
    .dos-section-imgs { grid-template-columns: 1fr; }
    .dos-layout { padding: 1.5rem 1rem 2rem; }
}

/* ═══════════════════════════════════════════════════════════════════════════
   4. LANDING COMMERCIAL
   ═══════════════════════════════════════════════════════════════════════════ */

/* Hero fort */
.land-hero {
    position: relative;
    min-height: 560px;
    display: flex;
    align-items: center;
    overflow: hidden;
    background: #071510;
}
.land-hero-bg {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    opacity: .45;
}
.land-hero-overlay {
    position: relative;
    z-index: 1;
    width: 100%;
    padding: 4rem 0 3.5rem;
}
.land-hero-content { max-width: 740px; }
.land-hero-content h1 {
    font-size: clamp(2rem, 5vw, 3.2rem);
    font-weight: 900;
    color: #fff;
    margin: .4rem 0 1rem;
    line-height: 1.15;
    text-shadow: 0 3px 12px rgba(0,0,0,.5);
}
.land-date {
    font-size: .82rem;
    color: rgba(255,255,255,.7);
    text-transform: uppercase;
    letter-spacing: .06em;
    font-weight: 500;
}
.land-hero-chapeau {
    font-size: 1.15rem;
    color: rgba(255,255,255,.88);
    line-height: 1.65;
    margin-bottom: 2rem;
    max-width: 620px;
}
.land-hero-chapeau p { margin: 0; }
.land-hero-actions {
    display: flex;
    gap: 1rem;
    flex-wrap: wrap;
}
.land-btn-hero {
    display: inline-block;
    padding: .8rem 2rem;
    background: var(--vert);
    color: #fff;
    font-weight: 700;
    font-size: 1rem;
    border-radius: 8px;
    text-decoration: none;
    transition: background .15s, transform .15s;
    box-shadow: 0 4px 16px rgba(0,0,0,.25);
}
.land-btn-hero:hover { background: #1a7a35; transform: translateY(-1px); }
.land-btn-hero--outline {
    background: transparent;
    border: 2px solid rgba(255,255,255,.7);
}
.land-btn-hero--outline:hover { background: rgba(255,255,255,.12); border-color: #fff; }

/* Grille points forts */
.land-features {
    background: #f8fafb;
    padding: 3rem 0;
    border-bottom: 1px solid #e8ece9;
}
.land-features-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 1.5rem;
}
.land-feature-card {
    background: #fff;
    border-radius: 12px;
    padding: 1.75rem 1.5rem;
    box-shadow: 0 2px 12px rgba(0,0,0,.07);
    border: 1px solid #eef1ee;
    transition: box-shadow .2s, transform .2s;
}
.land-feature-card:hover {
    box-shadow: 0 6px 24px rgba(0,0,0,.12);
    transform: translateY(-2px);
}
.land-feature-icon {
    color: var(--vert);
    margin-bottom: .9rem;
}
.land-feature-titre {
    font-size: 1.05rem;
    font-weight: 700;
    color: #111;
    margin: 0 0 .6rem;
    line-height: 1.3;
}
.land-feature-extrait {
    font-size: .87rem;
    color: #555;
    line-height: 1.6;
    margin: 0;
}

/* Corps landing */
.land-body { padding: 2.5rem 1.5rem 2rem; max-width: 860px; margin: 0 auto; }
.land-section { margin-bottom: 2.5rem; }
.land-section-titre {
    font-size: 1.4rem;
    font-weight: 700;
    color: #111;
    margin: 0 0 1rem;
    padding-left: .85rem;
    border-left: 5px solid var(--vert);
    line-height: 1.3;
}
.land-section-texte {
    font-size: .98rem;
    line-height: 1.85;
    color: #2c2c2c;
}
.land-section-imgs {
    display: flex;
    flex-wrap: wrap;
    gap: .75rem;
    margin-top: 1.25rem;
}
.land-section-imgs img {
    flex: 1 1 280px;
    height: 220px;
    object-fit: cover;
    border-radius: 10px;
    box-shadow: 0 4px 14px rgba(0,0,0,.1);
}

/* CTA fort fond sombre */
.land-cta-strong {
    background: linear-gradient(135deg, #071510 0%, #1a4a28 100%);
    padding: 4rem 0;
    text-align: center;
    color: #fff;
}
.land-cta-titre {
    font-size: clamp(1.5rem, 3vw, 2.2rem);
    font-weight: 800;
    margin: 0 0 .75rem;
}
.land-cta-sub {
    font-size: 1.05rem;
    color: rgba(255,255,255,.8);
    margin: 0 auto 2rem;
    max-width: 520px;
    line-height: 1.6;
}
.land-cta-actions {
    display: flex;
    gap: 1rem;
    justify-content: center;
    flex-wrap: wrap;
}
.land-btn-cta {
    display: inline-block;
    padding: .9rem 2.25rem;
    background: var(--vert);
    color: #fff;
    font-weight: 700;
    font-size: 1rem;
    border-radius: 8px;
    text-decoration: none;
    transition: background .15s, transform .15s;
    box-shadow: 0 4px 20px rgba(0,0,0,.3);
}
.land-btn-cta:hover { background: #1a7a35; transform: translateY(-1px); }
.land-btn-cta--outline {
    background: transparent;
    border: 2px solid rgba(255,255,255,.6);
}
.land-btn-cta--outline:hover { background: rgba(255,255,255,.1); border-color: #fff; }

@media (max-width: 700px) {
    .land-hero { min-height: 400px; }
    .land-hero-content h1 { font-size: 1.7rem; }
    .land-hero-chapeau { font-size: 1rem; }
    .land-hero-actions { flex-direction: column; gap: .75rem; }
    .land-btn-hero { text-align: center; }
    .land-features-grid { grid-template-columns: 1fr 1fr; gap: 1rem; }
    .land-body { padding: 1.5rem 1rem 1.5rem; }
    .land-cta-strong { padding: 2.5rem 1rem; }
    .land-cta-actions { flex-direction: column; align-items: center; }
    .land-section-imgs img { flex: 1 1 100%; height: 180px; }
}
@media (max-width: 480px) {
    .land-features-grid { grid-template-columns: 1fr; }
}

/* ── Widget contact flottant ─────────────────────────────────────────────── */
.cw-wrap {
    position: fixed;
    bottom: 1.5rem;
    right: 1.5rem;
    z-index: 9000;
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: .75rem;
}
.cw-panel {
    background: #fff;
    border-radius: 16px;
    box-shadow: 0 8px 40px rgba(0,0,0,.18);
    padding: 1.25rem 1rem 1rem;
    width: 280px;
    animation: cwSlideUp .2s ease;
}
@keyframes cwSlideUp {
    from { opacity: 0; transform: translateY(12px); }
    to   { opacity: 1; transform: translateY(0); }
}
.cw-close {
    position: absolute;
    top: .75rem;
    right: .75rem;
    background: none;
    border: none;
    cursor: pointer;
    color: #888;
    padding: 2px;
    line-height: 1;
}
.cw-close:hover { color: #333; }
.cw-title {
    font-size: .8rem;
    font-weight: 600;
    color: #888;
    text-transform: uppercase;
    letter-spacing: .04em;
    margin: 0 0 .75rem;
}
.cw-option {
    display: flex;
    align-items: center;
    gap: .75rem;
    padding: .75rem .9rem;
    border-radius: 12px;
    text-decoration: none;
    color: inherit;
    margin-bottom: .5rem;
    transition: transform .15s, box-shadow .15s;
}
.cw-option:last-child { margin-bottom: 0; }
.cw-option:hover { transform: translateY(-2px); box-shadow: 0 4px 16px rgba(0,0,0,.12); }
.cw-option--wa  { background: #e7f8ef; }
.cw-option--dv  { background: #f0f6e8; }
.cw-option-icon {
    width: 42px;
    height: 42px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}
.cw-option--wa .cw-option-icon { background: #25d366; color: #fff; }
.cw-option--dv .cw-option-icon { background: var(--vert); color: #fff; }
.cw-option-text {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 1px;
}
.cw-option-text strong { font-size: .9rem; color: #1a1a1a; }
.cw-option-text small  { font-size: .78rem; color: #666; }
.cw-arrow { color: #bbb; flex-shrink: 0; }
.cw-btn {
    display: flex;
    align-items: center;
    gap: .6rem;
    background: var(--vert);
    color: #fff;
    border: none;
    border-radius: 50px;
    padding: .75rem 1.25rem .75rem 1rem;
    font-size: .9rem;
    font-weight: 600;
    cursor: pointer;
    box-shadow: 0 4px 20px rgba(0,0,0,.25);
    transition: background .15s, transform .15s, box-shadow .15s;
    font-family: var(--police);
}
.cw-btn:hover { background: var(--vert-c); transform: translateY(-2px); box-shadow: 0 6px 24px rgba(0,0,0,.3); }
.cw-btn-icon { display: flex; align-items: center; }
@media (max-width: 480px) {
    .cw-wrap  { bottom: 1rem; right: 1rem; }
    .cw-panel { width: calc(100vw - 2rem); }
    .cw-btn-label { display: none; }
    .cw-btn { padding: .85rem; border-radius: 50%; }
}

/* ── Template Service ────────────────────────────────────────────────────── */
.srv-hero { background: linear-gradient(135deg, var(--vert) 0%, var(--vert-c) 100%); color: #fff; padding: 4rem 0 3rem; }
.srv-hero-inner { display: grid; grid-template-columns: 1fr 1fr; gap: 3rem; align-items: center; }
.srv-categorie { display: inline-block; background: rgba(255,255,255,.2); border-radius: 20px; padding: .25rem .85rem; font-size: .8rem; font-weight: 600; text-transform: uppercase; letter-spacing: .06em; margin-bottom: 1rem; }
.srv-titre { font-size: 2.2rem; font-weight: 700; line-height: 1.2; margin: 0 0 1rem; color: #fff; }
.srv-intro { font-size: 1.05rem; opacity: .92; margin-bottom: 1.75rem; line-height: 1.6; }
.srv-intro p { margin: 0; }
.srv-actions { display: flex; flex-wrap: wrap; gap: .75rem; }
.srv-btn-pdf { background: #fff !important; color: var(--vert) !important; }
.srv-btn-pdf:hover { background: #f0f0f0 !important; }
.srv-hero-image img { width: 100%; border-radius: 12px; box-shadow: 0 8px 40px rgba(0,0,0,.25); }

.srv-description { padding: 3rem 0; }
.srv-description-inner { max-width: 820px; margin: 0 auto; font-size: 1rem; line-height: 1.75; }
.srv-description-inner h2 { font-size: 1.4rem; margin: 2rem 0 .75rem; }

.srv-pdf-bloc { background: #f7faf0; border-top: 1px solid #e5efd5; border-bottom: 1px solid #e5efd5; padding: 2rem 0; }
.srv-pdf-inner { display: flex; align-items: center; gap: 1.5rem; background: #fff; border-radius: 12px; padding: 1.5rem 2rem; box-shadow: 0 2px 12px rgba(0,0,0,.07); }
.srv-pdf-icon { color: var(--vert); flex-shrink: 0; }
.srv-pdf-text { flex: 1; }
.srv-pdf-text strong { display: block; font-size: 1rem; margin-bottom: .25rem; }
.srv-pdf-text p { margin: 0; color: #666; font-size: .9rem; }

.srv-contact-bloc { background: #1a2332; color: #fff; padding: 4rem 0; text-align: center; }
.srv-contact-inner h2 { font-size: 1.8rem; margin: 0 0 .75rem; color: #fff; }
.srv-contact-inner p { opacity: .8; margin-bottom: 2rem; }
.srv-contact-actions { display: flex; justify-content: center; gap: 1rem; flex-wrap: wrap; }

@media (max-width: 768px) {
    .srv-hero-inner { grid-template-columns: 1fr; gap: 2rem; }
    .srv-hero-image { order: -1; }
    .srv-titre { font-size: 1.6rem; }
    .srv-pdf-inner { flex-direction: column; text-align: center; }
    .srv-contact-actions { flex-direction: column; align-items: center; }
}

/* ── Info hint (demande-info service) ───────────────────────────────────── */
.info-hint { display:flex; align-items:flex-start; gap:.5rem; background:#f0f6e8; border:1px solid #d4e8b0; border-radius:8px; padding:.75rem 1rem; font-size:.9rem; color:#3a5a1a; line-height:1.5; }
.info-hint svg { flex-shrink:0; margin-top:1px; color:var(--vert); }
.info-hint a { color:var(--vert); font-weight:600; }
