/* ==========================================================================
   MAGDAE — Cabinet de gestion de patrimoine
   Feuille de style globale
   ========================================================================== */

:root{
  /* Palette — direction "Clair patrimonial impactant"
     L'or patrimonial remplace l'orange pour un accent plus institutionnel,
     intemporel, et davantage en accord avec les codes de la banque privée. */
  --cream:        #F4FAFD;        /* fond principal, blanc bleuté */
  --cream-soft:   #EDF6FB;        /* surfaces secondaires */
  --cream-deep:   #DDEAF2;        /* nuances froides, séparateurs */
  --navy:         #0A1B33;        /* encre principale, plus profonde */
  --navy-soft:    #16335F;        /* navy adouci */
  --navy-dark:    #050E1E;        /* footer, contrastes profonds */
  --ink:          #03081A;        /* noir absolu retenu pour les titres maximaux */
  --ambre:        #B08D57;        /* accent or — remplace l'orange */
  --ambre-soft:   #C9A66B;        /* or clair */
  --silver:       #AEB8C2;        /* pictos et micro-accents argentés */
  --bordeaux:     #5C1E2C;        /* accent rare, signatures et emphases */
  --warm-gray:    #6F6A5C;        /* texte secondaire, plus sourd */
  --filet:        rgba(10, 27, 51, 0.10);
  --filet-soft:   rgba(10, 27, 51, 0.06);

  /* Typographie */
  --sans:         'DM Sans', -apple-system, BlinkMacSystemFont, 'Helvetica Neue', Arial, sans-serif;
  --serif:        'Cormorant Garamond', Georgia, 'Times New Roman', serif;

  /* Mesures */
  --max:          1320px;
  --gutter:       clamp(24px, 5vw, 72px);
  --sec-pad:      clamp(96px, 14vh, 160px);
  --home-sec-pad: clamp(72px, 8vw, 96px);

  /* Animation */
  --ease:         cubic-bezier(0.2, 0.7, 0.2, 1);
  --ease-out:     cubic-bezier(0.16, 1, 0.3, 1);
}

/* ==========================================================================
   Base
   ========================================================================== */

*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
[id]{scroll-margin-top:112px}
body{
  font-family:var(--sans);
  background:var(--cream);
  color:var(--navy);
  font-size:16px;
  line-height:1.65;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
body::before{
  content:'';
  position:fixed;
  inset:0;
  z-index:9999;
  pointer-events:none;
  background:var(--cream);
  opacity:0;
  transform:translateY(16px);
  transition:opacity .38s var(--ease), transform .38s var(--ease);
}
body.is-leaving::before{
  opacity:1;
  transform:translateY(0);
}
a{color:inherit;text-decoration:none}
img,svg{display:block;max-width:100%}
button{font-family:inherit;cursor:pointer;border:0;background:none;color:inherit}
a:focus-visible,
button:focus-visible,
[role="button"]:focus-visible{
  outline:2px solid rgba(176, 141, 87, 0.62);
  outline-offset:4px;
}

/* Verrouillage du scroll tant que le preloader est actif */
body:not(.is-revealed){overflow:hidden}

/* ==========================================================================
   Preloader — ouverture typographique façon Atrium
   ========================================================================== */

.preloader{
  position:fixed;inset:0;
  z-index:10000;
  background:#0E1B2C;
  display:flex;align-items:center;justify-content:center;
  transition:opacity .8s var(--ease), visibility .8s;
}
.preloader.is-hidden{
  opacity:0;
  visibility:hidden;
  pointer-events:none;
}
.preloader-lockup{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:clamp(24px, 3.4vh, 34px);
}
.preloader-mark{
  width:clamp(92px, 9vw, 124px);
  transition:transform .22s var(--ease-out);
}
.preloader-mark:hover{
  transform:translateY(-2px);
}
.preloader-mark svg{
  width:100%;
  height:auto;
  overflow:visible;
}
.preloader-mark #rearPanel,
.preloader-mark #leftBridgePanel,
.preloader-mark #frontPanel,
.preloader-mark #sidePanel,
.preloader-mark #orangePanel{
  opacity:0;
  transform:
    translate(var(--panel-x, 0), var(--panel-y, 0))
    scale(var(--panel-scale, 1));
  transform-box:fill-box;
  transform-origin:center;
  will-change:transform, opacity;
  animation:preloaderPanelAssemble .56s var(--ease-out) forwards;
}
.preloader-mark #rearPanel{
  --panel-y:-14px;
  animation-delay:.04s;
}
.preloader-mark #leftBridgePanel{
  --panel-x:-14px;
  --panel-y:-2px;
  animation-delay:.14s;
}
.preloader-mark #frontPanel{
  --panel-x:-10px;
  --panel-y:8px;
  animation-delay:.24s;
}
.preloader-mark #sidePanel{
  --panel-x:8px;
  --panel-y:-28px;
  animation-duration:.76s;
  animation-delay:.04s;
  animation-timing-function:cubic-bezier(.4, 0, .2, 1);
}
.preloader-mark #orangePanel{
  --panel-y:14px;
  --panel-scale:.86;
  animation-delay:.58s;
}
.preloader-logo{
  font-family:var(--serif);
  color:#F6F2EA;
  font-size:clamp(2rem, 3.2vw, 2.8rem);
  font-weight:500;
  letter-spacing:.4em;
  text-transform:uppercase;
  display:inline-flex;
  overflow:hidden;
  padding-left:.4em;
}
.preloader-logo span{
  display:inline-block;
  opacity:0;
  transform:translateY(100%);
  animation:fadeUpLetter .7s var(--ease) forwards;
}
.preloader-logo span:nth-child(1){animation-delay:.12s}
.preloader-logo span:nth-child(2){animation-delay:.20s}
.preloader-logo span:nth-child(3){animation-delay:.28s}
.preloader-logo span:nth-child(4){animation-delay:.36s}
.preloader-logo span:nth-child(5){animation-delay:.44s}
.preloader-logo span:nth-child(6){animation-delay:.52s}
@keyframes fadeUpLetter{to{opacity:1;transform:translateY(0)}}
@keyframes preloaderPanelAssemble{
  to{
    opacity:1;
    transform:translate(0, 0) scale(1);
  }
}

@media (prefers-reduced-motion: reduce){
  .preloader{transition:opacity .3s linear}
  .preloader-mark{transition:none}
  .preloader-mark #rearPanel,
  .preloader-mark #leftBridgePanel,
  .preloader-mark #frontPanel,
  .preloader-mark #sidePanel,
  .preloader-mark #orangePanel{
    animation:none !important;
    opacity:1 !important;
    transform:none !important;
  }
  .preloader-logo span{animation:none !important;opacity:1 !important;transform:none !important}
}

h1,h2,h3,h4{
  color:var(--navy);
  font-weight:400;
  letter-spacing:-0.025em;
  line-height:1.12;
}
h1{font-size:clamp(48px, 6vw, 88px);font-weight:300}
h2{font-size:clamp(34px, 4.2vw, 58px);font-weight:300}
h3{font-size:clamp(22px, 2vw, 28px);font-weight:400}
h4{font-size:clamp(17px, 1.4vw, 20px);font-weight:500;letter-spacing:-0.01em}

p{color:var(--navy);max-width:62ch}
.muted{color:var(--warm-gray)}

.container{max-width:var(--max);margin:0 auto;padding:0 var(--gutter)}

.eyebrow{
  display:inline-flex;align-items:center;gap:14px;
  font-size:11px;font-weight:500;
  letter-spacing:.3em;text-transform:uppercase;
  color:var(--ambre);
}
.eyebrow::before{
  content:'';display:block;
  width:28px;height:1px;background:var(--ambre);
}

/* ==========================================================================
   Header / Navigation
   ========================================================================== */

.site-header{
  position:fixed;top:0;left:0;right:0;
  z-index:100;
  transition:background .45s var(--ease), border-color .45s var(--ease);
  border-bottom:1px solid transparent;
  opacity:0;
  transform:translateY(-12px);
}
body.is-revealed .site-header{
  animation:headerIn 1s var(--ease-out) .1s forwards;
}
@keyframes headerIn{to{opacity:1;transform:translateY(0)}}

/* Top utility bar — coordonnées + langue */
.site-utility{
  background:var(--navy-dark);
  color:rgba(244, 250, 253, 0.78);
  font-size:12px;
  letter-spacing:.06em;
  padding:9px 0;
  border-bottom:1px solid rgba(244,250,253,0.08);
  transition:max-height .45s var(--ease), opacity .35s var(--ease), padding .45s var(--ease);
  max-height:48px;overflow:hidden;
}
.site-header.is-scrolled .site-utility{
  max-height:0;opacity:0;padding-top:0;padding-bottom:0;border-bottom-color:transparent;
}
.utility-inner{
  display:flex;justify-content:space-between;align-items:center;gap:24px;
  flex-wrap:wrap;
}
.utility-left,.utility-right{
  display:flex;gap:24px;align-items:center;
  flex-wrap:wrap;
}
.utility-item{
  display:inline-flex;align-items:center;gap:8px;
  color:rgba(244, 250, 253, 0.78);
  transition:color .3s var(--ease);
}
.utility-item:hover{color:var(--ambre-soft)}
.utility-icon{
  width:15px;height:15px;
  color:var(--silver);
  display:inline-flex;
  align-items:center;
  justify-content:center;
  flex-shrink:0;
}
.utility-icon svg{
  width:15px;height:15px;
  stroke:currentColor;
  fill:none;
  stroke-width:1.55;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.utility-social-link{
  width:18px;
  height:18px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  color:rgba(244, 250, 253, 0.84);
  background:rgba(174, 184, 194, 0.16);
  border-radius:3px;
  transition:color .3s var(--ease), background .3s var(--ease), transform .3s var(--ease);
}
.utility-social-link:hover{
  color:var(--ambre-soft);
  background:rgba(176, 141, 87, 0.12);
  transform:translateY(-1px);
}
.utility-social-link svg{
  width:14px;
  height:14px;
  stroke:currentColor;
  fill:none;
  stroke-width:1.65;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.utility-social-link--linkedin{
  font-size:12px;
  line-height:18px;
  font-weight:600;
  letter-spacing:0;
}
.utility-social-link--instagram svg{
  width:18px;
  height:18px;
}
.utility-divider{
  width:1px;height:12px;
  background:rgba(244,250,253,0.18);
}
/* Barre principale */
.site-header-main{
  padding:22px 0;
  transition:padding .45s var(--ease);
}
.site-header.is-scrolled{
  background:rgba(244, 250, 253, 0.92);
  backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
  border-bottom-color:var(--filet);
}
.site-header.is-scrolled .site-header-main{padding:14px 0}
.header-inner{
  display:grid;
  grid-template-columns:1fr auto 1fr;
  align-items:center;
  gap:32px;
}
.brand{
  display:flex;align-items:center;gap:14px;
  font-weight:500;font-size:15px;
  letter-spacing:.28em;text-transform:uppercase;
  color:var(--navy);
  transition:color .45s var(--ease);
}
.brand-mark{
  width:30px;height:auto;
  flex-shrink:0;
  object-fit:contain;
}
.site-header .brand-mark{
  transform-origin:center;
  transition:transform .18s ease-out, filter .18s ease-out;
}
.site-header .brand:hover .brand-mark,
.site-header .brand:focus-visible .brand-mark{
  transform:translateY(-2px) scale(1.04);
  filter:brightness(1.08);
}
.home-page .site-header .brand-mark{
  width:44px;
  height:auto;
}

.nav-list{
  display:flex;gap:clamp(22px, 2.4vw, 34px);list-style:none;
  font-size:14px;font-weight:400;letter-spacing:.04em;
  justify-self:center;
}
.nav-link{
  position:relative;color:var(--navy);
  padding:6px 0;
  transition:color .35s var(--ease);
}
.nav-link::after{
  content:'';
  position:absolute;left:0;bottom:0;
  width:0;height:1px;
  background:var(--ambre);
  transition:width .4s var(--ease);
}
.nav-link:hover{color:var(--ambre)}
.nav-link:hover::after,
.nav-link.is-current::after{width:100%}
.nav-link.is-current{color:var(--ambre)}

/* CTA header désactivé à la demande.
.header-cta{
  display:inline-flex;align-items:center;gap:10px;
  justify-self:end;
  width:max-content;
  padding:11px 22px;
  font-size:13px;letter-spacing:.08em;text-transform:uppercase;
  border:1px solid var(--navy);
  color:var(--navy);
  transition:background .4s var(--ease), color .4s var(--ease), border-color .4s var(--ease);
}
.header-cta:hover{background:var(--navy);color:var(--cream)}
*/

.nav-toggle{display:none}

.cta-actions{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:16px;
  flex-wrap:wrap;
}
.cta-actions--left{
  justify-content:flex-start;
}

/* ==========================================================================
   Hero — page de garde plein cadre, fond animé
   ========================================================================== */

.hero{
  position:relative;
  height:100vh;
  min-height:100svh;
  max-height:none;
  padding:clamp(190px, 22vh, 240px) 0 clamp(82px, 12vh, 132px);
  display:flex;align-items:flex-start;
  background:var(--cream);
  overflow:hidden;
  isolation:isolate;
}
.hero-bg{
  position:absolute;inset:0;z-index:-2;
  overflow:hidden;
}
.hero-cover-image{
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center center;
  filter:saturate(.82) contrast(.96) brightness(1.05);
  transform:scale(1.01);
}
.hero-bg::after{
  content:'';
  position:absolute;inset:0;
  background:
    linear-gradient(90deg, rgba(225,241,249,0.14) 0%, rgba(225,241,249,0.055) 34%, rgba(225,241,249,0) 64%),
    linear-gradient(180deg, rgba(225,241,249,0.055) 0%, rgba(225,241,249,0) 48%, rgba(10,27,51,0.08) 100%);
}
.hero-content{
  position:relative;z-index:2;
  display:block;
}
.hero-copy{
  max-width:620px;
  padding-top:0;
  margin:0 auto;
  text-align:center;
}

/* Titre — révélation par lignes (mask) */
.hero-title{
  margin-top:0;
  font-size:clamp(52px, 5.2vw, 76px);
  font-weight:300;
  color:var(--navy);
  letter-spacing:-0.018em;
  line-height:1.13;
}
.hero-title .line{
  display:block;
  overflow:hidden;
  padding-bottom:.16em;
}
.hero-title .line-in{
  display:inline-block;
  transform:translateY(115%);
  animation:lineUp 1.05s var(--ease-out) forwards;
}
.hero-title .line:nth-child(1) .line-in{animation-delay:.35s}
.hero-title .line:nth-child(2) .line-in{animation-delay:.5s}
.hero-title .line:nth-child(3) .line-in{animation-delay:.65s}
.line-accent{
  position:relative;
  color:var(--navy);
}
.line-accent::after{
  content:'';
  position:absolute;
  left:0;bottom:.02em;
  width:0;height:2px;
  background:var(--ambre);
  animation:lineUnderline 1s var(--ease-out) 1.5s forwards;
}
@keyframes lineUp{to{transform:translateY(0)}}
@keyframes lineUnderline{to{width:100%}}

/* Lede + actions — fade up séquentiel */
.hero-fade{
  opacity:0;transform:translateY(18px);
  animation:fadeUp 1s var(--ease-out) 1s forwards;
}
@keyframes fadeUp{to{opacity:1;transform:translateY(0)}}

.hero-signature{
  margin:0 0 24px;
  display:flex;
  flex-wrap:wrap;
  justify-content:center;
  gap:14px 28px;
  padding:0;
  border:0;
  max-width:none;
}
.hero-signature span{
  color:rgba(10,27,51,0.62);
  font-size:11px;
  letter-spacing:.24em;
  text-transform:uppercase;
}
.hero-discover{
  position:absolute;
  z-index:3;
  left:50%;
  bottom:clamp(28px, 5vh, 46px);
  transform:translateX(-50%);
  display:inline-flex;
  flex-direction:column;
  align-items:center;
  gap:14px;
  color:var(--cream);
  font-size:11px;
  letter-spacing:.22em;
  text-transform:uppercase;
  transition:color .35s var(--ease), transform .35s var(--ease);
}
.hero-discover i{
  display:block;
  width:1px;
  height:42px;
  background:linear-gradient(to bottom, rgba(244,250,253,0.28), rgba(244,250,253,0.88));
  position:relative;
}
.hero-discover i::after{
  content:'';
  position:absolute;
  left:50%;
  bottom:0;
  width:7px;
  height:7px;
  border-right:1px solid rgba(244,250,253,0.88);
  border-bottom:1px solid rgba(244,250,253,0.88);
  transform:translateX(-50%) rotate(45deg);
}
.hero-discover:hover{
  color:var(--ambre-soft);
  transform:translateX(-50%) translateY(4px);
}
.hero-discover:hover i{
  background:linear-gradient(to bottom, rgba(201,166,107,0.18), var(--ambre-soft));
}
.hero-discover:hover i::after{border-color:var(--ambre-soft)}
body.is-revealed .hero-discover i{
  animation:discoverPulse 1.8s var(--ease-out) 1.65s infinite;
}
@keyframes discoverPulse{
  0%,100%{transform:translateY(0)}
  48%{transform:translateY(8px)}
}
/* Pause des animations du hero pendant l'affichage du preloader */
body:not(.is-revealed) .hero *,
body:not(.is-revealed) .hero-bg{
  animation-play-state:paused !important;
}

@media (max-width: 860px){
  .hero{
    height:100svh;
    min-height:100svh;
    max-height:none;
    padding:150px 0 64px;
    align-items:flex-start;
  }
  .hero-cover-image{object-position:center center}
  .hero-bg::after{
    background:
      linear-gradient(90deg, rgba(225,241,249,0.16) 0%, rgba(225,241,249,0.065) 48%, rgba(225,241,249,0) 100%),
      linear-gradient(180deg, rgba(225,241,249,0.06) 0%, rgba(225,241,249,0) 58%, rgba(10,27,51,0.08) 100%);
  }
  .hero-content > *,
  .hero-copy{
    min-width:0;
    max-width:100%;
  }
  .hero-copy{padding-top:0}
  .hero-title{font-size:clamp(42px, 11vw, 56px);line-height:1.12}
  .hero-title .line{
    display:block;
    overflow:visible;
    padding-bottom:0;
  }
  .hero-title .line::after{content:none}
  .hero-title .line-in{
    display:inline;
    transform:none;
    animation:none;
  }
  .hero-signature{gap:12px 20px;margin-bottom:20px}
  .hero-discover{bottom:22px}
  .hero-discover i{height:30px}
  /* Utility bar mobile — ne montre que l'essentiel */
  .site-utility{display:none}
  .utility-divider{display:none}
}

@media (prefers-reduced-motion: reduce){
  .hero-title .line-in,.line-accent::after,
  .hero-fade,
  .site-header,
  body.is-revealed .hero-discover i{
    animation:none !important;
  }
  .hero-title .line-in{transform:none}
  .line-accent::after{width:100%}
  .hero-fade{opacity:1;transform:translateY(0)}
  .site-header{opacity:1;transform:none}
  .site-header .brand-mark{
    transition:none;
  }
  .site-header .brand:hover .brand-mark,
  .site-header .brand:focus-visible .brand-mark{
    transform:none;
    filter:none;
  }
}

/* ==========================================================================
   Buttons
   ========================================================================== */

.btn{
  display:inline-flex;align-items:center;gap:12px;
  padding:14px 28px;
  font-size:13px;letter-spacing:.08em;text-transform:uppercase;
  font-weight:500;
  transition:transform .4s var(--ease), background .4s var(--ease), color .4s var(--ease), border-color .4s var(--ease);
  border:1px solid transparent;
  cursor:pointer;
}
.btn .arrow{
  display:inline-block;
  transition:transform .4s var(--ease);
}
.btn:hover .arrow{transform:translateX(5px)}

.btn-primary{
  background:var(--ambre);color:var(--cream);
}
.btn-primary:hover{background:var(--navy);color:var(--cream)}

.btn-outline{
  background:transparent;
  color:var(--navy);
  border-color:var(--navy);
}
.btn-outline:hover{background:var(--navy);color:var(--cream)}
.section--dark .btn-outline{
  color:var(--cream);
  border-color:rgba(247,244,236,0.72);
}
.section--dark .btn-outline:hover{
  background:var(--cream);
  color:var(--navy);
  border-color:var(--cream);
}

/* ==========================================================================
   Sections génériques
   ========================================================================== */

section{position:relative}
.section{padding:var(--sec-pad) 0}
.section--home{padding:var(--home-sec-pad) 0}
#cabinet.section--home{padding-bottom:clamp(38px, 4vw, 52px)}
#methode.section--home{padding-top:clamp(54px, 5vw, 68px)}
.section--alt{background:var(--cream-soft)}
.section--dark{background:var(--navy);color:var(--cream)}
.section--dark h1,.section--dark h2,.section--dark h3,.section--dark h4{color:var(--cream)}
.section--dark p{color:rgba(247,244,236,0.78)}
.section--dark .eyebrow{color:var(--ambre-soft)}
.section--dark .eyebrow::before{background:var(--ambre-soft)}

.section-head{
  display:grid;
  grid-template-columns:1.1fr 1fr;
  gap:64px;
  align-items:end;
  margin-bottom:80px;
}
.section-head h2{max-width:14ch}
.section-head .lede{color:var(--warm-gray);font-size:17px}
.section--home .section-head{margin-bottom:clamp(56px, 6vw, 68px)}
.section-head-copy{
  display:grid;
  gap:24px;
  align-content:end;
}
.section-head-actions{
  justify-content:flex-start;
}
.section--dark .section-head .lede{color:rgba(247,244,236,0.7)}

@media (max-width: 860px){
  .section-head{grid-template-columns:1fr;gap:32px;margin-bottom:56px}
  .section--home .section-head{margin-bottom:48px}
  #cabinet.section--home{padding-bottom:46px}
  #methode.section--home{padding-top:58px}
  .section-head-actions{justify-content:center}
}

/* ==========================================================================
   Reveal animations (au scroll)
   ========================================================================== */

.reveal{
  opacity:0;
  transform:translateY(40px);
  transition:opacity 1.1s var(--ease-out), transform 1.1s var(--ease-out);
}
.reveal.is-visible{opacity:1;transform:translateY(0)}
.reveal.delay-1{transition-delay:.1s}
.reveal.delay-2{transition-delay:.2s}
.reveal.delay-3{transition-delay:.3s}

@media (prefers-reduced-motion: reduce){
  .reveal{opacity:1;transform:none;transition:none}
}

/* ==========================================================================
   Cards / Grilles d'expertises
   ========================================================================== */

.expertises-grid{
  display:grid;
  grid-template-columns:repeat(2, 1fr);
  gap:1px;
  background:var(--filet);
  border:1px solid var(--filet);
}
.expertise-card{
  background:var(--cream);
  padding:48px 44px;
  display:flex;flex-direction:column;gap:20px;
  min-height:280px;
  position:relative;
  transition:background .5s var(--ease), transform .55s var(--ease);
}
.expertise-card::before{
  content:'';
  position:absolute;top:0;left:0;
  width:0;height:2px;
  background:var(--ambre);
  transition:width .55s var(--ease-out);
}
.expertise-card:hover{background:var(--cream-soft);transform:translateY(-3px)}
.expertise-card:hover::before{width:100%}
.expertise-card .num{
  font-size:12px;letter-spacing:.25em;
  color:var(--ambre);
  font-weight:500;
}
.expertise-card h3{font-size:24px;font-weight:400;letter-spacing:-0.015em}
.expertise-card p{color:var(--warm-gray);font-size:15px;flex:1}
.expertise-card .more{
  font-size:12px;letter-spacing:.18em;text-transform:uppercase;
  color:var(--navy);
  display:inline-flex;align-items:center;gap:8px;
  transition:gap .35s var(--ease), color .35s var(--ease);
  margin-top:8px;
}
.expertise-card:hover .more{color:var(--ambre);gap:14px}

@media (max-width: 760px){
  .expertises-grid{grid-template-columns:1fr}
  .expertise-card{padding:36px 28px;min-height:0}
}

/* ==========================================================================
   Piliers d'accompagnement
   ========================================================================== */

.stats-grid{
  display:grid;
  grid-template-columns:repeat(4, 1fr);
  gap:0;
  border-top:1px solid var(--filet);
  border-bottom:1px solid var(--filet);
}
.stat{
  padding:42px 30px;
  border-right:1px solid var(--filet);
  display:grid;
  grid-template-rows:auto 1fr;
  gap:26px;
  min-height:230px;
  transition:background .45s var(--ease), transform .45s var(--ease);
}
.stat:last-child{border-right:none}
.stat:hover{
  background:rgba(249,245,235,0.58);
  transform:translateY(-2px);
}
.stat-icon{
  width:52px;
  height:52px;
  color:var(--ambre);
  display:flex;
  align-items:center;
  justify-content:center;
}
.stat-icon svg{
  width:52px;
  height:52px;
  stroke:currentColor;
  fill:none;
  stroke-width:1.6;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.stat-copy{
  display:flex;
  flex-direction:column;
  gap:13px;
  justify-content:end;
}
.stat .value{
  font-size:clamp(24px, 2.2vw, 32px);
  font-weight:400;
  color:var(--navy);
  letter-spacing:0;
  line-height:1.08;
  overflow-wrap:anywhere;
}
.stat .value .unit{
  font-size:.45em;
  color:var(--ambre);
  margin-left:4px;
  font-weight:400;
}
.stat .label{
  font-size:12px;
  letter-spacing:.16em;
  text-transform:uppercase;
  line-height:1.55;
  color:var(--warm-gray);
}
.section--dark .stat{border-right-color:rgba(247,244,236,0.12)}
.section--dark .stat .value{color:var(--cream)}
.section--dark .stat .label{color:rgba(247,244,236,0.6)}
.section--dark .stat-icon{color:var(--ambre-soft)}
.section--dark .stats-grid{
  border-top-color:rgba(247,244,236,0.12);
  border-bottom-color:rgba(247,244,236,0.12);
}

@media (max-width: 760px){
  .stats-grid{grid-template-columns:repeat(2, 1fr)}
  .stat{padding:32px 22px;border-bottom:1px solid var(--filet);min-height:210px}
  .stat:nth-child(2n){border-right:none}
  .stat:nth-last-child(-n+2){border-bottom:none}
  .section--dark .stat{border-bottom-color:rgba(247,244,236,0.12)}
}
@media (max-width: 520px){
  .stats-grid{grid-template-columns:1fr}
  .stat{min-height:0;border-right:none}
  .stat:nth-last-child(-n+2){border-bottom:1px solid var(--filet)}
  .stat:last-child{border-bottom:none}
}

/* ==========================================================================
   Méthode — parcours conseil et accompagnement
   ========================================================================== */

.section--method{
  --method-route-start:#8A743F;
  --method-route-middle:var(--ambre);
  --method-route-end:var(--ambre-soft);
  background:
    linear-gradient(180deg, #F4FAFD 0%, #EDF6FB 56%, #E2EEF5 100%);
}
.section--method .eyebrow{color:var(--ambre)}
.section--method h2{color:var(--navy)}
.section--method p{color:rgba(10,27,51,0.70)}
.method-route{
  position:relative;
  min-height:500px;
  margin-top:12px;
  border-top:1px solid rgba(10,27,51,0.10);
  border-bottom:1px solid rgba(10,27,51,0.10);
  background:
    radial-gradient(ellipse at 26% 50%, rgba(255,255,255,0.56), transparent 34%);
  overflow:visible;
}
.method-route-svg{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  overflow:visible;
}
.method-route-line,
.method-route-glow{
  stroke-linecap:round;
  stroke-linejoin:round;
}
.method-route-line,
.method-route-glow{
  fill:none;
}
.method-route-stop--start{stop-color:var(--method-route-start)}
.method-route-stop--middle{stop-color:var(--method-route-middle)}
.method-route-stop--end{stop-color:var(--method-route-end)}
/*
  Ruban du cycle : largeur proche du diamètre des modules, sans halo additionnel.
  Le SVG reste un ensemble de chemins Bézier strokés. Les deux extrémités de
  la liaison 1 → 6 sont retirées par des demi-plans SVG tournés au même angle :
  méthode native, biseaux parallèles, aucune pièce ajoutée au-dessus.
  Le glow reste sur le chemin principal uniquement pour éviter un liseré clair
  sur les deux bords coupés.
  Le deuxième chemin est une lumière très lente et peu opaque dans le ruban :
  elle donne de la vie au cycle sans créer d'effet de balayage trop visible.
*/
.method-route-line{
  stroke:url(#routeLine);
  stroke-width:50;
  filter:drop-shadow(0 7px 14px rgba(42,76,103,0.14));
}
.method-route-glow{
  stroke:url(#routeGlow);
  stroke-width:48;
  stroke-dasharray:120 1380;
  opacity:.62;
  animation:methodRouteGlow 10s linear infinite;
}
.method-svg-zone{
  fill:rgba(10,27,51,0.22);
  font-family:var(--font-sans);
  font-size:30px;
  font-weight:400;
  letter-spacing:.12em;
  text-transform:uppercase;
}
.method-svg-point circle{
  fill:#F9F7EF;
  stroke:rgba(176,141,87,0.58);
  stroke-width:1;
  filter:drop-shadow(0 10px 18px rgba(42,76,103,0.16));
}
.method-svg-point text{
  fill:var(--navy);
  font-family:var(--font-sans);
  font-size:15px;
  font-weight:600;
  pointer-events:none;
}
.method-svg-point,
.method-svg-label{
  cursor:pointer;
  outline:none;
  -webkit-tap-highlight-color:rgba(176,141,87,0.18);
}
.method-svg-point circle{
  transition:fill .28s var(--ease), stroke .28s var(--ease), transform .28s var(--ease);
  transform-box:fill-box;
  transform-origin:center;
}
.method-svg-point:hover circle,
.method-svg-point:focus-visible circle,
.method-svg-point.is-active circle{
  fill:var(--ambre);
  stroke:rgba(176,141,87,0.78);
  transform:scale(1.08);
}
.method-svg-point:hover text,
.method-svg-point:focus-visible text,
.method-svg-point.is-active text{
  fill:var(--cream);
}
.method-svg-point:focus,
.method-svg-label:focus,
.method-svg-point:focus-visible{
  outline:none;
}
.method-svg-label div{
  transition:color .28s var(--ease);
}
.method-svg-label div{
  display:flex;
  align-items:center;
  justify-content:center;
  height:100%;
  color:var(--navy);
  font-family:var(--font-sans);
  font-size:17px;
  font-weight:400;
  line-height:1.25;
  text-align:center;
  text-wrap:balance;
}
.method-svg-label.is-active div{color:var(--ambre)}
.method-svg-label--top div{align-items:flex-end}
.method-svg-label--bottom div{align-items:flex-start}
.method-svg-label--outside-left div{justify-content:flex-end;text-align:right}
.method-svg-label--outside-right div{justify-content:flex-start;text-align:left}
@keyframes methodRouteGlow{
  from{stroke-dashoffset:520}
  to{stroke-dashoffset:-980}
}
@media (prefers-reduced-motion: reduce){
  .method-route-glow{animation:none;opacity:.22}
}
.method-route-list{
  display:none;
  list-style:none;
}
.method-route-list > li{
  list-style:none;
  min-width:0;
}
.method-point{
  position:absolute;
  z-index:3;
  width:0;
  height:0;
  padding:0;
  border:0;
  background:transparent;
  color:inherit;
  font:inherit;
  text-align:left;
}
.method-dot{
  position:absolute;
  left:0;
  top:0;
  transform:translate(-50%, -50%);
  width:46px;height:46px;
  display:flex;align-items:center;justify-content:center;
  border-radius:50%;
  background:#F9F7EF;
  color:var(--navy);
  border:1px solid rgba(176,141,87,0.58);
  box-shadow:0 10px 24px rgba(42,76,103,0.16);
  font-size:15px;
  font-weight:600;
}
.method-point{
  cursor:pointer;
  outline:none;
  -webkit-tap-highlight-color:rgba(176,141,87,0.18);
}
.method-point.is-active .method-dot{
  background:var(--ambre);
  color:var(--cream);
  border-color:rgba(176,141,87,0.72);
}
.method-point.is-active .method-label{color:var(--ambre)}
.method-label{
  position:absolute;
  width:clamp(150px, 15vw, 190px);
  max-width:calc(100vw - 56px);
  color:var(--navy);
  font-size:clamp(15px, 1.15vw, 18px);
  line-height:1.28;
  font-weight:400;
  text-wrap:balance;
}
.method-point--1{
  top:20.2%;
  left:28.3%;
}
.method-point--1 .method-label{left:50%;bottom:38px;transform:translateX(-50%);text-align:center}
.method-point--2{
  top:50%;
  left:12.1%;
}
.method-point--2 .method-label{left:42px;top:-58px;text-align:left;width:170px}
.method-point--3{
  top:79.8%;
  left:28.3%;
}
.method-point--3 .method-label{left:50%;top:38px;transform:translateX(-50%);text-align:center}
.method-point--4{
  top:20.2%;
  left:71.7%;
}
.method-point--4 .method-label{left:50%;bottom:38px;transform:translateX(-50%);text-align:center}
.method-point--5{
  top:50%;
  left:87.9%;
}
.method-point--5 .method-label{right:42px;top:-58px;text-align:right;width:170px}
.method-point--6{
  top:79.8%;
  left:71.7%;
}
.method-point--6 .method-label{left:50%;top:38px;transform:translateX(-50%);text-align:center}
.method-detail{
  display:grid;
  grid-template-columns:minmax(72px, .22fr) 1fr;
  gap:clamp(20px, 4vw, 48px);
  align-items:start;
  margin-top:24px;
  padding:22px 0 0;
  color:var(--navy);
}
.method-detail.is-changing{
  opacity:.45;
  transform:translateY(6px);
}
.method-detail-number{
  color:rgba(176,141,87,0.84);
  font-family:var(--font-serif);
  font-size:clamp(48px, 7vw, 82px);
  line-height:.88;
  letter-spacing:0;
}
.method-detail-copy{
  max-width:760px;
}
.method-detail-copy h3{
  margin:0 0 14px;
  color:var(--navy);
  font-size:clamp(24px, 3vw, 36px);
  font-weight:400;
  line-height:1.1;
}
.method-detail-copy ul{
  display:grid;
  gap:10px;
  margin:0;
  padding:0;
  list-style:none;
}
.method-detail-copy li{
  position:relative;
  padding-left:22px;
  color:rgba(10,27,51,0.72);
  font-size:17px;
  line-height:1.55;
}
.method-detail-copy li::before{
  content:"";
  position:absolute;
  left:0;
  top:.72em;
  width:7px;
  height:7px;
  border-radius:50%;
  background:var(--ambre);
}

@media (min-width: 901px){
  #methode.section--home{
    padding-top:clamp(38px, 4vh, 52px);
    padding-bottom:clamp(42px, 5vh, 58px);
  }
  #methode .section-head{
    margin-bottom:clamp(24px, 3vh, 34px);
  }
  #methode .method-route{
    min-height:clamp(380px, 43vh, 440px);
    margin-top:0;
  }
  #methode .method-detail{
    margin-top:14px;
    padding-top:12px;
    gap:clamp(16px, 2.4vw, 34px);
  }
  #methode .method-detail-number{
    font-size:clamp(42px, 5vw, 64px);
  }
  #methode .method-detail-copy h3{
    margin-bottom:8px;
    font-size:clamp(22px, 2.4vw, 30px);
  }
  #methode .method-detail-copy ul{
    gap:6px;
  }
  #methode .method-detail-copy li{
    font-size:16px;
    line-height:1.38;
  }
}

@media (max-width: 1020px){
  .method-route{min-height:540px}
  .method-svg-zone{font-size:24px}
  .method-svg-label div{font-size:15px}
  .method-label{width:160px}
  .method-dot{width:42px;height:42px;font-size:14px}
  .method-point--2 .method-label{left:34px;width:150px}
  .method-point--5 .method-label{right:34px;width:150px}
  #methode .method-route{min-height:clamp(380px, 43vh, 440px)}
}
@media (max-width: 900px){
  #methode .method-route,
  .method-route{
    min-height:0;
    padding:26px 0;
    background:transparent;
  }
  .method-route-svg{display:none}
  .method-route-list{
    position:relative;
    width:auto;
    height:auto;
    margin:0;
    padding:0;
    overflow:visible;
    clip:auto;
    clip-path:none;
    white-space:normal;
    border:0;
    display:grid;
    grid-template-columns:repeat(2, minmax(0, 1fr));
    grid-auto-rows:1fr;
    gap:10px;
  }
  .method-route-list > li{
    display:flex;
    min-width:0;
  }
  .method-route-list::after{
    content:'';
    position:absolute;
    left:16px;
    top:16px;
    bottom:16px;
    width:1px;
    background:linear-gradient(to bottom, transparent, rgba(176,141,87,0.34), transparent);
  }
  .method-point,
  .method-point--1,
  .method-point--2,
  .method-point--3,
  .method-point--4,
  .method-point--5,
  .method-point--6{
    position:relative;
    inset:auto;
    width:100%;
    height:100%;
    max-width:none;
    display:flex;
    align-items:center;
    gap:10px;
    min-height:78px;
    padding:10px 12px;
    border:1px solid rgba(10,27,51,0.10);
    background:rgba(255,255,255,0.42);
    z-index:1;
    transition:background .25s var(--ease), border-color .25s var(--ease), box-shadow .25s var(--ease);
  }
  .method-point.is-active,
  .method-point:focus-visible{
    border-color:rgba(176,141,87,0.42);
    background:rgba(176,141,87,0.10);
    box-shadow:0 10px 22px rgba(42,76,103,0.08);
  }
  .method-dot,
  .method-label{
    position:static;
    transform:none;
  }
  .method-label,
  .method-point--1 .method-label,
  .method-point--2 .method-label,
  .method-point--3 .method-label,
  .method-point--4 .method-label,
  .method-point--5 .method-label,
  .method-point--6 .method-label{
    width:auto;
    text-align:left;
  }
  .method-dot{
    flex:0 0 auto;
    width:34px;
    height:34px;
    font-size:13px;
  }
  .method-label{
    min-width:0;
    max-width:100%;
    flex:1 1 auto;
    overflow-wrap:break-word;
    font-size:14px;
    line-height:1.25;
  }
  .method-route-list .method-label,
  .method-route-list .method-point--1 .method-label,
  .method-route-list .method-point--2 .method-label,
  .method-route-list .method-point--3 .method-label,
  .method-route-list .method-point--4 .method-label,
  .method-route-list .method-point--5 .method-label,
  .method-route-list .method-point--6 .method-label{
    position:static;
    inset:auto;
    transform:none;
    text-align:left;
  }
  .method-detail{
    grid-template-columns:1fr;
    gap:12px;
    margin-top:18px;
    padding-top:0;
  }
  .method-detail-number{font-size:42px}
  .method-detail-copy h3{font-size:26px}
}
@media (max-width: 520px){
  .method-route-list{grid-template-columns:1fr}
  .method-point{min-height:68px}
  .method-detail-copy li{font-size:16px}
}

/* ==========================================================================
   Cycle de vie patrimonial — grille métiers, âges et trajectoire dorée
   ========================================================================== */

.lifecycle{position:relative}
.lifecycle-grid{
  display:grid;
  grid-template-columns:132px repeat(3, minmax(0, 1fr));
  grid-template-rows:repeat(3, minmax(156px, auto)) 46px;
  background:var(--cream-soft);
  gap:0;
  border:1px solid var(--filet);
  position:relative;
  overflow:hidden;
  box-shadow:0 24px 60px rgba(10,27,51,0.07);
  isolation:isolate;
}
.lc-corner,.lc-age,.lc-axis,.lc-cell{background:var(--cream)}
.lc-corner{
  background:var(--navy);
  position:relative;
  z-index:5;
}
.lc-corner::after{
  content:'';
  position:absolute;
  right:-12px;top:0;
  width:24px;height:100%;
  background:var(--navy);
  clip-path:polygon(0 0, 100% 50%, 0 100%);
  z-index:2;
}
.lc-age{
  position:relative;
  padding:0 16px;
  font-size:11px;letter-spacing:.22em;text-transform:uppercase;
  color:rgba(244,239,227,0.86);font-weight:600;
  background:#767D85;
  text-align:center;
  display:flex;align-items:center;justify-content:center;
  z-index:5;
}
.lc-age::after{
  content:'';
  position:absolute;
  right:-14px;top:0;
  width:28px;height:100%;
  background:#767D85;
  clip-path:polygon(0 0, 100% 50%, 0 100%);
  z-index:2;
}
.lc-age:last-of-type::after{display:none}

.lc-axis{
  display:flex;align-items:center;justify-content:center;
  padding:24px 8px;
  background:var(--navy);
  min-height:156px;
  position:relative;
  z-index:5;
}
.lc-axis::after{
  content:'';
  position:absolute;
  right:-12px;top:0;
  width:24px;height:100%;
  background:var(--navy);
  clip-path:polygon(0 0, 100% 50%, 0 100%);
  z-index:2;
}
.lc-axis span{
  writing-mode:vertical-rl;
  transform:rotate(180deg);
  font-size:11px;letter-spacing:.34em;text-transform:uppercase;
  color:var(--cream);font-weight:700;
}

.lc-cell{
  padding:28px clamp(22px, 2.6vw, 34px);
  display:flex;flex-direction:column;gap:14px;
  font-size:14px;
  line-height:1.55;
  position:relative;
  background:rgba(244,250,253,0.52);
  border-left:1px solid var(--filet);
  border-bottom:1px solid var(--filet);
}
.lc-cell:nth-child(4n+2),
.lc-cell:nth-child(4n+4){
  background:rgba(237,246,251,0.68);
}
.lc-cell--top{justify-content:flex-start}
.lc-cell--middle{justify-content:center}
.lc-cell--bottom{justify-content:flex-end}
.lc-cell span{
  position:relative;
  align-self:flex-start;
  padding:2px 0 2px 18px;
  color:var(--navy);
  z-index:6;
}
.lc-cell span::before{
  content:'';position:absolute;left:0;top:9px;
  width:5px;height:5px;
  background:var(--ambre);
  transform:rotate(45deg);
}

/* Courbe dorée — overlay sur les 3x3 cellules de contenu */
.lifecycle-curve{
  position:absolute;
  left:132px;
  top:0;
  width:calc(100% - 132px);
  height:calc(100% - 46px);
  pointer-events:none;
  z-index:4;
  overflow:visible;
}
.lc-path{
  stroke-dasharray:1300;
  stroke-dashoffset:1300;
  opacity:.92;
  filter:drop-shadow(0 3px 6px rgba(10,27,51,0.14));
}
.lifecycle.is-visible .lc-path{
  animation:lcDraw 2.4s var(--ease-out) .35s forwards;
}
@keyframes lcDraw{
  to{stroke-dashoffset:0}
}

.lc-beam{
  stroke-dasharray:48 1300;
  stroke-dashoffset:0;
  opacity:0;
  filter:drop-shadow(0 0 7px rgba(255,246,226,0.85));
}
.lifecycle.is-visible .lc-beam{
  opacity:1;
  animation:lcBeam 10s linear 2.7s infinite;
}
@keyframes lcBeam{
  from{stroke-dashoffset:0}
  to  {stroke-dashoffset:-1355}
}

@media (max-width: 860px){
  .lifecycle-grid{
    grid-template-columns:1fr;
    grid-template-rows:none;
    box-shadow:none;
  }
  .lc-corner,.lc-age{display:none}
  .lc-axis{
    min-height:0;
    padding:18px 24px;
    justify-content:flex-start;
    border-top:none;
    border-bottom:1px solid rgba(244,239,227,0.18);
    background:var(--navy);
  }
  .lc-axis::after{display:none}
  .lc-axis span{
    writing-mode:horizontal-tb;transform:none;
    text-align:left;
  }
  .lc-cell{
    border-left:none;
    padding:22px 24px;
    background:var(--cream-soft);
  }
  .lc-cell::before{
    content:attr(data-age);
    display:block;
    font-size:10px;letter-spacing:.3em;text-transform:uppercase;
    color:var(--warm-gray);
    margin-bottom:10px;
  }
  .lifecycle-curve{display:none}
}

@media (prefers-reduced-motion: reduce){
  .lc-path{stroke-dashoffset:0;animation:none}
  .lc-beam{display:none}
}

/* ==========================================================================
   Bloc "À propos / cabinet" — split image + texte
   ========================================================================== */

.split{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:80px;
  align-items:center;
}

.split-media{
  position:relative;
  aspect-ratio:4/5;
  overflow:hidden;
  background:var(--cream-deep);
}
.split-media img{
  width:100%;height:100%;
  object-fit:cover;
}
.split-media .accent-square{
  position:absolute;
  bottom:-18px;right:-18px;
  width:80px;height:80px;
  background:var(--ambre);
  z-index:1;
}

.split-text h2{margin-bottom:24px}
.split-text p{margin-bottom:16px;color:var(--navy);font-size:17px}
.split-text p.muted{color:var(--warm-gray);font-size:15px}
.split-text .signature{
  margin-top:36px;
  font-size:14px;
  color:var(--warm-gray);
}
.split-text .signature strong{
  display:block;color:var(--navy);font-weight:500;font-size:16px;letter-spacing:-0.005em;
}

@media (max-width: 860px){
  .split{grid-template-columns:1fr;gap:48px}
  .split-media{aspect-ratio:4/3}
}

/* ==========================================================================
   Équipe
   ========================================================================== */

.section--team{
  background:
    linear-gradient(180deg, var(--cream) 0%, var(--cream-soft) 100%);
}
.team-head{margin-bottom:54px}
.team-overview{
  display:grid;
  grid-template-columns:minmax(0, 1.25fr) minmax(260px, .58fr);
  grid-template-rows:auto auto;
  gap:28px;
  align-items:stretch;
  margin-bottom:clamp(54px, 7vw, 88px);
}
.team-overview--home{margin-bottom:clamp(34px, 5vw, 54px)}
.team-wide-photo{
  grid-row:1 / span 2;
  min-height:420px;
  overflow:hidden;
  background:var(--cream-deep);
  border:1px solid var(--filet);
}
.team-detail-photo{
  min-height:210px;
  overflow:hidden;
  background:var(--cream-deep);
  border:1px solid var(--filet);
}
.team-wide-photo img,
.team-detail-photo img{
  width:100%;
  height:100%;
  object-fit:cover;
}
.team-wide-photo img{object-position:center 34%}
.team-overview-text{
  padding:34px;
  background:rgba(244,250,253,0.78);
  border:1px solid var(--filet);
  display:flex;
  flex-direction:column;
  justify-content:center;
}
.team-overview-text p{
  font-size:16px;
  color:var(--navy);
}
.team-overview-text p + p{margin-top:14px}
.team-link-card{
  margin-top:28px;
  display:inline-flex;
  align-items:center;
  gap:14px;
  color:var(--navy);
  font-size:13px;
  font-weight:500;
  letter-spacing:.12em;
  text-transform:uppercase;
}
.team-link-arrow{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  color:var(--ambre);
  transition:transform .35s var(--ease);
}
.team-link-card:hover .team-link-arrow{
  transform:translateX(5px);
}
.team-roster{
  display:grid;
  grid-template-columns:repeat(3, 1fr);
  border-top:1px solid var(--filet);
  border-left:1px solid var(--filet);
  background:rgba(244,250,253,0.44);
}
.team-roster-item{
  min-height:118px;
  padding:28px;
  border-right:1px solid var(--filet);
  border-bottom:1px solid var(--filet);
  display:flex;
  flex-direction:column;
  justify-content:center;
  gap:8px;
  transition:background .35s var(--ease), transform .35s var(--ease);
}
.team-roster-item:hover{
  background:rgba(244,250,253,0.78);
  transform:translateY(-2px);
}

.team-grid{
  display:grid;
  grid-template-columns:repeat(3, 1fr);
  gap:48px;
}
.team-grid--home{
  gap:clamp(28px, 4vw, 46px);
  align-items:start;
}
.team-card{
  display:flex;
  flex-direction:column;
  gap:18px;
}
.team-grid--home .team-card{
  background:rgba(244,250,253,0.56);
  border:1px solid var(--filet);
}
.team-grid--home .team-photo{
  aspect-ratio:2/3;
}
.team-grid--home .team-photo img{
  object-position:center top;
}
.team-photo{
  aspect-ratio:3/4;
  background:var(--cream-deep);
  position:relative;overflow:hidden;
}
.team-photo img{
  width:100%;height:100%;
  object-fit:cover;
  transition:transform 1.2s var(--ease);
}
.team-card:hover .team-photo img{transform:scale(1.04)}
.team-card-body{
  padding:0 0 4px;
}
.team-grid--home .team-card-body{
  padding:0 24px 26px;
}
.team-name{
  font-size:18px;font-weight:500;color:var(--navy);
  letter-spacing:-0.01em;
}
.team-role{
  font-size:13px;letter-spacing:.12em;text-transform:uppercase;
  color:var(--ambre);
}
.team-bio{
  font-size:14px;color:var(--warm-gray);line-height:1.6;
}
.team-page-hero{
  padding:clamp(136px, 17vh, 164px) 0 clamp(54px, 7vh, 76px);
}
.team-hero-grid{
  display:grid;
  grid-template-columns:minmax(0, .92fr) minmax(360px, 1.08fr);
  gap:clamp(42px, 6vw, 82px);
  align-items:end;
}
.team-hero-copy h1{
  max-width:12ch;
}
.team-hero-media{
  margin:0;
  display:flex;
  justify-content:center;
  overflow:visible;
}
.team-hero-media img{
  width:100%;
  max-width:100%;
  height:auto;
  max-height:clamp(260px, 48svh, 500px);
  object-fit:contain;
}
.team-hero-profile-intro{
  margin-top:0;
}
.page-hero .team-hero-profile-intro h1{
  margin-top:16px;
  margin-bottom:22px;
  font-size:clamp(28px, 3vw, 42px);
  max-width:18ch;
}
.team-hero-profile-intro p{
  color:var(--warm-gray);
  font-size:16px;
  line-height:1.68;
}
.team-hero-cta{
  margin-top:24px;
}
.team-profiles-section{
  padding:clamp(64px, 9vh, 98px) 0;
}
.team-page-intro{
  display:grid;
  grid-template-columns:minmax(0, .95fr) minmax(0, 1.25fr);
  gap:clamp(42px, 7vw, 96px);
  align-items:start;
  margin-bottom:clamp(38px, 5vw, 58px);
}
.team-page-intro h2{max-width:12ch}
.team-page-intro p{
  font-size:17px;
  color:var(--warm-gray);
}
.team-profile-group{
  display:grid;
  grid-template-columns:repeat(2, minmax(0, 1fr));
  gap:clamp(24px, 2.6vw, 34px);
  margin-top:clamp(34px, 4vw, 48px);
}
.team-profiles-section .team-profile-group:first-child{margin-top:0}
.team-profile-group--founders{
  grid-template-columns:repeat(2, minmax(0, 1fr));
}
.team-profile{
  display:grid;
  grid-template-columns:minmax(170px, 210px) minmax(0, 1fr);
  min-height:0;
  background:rgba(244,250,253,0.64);
  border:1px solid var(--filet);
  overflow:hidden;
}
.team-profile .team-photo{
  width:100%;
  height:100%;
  min-height:0;
  aspect-ratio:auto;
}
.team-profile .team-photo img{
  object-position:center top;
}
.team-linkedin-mark{
  position:absolute;
  right:0;
  bottom:0;
  z-index:2;
  width:34px;
  height:34px;
  display:block;
  color:var(--ambre);
  pointer-events:auto;
  cursor:pointer;
}
.team-linkedin-mark svg{
  width:100%;
  height:100%;
}
.team-linkedin-mark rect{
  fill:currentColor;
}
.team-linkedin-mark path{
  fill:#fff;
}
.team-profile-body{
  padding:clamp(24px, 3vw, 34px);
  display:flex;
  flex-direction:column;
  justify-content:flex-start;
  gap:14px;
}
.team-profile-body .team-role{margin-bottom:-8px}
.team-profile-body .team-name{
  font-size:clamp(22px, 2vw, 30px);
  font-weight:400;
}
.team-profile-body .team-bio{
  font-size:15px;
  line-height:1.64;
}
@media (max-width: 860px){
  .team-hero-grid{
    grid-template-columns:1fr;
    gap:clamp(28px, 8vw, 42px);
  }
  .team-page-hero{
    padding:112px 0 54px;
  }
  .team-hero-copy h1,
  .page-hero .team-hero-profile-intro h1{
    max-width:min(100%, 720px);
    margin-inline:auto;
  }
  .team-hero-profile-intro{
    max-width:min(100%, 720px);
    margin-inline:auto;
  }
  .team-hero-media img{max-height:clamp(220px, 38svh, 340px)}
  .team-overview{
    grid-template-columns:1fr;
    grid-template-rows:none;
    gap:18px;
  }
  .team-wide-photo,
  .team-detail-photo{
    min-height:0;
    aspect-ratio:4/3;
  }
  .team-overview-text{padding:28px}
  .team-grid{grid-template-columns:repeat(2, 1fr);gap:32px}
  .team-roster{grid-template-columns:1fr 1fr}
  .team-page-intro{
    grid-template-columns:1fr;
  }
  .team-profile-group,
  .team-profile-group--founders{
    grid-template-columns:1fr;
  }
  .team-profile{
    grid-template-columns:minmax(150px, 190px) minmax(0, 1fr);
  }
}
@media (max-width: 540px){
  .team-grid{grid-template-columns:1fr}
  .team-grid--home .team-card-body{padding:0 22px 24px}
  .team-linkedin-mark{
    width:44px;
    height:44px;
    display:flex;
    align-items:flex-end;
    justify-content:flex-end;
  }
  .team-linkedin-mark svg{
    width:34px;
    height:34px;
  }
  .team-roster{grid-template-columns:1fr}
  .team-roster-item{min-height:104px;padding:24px}
  .team-profile-group,
  .team-profile-group--founders{
    grid-template-columns:1fr;
  }
  .team-profile{
    grid-template-columns:1fr;
  }
  .team-profile .team-photo{
    height:auto;
    aspect-ratio:4/5;
    max-height:420px;
  }
  .team-profile .team-photo img{
    height:100%;
    object-fit:cover;
  }
  .team-profile-body{
    padding:24px;
  }
}

/* ==========================================================================
   Bandeau valeurs
   ========================================================================== */

.values-grid{
  display:grid;
  grid-template-columns:repeat(3, 1fr);
  gap:0;
}
.value-item{
  padding:48px 36px;
  border-right:1px solid var(--filet);
}
.value-item:last-child{border-right:none}
.value-item .accent{
  width:32px;height:2px;
  background:var(--ambre);
  margin-bottom:24px;
}
.value-item h4{font-size:20px;margin-bottom:14px;font-weight:500;letter-spacing:-0.01em}
.value-item p{color:var(--warm-gray);font-size:15px}
.section--dark .value-item{border-right-color:rgba(247,244,236,0.12)}

@media (max-width: 860px){
  .values-grid{grid-template-columns:1fr}
  .value-item{border-right:none;border-bottom:1px solid var(--filet);padding:36px 0}
  .value-item:last-child{border-bottom:none}
  .section--dark .value-item{border-bottom-color:rgba(247,244,236,0.12)}
}

/* ==========================================================================
   Détail expertises (page expertises.html)
   ========================================================================== */

.expertise-detail{
  display:grid;
  grid-template-columns:200px 1fr;
  gap:64px;
  padding:64px 0;
  border-bottom:1px solid var(--filet);
}
.expertise-detail:last-child{border-bottom:none}
.expertise-detail-num{
  font-size:48px;font-weight:300;color:var(--ambre);
  letter-spacing:-0.03em;
  line-height:1;
}
.expertise-detail h3{
  font-size:32px;font-weight:400;
  margin-bottom:18px;
  letter-spacing:-0.02em;
}
.expertise-detail .lede{
  font-size:18px;color:var(--navy);
  margin-bottom:24px;
  max-width:60ch;
}
.expertise-detail ul{
  list-style:none;
  display:grid;grid-template-columns:repeat(2, 1fr);gap:14px 32px;
  padding-top:24px;border-top:1px solid var(--filet);
}
.expertise-detail ul li{
  position:relative;
  padding-left:18px;
  font-size:15px;color:var(--warm-gray);
}
.expertise-detail ul li::before{
  content:'';
  position:absolute;left:0;top:9px;
  width:6px;height:6px;
  background:var(--ambre);
}

@media (max-width: 760px){
  .expertise-detail{grid-template-columns:1fr;gap:24px;padding:48px 0}
  .expertise-detail-num{font-size:36px}
  .expertise-detail ul{grid-template-columns:1fr;gap:10px}
}

/* ==========================================================================
   Cas clients
   ========================================================================== */

.section--client-cases{
  background:linear-gradient(180deg, var(--cream) 0%, var(--cream-soft) 100%);
  /*
    Section calibrée pour tenir dans un écran standard :
    titre compact, carousel stable, navigation visible et carte assez haute pour
    éviter le scroll interne des textes sur desktop.
  */
  min-height:calc(100svh - 88px);
  display:flex;
  align-items:center;
  padding-top:clamp(32px, 4vw, 50px);
  padding-bottom:clamp(28px, 3.6vw, 46px);
}
.section--client-cases .container{
  width:100%;
}
.section--client-cases .section-head{
  margin-bottom:clamp(24px, 3vw, 34px);
}
.section--client-cases .section-head h2{
  max-width:14ch;
}
.case-study-profile{
  color:var(--ambre);
  font-size:12px;
  font-weight:500;
  letter-spacing:.2em;
  text-transform:uppercase;
}
.cases-carousel{
  margin-top:0;
}
.cases-card-frame{
  position:relative;
}
.cases-carousel-head{
  padding-bottom:24px;
}
.cases-carousel-head h2{
  margin-top:16px;
  font-size:clamp(30px, 3.4vw, 44px);
}
.case-carousel-button{
  position:absolute;
  z-index:4;
  top:50%;
  width:42px;
  height:42px;
  border:0;
  color:var(--navy);
  display:inline-flex;
  align-items:center;
  justify-content:center;
  font-size:24px;
  line-height:1;
  opacity:.72;
  transition:color .3s var(--ease), opacity .3s var(--ease), transform .3s var(--ease);
}
.case-carousel-button--prev{
  left:clamp(10px, 1.8vw, 24px);
  transform:translateY(-50%);
}
.case-carousel-button--next{
  right:clamp(10px, 1.8vw, 24px);
  transform:translateY(-50%);
}
.case-carousel-button:hover{
  color:var(--ambre);
  opacity:1;
}
.case-carousel-button--prev:hover{
  transform:translateY(-50%) translateX(-3px);
}
.case-carousel-button--next:hover{
  transform:translateY(-50%) translateX(3px);
}
.cases-track{
  /*
    Hauteur utile de la carte : on réserve l'espace du libellé de section et
    des indicateurs. La hauteur est fixe sur desktop pour que les rectangles
    de position restent dans le viewport quand l'utilisateur arrive par l'ancre.
  */
  --case-card-height:clamp(440px, calc(100svh - 318px), 560px);
  display:flex;
  overflow-x:auto;
  scroll-snap-type:x mandatory;
  scroll-behavior:smooth;
  scrollbar-width:none;
  -webkit-overflow-scrolling:touch;
  background:rgba(244,250,253,0.72);
  border:1px solid rgba(10,27,51,0.10);
  box-shadow:0 22px 58px rgba(10,27,51,0.07);
  backdrop-filter:blur(10px);
}
.cases-track::-webkit-scrollbar{display:none}
.case-study{
  flex:0 0 100%;
  scroll-snap-align:start;
  height:var(--case-card-height);
  max-height:var(--case-card-height);
  display:grid;
  grid-template-columns:minmax(180px, 260px) minmax(0, 1fr);
  gap:clamp(24px, 3.4vw, 48px);
  padding:clamp(24px, 3.2vw, 36px) clamp(56px, 7vw, 88px);
  border-bottom:0;
}
.case-study-index{
  color:rgba(176,141,87,0.86);
  font-family:var(--sans);
  font-weight:300;
  font-size:clamp(44px, 6vw, 72px);
  line-height:.9;
}
.case-study-meta{
  display:grid;
  align-content:start;
  gap:16px;
}
.case-study-body{
  max-width:860px;
  min-height:0;
  overflow:visible;
  padding-right:0;
}
.case-study-body h2{
  margin-bottom:14px;
  font-size:clamp(24px, 2.6vw, 36px);
  line-height:1.08;
  letter-spacing:-0.02em;
}
.case-study-body p{
  color:var(--warm-gray);
  font-size:15px;
  line-height:1.56;
}
.case-study-body p + p{margin-top:12px}
.case-carousel-bar{
  display:block;
  padding-top:clamp(12px, 1.6vw, 18px);
}
.case-carousel-status{
  display:inline-grid;
  justify-items:start;
  gap:10px;
}
.case-carousel-count{
  color:var(--ambre);
  font-size:12px;
  font-weight:500;
  letter-spacing:.22em;
}
.case-carousel-dots{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  padding-top:0;
}
.case-carousel-dot{
  width:34px;
  height:3px;
  background:rgba(10,27,51,0.18);
  transition:background .3s var(--ease), width .3s var(--ease);
}
.case-carousel-dot.is-active{
  width:54px;
  background:var(--ambre);
}
@media (max-width: 860px){
  .section--client-cases{
    min-height:auto;
    align-items:stretch;
    padding-top:58px;
    padding-bottom:58px;
  }
  .section--client-cases .section-head{
    margin-bottom:20px;
    text-align:left;
  }
  .section--client-cases .section-head h2,
  .section--client-cases .section-head .lede{
    margin-inline:0;
  }
  .cases-card-frame{
    margin-inline:calc(var(--gutter) * -0.25);
  }
  .cases-track{
    --case-card-height:auto;
    border-left:0;
    border-right:0;
  }
  .case-study{
    grid-template-columns:1fr;
    gap:20px;
    min-height:auto;
    padding:28px clamp(44px, 11vw, 64px);
  }
  .case-study-meta{
    grid-template-columns:auto 1fr;
    align-items:end;
    gap:14px;
  }
  .case-study-body{
    max-height:none;
    overflow:visible;
    padding-right:0;
  }
  .case-study-body h2{
    font-size:clamp(24px, 7vw, 32px);
  }
  .case-study-body p{
    font-size:15px;
    line-height:1.58;
  }
  .case-carousel-button{
    width:44px;
    height:44px;
    top:50%;
    font-size:26px;
  }
  .case-carousel-button--prev{left:2px}
  .case-carousel-button--next{right:2px}
  .case-carousel-bar{
    padding-top:16px;
  }
}
@media (max-width: 540px){
  .cases-card-frame{
    margin-inline:calc(var(--gutter) * -0.5);
  }
  .case-study{
    padding:26px 42px 28px;
  }
  .case-carousel-status{
    grid-column:auto;
    grid-row:auto;
    gap:9px;
  }
  .case-carousel-button{
    width:38px;
    font-size:24px;
  }
  .case-study-meta{grid-template-columns:1fr}
  .case-study-index{
    font-size:44px;
  }
  .case-study-profile{
    font-size:11px;
    line-height:1.55;
  }
  .case-carousel-dot{
    width:28px;
  }
  .case-carousel-dot.is-active{
    width:44px;
  }
}

/* ==========================================================================
   Page contact
   ========================================================================== */

.contact-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:80px;
}
.contact-info h2{margin-bottom:24px}
.contact-info p{color:var(--warm-gray);margin-bottom:36px}

.contact-coord{
  display:flex;flex-direction:column;gap:28px;
  margin-top:36px;
  padding-top:36px;
  border-top:1px solid var(--filet);
}
.coord-item .label{
  font-size:11px;letter-spacing:.3em;text-transform:uppercase;
  color:var(--ambre);margin-bottom:8px;
}
.coord-item .value{font-size:16px;color:var(--navy);line-height:1.5}
.coord-item a{color:var(--navy);transition:color .3s var(--ease)}
.coord-item a:hover{color:var(--ambre)}

.contact-form{
  background:var(--cream-soft);
  padding:48px 44px;
  border:1px solid var(--filet);
}
.contact-form > .eyebrow{
  display:inline-flex;
  margin-bottom:14px;
}
.contact-form h3{
  font-size:22px;margin-bottom:32px;font-weight:500;letter-spacing:-0.01em;
}
.form-privacy-note{
  font-size:12px;
  margin-top:16px;
  line-height:1.5;
}
.field{margin-bottom:24px;position:relative}
.field label{
  display:block;
  font-size:12px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--warm-gray);
  margin-bottom:8px;
}
.label-note{
  color:rgba(98,101,105,0.62);
  font-weight:400;
  letter-spacing:.14em;
}
.field input,.field textarea,.field select{
  width:100%;
  background:transparent;
  border:0;border-bottom:1px solid var(--filet);
  padding:10px 0;
  color:var(--navy);
  font-family:inherit;font-size:15px;
  transition:border-color .3s var(--ease);
}
.field.is-invalid label{color:#9f3f32}
.field.is-invalid input,
.field.is-invalid textarea,
.field.is-invalid select{
  border-bottom-color:#9f3f32;
}
.field-error{
  display:none;
  margin-top:8px;
  color:#9f3f32;
  font-size:13px;
  line-height:1.45;
}
.field.is-invalid .field-error{display:block}
.field select{
  appearance:none;
  -webkit-appearance:none;
  padding-right:28px;
  background-image:
    linear-gradient(45deg, transparent 50%, var(--ambre) 50%),
    linear-gradient(135deg, var(--ambre) 50%, transparent 50%);
  background-position:
    calc(100% - 12px) 50%,
    calc(100% - 7px) 50%;
  background-size:5px 5px, 5px 5px;
  background-repeat:no-repeat;
}
.field input:focus,.field textarea:focus,.field select:focus{
  outline:none;border-color:var(--ambre);
}
.field.is-invalid input:focus,
.field.is-invalid textarea:focus,
.field.is-invalid select:focus{
  border-color:#9f3f32;
}
.field textarea{resize:vertical;min-height:120px}
.field--trap{
  position:absolute;
  left:-9999px;
  width:1px;
  height:1px;
  overflow:hidden;
}
.contact-form .btn{margin-top:8px;width:100%;justify-content:center}
.contact-form .btn[disabled]{
  cursor:wait;
  opacity:.72;
}
.form-separator{
  display:flex;
  align-items:center;
  gap:14px;
  margin:18px 0 10px;
  color:rgba(98,101,105,0.64);
  font-size:11px;
  letter-spacing:.22em;
  text-transform:uppercase;
}
.form-separator::before,
.form-separator::after{
  content:'';
  flex:1;
  height:1px;
  background:var(--filet);
}
.form-feedback{
  min-height:22px;
  margin-top:16px;
  color:var(--warm-gray);
  font-size:14px;
  line-height:1.5;
}
.form-feedback.is-success{color:#2f6b4f}
.form-feedback.is-error{color:#9f3f32}

@media (max-width: 860px){
  .contact-grid{grid-template-columns:1fr;gap:48px}
  .contact-form{padding:36px 28px}
}

/* ==========================================================================
   Footer
   ========================================================================== */

.site-footer{
  background:var(--navy-dark);
  color:rgba(247,244,236,0.72);
  padding:96px 0 36px;
  font-size:14px;
}
.footer-grid{
  display:grid;
  grid-template-columns:2fr 1fr 1fr 1fr;
  gap:48px;
  margin-bottom:64px;
}
.footer-brand{
  display:flex;align-items:center;gap:14px;
  margin-bottom:24px;
  color:var(--cream);
  font-size:15px;letter-spacing:.28em;text-transform:uppercase;font-weight:500;
}
.footer-tagline{
  color:rgba(247,244,236,0.6);
  font-size:14px;max-width:280px;line-height:1.6;
}
.footer-tagline a{color:rgba(247,244,236,0.6);transition:color .3s var(--ease)}
.footer-tagline a:hover{color:var(--ambre)}
.footer-socials{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:12px;
  margin-top:22px;
}
.footer-social-link{
  display:inline-flex;
  align-items:center;
  gap:10px;
  margin-top:0;
  color:rgba(247,244,236,0.68);
  font-size:12px;
  letter-spacing:.16em;
  transition:color .3s var(--ease);
}
.footer-social-link:hover{color:var(--ambre)}
.footer-social-icon{
  width:18px;
  height:18px;
  color:var(--silver);
  display:inline-flex;
  align-items:center;
  justify-content:center;
}
.footer-social-icon svg{
  width:18px;
  height:18px;
  stroke:currentColor;
  fill:none;
  stroke-width:1.7;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.footer-social-link--compact{
  margin-top:0;
  font-size:12px;
  letter-spacing:.04em;
  text-transform:none;
}
.footer-col h5{
  font-size:11px;letter-spacing:.3em;text-transform:uppercase;
  color:var(--ambre);
  margin-bottom:20px;font-weight:500;
}
.footer-col ul{list-style:none;display:flex;flex-direction:column;gap:10px}
.footer-col a{
  color:rgba(247,244,236,0.7);
  transition:color .3s var(--ease);
}
.footer-col a:hover{color:var(--ambre)}
.footer-col address{font-style:normal;line-height:1.7}

.contact-info h2 a{transition:color .3s var(--ease)}
.contact-info h2 a:hover{color:var(--ambre)}
.page-hero-link{
  margin-top:24px;
  font-size:13px;
  letter-spacing:.12em;
  text-transform:uppercase;
}
.page-hero-link a{
  display:inline-flex;
  align-items:center;
  gap:10px;
  color:var(--ambre);
  border-bottom:1px solid rgba(176,141,87,0.38);
  transition:color .3s var(--ease), border-color .3s var(--ease);
}
.page-hero-link a:hover{
  color:var(--navy);
  border-color:var(--navy);
}
.page-hero-link-icon{
  display:inline-flex;
  width:18px;
  height:18px;
  color:currentColor;
}
.page-hero-link-icon svg{
  width:18px;
  height:18px;
  stroke:currentColor;
  fill:none;
  stroke-width:1.7;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.regulatory-title{
  margin-top:16px;
  font-size:18px;
  font-weight:500;
}
.regulatory-copy{
  margin-top:8px;
  font-size:14px;
}

.contact-cta-grid{
  display:grid;
  grid-template-columns:1.3fr 1fr;
  gap:64px;
  align-items:end;
}
.compact-contact-cta{
  padding:clamp(62px, 8vh, 88px) 0;
}
.cta-title{
  margin-top:24px;
}
.cta-copy{
  margin-bottom:32px;
}

.regulatory-grid{
  display:grid;
  grid-template-columns:repeat(3, 1fr);
  gap:48px;
}

.footer-bottom{
  display:flex;justify-content:space-between;align-items:center;
  flex-wrap:wrap;gap:16px;
  padding-top:32px;
  border-top:1px solid rgba(247,244,236,0.1);
  font-size:12px;letter-spacing:.04em;
  color:rgba(247,244,236,0.5);
}
.footer-bottom .legal{display:flex;gap:24px;flex-wrap:wrap}
.footer-bottom .legal a{color:rgba(247,244,236,0.6)}
.footer-bottom .legal a:hover{color:var(--ambre)}

@media (max-width: 860px){
  .footer-grid{grid-template-columns:1fr 1fr;gap:36px}
}
@media (max-width: 540px){
  .footer-grid{grid-template-columns:1fr}
}

/* ==========================================================================
   Page-hero (pages internes)
   ========================================================================== */

.page-hero{
  position:relative;
  padding:clamp(150px, 18vh, 172px) 0 clamp(72px, 9vh, 92px);
  overflow:hidden;
  background:var(--cream-soft);
  border-bottom:1px solid var(--filet);
}
.page-hero h1{
  font-size:clamp(40px, 5vw, 72px);
  font-weight:300;
  margin-top:24px;
  max-width:18ch;
}
.page-hero .lede{
  margin-top:24px;
  font-size:clamp(17px, 1.4vw, 20px);
  color:var(--warm-gray);
  max-width:62ch;
  font-weight:300;
}

/* ==========================================================================
   Vue d'ensemble réglementaire
   ========================================================================== */

.regulatory-section-head h2{
  margin-top:18px;
}
.regulatory-overview{
  display:grid;
  grid-template-columns:minmax(0, 1.08fr) minmax(360px, .92fr);
  gap:clamp(46px, 6vw, 84px);
  align-items:center;
}
.regulatory-diagram{
  display:grid;
  place-items:center;
  min-height:470px;
}
.regulatory-venn{
  --regulatory-circle-size:53%;
  position:relative;
  width:min(100%, 520px);
  aspect-ratio:1.12;
}
.regulatory-circle{
  position:absolute;
  width:var(--regulatory-circle-size);
  aspect-ratio:1;
  border-radius:50%;
  display:grid;
  place-items:center;
  padding:clamp(28px, 4vw, 48px);
  text-align:center;
  border:2px solid rgba(176,141,87,0.62);
  background:rgba(244,250,253,0.34);
}
.regulatory-circle--left{left:0;top:0}
.regulatory-circle--right{right:0;top:0}
.regulatory-circle--bottom{
  left:50%;
  bottom:0;
  transform:translateX(-50%);
}
.regulatory-circle p{
  max-width:18ch;
  color:var(--navy);
  font-size:clamp(14px, 1.25vw, 17px);
  font-weight:500;
  line-height:1.45;
}
.regulatory-circle span{
  display:inline-block;
  margin-top:5px;
  color:var(--warm-gray);
  font-size:.78em;
  font-weight:400;
  line-height:1.5;
}
.regulatory-logos{
  display:grid;
  grid-template-columns:repeat(2, minmax(0, 1fr));
  grid-auto-rows:1fr;
  gap:16px;
}
.regulatory-logo-card{
  min-height:150px;
  height:100%;
  padding:24px 20px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:20px;
  text-align:center;
  border:1px solid var(--filet);
  background:rgba(244,250,253,0.28);
}
.regulatory-logo-card:active{
  border-color:rgba(176,141,87,0.52);
  background:rgba(244,250,253,0.72);
}
.regulatory-logo-card:focus-visible{
  border-color:var(--ambre);
}
.regulatory-logo-card img{
  width:auto;
  height:64px;
  max-width:100%;
  object-fit:contain;
  object-position:center;
  mix-blend-mode:multiply;
}
.regulatory-logo-card span{
  color:var(--warm-gray);
  font-size:11px;
  font-weight:500;
  line-height:1.55;
  letter-spacing:.14em;
  text-transform:uppercase;
  text-align:center;
}

@media (max-width: 1040px){
  .regulatory-overview{
    grid-template-columns:1fr;
  }
  .regulatory-diagram{
    min-height:440px;
  }
}
@media (max-width: 600px){
  .regulatory-diagram{
    min-height:330px;
  }
  .regulatory-venn{
    --regulatory-circle-size:54%;
    width:min(100%, 350px);
    aspect-ratio:1.12;
  }
  .regulatory-circle{
    width:var(--regulatory-circle-size);
    min-height:0;
    aspect-ratio:1;
    border-radius:50%;
    padding:16px;
  }
  .regulatory-circle p{
    max-width:16ch;
    font-size:12px;
    line-height:1.35;
  }
  .regulatory-circle span{
    margin-top:3px;
    font-size:10px;
    line-height:1.35;
  }
  .regulatory-logos{
    gap:34px 24px;
  }
  .regulatory-logo-card{
    min-height:120px;
  }
  .regulatory-logo-card img{
    height:52px;
  }
  .regulatory-logo-card span{
    font-size:10px;
  }
}

@media (hover: hover) and (pointer: fine){
  .regulatory-logo-card:hover{
    transform:translateY(-2px);
    border-color:rgba(176,141,87,0.52);
    background:rgba(244,250,253,0.72);
  }
}

/* ==========================================================================
   Pages légales
   ========================================================================== */

.legal-layout{
  display:grid;
  grid-template-columns:minmax(220px, 300px) minmax(0, 1fr);
  gap:clamp(40px, 6vw, 90px);
  align-items:start;
}
.legal-aside{
  position:sticky;
  top:132px;
  padding-top:12px;
  border-top:1px solid var(--filet);
}
.legal-aside p{
  font-size:14px;
  color:var(--warm-gray);
}
.legal-content{
  display:grid;
  gap:34px;
}
.legal-block{
  padding-bottom:34px;
  border-bottom:1px solid var(--filet);
}
.legal-block:last-child{border-bottom:none}
.legal-block h2{
  font-size:clamp(24px, 2.2vw, 34px);
  margin-bottom:16px;
}
.legal-block h3{
  font-size:18px;
  margin:22px 0 8px;
  font-weight:500;
}
.legal-block p,
.legal-block li{
  color:var(--warm-gray);
  font-size:15px;
  line-height:1.75;
}
.legal-block ul{
  margin:14px 0 0;
  padding-left:18px;
}
.legal-block a{
  color:var(--navy);
  border-bottom:1px solid rgba(176,141,87,0.45);
}
.legal-block a:hover{color:var(--ambre)}

@media (max-width: 860px){
  .legal-layout{grid-template-columns:1fr}
  .legal-aside{position:static}
}

/* ==========================================================================
   Mobile nav
   ========================================================================== */

@media (max-width: 1040px){
  body.nav-open::after{
    content:'';
    position:fixed;
    inset:0;
    z-index:98;
    background:rgba(5,14,30,0.24);
    backdrop-filter:blur(2px);
  }
  .header-inner{
    display:flex;
    justify-content:space-between;
  }
  .nav-toggle{
    position:relative;
    z-index:101;
    display:flex;flex-direction:column;gap:5px;
    width:44px;height:44px;align-items:center;justify-content:center;
    background:transparent;border:0;
    cursor:pointer;
  }
  .nav-toggle span{
    display:block;width:22px;height:1px;
    background:var(--navy);
    transition:all .3s var(--ease);
  }
  .nav-toggle[aria-expanded="true"] span:nth-child(1){
    transform:translateY(6px) rotate(45deg);
  }
  .nav-toggle[aria-expanded="true"] span:nth-child(2){
    opacity:0;
  }
  .nav-toggle[aria-expanded="true"] span:nth-child(3){
    transform:translateY(-6px) rotate(-45deg);
  }
  .nav-list{
    position:fixed;top:0;right:-100%;
    z-index:100;
    width:80%;max-width:360px;height:100vh;
    background:var(--cream);
    flex-direction:column;
    padding:120px 40px 40px;
    gap:0;
    transition:right .5s var(--ease);
    box-shadow:-20px 0 60px rgba(14,33,67,0.15);
    border-left:1px solid var(--filet);
  }
  .nav-list.is-open{right:0}
  .nav-list li{
    border-bottom:1px solid var(--filet-soft);
  }
  .nav-link{
    display:block;
    padding:16px 0;
    font-size:19px;
  }
  .nav-link.is-current{
    color:var(--ambre);
  }
  /* CTA header désactivé à la demande.
  .header-cta{display:none}
  */
}

/* ==========================================================================
   Responsive system — structure mobile standard

   Breakpoints :
   - 860px : tablette / mobile large, passage en lecture verticale.
   - 600px : téléphone, cibles tactiles pleine largeur et espacements réduits.
   Les règles ci-dessous ne pilotent pas un appareil précis : elles laissent les
   grilles, textes et boutons s'adapter automatiquement à la largeur disponible.
   ========================================================================== */

@media (max-width: 860px){
  :root{
    --gutter:clamp(20px, 6vw, 32px);
    --sec-pad:clamp(64px, 12vw, 84px);
    --home-sec-pad:clamp(58px, 12vw, 76px);
  }

  html{scroll-padding-top:88px}
  [id]{scroll-margin-top:88px}

  h1{font-size:clamp(40px, 12vw, 58px)}
  h2{font-size:clamp(30px, 9vw, 44px)}
  h3{font-size:clamp(22px, 6vw, 28px)}
  h1,h2,h3{
    max-width:100%;
    overflow-wrap:break-word;
    text-wrap:balance;
  }
  p{max-width:none}

  .site-header-main{padding:14px 0}
  .home-page .site-header .brand-mark,
  .brand-mark{
    width:30px;
    height:auto;
  }
  .brand{
    gap:10px;
    font-size:13px;
    letter-spacing:.22em;
  }

  .nav-list{
    width:min(88vw, 360px);
    height:100dvh;
    padding:104px clamp(24px, 7vw, 36px) 36px;
    gap:18px;
  }
  .nav-link{
    display:block;
    padding:8px 0;
    font-size:18px;
  }

  .hero{
    height:auto;
    min-height:min(100svh, 760px);
    padding:clamp(118px, 20svh, 150px) 0 clamp(76px, 12svh, 104px);
    align-items:center;
  }
  .hero-copy{
    margin-inline:auto;
    text-align:center;
  }
  .hero-title{
    max-width:min(100%, 11em);
    margin-inline:auto;
    font-size:clamp(40px, 12vw, 58px);
  }
  .hero-signature{
    justify-content:center;
    gap:8px 16px;
  }
  .hero-signature span{
    font-size:11px;
    letter-spacing:.2em;
  }
  .hero-discover{
    left:50%;
    transform:translateX(-50%);
  }

  .section-head{
    gap:22px;
    margin-bottom:42px;
    text-align:center;
  }
  .section-head h2,
  .section-head .lede{
    max-width:min(100%, 680px);
    margin-inline:auto;
  }
  .section-head .lede{
    font-size:16px;
    line-height:1.7;
  }

  .contact-cta-grid,
  .regulatory-grid{
    grid-template-columns:1fr;
    gap:30px;
  }
  .contact-cta-grid{
    text-align:center;
  }
  .contact-cta-grid p{
    margin-inline:auto;
  }
  .contact-cta-grid .cta-actions{
    justify-content:center;
  }

  .method-route-list{
    grid-template-columns:repeat(2, minmax(0, 1fr));
    grid-auto-rows:1fr;
  }
  .method-detail{
    text-align:left;
  }

  .page-hero{
    padding:118px 0 56px;
    text-align:center;
  }
  .page-hero h1,
  .page-hero .lede{
    max-width:min(100%, 720px);
    margin-inline:auto;
  }
  .page-hero h1{margin-top:18px}
  .page-hero .lede{
    font-size:16px;
    line-height:1.7;
  }

  .expertise-card,
  .contact-form,
  .team-overview-text{
    padding:clamp(28px, 7vw, 36px);
  }
  .contact-form h3{
    margin-bottom:26px;
  }
  .field{margin-bottom:20px}
  .field input,
  .field textarea,
  .field select{
    font-size:16px;
  }

  .footer-grid{
    margin-bottom:42px;
  }
  .footer-bottom{
    align-items:flex-start;
    flex-direction:column;
    gap:14px;
  }
  .footer-bottom .legal{
    gap:10px 18px;
  }
}

@media (max-width: 600px){
  .btn,
  .cta-actions .btn,
  .contact-cta-grid .btn{
    width:100%;
    justify-content:center;
    padding-inline:18px;
  }
  .cta-actions{
    width:100%;
    gap:12px;
  }

  .hero{
    min-height:72svh;
    padding-top:118px;
  }
  .hero-title{
    font-size:clamp(38px, 13vw, 52px);
  }

  .split-media,
  .team-wide-photo,
  .team-detail-photo{
    aspect-ratio:4/3;
  }
  .team-grid--home .team-photo{
    aspect-ratio:3/4;
  }
  .team-bio{
    font-size:14px;
    line-height:1.65;
  }

  .lifecycle-grid{
    overflow:hidden;
  }
  .lc-axis,
  .lc-cell{
    padding-left:var(--gutter);
    padding-right:var(--gutter);
  }

  .site-footer{
    padding:64px 0 30px;
  }
}

@media (max-width: 420px){
  .method-route-list{
    grid-template-columns:1fr;
  }
}

/* ==========================================================================
   Utilitaires
   ========================================================================== */

.mt-md{margin-top:32px}
.text-center{text-align:center}
.center-narrow{max-width:680px;margin-left:auto;margin-right:auto}
