:root{--dhtb-primary:#54413A;--dhtb-secondary:#9EC52B;--dhtb-secondary-bg:#9EC52B26;--dhtb-btn-text:#fff}.dhtb-admin-wrap .dhtb-admin-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.dhtb-admin-card{background:#fff;border:1px solid #dcdcde;border-radius:10px;padding:20px;margin-top:20px}.dhtb-muted{color:#646970}.dhtb-form-wrap,.dhtb-intake-card{max-width:820px;margin:0 auto}.dhtb-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.dhtb-form-field.full{grid-column:1/-1}.dhtb-form-field label,.dhtb-intake-form label{display:block;font-weight:700;margin-bottom:7px;color:var(--dhtb-primary)}.dhtb-form-field input,.dhtb-form-field textarea,.dhtb-intake-form input,.dhtb-intake-form textarea,.dhtb-directory-filters select{width:100%;border:1px solid rgba(33,33,33,.18);border-radius:10px;padding:13px 14px;font-size:15px;box-sizing:border-box;background:#fff;color:var(--dhtb-primary)}.dhtb-form-field textarea,.dhtb-intake-form textarea{min-height:130px}.dhtb-form-submit,.dhtb-card-button{display:inline-flex;align-items:center;justify-content:center;background:var(--dhtb-secondary);color:var(--dhtb-btn-text)!important;border:0!important;border-radius:999px;padding:14px 26px;font-weight:800;text-decoration:none!important;cursor:pointer}.dhtb-form-message{padding:14px 18px;border-radius:10px;margin-bottom:18px;font-weight:700}.dhtb-form-message.success{background:#e9f8ee;color:#1f6b2b}.dhtb-form-message.error{background:#fdeaea;color:#9b1c1c}.dhtb-hp-field{position:absolute!important;left:-99999px!important;width:1px!important;height:1px!important;opacity:0!important;pointer-events:none!important}.dhtb-floating-buttons{position:fixed;z-index:99999;bottom:24px;display:flex;flex-direction:column;gap:12px}.dhtb-floating-buttons.left{left:22px;right:auto}.dhtb-floating-button{width:56px!important;height:56px!important;border-radius:50%!important;display:flex!important;align-items:center!important;justify-content:center!important;text-decoration:none!important;box-shadow:0 10px 25px rgba(0,0,0,.18)}.dhtb-floating-phone{background:#54413A;color:#fff!important}.dhtb-floating-contact{background:var(--dhtb-secondary);color:#fff!important}.dhtb-reviews-section{max-width:1200px;margin:0 auto;padding:30px 20px}.dhtb-reviews-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}.dhtb-review-card{background:#fff;border:2px solid var(--dhtb-secondary-bg);border-radius:18px;padding:28px;box-shadow:0 12px 30px rgba(31,58,46,.06)}.dhtb-review-stars{color:var(--dhtb-secondary);margin-bottom:18px;letter-spacing:2px}.dhtb-intake-page{padding:60px 20px;background:#f7f7f7}.dhtb-intake-card{background:#fff;border-radius:20px;padding:35px;box-shadow:0 20px 60px rgba(0,0,0,.08)}.dhtb-directory{max-width:1200px;margin:0 auto;padding:60px 20px}.dhtb-directory-hero{text-align:center;margin-bottom:35px}.dhtb-directory-hero h1{font-size:48px;color:#54413A;margin-bottom:10px}.dhtb-directory-filters{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:30px}.dhtb-directory-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}.dhtb-directory-card{background:#fff;border:1px solid rgba(33,33,33,.12);border-radius:18px;padding:24px;box-shadow:0 12px 28px rgba(0,0,0,.06)}.dhtb-directory-card h2{font-size:24px;margin:0 0 8px}.dhtb-directory-card h2 a{color:#54413A;text-decoration:none}.dhtb-card-location{font-weight:700;color:#9EC52B}.dhtb-card-tags{font-size:13px;background:#f2f5f2;border-radius:999px;padding:8px 12px}.dhtb-map-wrap{margin-bottom:25px;border-radius:20px;overflow:hidden;background:#f3f3f3}.dhtb-map-wrap #dhtbMap{height:420px;width:100%}@media(max-width:900px){.dhtb-admin-wrap .dhtb-admin-grid,.dhtb-directory-filters,.dhtb-directory-grid,.dhtb-reviews-grid{grid-template-columns:1fr}.dhtb-form-grid{grid-template-columns:1fr}.dhtb-directory-hero h1{font-size:36px}}


/* TravauxBois reviews carousel */
.dhtb-reviews-carousel{max-width:1200px;margin:0 auto;padding:30px 56px;position:relative;box-sizing:border-box}.dhtb-reviews-viewport{overflow:hidden;width:100%}.dhtb-reviews-track{display:flex;gap:22px;transition:transform .35s ease;will-change:transform}.dhtb-reviews-carousel .dhtb-review-card{flex:0 0 calc((100% - 44px)/3);box-sizing:border-box;background:#fff;border:2px solid var(--dhtb-secondary-bg);border-radius:18px;padding:28px;box-shadow:0 12px 30px rgba(31,58,46,.06)}.dhtb-reviews-carousel .dhtb-review-card h3{margin:0 0 12px;color:var(--dhtb-primary);font-size:22px;line-height:1.2}.dhtb-reviews-carousel .dhtb-review-card p{margin:0 0 18px;color:var(--dhtb-primary);line-height:1.6}.dhtb-review-stars{color:var(--dhtb-secondary);margin-bottom:18px;letter-spacing:2px}.dhtb-review-meta{display:flex;flex-direction:column;gap:4px;color:var(--dhtb-primary)}.dhtb-review-meta span{font-size:14px;opacity:.78}.dhtb-reviews-arrow{position:absolute;top:50%;transform:translateY(-50%);width:42px;height:42px;border-radius:50%;border:0;background:var(--dhtb-secondary);color:#fff;font-size:34px;line-height:1;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 10px 24px rgba(0,0,0,.16);z-index:2}.dhtb-reviews-prev{left:4px}.dhtb-reviews-next{right:4px}.dhtb-reviews-arrow:disabled{opacity:.28;cursor:not-allowed}.dhtb-reviews-carousel.is-static .dhtb-reviews-arrow{display:none}@media(max-width:1024px){.dhtb-reviews-carousel .dhtb-review-card{flex-basis:calc((100% - 22px)/2)}}@media(max-width:767px){.dhtb-reviews-carousel{padding:25px 48px}.dhtb-reviews-carousel .dhtb-review-card{flex-basis:100%;padding:24px}.dhtb-reviews-arrow{width:38px;height:38px;font-size:30px}.dhtb-reviews-prev{left:2px}.dhtb-reviews-next{right:2px}}
.dhtb-form-submit-secondary{background:#9EC52B26!important;color:#54413A!important}

/* TravauxBois annuaire v2.1.3 */
.dhtb-directory{max-width:1240px;margin:0 auto;padding:60px 20px;color:#54413A}.dhtb-directory-hero{text-align:center;margin-bottom:35px}.dhtb-directory-hero h1{font-size:48px;line-height:1.05;color:#54413A;margin:0 0 12px}.dhtb-directory-hero p{font-size:18px;max-width:760px;margin:0 auto;color:#54413A;opacity:.82}.dhtb-map-wrap{margin:0 0 34px;border-radius:20px;overflow:hidden;background:#f3f3f3;box-shadow:0 18px 45px rgba(33,33,33,.08)}.dhtb-map-wrap #dhtbMap{height:430px;width:100%}.dhtb-map-empty{margin:0 0 34px;padding:24px;border-radius:18px;background:#f7f8f7;border:1px dashed rgba(46,125,50,.45);color:#54413A;text-align:center}.dhtb-map-popup{font-family:Inter,Arial,sans-serif;min-width:190px;color:#54413A}.dhtb-map-popup strong{display:block;font-size:16px;margin-bottom:5px}.dhtb-map-popup span,.dhtb-map-popup em{display:block;font-size:13px;margin-bottom:5px;font-style:normal}.dhtb-map-popup a{display:inline-flex;margin-top:7px;background:#9EC52B;color:#fff!important;text-decoration:none!important;border-radius:8px;padding:8px 12px;font-weight:700}.dhtb-directory-filters{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr)) auto;gap:16px;align-items:end;margin:0 0 34px;padding:20px;background:#fff;border:1px solid rgba(33,33,33,.10);border-radius:18px;box-shadow:0 14px 35px rgba(33,33,33,.06)}.dhtb-filter-field{min-width:0}.dhtb-filter-field label{display:block;margin:0 0 8px;color:#54413A;font-weight:800;font-size:14px;line-height:1.2}.dhtb-directory-filters select{width:100%!important;min-height:54px!important;height:auto!important;box-sizing:border-box!important;border:1px solid rgba(33,33,33,.22)!important;border-radius:8px!important;padding:0 42px 0 15px!important;background-color:#fff!important;color:#54413A!important;font-size:15px!important;font-weight:600!important;line-height:54px!important;white-space:normal!important;overflow:visible!important;text-overflow:clip!important;appearance:none!important;-webkit-appearance:none!important;background-image:linear-gradient(45deg,transparent 50%,#54413A 50%),linear-gradient(135deg,#54413A 50%,transparent 50%)!important;background-position:calc(100% - 19px) 24px,calc(100% - 13px) 24px!important;background-size:6px 6px,6px 6px!important;background-repeat:no-repeat!important}.dhtb-directory-filters select:focus{outline:none!important;border-color:#9EC52B!important;box-shadow:0 0 0 3px rgba(46,125,50,.16)!important}.dhtb-directory-reset{min-height:54px;border:0;border-radius:8px;background:#9EC52B26;color:#54413A;font-weight:800;padding:0 18px;cursor:pointer;white-space:nowrap}.dhtb-directory-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}.dhtb-directory-card{background:#fff;border:1px solid rgba(33,33,33,.12);border-radius:18px;padding:24px;box-shadow:0 12px 28px rgba(0,0,0,.06)}.dhtb-directory-card h2{font-size:24px;line-height:1.2;margin:0 0 8px}.dhtb-directory-card h2 a{color:#54413A!important;text-decoration:none!important}.dhtb-card-location{font-weight:800;color:#9EC52B;margin:0 0 12px}.dhtb-card-tags{font-size:13px;background:#f2f5f2;border-radius:999px;padding:8px 12px;display:inline-block}.dhtb-card-button{margin-top:12px}@media(max-width:1100px){.dhtb-directory-filters{grid-template-columns:repeat(2,minmax(0,1fr))}.dhtb-directory-reset{grid-column:1/-1}.dhtb-directory-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:767px){.dhtb-directory{padding:40px 14px}.dhtb-directory-hero h1{font-size:36px}.dhtb-directory-filters,.dhtb-directory-grid{grid-template-columns:1fr!important}.dhtb-map-wrap #dhtbMap{height:340px}.dhtb-directory-filters{padding:16px;border-radius:14px}}


/* TravauxBois annuaire v2.1.4 card refinements */
.dhtb-directory .dhtb-directory-card{
    border-radius:10px;
}
.dhtb-directory .dhtb-card-tags{
    display:block;
    width:fit-content;
    max-width:100%;
    margin:18px 0 0;
    border-radius:5px;
    background:#f2f5f2;
    color:#54413A;
    padding:10px 14px;
    line-height:1.35;
}
.dhtb-directory .dhtb-card-button,
.dhtb-directory .dhtb-directory-card-button,
.dhtb-map-popup a{
    border-radius:5px!important;
}
.dhtb-directory .dhtb-card-button,
.dhtb-directory .dhtb-directory-card-button{
    display:inline-flex!important;
    width:auto!important;
    margin-top:18px!important;
    padding:13px 22px!important;
}


/* TravauxBois floating buttons: inline SVG icons, no Dashicons/Font Awesome dependency */
.dhtb-floating-button svg.dhtb-floating-icon{
  width:24px!important;
  height:24px!important;
  display:block!important;
  fill:none!important;
  stroke:currentColor!important;
  stroke-width:2!important;
  stroke-linecap:round!important;
  stroke-linejoin:round!important;
  color:inherit!important;
  pointer-events:none!important;
}

/* TravauxBois v1.0.2 — couleurs client dynamiques + optimisation landing mini-site */

.dhtb-form-wrap{
  width:100%;
}
.dhtb-form{
  background:#fff;
  border:1px solid rgba(84,65,58,.10);
  border-radius:18px;
  padding:26px;
  box-shadow:0 18px 45px rgba(84,65,58,.08);
}
.dhtb-form-field label,
.dhtb-intake-form label{
  color:var(--dhtb-primary)!important;
}
.dhtb-form-field input,
.dhtb-form-field textarea,
.dhtb-intake-form input,
.dhtb-intake-form textarea{
  border:1px solid color-mix(in srgb, var(--dhtb-primary) 18%, transparent)!important;
  color:var(--dhtb-primary)!important;
  transition:border-color .2s ease, box-shadow .2s ease, background-color .2s ease;
}
.dhtb-form-field input:focus,
.dhtb-form-field textarea:focus,
.dhtb-intake-form input:focus,
.dhtb-intake-form textarea:focus{
  outline:none!important;
  border-color:var(--dhtb-secondary)!important;
  box-shadow:0 0 0 3px var(--dhtb-secondary-bg)!important;
}
.dhtb-form-submit,
.dhtb-card-button{
  background:var(--dhtb-secondary)!important;
  color:var(--dhtb-btn-text)!important;
  border-radius:8px!important;
  transition:transform .2s ease, background-color .2s ease, box-shadow .2s ease!important;
}
.dhtb-form-submit:hover,
.dhtb-form-submit:focus,
.dhtb-card-button:hover,
.dhtb-card-button:focus{
  background:var(--dhtb-primary)!important;
  color:var(--dhtb-btn-text)!important;
  transform:translateY(-2px);
  box-shadow:0 12px 24px color-mix(in srgb, var(--dhtb-secondary) 28%, transparent)!important;
}
.dhtb-form-submit-secondary{
  background:var(--dhtb-secondary-bg)!important;
  color:var(--dhtb-primary)!important;
}
.dhtb-form-submit-secondary:hover,
.dhtb-form-submit-secondary:focus{
  background:var(--dhtb-primary)!important;
  color:#fff!important;
}

.dhtb-floating-button{
  color:var(--dhtb-btn-text)!important;
  transition:transform .2s ease, background-color .2s ease, box-shadow .2s ease, opacity .2s ease!important;
}
.dhtb-floating-phone{
  background:var(--dhtb-primary)!important;
}
.dhtb-floating-contact{
  background:var(--dhtb-secondary)!important;
}
.dhtb-floating-button:hover,
.dhtb-floating-button:focus{
  transform:translateY(-3px) scale(1.03);
  box-shadow:0 14px 30px rgba(0,0,0,.22)!important;
  color:var(--dhtb-btn-text)!important;
}
.dhtb-floating-phone:hover,
.dhtb-floating-phone:focus{
  background:var(--dhtb-secondary)!important;
}
.dhtb-floating-contact:hover,
.dhtb-floating-contact:focus{
  background:var(--dhtb-primary)!important;
}

.dhtb-review-card{
  border-color:var(--dhtb-secondary-bg)!important;
}
.dhtb-review-stars,
.dhtb-reviews-arrow{
  color:var(--dhtb-secondary)!important;
}
.dhtb-reviews-arrow{
  background:var(--dhtb-secondary)!important;
  color:var(--dhtb-btn-text)!important;
}
.dhtb-reviews-carousel .dhtb-review-card h3,
.dhtb-reviews-carousel .dhtb-review-card p,
.dhtb-review-meta{
  color:var(--dhtb-primary)!important;
}

/* Classe optionnelle à mettre sur le conteneur principal d'une landing Elementor */
.tb-landing-page .elementor-widget-text-editor p,
.tb-landing-page .elementor-widget-heading .elementor-heading-title{
  text-wrap:pretty;
}
.tb-landing-page .eael-creative-button,
.tb-landing-page .elementor-button{
  border-radius:8px!important;
}

@media(max-width:767px){
  .dhtb-form{padding:20px;border-radius:14px;}
  .dhtb-floating-buttons{right:14px!important;bottom:18px!important;gap:10px!important;}
  .dhtb-floating-button{width:52px!important;height:52px!important;}
  .dhtb-floating-button svg.dhtb-floating-icon{width:22px!important;height:22px!important;}
}


/* TravauxBois Pro — correctifs formulaires / cartes vides */
.dhtb-form-wrap:empty,
.dhtb-form:empty,
.dhtb-intake-card:empty{
  display:none!important;
  padding:0!important;
  margin:0!important;
  border:0!important;
  box-shadow:none!important;
  background:transparent!important;
}

/* TravauxBois Pro — éviter une carte vide visible si aucun champ / aucun contenu */
.dhtb-form:not(:has(input, textarea, select, button)),
.dhtb-intake-card:not(:has(input, textarea, select, button, p, h1, h2, h3)){
  display:none!important;
}


/* TravauxBois Pro — couleurs globales du module Pro */
:root{
  --dhtb-primary:#54413A;
  --dhtb-secondary:#9EC52B;
  --dhtb-secondary-bg:#9EC52B26;
  --dhtb-btn-text:#fff;
}
