/* ═══════════════════════════════════════════════════════════════════════
   QUATRE PAGES FR — Contact, Plan du site, Confidentialité, Mentions

   Tout est scopé sous .abcdt-fr. Aucune règle sur html, body, :root ou * :
   ces pages cohabitent avec le header et le footer globaux, avec Elementor
   et avec le thème.

   PLEINE LARGEUR. Le principe est le même partout : le FOND court d'un
   bord à l'autre, le CONTENU vit dans un conteneur centré. Aucune section
   ne porte de marge latérale — c'est ce qui produit les bandes blanches
   quand la fenêtre dépasse la largeur maximale du contenu.

   TROIS IDENTITÉS, UN SEUL SYSTÈME. Contact est cinématique et porte une
   vidéo. Le plan du site est typographique et structuré. Les deux
   documents juridiques sont sobres : ni vidéo, ni effet — de la mesure de
   lecture, du rythme et un sommaire qui suit.
   ═══════════════════════════════════════════════════════════════════════ */

.abcdt-fr {
  --fr-ink:    var(--ink,    #06060A);
  --fr-ink-2:  var(--ink-2,  #0B0B11);
  --fr-ink-3:  var(--ink-3,  #13131E);
  --fr-text:   var(--text,   #E8E8F0);
  --fr-text-2: var(--text-2, #B8B8C4);
  --fr-text-3: var(--text-3, #9A9AB4);
  --fr-line:   var(--line,   rgba(232, 232, 240, .12));
  --fr-line-2: var(--line-2, rgba(232, 232, 240, .26));
  --fr-blue:   var(--blue,   #1A6FFF);
  --fr-blue-2: var(--blue-lift, #4A8CFF);
  --fr-ffd:    var(--ff-d,   'Syne', system-ui, sans-serif);
  --fr-ffb:    var(--ff-b,   'DM Sans', system-ui, sans-serif);
  --fr-e:      var(--e,      cubic-bezier(.16, 1, .3, 1));
  --fr-maxw:   var(--maxw,   1360px);
  --fr-gut:    var(--gut,    1.5rem);
  --fr-mesure: 46rem;                 /* ~736 px de colonne de lecture */

  /* Le bloc lui-même est pleine largeur : le fond ne s'arrête jamais
     avant le bord de la fenêtre, quelle que soit sa taille. */
  width: 100%;
  background: var(--fr-ink);
  color: var(--fr-text);
  font-family: var(--fr-ffb);
  overflow-x: clip;
}

.abcdt-fr .fr__wrap {
  width: 100%;
  max-width: var(--fr-maxw);
  margin-inline: auto;
  padding-inline: var(--fr-gut);
}

/* ── Typographie commune ─────────────────────────────────────────────── */
.abcdt-fr .fr__k {
  margin: 0 0 .8rem;
  font-size: .72rem;
  letter-spacing: .15em;
  text-transform: uppercase;
  color: var(--fr-text-3);
}

.abcdt-fr .fr__h1 {
  margin: 0 0 1.2rem;
  font-family: var(--fr-ffd);
  font-weight: 800;
  letter-spacing: -.026em;
  line-height: 1.02;
  font-size: clamp(2.1rem, 6.2vw, 4.2rem);
  text-wrap: balance;
}

.abcdt-fr .fr__h1--doc { font-size: clamp(1.9rem, 5vw, 3.2rem); }

.abcdt-fr .fr__h2 {
  margin: 0 0 1rem;
  font-family: var(--fr-ffd);
  font-weight: 700;
  letter-spacing: -.02em;
  line-height: 1.1;
  font-size: clamp(1.45rem, 3.2vw, 2.1rem);
  text-wrap: balance;
}

.abcdt-fr .fr__lede {
  margin: 0;
  max-width: 46ch;
  font-size: clamp(1rem, 1.5vw, 1.125rem);
  line-height: 1.62;
  color: var(--fr-text-2);
}

.abcdt-fr .fr__p { margin: 0 0 1rem; max-width: 62ch; line-height: 1.65; color: var(--fr-text-2); }

.abcdt-fr .fr__count { margin: 1.6rem 0 0; font-size: .875rem; color: var(--fr-text-3); font-variant-numeric: tabular-nums; }
.abcdt-fr .fr__count b { color: var(--fr-text); font-weight: 600; }

/* Titre présent pour la structure, masqué à l'œil. */
.abcdt-fr .fr__sr {
  position: absolute; width: 1px; height: 1px;
  padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap;
}

/* ── Hero ────────────────────────────────────────────────────────────── */
.abcdt-fr .fr__hero {
  position: relative;
  isolation: isolate;
  padding-block: clamp(4.5rem, 12vw, 9rem) clamp(2.5rem, 6vw, 4.5rem);
  border-bottom: 1px solid var(--fr-line);
  overflow: hidden;
}

.abcdt-fr .fr__hero--doc { padding-block: clamp(4rem, 10vw, 7rem) clamp(2rem, 5vw, 3rem); }

.abcdt-fr .fr__heroIn { max-width: 62rem; }

.abcdt-fr .fr__heroBg {
  position: absolute; inset: 0; z-index: -1; display: block; pointer-events: none;
  background: #06060A url('https://abcdigitaltouch.fr/wp-content/uploads/abc-home/plan-02-contact.jpg') center / cover no-repeat;
}

.abcdt-fr .fr__heroV {
  width: 100%; height: 100%; object-fit: cover; display: block;
  opacity: 0; transition: opacity 1.2s var(--fr-e);
}

.abcdt-fr .fr__heroV.is-on { opacity: 1; }

/* Voile LOCALISÉ : dense sur la zone du texte, relâché à droite pour que
   la matière vidéo reste visible. Un voile uniforme rendrait la vidéo
   indiscernable du fond, ce qui revient à ne pas en avoir. */
.abcdt-fr .fr__heroVeil {
  position: absolute; inset: 0; display: block;
  background:
    linear-gradient(95deg,
      rgba(6, 6, 10, .95) 0%,
      rgba(6, 6, 10, .90) 30%,
      rgba(6, 6, 10, .56) 52%,
      rgba(6, 6, 10, .24) 72%,
      rgba(6, 6, 10, .32) 100%),
    linear-gradient(to bottom, rgba(6, 6, 10, .45), transparent 26%, rgba(6, 6, 10, .58));
}

/* Sous 1000 px et en mouvement réduit : le poster suffit, la vidéo n'est
   jamais téléchargée. */
@media (max-width: 999px) { .abcdt-fr .fr__heroV { display: none; } }
@media (prefers-reduced-motion: reduce) { .abcdt-fr .fr__heroV { display: none; } }

/* ── Sections ────────────────────────────────────────────────────────── */
.abcdt-fr .fr__s {
  padding-block: clamp(2.8rem, 7vw, 4.5rem);
  border-bottom: 1px solid var(--fr-line);
}

.abcdt-fr .fr__s:last-child { border-bottom: 0; padding-bottom: clamp(4rem, 9vw, 7rem); }

/* ── Actions ─────────────────────────────────────────────────────────── */
.abcdt-fr .fr__acts { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem 1.5rem; margin: 1.9rem 0 0; }

.abcdt-fr .fr__cta {
  display: inline-flex; align-items: center; min-height: 48px; padding-inline: 1.5rem;
  border-radius: 999px; background: var(--fr-blue); color: #06060A;
  font-weight: 500; font-size: .9375rem; text-decoration: none;
  transition: background-color .3s var(--fr-e);
}

.abcdt-fr .fr__cta:hover { background: var(--fr-blue-2); }

.abcdt-fr .fr__lk {
  color: var(--fr-text-2); font-size: .9375rem; text-decoration: underline;
  text-decoration-color: var(--fr-line-2); text-underline-offset: .22em;
  transition: color .3s var(--fr-e);
}

.abcdt-fr .fr__lk:hover { color: var(--fr-text); }

/* ── CONTACT · deux voies ────────────────────────────────────────────── */
.abcdt-fr .fr__voiesG { display: grid; gap: clamp(1.6rem, 4vw, 3rem); margin-top: 1.2rem; }

.abcdt-fr .fr__voie { padding-top: 1.2rem; border-top: 1px solid var(--fr-line); }

.abcdt-fr .fr__vn {
  margin: 0 0 .5rem; font-family: var(--fr-ffd); font-size: .8125rem;
  letter-spacing: .1em; color: var(--fr-blue-2); font-variant-numeric: tabular-nums;
}

.abcdt-fr .fr__vh {
  margin: 0 0 .5rem; font-family: var(--fr-ffd); font-weight: 600;
  font-size: clamp(1.1rem, 2.2vw, 1.375rem); letter-spacing: -.012em; line-height: 1.2;
}

.abcdt-fr .fr__vp { margin: 0; max-width: 44ch; color: var(--fr-text-2); line-height: 1.62; font-size: .9375rem; }
.abcdt-fr .fr__va { margin: .9rem 0 0; }

/* ── CONTACT · formulaire ────────────────────────────────────────────── */
.abcdt-fr .fr__formG { display: grid; gap: clamp(2rem, 5vw, 4rem); align-items: start; }

.abcdt-fr .fr__suj { list-style: none; margin: 1.2rem 0 0; padding: 0; border-top: 1px solid var(--fr-line); }
.abcdt-fr .fr__suj li { border-bottom: 1px solid var(--fr-line); }

.abcdt-fr .fr__suj a {
  display: block; padding: .75rem 0; color: var(--fr-text-2);
  text-decoration: none; font-size: .9375rem;
  transition: color .3s var(--fr-e), padding-left .3s var(--fr-e);
}

.abcdt-fr .fr__suj a:hover { color: var(--fr-text); padding-left: .4rem; }

.abcdt-fr .fr__fld { margin: 0 0 1.15rem; display: grid; gap: .45rem; }

/* Étiquette au-dessus, toujours visible. Un placeholder disparaît dès la
   première frappe et ne laisse rien à un lecteur d'écran. */
.abcdt-fr .fr__fld label { font-size: .875rem; color: var(--fr-text-2); }
.abcdt-fr .fr__fld label b { color: var(--fr-blue-2); font-weight: 400; }

.abcdt-fr .fr__fld input,
.abcdt-fr .fr__fld select,
.abcdt-fr .fr__fld textarea {
  width: 100%; min-height: 52px; padding: .8rem 1rem;
  border: 1px solid var(--fr-line); border-radius: 10px;
  background: var(--fr-ink-2); color: var(--fr-text);
  font: inherit; font-size: 1rem;            /* 16 px : pas de zoom iOS */
  transition: border-color .25s var(--fr-e), background-color .25s var(--fr-e);
}

.abcdt-fr .fr__fld textarea { min-height: 9.5rem; resize: vertical; line-height: 1.55; }
.abcdt-fr .fr__fld input::placeholder,
.abcdt-fr .fr__fld textarea::placeholder { color: var(--fr-text-3); }
.abcdt-fr .fr__fld input:hover,
.abcdt-fr .fr__fld select:hover,
.abcdt-fr .fr__fld textarea:hover { border-color: var(--fr-line-2); }

.abcdt-fr .fr__fld input:focus,
.abcdt-fr .fr__fld select:focus,
.abcdt-fr .fr__fld textarea:focus {
  outline: none; border-color: var(--fr-blue); background: var(--fr-ink-3);
  box-shadow: 0 0 0 3px rgba(26, 111, 255, .18);
}

.abcdt-fr .fr__fld input:user-invalid,
.abcdt-fr .fr__fld textarea:user-invalid { border-color: #FF6B6B; }

.abcdt-fr .fr__fld select {
  appearance: none;
  background-image:
    linear-gradient(45deg, transparent 50%, var(--fr-text-3) 50%),
    linear-gradient(135deg, var(--fr-text-3) 50%, transparent 50%);
  background-position: calc(100% - 20px) calc(50% + 2px), calc(100% - 14px) calc(50% + 2px);
  background-size: 6px 6px, 6px 6px; background-repeat: no-repeat; padding-right: 2.6rem;
}

/* Piège à robots : hors écran plutôt que display:none — certains robots
   ignorent ce qui est masqué par display. */
.abcdt-fr .fr__hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

.abcdt-fr .fr__two { display: grid; gap: 0 1rem; }
.abcdt-fr .fr__req { margin: 0 0 1.3rem; font-size: .8125rem; color: var(--fr-text-3); }
.abcdt-fr .fr__req b { color: var(--fr-blue-2); font-weight: 400; }

.abcdt-fr .fr__send {
  display: inline-flex; align-items: center; min-height: 52px; padding-inline: 1.75rem;
  border: 0; border-radius: 999px; background: var(--fr-blue); color: #06060A;
  font: inherit; font-weight: 500; font-size: .9375rem; cursor: pointer;
  transition: background-color .3s var(--fr-e);
}

.abcdt-fr .fr__send:hover { background: var(--fr-blue-2); }

/* ── CONTACT · coordonnées ───────────────────────────────────────────── */
.abcdt-fr .fr__co { display: grid; gap: 1.6rem 2.5rem; margin: 1.2rem 0 0; }
.abcdt-fr .fr__co dt {
  font-size: .72rem; letter-spacing: .12em; text-transform: uppercase;
  color: var(--fr-text-3); margin-bottom: .25rem;
}
.abcdt-fr .fr__co dd { margin: 0; font-size: 1.0625rem; line-height: 1.45; color: var(--fr-text); }
.abcdt-fr .fr__co a { color: inherit; text-decoration: none; border-bottom: 1px solid var(--fr-line-2); }
.abcdt-fr .fr__co a:hover { color: var(--fr-blue-2); border-bottom-color: currentColor; }

/* ── PLAN DU SITE ────────────────────────────────────────────────────── */
.abcdt-fr .fr__planG { display: grid; gap: clamp(2rem, 4vw, 3rem) clamp(1.5rem, 3vw, 2.5rem); }

.abcdt-fr .fr__grp { padding-top: 1rem; border-top: 1px solid var(--fr-line); }

.abcdt-fr .fr__grpN {
  margin: 0 0 .4rem; font-family: var(--fr-ffd); font-size: .75rem;
  letter-spacing: .1em; color: var(--fr-blue-2); font-variant-numeric: tabular-nums;
}

.abcdt-fr .fr__grpH {
  margin: 0 0 .7rem; font-family: var(--fr-ffd); font-weight: 600;
  font-size: 1.0625rem; letter-spacing: -.01em;
}

.abcdt-fr .fr__grpL { list-style: none; margin: 0; padding: 0; display: grid; gap: .1rem; }

.abcdt-fr .fr__grpL a,
.abcdt-fr .fr__villes a {
  display: block; padding: .42rem 0; color: var(--fr-text-2);
  text-decoration: none; font-size: .9375rem; line-height: 1.4;
  transition: color .25s var(--fr-e), padding-left .25s var(--fr-e);
}

.abcdt-fr .fr__grpL a:hover,
.abcdt-fr .fr__villes a:hover { color: var(--fr-blue-2); padding-left: .35rem; }

/* Les analyses reprennent exactement le traitement des villes — même
   lien, même survol, même filet. Seul le nombre de colonnes change : un
   titre d'article ne tient pas dans un quart de la mesure, là où « Nice »
   s'en contente. Deux colonnes au maximum, donc, et une seule en dessous
   de 800 px.

   La classe est doublée dans le sélecteur — .fr__villes.fr__villes--art —
   pour l'emporter sur les paliers de .fr__villes, déclarés plus bas dans
   cette feuille. À spécificité égale, l'ordre trancherait, et il
   trancherait dans le mauvais sens. */
.abcdt-fr .fr__villes.fr__villes--art { grid-template-columns: minmax(0, 1fr); }

@media (min-width: 800px) {
  .abcdt-fr .fr__villes.fr__villes--art { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

.abcdt-fr .fr__terrP { margin-bottom: 1.6rem; }

/* Le seul lien en pleine phrase de cette page. Sans règle, il retombe
   sur le style de lien du thème — rose, souligné plein. */
.abcdt-fr .fr__terrP a {
  color: var(--fr-text); text-decoration: underline;
  text-decoration-color: var(--fr-line-2); text-underline-offset: .2em;
}
.abcdt-fr .fr__terrP a:hover { color: var(--fr-blue-2); }

.abcdt-fr .fr__det { border-top: 1px solid var(--fr-line); }
.abcdt-fr .fr__det:last-of-type { border-bottom: 1px solid var(--fr-line); }

.abcdt-fr .fr__detS {
  display: flex; align-items: center; justify-content: space-between; gap: 1rem;
  padding: 1.05rem 0; cursor: pointer; list-style: none;
  font-family: var(--fr-ffd); font-weight: 600; font-size: 1rem;
  color: var(--fr-text); transition: color .25s var(--fr-e);
}

.abcdt-fr .fr__detS::-webkit-details-marker { display: none; }
.abcdt-fr .fr__detS:hover { color: var(--fr-blue-2); }

.abcdt-fr .fr__detN {
  font-family: var(--fr-ffb); font-weight: 400; font-size: .8125rem;
  color: var(--fr-text-3); font-variant-numeric: tabular-nums;
  border: 1px solid var(--fr-line); border-radius: 999px; padding: .1rem .55rem;
}

.abcdt-fr .fr__det[open] .fr__detN { color: var(--fr-blue-2); border-color: rgba(26, 111, 255, .4); }

.abcdt-fr .fr__villes {
  list-style: none; margin: 0; padding: 0 0 1.3rem;
  display: grid; gap: .05rem 1.5rem;
}

/* ── DOCUMENTS JURIDIQUES ────────────────────────────────────────────── */
.abcdt-fr .fr__docG {
  display: grid;
  gap: clamp(2rem, 5vw, 4rem);
  padding-block: clamp(2.5rem, 6vw, 4rem) clamp(4rem, 9vw, 7rem);
  align-items: start;
}

.abcdt-fr .fr__tocL { list-style: none; margin: 0; padding: 0; display: grid; gap: .1rem; }

.abcdt-fr .fr__tocL a {
  display: grid; grid-template-columns: 1.9rem 1fr; gap: .5rem;
  padding: .5rem 0; color: var(--fr-text-3); text-decoration: none;
  font-size: .875rem; line-height: 1.4;
  border-left: 1px solid transparent; padding-left: .8rem;
  transition: color .25s var(--fr-e), border-color .25s var(--fr-e);
}

.abcdt-fr .fr__tocL a:hover { color: var(--fr-text); }

.abcdt-fr .fr__tocN { font-variant-numeric: tabular-nums; color: var(--fr-line-2); }

.abcdt-fr .fr__tocL a.is-actif {
  color: var(--fr-text);
  border-left-color: var(--fr-blue);
}

.abcdt-fr .fr__tocL a.is-actif .fr__tocN { color: var(--fr-blue-2); }

/* La colonne de lecture est bornée : un texte juridique sur 1360 px est
   illisible, quelle que soit sa qualité typographique. */
.abcdt-fr .fr__doc { max-width: var(--fr-mesure); }

.abcdt-fr .fr__docIntro p {
  font-size: clamp(1rem, 1.5vw, 1.0625rem);
  line-height: 1.7; color: var(--fr-text-2); margin: 0 0 1rem;
}

.abcdt-fr .fr__dsec {
  padding-top: clamp(2rem, 4vw, 2.8rem);
  margin-top: clamp(1.5rem, 3vw, 2.2rem);
  border-top: 1px solid var(--fr-line);
  scroll-margin-top: calc(var(--nav-h, 76px) + 1.5rem);
}

.abcdt-fr .fr__dn {
  margin: 0 0 .45rem; font-family: var(--fr-ffd); font-size: .75rem;
  letter-spacing: .12em; color: var(--fr-blue-2); font-variant-numeric: tabular-nums;
}

.abcdt-fr .fr__dh2 {
  margin: 0 0 1rem; font-family: var(--fr-ffd); font-weight: 700;
  letter-spacing: -.018em; line-height: 1.15;
  font-size: clamp(1.3rem, 2.8vw, 1.75rem); text-wrap: balance;
}

.abcdt-fr .fr__dh3 {
  margin: 1.8rem 0 .6rem; font-family: var(--fr-ffd); font-weight: 600;
  font-size: clamp(1.02rem, 2vw, 1.1875rem); letter-spacing: -.008em; line-height: 1.25;
}

.abcdt-fr .fr__doc p { margin: 0 0 1rem; line-height: 1.72; color: var(--fr-text-2); }
.abcdt-fr .fr__doc a { color: var(--fr-text); text-decoration: underline; text-decoration-color: var(--fr-line-2); text-underline-offset: .2em; }
.abcdt-fr .fr__doc a:hover { color: var(--fr-blue-2); }

.abcdt-fr .fr__dl { margin: 0 0 1rem; padding-left: 1.1rem; }
.abcdt-fr .fr__dl li { margin: 0 0 .45rem; line-height: 1.65; color: var(--fr-text-2); }

.abcdt-fr .fr__retour { margin: 1.6rem 0 0; font-size: .8125rem; }
.abcdt-fr .fr__retour a { color: var(--fr-text-3); text-decoration: none; border-bottom: 1px solid transparent; }
.abcdt-fr .fr__retour a:hover { color: var(--fr-text-2); border-bottom-color: var(--fr-line-2); }

/* ── Focus clavier, jamais retiré ────────────────────────────────────── */
.abcdt-fr a:focus-visible,
.abcdt-fr button:focus-visible,
.abcdt-fr select:focus-visible,
.abcdt-fr summary:focus-visible {
  outline: 2px solid var(--fr-blue-2);
  outline-offset: 3px;
  border-radius: 6px;
}

/* ── Largeurs ────────────────────────────────────────────────────────── */
@media (min-width: 560px) {
  .abcdt-fr .fr__two    { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .abcdt-fr .fr__villes { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .abcdt-fr .fr__co     { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (min-width: 800px) {
  .abcdt-fr .fr__voiesG { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .abcdt-fr .fr__planG  { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .abcdt-fr .fr__villes { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (min-width: 1000px) {
  .abcdt-fr .fr__formG { grid-template-columns: minmax(0, 1fr) minmax(0, 1.25fr); }
  .abcdt-fr .fr__planG { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .abcdt-fr .fr__co    { grid-template-columns: repeat(4, minmax(0, 1fr)); }

  /* Sommaire à gauche, document à droite. Le sommaire suit la lecture
     sans jamais dépasser la hauteur de la fenêtre. */
  .abcdt-fr .fr__docG { grid-template-columns: minmax(0, 15rem) minmax(0, 1fr); }
  .abcdt-fr .fr__toc {
    position: sticky;
    top: calc(var(--nav-h, 76px) + 1.5rem);
    max-height: calc(100vh - var(--nav-h, 76px) - 3rem);
    overflow-y: auto;
  }
}

@media (min-width: 1280px) {
  .abcdt-fr .fr__villes { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .abcdt-fr .fr__docG   { grid-template-columns: minmax(0, 17rem) minmax(0, 1fr); }
}

@media (prefers-reduced-motion: reduce) {
  .abcdt-fr * { transition-duration: .01ms !important; animation-duration: .01ms !important; }
  .abcdt-fr .fr__dsec { scroll-behavior: auto; }
}
