:root{--r:16px;--sh:0 1px 2px rgba(10,58,99,.06),0 8px 24px rgba(10,58,99,.08);--sh-h:0 2px 4px rgba(10,58,99,.08),0 18px 44px rgba(10,58,99,.16);--grad:linear-gradient(90deg,var(--blue) 0%,var(--blue) 50%,var(--green) 100%)}
html{scroll-behavior:smooth}
::selection{background:rgba(148,189,33,.35)}

/* Barre de progression de lecture */
.fx-progress{position:fixed;top:0;left:0;height:3px;width:100%;transform-origin:0 50%;transform:scaleX(0);background:var(--grad);z-index:1000;pointer-events:none}

/* En-tête : effet verre et ombre au défilement */
.hdr{transition:box-shadow .3s,background-color .3s,backdrop-filter .3s}
.hdr.fx-scrolled{background:rgba(255,255,255,.86)!important;-webkit-backdrop-filter:saturate(1.6) blur(14px);backdrop-filter:saturate(1.6) blur(14px);box-shadow:0 10px 30px rgba(10,58,99,.10)}
.nav>a,.nav .dd>a,.nav .dd>button{position:relative}
.nav>a::after{content:"";position:absolute;left:10px;right:10px;bottom:4px;height:2px;border-radius:2px;background:var(--grad);transform:scaleX(0);transform-origin:left;transition:transform .3s}
.nav>a:hover::after{transform:scaleX(1)}

/* Boutons */
.btn{border-radius:12px!important;transition:transform .18s,box-shadow .25s,background-color .2s,color .2s!important;position:relative;overflow:hidden}
.btn:hover{transform:translateY(-2px)}
.btn.g{box-shadow:0 8px 22px rgba(148,189,33,.35)}
.btn.g::before{content:"";position:absolute;top:0;left:-60%;width:40%;height:100%;background:linear-gradient(110deg,transparent,rgba(255,255,255,.45),transparent);transform:skewX(-20deg);transition:left .6s}
.btn.g:hover::before{left:120%}

/* Héros : profondeur, trame et arc animé */
.hero{position:relative;overflow:hidden;isolation:isolate;background-image:radial-gradient(1200px 600px at 85% -10%,rgba(148,189,33,.22),transparent 60%),radial-gradient(900px 500px at -10% 110%,rgba(10,58,99,.55),transparent 60%),linear-gradient(135deg,#0C5C95 0%,#106FB1 55%,#1180c4 100%)!important}
.hero::before{content:"";position:absolute;inset:0;z-index:-1;background-image:radial-gradient(rgba(255,255,255,.14) 1px,transparent 1.2px);background-size:26px 26px;-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 60%);mask-image:linear-gradient(90deg,transparent 0,#000 60%);opacity:.6}
.hero .arc{animation:fx-float 14s ease-in-out infinite}
.hero h1{letter-spacing:-.025em;text-wrap:balance}
.hero h1,.hero .lede,.hero .acts{opacity:0;transform:translateY(18px);animation:fx-up .9s cubic-bezier(.2,.7,.2,1) forwards}
.hero .lede{animation-delay:.15s}.hero .acts{animation-delay:.3s}
.cta-band{position:relative;overflow:hidden}
.cta-band .arc{animation:fx-float 18s ease-in-out infinite reverse}

/* Cartes des quatre marques */
.brands .brand{border-radius:var(--r);background:#fff;box-shadow:var(--sh);transition:transform .3s cubic-bezier(.2,.7,.2,1),box-shadow .3s;position:relative;overflow:hidden}
.brands .brand::before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:var(--grad);transform:scaleX(0);transform-origin:left;transition:transform .4s}
.brands .brand:hover{transform:translateY(-6px);box-shadow:var(--sh-h)}
.brands .brand:hover::before{transform:scaleX(1)}
.brands .brand img{transition:transform .3s}.brands .brand:hover img{transform:scale(1.04)}

/* Chiffres clés */
.facts>div{transition:background-color .3s}
.facts>div:hover{background:var(--mist)}
.facts b{background:linear-gradient(135deg,var(--blue-ink),var(--blue) 60%,var(--green));-webkit-background-clip:text;background-clip:text;color:transparent!important;font-variant-numeric:tabular-nums}

/* Points forts, missions phares, secteurs */
.diffs>div{border-radius:12px;padding:18px 18px 16px!important;transition:background-color .3s,box-shadow .3s,transform .3s}
.diffs>div:hover{background:#fff;box-shadow:var(--sh);transform:translateY(-3px)}
.feat>a{border-radius:var(--r)!important;box-shadow:var(--sh);transition:transform .3s cubic-bezier(.2,.7,.2,1),box-shadow .3s!important}
.feat>a:hover{transform:translateY(-6px);box-shadow:var(--sh-h)}
.sects>a{transition:background-color .25s,box-shadow .25s,transform .25s;position:relative}
.sects>a::after{content:"→";position:absolute;right:18px;bottom:16px;color:var(--blue);opacity:0;transform:translateX(-6px);transition:opacity .25s,transform .25s;font-weight:800}
.sects>a:hover{background:#fff;box-shadow:var(--sh-h);transform:translateY(-3px);z-index:1}
.sects>a:hover::after{opacity:1;transform:none}

/* Veille, implantations, références */
.news>*{border-radius:var(--r);transition:transform .3s,box-shadow .3s}
.news>*:hover{transform:translateY(-4px);box-shadow:var(--sh-h)}
.offices>div{border-radius:12px;transition:transform .25s,box-shadow .25s}
.offices>div:hover{transform:translateY(-3px);box-shadow:var(--sh)}
.states span{transition:transform .2s}.states span:hover{transform:scale(1.06)}
.states span.on{animation:fx-pulse 3s ease-in-out infinite}
.clients>*{border-radius:12px;transition:transform .25s,box-shadow .25s,border-color .25s}
.clients>*:hover{transform:translateY(-3px);box-shadow:var(--sh);border-color:var(--green)!important}
.quote{position:relative}
.quote blockquote,.quote>*{transition:transform .3s,box-shadow .3s}

/* Liens d'appel : alignés à gauche, soulignement animé */
.lnk,.brand>em,.brand>i,.feat em,.feat i{text-align:left!important;text-align-last:left!important}
.lnk{background-image:var(--grad);background-size:0 2px;background-repeat:no-repeat;background-position:0 100%;transition:background-size .35s}
.lnk:hover{background-size:100% 2px}

/* Pied de page */
.ftr{position:relative}
.ftr::before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:var(--grad)}

/* Retour en haut */
.fx-top{position:fixed;left:18px;bottom:20px;width:42px;height:42px;border-radius:50%;border:0;background:var(--blue-ink);color:#fff;display:grid;place-items:center;cursor:pointer;box-shadow:0 10px 26px rgba(10,58,99,.3);opacity:0;transform:translateY(12px);pointer-events:none;transition:opacity .3s,transform .3s,background-color .2s;z-index:900}
.fx-top.on{opacity:1;transform:none;pointer-events:auto}
.fx-top:hover{background:var(--blue)}
.fx-top svg{width:20px;height:20px}

/* Apparition au défilement */
.fx-js .fx-rv{opacity:0;transform:translateY(26px);transition:opacity .8s cubic-bezier(.2,.7,.2,1),transform .8s cubic-bezier(.2,.7,.2,1);transition-delay:var(--fx-d,0s)}
.fx-js .fx-rv.fx-in{opacity:1;transform:none}

@keyframes fx-up{to{opacity:1;transform:none}}
@keyframes fx-float{0%,100%{transform:translate(0,0)}50%{transform:translate(-18px,14px)}}
@keyframes fx-pulse{0%,100%{box-shadow:0 0 0 0 rgba(148,189,33,.45)}50%{box-shadow:0 0 0 6px rgba(148,189,33,0)}}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
  .hero h1,.hero .lede,.hero .acts,.fx-js .fx-rv{opacity:1!important;transform:none!important}
  html{scroll-behavior:auto}
}
@media print{.fx-progress,.fx-top{display:none!important}.fx-js .fx-rv{opacity:1!important;transform:none!important}}