:root{
  --white:#F7F9FA;            /* hsl(210,40%,98.04%) */
  --pure:#FFFFFF;
  --navy:#23334A;             /* hsl(215,34%,21%)  */
  --navy-deep:#152238;
  --accent:#5D6E82;           /* hsl(211.58,16.96%,43.92%) */
  --teal:#3FB4B1;             /* hsl(178.46,48.15%,47.65%) */
  --teal-dark:#2E9995;
  --teal-pale:#A8DCDB;
  --light:#E3E7EB;            /* hsl(210,16.67%,90.59%) */
  --gold:#F5C24A;
  --txt:#4A5768;
  --radius:10px;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{font-family:'Inter',-apple-system,sans-serif;color:var(--txt);line-height:1.6;background:var(--white);overflow-x:hidden}
img{max-width:100%;display:block}
a{text-decoration:none;color:inherit}
h1,h2,h3,h4{color:var(--navy);line-height:1.12;font-weight:800;letter-spacing:-.02em}
.wrap{max-width:1322px;margin:0 auto;padding:0 24px}
.center{text-align:center}

/* ---------- boutons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;text-align:center;padding:14px 30px;border-radius:999px;font-weight:600;font-size:15px;transition:.22s;cursor:pointer;border:1.5px solid transparent}
.btn-teal{background:var(--teal);color:#fff}
.btn-teal:hover{background:var(--teal-dark);transform:translateY(-2px);box-shadow:0 10px 22px rgba(63,180,177,.32)}
/* bordure assez marquee pour rester visible sur blanc pur, sur #F7F9FA et sur #E3E7EB */
.btn-outline{border-color:rgba(35,51,74,.26);color:var(--navy);background:transparent}
.btn-outline:hover{border-color:var(--teal-dark);color:var(--teal-dark);background:rgba(63,180,177,.07)}
.btn-outline-w{border-color:rgba(255,255,255,.5);color:#fff;background:transparent}
.btn-outline-w:hover{border-color:#fff;background:rgba(255,255,255,.09)}
.btn-soft{background:var(--light);color:var(--navy)}
.btn-soft:hover{background:#D5DBE2}

/* ---------- header ---------- */
header{position:sticky;top:0;z-index:60;background:rgba(247,249,250,.92);backdrop-filter:blur(12px);border-bottom:1px solid rgba(227,231,235,.9)}
.nav{display:flex;align-items:center;justify-content:space-between;height:68px;gap:24px}
.logo{font-size:27px;font-weight:800;letter-spacing:-.03em;color:var(--navy);white-space:nowrap}
.logo i{font-style:normal;color:var(--teal)}
.nav-links{display:flex;gap:30px;align-items:center;font-size:15px;font-weight:500;color:var(--navy)}
.nav-links>a:hover{color:var(--teal-dark)}
.nav-links .cur{border-bottom:1.5px solid var(--navy);padding-bottom:2px}
.drop{position:relative}
.drop>span{cursor:pointer;display:inline-flex;align-items:center;gap:6px}
.drop>span::after{content:"";width:6px;height:6px;border-right:1.6px solid currentColor;border-bottom:1.6px solid currentColor;transform:rotate(45deg) translateY(-2px)}
.menu{position:absolute;top:calc(100% + 16px);left:50%;transform:translateX(-50%) translateY(6px);background:#fff;border:1px solid var(--light);border-radius:12px;box-shadow:0 18px 44px rgba(35,51,74,.14);padding:9px;min-width:238px;opacity:0;visibility:hidden;transition:.18s}
.drop:hover .menu{opacity:1;visibility:visible;transform:translateX(-50%) translateY(0)}
.menu a{display:block;padding:10px 14px;border-radius:8px;font-size:14.5px;white-space:nowrap}
.menu a:hover{background:var(--white);color:var(--teal-dark)}
.lang{display:inline-flex;align-items:center;gap:7px;font-weight:600}
.burger{display:none;flex-direction:column;gap:5px;background:none;border:0;cursor:pointer;padding:8px}
.burger span{width:24px;height:2px;background:var(--navy);border-radius:2px;transition:.2s}

/* ---------- sections ---------- */
section{padding:90px 0}
/* teal-dark par defaut : le teal clair passe sous 2,6:1 sur fond blanc et sur #E3E7EB */
.eyebrow{display:block;color:var(--teal-dark);font-size:15px;font-weight:600;margin-bottom:14px}
.eyebrow.up{text-transform:uppercase;letter-spacing:2.2px;font-size:12.5px;font-weight:700}
h2.sec{font-size:clamp(34px,4.4vw,62px);margin-bottom:52px}
h2.sec.sm{font-size:clamp(30px,2.9vw,40px)}

/* ---------- hero ---------- */
.hero{background:var(--pure);padding:96px 0 100px}
.hero-grid{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:center}
.pill{display:inline-block;background:#E4F5F4;border:1px solid var(--teal-pale);color:var(--navy);font-size:14px;font-weight:600;padding:9px 22px;border-radius:999px;margin-bottom:26px}
.hero h1{font-size:clamp(36px,3.9vw,54px);font-weight:800;margin-bottom:26px}
.hero h1 i{font-style:normal;color:var(--teal)}
.hero .lead{font-size:16.5px;color:var(--txt);max-width:540px;margin-bottom:34px}
.ctas{display:flex;gap:16px;flex-wrap:wrap}

/* radar */
.radar-wrap{display:flex;justify-content:center;align-items:center;width:100%;padding:40px}
.radar{position:relative;width:380px;height:380px}
.rc{position:absolute;border-radius:50%;border:2px solid rgba(63,180,177,.25);background:rgba(63,180,177,.04)}
.rc.c1{width:100%;height:100%;top:0;left:0}
.rc.c2{width:75%;height:75%;top:12.5%;left:12.5%}
.rc.c3{width:50%;height:50%;top:25%;left:25%}
.rc.c4{width:25%;height:25%;top:37.5%;left:37.5%;background:rgba(63,180,177,.08)}
.rl{position:absolute;font-size:14px;font-weight:700;color:#334359;background:#fff;padding:6px 12px;border-radius:6px;box-shadow:0 2px 8px rgba(51,67,89,.1);white-space:nowrap}
.rl.top{top:-20px;left:50%;transform:translateX(-50%)}
.rl.right{right:-110px;top:50%;transform:translateY(-50%)}
.rl.bottom{bottom:-20px;left:50%;transform:translateX(-50%)}
.rl.left{left:-100px;top:50%;transform:translateY(-50%)}
.rcenter{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;background:#fff;border-radius:50%;box-shadow:0 8px 32px rgba(63,180,177,.2);border:3px solid var(--teal);width:120px;height:120px;display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:2}
.rcenter b{font-size:32px;font-weight:800;color:var(--teal);line-height:1}
.rcenter span{font-size:13px;color:#334359;font-weight:600;letter-spacing:.05em;margin-top:4px;text-transform:uppercase}

/* ---------- dimensions (teal) ---------- */
.dims-sec{background:var(--teal-pale);background-image:radial-gradient(circle,rgba(255,255,255,.32) 1.1px,transparent 1.1px);background-size:30px 30px;padding:96px 0 104px}
.badge-w{display:inline-block;background:#fff;color:var(--navy);font-size:12.5px;font-weight:700;letter-spacing:2.2px;text-transform:uppercase;padding:11px 26px;border-radius:999px;margin-bottom:26px;box-shadow:0 2px 10px rgba(35,51,74,.07)}
.dims-sec h2{font-size:clamp(38px,5vw,72px);margin-bottom:56px;line-height:1.08}
.grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:22px}
.dim{background:#fff;border-radius:var(--radius);padding:34px 22px;text-align:center;transition:.22s}
.dim:hover{transform:translateY(-5px);box-shadow:0 16px 34px rgba(35,51,74,.12)}
.ic{width:64px;height:64px;border-radius:15px;background:var(--teal);display:flex;align-items:center;justify-content:center;margin:0 auto 22px;color:#fff}
.dim b{display:block;color:var(--navy);font-size:16px;font-weight:700;margin-bottom:9px}
.dim p{font-size:15px;color:var(--txt);line-height:1.55}

/* ---------- pour qui ---------- */
.who-sec{background:var(--white);padding:90px 0}
.who{background:var(--navy);border-radius:8px;padding:36px 26px;text-align:center;transition:.22s;display:block;min-height:225px}
.who:hover{transform:translateY(-5px);box-shadow:0 18px 38px rgba(35,51,74,.22)}
.who .ic{background:rgba(63,180,177,.22);color:var(--teal);width:66px;height:66px;border-radius:15px}
.who b{display:block;color:#fff;font-size:16px;font-weight:700;margin-bottom:8px}
.who p{color:rgba(255,255,255,.82);font-size:15px}

/* ---------- pricing ---------- */
.price-sec{background:var(--light);padding:90px 0}
.plans{display:grid;grid-template-columns:repeat(4,1fr);gap:22px;align-items:stretch}
.plan{background:#fff;border-radius:14px;padding:32px 24px 28px;display:flex;flex-direction:column;position:relative;transition:.22s;text-align:left}
.plan:hover{transform:translateY(-5px);box-shadow:0 18px 40px rgba(35,51,74,.13)}
.plan.pop{border:2px solid var(--teal)}
.plan .badge{position:absolute;top:-14px;left:50%;transform:translateX(-50%);background:var(--teal);color:#fff;font-size:11.5px;font-weight:700;padding:6px 18px;border-radius:999px;letter-spacing:1.2px;text-transform:uppercase}
.plan .kind{font-size:11.5px;font-weight:700;color:var(--teal-dark);letter-spacing:1.6px;text-transform:uppercase;margin-bottom:12px}
.plan h3{font-size:22px;font-weight:700;margin-bottom:6px}
.plan .size{font-size:14px;color:var(--txt);margin-bottom:24px}
.plan .price{font-size:32px;font-weight:800;color:var(--navy);margin-bottom:26px;letter-spacing:-.02em}
.plan .price small{font-size:13px;color:var(--txt);font-weight:400;letter-spacing:0}
.plan ul{list-style:none;margin:0 0 26px;flex:1}
.plan li{font-size:14.5px;color:var(--txt);padding:5px 0 5px 26px;position:relative;line-height:1.5}
.plan li::before{content:"✓";position:absolute;left:2px;top:5px;color:var(--teal-dark);font-weight:700}
.plan .btn{width:100%}
.plan .note{text-align:center;font-size:13px;color:var(--teal-dark);margin-top:14px}

/* ---------- fonds ---------- */
.fonds-sec{background:var(--light);padding:0 0 90px}
.fonds{background:var(--navy);border-radius:14px;padding:56px 52px;display:grid;grid-template-columns:1fr 1fr;gap:52px;align-items:center}
.fonds h3{color:#fff;font-size:clamp(26px,2.6vw,34px);font-weight:800;margin-bottom:20px}
.fonds h3 i{font-style:normal;color:var(--gold)}
.fonds p{color:rgba(255,255,255,.82);font-size:15.5px;margin-bottom:30px;max-width:470px}
.fgrid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.fc{background:rgba(255,255,255,.055);border:1px solid rgba(255,255,255,.10);border-radius:10px;padding:22px 20px;text-align:center}
.fc b{display:block;color:var(--gold);font-size:15px;font-weight:700;margin-bottom:5px}
.fc span{font-size:14.5px;color:rgba(255,255,255,.85)}

/* ---------- stats ---------- */
.stats-sec{background:var(--light);padding:0 0 90px}
.stat{background:var(--navy);border-radius:8px;padding:30px 18px;text-align:center}
.stat b{display:block;font-size:clamp(34px,3.6vw,50px);font-weight:800;color:#fff;line-height:1.05;letter-spacing:-.02em}
.stat span{display:block;color:rgba(255,255,255,.85);font-size:14px;margin-top:6px}

/* ---------- étapes ---------- */
.steps-sec{background:var(--white);padding:90px 0}
.step{background:var(--navy);border-radius:8px;padding:38px 26px;text-align:center;transition:.22s}
.step:hover{transform:translateY(-5px);box-shadow:0 18px 38px rgba(35,51,74,.22)}
.step .num{width:66px;height:66px;border-radius:50%;background:var(--teal);color:#fff;font-size:26px;font-weight:800;display:flex;align-items:center;justify-content:center;margin:0 auto 24px}
.step b{display:block;color:#fff;font-size:16.5px;font-weight:700;margin-bottom:12px}
.step p{color:rgba(255,255,255,.85);font-size:15px;line-height:1.55}

/* ---------- accompagnement ---------- */
.after{background:linear-gradient(135deg,#33455E 0%,#23334A 45%,#1B2939 100%);padding:96px 0 104px}
.after h2{color:#fff;font-size:clamp(34px,4.4vw,62px);margin-bottom:22px}
/* margin-top:0 obligatoire : la regle generique p.sub (plus bas) applique un
   margin-top de -32px, calibre pour les sous-titres de 17px places sous un
   h2.sec. Ici le sous-titre fait jusqu'a 30px et le h2 n'a que 22px de marge
   basse : sans ce reset, les deux lignes se chevauchent de 10px. */
.after .sub{color:rgba(255,255,255,.72);font-size:clamp(26px,3.7vw,54px);font-weight:400;line-height:1.14;margin-top:0;margin-bottom:56px;letter-spacing:-.02em}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
/* Cartes offres (« On vous accompagne ») : icone ET titre sur la meme ligne,
   paragraphe sur toute la largeur en dessous. Grille 2 colonnes :
   colonne 1 = icone, colonne 2 = titre, ligne 2 = paragraphe (1 / -1). */
.offer{background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.09);border-radius:12px;padding:36px 32px;text-align:left;transition:.22s;display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;align-content:start;column-gap:16px;row-gap:0}
.offer:hover{background:rgba(255,255,255,.09);transform:translateY(-5px)}
.offer .ic{background:rgba(63,180,177,.16);color:var(--teal);width:52px;height:52px;border-radius:13px;margin:0;flex:none}
.offer .ic svg{width:26px;height:26px}
.offer b{display:block;color:#fff;font-size:21px;font-weight:800;margin:0;line-height:1.25}
.offer b i{font-style:normal;border-bottom:2px solid var(--teal);padding-bottom:2px}
.offer p{grid-column:1/-1;color:rgba(255,255,255,.78);font-size:15px;line-height:1.6;margin:22px 0 0}
/* Sous 620 px la carte est etroite : l'icone repasse au-dessus du titre. */
@media(max-width:620px){
  .offer{grid-template-columns:1fr;row-gap:14px}
  .offer p{margin-top:8px}
}

/* ---------- témoignages ---------- */
.tests-sec{background:var(--pure);padding:90px 0}
.test{background:var(--navy);border-radius:8px;padding:34px 30px;display:flex;flex-direction:column;text-align:left;transition:.22s}
.test:hover{transform:translateY(-5px);box-shadow:0 18px 38px rgba(35,51,74,.22)}
.test q{color:rgba(255,255,255,.92);font-size:15.5px;font-style:italic;line-height:1.6;quotes:"« " " »";flex:1}
.test .id{display:flex;align-items:center;gap:14px;margin-top:26px}
.test .av{width:44px;height:44px;border-radius:50%;background:rgba(63,180,177,.18);display:flex;align-items:center;justify-content:center;color:var(--teal);flex:0 0 44px}
.test .id b{display:block;color:#fff;font-size:15px;font-weight:600}
.test .id span{display:block;color:rgba(255,255,255,.72);font-size:14px}
.test .kpis{display:flex;gap:22px;flex-wrap:wrap;margin-top:24px;padding-top:18px;border-top:1px solid rgba(255,255,255,.16)}
.test .kpis span{color:var(--teal);font-size:14px;font-weight:600}

/* ---------- logos ---------- */
.logos{background:var(--pure);padding:20px 0 74px}
.logos p{text-align:center;font-size:12.5px;font-weight:700;letter-spacing:2.4px;color:var(--accent);text-transform:uppercase;margin-bottom:38px}
.track{overflow:hidden;position:relative;mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.row{display:flex;gap:66px;align-items:center;animation:sc 38s linear infinite;width:max-content}
.row img{height:38px;width:auto;object-fit:contain;filter:grayscale(1);opacity:.6;transition:.2s}
.row img:hover{filter:none;opacity:1}
@keyframes sc{to{transform:translateX(-50%)}}

/* ---------- CTA final ---------- */
.final{background:linear-gradient(135deg,#33455E 0%,#23334A 45%,#1B2939 100%);text-align:center;padding:104px 0}
.final h2{color:#fff;font-size:clamp(32px,4.2vw,58px);margin-bottom:16px}
.final .l{color:rgba(255,255,255,.85);font-size:clamp(22px,2.7vw,36px);font-weight:400;line-height:1.25;letter-spacing:-.02em}
.final .ctas{justify-content:center;margin-top:40px}

/* ---------- footer ---------- */
footer{background:var(--navy-deep);color:rgba(255,255,255,.82);padding:56px 0 30px;font-size:15px}
.foot{display:grid;grid-template-columns:1.25fr .95fr .9fr;gap:44px;align-items:start}
.foot .logo{color:#fff;font-size:30px;margin-bottom:14px;display:block}
.foot .bl{color:var(--teal);font-weight:700}
.foot .base{color:rgba(255,255,255,.82);margin-top:6px}
.social{display:flex;gap:12px;justify-content:center;margin-bottom:26px}
.social a{width:36px;height:36px;border-radius:50%;border:2px solid rgba(255,255,255,.85);display:flex;align-items:center;justify-content:center;color:#fff;transition:.2s}
.social a:hover{background:#fff;color:var(--navy-deep)}
.flinks{display:flex;gap:14px 16px;justify-content:center;flex-wrap:wrap;font-size:14.5px;white-space:nowrap}
.flinks a:hover{color:var(--teal)}
.addr b{color:#fff;font-weight:700}
.addr p{margin-bottom:12px}
.copy{border-top:1px solid rgba(255,255,255,.14);margin-top:38px;padding-top:24px;font-size:13.5px;color:rgba(255,255,255,.6)}
.copy b{color:#fff}

/* ---------- responsive ---------- */
@media(max-width:1100px){
  .nav-links{gap:20px;font-size:14px}
  .fonds{padding:44px 34px;gap:36px}
}
@media(max-width:900px){
  section{padding:64px 0}
  .nav-links{display:none}
  .burger{display:flex}
  .hero{padding:60px 0 70px}
  .hero-grid{grid-template-columns:1fr;gap:28px}
  .radar-wrap{padding:20px 0 0}
  .grid4,.plans{grid-template-columns:repeat(2,1fr)}
  .grid3{grid-template-columns:1fr}
  .fonds{grid-template-columns:1fr;padding:38px 26px}
  .after,.dims-sec{padding:64px 0}
  .foot{grid-template-columns:1fr;gap:32px;text-align:center}
  .addr{text-align:center}
  .test .id{justify-content:flex-start}
}
@media(max-width:620px){
  .wrap{padding:0 18px}
  .grid4,.plans{grid-template-columns:1fr}
  .fgrid{grid-template-columns:1fr}
  .ctas .btn{width:100%}
  .row{gap:40px}
  .row img{height:30px}
}

/* ============ COMPOSANTS PAGES INTERIEURES ============ */
.page-hero{background:var(--pure);padding:84px 0 76px;text-align:center}
.hero-narrow{max-width:860px;margin:0 auto}
.page-hero h1{font-size:clamp(34px,4.2vw,56px);margin-bottom:24px}
.page-hero h1 i{font-style:normal;color:var(--teal)}
.page-hero .lead{font-size:17.5px;color:var(--txt);max-width:660px;margin:0 auto 34px}
.page-hero .ctas{justify-content:center}
.page-hero .pill{margin-bottom:24px}
p.sub{color:var(--txt);font-size:17px;max-width:680px;margin:-32px auto 48px}
h2.sec+p.sub{margin-top:-34px}

/* bandeaux de section alternés */
.sec-white{background:var(--pure)}
.sec-light{background:var(--white)}
.sec-grey{background:var(--light)}
.sec-navy{background:linear-gradient(135deg,#33455E 0%,#23334A 45%,#1B2939 100%)}
.sec-navy h2,.sec-navy h3,.sec-navy h4{color:#fff}
.sec-navy p,.sec-navy li{color:rgba(255,255,255,.8)}
.sec-navy .eyebrow{color:var(--teal)}
/* sur le fond teal pale, un eyebrow teal est illisible : on passe en navy */
.sec-teal .eyebrow,.dims-sec .eyebrow{color:var(--navy)}
.sec-teal .checks li::before,.sec-teal .card li::before{color:var(--navy)}
.sec-teal{background:var(--teal-pale);background-image:radial-gradient(circle,rgba(255,255,255,.32) 1.1px,transparent 1.1px);background-size:30px 30px}

/* filet de separation quand deux sections consecutives partagent le meme fond
   (hero blanc + premiere section blanche, sec-light + blog-sec, etc.) */
.page-hero + .sec-white,
.sec-white + .sec-white,
.sec-white + .tests-sec,
.tests-sec + .sec-white,
.sec-light + .sec-light,
.sec-light + .blog-sec,
.blog-sec + .sec-light,
.blog-sec + .blog-sec,
.who-sec + .sec-light,
.steps-sec + .sec-light,
.sec-light + .who-sec,
.sec-light + .steps-sec,
.sec-grey + .sec-grey,
.sec-grey + .price-sec,
.price-sec + .sec-grey,
/* certaines pages intercalent une ancre <div id="..."></div> entre deux sections */
.page-hero + div + .sec-white,
.sec-white + div + .sec-white,
.sec-light + div + .sec-light,
.sec-light + div + .blog-sec,
.blog-sec + div + .sec-light,
.sec-grey + div + .sec-grey{border-top:1px solid rgba(35,51,74,.09)}

.grid2{display:grid;grid-template-columns:repeat(2,1fr);gap:24px}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}

/* carte blanche générique */
.card{background:#fff;border-radius:12px;padding:32px 28px;text-align:left;transition:.22s;border:1px solid rgba(227,231,235,.9)}
.card:hover{transform:translateY(-4px);box-shadow:0 16px 34px rgba(35,51,74,.10)}
.card .ic{margin:0 0 20px;width:60px;height:60px;border-radius:14px}
.card b,.card h3{display:block;color:var(--navy);font-size:19px;font-weight:700;margin-bottom:10px}
.card p{font-size:15px;color:var(--txt);line-height:1.6}
.card ul{list-style:none;margin-top:14px}
.card li{font-size:14.5px;color:var(--txt);padding:5px 0 5px 24px;position:relative;line-height:1.55}
.card li::before{content:"✓";position:absolute;left:0;top:5px;color:var(--teal-dark);font-weight:700}
.sec-navy .card li::before{color:var(--teal)}
/* .tm : cartes de l'equipe (A propos), meme habillage de tags que .card */
.card .tags,.tm .tags{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.card .tag,.tm .tag{background:rgba(63,180,177,.12);color:var(--teal-dark);font-size:12px;font-weight:600;padding:5px 12px;border-radius:999px}
.card .price-tag{color:var(--navy);font-weight:800;font-size:20px;margin:12px 0 4px}
.sec-navy .card{background:rgba(255,255,255,.05);border-color:rgba(255,255,255,.09)}
.sec-navy .card b,.sec-navy .card h3{color:#fff}
.sec-navy .card p,.sec-navy .card li{color:rgba(255,255,255,.78)}
.sec-navy .card .ic{background:rgba(63,180,177,.16);color:var(--teal)}

/* liste à puces teal en 2 colonnes */
.checks{display:grid;grid-template-columns:1fr 1fr;gap:10px 30px;text-align:left;max-width:900px;margin:0 auto}
.checks li{list-style:none;font-size:15.5px;color:var(--txt);padding:8px 0 8px 30px;position:relative}
.checks li::before{content:"✓";position:absolute;left:2px;top:8px;color:var(--teal-dark);font-weight:700}
.sec-navy .checks li{color:rgba(255,255,255,.85)}
.sec-navy .checks li::before{color:var(--teal)}

/* timeline étapes horizontale */
.tl{display:grid;grid-template-columns:repeat(5,1fr);gap:18px;counter-reset:tl}
.tl .s{background:#fff;border-radius:12px;padding:28px 20px;text-align:center;border:1px solid rgba(227,231,235,.9);position:relative}
.tl .s .n{width:44px;height:44px;border-radius:50%;background:var(--teal);color:#fff;font-weight:800;font-size:17px;display:flex;align-items:center;justify-content:center;margin:0 auto 16px}
.tl .s b{display:block;color:var(--navy);font-size:15.5px;margin-bottom:8px}
.tl .s p{font-size:14px;color:var(--txt);line-height:1.5}
.tl .s .when{display:inline-block;margin-top:12px;background:var(--light);color:var(--navy);font-size:12px;font-weight:600;padding:4px 12px;border-radius:999px}

/* chiffres clés */
.kpis-row{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;max-width:900px;margin:0 auto}
.kpi{text-align:center}
.kpi b{display:block;font-size:clamp(36px,4vw,54px);font-weight:800;color:var(--teal-dark);line-height:1.06}
/* selecteur direct : sinon un <span> place DANS le <b> (ex : 18.33/20) passe en
   display:block et le chiffre se coupe en deux lignes */
.kpi>span{display:block;color:var(--txt);font-size:15px;margin-top:8px;white-space:normal}
.kpi b span{display:inline;color:inherit;margin:0;font-weight:inherit}
.sec-navy .kpi b{color:var(--teal)}
.sec-navy .kpi>span{color:rgba(255,255,255,.8)}

/* blog / maillage interne */
.blog-sec{background:var(--white);padding:84px 0}
.arts{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;margin-bottom:36px}
.art{background:#fff;border:1px solid rgba(227,231,235,.9);border-radius:12px;padding:26px 22px;text-align:left;display:flex;flex-direction:column;transition:.22s}
.art:hover{transform:translateY(-4px);box-shadow:0 16px 34px rgba(35,51,74,.10);border-color:var(--teal)}
.art .cat{font-size:11px;font-weight:700;color:var(--teal-dark);text-transform:uppercase;letter-spacing:1.3px;margin-bottom:12px}
.art b{color:var(--navy);font-size:16px;font-weight:700;line-height:1.35;margin-bottom:16px;flex:1}
.art .more{color:var(--teal-dark);font-size:14px;font-weight:600}

/* FAQ */
.faq{max-width:860px;margin:0 auto;text-align:left}
.faq details{background:#fff;border:1px solid rgba(227,231,235,.9);border-radius:12px;margin-bottom:12px;overflow:hidden}
.faq summary{padding:22px 26px;font-weight:600;color:var(--navy);cursor:pointer;list-style:none;display:flex;justify-content:space-between;gap:16px;align-items:center;font-size:16.5px}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";color:var(--teal);font-size:24px;font-weight:400;line-height:1}
.faq details[open] summary::after{content:"−"}
.faq p{padding:0 26px 24px;color:var(--txt);font-size:15.5px;line-height:1.65}

/* bandeau contact / formulaire */
.form-card{background:#fff;border-radius:16px;padding:40px;max-width:640px;margin:0 auto;text-align:left;box-shadow:0 18px 44px rgba(35,51,74,.09)}
.form-card label{display:block;font-size:14px;font-weight:600;color:var(--navy);margin:16px 0 6px}
.form-card input,.form-card textarea,.form-card select{width:100%;padding:13px 16px;border:1px solid var(--light);border-radius:9px;font-family:inherit;font-size:15px;color:var(--navy);background:var(--white)}
.form-card input:focus,.form-card textarea:focus{outline:none;border-color:var(--teal)}
.form-card .btn{width:100%;margin-top:24px}
.form-note{font-size:13px;color:var(--txt);margin-top:14px;text-align:center}

/* split 2 colonnes texte + visuel */
.split{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:center;text-align:left}
.split h2{font-size:clamp(28px,3.2vw,42px);margin-bottom:20px}
.split p{font-size:16.5px;margin-bottom:16px}
.split .ctas{margin-top:26px}

/* prose (CGU/CGV, contenus longs) */
.prose{max-width:820px;margin:0 auto;text-align:left}
.prose h2{font-size:26px;margin:38px 0 14px}
.prose h3{font-size:19px;margin:26px 0 10px}
.prose p,.prose li{font-size:16px;color:var(--txt);line-height:1.7;margin-bottom:12px}
.prose ul{padding-left:22px;margin-bottom:16px}

@media(max-width:900px){
  .tl{grid-template-columns:repeat(2,1fr)}
  .arts{grid-template-columns:repeat(2,1fr)}
  .grid2,.grid3,.checks,.split,.kpis-row{grid-template-columns:1fr}
  .split{gap:32px}
  .page-hero{padding:56px 0 50px}
}
@media(max-width:620px){
  .arts,.tl{grid-template-columns:1fr}
  .form-card{padding:28px 22px}
}

/* ---------- radar mobile ----------
   En dessous de ~700px, le radar 380px + ses etiquettes laterales (-110/-100px)
   depassaient la largeur du viewport : la page scrollait horizontalement et les
   etiquettes "Confiance" / "Collaborateurs" etaient coupees. On redimensionne
   le radar au lieu de le mettre a l'echelle, pour garder un texte net. */
@media(max-width:700px){
  .radar-wrap{padding:14px 0 0}
  .radar{width:238px;height:238px;transform:none;margin:0 auto}
  .rl{font-size:12px;padding:5px 9px;box-shadow:0 2px 7px rgba(51,67,89,.14)}
  .rl.top{top:-14px}
  .rl.bottom{bottom:-14px}
  .rl.left{left:-54px}
  .rl.right{right:-56px}
  .rcenter{width:96px;height:96px;border-width:2.5px}
  .rcenter b{font-size:26px}
  .rcenter span{font-size:11px;margin-top:2px}
}

/* ============ MENU MOBILE ============ */
@media(max-width:900px){
  .nav{position:relative}
  .nav-links{display:none;position:absolute;top:100%;left:0;right:0;background:#fff;border:1px solid var(--light);border-radius:0 0 14px 14px;box-shadow:0 20px 44px rgba(35,51,74,.14);flex-direction:column;align-items:stretch;gap:0;padding:10px;max-height:calc(100vh - 80px);overflow-y:auto}
  .nav-links.open{display:flex}
  .nav-links>a,.nav-links .drop>span{padding:14px 16px;border-radius:9px;font-size:16px}
  .nav-links>a:hover{background:var(--white)}
  .nav-links .drop{width:100%}
  .nav-links .drop>span{display:flex;justify-content:space-between;width:100%}
  .nav-links .drop>span::after{transform:rotate(45deg);transition:.2s}
  .nav-links .drop.open>span::after{transform:rotate(-135deg)}
  .menu{position:static;transform:none;opacity:1;visibility:visible;box-shadow:none;border:0;border-left:2px solid var(--light);border-radius:0;margin:0 0 8px 16px;padding:0 0 0 8px;min-width:0;display:none}
  .drop.open .menu{display:block}
  .drop:hover .menu{transform:none}
  .lang{padding:14px 16px}
  .burger span:nth-child(1),.burger span:nth-child(3){transition:.22s}
  .burger.open span:nth-child(1){transform:translateY(7px) rotate(45deg)}
  .burger.open span:nth-child(2){opacity:0}
  .burger.open span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
}


/* ============================================================================
   COUCHE « INSTRUMENT » — direction artistique 2026
   Ajoutee APRES les regles historiques : elle les surcharge sans les supprimer.
   Aucune modification des 39 fichiers HTML n'est necessaire.
   Pour revenir en arriere : supprimer tout ce qui suit ce commentaire.
   ============================================================================ */

:root{
  --e1:0 1px 2px rgba(21,34,56,.04),0 2px 6px rgba(21,34,56,.04);
  --e2:0 2px 4px rgba(21,34,56,.04),0 12px 26px -8px rgba(21,34,56,.16);
  --e3:0 4px 8px rgba(21,34,56,.05),0 20px 44px -12px rgba(21,34,56,.18);
  --glow:0 8px 24px -6px rgba(63,180,177,.42);
  --hair:1px solid rgba(35,51,74,.07);
  --line:rgba(35,51,74,.14);
  --r-md:12px;
  --r-lg:16px;
  --r-xl:18px;
  --ease:cubic-bezier(.2,.7,.3,1);
  --dur:.2s;
}

/* ---------- matiere : grain de fond, 3,5 %, zero requete ---------- */
body::after{content:"";position:fixed;inset:0;pointer-events:none;z-index:1;opacity:.035;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)'/%3E%3C/svg%3E");background-size:140px 140px}

/* ---------- rythme typographique : le H1 redevient le sommet ---------- */
h1{font-size:clamp(31px,5.4vw,66px);line-height:1.04;letter-spacing:-.036em}
.hero h1,.page-hero h1{font-size:clamp(31px,5.2vw,66px);line-height:1.04;letter-spacing:-.036em}
h2.sec{font-size:clamp(28px,3.9vw,46px);line-height:1.08;letter-spacing:-.03em;margin-bottom:44px}
h2.sec.sm{font-size:clamp(26px,3.2vw,38px)}
.dims-sec h2{font-size:clamp(30px,4.4vw,54px);letter-spacing:-.032em;line-height:1.06}
.after h2,.final h2{font-size:clamp(29px,4.2vw,52px);letter-spacing:-.035em;line-height:1.06}
.after .sub,.final .l{font-size:clamp(19px,2.4vw,30px)}
.hero .lead{font-size:clamp(15.5px,1.5vw,18px)}
.page-hero .lead{font-size:clamp(16px,1.6vw,18.5px)}
p.sub{font-size:clamp(15.5px,1.5vw,17px)}
.split h2{font-size:clamp(26px,3.2vw,42px);letter-spacing:-.03em}
.fonds h3{font-size:clamp(23px,2.6vw,34px);letter-spacing:-.03em}
.card b,.card h3,.plan h3,.dim b,.who b,.step b,.tl .s b,.art b{letter-spacing:-.015em}
h1,h2,h3,.hero .lead,.page-hero .lead,p.sub,.card p,.dim p,.plan li,.card li{text-wrap:pretty}

/* chiffres tabulaires : les colonnes de prix s'alignent au chiffre pres */
.plan .price,.plan .size,.kpi b,.stat b,.fc b,.tl .s .when,.rcenter b{font-variant-numeric:tabular-nums}

/* ---------- le trait teal : signature repetee ---------- */
.eyebrow{display:inline-flex;align-items:center;gap:12px;font-size:11.5px;font-weight:900;letter-spacing:.17em;text-transform:uppercase;margin-bottom:18px}
.eyebrow::before{content:"";display:block;width:26px;height:2px;background:currentColor;flex:0 0 26px}
.eyebrow.up{font-size:11.5px;letter-spacing:.17em;font-weight:900}
.center .eyebrow,.page-hero .eyebrow{justify-content:center}
.badge-w{font-size:11.5px;letter-spacing:.16em;box-shadow:var(--e1)}
.plan .kind,.art .cat{font-size:10.5px;font-weight:900;letter-spacing:.15em}
.logos p{font-size:11.5px;letter-spacing:.17em;font-weight:900}

/* ---------- separateurs de section : filet degrade ---------- */
.page-hero + .sec-white,
.sec-white + .sec-white,
.sec-white + .tests-sec,
.tests-sec + .sec-white,
.sec-light + .sec-light,
.sec-light + .blog-sec,
.blog-sec + .sec-light,
.blog-sec + .blog-sec,
.who-sec + .sec-light,
.steps-sec + .sec-light,
.sec-light + .who-sec,
.sec-light + .steps-sec,
.sec-grey + .sec-grey,
.sec-grey + .price-sec,
.price-sec + .sec-grey,
.page-hero + div + .sec-white,
.sec-white + div + .sec-white,
.sec-light + div + .sec-light,
.sec-light + div + .blog-sec,
.blog-sec + div + .sec-light,
.sec-grey + div + .sec-grey{border-top:1px solid transparent;border-image:linear-gradient(90deg,transparent,rgba(35,51,74,.16) 18%,rgba(35,51,74,.16) 82%,transparent) 1}

/* ---------- echelle d'elevation + survols travailles ---------- */
.card,.dim,.who,.plan,.step,.art,.test,.tl .s,.offer,.fc,.form-card{transition:transform var(--dur) var(--ease),box-shadow var(--dur) var(--ease),border-color var(--dur),background var(--dur)}
.card,.dim,.art{background:#fff;border:var(--hair);border-radius:var(--r-lg);box-shadow:var(--e1);position:relative;overflow:hidden}
.card:hover,.dim:hover,.art:hover{transform:translateY(-3px);box-shadow:var(--e2);border-color:rgba(63,180,177,.5)}
.card::before,.dim::before,.art::before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,var(--teal),rgba(63,180,177,0));opacity:0;transition:opacity var(--dur)}
.card:hover::before,.dim:hover::before,.art:hover::before{opacity:1}
.who,.step,.test{border-radius:var(--r-lg);box-shadow:0 1px 2px rgba(21,34,56,.06),0 10px 24px -12px rgba(21,34,56,.3)}
.who:hover,.step:hover,.test:hover{transform:translateY(-3px);box-shadow:0 4px 8px rgba(21,34,56,.08),0 22px 46px -14px rgba(21,34,56,.4)}
.offer{border-radius:var(--r-lg)}
.offer:hover{transform:translateY(-3px);border-color:rgba(63,180,177,.45)}
.fc{border-radius:var(--r-md)}
.fc:hover{background:rgba(255,255,255,.09);border-color:rgba(63,180,177,.35)}
.fonds{border-radius:var(--r-xl)}
.form-card{border-radius:var(--r-xl);box-shadow:var(--e3)}
.dim .ic,.card .ic{background:linear-gradient(135deg,var(--teal),var(--teal-dark));box-shadow:0 6px 16px -5px rgba(63,180,177,.5)}
.sec-navy .card .ic,.who .ic,.offer .ic{background:rgba(63,180,177,.16);box-shadow:none}

/* ---------- puces de check : pastilles teal ----------
   Geometrie (position verticale, largeur de gouttiere) : voir la section
   « ALIGNEMENT » en fin de feuille. Ici on ne garde que l'habillage. */
.plan li::before,.card li::before,.checks li::before{content:"✓";border-radius:50%;background:rgba(63,180,177,.13);font-weight:900}
.sec-navy .card li::before,.sec-navy .checks li::before{background:rgba(63,180,177,.2)}
.sec-teal .checks li::before,.sec-teal .card li::before{background:rgba(35,51,74,.1)}

/* ---------- tableau de prix : la page de conversion ---------- */
.plan{display:grid;grid-template-rows:auto auto auto auto 1fr auto auto;align-content:start;border-radius:var(--r-lg);border:var(--hair);box-shadow:var(--e1);overflow:visible;padding:30px 24px 28px}
.plan:hover{transform:translateY(-4px);box-shadow:var(--e2);border-color:var(--teal)}
.plan .price{padding-bottom:20px;margin-bottom:20px;border-bottom:1px solid rgba(35,51,74,.09);font-size:clamp(27px,2.6vw,36px);letter-spacing:-.035em}
.plan ul{margin-bottom:24px}
.plan li{padding-top:4px;padding-bottom:4px;font-size:14px}
.plan .btn{min-height:48px}
.plan .note{font-size:12.5px;font-weight:500;color:var(--accent)}
.plan.pop{border:1.5px solid var(--teal);box-shadow:var(--e3),0 10px 30px -10px rgba(63,180,177,.32);transform:translateY(-8px);padding-top:38px}
.plan.pop:hover{transform:translateY(-12px);box-shadow:0 6px 12px rgba(21,34,56,.05),0 28px 56px -14px rgba(21,34,56,.24),0 14px 38px -12px rgba(63,180,177,.4)}
.plan.pop .note{color:var(--teal-dark);font-weight:700}
.plan .badge{top:14px;left:auto;right:14px;transform:none;background:rgba(63,180,177,.12);color:var(--teal-dark);font-size:10.5px;font-weight:900;letter-spacing:.14em;padding:5px 11px;box-shadow:none}
@media(max-width:900px){
  .plan.pop{transform:none;padding-top:38px}
  .plan.pop:hover{transform:translateY(-4px)}
}

/* ---------- timeline : une progression, pas une grille ---------- */
.tl{position:relative;padding-top:22px}
/* Pointilles alignes sur le CENTRE des pastilles (et non au-dessus).
   Geometrie, du haut de .tl :
     22px padding-top de .tl + 22px margin-top de .s  -> haut de carte a 44px
     +1px de bordure de .s (le bloc conteneur de .n est la boite de padding)
     -22px (.n top:-22px)                             -> haut de pastille a 23px
     +22px (moitie des 44px de hauteur de .n)         -> centre a 45px
   Le trait fait 1px de haut : 45 - 0.5 = 44.5px pour tomber pile dessus. */
.tl::before{content:"";position:absolute;top:44.5px;left:10%;right:10%;height:1px;background:repeating-linear-gradient(90deg,rgba(35,51,74,.18) 0 4px,transparent 4px 9px)}
.tl .s{overflow:visible;margin-top:22px;padding-top:34px;border-radius:14px;box-shadow:0 1px 2px rgba(21,34,56,.04)}
.tl .s:hover{transform:translateY(-3px);box-shadow:var(--e2);border-color:rgba(63,180,177,.5)}
.tl .s .n{position:absolute;top:-22px;left:50%;transform:translateX(-50%);margin:0;background:#fff;border:1.5px solid var(--teal);color:var(--teal-dark);box-shadow:0 0 0 6px var(--white),0 4px 12px -4px rgba(63,180,177,.4)}
.sec-white .tl .s .n{box-shadow:0 0 0 6px var(--pure),0 4px 12px -4px rgba(63,180,177,.4)}
.sec-grey .tl .s .n{box-shadow:0 0 0 6px var(--light),0 4px 12px -4px rgba(63,180,177,.4)}
.tl .s .when{background:rgba(35,51,74,.06);border-radius:8px;font-weight:700;letter-spacing:.04em}

/* ---------- chiffres cles : un bloc segmente ---------- */
.kpis-row{gap:0;background:var(--pure);border:var(--hair);border-radius:var(--r-xl);box-shadow:var(--e1);overflow:hidden}
.kpi{padding:30px 20px;border-left:1px solid rgba(35,51,74,.07)}
.kpi:first-child{border-left:0}
.kpi b{color:var(--navy);letter-spacing:-.04em;font-size:clamp(31px,3.8vw,50px)}
.kpi>span{font-size:13px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--accent)}
.sec-navy .kpis-row{background:rgba(255,255,255,.05);border-color:rgba(255,255,255,.1);box-shadow:none}
.sec-navy .kpi{border-left-color:rgba(255,255,255,.1)}
.sec-navy .kpi:first-child{border-left:0}
.sec-navy .kpi>span{color:rgba(255,255,255,.8)}

/* ---------- FAQ : une liste unifiee ---------- */
.faq{background:var(--pure);border:var(--hair);border-radius:var(--r-xl);box-shadow:var(--e1);overflow:hidden}
.faq details{background:transparent;border:0;border-top:1px solid rgba(35,51,74,.07);border-radius:0;margin-bottom:0}
.faq details:first-child{border-top:0}
.faq summary{transition:background .18s}
.faq summary:hover{background:var(--white)}
.faq summary::after{display:flex;align-items:center;justify-content:center;width:28px;height:28px;flex:0 0 28px;border-radius:50%;background:rgba(63,180,177,.11);color:var(--teal-dark);font-size:16px;font-weight:600;transition:background .18s,color .18s}
.faq details[open] summary::after{background:var(--teal);color:#fff}

/* ---------- boutons : etats plus fermes ---------- */
.btn{min-height:48px;font-weight:700;transition:background var(--dur),border-color var(--dur),color var(--dur),box-shadow var(--dur),transform var(--dur)}
.btn-teal{box-shadow:0 8px 24px -6px rgba(63,180,177,.42)}
.btn-teal:hover{transform:translateY(-2px);box-shadow:0 14px 30px -8px rgba(63,180,177,.58)}
.btn-outline{background:var(--pure);border-color:rgba(35,51,74,.18)}
.btn-soft:hover{transform:translateY(-2px);box-shadow:var(--e2)}

/* ---------- accessibilite : focus clavier visible partout ---------- */
a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--teal);outline-offset:3px;border-radius:10px}
.form-card input:focus,.form-card textarea:focus,.form-card select:focus{border-color:var(--teal);box-shadow:0 0 0 3px rgba(63,180,177,.16)}
.social a,.burger{min-width:44px;min-height:44px}
.social a{width:44px;height:44px}
.burger{align-items:center;justify-content:center}

/* ---------- header ---------- */
header{background:rgba(255,255,255,.88)}
.nav-links .cur{border-bottom:0;position:relative;font-weight:600}
.nav-links .cur::after{content:"";position:absolute;left:0;right:0;bottom:-7px;height:2px;background:var(--teal);border-radius:2px}
.menu{border:var(--hair);box-shadow:var(--e3)}

/* ---------- hero + radar Pulse 360 ---------- */
.hero{position:relative;background:var(--pure)}
.hero::before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(120% 92% at 76% 42%,rgba(63,180,177,.085),rgba(255,255,255,0) 62%)}
.hero-grid{position:relative}
.pill{background:var(--pure);border-color:rgba(63,180,177,.34);box-shadow:var(--e1);font-size:13px;font-weight:700;display:inline-flex;align-items:center;gap:10px}
.pill::before{content:"";display:block;width:6px;height:6px;border-radius:50%;background:var(--teal);box-shadow:0 0 0 4px rgba(63,180,177,.18);flex:0 0 6px}
.radar::before{content:"";position:absolute;inset:-8%;border-radius:50%;background:conic-gradient(from 0deg,rgba(63,180,177,.28),rgba(63,180,177,.05) 12%,rgba(63,180,177,0) 26%,rgba(63,180,177,0));animation:kgSweep 24s linear infinite}
.rc{border-width:1.5px;border-color:rgba(63,180,177,.42)}
.rc.c1{animation:kgRingIn .8s var(--ease) .05s both,kgBreathe 7s ease-in-out 1.4s infinite}
.rc.c2{animation:kgRingIn .8s var(--ease) .15s both,kgBreathe 7s ease-in-out 2.2s infinite}
.rc.c3{animation:kgRingIn .8s var(--ease) .25s both,kgBreathe 7s ease-in-out 3s infinite}
.rc.c4{animation:kgRingIn .8s var(--ease) .35s both,kgBreathe 7s ease-in-out 3.8s infinite}
.rl{border-radius:999px;font-weight:800;letter-spacing:-.01em;box-shadow:0 1px 2px rgba(21,34,56,.05),0 6px 16px -4px rgba(21,34,56,.14);animation:kgFadeIn .5s ease-out both}
.rl.top{animation-delay:.5s}
.rl.right{animation-delay:.6s}
.rl.bottom{animation-delay:.7s}
.rl.left{animation-delay:.8s}
.rcenter{border-width:2px;box-shadow:0 6px 22px rgba(63,180,177,.2);animation:kgFadeIn .6s ease-out .42s both,kgCoreGlow 7s ease-in-out 1.4s infinite}
.rcenter b{color:var(--navy);letter-spacing:-.03em}
.rcenter span{color:var(--teal-dark);font-weight:900;letter-spacing:.18em;font-size:11px}
@keyframes kgSweep{to{transform:rotate(360deg)}}
@keyframes kgRingIn{from{opacity:0;transform:scale(.78)}to{opacity:1;transform:scale(1)}}
@keyframes kgBreathe{0%,100%{opacity:.72}50%{opacity:1}}
@keyframes kgFadeIn{from{opacity:0}to{opacity:1}}
@keyframes kgCoreGlow{0%,100%{box-shadow:0 6px 22px rgba(63,180,177,.2)}50%{box-shadow:0 10px 34px rgba(63,180,177,.34)}}

/* ---------- reveal au scroll (pose par kg.js) ---------- */
.kg-rv{opacity:0;translate:0 16px;transition:opacity .5s var(--ease),translate .5s var(--ease),transform var(--dur) var(--ease),box-shadow var(--dur) var(--ease),border-color var(--dur),background var(--dur)}
.kg-rv.in{opacity:1;translate:0 0}

/* ---------- respiration + grilles fluides : plus aucun point de rupture sec ---------- */
section{padding:clamp(52px,7vw,90px) 0}
.hero{padding:clamp(52px,7vw,96px) 0 clamp(56px,7.5vw,100px)}
.page-hero{padding:clamp(48px,6.5vw,84px) 0 clamp(44px,6vw,76px)}
.dims-sec,.after{padding:clamp(52px,7.5vw,96px) 0 clamp(56px,8vw,104px)}
.who-sec,.price-sec,.steps-sec,.tests-sec{padding:clamp(52px,7vw,90px) 0}
.blog-sec{padding:clamp(52px,6.6vw,84px) 0}
.final{padding:clamp(60px,8vw,104px) 0}
.wrap{padding:0 clamp(16px,2vw,24px)}
.hero-grid{grid-template-columns:repeat(auto-fit,minmax(min(420px,100%),1fr));gap:clamp(28px,4vw,56px)}
.grid4{grid-template-columns:repeat(auto-fit,minmax(min(228px,100%),1fr))}
.grid3{grid-template-columns:repeat(auto-fit,minmax(min(280px,100%),1fr))}
.grid2{grid-template-columns:repeat(auto-fit,minmax(min(320px,100%),1fr))}
.plans{grid-template-columns:repeat(auto-fit,minmax(min(248px,100%),1fr));align-items:stretch}
.arts{grid-template-columns:repeat(auto-fit,minmax(min(216px,100%),1fr))}
.tl{grid-template-columns:repeat(auto-fit,minmax(min(176px,100%),1fr))}
.kpis-row{grid-template-columns:repeat(auto-fit,minmax(min(200px,100%),1fr))}
.checks{grid-template-columns:repeat(auto-fit,minmax(min(300px,100%),1fr))}
.split,.fonds{grid-template-columns:repeat(auto-fit,minmax(min(340px,100%),1fr))}
.fgrid{grid-template-columns:repeat(auto-fit,minmax(min(150px,100%),1fr))}
.foot{grid-template-columns:repeat(auto-fit,minmax(min(250px,100%),1fr))}
@media(max-width:900px){.tl::before{display:none}}
@media(max-width:620px){.ctas .btn{width:100%}}

/* ---------- mouvement reduit : tout se fige ---------- */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
  .kg-rv{opacity:1!important;translate:0 0!important}
  html{scroll-behavior:auto}
}


/* ---------- mur de videos natif (voir assets/kg-videos.js + api/youtube.js) ---------- */
.vids{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(300px,100%),1fr));gap:24px;text-align:left}
.vid{background:var(--pure);border:var(--hair);border-radius:var(--r-lg);box-shadow:var(--e1);overflow:hidden;display:flex;flex-direction:column;transition:transform var(--dur) var(--ease),box-shadow var(--dur) var(--ease),border-color var(--dur)}
.vid:hover{transform:translateY(-3px);box-shadow:var(--e2);border-color:rgba(63,180,177,.5)}
.vid-media{position:relative;margin:0;aspect-ratio:16/9;background:var(--navy);overflow:hidden}
.vid-media img{width:100%;height:100%;object-fit:cover;transition:transform .4s var(--ease),opacity var(--dur)}
.vid:hover .vid-media img{transform:scale(1.04)}
.vid-frame{width:100%;height:100%;border:0;display:block}
.vid-play{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;width:100%;height:100%;background:linear-gradient(180deg,rgba(21,34,56,.05),rgba(21,34,56,.42));border:0;cursor:pointer;padding:0;transition:background var(--dur)}
.vid-play::before{content:"";position:absolute;width:66px;height:66px;border-radius:50%;background:rgba(255,255,255,.94);box-shadow:0 10px 28px -8px rgba(21,34,56,.5);transition:transform var(--dur) var(--ease),background var(--dur)}
.vid-play svg{position:relative;width:26px;height:26px;color:var(--navy);margin-left:3px;transition:color var(--dur)}
.vid-play:hover{background:linear-gradient(180deg,rgba(21,34,56,.05),rgba(21,34,56,.52))}
.vid-play:hover::before{transform:scale(1.08);background:var(--teal)}
.vid-play:hover svg{color:#fff}
.vid-body{padding:24px 24px 26px;display:flex;flex-direction:column;flex:1}
.vid-date{font-size:10.5px;font-weight:900;letter-spacing:.15em;text-transform:uppercase;color:var(--teal-dark);margin-bottom:12px}
.vid-body b{color:var(--navy);font-size:17.5px;font-weight:700;line-height:1.35;letter-spacing:-.015em;margin-bottom:10px}
.vid-body p{font-size:14.5px;line-height:1.6;color:var(--txt);margin:0 0 16px;flex:1;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.vid-link{font-size:13.5px;font-weight:700;color:var(--teal-dark)}
.vid-link:hover{color:var(--navy)}


/* ---------- captures produit encadrees (.shots) ---------- */
.shots{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(320px,100%),1fr));gap:24px;text-align:left}
.shot{background:var(--pure);border:var(--hair);border-radius:var(--r-lg);box-shadow:var(--e1);overflow:hidden;display:flex;flex-direction:column;transition:transform var(--dur) var(--ease),box-shadow var(--dur) var(--ease),border-color var(--dur)}
.shot:hover{transform:translateY(-3px);box-shadow:var(--e2);border-color:rgba(63,180,177,.5)}
.shot-chrome{display:flex;align-items:center;gap:7px;padding:11px 14px;background:var(--white);border-bottom:1px solid rgba(35,51,74,.07)}
.shot-chrome i{display:block;width:9px;height:9px;border-radius:50%;background:rgba(35,51,74,.16)}
.shot-chrome span{margin-left:8px;font-size:11px;font-weight:600;color:var(--accent);letter-spacing:.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.shot-media{margin:0;background:var(--white);overflow:hidden;position:relative}
.shot-media img{display:block;width:100%;height:auto}
.shot-body{padding:22px 24px 24px;display:flex;flex-direction:column;flex:1}
.shot-body .step-n{font-size:10.5px;font-weight:900;letter-spacing:.15em;text-transform:uppercase;color:var(--teal-dark);margin-bottom:10px}
.shot-body b{color:var(--navy);font-size:17.5px;font-weight:700;line-height:1.35;letter-spacing:-.015em;margin-bottom:8px}
.shot-body p{margin:0;font-size:14.5px;line-height:1.6;color:var(--txt)}


/* ---------- equipe avec photos (.team / .tm) ---------- */
.team{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(248px,100%),1fr));gap:22px;text-align:left}
.tm{background:var(--pure);border:var(--hair);border-radius:var(--r-lg);box-shadow:var(--e1);overflow:hidden;display:flex;flex-direction:column;transition:transform var(--dur) var(--ease),box-shadow var(--dur) var(--ease),border-color var(--dur)}
.tm:hover{transform:translateY(-3px);box-shadow:var(--e2);border-color:rgba(63,180,177,.5)}
.tm-photo{position:relative;margin:0;aspect-ratio:1/1;background:var(--light);overflow:hidden}
.tm-photo img{display:block;width:100%;height:100%;object-fit:cover;object-position:center 22%;transition:transform .5s var(--ease)}
.tm:hover .tm-photo img{transform:scale(1.045)}
.tm-photo::after{content:"";position:absolute;left:0;right:0;bottom:0;height:34%;background:linear-gradient(to top,rgba(21,34,56,.38),rgba(21,34,56,0));pointer-events:none}
.tm-body{padding:22px 22px 24px;display:flex;flex-direction:column;flex:1}
.tm-body b{display:block;color:var(--navy);font-size:18px;font-weight:700;letter-spacing:-.015em;margin-bottom:6px}
.tm-role{display:block;color:var(--teal-dark);font-size:11px;font-weight:900;letter-spacing:.14em;text-transform:uppercase;margin-bottom:14px}
.tm-body p{margin:0 0 16px;font-size:14.5px;line-height:1.55;color:var(--txt);flex:1}
.tm .tags{margin:0}


/* ---------- fiches formation Qualiopi (.fiches / .fiche) ---------- */
.fiches{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(380px,100%),1fr));gap:20px;align-items:stretch;text-align:left}
.fiche{position:relative;background:var(--pure);border:var(--hair);border-radius:var(--r-lg);box-shadow:var(--e1);padding:30px 28px;display:flex;flex-direction:column;overflow:hidden;transition:transform var(--dur) var(--ease),box-shadow var(--dur) var(--ease),border-color var(--dur)}
.fiche:hover{transform:translateY(-3px);box-shadow:var(--e2);border-color:rgba(63,180,177,.5)}
.fiche::before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,var(--teal),rgba(63,180,177,0))}
.fiche-head{display:flex;justify-content:space-between;align-items:flex-start;gap:18px;margin-bottom:16px}
.fiche-head h3{margin:0 0 8px;font-size:21px;font-weight:700;color:var(--navy);letter-spacing:-.02em;line-height:1.25}
.fiche-pub{display:inline-block;background:rgba(35,51,74,.06);color:var(--navy);font-size:11px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;padding:4px 10px;border-radius:7px}
.fiche-price{text-align:right;flex:0 0 auto}
.fiche-price b{display:block;font-size:20px;font-weight:800;color:var(--navy);letter-spacing:-.03em;line-height:1.1;font-variant-numeric:tabular-nums}
.fiche-price span{display:block;font-size:11.5px;color:var(--accent);font-weight:600;margin-top:3px}
.fiche-meta{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}
.fiche-meta span{display:inline-flex;align-items:center;font-size:12.5px;font-weight:700;padding:5px 12px;border-radius:8px;font-variant-numeric:tabular-nums}
.fiche-meta .m-dur{background:rgba(63,180,177,.10);color:var(--teal-dark)}
.fiche-meta .m-fmt{background:rgba(35,51,74,.055);color:var(--navy)}
.fiche>p{margin:0 0 22px;font-size:15px;line-height:1.6;color:var(--txt)}
.fiche-obj{background:var(--white);border:1px solid rgba(35,51,74,.06);border-radius:var(--r-md);padding:20px 20px 18px;margin-bottom:18px}
.fiche-obj>span{display:flex;align-items:center;gap:10px;font-size:11px;font-weight:900;letter-spacing:.15em;text-transform:uppercase;color:var(--teal-dark);margin-bottom:14px}
.fiche-obj>span::before{content:"";display:block;width:18px;height:2px;background:currentColor;flex:0 0 18px}
.fiche-obj ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:9px}
.fiche-obj li{position:relative;padding-left:26px;font-size:14px;line-height:1.5;color:var(--txt)}
.fiche-obj li::before{content:"✓";position:absolute;left:0;top:3px;display:block;width:16px;height:16px;line-height:16px;text-align:center;border-radius:50%;background:rgba(63,180,177,.14);color:var(--teal-dark);font-size:9.5px;font-weight:900}
.fiche dl{margin:0 0 22px;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(140px,100%),1fr));gap:14px 20px;flex:1}
.fiche dl>div{border-left:2px solid rgba(63,180,177,.35);padding-left:12px}
.fiche dt{font-size:10.5px;font-weight:900;letter-spacing:.13em;text-transform:uppercase;color:var(--accent);margin-bottom:4px}
.fiche dd{margin:0;font-size:13.5px;line-height:1.45;color:var(--navy);font-weight:500}
.fiche-foot{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-top:18px;border-top:1px solid rgba(35,51,74,.09);flex-wrap:wrap}
.fiche-foot .p{font-size:16px;font-weight:800;color:var(--navy);letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.cat-sep{display:flex;align-items:center;gap:16px;margin:0 0 24px}
.cat-sep h3{margin:0;font-size:clamp(19px,2.1vw,24px);font-weight:800;color:var(--navy);letter-spacing:-.02em}
.cat-sep i{flex:1;height:1px;background:linear-gradient(90deg,rgba(35,51,74,.16),rgba(35,51,74,0))}
.cat-sep em{font-style:normal;font-size:12px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--accent);font-variant-numeric:tabular-nums}
.cert{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(300px,100%),1fr));gap:22px;text-align:left}
.cert-card{background:var(--navy);border-radius:var(--r-xl);padding:32px 30px;box-shadow:var(--e3)}
.cert-card .eyebrow{color:var(--teal)}
.cert-card b{display:block;color:#fff;font-size:19px;font-weight:700;letter-spacing:-.015em;line-height:1.3;margin-bottom:22px}


/* ---------- bloc Qualiopi : marque, mention legale, documents ---------- */
.qualiopi{display:grid;grid-template-columns:auto 1fr;gap:clamp(24px,3vw,44px);align-items:start;background:var(--pure);border:var(--hair);border-radius:var(--r-xl);box-shadow:var(--e1),0 20px 44px -16px rgba(21,34,56,.14);padding:clamp(26px,3vw,40px);text-align:left;max-width:1000px;margin:0 auto}
.qualiopi-mark{display:flex;align-items:center;justify-content:center;flex:0 0 auto;width:clamp(140px,15vw,190px);padding:18px;background:var(--white);border:1px solid rgba(35,51,74,.07);border-radius:var(--r-lg)}
.qualiopi-mark img{display:block;width:100%;height:auto}
.qualiopi-body>.eyebrow{color:var(--teal-dark)}
.qualiopi-body h3{margin:0 0 14px;font-size:clamp(21px,2.3vw,27px);font-weight:800;color:var(--navy);letter-spacing:-.025em;line-height:1.2}
.qualiopi-legal{margin:0 0 8px;font-size:15px;line-height:1.6;color:var(--txt)}
.qualiopi-legal b{color:var(--navy);font-weight:700}
.qualiopi-cats{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0 18px}
.qualiopi-cats span{display:inline-flex;align-items:center;background:rgba(63,180,177,.11);color:var(--teal-dark);font-size:11.5px;font-weight:900;letter-spacing:.1em;text-transform:uppercase;padding:6px 13px;border-radius:999px}
.qualiopi-ref{margin:0 0 22px;font-size:13.5px;color:var(--accent);font-variant-numeric:tabular-nums}
.qualiopi-docs{display:flex;gap:12px;flex-wrap:wrap}
.qualiopi-docs .btn{min-height:48px}
@media(max-width:680px){
  .qualiopi{grid-template-columns:1fr;justify-items:center;text-align:center}
  .qualiopi-body{text-align:center}
  .qualiopi-body>.eyebrow,.qualiopi-cats,.qualiopi-docs{justify-content:center}
  .qualiopi-docs .btn{width:100%}
}


/* ═══════════════════════════════════════════════════════════════════════════
   APPORTS LIVRAISON 3 (designer) — delta livraison 2 → livraison 3, 271 lignes
   Insere ICI, avant le bloc de correctifs Keep Growing qui clot la feuille :
   nos correctifs (ALIGNEMENT, couvertures livres blancs, cadre Pipedrive)
   restent donc les derniers de la cascade et gardent la main.
   ═══════════════════════════════════════════════════════════════════════════ */


/* ---------- correction de contraste AA sur les petits textes ----------
   Le teal fonce #2E9995 mesure ~3,4:1 sur blanc : suffisant pour un trait ou
   une icone (3:1), insuffisant pour du texte de 10 a 13 px (4,5:1 exige).
   Les surtitres gardent donc le trait teal, mais leur libelle passe en navy.
   Sur fond sombre le teal reste : il y mesure plus de 6:1.                */
.eyebrow{color:var(--navy)}
.eyebrow::before{background:var(--teal-dark)}
.art .cat,.plan .kind,.step-n,.vid-date,.fiche-obj>span,.tm-role{color:var(--navy)}
.fiche-obj>span::before{background:var(--teal-dark)}
.sec-navy .eyebrow,.sec-navy .art .cat,.cert-card .eyebrow,.qualiopi-body .eyebrow{color:var(--teal)}
.sec-navy .eyebrow::before,.cert-card .eyebrow::before{background:var(--teal)}
.qualiopi-body .eyebrow{color:var(--navy)}
.qualiopi-body .eyebrow::before{background:var(--teal-dark)}
/* metadonnees : le gris clair passe au texte courant, 7,2:1 sur blanc */
.plan .size,.fiche-price span,.vid-body p,.qualiopi-ref,.form-note,.kpi>span{color:var(--txt)}


/* ---------- .sig : signature d'auteur sous une citation ----------
   Le manifeste de la page A propos attribuait la citation en texte gras.
   Le site historique y montre la photo de l'auteur : elle existe deja dans
   le depot (assets/team/david-zaoui.jpg), elle n'etait simplement pas posee. */
.sig{display:flex;align-items:center;gap:14px;margin-top:20px;padding-top:16px;border-top:1px solid var(--light)}
.sig img{width:52px;height:52px;flex:0 0 52px;border-radius:50%;object-fit:cover;object-position:center top;border:2px solid rgba(63,180,177,.45)}
.sig b{display:block;font-size:15.5px;font-weight:700;color:var(--navy);letter-spacing:-.01em;line-height:1.3}
.sig span{display:block;font-size:13.5px;color:var(--txt);line-height:1.4}
.sec-navy .sig,.sec-gold .sig{border-top-color:rgba(255,255,255,.16)}
.sec-navy .sig b,.sec-gold .sig b{color:#fff}
.sec-navy .sig span,.sec-gold .sig span{color:rgba(255,255,255,.72)}
@media(max-width:520px){.sig img{width:46px;height:46px;flex:0 0 46px}}


/* ---------- « On vous accompagne » : chevauchement titre / sous-titre ----------
   .after h2 monte a 62px de police mais heritait d'une hauteur de ligne de
   0,89 : sa boite mesurait 55px, et le sous-titre de 54px demarrait 10px
   avant la fin du titre. Les deux se superposaient, ce qui donnait un titre
   visuellement desaligne des cartes situees dessous. */
.after h2{line-height:1.06;margin-bottom:16px}
.after .sub{margin-top:0}
@media(max-width:900px){.after h2{line-height:1.1}}


/* ---------- icone a cote du titre (retour David) ----------
   Les cartes d'offre posaient l'icone au-dessus du titre, ce qui creait deux
   blocs empiles et beaucoup d'air mort. L'icone passe a gauche du titre, sur la
   meme ligne optique ; la description garde toute la largeur.

   ARBITRAGE FUSION v3 : la regle du designer portait aussi sur .who. Elle y est
   retiree. .offer est une carte alignee a gauche, la grille 2 colonnes y marche.
   .who est une carte CENTREE (text-align:center) : en grille, chaque titre se
   centre DANS SA COLONNE, donc a une distance differente de son icone selon sa
   longueur — « Startup / Scale-up » et « Fonds PE » ne tombaient plus sur le
   meme axe, et le paragraphe (colonne 1/-1) restait centre sur la carte
   entiere. Mesure a 134 px d'ecart en 1440 et 162 px en 390 (check_align.py,
   check « who », 8 items en echec). .who reste donc empile et centre.
   Seule la reduction d'icone du designer (66 -> 54 px) est conservee. */
.offer{display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:18px;align-items:center}
.offer .ic{margin:0;grid-column:1;grid-row:1}
.offer b{margin:0;grid-column:2;grid-row:1;align-self:center}
.offer p{grid-column:1/-1;grid-row:2;margin:20px 0 0}
.who .ic{width:54px;height:54px}
.who .ic svg{width:26px;height:26px}
@media(max-width:520px){
  .offer .ic{width:54px;height:54px}
  .offer .ic svg{width:26px;height:26px}
  .offer p,.who p{margin-top:16px}
}


/* ---------- jamais de bloc orphelin en fin de grille (retour David) ----------
   auto-fit remplissait autant de colonnes que la largeur permettait : quatre
   blocs tombaient en 3 + 1 en 1440 (cycle d'investissement) et en 768 (les
   quatre dimensions, profils, chiffres, etapes). Les grilles a cardinalite
   fixe passent donc par des comptes explicites : 4 → 2 → 1 et 3 → 1, jamais
   un reste de 1 seul bloc sur sa ligne. */
.grid4,.plans,.arts{grid-template-columns:repeat(4,minmax(0,1fr))}
.grid3{grid-template-columns:repeat(3,minmax(0,1fr))}
.fgrid{grid-template-columns:repeat(2,minmax(0,1fr))}
@media(max-width:1080px){
  .grid4,.plans,.arts{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:900px){
  .grid3{grid-template-columns:minmax(0,1fr)}
}
@media(max-width:620px){
  .grid4,.plans,.arts,.fgrid{grid-template-columns:minmax(0,1fr)}
}


/* ---------- icone centree dans le cercle d'avatar (retour David) ----------
   .av etait en display:block : l'icone se posait en haut a gauche du cercle,
   decalee de 11px sur les deux axes. */
/* .test .id span{display:block} (0,2,1) l'emportait sur .test .av (0,2,0) :
   l'avatar etait traite comme une ligne de texte. On remonte a 0,3,0. */
.test .id .av{display:inline-flex;align-items:center;justify-content:center;flex:0 0 44px}
.test .id .av svg{display:block}


/* ---------- chiffres cles de la homepage : sortis de leur boite ----------
   Les quatre chiffres etaient enfermes dans des pavés navy a coins arrondis,
   quatre blocs pleins qui pesaient plus que le reste de la page. Ils passent
   en chiffres nus sur le fond de section, separes par un simple filet : c'est
   le chiffre qui porte, plus le contenant. */
.stats-sec{padding:42px 0 52px}
.stats-sec .grid4{gap:0;max-width:1060px;margin:0 auto}
.stat{background:transparent;border-radius:0;text-align:center;padding:0 24px;border-left:1px solid rgba(35,51,74,.13);display:flex;flex-direction:column;justify-content:center;align-items:center}
.stat:first-child{border-left:0}
.stat span{max-width:22ch}
.stat b{color:var(--navy);font-size:clamp(40px,4.6vw,64px);font-weight:800;letter-spacing:-.045em;word-spacing:.14em;line-height:1}
.stat span{color:var(--txt);font-size:12.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;line-height:1.4;margin-top:12px}
@media(max-width:1080px){
  .stat{padding:18px 22px}
  .stat:nth-child(3){border-left:0}
}
@media(max-width:620px){
  .stat{border-left:0;border-top:1px solid rgba(35,51,74,.13);padding:20px 0}
  .stat:first-child{border-top:0;padding-top:0}
}


/* ---------- bandeau clients : la preuve d'autorite (retour David) ----------
   Le bandeau etait blanc, comme la section de temoignages juste en dessous :
   les deux se confondaient et la preuve la plus immediate du site passait
   inapercue. Il prend son propre fond, teal pale de la charte, et gagne en
   presence : logos a 52px au lieu de 38.
   mix-blend-mode:multiply fait disparaitre les fonds blancs des PNG sur ce
   fond teinte, sans avoir a retoucher les fichiers. */
.logos{background:var(--teal-pale);padding:66px 0 70px;position:relative}
/* « Ils nous font confiance » etait un surtitre de 11,5px. Pour un argument
   qui aligne Alcatel, Sage, La Poste et Krys, c'est un titre : bas de casse,
   40px, graisse 800. Le texte est inchange, seul son traitement change. */
.logos p{color:var(--navy);opacity:1;margin-bottom:46px;font-size:clamp(27px,3.1vw,42px);font-weight:800;letter-spacing:-.032em;line-height:1.1;text-transform:none}
.logos .row{gap:78px}
.logos .row img{height:52px;filter:grayscale(1);opacity:.8;mix-blend-mode:multiply}
.logos .row img:hover{filter:grayscale(1);opacity:1}
@media(max-width:900px){
  .logos{padding:54px 0 58px}
  .logos .row{gap:56px}
  .logos .row img{height:44px}
}
@media(max-width:620px){
  .logos{padding:44px 0 48px}
  .logos p{margin-bottom:32px}
  .logos .row{gap:44px}
  .logos .row img{height:36px}
}


/* ═══════════ HARMONIE DES FONDS — trois surfaces, pas cinq ═══════════
   Constat (retour David) : la page empilait cinq fonds differents — blanc,
   teal pale, #F7F9FA, #E3E7EB et trois navys distincts — d'ou l'impression
   de melange et de coutures visibles entre les blocs sombres.

   Le systeme retenu :
     1. BLANC #fff      le contenu qui doit se lire
     2. GRIS #F7F9FA    l'alternance, respiration entre deux blocs blancs
     3. NAVY aplat      l'autorite — deux moments seulement dans la page
   Le teal redevient un accent (filets, boutons, chiffres) et ne sert plus
   jamais de fond pleine largeur. #E3E7EB ne sert plus qu'aux filets et aux
   fonds de composants. Aucun degrade sur un fond de section : c'est ce qui
   fabriquait les coutures entre « On vous accompagne », le CTA et le pied. */

.hero,.steps-sec,.tests-sec,.price-sec,.page-hero{background:var(--pure)}
.dims-sec,.logos,.who-sec,.fonds-sec,.blog-sec{background:#F7F9FA}

/* La bande de chiffres devient le premier moment d'autorite : les memes
   chiffres, poses sur navy, valent trois fois leur poids sur gris. */
.stats-sec{background:var(--navy);padding:58px 0 62px}
.stats-sec .stat b{color:#fff}
.stats-sec .stat span{color:rgba(255,255,255,.62)}
.stats-sec .stat{border-left:1px solid rgba(255,255,255,.17)}
.stats-sec .stat:first-child{border-left:0}

/* Le bandeau clients repasse en gris : les logos sont des PNG distants dont
   on ne peut pas verifier la transparence, un fond sombre risquerait
   d'afficher des rectangles blancs. Il se distingue par sa hauteur et son
   titre, plus par sa couleur. */
.logos{background:#F7F9FA}
.logos .row img{mix-blend-mode:normal;opacity:.72}
.logos .row img:hover{opacity:1}

/* La cloture est une seule surface continue, du premier bloc sombre au pied
   de page : plus de degrade, plus de couture. */
.after,.final,footer,.sec-navy{background:var(--navy)}
footer{border-top:1px solid rgba(255,255,255,.09)}

/* Le meme systeme sur les 38 autres pages : les generateurs alternent
   .sec-white / .sec-light / .sec-grey. Les deux derniers pointaient sur deux
   gris differents (#F7F9FA et #E3E7EB), ce qui recreait trois surfaces
   claires. Ils partagent desormais le gris de page. */
.sec-white{background:var(--pure)}
.sec-light,.sec-grey{background:#F7F9FA}


/* ---------- surtitres sur fond sombre ----------
   « Et après le diagnostic ? » heritait de la couleur navy des surtitres sur
   fond clair : texte navy sur fond navy, donc invisible. Seul le tiret teal
   du ::before restait visible, ce qui donnait l'impression d'un petit trait
   mal centre au-dessus du titre. */
.after .eyebrow,.final .eyebrow,.sec-navy .eyebrow,.sec-gold .eyebrow{color:rgba(255,255,255,.82)}
.after .eyebrow::before,.final .eyebrow::before,.sec-navy .eyebrow::before,.sec-gold .eyebrow::before{background:var(--teal)}

/* La cloture sombre est une seule surface : aucun filet entre le bloc
   d'accompagnement, le CTA final et le pied de page. */
.after,.final,footer{border-top:0;border-bottom:0}
.after::after,.final::after,.after::before,.final::before{display:none}


/* ---------- coutures sous-pixel de la cloture sombre ----------
   Les trois sections sombres ont le meme navy en aplat, aucune bordure et
   aucun degrade : le filet clair visible entre elles est un interstice d'un
   pixel ou le fond de page apparait, quand la position d'une section tombe
   entre deux pixels ecran (zoom navigateur, ecran non entier).
   Une ombre portee d'un pixel de la meme couleur comble l'interstice sans
   toucher a la mise en page. */
.after,.final,.sec-navy,.sec-gold,.stats-sec{box-shadow:0 1px 0 0 var(--navy),0 -1px 0 0 var(--navy)}
.sec-gold{box-shadow:0 1px 0 0 #1B2939,0 -1px 0 0 #1B2939}


/* ---------- CTA final sur fond blanc (demande David) ----------
   Le CTA final passe en blanc : il respire entre le bloc d'accompagnement
   navy et le pied de page navy, et le bouton teal y gagne en presence.
   Tout ce qui etait pose pour un fond sombre doit basculer. */
.final{background:var(--pure);box-shadow:none}
.final h2{color:var(--navy)}
.final .l{color:var(--txt)}
.final .eyebrow{color:var(--accent)}
.final .btn-outline-w{border-color:rgba(35,51,74,.26);color:var(--navy);background:transparent}
.final .btn-outline-w:hover{border-color:var(--teal-dark);color:var(--teal-dark);background:rgba(63,180,177,.07)}
.final .btn-teal{box-shadow:0 10px 26px -12px rgba(63,180,177,.55)}
.final a:not(.btn){color:var(--teal-dark)}


/* ---------- radar : etiquettes laterales aux largeurs intermediaires ----------
   Entre 701 et 1023px le radar gardait 380px et ses etiquettes laterales leur
   decalage de -110px : « Fonctionnement » sortait de la fenetre et provoquait
   un debordement horizontal de 65px, mesure a 924px. Le radar se resserre et
   les etiquettes rentrent. */
@media(min-width:701px) and (max-width:1023px){
  .radar-wrap{padding:24px 0 0}
  .radar{width:300px;height:300px;margin:0 auto}
  .rl{font-size:13px;padding:5px 11px}
  .rl.left{left:-58px}
  .rl.right{right:-64px}
  .rcenter{width:112px;height:112px}
  .rcenter b{font-size:28px}
}
/* Entre 1024 et 1160px la colonne du visuel est etroite : le radar se resserre
   pour que ses etiquettes ne viennent pas mordre la colonne de texte. */
@media(min-width:1024px) and (max-width:1160px){
  .radar{width:326px;height:326px}
  .rl.left{left:-72px}
  .rl.right{right:-78px}
}


/* ══════════════ dernière passe : cadence et hiérarchie ══════════════
   Trois constats mesures sur la page :
   1. Les sept titres de section tenaient dans 30-41px : aucune hierarchie.
      Le plus petit, 30px, etait celui du tableau de prix — la section qui
      decide. Les quatre moments d'autorite passent a la meme echelle.
   2. Toutes les sections avaient la meme respiration (64-74px) : la page
      avancait au meme pas du debut a la fin. Les deux sections d'ancrage
      respirent davantage, les sections de soutien restent serrees. C'est
      l'alternance qui cree le rythme, pas l'espace absolu.
   3. « Populaire » ne se distinguait que par son elevation. Une arete teal
      de 3px la designe sans crier. */

/* 1. Hierarchie des titres — quatre ancrages, trois soutiens */
.price-sec h2.sec,.price-sec h2.sec.sm{font-size:clamp(30px,4.2vw,52px);letter-spacing:-.035em;line-height:1.06}
.steps-sec h2,.tests-sec h2,.who-sec h2,.blog-sec h2{font-size:clamp(25px,2.9vw,37px);letter-spacing:-.026em}

/* 2. Cadence verticale */
.dims-sec,.price-sec{padding:clamp(68px,8.6vw,120px) 0}
.steps-sec,.tests-sec,.who-sec{padding:clamp(50px,6.4vw,84px) 0}
.after{padding:clamp(64px,8vw,108px) 0}

/* 3. L'arete de la formule recommandee */
.plan.pop{position:relative;overflow:hidden}
.plan.pop::after{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--teal);border-radius:3px 3px 0 0}


/* ═══════════════════════════════════════════════════════════════════════════
   APPORTS LIVRAISON 4 (designer) — delta livraison 3 → livraison 4, 203 lignes
   Page Pulse 360° : onglets de profils, sous-criteres des dimensions,
   revelations de l'etude de cas, trois niveaux de lecture, hero « nuit »,
   segments de timeline, bande de 3 chiffres, deux registres de titre.
   Insere ICI, avant le bloc de correctifs Keep Growing qui clot la feuille :
   nos correctifs (ALIGNEMENT, couvertures livres blancs, cadre Pipedrive)
   restent les derniers de la cascade et gardent la main.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ---------- profils : « Pour qui » de la page Pulse ----------
   Quatre profils, chacun avec trois problemes et trois reponses. Presente a
   plat cela ferait vingt-quatre blocs : les onglets rendent la lecture
   possible. Boutons natifs, donc focus clavier et Entree/Espace acquis. */
.prof-tabs{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin:0 auto 44px;max-width:900px}
.prof-tab{font:inherit;font-size:14.5px;font-weight:600;letter-spacing:-.01em;color:var(--txt);
  background:var(--pure);border:1px solid rgba(35,51,74,.14);border-radius:999px;padding:13px 24px;min-height:46px;
  cursor:pointer;transition:background .2s var(--ease),border-color .2s var(--ease),color .2s var(--ease),box-shadow .2s var(--ease)}
.prof-tab:hover{border-color:var(--teal);color:var(--navy)}
.prof-tab.is-on{background:var(--navy);border-color:var(--navy);color:#fff;box-shadow:var(--e2)}
.prof-panel{display:none;grid-template-columns:1fr 1fr;gap:28px;text-align:left}
.prof-panel.is-on{display:grid;animation:profIn .28s var(--ease) both}
@keyframes profIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.prof-col{background:var(--pure);border:var(--hair);border-radius:18px;padding:32px 30px;box-shadow:var(--e1)}
.prof-col h3{font-size:13px;font-weight:900;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin:0 0 22px}
.prob{padding:16px 0;border-top:1px solid rgba(35,51,74,.1)}
.prob:first-of-type{border-top:0;padding-top:0}
.prob b{display:block;font-size:16.5px;font-weight:700;color:var(--navy);letter-spacing:-.012em;line-height:1.35;margin-bottom:5px}
.prob p{font-size:14.5px;line-height:1.55;color:var(--txt);margin:0}
.aide{display:flex;gap:16px;padding:16px 0;border-top:1px solid rgba(35,51,74,.1)}
.aide:first-of-type{border-top:0;padding-top:0}
.aide .n{flex:0 0 30px;width:30px;height:30px;border-radius:50%;background:var(--teal);color:#fff;
  display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:800;margin-top:1px}
.aide b{display:block;font-size:16.5px;font-weight:700;color:var(--navy);letter-spacing:-.012em;line-height:1.35;margin-bottom:5px}
.aide p{font-size:14.5px;line-height:1.55;color:var(--txt);margin:0}
@media(max-width:860px){
  .prof-panel.is-on{grid-template-columns:1fr}
  .prof-col{padding:26px 22px}
  .prof-tab{font-size:13.5px;padding:12px 18px}
}
@media(prefers-reduced-motion:reduce){.prof-panel.is-on{animation:none}}

/* Temoignages sur gris quand ils precedent une section blanche. */
.tests-sec.on-grey{background:#F7F9FA}


/* ---------- page Pulse : le meme systeme que la homepage ----------
   1. .card et .dim posaient encore l'icone au-dessus du titre. Meme geste que
      .offer / .who : icone a gauche, sur la ligne optique du titre.
   2. Les chiffres de l'etude de cas (.kpis-row) restaient dans une boite
      blanche bordee. Comme les chiffres cles de la homepage, ils sortent de
      leur contenant : chiffre nu, filet vertical de separation.
   3. Deux registres de titre au lieu d'un seul : les sections d'ancrage
      marquees .is-anchor, tout le reste en soutien. */

.card,.dim{display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:18px;align-items:center;text-align:left}
.card .ic,.dim .ic{margin:0;grid-column:1;grid-row:1;width:54px;height:54px}
.card .ic svg,.dim .ic svg{width:26px;height:26px}
.card > b,.dim > b{margin:0;grid-column:2;grid-row:1;align-self:center}
.card > p,.dim > p{grid-column:1/-1;grid-row:2;margin:20px 0 0}
.card > ul,.dim > ul{grid-column:1/-1;grid-row:2;margin:18px 0 0}
@media(max-width:520px){.card > p,.dim > p,.card > ul,.dim > ul{margin-top:16px}}

.kpis-row{background:transparent;border:0;border-radius:0;box-shadow:none;overflow:visible;
  display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;max-width:960px;margin:0 auto}
.kpi{padding:6px 22px;border-left:1px solid rgba(35,51,74,.14)}
.kpi:first-child{border-left:0}
.kpi > b{font-size:clamp(38px,4.4vw,58px);letter-spacing:-.035em;line-height:1}
.kpi > span{display:block;max-width:22ch;margin:12px auto 0;font-size:12.5px;font-weight:800;
  letter-spacing:.09em;text-transform:uppercase;color:var(--txt);line-height:1.45}
.sec-navy .kpi{border-left-color:rgba(255,255,255,.16)}
.sec-navy .kpi > b{color:#fff}
.sec-navy .kpi > span{color:rgba(255,255,255,.66)}
@media(max-width:760px){
  .kpis-row{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:34px}
  .kpi:nth-child(odd){border-left:0}
}
@media(max-width:430px){
  .kpis-row{grid-template-columns:1fr;row-gap:30px}
  .kpi{border-left:0}
}

.sec-white h2.sec,.sec-grey h2.sec,.sec-light h2.sec{font-size:clamp(25px,2.9vw,37px);letter-spacing:-.026em}
.is-anchor h2.sec,.is-anchor h2{font-size:clamp(30px,4.2vw,52px);letter-spacing:-.035em;line-height:1.06}
.is-anchor{padding-top:112px;padding-bottom:120px}


/* ---------- page Pulse : blocs restaures depuis la page en ligne ----------
   Sous-criteres des dimensions, revelations chiffrees de l'etude de cas,
   puces des trois accompagnements. */

.dim > .dim-crit{grid-column:1/-1;grid-row:3;list-style:none;margin:18px 0 0;padding:0;display:flex;flex-direction:column;gap:0}
.dim-crit li{position:relative;padding:9px 0 9px 16px;font-size:14px;line-height:1.4;color:var(--txt);border-top:1px solid rgba(35,51,74,.08)}
.dim-crit li:first-child{border-top:0}
.dim-crit li::before{content:"";position:absolute;left:0;top:15px;width:5px;height:5px;border-radius:50%;background:var(--teal)}
.dim > .dim-lvl{grid-column:1/-1;grid-row:4;margin-top:14px;padding-top:13px;border-top:1px solid rgba(35,51,74,.08);
  font-size:11.5px;font-weight:800;letter-spacing:.11em;text-transform:uppercase;color:var(--accent)}

.reveal{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;margin-top:36px;text-align:left;
  background:var(--pure);border:var(--hair);border-radius:var(--r-xl);box-shadow:var(--e1);overflow:hidden}
.rv{padding:26px 24px;border-left:1px solid rgba(35,51,74,.08)}
.rv:first-child{border-left:0}
.rv-dim{display:block;font-size:11px;font-weight:900;letter-spacing:.13em;text-transform:uppercase;color:var(--accent);margin-bottom:14px}
.rv > b{display:block;font-size:clamp(30px,3.2vw,42px);font-weight:800;letter-spacing:-.035em;color:var(--navy);line-height:1;margin-bottom:9px}
.rv > p{margin:0;font-size:14px;line-height:1.5;color:var(--txt)}

.acts{margin-top:24px;text-align:left}
.acts-t{display:block;font-size:11.5px;font-weight:900;letter-spacing:.13em;text-transform:uppercase;color:var(--accent);margin-bottom:14px}
.acts-l{display:flex;flex-wrap:wrap;gap:10px}
.acts-l span{display:inline-flex;align-items:center;gap:9px;padding:11px 18px;background:var(--pure);
  border:var(--hair);border-radius:999px;box-shadow:var(--e1);font-size:14.5px;font-weight:600;color:var(--navy)}
.acts-l span::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--teal);flex:0 0 6px}

.card > .off-l,.offer > .off-l,.dim > .off-l{grid-column:1/-1;grid-row:3;list-style:none;margin:18px 0 0;padding:0;display:flex;flex-direction:column;gap:9px}
.off-l li{position:relative;padding-left:17px;font-size:14px;line-height:1.45;color:rgba(255,255,255,.72)}
.off-l li::before{content:"";position:absolute;left:0;top:8px;width:5px;height:5px;border-radius:50%;background:var(--teal)}
.sec-light .off-l li,.sec-white .off-l li,.sec-grey .off-l li{color:var(--txt)}

@media(max-width:1024px){.reveal{grid-template-columns:repeat(2,minmax(0,1fr))}.rv:nth-child(odd){border-left:0}.rv:nth-child(n+3){border-top:1px solid rgba(35,51,74,.08)}}
@media(max-width:620px){.reveal{grid-template-columns:1fr}.rv{border-left:0}.rv+.rv{border-top:1px solid rgba(35,51,74,.08)}.acts-l span{font-size:13.5px;padding:10px 15px}}


/* ---------- 1c « Nuit » : le hero sombre des pages qui portent ----------
   Direction validee pour la home, les 4 pages d'offre hors Teach You,
   cabinets-experts, A propos, merci-rdv et l'index des livres blancs.
   Navy en surface, pas en texte. Le teal devient un signal rare.
   L'or est structurel sur les deux pages Pulse uniquement (.hero.nuit.or). */

.hero.nuit{background:#111C2E;position:relative;overflow:hidden}
.hero.nuit::before{content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(118% 90% at 74% 40%,rgba(63,180,177,.16),rgba(17,28,46,0) 64%)}
.hero.nuit h1{color:#fff}
.hero.nuit h1 i{color:var(--teal)}
.hero.nuit .lead{color:rgba(255,255,255,.72)}
.hero.nuit .pill{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.16);color:rgba(255,255,255,.9);
  box-shadow:none;backdrop-filter:blur(8px)}
.hero.nuit .btn-outline{background:transparent;border-color:rgba(255,255,255,.3);color:#fff}
.hero.nuit .btn-outline:hover{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.52)}

/* le radar sur fond sombre : filets d'un pixel, etiquettes en verre depoli,
   coeur pose sur un anneau d'encre pour se detacher des cercles */
.hero.nuit .rc{border-color:rgba(255,255,255,.13);background:transparent}
.hero.nuit .rc.c1{border-color:rgba(63,180,177,.4)}
.hero.nuit .rl{background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.14);color:rgba(255,255,255,.88);
  backdrop-filter:blur(10px);box-shadow:0 8px 22px -10px rgba(0,0,0,.5)}
.hero.nuit .rcenter{background:#0C1526;border-color:rgba(63,180,177,.55);
  box-shadow:0 0 0 12px rgba(12,21,38,.85),0 18px 44px -14px rgba(0,0,0,.6)}
.hero.nuit .rcenter b{color:#fff}
.hero.nuit .rcenter span{color:var(--teal)}
.hero.nuit .radar::before{background:conic-gradient(from 0deg,rgba(63,180,177,.42),rgba(63,180,177,.08) 12%,rgba(63,180,177,0) 26%,rgba(63,180,177,0))}

/* or structurel : un second balayage, plus lent et en sens inverse du teal.
   Reserve aux deux pages Pulse — c'est le coeur de methode. */
.hero.nuit.or .radar::after{content:"";position:absolute;inset:-8%;border-radius:50%;pointer-events:none;
  background:conic-gradient(from 180deg,rgba(245,194,74,.3),rgba(245,194,74,.06) 10%,rgba(245,194,74,0) 24%,rgba(245,194,74,0));
  animation:orSweep 26s linear infinite}
@keyframes orSweep{to{transform:rotate(-360deg)}}
@media(prefers-reduced-motion:reduce){.hero.nuit.or .radar::after{animation:none}}


/* ---------- timeline : le connecteur suit les pastilles ----------
   Un filet global en .tl::before etait cale a top:22px, soit le SOMMET des
   pastilles et non leur centre, et ses bornes a 10% / 90% ne tombaient juste
   que pour cinq etapes. Le passage a six l'a rendu visible.
   Chaque etape porte desormais son propre segment, depuis le centre de sa
   pastille jusqu'a celui de la suivante : juste quel que soit le nombre. */
.tl::before{display:none}
.tl .s::after{content:"";position:absolute;top:0;left:50%;width:calc(100% + 18px);height:1px;z-index:0;
  background:repeating-linear-gradient(90deg,rgba(35,51,74,.18) 0 4px,transparent 4px 9px)}
.tl .s:last-child::after{display:none}
.tl .s .n{z-index:1}
@media(max-width:900px){.tl .s::after{display:none}}


/* ---------- bande de chiffres a 3 : la meme grille que .grid4 ----------
   Le bloc « le probleme » de la page Pulse porte 3 chiffres dans un
   .stats-row : sans regle de grille il retombait en bloc, chiffres empiles
   et un filet vertical orphelin. Il s'aligne desormais comme la bande a 4 de
   la homepage — trois colonnes, chiffre nu, filet de separation entre eux. */
.stats-sec .stats-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;max-width:960px;margin:0 auto}
@media(max-width:620px){.stats-sec .stats-row{grid-template-columns:1fr}}

/* Fin de page Pulse : alternance des fonds sans collision. */
.blog-sec.on-white{background:var(--pure)}
.final.on-grey{background:#F7F9FA}


/* ---------- « trois niveaux de lecture » : demontrer, pas repeter ----------
   La mention « Individu · Equipe · Manager » etait posee a l'identique sous
   les 4 dimensions : redondante, elle n'expliquait pas ce que chaque niveau
   apporte. Un seul bloc, sous la grille, montre ce que Pulse lit a chaque
   echelle et pourquoi les trois lectures different. */
.lvl3{margin-top:40px;background:var(--navy);border-radius:var(--r-xl);padding:clamp(28px,3vw,44px);
  display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.6fr);gap:clamp(24px,3vw,48px);align-items:center;text-align:left}
.lvl3-eb{display:block;font-size:12px;font-weight:900;letter-spacing:.15em;text-transform:uppercase;color:var(--teal);margin-bottom:14px}
.lvl3-h p{margin:0;font-size:16px;line-height:1.55;color:rgba(255,255,255,.78);text-wrap:pretty}
.lvl3-g{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0}
.lvl3-c{padding:0 22px;border-left:1px solid rgba(255,255,255,.14)}
.lvl3-c:first-child{padding-left:0;border-left:0}
.lvl3-c:last-child{padding-right:0}
.lvl3-c b{display:block;font-size:16px;font-weight:800;color:#fff;letter-spacing:-.01em;margin-bottom:8px}
.lvl3-c b::before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--teal);margin-right:9px;vertical-align:middle;transform:translateY(-1px)}
.lvl3-c p{margin:0;font-size:13.5px;line-height:1.5;color:rgba(255,255,255,.62)}
@media(max-width:960px){
  .lvl3{grid-template-columns:1fr;gap:26px}
}
@media(max-width:620px){
  .lvl3-g{grid-template-columns:1fr;gap:0}
  .lvl3-c{padding:16px 0;border-left:0;border-top:1px solid rgba(255,255,255,.14)}
  .lvl3-c:first-child{padding-top:0;border-top:0}
}


/* ═══════════════════════════════════════════════════════════════════════════
   CORRECTIFS KEEP GROWING — conserves en fin de feuille (priorite maximale)
   ═══════════════════════════════════════════════════════════════════════════ */


/* ---------- garde-fous sur la grille .card / .dim de la livraison 4 ----------
   La regle du designer `.card,.dim{display:grid;grid-template-columns:auto
   minmax(0,1fr)}` suppose que la carte porte une icone. Or une carte sur trois
   du site n'en a pas (seminaire Pulse, « Notre mission » sur A propos, etude
   de cas). Sans icone, la premiere colonne existe quand meme : elle fait 0 px
   de large, mais la gouttiere de 18 px, elle, subsiste — le titre se retrouve
   decale de 18 px par rapport a son paragraphe. Pire sur A propos, ou le bloc
   signature `.sig` n'a pas de place explicite dans la grille et se range en
   colonne 1 : 261 px d'ecart mesures (check_align, 1440 px).
   Ces cartes-la restent donc en flux normal. Mesure apres correctif : 0 px. */
.card:not(:has(> .ic)),
.dim:not(:has(> .ic)){display:block}
.card:not(:has(> .ic)) > b,.card:not(:has(> .ic)) > h3,
.dim:not(:has(> .ic)) > b,.dim:not(:has(> .ic)) > h3{margin-bottom:10px}

/* La livraison 4 sort les chiffres de leur boite (`.kpis-row{background:
   transparent;border:0;border-radius:0}`) — mais `.sec-navy .kpis-row`, plus
   specifique, continuait d'imposer son aplat blanc a 5 %. Resultat sur
   /teach-you/ : un pave translucide sans bordure et a angles vifs, ni boite ni
   chiffre nu. On aligne le fond sombre sur le meme systeme. */
.sec-navy .kpis-row{background:transparent;box-shadow:none}

/* Le designer n'a place que `.card > b` dans la grille : les cartes dont le
   titre est un `<h3>` (fiches « Vos livrables », « Pour qui ? ») laissaient
   leur titre en placement automatique, marge basse de 10 px comprise dans la
   zone de grille — donc centre 5 px trop haut face a l'icone. Mesure :
   5,01 -> 0,00 px. */
.card > h3,.dim > h3{margin:0;grid-column:2;grid-row:1;align-self:center}

/* ---------- segments de timeline : la demi-hauteur du trait ----------
   Le designer cale `.tl .s::after` a top:0, soit le centre EXACT de la
   pastille — mais le trait fait 1 px de haut et se dessine vers le bas : son
   centre tombe donc 0,5 px trop bas. Meme correction que celle appliquee a
   l'ancien `.tl::before` (44,5 px et non 45 px). Mesure : 0,50 -> 0,00 px. */
.tl .s::after{top:-.5px}


/* ---------- couvertures des livres blancs ---------- */
/* Hero en vis-a-vis : le texte a gauche, la couverture a droite. Le hero des
   livres blancs herite de .page-hero (centre) : on repasse en aligne a gauche
   tant que les deux colonnes tiennent cote a cote. */
.lb-hero .split{grid-template-columns:1.15fr .85fr;gap:clamp(32px,4vw,60px)}
.lb-hero{text-align:left}
.lb-hero .hero-txt{max-width:600px}
.lb-hero .lead{margin:0 0 34px}
.lb-hero .ctas{justify-content:flex-start}
.lb-cover{display:flex;justify-content:center}
.lb-cover img{display:block;width:100%;max-width:310px;height:auto;filter:drop-shadow(0 22px 46px rgba(21,34,56,.26))}
@media(max-width:860px){
  .lb-hero .split{grid-template-columns:1fr}
  .lb-hero{text-align:center}
  .lb-hero .hero-txt{margin:0 auto}
  .lb-hero .lead{margin:0 auto 34px}
  .lb-hero .ctas{justify-content:center}
  .lb-cover img{max-width:240px}
}
/* Cartes du hub : vignette de couverture au-dessus du titre. */
.lb-card{display:flex;flex-direction:column}
.lb-card .lb-thumb{display:block;width:auto;max-width:100%;height:190px;object-fit:contain;margin:0 auto 22px;filter:drop-shadow(0 14px 28px rgba(21,34,56,.2))}
/* ---------- avatar des temoignages ---------- */
/* L'avatar est un pictogramme anonyme sur fond navy : un liseré teal le
   detache de la carte, elle aussi navy. */
.test .av{box-shadow:0 0 0 1px rgba(63,180,177,.4)}
.test .av img{display:block;width:100%;height:100%;border-radius:50%;object-fit:cover}






/* ---------- catalogue en menu accordéon (page Teach You) ----------
   Treize fiches depliees faisaient un mur illisible. Chaque formation est
   maintenant une ligne repliee — intitule, domaine, duree, prix — qu'on
   deplie pour lire objectifs et mentions reglementaires. <details name>
   rend l'accordeon exclusif sans JavaScript ; tout le contenu reste dans le
   DOM (opposable Qualiopi + indexable). Les filtres n'agissent que sur
   l'affichage. */

.cat-filters{display:flex;flex-wrap:wrap;gap:9px;justify-content:center;margin:0 auto 32px;max-width:900px}
.cat-chip{display:inline-flex;align-items:center;gap:9px;min-height:44px;padding:0 18px;border-radius:999px;
  border:1px solid rgba(35,51,74,.14);background:var(--pure);color:var(--txt);font:inherit;font-size:14px;font-weight:700;
  cursor:pointer;transition:border-color .18s var(--ease),background .18s var(--ease),color .18s var(--ease),box-shadow .18s var(--ease)}
.cat-chip span{font-size:12px;font-weight:800;opacity:.6;font-variant-numeric:tabular-nums}
.cat-chip:hover{border-color:var(--teal);color:var(--navy)}
.cat-chip.is-on{background:var(--navy);border-color:var(--navy);color:#fff;box-shadow:var(--e2)}
.cat-chip.is-on span{opacity:.7}

.fiche-menu{display:flex;flex-direction:column;gap:10px;max-width:960px;margin:0 auto}

details.fiche{padding:0;background:var(--pure);border:var(--hair);border-radius:14px;box-shadow:var(--e1);
  overflow:hidden;transition:border-color .2s var(--ease),box-shadow .2s var(--ease)}
details.fiche::before{display:none}
details.fiche.is-off{display:none}
details.fiche[open]{border-color:rgba(63,180,177,.5);box-shadow:var(--e2)}
.fiche-sum{display:grid;grid-template-columns:1fr auto auto auto;gap:20px;align-items:center;
  padding:19px 22px;cursor:pointer;list-style:none;transition:background .18s var(--ease)}
.fiche-sum::-webkit-details-marker{display:none}
.fiche-sum:hover{background:var(--white)}
.fiche-sum-t{min-width:0;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.fiche-sum-t b{font-size:17px;font-weight:700;color:var(--navy);letter-spacing:-.02em}
.fiche-sum-t em{flex-basis:100%;font-style:normal;font-size:13px;color:var(--accent)}
.fiche-sum .m-dur{background:rgba(63,180,177,.10);color:var(--teal-dark);font-size:12.5px;font-weight:700;
  padding:5px 12px;border-radius:8px;white-space:nowrap;font-variant-numeric:tabular-nums}
.fiche-sum-p{font-size:16px;font-weight:800;color:var(--navy);letter-spacing:-.025em;white-space:nowrap;font-variant-numeric:tabular-nums}
.fiche-sum-p i{font-style:normal;font-size:11px;font-weight:600;color:var(--accent);letter-spacing:0}
.fiche-chev{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;
  background:rgba(35,51,74,.06);color:var(--navy);font-size:15px;font-weight:700;flex:0 0 32px;transition:transform .25s var(--ease),background .2s,color .2s}
details.fiche[open] .fiche-chev{transform:rotate(180deg);background:var(--teal);color:#fff}
.fiche-open{padding:2px 22px 24px}
.fiche-open>p{margin:0 0 20px;max-width:74ch;font-size:15px;line-height:1.65;color:var(--txt);
  border-top:1px solid rgba(35,51,74,.09);padding-top:20px}
details.fiche .fiche-obj{margin-bottom:18px}
details.fiche dl{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(150px,100%),1fr));gap:14px 20px;margin:0 0 20px}
details.fiche[open] .fiche-open{animation:tfRise .28s var(--ease) both}
@keyframes tfRise{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){details.fiche[open] .fiche-open{animation:none}.fiche-chev{transition:none}}
@media(max-width:640px){
  .fiche-sum{grid-template-columns:1fr auto;gap:10px 14px}
  .fiche-sum .m-dur{grid-column:1;grid-row:2;justify-self:start}
  .fiche-sum-p{grid-column:2;grid-row:2;justify-self:end}
  .fiche-chev{grid-column:2;grid-row:1}
}

/* Marque officielle Qualiopi : deposer /assets/docs/qualiopi-marque.png (fichier du certificateur, non recree). */
.qualiopi-logo{display:block;width:100%;max-width:150px;height:auto;margin:14px auto 0;padding-top:14px;border-top:1px solid rgba(35,51,74,.1)}


/* Bilan de compétences : carte nuit, pour la sortir du flux clair. */

.bilan-navy .eyebrow{color:var(--teal)}
.bilan-navy .eyebrow::before{background:var(--teal)}
.bilan-navy h2{color:#fff}
.bilan-navy .btn-teal{box-shadow:0 8px 24px -6px rgba(63,180,177,.5)}

/* Sur mesure : puces alignees sur une pastille check, texte en retrait constant. */
.check-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:11px}
.check-list li{position:relative;padding-left:30px;font-size:15px;line-height:1.5;color:var(--txt)}
.check-list li::before{content:"✓";position:absolute;left:0;top:1px;display:flex;align-items:center;justify-content:center;
  width:20px;height:20px;border-radius:50%;background:rgba(63,180,177,.14);color:var(--teal-dark);font-size:11px;font-weight:900}


/* ---------- indicateurs Qualiopi : note nue sur nuit, sobre et lisible ----------
   Retrait de la boite gris-bleu qui salissait le fond. La note devient nue :
   chiffre blanc, "/20" en teal a la meme ligne de base, libelle aere. Filets
   fins blancs a 12% pour separer sans cloisonner. */
.sec-navy .kpis-row{background:transparent;border:0;box-shadow:none;max-width:1000px;gap:0}
.sec-navy .kpi{padding:8px 30px;border-left:1px solid rgba(255,255,255,.12)}
.sec-navy .kpi:first-child{border-left:0}
.sec-navy .kpi>b{display:block;font-size:clamp(46px,5vw,62px);font-weight:800;color:#fff;
  letter-spacing:-.04em;line-height:1;font-variant-numeric:tabular-nums}
.sec-navy .kpi .kpi-sur{font-size:.34em;font-weight:700;color:var(--teal);letter-spacing:0;margin-left:3px;vertical-align:baseline}
.sec-navy .kpi>span{display:block;max-width:20ch;margin:16px auto 0;font-size:12px;font-weight:800;
  letter-spacing:.11em;text-transform:uppercase;color:rgba(255,255,255,.6);line-height:1.5}
@media(max-width:760px){
  .sec-navy .kpis-row{grid-template-columns:1fr;row-gap:30px}
  .sec-navy .kpi{border-left:0;padding:0 20px}
  .sec-navy .kpi:not(:first-child){padding-top:30px;border-top:1px solid rgba(255,255,255,.12)}
}

/* cartes : contenu ancre en haut — sinon, a hauteur egale, le contenu se
   centre et les listes ne s'alignent plus d'une carte a l'autre. */
.card,.dim{align-content:start}


/* ---------- Bilan de compétences : bandeau nuit pleine largeur ----------
   Reprend la version en ligne : grand titre, sous-titre a mots-cles teal,
   bouton a droite, halo doux dans l'angle. */
.bilan{position:relative;overflow:hidden;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:36px;align-items:center;
  background:var(--navy);border-radius:var(--r-xl);padding:clamp(40px,5vw,72px) clamp(28px,4vw,60px);box-shadow:var(--e3)}
.bilan::before{content:"";position:absolute;top:50%;right:4%;width:48%;height:190%;transform:translateY(-50%);pointer-events:none;
  background:radial-gradient(circle,rgba(255,255,255,.11),rgba(255,255,255,0) 60%)}
.bilan-txt{position:relative}
.bilan-txt h2{margin:0;color:#fff;font-size:clamp(38px,5.2vw,68px);font-weight:800;letter-spacing:-.035em;line-height:1.02}
.bilan-txt p{margin:22px 0 0;max-width:56ch;font-size:clamp(16px,1.7vw,19px);font-weight:600;color:rgba(255,255,255,.8);line-height:1.5}
.bilan-txt p i{font-style:normal;color:var(--teal)}
.bilan .btn{position:relative;white-space:nowrap}
@media(max-width:760px){.bilan{grid-template-columns:1fr;gap:28px}.bilan .btn{justify-self:start}}


/* ============================================================================
   LIVRAISON 6 — page Done With You (delta reporte de livraison 5 -> 6)
   Blocs : .plans-2, .who-sec.on-white, avis Google (.test-top/.test-stars/
   .test-src), bande a 4 chiffres (:has), filet vertical, mur d'avis defilant
   (.mq/.mq-track + marquee), etiquette Recommandation, portraits recadres,
   boutons de prix a hauteur egale. Place AVANT le bloc ALIGNEMENT.
   ============================================================================ */

/* Deux formules (Done With You) : grille a 2 colonnes centree, pas 4. */
.plans.plans-2{grid-template-columns:repeat(2,minmax(0,1fr));max-width:820px;margin:0 auto}
@media(max-width:720px){.plans.plans-2{grid-template-columns:1fr}}

/* Pour qui sur fond blanc quand l'alternance l'exige (page Done With You). */
.who-sec.on-white{background:var(--pure)}

/* Avis Google : etoiles + badge source, en tete de temoignage. */
.test-top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}
.test-stars{color:var(--gold);font-size:15px;letter-spacing:2px;line-height:1}
.test-src{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:700;color:rgba(255,255,255,.62);letter-spacing:.02em}
.test-src svg{display:block;background:#fff;border-radius:3px;padding:2px;box-sizing:content-box}


/* ---------- bande de chiffres : colonnes = nombre de chiffres ----------
   .stats-row etait fige a 3 colonnes. La page Done With You en a 4 : le
   quatrieme chiffre retombait sur une 2e ligne et chevauchait le premier.
   :has() ajuste le nombre de colonnes au nombre reel de .stat. */
.stats-sec .stats-row:has(.stat:nth-child(4)){grid-template-columns:repeat(4,minmax(0,1fr))}
.stats-sec .stats-row:has(.stat:nth-child(5)):not(:has(.stat:nth-child(6))){grid-template-columns:repeat(5,minmax(0,1fr))}
@media(max-width:760px){
  .stats-sec .stats-row,
  .stats-sec .stats-row:has(.stat:nth-child(4)),
  .stats-sec .stats-row:has(.stat:nth-child(5)):not(:has(.stat:nth-child(6))){grid-template-columns:repeat(2,minmax(0,1fr));row-gap:30px}
}
@media(max-width:430px){
  .stats-sec .stats-row,
  .stats-sec .stats-row:has(.stat:nth-child(4)),
  .stats-sec .stats-row:has(.stat:nth-child(5)):not(:has(.stat:nth-child(6))){grid-template-columns:1fr;row-gap:26px}
}


/* filet vertical entre les chiffres de la bande navy (comme la homepage) */
.stats-sec .stat{position:relative}
.stats-sec .stat + .stat::before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:1px;height:56px;background:rgba(255,255,255,.16)}
@media(max-width:760px){.stats-sec .stat + .stat::before{display:none}}


/* ---------- mur de temoignages defilant (2 rangs) ----------
   15 avis : presentes en grille, la section devenait un tres long pave. Deux
   rangs qui derivent en sens inverse, en pause au survol pour laisser lire,
   et statiques (grille qui s'enroule) si l'utilisateur limite les animations. */
.mq{display:flex;flex-direction:column;gap:22px;overflow:hidden;padding:8px 0}
.mq-row{position:relative;overflow:hidden}
.mq-track{display:flex;gap:22px;width:max-content;will-change:transform}
.mq-a{animation:mqA 64s linear infinite}
.mq-b{animation:mqB 78s linear infinite}
.mq-row:hover .mq-track{animation-play-state:paused}
@keyframes mqA{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@keyframes mqB{from{transform:translateX(-50%)}to{transform:translateX(0)}}
.mq .test{flex:0 0 clamp(300px,26vw,380px);width:clamp(300px,26vw,380px);margin:0}
.mq-fade{position:absolute;top:0;bottom:0;width:80px;z-index:2;pointer-events:none}
.mq-fade-l{left:0;background:linear-gradient(90deg,var(--pure),rgba(255,255,255,0))}
.mq-fade-r{right:0;background:linear-gradient(270deg,var(--pure),rgba(255,255,255,0))}
@media(max-width:620px){.mq .test{flex-basis:82vw;width:82vw}.mq-fade{width:40px}}
@media(prefers-reduced-motion:reduce){
  .mq{flex-direction:row;flex-wrap:wrap;justify-content:center;gap:22px}
  .mq-row{overflow:visible;display:contents}
  .mq-track{animation:none;width:auto;flex-wrap:wrap;justify-content:center;gap:22px}
  .mq-track .test:nth-child(n+8){display:none} /* on n'affiche pas les doublons */
  .mq-fade{display:none}
}

/* etiquette « Recommandation » (cartes hors Google) */
.test-tag{display:inline-flex;align-items:center;gap:7px;font-size:11.5px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--teal)}
.test-tag::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--teal)}

/* ---------- portraits equipe : recadres a la source ----------
   Les 7 fichiers 480x480 sont pre-recadres (taille de visage identique, ligne
   des yeux a 38%). Plus aucune transformation par personne : object-fit cover
   suffit, ce qui garantit le meme rendu en desktop, tablette et mobile. */
.tm-photo img{object-position:center;transition:transform .5s var(--ease)}
.tm:hover .tm-photo img{transform:scale(1.04)}
@media(prefers-reduced-motion:reduce){.tm:hover .tm-photo img{transition:none;transform:none}}


/* ---------- formules a 2 cartes (Done With You) : hauteur de bouton egale ----------
   .plan impose 7 rangees grid figees (kind,h3,size,price,ul=1fr,btn,note) pour
   les 4 colonnes de Pulse. Ici pas de .size ni .note : le bouton retombait sur
   la rangee 1fr et s'etirait pour combler le vide, d'ou deux boutons de
   tailles differentes. On repasse ces cartes en flex : seule la liste absorbe
   l'espace, le bouton garde sa hauteur naturelle. */
.plans-2 .plan{display:flex;flex-direction:column;grid-template-rows:none}
.plans-2 .plan ul{flex:1 1 auto;margin-bottom:26px}
.plans-2 .plan .btn{flex:0 0 auto;margin-top:auto;min-height:52px;display:inline-flex;align-items:center;justify-content:center}


/* ---------- alignement puce ✓ / texte (retour David) ----------
   La pastille etait positionnee en absolu a top:5px : sur une ligne de ~22px
   elle flottait au-dessus du texte. Puce et texte passent en grille, alignes
   en haut, la pastille centree optiquement sur la premiere ligne. */
.plan li,.card li,.checks li{display:grid;grid-template-columns:17px minmax(0,1fr);gap:11px;align-items:start;padding-left:0}
.plan li::before,.card li::before,.checks li::before{position:static;left:auto;top:auto;margin-top:3px}
.checks li{grid-template-columns:20px minmax(0,1fr)}
.checks li::before{width:20px;height:20px;line-height:20px;margin-top:2px}

/* ============================================================================
   LIVRAISON 7 — page Done For You restauree + direction Nuit (delta 6 -> 7)
   Place AVANT le bloc ALIGNEMENT (dernier de la cascade).
   ============================================================================ */


/* ---------- .card avec description ET liste ----------
   La grille .card place <p> et <ul> sur grid-row 2 : quand une carte porte les
   deux, ils se superposent. Ils prennent chacun leur rangee. */
.card > p{grid-row:2}
.card > ul,.dim > ul{grid-row:3}
.card > p + ul{margin-top:14px}


/* ---------- .grid-2 : deux colonnes explicites ----------
   auto-fit remplit autant de colonnes que la largeur permet : sur 4 cartes il
   donne 3+1. Les grilles de 4 elements passent en 2x2. */
.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}
@media(max-width:820px){.grid-2{grid-template-columns:1fr}}


/* ---------- hero Nuit sur les pages d'offre ----------
   .page-hero est centre et etroit, sans radar. Les regles .hero.nuit couvrent
   deja h1, lead, pill et bouton fantome ; il reste le surtitre et le liseré
   de bas de hero, qui etaient poses pour un fond clair. */
.hero.nuit.page-hero{background:#111C2E;border-bottom:0}
.hero.nuit .eyebrow{color:rgba(255,255,255,.82)}
.hero.nuit .eyebrow::before{background:var(--teal)}
.hero.nuit .sub{color:rgba(255,255,255,.72)}


/* ---------- .sec-grey : une vraie seconde nuance neutre ----------
   .sec-light et .sec-grey retombaient tous deux sur #F7F9FA, donc l'alternance
   des fonds ne tenait pas des que les deux se suivaient. .sec-grey prend un
   gris legerement plus dense, pris dans la charte (--line / #E3E7EB eclairci). */
.sec-grey{background:#EEF2F4}


/* ---------- .stat small : l'unite accolee au chiffre ----------
   « 20 ans » perdait son espace car .stat b est en letter-spacing negatif fort.
   L'unite devient un <small> : plus petit, moins serre, detache du nombre. */
.stat b small{font-size:.52em;font-weight:800;letter-spacing:-.01em;margin-left:.12em}


/* ============================================================================
   LIVRAISON 8 — page Pulse Fonds (delta reporte de livraison 7 -> 8)
   Blocs : .chain, .cmp / .cmp-wrap, .ask, .hero.nuit.or .pill, et le correctif
   .card > p / .card > ul en grid-row:auto. Place AVANT le bloc ALIGNEMENT.
   ============================================================================ */


/* ---------- page Pulse Fonds ----------
   .chain : la sequence Pre-Acquisition -> Post-Acquisition -> Sortie sous le
   lead du hero. .cmp : le tableau comparatif, colonne Pulse mise en avant.
   .ask : la question qui ferme chaque carte module. L'or est structurel ici. */
.chain{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:0 0 26px;
  font-size:13px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.62)}
.chain span{color:var(--gold);font-size:15px;letter-spacing:0}

.card .ask{margin-top:16px;padding-top:14px;border-top:1px solid var(--line);
  font-size:14px;font-style:italic;line-height:1.55;color:var(--txt)}
.sec-navy .card .ask{border-top-color:rgba(255,255,255,.16);color:rgba(255,255,255,.72)}

.cmp-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 0 14px;
  border:var(--hair);border-radius:var(--r-lg);background:var(--pure);box-shadow:var(--e1)}
.cmp{width:100%;min-width:560px;border-collapse:collapse;text-align:left}
.cmp th,.cmp td{padding:15px 20px;border-bottom:1px solid var(--line);font-size:15px;color:var(--txt)}
.cmp thead th{font-size:12px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;
  color:var(--navy);background:#F7F9FA;border-bottom:2px solid var(--line)}
.cmp tbody td:first-child{font-weight:700;color:var(--navy)}
.cmp .hi{background:rgba(63,180,177,.07);color:var(--navy);font-weight:700}
.cmp thead .hi{background:rgba(63,180,177,.14);color:var(--teal-dark);
  box-shadow:inset 0 3px 0 var(--teal)}
.cmp tbody tr:last-child td{border-bottom:0}
.cmp .hi:only-child{text-align:center}
.note{font-size:12.5px;color:var(--txt);opacity:.72;text-align:center;margin:0}

/* l'or structurel : le radar de Pulse Fonds et les surtitres de section */
.hero.nuit.or .pill{border-color:rgba(245,194,74,.34);color:#F7E3B4}


/* ---------- .card : empilement naturel sous le titre ----------
   Les rangees figees (p en 2, ul en 3) se cassent des qu'une carte porte deux
   paragraphes : les deux atterrissent sur la meme rangee et se superposent.
   On laisse la grille placer les enfants implicitement, chacun sur toute la
   largeur, dans l'ordre du document. */
.card > p,.card > ul,.dim > p,.dim > ul{grid-row:auto;grid-column:1/-1}
.card > p + p{margin-top:12px}
.card > .ask{margin-top:16px}


/* ============================================================================
   LIVRAISON 9 — page A propos (delta reporte de livraison 8 -> 9)
   Bloc : .card > .sig en grid-row:auto. Place AVANT le bloc ALIGNEMENT.
   ============================================================================ */


/* ---------- .sig dans une carte ----------
   Sans regle de placement, .sig s'auto-place dans la colonne 1 de .card — la
   piste prevue pour l'icone. Sur une carte sans icone, cette piste prenait
   alors la largeur de la signature et ecrasait le titre a 32 px. */
.card > .sig,.dim > .sig{grid-column:1/-1;grid-row:auto}


/* ============================================================================
   LIVRAISON 10 — Rendez-vous/Contact + Merci Pulse (delta reporte 9 -> 10)
   Place AVANT le bloc ALIGNEMENT (dernier de la cascade).
   ============================================================================ */


/* ---------- .logos : le fond suit la classe posee ----------
   .logos avait un fond fixe #F7F9FA, donc il se confondait avec une section
   .sec-light voisine. Une classe de surface posee sur le bandeau l'emporte. */
.logos.sec-grey{background:#EEF2F4}
.logos.sec-white{background:var(--pure)}


/* ============================================================================
   LIVRAISON 11 — Cabinets d'experts-comptables (delta reporte 10 -> 11)
   Place AVANT le bloc ALIGNEMENT (dernier de la cascade).
   ============================================================================ */


/* ---------- .vid : video responsive ----------
   Ratio 16/9 tenu par aspect-ratio, cadre arrondi et ombre du systeme.
   Pas de padding-top hack : le ratio natif suffit et survit au responsive. */
.vid{position:relative;max-width:900px;margin:0 auto;aspect-ratio:16/9;
  border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--e3);background:var(--navy)}
.vid iframe{position:absolute;inset:0;width:100%;height:100%;border:0;display:block}


/* ---------- GARDE anti-collision : .vid des cartes video (.vids .vid) ----------
   COLLISION SIGNALEE A DAVID : le designer nomme .vid la video responsive de
   /cabinets-experts/, mais .vid est deja la classe des cartes de la page
   /videos-dirigeants-commercial/ (6 <article class="vid">). La regle .vid
   ci-dessus leur imposait aspect-ratio 16/9 + fond navy et cassait les cartes.
   On restaure ici l'habillage carte pour les .vid situes dans une grille .vids,
   sans supprimer la regle du designer (qui reste pleinement active sur la video
   isolee de cabinets-experts). Specificite 0-2-0 : cette garde l'emporte. */
.vids .vid{aspect-ratio:auto;max-width:none;margin:0;background:var(--pure);box-shadow:var(--e1)}


/* ---------- puces : retour au flux, pastille en absolu ----------
   .card li en display:grid faisait de CHAQUE enfant une cellule : un <li> qui
   contient un lien puis du texte se disloquait en autant de lignes. On revient
   au flux inline (qui accepte n'importe quel contenu) avec la pastille en
   absolu, calee sur la premiere ligne en em pour suivre la taille du texte.
   NB : le bloc ALIGNEMENT ci-dessous reprend padding-left et ::before top en
   les derivant de --kg-fs ; on garde les deux (cf. brief), l'essentiel ici est
   display:block qui tue le display:grid de la livraison 6. */
.plan li,.card li,.checks li{display:block;grid-template-columns:none;gap:0;padding-left:28px;position:relative}
.plan li::before,.card li::before,.checks li::before{position:absolute;left:0;top:.28em;margin-top:0}
.checks li{padding-left:32px}




/* ---------- .titre-photo : portrait a cote du titre ----------
   Le portrait accompagne le titre au lieu de repeter son contenu au-dessus. */
.titre-photo{display:flex;align-items:center;gap:18px;margin-bottom:14px}
.titre-photo img{width:72px;height:72px;flex:0 0 72px;border-radius:50%;object-fit:cover;
  object-position:center top;border:2px solid rgba(63,180,177,.45)}
.titre-photo h2{margin:0}
@media(max-width:520px){.titre-photo{gap:14px}.titre-photo img{width:58px;height:58px;flex:0 0 58px}}


/* ---------- .specs : cartes a icone centree (design du site historique) ----------
   La page en ligne presente « Specificite Keep Growing » en quatre cartes grises
   a icone centree, pas en liste a puces. */
.specs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px;margin-top:44px}
.spec{background:var(--light);border-radius:var(--r-lg);padding:38px 26px 34px;text-align:center;
  display:flex;flex-direction:column;align-items:center;gap:22px;
  transition:transform .25s var(--ease),box-shadow .25s var(--ease),background .25s var(--ease)}
.spec:hover{transform:translateY(-3px);box-shadow:var(--e2);background:var(--pure)}
.spec-ic{display:flex;align-items:center;justify-content:center;width:56px;height:56px;color:var(--navy)}
.spec-ic svg{width:44px;height:44px}
.spec p{margin:0;color:var(--txt);font-size:15.5px;line-height:1.55;text-wrap:pretty}
@media(max-width:960px){.specs{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){.specs{grid-template-columns:1fr;gap:14px}
  .spec{flex-direction:row;text-align:left;padding:24px 22px;gap:18px}
  .spec-ic{width:44px;height:44px;flex:0 0 44px}.spec-ic svg{width:34px;height:34px}}

/* ---------- .etapes : modalites d'acces numerotees ----------
   Pastille teal numerotee, titre, description, filet de separation entre
   chaque etape — le traitement du site historique. */
.etapes{list-style:none;counter-reset:et;margin:0 auto;padding:0;max-width:820px;text-align:left}
.etapes li{counter-increment:et;position:relative;padding:30px 0 30px 76px;border-top:1px solid var(--line)}
.etapes li:first-child{border-top:0;padding-top:6px}
.etapes li::before{content:counter(et);position:absolute;left:0;top:28px;
  width:50px;height:50px;border-radius:50%;background:var(--teal);color:#fff;
  display:flex;align-items:center;justify-content:center;font-size:20px;font-weight:800}
.etapes li:first-child::before{top:4px}
.etapes b{display:block;font-size:21px;font-weight:800;color:var(--navy);letter-spacing:-.02em;margin-bottom:10px}
.etapes p{margin:0;color:var(--txt);font-size:15.5px;line-height:1.6}
.etapes p + p{margin-top:12px}
.etapes a{color:var(--teal-dark);font-weight:700}
@media(max-width:560px){
  .etapes li{padding:26px 0 26px 58px}
  .etapes li::before{width:40px;height:40px;font-size:17px;top:24px}
  .etapes li:first-child::before{top:2px}
  .etapes b{font-size:19px}
}


/* ---------- animation des etapes ----------
   Le filet vertical qui relie les pastilles se trace au fil de la revelation :
   gris tant que l'etape n'est pas lue, teal une fois entree dans l'ecran. La
   pastille arrive en meme temps, d'un demi-cran d'echelle. */
.etapes li::after{content:"";position:absolute;left:24px;top:78px;bottom:-2px;width:2px;
  background:var(--line);transform:scaleY(0);transform-origin:top;
  transition:transform .55s var(--ease) .12s,background .4s var(--ease)}
.etapes li:first-child::after{top:54px}
.etapes li:last-child::after{display:none}
.etapes li.in::after{transform:scaleY(1);background:linear-gradient(var(--teal),rgba(63,180,177,.25))}
.etapes li::before{transform:scale(.72);opacity:0;
  transition:transform .45s cubic-bezier(.2,.9,.3,1.25),opacity .3s var(--ease),box-shadow .25s var(--ease)}
.etapes li.in::before{transform:scale(1);opacity:1}
.etapes li:hover::before{box-shadow:0 0 0 6px rgba(63,180,177,.14)}
.etapes b{transition:color .25s var(--ease)}
.etapes li:hover b{color:var(--teal-dark)}
.etapes a{background-image:linear-gradient(var(--teal),var(--teal));background-size:0 2px;
  background-repeat:no-repeat;background-position:0 100%;text-decoration:none;
  transition:background-size .28s var(--ease)}
.etapes a:hover{background-size:100% 2px}
@media(max-width:560px){.etapes li::after{left:19px;top:66px}.etapes li:first-child::after{top:44px}}

/* Les cartes a icone : l'icone se pose une fraction apres la carte. */
.spec-ic{transition:transform .4s cubic-bezier(.2,.9,.3,1.25),color .25s var(--ease)}
.spec:hover .spec-ic{transform:scale(1.08);color:var(--teal-dark)}
.spec.kg-rv .spec-ic{transform:scale(.86)}
.spec.kg-rv.in .spec-ic{transform:scale(1);transition-delay:.14s}

@media(prefers-reduced-motion:reduce){
  .etapes li::after{transform:scaleY(1);transition:none}
  .etapes li::before{transform:scale(1);opacity:1;transition:none}
  .spec-ic,.spec.kg-rv .spec-ic{transform:none;transition:none}
  .etapes a{transition:none}
}



/* ---------- FAQ : barre de recherche + filtres thematiques ----------
   Trente questions reparties en huit themes : sans point d'entree, la page est
   un mur. La barre reste collee sous l'en-tete pendant tout le parcours. */
.fq-bar{position:sticky;top:0;z-index:40;background:rgba(247,249,250,.92);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line);padding:16px 0}
.fq-bar-in{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.fq-search{display:flex;align-items:center;gap:10px;background:var(--pure);
  border:1px solid var(--line);border-radius:999px;padding:0 16px;height:48px;
  flex:0 0 330px;max-width:100%;transition:border-color .2s var(--ease),box-shadow .2s var(--ease)}
.fq-search:focus-within{border-color:var(--teal);box-shadow:0 0 0 3px rgba(63,180,177,.18)}
.fq-search svg{width:18px;height:18px;color:var(--txt);flex:0 0 18px}
.fq-search input{border:0;outline:0;background:transparent;font:inherit;font-size:15px;
  color:var(--navy);width:100%;height:100%}
.fq-search input::-webkit-search-cancel-button{display:none}
.fq-clear{border:0;background:transparent;color:var(--txt);font-size:22px;line-height:1;
  cursor:pointer;padding:0 2px;min-width:24px}
.fq-clear:hover{color:var(--navy)}
.fq-chips{display:flex;gap:8px;flex-wrap:wrap;flex:1;min-width:0}
.fq-chip{border:1px solid var(--line);background:var(--pure);color:var(--txt);
  font:inherit;font-size:13.5px;font-weight:600;padding:9px 15px;border-radius:999px;
  cursor:pointer;display:inline-flex;align-items:center;gap:7px;white-space:nowrap;
  transition:border-color .2s var(--ease),color .2s var(--ease),background .2s var(--ease)}
.fq-chip:hover{border-color:var(--teal);color:var(--navy)}
.fq-chip.is-on{background:var(--navy);border-color:var(--navy);color:#fff}
.fq-n{font-size:11.5px;font-weight:700;opacity:.55;font-variant-numeric:tabular-nums}
.fq-vide{display:block;text-align:center;color:var(--txt);font-size:16px;padding:70px 20px}
.fq-vide .fq-reset{border:0;background:transparent;color:var(--teal-dark);font:inherit;
  font-weight:700;text-decoration:underline;cursor:pointer}
.faq-sec[hidden],.fq-vide[hidden]{display:none}
/* en mode recherche, plus d'alternance de fond : la page devient une liste de resultats */
body.fq-filtre .faq-sec{background:var(--pure)}
@media(max-width:760px){
  .fq-bar{padding:12px 0}
  .fq-search{flex:1 1 100%}
  .fq-chips{overflow-x:auto;flex-wrap:nowrap;padding-bottom:4px;scrollbar-width:none}
  .fq-chips::-webkit-scrollbar{display:none}
  .fq-chip{min-height:44px}
}

/* accordeon : chevron pivotant et ouverture animee */
.faq summary::after{content:"";width:11px;height:11px;border-right:2px solid var(--teal);
  border-bottom:2px solid var(--teal);transform:rotate(45deg) translate(-2px,-2px);
  transition:transform .25s var(--ease);flex:0 0 11px}
.faq details[open] summary::after{content:"";transform:rotate(-135deg) translate(-2px,-2px)}
.faq details{transition:border-color .2s var(--ease),box-shadow .2s var(--ease)}
.faq details:hover{border-color:rgba(63,180,177,.5)}
.faq details[open]{border-color:rgba(63,180,177,.5);box-shadow:var(--e1)}
.faq summary:focus-visible{outline:2px solid var(--teal);outline-offset:-2px;border-radius:12px}
.faq mark{background:rgba(63,180,177,.24);color:inherit;border-radius:3px;padding:0 2px}
@media(prefers-reduced-motion:reduce){.faq summary::after{transition:none}}


/* ---------- pages atelier : bandeau de faits dans le hero (delta v13->v14) ----------
   Une page d'atelier se juge sur trois reperes concrets. Ils etaient enterres
   en bas de page ; ils remontent dans le hero, sur une seule ligne. */
.at-facts{list-style:none;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;
  margin:38px 0 0;padding:0;text-align:left;border-top:1px solid rgba(255,255,255,.16)}
.at-facts li{padding:22px 26px 0;border-left:1px solid rgba(255,255,255,.16);min-width:0}
.at-facts li:first-child{padding-left:0;border-left:0}
.at-facts li:last-child{padding-right:0}
.at-facts b{display:block;color:#fff;font-size:20px;font-weight:800;letter-spacing:-.02em;line-height:1.15}
.at-facts span{display:block;margin-top:5px;color:rgba(255,255,255,.62);font-size:12.5px;
  font-weight:700;letter-spacing:.08em;text-transform:uppercase;line-height:1.4}
.hero:not(.nuit) .at-facts{border-top-color:var(--line)}
.hero:not(.nuit) .at-facts li{border-left-color:var(--line)}
.hero:not(.nuit) .at-facts b{color:var(--navy)}
.hero:not(.nuit) .at-facts span{color:var(--txt)}
@media(max-width:720px){
  .at-facts{grid-template-columns:1fr}
  .at-facts li{border-left:0;padding:18px 0 0;
    border-top:1px solid rgba(255,255,255,.12)}
  .at-facts li:first-child{border-top:0}
  .hero:not(.nuit) .at-facts li{border-top-color:var(--line)}
  .at-facts b{font-size:18px}
}

/* Les etapes acceptent une liste a puces en corps, pas seulement un paragraphe. */
.etapes ul{margin:0;padding-left:20px;color:var(--txt);font-size:15.5px;line-height:1.6}
.etapes li ul li{counter-increment:none;padding:0;border-top:0;margin-bottom:7px;list-style:disc}
.etapes li ul li::before,.etapes li ul li::after{content:none;display:none}


/* Trois benefices tiennent sur une ligne : la largeur bridee a 760 px les
   forcait en 2 + 1 orphelin. */
.checks-3{grid-template-columns:repeat(3,minmax(0,1fr));max-width:1040px;gap:10px 26px}
@media(max-width:900px){.checks-3{grid-template-columns:1fr;max-width:620px}}


/* ---------- .offre-card : le bloc de decision d'une page atelier ----------
   Le prix vivait seul dans une section grise, sans action possible : un
   cul-de-sac juste avant le pied de page. Il devient une carte unique, prix a
   gauche, boutons a droite, sur la meme ligne optique. */
.offre-card{display:flex;align-items:center;justify-content:space-between;gap:34px;
  flex-wrap:wrap;max-width:880px;margin:0 auto;text-align:left;
  background:var(--pure);border:1px solid var(--line);border-radius:var(--r-lg);
  box-shadow:var(--e2);padding:34px 38px;position:relative;overflow:hidden}
.offre-card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--teal)}
.offre-prix b{display:block;color:var(--navy);font-size:clamp(26px,3vw,34px);font-weight:800;
  letter-spacing:-.03em;line-height:1.1}
.offre-prix span{display:block;margin-top:8px;color:var(--txt);font-size:13px;font-weight:800;
  letter-spacing:.09em;text-transform:uppercase}
.offre-ctas{display:flex;gap:12px;flex-wrap:wrap}
@media(max-width:720px){
  .offre-card{padding:28px 24px 28px 28px;gap:24px}
  .offre-ctas{width:100%}
  .offre-ctas .btn{flex:1 1 100%;text-align:center}
}


/* ═══════════════════════════════════════════════════════════════════════════
   APPORTS LIVRAISON 15 (designer) — delta livraison 14 → 15
   Bibliotheque de ressources : cartes uniformes .res-grid/.res, filtres,
   couverture livre blanc, .dl-card. Insere AVANT le bloc ALIGNEMENT.
   ═══════════════════════════════════════════════════════════════════════════ */
/* ---------- livres blancs : la couverture du document ----------
   Une page qui demande cinq champs pour recevoir un document ne montrait pas
   ce document. La couverture est dessinee en CSS : rien a produire, rien a
   maintenir, et elle porte le titre reel de chaque livre blanc. */
.lb-hero .hero-grid{grid-template-columns:1.05fr .95fr;align-items:center}
.lb-cover-wrap{display:flex;justify-content:center;align-items:center;padding:10px}
.lb-cover{position:relative;width:300px;aspect-ratio:1/1.414;border-radius:4px 12px 12px 4px;
  background:linear-gradient(150deg,#23334A 0%,#1B2A3E 58%,#16233450 100%),var(--navy);
  box-shadow:0 30px 60px rgba(35,51,74,.32),0 4px 12px rgba(35,51,74,.2);
  padding:44px 34px 32px;display:flex;flex-direction:column;
  transform:rotate(-2.2deg);transition:transform .5s var(--ease),box-shadow .5s var(--ease)}
.lb-cover::before{content:"";position:absolute;left:0;top:0;bottom:0;width:12px;
  background:linear-gradient(90deg,rgba(0,0,0,.34),rgba(0,0,0,0));border-radius:4px 0 0 4px}
.lb-cover::after{content:"";position:absolute;left:34px;right:34px;top:98px;height:3px;
  background:var(--teal);border-radius:2px}
.lb-cover:hover{transform:rotate(-1deg) translateY(-6px);
  box-shadow:0 40px 74px rgba(35,51,74,.38),0 6px 16px rgba(35,51,74,.24)}
.lb-cover-eb{color:var(--teal);font-size:11.5px;font-weight:800;letter-spacing:.2em;
  text-transform:uppercase}
.lb-cover b{margin-top:64px;color:#fff;font-size:29px;font-weight:800;letter-spacing:-.03em;
  line-height:1.14;text-wrap:balance}
.lb-cover-sig{margin-top:auto;color:rgba(255,255,255,.72);font-size:15px;font-weight:800;
  letter-spacing:-.02em}
.lb-cover-sig i{color:var(--teal);font-style:normal}
@media(max-width:900px){
  .lb-hero .hero-grid{grid-template-columns:1fr}
  .lb-cover-wrap{order:-1;padding:0 0 26px}
  .lb-cover{width:230px;transform:rotate(-1.6deg)}
  .lb-cover b{font-size:24px;margin-top:48px}
  .lb-cover::after{top:82px}
}
@media(prefers-reduced-motion:reduce){.lb-cover,.lb-cover:hover{transition:none;transform:none}}


/* ---------- .dl-card : telechargement libre ----------
   Zero email demande : le document part directement. La carte remplace le
   formulaire a cinq champs — nature du fichier a gauche, bouton a droite. */
.dl-card{display:flex;align-items:center;justify-content:space-between;gap:30px;flex-wrap:wrap;
  max-width:680px;margin:0 auto;text-align:left;background:var(--pure);
  border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--e2);
  padding:26px 30px;position:relative;overflow:hidden}
.dl-card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--teal)}
.dl-doc{display:flex;align-items:center;gap:16px;min-width:0}
.dl-ic{display:flex;align-items:center;justify-content:center;width:48px;height:48px;flex:0 0 48px;
  border-radius:12px;background:var(--light);color:var(--navy)}
.dl-ic svg{width:26px;height:26px}
.dl-doc b{display:block;color:var(--navy);font-size:16.5px;font-weight:800;letter-spacing:-.01em}
.dl-doc span{display:block;margin-top:3px;color:var(--txt);font-size:13px;font-weight:700;
  letter-spacing:.06em;text-transform:uppercase}
@media(max-width:620px){
  .dl-card{padding:22px 22px 22px 26px;gap:20px}
  .dl-card .btn{width:100%;text-align:center}
}


/* La section ressources suivait un fond gris identique au sien : elle passe en
   blanc quand elle suit une section claire. */
/* Fin de page : ressources puis CTA, jamais deux fonds identiques quelle que
   soit la section qui precede. */
.blog-sec{background:var(--white)}
.final{background:var(--pure)}
.sec-light + .blog-sec{background:var(--pure)}
.sec-light + .blog-sec + .final{background:var(--white)}
/* Le hero clair partageait le blanc de la premiere section. */
.hero.page-hero:not(.nuit){background:var(--white)}


/* La couverture accepte une vraie image quand elle existe : il suffit d'ajouter
   un <img> dans .lb-cover, il recouvre le dessin CSS sans autre changement.
   <div class="lb-cover"><img src="/assets/covers/<slug>.jpg" alt=""> … </div> */
.lb-cover img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  border-radius:inherit;z-index:2}
.lb-cover:has(img)::after{display:none}
.lb-cover:has(img) .lb-cover-eb,.lb-cover:has(img) b,.lb-cover:has(img) .lb-cover-sig{
  position:relative;z-index:3;visibility:hidden}


/* ---------- couverture photo ----------
   Les visuels fournis sont deja des mock-ups de livre, avec leur perspective,
   leur ombre portee et leur fond. Les enfermer dans le cadre dessine ajouterait
   une seconde ombre et une seconde rotation : la carte s'efface entierement et
   l'image est posee telle quelle. */
.lb-cover.is-photo{background:none;box-shadow:none;padding:0;border-radius:0;transform:none;
  width:auto;max-width:400px;aspect-ratio:auto;display:block;
  transition:transform .5s var(--ease)}
.lb-cover.is-photo::before,.lb-cover.is-photo::after{display:none}
.lb-cover.is-photo img{position:static;width:100%;height:auto;object-fit:contain;
  border-radius:0;display:block;mix-blend-mode:multiply}
.lb-cover.is-photo:hover{transform:translateY(-6px);box-shadow:none}
.lb-cover.is-photo .lb-cover-eb,.lb-cover.is-photo b,.lb-cover.is-photo .lb-cover-sig{display:none}
@media(max-width:900px){.lb-cover.is-photo{max-width:300px;margin:0 auto}}
@media(prefers-reduced-motion:reduce){.lb-cover.is-photo,.lb-cover.is-photo:hover{transform:none;transition:none}}


/* ---------- .res-grid : la bibliotheque des ressources ----------
   Livres blancs et guides sur une seule page, filtrables par famille. La
   couverture porte la reconnaissance : on retrouve un document a son visuel
   bien avant de lire son titre. */
.res-filtres{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin:0 0 42px}
.res-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:26px 22px;text-align:left}
.res{display:flex;flex-direction:column;background:var(--pure);border:1px solid var(--line);
  border-radius:var(--r-lg);overflow:hidden;text-decoration:none;box-shadow:var(--e1);
  transition:transform .25s var(--ease),box-shadow .25s var(--ease),border-color .25s var(--ease)}
.res:hover{transform:translateY(-4px);box-shadow:var(--e2);border-color:rgba(63,180,177,.5)}
.res[hidden]{display:none}
.res-vis{display:flex;align-items:center;justify-content:center;background:var(--light);
  aspect-ratio:4/3;padding:18px;overflow:hidden}
.res-vis img{width:auto;height:100%;max-width:100%;object-fit:contain;mix-blend-mode:multiply;
  transition:transform .35s var(--ease)}
.res:hover .res-vis img{transform:scale(1.05)}
.res-fallback{display:flex;flex-direction:column;justify-content:space-between;
  width:132px;aspect-ratio:1/1.414;background:linear-gradient(150deg,#23334A,#1B2A3E);
  border-radius:3px 8px 8px 3px;padding:18px 15px 14px;box-shadow:0 10px 22px rgba(35,51,74,.28)}
.res-fallback b{color:#fff;font-size:14px;font-weight:800;letter-spacing:-.02em;line-height:1.22;
  text-wrap:balance}
.res-fallback i{color:rgba(255,255,255,.7);font-style:normal;font-size:11px;font-weight:800;
  letter-spacing:-.01em}
.res-fallback i em{color:var(--teal);font-style:normal}
.res-body{display:flex;flex-direction:column;flex:1;padding:20px 22px 22px;gap:0}
.res-kind{color:var(--teal-dark);font-size:11px;font-weight:900;letter-spacing:.14em;
  text-transform:uppercase;margin-bottom:9px}
.res-body b{color:var(--navy);font-size:17px;font-weight:800;letter-spacing:-.02em;line-height:1.25;
  margin-bottom:8px;text-wrap:pretty}
.res-desc{color:var(--txt);font-size:14.5px;line-height:1.55;margin-bottom:16px}
.res-dl{margin-top:auto;color:var(--teal-dark);font-size:14px;font-weight:700}
@media(max-width:900px){.res-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:820px){.res-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:520px){
  .res-grid{grid-template-columns:1fr;gap:16px}
  .res{flex-direction:row}
  .res-vis{aspect-ratio:auto;flex:0 0 118px;padding:14px}
  .res-fallback{width:auto;padding:12px 10px 10px}
  .res-fallback b{font-size:12px}
  .res-body{padding:18px 18px 18px 16px}
  .res-desc{display:none}
}
@media(prefers-reduced-motion:reduce){.res,.res-vis img{transition:none}.res:hover{transform:none}}


/* Blocs a fond implicite (.stats-sec, .logos, .tests-sec, .price-sec,
   .fonds-sec) : leur couleur ne depend pas de leur classe mais de ce qui
   precede. Ces regles closent les derniers voisinages identiques. */
.sec-grey + .stats-sec,.sec-light + .stats-sec{background:var(--pure)}
.logos + .sec-white,.logos + .price-sec{background:var(--white)}
.tests-sec + .logos{background:var(--pure)}


/* ---------- detourage des couvertures ----------
   Les mock-ups sont livres sur un fond blanc casse legerement variable. Poser
   la vignette sur du blanc pur et laisser le multiply faire le reste evite le
   rectangle gris visible autour de chaque livre. */
.res-vis{background:var(--pure)}
.res-vis img{mix-blend-mode:multiply;filter:contrast(1.02)}
.lb-cover.is-photo img{mix-blend-mode:multiply}
.lb-cover-wrap{background:transparent}


/* ---------- hauteur fixe de vignette ----------
   L'aspect-ratio faisait dependre la hauteur de la carte du chargement de son
   image : une rangee tombait a 227 px pendant que la suivante en faisait 452.
   Une hauteur fixe rend les rangees identiques des le premier rendu. */
.res-vis{aspect-ratio:auto;height:250px;flex:0 0 250px;padding:20px}
.res-vis img{max-height:100%;width:auto}
.res-fallback{width:118px;height:auto;max-height:210px;aspect-ratio:1/1.414}
@media(max-width:520px){
  .res-vis{height:auto;flex:0 0 118px;padding:14px}
  .res-fallback{max-height:none}
}


/* ---------- rangees de hauteur egale ----------
   Les hauteurs variaient encore d'une rangee a l'autre selon la longueur des
   descriptions. Une hauteur minimale de corps aligne les liens de
   telechargement sur toute la grille. */
.res-body{min-height:196px}
.res-desc{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
@media(max-width:520px){.res-body{min-height:0}}

.res{min-height:470px}
@media(max-width:520px){.res{min-height:0}}


/* ---------- carte ressource : mise au propre ----------
   Les regles s'etaient empilees et se contredisaient : bascule en ligne sous
   520 px, hauteur minimale qui restait active, vignette a hauteur fixe. Ce
   bloc reprend la carte a zero — colonne partout, meme rythme a toute
   largeur. */
.res{flex-direction:column;min-height:0}
.res-vis{height:230px;flex:0 0 230px;padding:18px;aspect-ratio:auto}
.res-vis img{max-height:100%;max-width:100%;width:auto;height:auto}
.res-fallback{width:112px;height:158px;max-height:none;aspect-ratio:auto}
.res-body{min-height:0;padding:18px 20px 20px}
.res-body b{font-size:16px;line-height:1.28;display:-webkit-box;-webkit-line-clamp:2;
  -webkit-box-orient:vertical;overflow:hidden;min-height:2.56em}
.res-desc{font-size:14px;line-height:1.5;-webkit-line-clamp:2;min-height:2.9em;margin-bottom:14px}
@media(max-width:520px){
  .res-grid{grid-template-columns:1fr;gap:14px}
  .res{flex-direction:row}
  .res-vis{height:auto;flex:0 0 104px;padding:14px}
  .res-fallback{width:76px;height:107px}
  .res-body{padding:16px 18px 16px 14px;justify-content:center}
  .res-body b,.res-desc{min-height:0}
  .res-desc{display:none}
}


/* ---------- carte ressource : bloc autoritaire ----------
   Les regles s'etaient empilees au fil des retouches et se contredisaient :
   certaines cartes basculaient en ligne, d'autres restaient en colonne, les
   hauteurs suivaient le chargement des images. Ce bloc, plus specifique que
   tous les precedents, redefinit la carte une bonne fois. */
.res-grid{align-items:stretch}
.res-grid .res{display:flex;flex-direction:column;min-height:0}
.res-grid .res .res-vis{display:flex;align-items:center;justify-content:center;
  height:236px;min-height:236px;max-height:236px;flex:0 0 236px;
  padding:16px;aspect-ratio:auto;background:var(--pure);overflow:hidden}
.res-grid .res .res-vis img{max-height:204px;max-width:100%;width:auto;height:auto;
  object-fit:contain;mix-blend-mode:multiply}
.res-grid .res .res-fallback{width:auto;height:204px;aspect-ratio:1/1.414;max-height:204px}
.res-grid .res .res-body{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;
  padding:18px 20px 20px}
.res-grid .res .res-body b{font-size:16.5px;line-height:1.3;min-height:3.9em;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.res-grid .res .res-desc{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
  overflow:hidden;font-size:14px;line-height:1.5;min-height:3em;margin-bottom:14px}
.res-grid .res .res-dl{margin-top:auto}
@media(max-width:520px){
  .res-grid .res{flex-direction:row}
  .res-grid .res .res-vis{height:auto;min-height:0;max-height:none;flex:0 0 106px;padding:14px}
  .res-grid .res .res-vis img{max-height:120px}
  .res-grid .res .res-fallback{height:120px}
  .res-grid .res .res-body{justify-content:center;padding:16px 18px 16px 14px}
  .res-grid .res .res-body b{min-height:0}
  .res-grid .res .res-desc{display:none;min-height:0}
}


/* ---------- hauteur plancher de carte ----------
   Derniere cause du desordre : sans hauteur minimale, une carte se refermait
   sur sa vignette et son corps debordait hors du cadre. */
.res-grid .res{min-height:430px}
@media(max-width:520px){.res-grid .res{min-height:140px}}


/* ========================================================================
   BIBLIOTHEQUE — carte ressource, definition finale (remplace tout le reste)
   ======================================================================== */
.res-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px 22px;
  grid-auto-rows:1fr;align-items:stretch;text-align:left}
.res-grid .res{display:flex;flex-direction:column;min-height:0;height:100%;
  background:var(--pure);border:1px solid var(--line);border-radius:var(--r-lg);
  overflow:hidden;text-decoration:none;box-shadow:var(--e1);
  transition:transform .25s var(--ease),box-shadow .25s var(--ease),border-color .25s var(--ease)}
.res-grid .res:hover{transform:translateY(-4px);box-shadow:var(--e2);border-color:rgba(63,180,177,.5)}
.res-grid .res .res-vis{display:flex;align-items:center;justify-content:center;
  height:232px;min-height:232px;max-height:232px;flex:0 0 232px;
  padding:20px 18px 12px;background:var(--pure);overflow:hidden;aspect-ratio:auto}
.res-grid .res .res-vis img{max-height:196px;max-width:82%;width:auto;height:auto;
  object-fit:contain;mix-blend-mode:multiply;transition:transform .35s var(--ease)}
.res-grid .res:hover .res-vis img{transform:scale(1.04)}
.res-grid .res .res-fallback{width:auto;height:196px;aspect-ratio:1/1.414;max-height:196px}
.res-grid .res .res-body{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;
  padding:0 22px 22px}
.res-grid .res .res-kind{color:var(--teal-dark);font-size:11px;font-weight:900;
  letter-spacing:.14em;text-transform:uppercase;margin:0 0 9px}
.res-grid .res .res-body b{color:var(--navy);font-size:16.5px;font-weight:800;
  letter-spacing:-.02em;line-height:1.28;margin:0 0 10px;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
  min-height:2.56em}
.res-grid .res .res-desc{color:var(--txt);font-size:14px;line-height:1.5;margin:0 0 16px;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
  min-height:3em}
.res-grid .res .res-dl{margin-top:auto;color:var(--teal-dark);font-size:14px;font-weight:700}
@media(max-width:1080px){.res-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:820px){.res-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:520px){
  .res-grid{grid-template-columns:1fr;gap:14px;grid-auto-rows:auto}
  .res-grid .res{flex-direction:row;height:auto}
  .res-grid .res .res-vis{height:auto;min-height:0;max-height:none;flex:0 0 116px;padding:14px 10px}
  .res-grid .res .res-vis img{max-height:130px;max-width:100%}
  .res-grid .res .res-fallback{height:130px}
  .res-grid .res .res-body{justify-content:center;padding:16px 18px 16px 6px}
  .res-grid .res .res-body b{min-height:0}
  .res-grid .res .res-desc{display:none;min-height:0}
}
@media(prefers-reduced-motion:reduce){
  .res-grid .res,.res-grid .res .res-vis img{transition:none}
  .res-grid .res:hover{transform:none}
  .res-grid .res:hover .res-vis img{transform:none}
}


/* ═══ delta livraison 15 → 16 ═══════════════════════════════════════════════
   .dl-ic accueille desormais la couverture du document (et non une icone PDF) :
   on la recadre au format carre de la pastille. Et tant qu'un PDF n'est pas
   depose dans assets/docs/, le bouton de telechargement est rendu neutralise
   (.is-disabled) : aucun href mort, aucun 404 en production. */
.dl-ic{overflow:hidden;padding:0}
.dl-ic img{width:100%;height:100%;object-fit:cover;display:block}
.btn.is-disabled{background:var(--light);color:var(--txt);box-shadow:none;cursor:not-allowed;pointer-events:none}


/* ============================================================================
   ALIGNEMENT — pictogrammes et pseudo-elements cales sur la ligne de texte
   ----------------------------------------------------------------------------
   Placee en fin de feuille : surcharge les regles precedentes sans les
   supprimer. Principe : plus aucun `top` en dur. La position verticale d'un
   pseudo-element est DERIVEE de la taille de police et de la hauteur de ligne
   reellement declarees, portees par des variables locales :
     --kg-fs  taille de police du texte de la ligne
     --kg-lh  hauteur de ligne (sans unite)
     --kg-pt  padding vertical de l'element
     --kg-mk  diametre de la pastille
     --kg-gap gouttiere entre la pastille et le texte
   Consequence : changer --kg-fs suffit, la puce suit. Les clamp() du design
   system peuvent faire varier les tailles sans jamais desaligner les coches.
   ============================================================================ */

/* ---------- listes a coches ---------- */
.plan li    {--kg-fs:14px;  --kg-lh:1.5;  --kg-pt:4px; --kg-mk:17px; --kg-gap:11px}
.card li    {--kg-fs:14.5px;--kg-lh:1.55; --kg-pt:5px; --kg-mk:17px; --kg-gap:11px}
.checks li  {--kg-fs:15.5px;--kg-lh:1.6;  --kg-pt:8px; --kg-mk:17px; --kg-gap:11px}
.fiche-obj li{--kg-fs:14px; --kg-lh:1.5;  --kg-pt:0px; --kg-mk:16px; --kg-gap:10px}

.plan li,.card li,.checks li,.fiche-obj li{
  position:relative;
  font-size:var(--kg-fs);
  line-height:var(--kg-lh);
  padding-top:var(--kg-pt);
  padding-bottom:var(--kg-pt);
  padding-left:calc(var(--kg-mk) + var(--kg-gap));
}
.plan li::before,.card li::before,.checks li::before,.fiche-obj li::before{
  content:"✓";
  position:absolute;
  left:0;
  /* centre de la pastille = centre de la PREMIERE ligne de texte,
     que l'element tienne sur une ligne ou sur trois */
  top:calc(var(--kg-pt) + (var(--kg-fs) * var(--kg-lh) - var(--kg-mk)) / 2);
  width:var(--kg-mk);
  height:var(--kg-mk);
  display:flex;
  align-items:center;
  justify-content:center;
  line-height:1;
  font-size:calc(var(--kg-mk) * .6);
  font-weight:900;
  color:var(--teal-dark);
}
.fiche-obj li::before{background:rgba(63,180,177,.14);border-radius:50%}

/* ---------- FAQ : le +/- se cale sur la 1re ligne de la question ----------
   Une question sur deux lignes (frequent en 390 px) laissait le bouton flotter
   au milieu du bloc, jusqu'a 27 px sous la 1re ligne. */
.faq summary{
  --kg-fs:16.5px;--kg-lh:1.6;--kg-mk:28px;
  font-size:var(--kg-fs);
  line-height:var(--kg-lh);
  align-items:flex-start;
}
.faq summary::after{
  margin-top:calc((var(--kg-fs) * var(--kg-lh) - var(--kg-mk)) / 2);
  width:var(--kg-mk);height:var(--kg-mk);flex:0 0 var(--kg-mk);
}


/* ============================================================================
   WEBFORM PIPEDRIVE — cadre d'integration
   Le formulaire est servi par Pipedrive dans une iframe : on ne maitrise pas
   son interieur, seulement le cadre. On lui donne la meme carte blanche que
   .form-card pour qu'il ne fasse pas piece rapportee, et une hauteur suffisante
   pour que le visiteur n'ait jamais a scroller dans l'iframe (formulaire a 5
   champs + reCAPTCHA : 643 px mesures en 700 px de large, 675 px en 360 px).
   ============================================================================ */
.pd-embed{
  max-width:640px;margin:0 auto;text-align:left;
  background:var(--pure);border:var(--hair);border-radius:var(--r-xl);
  box-shadow:var(--e3);padding:clamp(16px,2.2vw,26px);
}
.pd-embed iframe{
  display:block;width:100%;height:670px;border:0;border-radius:12px;
  color-scheme:light;
}
.pd-embed .form-note{margin-top:14px}
.pd-fallback{font-size:15px;line-height:1.6;color:var(--txt);padding:22px 4px}
.pd-fallback a{color:var(--teal-dark);font-weight:700}
@media(max-width:620px){.pd-embed iframe{height:750px}}
/* Rappel du document demande sur les pages livre blanc / guide : le webform ne
   sait pas recevoir cette information par parametre d'URL. */
.pd-doc{
  --kg-fs:14.5px;--kg-lh:1.55;--kg-mk:20px;--kg-pt:14px;--kg-pl:16px;
  position:relative;text-align:left;
  max-width:640px;margin:0 auto 18px;
  background:rgba(63,180,177,.09);border:1px solid rgba(63,180,177,.24);
  border-radius:var(--r-md);
  padding:var(--kg-pt) var(--kg-pl) var(--kg-pt)
          calc(var(--kg-pl) + var(--kg-mk) + 12px);
  font-size:var(--kg-fs);line-height:var(--kg-lh);color:var(--navy);
}
.pd-doc::before{
  content:"i";position:absolute;left:var(--kg-pl);
  /* meme derivation que les coches : centre de la pastille = centre de la 1re ligne */
  top:calc(var(--kg-pt) + (var(--kg-fs) * var(--kg-lh) - var(--kg-mk)) / 2);
  width:var(--kg-mk);height:var(--kg-mk);
  display:flex;align-items:center;justify-content:center;
  border-radius:50%;background:var(--teal);color:#fff;
  font-size:12px;font-weight:900;font-style:italic;line-height:1;
}
.pd-doc b{color:var(--navy);font-weight:700}

/* ── FIX bandeau stats (67% / 80-100K€ / 6 mois, etc.) ──────────────────────
   La fusion des 16 livraisons a laissé un conflit : une règle adjacente
   `.sec-grey + .stats-sec{background:var(--pure)}` (blanc) alors que les
   chiffres restent en blanc (`.stats-sec .stat b{color:#fff}`), d'où une
   « bande blanche » quand le bandeau suit une section grise ou claire
   (ex. pulse-audit). On verrouille ici le design voulu : bandeau navy,
   chiffres blancs, partout et de façon cohérente. Placé en fin de fichier
   pour gagner la cascade à spécificité égale. */
.stats-sec,
.sec-grey  + .stats-sec,
.sec-light + .stats-sec,
.sec-white + .stats-sec{background:var(--navy)}
.stats-sec .stat b{color:#fff}
.stats-sec .stat span{color:rgba(255,255,255,.82)}
.stats-sec .stat{border-left:1px solid rgba(255,255,255,.17)}
.stats-sec .stat:first-child{border-left:0}
