/* VERMEERSCH COMPANY — accueil.
   Structure et mécanique reprises de l'accueil clair Nemelec : apparitions, cartes en relief,
   diaporama de présentation, bande « Pourquoi », avis et radar. Couleurs et dessin adaptés
   au rouge Vermeersch et au terrassement. Chargé uniquement sur l'accueil, après le thème Eco. */

:root{
  --vca-ease:cubic-bezier(.2,.8,.2,1);
  --vca-spring:cubic-bezier(.34,1.56,.64,1);
  --vca-light:#ff9fb1;
  --vca-light-2:#ffd7de;
  --vca-dark:#0a2b42;
}

/* Apparitions au scroll. Sans JS, aucune classe de masquage n'est présente. */
[data-reveal]{transition:opacity .85s var(--vca-ease),transform .95s var(--vca-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)}

.vca-scene{perspective:1100px}
.vca-in{opacity:0;transform:perspective(1000px) rotateY(-26deg) rotateX(9deg) translateY(50px) scale(.94)}
.vca-in.vca-visible{opacity:1;transform:none;transition:opacity .8s ease,transform 1s var(--vca-ease)}

.vca-sequence.vca-before>*{opacity:0;transform:translateX(-24px)}
.vca-sequence.vca-before.vca-visible>*{
  opacity:1;transform:none;
  transition:opacity .7s ease calc(var(--i,0)*95ms),transform .85s var(--vca-ease) calc(var(--i,0)*95ms)
}
.vca-sequence--up.vca-before>*{transform:translateY(22px)}
.vca-sequence.vca-before.vca-visible>*>span[aria-hidden="true"]:first-child{
  animation:vcaPop .7s var(--vca-spring) calc(var(--i,0)*95ms + .25s) both
}

/* Titres : filet du modèle clair et trait rouge. */
.vca-title>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(--vca-ease) .25s
}
.vca-title:not(.is-hidden)>span:first-child::before{transform:scaleX(1)}
.vca-title h2::after{
  content:'';display:block;height:3px;width:0;margin-top:16px;border-radius:3px;
  background:linear-gradient(90deg,var(--accent),var(--vca-light));
  transition:width .9s var(--vca-ease) .45s
}
.vca-title:not(.is-hidden) h2::after{width:72px}
.vca-title--center h2::after{margin-inline:auto}
.vca-services .vca-section-intro{
  max-width:680px;margin:-18px 0 34px;color:var(--texte-doux);font-size:16px;line-height:1.7
}

/* Inclinaison légère. Le reflet est limité aux cartes sans photo. */
.vca-tilt{position:relative;transform-style:preserve-3d;will-change:transform}
.vca-tilt::after{
  content:'';position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:3;opacity:0;
  transition:opacity .3s ease;
  background:radial-gradient(380px circle at var(--mx,50%) var(--my,50%),rgba(255,255,255,.26),transparent 55%)
}
.vca-tilt.vca-on{transition:transform .08s linear,box-shadow .3s,background .3s,border-color .3s!important}
.vca-tilt.vca-on::after{opacity:1}
.vca-tilt.vca-on{box-shadow:0 30px 60px -28px rgba(7,24,38,.55)}
.vca-services .vca-tilt::after,.vca-projects .vca-tilt::after{display:none}

/* Brillance réservée aux boutons. */
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,.5),transparent);
  transform:translateX(-140%) skewX(-20deg);transition:transform .75s var(--vca-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(--vca-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)}

/* Présentation : cadre décalé et diaporama de vraies photos. */
.vca-about-photo::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(--vca-ease) .3s,opacity .9s ease .3s
}
.vca-about-photo.is-hidden::before{opacity:0;transform:translate(-20px,-20px)}
.vca-about-photo>div{position:relative;z-index:1}
[data-vca-diapo]>img{opacity:0}
[data-vca-diapo]>img.is-on{opacity:1}
.vca-about-photo [data-vca-diapo]>img{
  transform:scale(1.1);
  transition:transform 6s cubic-bezier(.2,.6,.2,1),opacity 1.3s ease
}
.vca-about-photo:not(.is-hidden) [data-vca-diapo]>img.is-on{transform:scale(1)}
.vca-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(7,24,38,.58);
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);
  box-shadow:0 4px 14px -6px rgba(0,0,0,.5)
}
.vca-diapo-dots button{
  position:relative;flex:none;width:20px;height:22px;padding:0;border:0;background:none;cursor:pointer;
  transition:width .45s var(--vca-ease)
}
.vca-diapo-dots button::before,.vca-diapo-dots button::after{
  content:'';position:absolute;left:6px;right:6px;top:7px;bottom:7px;border-radius:8px
}
.vca-diapo-dots button::before{background:rgba(255,255,255,.55)}
.vca-diapo-dots button.on{width:38px}
.vca-diapo-dots button.on::before{background:rgba(255,255,255,.35)}
.vca-diapo-dots button.on::after{
  background:var(--vca-light);transform-origin:left;animation:vcaDiapoFill var(--vca-diapo-duration,4.6s) linear forwards
}
.vca-diapo.vca-hold .vca-diapo-dots button.on::after{animation-play-state:paused}
.vca-diapo-dots button:focus-visible{outline:2px solid #fff;outline-offset:-2px;border-radius:8px}
@keyframes vcaDiapoFill{from{transform:scaleX(0)}to{transform:scaleX(1)}}

/* Réalisations : images seules, sans balayage lumineux. */
.vca-projects .eco-piste-slide>div{cursor:zoom-in}
.vca-projects .eco-piste-slide>div img{transition:transform .9s var(--vca-ease)}
.vca-projects .eco-piste-slide>div:hover img{transform:scale(1.07)}

/* Bande sombre « Pourquoi » : trame, halos rouges et cartes verre.
   #ff9fb1 sur #0a2b42 dépasse largement 4,5:1. */
.vca-pourquoi{
  position:relative;overflow:hidden;isolation:isolate;
  --accent-texte:var(--vca-light);--accent-texte-fonce:var(--vca-light-2)
}
.vca-pourquoi::before{
  content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;
  background-image:
    linear-gradient(28deg,rgba(255,159,177,.055) 1px,transparent 1px),
    linear-gradient(152deg,rgba(255,159,177,.04) 1px,transparent 1px);
  background-size:62px 62px;
  -webkit-mask-image:radial-gradient(ellipse 75% 85% at 50% 45%,#000 15%,transparent 80%);
  mask-image:radial-gradient(ellipse 75% 85% at 50% 45%,#000 15%,transparent 80%)
}
.vca-pourquoi::after{
  content:'';position:absolute;inset:-20%;z-index:-1;pointer-events:none;
  background:
    radial-gradient(520px circle at 12% 18%,rgba(200,16,46,.42),transparent 70%),
    radial-gradient(620px circle at 88% 85%,rgba(255,90,118,.2),transparent 70%);
  animation:vcaDrift 20s ease-in-out infinite alternate
}
@keyframes vcaDrift{from{transform:translate3d(-2%,-1%,0) scale(1)}to{transform:translate3d(3%,2%,0) scale(1.08)}}

.vca-terrain{position:absolute;inset:0;width:100%;height:100%;z-index:-1;pointer-events:none;display:block}
.vca-terrain .vca-contour{fill:none;stroke:rgba(255,159,177,.18);stroke-width:1.5}
.vca-terrain .vca-flow{
  fill:none;stroke:var(--vca-light);stroke-width:2.3;stroke-linecap:round;
  stroke-dasharray:5 95;stroke-dashoffset:0;animation:vcaFlow 8s linear infinite;
  filter:drop-shadow(0 0 5px rgba(255,159,177,.75))
}
.vca-terrain .vca-flow:nth-child(5){animation-duration:10s;animation-delay:-3s}
.vca-terrain .vca-flow:nth-child(6){animation-duration:12s;animation-delay:-6s}
.vca-terrain.vca-pause *{animation-play-state:paused}
@keyframes vcaFlow{to{stroke-dashoffset:-100}}

.vca-pourquoi .grille-cartes{gap:20px}
.vca-pourquoi .hv09{
  position:relative;overflow:hidden;
  background:linear-gradient(160deg,rgba(255,255,255,.11),rgba(255,255,255,.035))!important;
  border:1px solid rgba(255,159,177,.25)!important;
  box-shadow:0 22px 44px -26px rgba(0,0,0,.65),inset 0 1px 0 rgba(255,255,255,.14);
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);
  transition:transform .5s var(--vca-ease),background .3s,border-color .3s,box-shadow .3s!important
}
.vca-pourquoi .hv09:hover{
  background:linear-gradient(160deg,rgba(255,159,177,.2),rgba(255,255,255,.05))!important;
  border-color:rgba(255,159,177,.62)!important
}
.vca-pourquoi .hv09>i.vca-edge{
  position:absolute;left:0;top:0;right:0;height:3px;
  background:linear-gradient(90deg,var(--accent),var(--vca-light),transparent);
  transform:scaleX(0);transform-origin:left;transition:transform 1.1s var(--vca-ease) .5s
}
.vca-pourquoi .vca-in.vca-visible .hv09>i.vca-edge{transform:scaleX(1)}
.vca-pourquoi .hv09>span:first-of-type{
  position:relative;width:52px!important;height:52px!important;border-radius:50%!important;
  background:linear-gradient(145deg,var(--vca-light-2),var(--vca-light))!important;color:#3b0711!important;
  box-shadow:0 0 0 6px rgba(255,159,177,.13),0 10px 24px -8px rgba(255,159,177,.62);
  transition:transform .5s var(--vca-spring)
}
.vca-pourquoi .hv09>span:first-of-type::after{
  content:'';position:absolute;inset:0;border-radius:inherit;border:2px solid var(--vca-light);
  pointer-events:none;animation:vcaRing 2.8s ease-out infinite
}
.vca-pourquoi .vca-in:nth-child(2) .hv09>span:first-of-type::after{animation-delay:.7s}
.vca-pourquoi .vca-in:nth-child(3) .hv09>span:first-of-type::after{animation-delay:1.4s}
.vca-pourquoi .vca-in:nth-child(4) .hv09>span:first-of-type::after{animation-delay:2.1s}
.vca-pourquoi .vca-in.vca-visible .hv09>span:first-of-type{animation:vcaPop .8s var(--vca-spring) .45s both}
.vca-pourquoi .hv09:hover>span:first-of-type{transform:scale(1.12) rotate(-8deg)}
.vca-pourquoi .hv09 p{color:rgba(255,255,255,.84)!important}
@keyframes vcaRing{0%{transform:scale(1);opacity:.7}100%{transform:scale(1.85);opacity:0}}
@keyframes vcaPop{0%{transform:scale(.2);opacity:0}100%{transform:scale(1);opacity:1}}

/* Bandeau d'appel : photo réelle à gauche, texte sur aplat uni à droite. */
.vca-callout{grid-template-columns:minmax(0,1.06fr) minmax(360px,.94fr);box-shadow:0 26px 70px -38px rgba(7,24,38,.7)}
.vca-callout-photo{min-height:340px;overflow:hidden;background:#d6d9dc}
.vca-callout-photo img{
  display:block;width:100%;height:100%;object-fit:cover;object-position:center;
  animation:vcaKen 22s ease-in-out infinite alternate;transform-origin:38% 50%
}
.vca-callout-copy{background:var(--vca-dark)}
.vca-callout .vca-callout-copy>span:first-child{color:var(--vca-light)!important}
@keyframes vcaKen{from{transform:scale(1)}to{transform:scale(1.07)}}

/* Avis : cartes du modèle, cinq étoiles dessinées en CSS et avance automatique douce. */
.vca-reviews{position:relative;overflow:hidden}
.vca-reviews::before{
  content:'';position:absolute;right:max(24px,calc(50% - 600px));top:34px;width:150px;height:150px;
  pointer-events:none;opacity:.065;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23c8102e' d='M9.6 4C5.4 5.2 3 8.6 3 13v7h8v-8H7.2c0-2.4 1.1-3.9 3.4-4.8L9.6 4zm10 0c-4.2 1.2-6.6 4.6-6.6 9v7h8v-8h-3.8c0-2.4 1.1-3.9 3.4-4.8L19.6 4z'/%3E%3C/svg%3E") center/contain no-repeat;
  transform:rotate(8deg)
}
.vca-reviews>div{position:relative}
[data-testi-track]{touch-action:pan-y}
.vca-review-card{
  position:relative;overflow:hidden;
  transition:transform .5s var(--vca-ease),box-shadow .35s,border-color .3s!important
}
.vca-review-card>div[style*="flex:1"]{
  display:flex;flex-direction:column;justify-content:center;align-items:flex-start
}
.vca-review-card:hover{border-color:var(--accent)!important;box-shadow:0 30px 50px -24px rgba(10,43,66,.35)!important}
.vca-review-card::before{
  content:'';position:absolute;top:22px;right:22px;width:40px;height:40px;opacity:.14;pointer-events:none;
  transition:transform .6s var(--vca-spring),opacity .3s;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23c8102e' d='M9.6 4C5.4 5.2 3 8.6 3 13v7h8v-8H7.2c0-2.4 1.1-3.9 3.4-4.8L9.6 4zm10 0c-4.2 1.2-6.6 4.6-6.6 9v7h8v-8h-3.8c0-2.4 1.1-3.9 3.4-4.8L19.6 4z'/%3E%3C/svg%3E") center/contain no-repeat
}
.vca-review-card:hover::before{opacity:.3;transform:rotate(-10deg) scale(1.15)}
.vca-stars{
  width:104px;height:19px;flex:none;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20.8 19'%3E%3Cpath fill='%23f5b301' d='M10.4 1l2.6 5.9 6.4.6-4.8 4.3 1.4 6.3-5.6-3.3-5.6 3.3 1.4-6.3L1.4 7.5l6.4-.6z'/%3E%3C/svg%3E") left center/20.8px 19px repeat-x;
  clip-path:inset(0 100% 0 0);transition:clip-path 1s linear .6s
}
.vca-visible .vca-stars,html:not(.vca-js) .vca-stars{clip-path:none}
.vca-auto .testi-dot.active{background:color-mix(in srgb,var(--accent) 24%,var(--bord))}
.vca-auto .testi-dot.active::after{
  content:'';position:absolute;inset:0;background:var(--accent);transform-origin:left;
  animation:vcaDotFill var(--vca-review-duration,7s) linear forwards
}
.vca-auto .testi-dot{position:relative;overflow:hidden}
.vca-auto.vca-hold .testi-dot.active::after{animation-play-state:paused}
@keyframes vcaDotFill{from{transform:scaleX(0)}to{transform:scaleX(1)}}

/* Radar des zones, structure reprise de Nemelec et couleurs Vermeersch. */
.vca-zone{
  position:relative;overflow:hidden;isolation:isolate;--accent-texte:var(--vca-light);
  box-shadow:inset 0 -1px 0 rgba(255,159,177,.16)
}
.vca-zone::before{
  content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:
    radial-gradient(640px circle at 16% 62%,rgba(200,16,46,.4),transparent 70%),
    radial-gradient(520px circle at 92% 8%,rgba(255,90,118,.16),transparent 70%)
}
.vca-zone .vca-zone-intro{
  font-size:16px;line-height:1.65;color:rgba(255,255,255,.86)
}
.vca-zone-grid{display:grid;grid-template-columns:minmax(0,420px) minmax(0,1fr);gap:56px;align-items:center}
.vca-radar{position:relative;width:100%;max-width:420px;aspect-ratio:1;margin:0 auto}
.vca-radar svg{display:block;width:100%;height:100%;overflow:visible}
.vca-radar circle{fill:none;stroke:var(--vca-light);stroke-width:1.6}
.vca-radar circle.vca-ring{stroke-dasharray:1;stroke-dashoffset:0;transition:stroke-dashoffset 1.6s var(--vca-ease)}
.vca-radar circle.vca-ring-1{transition-delay:.2s}
.vca-radar circle.vca-ring-2{transition-delay:.5s;opacity:.7}
.vca-radar circle.vca-ring-3{transition-delay:.8s;opacity:.45}
.vca-radar circle.vca-radar-pulse{
  stroke-width:1.4;transform-box:fill-box;transform-origin:center;opacity:0;
  animation:vcaRadar 4.8s ease-out 1.6s infinite
}
@keyframes vcaRadar{0%{transform:scale(1);opacity:.55}100%{transform:scale(2.24);opacity:0}}
.vca-zone-hidden .vca-radar circle.vca-ring{stroke-dashoffset:1}
.vca-radar-center{
  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(--vca-spring) 1.1s
}
.vca-zone-hidden .vca-radar-center{opacity:0;transform:translate(-50%,-50%) scale(.5)}
.vca-radar-center b{
  display:flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:50%;
  background:var(--vca-light);color:#3b0711;box-shadow:0 0 0 10px rgba(255,159,177,.2)
}
.vca-radar-center svg{
  width:27px;height:27px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round
}
.vca-city-list{display:flex;flex-wrap:wrap;gap:12px}
.vca-city{
  display:inline-flex;align-items:center;gap:8px;padding:11px 18px;border-radius:40px;
  background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.22);color:#fff;
  font-size:15px;font-weight:600;line-height:1.2;
  transition:background .3s,color .3s,transform .45s var(--vca-spring),border-color .3s,opacity .5s ease,box-shadow .3s
}
.vca-city svg{
  display:block;width:15px;height:15px;flex:none;fill:none;stroke:var(--vca-light);stroke-width:2.3;
  stroke-linecap:round;stroke-linejoin:round;transition:stroke .3s
}
.vca-city:hover,.vca-city:focus-visible{
  background:var(--vca-light);border-color:var(--vca-light);color:#3b0711;
  transform:translateY(-4px) scale(1.06)
}
.vca-city:hover svg,.vca-city:focus-visible svg{stroke:#3b0711}
.vca-city:focus-visible{outline:3px solid #fff;outline-offset:3px}
.vca-zone-hidden .vca-city{opacity:0;transform:translateY(14px) scale(.9)}
.vca-zone.vca-zone-go .vca-city{
  transition-delay:0s,0s,calc(var(--i,0)*70ms + 1.2s),0s,calc(var(--i,0)*70ms + 1.2s),0s
}

/* Responsive : aucune carte en rail horizontal à 390 px. */
@media (max-width:900px){
  .vca-zone-grid{grid-template-columns:1fr;gap:34px}
  .vca-radar{max-width:300px}
  .vca-callout{grid-template-columns:1fr}
  .vca-callout-photo{min-height:0;aspect-ratio:16/9}
}
@media (max-width:760px){
  .grille-services-accueil{
    display:grid!important;grid-template-columns:1fr!important;overflow:visible!important;gap:18px!important;
    padding:0!important;margin:0!important;scroll-snap-type:none!important
  }
  .grille-services-accueil>div{flex:auto!important;min-width:0!important}
}
@media (max-width:640px){
  .vca-about-photo::before{inset:10px -8px -10px 8px}
  .vca-callout-copy{padding:34px 24px!important}
  .vca-radar{max-width:230px}
  .vca-radar-center{font-size:14px}
  .vca-radar-center b{width:46px;height:46px;box-shadow:0 0 0 8px rgba(255,159,177,.2)}
  .vca-radar-center svg{width:22px;height:22px}
  .vca-city-list{gap:10px}
  .vca-city{padding:10px 15px;font-size:14px}
  .vca-reviews::before{width:96px;height:96px;top:22px;right:14px}
}
@media (max-width:480px){
  .vca-title>span:first-child::before{display:none}
  .vca-pourquoi .grille-cartes{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:12px}
  .vca-pourquoi .hv09{padding:18px 14px!important;gap:10px!important;border-radius:20px!important}
  .vca-pourquoi .hv09>span:first-of-type{width:44px!important;height:44px!important}
  .vca-pourquoi .hv09 h3{font-size:17px!important}
  .vca-pourquoi .hv09 p{font-size:13.5px!important;line-height:1.5!important}
}

/* Mouvement réduit : toutes les animations propriétaires sont neutralisées. */
@media (prefers-reduced-motion:reduce){
  [data-reveal]{transition:none!important;filter:none!important}
  .vca-in,.vca-sequence.vca-before>*{opacity:1!important;transform:none!important;transition:none!important}
  .vca-tilt::after,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}
  .vca-pourquoi::after,.vca-terrain *,.vca-pourquoi .hv09>span:first-of-type::after,.vca-callout-photo img{animation:none!important}
  .vca-pourquoi .hv09>i.vca-edge{transform:scaleX(1)!important;transition:none!important}
  .vca-title>span:first-child::before{transform:scaleX(1)!important;transition:none!important}
  .vca-title h2::after{width:72px!important;transition:none!important}
  .vca-stars{clip-path:none!important;transition:none!important}
  .vca-about-photo [data-vca-diapo]>img{transform:none!important;transition:none!important}
  .vca-diapo-dots{display:none!important}
  .vca-radar circle,.vca-radar-center,.vca-city{transition:none!important}
  .vca-radar circle.vca-radar-pulse{animation:none!important;opacity:0}
  .vca-zone-hidden .vca-radar circle.vca-ring{stroke-dashoffset:0!important}
  .vca-zone-hidden .vca-radar-center{opacity:1!important;transform:translate(-50%,-50%)!important}
  .vca-zone-hidden .vca-city{opacity:1!important;transform:none!important}
  .vca-about-photo::before{opacity:.35!important;transform:none!important;transition:none!important}
}
