/* KVH INTÉRIEUR — accueil : couche d'animations des sections (présentation en diaporama, 2 parcours en grandes cartes,
   cartes-carrousels des derniers projets, « Pourquoi nous choisir », bandeau d'appel, FAQ, actualités, zones en radar).
   Moule : accueil.css du parc V3 (16/10/2026), repris au vert KVH (#507f6c ; clair éclairci #7cb09b sur les bandes sombres), mode CLAIR.
   Chargé APRÈS /assets/eco/css/site.css, uniquement sur l'accueil. Préfixe : ka-.
   Tout ce qui est caché ici l'est par une classe posée par accueil.js : sans JS le site reste identique.
   Transform / opacity / filter uniquement. Le hero (intro, titre, diaporama, gouttelettes) n'est PAS ici : intro.css / intro.js.
   Pas de reflet ni de ligne lumineuse qui balaie les photos (seule la brillance des boutons reste).
   CONTRASTES (WCAG, calculés le 16/10/2026) :
     texte d'accent #467060 (--accent-texte) sur fond #fff 5,60:1 / fond doux #faf8f5 5,29:1 ; texte doux #666 5,74:1 / 5,42:1.
     bandes sombres #111111 : --ka-clair #7cb09b = 7,68:1 ; --ka-clair-2 #b4dccf = 11,2:1 ; blanc 86 % = 12,6:1.
     pastille pleine (#111111 sur #7cb09b) = 7,68:1. Bouton plein : blanc sur #507f6c = 4,57:1. */

:root{--ka-ease:cubic-bezier(.2,.8,.2,1);--ka-spring:cubic-bezier(.34,1.56,.64,1);
  --ka-clair:#7cb09b;--ka-clair-2:#b4dccf;--ka-acc:80,127,108;--ka-vert:124,176,155;--ka-nuit:#111111}


/* ---------- 1. Apparitions au scroll : plus amples que celles du thème ([data-reveal] + .is-hidden) ---------- */
[data-reveal]{transition:opacity .85s var(--ka-ease),transform .95s var(--ka-ease),filter .85s ease}
[data-reveal].is-hidden{filter:blur(8px)}
[data-reveal].is-hidden[data-reveal="1"]{transform:translateY(46px) scale(.985)}
[data-reveal].is-hidden[data-reveal="left"]{transform:translateX(-70px) scale(.97)}
[data-reveal].is-hidden[data-reveal="right"]{transform:translateX(70px) scale(.97)}
[data-reveal].is-hidden[data-reveal="zoom"]{transform:scale(.9)}

/* entrée pivotante des cartes (services, projets, pourquoi) */
.ka-scene{perspective:1100px}
.ka-in{opacity:0;transform:perspective(1000px) rotateY(-26deg) rotateX(9deg) translateY(50px) scale(.94)}
.ka-in.ka-vu{opacity:1;transform:none;transition:opacity .8s ease,transform 1s var(--ka-ease)}

/* suite d'éléments qui arrivent l'un après l'autre (bandeau d'appel) */
.ka-seq.ka-pre>*{opacity:0;transform:translateX(-24px)}
.ka-seq.ka-pre.ka-vu>*{opacity:1;transform:none;transition:opacity .7s ease calc(var(--i,0)*95ms),transform .85s var(--ka-ease) calc(var(--i,0)*95ms)}
.ka-seq--haut.ka-pre>*{transform:translateY(22px)}

/* ---------- 2. Titres de section : filet qui se trace + trait avant le sur-titre ---------- */
.ka-tt>span:first-child::before{content:'';display:inline-block;vertical-align:middle;width:30px;height:2px;margin:-3px 12px 0 0;border-radius:2px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .8s var(--ka-ease) .25s}
.ka-tt:not(.is-hidden)>span:first-child::before{transform:scaleX(1)}
.ka-tt h2::after{content:'';display:block;height:3px;width:0;margin-top:16px;border-radius:3px;background:linear-gradient(90deg,var(--accent),var(--ka-clair));transition:width .9s var(--ka-ease) .45s}
.ka-tt:not(.is-hidden) h2::after{width:72px}
.ka-tt--centre h2::after{margin-inline:auto}
@media (max-width:480px){.ka-tt>span:first-child::before{display:none}}

/* ---------- 3. Cartes en relief : légère inclinaison qui suit la souris (sans reflet) ---------- */
.ka-tilt{position:relative;transform-style:preserve-3d;will-change:transform}
.ka-tilt.ka-on{transition:transform .08s linear,box-shadow .3s,background .3s,border-color .3s!important}

/* ---------- 4. Boutons (hors hero) : brillance + ressort ---------- */
section ~ section .hv04,section ~ section .hv20,section ~ section .hv10{position:relative;overflow:hidden;isolation:isolate}
section ~ section .hv04::after,section ~ section .hv20::after,section ~ section .hv10::after{content:'';position:absolute;top:0;bottom:0;left:0;width:55%;pointer-events:none;background:linear-gradient(100deg,transparent,rgba(255,255,255,.45),transparent);transform:translateX(-140%) skewX(-20deg);transition:transform .75s var(--ka-ease)}
section ~ section .hv04:hover::after,section ~ section .hv20:hover::after,section ~ section .hv10:hover::after{transform:translateX(260%) skewX(-20deg)}
html section ~ section .hv04,html section ~ section .hv20{transition:transform .5s var(--ka-spring),background .2s,box-shadow .25s,color .2s,border-color .2s!important}
html section ~ section .hv04:hover,html section ~ section .hv20:hover{transform:translateY(-3px) scale(1.045)}
html section ~ section .hv04:active,html section ~ section .hv20:active{transform:scale(.97)}

/* ---------- 5. Présentation : cadre décalé + diaporama de vraies photos ---------- */
.ka-about-img::before{content:'';position:absolute;inset:16px -14px -16px 14px;border:2px solid var(--accent);border-radius:30px;opacity:.35;z-index:0;transition:transform .9s var(--ka-ease) .3s,opacity .9s ease .3s}
.ka-about-img.is-hidden::before{opacity:0;transform:translate(-20px,-20px)}
.ka-about-img>div{position:relative;z-index:1}
@media (max-width:640px){.ka-about-img::before{inset:10px -8px -10px 8px}}

/* fondu enchaîné entre les photos (accueil.js : diapo()). Sans JS : seule la 1re photo (.is-on) est visible. */
[data-ka-diapo]>img{opacity:0;transform:scale(1.1);transition:transform 6.5s cubic-bezier(.2,.6,.2,1),opacity 1.3s ease}
[data-ka-diapo]>img.is-on{opacity:1;transform:scale(1)}
.ka-diapo-dots{position:absolute;left:50%;bottom:14px;transform:translateX(-50%);z-index:3;display:flex;align-items:center;padding:2px 6px;border-radius:30px;
  background:rgba(17,17,17,.55);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);box-shadow:0 4px 14px -6px rgba(0,0,0,.5)}
.ka-diapo-dots button{position:relative;flex:none;width:20px;height:22px;padding:0;border:0;background:none;cursor:pointer;transition:width .45s var(--ka-ease)}
.ka-diapo-dots button::before,.ka-diapo-dots button::after{content:'';position:absolute;left:6px;right:6px;top:7px;bottom:7px;border-radius:8px}
.ka-diapo-dots button::before{background:rgba(255,255,255,.55)}
.ka-diapo-dots button.on{width:38px}
.ka-diapo-dots button.on::before{background:rgba(255,255,255,.35)}
.ka-diapo-dots button.on::after{background:var(--ka-clair);transform-origin:left;animation:kaDiapoFill var(--ka-dd,4.6s) linear forwards}
.ka-diapo.ka-hold .ka-diapo-dots button.on::after{animation-play-state:paused}
.ka-diapo-dots button:focus-visible{outline:2px solid #fff;outline-offset:-2px;border-radius:8px}
@keyframes kaDiapoFill{from{transform:scaleX(0)}to{transform:scaleX(1)}}

/* ---------- 7. Derniers projets : 6 chantiers, chacun sa carte-carrousel de photos seules ----------
   Pas de titre, de légende ni de compteur ; AUCUN défilement automatique. Glissement au doigt natif (scroll-snap),
   flèches et points ajoutés par accueil.js. Sur mobile les cartes s'empilent à la verticale. */
.ka-realis-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;margin-top:8px}
.ka-realis{position:relative;border-radius:24px;overflow:hidden;background:var(--carte);border:1px solid var(--bord);
  box-shadow:0 18px 40px -30px rgba(17,17,17,.45);transition:box-shadow .4s,border-color .4s}
.ka-realis:hover{border-color:rgba(var(--ka-acc),.5);box-shadow:0 30px 54px -28px rgba(17,17,17,.55),0 0 0 1px rgba(var(--ka-acc),.18)}
.ka-car{position:relative;aspect-ratio:1/1}
.ka-track{display:flex;height:100%;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none;overscroll-behavior-x:contain;scroll-behavior:auto}
.ka-track::-webkit-scrollbar{display:none}
.ka-track img{flex:0 0 100%;width:100%;height:100%;object-fit:cover;display:block;scroll-snap-align:start;scroll-snap-stop:always;cursor:zoom-in}
.ka-track:focus-visible{outline:3px solid var(--accent);outline-offset:-3px;border-radius:24px}
.ka-prev,.ka-next{position:absolute;top:50%;z-index:2;width:40px;height:40px;margin-top:-20px;padding:0;border-radius:50%;border:1px solid rgba(255,255,255,.3);background:rgba(17,17,17,.58);color:#fff;
  display:flex;align-items:center;justify-content:center;cursor:pointer;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);
  transition:background .25s,border-color .25s,transform .35s var(--ka-spring),opacity .25s}
.ka-prev{left:10px}.ka-next{right:10px}
.ka-prev svg,.ka-next svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}
.ka-prev:hover,.ka-next:hover,.ka-prev:focus-visible,.ka-next:focus-visible{background:var(--accent);border-color:var(--accent);transform:scale(1.1)}
.ka-prev:focus-visible,.ka-next:focus-visible{outline:2px solid #fff;outline-offset:2px}
.ka-dots{position:absolute;left:50%;bottom:12px;transform:translateX(-50%);z-index:2;display:flex;align-items:center;padding:1px 5px;border-radius:30px;
  background:rgba(17,17,17,.55);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.ka-dots button{position:relative;flex:none;width:18px;height:22px;padding:0;border:0;background:none;cursor:pointer}
.ka-dots button::before{content:'';position:absolute;left:6px;right:6px;top:8px;bottom:8px;border-radius:8px;background:rgba(255,255,255,.55);transition:left .35s var(--ka-ease),right .35s var(--ka-ease),background .3s}
.ka-dots button.on::before{left:1px;right:1px;background:#fff}
.ka-dots button:focus-visible{outline:2px solid #fff;outline-offset:-2px;border-radius:8px}
@media (hover:none){.ka-prev,.ka-next{width:36px;height:36px;margin-top:-18px;opacity:.9}}
@media (max-width:999px){.ka-realis-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}}
@media (max-width:599px){.ka-realis-grid{grid-template-columns:1fr;gap:20px}.ka-car{aspect-ratio:4/3}}

/* ---------- 8. « Pourquoi nous choisir ? » : bande sombre vivante ---------- */
.ka-pourquoi{position:relative;overflow:hidden;isolation:isolate;
  /* accent éclairci pour la bande sombre : #7cb09b sur #111111 = 9,04:1 (le vert #2c4d45 d'origine n'y ferait que 1,86:1) */
  --accent-texte:var(--ka-clair);--accent-texte-fonce:var(--ka-clair-2)}
/* trame : fin quadrillage qui s'efface vers les bords */
.ka-pourquoi::before{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;
  background-image:linear-gradient(rgba(255,255,255,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.06) 1px,transparent 1px);
  background-size:56px 56px;
  -webkit-mask-image:radial-gradient(ellipse 70% 80% at 50% 45%,#000 15%,transparent 78%);mask-image:radial-gradient(ellipse 70% 80% at 50% 45%,#000 15%,transparent 78%)}
/* halos vert d'eau qui dérivent lentement */
.ka-pourquoi::after{content:'';position:absolute;inset:-20%;z-index:-1;pointer-events:none;
  background:radial-gradient(520px circle at 12% 18%,rgba(var(--ka-vert),.3),transparent 70%),radial-gradient(620px circle at 88% 85%,rgba(143,190,168,.28),transparent 70%);
  animation:kaDrift 20s ease-in-out infinite alternate}
@keyframes kaDrift{from{transform:translate3d(-2%,-1%,0) scale(1)}to{transform:translate3d(3%,2%,0) scale(1.08)}}
.ka-pourquoi.ka-pause::after{animation-play-state:paused}

.ka-pourquoi .grille-cartes{gap:20px}
/* cartes en verre */
.ka-pourquoi .hv09{position:relative;overflow:hidden;
  background:linear-gradient(160deg,rgba(255,255,255,.12),rgba(255,255,255,.04))!important;
  border:1px solid rgba(255,255,255,.2)!important;
  box-shadow:0 22px 44px -26px rgba(0,0,0,.7),inset 0 1px 0 rgba(255,255,255,.14);
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);
  transition:transform .5s var(--ka-ease),background .3s,border-color .3s,box-shadow .3s!important}
.ka-pourquoi .hv09:hover{background:linear-gradient(160deg,rgba(var(--ka-vert),.26),rgba(255,255,255,.05))!important;border-color:rgba(124,176,155,.6)!important}
/* filet qui se charge en haut de chaque carte */
.ka-pourquoi .hv09>i.ka-fil{position:absolute;left:0;top:0;right:0;height:3px;background:linear-gradient(90deg,var(--accent),var(--ka-clair),transparent);transform:scaleX(0);transform-origin:left;transition:transform 1.1s var(--ka-ease) .5s}
.ka-pourquoi .ka-in.ka-vu .hv09>i.ka-fil{transform:scaleX(1)}
/* pastille d'icône : pleine, lisible (#111111 sur #7cb09b = 9,04:1), avec onde */
.ka-pourquoi .hv09>span:first-of-type{position:relative;width:52px!important;height:52px!important;
  background:var(--ka-clair)!important;color:var(--ka-nuit)!important;
  box-shadow:0 0 0 6px rgba(124,176,155,.16),0 10px 24px -8px rgba(var(--ka-vert),.55);
  transition:transform .5s var(--ka-spring)}
.ka-pourquoi .hv09>span:first-of-type::after{content:'';position:absolute;inset:0;border-radius:50%;border:2px solid var(--ka-clair);pointer-events:none;animation:kaRing 2.8s ease-out infinite}
.ka-pourquoi .ka-in:nth-child(2) .hv09>span:first-of-type::after{animation-delay:.7s}
.ka-pourquoi .ka-in:nth-child(3) .hv09>span:first-of-type::after{animation-delay:1.4s}
.ka-pourquoi .ka-in:nth-child(4) .hv09>span:first-of-type::after{animation-delay:2.1s}
.ka-pourquoi .ka-in.ka-vu .hv09>span:first-of-type{animation:kaPop .8s var(--ka-spring) .45s both}
.ka-pourquoi .hv09:hover>span:first-of-type{transform:scale(1.12) rotate(-8deg)}
@keyframes kaRing{0%{transform:scale(1);opacity:.7}100%{transform:scale(1.7);opacity:0}}
@keyframes kaPop{0%{transform:scale(.2);opacity:0}100%{transform:scale(1);opacity:1}}
.ka-pourquoi .hv09 h3{letter-spacing:-.01em}
.ka-pourquoi .hv09 p{color:rgba(255,255,255,.86)!important}
/* 2 x 2 en mobile : moins de scroll vertical */
@media (max-width:480px){
  .ka-pourquoi .grille-cartes{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:12px}
  .ka-pourquoi .hv09{padding:18px 12px!important;gap:10px!important;border-radius:20px!important}
  .ka-pourquoi .hv09>span:first-of-type{width:44px!important;height:44px!important}
  .ka-pourquoi .hv09 h3{font-size:15.5px!important;overflow-wrap:anywhere}
  .ka-pourquoi .hv09 p{font-size:13.5px!important;line-height:1.5!important}
}

/* icônes SVG des cartes « Pourquoi nous choisir » (les icônes de la V1) */
.ka-pourquoi .hv09>span:first-of-type svg{display:block;width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
@media (max-width:480px){.ka-pourquoi .hv09>span:first-of-type svg{width:21px;height:21px}}

/* ---------- 8b. Listes à coches (présentation, partenaires) : coche dessinée en CSS, aucun caractère ajouté ---------- */
.ka-checks{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:11px}
.ka-checks li{position:relative;padding-left:34px;font-size:15.5px;line-height:1.55;color:var(--titre)}
.ka-checks li::before{content:'';position:absolute;left:0;top:1px;width:22px;height:22px;border-radius:50%;background:color-mix(in srgb,var(--accent) 12%,transparent)}
.ka-checks li::after{content:'';position:absolute;left:7px;top:6px;width:6px;height:10px;border:solid var(--accent);border-width:0 2.4px 2.4px 0;transform:rotate(42deg) scale(.9);transform-origin:70% 70%}
.ka-checks.ka-pre li{opacity:0;transform:translateX(-18px)}
.ka-checks.ka-pre.ka-vu li{opacity:1;transform:none;transition:opacity .6s ease calc(var(--i,0)*90ms),transform .75s var(--ka-ease) calc(var(--i,0)*90ms)}

/* mobile : bandes un peu moins hautes, présentation sans double marge (le style en ligne pose 100 px / 24 px + 24 px) */
@media (max-width:640px){
  .ka-sec,.ka-pourquoi,.ka-zone{padding-top:72px!important;padding-bottom:72px!important;padding-left:20px!important;padding-right:20px!important}
  .ka-pres-grid{padding:0!important;gap:36px!important}
}

/* ---------- 9. Bandeau d'appel : photo dans sa colonne (vraie photo en <img>), texte sur aplat uni ---------- */
.ka-cta{position:relative;border-radius:32px;overflow:hidden;background:var(--ka-nuit);min-height:340px;margin:26px 0;
  display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);align-items:stretch;box-shadow:0 30px 60px -36px rgba(17,17,17,.7)}
.ka-cta-photo{position:relative;overflow:hidden;min-height:340px}
.ka-cta-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 55%;display:block;transform-origin:50% 50%;animation:kaKen 22s ease-in-out infinite alternate}
/* fondu très court du bord droit de la photo vers l'aplat : le sujet, à gauche, reste entier */
.ka-cta-photo::after{content:'';position:absolute;top:0;bottom:0;right:0;width:18%;pointer-events:none;background:linear-gradient(90deg,transparent,var(--ka-nuit))}
.ka-cta[data-reveal]>.ka-cta-txt{position:relative;display:flex;flex-direction:column;justify-content:center;gap:16px;padding:48px 44px 48px 20px;color:#fff;background:transparent!important}
.ka-cta-txt>span:first-child{font-size:13px;font-weight:700;color:var(--ka-clair);text-transform:uppercase;letter-spacing:.12em}
@keyframes kaKen{from{transform:scale(1)}to{transform:scale(1.07)}}
@media (max-width:767px){
  .ka-cta{grid-template-columns:1fr;border-radius:26px}
  .ka-cta-photo{min-height:0;aspect-ratio:16/10}
  .ka-cta-photo::after{top:auto;left:0;width:auto;height:30%;background:linear-gradient(180deg,transparent,var(--ka-nuit))}
  .ka-cta[data-reveal]>.ka-cta-txt{padding:12px 24px 34px}
}

/* ---------- 10. Zones desservies : bande sombre, radar à gauche, communes en pastilles (liens vers /seo/) ----------
   Disposition de la « Zone d'intervention » du moule V3 du parc. La classe .ka-zh (cachée)
   n'est posée que par accueil.js, juste avant d'observer : sans JS tout est visible. */
.ka-zone{position:relative;overflow:hidden;isolation:isolate;--accent-texte:var(--ka-clair);--accent-texte-fonce:var(--ka-clair-2);box-shadow:inset 0 -1px 0 rgba(255,255,255,.1)}
.ka-zone::before{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:radial-gradient(640px circle at 16% 62%,rgba(var(--ka-vert),.3),transparent 70%),radial-gradient(520px circle at 92% 8%,rgba(143,190,168,.22),transparent 70%)}
.ka-zone-intro{font-size:16px;line-height:1.65;color:rgba(255,255,255,.88)}
.ka-zone-grid{display:grid;grid-template-columns:minmax(0,420px) minmax(0,1fr);gap:56px;align-items:center}
.ka-radar{position:relative;width:100%;max-width:420px;aspect-ratio:1;margin:0 auto}
.ka-radar svg{display:block;width:100%;height:100%;overflow:visible}
.ka-radar circle{fill:none;stroke:var(--ka-clair);stroke-width:1.6}
.ka-radar circle.r{stroke-dasharray:1;stroke-dashoffset:0;transition:stroke-dashoffset 1.6s var(--ka-ease)}
.ka-radar circle.r1{transition-delay:.2s}
.ka-radar circle.r2{transition-delay:.5s;opacity:.7}
.ka-radar circle.r3{transition-delay:.8s;opacity:.45}
.ka-radar circle.rp{stroke-width:1.4;transform-box:fill-box;transform-origin:center;opacity:0;animation:kaRadar 4.8s ease-out 1.6s infinite}
@keyframes kaRadar{0%{transform:scale(1);opacity:.55}100%{transform:scale(2.24);opacity:0}}
.ka-zh .ka-radar circle.r{stroke-dashoffset:1}
.ka-ctr{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:8px;color:#fff;font-weight:800;font-size:16px;text-align:center;
  transition:opacity .6s ease 1.1s,transform .8s var(--ka-spring) 1.1s}
.ka-zh .ka-ctr{opacity:0;transform:translate(-50%,-50%) scale(.5)}
.ka-ctr b{display:flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:50%;background:var(--ka-clair);color:var(--ka-nuit);box-shadow:0 0 0 10px rgba(124,176,155,.22)}
.ka-ctr svg{width:27px;height:27px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.ka-pills{display:flex;flex-wrap:wrap;gap:12px;list-style:none;margin:0;padding:0}
.ka-pills>li{display:block}
.ka-city{display:inline-flex;align-items:center;gap:8px;padding:11px 18px;border-radius:40px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.25);color:#fff;font-size:15px;font-weight:600;line-height:1.2;
  transition:background .3s,color .3s,transform .45s var(--ka-spring),border-color .3s,opacity .5s ease,box-shadow .3s}
.ka-city:hover{color:#fff}
.ka-city svg{display:block;width:15px;height:15px;flex:none;fill:none;stroke:var(--ka-clair);stroke-width:2.3;stroke-linecap:round;stroke-linejoin:round;transition:stroke .3s}
.ka-city .ka-fl{display:inline-block;margin-left:2px;transition:transform .35s var(--ka-spring)}
.ka-city.ka-main{background:var(--ka-clair);border-color:var(--ka-clair);color:var(--ka-nuit);font-weight:800;box-shadow:0 10px 26px -12px rgba(124,176,155,.85)}
.ka-city.ka-main svg{stroke:var(--ka-nuit)}
.ka-city:hover,.ka-city:focus-visible{background:var(--ka-clair);border-color:var(--ka-clair);color:var(--ka-nuit);transform:translateY(-4px) scale(1.06)}
.ka-city:hover svg,.ka-city:focus-visible svg{stroke:var(--ka-nuit)}
.ka-city:hover .ka-fl,.ka-city:focus-visible .ka-fl{transform:translateX(4px)}
.ka-city:focus-visible{outline:3px solid #fff;outline-offset:3px}
.ka-zh .ka-city{opacity:0;transform:translateY(14px) scale(.9)}
.ka-zone.ka-zgo .ka-city{transition-delay:0s,0s,calc(var(--i,0)*70ms + 1.2s),0s,calc(var(--i,0)*70ms + 1.2s),0s}
@media (max-width:900px){
  .ka-zone-grid{grid-template-columns:1fr;gap:34px}
  .ka-radar{max-width:300px}
}
@media (max-width:640px){
  .ka-radar{max-width:260px}
  .ka-ctr{font-size:14px}
  .ka-ctr b{width:46px;height:46px;box-shadow:0 0 0 8px rgba(124,176,155,.22)}
  .ka-ctr svg{width:22px;height:22px}
  .ka-pills{gap:10px}
  .ka-city{padding:10px 15px;font-size:14px}
}

/* ---------- 11. FAQ : apparition en cascade, ouverture soignée ---------- */
.ka-faq.ka-pre{opacity:0;transform:translateY(24px)}
.ka-faq.ka-go{animation:kaFaqIn .6s var(--ka-ease) backwards;animation-delay:var(--ka-d,0ms)}
@keyframes kaFaqIn{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}
[data-faq-item]{transition:border-color .35s,box-shadow .45s,background .35s,transform .35s var(--ka-ease)!important}
[data-faq-item]:not(.open):hover{border-color:rgba(var(--ka-acc),.5)!important;transform:translateX(4px)}
[data-faq-item] [data-faq-toggle]{transition:color .3s}
[data-faq-item].open [data-faq-toggle]{color:var(--accent-texte)!important}
[data-faq-item] [data-faq-a-wrap]{transition:grid-template-rows .5s var(--ka-ease)}
/* la réponse se déplie en glissant et en s'éclaircissant, l'icône + tourne en × avec un léger ressort */
[data-faq-item] [data-faq-a-wrap]>div>div{opacity:0;transform:translateY(-10px);transition:opacity .25s ease,transform .3s var(--ka-ease)}
[data-faq-item].open [data-faq-a-wrap]>div>div{opacity:1;transform:none;transition:opacity .5s ease .12s,transform .6s var(--ka-ease) .12s}
[data-faq-item] [data-faq-icon]{transition:transform .5s var(--ka-spring),background .3s,color .3s,box-shadow .4s!important}
[data-faq-item].open [data-faq-icon]{box-shadow:0 0 0 6px rgba(var(--ka-acc),.14)}
[data-faq-item].open{box-shadow:0 18px 40px -24px rgba(var(--ka-acc),.5)!important}

/* ---------- 12. Actualités : cartes au niveau des services (apparition, survol vivant) ---------- */
.ka-actus .blog-card{display:flex;flex-direction:column;position:relative;transition:transform .35s var(--ka-ease),box-shadow .35s,border-color .35s!important}
.ka-actus .blog-card:hover{border-color:rgba(var(--ka-acc),.5)!important;box-shadow:0 28px 50px -26px rgba(17,17,17,.5),0 0 0 1px rgba(var(--ka-acc),.2)}
.ka-actus .blog-card>div:first-child{overflow:hidden}
.ka-actus .blog-card>div:first-child img{transition:transform .9s var(--ka-ease)}
.ka-actus .blog-card:hover>div:first-child img{transform:scale(1.06)}
.ka-actus .blog-card>div:last-child>span:first-child{transition:color .3s,letter-spacing .35s var(--ka-ease)}
.ka-actus .blog-card:hover>div:last-child>span:first-child{letter-spacing:.12em}
.ka-actus .blog-card>div:last-child>span:last-child{display:inline-block;align-self:flex-start;transition:transform .4s var(--ka-spring)}
.ka-actus .blog-card:hover>div:last-child>span:last-child{transform:translateX(6px)}
.ka-actus .blog-card::before{content:'';position:absolute;left:0;top:0;right:0;height:3px;z-index:2;background:linear-gradient(90deg,var(--accent),var(--ka-clair),transparent);transform:scaleX(0);transform-origin:left;transition:transform .6s var(--ka-ease)}
.ka-actus .blog-card:hover::before{transform:scaleX(1)}
.ka-card.ka-pre{opacity:0;transform:translateY(34px) scale(.97)}
.ka-card.ka-go{animation:kaCardIn .85s var(--ka-ease) backwards;animation-delay:var(--ka-d,0ms)}
@keyframes kaCardIn{from{opacity:0;transform:translateY(34px) scale(.97)}to{opacity:1;transform:none}}
@media (hover:none){.ka-actus .blog-card:hover{transform:none;box-shadow:none}}

/* ---------- 13. KVH : les 2 parcours (Professionnels / Particuliers) en grandes cartes ----------
   Deux cartes de même hauteur : photo en haut (4/3, zoom doux au survol), texte de la V1 dessous, pastille « Découvrir → » ; relief à la souris (accueil.js). */
.ka-parcours-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px;margin-top:8px}
.ka-parc{flex:1;display:flex;flex-direction:column;background:var(--carte);border-radius:28px;overflow:hidden;color:var(--titre);border:1px solid var(--bord);
  box-shadow:0 18px 40px -30px rgba(17,17,17,.45);transition:transform .35s var(--ka-ease),box-shadow .35s,border-color .35s!important}
.ka-parc:hover{border-color:rgba(var(--ka-acc),.55)!important;box-shadow:0 30px 56px -28px rgba(17,17,17,.5),0 0 0 1px rgba(var(--ka-acc),.2)}
.ka-parc-img{position:relative;overflow:hidden;aspect-ratio:4/3;background:var(--fond-2)}
.ka-parc-img img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .9s var(--ka-ease)}
.ka-parc:hover .ka-parc-img img{transform:scale(1.05)}
.ka-parc-txt{display:flex;flex-direction:column;gap:12px;padding:30px 32px 34px;flex:1}
.ka-parc-txt h3{font-size:clamp(24px,2.6vw,32px);font-weight:700;line-height:1.1;letter-spacing:-.015em;color:var(--titre)}
.ka-parc-txt p{font-size:15.5px;line-height:1.7;color:var(--texte-doux);flex:1}
.ka-more{align-self:flex-start;display:inline-flex;align-items:center;margin-top:10px;padding:13px 24px;border-radius:40px;background:var(--accent);color:var(--sur-accent);font-size:14px;font-weight:700;line-height:1.2;transition:transform .45s var(--ka-spring),box-shadow .3s,background .2s}
.ka-parc:hover .ka-more{transform:translateX(6px);box-shadow:0 0 0 6px rgba(var(--ka-acc),.16);background:var(--accent-fonce)}
.ka-parc:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
@media (max-width:767px){.ka-parcours-grid{grid-template-columns:1fr;gap:20px}.ka-parc-txt{padding:24px 22px 28px}.ka-parc{border-radius:24px}}
@media (hover:none){.ka-parc:hover{transform:none;box-shadow:0 18px 40px -30px rgba(17,17,17,.45)}.ka-parc:hover .ka-parc-img img{transform:none}}

/* ---------- 14. KVH : photos de chantier surtout en portrait → cartes-carrousels en 4/5 ---------- */
.ka-car{aspect-ratio:4/5}
@media (max-width:599px){.ka-car{aspect-ratio:4/5}}
.ka-projets-btns{display:flex;gap:12px;flex-wrap:wrap;justify-content:center;margin:26px 0 0}

/* ---------- 15. KVH : introduction de la FAQ, zones sans liens ---------- */
.ka-faq-intro{font-size:15.5px;line-height:1.7;color:var(--texte-doux);max-width:760px;margin:-14px 0 26px}
.ka-faq-intro strong{color:var(--titre)}
.ka-zone .ka-city{cursor:default}
.ka-zone .ka-city:not(.ka-main):hover{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.25);color:#fff;transform:none}
.ka-zone .ka-city:not(.ka-main):hover svg{stroke:var(--ka-clair)}
.ka-zone .ka-city.ka-main:hover{transform:none}


/* ---------- Mouvement réduit : tout est coupé ---------- */
@media (prefers-reduced-motion:reduce){
  [data-reveal]{transition:none!important;filter:none!important}
  .ka-in,.ka-seq.ka-pre>*{opacity:1!important;transform:none!important;transition:none!important}
  section ~ section .hv04::after,section ~ section .hv20::after,section ~ section .hv10::after{display:none!important}
  html section ~ section .hv04:hover,html section ~ section .hv20:hover{transform:none}
  .ka-pourquoi::after,.ka-pourquoi .hv09>span:first-of-type::after,.ka-cta-photo img{animation:none!important}
  .ka-pourquoi .hv09>i.ka-fil{transform:scaleX(1)!important;transition:none!important}
  .ka-tt>span:first-child::before{transform:scaleX(1)!important;transition:none!important}
  .ka-tt h2::after{width:72px!important;transition:none!important}
  [data-ka-diapo]>img{transform:none!important;transition:none!important}
  .ka-diapo-dots{display:none!important}
  .ka-radar circle,.ka-ctr,.ka-city{transition:none!important}
  .ka-radar circle.rp{animation:none!important;opacity:0}
  .ka-zh .ka-radar circle.r{stroke-dashoffset:0!important}
  .ka-zh .ka-ctr{opacity:1!important;transform:translate(-50%,-50%)!important}
  .ka-zh .ka-city{opacity:1!important;transform:none!important}
  .ka-about-img::before{opacity:.35!important;transform:none!important;transition:none!important}
  .ka-faq.ka-pre,.ka-card.ka-pre{opacity:1!important;transform:none!important}
  .ka-faq.ka-go,.ka-card.ka-go{animation:none!important}
  [data-faq-item],[data-faq-item] [data-faq-a-wrap],[data-faq-item] [data-faq-a-wrap]>div>div,[data-faq-item] [data-faq-icon]{transition:none!important}
  .ka-checks.ka-pre li{opacity:1!important;transform:none!important;transition:none!important}
  .ka-parc,.ka-parc-img img,.ka-more{transition:none!important}
  .ka-realis,.ka-prev,.ka-next,.ka-dots button::before,.ka-actus .blog-card,.ka-actus .blog-card>div:first-child img{transition:none!important}
}
