/*
Theme Name: DC Dog Services
Theme URI: https://dcdogservice.com
Author: Prémices Studio
Author URI: https://premicesstudio.com
Description: Thème dédié à DC Dog Services. Construit pour Elementor, sans dépendance à un thème parent.
Version: 1.1.0
Requires at least: 6.5
Requires PHP: 8.0
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: dcdog
Tags: elementor, one-column, custom-logo, custom-menu, translation-ready
*/

/* ============================================================
   1. Jetons
   ============================================================ */
:root{
  --dc-vert:#1E3A34;
  --dc-vert-profond:#152A25;
  --dc-vert-clair:#2C544B;
  --dc-ambre:#B8642A;
  --dc-ambre-fonce:#98501F;
  --dc-or:#C9964A;
  --dc-texte:#2A2A26;
  --dc-gris:#6B6B63;
  --dc-creme:#F5F0E8;
  --dc-creme-fonce:#EDE5D7;
  --dc-bord:#E6E1D8;
  --dc-blanc:#FFFFFF;
  --dc-clair-sur-vert:#D8E0DC;
  --dc-titre:"Bricolage Grotesque", system-ui, -apple-system, sans-serif;
  --dc-texte-police:"Inter", system-ui, -apple-system, sans-serif;

  --dc-largeur:1140px;
  --dc-gouttiere:20px;
  --dc-rayon:6px;
  --dc-rayon-carte:10px;

  --dc-ombre-fine:0 1px 2px rgba(30,58,52,.05);
  --dc-ombre-carte:0 2px 4px rgba(30,58,52,.04), 0 14px 30px -22px rgba(30,58,52,.28);
  --dc-ombre-levee:0 4px 10px rgba(30,58,52,.06), 0 26px 44px -26px rgba(30,58,52,.38);
  --dc-transition:.28s cubic-bezier(.22,.7,.3,1);
}

/* ============================================================
   2. Base
   ============================================================ */
*,*::before,*::after{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth; scroll-padding-top:128px; }
body{
  margin:0; background:var(--dc-blanc); color:var(--dc-texte);
  font-family:var(--dc-texte-police); font-size:18px; line-height:1.7;
  -webkit-font-smoothing:antialiased; -moz-osx-font-smoothing:grayscale;
  overflow-x:hidden;
}
h1,h2,h3,h4{
  font-family:var(--dc-titre); color:var(--dc-vert); line-height:1.14;
  margin:0 0 .5em; font-weight:700; font-optical-sizing:auto;
  text-wrap:balance;
}
h1{ font-size:clamp(34px,4.4vw,56px); letter-spacing:-.022em; line-height:1.07; }
h2{ font-size:clamp(26px,3vw,38px); letter-spacing:-.018em; }
h3{ font-size:clamp(20px,1.6vw,23px); letter-spacing:-.008em; }
p{ margin:0 0 1.1em; }
a{ color:var(--dc-ambre); text-decoration:underline; text-underline-offset:3px; text-decoration-thickness:1px; transition:color .2s ease, text-decoration-color .2s ease; }
a:hover{ color:var(--dc-vert); text-decoration-color:var(--dc-or); }
img{ max-width:100%; height:auto; }
ul,ol{ padding-left:22px; }
li{ margin-bottom:8px; }
hr{ border:0; border-top:1px solid var(--dc-bord); margin:2.4em 0; }
blockquote{
  margin:1.8em 0; padding:6px 0 6px 26px; border-left:3px solid var(--dc-or);
  color:var(--dc-vert); font-size:1.05em; font-style:normal;
}
::selection{ background:var(--dc-ambre); color:#fff; }
:focus-visible{ outline:2px solid var(--dc-or); outline-offset:3px; border-radius:2px; }
.dc-skip{
  position:absolute; left:-9999px; top:0; background:var(--dc-vert); color:#fff;
  padding:12px 18px; z-index:1000; text-decoration:none;
}
.dc-skip:focus{ left:8px; top:8px; }

/* Largeur commune a l'en-tete, au pied et aux pages : cale sur la grille Elementor. */
.dc-cadre{
  width:100%; max-width:calc(var(--dc-largeur) + 2 * var(--dc-gouttiere));
  margin-inline:auto; padding-inline:var(--dc-gouttiere);
}

/* ============================================================
   3. Bandeau de credit
   ============================================================ */
.dc-bandeau{
  background:var(--dc-vert-profond); color:#A9BDB6;
  font-size:12.5px; line-height:1.5; letter-spacing:.03em;
}
.dc-bandeau .dc-cadre{
  display:flex; align-items:center; justify-content:space-between;
  gap:10px 28px; flex-wrap:wrap; padding-block:9px;
}
.dc-bandeau p{ margin:0; }
.dc-bandeau-zones{ color:#8FA8A0; }
.dc-bandeau b{ color:var(--dc-or); font-weight:600; }

/* ============================================================
   4. En-tete
   ============================================================ */
.dc-entete{
  background:rgba(245,240,232,.92);
  -webkit-backdrop-filter:saturate(150%) blur(10px);
  backdrop-filter:saturate(150%) blur(10px);
  border-bottom:1px solid var(--dc-bord);
  box-shadow:0 1px 0 rgba(255,255,255,.6) inset, 0 6px 22px -18px rgba(30,58,52,.5);
  position:sticky; top:0; z-index:99;
}
.dc-entete-inner{
  display:flex; align-items:center; justify-content:space-between; gap:24px;
  padding-block:10px; min-height:92px;
}
.dc-marque{ flex:0 0 auto; display:flex; align-items:center; }
.dc-marque a{ display:block; line-height:0; text-decoration:none; }
/* Le logo est un badge quasi carre : il lui faut de la hauteur pour rester lisible. */
.dc-marque img, .custom-logo{
  display:block; height:72px; width:auto; max-width:none;
  transition:opacity .2s ease;
}
.dc-marque a:hover img{ opacity:.82; }
.dc-marque-nom{
  font-family:var(--dc-titre); font-size:24px; font-weight:700; letter-spacing:-.02em;
  color:var(--dc-vert); text-decoration:none;
}

.dc-nav{ display:flex; align-items:center; gap:16px; flex:1 1 auto; justify-content:flex-end; min-width:0; }
.dc-menu{ display:flex; align-items:center; gap:0; list-style:none; margin:0; padding:0; }
.dc-menu li{ position:relative; margin:0; }
.dc-menu > li > a{
  position:relative; display:block; padding:10px 10px 12px;
  color:var(--dc-vert); text-decoration:none;
  font-weight:600; font-size:14.5px; letter-spacing:.004em; white-space:nowrap;
  transition:color .2s ease;
}
.dc-menu > li > a::after{
  content:""; position:absolute; left:10px; right:10px; bottom:5px; height:2px;
  background:var(--dc-ambre); border-radius:2px;
  transform:scaleX(0); transform-origin:left center;
  transition:transform var(--dc-transition);
}
.dc-menu > li > a:hover{ color:var(--dc-ambre); }
.dc-menu > li > a:hover::after,
.dc-menu > li.current-menu-item > a::after,
.dc-menu > li.current-menu-parent > a::after,
.dc-menu > li.current-menu-ancestor > a::after,
.dc-menu > li.current_page_item > a::after{ transform:scaleX(1); }
.dc-menu > li.current-menu-item > a,
.dc-menu > li.current-menu-parent > a,
.dc-menu > li.current-menu-ancestor > a{ color:var(--dc-ambre); }

.dc-menu .menu-item-has-children > a::before{
  content:""; position:absolute; right:0; top:50%; width:6px; height:6px;
  margin-top:-4px; border-right:2px solid currentColor; border-bottom:2px solid currentColor;
  transform:rotate(45deg); transition:transform .22s ease;
}
.dc-menu > li.menu-item-has-children > a{ padding-right:22px; }
.dc-menu > li.menu-item-has-children > a::after{ right:22px; }
.dc-menu > li.menu-item-has-children:hover > a::before{ transform:rotate(45deg) translate(2px,2px); }

.dc-menu .sub-menu{
  position:absolute; top:calc(100% - 2px); left:0; min-width:262px; list-style:none;
  margin:0; padding:10px; background:#fff;
  border:1px solid var(--dc-bord); border-top:3px solid var(--dc-ambre);
  border-radius:0 0 var(--dc-rayon-carte) var(--dc-rayon-carte);
  box-shadow:0 26px 48px -22px rgba(30,58,52,.4);
  opacity:0; visibility:hidden; transform:translateY(8px);
  transition:opacity .2s ease, transform var(--dc-transition), visibility .2s;
}
.dc-menu li:hover > .sub-menu,
.dc-menu li:focus-within > .sub-menu{ opacity:1; visibility:visible; transform:translateY(0); }
.dc-menu .sub-menu a{
  display:block; padding:11px 14px; color:var(--dc-vert);
  text-decoration:none; font-size:15px; font-weight:500; border-radius:6px;
  transition:background-color .2s ease, color .2s ease, padding-left .2s ease;
}
.dc-menu .sub-menu a:hover{ background:var(--dc-creme); color:var(--dc-ambre); padding-left:20px; }

.dc-entete-cta{
  display:inline-flex; align-items:center; justify-content:center; gap:9px; flex:0 0 auto;
  background:var(--dc-vert); color:#fff !important; text-decoration:none;
  padding:12px 19px; border-radius:999px; font-weight:600; font-size:14.5px;
  letter-spacing:.01em; white-space:nowrap;
  box-shadow:0 2px 6px rgba(30,58,52,.18);
  transition:background-color .22s ease, transform var(--dc-transition), box-shadow var(--dc-transition);
}
.dc-entete-cta svg{ width:16px; height:16px; flex:0 0 auto; }
.dc-entete-cta:hover{
  background:var(--dc-ambre); transform:translateY(-2px);
  box-shadow:0 12px 22px -10px rgba(184,100,42,.8);
}

/* Entre 1081 et 1180 px le menu complet et le numero ne tiennent plus cote a cote :
   le bouton d'appel garde son icone et perd le numero. */
@media (min-width:1081px) and (max-width:1180px){
  .dc-entete-inner{ gap:16px; }
  .dc-nav{ gap:12px; }
  .dc-menu > li > a{ padding-left:8px; padding-right:8px; font-size:14px; }
  .dc-menu > li > a::after{ left:8px; right:8px; }
  .dc-menu > li.menu-item-has-children > a{ padding-right:20px; }
  .dc-menu > li.menu-item-has-children > a::after{ right:20px; }
  .dc-entete-cta{ padding:12px; }
  .dc-entete-cta span{ display:none; }
  .dc-entete-cta svg{ width:18px; height:18px; }
}

.dc-burger{
  display:none; background:none; border:0; cursor:pointer; padding:11px 10px; gap:5px;
  flex-direction:column; width:46px; border-radius:8px;
}
.dc-burger:hover{ background:rgba(30,58,52,.06); }
.dc-burger span{ display:block; height:2px; background:var(--dc-vert); border-radius:2px; transition:.24s ease; }
.dc-burger.est-actif span:nth-child(1){ transform:translateY(7px) rotate(45deg); }
.dc-burger.est-actif span:nth-child(2){ opacity:0; }
.dc-burger.est-actif span:nth-child(3){ transform:translateY(-7px) rotate(-45deg); }

@media (max-width:1080px){
  .dc-burger{ display:flex; }
  .dc-entete-inner{ min-height:76px; }
  .dc-nav{
    display:none; position:absolute; left:0; right:0; top:100%;
    flex-direction:column; align-items:stretch; gap:0;
    background:var(--dc-creme); border-bottom:1px solid var(--dc-bord);
    box-shadow:0 26px 40px -26px rgba(30,58,52,.55);
    padding:8px var(--dc-gouttiere) 24px; max-height:80vh; overflow-y:auto;
  }
  .dc-nav.est-ouvert{ display:flex; }
  .dc-menu{ flex-direction:column; align-items:stretch; gap:0; }
  .dc-menu > li > a{ padding:15px 2px; border-bottom:1px solid var(--dc-bord); font-size:16px; }
  .dc-menu > li > a::after{ display:none; }
  .dc-menu .menu-item-has-children > a::before{ right:6px; }
  .dc-menu .sub-menu{
    position:static; opacity:1; visibility:visible; transform:none; display:none;
    border:0; box-shadow:none; background:transparent; padding:4px 0 10px 14px;
    min-width:0;
  }
  .dc-menu li.est-deplie > .sub-menu{ display:block; }
  .dc-menu li.est-deplie > a::before{ transform:rotate(225deg); }
  .dc-menu .sub-menu a{ padding:10px 12px; }
  .dc-entete-cta{ margin-top:18px; justify-content:center; padding:15px 20px; font-size:16px; }
  .dc-marque img, .custom-logo{ height:56px; }
}
@media (max-width:900px){
  .dc-bandeau .dc-cadre{ justify-content:center; text-align:center; }
  .dc-bandeau-zones{ display:none; }
}

/* ============================================================
   5. Contenu courant (pages non construites, articles)
   ============================================================ */
.dc-contenu{ display:block; }
.dc-page, .dc-article{
  width:100%; max-width:calc(var(--dc-largeur) + 2 * var(--dc-gouttiere));
  margin-inline:auto; padding:clamp(48px,6vw,84px) var(--dc-gouttiere) clamp(60px,7vw,96px);
}
.dc-article{ max-width:calc(760px + 2 * var(--dc-gouttiere)); }
.dc-page-entete, .dc-article-entete{ margin-bottom:38px; }
.dc-page-titre, .dc-article-titre{ margin-bottom:.28em; }
.dc-page-entete::before, .dc-article-entete::before{
  content:""; display:block; width:46px; height:3px; border-radius:3px;
  background:var(--dc-ambre); margin-bottom:24px;
}
.dc-page-chapo, .dc-article-chapo{ font-size:20px; color:var(--dc-gris); max-width:62ch; }
.dc-article-date{ font-size:13px; color:var(--dc-gris); text-transform:uppercase; letter-spacing:.09em; margin:0 0 12px; font-weight:600; }
.dc-article-image{ margin:0 0 38px; }
.dc-article-image img{ border-radius:var(--dc-rayon-carte); box-shadow:var(--dc-ombre-carte); }
.dc-article-contenu h2{ margin-top:1.9em; }
.dc-article-contenu h3{ margin-top:1.6em; }
.dc-article-contenu ul{ list-style:none; padding-left:0; }
.dc-article-contenu ul > li{ position:relative; padding-left:28px; margin-bottom:11px; }
.dc-article-contenu ul > li::before{
  content:""; position:absolute; left:3px; top:.62em; width:7px; height:7px;
  background:var(--dc-ambre); border-radius:1px; transform:translateY(-50%) rotate(45deg);
}
.dc-article-pied{
  margin-top:52px; padding:26px 30px; background:var(--dc-creme);
  border:1px solid var(--dc-bord); border-left:3px solid var(--dc-ambre);
  border-radius:var(--dc-rayon-carte);
}
.dc-article-pied p{ margin:0; }

/* Liste d'articles */
.dc-grille-articles{
  display:grid; grid-template-columns:repeat(auto-fill, minmax(300px, 1fr)); gap:30px;
}
.dc-carte{
  position:relative; background:#fff; border:1px solid var(--dc-bord);
  border-radius:var(--dc-rayon-carte); padding:26px 26px 28px;
  display:flex; flex-direction:column; overflow:hidden;
  box-shadow:var(--dc-ombre-carte);
  transition:transform var(--dc-transition), box-shadow var(--dc-transition), border-color var(--dc-transition);
}
.dc-carte::after{
  content:""; position:absolute; top:0; left:0; right:0; height:3px;
  background:linear-gradient(90deg, var(--dc-ambre), var(--dc-or));
}
.dc-carte:hover{ transform:translateY(-4px); box-shadow:var(--dc-ombre-levee); border-color:var(--dc-or); }
.dc-carte-image img{ border-radius:6px; margin-bottom:18px; }
.dc-carte-date{ font-size:12px; color:var(--dc-gris); text-transform:uppercase; letter-spacing:.09em; font-weight:600; margin:0 0 8px; }
.dc-carte-titre{ font-size:21px; margin:0 0 10px; }
.dc-carte-titre a{ color:var(--dc-vert); text-decoration:none; }
.dc-carte-titre a:hover{ color:var(--dc-ambre); }
.dc-carte-extrait{ color:var(--dc-gris); font-size:16px; flex:1; }
.dc-carte-lien{ font-weight:600; font-size:15px; }
.dc-liens-404{ list-style:none; padding:0; }
.pagination, .navigation.pagination{ margin-top:46px; }
.page-numbers{
  display:inline-block; padding:9px 15px; margin-right:6px; border:1px solid var(--dc-bord);
  border-radius:6px; text-decoration:none; color:var(--dc-vert); font-weight:600; font-size:15px;
  transition:background-color .2s ease, border-color .2s ease, color .2s ease;
}
.page-numbers:hover{ border-color:var(--dc-or); color:var(--dc-ambre); }
.page-numbers.current{ background:var(--dc-vert); color:#fff; border-color:var(--dc-vert); }

/* ============================================================
   6. Elementor : rythme et hierarchie
   ============================================================ */
.elementor a{ color:var(--dc-ambre); text-decoration:underline; text-underline-offset:3px; text-decoration-thickness:1px; }
.elementor a:hover{ color:var(--dc-vert); }
.elementor a.elementor-button, .elementor .elementor-button{ text-decoration:none; color:#fff; }
.elementor-widget-text-editor ul{ padding-left:0; margin:0; }
.elementor-element.e-con > .e-con-inner{ height:100%; }

/* --- Rythme vertical : quatre respirations differentes selon le role de la section. --- */

/* Cadence courante. */
.elementor > .e-con.e-parent{
  --padding-top:clamp(52px,5.6vw,86px);
  --padding-bottom:clamp(52px,5.6vw,86px);
  --padding-left:var(--dc-gouttiere);
  --padding-right:var(--dc-gouttiere);
}

/* Couture entre deux sections : visible sur les fonds clairs, invisible sur le vert. */
.elementor > .e-con.e-parent + .e-con.e-parent{
  box-shadow:inset 0 1px 0 rgba(30,58,52,.09);
}

/* Rangee de reperes chiffres : bande courte, on la traverse vite. */
.elementor > .e-con.e-parent:has(> .e-con-inner > .e-con.e-child > .e-con.e-child:nth-child(4)){
  --padding-top:clamp(34px,3.6vw,54px);
  --padding-bottom:clamp(34px,3.6vw,54px);
}

/* Rangee de trois blocs : le temps de poser le regard sur chacun. */
.elementor > .e-con.e-parent:has(> .e-con-inner > .e-con.e-child > .e-con.e-child:nth-child(3):last-child){
  --padding-top:clamp(66px,7.4vw,112px);
  --padding-bottom:clamp(70px,7.8vw,118px);
}

/* Derniere section avec un bouton : la chute de page, centree et ample. */
.elementor > .e-con.e-parent:last-child:has(.elementor-widget-button){
  --padding-top:clamp(74px,8.2vw,126px);
  --padding-bottom:clamp(74px,8.2vw,126px);
  --align-items:center;
  --text-align:center;
}
.elementor > .e-con.e-parent:last-child:has(.elementor-widget-button) > .e-con-inner > .elementor-widget-heading:has(> h2)::before{
  left:50%; transform:translateX(-50%);
}
.elementor > .e-con.e-parent:last-child:has(.elementor-widget-button) > .e-con-inner > .elementor-widget-heading > h2.elementor-heading-title{
  max-width:16ch; margin-inline:auto;
}
.elementor > .e-con.e-parent:last-child:has(.elementor-widget-button) > .e-con-inner > .elementor-widget-text-editor{
  max-width:56ch; margin-inline:auto;
}

/* Reperes de debut de section : un filet ambre au-dessus des titres pleine largeur. */
.elementor > .e-con.e-parent > .e-con-inner > .elementor-widget-heading:has(> h2),
.elementor > .e-con.e-parent > .elementor-widget-heading:has(> h2),
.elementor > .e-con.e-parent:first-child .elementor-widget-heading:has(> h1){
  position:relative; padding-top:26px;
}
.elementor > .e-con.e-parent > .e-con-inner > .elementor-widget-heading:has(> h2)::before,
.elementor > .e-con.e-parent > .elementor-widget-heading:has(> h2)::before,
.elementor > .e-con.e-parent:first-child .elementor-widget-heading:has(> h1)::before{
  content:""; position:absolute; top:0; left:0; width:46px; height:3px;
  border-radius:3px; background:var(--dc-ambre);
}
.elementor > .e-con.e-parent:first-child .elementor-widget-heading:has(> h1)::before{
  background:var(--dc-or); width:56px;
}

/* Meme repere au-dessus d'un titre de colonne. */
.elementor .e-con.e-child > .elementor-widget-heading:first-child:has(> h2){
  position:relative; padding-top:22px;
}
.elementor .e-con.e-child > .elementor-widget-heading:first-child:has(> h2)::before{
  content:""; position:absolute; top:0; left:0; width:34px; height:3px;
  border-radius:3px; background:var(--dc-ambre);
}

/* Titres de section : plus grands, plus serres. */
.elementor > .e-con.e-parent > .e-con-inner > .elementor-widget-heading > h2.elementor-heading-title,
.elementor > .e-con.e-parent > .elementor-widget-heading > h2.elementor-heading-title{
  font-size:clamp(27px,3.1vw,42px); line-height:1.1; letter-spacing:-.022em;
  max-width:19ch; text-wrap:balance;
}
.elementor .elementor-widget-heading > h3.elementor-heading-title{ letter-spacing:-.008em; line-height:1.24; }

/* Chapo de section : une mesure de lecture tenable. */
.elementor > .e-con.e-parent > .e-con-inner > .elementor-widget-text-editor,
.elementor > .e-con.e-parent > .elementor-widget-text-editor{ max-width:68ch; }

/* --- Listes --- */
.elementor-widget-text-editor ul{ list-style:none; }
.elementor-widget-text-editor ul > li{
  position:relative; padding-left:28px; margin-bottom:12px; line-height:1.6;
}
.elementor-widget-text-editor ul > li::before{
  content:""; position:absolute; left:3px; top:.62em; width:7px; height:7px;
  background:var(--dc-ambre); border-radius:1px;
  transform:translateY(-50%) rotate(45deg);
}
/* Zones d'intervention : une nappe de pastilles qui occupe toute la largeur. */
.elementor > .e-con.e-parent > .e-con-inner > .elementor-widget-text-editor:has(.dc-villes){ max-width:none; }
.elementor > .e-con.e-parent > .e-con-inner > .elementor-widget-text-editor:has(.dc-villes) > p{ max-width:68ch; }
.elementor-widget-text-editor ul.dc-villes{
  display:flex; flex-wrap:wrap; gap:10px;
  margin:22px 0 26px; padding:0;
}
.elementor-widget-text-editor ul.dc-villes > li{
  display:inline-flex; align-items:center; gap:10px;
  margin:0; padding:10px 18px; line-height:1.35;
  background:var(--dc-blanc); border:1px solid var(--dc-bord); border-radius:999px;
  color:var(--dc-vert); font-size:15px; font-weight:600; letter-spacing:.005em;
  transition:border-color var(--dc-transition), box-shadow var(--dc-transition), transform var(--dc-transition);
}
.elementor-widget-text-editor ul.dc-villes > li:hover{
  border-color:var(--dc-or); transform:translateY(-2px);
  box-shadow:0 10px 18px -12px rgba(30,58,52,.5);
}
.elementor-widget-text-editor ul.dc-villes > li::before{
  position:static; top:auto; left:auto; transform:rotate(45deg);
  flex:0 0 auto; width:7px; height:7px;
}

.elementor-widget-text-editor ol{ padding-left:22px; }
.elementor-widget-text-editor ol > li{ margin-bottom:12px; line-height:1.6; }
.elementor-widget-text-editor ol > li::marker{ color:var(--dc-ambre); font-weight:700; }

/* --- Le heros --- */
.elementor > .e-con.e-parent:first-child{
  --padding-top:clamp(74px,8.4vw,134px);
  --padding-bottom:clamp(74px,8.4vw,134px);
  isolation:isolate;
}
.elementor > .e-con.e-parent:first-child::after{
  content:""; position:absolute; inset:0; z-index:0; pointer-events:none;
  background:
    radial-gradient(760px 420px at 88% -10%, rgba(201,150,74,.20), transparent 62%),
    radial-gradient(620px 460px at 4% 108%, rgba(44,84,75,.55), transparent 66%);
}
.elementor > .e-con.e-parent:first-child > .e-con-inner,
.elementor > .e-con.e-parent:first-child > *{ position:relative; z-index:1; }

.elementor > .e-con.e-parent:first-child .elementor-widget-heading > h1.elementor-heading-title{
  font-size:clamp(34px,4.5vw,58px); line-height:1.05; letter-spacing:-.025em;
  max-width:17ch; text-wrap:balance;
}
.elementor > .e-con.e-parent:first-child .elementor-widget-text-editor{
  font-size:clamp(17px,1.35vw,20px); line-height:1.65; max-width:52ch;
}
.elementor > .e-con.e-parent:first-child .elementor-widget-image{ position:relative; }
.elementor > .e-con.e-parent:first-child .elementor-widget-image img{
  position:relative; z-index:1; display:block; width:100%;
  border-radius:12px;
  box-shadow:
    0 0 0 1px rgba(201,150,74,.55),
    0 0 0 10px rgba(255,255,255,.05),
    0 0 0 11px rgba(201,150,74,.18),
    0 34px 72px -30px rgba(0,0,0,.8);
}

/* --- Images courantes --- */
.elementor .elementor-widget-image img{
  border-radius:var(--dc-rayon-carte);
  box-shadow:0 18px 40px -26px rgba(30,58,52,.55);
}

/* --- Cartes : tout conteneur enfant auquel Elementor a donne une bordure.
       Les calculs sur --border-top-width valent 0 partout ailleurs. --- */
.elementor .e-con.e-child{
  transition:transform var(--dc-transition), box-shadow var(--dc-transition), border-color var(--dc-transition);
  box-shadow:0 calc(var(--border-top-width) * 3) calc(var(--border-top-width) * 22) calc(var(--border-top-width) * -8) rgba(30,58,52,.34);
}
.elementor .e-con.e-child::after{
  content:""; position:absolute; pointer-events:none; z-index:2;
  top:calc(0px - var(--border-top-width));
  left:calc(0px - var(--border-left-width));
  right:calc(0px - var(--border-right-width));
  height:calc(var(--border-top-width) * 3);
  border-radius:8px 8px 0 0;
  background:linear-gradient(90deg, var(--dc-ambre), var(--dc-or));
}
.elementor .e-con.e-child:hover{
  transform:translateY(calc(var(--border-top-width) * -4));
  box-shadow:0 calc(var(--border-top-width) * 14) calc(var(--border-top-width) * 34) calc(var(--border-top-width) * -12) rgba(30,58,52,.5);
  border-color:var(--dc-or);
}
/* Lien d'action pousse en pied de carte : les trois liens s'alignent. */
.elementor .e-con.e-child > .elementor-widget-text-editor:has(.dc-lien-carte){
  flex:1 1 auto; display:flex; flex-direction:column;
}
.elementor .elementor-widget-text-editor .dc-lien-carte{
  margin:auto 0 0; padding-top:20px;
}
.elementor .elementor-widget-text-editor .dc-lien-carte a{
  display:inline-flex; align-items:center; gap:9px; padding-bottom:4px;
  font-size:15.5px; font-weight:600; letter-spacing:.012em;
  color:var(--dc-ambre); text-decoration:none;
  border-bottom:2px solid rgba(184,100,42,.3);
  transition:border-color .2s ease, color .2s ease;
}
.elementor .elementor-widget-text-editor .dc-lien-carte a::after{
  content:"\2192"; display:inline-block; transition:transform var(--dc-transition);
}
.elementor .e-con.e-child:hover .dc-lien-carte a{ border-bottom-color:var(--dc-ambre); }
.elementor .e-con.e-child:hover .dc-lien-carte a::after{ transform:translateX(5px); }
.elementor .elementor-widget-text-editor .dc-lien-carte a:hover{ color:var(--dc-ambre-fonce); }

/* --- Le bandeau de reperes du haut de l'accueil (rangee de quatre) --- */
@media (min-width:768px){
  .elementor .e-con.e-child:has(> .e-con.e-child:nth-child(4)) > .e-con.e-child + .e-con.e-child{
    border-left:1px solid var(--dc-bord);
    --padding-left:30px;
  }
}
.elementor .e-con.e-child:has(> .e-con.e-child:nth-child(4)) .elementor-widget-heading > h3.elementor-heading-title{
  font-size:clamp(28px,3vw,38px); letter-spacing:-.028em; line-height:1.08;
  margin-bottom:0;
}
/* Deux lignes reservees : les quatre paragraphes demarrent a la meme hauteur,
   que le titre tienne sur une ligne ou sur deux. */
@media (min-width:768px){
  .elementor .e-con.e-child:has(> .e-con.e-child:nth-child(4)) .elementor-widget-heading > h3.elementor-heading-title{
    min-height:2.16em;
  }
}

/* --- Boutons --- */
.elementor .elementor-button{
  position:relative; display:inline-flex; align-items:center;
  font-family:var(--dc-texte-police); font-weight:600; font-size:16px; letter-spacing:.012em;
  border-radius:999px !important; padding:16px 30px;
  box-shadow:0 2px 6px rgba(30,58,52,.16);
  transition:transform var(--dc-transition), box-shadow var(--dc-transition);
}
.elementor .elementor-button .elementor-button-content-wrapper{ display:inline-flex; align-items:center; gap:10px; }
.elementor .elementor-button .elementor-button-text::after{
  content:"\2192"; display:inline-block; margin-left:10px;
  transition:transform var(--dc-transition);
}
.elementor a.elementor-button:hover, .elementor .elementor-button:hover{
  color:#fff; transform:translateY(-2px);
  box-shadow:inset 0 0 0 999px rgba(0,0,0,.14), 0 16px 28px -14px rgba(30,58,52,.7);
}
.elementor .elementor-button:hover .elementor-button-text::after{ transform:translateX(5px); }
.elementor .elementor-button:active{ transform:translateY(0); }

/* ============================================================
   7. Formulaires FluentForm
   ============================================================ */
.elementor-widget-shortcode .fluentform{
  max-width:840px; margin-top:6px;
  background:var(--dc-creme); border:1px solid var(--dc-bord);
  border-radius:14px; padding:clamp(24px,3vw,38px);
  box-shadow:var(--dc-ombre-carte);
}
.fluentform fieldset{ position:relative; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px 26px; }
.fluentform fieldset > legend.ff_screen_reader_title{ position:absolute !important; }
.fluentform .ff-el-group{ margin-bottom:0; }
.fluentform .ff-el-group:has(textarea),
.fluentform .ff_submit_btn_wrapper{ grid-column:1 / -1; }
.fluentform .ff-el-input--label{ margin-bottom:7px; }
.fluentform .ff-el-input--label label{
  font-weight:600; color:var(--dc-vert); font-size:14.5px; letter-spacing:.005em;
}
.fluentform .ff-el-form-control{
  width:100%; max-width:none; padding:13px 15px; font-size:16px; line-height:1.5;
  border:1px solid #D6CFC2; border-radius:8px; background:#fff;
  color:var(--dc-texte); font-family:var(--dc-texte-police);
  transition:border-color .2s ease, box-shadow .2s ease;
}
.fluentform .ff-el-form-control::placeholder{ color:#9C978C; }
.fluentform .ff-el-form-control:hover{ border-color:#BFB6A6; }
.fluentform .ff-el-form-control:focus{
  border-color:var(--dc-vert); outline:none;
  box-shadow:0 0 0 3px rgba(30,58,52,.14);
}
.fluentform select.ff-el-form-control{
  appearance:none; -webkit-appearance:none; padding-right:40px; cursor:pointer;
  background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5 6 6.5l5-5' fill='none' stroke='%231E3A34' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:right 15px center; background-size:12px 8px;
}
.fluentform textarea.ff-el-form-control{ min-height:140px; resize:vertical; }
.fluentform .ff-btn-submit{
  background:var(--dc-ambre) !important; border:0 !important;
  color:#fff !important; padding:16px 34px !important; font-size:16px !important;
  border-radius:999px !important; font-weight:600 !important;
  font-family:var(--dc-texte-police) !important; cursor:pointer;
  box-shadow:0 2px 6px rgba(184,100,42,.3);
  transition:transform var(--dc-transition), box-shadow var(--dc-transition);
}
.fluentform .ff-btn-submit:hover{
  background:var(--dc-ambre) !important; transform:translateY(-2px);
  box-shadow:inset 0 0 0 999px rgba(0,0,0,.14), 0 16px 28px -14px rgba(184,100,42,.9);
}
.ff-el-is-error .ff-el-form-control{ border-color:var(--dc-ambre); }
.fluentform .text-danger, .fluentform .error{ font-size:14px; }
@media (max-width:767px){
  .fluentform fieldset{ grid-template-columns:1fr; gap:18px; }
}

/* ============================================================
   8. Pied de page
   ============================================================ */
.dc-pied{
  position:relative; background:var(--dc-vert-profond); color:var(--dc-clair-sur-vert);
  padding:clamp(52px,5.5vw,78px) 0 26px;
  font-size:15px;
}
.dc-pied::before{
  content:""; position:absolute; top:0; left:0; right:0; height:3px;
  background:linear-gradient(90deg, var(--dc-ambre), var(--dc-or) 42%, rgba(201,150,74,0) 88%);
}
.dc-pied-haut{
  display:grid; grid-template-columns:1.5fr 1fr 1.15fr; gap:44px 48px; align-items:start;
}
.dc-pied p{ margin:0 0 9px; font-size:15px; line-height:1.65; }
.dc-pied a{ color:#E9C79A; text-decoration:none; transition:color .2s ease; }
.dc-pied a:hover{ color:#fff; }
.dc-pied-nom{
  font-family:var(--dc-titre); font-weight:700; font-size:23px; letter-spacing:-.018em;
  color:#fff; margin:0 0 12px;
}
.dc-pied-baseline{ color:#BFCFC9; max-width:34ch; }
.dc-pied-lieu{ color:#93ABA3; font-size:14px; margin-top:14px; }
.dc-pied-titre{
  font-size:12.5px; font-weight:700; text-transform:uppercase; letter-spacing:.12em;
  color:var(--dc-or); margin:0 0 16px;
}
.dc-pied-menu{ list-style:none; margin:0; padding:0; }
.dc-pied-menu li{ margin-bottom:10px; }
.dc-pied-menu a{
  display:inline-block; font-size:15px; color:var(--dc-clair-sur-vert);
  transition:color .2s ease, transform var(--dc-transition);
}
.dc-pied-menu a:hover{ color:#fff; transform:translateX(4px); }

.dc-pied-liens{ list-style:none; margin:0; padding:0; }
.dc-pied-liens li{ margin-bottom:11px; }
.dc-pied-liens a{
  display:inline-flex; align-items:center; gap:11px;
  color:var(--dc-clair-sur-vert);
}
.dc-pied-liens a:hover{ color:#fff; }
.dc-pied-liens svg{ width:17px; height:17px; flex:0 0 auto; color:var(--dc-or); }
.dc-pied-tel{
  font-family:var(--dc-titre); font-size:25px; font-weight:700; letter-spacing:-.01em;
  color:#fff !important; margin:0 0 4px; display:inline-block;
}
.dc-pied-tel:hover{ color:var(--dc-or) !important; }

.dc-pied-preuves{
  display:flex; flex-wrap:wrap; gap:10px;
  margin-top:clamp(36px,4vw,52px);
}
.dc-pied-preuve{
  display:inline-flex; align-items:center; gap:8px;
  border:1px solid rgba(201,150,74,.36); border-radius:999px;
  padding:8px 16px; font-size:13px; color:#CFDCD7; letter-spacing:.01em;
}
.dc-pied-preuve::before{
  content:""; width:6px; height:6px; border-radius:50%; background:var(--dc-or); flex:0 0 auto;
}
.dc-pied-legal{
  margin-top:30px; padding-top:20px;
  border-top:1px solid rgba(255,255,255,.14); color:#8FA8A0;
}
.dc-pied-legal p{ font-size:13px; margin:0 0 6px; color:#8FA8A0; }
.dc-pied-legal a{ color:#B7C7C1; }
.dc-pied-legal a:hover{ color:#fff; }

@media (max-width:1024px){
  .dc-pied-haut{ grid-template-columns:1fr 1fr; gap:38px; }
  .dc-pied-marque{ grid-column:1 / -1; }
}
@media (max-width:600px){
  .dc-pied-haut{ grid-template-columns:1fr; gap:34px; }
}

/* ============================================================
   9. Petits ecrans
   ============================================================ */
@media (max-width:767px){
  body{ font-size:17px; }
  .elementor-widget-text-editor{ font-size:17px !important; }
  .dc-page-chapo, .dc-article-chapo{ font-size:18px; }
  .elementor .elementor-button{ padding:15px 26px; font-size:15px; }
  .elementor > .e-con.e-parent > .e-con-inner > .elementor-widget-heading > h2.elementor-heading-title,
  .elementor > .e-con.e-parent:first-child .elementor-widget-heading > h1.elementor-heading-title{ max-width:none; }
}

@media (prefers-reduced-motion:reduce){
  html{ scroll-behavior:auto; }
  *,*::before,*::after{
    animation-duration:.001ms !important; animation-iteration-count:1 !important;
    transition-duration:.001ms !important;
  }
}

@media print{
  .dc-bandeau, .dc-entete, .dc-pied{ display:none !important; }
}
