/* Hauteur du menu sticky : ajuste la valeur si besoin 
Nomination des couleurs : https://www.color-name.com/hex/

*/

:root {
    --sticky-offset: 105px;
    --cookies-and-cream:#D7E0AC80;
    --chinese-white:#D9E8E3;
    --middle-green-yellow:#A9BB4C;
    --outer-space-green:#2E433C;
    --dark-slate-grey:#255B4B;
    --outer-space-blue:#29373F;
    --illuminating-emerald:#44917B;
    --illuminating-emerald-light:#44917B33;
    --amazon:#346E5E;
    --dark-slate-grey-bis:#39534B;
    --white:#fff;
    
}

/* Lisse le scroll natif */

html { scroll-behavior: smooth; }

/* Ajoute une marge de scroll à TOUT élément ciblé par un #id */

[id] { scroll-margin-top: var(--sticky-offset); }

html,body {overflow-x:hidden;}

.elementor-widget-text-editor p:last-child {margin-bottom:0;    margin-block-end: 0 !important;}

.elementor-widget-text-editor ul {margin-bottom:15px;}

h2.elementor-heading-title big {background-color:var(--middle-green-yellow) ; color:var(--white) ; border-radius:100px; padding:5px 10px;font-size: 25px;position: relative;
    top: -4px; font-weight: 600}

[type=button], [type=submit], button {border-color:var(--middle-green-yellow) ; color:var(--middle-green-yellow) ; border-radius:100px;}

[type=button]:hover, [type=submit]:hover, button:hover {color:var(--white) ;background-color:var(--middle-green-yellow)  }

/* Communs important */

figure { position: relative; display: inline-block; }

figure figcaption {backdrop-filter: blur(10.5px);position: absolute; top: 8px; right: 8px; background: rgba(0,0,0,0.5); color: white; padding: 2px 5px; font-size: 12px; border-radius: 0 8px; }

.background-copyright { position: absolute; bottom: 5px; right: 5px; background: rgba(0,0,0,0.5); color: var(--white) ; padding: 2px 5px; font-size: 12px; border-radius: 3px; pointer-events: none; z-index: 10; }

header figure figcaption,
footer figure figcaption {display:none !important;}

.elementor-widget-text-editor a,
.elementor-text-editor a {color:var(--amazon) ; font-weight: 700; text-decoration: underline}

.elementor-widget-text-editor a:hover,
.elementor-text-editor a:hover {font-weight:700; color:var(--dark-slate-grey)}

/* Permet de voir un morceau des slides adjacents */

.elementor .swiper,
.elementor .swiper-container { overflow: hidden;}

.dn-weather-carousel .dn-wc-card {background-color:var(--white) ;display:flex; gap:16px;flex-direction: column;border-radius: 16px;border: 1px solid var(--illuminating-emerald-light);text-align: center;padding:16px 14px;}

.dn-weather-carousel .dn-wc-card.dn-wc-today {border-color:var(--amazon) ;}

.dn-weather-carousel .dn-wc-card .dn-wc-date {color:#686E7A;font-family: 'Montserrat';font-size: 10px;font-style: normal;font-weight: 500;line-height: normal;}

.dn-weather-carousel .dn-wc-card .dn-wc-icon img {height:50px}

.dn-weather-carousel .dn-wc-card .dn-wc-temps {color: var(--dark-slate-grey) ;text-align: center;font-family: 'Montserrat';font-size: 12px;font-style: normal;font-weight: 600;line-height: normal;}

/* Breadcrumbs */

.rank-math-breadcrumb, #crumbs { display: flex; align-items: center; font-family: 'Montserrat'; font-size: 12px; color: var(--outer-space-blue) ; margin: 0;width: 140%;z-index: 9;    position: relative; }

.rank-math-breadcrumb p, #crumbs p { margin: 0; display: flex; align-items: center; flex-wrap: wrap; }

.rank-math-breadcrumb a, #crumbs a { color: var(--outer-space-blue) ; text-decoration: none; transition: color 0.2s ease-in-out; }

.rank-math-breadcrumb a:hover, #crumbs a:hover { color: var(--dark-slate-grey) ; text-decoration: underline; }

.rank-math-breadcrumb a:last-child,#crumbs .current,.rank-math-breadcrumb .last {font-weight: bold;}

.rank-math-breadcrumb .separator,#crumbs .separator { display: inline-block;background:url(../img/separateur-breadcrumbs.svg) no-repeat; width: 8px; height: 12px; margin: 0 12px; color: #888; font-size: 13px;text-indent:-9999px }

.rank-math-breadcrumb[aria-label="breadcrumbs"] { list-style: none; }

.titre-page {padding-right:20px;background-color:var(--white) ;position: relative;max-width: 80%;}

.titre-page:after {content:'';width:100px; height:100%; background:url(../img/corner-titre.svg) no-repeat transparent;position: absolute;right:-99px;top:0;background-size: cover;background-position: bottom left;}

/* Quick Filters */

.dnc-qtf .dnc-qtf__label {color:var(--dark-slate-grey-bis);font-family: Montserrat;font-size: 18px;font-style: normal;font-weight: 600;line-height: normal;}

.dnc-qtf .dnc-qtf__terms {gap:8px;margin-left:25px;}

.dnc-qtf .dnc-qtf__terms a {border-radius: 99px;border: 1px solid rgba(68, 145, 123, 0.20);background: #FFF;font-family: Montserrat;
font-size: 18px;font-style: normal;font-weight: 600;color:var(--amazon)}

.dnc-qtf .dnc-qtf__terms a.dnc-qtf__chip--active {font-weight:700;border: 1px solid #255B4B;background: linear-gradient(0deg, rgba(169, 187, 76, 0.20) 0%, rgba(169, 187, 76, 0.20) 100%), rgba(0, 0, 0, 0.00);}

/* Patch Loop Carousel */

.elementor-widget-loop-carousel .elementor-loop-container {padding-inline-end:0; align-items: stretch;}

/* On cache les flèches Elementor sur les éléments qu'on a pas besoin */

.no-fleches .elementor-swiper-button, .swiper-button-disabled {display:none !important;}

#contact-box .infos {display: flex; flex-direction: column;gap:24px;padding:20px 40px 40px;}

#contact-box .infos > div {padding-left:25px; color:var(--dark-slate-grey-bis);font-family: Montserrat;font-size: 16px;font-style: normal;font-weight: 600;
line-height: 22px;display: flex; flex-direction: wrap;gap:10px;}

#contact-box .infos > div > div {width:auto !important;}

#contact-box .infos .coordonnees {background:url(../img/puce-pointer.svg) no-repeat top left;}

#contact-box .infos .phones {background:url(../img/phone.svg) no-repeat center left;}

#contact-box .infos .contact-email {background:url(../img/contact-mail.svg) no-repeat center left;}

#contact-box .infos .website {background:url(../img/website.svg) no-repeat center left;}

/* Responsive Tablette */

@media(max-width:1024px) {
    .no-fleches .elementor-swiper-button {display:flex !important;}
    .no-fleches .swiper-button-disabled {display:none !important;}
}

@media (min-width: 1025px) {
    .swiper-slide-duplicate {
        display: none;
    }
}

/* Responsive Mobile */

@media(max-width:768px) {
    .titre-page {padding-right:0;max-width: 90%;}
    #mainContentListe {padding-left:0 !important}
}

/* Ajuste l’alignement si besoin */

@media (max-width: 480px) {
    .elementor-widget-loop-carousel .elementor-loop-container {padding-inline-end:40px; align-items: stretch;}
    .dnc-peek .swiper-wrapper { align-items: stretch; }
}

/* ===== Projets DataTable — design sobre ===== */

.dataTables_wrapper { font-family: inherit; color: #4b5563; }

#projets-table.dataTable { width: 100% !important; border-collapse: collapse !important; border-spacing: 0; font-family: inherit; font-size: 11px; color: #4b5563; border: none !important; margin: 0 !important; }

#projets-table.dataTable thead tr:first-child th { background: #fff !important; border: none !important; border-bottom: 1px solid #d1d5db !important; padding: 15px 5px 10px 10px; text-align: left; font-weight: 600; color: #111827; font-size: 10px; letter-spacing: 0.02em; }

/* FixedHeader — thead cloné positionné en fixed par DataTables */

.dtfh-floatingparent { z-index: 49 !important;top:255px !important; }

.dtfh-floatingparent table.dataTable thead tr:first-child th { background: #fff !important; border: none !important; border-bottom: 1px solid #d1d5db !important; padding: 10px 5px 10px 10px; font-weight: 600; color: #111827; font-size: 10px; letter-spacing: 0.02em;text-align: left; }

/* Inline filter dropdown — arrow next to column title */

.dnc-filter-wrap { position: relative; display: inline-flex; align-items: center; margin-left: 6px; vertical-align: middle; }

.dnc-filter-toggle { display: inline-flex; align-items: center; justify-content: center; width: 20px; height: 20px; padding: 0; border: none; background: transparent; color: #000; cursor: pointer; border-radius: 4px; transition: color 0.15s, background-color 0.15s, transform 0.15s; }

.dnc-filter-toggle:hover { color: #111827; background: #e4e4e4; }

.dnc-filter-toggle.is-open { color: #111827; transform: rotate(180deg); }

.dnc-filter-toggle.has-filter { color: #111827; }

.dnc-filter-toggle.has-filter::after { content: ""; position: absolute; top: 2px; right: 2px; width: 6px; height: 6px; background: #111827; border-radius: 50%; border: 1.5px solid #fff; }

.dnc-filter-menu { position: absolute; top: calc(100% + 8px); left: 0; z-index: 1000; min-width: 180px; max-height: 280px; overflow-y: auto; margin: 0; padding: 6px; list-style: none; background: #fff; border: 1px solid #d1d5db; border-radius: 8px; box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.08), 0 4px 10px -3px rgba(0, 0, 0, 0.04); opacity: 0; visibility: hidden; transform: translateY(-4px); transition: opacity 0.15s, visibility 0.15s, transform 0.15s; }

.dnc-filter-menu.is-open { opacity: 1; visibility: visible; transform: translateY(0); }

.dnc-filter-option { padding: 8px 12px; font-size: 10px; font-weight: 400; color: #4b5563; cursor: pointer; border-radius: 6px; white-space: nowrap; transition: background-color 0.1s, color 0.1s; }

.dnc-filter-option:hover { background: #f9fafb; color: #111827; }

.dnc-filter-option.is-active { background: #111827; color: #fff; }

#projets-table.dataTable tbody td { border: none !important; border-bottom: 1px solid #e0e0e0 !important; padding: 22px 5px 22px 15px; color: #111827; font-weight: 400; vertical-align: middle;box-shadow: none !important; text-align:left !important; }

#projets-table.dataTable tbody tr { background: transparent !important; }

#projets-table.dataTable tbody tr td {color:#000; font-weight:700}

#projets-table.dataTable tbody tr td a {text-decoration:underline;color:#000;font-weight:700}

#projets-table.dataTable tbody tr:last-child td { border-bottom: none !important; }

#projets-table.dataTable tbody tr:hover td { background: #000 !important; color:#fff !important; }

#projets-table.dataTable tbody tr:hover td a {color:#fff !important;}

#projets-table.dataTable tbody td:first-child { color: #111827; font-variant-numeric: tabular-nums; letter-spacing: 0.05em; }

#projets-table.dataTable tbody td:nth-child(2) { color: #111827; font-weight: 500; }

/* Lignes sans fiche détail — toute la ligne en gris */

#projets-table.dataTable tbody tr.no-link td { color: #000; background-color:#fff !important;font-weight: 400; }

#projets-table.dataTable tbody tr.no-link:hover td {background-color:#000 !important;}

#projets-table.dataTable tbody tr.no-link td:nth-child(2) { color: #000; font-weight: 400; }

/* Kill default sort icons — sober look */

#projets-table.dataTable thead th.sorting,
#projets-table.dataTable thead th.sorting_asc,
#projets-table.dataTable thead th.sorting_desc,
#projets-table.dataTable thead th.dt-orderable-asc,
#projets-table.dataTable thead th.dt-orderable-desc { background-image: none !important; padding-right: 28px; }

#projets-table.dataTable thead th.sorting::before,
#projets-table.dataTable thead th.sorting::after,
#projets-table.dataTable thead th.sorting_asc::before,
#projets-table.dataTable thead th.sorting_asc::after,
#projets-table.dataTable thead th.sorting_desc::before,
#projets-table.dataTable thead th.sorting_desc::after,
#projets-table.dataTable thead .dt-column-order::before,
#projets-table.dataTable thead .dt-column-order::after { display: none !important; }

/* Wrapper toolbar — sticky */

.dnc-table-top { display: flex; justify-content: flex-end; align-items: center; gap: 10px; margin-bottom: 0 !important; padding: 16px 0; flex-wrap: wrap; position: sticky; top: 150px; z-index: 100; background: #fff; }

.dnc-table-top.is-fixed { position: fixed; top: 130px; z-index: 100; background: #fff;   width:100% !important; max-width: 87% !important;    padding-top: 60px;    padding-bottom: 40px; }

.dnc-table-top .dataTables_info, .dnc-table-top .dt-info { color: #000; font-size: 10px; }

.dataTables_wrapper .dataTables_filter,
.dataTables_wrapper .dt-search,
div.dt-container .dt-search { color: #4b5563; font-size: 10px; margin: 0 !important; padding: 0 !important; text-align: left !important; }

.dataTables_wrapper .dataTables_filter label,
.dataTables_wrapper .dt-search label,
div.dt-container .dt-search label { font-weight: 400; margin: 0; display: block; }

.dnc-search-field { position: relative; display: inline-block; }

.dnc-search-icon { position: absolute; left: 14px; top: 50%; transform: translateY(-50%); color: #000; pointer-events: none; transition: color 0.15s; }

.dataTables_wrapper .dataTables_filter input,
.dataTables_wrapper .dt-search input,
div.dt-container .dt-search input,
.dnc-search-field input[type="search"] { border: 1px solid #e5e7eb !important; border-radius: 999px !important; padding: 9px 18px 9px 38px !important; font-size: 10px !important; color: #111827 !important; background: #fff !important; margin: 0 !important; width: 260px !important; transition: border-color 0.15s, box-shadow 0.15s !important; box-shadow: 0 1px 3px rgba(0,0,0,0.08) !important; height: auto !important; line-height: 1.4 !important; }

.dataTables_wrapper .dataTables_filter input::placeholder,
.dataTables_wrapper .dt-search input::placeholder,
.dnc-search-field input::placeholder { color: #000 !important; opacity: 1; }

.dataTables_wrapper .dataTables_filter input:hover,
.dataTables_wrapper .dt-search input:hover,
.dnc-search-field input:hover { border-color: #d1d5db !important; }

.dataTables_wrapper .dataTables_filter input:focus,
.dataTables_wrapper .dt-search input:focus,
.dnc-search-field input:focus { outline: none !important; border-color: #111827 !important; box-shadow: 0 0 0 3px rgba(17, 24, 39, 0.06) !important; }

.dnc-search-field:focus-within .dnc-search-icon { color: #111827; }

/* Reset button */

.dnc-reset-btn { display: inline-flex; align-items: center; gap: 6px; border: 1px solid #d1d5db; background: #fff; color: #4b5563; font-size: 10px; font-weight: 500; font-family: inherit; padding: 9px 16px; border-radius: 999px; cursor: pointer; transition: border-color 0.15s, color 0.15s, background-color 0.15s; }

.dnc-reset-btn:hover { border-color: #111827; color: #111827;background-color:#fff; }

.dnc-reset-btn:active { background: #f3f4f6; }

.dnc-reset-btn svg { flex-shrink: 0; }

.dnc-table-bottom { display: flex; justify-content: flex-end; align-items: center; margin-top: 24px; padding-top: 16px; }

.dataTables_wrapper .dataTables_info,
.dataTables_wrapper .dt-info,
div.dt-container .dt-info { color: #000 !important; font-size: 10px !important; padding: 0 !important; }

.dataTables_wrapper .dataTables_paginate,
.dataTables_wrapper .dt-paging,
div.dt-container .dt-paging { padding: 0 !important; }

.dataTables_wrapper .dataTables_paginate .paginate_button,
.dataTables_wrapper .dt-paging .dt-paging-button,
div.dt-container .dt-paging button.dt-paging-button { border: none !important; background: transparent !important; color: #6b7280 !important; padding: 6px 12px !important; margin: 0 2px !important; border-radius: 6px !important; font-size: 10px !important; box-shadow: none !important; }

.dataTables_wrapper .dataTables_paginate .paginate_button.current,
.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover,
.dataTables_wrapper .dt-paging .dt-paging-button.current,
div.dt-container .dt-paging button.dt-paging-button.current,
div.dt-container .dt-paging button.dt-paging-button.current:hover { background: #111827 !important; color: #fff !important; border: none !important; }

.dataTables_wrapper .dataTables_paginate .paginate_button:hover,
.dataTables_wrapper .dt-paging .dt-paging-button:hover,
div.dt-container .dt-paging button.dt-paging-button:hover { background: #f3f4f6 !important; color: #111827 !important; }

.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,
.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover,
.dataTables_wrapper .dt-paging .dt-paging-button.disabled,
div.dt-container .dt-paging button.dt-paging-button.disabled,
div.dt-container .dt-paging button.dt-paging-button.disabled:hover { background: transparent !important; color: #d1d5db !important; cursor: default; }

/* Responsive — small screens */

@media (max-width: 768px) {
    #projets-table.dataTable thead tr:first-child th,
    #projets-table.dataTable thead tr.filters th,
    #projets-table.dataTable tbody td { padding-left: 16px; padding-right: 16px; }
    .dnc-table-bottom { flex-direction: column; gap: 12px; align-items: flex-start; }
}

/* ============================================================================
   OVERLAY DÉGRADÉ SUR LES IMAGES
   ----------------------------------------------------------------------------
   Un `background` se peint DERRIÈRE le contenu d'une <img>, et <img> étant un
   élément remplacé il n'accepte pas de pseudo-élément. L'overlay est donc posé
   sur le conteneur direct de l'image.

   ::before conviendrait aussi bien : l'ordre de peinture ne dépend pas de
   before/after mais du positionnement (un pseudo positionné passe au-dessus du
   contenu en flux). ::after est retenu parce que le thème utilise déjà ::before
   pour des pictogrammes (i:before, span:before) : moins de risque de collision.

   Portée : TOUT élément qui enveloppe une image et rien d'autre
   (`> img:only-child`). Cette condition est ce qui rend la règle universelle
   sans dégâts : elle attrape le conteneur au plus près de l'image (donc
   l'overlay épouse sa boîte, sans jamais s'appliquer deux fois) et ignore un
   paragraphe ou une carte qui contiendrait une image parmi d'autres contenus.

   Réglages :
     --dnc-img-overlay          le dégradé (surchargeable par bloc ou section)
     --dnc-img-overlay-radius   arrondi de l'overlay (voir note en fin de bloc)
   Échappatoire : classe `dnc-no-overlay` (Avancé → Classes CSS du widget).
   ========================================================================== */

:root {
    --dnc-img-overlay: linear-gradient(180deg, var(--primary-primary-800, rgba(47, 31, 26, 0.30)) 0%, var(--accent-accent-500, rgba(234, 98, 18, 0.30)) 100%);
    --dnc-img-overlay-radius: 16px;
}

/* 1. Cas général : conteneur direct de l'image. */

:is(a, figure, picture, span, div, li, td, p):has(> img:only-child),
picture:has(> img) {
    position: relative;
    isolation: isolate;
}

/* 1 bis. Conteneur inline (<picture> du plugin WebP, image liée <a>, <span>).
   Un bloc de positionnement inline ne forme pas de boîte englobant l'image :
   `inset: 0` se résout sur ses boîtes inline, hautes comme la police, et
   l'overlay se réduit à une bande — placée au milieu de l'image puisque
   Elementor lui applique `vertical-align: middle`. On donne donc au conteneur
   une boîte qui épouse l'image ; `line-height: 0` supprime l'espace résiduel
   sous la ligne de base.
   Noter le `> img` sans `:only-child` pour <picture> : il contient aussi les
   <source> du plugin WebP. */

:is(a, span):has(> img:only-child),
picture:has(> img) {
    display: inline-block;
    line-height: 0;
    max-width: 100%;
    vertical-align: middle; /* évite les quelques px de vide sous la ligne de base */
}

:is(a, figure, picture, span, div, li, td, p):has(> img:only-child)::after,
picture:has(> img)::after {
    content: "";
    position: absolute;
    inset: 0;
    background: var(--dnc-img-overlay);
    border-radius: var(--dnc-img-overlay-radius);
    pointer-events: none; /* liens, lightbox et curseurs restent actifs */
}

/* 2. Image légendée : l'image n'est plus enfant unique. La <figure> passe en
   grille et l'overlay occupe la même cellule que l'image, donc il ne recouvre
   pas le <figcaption>. */

figure:has(> img):has(> figcaption) {
    display: grid;
}

figure:has(> img):has(> figcaption)::after {
    content: "";
    grid-area: 1 / 1;
    background: var(--dnc-img-overlay);
    border-radius: var(--dnc-img-overlay-radius);
    pointer-events: none;
}

/* 3. Galeries et carrousels Elementor : pas de <img>, l'image est un
   background, il faut donc cibler l'élément porteur. */

.e-gallery-item:has(.e-gallery-image),
.elementor-carousel-image {
    position: relative;
    isolation: isolate;
}

.e-gallery-item:has(.e-gallery-image)::after,
.elementor-carousel-image::after {
    content: "";
    position: absolute;
    inset: 0;
    background: var(--dnc-img-overlay);
    border-radius: var(--dnc-img-overlay-radius);
    pointer-events: none;
}

/* ---- Exclusions ---------------------------------------------------------
   Logos, avatars, SVG et pictogrammes ne doivent pas être teintés.
   Pour épargner un contexte entier, ajouter par exemple :
       header :is(a, figure, picture, span, div, li, td, p):has(> img:only-child)::after
   à cette liste. */

:is(a, figure, picture, span, div, li, td, p):has(> img.custom-logo)::after,
:is(a, figure, picture, span, div, li, td, p):has(> img.avatar)::after,
:is(a, figure, picture, span, div, li, td, p):has(> img[src$=".svg"])::after,
:is(.dnc-no-overlay, .elementor-widget-theme-site-logo, .elementor-widget-site-logo, .custom-logo-link)::after,
:is(.dnc-no-overlay, .elementor-widget-theme-site-logo, .elementor-widget-site-logo) :is(a, figure, picture, span, div, li, td, p):has(> img:only-child)::after,
.dnc-no-overlay figure:has(> figcaption)::after,
.dnc-no-overlay.e-gallery-item::after,
.dnc-no-overlay .e-gallery-item::after,
.dnc-no-overlay picture:after,
.dnc-no-overlay .e-gallery-item:has(.e-gallery-image)::after,
footer .elementor-widget-image:after, 
footer picture:after,
.dnc-no-overlay .elementor-carousel-image::after,
.quicklinks a:after {
    content: none !important;
}

/* Un arrondi posé par Elementor s'applique à l'<img>, pas à son conteneur :
   pour une image aux angles arrondis, reporter la valeur via
   Avancé → CSS personnalisé du widget :
       selector { --dnc-img-overlay-radius: 16px; }
   Même principe pour changer le dégradé d'une section :
       selector { --dnc-img-overlay: linear-gradient(...); } */


footer .liste-entite .elementor-icon-list-item{background-color:#F3F3F3; padding:4px 12px;border-left:2px solid #428BC1;border-right:2px solid #428BC1;}