/*
Theme Name: Hello Elementor Child — STARTER
Template: hello-elementor
Version: 1.1.0
Description: Socle CSS minimal (typo, liens) + Accent + Hiérarchie titres
Author: ALXDESIGN
*/

/* =========================================================
   STARTER — SOCLE CSS MINIMAL
   ---------------------------------------------------------
   Contient uniquement :
   - Tokens (alias Elementor)
   - Typographie de base (p + titres)
   - Hiérarchie des tailles (clamp)
   - Gestion native des ACCENTS
   ---------------------------------------------------------
   Les composants, layouts et animations
   restent volontairement hors de ce fichier.
   ========================================================= */


/* =========================================================
   1) TOKENS — Alias des variables Elementor
   ---------------------------------------------------------
   Pont entre les réglages Elementor
   et le CSS personnalisé.
   ========================================================= */

body{
  /* Couleurs globales */
  --c-primary:   var(--e-global-color-primary);
  --c-secondary: var(--e-global-color-secondary);
  --c-accent:    var(--e-global-color-accent);
  --c-text:      var(--e-global-color-text);
  /* Couleur signature Elumine */
  --c-sky:       var(--e-global-color-636a4b4);

  /* Polices globales */
  --ff-primary: var(--e-global-typography-primary-font-family,
                    system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif);

  --ff-text:    var(--e-global-typography-text-font-family,
                    system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif);
}



/* =========================================================
   2) BASE TEXTE — comportement par défaut
   ---------------------------------------------------------
   Filet de sécurité.
   Elementor reste maître des réglages fins.
   ========================================================= */

body{
  font-family: var(--ff-text);
  color: var(--c-text);
  line-height: 1.6;
}

/* Paragraphes */
p{
  margin: 0 0 1em;
}


/* =========================================================
   3) TITRES — structure typographique
   ---------------------------------------------------------
   - Police définie ici
   - Tailles gérées via clamp()
   - Elementor conserve la main sur :
     graisse, uppercase, tracking, couleurs
   ========================================================= */

h1,
h2,
h3,
h4,
h5,
h6{
  font-family: var(--ff-primary);
  color: inherit;
  margin: 0 0 0.6em;
}


/* =========================================================
   4) HIÉRARCHIE DES TAILLES — FLUIDE & RESPONSIVE
   ---------------------------------------------------------
   Valeurs indicatives, pensées comme base starter.
   Ajustables projet par projet si nécessaire.
   ========================================================= */

h1, .h1{
  font-size: clamp(2.6rem, 4.8vw, 4.8rem); /* ~42px → 77px */
  line-height: 1.02;
}

h2, .h2{
  font-size: clamp(2.1rem, 3.6vw, 3.6rem); /* ~34px → 58px */
  line-height: 1.08;
  font-weight: 400;
}

h3, .h3{
  font-size: clamp(1.4rem, 2.2vw, 2.4rem);
  font-weight: 400;
  line-height: 1.12;
  color: var(--e-global-color-accent);
}

h4, .h4{
  font-size: clamp(1.25rem, 1.8vw, 1.9rem); /* ~20px → 30px */
  line-height: 1.2;
}


/* =========================================================
   5) LIENS — sobres et universels
   ---------------------------------------------------------
   Aucune couleur imposée.
   ========================================================= */

a{
  color: inherit;
  text-underline-offset: 0.18em;
  text-decoration-thickness: 1px;
}

a:hover{
  text-decoration-thickness: 2px;
}


/* =========================================================
   6) MODULE NATIF — ACCENT
   ---------------------------------------------------------
   Utilisé par :
   - snippets PHP ([mot] → <span class="accent">mot</span>)
   - ou pose manuelle dans Elementor
   ---------------------------------------------------------
   Fait partie intégrante du starter.
   ========================================================= */

.accent,
.acf-accent,
.is-accent{
  color: var(--c-accent) !important;
}

/* =========================================================
   7) UTILITAIRE — TEXT WHITE
   ---------------------------------------------------------
   Usage :
   - À poser sur un container Elementor
   - Force la couleur blanche sur tous les éléments texte
   ---------------------------------------------------------
   Cas d’usage :
   - texte sur fond sombre
   - section hero
   - overlay image / vidéo
   ========================================================= */

.text-white,
.text-white :is(
  h1,h2,h3,h4,h5,h6,
  p,li,span,strong,em,small,
  a
){
  color: #ffffff !important;
}


/* =========================================================
   8) PARAGRAPHES
   ---------------------------------------------------------
   Usage :
   - À poser sur un container Elementor
   - Force la couleur blanche sur tous les éléments texte
   ---------------------------------------------------------
   Cas d’usage :
   - texte sur fond sombre
   - section hero
   - overlay image / vidéo
   ========================================================= */

/* Paragraphes — base alignée sur la typo globale "Text" Elementor */
p{
  margin: 0 0 1em;
}



/* =========================================================
   ACF RELATION DIRECTE + CARD-INFOS — BLOC FINAL UNIFIÉ
   ========================================================= */

/* ---------------------------------------------------------
   1) ACF Relation Directe — base générique (hors cards)
   --------------------------------------------------------- */

.acf-relation-directe .acf-item{
  margin: 0 0 0.45em;
  line-height: 1.35;
}

.acf-relation-directe .acf-item:last-child{
  margin-bottom: 0;
}

.acf-relation-directe .acf-item__title,
.acf-relation-directe .acf-item__desc{
  display: block;
}

/* (Nested) structure de base */
.acf-relation-directe .acf-nested__title,
.acf-relation-directe .acf-nested__desc{
  display: block;
}

/* Gestion volontaire des retours à la ligne
   pour les descriptions éditoriales ACF */
.card-infos .acf-relation-directe .acf-item__desc{
  white-space: pre-wrap;
}

/* ---------------------------------------------------------
   2) CARD — INFOS (générique)
   --------------------------------------------------------- */

.card-infos{
  border: 1px dashed rgba(0,0,0,0.18);
  border-radius: 18px;
  padding: clamp(18px, 2.2vw, 28px);
  background: rgba(255,255,255,0.55);
}

.card-infos > *:last-child{
  margin-bottom: 0;
}


/* ---------------------------------------------------------
   3) CARD-INFOS — rendu standard des relations (niveau 1)
   --------------------------------------------------------- */

.card-infos .acf-relation-directe .acf-item{
  margin: 0;
  padding: 14px 0;
}

/* Filet entre items */
.card-infos .acf-relation-directe .acf-item:not(:first-of-type){
  border-top: 1px solid rgba(0,0,0,0.10);
}

/* Titre (Téléphone, Visio, Blocages, etc.) */
.card-infos .acf-item__title{
  font-weight: 400;
  font-size: 1em;
}

/* Description sous le titre */
.card-infos .acf-item__desc{
  margin-top: 4px;
  font-size: 0.85em;
  font-weight: 300;
  line-height: 1.35;
}


/* ---------------------------------------------------------
   4) CARD-INFOS — variante nested (relation dans relation)
   - Icônes en ligne + label uniquement au survol
   - Ne touche PAS au niveau 1
   --------------------------------------------------------- */

/* Wrapper nested : ligne d’icônes */
.card-infos.card-infos--nested .acf-nested{
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  margin-top: 8px;

  padding-left: 0;
  border-left: 0;
}

/* Item nested = une icône */
.card-infos.card-infos--nested .acf-nested__item{
  position: relative;
  margin: 0;
  padding: 0;
}

/* Conteneur icône */
.card-infos.card-infos--nested .acf-nested__icon{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
}

/* Image / SVG */
.card-infos.card-infos--nested .acf-nested__icon img,
.card-infos.card-infos--nested .acf-nested__icon svg{
  width: 100%;
  height: 100%;
  display: block;
  object-fit: contain;
}


/* ---------------------------------------------------------
   Label — mode hover uniquement (tooltips)
   --------------------------------------------------------- */

.card-infos.card-infos--nested
.acf-nested--label-hover
.acf-nested__label{
  position: absolute;
  left: 50%;
  bottom: calc(100% + 8px);
  transform: translateX(-50%);
  white-space: nowrap;

  padding: 6px 8px;
  border-radius: 10px;
  background: rgba(0,0,0,0.72);
  color: #fff;

  font-size: 12px;
  line-height: 1;

  opacity: 0;
  pointer-events: none;
  transition: opacity 140ms ease;
  z-index: 20;
}

.card-infos.card-infos--nested
.acf-nested--label-hover
.acf-nested__item:hover
.acf-nested__label{
  opacity: 1;
}


/* ---------------------------------------------------------
   INTERTITRE — Paiement / pictos (niveau nested)
   --------------------------------------------------------- */

.card-infos .acf-nested__heading{
  display: inline-block;
  margin-right: 10px;

  font-size: 0.7em;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.08em;

  color: var(--c-text-soft, #9aa7a5);
  white-space: nowrap;
}



/* ---------------------------------------------------------
   5) Elementor — widget Shortcode : socle typo
   ---------------------------------------------------------
   Problème fréquent :
   - Elementor applique la typo "Text" aux widgets texte,
     mais pas forcément au widget shortcode.
   Solution :
   - On force la typo UNIQUEMENT sur le rendu ACF du shortcode.
   --------------------------------------------------------- */

.card-infos .elementor-shortcode .acf-relation-directe,
.card-infos .elementor-shortcode .acf-relation-directe *{
  font-family: var(--e-global-typography-text-font-family, var(--ff-text, inherit)) !important;
}


/* =========================================================
   ELUMINE — Card “Champs d’application” extensible
   HTML : .card-infos.apps-fold > .apps-fold__content + .apps-fold__toggle
   ========================================================= */

.card-infos.apps-fold{
  --apps-max: 360px;      /* hauteur fermée */
  --apps-fade: 70px;      /* hauteur du dégradé */
  --apps-border: rgba(0,0,0,0.12);
  --apps-bg: rgba(255,255,255,0.55); /* cohérent avec card-infos */
}

/* Clamp */
.card-infos.apps-fold .apps-fold__content{
  max-height: var(--apps-max);
  overflow: hidden;
  position: relative;
  transition: max-height 260ms ease;
}

/* Dégradé de fin si overflow */
.card-infos.apps-fold.is-foldable:not(.is-open) .apps-fold__content::after{
  content:"";
  position:absolute;
  left:0; right:0; bottom:0;
  height: var(--apps-fade);
  background: linear-gradient(to bottom, rgba(255,255,255,0), var(--apps-bg));
  pointer-events:none;
}

/* État ouvert */
.card-infos.apps-fold.is-open .apps-fold__content{
  max-height: 2000px;
}

/* =========================================================
   Bouton "Afficher tout / Réduire"
   ========================================================= */

.card-infos.apps-fold .apps-fold__toggle{
  display: none; /* activé par JS seulement si nécessaire */
  width: 100%;
  margin-top: 12px;

  appearance: none;
  border: 1px dashed var(--apps-border);
  background: rgba(255,255,255,0.55);
  border-radius: 14px;

  padding: 10px 12px;
  cursor: pointer;

  font-family: var(--ff-text);
  font-size: 0.92rem;
  font-weight: 500;
  color: var(--c-sky);

  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;

  transition:
    background 160ms ease,
    border-color 160ms ease,
    transform 140ms ease,
    color 140ms ease,
    letter-spacing 140ms ease;
}

/* Affichage conditionnel */
.card-infos.apps-fold.is-foldable .apps-fold__toggle{
  display: inline-flex;
}

/* Hover — intention claire mais douce */
.card-infos.apps-fold .apps-fold__toggle:hover{
  background: rgba(255,255,255,0.85);
  border-color: color-mix(in srgb, var(--c-accent) 35%, var(--apps-border));
  color: var(--c-accent);
  letter-spacing: 0.015em;
  transform: translateY(-1px);
}

/* Active — feedback tactile */
.card-infos.apps-fold .apps-fold__toggle:active{
  transform: translateY(1px);
}

/* Chevron (une seule source de vérité) */
.card-infos.apps-fold .apps-fold__toggle::after{
  content:"";
  width: 9px;
  height: 9px;

  border-right: 2px solid currentColor;
  border-bottom: 2px solid currentColor;

  transform: translateY(-1px) rotate(45deg);
  opacity: 0.75;

  transition: transform 180ms ease, opacity 140ms ease;
}

/* Chevron — hover */
.card-infos.apps-fold .apps-fold__toggle:hover::after{
  opacity: 1;
}

/* Chevron — état ouvert */
.card-infos.apps-fold.is-open .apps-fold__toggle::after{
  transform: translateY(3px) rotate(-135deg);
  opacity: 0.85;
}

/* Chevron — hover en état ouvert */
.card-infos.apps-fold.is-open .apps-fold__toggle:hover::after{
  opacity: 1;
}



/* =========================================================
   IMAGE — cover (toujours) + masque SVG (safe)
   Classes : img-cover + img-mask
   ========================================================= */

/* --- COVER robuste (inchangé) --- */
.img-cover,
.img-cover .elementor-widget-container{
  position: relative;
  width: 100%;
  overflow: hidden;
  aspect-ratio: var(--img-cover-ratio, 4 / 3);
}

.img-cover > img{
  position: absolute;
  inset: 0;
  width: 100% !important;
  height: 100% !important;
  max-width: none !important;
  object-fit: cover;
  object-position: center center;
  display: block;
}

.img-cover .elementor-widget-container img,
.img-cover .elementor-image img{
  width: 100% !important;
  height: 100% !important;
  max-width: none !important;
  object-fit: cover;
  object-position: center center;
  display: block;
}

/* --- MASQUE : seulement si supporté --- */
@supports ((-webkit-mask-image: url("")) or (mask-image: url(""))) {

  .img-mask{
    /* URL du masque à appliquer */
    --mask-url: url("https://www.elumine.fr/wp-content/uploads/2026/02/masque-photo-01.svg");

    /* Forme shorthand (souvent plus fiable) */
    -webkit-mask: var(--mask-url) center / 90% 90% no-repeat;
    mask: var(--mask-url) center / 90% 90% no-repeat;

    /* Aides selon les SVG (évite des cas “tout transparent”) */
    -webkit-mask-mode: alpha;
    mask-mode: alpha;

  }
}

/* =========================================================
   Page FAQ — Liens services associés (inline + wrap naturel)
   ========================================================= */

/* Conteneur réel des services */
.lien-service .acf-relation-directe{
  display: flex;
  flex-wrap: wrap;        /* ✅ wrap naturel comme du texte */
  gap: 8px;
  margin-top: 10px;       /* séparation avec la réponse */
}

/* Chaque item (p) doit se comporter comme inline */
.lien-service .acf-relation-directe .acf-item{
  margin: 0;              /* annule le margin du <p> */
  padding: 0;
  display: inline-block;  /* inline + compatible flex */
  line-height: 1;
}

/* Le lien = pastille légère */
.lien-service .acf-item__link{
  display: inline-flex;
  align-items: center;
  padding: 6px 10px;
  border-radius: 999px;

  background: color-mix(in srgb, var(--c-accent) 10%, transparent);

  text-decoration: none;
  white-space: nowrap;    /* évite les retours internes */
}

/* Texte */
.lien-service .acf-item__title{
  font-size: 0.85em;
  font-weight: 400;
  color: var(--c-accent);
  opacity: 1;
}

/* Hover */
.lien-service .acf-item__link:hover{
  background: color-mix(in srgb, var(--c-accent) 100%, transparent);
}

.lien-service .acf-item__link:hover .acf-item__title{
  color: #ffffff;
}

/* =========================================================
   VIGNETTE SERVICE — Hover fluide (Elementor safe)
   - Liseret repos (inset) -> disparaît progressivement
   - Ombre hover -> apparaît progressivement
   - Zoom image ralenti (transition forcée)
   ========================================================= */

/* Card = lien <a> */
a.service-card{
  background: #fff;
  border-radius: 10px;
  overflow: hidden;
  text-decoration: none;

  /* Même "structure" d'ombre dans les deux états (3 layers) */
  box-shadow:
    inset 0 0 0 1px rgba(0,0,0,0.08), /* liseret visible au repos */
    0 14px 32px rgba(0,0,0,0.00),     /* ombre 1 invisible au repos */
    0 6px 14px rgba(0,0,0,0.00);      /* ombre 2 invisible au repos */

  transition: box-shadow 520ms cubic-bezier(0.22, 1, 0.36, 1);
}

/* Hover : liseret devient transparent + ombres montent en opacité */
a.service-card:hover{
  box-shadow:
    inset 0 0 0 1px rgba(0,0,0,0.00), /* liseret disparaît */
    0 14px 32px rgba(0,0,0,0.12),
    0 6px 14px rgba(0,0,0,0.08);
}

/* =========================================================
   ELUMINE — Vignettes Services : état non cliquable
   Piloté par ACF activer_lien_cpt
   ========================================================= */

.e-loop-item.is-not-clickable > a.service-card{
  pointer-events: none !important;
  cursor: default !important;
  opacity: .75;
}

.e-loop-item.is-not-clickable > a.service-card:hover{
  transform: none !important;
}


/* Variante non cliquable pour les mini-vignettes services */

.e-loop-item.is-not-clickable a.service-mini-card{
  pointer-events:none!important;
  cursor:default!important;
  opacity:.75;
}
.e-loop-item.is-not-clickable a.service-mini-card:hover{
  transform:none!important;
}


/* =========================================================
   Image — 16/9 cover + zoom lent (transition forcée)
   ========================================================= */

.elementor-element.service-card__img{
  aspect-ratio: 16 / 9;
  overflow: hidden;
}

/* On cible l'image avec plus de spécificité + !important */
a.service-card .service-card__img img{
  width: 100% !important;
  height: 100% !important;
  object-fit: cover;
  object-position: center;
  display: block;

  transform: scale(1);
  transition: transform 2000ms cubic-bezier(0.22, 1, 0.36, 1) !important;
}

a.service-card:hover .service-card__img img{
  transform: scale(1.06);
}

/* ---------------------------------------*/
/* Mini vignette service — 80x80 en cover */
/* ---------------------------------------*/

/* Mini vignette service — Hover subtil */

.service-mini-card{
  transition: opacity 180ms ease;
}

.service-mini-card:hover{
  opacity: .8;
}

/* Image des mini vignette forcée ronde */

.service-mini-thumb{
  width: 80px !important;
  height: 80px !important;
  min-width: 80px;
  min-height: 80px;
  max-width: 80px;
  max-height: 80px;

  flex: 0 0 80px; /* empêche le flex de l’étirer */
  aspect-ratio: 1 / 1;

  background-position: center;
  background-size: cover;
  background-repeat: no-repeat;

  border-radius: 50%;
  overflow: hidden;
}

/* =========================================================
   FIL D’ARIANE — BASE (Starter)
   
   ========================================================= */

/* Fil d’ariane */
.fil-ariane{
  display: flex;
  flex-wrap: wrap;
  gap: .35em;
  font-size: .85rem;
  opacity: .85;
}

.fil-ariane a{
  text-decoration: none;
}

.fil-ariane a + a::before,
.fil-ariane a + span::before{
  content: "›";
  margin: 0 .35em 0 .15em;
  opacity: .5;
}

.fil-ariane span{
  font-weight: 500;
}


/* =========================================================
   MENU MOBILE Elementor — Bloc services auto
   Scope : .menu-mobile-wrap
   ========================================================= */

/* Cible le dropdown du menu mobile uniquement */
.menu-mobile-wrap .elementor-nav-menu--dropdown li.menu-item--service-auto{
  border-left: 1px solid rgba(255,255,255,.25);
  border-right: 1px solid rgba(255,255,255,.25);
  margin-left: .75rem;
  margin-right: .75rem;
}

/* Liens dans le burger */
.menu-mobile-wrap .elementor-nav-menu--dropdown li.menu-item--service-auto > a.elementor-item{
  display: block;
  padding: .75em 1em;
}

/* 1er service : top border + arrondis + marge haute */
.menu-mobile-wrap .elementor-nav-menu--dropdown li.menu-item--service-first{
  border-top: 1px solid rgba(255,255,255,.25);
  border-top-left-radius: .9rem;
  border-top-right-radius: .9rem;
  margin-top: .5rem;
}

/* Séparateur interne entre services */
.menu-mobile-wrap .elementor-nav-menu--dropdown
li.menu-item--service-auto:not(.menu-item--service-first) > a.elementor-item{
  border-top: 1px solid rgba(255,255,255,.12);
}

/* Dernier service : bottom border + arrondis + séparation du reste du menu */
.menu-mobile-wrap .elementor-nav-menu--dropdown li.menu-item--service-last{
  border-bottom: 1px solid rgba(255,255,255,.25);
  border-bottom-left-radius: .9rem;
  border-bottom-right-radius: .9rem;

  margin-bottom: 1rem;
  padding-bottom: .4rem;

  box-shadow: 0 4px 14px rgba(0,0,0,.08);
}


/* =========================================================
   ELUMINE — CONTACT FORM (CF7) — Skin cohérente
   Scope : .elumine-contact-form
   ========================================================= */

.elumine-contact-form{
  --f-bg: rgba(255,255,255,0.75);
  --f-bg-hover: rgba(255,255,255,0.92);
  --f-border: rgba(0,0,0,0.18);
  --f-border-strong: rgba(0,0,0,0.32);
  --f-radius: 12px;
  --f-pad-y: 12px;
  --f-pad-x: 14px;
  --f-shadow: 0 10px 26px rgba(0,0,0,0.06);
  --f-focus: color-mix(in srgb, var(--c-accent) 60%, transparent);

  /* Rythme vertical */
  --gap-field: 12px;     /* intra-champ */
  --gap-section: 28px;   /* inter-sections */

  /* RDV modes */
  --rdv-row-gap: 10px;
  --rdv-desc-opacity: 0.75;
}

/* Titres / labels */
.elumine-contact-form h3{
  margin-bottom: 0.9rem;
}

/* Par défaut : marge légère */
.elumine-contact-form p{
  margin: 0 0 var(--gap-field);
}

/* Libellés = “titre de section” */
.elumine-contact-form p > strong{
  display: inline-block;
  color: var(--c-primary);
  text-transform: uppercase;

  margin: var(--gap-section) 0 6px;

  font-size: 0.95rem;
  font-weight: 400;
  letter-spacing: 0.01em;
  opacity: 0.92;
}

/* Pas de marge haute sur le premier label après le titre */
.elumine-contact-form h3 + p > strong{
  margin-top: 0;
}

/* Bloc conditionnel RDV : séparation nette après “Objet” */
.elumine-contact-form .elumine-step{
  margin-top: calc(var(--gap-section) + 6px);
}

/* Bloc “Mode de RDV” : séparation nette après le service */
.elumine-contact-form .elumine-modes{
  margin-top: var(--gap-section);
}

/* Champs */
.elumine-contact-form :is(
  input[type="text"],
  input[type="email"],
  input[type="tel"],
  input[type="url"],
  input[type="number"],
  select,
  textarea
){
  width: 100%;
  font-family: var(--ff-text);
  font-size: 1rem;
  line-height: 1.3;

  background: var(--f-bg);
  border: 1px solid var(--f-border);
  border-radius: var(--f-radius);

  padding: var(--f-pad-y) var(--f-pad-x);

  box-shadow: none;
  outline: none;

  transition: border-color 160ms ease, background 160ms ease, box-shadow 160ms ease;
}

/* Survol */
.elumine-contact-form :is(
  input[type="text"],
  input[type="email"],
  select,
  textarea
):hover{
  background: var(--f-bg-hover);
  border-color: var(--f-border-strong);
}

/* Focus */
.elumine-contact-form :is(
  input[type="text"],
  input[type="email"],
  select,
  textarea
):focus{
  border-color: color-mix(in srgb, var(--c-accent) 55%, var(--f-border));
  box-shadow: 0 0 0 4px var(--f-focus);
}

/* Placeholder */
.elumine-contact-form ::placeholder{
  opacity: 0.55;
}

/* Textarea */
.elumine-contact-form textarea{
  min-height: 170px;
  resize: vertical;
}


/* =========================================================
   RADIOS — CF7 (Objet) + RDV (injecté JS)
   ========================================================= */

/* Radios CF7 (Objet) — layout propre */
.elumine-contact-form .wpcf7-form-control.wpcf7-radio{
  display: flex;
  flex-wrap: wrap;
  gap: 12px 18px;
  margin-top: 4px;
}

.elumine-contact-form .wpcf7-form-control.wpcf7-radio .wpcf7-list-item{
  margin: 0;
}

.elumine-contact-form .wpcf7-form-control.wpcf7-radio .wpcf7-list-item label{
  display: inline-flex;
  align-items: center;
  gap: 8px;
  cursor: pointer;
  user-select: none;
  font-size: 0.98rem;
}

/* Radio (léger, accessible) — commun */
.elumine-contact-form input[type="radio"]{
  width: 16px;
  height: 16px;
  accent-color: var(--c-accent);
}

/* =========================================================
   Modes de RDV (radios injectées en JS)
   ========================================================= */

.elumine-contact-form .elumine-modes__list label{
  display: flex;
  align-items: flex-start;  /* radio en haut du bloc texte */
  gap: 10px;                /* espace radio ↔ texte */
  margin: 8px 0;
  cursor: pointer;
  user-select: none;
}

/* micro-ajustement visuel du radio sur la 1ère ligne */
.elumine-contact-form .elumine-modes__list input[type="radio"]{
  margin-top: 2px;
  flex-shrink: 0;
}

/* Titre du mode */
.elumine-contact-form .elumine-rdv__label{
  display: block;
  font-size: 0.98rem;
  font-weight: 500;
  line-height: 1.25;
}

/* Description sous le titre */
.elumine-contact-form .elumine-rdv__desc{
  display: block;
  margin-top: 2px;
  font-size: 0.9rem;
  line-height: 1.35;
  opacity: 0.75;
  white-space: pre-line; /* conserve les retours ligne */
}


/* =========================================================
   FORMULAIRE CF7 - utilisé avec snippets PHP+JS
   ========================================================= */

.elumine-contact-form .elumine-modes__list{
  display: flex;
  flex-direction: column;
  gap: var(--rdv-row-gap);
  margin-top: 6px;
}

/* Une ligne = radio + bloc texte */
.elumine-contact-form .elumine-modes__list label{
  display: flex;
  align-items: flex-start;
  gap: 10px;
  margin: 0;
  cursor: pointer;
  user-select: none;
}

/* Aligne le radio sur le titre */
.elumine-contact-form .elumine-modes__list input[type="radio"]{
  margin-top: 0.25em;
  flex: 0 0 auto;
}

/* Bloc texte (label + desc) */
.elumine-contact-form .elumine-modes__list label > span{
  display: block;
}

/* Titre */
.elumine-contact-form .elumine-rdv__label{
  display: block;
  font-weight: 500;
  line-height: 1.25;
}

/* Description */
.elumine-contact-form .elumine-rdv__desc{
  display: block;
  margin-top: 0.2em;
  font-size: 0.92em;
  line-height: 1.35;
  opacity: var(--rdv-desc-opacity);
}

/* Si pas de description (span vide ou absent), on évite l’espace */
.elumine-contact-form .elumine-rdv__desc:empty{
  display: none;
}

/* Désactivation BOUTON CF7 pendant l’envoi */
.elumine-contact-form .wpcf7-form.submitting .wpcf7-submit{
  opacity: 0.65;
  cursor: wait;
}

/* Bouton d'envoi - Ajustements */
.elumine-contact-form input[type="submit"].wpcf7-submit{
  border: 0;
  text-transform: uppercase;
}

/* =========================================================
   Messages CF7 (succès / erreurs) — version élégante
   ========================================================= */

.elumine-contact-form .wpcf7-response-output{
  margin: 16px 0 0;
  padding: 14px 16px;
  border-radius: 12px;

  /* Cadre volontairement discret */
  border: 1px solid rgba(0,0,0,0.10);
  background: rgba(255,255,255,0.75);

  font-size: 0.95rem;
  line-height: 1.4;
}

/* Message d’erreur inline (champ) */
.elumine-contact-form .wpcf7-not-valid-tip{
  margin-top: 6px;
  font-size: 0.85rem;
  color: color-mix(in srgb, #b00020 78%, #000);
}

/* =========================================================
   Succès — Accent Elumine (sobriété)
   ========================================================= */

.elumine-contact-form .wpcf7-response-output.wpcf7-mail-sent-ok{
  /* Accent visuel principal */
  border-left: 3px solid var(--c-accent);

  /* Cadre atténué sur les autres côtés */
  border-top-color: rgba(0,0,0,0.08);
  border-right-color: rgba(0,0,0,0.08);
  border-bottom-color: rgba(0,0,0,0.08);

  /* Fond très léger teinté accent */
  background: color-mix(in srgb, var(--c-accent) 8%, rgba(255,255,255,0.9));

  color: var(--c-text);
}

/* =========================================================
   Erreurs globales — cohérentes mais non agressives
   ========================================================= */

.elumine-contact-form .wpcf7-validation-errors,
.elumine-contact-form .wpcf7-acceptance-missing{
  border-left: 3px solid color-mix(in srgb, #b00020 70%, #000);

  border-top-color: rgba(0,0,0,0.08);
  border-right-color: rgba(0,0,0,0.08);
  border-bottom-color: rgba(0,0,0,0.08);

  background: color-mix(in srgb, #b00020 6%, rgba(255,255,255,0.9));
}



/* =========================================================
   ELUMINE — Opening Hours
   Widget sur mesure
   ========================================================= */

.opening-hours{}

.opening-hours__list{
  list-style: none;
  margin: 0;
  padding: 0;
}

.opening-hours__day{
  display: flex;
  justify-content: space-between;
  gap: 14px;
  padding: 5px 0;
}

.opening-hours__day + .opening-hours__day{
  border-top: 1px solid rgba(0,0,0,0.08);
}

.opening-hours__label{
  font-weight: 300;
  color: var(--c-primary);
}

.opening-hours__value{
  font-weight: 300;
  opacity: 0.9;
  text-align: right;
  white-space: nowrap;
}

/* Jour courant */
.opening-hours__day.is-today .opening-hours__label{
  font-weight: 600;
  color: var(--c-accent);
}

.opening-hours__day.is-today .opening-hours__value{
  color: var(--c-accent);
  font-weight: 600;
  opacity: 1;
}

/* Fermé (optionnel) */
.opening-hours__day.is-closed .opening-hours__value{
  opacity: 0.5;
}


/* ==============================
   TÉLÉPHONE (Format standard)
   ============================== */
.telephone {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5em;
  font-size: clamp(1.4em, 1.9vw, 1em);
  font-weight: 500;
  color: #ffffff;
  text-decoration: none;
  background-color: var(--c-accent) !important;
  border: 1px solid transparent;
  border-radius: 9999px;
  padding: 0.5em 0.8em;
  transition: all 0.3s ease;
  line-height: 1;
  white-space: nowrap;
}

/* Icône téléphone blanche et sobre */
.telephone::before {
  content: "";
  display: inline-block;
  width: 1em;
  height: 1em;
  background: #ffffff; /* Toujours blanc, même au hover */
  -webkit-mask: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="white" viewBox="0 0 24 24"><path d="M6.62 10.79a15.464 15.464 0 0 0 6.59 6.59l2.2-2.2a1 1 0 0 1 1.01-.24c1.12.37 2.33.57 3.58.57a1 1 0 0 1 1 1v3.49a1 1 0 0 1-1 1A17.93 17.93 0 0 1 2 6a1 1 0 0 1 1-1h3.5a1 1 0 0 1 1 1c0 1.25.2 2.46.57 3.58a1 1 0 0 1-.24 1.01l-2.21 2.2z"/></svg>') center / contain no-repeat;
  mask: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="white" viewBox="0 0 24 24"><path d="M6.62 10.79a15.464 15.464 0 0 0 6.59 6.59l2.2-2.2a1 1 0 0 1 1.01-.24c1.12.37 2.33.57 3.58.57a1 1 0 0 1 1 1v3.49a1 1 0 0 1-1 1A17.93 17.93 0 0 1 2 6a1 1 0 0 1 1-1h3.5a1 1 0 0 1 1 1c0 1.25.2 2.46.57 3.58a1 1 0 0 1-.24 1.01l-2.21 2.2z"/></svg>') center / contain no-repeat;
}

/* Hover : inversion bleu/vert + bordure accent */
.telephone:hover {
  background-color: var(--c-sky) !important;
  border-color: var(--c-accent) !important;
  color: #ffffff !important;
}

/* ------------------------*/
/* Téléphone (Format mini) */
/* ------------------------*/

.telephone-mini {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5em;
  font-size: clamp(1.1em, 1.5vw, 1em);
  font-weight: 400;
  color: #ffffff;
  text-decoration: none;
  background-color: var(--c-primary) !important;
  border: 1px solid transparent;
  border-radius: 9999px;
  border-color: var(--c-sky);
  padding: 0.5em 0.8em;
  transition: all 0.3s ease;
  line-height: 1;
  white-space: nowrap;
}

/* Icône téléphone blanche et sobre */
.telephone-mini::before {
  content: "";
  display: inline-block;
  width: 1em;
  height: 1em;
  background: #ffffff; /* Toujours blanc, même au hover */
  -webkit-mask: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="white" viewBox="0 0 24 24"><path d="M6.62 10.79a15.464 15.464 0 0 0 6.59 6.59l2.2-2.2a1 1 0 0 1 1.01-.24c1.12.37 2.33.57 3.58.57a1 1 0 0 1 1 1v3.49a1 1 0 0 1-1 1A17.93 17.93 0 0 1 2 6a1 1 0 0 1 1-1h3.5a1 1 0 0 1 1 1c0 1.25.2 2.46.57 3.58a1 1 0 0 1-.24 1.01l-2.21 2.2z"/></svg>') center / contain no-repeat;
  mask: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="white" viewBox="0 0 24 24"><path d="M6.62 10.79a15.464 15.464 0 0 0 6.59 6.59l2.2-2.2a1 1 0 0 1 1.01-.24c1.12.37 2.33.57 3.58.57a1 1 0 0 1 1 1v3.49a1 1 0 0 1-1 1A17.93 17.93 0 0 1 2 6a1 1 0 0 1 1-1h3.5a1 1 0 0 1 1 1c0 1.25.2 2.46.57 3.58a1 1 0 0 1-.24 1.01l-2.21 2.2z"/></svg>') center / contain no-repeat;
}

/* Hover */
.telephone-mini:hover {
  background-color: var(--c-sky) !important;
  border-color: var(--c-sky) !important;
  color: #ffffff !important;
}


/* =========================================================
   LISTES ORDONNÉES — pastilles numérotées (GLOBAL)
   - Compatible Gutenberg + ACF WYSIWYG + Elementor
   - Gère les listes imbriquées (nested)
   ========================================================= */

:where(.elementor, .entry-content, .wp-block-group, .site-main, body) ol{
  list-style: none;
  padding-left: 0;
  margin: 0 0 1.2em;
  counter-reset: step;
}

/* Chaque item */
:where(.elementor, .entry-content, .wp-block-group, .site-main, body) ol > li{
  counter-increment: step;
  position: relative;

  padding-left: 2.5em;      /* place pastille */
  margin: 0 0 0.75em;
  line-height: 1.45;
}

/* Pastille */
:where(.elementor, .entry-content, .wp-block-group, .site-main, body)
ol > li::before{
  content: counter(step);
  position: absolute;
  left: 0;
  top: 0.1em;

  width: 1.5em;
  height: 1.5em;
  border-radius: 999px;

  display: inline-flex;
  align-items: center;
  justify-content: center;

  background: #ffffff;
  color: var(--c-sky);

  border: 1px solid color-mix(in srgb, var(--c-sky) 25%, transparent);

  font-weight: 500;
  font-size: 0.9em;
  line-height: 1;

  box-shadow: 0 1px 3px rgba(0,0,0,0.12);
}

/* Listes imbriquées : plus compact + numérotation indépendante */
:where(.elementor, .entry-content, .wp-block-group, .site-main, body) ol ol{
  margin-top: 0.65em;
  margin-bottom: 0.2em;
  counter-reset: step;
}

:where(.elementor, .entry-content, .wp-block-group, .site-main, body) ol ol > li{
  padding-left: 2.7em;
  margin-bottom: 0.55em;
}

:where(.elementor, .entry-content, .wp-block-group, .site-main, body) ol ol > li::before{
  width: 1.8em;
  height: 1.8em;
  font-size: 0.85em;
  opacity: 0.95;
}



/* =========================================================
   ELUMINE — BTN global (Elementor + Gutenberg + Wrapper ACF)
   - Compatible :
     1. <a class="btn">
     2. <p class="btn"><a>...</a></p>
     3. .elementor-button
     4. Gutenberg buttons
   ========================================================= */

/* ---------------------------------------------------------
   1) Base commune (boutons directs)
   --------------------------------------------------------- */

:where(body) :is(
  .btn > a,
  a.btn,
  .elementor-button,
  .wp-element-button,
  .wp-block-button__link
){
  appearance: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .55em;

  padding: 12px 20px;
  border-radius: 999px;

  border: 1px solid transparent;
  background: var(--c-sky);
  color: #fff !important;

  font-family: var(--e-global-typography-primary-font-family, var(--ff-text));
  font-weight: 500;
  font-size: 16px;
  text-transform: uppercase;
  line-height: 1;

  text-decoration: none !important;
  cursor: pointer;

  box-shadow: none;

  transition:
    background 180ms ease,
    border-color 180ms ease,
    transform 140ms ease;
}

/* ---------------------------------------------------------
   2) Hover
   --------------------------------------------------------- */

:where(body) :is(
  .btn > a,
  a.btn,
  .elementor-button,
  .wp-element-button,
  .wp-block-button__link
):hover{
  background: var(--c-accent) !important;
  color: #fff !important;
  border-color: color-mix(in srgb, var(--c-accent) 55%, transparent);
}

/* ---------------------------------------------------------
   3) Active
   --------------------------------------------------------- */

:where(body) :is(
  .btn > a,
  a.btn,
  .elementor-button,
  .wp-element-button,
  .wp-block-button__link
):active{
  transform: translateY(1px);
}

/* ---------------------------------------------------------
   4) Focus accessible
   --------------------------------------------------------- */

:where(body) :is(
  .btn > a,
  a.btn,
  .elementor-button,
  .wp-element-button,
  .wp-block-button__link
):focus-visible{
  outline: none;
  box-shadow: 0 0 0 4px color-mix(in srgb, var(--c-sky) 35%, transparent);
}

/* ---------------------------------------------------------
   5) Désactivation
   --------------------------------------------------------- */

:where(body) :is(
  .btn > a,
  a.btn,
  .elementor-button,
  .wp-element-button,
  .wp-block-button__link
):is(:disabled, [aria-disabled="true"]){
  opacity: .65;
  cursor: not-allowed;
  transform: none;
}

/* ---------------------------------------------------------
   6) Nettoyage si .btn est sur un <p>
   --------------------------------------------------------- */

:where(body) p.btn{
  margin: 0;
  padding: 0;
  background: transparent !important;
  border: 0 !important;
}



/* =========================================================
   ELUMINE — FOOTER MENUS (SANS CHEVRONS)
   ---------------------------------------------------------
   Compatibilité :
   - Widget Elementor Nav Menu (menu WordPress)
   - Shortcode générant une <ul>
   ---------------------------------------------------------
   Usage :
   - Appliquer la classe .footer-menu sur le widget
     ou sur le conteneur parent.
   ========================================================= */


/* ---------------------------------------------------------
   Reset listes (sécurité cross-widgets)
   --------------------------------------------------------- */
.footer-menu ul{
  margin: 0 !important;
  padding: 0 !important;
  list-style: none !important;
}

.footer-menu li{
  margin: 0.35em 0 !important;
  padding: 0 !important;
}


/* ---------------------------------------------------------
   Liens — base commune
   --------------------------------------------------------- */
.footer-menu a{
  display: inline-block;
  font-size: 15px;

  color: #ffffff !important;
  text-decoration: none !important;

  transition: color 180ms ease, opacity 180ms ease;
}


/* ---------------------------------------------------------
   Spécificités Elementor Nav Menu
   Neutralisation des styles internes
   --------------------------------------------------------- */
.footer-menu .elementor-nav-menu a.elementor-item,
.footer-menu .elementor-nav-menu a.elementor-item-active{
  padding: 0 !important;
  font-size: 15px !important;
  color: #ffffff !important;
}


/* ---------------------------------------------------------
   États
   --------------------------------------------------------- */

/* Hover */
.footer-menu a:hover{
  color: var(--c-accent) !important;
  opacity: 0.95;
}

/* Lien actif (Elementor) */
.footer-menu a.elementor-item-active{
  color: var(--c-accent) !important;
}


/* ---------------------------------------------------------
   Sécurité : neutralisation totale des pseudo-éléments
   (évite tout héritage Elementor ::before / ::after)
   --------------------------------------------------------- */
.footer-menu a::before,
.footer-menu a::after{
  content: none !important;
  display: none !important;
}

/* =========================================================
   ELUMINE — Opening Hours : variante Footer
   Usage : [opening_hours class="opening-hours opening-hours--footer"]
   ========================================================= */

.opening-hours--footer{
  font-size: 0.7em;              /* ~ -30% */
  color: #fff;                   /* base blanche si héritage */
}

.opening-hours--footer .opening-hours__list{
  margin: 0;
  padding: 0;
}

/* Lignes */
.opening-hours--footer .opening-hours__day{
  padding: 4px 0;                /* compact, optionnel */
}

/* Séparateurs : blancs très légers */
.opening-hours--footer .opening-hours__day + .opening-hours__day{
  border-top: 1px solid rgba(255,255,255,0.14);
}

/* Libellés / valeurs en blanc */
.opening-hours--footer .opening-hours__label,
.opening-hours--footer .opening-hours__value{
  color: rgba(255,255,255,0.92);
  font-weight: 300;
}

/* Jour courant : un peu plus marqué (sans accent coloré) */
.opening-hours--footer .opening-hours__day.is-today .opening-hours__label,
.opening-hours--footer .opening-hours__day.is-today .opening-hours__value{
  color: #ffffff;
  font-weight: 600;
}

/* Fermé : atténué */
.opening-hours--footer .opening-hours__day.is-closed .opening-hours__value{
  opacity: 0.55;
}


/* =========================================================
   Gutenberg dans le contenu d'article (Elementor Theme Post Content)
   ========================================================= */

.elementor-widget-theme-post-content .wp-block-list{
  margin-block-start: 0.75em;  /* optionnel : un peu d’air avant */
  margin-block-end: 1.1em;     /* IMPORTANT : espace après liste */
  padding-left: 1.25em;        /* garde un indent propre */
}

.elementor-widget-theme-post-content .wp-block-list li{
  margin-block-end: 0.35em;    /* optionnel : aère un poil les items */
}

.elementor-widget-theme-post-content .wp-block-list li:last-child{
  margin-block-end: 0;
}

/* =========================================================
   ELUMINE — Trustindex Google Reviews
   ========================================================= */

.google-reviews-elumine .ti-widget .ti-review-item .ti-inner .ti-review-text-container.ti-review-content{
  font-family: var(--ff-text) !important;
  font-size: 14px !important;
  line-height: 1.65 !important;
  font-weight: 300 !important;
  color: color-mix(in srgb, var(--c-text) 72%, transparent) !important;
}

/* Nom + date */
.google-reviews-elumine .ti-widget .ti-name{
  font-family: var(--ff-text) !important;
  font-size: 15px !important;
  font-weight: 500 !important;
  color: var(--c-primary) !important;
}

.google-reviews-elumine .ti-widget .ti-date{
  font-family: var(--ff-text) !important;
  font-size: 12px !important;
  color: color-mix(in srgb, var(--c-text) 55%, transparent) !important;
}

/* Lire la suite */
.google-reviews-elumine .ti-widget .ti-read-more,
.google-reviews-elumine .ti-widget .ti-read-more-active{
  font-family: var(--ff-text) !important;
  font-size: 13px !important;
  font-weight: 400 !important;
  color: var(--c-sky) !important;
  text-decoration: none !important;
}

.google-reviews-elumine .ti-widget .ti-read-more:hover,
.google-reviews-elumine .ti-widget .ti-read-more:hover .ti-read-more-active{
  color: var(--c-accent) !important;
}

/* Plus d’air entre les cartes */
.google-reviews-elumine .ti-review-item{
  padding-left: 10px !important;
  padding-right: 10px !important;
}

/* Optionnel : un peu plus de marge interne dans la carte */
.google-reviews-elumine .ti-review-item .ti-inner{
  padding: 28px !important; /* si le plugin est plus serré */
}

/* désactive le comportement tooltip */
.google-reviews-elumine .ti-date .ti-with-tooltip{
  pointer-events: none !important;
}