/*
 Theme Name:   EchoTech
 Theme URI:    https://www.echotech.fr
 Description:  Thème enfant Divi commun à tous les sites EchoTech. Le style propre à chaque client passe par les variables et presets Divi 5, pas par ce fichier.
 Author:       EchoTech
 Author URI:   https://www.echotech.fr
 Template:     Divi
 Version:      1.6.0
 Text Domain:  echotech
*/

/* CSS commun à tous les sites (corrections Divi 5, accessibilité).
   Ne rien mettre ici qui soit propre à un client. */

/* Piège Divi 5.19 : le module Image passe en flex, l'image doit occuper toute la largeur. */
.et_pb_image .et_pb_image_wrap,
.et_pb_image img { width: 100%; }

/* Icônes des cartes (Blurb) : 96 px par défaut chez Divi, trop grand pour des cartes de services.
   Divi 5.19 n'applique pas la largeur d'icône des presets ; une icône réglée module par module reste prioritaire. */
.et_pb_blurb .et_pb_main_blurb_image .et-pb-icon { font-size: 40px; }
/* Icône alignée à gauche, comme le titre et le texte de la carte. */
.et_pb_blurb .et_pb_main_blurb_image { text-align: left; margin-left: 0; align-self: flex-start; }

/* ===== Classes utilitaires des sections EchoTech =====
   Elles lisent les variables Divi : une ambiance les change comme le reste. */

/* Boutons côte à côte quand une colonne en contient plusieurs à la suite. */
.et_pb_column:has(> .et_pb_button_module_wrapper + .et_pb_button_module_wrapper) {
  flex-direction: row; flex-wrap: wrap; align-items: center; column-gap: 12px;
}
.et_pb_column:has(> .et_pb_button_module_wrapper + .et_pb_button_module_wrapper) > :not(.et_pb_button_module_wrapper) { flex-basis: 100%; }

.et-surtitre p { color: var(--gcid-primary-color); font-weight: 600; font-size: 16px; margin: 0; padding: 0; }
/* « {{metier}} à {{ville}} » en début de phrase : majuscule automatique. */
.et-surtitre p::first-letter,
#main-footer .footer-widget:first-child p::first-letter { text-transform: uppercase; }
.et-meta, .et-meta a { color: var(--gcid-body-color); opacity: .8; font-size: .9em; }
.et-ariane p { font-size: 15px; padding: 0; }
.et-signature { font-style: italic; color: var(--gcid-heading-color); }

/* Listes à coches. */
ul.et-coches { list-style: none; padding: 0 !important; margin: 0 0 1em; }
ul.et-coches li { position: relative; padding: 0 0 6px 28px; }
ul.et-coches li::before {
  content: ""; position: absolute; left: 2px; top: .35em; width: 14px; height: 8px;
  border-left: 2.5px solid var(--gcid-primary-color); border-bottom: 2.5px solid var(--gcid-primary-color); transform: rotate(-45deg);
}
.et-coches-ligne ul.et-coches { display: flex; flex-wrap: wrap; gap: 4px 22px; font-size: 15px; }

/* Chiffres clés. */
.et-chiffre { font-family: var(--et_global_heading_font), serif; font-size: clamp(30px, 4vw, 42px); font-weight: 700; line-height: 1.1; color: var(--gcid-primary-color); padding-bottom: 4px !important; }
.et-bloc-chiffre p:not(.et-chiffre) { font-size: 15px; }

/* Note et avis. */
.et-etoiles { color: var(--gcid-secondary-color); letter-spacing: 2px; }
p.et-etoiles { padding-bottom: 6px; }
.et-labels { font-size: 15px; text-align: right; }
blockquote.et-citation { border: 0; padding: 0; margin: 0 0 12px; font-family: var(--et_global_heading_font), serif; font-size: clamp(21px, 2.4vw, 28px); line-height: 1.35; color: var(--gcid-heading-color); }

/* Grille de tarifs. */
ul.et-tarifs { list-style: none; padding: 0 !important; margin: 0 0 12px; }
ul.et-tarifs li { display: flex; justify-content: space-between; gap: 16px; padding: 14px 0; border-bottom: 1px solid var(--gcid-et-bordure); }
ul.et-tarifs strong { color: var(--gcid-heading-color); white-space: nowrap; }
.et-prix-appel strong { color: var(--gcid-primary-color); }

/* Carte de formule. */
.et-carte-formule { background: var(--gcid-et-fond); border: 1px solid var(--gcid-et-bordure); border-radius: var(--gvid-et-rayon); padding: 28px; }
.et-carte-formule h3 { padding-bottom: 6px; }

/* Légende de réalisation. */
.et-legende h3 { font-size: 20px; padding: 14px 0 4px; }

/* Communes. */
ul.et-communes { list-style: none; padding: 0 !important; columns: 2; column-gap: 24px; }
ul.et-communes li { padding: 6px 0; border-bottom: 1px solid var(--gcid-et-bordure); break-inside: avoid; }

/* Rangées 1/3 – 2/3 et 2/3 – 1/3 (Divi 5.19 coupe sinon en deux moitiés égales). */
@media (min-width: 981px) {
  .et-r-1-2 > .et_pb_column:nth-child(1), .et-r-2-1 > .et_pb_column:nth-child(2) { flex: 0 0 calc(33.333% - 2%) !important; max-width: calc(33.333% - 2%) !important; }
  .et-r-1-2 > .et_pb_column:nth-child(2), .et-r-2-1 > .et_pb_column:nth-child(1) { flex: 1 1 0 !important; max-width: none !important; }
}

/* Mobile et tablette : Divi 5.19 laisse les colonnes côte à côte, on les empile.
   Les rangées de 4 colonnes passent à 2 par ligne sur tablette. */
@media (max-width: 980px) {
  .et_pb_row { flex-wrap: wrap !important; row-gap: 32px; }
  .et_pb_row > .et_pb_column { flex: 1 1 100% !important; max-width: 100% !important; margin-right: 0 !important; }
}
@media (min-width: 600px) and (max-width: 980px) {
  .et_pb_row:has(> .et_pb_column:nth-child(4)) > .et_pb_column { flex: 1 1 calc(50% - 16px) !important; max-width: calc(50% - 16px) !important; }
}

/* Sections. */
.et-section-courte.et_pb_section { padding-top: calc(var(--gvid-et-section) * .55) !important; padding-bottom: calc(var(--gvid-et-section) * .55) !important; }
.et-centre .et_pb_column { align-items: center; text-align: center; }
.et-fond-photo.et_pb_section { position: relative; min-height: 70vh; display: flex; justify-content: center; background-size: cover; background-position: center; }
.et-fond-photo.et_pb_section::before { content: ""; position: absolute; inset: 0; background: var(--gcid-et-sombre); opacity: .62; }
.et-fond-photo .et_pb_row { position: relative; z-index: 1; }

/* Pages légales : texte long, lisible. */
.et-texte-legal { max-width: 760px; }
.et-texte-legal h2 { font-size: 22px; padding: 28px 0 8px; }
.et-texte-legal h2:first-child { padding-top: 0; }

/* En-tête Divi : le numéro de téléphone du menu ressort, sans faire un bouton de plus. */
#top-menu li.et-menu-tel > a { color: var(--gcid-primary-color) !important; font-weight: 700; }
.et_mobile_menu li.et-menu-tel > a { color: var(--gcid-primary-color) !important; font-weight: 700; }

/* Pied de page Divi : couleurs de l'ambiance. */
#main-footer { background: var(--gcid-et-sombre); }
#main-footer .footer-widget, #main-footer .footer-widget p, #main-footer .footer-widget a { color: var(--gcid-et-texte-inverse); }
#main-footer .footer-widget h4, #main-footer .footer-widget .wp-block-heading { color: var(--gcid-et-texte-inverse); font-size: 18px; padding-bottom: 8px; }
#main-footer .footer-widget a:hover { text-decoration: underline; }
#main-footer .container { padding-top: 56px; }
#et-footer-nav { background: rgba(255, 255, 255, .04); }
#et-footer-nav .bottom-nav a { color: var(--gcid-et-texte-inverse); opacity: .85; }
#footer-bottom { background: rgba(0, 0, 0, .22); }
#footer-info, #footer-info a { color: var(--gcid-et-texte-inverse); opacity: .85; }

/* Repères de la page vitrine « Sections » (site maître uniquement). */
.et-section-repere.et_pb_section { padding: 10px 0 !important; background: #222 !important; }
.et-section-repere p { color: #fff; font: 600 13px/1.4 system-ui, sans-serif; padding: 0; }

@media (max-width: 767px) {
  .et-labels { text-align: left; }
  ul.et-communes { columns: 1; }
}

/* Bandeau cookies (CookieAdmin, réglé par outils/cookies.php) : barre basse aux couleurs de l'ambiance.
   CookieAdmin pose ses couleurs en style en ligne, d'où les !important. Refuser et Accepter ont le même poids (CNIL). */
.cookieadmin_law_container.cookieadmin_footer { padding: 0; bottom: 0; }
.cookieadmin_footer .cookieadmin_consent_inside {
  background: var(--gcid-et-fond) !important; color: var(--gcid-body-color) !important;
  border: 0 !important; border-top: 1px solid var(--gcid-et-bordure) !important;
  border-radius: 0; box-shadow: 0 -4px 18px rgba(0, 0, 0, .08); padding: 14px max(16px, calc((100vw - 1080px) / 2));
}
.cookieadmin_law_container p#cookieadmin_notice_title { display: none; }
.cookieadmin_law_container p#cookieadmin_notice { color: var(--gcid-body-color) !important; font-size: 14px; line-height: 1.5; }
.cookieadmin_law_container p#cookieadmin_notice a,
.cookieadmin_cookie_modal .cookieadmin_preference a { color: var(--gcid-primary-color) !important; text-decoration: underline; }
.cookieadmin_law_container button.cookieadmin_btn,
.cookieadmin_cookie_modal button.cookieadmin_btn {
  border-radius: var(--gvid-et-rayon-bouton) !important; font-size: 14px; min-height: 40px; padding: 8px 18px;
}
.cookieadmin_law_container button.cookieadmin_accept_btn,
.cookieadmin_law_container button.cookieadmin_reject_btn,
.cookieadmin_cookie_modal button.cookieadmin_btn {
  background: var(--gcid-primary-color) !important; color: var(--gcid-et-texte-inverse) !important; border: 1px solid var(--gcid-primary-color) !important;
}
.cookieadmin_law_container button.cookieadmin_customize_btn,
.cookieadmin_cookie_modal button.cookieadmin_customize_btn,
.cookieadmin_cookie_modal button.cookieadmin_reject_btn {
  background: transparent !important; color: var(--gcid-primary-color) !important; border: 1px solid var(--gcid-primary-color) !important;
}
.cookieadmin_cookie_modal {
  background: var(--gcid-et-fond) !important; border: 1px solid var(--gcid-et-bordure) !important;
  border-radius: var(--gvid-et-rayon); color: var(--gcid-body-color) !important;
}
.cookieadmin_cookie_modal .cookieadmin_preference_title { color: var(--gcid-heading-color) !important; font-family: var(--et_global_heading_font), serif; }
.cookieadmin_cookie_modal .cookieadmin_details_wrapper { color: var(--gcid-body-color) !important; }
.cookieadmin_cookie_modal .cookieadmin_modal_footer { border-top-color: var(--gcid-et-bordure); }
.cookieadmin_cookie_modal input:checked + .cookieadmin_slider { background-color: var(--gcid-primary-color) !important; }
button.cookieadmin_re_consent,
body .cookieadmin_reconsent_wrap button.cookieadmin_re_consent {
  width: 40px; height: 40px; bottom: 12px; left: 12px; padding: 6px;
  background-color: var(--gcid-et-sombre) !important; box-shadow: 0 2px 8px rgba(0, 0, 0, .25); opacity: .85;
}
.cookieadmin_re_consent img.cookieadmin_reconsent_img { width: 28px; height: 28px; filter: brightness(0) invert(1); }
.cookieadmin-poweredby { display: none !important; }
@media (max-width: 767px) {
  .cookieadmin_footer .cookieadmin_consent_inside { padding: 12px 16px; }
  .cookieadmin_law_container p#cookieadmin_notice { font-size: 13px; line-height: 1.45; }
  .cookieadmin_footer .cookieadmin_notice_group { gap: 10px; }
  .cookieadmin_footer .cookieadmin_consent_btns { width: 100%; flex-wrap: nowrap; }
  .cookieadmin_law_container button.cookieadmin_btn,
  .cookieadmin_consent_inside > .cookieadmin_consent_btns button.cookieadmin_btn { flex: 1 1 0 !important; padding: 8px 6px; min-height: 38px; }
}

/* Focus visible au clavier. */
a:focus-visible,
button:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible {
  outline: 2px solid currentColor;
  outline-offset: 2px;
}
