@charset "UTF-8";
/* ==========================================================================
   CAP LINK — Final Publication 1.0.3
   Couche unique de finition avant ouverture publique.

   Toutes les valeurs de cette feuille proviennent d'une mesure sur la
   production reellement servie : 8 866 elements de texte analyses sur les
   103 routes indexables, fond effectif resolu en composant les degrades
   (et non en les ignorant, ce qui etait le defaut de l'auditeur precedent).

   Ordre reel des feuilles sur ce site :
       reset · theme · header-footer · rc · premium · PUBLICATION · caplink
       · catalogue · lot-a · lot-b · s360 · clc · orientation
   Les briques se chargent APRES la couche d'override : a specificite egale,
   la brique gagne. D'ou le prefixe « html body » et le !important cible.
   ========================================================================== */

html body {
  /* Or lisible sur fond clair : 4,80:1 a 5,20:1 selon le fond mesure.
     L'or de marque #c89b3c reste inchange partout ailleurs — bandeaux
     sombres, filets, bordures, fonds, icones : il n'est corrige que
     lorsqu'il sert de couleur de TEXTE sur une surface claire. */
  --clfp-or-texte: #8a671c;

  /* Gris lisible sur fond clair : 6,04:1 a 6,55:1. */
  --clfp-gris-texte: #515f6d;

  /* Reprise exacte du traitement deja applique aux heros sombres. */
  --clfp-hero-titre: #ffffff;
  --clfp-hero-texte: #e5edf3;
}

/* --------------------------------------------------------------------------
   1. P1 — Heros des pages legales : texte bleu nuit sur degrade bleu nuit.

   /mentions-legales/ et /politique-confidentialite/ utilisent .cl-page-hero,
   qui porte le meme degrade sombre que .cl-hero mais dont le h1 et le chapo
   n'ont jamais recu la couleur claire correspondante. Mesure : 1,00:1.
   Le H1 et le chapo des deux pages legales etaient invisibles a l'oeil nu.

   Apres correction : 13,28:1 pour le titre, 11,22:1 pour le chapo.
   -------------------------------------------------------------------------- */

html body .cl-page-hero h1 {
  color: var(--clfp-hero-titre) !important;
}

html body .cl-page-hero p,
html body .cl-page-hero .cl-lede,
html body .cl-page-hero .cl-sub {
  color: var(--clfp-hero-texte) !important;
}

/* --------------------------------------------------------------------------
   2. Or utilise comme texte sur fond clair.

   Chaque selecteur ci-dessous correspond a une signature effectivement
   mesuree en echec, avec son nombre d'occurrences et son ratio d'origine.
   Aucun selecteur « au cas ou » : ce qui n'a pas ete mesure n'est pas touche.
   -------------------------------------------------------------------------- */

/* ×182 sur 62 pages — #a87910 sur blanc — 3,88:1 */
html body .cla-related-grid a span,
/* ×63 sur 63 pages — #d8a62b sur blanc — 2,23:1
   Porte etroitement scope a l'<article> de .cla-grid.
   Deux voisins doivent imperativement rester a l'or clair :
     - le .cla-eye du .cla-hero, sur degrade bleu nuit ;
     - le .cla-eye de l'<aside> de .cla-grid, sur fond plein rgb(16,36,63).
   La premiere recette a prouve ce second cas : scope a .cla-enrich seul,
   la regle tombait sur l'aside et y faisait chuter le contraste a 3,00:1
   sur 50 pages. Le selecteur ci-dessous exclut l'aside par construction. */
html body .cla-enrich .cla-grid article .cla-eye:not(.dark),
/* ×21 sur 21 pages — #9c7214 sur #f9fbfd et #f3f6f9 — 4,19:1 et 4,01:1
   Le modificateur « .dark » designe ici la variante destinee aux surfaces
   claires : le nom est trompeur, la mesure ne l'est pas. */
html body .clc-eye.dark,
/* ×7 sur 6 pages — #c89b3c sur blanc — 2,56:1 et 2,52:1 */
html body .cl-kicker,
/* ×5 sur 1 page — #9b7215 sur blanc — 4,36:1 */
html body .clc-level-grid article b,
/* ×4 sur 1 page — #d8a62b 26px/700 sur blanc — 2,23:1 (seuil 3:1) */
html body .cla-service-grid article b,
/* ×1 — #a77a13 11,5px/900 sur blanc — 3,86:1 */
html body .clo-results-head span {
  color: var(--clfp-or-texte) !important;
}

/* --------------------------------------------------------------------------
   3. Gris de metadonnee sur fond clair — echecs de peu, mais echecs.

   ×135 sur 37 pages — #6b7b89 sur blanc  — 4,36:1
   ×126 sur 63 pages — #66758a sur #f5f7fa — 4,37:1
   ×49  sur 20 pages — #6d7c89 sur blanc  — 4,29:1
   -------------------------------------------------------------------------- */

html body .clc-facts small,
html body .cla-facts small,
html body .clc-registry small,
html body .clc-registry-grid small,
html body .cla-eye.dark {
  color: var(--clfp-gris-texte) !important;
}

/* --------------------------------------------------------------------------
   4. Anneau de focus — homogeneite sur les 103 routes.

   La regle de Premium 2.1.6 couvre nommement les boutons de chaque lot, puis
   retombe sur « html body.caplink-body a, button, input… ». Or la classe
   caplink-body n'est presente que sur 38 pages sur 103 : sur une fiche
   catalogue, 6 elements focalisables sur 36 recevaient l'anneau Premium, les
   30 autres retombant sur rc.css ou sur l'anneau natif du navigateur.

   Aucune regle du site ne pose « outline:none » : le focus est donc reste
   visible partout, y compris avant cette correction. Ce qui manquait etait
   l'homogeneite du traitement, pas la visibilite.

   La transition est neutralisee : une transition en cours l'emporte sur
   toute declaration d'auteur, y compris !important — c'est le seul mecanisme
   de la cascade qui le fasse, et il avait bloque l'anneau en 1.0.3.
   -------------------------------------------------------------------------- */

html body a:focus-visible,
html body button:focus-visible,
html body input:focus-visible,
html body select:focus-visible,
html body textarea:focus-visible,
html body summary:focus-visible,
html body [tabindex]:not([tabindex="-1"]):focus-visible {
  transition: none !important;
  outline: 3px solid #082640 !important;
  outline-offset: 2px !important;
  box-shadow: 0 0 0 2px #ffffff !important;
}

/* Sur les surfaces sombres, l'anneau s'inverse pour rester detachable :
   contour clair, halo sombre. Memes deux contours, memes epaisseurs. */
html body .cl-hero a:focus-visible,
html body .cl-page-hero a:focus-visible,
html body .cla-hero a:focus-visible,
html body .clb-hero a:focus-visible,
html body .clc-hero a:focus-visible,
html body .cls-hero a:focus-visible,
html body .clo-hero a:focus-visible,
html body .clrc-bar a:focus-visible,
html body footer a:focus-visible,
html body .cl-hero button:focus-visible,
html body footer button:focus-visible {
  outline-color: #ffffff !important;
  box-shadow: 0 0 0 2px #082640 !important;
}

/* --------------------------------------------------------------------------
   5. Debordement horizontal de /prendre-rendez-vous/ en mobile.

   Mesure avant correction : 74 px a 430, 114 px a 390, 144 px a 360.
   Defaut PRE-EXISTANT, verifie en desactivant cette feuille dans la page :
   le debordement etait identique au pixel pres. La route n'avait jamais ete
   couverte par les echantillons responsive precedents.

   Chaine mesuree a 360 px :
     FORM.cl-form   w=219  grid-template-columns: 368.575px   <- la piste
     DIV.cl-panel   w=277
     DIV.cl-appointment-grid w=277
   La piste unique de .cl-form se dimensionne sur le contenu intrinseque de
   ses enfants, qui portent min-width:auto. C'est exactement le motif deja
   corrige sur .cl-contact-grid ; .cl-appointment-grid et .cl-form en sont
   les jumeaux restes sans correctif.

   Portee reelle : .cl-form existe sur 2 routes (/contact/ et
   /prendre-rendez-vous/), .cl-appointment-grid sur 1. /contact/ passait
   deja et a ete re-verifie aux 8 largeurs : aucun changement.

   Apres correction : 0 px de debordement aux 8 largeurs.
   -------------------------------------------------------------------------- */

html body .cl-appointment-grid > *,
html body .cl-form > * {
  min-width: 0 !important;
}

/* Meme motif, deux autres jumeaux, trouves par un balayage EXHAUSTIF des
   103 routes a 360 px — la largeur ou le motif se declenche :
     /diagnostic-mobilite-formalites/  FORM dans .clb-diagnostic  → 12 px
     /diagnostic-services/             FORM dans .cls-diagnostic  → 14 px
   Les deux sont pre-existants (mesure identique feuille desactivee).
   Le balayage complet n'en a trouve aucun autre : 103 routes, 2 anomalies,
   toutes deux ci-dessous. /diagnostic-carriere/ ne porte pas ces conteneurs
   et n'est pas touche — verifie aux 6 largeurs. */
html body .clb-diagnostic > *,
html body .cls-diagnostic > * {
  min-width: 0 !important;
}

/* --------------------------------------------------------------------------
   6. Case de consentement ecrasee.

   Revele par la correction precedente, mais present avant elle : la case a
   cocher du consentement mesurait 13 x 13 px en desktop et tombait a 5 x 13
   puis 4 x 13 px a 390 et 360 px. C'est le controle RGPD du formulaire.

   La case est imbriquee dans son <label>, qui est donc la cible cliquable
   reelle et reste largement au-dessus de 24 px : le critere 2.5.8 est
   satisfait par le label. Les 20 px retablissent une case visible et
   pointable, sans la surdimensionner face a un texte de 13 px.
   -------------------------------------------------------------------------- */

html body .cl-consent input[type="checkbox"] {
  inline-size: 20px !important;
  block-size: 20px !important;
  min-inline-size: 20px !important;
  min-block-size: 20px !important;
  flex: 0 0 20px !important;
  margin-block-start: 2px !important;
}

/* --------------------------------------------------------------------------
   7. Respect de prefers-reduced-motion.
   Deja honore par les briques ; on garantit que l'anneau de focus ne soit
   jamais anime, quelle que soit la preference.
   -------------------------------------------------------------------------- */

@media (prefers-reduced-motion: reduce) {
  html body *:focus-visible {
    transition: none !important;
    animation: none !important;
  }
}
