/* ==========================================================================
   E2CS Consult SUARL — Feuille de style principale
   Direction artistique : « Terrain & Rigueur »
   Vert forêt profond + ocre sahélien, serif éditoriale, photographie documentaire.
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. Jetons de design (design tokens)
   -------------------------------------------------------------------------- */
:root{
  /* Marque */
  --forest-950:#061710;
  --forest-900:#0B2A18;
  --forest-800:#0F3A21;
  --forest-700:#14502B;
  --forest-600:#1C6B39;
  --leaf-500:#2FA64F;
  --leaf-400:#57C079;
  --sage-400:#A3C57E;
  --sage-200:#CFE0B8;
  --sage-100:#E7EFD9;
  --sage-050:#F2F6EA;
  --ochre-500:#C8971A;
  --ochre-600:#A57A0D;
  --clay-500:#B4562B;

  /* Neutres chauds */
  --paper:#FAFBF6;
  --paper-2:#EFF3E8;
  --paper-3:#E1E9D8;
  --ink:#0B2318;
  --ink-2:#41544A;
  --ink-3:#72827A;

  /* Rôles — thème clair */
  --bg:var(--paper);
  --bg-alt:var(--paper-2);
  --surface:#FFFFFF;
  --surface-2:var(--sage-050);
  --text:var(--ink);
  --text-muted:var(--ink-2);
  --text-faint:var(--ink-3);
  --accent:var(--forest-700);
  --accent-soft:var(--leaf-500);
  --gold:var(--ochre-600);
  --line:rgba(11,35,24,.13);
  --line-strong:rgba(11,35,24,.22);
  --inverse-bg:var(--forest-900);
  --inverse-text:#EAF1E7;
  --shadow-sm:0 1px 2px rgba(6,23,16,.05), 0 2px 8px rgba(6,23,16,.04);
  --shadow-md:0 2px 6px rgba(6,23,16,.06), 0 14px 40px rgba(6,23,16,.09);
  --shadow-lg:0 4px 12px rgba(6,23,16,.08), 0 30px 70px rgba(6,23,16,.14);

  /* Typographie */
  --font-display:"Fraunces","Iowan Old Style","Palatino Linotype",Georgia,serif;
  --font-sans:"IBM Plex Sans","SF Pro Text",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;

  /* Rythme */
  --container:1240px;
  --container-narrow:820px;
  --gutter:clamp(20px,5vw,48px);
  --section-y:clamp(72px,10vw,132px);
  --radius:4px;
  --radius-lg:10px;
  --ease:cubic-bezier(.22,.61,.36,1);
}

@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#08170F;
    --bg-alt:#0B2016;
    --surface:#0E2A1B;
    --surface-2:#10321F;
    --text:#E8F0E6;
    --text-muted:#AFC2B4;
    --text-faint:#87998C;
    --accent:#6FCB8B;
    --accent-soft:#57C079;
    --gold:#DCB542;
    --line:rgba(220,240,225,.14);
    --line-strong:rgba(220,240,225,.26);
    --inverse-bg:#061710;
    --inverse-text:#E8F0E6;
    --shadow-sm:0 1px 2px rgba(0,0,0,.3);
    --shadow-md:0 2px 6px rgba(0,0,0,.35), 0 14px 40px rgba(0,0,0,.4);
    --shadow-lg:0 4px 12px rgba(0,0,0,.4), 0 30px 70px rgba(0,0,0,.5);
  }
}
:root[data-theme="dark"]{
  --bg:#08170F;
  --bg-alt:#0B2016;
  --surface:#0E2A1B;
  --surface-2:#10321F;
  --text:#E8F0E6;
  --text-muted:#AFC2B4;
  --text-faint:#87998C;
  --accent:#6FCB8B;
  --accent-soft:#57C079;
  --gold:#DCB542;
  --line:rgba(220,240,225,.14);
  --line-strong:rgba(220,240,225,.26);
  --inverse-bg:#061710;
  --inverse-text:#E8F0E6;
  --shadow-sm:0 1px 2px rgba(0,0,0,.3);
  --shadow-md:0 2px 6px rgba(0,0,0,.35), 0 14px 40px rgba(0,0,0,.4);
  --shadow-lg:0 4px 12px rgba(0,0,0,.4), 0 30px 70px rgba(0,0,0,.5);
}

/* --------------------------------------------------------------------------
   2. Base
   -------------------------------------------------------------------------- */
*,*::before,*::after{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;}
@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto;}}
body{
  margin:0;
  background:var(--bg);
  color:var(--text);
  font-family:var(--font-sans);
  font-size:17px;
  line-height:1.68;
  font-feature-settings:"kern","liga","calt";
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  overflow-x:hidden;
}
img,svg,video{max-width:100%;display:block;}
picture{display:contents;}
a{color:inherit;text-decoration:none;}
button{font:inherit;color:inherit;}
h1,h2,h3,h4{margin:0;font-family:var(--font-display);font-weight:500;line-height:1.1;letter-spacing:-.015em;font-variation-settings:"SOFT" 0,"WONK" 0;}
p{margin:0 0 1.1em;}
p:last-child{margin-bottom:0;}
ul,ol{margin:0;padding:0;list-style:none;}
strong{font-weight:600;color:var(--text);}
::selection{background:var(--sage-200);color:var(--forest-900);}
:focus-visible{outline:2px solid var(--accent-soft);outline-offset:3px;border-radius:2px;}

.container{width:100%;max-width:var(--container);margin-inline:auto;padding-inline:var(--gutter);}
.container--narrow{max-width:var(--container-narrow);}
.skip-link{position:absolute;left:-9999px;top:0;z-index:200;background:var(--forest-700);color:#fff;padding:12px 20px;}
.skip-link:focus{left:8px;top:8px;}
.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;}

/* --------------------------------------------------------------------------
   3. Typographie utilitaire
   -------------------------------------------------------------------------- */
.display-1{font-size:clamp(2.6rem,6.4vw,5rem);font-variation-settings:"SOFT" 0,"opsz" 144;letter-spacing:-.03em;}
.display-2{font-size:clamp(2.1rem,4.4vw,3.5rem);font-variation-settings:"opsz" 100;letter-spacing:-.025em;}
.display-3{font-size:clamp(1.5rem,2.4vw,2.1rem);font-variation-settings:"opsz" 40;letter-spacing:-.018em;}
.display-4{font-size:clamp(1.16rem,1.6vw,1.34rem);font-weight:600;font-variation-settings:"opsz" 24;letter-spacing:-.01em;}

.eyebrow{
  display:flex;align-items:center;gap:14px;
  font-family:var(--font-sans);font-size:.7rem;font-weight:600;
  letter-spacing:.2em;text-transform:uppercase;color:var(--gold);
  margin:0 0 22px;
}
.eyebrow::before{content:"";width:34px;height:1px;background:currentColor;flex:none;opacity:.7;}
.eyebrow--center{justify-content:center;}

.lede{font-size:clamp(1.06rem,1.5vw,1.28rem);line-height:1.6;color:var(--text-muted);max-width:64ch;}
.muted{color:var(--text-muted);}
.small{font-size:.86rem;line-height:1.55;}
.tnum{font-variant-numeric:tabular-nums;}

/* --------------------------------------------------------------------------
   4. Sections & décor
   -------------------------------------------------------------------------- */
.section{padding-block:var(--section-y);position:relative;}
.section--alt{background:var(--bg-alt);}
.section--tight{padding-block:clamp(48px,6vw,80px);}
.section--dark{background:var(--inverse-bg);color:var(--inverse-text);}
.section--dark .lede,.section--dark .muted{color:rgba(234,241,231,.72);}
.section--dark .eyebrow{color:var(--ochre-500);}
.section--dark h2,.section--dark h3{color:#fff;}

.section__head{max-width:44rem;margin-bottom:clamp(40px,5vw,64px);}
.section__head--center{margin-inline:auto;text-align:center;}
.section__head--center .eyebrow{justify-content:center;}
.section__head--center .lede{margin-inline:auto;}
.section__head h2{margin-bottom:20px;}

.rule{height:1px;background:var(--line);border:0;margin:0;}

/* Motif topographique décoratif */
.topo{position:absolute;inset:0;pointer-events:none;opacity:.5;overflow:hidden;}
.topo svg{position:absolute;width:min(1100px,120%);height:auto;stroke:var(--accent);fill:none;opacity:.13;}
.topo--tr svg{top:-14%;right:-16%;}
.topo--bl svg{bottom:-18%;left:-18%;transform:rotate(180deg);}

/* Grain photographique */
.grain::after{
  content:"";position:absolute;inset:0;pointer-events:none;z-index:2;
  opacity:.28;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='.5'/%3E%3C/svg%3E");
}

/* --------------------------------------------------------------------------
   5. Boutons
   -------------------------------------------------------------------------- */
.btn{
  --btn-bg:var(--forest-700); --btn-fg:#fff; --btn-bd:var(--forest-700);
  display:inline-flex;align-items:center;justify-content:center;gap:11px;
  padding:15px 28px;border:1px solid var(--btn-bd);background:var(--btn-bg);color:var(--btn-fg);
  font-size:.9rem;font-weight:600;letter-spacing:.01em;border-radius:var(--radius);
  cursor:pointer;position:relative;overflow:hidden;isolation:isolate;
  transition:transform .35s var(--ease),box-shadow .35s var(--ease),background-color .3s var(--ease),color .3s var(--ease),border-color .3s var(--ease);
}
.btn::before{
  content:"";position:absolute;inset:0;z-index:-1;background:var(--leaf-500);
  transform:translateY(101%);transition:transform .45s var(--ease);
}
.btn:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);}
.btn:hover::before{transform:translateY(0);}
.btn:active{transform:translateY(0);}
.btn .arrow{transition:transform .4s var(--ease);}
.btn:hover .arrow{transform:translateX(4px);}

.btn--ghost{--btn-bg:transparent;--btn-fg:var(--text);--btn-bd:var(--line-strong);}
.btn--ghost:hover{--btn-fg:#fff;border-color:var(--leaf-500);}
.btn--light{--btn-bg:#fff;--btn-fg:var(--forest-800);--btn-bd:#fff;}
.btn--light:hover{--btn-fg:#fff;}
.btn--outline-light{--btn-bg:transparent;--btn-fg:#fff;--btn-bd:rgba(255,255,255,.4);}
.btn--outline-light:hover{--btn-bd:var(--leaf-500);}
.btn--sm{padding:11px 20px;font-size:.82rem;}

/* Lien fléché éditorial */
.arrow-link{
  display:inline-flex;align-items:center;gap:10px;
  font-size:.87rem;font-weight:600;letter-spacing:.02em;color:var(--accent);
  padding-bottom:3px;border-bottom:1px solid transparent;
  transition:border-color .3s var(--ease),gap .3s var(--ease);
}
.arrow-link:hover{border-color:currentColor;gap:15px;}

/* --------------------------------------------------------------------------
   6. Barre supérieure + navigation
   -------------------------------------------------------------------------- */
.topbar{
  background:var(--forest-950);color:rgba(234,241,231,.78);
  font-size:.76rem;letter-spacing:.02em;
}
.topbar__inner{display:flex;align-items:center;justify-content:space-between;gap:18px;min-height:38px;}
.topbar a{transition:color .25s var(--ease);}
.topbar a:hover{color:var(--leaf-400);}
.topbar__list{display:flex;align-items:center;gap:22px;flex-wrap:wrap;}
.topbar__list li{display:flex;align-items:center;gap:7px;}
.topbar__tag{color:var(--ochre-500);font-weight:600;letter-spacing:.14em;text-transform:uppercase;font-size:.66rem;}
.topbar__lang a{display:inline-flex;align-items:center;gap:7px;padding:3px 10px;border:1px solid rgba(234,241,231,.22);border-radius:100px;font-weight:600;letter-spacing:.04em;transition:border-color .25s var(--ease),color .25s var(--ease);}
.topbar__lang a span{color:var(--ochre-500);font-size:.64rem;letter-spacing:.12em;}
.topbar__lang a:hover{border-color:var(--leaf-400);}
@media (max-width:860px){.topbar__list .topbar__hide{display:none;}}

.siteheader{
  position:sticky;top:0;z-index:90;
  background:color-mix(in srgb,var(--bg) 88%,transparent);
  backdrop-filter:saturate(160%) blur(14px);
  -webkit-backdrop-filter:saturate(160%) blur(14px);
  border-bottom:1px solid transparent;
  transition:border-color .3s var(--ease),box-shadow .3s var(--ease),background-color .3s var(--ease);
}
.siteheader.is-stuck{border-bottom-color:var(--line);box-shadow:0 8px 30px rgba(6,23,16,.06);}
.nav{display:flex;align-items:center;justify-content:space-between;gap:24px;min-height:78px;}

.brand{display:flex;align-items:center;gap:13px;flex:none;}
.brand__mark{width:44px;height:44px;object-fit:contain;flex:none;}
.brand__text{display:flex;flex-direction:column;line-height:1.05;}
.brand__name{font-family:var(--font-display);font-size:1.32rem;font-weight:600;letter-spacing:-.02em;font-variation-settings:"opsz" 40;}
.brand__sub{font-size:.6rem;font-weight:600;letter-spacing:.19em;text-transform:uppercase;color:var(--text-faint);margin-top:3px;}
/* Sur fond sombre, l'emblème (vert foncé) reçoit une pastille claire pour rester lisible. */
.footer__brand .brand__mark,
.drawer .brand__mark{background:rgba(255,255,255,.94);border-radius:50%;padding:2px;}
.drawer .brand__mark{background:transparent;padding:0;}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]) .brand__mark{background:rgba(255,255,255,.94);border-radius:50%;padding:2px;}
}
:root[data-theme="dark"] .brand__mark{background:rgba(255,255,255,.94);border-radius:50%;padding:2px;}

.nav__menu{display:flex;align-items:center;gap:4px;}
.nav__link{
  position:relative;display:inline-flex;align-items:center;gap:6px;white-space:nowrap;
  padding:10px 13px;font-size:.88rem;font-weight:500;color:var(--text-muted);
  border-radius:var(--radius);transition:color .25s var(--ease);
}
.nav__link::after{
  content:"";position:absolute;left:14px;right:14px;bottom:4px;height:1.5px;
  background:var(--accent-soft);transform:scaleX(0);transform-origin:left;
  transition:transform .35s var(--ease);
}
.nav__link:hover,.nav__link[aria-expanded="true"]{color:var(--text);}
.nav__link:hover::after,.nav__link.is-active::after{transform:scaleX(1);}
.nav__link.is-active{color:var(--accent);font-weight:600;}
.nav__caret{width:9px;height:9px;transition:transform .3s var(--ease);}
.nav__link[aria-expanded="true"] .nav__caret{transform:rotate(180deg);}
.nav__actions{display:flex;align-items:center;gap:10px;flex:none;}

/* Méga-menu */
.has-mega{position:relative;}
.mega{
  position:absolute;top:calc(100% + 12px);left:50%;transform:translate(-50%,10px);
  width:min(760px,92vw);background:var(--surface);border:1px solid var(--line);
  border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:12px;
  opacity:0;visibility:hidden;transition:opacity .28s var(--ease),transform .28s var(--ease),visibility .28s;
  z-index:95;
}
.has-mega.is-open .mega{opacity:1;visibility:visible;transform:translate(-50%,0);}
.mega__grid{display:grid;grid-template-columns:repeat(2,1fr);gap:2px;}
.mega__item{display:flex;gap:14px;padding:14px 16px;border-radius:var(--radius);transition:background-color .25s var(--ease);}
.mega__item:hover{background:var(--surface-2);}
.mega__ico{width:34px;height:34px;flex:none;color:var(--accent);}
.mega__t{display:block;font-weight:600;font-size:.92rem;margin-bottom:3px;color:var(--text);}
.mega__d{display:block;font-size:.79rem;line-height:1.45;color:var(--text-muted);}
.mega__foot{
  margin-top:8px;padding:14px 16px;border-top:1px solid var(--line);
  display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;
  font-size:.82rem;color:var(--text-muted);
}

/* Burger + tiroir mobile */
.burger{display:none;width:46px;height:46px;align-items:center;justify-content:center;background:none;border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;}
.burger span{display:block;width:19px;height:1.5px;background:var(--text);position:relative;transition:background-color .2s;}
.burger span::before,.burger span::after{content:"";position:absolute;left:0;width:19px;height:1.5px;background:var(--text);transition:transform .35s var(--ease),top .3s var(--ease);}
.burger span::before{top:-6px;}
.burger span::after{top:6px;}
.burger[aria-expanded="true"] span{background:transparent;}
.burger[aria-expanded="true"] span::before{top:0;transform:rotate(45deg);}
.burger[aria-expanded="true"] span::after{top:0;transform:rotate(-45deg);}

.drawer{
  position:fixed;inset:0;z-index:99;background:var(--bg);
  transform:translateX(100%);transition:transform .45s var(--ease);
  display:flex;flex-direction:column;overflow-y:auto;
}
.drawer.is-open{transform:translateX(0);}
.drawer__head{display:flex;align-items:center;justify-content:space-between;min-height:78px;border-bottom:1px solid var(--line);}
.drawer__nav{padding:26px 0 40px;}
.drawer__nav a{
  display:flex;align-items:center;justify-content:space-between;
  padding:17px 0;border-bottom:1px solid var(--line);
  font-family:var(--font-display);font-size:1.5rem;font-variation-settings:"opsz" 40;
}
.drawer__nav a .n{font-family:var(--font-sans);font-size:.7rem;font-weight:600;color:var(--gold);letter-spacing:.12em;}
.drawer__cta{margin-top:28px;display:grid;gap:12px;}

@media (max-width:1180px){
  .nav__menu,.nav__actions .btn{display:none;}
  .burger{display:flex;}
}
@media (max-width:560px){
  .nav{min-height:66px;gap:12px;}
  .brand{min-width:0;flex:1 1 auto;}
  .brand__mark{width:38px;height:38px;}
  .brand__name{font-size:1.14rem;}
  .brand__sub{font-size:.53rem;letter-spacing:.14em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .drawer__nav a{font-size:1.24rem;padding:14px 0;}
  .topbar__inner{min-height:34px;font-size:.72rem;}
}

/* Barre de progression de lecture */
.progress{position:fixed;top:0;left:0;height:2px;width:100%;transform-origin:left;transform:scaleX(0);background:linear-gradient(90deg,var(--leaf-500),var(--ochre-500));z-index:100;}

/* --------------------------------------------------------------------------
   7. Hero
   -------------------------------------------------------------------------- */
.hero{position:relative;isolation:isolate;background:var(--forest-950);color:#fff;overflow:hidden;}
.hero__media{position:absolute;inset:0;z-index:-2;}
.hero__media img{width:100%;height:100%;object-fit:cover;object-position:center 58%;transform:scale(1.06);will-change:transform;}
.hero__scrim{
  position:absolute;inset:0;z-index:-1;
  background:
    linear-gradient(180deg,rgba(6,23,16,.82) 0%,rgba(6,23,16,.45) 34%,rgba(6,23,16,.72) 72%,rgba(6,23,16,.95) 100%),
    linear-gradient(96deg,rgba(11,42,24,.9) 0%,rgba(11,42,24,.35) 58%,rgba(11,42,24,.1) 100%);
}
.hero__inner{position:relative;padding-block:clamp(96px,15vw,180px) clamp(120px,14vw,170px);max-width:960px;}
.hero .eyebrow{color:var(--ochre-500);}
.hero h1{color:#fff;margin-bottom:26px;text-wrap:balance;}
.hero h1 em{font-style:italic;font-variation-settings:"SOFT" 40;color:var(--sage-400);}
.hero__lede{font-size:clamp(1.06rem,1.7vw,1.32rem);line-height:1.6;color:rgba(255,255,255,.84);max-width:60ch;margin-bottom:36px;}
.hero__actions{display:flex;flex-wrap:wrap;gap:14px;align-items:center;}
.hero__caption{
  position:absolute;right:var(--gutter);bottom:clamp(24px,4vw,42px);
  max-width:250px;text-align:right;font-size:.72rem;line-height:1.5;
  color:rgba(255,255,255,.6);border-right:2px solid var(--ochre-500);padding-right:14px;
}
@media (max-width:900px){.hero__caption{display:none;}}
.hero__scroll{
  position:absolute;left:var(--gutter);bottom:clamp(24px,4vw,42px);
  display:flex;align-items:center;gap:12px;font-size:.68rem;font-weight:600;
  letter-spacing:.2em;text-transform:uppercase;color:rgba(255,255,255,.55);
}
.hero__scroll i{display:block;width:1px;height:36px;background:linear-gradient(180deg,rgba(255,255,255,.6),transparent);animation:scrollpulse 2.4s var(--ease) infinite;}
@keyframes scrollpulse{0%,100%{opacity:.25;transform:scaleY(.5);transform-origin:top;}50%{opacity:1;transform:scaleY(1);transform-origin:top;}}

/* Hero secondaire (pages intérieures) */
.pagehead{position:relative;isolation:isolate;background:var(--forest-900);color:#fff;overflow:hidden;}
.pagehead__media{position:absolute;inset:0;z-index:-2;}
.pagehead__media img{width:100%;height:100%;object-fit:cover;object-position:center 55%;opacity:.72;}
.pagehead__scrim{position:absolute;inset:0;z-index:-1;background:linear-gradient(100deg,rgba(6,23,16,.94) 0%,rgba(6,23,16,.82) 34%,rgba(6,23,16,.42) 72%,rgba(6,23,16,.22) 100%);}
.pagehead__inner{padding-block:clamp(60px,9vw,104px) clamp(56px,8vw,92px);max-width:780px;}
.pagehead h1{color:#fff;margin-bottom:20px;text-wrap:balance;}
.pagehead .lede{color:rgba(255,255,255,.8);}
.breadcrumb{display:flex;align-items:center;gap:9px;font-size:.75rem;color:rgba(255,255,255,.55);margin-bottom:22px;flex-wrap:wrap;}
.breadcrumb a:hover{color:#fff;}
.breadcrumb span{opacity:.45;}

/* --------------------------------------------------------------------------
   8. Bandeau de chiffres clés
   -------------------------------------------------------------------------- */
.stats{position:relative;z-index:3;margin-top:calc(-1 * clamp(48px,7vw,84px));}
.stats__card{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);
  box-shadow:var(--shadow-lg);display:grid;grid-template-columns:repeat(4,1fr);
  overflow:hidden;
}
.stat{padding:clamp(24px,3.2vw,40px);border-right:1px solid var(--line);position:relative;}
.stat:last-child{border-right:0;}
.stat__n{
  font-family:var(--font-display);font-size:clamp(2.1rem,3.6vw,3.05rem);font-weight:500;
  line-height:1;letter-spacing:-.03em;color:var(--accent);font-variation-settings:"opsz" 100;
  font-variant-numeric:tabular-nums;display:flex;align-items:baseline;gap:2px;
}
.stat__n sup{font-size:.42em;font-family:var(--font-sans);font-weight:600;color:var(--gold);top:-.9em;position:relative;}
.stat__l{margin-top:12px;font-size:.83rem;line-height:1.45;color:var(--text-muted);}
@media (max-width:860px){
  .stats__card{grid-template-columns:repeat(2,1fr);}
  .stat:nth-child(2n){border-right:0;}
  .stat:nth-child(-n+2){border-bottom:1px solid var(--line);}
}

/* --------------------------------------------------------------------------
   9. Cartes d'expertise
   -------------------------------------------------------------------------- */
.grid{display:grid;gap:clamp(16px,2vw,26px);}
.grid--2{grid-template-columns:repeat(2,1fr);}
.grid--3{grid-template-columns:repeat(3,1fr);}
.grid--4{grid-template-columns:repeat(4,1fr);}
@media (max-width:980px){.grid--3,.grid--4{grid-template-columns:repeat(2,1fr);}}
@media (max-width:640px){.grid--2,.grid--3,.grid--4{grid-template-columns:1fr;}}

.card{
  position:relative;display:flex;flex-direction:column;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);
  padding:clamp(26px,3vw,34px);overflow:hidden;
  transition:transform .45s var(--ease),box-shadow .45s var(--ease),border-color .45s var(--ease);
}
.card::before{
  content:"";position:absolute;top:0;left:0;height:2px;width:100%;
  background:linear-gradient(90deg,var(--leaf-500),var(--ochre-500));
  transform:scaleX(0);transform-origin:left;transition:transform .55s var(--ease);
}
.card:hover{transform:translateY(-5px);box-shadow:var(--shadow-md);border-color:var(--line-strong);}
.card:hover::before{transform:scaleX(1);}
.card__ico{
  width:52px;height:52px;border-radius:50%;flex:none;margin-bottom:22px;
  display:grid;place-items:center;background:var(--surface-2);color:var(--accent);
  transition:background-color .4s var(--ease),color .4s var(--ease),transform .5s var(--ease);
}
.card__ico svg{width:26px;height:26px;}
.card:hover .card__ico{background:var(--forest-700);color:#fff;transform:rotate(-6deg) scale(1.05);}
.card h3{font-size:1.16rem;margin-bottom:11px;font-variation-settings:"opsz" 24;}
.card p{font-size:.92rem;line-height:1.6;color:var(--text-muted);}
.card__link{margin-top:auto;padding-top:20px;}
.card--flat{background:transparent;border-color:transparent;padding:0;}
.card--flat:hover{transform:none;box-shadow:none;}
.card--num{padding-top:clamp(30px,3.4vw,40px);}
.card__num{
  position:absolute;top:18px;right:22px;font-family:var(--font-display);
  font-size:2.4rem;line-height:1;color:var(--line-strong);font-variation-settings:"opsz" 100;
  transition:color .4s var(--ease);
}
.card:hover .card__num{color:var(--sage-400);}

/* --------------------------------------------------------------------------
   10. Blocs éditoriaux image + texte
   -------------------------------------------------------------------------- */
.split{display:grid;grid-template-columns:1fr 1fr;gap:clamp(32px,5vw,80px);align-items:center;}
.split--wide-text{grid-template-columns:1.15fr .85fr;}
.split--wide-media{grid-template-columns:.85fr 1.15fr;}
.split--top{align-items:start;}
@media (max-width:900px){.split,.split--wide-text,.split--wide-media{grid-template-columns:1fr;}}
.split__media--first{order:-1;}
@media (max-width:900px){.split__media{order:-1;}}

.figure{position:relative;margin:0;}
.figure img{width:100%;height:100%;object-fit:cover;border-radius:var(--radius-lg);}
.figure--tall img{aspect-ratio:4/5;}
.figure--wide img{aspect-ratio:16/10;}
.figure--square img{aspect-ratio:1/1;}
.figure figcaption{
  margin-top:14px;font-size:.76rem;line-height:1.5;color:var(--text-faint);
  padding-left:13px;border-left:2px solid var(--sage-400);
}
/* Cadre ocre décalé */
.figure--framed::before{
  content:"";position:absolute;inset:auto -16px -16px auto;width:62%;height:62%;
  border:1px solid var(--gold);border-radius:var(--radius-lg);z-index:-1;
}
.figure--framed{z-index:1;}
/* Traitement documentaire : léger virage vert + contraste */
.figure--graded img{filter:saturate(.88) contrast(1.06) brightness(1.02);}
.figure--graded::after{
  content:"";position:absolute;inset:0;border-radius:var(--radius-lg);pointer-events:none;
  background:linear-gradient(160deg,rgba(20,80,43,.16),rgba(200,151,26,.07));
  mix-blend-mode:multiply;
}

.stack{display:flex;flex-direction:column;gap:clamp(14px,1.6vw,20px);}

/* Liste à puces feuille */
.leaflist li{position:relative;padding-left:30px;margin-bottom:16px;font-size:.96rem;line-height:1.6;color:var(--text-muted);}
.leaflist li:last-child{margin-bottom:0;}
.leaflist li::before{
  content:"";position:absolute;left:0;top:.55em;width:12px;height:12px;
  background:var(--accent-soft);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 21c-5-3-7-8.6-7-13 5-1 10 1 12 5 1.6 3.2.8 6.4-1 8-1.4 1.2-3 1.4-4 0z'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 21c-5-3-7-8.6-7-13 5-1 10 1 12 5 1.6 3.2.8 6.4-1 8-1.4 1.2-3 1.4-4 0z'/%3E%3C/svg%3E") center/contain no-repeat;
}
.leaflist li b{color:var(--text);font-weight:600;}

/* Liste numérotée éditoriale */
.numlist{counter-reset:nl;}
.numlist li{counter-increment:nl;position:relative;padding-left:58px;padding-block:22px;border-top:1px solid var(--line);}
.numlist li:last-child{border-bottom:1px solid var(--line);}
.numlist li::before{
  content:counter(nl,decimal-leading-zero);position:absolute;left:0;top:24px;
  font-family:var(--font-sans);font-size:.72rem;font-weight:700;letter-spacing:.1em;color:var(--gold);
}
.numlist h4{font-family:var(--font-display);font-size:1.05rem;font-weight:600;margin-bottom:7px;font-variation-settings:"opsz" 24;}
.numlist p{font-size:.92rem;color:var(--text-muted);}

/* Citation */
.quote{position:relative;padding:clamp(28px,3.4vw,44px) clamp(26px,3.4vw,48px);background:var(--surface-2);border-radius:var(--radius-lg);border-left:3px solid var(--gold);}
.quote p{font-family:var(--font-display);font-size:clamp(1.15rem,1.9vw,1.5rem);line-height:1.45;font-style:italic;font-variation-settings:"SOFT" 40,"opsz" 40;color:var(--text);}
.quote footer{margin-top:18px;font-size:.82rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint);font-style:normal;}

/* --------------------------------------------------------------------------
   11. Chips / référentiels
   -------------------------------------------------------------------------- */
.chips{display:flex;flex-wrap:wrap;gap:10px;}
.chip{
  display:inline-flex;align-items:center;gap:9px;padding:9px 16px;
  border:1px solid var(--line);border-radius:100px;background:var(--surface);
  font-size:.8rem;font-weight:500;color:var(--text-muted);
  transition:border-color .3s var(--ease),color .3s var(--ease),background-color .3s var(--ease);
}
.chip:hover{border-color:var(--accent-soft);color:var(--text);}
.chip i{width:6px;height:6px;border-radius:50%;background:var(--accent-soft);flex:none;}
.chip--dark{background:rgba(255,255,255,.05);border-color:rgba(255,255,255,.18);color:rgba(255,255,255,.8);}
.chip--dark:hover{border-color:var(--leaf-400);color:#fff;}
button.chip{cursor:pointer;}
button.chip[aria-pressed="true"]{background:var(--forest-700);border-color:var(--forest-700);color:#fff;}
button.chip[aria-pressed="true"] i{background:var(--ochre-500);}

/* Bandeau bailleurs */
.funders{display:grid;grid-template-columns:repeat(6,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden;}
.funder{background:var(--surface);padding:26px 18px;text-align:center;transition:background-color .3s var(--ease);}
.funder:hover{background:var(--surface-2);}
.funder b{display:block;font-family:var(--font-display);font-size:1.5rem;font-weight:600;color:var(--accent);letter-spacing:-.02em;font-variation-settings:"opsz" 40;}
.funder span{display:block;margin-top:6px;font-size:.71rem;line-height:1.4;color:var(--text-faint);}
@media (max-width:980px){.funders{grid-template-columns:repeat(3,1fr);}}
@media (max-width:520px){.funders{grid-template-columns:repeat(2,1fr);}}

/* --------------------------------------------------------------------------
   12. Références (liste éditoriale)
   -------------------------------------------------------------------------- */
.reflist{border-top:1px solid var(--line);}
.refrow{
  display:grid;grid-template-columns:132px 1fr 190px;gap:24px;align-items:start;
  padding:clamp(22px,2.6vw,30px) 0;border-bottom:1px solid var(--line);
  position:relative;transition:padding-left .4s var(--ease);
}
.refrow::before{
  content:"";position:absolute;left:0;top:0;bottom:0;width:2px;background:var(--gold);
  transform:scaleY(0);transform-origin:top;transition:transform .45s var(--ease);
}
.refrow:hover{padding-left:18px;}
.refrow:hover::before{transform:scaleY(1);}
.refrow__meta{font-size:.72rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--gold);padding-top:6px;}
.refrow__meta span{display:block;color:var(--text-faint);letter-spacing:.06em;font-weight:500;margin-top:5px;text-transform:none;font-size:.76rem;}
.refrow h3{font-size:1.22rem;margin-bottom:8px;font-variation-settings:"opsz" 30;}
.refrow p{font-size:.92rem;color:var(--text-muted);}
.refrow__tags{display:flex;flex-wrap:wrap;gap:7px;justify-content:flex-end;padding-top:5px;}
.tag{
  font-size:.68rem;font-weight:600;letter-spacing:.07em;text-transform:uppercase;
  padding:5px 11px;border-radius:100px;background:var(--surface-2);color:var(--accent);white-space:nowrap;
}
.tag--live{background:rgba(47,166,79,.14);color:var(--accent);}
.tag--live::before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--leaf-500);margin-right:6px;vertical-align:middle;animation:pulse 2s infinite;}
@keyframes pulse{0%,100%{opacity:1;}50%{opacity:.3;}}
@media (max-width:900px){
  .refrow{grid-template-columns:1fr;gap:12px;}
  .refrow__tags{justify-content:flex-start;}
}

/* --------------------------------------------------------------------------
   13. Galerie
   -------------------------------------------------------------------------- */
.gallery{display:grid;grid-template-columns:repeat(12,1fr);gap:clamp(10px,1.4vw,18px);}
.gallery figure{margin:0;position:relative;overflow:hidden;border-radius:var(--radius-lg);}
.gallery img{width:100%;height:100%;object-fit:cover;transition:transform 1.1s var(--ease);}
.gallery figure:hover img{transform:scale(1.05);}
.gallery figcaption{
  position:absolute;left:0;right:0;bottom:0;padding:34px 18px 15px;
  background:linear-gradient(180deg,transparent,rgba(6,23,16,.88));
  color:#fff;font-size:.76rem;line-height:1.4;
  transform:translateY(8px);opacity:0;transition:opacity .4s var(--ease),transform .4s var(--ease);
}
.gallery figure:hover figcaption,.gallery figure:focus-within figcaption{opacity:1;transform:translateY(0);}
.g-6{grid-column:span 6;} .g-4{grid-column:span 4;} .g-8{grid-column:span 8;} .g-3{grid-column:span 3;} .g-12{grid-column:span 12;}
.ar-43 img{aspect-ratio:4/3;} .ar-11 img{aspect-ratio:1/1;} .ar-169 img{aspect-ratio:16/9;} .ar-34 img{aspect-ratio:3/4;}
@media (max-width:820px){
  .gallery{grid-template-columns:repeat(2,1fr);}
  .g-6,.g-4,.g-8,.g-3,.g-12{grid-column:span 1;}
}

/* --------------------------------------------------------------------------
   14. Frise / parcours
   -------------------------------------------------------------------------- */
.timeline{position:relative;padding-left:34px;}
.timeline::before{content:"";position:absolute;left:6px;top:8px;bottom:8px;width:1px;background:var(--line);}
.tl-item{position:relative;padding-bottom:34px;}
.tl-item:last-child{padding-bottom:0;}
.tl-item::before{
  content:"";position:absolute;left:-34px;top:6px;width:13px;height:13px;border-radius:50%;
  background:var(--bg);border:2px solid var(--accent-soft);
}
.tl-item--major::before{background:var(--accent-soft);box-shadow:0 0 0 5px color-mix(in srgb,var(--accent-soft) 18%,transparent);}
.tl-date{font-size:.72rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--gold);margin-bottom:6px;}
.tl-item h4{font-family:var(--font-display);font-size:1.06rem;font-weight:600;margin-bottom:6px;font-variation-settings:"opsz" 24;}
.tl-item p{font-size:.9rem;color:var(--text-muted);}

/* --------------------------------------------------------------------------
   15. FAQ
   -------------------------------------------------------------------------- */
.faq{border-top:1px solid var(--line);}
.faq details{border-bottom:1px solid var(--line);}
.faq summary{
  display:flex;align-items:flex-start;justify-content:space-between;gap:24px;
  padding:24px 0;cursor:pointer;list-style:none;
  font-family:var(--font-display);font-size:clamp(1.02rem,1.5vw,1.18rem);font-weight:600;
  font-variation-settings:"opsz" 24;transition:color .3s var(--ease);
}
.faq summary::-webkit-details-marker{display:none;}
.faq summary:hover{color:var(--accent);}
.faq summary .pm{position:relative;width:20px;height:20px;flex:none;margin-top:5px;}
.faq summary .pm::before,.faq summary .pm::after{
  content:"";position:absolute;background:var(--accent);transition:transform .35s var(--ease),opacity .3s;
  left:50%;top:50%;
}
.faq summary .pm::before{width:14px;height:1.5px;transform:translate(-50%,-50%);}
.faq summary .pm::after{width:1.5px;height:14px;transform:translate(-50%,-50%);}
.faq details[open] summary .pm::after{transform:translate(-50%,-50%) rotate(90deg);opacity:0;}
.faq__body{padding:0 0 26px;max-width:74ch;}
.faq__body p{font-size:.95rem;color:var(--text-muted);}

/* --------------------------------------------------------------------------
   16. Bandeau d'appel à l'action
   -------------------------------------------------------------------------- */
.cta{position:relative;overflow:hidden;background:var(--forest-800);color:#fff;isolation:isolate;}
.cta::before{
  content:"";position:absolute;inset:0;z-index:-1;opacity:.16;
  background:radial-gradient(ellipse at 15% 20%,var(--leaf-500),transparent 55%),
             radial-gradient(ellipse at 85% 80%,var(--ochre-500),transparent 55%);
}
.cta__inner{display:grid;grid-template-columns:1.3fr .7fr;gap:clamp(28px,4vw,64px);align-items:center;padding-block:clamp(56px,7vw,88px);}
.cta h2{color:#fff;margin-bottom:16px;text-wrap:balance;}
.cta p{color:rgba(255,255,255,.78);max-width:52ch;}
.cta__actions{display:flex;flex-direction:column;gap:12px;}
@media (max-width:860px){.cta__inner{grid-template-columns:1fr;}}

/* --------------------------------------------------------------------------
   17. Formulaire
   -------------------------------------------------------------------------- */
.formgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:18px;}
.field{display:flex;flex-direction:column;gap:8px;}
.field--full{grid-column:1 / -1;}
.field label{font-size:.78rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);}
.field label .req{color:var(--clay-500);}
.field input,.field select,.field textarea{
  width:100%;padding:14px 16px;font-family:inherit;font-size:.95rem;color:var(--text);
  background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);
  transition:border-color .25s var(--ease),box-shadow .25s var(--ease);
}
.field textarea{min-height:150px;resize:vertical;}
.field input:focus,.field select:focus,.field textarea:focus{
  outline:none;border-color:var(--accent-soft);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent-soft) 18%,transparent);
}
.field .err{font-size:.76rem;color:var(--clay-500);min-height:1em;}
.field.is-invalid input,.field.is-invalid select,.field.is-invalid textarea{border-color:var(--clay-500);}
.form__foot{grid-column:1 / -1;display:flex;flex-wrap:wrap;align-items:center;gap:18px;justify-content:space-between;margin-top:6px;}
.form__note{font-size:.78rem;color:var(--text-faint);max-width:44ch;}
.form__status{grid-column:1 / -1;padding:14px 18px;border-radius:var(--radius);background:var(--surface-2);border:1px solid var(--line);font-size:.88rem;display:none;}
.form__status.is-visible{display:block;}
@media (max-width:640px){.formgrid{grid-template-columns:1fr;}}

/* Carte de contact sombre */
.infocard{
  position:relative;overflow:hidden;background:var(--forest-900);color:#fff;
  border-radius:var(--radius-lg);padding:clamp(30px,3.6vw,44px);
}
.infocard::after{
  content:"";position:absolute;right:-70px;bottom:-70px;width:260px;height:260px;
  border-radius:50%;border:1px solid rgba(163,197,126,.25);
}
.infocard h3{color:#fff;font-size:1.3rem;margin-bottom:26px;}
.infocard dl{margin:0;display:grid;gap:20px;position:relative;z-index:1;}
.infocard dt{font-size:.68rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--ochre-500);margin-bottom:5px;}
.infocard dd{margin:0;font-size:.96rem;line-height:1.55;color:rgba(255,255,255,.88);}
.infocard dd a:hover{color:var(--leaf-400);}
.infocard__legal{margin-top:28px;padding-top:20px;border-top:1px solid rgba(255,255,255,.14);font-size:.74rem;color:rgba(255,255,255,.55);line-height:1.6;}

/* --------------------------------------------------------------------------
   18. Pied de page
   -------------------------------------------------------------------------- */
.footer{background:var(--forest-950);color:rgba(234,241,231,.66);padding-top:clamp(56px,7vw,84px);}
.footer__grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1.2fr;gap:clamp(28px,3.4vw,52px);padding-bottom:clamp(40px,5vw,60px);}
@media (max-width:980px){.footer__grid{grid-template-columns:1fr 1fr;}}
@media (max-width:560px){.footer__grid{grid-template-columns:1fr;}}
.footer h4{font-family:var(--font-sans);font-size:.7rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--ochre-500);margin-bottom:20px;}
.footer a{transition:color .25s var(--ease);}
.footer a:hover{color:var(--leaf-400);}
.footer__links li{margin-bottom:11px;font-size:.88rem;}
.footer__brand .brand__name{color:#fff;}
.footer__brand .brand__sub{color:rgba(234,241,231,.5);}
.footer__pitch{margin-top:20px;font-size:.88rem;line-height:1.65;max-width:34ch;}
.footer__bar{border-top:1px solid rgba(234,241,231,.12);padding-block:22px;display:flex;flex-wrap:wrap;gap:14px;justify-content:space-between;font-size:.76rem;color:rgba(234,241,231,.45);}
.footer__legal{display:flex;flex-wrap:wrap;gap:18px;}

/* Retour en haut */
.totop{
  position:fixed;right:clamp(16px,3vw,32px);bottom:clamp(16px,3vw,32px);z-index:80;
  width:48px;height:48px;border-radius:50%;display:grid;place-items:center;
  background:var(--forest-700);color:#fff;border:0;cursor:pointer;
  opacity:0;pointer-events:none;transform:translateY(12px);
  transition:opacity .35s var(--ease),transform .35s var(--ease),background-color .3s;
  box-shadow:var(--shadow-md);
}
.totop.is-visible{opacity:1;pointer-events:auto;transform:translateY(0);}
.totop:hover{background:var(--leaf-500);}

/* --------------------------------------------------------------------------
   19. Animations d'apparition
   -------------------------------------------------------------------------- */
[data-reveal]{opacity:0;transform:translateY(22px);transition:opacity .75s var(--ease),transform .75s var(--ease);}
[data-reveal].is-in{opacity:1;transform:none;}
[data-reveal][data-delay="1"]{transition-delay:.08s;}
[data-reveal][data-delay="2"]{transition-delay:.16s;}
[data-reveal][data-delay="3"]{transition-delay:.24s;}
[data-reveal][data-delay="4"]{transition-delay:.32s;}
[data-reveal][data-delay="5"]{transition-delay:.4s;}
@media (prefers-reduced-motion: reduce){
  [data-reveal]{opacity:1 !important;transform:none !important;transition:none !important;}
  .hero__scroll i{animation:none;}
  *{scroll-behavior:auto !important;}
}

/* --------------------------------------------------------------------------
   20. Impression
   -------------------------------------------------------------------------- */
@media print{
  .siteheader,.topbar,.totop,.progress,.drawer,.hero__scroll,.cta__actions{display:none !important;}
  body{background:#fff;color:#000;font-size:11pt;}
  .section{padding-block:18pt;}
  a[href^="http"]::after{content:" (" attr(href) ")";font-size:8pt;color:#555;}
}
