/* =====================================================================
   Accueil « plus vivant » : mêmes sections, mêmes textes.
   Apparition au défilement, survols, cartes, bloc Groupe Foncia.
   Tout est désactivé si le visiteur a demandé moins d'animations.
   ===================================================================== */

/* ---------- Apparition au défilement (classe posée par vivant.js) ---------- */
.vv-js .vv{opacity:0;transform:translateY(22px);transition:opacity .7s cubic-bezier(.2,.7,.2,1),transform .7s cubic-bezier(.2,.7,.2,1);transition-delay:var(--vv-d,0s);}
.vv-js .vv.vv-in{opacity:1;transform:none;}
.vv-js .eyebrow .ln{transition:width .8s cubic-bezier(.2,.7,.2,1) .15s;}
.vv-js .vv:not(.vv-in) .eyebrow .ln,.vv-js .eyebrow.vv:not(.vv-in) .ln{width:0;}

/* ---------- Boutons : léger relief au survol ---------- */
.btn-gold,.btn-primary,.btn-ghost,.btn-secondary{transition:background .2s,color .2s,border-color .2s,transform .25s ease,box-shadow .25s ease;}
.btn-gold:hover,.btn-primary:hover,.btn-ghost:hover{transform:translateY(-2px);box-shadow:0 10px 22px rgba(12,31,63,.16);}

/* ---------- Bandeau de chiffres ---------- */
.facts .fact b{transition:color .3s;}
.facts .fact:last-child b{color:var(--or);}
.facts .fact:last-child{position:relative;}

/* ---------- Badge Foncia dans le bandeau d'accueil ---------- */
.hero-trust .vv-foncia{display:inline-flex;align-items:center;gap:.45rem;padding:.3rem .7rem;border:1px solid rgba(207,178,122,.55);border-radius:999px;color:#fff;font-weight:500;}
.hero-trust .vv-foncia::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--or-clair);}

/* ---------- Bloc Groupe Foncia ---------- */
.vv-groupe{background:#fff;border-top:1px solid var(--filet);border-bottom:1px solid var(--filet);}
.vv-groupe .wrap{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:clamp(2rem,5vw,4.5rem);align-items:center;padding-top:clamp(3.5rem,7vw,5.5rem);padding-bottom:clamp(3.5rem,7vw,5.5rem);}
.vv-groupe h2{font-size:clamp(1.9rem,3.6vw,2.7rem);line-height:1.12;margin:.6rem 0 1rem;}
.vv-groupe .dek{margin-bottom:1rem;}
.vv-groupe-card{position:relative;background:var(--nuit);color:#fff;border-radius:18px;padding:clamp(1.6rem,3vw,2.4rem);overflow:hidden;box-shadow:0 22px 44px rgba(12,31,63,.18);}
.vv-groupe-card::after{content:"";position:absolute;right:-80px;top:-80px;width:260px;height:260px;border-radius:50%;border:1px solid rgba(207,178,122,.25);box-shadow:0 0 0 40px rgba(207,178,122,.05),0 0 0 80px rgba(207,178,122,.03);pointer-events:none;}
.vv-groupe-tree{display:flex;flex-direction:column;align-items:flex-start;gap:0;margin-bottom:1.6rem;}
.vv-groupe-tree .n{display:inline-flex;flex-direction:column;gap:.15rem;padding:.8rem 1.1rem;border-radius:10px;border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.04);}
.vv-groupe-tree .n small{font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--or-clair);}
.vv-groupe-tree .n b{font-family:'Playfair Display',serif;font-weight:500;font-size:1.5rem;line-height:1.15;}
.vv-groupe-tree .n.is-gold{border-color:rgba(207,178,122,.6);background:rgba(207,178,122,.1);}
.vv-groupe-tree .link{width:1px;height:26px;margin-left:1.6rem;background:linear-gradient(var(--or-clair),rgba(207,178,122,.2));}
.vv-groupe-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.85rem;position:relative;z-index:1;}
.vv-groupe-list li{display:flex;gap:.75rem;align-items:flex-start;font-size:.95rem;line-height:1.5;color:#dfe5f0;}
.vv-groupe-list svg{flex:none;width:20px;height:20px;margin-top:1px;color:var(--or-clair);}
.vv-groupe-list b{color:#fff;font-weight:600;}
.vv-groupe .vv-more{display:inline-flex;gap:.4rem;align-items:center;font-weight:600;color:var(--nuit);text-decoration:none;border-bottom:1px solid var(--or);padding-bottom:2px;}
.vv-groupe .vv-more:hover{color:var(--or);}

/* ---------- Atouts (sous le Denormandie) : cartes avec pictogramme ---------- */
.trust-strip .trust-item{border-top:0;background:#fff;border:1px solid var(--filet);border-radius:14px;padding:1.4rem 1.4rem 1.5rem;transition:transform .3s ease,box-shadow .3s ease,border-color .3s;}
.trust-strip .trust-item:hover{transform:translateY(-4px);box-shadow:0 16px 32px rgba(12,31,63,.10);border-color:var(--filet-fort);}
.trust-strip .vv-ico{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:12px;background:var(--nuit);color:var(--or-clair);margin-bottom:1rem;}
.trust-strip .vv-ico svg{width:22px;height:22px;}

/* ---------- Carte Denormandie ---------- */
.disp-card{background:#fff;border-radius:14px;box-shadow:0 14px 30px rgba(12,31,63,.07);transition:box-shadow .3s ease;}
.disp-card:hover{box-shadow:0 18px 38px rgba(12,31,63,.12);}
.disp-row{transition:background .2s;}
.disp-row:hover{background:var(--pierre);}

/* ---------- Réalisations ---------- */
#projets .real-card{transition:transform .3s ease,box-shadow .3s ease;}
#projets .real-card:hover{transform:translateY(-4px);box-shadow:0 18px 36px rgba(12,31,63,.12);}
#projets img{transition:transform .6s ease;}
#projets .real-card:hover img{transform:scale(1.03);}

/* ---------- Équipe : portraits uniformes ---------- */
.team-card{border-radius:14px;text-align:center;padding:1.4rem 1rem 1.2rem;transition:transform .3s ease,box-shadow .3s ease;}
.team-card:hover{transform:translateY(-4px);box-shadow:0 16px 32px rgba(12,31,63,.10);}
.team-card .team-photo{width:min(160px,78%);aspect-ratio:1/1;border-radius:50%;object-fit:cover;object-position:50% 50%;margin:0 auto .9rem;display:block;box-shadow:0 0 0 4px #fff,0 0 0 5px var(--filet);}
.team-card .team-name,.team-card .team-role{padding-left:0;padding-right:0;}

/* ---------- Avis : vraies cartes ---------- */
.quotes{gap:1.4rem;}
.quote{position:relative;background:#fff;border:1px solid var(--filet);border-top:1px solid var(--filet);border-radius:14px;padding:1.5rem 1.5rem 1.4rem;transition:transform .3s ease,box-shadow .3s ease;}
.quote::before{content:"\201C";position:absolute;right:1.1rem;top:.2rem;font-family:'Playfair Display',serif;font-size:4.2rem;line-height:1;color:var(--pierre-2);pointer-events:none;}
.quote:hover{transform:translateY(-4px);box-shadow:0 16px 32px rgba(12,31,63,.10);}
.quote .stars{color:var(--or);}

/* ---------- FAQ ---------- */
.faq-item{transition:background .2s;}
.faq-q:hover{color:var(--or);}
.vv-faq-call{margin-top:1.4rem;display:inline-flex;flex-direction:column;gap:.2rem;padding:1rem 1.2rem;border:1px solid var(--filet);border-radius:12px;background:var(--pierre);}
.vv-faq-call span{font-size:.86rem;color:var(--encre-2);}
.vv-faq-call a{font-weight:600;color:var(--nuit);text-decoration:none;font-size:1.05rem;}

/* ---------- Bandeau de rappel ---------- */
.vv-cb-foncia{display:inline-flex;align-items:center;gap:.45rem;margin-top:1rem;font-size:.86rem;color:#c9d1e0;}
.vv-cb-foncia::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--or-clair);}

@media (max-width:900px){
  .vv-groupe .wrap{grid-template-columns:1fr;}
  .quotes{grid-template-columns:1fr;}
}
@media (max-width:600px){
  .team-grid,.team-layout .team-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem;}
  .team-card{padding:1rem .6rem;}
  .team-card .team-role{font-size:.8rem;}
}
@media (prefers-reduced-motion:reduce){
  .vv-js .vv{opacity:1;transform:none;transition:none;}
  .btn-gold:hover,.btn-primary:hover,.btn-ghost:hover,.trust-strip .trust-item:hover,.team-card:hover,.quote:hover,#projets .real-card:hover{transform:none;}
  #projets img{transition:none;}
}

/* =====================================================================
   2e passe : barre de lecture, menu au défilement, titres soulignés,
   carte animée, résumé des avis, retour en haut, Foncia dans le pied de page
   ===================================================================== */

/* Barre de progression de lecture */
.vv-progress{position:fixed;left:0;top:0;height:3px;width:100%;z-index:60;transform-origin:0 50%;transform:scaleX(0);background:linear-gradient(90deg,var(--or-clair),var(--or));pointer-events:none;}

/* Menu : ombre quand on défile, soulignement doré au survol */
nav.topnav{transition:box-shadow .3s ease,background-color .3s ease;}
nav.topnav.vv-scrolled{box-shadow:0 6px 24px rgba(12,31,63,.08);background:rgba(255,255,255,.94);-webkit-backdrop-filter:saturate(1.4) blur(10px);backdrop-filter:saturate(1.4) blur(10px);}
.navlinks a:not(.btn-primary){position:relative;}
.navlinks a:not(.btn-primary)::after{content:"";position:absolute;left:0;right:0;bottom:-6px;height:2px;background:var(--or);transform:scaleX(0);transform-origin:0 50%;transition:transform .3s ease;}
.navlinks a:not(.btn-primary):hover::after,.navlinks a.vv-here::after{transform:scaleX(1);}
.navlinks a.vv-here{color:var(--nuit);}

/* Mot en italique des titres : trait doré qui se dessine à l'apparition */
main > section:not(#hero) h2 em,.vv-groupe h2 em{background-image:linear-gradient(transparent 82%,rgba(207,178,122,.55) 82%,rgba(207,178,122,.55) 96%,transparent 96%);background-repeat:no-repeat;background-size:100% 100%;}
.vv-js main > section:not(#hero) .vv h2 em,.vv-js main > section:not(#hero) h2.vv em{background-size:0 100%;transition:background-size .9s cubic-bezier(.2,.7,.2,1) .35s;}
.vv-js main > section:not(#hero) .vv-in h2 em,.vv-js main > section:not(#hero) h2.vv-in em{background-size:100% 100%;}

/* Bandeau de chiffres : petit filet doré, Foncia cliquable */
.facts .fact{position:relative;}
.facts .fact::before{content:"";position:absolute;left:0;top:0;width:28px;height:2px;background:var(--or-clair);}
.facts .fact + .fact::before{left:1.2rem;}
.facts .fact a.vv-fact-link{text-decoration:none;border-bottom:1px solid var(--filet-fort);}
.facts .fact a.vv-fact-link:hover{color:var(--nuit);border-color:var(--or);}

/* Simulateur : réponses plus vivantes */
.obj-chips button{transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease,background-color .2s ease;}
.obj-chips button:hover{transform:translateX(4px);border-color:var(--or);box-shadow:0 6px 16px rgba(12,31,63,.08);}

/* Étude de cas : chiffres clés en relief */
.cs-kpi{transition:transform .3s ease,box-shadow .3s ease;}
.cs-kpi:hover{transform:translateY(-3px);box-shadow:0 12px 26px rgba(0,0,0,.25);}

/* Carte des villes : points qui apparaissent puis respirent */
.fr-map .city-dot circle{transition:r .2s ease;}
.vv-js .fr-map .city-dot{opacity:0;transition:opacity .5s ease;transition-delay:var(--vv-d,0s);}
.vv-js .fr-map.vv-map-in .city-dot{opacity:1;}
.fr-map .city-dot.zone-b1 .vv-ring{fill:none;stroke:var(--emeraude);stroke-width:1.2;opacity:0;transform-box:fill-box;transform-origin:center;}
.fr-map.vv-map-in .city-dot.zone-b1 .vv-ring{animation:vv-ring 3.2s ease-out infinite;animation-delay:var(--vv-r,0s);}
@keyframes vv-ring{0%{opacity:.55;transform:scale(1);}70%{opacity:0;transform:scale(2.8);}100%{opacity:0;transform:scale(2.8);}}
.fr-office rect{fill:var(--or);}
.city-results > *{transition:background-color .2s ease;}

/* Résumé des avis à côté du titre */
.vv-rating{display:inline-flex;align-items:center;gap:1rem;margin-top:1.2rem;padding:.9rem 1.2rem;background:#fff;border:1px solid var(--filet);border-radius:14px;box-shadow:0 10px 24px rgba(12,31,63,.06);}
.vv-rating b{font-family:'Playfair Display',serif;font-weight:500;font-size:2.2rem;line-height:1;color:var(--nuit);}
.vv-rating .st{letter-spacing:.1em;font-size:1rem;background:linear-gradient(90deg,var(--or) 90%,var(--filet-fort) 90%);-webkit-background-clip:text;background-clip:text;color:transparent;}
.vv-rating small{display:block;font-size:.82rem;color:var(--encre-3);}

/* Bouton retour en haut */
.vv-top{position:fixed;right:20px;bottom:20px;z-index:50;width:46px;height:46px;border-radius:50%;border:1px solid var(--filet-fort);background:#fff;color:var(--nuit);display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 10px 24px rgba(12,31,63,.12);opacity:0;transform:translateY(10px);pointer-events:none;transition:opacity .3s ease,transform .3s ease,background-color .2s;}
.vv-top.on{opacity:1;transform:none;pointer-events:auto;}
.vv-top:hover{background:var(--nuit);color:#fff;}
.vv-top svg{width:20px;height:20px;}
@media (max-width:900px){.vv-top{display:none;}}

/* Pied de page : Foncia */
.vv-foot-foncia{display:inline-flex;align-items:center;gap:.5rem;margin-top:.9rem;padding:.35rem .8rem;border:1px solid rgba(207,178,122,.45);border-radius:999px;color:#fff;font-size:.82rem;font-weight:500;}
.vv-foot-foncia::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--or-clair);}
footer .foot-col a{transition:color .2s ease,padding-left .2s ease;}
footer .foot-col a:hover{padding-left:4px;}

@media (prefers-reduced-motion:reduce){
  .vv-progress{display:none;}
  .fr-map .city-dot .vv-ring{display:none;}
  .obj-chips button:hover,.cs-kpi:hover{transform:none;}
  footer .foot-col a:hover{padding-left:0;}
}

/* =====================================================================
   3e passe : bandeau d'accueil avec le simulateur visible dès l'arrivée
   (remplace le bandeau animé au défilement) + les 4 étapes
   ===================================================================== */
.vv-hero{background:#060f22;}
.vv-hero .hero-stage{position:relative;overflow:hidden;min-height:0;background:radial-gradient(120% 90% at 78% 35%,#1a3566 0%,#0b1a36 55%,#060f22 100%);}
.vv-hero .hero-stage::before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;opacity:.5;background-image:linear-gradient(rgba(231,207,150,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(231,207,150,.06) 1px,transparent 1px);background-size:56px 56px;-webkit-mask-image:radial-gradient(80% 80% at 70% 40%,#000 30%,transparent 75%);mask-image:radial-gradient(80% 80% at 70% 40%,#000 30%,transparent 75%);}
.vv-hero .hero-stage::after{background:linear-gradient(90deg,rgba(4,10,24,.55) 0%,rgba(4,10,24,.15) 55%,transparent 100%);}
.vv-hero-glow{position:absolute;z-index:1;right:8%;top:10%;width:520px;height:520px;border-radius:50%;pointer-events:none;background:radial-gradient(circle,rgba(231,207,150,.16),transparent 65%);animation:vv-glow 12s ease-in-out infinite alternate;}
@keyframes vv-glow{from{transform:translate(0,0) scale(1);}to{transform:translate(-60px,40px) scale(1.12);}}
.vv-hero .v-hero{padding-block:clamp(2.2rem,5vw,4rem);align-items:center;}
.vv-hero .v-hero-copy{animation:vv-up .8s cubic-bezier(.2,.7,.2,1) both;}
.vv-hero .vv-hero-sim{animation:vv-up .8s cubic-bezier(.2,.7,.2,1) .15s both;}
@keyframes vv-up{from{opacity:0;transform:translateY(18px);}to{opacity:1;transform:none;}}
.vv-hero .obj{max-width:31rem;margin-left:auto;}
.vv-hero .hero-link{margin-top:1.4rem;}
.vv-hero .v-ticks li{font-size:.98rem;}

/* Les 4 étapes */
.vv-steps{background:#fff;}
.vv-steps .wrap{padding-top:clamp(3.5rem,7vw,5rem);padding-bottom:clamp(3.5rem,7vw,5rem);}
.vv-steps-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1.2rem;counter-reset:none;position:relative;}
.vv-steps-list::before{content:"";position:absolute;left:22px;right:22px;top:22px;height:1px;background:linear-gradient(90deg,var(--or-clair),var(--filet));z-index:0;}
.vv-steps-list li{position:relative;z-index:1;display:flex;flex-direction:column;gap:.6rem;}
.vv-steps-list .n{width:44px;height:44px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--nuit);color:var(--or-clair);font-family:'Playfair Display',serif;font-size:1.2rem;box-shadow:0 0 0 6px #fff;margin-bottom:.4rem;}
.vv-steps-list h3{font-size:1.15rem;line-height:1.25;color:var(--nuit);}
.vv-steps-list p{font-size:.95rem;line-height:1.6;color:var(--encre-2);}
.vv-js .vv-steps-list li{opacity:0;transform:translateY(18px);transition:opacity .6s ease,transform .6s ease;}
.vv-js .vv-steps-list.vv-in li{opacity:1;transform:none;}
.vv-js .vv-steps-list.vv-in li:nth-child(2){transition-delay:.12s;}
.vv-js .vv-steps-list.vv-in li:nth-child(3){transition-delay:.24s;}
.vv-js .vv-steps-list.vv-in li:nth-child(4){transition-delay:.36s;}

@media (max-width:980px){
  .vv-hero .obj{margin-left:0;max-width:none;}
  .vv-hero .hero-lead,.vv-hero .v-ticks,.vv-hero .hero-link{display:none;}
  .vv-hero h1{font-size:clamp(2rem,8vw,2.6rem);margin-bottom:.6rem;}
  .vv-hero .hero-trust{margin-top:.6rem;}
  .vv-hero .hero-trust .sep{display:none;}
  .vv-hero-glow{display:none;}
  .vv-steps-list{grid-template-columns:repeat(2,minmax(0,1fr));}
  .vv-steps-list::before{display:none;}
}
@media (max-width:560px){.vv-steps-list{grid-template-columns:1fr;}}
@media (prefers-reduced-motion:reduce){
  .vv-hero-glow,.vv-hero .v-hero-copy,.vv-hero .vv-hero-sim{animation:none;}
  .vv-js .vv-steps-list li{opacity:1;transform:none;transition:none;}
}
