/*!
 * Airdecom Animations — v1.1.0
 * Animations d'airdecom.com : accueil + pages intérieures.
 *
 * Tout est préfixé par html.adc-js : sans JavaScript, ou si le visiteur a
 * demandé à son appareil de réduire les animations, le site s'affiche
 * exactement comme avant.
 */

/* ==========================================================================
   1. Réglages (modifiables)
   ========================================================================== */
html.adc-js {
  --adca-orange: var(--adc-orange, #F97316);
  --adca-ease: cubic-bezier(.16, .84, .24, 1);
  --adca-d: .95s;      /* durée d'une apparition */
  --adca-dist: 42px;   /* distance de montée des éléments */
  --adca-stag: 110ms;  /* décalage entre éléments voisins */
  --adca-zoom: 1.06;   /* zoom des images au survol */
  --adca-par: 30px;    /* amplitude du mouvement du visuel d'accueil */
  --adca-mq: 36s;      /* durée d'un tour de la bande des expertises */
}
html.adc-js.adc-sobre {
  --adca-d: .7s;
  --adca-dist: 18px;
  --adca-stag: 70ms;
  --adca-zoom: 1.03;
  --adca-par: 12px;
  --adca-mq: 60s;
}
@media (max-width: 800px) {
  html.adc-js { --adca-dist: 20px; }
}

/* ==========================================================================
   2. Barre de lecture + en-tête collant (tout le site)
   ========================================================================== */
html.adc-js.adc-progression .adc-barre-lecture {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 3px;
  background: var(--adca-orange);
  transform-origin: 0 50%;
  transform: scaleX(var(--adca-sp, 0));
  z-index: 100000;
  pointer-events: none;
}

@media (min-width: 801px) {
  html.adc-js.adc-collant .adc-entete {
    position: sticky;
    top: 0;
    transition: padding .4s var(--adca-ease), background-color .4s ease;
  }
  html.adc-js.adc-collant.adc-adminbar .adc-entete { top: 32px; }
  html.adc-js.adc-collant.adc-scrolle .adc-entete {
    padding-top: 10px;
    padding-bottom: 10px;
    background-color: rgba(11, 15, 25, .88);
    -webkit-backdrop-filter: blur(12px);
    backdrop-filter: blur(12px);
  }
}

/* Reflet sur la bande orange latérale (niveau dynamique) */
html.adc-js.adc-dyn .adc-bande { overflow: hidden; }
html.adc-js.adc-dyn .adc-bande::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  height: 200px;
  pointer-events: none;
  background: linear-gradient(180deg, transparent, rgba(255, 255, 255, .35), transparent);
  transform: translateY(-220px);
  animation: adca-reflet 9s ease-in-out 3s infinite;
}
@keyframes adca-reflet {
  0% { transform: translateY(-220px); }
  30%, 100% { transform: translateY(110vh); }
}

/* ==========================================================================
   3. Hero : arrivée en CSS pur (démarre dès l'affichage, sans attendre le JS)
   ========================================================================== */
@keyframes adca-monte {
  from { opacity: 0; transform: translate3d(0, var(--adca-dist), 0); }
  to { opacity: 1; transform: none; }
}
@keyframes adca-ligne {
  from { clip-path: inset(0 0 100% 0); transform: translate3d(0, 30%, 0); }
  to { clip-path: inset(0 0 0 0); transform: none; }
}
@keyframes adca-zoom {
  from { scale: 1.12; }
  to { scale: 1.05; }
}
@keyframes adca-respire {
  from { scale: 1.05; }
  to { scale: 1.09; }
}

html.adc-js #main .adc-hero__h1 { animation: adca-monte var(--adca-d) var(--adca-ease) .1s both; }
html.adc-js #main .adc-hero__ligne1 { animation: adca-ligne calc(var(--adca-d) * 1.2) var(--adca-ease) .25s both; }
html.adc-js #main .adc-hero__ligne2 { animation: adca-ligne calc(var(--adca-d) * 1.2) var(--adca-ease) .45s both; }
html.adc-js #main .adc-hero__accroche { animation: adca-monte var(--adca-d) var(--adca-ease) .7s both; }
html.adc-js #main .adc-hero__boutons { animation: adca-monte var(--adca-d) var(--adca-ease) .85s both; }

/* Le visuel ne passe jamais par l'opacité 0 : pas d'impact sur le LCP. */
html.adc-js #main .adc-hero__fond {
  scale: 1.05;
  translate: calc((var(--adca-mx, .5) - .5) * var(--adca-par) * -1) calc((var(--adca-my, .5) - .5) * var(--adca-par) * -.7);
  transition: translate 1.1s var(--adca-ease);
  animation: adca-zoom 2.4s var(--adca-ease) both;
}
html.adc-js.adc-dyn #main .adc-hero__fond {
  animation: adca-zoom 2.4s var(--adca-ease) both, adca-respire 16s ease-in-out 2.4s infinite alternate;
}

@media (hover: hover) and (pointer: fine) {
  html.adc-js.adc-halo #main .adc-hero::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    opacity: 0;
    transition: opacity .6s ease;
    background: radial-gradient(560px circle at calc(var(--adca-mx, .68) * 100%) calc(var(--adca-my, .42) * 100%), rgba(249, 115, 22, .16), transparent 60%);
  }
  html.adc-js.adc-halo #main .adc-hero:hover::before { opacity: 1; }
}

/* ==========================================================================
   4. Apparitions au défilement (le JS ajoute .adc-vu puis .adc-fini)
   La liste doit rester identique à REVEAL dans airdecom-animations.js
   ========================================================================== */
html.adc-js #main .adc-accueil :is(.adc-carte, .adc-expertises__bande, .adc-surtitre-section, .adc-titre-section, .adc-cas__carte, .adc-avis-bande, .adc-chiffres > *, .adc-secteurs > div, .adc-reals__tout, .adc-real, .adc-studio__image, .adc-studio__texte > *, .adc-devis__intro > *, .adc-form):not(.adc-vu) {
  opacity: 0;
  transform: translate3d(0, var(--adca-dist), 0);
}
html.adc-js #main .adc-accueil :is(.adc-carte, .adc-expertises__bande, .adc-surtitre-section, .adc-titre-section, .adc-cas__carte, .adc-avis-bande, .adc-chiffres > *, .adc-secteurs > div, .adc-reals__tout, .adc-real, .adc-studio__image, .adc-studio__texte > *, .adc-devis__intro > *, .adc-form):not(.adc-fini) {
  transition-property: opacity, transform;
  transition-duration: var(--adca-d);
  transition-timing-function: var(--adca-ease);
  transition-delay: calc(var(--adca-i, 0) * var(--adca-stag));
}

/* Filet orange sous les titres : il se dessine */
html.adc-js #main .adc-accueil .adc-filet {
  transform-origin: 0 50%;
  transition: transform calc(var(--adca-d) * 1.3) var(--adca-ease);
  transition-delay: calc(var(--adca-i, 0) * var(--adca-stag));
}
html.adc-js #main .adc-accueil .adc-filet:not(.adc-vu) { transform: scaleX(0); }

/* ==========================================================================
   5. Boutons
   ========================================================================== */
html.adc-js #main .adc-accueil :is(a.adc-bouton, a.adc-bouton-contour) {
  position: relative;
  overflow: hidden;
  isolation: isolate;
}
/* Bouton plein : reflet qui traverse */
html.adc-js #main .adc-accueil a.adc-bouton:not(.adc-bouton--contour)::after {
  content: "";
  position: absolute;
  top: 0;
  bottom: 0;
  left: -70%;
  width: 45%;
  z-index: -1;
  pointer-events: none;
  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, .55), transparent);
  transform: skewX(-20deg);
  transition: left .75s var(--adca-ease);
}
html.adc-js #main .adc-accueil a.adc-bouton:not(.adc-bouton--contour):hover::after { left: 130%; }
/* Bouton contour : l'orange se remplit de gauche à droite */
html.adc-js #main .adc-accueil :is(a.adc-bouton--contour, a.adc-bouton-contour)::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: var(--adca-orange);
  transform: scaleX(0);
  transform-origin: 100% 50%;
  transition: transform .45s var(--adca-ease);
}
html.adc-js #main .adc-accueil :is(a.adc-bouton--contour, a.adc-bouton-contour):hover { background: transparent; }
html.adc-js #main .adc-accueil :is(a.adc-bouton--contour, a.adc-bouton-contour):hover::before {
  transform: scaleX(1);
  transform-origin: 0 50%;
}

/* ==========================================================================
   6. Cartes profils (Institutionnel, Responsable com, Chef d'entreprise)
   ========================================================================== */
html.adc-js #main .adc-accueil a.adc-carte {
  position: relative;
  overflow: hidden;
  isolation: isolate;
  transition: background-color .3s ease, transform .5s var(--adca-ease);
}
html.adc-js #main .adc-accueil a.adc-carte:hover { transform: translateY(-6px); }
html.adc-js #main .adc-accueil a.adc-carte::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 2px;
  background: var(--adca-orange);
  transform: scaleX(0);
  transform-origin: 0 50%;
  transition: transform .55s var(--adca-ease);
}
html.adc-js #main .adc-accueil a.adc-carte:hover::before { transform: none; }
html.adc-js #main .adc-accueil a.adc-carte .adc-carte__lien { transition: transform .35s var(--adca-ease); }
html.adc-js #main .adc-accueil a.adc-carte:hover .adc-carte__lien { transform: translateX(5px); }

@media (hover: hover) and (pointer: fine) {
  html.adc-js.adc-halo #main .adc-accueil a.adc-carte::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: -1;
    pointer-events: none;
    opacity: 0;
    transition: opacity .35s ease;
    background: radial-gradient(280px circle at var(--adca-cx, 50%) var(--adca-cy, 50%), rgba(249, 115, 22, .16), transparent 70%);
  }
  html.adc-js.adc-halo #main .adc-accueil a.adc-carte:hover::after { opacity: 1; }
}

/* ==========================================================================
   7. Expertises en bande défilante (pause au survol)
   ========================================================================== */
html.adc-js.adc-defile #main .adc-accueil .adc-expertises__bande--defile {
  flex-wrap: nowrap;
  align-items: center;
}
html.adc-js.adc-defile #main .adc-accueil .adc-expertises__bande--defile .adc-expertises__label { flex: none; }
.adc-defilant {
  flex: 1 1 0;
  width: 0; /* empêche la piste (très large) d'élargir la page */
  min-width: 0;
  overflow: hidden;
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent);
  mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent);
}
.adc-defilant__piste {
  display: flex;
  width: max-content;
  animation: adca-defile var(--adca-mq, 36s) linear infinite;
}
.adc-defilant:hover .adc-defilant__piste,
.adc-defilant:focus-within .adc-defilant__piste { animation-play-state: paused; }
.adc-defilant__groupe {
  display: flex;
  gap: 10px;
  padding-right: 10px;
}
.adc-defilant .adc-pastille {
  flex: none;
  white-space: nowrap;
  margin: 0;
}
@keyframes adca-defile {
  to { transform: translateX(-50%); }
}
@media (max-width: 800px) {
  html.adc-js.adc-defile #main .adc-accueil .adc-expertises__bande--defile { flex-wrap: wrap; }
  .adc-defilant { flex: 1 1 100%; width: 100%; }
}

/* ==========================================================================
   8. Références : image dévoilée de bas en haut + zoom au survol
   ========================================================================== */
.adc-cadre {
  display: block;
  position: relative;
  overflow: hidden;
}
html.adc-js #main .adc-accueil .adc-cas__image {
  transition-property: clip-path, transform;
  transition-duration: calc(var(--adca-d) * 1.3), .9s;
  transition-timing-function: var(--adca-ease);
  transition-delay: calc(var(--adca-i, 0) * var(--adca-stag) + .15s), 0s;
}
html.adc-js #main .adc-accueil .adc-cas__carte:not(.adc-vu) .adc-cas__image { clip-path: inset(100% 0 0 0); }
html.adc-js #main .adc-accueil .adc-cas__carte.adc-fini {
  transition: transform .45s var(--adca-ease), box-shadow .45s var(--adca-ease);
}
html.adc-js #main .adc-accueil .adc-cas__carte.adc-fini:hover {
  transform: translateY(-4px);
  box-shadow: 0 18px 40px -18px rgba(11, 15, 25, .35);
}
html.adc-js #main .adc-accueil .adc-cas__carte:hover .adc-cas__image { transform: scale(var(--adca-zoom)); }

/* ==========================================================================
   9. Réalisations : rideau orange
   ========================================================================== */
html.adc-js.adc-rideau #main .adc-accueil .adc-rideau {
  position: absolute;
  inset: 0;
  z-index: 2;
  background: var(--adca-orange);
  transform: scaleX(0);
  pointer-events: none;
}
html.adc-js.adc-rideau #main .adc-accueil .adc-real:not(.adc-vu) .adc-cadre img { opacity: 0; }
html.adc-js.adc-rideau #main .adc-accueil .adc-real.adc-vu .adc-rideau {
  animation: adca-rideau calc(var(--adca-d) * 1.5) cubic-bezier(.7, 0, .3, 1) calc(var(--adca-i, 0) * var(--adca-stag) + .1s) both;
}
html.adc-js.adc-rideau #main .adc-accueil .adc-real.adc-vu .adc-cadre img {
  animation: adca-devoile calc(var(--adca-d) * 1.5) linear calc(var(--adca-i, 0) * var(--adca-stag) + .1s) both;
}
@keyframes adca-rideau {
  0% { transform: scaleX(0); transform-origin: 0 50%; }
  48% { transform: scaleX(1); transform-origin: 0 50%; }
  52% { transform: scaleX(1); transform-origin: 100% 50%; }
  100% { transform: scaleX(0); transform-origin: 100% 50%; }
}
@keyframes adca-devoile {
  0%, 49% { opacity: 0; }
  50%, 100% { opacity: 1; }
}

/* ==========================================================================
   10. Note Google : étoiles une à une + compteurs
   ========================================================================== */
.adc-etoile { display: inline-block; }
html.adc-js.adc-compteurs #main .adc-accueil :is(.adc-avis-bande, .adc-avis):not(.adc-vu) .adc-etoile {
  opacity: .15;
  transform: scale(.5);
}
html.adc-js.adc-compteurs #main .adc-accueil :is(.adc-avis-bande, .adc-avis).adc-vu .adc-etoile {
  animation-name: adca-etoile;
  animation-duration: .55s;
  animation-timing-function: var(--adca-ease);
  animation-fill-mode: both;
}
html.adc-js .adc-etoile:nth-child(1) { animation-delay: .15s; }
html.adc-js .adc-etoile:nth-child(2) { animation-delay: .27s; }
html.adc-js .adc-etoile:nth-child(3) { animation-delay: .39s; }
html.adc-js .adc-etoile:nth-child(4) { animation-delay: .51s; }
html.adc-js .adc-etoile:nth-child(5) { animation-delay: .63s; }
@keyframes adca-etoile {
  0% { opacity: .15; transform: scale(.5); }
  70% { opacity: 1; transform: scale(1.25); }
  100% { opacity: 1; transform: none; }
}
[data-adc-compteur] { font-variant-numeric: tabular-nums; }
/* Le thème colore en orange tous les <span> de la note : les nombres gardent la couleur du texte. */
html.adc-js #main .adc-accueil .adc-avis-bande__note [data-adc-compteur] {
  color: inherit;
  letter-spacing: inherit;
}

/* Bloc chiffres optionnel (voir bloc-chiffres-optionnel.html) */
.adc-chiffres {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 28px;
  margin: 48px 0 0;
  padding: 32px 0;
  border-top: 1px solid #E2E8F0;
  border-bottom: 1px solid #E2E8F0;
}
.adc-chiffre {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.adc-chiffre__nombre {
  font-size: clamp(40px, 4vw, 56px);
  font-weight: 600;
  line-height: 1;
  letter-spacing: -.02em;
  color: #0B0F19;
}
.adc-chiffre__nombre small {
  font-size: .6em;
  font-weight: 600;
  color: #EA580C;
}
.adc-chiffre__libelle {
  font-size: 14px;
  color: #475569;
}

/* ==========================================================================
   11. Pages intérieures (services, réalisations, journal, articles, contact)
       et bloc devis présent en bas de chaque page — réglage « tout_le_site »
   ========================================================================== */

/* 11.1 En-tête de page : même arrivée que l'accueil (CSS pur) */
html.adc-js.adc-pages #main .adc-page-top__h1 { animation: adca-monte var(--adca-d) var(--adca-ease) .1s both; }
html.adc-js.adc-pages #main .adc-page-top__ligne1 { animation: adca-ligne calc(var(--adca-d) * 1.2) var(--adca-ease) .25s both; }
html.adc-js.adc-pages #main .adc-page-top__ligne2 { animation: adca-ligne calc(var(--adca-d) * 1.2) var(--adca-ease) .45s both; }
html.adc-js.adc-pages #main .adc-page-top__intro { animation: adca-monte var(--adca-d) var(--adca-ease) .65s both; }
html.adc-js.adc-pages #main .adc-page-top__chapeau { animation: adca-monte var(--adca-d) var(--adca-ease) .75s both; }
html.adc-js.adc-pages #main .adc-page-top__liens { animation: adca-monte var(--adca-d) var(--adca-ease) .85s both; }
html.adc-js.adc-pages #main .adc-page-top__fond {
  scale: 1.05;
  translate: calc((var(--adca-mx, .5) - .5) * var(--adca-par) * -1) calc((var(--adca-my, .5) - .5) * var(--adca-par) * -.7);
  transition: translate 1.1s var(--adca-ease);
  animation: adca-zoom 2.4s var(--adca-ease) both;
}
html.adc-js.adc-pages.adc-dyn #main .adc-page-top__fond {
  animation: adca-zoom 2.4s var(--adca-ease) both, adca-respire 16s ease-in-out 2.4s infinite alternate;
}
@media (hover: hover) and (pointer: fine) {
  html.adc-js.adc-pages.adc-halo #main .adc-page-top::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    opacity: 0;
    transition: opacity .6s ease;
    background: radial-gradient(560px circle at calc(var(--adca-mx, .68) * 100%) calc(var(--adca-my, .42) * 100%), rgba(249, 115, 22, .16), transparent 60%);
  }
  html.adc-js.adc-pages.adc-halo #main .adc-page-top:hover::before { opacity: 1; }
}

/* En-tête du Journal */
@keyframes adca-filet {
  from { transform: scaleX(0); }
  to { transform: none; }
}
html.adc-js.adc-pages #main .adc-journal-tete .adc-surtitre-section { animation: adca-monte var(--adca-d) var(--adca-ease) .1s both; }
html.adc-js.adc-pages #main .adc-journal-tete__titre { animation: adca-ligne calc(var(--adca-d) * 1.2) var(--adca-ease) .25s both; }
html.adc-js.adc-pages #main .adc-journal-tete .adc-filet {
  transform-origin: 0 50%;
  animation: adca-filet calc(var(--adca-d) * 1.3) var(--adca-ease) .5s both;
}

/* 11.2 Apparitions au défilement — liste identique à PAGES dans le JS */
html.adc-js.adc-pages #main :is(.adc-sec:not(.adc-page-top):not(.adc-journal-tete) .adc-surtitre-section, .adc-sec:not(.adc-page-top):not(.adc-journal-tete) .adc-titre-section, .adc-ref-cle, .adc-sf-carte, .adc-bloc-page__texte > :not(.adc-filet), .adc-bloc-noir__texte > :not(.adc-filet), .adc-bloc-page__image, .adc-bloc-noir__image, .adc-reconnaitre__carte, .adc-lien-fleche, .adc-filtres, .adc-filtres-cta, .adc-real-carte, .adc-article, .adc-devis__intro > *, .adc-devis .adc-form, .dv-avis .dv-wrap > *, .dv-faq .dv-wrap > *):not(.adc-vu) {
  opacity: 0;
  transform: translate3d(0, var(--adca-dist), 0);
}
html.adc-js.adc-pages #main :is(.adc-sec:not(.adc-page-top):not(.adc-journal-tete) .adc-surtitre-section, .adc-sec:not(.adc-page-top):not(.adc-journal-tete) .adc-titre-section, .adc-ref-cle, .adc-sf-carte, .adc-bloc-page__texte > :not(.adc-filet), .adc-bloc-noir__texte > :not(.adc-filet), .adc-bloc-page__image, .adc-bloc-noir__image, .adc-reconnaitre__carte, .adc-lien-fleche, .adc-filtres, .adc-filtres-cta, .adc-real-carte, .adc-article, .adc-devis__intro > *, .adc-devis .adc-form, .dv-avis .dv-wrap > *, .dv-faq .dv-wrap > *):not(.adc-fini) {
  transition-property: opacity, transform;
  transition-duration: var(--adca-d);
  transition-timing-function: var(--adca-ease);
  transition-delay: calc(var(--adca-i, 0) * var(--adca-stag));
}

/* Filets sous les titres : ils se dessinent */
html.adc-js.adc-pages #main .adc-sec:not(.adc-page-top):not(.adc-journal-tete) .adc-filet {
  transform-origin: 0 50%;
  transition: transform calc(var(--adca-d) * 1.3) var(--adca-ease);
  transition-delay: calc(var(--adca-i, 0) * var(--adca-stag));
}
html.adc-js.adc-pages #main .adc-sec:not(.adc-page-top):not(.adc-journal-tete) .adc-filet:not(.adc-vu) { transform: scaleX(0); }

/* 11.3 Images */
/* Références clés : image dévoilée de bas en haut */
html.adc-js.adc-pages #main .adc-ref-cle__image {
  transition: clip-path calc(var(--adca-d) * 1.3) var(--adca-ease) calc(var(--adca-i, 0) * var(--adca-stag) + .15s);
}
html.adc-js.adc-pages #main .adc-ref-cle:not(.adc-vu) .adc-ref-cle__image { clip-path: inset(100% 0 0 0); }
/* Blocs texte + image : l'image se « pose » (léger dézoom) */
html.adc-js.adc-pages #main :is(.adc-bloc-page__image, .adc-bloc-noir__image) { overflow: hidden; }
html.adc-js.adc-pages #main :is(.adc-bloc-page__image, .adc-bloc-noir__image) img {
  transition: transform 1.6s var(--adca-ease) .1s;
}
html.adc-js.adc-pages #main :is(.adc-bloc-page__image, .adc-bloc-noir__image):not(.adc-vu) img { transform: scale(1.08); }
/* Réalisations : rideau orange (réglage « rideau ») */
html.adc-js.adc-pages.adc-rideau #main .adc-real-carte .adc-rideau {
  position: absolute;
  inset: 0;
  z-index: 2;
  background: var(--adca-orange);
  transform: scaleX(0);
  pointer-events: none;
}
html.adc-js.adc-pages.adc-rideau #main .adc-real-carte:not(.adc-vu) .adc-cadre img { opacity: 0; }
html.adc-js.adc-pages.adc-rideau #main .adc-real-carte.adc-vu .adc-rideau {
  animation: adca-rideau calc(var(--adca-d) * 1.5) cubic-bezier(.7, 0, .3, 1) calc(var(--adca-i, 0) * var(--adca-stag) + .1s) both;
}
html.adc-js.adc-pages.adc-rideau #main .adc-real-carte.adc-vu .adc-cadre img {
  animation: adca-devoile calc(var(--adca-d) * 1.5) linear calc(var(--adca-i, 0) * var(--adca-stag) + .1s) both;
}

/* 11.4 Cartes cliquables (savoir-faire, « vous reconnaissez-vous ») */
html.adc-js.adc-pages #main :is(a.adc-sf-carte, a.adc-reconnaitre__carte) {
  position: relative;
  overflow: hidden;
  isolation: isolate;
  transition: background-color .3s ease, transform .5s var(--adca-ease);
}
html.adc-js.adc-pages #main :is(a.adc-sf-carte, a.adc-reconnaitre__carte):hover { transform: translateY(-6px); }
html.adc-js.adc-pages #main :is(a.adc-sf-carte, a.adc-reconnaitre__carte)::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 2px;
  z-index: 3;
  background: var(--adca-orange);
  transform: scaleX(0);
  transform-origin: 0 50%;
  transition: transform .55s var(--adca-ease);
}
html.adc-js.adc-pages #main :is(a.adc-sf-carte, a.adc-reconnaitre__carte):hover::before { transform: none; }
html.adc-js.adc-pages #main a.adc-sf-carte .adc-cadre img { transition: transform .9s var(--adca-ease); }
html.adc-js.adc-pages #main a.adc-sf-carte:hover .adc-cadre img { transform: scale(var(--adca-zoom)); }
@media (hover: hover) and (pointer: fine) {
  html.adc-js.adc-pages.adc-halo #main :is(a.adc-sf-carte, a.adc-reconnaitre__carte)::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: -1;
    pointer-events: none;
    opacity: 0;
    transition: opacity .35s ease;
    background: radial-gradient(280px circle at var(--adca-cx, 50%) var(--adca-cy, 50%), rgba(249, 115, 22, .16), transparent 70%);
  }
  html.adc-js.adc-pages.adc-halo #main :is(a.adc-sf-carte, a.adc-reconnaitre__carte):hover::after { opacity: 1; }
}

/* 11.5 Boutons hors accueil (bloc devis…) */
html.adc-js.adc-pages #main :is(a.adc-bouton, a.adc-bouton-contour) {
  position: relative;
  overflow: hidden;
  isolation: isolate;
}
html.adc-js.adc-pages #main a.adc-bouton:not(.adc-bouton--contour)::after {
  content: "";
  position: absolute;
  top: 0;
  bottom: 0;
  left: -70%;
  width: 45%;
  z-index: -1;
  pointer-events: none;
  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, .55), transparent);
  transform: skewX(-20deg);
  transition: left .75s var(--adca-ease);
}
html.adc-js.adc-pages #main a.adc-bouton:not(.adc-bouton--contour):hover::after { left: 130%; }
html.adc-js.adc-pages #main :is(a.adc-bouton--contour, a.adc-bouton-contour)::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: var(--adca-orange);
  transform: scaleX(0);
  transform-origin: 100% 50%;
  transition: transform .45s var(--adca-ease);
}
html.adc-js.adc-pages #main :is(a.adc-bouton--contour, a.adc-bouton-contour):hover { background: transparent; }
html.adc-js.adc-pages #main :is(a.adc-bouton--contour, a.adc-bouton-contour):hover::before {
  transform: scaleX(1);
  transform-origin: 0 50%;
}

/* 11.6 Note Google du bloc devis : étoiles une à une */
html.adc-js.adc-pages.adc-compteurs #main .adc-devis .adc-avis:not(.adc-vu) .adc-etoile {
  opacity: .15;
  transform: scale(.5);
}
html.adc-js.adc-pages.adc-compteurs #main .adc-devis .adc-avis.adc-vu .adc-etoile {
  animation-name: adca-etoile;
  animation-duration: .55s;
  animation-timing-function: var(--adca-ease);
  animation-fill-mode: both;
}

/* ==========================================================================
   12. Mouvement réduit demandé en cours de visite : on coupe tout
   ========================================================================== */
@media (prefers-reduced-motion: reduce) {
  html.adc-js *,
  html.adc-js *::before,
  html.adc-js *::after {
    animation: none !important;
    transition: none !important;
  }
}
