<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<script>document.documentElement.className += ' js';</script>
<!-- Google Analytics 4 -->
<script>window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments);}gtag('consent','default',{'ad_storage':'denied','analytics_storage':'denied','ad_user_data':'denied','ad_personalization':'denied','wait_for_update':500});gtag('js',new Date());gtag('config','G-8FMS5X6BX6');
(function(){function l(){if(window.__ga)return;window.__ga=1;var s=document.createElement('script');s.async=1;s.src='https://www.googletagmanager.com/gtag/js?id=G-8FMS5X6BX6';document.head.appendChild(s);}
var ev=['scroll','pointerdown','keydown','touchstart'];function t(){ev.forEach(function(e){removeEventListener(e,t,{passive:true})});l();}
ev.forEach(function(e){addEventListener(e,t,{passive:true,once:true})});})();</script>
<title>Accompagnement SEO mensuel sur mesure | Vincent Hégo</title>
<meta name="description" content="Accompagnement SEO mensuel par Vincent Hégo, consultant SEO indépendant depuis 2016 : audit, feuille de route et suivi mois par mois. Devis gratuit."/>
<meta name="robots" content="index,follow,max-image-preview:large"/>
<meta name="author" content="Vincent Hégo"/>
<meta name="theme-color" content="#ffffff"/>
<link rel="icon" href="https://www.vincenthego.com/wp-content/uploads/2020/12/LOGO_VINCENTHEGO.COM_-96x96.png" sizes="32x32"/>
<link rel="icon" href="https://www.vincenthego.com/wp-content/uploads/2020/12/LOGO_VINCENTHEGO.COM_-300x300.png" sizes="192x192"/>
<link rel="apple-touch-icon" href="https://www.vincenthego.com/wp-content/uploads/2020/12/LOGO_VINCENTHEGO.COM_-300x300.png"/>
<link rel="canonical" href="https://www.vincenthego.com/accompagnement-seo/"/>
<link rel="alternate" hreflang="fr" href="https://www.vincenthego.com/accompagnement-seo/"/>
<link rel="alternate" hreflang="x-default" href="https://www.vincenthego.com/accompagnement-seo/"/>
<meta property="og:type" content="website"/>
<meta property="og:locale" content="fr_FR"/>
<meta property="og:site_name" content="Vincent Hégo"/>
<meta property="og:title" content="Accompagnement SEO mensuel sur mesure | Vincent Hégo"/>
<meta property="og:description" content="Un accompagnement SEO mensuel pour transformer votre site en canal d'acquisition. Stratégie, contenu, technique et autorité pilotés mois par mois depuis 2016."/>
<meta property="og:url" content="https://www.vincenthego.com/accompagnement-seo/"/>
<meta property="og:image" content="https://www.vincenthego.com/accompagnement-seo/assets/og-accompagnement-seo.png"/>
<meta property="og:image:secure_url" content="https://www.vincenthego.com/accompagnement-seo/assets/og-accompagnement-seo.png"/>
<meta property="og:image:type" content="image/png"/>
<meta property="og:image:width" content="1200"/>
<meta property="og:image:height" content="630"/>
<meta property="og:image:alt" content="Accompagnement SEO avec Vincent Hégo, consultant SEO - 5,0/5 sur Google"/>
<meta name="twitter:card" content="summary_large_image"/>
<meta name="twitter:title" content="Accompagnement SEO mensuel sur mesure | Vincent Hégo"/>
<meta name="twitter:description" content="Un accompagnement SEO mensuel et sur mesure pour transformer votre référencement naturel en canal d'acquisition rentable."/>
<meta name="twitter:image" content="https://www.vincenthego.com/accompagnement-seo/assets/og-accompagnement-seo.png"/>
<link rel="dns-prefetch" href="https://www.googletagmanager.com"/>
<link rel="dns-prefetch" href="https://assets.calendly.com"/>
<link rel="dns-prefetch" href="https://calendly.com"/>
<link rel="dns-prefetch" href="https://bm.vincenthego.com"/>
<link rel="preload" href="/assets/fonts/poppins-400-lat.woff2" as="font" type="font/woff2" crossorigin />
<link rel="preload" href="/assets/fonts/poppins-700-lat.woff2" as="font" type="font/woff2" crossorigin />
<link rel="preload" href="/assets/fonts/poppins-800-lat.woff2" as="font" type="font/woff2" crossorigin />
<link rel="preload" href="/assets/brand/logo-vh-couleur.webp" as="image" fetchpriority="high"/>
<link rel="preload" href="/assets/brand/vincent-rond.webp" as="image"/>
<style>
@font-face{font-family:'Poppins';font-style:normal;font-weight:400;font-display:optional;src:url(/assets/fonts/poppins-400-ext.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'Poppins';font-style:normal;font-weight:400;font-display:optional;src:url(/assets/fonts/poppins-400-lat.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Poppins';font-style:normal;font-weight:600;font-display:optional;src:url(/assets/fonts/poppins-600-ext.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'Poppins';font-style:normal;font-weight:600;font-display:optional;src:url(/assets/fonts/poppins-600-lat.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Poppins';font-style:normal;font-weight:700;font-display:optional;src:url(/assets/fonts/poppins-700-ext.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'Poppins';font-style:normal;font-weight:700;font-display:optional;src:url(/assets/fonts/poppins-700-lat.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Poppins';font-style:normal;font-weight:800;font-display:optional;src:url(/assets/fonts/poppins-800-ext.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'Poppins';font-style:normal;font-weight:800;font-display:optional;src:url(/assets/fonts/poppins-800-lat.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
</style>
<style>
:root{
--orange:#f05820; --orange-soft:#ff7a4a; --orange-ink:#c2410c; --marine:#1c1962; --marine-deep:#13104a;
--ink:#15131f; --muted:#5b5870; --line:#e9e7f0;
--bg:#ffffff; --bg-soft:#f5f5f7; --white:#fff;
--font:'Gilroy','Poppins',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
--ease:cubic-bezier(.22,1,.36,1);
--radius:22px; --radius-lg:30px;
--shadow-sm:0 1px 2px rgba(20,16,60,.04),0 8px 24px rgba(20,16,60,.05);
--shadow-md:0 2px 6px rgba(20,16,60,.06),0 20px 50px rgba(20,16,60,.09);
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{font-family:var(--font);color:var(--ink);background:var(--bg);line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden}
.wrap{width:100%;max-width:1080px;margin:0 auto;padding:0 24px}
a{color:inherit;text-decoration:none}
img{display:block;max-width:100%}
/* boutons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;font-family:var(--font);font-weight:700;font-size:1.04rem;letter-spacing:.1px;padding:17px 32px;border-radius:999px;border:none;cursor:pointer;line-height:1;white-space:nowrap;min-height:48px;touch-action:manipulation;transition:transform .3s var(--ease),box-shadow .3s var(--ease),background .3s var(--ease)}
a:focus-visible,.btn:focus-visible,.faq-q:focus-visible{outline:3px solid rgba(240,88,32,.55);outline-offset:3px;border-radius:14px}
.btn-primary{background:linear-gradient(135deg,var(--orange),var(--orange-soft));color:#fff;box-shadow:0 12px 30px rgba(240,88,32,.34)}
.btn-primary:hover{transform:translateY(-2px);box-shadow:0 18px 40px rgba(240,88,32,.42)}
.btn-analyze{background:linear-gradient(135deg,#1c1962,#322c8f);color:#fff;box-shadow:0 12px 30px rgba(28,25,98,.30)}
.btn-analyze:hover{transform:translateY(-2px);box-shadow:0 18px 40px rgba(28,25,98,.4)}
.btn svg{width:18px;height:18px}
.btn-primary,.btn-analyze{position:relative;overflow:hidden}
.btn-primary::after,.btn-analyze::after{content:"";position:absolute;top:-50%;left:-78%;width:46%;height:200%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.45),transparent);transform:skewX(-22deg);pointer-events:none;animation:btnSheen 5.5s ease-in-out infinite}
.btn-analyze::after{background:linear-gradient(100deg,transparent,rgba(255,255,255,.26),transparent)}
@keyframes btnSheen{0%,58%{left:-78%}80%,100%{left:170%}}
.btn svg{transition:transform .3s var(--ease)}
.btn-primary:hover svg,.btn-analyze:hover svg{transform:translateX(4px)}
.btn:active{transform:translateY(0) scale(.98)}
@media(prefers-reduced-motion:reduce){.btn-primary::after,.btn-analyze::after{display:none}}
/* header */
header{position:sticky;top:0;z-index:60;background:rgba(255,255,255,.72);backdrop-filter:saturate(180%) blur(18px);-webkit-backdrop-filter:saturate(180%) blur(18px);border-bottom:1px solid rgba(20,16,60,.06)}
.nav{display:flex;align-items:center;justify-content:space-between;height:64px}
.nav-l{display:flex;align-items:center;gap:12px}
.nav-l img{height:25px;width:auto}
.nav-l .by{color:var(--muted);font-size:.82rem;font-weight:500;padding-left:12px;border-left:1px solid var(--line)}
.nav .btn{padding:11px 20px;font-size:.9rem;transition:opacity .35s var(--ease),transform .35s var(--ease),box-shadow .3s ease,background .3s ease}
.nav .btn.is-hidden{opacity:0;transform:translateY(-8px) scale(.96);pointer-events:none}
@media(max-width:560px){.nav-l .by{display:none}.nav .btn{padding:10px 16px;font-size:.84rem}}
/* hero */
.hero{position:relative;text-align:center;padding:38px 0 26px;overflow:hidden}
.host{display:flex;justify-content:center;align-items:center;gap:14px;margin-bottom:20px;text-align:left}
.host img{width:62px;height:62px;border-radius:50%;object-fit:cover;border:3px solid #fff;box-shadow:0 8px 22px rgba(20,16,60,.16),0 0 0 1px var(--line);flex-shrink:0}
.host .hn{font-weight:800;color:var(--marine);font-size:1rem;line-height:1.15}
.host .hr{color:var(--muted);font-size:.82rem;font-weight:500;margin-top:2px;white-space:nowrap}
@media(max-width:480px){.host img{width:52px;height:52px}.host{gap:11px}.host .hn{font-size:.95rem}.host .hr{font-size:.68rem}}
@media(max-width:340px){.host .hr{font-size:.62rem}}
.hero::before{content:"";position:absolute;left:50%;top:-120px;transform:translateX(-50%);width:900px;height:520px;background:radial-gradient(closest-side,rgba(240,88,32,.14),transparent 70%);pointer-events:none;z-index:0}
.hero::after{content:"";position:absolute;right:-160px;top:120px;width:540px;height:540px;background:radial-gradient(closest-side,rgba(90,80,230,.12),transparent 70%);pointer-events:none;z-index:0}
.hero .wrap{position:relative;z-index:1}
.eyebrow{display:inline-flex;align-items:center;gap:9px;background:var(--white);border:1px solid var(--line);box-shadow:var(--shadow-sm);padding:9px 18px;border-radius:999px;font-size:.84rem;font-weight:600;color:var(--marine);margin-bottom:20px}
.eyebrow .dot{width:8px;height:8px;border-radius:50%;background:var(--orange);box-shadow:0 0 0 4px rgba(240,88,32,.18)}
h1{font-size:clamp(2.2rem,4.4vw,3.4rem);line-height:1.07;letter-spacing:-1.3px;font-weight:700;color:var(--marine);max-width:760px;margin:0 auto;text-wrap:balance}
h1 .hl{background:linear-gradient(120deg,var(--orange),var(--orange-soft));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.hero .sub{font-size:clamp(1.06rem,1.9vw,1.24rem);color:var(--muted);max-width:640px;margin:22px auto 0;font-weight:400;text-wrap:balance}
.hero-cta{margin-top:34px;display:flex;flex-direction:column;align-items:center;gap:14px}
.hero-cta .micro{font-size:.9rem;color:var(--muted);font-weight:500}
.hero-cta .micro b{color:var(--marine);font-weight:700}
/* badges de crédibilité premium (custom) */
.cred{display:flex;align-items:stretch;justify-content:center;gap:14px;flex-wrap:wrap;margin-top:30px}
.cred-badge{display:flex;align-items:center;gap:13px;background:linear-gradient(180deg,#ffffff,#fafafd);border:1px solid var(--line);border-radius:18px;padding:13px 19px;box-shadow:var(--shadow-sm);position:relative;overflow:hidden;transition:transform .45s var(--ease),box-shadow .45s var(--ease),border-color .45s var(--ease)}
.cred-badge::before{content:"";position:absolute;inset:0 0 auto 0;height:52%;background:linear-gradient(180deg,rgba(255,255,255,.7),rgba(255,255,255,0));pointer-events:none}
.cred-badge:hover{transform:translateY(-3px);box-shadow:0 18px 44px rgba(240,88,32,.16),var(--shadow-md);border-color:#ddd9ea}
.cred-ic{width:42px;height:42px;border-radius:13px;display:grid;place-items:center;flex-shrink:0;position:relative;z-index:1}
.cred-ic.orange{background:linear-gradient(135deg,rgba(240,88,32,.14),rgba(255,122,74,.16))}
.cred-ic.orange svg{width:22px;height:22px;stroke:var(--orange);fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.cred-ic.gborder{background:#fff;border:1px solid var(--line);box-shadow:var(--shadow-sm)}
.cred-txt{position:relative;z-index:1;text-align:left}
.cred-txt .v{font-weight:900;color:var(--marine);font-size:1.16rem;line-height:1;letter-spacing:-.4px;display:flex;align-items:center;gap:7px}
.cred-txt .v .gstars{color:#fbbf24;font-size:.92rem;letter-spacing:1px}
.cred-txt .l{color:var(--muted);font-size:.79rem;font-weight:600;margin-top:4px;display:flex;align-items:center;gap:5px}
.cred-txt .l .vchk{display:inline-flex;align-items:center;gap:3px;color:#0ca678;font-weight:700}
.cred-txt .l .vchk svg{width:12px;height:12px;stroke:#0ca678;fill:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
@media(max-width:560px){.cred{gap:10px}.cred-badge{padding:11px 15px;gap:11px}.cred-ic{width:38px;height:38px}.cred-txt .v{font-size:1.05rem}}
/* marquee logos */
.logos{padding:26px 0 36px}
.logos + .sec{padding-top:44px}
.logos p{text-align:center;font-size:.72rem;letter-spacing:2.4px;text-transform:uppercase;color:var(--muted);font-weight:600;margin-bottom:20px}
.logos-row{display:flex;align-items:center;justify-content:center;gap:24px;flex-wrap:nowrap}
.logos-row img{height:26px;width:auto;object-fit:contain;filter:grayscale(1);opacity:.5;transition:opacity .3s,filter .3s}
.logos-row img.tall{height:42px}
.logos-row img:hover{filter:none;opacity:1}
@media(max-width:900px){.logos-row{flex-wrap:wrap;row-gap:20px;column-gap:34px}}
@media(max-width:560px){.logos-row{column-gap:26px;row-gap:16px}.logos-row img{height:22px}.logos-row img.tall{height:30px}}
/* sections */
section{position:relative}
.sec{padding:74px 0}
.sec-soft{background:var(--bg-soft)}
.sec-head{text-align:center;max-width:720px;margin:0 auto 46px}
.kicker{display:inline-block;font-size:.76rem;letter-spacing:2px;text-transform:uppercase;font-weight:700;color:var(--orange-ink);margin-bottom:14px}
h2{font-size:clamp(1.8rem,3.6vw,2.7rem);line-height:1.1;letter-spacing:-1px;font-weight:800;color:var(--marine);text-wrap:balance}
.sec-head p{color:var(--muted);font-size:1.08rem;margin-top:16px;text-wrap:balance}
.lead{max-width:760px;margin:0 auto;color:var(--muted);font-size:1.08rem}
.lead p{margin-top:16px}
.lead p:first-child{margin-top:0}
.lead strong{color:var(--marine);font-weight:700}
.lead a,.sec-head p a{color:var(--orange);font-weight:700;text-decoration:underline;text-underline-offset:2px}
/* answer card (réponse directe / AI Overview) */
.answer-card{max-width:840px;margin:0 auto;background:linear-gradient(180deg,#fff,#fbfbfd);border:1px solid var(--line);border-radius:var(--radius);padding:30px 32px;box-shadow:var(--shadow-sm);text-align:left}
.answer-card p{font-size:1.1rem;color:var(--ink);line-height:1.65}
.answer-card p + p{margin-top:14px}
.answer-card strong{color:var(--marine);font-weight:800}
.answer-card a{color:var(--orange);font-weight:700;text-decoration:underline;text-underline-offset:2px}
.answer-card .levers{list-style:none;display:flex;flex-wrap:wrap;gap:10px;margin-top:20px}
.answer-card .levers li{display:inline-flex;align-items:center;gap:8px;background:rgba(240,88,32,.08);color:var(--marine);font-weight:600;font-size:.92rem;padding:8px 14px;border-radius:999px}
.answer-card .levers li svg{width:15px;height:15px;stroke:var(--orange);fill:none;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}
/* prix cards */
.price-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:8px}
@media(max-width:760px){.price-cards{grid-template-columns:1fr}}
.price-card{background:var(--white);border:1px solid var(--line);border-radius:var(--radius);padding:28px 26px;box-shadow:var(--shadow-sm);transition:transform .35s var(--ease),box-shadow .35s var(--ease)}
.price-card:hover{transform:translateY(-4px);box-shadow:0 22px 52px rgba(240,88,32,.14),var(--shadow-md)}
.price-card.feat{background:linear-gradient(160deg,var(--marine),var(--marine-deep));color:#fff;border:none}
.price-card .pl{font-size:.72rem;letter-spacing:1.4px;text-transform:uppercase;font-weight:700;color:var(--orange-ink);margin-bottom:10px}
.price-card.feat .pl{color:var(--orange-soft)}
.price-card .pv{font-size:1.5rem;font-weight:900;color:var(--marine);letter-spacing:-.5px;line-height:1.12}
.price-card.feat .pv{color:#fff}
.price-card .pd{font-size:.92rem;color:var(--muted);margin-top:10px;line-height:1.5}
.price-card.feat .pd{color:rgba(255,255,255,.82)}
/* bande CTA de rappel (mi-page) */
.cta-band{padding:16px 0 74px}
.cta-band-inner{max-width:820px;margin:0 auto;text-align:center;background:linear-gradient(160deg,var(--marine),var(--marine-deep));border-radius:var(--radius-lg);padding:44px 36px;box-shadow:0 24px 60px rgba(20,16,60,.22);position:relative;overflow:hidden}
.cta-band-inner::before{content:"";position:absolute;right:-120px;top:-120px;width:360px;height:360px;background:radial-gradient(closest-side,rgba(240,88,32,.28),transparent 70%);pointer-events:none}
.cta-band-title{font-size:clamp(1.5rem,3vw,2rem);font-weight:800;color:#fff;letter-spacing:-.5px;line-height:1.15;position:relative;z-index:1;text-wrap:balance}
.cta-band p{color:rgba(255,255,255,.82);margin:14px auto 24px;max-width:560px;position:relative;z-index:1}
.cta-band .btn{position:relative;z-index:1}
.cta-face{width:92px;height:92px;border-radius:50%;object-fit:cover;object-position:center top;margin:0 auto 20px;display:block;border:3px solid rgba(255,255,255,.92);box-shadow:0 0 0 7px rgba(240,88,32,.38),0 12px 30px rgba(0,0,0,.28);position:relative;z-index:1}
/* section sources & références (E-E-A-T) */
.sec-sources{padding:58px 0 62px}
.sec-sources .sources-title{font-size:.74rem;letter-spacing:1.6px;text-transform:uppercase;color:var(--muted);font-weight:700;text-align:center;margin-bottom:24px}
.sec-sources ul{list-style:none;display:grid;grid-template-columns:repeat(2,1fr);gap:14px;max-width:820px;margin:0 auto;padding:0}
@media(max-width:640px){.sec-sources ul{grid-template-columns:1fr}}
.sec-sources li{margin:0}
.sec-sources a{display:flex;align-items:center;gap:13px;background:var(--white);border:1px solid var(--line);border-radius:14px;padding:15px 18px;color:var(--marine);font-weight:600;font-size:.92rem;line-height:1.35;text-decoration:none;box-shadow:var(--shadow-sm);transition:transform .25s var(--ease),box-shadow .25s var(--ease),border-color .25s var(--ease)}
.sec-sources a:hover{transform:translateY(-3px);box-shadow:var(--shadow-md);border-color:#ddd9ea;color:var(--marine)}
.sec-sources a .src-fav{flex-shrink:0;width:32px;height:32px;border-radius:9px;background:#fff;border:1px solid var(--line);object-fit:contain;padding:5px;box-sizing:border-box}
/* résumé "En bref" (réponse directe / Helpful) */
.tldr{max-width:820px;margin:0 auto 32px;background:linear-gradient(180deg,#fff,#fbfbfd);border:1px solid var(--line);border-radius:var(--radius);padding:24px 28px;box-shadow:var(--shadow-sm)}
.tldr .tldr-h{display:inline-flex;align-items:center;gap:8px;font-size:.74rem;letter-spacing:1.6px;text-transform:uppercase;font-weight:800;color:var(--orange-ink);margin-bottom:14px}
.tldr ul{list-style:none;display:flex;flex-direction:column;gap:11px;margin:0;padding:0}
.tldr li{display:flex;gap:12px;align-items:flex-start;font-size:1.02rem;color:var(--ink);line-height:1.5}
.tldr li svg{width:20px;height:20px;flex-shrink:0;margin-top:2px;stroke:var(--orange);fill:none;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
.tldr li b{color:var(--marine);font-weight:700}
/* conteneur générique de schéma SVG */
.viz{max-width:900px;margin:0 auto}
.viz-card{background:linear-gradient(180deg,#fff,#fbfbfd);border:1px solid var(--line);border-radius:var(--radius-lg);padding:24px 22px 18px;box-shadow:var(--shadow-sm)}
.viz-card svg{width:100%;height:auto;display:block}
.viz-cap{text-align:center;color:var(--muted);font-size:.9rem;margin-top:14px;max-width:640px;margin-left:auto;margin-right:auto;line-height:1.55}
.why-lead{text-align:center;max-width:640px;margin:0 auto 24px;color:var(--marine);font-weight:700;font-size:1.05rem}
@media(max-width:600px){
.viz-cap{text-align:left;padding:0 2px}
.lead p,.answer-card p,.sea-note,.why-card p,.card p,.tl-item p{font-size:1rem}
.why-lead{font-size:1rem;text-align:left}
}
.viz-cap b{color:var(--marine);font-weight:700}
/* note humaine */
.human-note{display:flex;align-items:center;gap:12px;max-width:520px;margin:20px auto 0;background:rgba(240,88,32,.06);border-radius:16px;padding:12px 18px;text-align:left}
.human-note img{width:44px;height:44px;border-radius:50%;object-fit:cover;flex-shrink:0;border:2px solid #fff;box-shadow:0 4px 12px rgba(20,16,60,.14)}
.human-note p{font-size:.94rem;color:var(--marine);font-weight:500;line-height:1.4}
/* SEO vs SEA (graphique SVG) */
.sea{max-width:900px;margin:0 auto}
.sea-chart{background:linear-gradient(180deg,#fff,#fbfbfd);border:1px solid var(--line);border-radius:var(--radius-lg);padding:24px 22px 16px;box-shadow:var(--shadow-sm)}
.sea-chart svg{width:100%;height:auto;display:block}
.sea-cards{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:24px}
@media(max-width:680px){.sea-cards{grid-template-columns:1fr}}
.sea-card{background:var(--white);border:1px solid var(--line);border-radius:var(--radius);padding:22px 24px;box-shadow:var(--shadow-sm)}
.sea-tag{display:flex;align-items:center;gap:10px;font-weight:800;color:var(--marine);font-size:1.02rem;margin-bottom:8px}
.sea-tag .dot{width:13px;height:13px;border-radius:50%;flex-shrink:0}
.sea-tag .dot.seo{background:var(--orange)}
.sea-tag .dot.sea{background:#322c8f}
.sea-card p{color:var(--muted);font-size:.98rem;line-height:1.55}
.sea-card p b{color:var(--marine);font-weight:700}
.sea-note{text-align:center;max-width:680px;margin:24px auto 0;color:var(--muted);font-size:1rem}
.sea-note b{color:var(--marine);font-weight:700}
/* tableau comparatif SEO vs SEA */
.vs{max-width:840px;margin:28px auto 0;border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-md);background:var(--white)}
.vs-row{display:grid;grid-template-columns:1.05fr 1fr 1fr}
.vs-row + .vs-row{border-top:1px solid var(--line)}
.vs-crit{padding:15px 18px;background:var(--bg-soft);font-weight:700;color:var(--marine);font-size:.9rem;display:flex;align-items:center}
.vs-c{padding:14px 16px;font-size:.95rem;display:flex;align-items:center;gap:9px;color:var(--ink);line-height:1.35}
.vs-c.col-seo{background:rgba(240,88,32,.05)}
.vs-c.col-sea{color:var(--muted)}
.vs-h .vs-crit{background:transparent}
.vs-h .vs-c{justify-content:center;text-align:center;flex-direction:column;gap:2px;padding:16px;font-weight:800;color:#fff}
.vs-h .col-seo{background:linear-gradient(135deg,var(--orange),var(--orange-soft))}
.vs-h .col-sea{background:linear-gradient(135deg,var(--marine),var(--marine-deep))}
.vs-h .vs-c small{font-weight:600;font-size:.72rem;opacity:.92}
.vs-mark{display:inline-flex;align-items:center;justify-content:center;width:19px;height:19px;border-radius:50%;font-size:11px;font-weight:800;flex-shrink:0}
.vs-mark.ok{background:#e6f7ec;color:#0ca678}
.vs-mark.no{background:#eef0f6;color:#9a9ab0}
@media(max-width:600px){
.vs-row{grid-template-columns:1fr 1fr}
.vs-crit{grid-column:1 / -1;background:var(--marine);color:#fff;font-size:.78rem;padding:9px 16px;text-transform:uppercase;letter-spacing:.5px}
.vs-h .vs-crit{display:none}
.vs-c{font-size:.86rem;padding:12px 12px;gap:7px}
.vs-h .vs-c{font-size:.98rem}
}
/* quiz d'auto-évaluation */
.quiz-card{max-width:760px;margin:0 auto;background:var(--white);border:1px solid var(--line);border-radius:var(--radius-lg);padding:34px 34px;box-shadow:var(--shadow-md)}
@media(max-width:560px){.quiz-card{padding:28px 20px}}
.quiz-q{border:none;margin:0 0 22px;padding:0}
.quiz-q .quiz-legend{font-weight:800;color:var(--marine);font-size:1.05rem;margin-bottom:12px;display:block;line-height:1.35}
.quiz-opts{display:flex;flex-direction:column;gap:10px}
.quiz-opt{display:flex;align-items:center;gap:12px;padding:13px 16px;border:1.5px solid var(--line);border-radius:14px;cursor:pointer;transition:border-color .2s,background .2s;font-size:1rem;color:var(--ink);touch-action:manipulation}
.quiz-opt:hover{border-color:var(--orange)}
.quiz-opt input{accent-color:var(--orange);width:18px;height:18px;flex-shrink:0;margin:0}
.quiz-opt.sel{border-color:var(--orange);background:rgba(240,88,32,.06)}
.quiz-card .btn{margin-top:4px;width:100%}
.quiz-hint{font-size:.88rem;color:var(--muted);margin-top:12px;text-align:center}
/* quiz en mode assistant (étape par étape) */
.quiz-progress{height:8px;background:#eef0f6;border-radius:999px;overflow:hidden;margin:0 0 10px}
.quiz-progress-bar{height:100%;width:20%;background:linear-gradient(90deg,var(--orange),var(--orange-soft));border-radius:999px;transition:width .4s var(--ease)}
.quiz-count{font-size:.8rem;letter-spacing:.4px;color:var(--muted);font-weight:600;text-align:center;margin:0 0 22px;text-transform:uppercase}
.quiz-step{border:none;margin:0;padding:0}
.quiz-nav{align-items:center;margin-top:16px;min-height:22px}
.quiz-back{background:none;border:none;color:var(--muted);font-weight:600;font-size:.9rem;cursor:pointer;font-family:inherit;padding:6px 2px}
.quiz-back:hover{color:var(--orange)}
.quiz-progress,.quiz-count,.quiz-nav{display:none}
.js .quiz-progress{display:block}
.js .quiz-count{display:block}
.js .quiz-nav{display:flex}
.js .quiz-step{display:none}
.js .quiz-step.is-active{display:block;animation:quizIn .35s var(--ease)}
.js .quiz-step.is-active .quiz-legend{font-size:1.2rem;display:block;line-height:1.4;margin-bottom:26px}
@keyframes quizIn{0%{opacity:0;transform:translateX(14px)}100%{opacity:1;transform:none}}
.js #quizForm{min-height:250px;display:flex;flex-direction:column;justify-content:center}
.js .quiz-step.is-active{padding:6px 0}
.quiz-result{margin-top:6px;text-align:center;animation:cl-pop .4s ease}
.quiz-result .qr-badge{display:flex;align-items:center;justify-content:center;width:60px;height:60px;border-radius:50%;font-size:30px;font-weight:800;margin:0 auto 14px}
.quiz-result .qr-badge.hi{background:#e6f7ec;color:#1a7a3d}
.quiz-result .qr-badge.mid{background:rgba(240,88,32,.12);color:#a8380a}
.quiz-result .qr-badge.lo{background:#eef0f6;color:#5b5870}
.quiz-result .qr-title{font-size:1.35rem;font-weight:800;color:var(--marine);margin-bottom:10px;letter-spacing:-.3px;text-wrap:balance}
.quiz-result p{color:var(--muted);font-size:1.02rem;max-width:540px;margin:0 auto 20px;line-height:1.55}
@keyframes cl-pop{0%{transform:scale(.6);opacity:0}100%{transform:scale(1);opacity:1}}
/* aération mobile + fixes responsive (desktop inchangé) */
@media(max-width:560px){
h1{line-height:1.18;letter-spacing:-.4px}
h2{line-height:1.24}
.hero .sub,.sec-head p,.lead p,.answer-card p,.panel li,.card p{line-height:1.66}
.cta-band-inner{padding:34px 20px}
.cta-band-title{line-height:1.28}
.cta-band .btn,.hero-cta .btn{width:100%;padding-left:18px;padding-right:18px}
.human-note{text-align:center;flex-direction:column;gap:10px}
}
.upd{display:flex;align-items:center;gap:10px;width:fit-content;max-width:100%;margin:4px auto 34px;background:rgba(240,88,32,.08);border:1px solid rgba(240,88,32,.2);color:var(--marine);font-size:.85rem;font-weight:600;padding:7px 16px 7px 8px;border-radius:999px}
.upd img{width:28px;height:28px;border-radius:50%;object-fit:cover;flex-shrink:0}
.upd time{font-weight:700}
.upd a{color:var(--orange);font-weight:700}
@media(max-width:480px){.upd{font-size:.76rem;padding:6px 13px 6px 6px;line-height:1.3}.upd img{width:24px;height:24px}}
.upd a{color:var(--marine);font-weight:700}
/* problème : erreurs */
.why{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;margin-top:8px}
@media(max-width:760px){.why{grid-template-columns:1fr}}
.why-card{background:var(--white);border:1px solid var(--line);border-radius:var(--radius);padding:26px 26px;box-shadow:var(--shadow-sm);transition:transform .35s var(--ease),box-shadow .35s var(--ease)}
.why-card:hover{transform:translateY(-4px);box-shadow:0 22px 52px rgba(240,88,32,.14),var(--shadow-md)}
.why-card .wn{display:inline-grid;place-items:center;width:34px;height:34px;border-radius:10px;background:linear-gradient(135deg,rgba(240,88,32,.14),rgba(255,122,74,.16));color:#a8380a;font-weight:900;font-size:1rem;margin-bottom:14px}
.why-card h3{font-size:1.12rem;font-weight:800;color:var(--marine);margin-bottom:7px}
.why-card p{color:var(--muted);font-size:.98rem}
/* bento piliers */
.bento{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
@media(max-width:840px){.bento{grid-template-columns:1fr}}
.card{background:var(--white);border:1px solid var(--line);border-radius:var(--radius);padding:30px 28px;box-shadow:var(--shadow-sm);transition:transform .35s var(--ease),box-shadow .35s var(--ease)}
.card:hover{transform:translateY(-5px);box-shadow:0 24px 56px rgba(240,88,32,.18),var(--shadow-md)}
.card .ic{width:52px;height:52px;border-radius:15px;display:grid;place-items:center;background:linear-gradient(135deg,rgba(240,88,32,.12),rgba(255,122,74,.12));margin-bottom:20px}
.card .ic svg{width:26px;height:26px;stroke:var(--orange);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.card h3{font-size:1.18rem;font-weight:800;color:var(--marine);margin-bottom:9px}
.card p{color:var(--muted);font-size:1rem}
/* comparatif */
.cmp{max-width:900px;margin:0 auto;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-sm);background:var(--white)}
.cmp-scroll{overflow-x:auto}
/* DÉFILEMENT VISIBLE DES TABLEAUX (17/08/2026). En `min-width:640px` dans un
cadre de ~340 px, le tableau est coupé en plein mot sur téléphone et rien
ne disait qu'on pouvait le faire défiler. Les ombres seules ne suffisent
pas : une ligne sur deux a un fond opaque qui les recouvre. D'où la mention
explicite, collante à gauche pour rester lisible pendant le défilement.
Posé par outils/fix_tableau_defilable.py */
@media (max-width:720px){
.cmp-scroll{
background:
linear-gradient(270deg, var(--bg) 24%, rgba(255,255,255,0)) 100% 0,
radial-gradient(farthest-side at 100% 50%, rgba(20,16,60,.20), rgba(20,16,60,0)) 100% 0;
background-repeat:no-repeat;
background-size:30px 100%, 14px 100%;
background-attachment:local, scroll;
}
.cmp-scroll:has(table)::before{
content:"Faites défiler le tableau →";
position:sticky; left:0;
display:block; width:max-content;
padding:9px 14px 8px;
font-size:.76rem; font-weight:700; letter-spacing:.04em;
color:var(--muted);
}
}
.cmp table{width:100%;border-collapse:collapse;font-size:.98rem;min-width:640px}
.cmp th,.cmp td{padding:16px 18px;text-align:left;vertical-align:top;border-bottom:1px solid var(--line)}
.cmp thead th{background:var(--bg-soft);font-weight:800;color:var(--marine);font-size:.82rem;letter-spacing:.2px}
.cmp thead th:first-child{color:var(--orange);text-transform:uppercase;font-size:.72rem;letter-spacing:1px}
.cmp thead th.hl{color:var(--orange)}
.cmp tbody tr:last-child td{border-bottom:none}
.cmp td:first-child{font-weight:700;color:var(--marine);width:22%}
.cmp .vh{color:var(--ink);font-weight:600}
.cmp .auto{color:var(--muted)}
@media(max-width:560px){.cmp th,.cmp td{padding:12px 12px;font-size:.86rem}}
/* méthode timeline */
.timeline{max-width:820px;margin:0 auto;position:relative}
.timeline::before{content:"";position:absolute;left:26px;top:8px;bottom:8px;width:2px;background:linear-gradient(180deg,var(--orange),rgba(240,88,32,.15));border-radius:2px}
.tl-item{position:relative;padding:0 0 30px 74px}
.tl-item:last-child{padding-bottom:0}
.tl-badge{position:absolute;left:0;top:0;width:54px;height:54px;border-radius:16px;display:grid;place-items:center;background:linear-gradient(135deg,var(--marine),var(--marine-deep));color:#fff;font-weight:900;font-size:1.05rem;box-shadow:0 10px 24px rgba(28,25,98,.22);z-index:1}
.tl-item h3{font-size:1.18rem;font-weight:800;color:var(--marine);margin-bottom:6px}
.tl-item .ph{font-size:.72rem;letter-spacing:1.4px;text-transform:uppercase;color:var(--orange-ink);font-weight:700;margin-bottom:6px}
.tl-item p{color:var(--muted);font-size:1rem}
@media(max-width:480px){.tl-item{padding-left:64px}.tl-badge{width:48px;height:48px}.timeline::before{left:23px}}
/* split : pour qui */
.split{display:grid;grid-template-columns:1fr 1fr;gap:30px;align-items:stretch}
@media(max-width:840px){.split{grid-template-columns:1fr}}
/* 1fr = minmax(auto,1fr) : sans min-width:0 la colonne ne peut pas
descendre sous la largeur mini du contenu, et le panneau deborde
de la fenetre (mesure a 375px : 542px dans 327px). */
.split{min-width:0}.split>*{min-width:0}
/* la puce et le lien d'un <li> en flex ne peuvent pas passer a la
ligne sans flex-wrap : le lien sortait de la fenetre a 375px. */
.panel li{flex-wrap:wrap}.panel li>*{min-width:0}
.panel{background:var(--white);border:1px solid var(--line);border-radius:var(--radius);padding:32px 30px;box-shadow:var(--shadow-sm);transition:transform .4s var(--ease),box-shadow .4s var(--ease)}
.panel:hover{transform:translateY(-4px);box-shadow:0 22px 52px rgba(240,88,32,.14)}
.panel.dark{background:linear-gradient(160deg,var(--marine),var(--marine-deep));color:#fff;border:none}
.panel h3{font-size:1.28rem;font-weight:800;margin-bottom:18px;letter-spacing:-.3px}
.panel.dark h3{color:#fff}
.panel ul{list-style:none;display:flex;flex-direction:column;gap:14px}
.panel li{display:flex;gap:13px;align-items:flex-start;font-size:1.02rem;color:var(--ink)}
.panel.dark li{color:rgba(255,255,255,.92)}
.panel li svg{width:21px;height:21px;flex-shrink:0;margin-top:1px}
.ck{stroke:var(--orange);fill:none;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
.cx{stroke:#c9c7d6;fill:none;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
.panel.dark .ck{stroke:var(--orange-soft)}
/* stats band */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-top:20px}
@media(max-width:820px){.stats{grid-template-columns:repeat(2,1fr)}}
@media(max-width:460px){.stats{grid-template-columns:1fr}}
.stat{text-align:center;background:linear-gradient(180deg,#fff,#fafafd);border:1px solid var(--line);border-radius:var(--radius);padding:28px 16px 24px;box-shadow:var(--shadow-sm);position:relative;overflow:hidden;transition:transform .45s var(--ease),box-shadow .45s var(--ease)}
.stat::before{content:"";position:absolute;inset:0 0 auto 0;height:46%;background:linear-gradient(180deg,rgba(255,255,255,.6),rgba(255,255,255,0));pointer-events:none}
.stat:hover{transform:translateY(-5px);box-shadow:0 22px 52px rgba(240,88,32,.2),var(--shadow-md)}
.stat .n{font-size:2.2rem;font-weight:900;color:var(--orange);line-height:1;letter-spacing:-1.2px;position:relative;z-index:1}
.stat .l{color:var(--muted);font-size:.9rem;font-weight:600;margin-top:9px;position:relative;z-index:1}
/* case study */
.case{max-width:900px;margin:36px auto 0;background:linear-gradient(160deg,var(--marine),var(--marine-deep));border-radius:var(--radius-lg);padding:38px 36px;color:#fff;box-shadow:0 24px 60px rgba(20,16,60,.22);position:relative;overflow:hidden}
.case::before{content:"";position:absolute;right:-120px;top:-120px;width:360px;height:360px;background:radial-gradient(closest-side,rgba(240,88,32,.28),transparent 70%);pointer-events:none}
.case .ct{position:relative;z-index:1}
.case .cq{font-size:1.28rem;font-weight:700;line-height:1.4;letter-spacing:-.2px;text-wrap:pretty}
.case .cq b{color:var(--orange-soft)}
.case .cm{display:flex;align-items:center;gap:13px;margin-top:22px}
.case .cm img{width:46px;height:46px;border-radius:50%;object-fit:contain;background:#fff;padding:6px;flex-shrink:0}
.case .cm .cn{font-weight:800;font-size:1rem}
.case .cm .cr{color:rgba(255,255,255,.7);font-size:.86rem}
/* consultant vs agence */
.why-me{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
@media(max-width:840px){.why-me{grid-template-columns:1fr}}
/* bloc auteur (E-E-A-T) */
.bio{display:grid;grid-template-columns:250px 1fr;gap:32px;align-items:center;max-width:900px;margin:0 auto 40px;background:linear-gradient(180deg,#fff,#fbfbfd);border:1px solid var(--line);border-radius:var(--radius-lg);padding:26px 30px;box-shadow:var(--shadow-sm)}
@media(max-width:680px){.bio{grid-template-columns:1fr;text-align:center;gap:18px;padding:24px 22px}}
.bio-photo{width:100%;max-width:230px;border-radius:20px;filter:grayscale(1);box-shadow:0 12px 30px rgba(20,16,60,.18);margin:0 auto;height:auto;display:block}
.bio-name{font-weight:800;color:var(--marine);font-size:1.2rem;letter-spacing:-.3px}
.bio-txt p{color:var(--muted);font-size:1rem;margin-top:12px}
.bio-txt a{color:var(--orange);font-weight:700;text-decoration:underline;text-underline-offset:2px}
/* image de contenu + citation */
.figure{max-width:860px;margin:34px auto 0}
.figure img{width:100%;height:auto;border-radius:var(--radius-lg);box-shadow:var(--shadow-md);display:block}
.figure figcaption{text-align:center;color:var(--muted);font-size:.88rem;margin-top:12px;font-style:italic}
.quote{max-width:760px;margin:0 auto 44px;background:linear-gradient(180deg,#fff,#fbfbfd);border:1px solid var(--line);border-radius:var(--radius);padding:26px 30px;box-shadow:var(--shadow-sm)}
.quote p{font-size:1.12rem;color:var(--ink);line-height:1.55;font-weight:500}
.quote cite{display:block;margin-top:12px;font-style:normal;font-size:.9rem;color:var(--muted);font-weight:600}
.quote cite a{color:var(--orange);font-weight:700;text-decoration:underline;text-underline-offset:2px}
/* CTA / diagnostic */
.diag{padding:78px 0 30px}
.diag .sec-head{margin-bottom:30px}
#diagnostic{scroll-margin-top:88px}
.diag-reassure{display:flex;align-items:center;justify-content:center;gap:14px;flex-wrap:wrap;margin:0 auto 26px;color:var(--marine);font-weight:600;font-size:.98rem}
.diag-reassure .chip{display:inline-flex;align-items:center;gap:8px;background:var(--white);border:1px solid var(--line);box-shadow:var(--shadow-sm);padding:9px 16px;border-radius:999px}
.diag-reassure svg{width:16px;height:16px;stroke:var(--orange);fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.diag-face{width:74px;height:74px;border-radius:50%;object-fit:cover;border:3px solid #fff;box-shadow:0 8px 22px rgba(20,16,60,.18),0 0 0 1px var(--line);margin:0 auto 16px;display:block}
/* footer */
footer{padding:44px 0 30px;border-top:1px solid var(--line);background:var(--bg-soft);color:var(--muted);font-size:.92rem}
.foot-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1.15fr;gap:32px;align-items:start;text-align:left}
@media(max-width:980px){.foot-grid{grid-template-columns:1fr 1fr;gap:30px}}@media(max-width:560px){.foot-grid{grid-template-columns:1fr;gap:26px}}
.foot-author{display:flex;gap:16px;align-items:flex-start}
.foot-photo{width:64px;height:64px;border-radius:50%;object-fit:cover;border:2px solid #fff;box-shadow:0 6px 18px rgba(20,16,60,.16);flex-shrink:0}
.foot-name{font-weight:800;color:var(--marine);font-size:1.08rem}
.foot-role{font-size:.82rem;font-weight:600;color:var(--orange-ink);margin:2px 0 8px}
.foot-bio{font-size:.9rem;color:var(--muted);line-height:1.55;max-width:380px}
.foot-col h3{font-size:.74rem;letter-spacing:1.4px;text-transform:uppercase;color:var(--marine);font-weight:800;margin-bottom:14px}
.foot-col a{display:block;color:var(--muted);font-weight:600;padding:5px 0;transition:color .2s ease}
.foot-col a:hover{color:var(--marine)}
.foot-bottom{margin-top:28px;padding-top:22px;border-top:1px solid var(--line);text-align:center;font-size:.86rem}
footer a{color:var(--marine);font-weight:600}
.foot-bottom .foot-logo{height:22px;width:auto;margin:0 auto 10px;opacity:.85;display:block}
/* sticky mobile cta */
.sticky-cta{position:fixed;left:0;right:0;bottom:0;z-index:55;background:rgba(255,255,255,.9);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-top:1px solid var(--line);padding:12px 16px;display:none;transition:transform .4s var(--ease),opacity .4s var(--ease)}
.sticky-cta .btn{width:100%;padding:15px}
.sticky-cta.is-hidden{transform:translateY(120%);opacity:0;pointer-events:none}
@media(max-width:720px){.sticky-cta{display:block}body{padding-bottom:78px}}
/* reveal */
.js .reveal{opacity:0;transform:translateY(22px);transition:opacity .7s var(--ease),transform .7s var(--ease)}
.reveal.in{opacity:1;transform:none}
.reveal.d1{transition-delay:.08s}.reveal.d2{transition-delay:.16s}.reveal.d3{transition-delay:.24s}
/* animations ambiantes */
.eyebrow .dot{animation:dotPulse 2.4s ease-in-out infinite}
@keyframes dotPulse{0%,100%{box-shadow:0 0 0 0 rgba(240,88,32,.5)}70%{box-shadow:0 0 0 7px rgba(240,88,32,0)}}
.hero h1 .hl{background:linear-gradient(110deg,var(--orange) 0%,var(--orange-soft) 38%,#ffb38c 50%,var(--orange-soft) 62%,var(--orange) 100%);background-size:220% auto;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;animation:hlShimmer 7s linear infinite}
@keyframes hlShimmer{0%{background-position:0% center}100%{background-position:-220% center}}
/* FAQ accordéon */
.faq-wrap{max-width:760px;margin:0 auto}
.faq-item{background:var(--white);border:1px solid var(--line);border-radius:16px;margin-bottom:12px;overflow:hidden;box-shadow:var(--shadow-sm);transition:box-shadow .3s var(--ease)}
.faq-item.open{box-shadow:var(--shadow-md)}
.faq-h{margin:0;font-size:inherit;font-weight:inherit;line-height:inherit}
.faq-q{width:100%;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:19px 24px;background:none;border:none;cursor:pointer;font-family:var(--font);font-size:1.05rem;font-weight:700;color:var(--marine);text-align:left;line-height:1.35;min-height:48px;touch-action:manipulation}
.faq-q .chev{flex-shrink:0;display:grid;place-items:center;transition:transform .3s var(--ease)}
.faq-q .chev svg{width:22px;height:22px;stroke:var(--orange);fill:none;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
.faq-item.open .faq-q .chev{transform:rotate(180deg)}
.js .faq-a{max-height:0;overflow:hidden;transition:max-height .35s var(--ease)}
.faq-a{overflow:hidden}
.faq-a p{padding:0 24px 22px;color:var(--muted);font-size:1.01rem}
.faq-a a{color:var(--orange);font-weight:700;text-decoration:underline;text-underline-offset:2px}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}.reveal{opacity:1;transform:none}}
</style>
<script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://www.vincenthego.com/#org","name":"VH DIGITAL CORP","alternateName":"Vincent Hégo","url":"https://www.vincenthego.com/","logo":"https://www.vincenthego.com/wp-content/uploads/2020/12/LOGO_VINCENTHEGO.COM_-300x300.png","foundingDate":"2016","founder":{"@id":"https://www.vincenthego.com/#vincent"},"sameAs":["https://www.linkedin.com/in/vincent-hego/","https://www.youtube.com/channel/UC_sEPcLmxDbseKtiBc2tigg","https://www.malt.com/profile/vincenth"],"legalName":"VH DIGITAL CORP","vatID":"FR06920194669","taxID":"920194669","identifier":[{"@type":"PropertyValue","propertyID":"SIREN","value":"920194669"},{"@type":"PropertyValue","propertyID":"RCS","value":"920 194 669 R.C.S. Paris"}]},{"@type":"WebSite","@id":"https://www.vincenthego.com/#website","url":"https://www.vincenthego.com/","name":"Vincent Hégo","inLanguage":"fr-FR","publisher":{"@id":"https://www.vincenthego.com/#org"}},{"@type":"Person","@id":"https://www.vincenthego.com/#vincent","name":"Vincent Hégo","jobTitle":"Consultant SEO","description":"Consultant SEO et fondateur de VH DIGITAL CORP, expert en référencement naturel depuis 2016, plus de 1000 clients accompagnés.","url":"https://www.vincenthego.com/mon-histoire/","image":"https://www.vincenthego.com/accompagnement-seo//assets/brand/vincent-rond.webp","worksFor":{"@id":"https://www.vincenthego.com/#org"},"knowsAbout":["SEO","Référencement naturel","Accompagnement SEO","Stratégie SEO","Audit SEO","Netlinking","SEO technique","GEO","Acquisition digitale"],"sameAs":["https://www.linkedin.com/in/vincent-hego/","https://www.youtube.com/channel/UC_sEPcLmxDbseKtiBc2tigg","https://www.malt.com/profile/vincenth"]},{"@type":["ProfessionalService","LocalBusiness"],"@id":"https://www.vincenthego.com/#consultant","name":"Vincent Hégo | Consultant SEO","url":"https://www.vincenthego.com/accompagnement-seo/","image":"https://www.vincenthego.com/accompagnement-seo/assets/og-accompagnement-seo.png","description":"Accompagnement SEO sur-mesure par Vincent Hégo, consultant SEO depuis 2016 : stratégie, contenu, technique et autorité pilotés pour transformer votre référencement naturel en canal d'acquisition.","areaServed":{"@type":"Country","name":"France"},"priceRange":"€€€","telephone":"+33756856634","email":"bonjour@vincenthego.com","address":{"@type":"PostalAddress","addressLocality":"Montpellier","addressRegion":"Occitanie","addressCountry":"FR"},"founder":{"@id":"https://www.vincenthego.com/#vincent"},"parentOrganization":{"@id":"https://www.vincenthego.com/#org"},"knowsAbout":["Accompagnement SEO","Référencement naturel","Audit SEO","Stratégie SEO","Netlinking","GEO"],"review":[{"@type":"Review","author":{"@type":"Person","name":"Juliette (AdsFlow)"},"datePublished":"2026-02-28","reviewRating":{"@type":"Rating","ratingValue":"5","bestRating":"5"},"reviewBody":"Collaborer avec Vincent est un réel atout stratégique. Son approche fusionnée permet d'occuper l'espace sur Google de manière cohérente et ultra-performante."},{"@type":"Review","author":{"@type":"Person","name":"Aurélien Richard"},"datePublished":"2026-01-08","reviewRating":{"@type":"Rating","ratingValue":"5","bestRating":"5"},"reviewBody":"Vincent est super pédagogique et sa formation est vraiment top. Elle m'a beaucoup appris pour peaufiner ma carrière de freelance."},{"@type":"Review","author":{"@type":"Person","name":"Nadia Bulcourt"},"datePublished":"2026-01-08","reviewRating":{"@type":"Rating","ratingValue":"5","bestRating":"5"},"reviewBody":"Coaching SEO au top avec Vincent. Il maîtrise parfaitement son sujet, explique avec pédagogie et s'adapte vraiment à chaque situation."},{"@type":"Review","author":{"@type":"Person","name":"Paul Barbe"},"datePublished":"2025-12-29","reviewRating":{"@type":"Rating","ratingValue":"5","bestRating":"5"},"reviewBody":"Son approche est claire, pédagogique et ultra concrète : on ressort avec un vrai plan d'action, pas du blabla. Mon site commence déjà à générer plus de trafic."}]},{"@type":"Service","@id":"https://www.vincenthego.com/accompagnement-seo/#service","serviceType":"Accompagnement SEO","name":"Accompagnement SEO","url":"https://www.vincenthego.com/accompagnement-seo/","provider":{"@id":"https://www.vincenthego.com/#consultant"},"areaServed":{"@type":"Country","name":"France"},"description":"Accompagnement SEO mensuel et sur-mesure : audit, stratégie de mots-clés, SEO technique, contenu, netlinking, SEO local et optimisation pour les IA (GEO), avec un consultant expert.","offers":{"@type":"Offer","priceCurrency":"EUR","priceRange":"€€€","availability":"https://schema.org/InStock","url":"https://www.vincenthego.com/accompagnement-seo/"},"hasOfferCatalog":{"@type":"OfferCatalog","name":"Prestations d'accompagnement SEO","itemListElement":[{"@type":"Offer","itemOffered":{"@type":"Service","name":"Audit SEO complet"}},{"@type":"Offer","itemOffered":{"@type":"Service","name":"Stratégie et étude de mots-clés"}},{"@type":"Offer","itemOffered":{"@type":"Service","name":"SEO technique et Core Web Vitals"}},{"@type":"Offer","itemOffered":{"@type":"Service","name":"Création de contenu SEO"}},{"@type":"Offer","itemOffered":{"@type":"Service","name":"Netlinking et autorité"}},{"@type":"Offer","itemOffered":{"@type":"Service","name":"SEO local et optimisation IA (GEO)"}}]}},{"@type":"WebPage","@id":"https://www.vincenthego.com/accompagnement-seo/#webpage","name":"Accompagnement SEO par un consultant expert","url":"https://www.vincenthego.com/accompagnement-seo/","inLanguage":"fr-FR","isPartOf":{"@id":"https://www.vincenthego.com/#website"},"about":{"@id":"https://www.vincenthego.com/accompagnement-seo/#service"},"description":"Un accompagnement SEO sur-mesure pour transformer votre site en canal d'acquisition, piloté par Vincent Hégo, consultant SEO depuis 2016.","datePublished":"2026-07-03","dateModified":"2026-08-28","primaryImageOfPage":"https://www.vincenthego.com/accompagnement-seo/assets/og-accompagnement-seo.png","speakable":{"@type":"SpeakableSpecification","cssSelector":["#definition .answer-card",".faq-q"]}},{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https://www.vincenthego.com/"},{"@type":"ListItem","position":2,"name":"Accompagnement SEO","item":"https://www.vincenthego.com/accompagnement-seo/"}]},{"@type":"Product","@id":"https://www.vincenthego.com/accompagnement-seo/#product","name":"Accompagnement SEO : transformez votre site en canal d'acquisition","description":"Accompagnement SEO mensuel par Vincent Hégo, consultant SEO indépendant depuis 2016 : audit, feuille de route et suivi mois par mois. Devis gratuit.","brand":{"@type":"Brand","name":"VH DIGITAL CORP"},"aggregateRating":{"@type":"AggregateRating","ratingValue":"5","reviewCount":"55","bestRating":"5","worstRating":"1"},"image":"https://www.vincenthego.com/accompagnement-seo/assets/og-accompagnement-seo.png"}]}</script>
<script type="application/ld+json">{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Qu'est-ce qu'un accompagnement SEO ?",
"acceptedAnswer": {
"@type": "Answer",
"text": "C'est une collaboration dans la durée avec un consultant SEO. Je pilote votre référencement naturel mois après mois. Plutôt qu'un audit ponctuel, j'installe une stratégie et je l'ajuste en continu : mots-clés, technique, contenu, netlinking, suivi. Le tout en m'adaptant à Google et aux IA."
}
},
{
"@type": "Question",
"name": "Pourquoi se faire accompagner en SEO ?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Parce que le SEO demande une stratégie, de la méthode et de la régularité. Seul, on avance sans priorités. Et on abandonne souvent avant les résultats. Un consultant vous fait gagner du temps, évite les erreurs coûteuses et transforme le SEO en canal de clients."
}
},
{
"@type": "Question",
"name": "Combien coûte un accompagnement SEO ?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Pour une PME, un accompagnement SEO mensuel va de 1 000 à 5 000 € par mois. Le budget médian du marché tourne autour de 980 € HT. Un audit ponctuel, lui, coûte de 800 à 5 000 € selon la taille du site. Je détaille toutes ces fourchettes dans mon guide sur le prix du SEO. De mon côté, le tarif est sur-mesure. On le définit ensemble pendant le diagnostic offert."
}
},
{
"@type": "Question",
"name": "Combien coûte une agence SEO ?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Une agence SEO facture en général de 1 000 à 5 000 € par mois pour une PME. Avec un consultant indépendant, vous payez l'expertise, pas la structure. Le budget est donc sur-mesure, défini pendant le diagnostic offert."
}
},
{
"@type": "Question",
"name": "En combien de temps voit-on les résultats ?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Les premiers gains (corrections techniques, pages qui remontent) arrivent souvent en 1 à 3 mois. Le SEO est un canal de fond : c'est sur 6 à 12 mois qu'un accompagnement construit une croissance durable du trafic et des clients, sans dépendre de la publicité."
}
},
{
"@type": "Question",
"name": "L'accompagnement SEO est-il rentable ?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Oui, quand il est bien piloté. Contrairement à la publicité (Google Ads), le trafic SEO ne s'arrête pas quand vous coupez le budget : c'est un actif qui compose dans le temps. Un client comme Waalaxy est passé de 300 à 8 200 visiteurs par jour en 19 mois, faisant du SEO son premier canal d'acquisition."
}
},
{
"@type": "Question",
"name": "Consultant ou agence : quelle différence ?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Beaucoup d'agences SEO facturent des experts seniors mais délèguent le travail à des juniors. Avec moi, vous travaillez en direct avec l'expert : un seul interlocuteur, +1000 clients accompagnés depuis 2016 et une méthode éprouvée, la Blueprint SEO. C'est plus personnel, plus réactif et plus stratégique qu'une agence SEO classique."
}
},
{
"@type": "Question",
"name": "Comment choisir une agence ou un consultant SEO ?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Regardez les résultats réels et vérifiables : études de cas, avis clients. Vérifiez la transparence de la méthode et qui exécute vraiment le travail. Comparez aussi la spécialisation par secteur. Et fuyez les « TOP 1 garanti » des agences web généralistes. Un bon prestataire relie chaque action à vos objectifs business."
}
},
{
"@type": "Question",
"name": "Quelles sont les missions d'une agence SEO ?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Les principales missions d'une agence ou d'un consultant SEO : audit SEO, recherche de mots-clés, optimisation technique, création de contenu, netlinking, puis suivi des positions et du chiffre d'affaires généré. L'objectif est de rendre votre site visible, mieux référencé, et d'aider à générer plus de clients."
}
},
{
"@type": "Question",
"name": "Peut-on avoir un accompagnement SEO en freelance ?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Oui. En tant que consultant SEO indépendant (freelance), vous travaillez directement avec moi, sans intermédiaire d'agence web. C'est un accompagnement personnalisé, adapté à votre secteur et à vos besoins spécifiques."
}
},
{
"@type": "Question",
"name": "L'accompagnement SEO est-il mensuel ?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Oui, le plus souvent l'accompagnement SEO est mensuel : un forfait par mois avec un volume de travail défini (contenu, technique, liens entrants, suivi). C'est le format qui permet une progression régulière du positionnement dans les résultats de recherche."
}
},
{
"@type": "Question",
"name": "À quoi sert un accompagnement SEO ?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Grâce à l'optimisation SEO de vos pages, votre site internet devient visible sur la première page du moteur de recherche Google. Il génère du trafic qualifié vers votre site, puis le convertit en clients. Par exemple : passer de la page 3 à la première page sur vos mots-clés stratégiques, gagner en notoriété et bâtir un canal d'acquisition durable."
}
},
{
"@type": "Question",
"name": "Intervenez-vous à Paris, Lyon, Lille et partout en France ?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Oui. L'accompagnement SEO se fait à distance, en visioconférence, partout en France : Paris, Lyon, Lille, Marseille, Montpellier et ailleurs. Le suivi à distance est aussi efficace qu'en présentiel, avec des points réguliers."
}
},
{
"@type": "Question",
"name": "L'accompagnement couvre-t-il les IA (ChatGPT, Perplexity) ?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Oui. En plus de Google, j'optimise votre visibilité dans les moteurs de réponse IA (AI Overviews, ChatGPT, Perplexity). C'est ce qu'on appelle le GEO. Vos contenus sont structurés pour être cités par ces nouvelles interfaces."
}
},
{
"@type": "Question",
"name": "Faut-il un engagement de longue durée ?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Le SEO demande de la régularité pour porter ses fruits, donc l'accompagnement s'inscrit dans la durée. Mais il n'y a pas de contrat piège : la relation continue parce qu'elle produit des résultats, pas parce que vous êtes bloqué."
}
},
{
"@type": "Question",
"name": "Accompagnement SEO ou audit ponctuel : que choisir ?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Un audit est une photo à un instant T : utile pour savoir où vous en êtes. L'accompagnement va plus loin, il exécute et ajuste la stratégie dans la durée. Pour des résultats durables, l'accompagnement est le format adapté ; l'audit en est souvent la première étape."
}
},
{
"@type": "Question",
"name": "Mon site est récent et n'a pas de trafic, est-ce utile ?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Oui, et c'est même le meilleur moment. Partir sur des bases SEO saines dès le départ (structure, mots-clés, contenu, technique) évite les erreurs coûteuses et fait gagner des mois. Le diagnostic révèle vos leviers prioritaires."
}
}
]
}</script>
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"HowTo","name":"Comment se déroule un accompagnement SEO sur 6 mois","description":"Les étapes de la méthode Blueprint SEO de Vincent Hégo, du diagnostic à la conversion.","step":[
{"@type":"HowToStep","position":1,"name":"Diagnostic & quick wins","text":"Audit des 3 piliers (technique, contenu, popularité) et de l'UX/conversion, analyse de la Search Console et corrections rapides qui font remonter le site.","url":"https://www.vincenthego.com/accompagnement-seo/#definition"},
{"@type":"HowToStep","position":2,"name":"Analyse concurrentielle","text":"Identification des mots-clés à forte intention d'achat sur lesquels vos concurrents se classent et pas vous, pour aspirer leur trafic."},
{"@type":"HowToStep","position":3,"name":"Contenus qui rankent","text":"Création de contenus optimisés pour le SEO et pour les IA (AI Overviews, ChatGPT), conçus pour dépasser les concurrents sur vos requêtes stratégiques."},
{"@type":"HowToStep","position":4,"name":"Autorité & netlinking","text":"Renforcement de la popularité du domaine avec des backlinks de qualité et un maillage interne solide."},
{"@type":"HowToStep","position":5,"name":"Conversion & croissance","text":"UX et conversion, suivi du positionnement, du trafic et du chiffre d'affaires, ajustements continus."}
]}
</script>
<style>
/* ===== Nav hub (menu + dropdown, hamburger checkbox-hack) ===== */
header#site-header{position:sticky;top:0;z-index:1000;background:rgba(255,255,255,.86);backdrop-filter:saturate(180%) blur(14px);-webkit-backdrop-filter:saturate(180%) blur(14px);border-bottom:1px solid var(--line)}
html,body{overflow-x:clip}
#site-header .nav{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:13px 24px}
#site-header .nav-logo img{height:34px;width:auto;display:block}
.navtoggle{position:absolute;opacity:0;pointer-events:none;width:0;height:0}
.burger{display:none;flex-direction:column;gap:5px;padding:10px;cursor:pointer;border-radius:12px;touch-action:manipulation;-webkit-tap-highlight-color:transparent}
.burger span{width:24px;height:2.4px;background:var(--marine);border-radius:3px;transition:.25s}
.site-nav{display:flex;align-items:center;gap:26px}
.menu{display:flex;align-items:center;gap:20px;list-style:none;margin:0;padding:0}@media(min-width:901px) and (max-width:1060px){#site-header .menu{gap:14px}#site-header .site-nav{gap:18px}}
.menu>li{position:relative}
.menu-top{display:inline-flex;align-items:center;gap:5px;background:none;border:0;font:inherit;font-size:.98rem;font-weight:600;color:var(--ink);cursor:pointer;text-decoration:none;padding:6px 0;letter-spacing:-.01em;touch-action:manipulation}
.menu-top:hover{color:var(--marine)}
.menu>li>.menu-top:not(.menu-rankflow){position:relative}
.menu>li>.menu-top:not(.menu-rankflow)::after{content:"";position:absolute;left:0;right:0;bottom:-3px;height:2px;background:var(--marine);border-radius:2px;transform:scaleX(0);transform-origin:left;transition:transform .25s}
.menu>li>.menu-top:not(.menu-rankflow):hover::after{transform:scaleX(1)}
@media(prefers-reduced-motion:reduce){.menu>li>.menu-top:not(.menu-rankflow)::after{transition:none}}
.menu-top .chev{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2.4;transition:transform .2s}
.has-sub:hover .chev,.has-sub:focus-within .chev{transform:rotate(180deg)}
.submenu{position:absolute;top:calc(100% + 14px);left:50%;transform:translateX(-50%) translateY(8px);min-width:230px;background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:0 20px 50px rgba(28,25,98,.14);padding:8px;list-style:none;margin:0;opacity:0;visibility:hidden;transition:.2s}
.has-sub:hover .submenu,.has-sub:focus-within .submenu{opacity:1;visibility:visible;transform:translateX(-50%) translateY(0)}
.submenu::before{content:"";position:absolute;top:-14px;left:0;right:0;height:14px}
.submenu li a{display:block;padding:11px 15px;border-radius:12px;font-size:.95rem;font-weight:600;color:var(--ink);text-decoration:none;transition:.15s}
.submenu li a:hover,.submenu li a[aria-current]{background:var(--bg-soft);color:var(--orange)}
/* fil d'Ariane */
.crumb{border-bottom:1px solid var(--line);background:#fff}
.crumb ol{list-style:none;display:flex;flex-wrap:wrap;gap:9px;align-items:center;padding:12px 0;margin:0;font-size:.86rem;color:var(--muted)}
.crumb li{display:flex;align-items:center;gap:9px}
.crumb a{color:var(--muted);text-decoration:none}
.crumb a:hover{color:var(--orange)}
.crumb svg{width:13px;height:13px;stroke:#c9c7d6;stroke-width:2.5;fill:none}
.crumb [aria-current]{color:var(--marine);font-weight:600}
@media(max-width:900px){
.burger{display:flex}
.site-nav{position:fixed;inset:62px 0 auto 0;flex-direction:column;align-items:stretch;gap:0;background:#fff;border-bottom:1px solid var(--line);box-shadow:0 24px 40px rgba(28,25,98,.14);padding:8px 24px 16px;max-height:calc(100dvh - 62px);overflow-y:auto;transform:translateY(-130%);transition:transform .24s cubic-bezier(.4,0,.2,1);visibility:hidden}
.navtoggle:checked~.site-nav{transform:translateY(0);visibility:visible}
.navtoggle:checked~.burger span:nth-child(1){transform:translateY(7.4px) rotate(45deg)}
.navtoggle:checked~.burger span:nth-child(2){opacity:0}
.navtoggle:checked~.burger span:nth-child(3){transform:translateY(-7.4px) rotate(-45deg)}
#site-header.menu-open .site-nav{transform:translateY(0)!important;visibility:visible!important}
#site-header.menu-open .burger span:nth-child(1){transform:translateY(7.4px) rotate(45deg)}
#site-header.menu-open .burger span:nth-child(2){opacity:0}
#site-header.menu-open .burger span:nth-child(3){transform:translateY(-7.4px) rotate(-45deg)}
.menu{flex-direction:column;align-items:stretch;gap:0;width:100%}
.menu>li{border-bottom:1px solid var(--line)}
.menu-top{width:100%;justify-content:space-between;padding:11px 2px;font-size:1rem}
.menu-rankflow{justify-content:flex-start;gap:9px;border:0;background:none;padding:11px 2px}
.menu-rankflow img{width:20px;height:20px}
.submenu{position:static;transform:none;opacity:1;visibility:visible;box-shadow:none;border:0;min-width:0;max-height:none;overflow:visible;padding:2px 0 6px 6px}
.submenu li a{padding:8px 14px;font-size:.96rem;color:var(--muted)}
.submenu li a:hover{color:var(--marine)}
.has-sub>.menu-top .chev{display:none}
.has-sub>.menu-top{cursor:default;pointer-events:none;color:var(--muted);font-size:.76rem;text-transform:uppercase;letter-spacing:.06em;font-weight:700;padding:10px 2px 3px}
.submenu::before{display:none}
.nav-cta{margin-top:12px;width:100%;justify-content:center;padding:12px 20px}
}
</style>
<style id="vh-menu-shine">
.menu-formation{background:linear-gradient(110deg,var(--marine) 0%,var(--marine) 42%,#ff8a3d 48%,#ffc59b 50%,#ff8a3d 52%,var(--marine) 58%,var(--marine) 100%);background-size:280% 100%;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent;animation:formShine 4.5s ease-in-out infinite}
@keyframes formShine{0%{background-position:145% 0}55%,100%{background-position:-45% 0}}
@media(prefers-reduced-motion:reduce){.menu-formation{animation:none;-webkit-text-fill-color:var(--marine);color:var(--marine)}}
</style>
<style id="vh-rfd-glow">
#rfd-root .rfd-card{position:relative}
#rfd-root .rfd-card::before{content:"";position:absolute;inset:0;border-radius:22px;padding:1.5px;background:linear-gradient(135deg,rgba(240,88,32,.4),rgba(90,80,230,.26) 55%,rgba(28,25,98,.24));-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;z-index:3}
#rfd-root .rfd-card::after{content:"";position:absolute;inset:-5px;border-radius:26px;background:radial-gradient(closest-side,rgba(240,88,32,.1),transparent 72%);filter:blur(10px);pointer-events:none;z-index:-1}
</style>
<style id="vh-quiz-cycle">
@media (prefers-reduced-motion:no-preference){
.quiz-step.is-active .quiz-opt{animation:quizGlow 4.2s ease-in-out infinite}
.quiz-step.is-active .quiz-opt:nth-child(1){animation-delay:0s}
.quiz-step.is-active .quiz-opt:nth-child(2){animation-delay:.7s}
.quiz-step.is-active .quiz-opt:nth-child(3){animation-delay:1.4s}
.quiz-step.is-active .quiz-opt:nth-child(4){animation-delay:2.1s}
.quiz-opts:hover .quiz-opt,.quiz-opt.sel{animation:none}
}
@keyframes quizGlow{0%,17%,100%{border-color:var(--line);background:transparent}5%,12%{border-color:var(--orange);background:rgba(240,88,32,.07)}}
</style>
<style>.scroll-prog{position:fixed;top:0;left:0;height:3px;width:0;z-index:2000;background:linear-gradient(90deg,var(--orange),var(--orange-soft));pointer-events:none;will-change:width}@media (prefers-reduced-motion:reduce){.scroll-prog{transition:none}}</style>
<style id="vh-foot-cities">.foot-cities{display:grid;grid-template-columns:1fr 1fr;gap:2px 22px;margin:9px 0 4px}.foot-cities a{display:inline-flex;align-items:center;font-size:.85rem;white-space:nowrap;padding:3px 0;line-height:1.3;color:var(--marine);transition:color .18s}.foot-cities a:hover{color:var(--orange)}.foot-cities a::before{content:"";flex:0 0 auto;width:4px;height:4px;border-radius:50%;background:var(--orange);margin-right:9px;opacity:.5;transition:opacity .2s}.foot-cities a:hover::before{opacity:1}.foot-cities a[aria-current="page"]{font-weight:700}@media(max-width:600px){.foot-cities{gap:1px 16px}}.foot-col a.foot-line{border-top:1px solid rgba(28,25,98,.16);margin-top:10px;padding-top:12px}</style><style id="vh-diag-space">/* espace resserre au-dessus du widget diagnostic (desktop + mobile) */
#diagnostic-sec,#agenda{padding-top:44px}
*:has(+ #diagnostic-sec),*:has(+ #agenda){padding-bottom:38px}
@media(max-width:560px){#diagnostic-sec,#agenda{padding-top:24px}*:has(+ #diagnostic-sec),*:has(+ #agenda){padding-bottom:22px}}</style>
<style id="vh-src-author">.src-author{max-width:820px;margin:34px auto 0;padding-top:28px;border-top:1px solid var(--line);display:flex;gap:18px;align-items:flex-start;text-align:left}.src-author .foot-bio{max-width:640px}.src-author--foot{margin:0 auto 30px;padding:0;border-top:0;max-width:820px}@media(max-width:560px){.src-author{flex-direction:row;gap:14px}}</style>
<style id="vh-submenu-dots">
.submenu{z-index:100}
.submenu li a{position:relative;padding-left:34px}
.submenu li a::before{content:"";position:absolute;left:16px;top:50%;transform:translateY(-50%);width:6px;height:6px;border-radius:50%;background:var(--orange);opacity:.5;transition:opacity .18s ease,transform .18s ease}
.submenu li a:hover::before,.submenu li a[aria-current]::before{opacity:1;transform:translateY(-50%) scale(1.3)}
@media(max-width:960px){.submenu li a{padding-left:30px}.submenu li a::before{left:12px}}
header:not(#site-header){z-index:auto;backdrop-filter:none;-webkit-backdrop-filter:none}
</style>
</head>
<body>
<div class="scroll-prog" id="scroll-prog" aria-hidden="true"></div>
<header id="site-header">
<div class="wrap nav">
<div class="nav-l">
<a href="https://www.vincenthego.com/" class="nav-logo" aria-label="Accueil Vincent Hégo"><img src="/assets/brand/logo-vh-couleur.webp" alt="Vincent Hégo, agence et consultant SEO à Montpellier" width="300" height="94" fetchpriority="high"/></a>
</div>
<input type="checkbox" id="navtoggle" class="navtoggle" aria-label="Ouvrir le menu">
<label for="navtoggle" class="burger" aria-hidden="true"><span></span><span></span><span></span></label>
<nav class="site-nav" aria-label="Navigation principale">
<ul class="menu">
<li class="has-sub">
<button type="button" class="menu-top" aria-haspopup="true">Prestations
<svg viewbox="0 0 24 24" class="chev"><path d="M6 9l6 6 6-6"/></svg>
</button>
<ul class="submenu">
<li><a href="https://www.vincenthego.com/accompagnement-seo/" aria-current="page">Accompagnement SEO</a></li>
<li><a href="https://www.vincenthego.com/audit-seo/">Audit SEO</a></li>
<li><a href="https://www.vincenthego.com/agence-netlinking/">Netlinking</a></li>
<li><a href="https://www.vincenthego.com/seo-local/">SEO local</a></li>
<li><a href="https://www.vincenthego.com/creation-site-internet/">Création de site</a></li>
<li><a href="https://www.vincenthego.com/refonte-site-internet/">Refonte de site</a></li>
<li><a href="https://www.vincenthego.com/coaching-seo/">Coaching SEO</a></li>
</ul>
</li>
<li><a href="https://www.vincenthego.com/blog/" class="menu-top">Blog</a></li>
<li><a href="https://formation.vincenthego.com/" class="menu-top menu-formation">Formation SEO</a></li>
<li><a href="https://www.vincenthego.com/mon-histoire/" class="menu-top">Mon histoire</a></li>
<li><a href="https://www.vincenthego.com/avis/" class="menu-top">Avis</a></li>
<li><a href="https://www.vincenthego.com/rankflow/" class="menu-top menu-rankflow"><img src="/assets/brand/rankflow-mark.webp" alt="Logo RankFlow SEO" width="18" height="18"/>RankFlow</a></li>
</ul>
<a class="btn btn-analyze nav-cta" href="https://www.vincenthego.com/contact/">Me contacter</a>
</nav>
</div>
</header>
<main>
<nav class="crumb" aria-label="Fil d'Ariane">
<div class="wrap"><ol>
<li><a href="https://www.vincenthego.com/">Accueil</a></li>
<li><svg viewbox="0 0 24 24"><path d="M9 6l6 6-6 6"/></svg><span aria-current="page">Accompagnement SEO</span></li>
</ol></div>
</nav>
<!-- HERO -->
<section class="hero">
<div class="wrap">
<div class="host">
<img width="160" height="160" src="/assets/brand/vincent-rond.webp" alt="Vincent Hégo, consultant SEO"/>
<div class="host-meta">
<div class="hn">Avec Vincent Hégo</div>
<div class="hr">Consultant SEO | CEO VH DIGITAL CORP</div>
</div>
</div>
<span class="eyebrow"><span class="dot"></span>Accompagnement SEO sur-mesure</span>
<h1>Accompagnement SEO : transformez votre site en <span class="hl">canal d'acquisition</span></h1>
<p class="sub">Je pilote votre référencement naturel, avec une stratégie SEO claire et priorisée. Objectif : améliorer votre visibilité en ligne. Et générer un flux régulier de clients qualifiés depuis les moteurs de recherche et les IA.</p>
<div class="hero-cta">
<a class="btn btn-primary btn-lg" href="#diagnostic" data-rfd-cta>Lancer mon diagnostic SEO
<svg viewbox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
</a>
<span class="micro"><b>Analyse offerte</b> | en visio | <b>sans engagement</b></span>
</div>
<div class="cred">
<a class="cred-badge" href="https://www.google.com/maps/place/?q=place_id:ChIJq7RkHqulthIRGc8LYdLgWl8" target="_blank" rel="noopener" aria-label="Voir les 55 avis Google de Vincent Hégo (note 5,0/5)">
<div class="cred-ic gborder" aria-hidden="true">
<svg width="22" height="22" viewbox="0 0 48 48"><path fill="#4285F4" d="M45.12 24.5c0-1.56-.14-3.06-.4-4.5H24v8.51h11.84c-.51 2.75-2.06 5.08-4.39 6.64v5.52h7.11c4.16-3.83 6.56-9.47 6.56-16.17z"/><path fill="#34A853" d="M24 46c5.94 0 10.92-1.97 14.56-5.33l-7.11-5.52c-1.97 1.32-4.49 2.1-7.45 2.1-5.73 0-10.58-3.87-12.31-9.07H4.34v5.7C7.96 41.07 15.4 46 24 46z"/><path fill="#FBBC05" d="M11.69 28.18C11.25 26.86 11 25.45 11 24s.25-2.86.69-4.18v-5.7H4.34A21.99 21.99 0 0 0 2 24c0 3.55.85 6.91 2.34 9.88l7.35-5.7z"/><path fill="#EA4335" d="M24 9.75c3.23 0 6.13 1.11 8.41 3.29l6.31-6.31C34.91 3.18 29.93 1 24 1 15.4 1 7.96 5.93 4.34 13.12l7.35 5.7C13.42 13.62 18.27 9.75 24 9.75z"/></svg>
</div>
<div class="cred-txt">
<div class="v">5,0/5 <span class="gstars">★★★★★</span></div>
<div class="l">55 avis Google <span class="vchk"><svg viewbox="0 0 24 24"><path d="M20 6 9 17l-5-5"/></svg>vérifiés</span></div>
</div>
</a>
<div class="cred-badge">
<div class="cred-ic orange" aria-hidden="true"><svg viewbox="0 0 24 24"><path d="M3 17l6-6 4 4 8-8"/><path d="M21 7v6h-6"/></svg></div>
<div class="cred-txt">
<div class="v">+300 000</div>
<div class="l">visiteurs/mois générés</div>
</div>
</div>
<div class="cred-badge">
<div class="cred-ic orange" aria-hidden="true"><svg viewbox="0 0 24 24"><path d="M12 2 4 5v6c0 5 3.4 8.5 8 10 4.6-1.5 8-5 8-10V5l-8-3z"/><path d="m9 12 2 2 4-4"/></svg></div>
<div class="cred-txt">
<div class="v">Depuis 2016</div>
<div class="l">consultant SEO | +1000 clients</div>
</div>
</div>
</div>
</div>
</section>
<!-- LOGOS -->
<section class="logos">
<div class="wrap">
<p>Ils me font confiance</p>
<div class="logos-row">
<img src="/assets/logos/waalaxy.webp" alt="Waalaxy" loading="lazy" decoding="async" width="300" height="52"/>
<img src="/assets/logos/bricks.webp" alt="Bricks" loading="lazy" decoding="async" width="400" height="53"/>
<img src="/assets/logos/decathlon.webp" alt="Decathlon" loading="lazy" decoding="async" width="200" height="62"/>
<img src="/assets/logos/matmut.webp" alt="Matmut" loading="lazy" decoding="async" width="290" height="53"/>
<img src="/assets/logos/bosch.webp" alt="Bosch" loading="lazy" decoding="async" width="250" height="59"/>
<img class="tall" src="/assets/logos/lindt.webp" alt="Lindt" loading="lazy" decoding="async" width="180" height="96"/>
</div>
</div>
</section>
<!-- DEFINITION (réponse directe : featured snippet / AI Overview) -->
<section class="sec" id="definition">
<div class="wrap">
<div class="sec-head reveal">
<span class="kicker">La définition</span>
<h2>Qu'est-ce que l'accompagnement SEO ?</h2>
</div>
<div class="tldr reveal">
<div class="tldr-h">En bref</div>
<ul>
<li><svg viewbox="0 0 24 24"><path d="M20 6 9 17l-5-5"/></svg><span><b>C'est quoi :</b> un consultant qui pilote votre référencement naturel dans la durée (audit, contenu, technique, netlinking).</span></li>
<li><svg viewbox="0 0 24 24"><path d="M20 6 9 17l-5-5"/></svg><span><b>Résultats :</b> premiers gains en 1 à 3 mois, croissance durable sur 6 à 12 mois.</span></li>
<li><svg viewbox="0 0 24 24"><path d="M20 6 9 17l-5-5"/></svg><span><b>Pour qui :</b> les entreprises qui génèrent déjà du chiffre d'affaires et veulent un canal d'acquisition rentable.</span></li>
<li><svg viewbox="0 0 24 24"><path d="M20 6 9 17l-5-5"/></svg><span><b>Budget :</b> de 1 000 à 5 000 €/mois sur le marché (médian ~980 € HT) ; sur-mesure de mon côté.</span></li>
</ul>
</div>
<p class="upd reveal"><img width="160" height="160" src="/assets/brand/vincent-rond.webp" alt="Vincent Hégo"/><span><time datetime="2026-08-28">Mis à jour le 28 août 2026</time> | par <a href="https://www.vincenthego.com/mon-histoire/">Vincent Hégo</a></span></p>
<div class="answer-card reveal">
<p>L'<strong>accompagnement SEO</strong> est une collaboration continue, <a href="https://www.vincenthego.com/blog/delai-seo/">dans la durée</a>. C'est souvent l'alternative à <a href="https://www.vincenthego.com/blog/chef-de-projet-seo/">recruter un chef de projet SEO</a> quand le volume ne justifie pas un poste à plein temps. Un <a href="https://www.vincenthego.com/consultant-seo/">consultant SEO</a> pilote votre référencement naturel (SEO, pour <em>search engine optimization</em>) en continu. Pour situer ce budget par rapport à la publicité, voyez le <a href="https://www.vincenthego.com/prix-referencement-google/">prix du référencement Google</a>, SEO et SEA séparés.</p>
<p>Un audit ponctuel livre une photo à un instant T. L'accompagnement, lui, installe une stratégie. Il l'exécute mois après mois et l'ajuste à Google et aux IA. Le but : améliorer votre positionnement, viser la première page, et faire de votre site un <strong>canal d'acquisition</strong> régulier. Si votre site tient en quelques pages, voyez plutôt mon guide pour <a href="https://www.vincenthego.com/blog/seo-site-vitrine/">référencer un site vitrine</a>.</p>
<ul class="levers">
<li><svg viewbox="0 0 24 24"><path d="M20 6 9 17l-5-5"/></svg>Audit SEO</li>
<li><svg viewbox="0 0 24 24"><path d="M20 6 9 17l-5-5"/></svg>Stratégie & mots-clés</li>
<li><svg viewbox="0 0 24 24"><path d="M20 6 9 17l-5-5"/></svg>SEO technique</li>
<li><svg viewbox="0 0 24 24"><path d="M20 6 9 17l-5-5"/></svg>Création de contenu</li>
<li><svg viewbox="0 0 24 24"><path d="M20 6 9 17l-5-5"/></svg>Netlinking</li>
<li><svg viewbox="0 0 24 24"><path d="M20 6 9 17l-5-5"/></svg>SEO local & IA (GEO)</li>
<li><svg viewbox="0 0 24 24"><path d="M20 6 9 17l-5-5"/></svg>Suivi & reporting</li>
</ul>
</div>
<figure class="figure reveal">
<img src="assets/brand/vincent-accompagnement.jpg" alt="Vincent Hégo, consultant SEO, accompagne un client sur sa stratégie de référencement naturel" loading="lazy" width="1100" height="784"/>
<figcaption>Un accompagnement SEO en pratique : on avance ensemble sur votre stratégie.</figcaption>
</figure>
</div>
</section>
<!-- POURQUOI SE FAIRE ACCOMPAGNER -->
<section class="sec sec-soft">
<div class="wrap">
<div class="sec-head reveal">
<span class="kicker">Pourquoi un accompagnement SEO</span>
<h2>Pourquoi se faire accompagner en SEO ?</h2>
</div>
<div class="lead reveal" style="text-align:center;margin-bottom:44px">
<p>La plupart des sites ne manquent pas d'efforts, ils manquent de <strong>direction</strong>. Quand le frein est surtout éditorial, la <a href="https://www.vincenthego.com/redaction-seo/">rédaction SEO</a> peut se prendre séparément. On publie des articles sans stratégie de mots clés, alors que la méthode est documentée dans mes <a href="https://www.vincenthego.com/blog/">guides SEO</a>. On empile des optimisations techniques sans priorités. Et les résultats ne viennent pas.</p>
<p>Un <strong>accompagnement SEO</strong>, c'est l'inverse. Un cap clair, des actions priorisées par impact, et un expert à vos côtés pour suivre les mises à jour de Google. Tout part de vos besoins et d'un diagnostic clair, puis d'un plan pour booster votre trafic durablement. Chaque phase de la prestation suit ce plan d'action écrit : ce qu'on met en place, pourquoi, et ce que ça doit rapporter.</p>
</div>
<blockquote class="quote reveal">
<p>« Le référencement naturel génère en moyenne 53 % du trafic des sites web, loin devant les autres canaux d'acquisition. »</p>
<cite>Étude BrightEdge sur la recherche organique | <a href="https://www.brightedge.com/" target="_blank" rel="noopener">brightedge.com</a></cite>
</blockquote>
<p class="why-lead reveal">Dans les faits, ça se traduit par 4 erreurs qui reviennent tout le temps :</p>
<div class="why">
<div class="why-card reveal">
<div class="wn">1</div>
<h3>On avance sans stratégie de mots-clés</h3>
<p>Sans étude sérieuse des requêtes de vos clients, vous visez des mots-clés sans volume, ou trop concurrentiels. Résultat : le trafic ne convertit pas. Sur certains marchés, l'arbitrage se pose autrement : c'est le cas du <a href="https://www.vincenthego.com/seo-b2b/">SEO B2B</a>, où un mot-clé se juge à la valeur d'un client, et du <a href="https://www.vincenthego.com/seo-saas/">SEO SaaS</a>, où deux formats de page font l'essentiel des inscriptions. La vidéo obéit encore à une autre logique, décrite dans l'article sur le <a href="https://www.vincenthego.com/blog/seo-youtube/">SEO YouTube</a>.</p>
</div>
<div class="why-card reveal d1">
<div class="wn">2</div>
<h3>L'audit SEO n'a jamais été fait</h3>
<p>Erreurs d'indexation, lenteurs, balises manquantes, maillage interne absent : des freins invisibles bloquent votre référencement naturel sans que vous le sachiez.</p>
</div>
<div class="why-card reveal">
<div class="wn">3</div>
<h3>Il n'y a pas de plan sur 6 à 12 mois</h3>
<p>Le SEO est un canal de fond. Sans feuille de route, on saute d'une tactique à l'autre et on abandonne juste avant que les résultats n'arrivent.</p>
</div>
<div class="why-card reveal d1">
<div class="wn">4</div>
<h3>Personne ne mesure ce qui rapporte</h3>
<p>Suivre des positions ne suffit pas. Ce qui compte, c'est le trafic qualifié et les clients générés. Sans pilotage, impossible de savoir quoi amplifier.</p>
</div>
</div>
</div>
</section>
<!-- CE QUE COMPREND L'ACCOMPAGNEMENT -->
<section class="sec">
<div class="wrap">
<div class="sec-head reveal">
<span class="kicker">Ce que je pilote pour vous</span>
<h2>Un accompagnement SEO complet</h2>
<p>Technique, contenu, autorité et IA : je couvre tous les piliers du <a href="https://www.vincenthego.com/blog/referencement-naturel/">référencement naturel</a>. Et si c'est pertinent, j'articule le référencement naturel avec le référencement payant (SEA, Google Ads, ex-AdWords). Objectif : une visibilité complète sur les moteurs de recherche.</p>
</div>
<div class="bento">
<div class="card reveal">
<div class="ic"><svg viewbox="0 0 24 24"><circle cx="11" cy="11" r="7"/><path d="m21 21-4.3-4.3"/></svg></div>
<h3>Audit SEO complet</h3>
<p>Le point de départ de tout accompagnement. J'analyse votre site en profondeur : technique (dont les <a href="https://www.vincenthego.com/blog/core-web-vitals/">Core Web Vitals</a>), contenu, liens, concurrence. Le but : révéler les blocages et vos opportunités prioritaires.</p>
</div>
<div class="card reveal d1">
<div class="ic"><svg viewbox="0 0 24 24"><path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20"/><path d="M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z"/></svg></div>
<h3>Stratégie & mots-clés</h3>
<p>Une stratégie SEO fondée sur une <a href="https://www.vincenthego.com/blog/etude-de-mots-cles/">étude de mots clés</a> reliée à vos objectifs. Un cocon sémantique structure ensuite vos pages stratégiques. On cible les requêtes qui attirent des clients, pas juste du clic.</p>
</div>
<div class="card reveal d2">
<div class="ic"><svg viewbox="0 0 24 24"><path d="M12 20h9"/><path d="M16.5 3.5a2.12 2.12 0 0 1 3 3L7 19l-4 1 1-4 12.5-12.5z"/></svg></div>
<h3>Contenu & rédaction SEO</h3>
<p>La création de contenu et le content marketing, pilotés par une ligne éditoriale : pages de services, articles de fond, fiches produits. Des pages web aux contenus pertinents et optimisés, <a href="https://www.vincenthego.com/blog/redaction-web-seo/">rédigés pour le web et le SEO</a>, écrites ou pilotées avec votre équipe. Sur un projet neuf, cette ligne éditoriale se décide dès la <a href="https://www.vincenthego.com/creation-site-internet/">création du site internet</a>.</p>
</div>
<div class="card reveal">
<div class="ic"><svg viewbox="0 0 24 24"><path d="M10.5 13.5a5 5 0 0 0 7.5.5l3-3a5 5 0 0 0-7-7l-1.7 1.7"/><path d="M13.5 10.5a5 5 0 0 0-7.5-.5l-3 3a5 5 0 0 0 7 7l1.7-1.7"/></svg></div>
<h3>Netlinking & autorité</h3>
<p>Un profil de backlinks (liens entrants) sain et une notoriété qui grandit dans le temps. On renforce l'autorité de votre domaine avec des <a href="https://www.vincenthego.com/agence-netlinking/">liens de qualité</a>, jamais du volume creux.</p>
</div>
<div class="card reveal d1">
<div class="ic"><svg viewbox="0 0 24 24"><path d="M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7z"/><circle cx="12" cy="12" r="3"/></svg></div>
<h3>SEO technique & performance</h3>
<p>Vitesse, Core Web Vitals, indexation, mobile, expérience utilisateur, données structurées. Je corrige les fondations techniques qui conditionnent votre visibilité. Et ce, quel que soit votre CMS (<a href="https://www.vincenthego.com/freelance-wordpress/">WordPress</a>, Shopify...), y compris lors d'une refonte.</p>
</div>
<div class="card reveal d2">
<div class="ic"><svg viewbox="0 0 24 24"><path d="M12 2a10 10 0 1 0 10 10"/><path d="M12 2v10l6 3"/><path d="M16 3.5a9 9 0 0 1 5 5"/></svg></div>
<h3>SEO local & visibilité IA (GEO)</h3>
<p>Fiche Google et SEO local pour capter votre zone. Et une <a href="https://www.vincenthego.com/blog/geo-referencement-ia/">optimisation pour les IA</a> (AI Overviews, ChatGPT), afin d'exister sur les nouvelles recherches.</p>
</div>
</div>
<div class="viz reveal" style="margin-top:30px">
<div class="viz-card">
<svg viewbox="0 0 720 486" role="img" aria-labelledby="venT venD" preserveaspectratio="xMidYMid meet">
<title id="venT">Les 3 piliers du référencement naturel</title>
<desc id="venD">Un SEO performant repose sur l'équilibre de trois piliers : la technique, le contenu et la popularité (netlinking).</desc>
<circle cx="360" cy="208" r="114" fill="#1c1962" fill-opacity="0.12" stroke="#1c1962" stroke-width="2.5"/>
<circle cx="296" cy="302" r="114" fill="#f05820" fill-opacity="0.12" stroke="#f05820" stroke-width="2.5"/>
<circle cx="424" cy="302" r="114" fill="#5a50e6" fill-opacity="0.12" stroke="#5a50e6" stroke-width="2.5"/>
<text x="360" y="52" text-anchor="middle" font-size="20" font-weight="800" fill="#1c1962" font-family="Poppins,sans-serif">Technique</text>
<text x="360" y="73" text-anchor="middle" font-size="13" fill="#5b5870" font-family="Poppins,sans-serif">site rapide & sain</text>
<text x="188" y="452" text-anchor="middle" font-size="20" font-weight="800" fill="#f05820" font-family="Poppins,sans-serif">Contenu</text>
<text x="188" y="473" text-anchor="middle" font-size="13" fill="#5b5870" font-family="Poppins,sans-serif">pages utiles & optimisées</text>
<text x="532" y="452" text-anchor="middle" font-size="20" font-weight="800" fill="#5a50e6" font-family="Poppins,sans-serif">Popularité</text>
<text x="532" y="473" text-anchor="middle" font-size="13" fill="#5b5870" font-family="Poppins,sans-serif">backlinks & autorité</text>
<text x="360" y="282" text-anchor="middle" font-size="26" font-weight="900" fill="#15131f" font-family="Poppins,sans-serif">SEO</text>
</svg>
<p class="viz-cap">Un <b>référencement performant</b>, c'est l'équilibre entre trois piliers : la <b>technique</b>, le <b>contenu</b> et la <b>popularité</b> (netlinking). Un accompagnement les travaille ensemble, pas l'un sans les autres.</p>
</div>
</div>
</div>
</section>
<!-- COMPARATIF -->
<section class="sec sec-soft">
<div class="wrap">
<div class="sec-head reveal">
<span class="kicker">Le bon format pour vous</span>
<h2>Accompagnement, audit ponctuel ou faire soi-même ?</h2>
<p>Un audit isolé donne une photo à un instant T, et les mêmes <a href="https://www.vincenthego.com/blog/erreurs-seo/">erreurs SEO</a> reviennent quelques mois plus tard. Faire soi-même prend un temps précieux et multiplie les erreurs. L'accompagnement SEO, lui, installe une dynamique de résultats dans la durée.</p>
</div>
<div class="cmp reveal">
<div class="cmp-scroll">
<table>
<thead><tr><th>Le critère</th><th>Audit SEO ponctuel</th><th>Faire soi-même</th><th class="hl">Accompagnement SEO</th></tr></thead>
<tbody>
<tr><td>La durée</td><td class="auto">Une photo à un instant T</td><td class="auto">Selon votre temps libre</td><td class="vh">Un pilotage continu, mois après mois</td></tr>
<tr><td>La mise en œuvre</td><td class="auto">À vous de tout appliquer</td><td class="auto">Par tâtonnement</td><td class="vh">Exécutée et priorisée par impact</td></tr>
<tr><td>L'expertise</td><td class="auto">Ponctuelle</td><td class="auto">À acquérir seul</td><td class="vh">Un consultant expert à vos côtés</td></tr>
<tr><td>L'adaptation</td><td class="auto">Figée</td><td class="auto">Difficile à suivre</td><td class="vh">Ajustée aux updates Google et IA</td></tr>
<tr><td>Le résultat</td><td class="auto">Des recommandations</td><td class="auto">Aléatoire</td><td class="vh">Du trafic et des clients durables</td></tr>
</tbody>
</table>
</div>
</div>
</div>
</section>
<!-- SEO vs SEA : mini-cours illustré (SVG, sans JS) -->
<section class="sec" id="seo-vs-sea">
<div class="wrap">
<div class="sec-head reveal">
<span class="kicker">SEO ou SEA</span>
<h2>SEO ou SEA : quelle différence ?</h2>
<p>Deux façons d'<a href="https://www.vincenthego.com/blog/comment-apparaitre-sur-google/">être visible sur Google</a>, réunies sous un sigle souvent mal compris : <a href="https://www.vincenthego.com/blog/seo-sem/">le SEM</a>. Le <a href="https://www.vincenthego.com/blog/seo-vs-sea/">SEA</a> (la publicité, Google Ads) achète du trafic tout de suite. Le SEO (le référencement naturel) le construit dans le temps, sans coût par clic. Voici ce que ça donne, concrètement.</p>
</div>
<div class="sea reveal">
<div class="sea-chart">
<svg viewbox="0 0 760 430" role="img" aria-labelledby="seaTitle seaDesc" preserveaspectratio="xMidYMid meet">
<title id="seaTitle">Comparaison du SEO et du SEA dans le temps</title>
<desc id="seaDesc">Le SEA génère un trafic immédiat mais constant, qui retombe à zéro dès qu'on coupe le budget. Le SEO démarre lentement, dépasse le SEA autour de 6 à 9 mois, puis continue de croître comme un actif durable.</desc>
<defs>
<lineargradient id="seoLine" x1="0" y1="0" x2="1" y2="0"><stop offset="0" stop-color="#f05820"/><stop offset="1" stop-color="#ff7a4a"/></lineargradient>
<lineargradient id="seoArea" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#f05820" stop-opacity="0.18"/><stop offset="1" stop-color="#f05820" stop-opacity="0"/></lineargradient>
</defs>
<!-- grille -->
<line x1="64" y1="280" x2="736" y2="280" stroke="#eef0f6" stroke-width="1"/>
<line x1="64" y1="200" x2="736" y2="200" stroke="#eef0f6" stroke-width="1"/>
<line x1="64" y1="120" x2="736" y2="120" stroke="#eef0f6" stroke-width="1"/>
<!-- axes -->
<line x1="64" y1="30" x2="64" y2="360" stroke="#c9c7d6" stroke-width="2"/>
<line x1="64" y1="360" x2="736" y2="360" stroke="#c9c7d6" stroke-width="2"/>
<polygon points="64,22 59,34 69,34" fill="#c9c7d6"/>
<polygon points="744,360 732,355 732,365" fill="#c9c7d6"/>
<text x="26" y="200" transform="rotate(-90 26 200)" text-anchor="middle" font-size="16" fill="#5b5870" font-weight="600" font-family="Poppins,sans-serif">Trafic & rentabilité</text>
<text x="64" y="384" text-anchor="start" font-size="14" fill="#5b5870" font-family="Poppins,sans-serif">Lancement</text>
<text x="392" y="384" text-anchor="middle" font-size="14" fill="#5b5870" font-family="Poppins,sans-serif">6 mois</text>
<text x="720" y="384" text-anchor="end" font-size="14" fill="#5b5870" font-family="Poppins,sans-serif">12 mois</text>
<text x="400" y="412" text-anchor="middle" font-size="14" fill="#8a8aa0" font-family="Poppins,sans-serif">Temps</text>
<!-- SEA : trafic immédiat, plateau, puis chute quand on coupe le budget -->
<path d="M64,360 C 92,250 122,204 168,201 L 636,201" fill="none" stroke="#322c8f" stroke-width="3.5" stroke-linecap="round"/>
<path d="M636,201 L636,356 L720,356" fill="none" stroke="#322c8f" stroke-width="2.5" stroke-dasharray="6 5" stroke-linecap="round"/>
<text x="628" y="232" text-anchor="end" font-size="13" fill="#322c8f" font-weight="600" font-family="Poppins,sans-serif">budget coupé</text>
<text x="180" y="190" font-size="16" font-weight="800" fill="#322c8f" font-family="Poppins,sans-serif">SEA</text>
<!-- SEO : lent puis actif qui compose -->
<path d="M64,358 C 210,350 320,332 410,282 C 500,232 610,150 720,72 L720,360 L64,360 Z" fill="url(#seoArea)"/>
<path d="M64,358 C 210,350 320,332 410,282 C 500,232 610,150 720,72" fill="none" stroke="url(#seoLine)" stroke-width="4.5" stroke-linecap="round"/>
<circle cx="534" cy="201" r="6" fill="#f05820" stroke="#fff" stroke-width="2.5"/>
<text x="534" y="182" text-anchor="middle" font-size="13" font-weight="700" fill="#1c1962" font-family="Poppins,sans-serif">le SEO passe devant</text>
<text x="724" y="64" text-anchor="end" font-size="16" font-weight="800" fill="#f05820" font-family="Poppins,sans-serif">SEO</text>
</svg>
</div>
<div class="vs reveal">
<div class="vs-row vs-h">
<div class="vs-crit"></div>
<div class="vs-c col-seo">SEO<small>référencement naturel</small></div>
<div class="vs-c col-sea">SEA<small>publicité Google Ads</small></div>
</div>
<div class="vs-row">
<div class="vs-crit">Premiers résultats</div>
<div class="vs-c col-seo"><span class="vs-mark no">-</span>3 à 6 mois</div>
<div class="vs-c col-sea"><span class="vs-mark ok">✓</span>Immédiats</div>
</div>
<div class="vs-row">
<div class="vs-crit">Coût du trafic</div>
<div class="vs-c col-seo"><span class="vs-mark ok">✓</span>Aucun coût par clic</div>
<div class="vs-c col-sea"><span class="vs-mark no">-</span>Payant, en continu</div>
</div>
<div class="vs-row">
<div class="vs-crit">Dans le temps</div>
<div class="vs-c col-seo"><span class="vs-mark ok">✓</span>Un actif qui compose</div>
<div class="vs-c col-sea"><span class="vs-mark no">-</span>S'arrête si on coupe</div>
</div>
<div class="vs-row">
<div class="vs-crit">Crédibilité</div>
<div class="vs-c col-seo"><span class="vs-mark ok">✓</span>Résultat naturel, forte confiance</div>
<div class="vs-c col-sea"><span class="vs-mark no">-</span>Mention « Annonce »</div>
</div>
<div class="vs-row">
<div class="vs-crit">Part des clics Google</div>
<div class="vs-c col-seo"><span class="vs-mark ok">✓</span>~70 à 80 %</div>
<div class="vs-c col-sea"><span class="vs-mark no">-</span>~20 à 30 %</div>
</div>
<div class="vs-row">
<div class="vs-crit">Idéal pour</div>
<div class="vs-c col-seo">Construire durablement</div>
<div class="vs-c col-sea">Tester vite, pics ponctuels</div>
</div>
</div>
<p class="sea-note">En résumé : le <b>SEA</b> pour démarrer vite, le <b>SEO</b> pour bâtir un canal d'acquisition durable. Un bon accompagnement SEO priorise le second et sait, au besoin, articuler les deux.</p>
</div>
</div>
</section>
<!-- MÉTHODE BLUEPRINT -->
<section class="sec">
<div class="wrap">
<div class="sec-head reveal">
<span class="kicker">Ma méthode Blueprint SEO</span>
<h2>Votre feuille de route sur 6 mois</h2>
<p>Ma méthode Blueprint SEO. On travaille les 3 piliers du SEO (technique, contenu, popularité), plus l'UX et la conversion, dès le départ. Puis on avance mois par mois, vers plus de trafic et de clients.</p>
</div>
<div class="timeline">
<div class="tl-item reveal">
<div class="tl-badge">1</div>
<div class="ph">Mois 1</div>
<h3>Diagnostic & quick wins</h3>
<p>On audite les 3 piliers (technique, contenu, popularité) et l'UX/conversion, dès le départ. Puis j'analyse <a href="https://www.vincenthego.com/blog/google-search-console/">votre Search Console</a> pour repérer les victoires rapides. Ce sont les optimisations qui font remonter votre site en quelques semaines.</p>
</div>
<div class="tl-item reveal">
<div class="tl-badge">2</div>
<div class="ph">Mois 1 à 2</div>
<h3>On aspire le trafic de vos concurrents</h3>
<p>Je repère les mots-clés sur lesquels vos concurrents se classent, et pas vous. Priorité à ceux à <strong>forte intention d'achat</strong>. Ceux qui amènent de vrais clients, pas juste du trafic.</p>
</div>
<div class="tl-item reveal">
<div class="tl-badge">3</div>
<div class="ph">Mois 2 à 4</div>
<h3>Des contenus qui rankent plus haut</h3>
<p>Je crée des contenus optimisés à la fois pour le SEO et pour les IA (AI Overviews, ChatGPT). Ils sont pensés pour dépasser vos concurrents sur vos requêtes stratégiques.</p>
</div>
<div class="tl-item reveal">
<div class="tl-badge">4</div>
<div class="ph">Mois 3 à 5</div>
<h3>Autorité & netlinking</h3>
<p>On renforce la popularité de votre domaine avec des backlinks de qualité et un maillage interne solide. C'est ce qui fait gagner les positions les plus concurrentielles.</p>
</div>
<div class="tl-item reveal">
<div class="tl-badge">5</div>
<div class="ph">Mois 5 à 6</div>
<h3>Conversion & croissance</h3>
<p>On transforme le trafic en clients : UX et conversion, suivi du positionnement, du trafic et du chiffre d'affaires (Search Console, Analytics), et ajustements en continu. Le SEO devient votre canal d'acquisition le plus rentable. Chaque mois, vous recevez un <a href="https://www.vincenthego.com/blog/rapport-seo/">rapport SEO</a> qui sépare ce qui vient de votre marque de ce qui vient du référencement, et se termine par le plan du mois suivant.</p>
</div>
</div>
</div>
</section>
<!-- SUIVI MENSUEL -->
<section class="sec sec-soft" id="suivi-mensuel">
<div class="wrap">
<div class="sec-head reveal">
<span class="kicker">Le rituel de chaque mois</span>
<h2>Comment se passe le suivi mensuel</h2>
<p>Un <strong>accompagnement SEO</strong> n'est pas une prestation qu'on livre puis qu'on oublie : c'est un suivi mensuel structuré. La feuille de route ci-dessus donne la direction sur six mois. Ce qui la fait avancer, c'est ce qui se répète tous les mois. Voici ce rituel, sans mystère, parce que c'est la première chose qu'on me demande avant de signer.</p>
</div>
<div class="bento">
<div class="card reveal">
<div class="ic"><svg viewbox="0 0 24 24"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4"/><path d="M8 2v4"/><path d="M3 10h18"/></svg></div>
<h3>Le point mensuel</h3>
<p>Une visio d'une heure, à date fixe. On relit les chiffres du mois, on tranche les arbitrages en attente, on décide du plan des quatre semaines suivantes. Vous parlez à la personne qui exécute, pas à un chef de projet qui transmettra.</p>
</div>
<div class="card reveal d1">
<div class="ic"><svg viewbox="0 0 24 24"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><path d="M14 2v6h6"/><path d="M9 15h6"/><path d="M9 18h4"/></svg></div>
<h3>Les livrables du mois</h3>
<p>Chaque mois a ses livrables écrits : le <a href="https://www.vincenthego.com/blog/rapport-seo/">rapport SEO</a>, les briefs de contenu, les correctifs techniques, les liens obtenus. Rien n'est déclaratif. Ce qui est fait est listé, daté, et vérifiable de votre côté dans la Search Console.</p>
</div>
<div class="card reveal d2">
<div class="ic"><svg viewbox="0 0 24 24"><path d="M22 12h-4l-3 9L9 3l-3 9H2"/></svg></div>
<h3>Le pilotage entre deux points</h3>
<p>Le pilotage SEO ne s'arrête pas au rendez-vous mensuel. Entre deux points, je surveille les positions, l'indexation et les incidents techniques. Une mise à jour d'algorithme ou une régression après une mise en ligne se traite dans la semaine, pas au point suivant.</p>
</div>
<div class="card reveal">
<div class="ic"><svg viewbox="0 0 24 24"><circle cx="12" cy="12" r="10"/><path d="M12 6v6l4 2"/></svg></div>
<h3>Ce que ça vous demande</h3>
<p>La question que les pages concurrentes ne traitent pas, alors autant y répondre : de votre côté, c'est le point mensuel, quelques validations de contenu et les accès techniques du premier mois. Le reste du travail est de mon côté. Un accompagnement mensuel qui réclame dix heures par semaine à votre équipe n'est pas un accompagnement, c'est de la sous-traitance déguisée.</p>
</div>
</div>
<p class="reveal" style="margin-top:26px">La cadence se cale sur votre réalité, pas sur un forfait standard : un site e-commerce en pleine refonte et un cabinet de trois personnes n'ont pas besoin du même rythme. C'est là que le mot « sur mesure » veut dire quelque chose. Le rituel reste le même, son intensité s'ajuste. Et si vous préférez piloter vous-même en gardant un avis extérieur, le <a href="https://www.vincenthego.com/coaching-seo/">coaching SEO</a> répond à ce besoin sans passer par un suivi complet.</p>
</div>
</section>
<!-- POUR QUI -->
<section class="sec">
<div class="wrap">
<div class="sec-head reveal">
<span class="kicker">Est-ce fait pour vous</span>
<h2>À qui s'adresse cet accompagnement SEO</h2>
</div>
<div class="split">
<div class="panel reveal">
<h3>C'est fait pour vous si…</h3>
<ul>
<li><svg class="ck" viewbox="0 0 24 24"><path d="M20 6 9 17l-5-5"/></svg>Votre entreprise génère déjà du chiffre : e-commerce, SaaS, services B2B ou B2C.</li>
<li><svg class="ck" viewbox="0 0 24 24"><path d="M20 6 9 17l-5-5"/></svg>Vous voulez faire du SEO un vrai canal d'acquisition, pas un poste de dépense.</li>
<li><svg class="ck" viewbox="0 0 24 24"><path d="M20 6 9 17l-5-5"/></svg>Vous cherchez un partenaire pour vous accompagner sur le long terme, pas un audit qu'on oublie dans un tiroir.</li>
<li><svg class="ck" viewbox="0 0 24 24"><path d="M20 6 9 17l-5-5"/></svg>Vous voulez comprendre ce qu'on fait et pourquoi, pas subir un service opaque.</li>
</ul>
</div>
<div class="panel dark reveal d1">
<h3>Ce n'est pas pour vous si…</h3>
<ul>
<li><svg class="cx" viewbox="0 0 24 24"><path d="M18 6 6 18M6 6l12 12"/></svg>Vous cherchez un « TOP 1 garanti en 10 jours » : ça n'existe pas, et je ne le vendrai jamais.</li>
<li><svg class="cx" viewbox="0 0 24 24"><path d="M18 6 6 18M6 6l12 12"/></svg>Vous voulez le prix le plus bas plutôt que le meilleur retour sur investissement.</li>
<li><svg class="cx" viewbox="0 0 24 24"><path d="M18 6 6 18M6 6l12 12"/></svg>Vous n'êtes pas prêt à investir sérieusement et durablement dans votre visibilité.</li>
</ul>
<p style="margin-top:20px;font-size:.95rem;color:rgba(255,255,255,.7)">Je n'accompagne qu'un nombre limité de clients à la fois, pour m'investir réellement dans chaque projet.</p>
</div>
</div>
</div>
</section>
<!-- QUIZ : avez-vous besoin d'un accompagnement SEO ? -->
<section class="sec sec-soft" id="quiz">
<div class="wrap">
<div class="sec-head reveal">
<span class="kicker">Test en 1 minute</span>
<h2>Avez-vous vraiment besoin d'un accompagnement SEO ?</h2>
<p>5 questions honnêtes pour savoir si un accompagnement est pertinent pour vous, ou pas. Sans langue de bois : parfois, la réponse est non.</p>
</div>
<div class="quiz-card">
<div class="quiz-progress" aria-hidden="true"><div class="quiz-progress-bar" id="quizBar"></div></div>
<div class="quiz-count" id="quizCount">Question 1 sur 5</div>
<form id="quizForm">
<fieldset class="quiz-step is-active" data-step="1">
<legend class="quiz-legend">Votre entreprise génère-t-elle déjà du chiffre d'affaires ?</legend>
<div class="quiz-opts">
<label class="quiz-opt"><input type="radio" name="q1" value="2"><span>Oui, un chiffre d'affaires établi</span></label>
<label class="quiz-opt"><input type="radio" name="q1" value="1"><span>Un peu, l'activité démarre</span></label>
<label class="quiz-opt"><input type="radio" name="q1" value="0"><span>Pas encore de revenus</span></label>
</div>
</fieldset>
<fieldset class="quiz-step" data-step="2">
<legend class="quiz-legend">Avez-vous déjà d'autres canaux d'acquisition qui fonctionnent ?</legend>
<div class="quiz-opts">
<label class="quiz-opt"><input type="radio" name="q2" value="2"><span>Oui, plusieurs (pub, réseaux, bouche-à-oreille…)</span></label>
<label class="quiz-opt"><input type="radio" name="q2" value="1"><span>Un seul, et il est fragile</span></label>
<label class="quiz-opt"><input type="radio" name="q2" value="0"><span>Non, aucun pour l'instant</span></label>
</div>
</fieldset>
<fieldset class="quiz-step" data-step="3">
<legend class="quiz-legend">Êtes-vous prêt à investir sur 6 à 12 mois pour des résultats durables ?</legend>
<div class="quiz-opts">
<label class="quiz-opt"><input type="radio" name="q3" value="2"><span>Oui, je vois le SEO comme un investissement</span></label>
<label class="quiz-opt"><input type="radio" name="q3" value="1"><span>Peut-être, si je vois que ça avance</span></label>
<label class="quiz-opt"><input type="radio" name="q3" value="0"><span>Non, je veux des résultats immédiats</span></label>
</div>
</fieldset>
<fieldset class="quiz-step" data-step="4">
<legend class="quiz-legend">Quel est votre objectif principal ?</legend>
<div class="quiz-opts">
<label class="quiz-opt"><input type="radio" name="q4" value="2"><span>Faire de Google un vrai canal de clients</span></label>
<label class="quiz-opt"><input type="radio" name="q4" value="1"><span>Juste un audit ou un avis ponctuel</span></label>
<label class="quiz-opt"><input type="radio" name="q4" value="0"><span>Tester le SEO avec un tout petit budget</span></label>
</div>
</fieldset>
<fieldset class="quiz-step" data-step="5">
<legend class="quiz-legend">Où en êtes-vous en SEO aujourd'hui ?</legend>
<div class="quiz-opts">
<label class="quiz-opt"><input type="radio" name="q5" value="2"><span>Rien de structuré, ou une agence qui déçoit</span></label>
<label class="quiz-opt"><input type="radio" name="q5" value="1"><span>Je bricole seul, sans vraie stratégie</span></label>
<label class="quiz-opt"><input type="radio" name="q5" value="0"><span>C'est déjà très bien géré en interne</span></label>
</div>
</fieldset>
</form>
<div class="quiz-nav"><button type="button" class="quiz-back" id="quizBack">← Précédent</button></div>
<div class="quiz-result" id="quizResult" hidden aria-live="polite"></div>
</div>
</div>
</section>
<!-- POURQUOI LA PREMIÈRE PAGE (graphique CTR par position) -->
<section class="sec sec-soft" id="premiere-page">
<div class="wrap">
<div class="sec-head reveal">
<span class="kicker">L'enjeu du classement</span>
<h2>Pourquoi viser la première page de Google ?</h2>
<p>Parce que presque tous les clics se concentrent sur les premiers résultats. En dessous, c'est le désert. Voici la répartition moyenne des clics selon la position.</p>
</div>
<div class="viz reveal">
<div class="viz-card">
<svg viewbox="0 0 760 400" role="img" aria-labelledby="ctrT ctrD" preserveaspectratio="xMidYMid meet">
<title id="ctrT">Taux de clic selon la position sur Google</title>
<desc id="ctrD">La première position capte environ 28% des clics, la deuxième 15%, la troisième 11%. La deuxième page de Google reçoit moins de 1% des clics.</desc>
<defs>
<lineargradient id="ctrGrad" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#f05820"/><stop offset="1" stop-color="#ff9366"/></lineargradient>
</defs>
<line x1="60" y1="240" x2="736" y2="240" stroke="#eef0f6" stroke-width="1"/>
<line x1="60" y1="150" x2="736" y2="150" stroke="#eef0f6" stroke-width="1"/>
<line x1="60" y1="60" x2="736" y2="60" stroke="#eef0f6" stroke-width="1"/>
<text x="52" y="244" text-anchor="end" font-size="12" fill="#8a8aa0" font-family="Poppins,sans-serif">10%</text>
<text x="52" y="154" text-anchor="end" font-size="12" fill="#8a8aa0" font-family="Poppins,sans-serif">20%</text>
<text x="52" y="64" text-anchor="end" font-size="12" fill="#8a8aa0" font-family="Poppins,sans-serif">30%</text>
<line x1="60" y1="330" x2="736" y2="330" stroke="#c9c7d6" stroke-width="2"/>
<!-- barres page 1 -->
<rect x="84" y="78" width="62" height="252" rx="7" fill="url(#ctrGrad)"/>
<rect x="191" y="195" width="62" height="135" rx="7" fill="url(#ctrGrad)"/>
<rect x="298" y="231" width="62" height="99" rx="7" fill="url(#ctrGrad)"/>
<rect x="405" y="258" width="62" height="72" rx="7" fill="url(#ctrGrad)"/>
<rect x="512" y="267" width="62" height="63" rx="7" fill="url(#ctrGrad)"/>
<!-- page 2 -->
<rect x="649" y="321" width="62" height="9" rx="4" fill="#c9c7d6"/>
<line x1="610" y1="60" x2="610" y2="330" stroke="#d9d9e6" stroke-width="1.5" stroke-dasharray="5 5"/>
<!-- valeurs -->
<text x="115" y="68" text-anchor="middle" font-size="15" font-weight="800" fill="#1c1962" font-family="Poppins,sans-serif">28%</text>
<text x="222" y="185" text-anchor="middle" font-size="15" font-weight="800" fill="#1c1962" font-family="Poppins,sans-serif">15%</text>
<text x="329" y="221" text-anchor="middle" font-size="15" font-weight="800" fill="#1c1962" font-family="Poppins,sans-serif">11%</text>
<text x="436" y="248" text-anchor="middle" font-size="15" font-weight="800" fill="#1c1962" font-family="Poppins,sans-serif">8%</text>
<text x="543" y="257" text-anchor="middle" font-size="15" font-weight="800" fill="#1c1962" font-family="Poppins,sans-serif">7%</text>
<text x="680" y="311" text-anchor="middle" font-size="14" font-weight="800" fill="#8a8aa0" font-family="Poppins,sans-serif"><1%</text>
<!-- positions -->
<text x="115" y="352" text-anchor="middle" font-size="14" fill="#5b5870" font-family="Poppins,sans-serif">1re</text>
<text x="222" y="352" text-anchor="middle" font-size="14" fill="#5b5870" font-family="Poppins,sans-serif">2e</text>
<text x="329" y="352" text-anchor="middle" font-size="14" fill="#5b5870" font-family="Poppins,sans-serif">3e</text>
<text x="436" y="352" text-anchor="middle" font-size="14" fill="#5b5870" font-family="Poppins,sans-serif">4e</text>
<text x="543" y="352" text-anchor="middle" font-size="14" fill="#5b5870" font-family="Poppins,sans-serif">5e</text>
<text x="680" y="352" text-anchor="middle" font-size="14" fill="#5b5870" font-family="Poppins,sans-serif">Page 2</text>
<text x="398" y="384" text-anchor="middle" font-size="13" fill="#8a8aa0" font-family="Poppins,sans-serif">Position dans les résultats Google</text>
</svg>
<p class="viz-cap">Répartition moyenne des clics selon la position (études CTR Backlinko / Advanced Web Ranking). Être en <b>première page</b>, idéalement dans le <b>top 3</b>, change tout : c'est là que se joue votre trafic.</p>
</div>
</div>
</div>
</section>
<!-- RÉSULTATS -->
<section class="sec">
<div class="wrap">
<div class="sec-head reveal">
<span class="kicker">Des résultats concrets</span>
<h2>Ce que produit un référencement naturel bien piloté</h2>
<p>Depuis 2016, j'accompagne des entreprises et des SaaS à faire du référencement naturel leur moteur de croissance.</p>
</div>
<div class="stats">
<div class="stat reveal">
<div class="n" data-prefix="+" data-target="1000">+1000</div><div class="l">clients & SaaS accompagnés</div>
</div>
<div class="stat reveal d1">
<div class="n" data-prefix="×" data-target="27">×27</div><div class="l">de trafic (record client)</div>
</div>
<div class="stat reveal d2">
<div class="n" data-prefix="+" data-target="300" data-suffix="k">+300k</div><div class="l">visiteurs/mois générés</div>
</div>
<div class="stat reveal d3">
<div class="n" data-target="17" data-suffix="k+">17k+</div><div class="l">abonnés sur LinkedIn</div>
</div>
</div>
<div class="case reveal">
<div class="ct">
<div class="cq">« Vincent a fait passer notre SEO de <b>300 à 8 200 visiteurs par jour en 19 mois</b>. Aujourd'hui, le référencement naturel est notre premier canal d'acquisition. »</div>
<div class="cm">
<img width="300" height="52" src="/assets/logos/waalaxy.webp" alt="Waalaxy" loading="lazy"/>
<div>
<div class="cn">Waalaxy</div>
<div class="cr">SaaS | ×27 de trafic organique</div>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- BANDE CTA DE RAPPEL (mi-page ~60%) -->
<section class="cta-band">
<div class="wrap">
<div class="cta-band-inner reveal">
<img class="cta-face" src="/assets/brand/vincent-sourire.webp" alt="Vincent Hégo, consultant SEO" loading="lazy" width="480" height="384"/>
<p class="cta-band-title">Prêt à faire du SEO votre meilleur canal d'acquisition ?</p>
<p>On en discute ? Je regarde votre site avec vous, en direct, pendant un diagnostic offert de 30 min en visio. Vous repartez avec un plan d'action clair, qu'on travaille ensemble ou non.</p>
<a class="btn btn-primary btn-lg" href="#diagnostic" data-rfd-cta>Réserver mon diagnostic offert
<svg viewbox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
</a>
</div>
</div>
</section>
<!-- CONSULTANT VS AGENCE -->
<section class="sec sec-soft">
<div class="wrap">
<div class="sec-head reveal">
<span class="kicker">Un consultant, pas une agence</span>
<h2>Vous travaillez en direct avec l'expert</h2>
<p>Face à une agence SEO classique, pas de chef de projet intermédiaire ni de junior qui exécute. Vous bénéficiez directement de <a href="https://www.vincenthego.com/mon-histoire/">mon expertise en SEO</a>. Un seul interlocuteur, celui qui a la stratégie en tête.</p>
</div>
<div class="bio reveal">
<img class="bio-photo" src="assets/brand/vincent-portrait.jpg" alt="Vincent Hégo, consultant SEO à Montpellier" loading="lazy" width="717" height="900"/>
<div class="bio-txt">
<div class="bio-name">Vincent Hégo</div>
<p>Consultant SEO (search engine optimization), référenceur et expert en référencement, fondateur de VH DIGITAL CORP. Depuis 2016, j'aide les entreprises à devenir visibles sur Google. Je développe leur chiffre d'affaires grâce au référencement naturel et au webmarketing. Tous secteurs confondus, de la startup au grand compte : Waalaxy, Bosch, Decathlon.</p>
<p>Mon approche est personnalisée et sans intermédiaire. Elle s'appuie sur une méthode éprouvée et sur les <a href="https://developers.google.com/search/docs/fundamentals/seo-starter-guide?hl=fr" target="_blank" rel="noopener">recommandations officielles de Google</a>. Retrouvez-moi sur <a href="https://www.linkedin.com/in/vincent-hego/" target="_blank" rel="noopener">LinkedIn</a>.</p>
</div>
</div>
<div class="why-me">
<div class="card reveal">
<div class="ic"><svg viewbox="0 0 24 24"><path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M23 21v-2a4 4 0 0 0-3-3.87"/><path d="M16 3.13a4 4 0 0 1 0 7.75"/></svg></div>
<h3>Un interlocuteur unique</h3>
<p>Vous parlez à celui qui pense et exécute votre stratégie, pas à une équipe qui se renvoie la balle. Des conseils directs, des décisions rapides, une vraie relation de confiance.</p>
</div>
<div class="card reveal d1">
<div class="ic"><svg viewbox="0 0 24 24"><path d="M12 2 2 7l10 5 10-5-10-5z"/><path d="M2 17l10 5 10-5"/><path d="M2 12l10 5 10-5"/></svg></div>
<h3>Une méthode éprouvée</h3>
<p>La Blueprint SEO, affinée par mon expérience sur +1000 clients depuis 2016. Une approche qui réunit toutes les expertises du référencement pour relier technique, contenu et autorité à vos résultats.</p>
</div>
<div class="card reveal d2">
<div class="ic"><svg viewbox="0 0 24 24"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"/><path d="M22 4 12 14.01l-3-3"/></svg></div>
<h3>Zéro bullshit</h3>
<p>Pas de reporting fumeux ni de fausses promesses. Des objectifs mesurables, de la transparence, et un travail que vous comprenez.</p>
</div>
</div>
</div>
</section>
<!-- PRIX / BUDGET (People Also Ask + AI Overview) -->
<section class="sec" id="prix">
<div class="wrap">
<div class="sec-head reveal">
<span class="kicker">Budget & tarifs</span>
<h2>Combien coûte un accompagnement SEO ?</h2>
<p>Une réponse claire, avec les vrais ordres de grandeur du marché français.</p>
</div>
<div class="price-cards">
<div class="price-card reveal">
<div class="pl">Audit SEO ponctuel</div>
<div class="pv">800 à 5 000 €</div>
<div class="pd">Selon la taille du site. Une photo à un instant T, souvent la première étape.</div>
</div>
<div class="price-card reveal d1">
<div class="pl">Accompagnement PME</div>
<div class="pv">1 000 à 5 000 €/mois</div>
<div class="pd">Fourchette du marché, avec un budget médian autour de 980 € HT/mois pour un accompagnement complet.</div>
</div>
<div class="price-card feat reveal d2">
<div class="pl">Avec Vincent Hégo</div>
<div class="pv">Sur-mesure</div>
<div class="pd">Défini selon votre secteur, la concurrence et vos objectifs. Périmètre et budget fixés pendant le diagnostic offert.</div>
</div>
</div>
<div class="lead reveal" style="text-align:center;margin-top:30px">
<p>Le référencement naturel en France est un marché concurrentiel, et ce que fait une <a href="https://www.vincenthego.com/agence-seo/">agence de référencement</a> au quotidien se joue sur la durée. L'ouverture à l'étranger, elle, demande une méthode à part : c'est l'objet de ma page <a href="https://www.vincenthego.com/agence-seo-internationale/">agence SEO internationale</a>. Ce qui fait la différence, c'est un référencement naturel bien piloté, pas le prestataire le moins cher.</p>
<p>Vous pouvez voir <a href="https://www.vincenthego.com/devis-seo/">à quoi ressemble le devis correspondant</a> avant même de me contacter. Mon accompagnement s'adresse aux entreprises qui veulent un <strong>canal d'acquisition rentable</strong>. Contrairement à Google Ads, le trafic SEO ne s'arrête pas quand vous coupez le budget. C'est un actif qui compose dans le temps.</p>
</div>
</div>
</section>
<!-- DIAGNOSTIC / CTA (widget) -->
<section class="diag" id="diagnostic-sec">
<div class="wrap">
<div class="sec-head reveal">
<img width="160" height="160" class="diag-face" src="/assets/brand/vincent-rond.webp" alt="Vincent Hégo, consultant SEO"/>
<span class="kicker">Première étape offerte</span>
<h2>Voyons ensemble ce que le SEO peut vous rapporter</h2>
<p>Entrez l'adresse de votre site : je lance l'analyse en direct, puis on en parle lors d'un appel de 30 min en visio. Vous repartez avec un plan d'action priorisé, que l'on travaille ensemble ou non.</p>
<div class="human-note reveal">
<img src="/assets/brand/vincent-rond.webp" alt="Vincent Hégo" loading="lazy" width="44" height="44"/>
<p>En face de vous, ce sera moi. Pas un commercial, pas un chatbot : le consultant qui analysera vraiment votre site.</p>
</div>
</div>
<div class="diag-reassure reveal">
<span class="chip"><svg viewbox="0 0 24 24"><circle cx="11" cy="11" r="7"/><path d="m21 21-4.3-4.3"/></svg>Analyse en direct</span>
<span class="chip"><svg viewbox="0 0 24 24"><rect x="2" y="4" width="20" height="16" rx="2"/><path d="m2 7 10 6 10-6"/></svg>30 min en visio</span>
<span class="chip"><svg viewbox="0 0 24 24"><path d="M20 6 9 17l-5-5"/></svg>Offert & sans engagement</span>
</div>
<div id="diagnostic"></div>
<!-- ===== Widget diagnostic SEO (autonome, scopé #rfd-root) ===== -->
<style id="vh-tunnel-b-css">
/* Tunnel variante B : teaser avant l'email, bilan detaille apres. */
#rfd-root .rfd-fx-count{display:block;margin:18px 0 20px;padding:16px 18px;border-radius:14px;background:rgba(240,88,32,.07);border:1.5px solid rgba(240,88,32,.24);text-align:center}
#rfd-root .rfd-fx-count b{display:block;font-size:1.16rem;font-weight:800;color:#1c1962;line-height:1.3;letter-spacing:-.01em}
#rfd-root .rfd-fx-count span{display:block;margin-top:5px;font-size:.92rem;color:#5b5870;line-height:1.45}
#rfd-root .rfd-issues{list-style:none;margin:20px 0 22px;padding:0;text-align:left}
#rfd-root .rfd-issue{position:relative;padding:13px 15px 14px 15px;margin:0 0 9px;border-radius:13px;background:#fff;border:1.5px solid #e8e4f0}
#rfd-root .rfd-issue.s-crit{border-color:rgba(211,63,42,.34);background:rgba(240,101,63,.05)}
#rfd-root .rfd-issue-sev{display:inline-block;font-size:.62rem;font-weight:800;letter-spacing:1.2px;text-transform:uppercase;padding:3px 9px;border-radius:99px;margin:0 0 7px;background:#efedf6;color:#5b5870}
#rfd-root .rfd-issue.s-crit .rfd-issue-sev{background:rgba(211,63,42,.12);color:#c0331f}
#rfd-root .rfd-issue-t{display:block;font-size:1rem;font-weight:800;color:#1c1962;line-height:1.35;letter-spacing:-.01em}
#rfd-root .rfd-issue-d{display:block;margin-top:4px;font-size:.9rem;color:#5b5870;line-height:1.5}
#rfd-root .rfd-lowexit{display:block;width:100%;margin:14px 0 0;padding:11px;background:none;border:none;font-family:inherit;font-size:.92rem;font-weight:600;color:#5b5870;text-decoration:underline;text-underline-offset:3px;cursor:pointer;transition:color .15s}
#rfd-root .rfd-lowexit:hover{color:#1c1962}
#rfd-root .rfd-lowexit-done{margin:16px 0 0;padding:14px 16px;border-radius:13px;background:#e9f9ef;border:1.5px solid #a7dcb8;color:#136c34;font-size:.94rem;font-weight:600;line-height:1.5}
</style>
<div id="rfd-root">
<div class="rfd-card" id="rfd-step-form">
<p class="rfd-title">Recevez votre diagnostic SEO offert</p>
<p class="rfd-sub">Entrez l'adresse de votre site : je lance l'analyse en direct, puis on en parle ensemble en visio.</p>
<form id="rfd-form" novalidate>
<div class="rfd-fields">
<input id="rfd-url" type="text" inputmode="url" placeholder="Entrez l'adresse de votre site" autocomplete="url" autocapitalize="off" spellcheck="false" required>
</div>
<button type="submit" class="rfd-btn" id="rfd-submit"><span class="rfd-btn-txt">Analyser mon site →</span><span class="rfd-btn-spin" aria-hidden="true"></span></button>
<div class="rfd-err" id="rfd-err"></div>
<div class="rfd-trust">🔒 100% gratuit et sans engagement</div>
</form>
</div>
<div class="rfd-card rfd-hidden" id="rfd-step-scan">
<div class="rfd-eyebrow">Analyse en cours</div>
<p class="rfd-title">On analyse votre site en direct…</p>
<div class="rfd-scanhost" id="rfd-scanhost"></div>
<div class="rfd-shot" id="rfd-shot" hidden>
<div class="rfd-shot-bar"><i></i><i></i><i></i><span class="rfd-shot-url" id="rfd-shot-url"></span></div>
<div class="rfd-shot-view"><img id="rfd-shot-img" alt="" width="640" height="420" decoding="async"></div>
</div>
<div class="rfd-progresshead"><span class="rfd-progress-label" id="rfd-progress-label">Initialisation…</span><span class="rfd-progress-pct" id="rfd-progress-pct">0%</span></div>
<div class="rfd-progresswrap"><div class="rfd-progress" id="rfd-progress"></div></div>
<ul class="rfd-checklist" id="rfd-checklist"></ul>
</div>
<div class="rfd-card rfd-hidden" id="rfd-step-email">
<div class="rfd-done-badge">✓</div>
<p class="rfd-title">Votre bilan complet est prêt</p>
<p class="rfd-sub">Indiquez votre email pour <strong>afficher le détail de chaque point bloquant</strong> et savoir par lequel commencer.</p>
<form id="rfd-email-form" novalidate>
<div class="rfd-fields">
<input id="rfd-email-input" type="email" inputmode="email" autocomplete="email" placeholder="Votre adresse email" required>
</div>
<button type="submit" class="rfd-btn" id="rfd-email-submit"><span class="rfd-btn-txt">Afficher mon bilan complet →</span></button>
<div class="rfd-err" id="rfd-email-err"></div>
<div class="rfd-trust">🔒 Zéro spam. Votre email sert à retrouver votre bilan, rien d'autre.</div>
</form>
</div>
<div class="rfd-card rfd-hidden" id="rfd-step-findings">
<p class="rfd-fx-eye">Votre bilan SEO</p>
<div class="rfd-fx-site no-thumb" id="rfd-fx-site">
<span class="rfd-fx-thumb"><img id="rfd-fx-img" alt="" width="46" height="32" decoding="async"></span>
<span class="rfd-fx-domain" id="rfd-fx-domain"></span>
</div>
<div class="rfd-gauge" id="rfd-gauge">
<svg viewbox="0 0 176 176">
<defs>
<lineargradient id="rfd-grad-crit" x1="0" y1="0" x2="1" y2="1"><stop offset="0" stop-color="#f0653f"/><stop offset="1" stop-color="#d33f2a"/></lineargradient>
<lineargradient id="rfd-grad-warn" x1="0" y1="0" x2="1" y2="1"><stop offset="0" stop-color="#ff8a4d"/><stop offset="1" stop-color="#f05820"/></lineargradient>
<lineargradient id="rfd-grad-ok" x1="0" y1="0" x2="1" y2="1"><stop offset="0" stop-color="#43c286"/><stop offset="1" stop-color="#1b9560"/></lineargradient>
</defs>
<circle class="rfd-gauge-bg" cx="88" cy="88" r="64"></circle>
<circle class="rfd-gauge-fg" id="rfd-gauge-arc" cx="88" cy="88" r="64"></circle>
</svg>
<div class="rfd-gauge-txt"><b id="rfd-scorenum">-</b><span>SUR 100</span></div>
</div>
<p class="rfd-verdict" id="rfd-verdict">Analyse terminée</p>
<p class="rfd-fx-sub" id="rfd-fx-sub">Aperçu on-page de votre page d'accueil</p>
<!-- TEASER : le score est montre, le diagnostic est retenu. -->
<div id="rfd-fx-teaser">
<div class="rfd-fx-count" id="rfd-fx-count"></div>
<button type="button" class="rfd-btn" id="rfd-teaser-go"><span class="rfd-btn-txt">Voir le détail de mon bilan →</span></button>
<div class="rfd-fx-reassure">Gratuit | sans engagement | aucun appel obligatoire</div>
</div>
<!-- BILAN COMPLET : revele une fois l'email laisse. -->
<div id="rfd-fx-locked" class="rfd-hidden">
<div class="rfd-cats" id="rfd-cats"></div>
<ul class="rfd-issues" id="rfd-issues"></ul>
<div class="rfd-fx-note" id="rfd-fx-note">
<span class="rfd-fx-note-eye">En clair</span>
<span class="rfd-fx-note-txt" id="rfd-fx-note-txt"></span>
</div>
<button type="button" class="rfd-btn" id="rfd-findings-go"><span class="rfd-btn-txt">On corrige tout ça ensemble, 30 min →</span></button>
<div class="rfd-fx-reassure" id="rfd-fx-reassure">Diagnostic offert | 30 min en visio | le plan pour corriger, étape par étape</div>
<button type="button" class="rfd-lowexit" id="rfd-lowexit">Pas d'appel pour l'instant, merci</button>
</div>
</div>
<div class="rfd-card rfd-hidden" id="rfd-step-quiz">
<div class="rfd-qhead">
<button type="button" class="rfd-qback" id="rfd-qback" aria-label="Question précédente" disabled><svg viewbox="0 0 24 24" fill="none" aria-hidden="true"><path d="M15 6l-6 6 6 6" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"/></svg></button>
<div class="rfd-qbar"><span class="rfd-qbarfill" id="rfd-qbarfill"></span></div>
<span class="rfd-qcount" id="rfd-qcount">1/5</span>
</div>
<div class="rfd-qview" id="rfd-qview"></div>
<div class="rfd-trust">🔒 Vos informations restent confidentielles. Zéro spam.</div>
</div>
<div class="rfd-card rfd-hidden" id="rfd-step-done">
<div class="rfd-done-badge">✓</div>
<p class="rfd-title">Choisissez votre créneau</p>
<p class="rfd-sub">Tout est déjà pré-rempli. Il reste <strong>2 étapes</strong> : choisissez votre créneau, puis cliquez sur <strong>« Confirmer l'événement »</strong>. Sans ce dernier clic, rien n'est réservé.</p>
<div class="rfd-calhint rfd-calhint-top" id="rfd-calhint-top" hidden>
<span class="rfd-calhint-ar" aria-hidden="true">↓</span>
<span>Cliquez sur <strong>« Confirmer l'événement »</strong></span>
</div>
<div id="rfd-cal"></div>
<div class="rfd-calhint" id="rfd-calhint" hidden>
<span class="rfd-calhint-ar" aria-hidden="true">↑</span>
<span>Cliquez sur <strong>« Confirmer l'événement »</strong></span>
</div>
</div>
</div>
</div>
</section><style id="vh-cform-css">
.vh-cform .contact-form{position:relative;background:linear-gradient(180deg,#fff,#fbfaff);border:2px solid var(--orange,#f05820);border-radius:22px;box-shadow:0 4px 14px rgba(240,88,32,.10),0 24px 60px rgba(20,16,60,.09);padding:30px 30px 26px;text-align:left}
.vh-cform .cf-row{margin:0 0 16px}
.vh-cform .cf-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.vh-cform .cf-field{display:block}
.vh-cform .cf-label{display:block;font-size:.86rem;font-weight:700;color:var(--marine,#1c1962);margin:0 0 7px;letter-spacing:-.01em}
.vh-cform .cf-field input,.vh-cform .cf-field select,.vh-cform .cf-field textarea{width:100%;padding:13px 15px;border:1.5px solid #dcdce8;border-radius:13px;font-family:inherit;font-size:1rem;color:var(--ink,#26233a);background:#fff;-webkit-appearance:none;appearance:none;transition:border-color .18s,box-shadow .18s}
.vh-cform .cf-field textarea{resize:vertical;min-height:130px;line-height:1.55}
.vh-cform .cf-field input::placeholder,.vh-cform .cf-field textarea::placeholder{color:#a7a7bd;opacity:1}
.vh-cform .cf-field input:focus,.vh-cform .cf-field select:focus,.vh-cform .cf-field textarea:focus{outline:none;border-color:var(--orange,#f05820);box-shadow:0 0 0 4px rgba(240,88,32,.14)}
.vh-cform .cf-field select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231c1962' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;padding-right:40px;cursor:pointer}
.vh-cform .cf-submit{width:100%;margin-top:4px;display:flex;align-items:center;justify-content:center;gap:9px;font-size:1.05rem;padding:15px 22px}
.vh-cform .cf-submit svg{width:19px;height:19px;flex:none}
.vh-cform .cf-note{font-size:.85rem;color:var(--muted,#5b5870);margin:13px 0 0;line-height:1.5;text-align:center}
.vh-cform .cf-status{margin-top:14px;font-size:.96rem;font-weight:600;text-align:center;border-radius:12px;line-height:1.5}
.vh-cform .cf-status.ok{color:#136c34;background:#e9f9ef;border:1.5px solid #a7dcb8;padding:16px 18px;font-size:1.02rem;font-weight:700}
.vh-cform .cf-status.err{color:#c62828;background:#fdecea;padding:13px 15px}
.vh-cform .cf-hp{position:absolute!important;left:-9999px;width:1px;height:1px;overflow:hidden}
.vh-cform .cform-wrap{max-width:720px;margin-left:auto;margin-right:auto}
@media(max-width:560px){.vh-cform .contact-form{padding:24px 18px 22px}.vh-cform .cf-2{grid-template-columns:1fr}}
</style>
<section class="sec vh-cform" id="vh-cform">
<div class="wrap cform-wrap">
<div class="sec-head reveal">
<span class="kicker">Ou par message</span>
<h2>Une question ? Écrivez-moi directement</h2>
<p>Pas envie de lancer l'analyse tout de suite ? Décrivez-moi votre projet, votre site ou votre question : je lis chaque message et je vous réponds personnellement sous 24h ouvrées.</p>
</div>
<form id="contact-form" class="contact-form" novalidate>
<div class="cf-hp" aria-hidden="true"><label>Ne pas remplir<input type="text" name="_gotcha" tabindex="-1" autocomplete="off"></label></div>
<div class="cf-row">
<label class="cf-field" for="cf-sujet"><span class="cf-label">Je souhaite parler de</span>
<select id="cf-sujet" name="sujet" required>
<option value="" disabled selected>Choisissez un sujet…</option>
<option>Accompagnement SEO</option>
<option>Formation SEO</option>
<option>Audit / Diagnostic SEO</option>
<option>Refonte de site</option>
<option>Netlinking</option>
<option>Autre / Question générale</option>
</select>
</label>
</div>
<div class="cf-row cf-2">
<label class="cf-field" for="cf-nom"><span class="cf-label">Nom complet *</span><input id="cf-nom" name="nom" type="text" autocomplete="name" required placeholder="Prénom et nom"></label>
<label class="cf-field" for="cf-email"><span class="cf-label">Email *</span><input id="cf-email" name="email" type="email" inputmode="email" autocomplete="email" required placeholder="vous@exemple.fr"></label>
</div>
<div class="cf-row cf-2">
<label class="cf-field" for="cf-site"><span class="cf-label">Votre site web</span><input id="cf-site" name="site" type="text" inputmode="url" autocomplete="url" placeholder="votre-site.fr (optionnel)"></label>
<label class="cf-field" for="cf-tel"><span class="cf-label">Téléphone</span><input id="cf-tel" name="tel" type="tel" autocomplete="tel" placeholder="Optionnel"></label>
</div>
<div class="cf-row">
<label class="cf-field" for="cf-msg"><span class="cf-label">Votre message *</span><textarea id="cf-msg" name="message" rows="5" required placeholder="Décrivez votre projet, votre site, votre objectif ou votre question…"></textarea></label>
</div>
<button type="submit" class="btn btn-primary cf-submit" id="cf-submit">Envoyer mon message <svg viewbox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 6l6 6-6 6"/></svg></button>
<p class="cf-note">🔒 Vos informations restent confidentielles. En envoyant ce formulaire, vous acceptez d'être recontacté au sujet de votre demande.</p>
<div class="cf-status" id="cf-status" role="alert" aria-live="polite"></div>
</form>
</div>
</section>
<script id="vh-cform-js">
window.vhEnvoyer=window.vhEnvoyer||function(p){var FS='https://formsubmit.co/ajax/bonjour@vincenthego.com',BM='https://bm.vincenthego.com/api/contact';function fs(){return fetch(FS,{method:'POST',headers:{'Content-Type':'application/json','Accept':'application/json'},body:JSON.stringify(p)});}return fetch(BM,{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify(p)}).then(function(r){return r.json().then(function(d){if(d&&d.ok){return {ok:true,status:200,json:function(){return Promise.resolve({success:true});}};}return fs();});}).catch(fs);};
(function(){
var f=document.getElementById('contact-form'); if(!f) return;
var st=document.getElementById('cf-status'), btn=document.getElementById('cf-submit'), btnHTML=btn.innerHTML, busy=false;
function msg(t,ok){ st.textContent=t; st.className='cf-status '+(t?(ok?'ok':'err'):''); }
f.addEventListener('submit', function(e){
e.preventDefault();
if(busy) return;
msg('',true);
var nom=(f.nom.value||'').trim(), email=(f.email.value||'').trim(), message=(f.message.value||'').trim();
if(!nom){ msg('Merci d\'indiquer votre nom.',false); f.nom.focus(); return; }
if(!/^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(email)){ msg('Entrez un email valide pour que je puisse vous répondre.',false); f.email.focus(); return; }
if(!message){ msg('Écrivez-moi quelques mots dans le message.',false); f.message.focus(); return; }
if(f._gotcha && f._gotcha.value){ msg('Merci ! Votre message est bien envoyé.',true); f.reset(); return; }
busy=true; btn.disabled=true; btn.innerHTML='Envoi en cours…';
var sujet=(f.sujet.value||'Question générale');
var prenom=nom.split(' ')[0];
var srcTitle=(document.title||'').split('|')[0].trim();
var payload={ Nom:nom, Email:email, Sujet:sujet, "Site web":((f.site.value||'').trim()||'-'), "Téléphone":((f.tel.value||'').trim()||'-'), Message:message,
"Page source": (srcTitle?srcTitle+' | ':'')+location.href,
_subject:'Nouveau contact | '+nom+' | '+sujet+' | via '+(srcTitle||location.pathname), _template:'table', _captcha:'false',
_autoresponse:'Bonjour '+prenom+",\n\nMerci pour votre message, je l'ai bien reçu ! Je le lis personnellement et je vous réponds sous 24h ouvrées.\n\nEn attendant, si c'est urgent, vous pouvez m'écrire sur WhatsApp ou réserver directement un appel offert sur https://www.vincenthego.com/appel/\n\nÀ très vite,\nVincent Hégo\nConsultant SEO | VH DIGITAL CORP\nhttps://www.vincenthego.com" };
vhEnvoyer(payload)
.then(function(r){ return r.json().catch(function(){ return {}; }); })
.then(function(d){
if(d && (d.success===true || d.success==='true')){ f.reset(); msg('✅ Message bien envoyé. Merci ! Je vous réponds personnellement sous 24h ouvrées.',true); try{ if(typeof gtag==='function'){ gtag('event','contact_submit',{event_category:'Contact'}); } }catch(_e){} }
else { msg("L'envoi a échoué. Réessayez, ou écrivez-moi directement à bonjour@vincenthego.com.",false); }
})
.catch(function(){ msg("L'envoi a échoué. Réessayez, ou écrivez-moi directement à bonjour@vincenthego.com.",false); })
.then(function(){ busy=false; btn.disabled=false; btn.innerHTML=btnHTML; });
});
})();
</script>
<!-- FAQ -->
<section class="sec sec-soft">
<div class="wrap">
<div class="sec-head reveal">
<span class="kicker">Vos questions</span>
<p>Si vous préférez apprendre à le faire vous-même plutôt que de déléguer, ma <a href="https://www.vincenthego.com/formation-seo/">formation SEO</a> reprend la même méthode, en autonomie et pour un budget bien inférieur.</p>
<h2>Questions fréquentes sur l'accompagnement SEO</h2>
</div>
<div class="faq-wrap reveal">
<div class="faq-item">
<h3 class="faq-h"><button class="faq-q" aria-expanded="false">Qu'est-ce qu'un accompagnement SEO ?<span class="chev"><svg viewbox="0 0 24 24"><path d="M6 9l6 6 6-6"/></svg></span></button></h3>
<div class="faq-a"><p>C'est une collaboration dans la durée avec un <a href="https://www.vincenthego.com/consultant-seo/">consultant SEO</a>. Je pilote votre référencement naturel mois après mois. Plutôt qu'un audit ponctuel, j'installe une stratégie et je l'ajuste en continu : mots-clés, technique, contenu, netlinking, suivi. Le tout en m'adaptant à Google et aux IA.</p></div>
</div>
<div class="faq-item">
<h3 class="faq-h"><button class="faq-q" aria-expanded="false">Pourquoi se faire accompagner en SEO ?<span class="chev"><svg viewbox="0 0 24 24"><path d="M6 9l6 6 6-6"/></svg></span></button></h3>
<div class="faq-a"><p>Parce que le SEO demande une stratégie, de la méthode et de la régularité. Seul, on avance sans priorités. Et on abandonne souvent avant les résultats. Un consultant vous fait gagner du temps, évite les erreurs coûteuses et transforme le SEO en canal de clients.</p></div>
</div>
<div class="faq-item">
<h3 class="faq-h"><button class="faq-q" aria-expanded="false">Combien coûte un accompagnement SEO ?<span class="chev"><svg viewbox="0 0 24 24"><path d="M6 9l6 6 6-6"/></svg></span></button></h3>
<div class="faq-a"><p>Pour une PME, un accompagnement SEO mensuel va de 1 000 à 5 000 € par mois. Le budget médian du marché tourne autour de 980 € HT. Un audit ponctuel, lui, coûte de 800 à 5 000 € selon la taille du site. Je détaille toutes ces fourchettes dans mon guide sur le <a href="https://www.vincenthego.com/blog/prix-seo/">prix du SEO</a>. De mon côté, le tarif est sur-mesure. On le définit ensemble pendant le <a href="#diagnostic">diagnostic offert</a>.</p></div>
</div>
<div class="faq-item">
<h3 class="faq-h"><button class="faq-q" aria-expanded="false">Combien coûte une agence SEO ?<span class="chev"><svg viewbox="0 0 24 24"><path d="M6 9l6 6 6-6"/></svg></span></button></h3>
<div class="faq-a"><p>Une agence SEO facture en général de 1 000 à 5 000 € par mois pour une PME. Avec un consultant indépendant, vous payez l'expertise, pas la structure. Le budget est donc sur-mesure, défini pendant le diagnostic offert.</p></div>
</div>
<div class="faq-item">
<h3 class="faq-h"><button class="faq-q" aria-expanded="false">En combien de temps voit-on les résultats ?<span class="chev"><svg viewbox="0 0 24 24"><path d="M6 9l6 6 6-6"/></svg></span></button></h3>
<div class="faq-a"><p>Les premiers gains (corrections techniques, pages qui remontent) arrivent souvent en 1 à 3 mois. Le SEO est un canal de fond : c'est sur 6 à 12 mois qu'un accompagnement construit une croissance durable du trafic et des clients, sans dépendre de la publicité.</p></div>
</div>
<div class="faq-item">
<h3 class="faq-h"><button class="faq-q" aria-expanded="false">L'accompagnement SEO est-il rentable ?<span class="chev"><svg viewbox="0 0 24 24"><path d="M6 9l6 6 6-6"/></svg></span></button></h3>
<div class="faq-a"><p>Oui, quand il est bien piloté. Contrairement à la publicité (Google Ads), le trafic SEO ne s'arrête pas quand vous coupez le budget : c'est un actif qui compose dans le temps. Un client comme Waalaxy est passé de 300 à 8 200 visiteurs par jour en 19 mois, faisant du SEO son premier canal d'acquisition.</p></div>
</div>
<div class="faq-item">
<h3 class="faq-h"><button class="faq-q" aria-expanded="false">Consultant ou agence : quelle différence ?<span class="chev"><svg viewbox="0 0 24 24"><path d="M6 9l6 6 6-6"/></svg></span></button></h3>
<div class="faq-a"><p>Beaucoup d'agences SEO facturent des experts seniors mais délèguent le travail à des juniors. Avec moi, vous travaillez en direct avec l'expert : un seul interlocuteur, +1000 clients accompagnés depuis 2016 et une méthode éprouvée, la <a href="https://www.vincenthego.com/blueprint-seo-saas/">Blueprint SEO</a>. C'est plus personnel, plus réactif et plus stratégique qu'une agence SEO classique.</p></div>
</div>
<div class="faq-item">
<h3 class="faq-h"><button class="faq-q" aria-expanded="false">Comment choisir une agence ou un consultant SEO ?<span class="chev"><svg viewbox="0 0 24 24"><path d="M6 9l6 6 6-6"/></svg></span></button></h3>
<div class="faq-a"><p>Regardez les résultats réels et vérifiables : études de cas, avis clients. Vérifiez la transparence de la méthode et qui exécute vraiment le travail. Comparez aussi la spécialisation par secteur. Et fuyez les « TOP 1 garanti » des agences web généralistes. Un bon prestataire relie chaque action à vos objectifs business.</p></div>
</div>
<div class="faq-item">
<h3 class="faq-h"><button class="faq-q" aria-expanded="false">Quelles sont les missions d'une agence SEO ?<span class="chev"><svg viewbox="0 0 24 24"><path d="M6 9l6 6 6-6"/></svg></span></button></h3>
<div class="faq-a"><p>Les principales missions d'une agence ou d'un consultant SEO : audit SEO, recherche de mots-clés, optimisation technique, création de contenu, netlinking, puis suivi des positions et du chiffre d'affaires généré. L'objectif est de rendre votre site visible, mieux référencé, et d'aider à générer plus de clients.</p></div>
</div>
<div class="faq-item">
<h3 class="faq-h"><button class="faq-q" aria-expanded="false">Peut-on avoir un accompagnement SEO en freelance ?<span class="chev"><svg viewbox="0 0 24 24"><path d="M6 9l6 6 6-6"/></svg></span></button></h3>
<div class="faq-a"><p>Oui. En tant que consultant SEO indépendant (freelance), vous travaillez directement avec moi, sans intermédiaire d'agence web. C'est un accompagnement personnalisé, adapté à votre secteur et à vos besoins spécifiques.</p></div>
</div>
<div class="faq-item">
<h3 class="faq-h"><button class="faq-q" aria-expanded="false">L'accompagnement SEO est-il mensuel ?<span class="chev"><svg viewbox="0 0 24 24"><path d="M6 9l6 6 6-6"/></svg></span></button></h3>
<div class="faq-a"><p>Oui, le plus souvent l'accompagnement SEO est mensuel : un forfait par mois avec un volume de travail défini (contenu, technique, liens entrants, suivi). C'est le format qui permet une progression régulière du positionnement dans les résultats de recherche.</p></div>
</div>
<div class="faq-item">
<h3 class="faq-h"><button class="faq-q" aria-expanded="false">À quoi sert un accompagnement SEO ?<span class="chev"><svg viewbox="0 0 24 24"><path d="M6 9l6 6 6-6"/></svg></span></button></h3>
<div class="faq-a"><p>Grâce à l'optimisation SEO de vos pages, votre site internet devient visible sur la première page du moteur de recherche Google. Il génère du trafic qualifié vers votre site, puis le convertit en clients. Par exemple : passer de la page 3 à la première page sur vos mots-clés stratégiques, gagner en notoriété et bâtir un canal d'acquisition durable.</p></div>
</div>
<div class="faq-item">
<h3 class="faq-h"><button class="faq-q" aria-expanded="false">Intervenez-vous à Paris, Lyon, Lille et partout en France ?<span class="chev"><svg viewbox="0 0 24 24"><path d="M6 9l6 6 6-6"/></svg></span></button></h3>
<div class="faq-a"><p>Oui. L'accompagnement SEO se fait à distance, en visioconférence, partout en France : <a href="https://www.vincenthego.com/consultant-seo-paris/">Paris</a>, <a href="https://www.vincenthego.com/consultant-seo-lyon/">Lyon</a>, <a href="https://www.vincenthego.com/consultant-seo-lille/">Lille</a>, <a href="https://www.vincenthego.com/consultant-seo-marseille/">Marseille</a>, <a href="https://www.vincenthego.com/">Montpellier</a> et ailleurs. Le suivi à distance est aussi efficace qu'en présentiel, avec des points réguliers.</p></div>
</div>
<div class="faq-item">
<h3 class="faq-h"><button class="faq-q" aria-expanded="false">L'accompagnement couvre-t-il les IA (ChatGPT, Perplexity) ?<span class="chev"><svg viewbox="0 0 24 24"><path d="M6 9l6 6 6-6"/></svg></span></button></h3>
<div class="faq-a"><p>Oui. En plus de Google, j'optimise votre visibilité dans les moteurs de réponse IA (AI Overviews, ChatGPT, Perplexity). C'est ce qu'on appelle le <a href="https://www.vincenthego.com/agence-geo/">GEO</a>. Vos contenus sont structurés pour être cités par ces nouvelles interfaces.</p></div>
</div>
<div class="faq-item">
<h3 class="faq-h"><button class="faq-q" aria-expanded="false">Faut-il un engagement de longue durée ?<span class="chev"><svg viewbox="0 0 24 24"><path d="M6 9l6 6 6-6"/></svg></span></button></h3>
<div class="faq-a"><p>Le SEO demande de la régularité pour porter ses fruits, donc l'accompagnement s'inscrit dans la durée. Mais il n'y a pas de contrat piège : la relation continue parce qu'elle produit des résultats, pas parce que vous êtes bloqué.</p></div>
</div>
<div class="faq-item">
<h3 class="faq-h"><button class="faq-q" aria-expanded="false">Accompagnement SEO ou audit ponctuel : que choisir ?<span class="chev"><svg viewbox="0 0 24 24"><path d="M6 9l6 6 6-6"/></svg></span></button></h3>
<div class="faq-a"><p>Un audit est une photo à un instant T : utile pour savoir où vous en êtes. L'accompagnement va plus loin, il exécute et ajuste la stratégie dans la durée. Pour des résultats durables, l'accompagnement est le format adapté ; l'audit en est souvent la première étape.</p></div>
</div>
<div class="faq-item">
<h3 class="faq-h"><button class="faq-q" aria-expanded="false">Mon site est récent et n'a pas de trafic, est-ce utile ?<span class="chev"><svg viewbox="0 0 24 24"><path d="M6 9l6 6 6-6"/></svg></span></button></h3>
<div class="faq-a"><p>Oui, et c'est même le meilleur moment. Partir sur des bases SEO saines dès le départ (structure, mots-clés, contenu, technique) évite les erreurs coûteuses et fait gagner des mois. Le diagnostic révèle vos leviers prioritaires.</p></div>
</div>
</div>
</div>
</section>
<style id="vh-related">
.related{padding:46px 0 8px}
.related .rel-head{text-align:center;margin-bottom:24px}
.related .rel-kick{display:inline-block;font-size:.76rem;font-weight:800;letter-spacing:1.6px;text-transform:uppercase;color:var(--orange-ink);margin-bottom:8px}
.related .rel-head h2{font-size:clamp(1.4rem,2.4vw,1.85rem);color:var(--marine);letter-spacing:-.5px;line-height:1.15}
.rel-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;max-width:960px;margin:0 auto}
.rel-card{display:flex;flex-direction:column;background:var(--white,#fff);border:1px solid var(--line);border-radius:18px;padding:22px 22px 20px;text-decoration:none;color:inherit;box-shadow:var(--shadow-sm);transition:transform .25s var(--ease,ease),box-shadow .25s,border-color .25s}
.rel-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-md);border-color:var(--orange)}
.rel-card .rc-t{font-weight:800;color:var(--marine);font-size:1.02rem;margin-bottom:6px;letter-spacing:-.2px}
.rel-card .rc-d{color:var(--muted);font-size:.9rem;line-height:1.5;flex:1}
.rel-card .rc-more{margin-top:13px;color:var(--orange-ink);font-weight:700;font-size:.85rem}
@media(max-width:780px){.rel-grid{grid-template-columns:1fr;max-width:440px}}
</style>
<section class="sec related">
<div class="wrap">
<div class="rel-head reveal">
<span class="rel-kick">Pour aller plus loin</span>
<h2>Prestations liées</h2>
</div>
<div class="rel-grid">
<a class="rel-card reveal" href="https://www.vincenthego.com/audit-seo/"><div class="rc-t">Audit SEO</div><div class="rc-d">Le diagnostic complet qui révèle vos freins et vos leviers.</div><span class="rc-more">Découvrir →</span></a>
<a class="rel-card reveal" href="https://www.vincenthego.com/agence-netlinking/"><div class="rc-t">Agence netlinking</div><div class="rc-d">Des backlinks de qualité pour renforcer votre autorité.</div><span class="rc-more">Découvrir →</span></a>
<a class="rel-card reveal" href="https://www.vincenthego.com/consultant-seo/"><div class="rc-t">Consultant SEO</div><div class="rc-d">Votre référencement piloté en direct, sans agence.</div><span class="rc-more">Découvrir →</span></a>
</div>
</div>
</section>
<!-- SOURCES & RÉFÉRENCES (E-E-A-T) -->
<section class="sec-sources">
<div class="wrap">
<p class="sources-title">Sources & références</p>
<ul>
<li><a href="https://developers.google.com/search/docs/fundamentals/seo-starter-guide?hl=fr" target="_blank" rel="noopener"><img class="src-fav" src="/assets/favicons/google.png" alt="Logo Google" width="32" height="32" loading="lazy" decoding="async">Google Search Central | Guide de démarrage SEO</a></li>
<li><a href="https://www.brightedge.com/" target="_blank" rel="noopener"><img class="src-fav" src="/assets/favicons/brightedge.png" alt="Logo BrightEdge" width="32" height="32" loading="lazy" decoding="async">BrightEdge | Recherche sur le trafic organique</a></li>
<li><a href="https://search.google.com/search-console/about?hl=fr" target="_blank" rel="noopener"><img class="src-fav" src="/assets/favicons/google-search.png" alt="Logo Google Search Console" width="32" height="32" loading="lazy" decoding="async">Google Search Console | Suivi des performances</a></li>
<li><a href="https://fr.wikipedia.org/wiki/Optimisation_pour_les_moteurs_de_recherche" target="_blank" rel="noopener"><img class="src-fav" src="/assets/favicons/wikipedia.png" alt="Logo Wikipédia" width="32" height="32" loading="lazy" decoding="async">Wikipédia | Optimisation pour les moteurs de recherche (SEO)</a></li>
</ul>
<div class="src-author"><div class="foot-author">
<img width="160" height="160" class="foot-photo" src="/assets/brand/vincent-rond.webp" alt="Vincent Hégo, consultant SEO" loading="lazy"/>
<div>
<div class="foot-name">Vincent Hégo</div>
<div class="foot-role">Consultant SEO | Expert SEO depuis 2016 | CEO VH DIGITAL CORP</div>
<p class="foot-bio">Depuis 2016, j'accompagne des entreprises et des SaaS comme Waalaxy, MarkCopy, Bricks ou Bosch. Objectif : faire du SEO le pilier de leur marketing digital et leur canal d'acquisition le plus rentable. Plus de 1000 clients accompagnés, +300 000 visiteurs/mois générés.</p>
</div>
</div></div>
</div>
</section>
<style id="vh-foot-social">
.foot-social{margin-top:18px;display:flex;flex-direction:column;gap:8px;max-width:250px}
.foot-social a{color:#fff;display:flex;align-items:center;gap:10px;font-weight:700;font-size:.92rem;padding:11px 15px;border-radius:11px;transition:transform .2s var(--ease),filter .2s var(--ease)}
.foot-social a svg:first-child{width:20px;height:20px;fill:#fff;flex:0 0 auto}
.foot-social a .arr{margin-left:auto;width:15px;height:15px;stroke:#fff;fill:none;flex:0 0 auto;transition:transform .2s var(--ease)}
.fs-wa{background:#075e54}
.fs-li{background:#0a66c2}
.fs-yt{background:#cc0000}
.foot-social a:hover{transform:translateY(-2px);filter:brightness(1.05)}
.fs-wa:hover .arr{transform:translateX(3px)}
</style>
</main>
<!-- WIDGET ETRE RAPPELE (VH DIGITAL CORP) -->
<link rel="stylesheet" href="/assets/vh-rappel.css?v=2">
<style id="vhcb-style">
.vhcb-sec{padding:44px 0;font-family:'Gilroy','Poppins',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif}
/* Harmonise l'espace au-dessus de l'encart quand il suit le bloc bio "Sources & Références"
(qui a 62px de padding-bas) : on remonte l'encart pour equilibrer avec l'espace du dessous. */
body:has(.sec-sources) .vhcb-sec{margin-top:-54px}
@media(max-width:720px){body:has(.sec-sources) .vhcb-sec{margin-top:-58px}}
.vhcb-wrap{width:100%;max-width:1080px;margin:0 auto;padding:0 24px;box-sizing:border-box}
.vhcb-card{position:relative;max-width:900px;margin:0 auto;background:radial-gradient(120% 140% at 0% 0%,#fff 0%,#fbfaff 60%,#f7f6fd 100%);border:1px solid #ece9f6;border-radius:24px;box-shadow:0 1px 2px rgba(20,16,60,.04),0 26px 60px -26px rgba(20,16,60,.30);padding:30px 34px;display:flex;align-items:center;gap:36px;flex-wrap:wrap;box-sizing:border-box}
.vhcb-card *{box-sizing:border-box}
.vhcb-card::before{content:"";position:absolute;inset:0;border-radius:24px;padding:1px;background:linear-gradient(130deg,rgba(240,88,32,.35),rgba(240,88,32,0) 42%);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none}
.vhcb-left{position:relative;display:flex;align-items:flex-start;gap:18px;flex:1 1 330px;min-width:0}
.vhcb-ic{flex:0 0 auto;width:56px;height:56px;border-radius:16px;display:grid;place-items:center;background:linear-gradient(135deg,#f05820,#ff7c4d);box-shadow:0 12px 26px -8px rgba(240,88,32,.55),inset 0 1px 0 rgba(255,255,255,.35)}
.vhcb-ic svg{width:27px;height:27px;stroke:#fff;fill:none}
.vhcb-txt{min-width:0}
.vhcb-txt h3{font-size:1.28rem;color:#1c1962;font-weight:800;letter-spacing:-.4px;line-height:1.18;margin:2px 0 0;text-wrap:balance}
.vhcb-txt p{color:#565372;font-size:.96rem;margin:7px 0 0;line-height:1.5;max-width:42ch}
.vhcb-meta{margin:14px 0 0;font-size:.82rem;color:#78768c;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.vhcb-meta .vhcb-sep{width:4px;height:4px;border-radius:50%;background:#cfccdd}
.vhcb-meta a{color:#c2410c;font-weight:700;text-decoration:none;border-bottom:1px solid rgba(194,65,12,.28)}
.vhcb-meta a:hover{border-bottom-color:#c2410c}
.vhcb-form{position:relative;flex:1 1 300px;margin:0;min-width:0}
.vhcb-hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.vhcb-input{width:100%;padding:15px 17px;border:1.5px solid #e2e0ee;border-radius:14px;font-family:inherit;font-size:1rem;color:#15131f;background:#fff;transition:border-color .2s,box-shadow .2s}
.vhcb-input::placeholder{color:#8a879c}
.vhcb-input:focus{outline:none;border-color:#f05820;box-shadow:0 0 0 4px rgba(240,88,32,.13)}
.vhcb-btn{width:100%;margin-top:11px;display:inline-flex;align-items:center;justify-content:center;gap:9px;padding:15px 22px;border:none;border-radius:14px;cursor:pointer;font-family:inherit;font-weight:800;font-size:1.02rem;color:#fff;background:linear-gradient(135deg,#f05820,#ff7c4d);box-shadow:0 14px 30px -10px rgba(240,88,32,.6);transition:transform .18s cubic-bezier(.22,1,.36,1),box-shadow .25s,filter .2s;position:relative;overflow:hidden}
.vhcb-btn::after{content:"";position:absolute;top:-40%;left:-70%;width:40%;height:200%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.5),transparent);transform:skewX(-20deg);transition:left .6s cubic-bezier(.22,1,.36,1)}
.vhcb-btn:hover{transform:translateY(-2px);box-shadow:0 20px 40px -10px rgba(240,88,32,.7)}
.vhcb-btn:hover::after{left:130%}
.vhcb-btn:active{transform:translateY(0)}
.vhcb-btn:disabled{opacity:.85;cursor:default;transform:none}
.vhcb-btn svg{width:18px;height:18px;transition:transform .25s}
.vhcb-btn:hover svg{transform:translateX(3px)}
@media (prefers-reduced-motion:reduce){.vhcb-btn::after{display:none}.vhcb-btn,.vhcb-btn svg,.vhcb-input{transition:none}}
@media(max-width:720px){.vhcb-card{gap:22px;padding:26px 24px}.vhcb-left,.vhcb-form{flex:1 1 100%}.vhcb-txt p{max-width:none}}
@media(max-width:440px){.vhcb-card{padding:24px 20px;gap:18px}.vhcb-left{gap:14px}.vhcb-ic{width:48px;height:48px;border-radius:14px}.vhcb-ic svg{width:23px;height:23px}.vhcb-txt h3{font-size:1.14rem}}
/* Portrait + pastille téléphone à la place du pictogramme : on met un
visage, pas une icône de plus. Ces règles closent le bloc pour passer
devant `.vhcb-ic` et sa media query. */
.vhcb-ic{position:relative;width:56px;height:56px;border-radius:50%;background:none;box-shadow:none;display:block;overflow:visible}
.vhcb-face{width:100%;height:100%;border-radius:50%;object-fit:cover;display:block;border:2px solid #fff;box-shadow:0 10px 22px -8px rgba(28,25,98,.5)}
.vhcb-tel{position:absolute;right:-4px;bottom:-4px;width:25px;height:25px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(135deg,#f05820,#ff7c4d);border:2px solid #fff;box-shadow:0 5px 12px -4px rgba(240,88,32,.75)}
.vhcb-ic .vhcb-tel svg{width:12px;height:12px;stroke:#fff;fill:none}
@media (max-width:440px){.vhcb-ic{width:52px;height:52px;border-radius:50%}
.vhcb-tel{width:23px;height:23px}.vhcb-ic .vhcb-tel svg{width:11px;height:11px}}
</style>
<section class="vhcb-sec" id="rappel">
<div class="vhcb-wrap">
<div class="vhcb-card">
<div class="vhcb-left">
<div class="vhcb-ic"><img class="vhcb-face" src="/assets/brand/vincent-rond.webp" alt="Vincent Hégo, consultant SEO" width="56" height="56" loading="lazy" decoding="async"><span class="vhcb-tel" aria-hidden="true"><svg viewbox="0 0 24 24" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 16.9v3a2 2 0 0 1-2.2 2 19.8 19.8 0 0 1-8.6-3.1 19.5 19.5 0 0 1-6-6 19.8 19.8 0 0 1-3.1-8.7A2 2 0 0 1 4.1 2h3a2 2 0 0 1 2 1.7c.1.9.3 1.8.6 2.7a2 2 0 0 1-.5 2.1L8 9.6a16 16 0 0 0 6 6l1.1-1.1a2 2 0 0 1 2.1-.5c.9.3 1.8.5 2.7.6a2 2 0 0 1 1.7 2z"/></svg></span></div>
<div class="vhcb-txt">
<h3>Vous préférez qu'on vous rappelle ?</h3>
<p>Laissez votre numéro : je vous rappelle personnellement pour en discuter de vive voix.</p>
<div class="vhcb-meta"><span>🔒 Zéro spam</span><span class="vhcb-sep" aria-hidden="true"></span><span>Vous préférez écrire ? <a href="https://www.vincenthego.com/contact/">Le formulaire de contact →</a></span></div>
</div>
</div>
<form class="vhcb-form" id="vhcb-form" data-vhr novalidate>
<div class="vhcb-hp" aria-hidden="true"><label>Ne pas remplir<input type="text" name="_gotcha" tabindex="-1" autocomplete="off"></label></div>
<div data-vhr-fields>
<input class="vhcb-input" id="vhcb-tel" data-vhr-phone name="tel" type="tel" inputmode="tel" autocomplete="tel" placeholder="Votre numéro de téléphone" aria-label="Votre numéro de téléphone">
<div class="vhr-name" data-vhr-name><input type="text" name="prenom" autocomplete="given-name" placeholder="Votre prénom" aria-label="Votre prénom"></div>
<button type="submit" class="vhcb-btn" id="vhcb-submit">Être rappelé
<svg viewbox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
</button>
</div>
<div class="vhcb-status" data-vhr-status role="alert" aria-live="polite"></div>
</form>
</div>
</div>
</section>
<script src="/assets/vh-rappel.js?v=4" defer></script>
<!-- /WIDGET ETRE RAPPELE -->
<footer>
<div class="wrap foot-grid">
<nav class="foot-col" aria-label="Prestations SEO">
<h3>Prestations</h3>
<a href="https://www.vincenthego.com/accompagnement-seo/" aria-current="page">Accompagnement SEO</a>
<a href="https://www.vincenthego.com/consultant-seo-france/" class="foot-line">Consultant SEO France</a> <div class="foot-cities"><a href="https://www.vincenthego.com/">Montpellier</a>
<a href="https://www.vincenthego.com/consultant-seo-lyon/">Lyon</a>
<a href="https://www.vincenthego.com/consultant-seo-paris/">Paris</a>
<a href="https://www.vincenthego.com/consultant-seo-toulouse/">Toulouse</a>
<a href="https://www.vincenthego.com/consultant-seo-nantes/">Nantes</a>
<a href="https://www.vincenthego.com/consultant-seo-bordeaux/">Bordeaux</a>
<a href="https://www.vincenthego.com/consultant-seo-marseille/">Marseille</a>
<a href="https://www.vincenthego.com/consultant-seo-lille/">Lille</a>
<a href="https://www.vincenthego.com/consultant-seo-rennes/">Rennes</a>
<a href="https://www.vincenthego.com/consultant-seo-nice/">Nice</a><a href="https://www.vincenthego.com/consultant-seo-rouen/">Rouen</a><a href="https://www.vincenthego.com/consultant-seo-strasbourg/">Strasbourg</a><a href="https://www.vincenthego.com/consultant-seo-angers/">Angers</a><a href="https://www.vincenthego.com/consultant-seo-caen/">Caen</a><a href="https://www.vincenthego.com/consultant-seo-tours/">Tours</a><a href="https://www.vincenthego.com/consultant-seo-grenoble/">Grenoble</a><a href="https://www.vincenthego.com/consultant-seo-annecy/">Annecy</a><a href="https://www.vincenthego.com/consultant-seo-toulon/">Toulon</a><a href="https://www.vincenthego.com/consultant-seo-nancy/">Nancy</a><a href="https://www.vincenthego.com/consultant-seo-aix-en-provence/">Aix-en-Provence</a></div>
</nav>
<nav class="foot-col" aria-label="Services SEO">
<h3>Services</h3>
<a href="https://www.vincenthego.com/consultant-seo/">Consultant SEO</a>
<a href="https://www.vincenthego.com/agence-seo/">Agence SEO</a>
<a href="https://www.vincenthego.com/audit-seo/">Audit SEO</a>
<a href="https://www.vincenthego.com/agence-netlinking/">Agence netlinking</a>
<a href="https://www.vincenthego.com/seo-local/">SEO local</a>
<a href="https://www.vincenthego.com/agence-geo/">Agence GEO</a>
<a href="https://www.vincenthego.com/creation-site-internet/">Création de site internet</a>
<a href="https://www.vincenthego.com/refonte-site-internet/">Refonte de site internet</a>
<a href="https://www.vincenthego.com/freelance-wordpress/">Freelance WordPress</a>
<a href="https://www.vincenthego.com/coaching-seo/">Coaching SEO</a>
</nav>
<nav class="foot-col" aria-label="Découvrir">
<h3>Découvrir</h3>
<a href="https://www.vincenthego.com/blog/">Blog SEO</a>
<a href="https://www.vincenthego.com/mon-histoire/">Mon histoire</a>
<a href="https://www.vincenthego.com/avis/">Avis clients</a>
<a href="https://www.vincenthego.com/rankflow/">RankFlow SEO (extension)</a>
<a href="https://www.vincenthego.com/rankflow/affiliation/">Programme d'affiliation</a>
<a href="https://www.vincenthego.com/rankflow/roadmap/">Roadmap RankFlow</a>
<a href="https://www.vincenthego.com/blueprint-seo-saas/">Ma méthode Blueprint SEO</a>
<a href="https://www.vincenthego.com/outils-seo/">Outils SEO gratuits</a>
<a href="https://formation.vincenthego.com/" target="_blank" rel="noopener">La formation SEO</a>
<a href="https://www.vincenthego.com/les-mentions-legales/">Mentions légales</a>
<a href="https://www.vincenthego.com/plan-du-site/">Plan du site</a>
<a href="https://www.vincenthego.com/politique-de-confidentialite/">Politique de confidentialité</a>
</nav>
<div class="foot-col">
<h3>Me contacter</h3>
<a href="https://www.vincenthego.com/contact/">Formulaire de contact</a>
<a href="mailto:bonjour@vincenthego.com">bonjour@vincenthego.com</a>
<a href="https://www.vincenthego.com/appel/">Lancer mon diagnostic SEO</a>
<div class="foot-social">
<a class="fs-wa" href="https://wa.me/33756856634" target="_blank" rel="noopener" aria-label="WhatsApp"><svg viewbox="0 0 24 24" aria-hidden="true"><path d="M17.5 14.4c-.3-.15-1.7-.85-2-.95-.25-.1-.45-.15-.6.15-.2.3-.7.95-.85 1.1-.15.2-.3.2-.6.05-.3-.15-1.25-.45-2.4-1.5-.9-.8-1.5-1.75-1.65-2.05-.15-.3 0-.45.15-.6.15-.15.3-.35.45-.55.15-.2.2-.3.3-.5.1-.2.05-.4-.05-.55-.1-.15-.6-1.45-.85-2-.2-.5-.4-.45-.6-.45h-.5c-.2 0-.5.05-.75.35-.25.3-1 .95-1 2.35s1.05 2.7 1.2 2.9c.15.2 2.05 3.15 5 4.4.7.3 1.25.5 1.65.65.7.2 1.35.2 1.85.1.55-.05 1.7-.7 1.95-1.35.25-.65.25-1.2.15-1.35-.1-.1-.3-.15-.6-.3zM12 2a10 10 0 0 0-8.5 15.3L2 22l4.8-1.5A10 10 0 1 0 12 2zm0 18.2a8.2 8.2 0 0 1-4.2-1.15l-.3-.18-3 .8.8-2.9-.2-.3A8.2 8.2 0 1 1 12 20.2z"/></svg>WhatsApp<svg class="arr" viewbox="0 0 24 24" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg></a>
<a class="fs-li" href="https://www.linkedin.com/in/vincent-hego/" target="_blank" rel="noopener" aria-label="LinkedIn"><svg viewbox="0 0 24 24" aria-hidden="true"><path d="M4.98 3.5C4.98 4.88 3.87 6 2.5 6S0 4.88 0 3.5 1.12 1 2.5 1s2.48 1.12 2.48 2.5zM.5 8h4V24h-4V8zm7.5 0h3.8v2.2h.05c.53-1 1.83-2.2 3.77-2.2 4.03 0 4.78 2.65 4.78 6.1V24h-4v-7.1c0-1.7-.03-3.9-2.37-3.9-2.38 0-2.74 1.85-2.74 3.77V24h-4V8z"/></svg>LinkedIn</a>
<a class="fs-yt" href="https://www.youtube.com/@vincenthego" target="_blank" rel="noopener" aria-label="YouTube"><svg viewbox="0 0 24 24" aria-hidden="true"><path d="M23.5 6.2a3 3 0 0 0-2.1-2.1C19.5 3.5 12 3.5 12 3.5s-7.5 0-9.4.6A3 3 0 0 0 .5 6.2 31 31 0 0 0 0 12a31 31 0 0 0 .5 5.8 3 3 0 0 0 2.1 2.1c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2.1A31 31 0 0 0 24 12a31 31 0 0 0-.5-5.8zM9.6 15.6V8.4l6.2 3.6-6.2 3.6z"/></svg>YouTube</a>
</div>
</div>
</div>
<div class="wrap foot-bottom">
<img width="300" height="94" class="foot-logo" src="/assets/brand/logo-vh-couleur.webp" alt="Vincent Hégo" loading="lazy"/>
© <span id="yr"></span> VH DIGITAL CORP | Vincent Hégo, consultant SEO à Montpellier. Accompagnement SEO sur-mesure pour toute la France. <span style="opacity:.85">Page mise à jour le 1<sup>er</sup> juillet 2026.</span>
</div>
</footer>
<div class="sticky-cta"><a class="btn btn-primary" href="#diagnostic" data-rfd-cta>Lancer mon diagnostic SEO</a></div>
<!-- Widget diagnostic : styles scopés #rfd-root -->
<style>
#rfd-root{--o:#f05820;--o2:#ff7a4a;--m:#1c1962;--line:#e9e7f0;--muted:#5b5870;font-family:'Gilroy','Poppins',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;color:var(--m);max-width:760px;margin:0 auto;width:100%;line-height:1.5;box-sizing:border-box;text-align:center;background:transparent!important}
#rfd-root *{box-sizing:border-box!important;font-family:inherit;text-indent:0}
#rfd-step-form,#rfd-step-scan,#rfd-step-quiz,#rfd-step-done,#rfd-step-findings,#rfd-step-email{scroll-margin-top:96px}
@media(max-width:720px){#rfd-step-form,#rfd-step-scan,#rfd-step-quiz,#rfd-step-done,#rfd-step-findings,#rfd-step-email{scroll-margin-top:76px}}
#rfd-root .rfd-title,#rfd-root .rfd-sub,#rfd-root .rfd-trust,#rfd-root .rfd-scanhost,#rfd-root .rfd-progress-label,#rfd-root .rfd-checklist li,#rfd-root .rfd-done-badge,#rfd-root .rfd-btn{text-transform:none!important;letter-spacing:normal}
#rfd-root .rfd-card{background:#fff!important;border:1px solid #e2e0ee!important;border-radius:22px!important;padding:38px 34px!important;box-shadow:0 4px 14px rgba(20,16,60,.06),0 24px 60px rgba(20,16,60,.10)!important;text-align:center!important;width:100%!important;margin:0!important;overflow:hidden!important}
#rfd-root .rfd-hidden{display:none!important}
#rfd-root .rfd-eyebrow{display:inline-block;background:rgba(240,88,32,.1);color:var(--o);font-weight:700;font-size:.76rem;letter-spacing:2px!important;text-transform:uppercase!important;padding:7px 15px;border-radius:999px;margin:0 0 16px}
#rfd-root .rfd-title{font-size:clamp(1.5rem,3vw,1.95rem);line-height:1.15;margin:0 0 10px;color:var(--m)!important;font-weight:800;letter-spacing:-.4px!important}
#rfd-root .rfd-sub{font-size:1.02rem;color:var(--muted)!important;margin:0 auto 24px;max-width:480px;line-height:1.55}
#rfd-root .rfd-fields{display:flex!important;flex-direction:column;gap:12px;margin:0 0 14px;padding:0}
#rfd-root .rfd-fields input{width:100%!important;padding:16px 17px!important;border:1.5px solid #d9d9e6!important;border-radius:14px!important;font-size:1rem!important;font-family:inherit!important;color:var(--m)!important;background:#fff!important;-webkit-appearance:none;appearance:none;box-shadow:none;transition:border-color .18s,box-shadow .18s;animation:rfd-fieldpulse 2.8s ease-in-out infinite}
#rfd-root .rfd-fields input::placeholder{color:#a7a7bd;opacity:1}
#rfd-root .rfd-fields input:hover{border-color:var(--o)!important}
#rfd-root .rfd-fields input:focus{outline:none!important;border-color:var(--o)!important;box-shadow:0 0 0 4px rgba(240,88,32,.16)!important;animation:none}
#rfd-root .rfd-btn{position:relative;display:block!important;width:100%!important;background:linear-gradient(135deg,var(--o),var(--o2))!important;color:#fff!important;border:none!important;border-radius:14px!important;padding:17px!important;margin:0!important;font-size:1.06rem!important;font-weight:700!important;font-family:inherit!important;line-height:1.2!important;text-shadow:none!important;-webkit-appearance:none;appearance:none;cursor:pointer;white-space:normal;box-shadow:0 10px 26px rgba(240,88,32,.30)!important;transition:transform .12s,filter .15s,box-shadow .3s}
#rfd-root .rfd-btn:hover{filter:brightness(.97);transform:translateY(-2px);box-shadow:0 16px 36px rgba(240,88,32,.40)!important}
#rfd-root .rfd-btn:disabled{opacity:.85;cursor:default;transform:none}
#rfd-root .rfd-btn-txt{color:#fff!important}
#rfd-root .rfd-btn-spin{display:none;width:19px;height:19px;border:2.5px solid rgba(255,255,255,.45);border-top-color:#fff;border-radius:50%;animation:rfd-rot .7s linear infinite;vertical-align:middle}
#rfd-root .rfd-btn.is-loading .rfd-btn-txt{display:none}
#rfd-root .rfd-btn.is-loading .rfd-btn-spin{display:inline-block}
#rfd-root .rfd-err{color:#c0392b;font-size:.88rem;margin:10px 0 0;min-height:16px;line-height:1.4}
#rfd-root .rfd-trust{font-size:.86rem;color:#8a8aa0;margin:15px 0 0;white-space:nowrap}
#rfd-root .rfd-scanhost{display:inline-flex!important;align-items:center;gap:8px;max-width:100%;width:auto!important;background:rgba(28,25,98,.06);color:var(--m);font-weight:600;font-size:.9rem;padding:8px 15px;border-radius:999px;margin:2px auto 22px;white-space:nowrap;overflow:hidden}
#rfd-root .rfd-scanhost .rfd-dot{width:8px;height:8px;border-radius:50%;background:var(--o);flex:0 0 8px!important;animation:rfd-ping 1.4s ease-in-out infinite}
#rfd-root .rfd-scanhost .rfd-hosttxt{display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
#rfd-root .rfd-scanhost b{font-weight:800}
#rfd-root .rfd-progresshead{display:flex!important;align-items:baseline;justify-content:space-between;gap:12px;margin:0 0 9px}
#rfd-root .rfd-progress-label{font-size:.9rem;color:var(--muted);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:left}
#rfd-root .rfd-progress-pct{font-size:1.35rem;font-weight:900;color:var(--o);letter-spacing:-.5px;flex:0 0 auto}
#rfd-root .rfd-progresswrap{position:relative;height:13px;background:#eef0f6;border-radius:999px;overflow:hidden;margin:0 0 22px;width:100%}
#rfd-root .rfd-progress{position:relative;height:100%;width:0;background:linear-gradient(90deg,var(--o),var(--o2));border-radius:999px}
#rfd-root .rfd-progress::after{content:"";position:absolute;inset:0;background:linear-gradient(100deg,transparent 20%,rgba(255,255,255,.5) 50%,transparent 80%);background-size:200% 100%;animation:rfd-sheen 1.3s linear infinite}
#rfd-root .rfd-checklist{list-style:none!important;margin:0!important;padding:0!important;text-align:left!important;width:100%!important}
#rfd-root .rfd-checklist li{display:flex!important;flex-direction:row!important;align-items:center!important;gap:13px!important;width:100%!important;padding:12px 4px!important;margin:0!important;border-bottom:1px solid var(--line)!important;font-size:1rem;color:#9a9ab0;list-style:none!important;float:none!important;position:static!important;transition:color .3s}
#rfd-root .rfd-checklist li::before,#rfd-root .rfd-checklist li::marker{content:""!important;display:none!important}
#rfd-root .rfd-checklist li:last-child{border-bottom:none!important}
#rfd-root .rfd-checklist li.active,#rfd-root .rfd-checklist li.done{color:var(--m)}
#rfd-root .rfd-lbl{flex:1 1 auto!important;min-width:0!important;width:auto!important;max-width:none!important;white-space:normal!important;word-break:normal!important;overflow-wrap:normal;text-align:left!important;display:block!important}
#rfd-root .rfd-ico{width:23px!important;height:23px!important;flex:0 0 23px!important;border-radius:50%;display:flex!important;align-items:center;justify-content:center;font-size:12px;font-weight:800;padding:0;margin:0}
#rfd-root .rfd-ico.wait{background:#f0f0f7;color:#c3c3d4}
#rfd-root .rfd-ico.spin{border:2.5px solid #ffe0d2;border-top-color:var(--o);animation:rfd-rot .7s linear infinite;background:transparent}
#rfd-root .rfd-ico.ok{background:#e6f7ec;color:#1a7a3d}
#rfd-root .rfd-qhead{display:flex;align-items:center;gap:12px;margin:0 0 22px}
#rfd-root .rfd-qback{width:36px;height:36px;flex:none;border:1.5px solid #e3e3ee;background:#fff;border-radius:50%;color:#1c1962;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;transition:border-color .18s,color .18s,opacity .2s}
#rfd-root .rfd-qback svg{width:20px;height:20px}
#rfd-root .rfd-qback:hover{border-color:var(--o);color:var(--o)}
#rfd-root .rfd-qback[disabled]{opacity:0;pointer-events:none}
#rfd-root .rfd-qbar{flex:1;height:6px;border-radius:99px;background:#ececf4;overflow:hidden}
#rfd-root .rfd-qbarfill{display:block;height:100%;width:20%;border-radius:99px;background:linear-gradient(90deg,var(--o),var(--o2));transition:width .45s cubic-bezier(.4,0,.2,1)}
#rfd-root .rfd-qcount{flex:none;font-size:13px;font-weight:700;color:#9a9ab0;font-variant-numeric:tabular-nums}
#rfd-root .rfd-qview{position:relative;min-height:206px}
#rfd-root .rfd-q{opacity:1}
#rfd-root .rfd-q.rfd-q-enter{opacity:0;transform:translateY(14px)}
#rfd-root .rfd-q:not(.rfd-q-enter):not(.rfd-q-leave){transition:opacity .34s ease,transform .34s cubic-bezier(.16,1,.3,1)}
#rfd-root .rfd-q.rfd-q-leave{opacity:0;transform:translateY(-10px);transition:opacity .18s ease,transform .18s ease}
#rfd-root .rfd-qtop{margin:0 0 26px}
#rfd-root .rfd-qbadge{display:inline-flex;align-items:center;gap:6px;background:#e6f7ec;color:#1a7a3d;font-size:12.5px;font-weight:800;padding:5px 12px;border-radius:99px;margin:0 0 15px}
#rfd-root .rfd-qlabel{font-size:1.3rem;font-weight:800;color:var(--m);line-height:1.3;margin:0;letter-spacing:-.01em;text-transform:none}
#rfd-root .rfd-qhint{font-size:.96rem;color:#6b6b80;line-height:1.5;margin:9px 0 0}
#rfd-root .rfd-qview .rfd-fields{margin:0 0 14px}
#rfd-root textarea.rfd-qinput{width:100%;padding:15px 16px;border:1.5px solid #d9d9e6;border-radius:14px;font-size:1rem;font-family:inherit;color:var(--m);background:#fff;resize:vertical;min-height:96px;line-height:1.5;transition:border-color .18s,box-shadow .18s;-webkit-appearance:none;appearance:none}
#rfd-root textarea.rfd-qinput:focus{outline:none;border-color:var(--o);box-shadow:0 0 0 4px rgba(240,88,32,.16)}
#rfd-root textarea.rfd-qinput::placeholder{color:#a7a7bd;opacity:1}
#rfd-root .rfd-prefill-note{font-size:.85rem;color:var(--o);font-weight:700;margin:-4px 0 12px}
#rfd-root .rfd-sugg{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 16px}
#rfd-root .rfd-sugg-t{width:100%;font-size:.85rem;font-weight:700;color:var(--m);margin:0 0 3px}
#rfd-root .rfd-sugg-chip{border:1.5px solid #e4dcf1;background:#fff;color:var(--m);font-family:inherit;font-size:.88rem;font-weight:600;line-height:1.1;padding:9px 14px;border-radius:99px;cursor:pointer;min-height:38px;transition:border-color .16s,color .16s,background .16s,transform .16s;animation:rfdSuggPulse 2.4s ease-in-out infinite}
#rfd-root .rfd-sugg-chip:nth-of-type(2){animation-delay:.2s}
#rfd-root .rfd-sugg-chip:nth-of-type(3){animation-delay:.4s}
#rfd-root .rfd-sugg-chip:nth-of-type(4){animation-delay:.6s}
#rfd-root .rfd-sugg-chip:nth-of-type(5){animation-delay:.8s}
@keyframes rfdSuggPulse{0%,100%{box-shadow:0 0 0 0 rgba(240,88,32,0)}45%{box-shadow:0 0 0 5px rgba(240,88,32,.13);border-color:rgba(240,88,32,.55)}}
@media(prefers-reduced-motion:reduce){#rfd-root .rfd-sugg-chip{animation:none}}
/* Mobile : cible tactile a 44px (standard Apple/Material). A 38px, le pouce rate la pastille. */
@media(max-width:720px){#rfd-root .rfd-sugg-chip{min-height:44px;padding:11px 15px}}
#rfd-root .rfd-sugg-chip:hover{border-color:var(--o);color:var(--o);background:rgba(240,88,32,.07);animation:none;transform:translateY(-1px)}
/* Apercu du site scanne : prouve au visiteur que l'analyse porte VRAIMENT sur son site.
Chargee par SON navigateur (le quota Microlink est par IP) et seulement au lancement du
scan, donc zero impact sur le PageSpeed de la page. */
/* margin auto : sans lui, le max-width colle la carte a GAUCHE dans une carte centree. */
#rfd-root .rfd-shot{border:1.5px solid #e4dcf1;border-radius:12px;overflow:hidden;background:#fff;margin:0 auto 16px;max-width:420px}
#rfd-root .rfd-shot-bar{display:flex;align-items:center;gap:5px;padding:7px 11px;background:#f5f3fa;border-bottom:1.5px solid #e4dcf1}
#rfd-root .rfd-shot-bar i{width:8px;height:8px;border-radius:50%;background:#d8d0e6;flex:none}
#rfd-root .rfd-shot-url{margin-left:7px;font-size:.72rem;font-weight:600;color:var(--m);opacity:.75;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* aspect-ratio + width/height sur la balise image = zero CLS ; object-fit evite toute deformation */
#rfd-root .rfd-shot-view{position:relative;aspect-ratio:640/420;background:#f5f3fa;overflow:hidden}
#rfd-root .rfd-shot-view::after{content:"";position:absolute;inset:0;background:linear-gradient(100deg,transparent 20%,rgba(240,88,32,.10) 50%,transparent 80%);background-size:220% 100%;animation:rfdShotShim 1.25s ease-in-out infinite}
#rfd-root .rfd-shot.ready .rfd-shot-view::after{display:none}
#rfd-root .rfd-shot-view img{width:100%;height:100%;object-fit:cover;object-position:top center;display:block;opacity:0;transition:opacity .45s ease}
#rfd-root .rfd-shot.ready .rfd-shot-view img{opacity:1}
@keyframes rfdShotShim{0%{background-position:120% 0}100%{background-position:-120% 0}}
@media(prefers-reduced-motion:reduce){#rfd-root .rfd-shot-view::after{animation:none}}
#rfd-root .rfd-qerr{margin-top:10px}
@media(prefers-reduced-motion:reduce){#rfd-root .rfd-q,#rfd-root .rfd-q.rfd-q-enter,#rfd-root .rfd-q.rfd-q-leave{transition:none!important;transform:none!important;opacity:1!important}#rfd-root .rfd-qbarfill{transition:none}}
#rfd-root .rfd-done-badge{width:66px;height:66px;border-radius:50%;background:#e6f7ec;color:#1a7a3d;font-size:34px;font-weight:800;display:flex;align-items:center;justify-content:center;margin:0 auto 16px;animation:rfd-pop .4s ease}
#rfd-root #rfd-cal{min-width:320px;width:100%;height:720px;margin:0}
/* Rappel « Confirmer l'événement ». Calendly est dans une iframe cross-origin : impossible d'y
injecter quoi que ce soit, le rappel vit donc DANS notre page, juste sous le calendrier, et
la flèche pointe vers le bouton qui se trouve au-dessus. Contour complet, jamais un seul bord. */
/* UNE SEULE LIGNE exigee (desktop ET mobile) : d'ou le texte court + white-space:nowrap.
Le nowrap garantit la ligne unique ; la taille est calee pour que ca tienne a 375px. */
#rfd-root .rfd-calhint{display:flex;align-items:center;justify-content:center;gap:8px;margin:12px auto 0;max-width:520px;padding:11px 14px;border:2px solid var(--o);border-radius:12px;background:rgba(240,88,32,.06);color:var(--m);font-size:.92rem;font-weight:700;line-height:1.3;white-space:nowrap}
#rfd-root .rfd-calhint-top{margin:0 auto 12px}
#rfd-root .rfd-calhint strong{color:var(--o)}
#rfd-root .rfd-calhint-ar{flex:none;font-size:1.3rem;font-weight:800;color:var(--o);animation:rfdHintUp 1.1s ease-in-out infinite}
@keyframes rfdHintUp{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}
@media(prefers-reduced-motion:reduce){#rfd-root .rfd-calhint-ar{animation:none}}
#rfd-root #rfd-cal iframe{width:100%!important;height:100%!important;border:0!important}
@keyframes rfd-rot{to{transform:rotate(360deg)}}
@keyframes rfd-sheen{to{background-position:-200% 0}}
@keyframes rfd-fieldpulse{0%,100%{box-shadow:0 0 0 0 rgba(240,88,32,0)}50%{box-shadow:0 0 0 6px rgba(240,88,32,.11)}}
@keyframes rfd-ping{0%,100%{box-shadow:0 0 0 0 rgba(240,88,32,.5)}70%{box-shadow:0 0 0 7px rgba(240,88,32,0)}}
@keyframes rfd-pop{0%{transform:scale(.6);opacity:0}100%{transform:scale(1);opacity:1}}
@media(max-width:560px){
#rfd-root .rfd-card{padding:34px 20px!important}
#rfd-root .rfd-title{font-size:1.5rem;line-height:1.24;margin:0 0 18px}
#rfd-root .rfd-sub{font-size:.98rem;margin-bottom:26px;max-width:340px}
#rfd-root .rfd-err{font-size:.8rem}
#rfd-root .rfd-trust{font-size:.79rem}
#rfd-root #rfd-cal{height:1000px}
}
@media(prefers-reduced-motion:reduce){#rfd-root *{animation:none!important}}
/* ===== BILAN (findings) porté depuis /appel/ ===== */
#rfd-root #rfd-step-findings{text-align:center}
#rfd-root .rfd-fx-eye{font-size:.72rem;font-weight:800;letter-spacing:1.7px;text-transform:uppercase;color:#b0aec2;margin:0}
/* Bandeau "site analysé" (capture + domaine) : rend le bilan clairement personnalisé */
#rfd-root .rfd-fx-site{display:inline-flex;align-items:center;gap:11px;margin:11px auto 2px;padding:6px 15px 6px 6px;background:#faf9fd;border:1px solid #eae7f3;border-radius:999px;max-width:100%;box-sizing:border-box}
#rfd-root .rfd-fx-thumb{flex:0 0 auto;width:46px;height:32px;border-radius:7px;overflow:hidden;background:#eef0f6;border:1px solid #e4dcf1;position:relative}
#rfd-root .rfd-fx-thumb img{width:100%;height:100%;object-fit:cover;object-position:top center;display:block}
#rfd-root .rfd-fx-site.no-thumb .rfd-fx-thumb{display:none}
#rfd-root .rfd-fx-site.no-thumb{padding-left:16px}
#rfd-root .rfd-fx-domain{font-size:.92rem;font-weight:800;color:var(--m);letter-spacing:-.2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
/* Jauge sobre : anneau degrade fin + halo tres leger */
#rfd-root .rfd-gauge{position:relative;width:184px;height:184px;margin:16px auto 13px}
#rfd-root .rfd-gauge svg{width:184px;height:184px;transform:rotate(-90deg);overflow:visible}
#rfd-root .rfd-gauge-bg{fill:none;stroke:#eef0f6;stroke-width:12}
#rfd-root .rfd-gauge-fg{fill:none;stroke:#f05820;stroke-width:12;stroke-linecap:round;stroke-dasharray:402;stroke-dashoffset:402;transition:stroke-dashoffset 1.4s cubic-bezier(.22,1,.36,1)}
#rfd-root .rfd-gauge.crit .rfd-gauge-fg{filter:drop-shadow(0 2px 6px rgba(214,69,48,.28))}
#rfd-root .rfd-gauge.warn .rfd-gauge-fg{filter:drop-shadow(0 2px 6px rgba(240,88,32,.26))}
#rfd-root .rfd-gauge.ok .rfd-gauge-fg{filter:drop-shadow(0 2px 6px rgba(31,162,104,.28))}
#rfd-root .rfd-gauge-txt{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1}
#rfd-root .rfd-gauge-txt b{font-size:3.5rem;font-weight:900;color:var(--m);letter-spacing:-3px;font-variant-numeric:tabular-nums;line-height:.9}
#rfd-root .rfd-gauge-txt span{font-size:.6rem;font-weight:800;letter-spacing:1.7px;color:#c2c0cf;margin-top:6px}
/* Verdict : texte + point colore (sobre, pas de pastille pleine) */
#rfd-root .rfd-verdict{display:inline-flex;align-items:center;gap:9px;font-size:1rem;font-weight:800;letter-spacing:-.2px;margin:0 0 5px;color:var(--m)}
#rfd-root .rfd-verdict::before{content:"";width:9px;height:9px;border-radius:50%;background:currentColor;flex:0 0 auto}
#rfd-root .rfd-verdict.crit{color:#c73f28} #rfd-root .rfd-verdict.warn{color:#c2410c} #rfd-root .rfd-verdict.ok{color:#137a4e}
#rfd-root .rfd-fx-sub{font-size:.84rem;color:var(--muted);margin:0 0 22px}
/* Categories : UN panneau, lignes separees par un filet (style rapport analytics, moins "template") */
#rfd-root .rfd-cats{border:1px solid #e9e6f2;border-radius:16px;overflow:hidden;background:#fff;margin:0 0 20px;text-align:left}
#rfd-root .rfd-cat{padding:15px 18px}
#rfd-root .rfd-cat + .rfd-cat{border-top:1px solid #f2f0f8}
#rfd-root .rfd-cat-top{display:flex;align-items:center;gap:11px}
#rfd-root .rfd-cat-ic{flex:0 0 auto;width:19px;height:19px;color:#adaabd}
#rfd-root .rfd-cat-ic svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
#rfd-root .rfd-cat-name{flex:1 1 auto;min-width:0;font-weight:700;color:var(--m);font-size:.96rem;letter-spacing:-.2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#rfd-root .rfd-cat-lbl{flex:0 0 auto;font-weight:800;font-size:.64rem;letter-spacing:.7px;text-transform:uppercase}
#rfd-root .rfd-cat-num{flex:0 0 auto;font-size:.95rem;font-weight:800;font-variant-numeric:tabular-nums;min-width:30px;text-align:right}
#rfd-root .rfd-cat-bar{display:flex;align-items:center;gap:12px;margin-top:11px}
#rfd-root .rfd-cat-track{flex:1 1 auto;height:6px;background:#eef0f6;border-radius:999px;overflow:hidden}
#rfd-root .rfd-cat-fill{height:100%;border-radius:999px;width:0;transition:width 1.1s cubic-bezier(.22,1,.36,1)}
#rfd-root .rfd-cat.b-low .rfd-cat-lbl,#rfd-root .rfd-cat.b-low .rfd-cat-num{color:#c73f28} #rfd-root .rfd-cat.b-low .rfd-cat-fill{background:linear-gradient(90deg,#e46a52,#d64530)}
#rfd-root .rfd-cat.b-mid .rfd-cat-lbl,#rfd-root .rfd-cat.b-mid .rfd-cat-num{color:#c2410c} #rfd-root .rfd-cat.b-mid .rfd-cat-fill{background:linear-gradient(90deg,#f7a24d,#f0742a)}
#rfd-root .rfd-cat.b-good .rfd-cat-lbl,#rfd-root .rfd-cat.b-good .rfd-cat-num{color:#96771f} #rfd-root .rfd-cat.b-good .rfd-cat-fill{background:linear-gradient(90deg,#e0c65c,#c9ab3a)}
#rfd-root .rfd-cat.b-high .rfd-cat-lbl,#rfd-root .rfd-cat.b-high .rfd-cat-num{color:#137a4e} #rfd-root .rfd-cat.b-high .rfd-cat-fill{background:linear-gradient(90deg,#3cbd7c,#1fa268)}
/* Note "en clair" : encart sobre, contour complet, eyebrow orange (pas d'icone gadget) */
#rfd-root .rfd-fx-note{font-size:.93rem;color:#4a4762;line-height:1.6;margin:0 0 18px;padding:16px 18px;background:#faf9fd;border:1px solid #eae7f3;border-radius:14px;text-align:left}
#rfd-root .rfd-fx-note-eye{display:block;font-size:.66rem;font-weight:800;letter-spacing:1.3px;text-transform:uppercase;color:#f05820;margin-bottom:6px}
#rfd-root .rfd-fx-note b{color:var(--m)}
#rfd-root .rfd-fx-reassure{margin-top:13px;font-size:.82rem;color:#9a97ad;line-height:1.5}
/* Apparition en cascade (spring, fluide) */
@keyframes rfdRise{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
@keyframes rfdPop{0%{opacity:0;transform:scale(.8)}55%{opacity:1}100%{opacity:1;transform:scale(1)}}
@keyframes rfdFadeIn{from{opacity:0}to{opacity:1}}
#rfd-root .rfd-anim{animation:rfdRise .62s cubic-bezier(.22,1,.36,1) both}
#rfd-root .rfd-anim-pop{animation:rfdPop .8s cubic-bezier(.34,1.42,.5,1) both}
#rfd-root .rfd-anim-fade{animation:rfdFadeIn .5s ease both}
@media(prefers-reduced-motion:reduce){#rfd-root .rfd-anim,#rfd-root .rfd-anim-pop,#rfd-root .rfd-anim-fade{animation:none}}
@media(prefers-reduced-motion:reduce){#rfd-root .rfd-gauge-fg,#rfd-root .rfd-cat-fill{transition:none}}
@media(max-width:440px){#rfd-root .rfd-gauge,#rfd-root .rfd-gauge svg{width:160px;height:160px}#rfd-root .rfd-gauge-txt b{font-size:3rem;font-weight:700;letter-spacing:-2px}#rfd-root .rfd-cat{padding:14px 15px}#rfd-root .rfd-cat-name{font-size:.9rem}#rfd-root .rfd-fx-note{padding:13px 15px;font-size:.88rem;margin-bottom:16px}#rfd-root .rfd-fx-note-eye{margin-bottom:4px}}
</style>
<script>
document.getElementById("yr").textContent = new Date().getFullYear();
// reveal au scroll
var io = new IntersectionObserver(function(es){
es.forEach(function(e){ if(e.isIntersecting){ e.target.classList.add("in"); io.unobserve(e.target); } });
}, {threshold:.14, rootMargin:"0px 0px -8% 0px"});
document.querySelectorAll(".reveal").forEach(function(el){ io.observe(el); });
// Compteurs animés (count-up) sur les stats
var prefersReduced = window.matchMedia("(prefers-reduced-motion: reduce)").matches;
function countUp(el){
var target = parseFloat(el.getAttribute("data-target"));
var pre = el.getAttribute("data-prefix") || "", suf = el.getAttribute("data-suffix") || "";
if(prefersReduced){ el.textContent = pre + target + suf; return; }
var dur = 1400, t0 = null;
function step(ts){
if(!t0) t0 = ts;
var p = Math.min((ts - t0) / dur, 1);
var eased = 1 - Math.pow(1 - p, 3);
el.textContent = pre + Math.round(target * eased) + suf;
if(p < 1) requestAnimationFrame(step);
}
requestAnimationFrame(step);
}
var nIO = new IntersectionObserver(function(es){
es.forEach(function(e){ if(e.isIntersecting){ countUp(e.target); nIO.unobserve(e.target); } });
}, {threshold:.6});
document.querySelectorAll(".stat .n[data-target]").forEach(function(el){ nIO.observe(el); });
// FAQ accordéon
document.querySelectorAll(".faq-q").forEach(function(btn){
btn.addEventListener("click", function(){
var item = btn.closest(".faq-item");
var isOpen = item.classList.contains("open");
document.querySelectorAll(".faq-item.open").forEach(function(o){
o.classList.remove("open");
var oa = o.querySelector(".faq-a"); if(oa) oa.style.maxHeight = null;
var oq = o.querySelector(".faq-q"); if(oq) oq.setAttribute("aria-expanded","false");
});
if(!isOpen){
item.classList.add("open");
var a = item.querySelector(".faq-a"); a.style.maxHeight = a.scrollHeight + "px";
btn.setAttribute("aria-expanded","true");
}
});
});
// CTA : sticky bas (mobile) après le hero, masqué sur le diagnostic ; bouton header masqué sur le diagnostic.
var sticky = document.querySelector(".sticky-cta");
var navCta = document.querySelector(".nav-cta");
var diagSec = document.getElementById("diagnostic-sec");
var heroSec = document.querySelector(".hero");
var inHero = true, onDiag = false;
function syncCtas(){
if(sticky){ sticky.classList.toggle("is-hidden", inHero || onDiag); }
if(navCta){ navCta.classList.toggle("is-hidden", onDiag); }
}
if("IntersectionObserver" in window){
if(heroSec){ new IntersectionObserver(function(es){ es.forEach(function(e){ inHero = e.isIntersecting; }); syncCtas(); }, {threshold:0}).observe(heroSec); }
if(diagSec){ new IntersectionObserver(function(es){ es.forEach(function(e){ onDiag = e.isIntersecting; }); syncCtas(); }, {threshold:.14}).observe(diagSec); }
syncCtas();
}
</script>
<script>
// GA4 : conversion "RDV réservé" (émis par l'iframe Calendly du widget)
window.addEventListener("message", function(e){
if(e.data && typeof e.data === "object" && e.data.event === "calendly.event_scheduled"){
if(typeof gtag === "function"){ gtag("event","reservation_rdv",{event_category:"Calendly",event_label:"Accompagnement SEO"}); }
}
});
</script>
<script>
/* Widget diagnostic autonome : vérifie le site, anime l'analyse (12 critères), révèle le Calendly.
Lead (URL) enregistré dans le Business Manager (bm.vincenthego.com/api/lead), source: widget. */
(function(){
function boot(){
var root = document.getElementById('rfd-root');
if(!root || root.getAttribute('data-rfd-init')) return;
root.setAttribute('data-rfd-init','1');
var API_BASE = 'https://bm.vincenthego.com';
var LEAD_API = API_BASE + '/api/lead';
var CHECK_API = API_BASE + '/api/check-site';
var SUMMARY_API = API_BASE + '/api/site-summary';
var PEOPLE_API = API_BASE + '/api/site-people';
var CALENDLY = 'https://calendly.com/vhdigitalcorp/appel?hide_event_type_details=1&hide_gdpr_banner=1&primary_color=f05820';
var STEPS = [
'Analyse du contenu et des mots-clés',
'Balises title & meta descriptions',
'Structure des titres (Hn)',
'Vitesse & Core Web Vitals',
'Compatibilité mobile',
'Maillage interne',
'Profil de backlinks & autorité',
'Positionnement sur Google',
'SEO local',
'Données structurées (schema)',
'Visibilité sur les IA (ChatGPT, Perplexity)',
'Analyse de la concurrence'
];
var form = document.getElementById('rfd-form');
var elUrl = document.getElementById('rfd-url');
var elErr = document.getElementById('rfd-err');
var elSubmit = document.getElementById('rfd-submit');
var stepForm = document.getElementById('rfd-step-form');
var stepScan = document.getElementById('rfd-step-scan');
var stepDone = document.getElementById('rfd-step-done');
var scanHost = document.getElementById('rfd-scanhost');
var checklist = document.getElementById('rfd-checklist');
var progress = document.getElementById('rfd-progress');
var pctEl = document.getElementById('rfd-progress-pct');
var labelEl = document.getElementById('rfd-progress-label');
var stepQuiz = document.getElementById('rfd-step-quiz');
var stepFindings = document.getElementById('rfd-step-findings');
var stepEmail = document.getElementById('rfd-step-email');
var analysisData = null;
var reduceM = false; try{ reduceM = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches; }catch(_e){}
// Vraie mini-analyse on-page (proxy sécurisé, même origine) -> score + problèmes RÉELS (pas inventés).
function analyzeSite(url){
try{
fetch('/outils-api/fetch.php?url=' + encodeURIComponent(url))
.then(function(r){ return r.json(); })
.then(function(d){ if(d && d.ok){ analysisData = computeFindings(d); } })
.catch(function(){});
}catch(_e){}
}
function ogCount(o){
if(!o) return 0;
if(Array.isArray(o)) return o.length;
if(typeof o === 'object') return Object.keys(o).length;
return 0;
}
// Liste HONNETE des points bloquants : memes signaux et memes seuils que le bareme ci-dessus.
// Sert au compteur du teaser ET au detail du bilan complet (le "plan d'action" enfin livre).
function computeIssues(d){
var out = [];
function add(sev, t, txt){ out.push({ sev:sev, t:t, d:txt }); }
var tl = (d.title||'').length;
if(!d.title) add('crit', "Balise title absente", "Google n'a aucun titre à afficher dans ses résultats : c'est la première chose à écrire.");
else if(tl < 25 || tl > 68) add('warn', "Balise title mal calibrée (" + tl + " caractères)", "Visez 35 à 60 caractères pour éviter la troncature dans les résultats.");
var dl = d.description ? (''+d.description).length : 0;
if(!d.description) add('crit', "Meta description absente", "Google rédige alors lui-même votre résumé, souvent mal : vous perdez des clics.");
else if(dl < 70 || dl > 175) add('warn', "Meta description mal calibrée (" + dl + " caractères)", "Visez 120 à 175 caractères pour occuper toute la ligne disponible.");
var h1n = (d.h1||[]).length;
if(!h1n) add('crit', "Aucun titre H1", "La page n'annonce pas son sujet principal : Google doit le deviner.");
else if(h1n > 1) add('warn', h1n + " titres H1 sur la page", "Un seul H1 par page, sinon le sujet principal devient ambigu.");
if(!d.canonical) add('warn', "Aucune URL canonique", "Sans canonique, vos variantes d'URL se font concurrence entre elles.");
var w = (typeof d.wordCount==='number') ? d.wordCount : 540;
if(w < 300) add('crit', "Contenu très court (" + w + " mots)", "Trop peu de matière pour se positionner : il faut développer le sujet.");
else if(w < 600) add('warn', "Contenu court (" + w + " mots)", "Sous 600 mots, difficile de couvrir un sujet mieux que vos concurrents.");
var h2n = d.h2Count||0;
if(h2n === 0) add('crit', "Aucun sous-titre H2", "La page n'a aucune structure : ni lecteur ni robot ne peuvent la parcourir.");
else if(h2n < 4) add('warn', "Structure faible (" + h2n + " sous-titres H2)", "Découpez en sections claires : c'est ce qui nourrit les extraits enrichis.");
if(d.imgNoAlt > 0) add('warn', d.imgNoAlt + " image" + (d.imgNoAlt>1?'s':'') + " sans texte alternatif", "Invisible pour Google Images et pour les lecteurs d'écran.");
var tms = (typeof d.timeMs==='number') ? d.timeMs : 950;
if(tms > 2200) add('crit', "Page lente (" + (tms/1000).toFixed(1).replace(".", ",") + " s)", "Au-delà de 2 s, vous perdez des visiteurs avant même l'affichage.");
else if(tms > 1300) add('warn', "Temps de réponse perfectible (" + (tms/1000).toFixed(1).replace(".", ",") + " s)", "Chaque dixième de seconde gagné se voit sur le taux de rebond.");
if(!d.viewport) add('crit', "Page non adaptée au mobile", "La balise viewport manque, or Google indexe la version mobile en premier.");
if(d.sizeBytes > 2000000) add('warn', "Page lourde (" + String(Math.round(d.sizeBytes/100000)/10).replace(".", ",") + " Mo)", "Compressez images et scripts : c'est le levier le plus rapide.");
if(!d.schemaTypes || !d.schemaTypes.length) add('crit', "Aucune donnée structurée", "Sans schema.org, ni Google ni les IA ne savent identifier votre activité.");
else if(d.schemaTypes.length < 3) add('warn', "Données structurées incomplètes (" + d.schemaTypes.length + " type" + (d.schemaTypes.length>1?'s':'') + ")", "Complétez : chaque type couvert est une occasion d'être cité.");
if(!ogCount(d.og)) add('warn', "Balises de partage absentes", "Vos liens partagés sur LinkedIn ou WhatsApp s'affichent sans aperçu.");
var il = (d.links && typeof d.links.internal==='number') ? d.links.internal : 9;
if(il < 3) add('crit', "Maillage interne quasi inexistant (" + il + " lien" + (il>1?'s':'') + ")", "Vos autres pages ne reçoivent aucune popularité depuis celle-ci.");
else if(il < 8) add('warn', "Maillage interne faible (" + il + " liens)", "Reliez vos pages entre elles : c'est le levier gratuit le plus sous-utilisé.");
return out;
}
function computeFindings(d){
function cl(v){ return Math.max(9, Math.min(92, Math.round(v))); }
// Barème EXIGEANT (un vrai audit est sévère) : signaux on-page réels, seuils stricts -> notes basses = plus honnête et plus incitatif.
var tech = 96, tl = (d.title||'').length;
if(!d.title) tech -= 40; else if(tl < 25 || tl > 68) tech -= 22; else if(tl < 35 || tl > 60) tech -= 12; else tech -= 3;
var dl = d.description ? (''+d.description).length : 0;
if(!d.description) tech -= 34; else if(dl < 70) tech -= 20; else if(dl < 120 || dl > 175) tech -= 11; else tech -= 3;
var h1 = (d.h1||[]).length; if(!h1) tech -= 30; else if(h1 > 1) tech -= 17;
if(!d.canonical) tech -= 11;
// CONTENU : très exigeant (la plupart des pages d'accueil sont trop courtes / mal structurées).
var cont = 93, w = (typeof d.wordCount==='number') ? d.wordCount : 540;
if(w < 150) cont -= 72; else if(w < 300) cont -= 58; else if(w < 600) cont -= 42; else if(w < 1000) cont -= 28; else if(w < 1500) cont -= 15; else cont -= 5;
var h2 = d.h2Count||0; if(h2 === 0) cont -= 30; else if(h2 < 4) cont -= 20; else if(h2 < 6) cont -= 10;
if(d.imgNoAlt > 8) cont -= 26; else if(d.imgNoAlt > 0) cont -= 16;
var perf = 96, t = (typeof d.timeMs==='number') ? d.timeMs : 950;
if(t > 3500) perf -= 46; else if(t > 2200) perf -= 32; else if(t > 1300) perf -= 20; else if(t > 800) perf -= 10; else if(t > 500) perf -= 4;
if(!d.viewport) perf -= 48;
if(d.sizeBytes > 3200000) perf -= 20; else if(d.sizeBytes > 2000000) perf -= 11; else if(d.sizeBytes > 1200000) perf -= 5;
// VISIBILITÉ Google + IA : très exigeant (schéma/données structurées + maillage = ce qui fait citer par les IA).
var vis = 92;
if(!d.schemaTypes || !d.schemaTypes.length) vis -= 48; else if(d.schemaTypes.length < 2) vis -= 28; else if(d.schemaTypes.length < 3) vis -= 15; else vis -= 5;
if(!ogCount(d.og)) vis -= 32;
var il = (d.links && typeof d.links.internal==='number') ? d.links.internal : 9;
if(il < 3) vis -= 38; else if(il < 8) vis -= 26; else if(il < 15) vis -= 15; else if(il < 25) vis -= 6;
var cats = [
{ name:'Optimisation technique', score:cl(tech) },
{ name:'Contenu & mots-clés', score:cl(cont) },
{ name:'Vitesse & mobile', score:cl(perf) },
{ name:'Visibilité Google et IA', score:cl(vis) }
];
var score = Math.round(cats.reduce(function(s,c){ return s+c.score; }, 0) / cats.length);
score = Math.max(24, Math.min(86, score));
return { score: score, cats: cats, issues: computeIssues(d) };
}
function fxBand(s){ return s < 48 ? 'low' : s < 66 ? 'mid' : s < 90 ? 'good' : 'high'; }
function fxBandLbl(s){ return s < 48 ? 'Faible' : s < 66 ? 'À renforcer' : s < 90 ? 'Correct' : 'Bon'; }
// Icones SVG par categorie (Lucide-style, jamais d'emoji) : technique/contenu/vitesse/visibilite.
var RFD_CAT_ICONS = [
'<polyline points="16 18 22 12 16 6"></polyline><polyline points="8 6 2 12 8 18"></polyline>',
'<path d="M14 3H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"></path><polyline points="14 3 14 9 20 9"></polyline><line x1="8" y1="13" x2="16" y2="13"></line><line x1="8" y1="17" x2="13" y2="17"></line>',
'<polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"></polygon>',
'<polyline points="22 7 13.5 15.5 8.5 10.5 2 17"></polyline><polyline points="16 7 22 7 22 13"></polyline>'
];
function renderFindings(a){
var num = document.getElementById('rfd-scorenum');
var gauge = document.getElementById('rfd-gauge');
var arc = document.getElementById('rfd-gauge-arc');
var verdict = document.getElementById('rfd-verdict');
var wrap = document.getElementById('rfd-cats');
if(!num||!gauge||!wrap) return;
// Bandeau "site analysé" : domaine + capture (reprise de celle du scan, déjà mise en cache) -> bilan personnalisé.
try{
var siteBox = document.getElementById('rfd-fx-site');
var domEl = document.getElementById('rfd-fx-domain');
var fxImg = document.getElementById('rfd-fx-img');
if(domEl) domEl.textContent = hostOf(lastUrl);
if(siteBox) siteBox.classList.add('no-thumb');
var shot = document.getElementById('rfd-shot-img');
var src = shot && shot.getAttribute('src');
if(fxImg && src){
fxImg.alt = 'Aperçu du site ' + hostOf(lastUrl);
fxImg.onload = function(){ if(siteBox) siteBox.classList.remove('no-thumb'); };
fxImg.onerror = function(){ if(siteBox) siteBox.classList.add('no-thumb'); };
fxImg.src = src;
}
}catch(_e){}
// Vert UNIQUEMENT à partir de 90 (scarcity) : en dessous, tout reste orange (ou rouge sous 55).
var g = a.score < 55 ? 'crit' : a.score < 90 ? 'warn' : 'ok';
num.textContent = a.score;
gauge.className = 'rfd-gauge ' + g;
verdict.className = 'rfd-verdict ' + g;
verdict.textContent = g==='crit' ? 'Plusieurs leviers sous-exploités'
: g==='warn' ? 'De belles marges de progression'
: 'De bonnes fondations à optimiser';
// Boucle ouverte : on nomme le NOMBRE de domaines à renforcer (donnée réelle), pas les solutions.
// Puis reframe positif "tout se corrige" -> le plan se construit à l'appel (seule sortie = réserver).
var note = document.getElementById('rfd-fx-note-txt');
if(note){
var weak = a.cats.filter(function(c){ return c.score < 66; }).length;
if(weak >= 1){
note.innerHTML = '<b>' + weak + ' chose' + (weak>1?'s':'') + ' à corriger</b> en priorité. Bonne nouvelle : <b>tout se corrige</b>.';
} else {
note.innerHTML = '<b>Bonnes fondations</b>, mais de vraies marges à exploiter.';
}
}
var RM = false; try{ RM = window.matchMedia && window.matchMedia('(prefers-reduced-motion:reduce)').matches; }catch(_e){}
var C = 2 * Math.PI * 64;
arc.setAttribute('stroke', 'url(#rfd-grad-' + g + ')');
arc.style.strokeDasharray = C;
arc.style.strokeDashoffset = C;
// tracé de la jauge synchronisé avec l'apparition (après le "pop")
setTimeout(function(){ arc.style.strokeDashoffset = C * (1 - a.score/100); }, RM ? 0 : 300);
// compteur du score qui s'incrémente (0 -> score) pendant le tracé. setInterval (pas rAF : fiable, ne gèle pas).
if(RM){ num.textContent = a.score; }
else {
var tgt = a.score, steps = 32, i2 = 0;
num.textContent = '0';
setTimeout(function(){
var iv2 = setInterval(function(){
i2++;
var p = i2/steps, e = 1 - Math.pow(1-p, 3);
num.textContent = Math.round(e*tgt);
if(i2 >= steps){ clearInterval(iv2); num.textContent = tgt; }
}, 34);
}, 320);
}
wrap.innerHTML = '';
a.cats.forEach(function(c, idx){
var band = fxBand(c.score);
var row = document.createElement('div'); row.className = 'rfd-cat b-' + band;
var top = document.createElement('div'); top.className = 'rfd-cat-top';
var ic = document.createElement('span'); ic.className = 'rfd-cat-ic';
ic.innerHTML = '<svg viewBox="0 0 24 24">' + (RFD_CAT_ICONS[idx] || RFD_CAT_ICONS[0]) + '</svg>';
var nm = document.createElement('span'); nm.className = 'rfd-cat-name'; nm.textContent = c.name;
var numEl = document.createElement('span'); numEl.className = 'rfd-cat-num'; numEl.textContent = c.score;
top.appendChild(ic); top.appendChild(nm); top.appendChild(numEl);
var bar = document.createElement('div'); bar.className = 'rfd-cat-bar';
var track = document.createElement('div'); track.className = 'rfd-cat-track';
var fill = document.createElement('div'); fill.className = 'rfd-cat-fill'; track.appendChild(fill);
var lb = document.createElement('span'); lb.className = 'rfd-cat-lbl'; lb.textContent = fxBandLbl(c.score);
bar.appendChild(track); bar.appendChild(lb);
row.appendChild(top); row.appendChild(bar); wrap.appendChild(row);
(function(f, val, i){ setTimeout(function(){ f.style.width = val + '%'; }, RM ? 0 : (760 + i*150)); })(fill, c.score, idx);
});
// ===== Apparition en cascade (spring, fluide) =====
if(!RM){
var stepEl = document.getElementById('rfd-step-findings');
function anim(el, cls, delay){ if(!el) return; el.classList.remove('rfd-anim','rfd-anim-pop','rfd-anim-fade'); void el.offsetWidth; el.style.animationDelay = delay + 'ms'; el.classList.add(cls); }
anim(stepEl ? stepEl.querySelector('.rfd-fx-eye') : null, 'rfd-anim', 30);
anim(document.getElementById('rfd-fx-site'), 'rfd-anim', 80);
anim(gauge, 'rfd-anim-pop', 150);
anim(verdict, 'rfd-anim', 380);
anim(document.getElementById('rfd-fx-sub'), 'rfd-anim', 440);
anim(wrap, 'rfd-anim', 500);
anim(document.getElementById('rfd-fx-note'), 'rfd-anim', 820);
anim(document.getElementById('rfd-findings-go'), 'rfd-anim', 900);
anim(document.getElementById('rfd-fx-reassure'), 'rfd-anim', 960);
}
}
// a2 AUTO : on ne demande plus l'activité/blocage (friction) -> on le construit tout seul depuis
// l'activité (site-summary/Gemini, prefillA2) + le point le plus FAIBLE du vrai bilan (+ score),
// et on le pré-remplit dans Calendly pour la prépa d'appel.
function buildAutoA2(){
var act = (prefillA2 || '').trim();
var blocage = '';
if(analysisData && analysisData.cats && analysisData.cats.length){
var low = analysisData.cats.slice().sort(function(x,y){ return x.score - y.score; })[0];
var MAP = {
'Optimisation technique': "l'optimisation technique du site",
'Contenu & mots-clés': "le contenu et les mots-clés",
'Vitesse & mobile': "la vitesse et l'affichage mobile",
'Visibilité Google et IA': "la visibilité sur Google et les IA"
};
blocage = (MAP[low.name] || low.name) + ' (' + low.score + '/100)';
}
if(act && /\best\s*$/i.test(act)){ return blocage ? (act + ' ' + blocage + '.') : act.replace(/\s*est\s*$/i, '.'); }
if(act){ return blocage ? (act.replace(/[.\s]*$/, '') + '. Point le plus faible au diagnostic : ' + blocage + '.') : act; }
return blocage ? ('Point le plus faible détecté au diagnostic : ' + blocage + '.') : '';
}
var busy = false, finished = false, lastUrl = '', leadId = 0, lastEmail = '', prefillA2 = '';
// Noms trouves dans les mentions legales du site (pastilles sur la question du nom).
var peopleNames = [];
function markPrefillNote(inp){
try{
var qc = inp.closest && inp.closest('.rfd-q'); if(!qc || qc.querySelector('.rfd-prefill-note')) return;
var n = document.createElement('div'); n.className = 'rfd-prefill-note'; n.textContent = '✨ Pré-rempli, modifiez si besoin';
var fields = qc.querySelector('.rfd-fields'); if(fields && fields.parentNode){ fields.parentNode.insertBefore(n, fields.nextSibling); }
}catch(_e){}
}
function autoGrow(el){ try{ if(el && el.tagName === 'TEXTAREA'){ el.style.height = 'auto'; el.style.height = Math.min(el.scrollHeight + 2, 360) + 'px'; } }catch(_e){} }
function normUrl(v){ v=(v||'').trim(); if(!v) return ''; if(!/^https?:\/\//i.test(v)) v='https://'+v; return v; }
function hostOf(u){ try{ return new URL(u).hostname.replace(/^www\./,''); }catch(_e){ return (u||'').replace(/^https?:\/\//,'').replace(/^www\./,'').split('/')[0]; } }
var EXAMPLE = /^(monsite|mon-site|monsiteweb|monsite-web|exemple|example|votresite|votre-site|mondomaine|votredomaine|site-exemple)\.(fr|com|net|io|org|eu)$/i;
function setLoading(on){ elSubmit.disabled = on; elSubmit.className = 'rfd-btn' + (on ? ' is-loading' : ''); }
function checkSite(url){
var ctrl;
try{ ctrl = new AbortController(); setTimeout(function(){ try{ctrl.abort();}catch(_e){} }, 9000); }catch(_e){}
return fetch(CHECK_API + '?url=' + encodeURIComponent(url), ctrl ? {signal:ctrl.signal} : undefined)
.then(function(r){ return r.json(); })
.then(function(d){ return d && typeof d.reachable === 'boolean' ? d : { reachable:true }; })
.catch(function(){ return { reachable:true }; });
}
form.addEventListener('submit', function(e){
e.preventDefault();
if(busy) return;
elErr.textContent = '';
var url = normUrl(elUrl.value);
if(!url || !/^https?:\/\/[^\s.]+\.[a-z]{2,}/i.test(url)){
elErr.textContent = 'Entrez une adresse de site valide.';
elUrl.focus(); return;
}
if(EXAMPLE.test(hostOf(url))){
elErr.textContent = "Entrez l'adresse de VOTRE site, pas l'exemple 🙂";
elUrl.focus(); elUrl.select && elUrl.select(); return;
}
lastUrl = url;
busy = true; setLoading(true);
checkSite(url).then(function(res){
if(!res.reachable){
busy = false; setLoading(false);
elErr.textContent = "Site introuvable, vérifiez l'adresse.";
elUrl.focus(); elUrl.select && elUrl.select();
return;
}
try{ fetch(LEAD_API, { method:'POST', headers:{'content-type':'application/json'}, body: JSON.stringify({ url:url, source:'accompagnement-seo' }) }).then(function(r){ return r.json(); }).then(function(d){ if(d && d.id) leadId = d.id; }).catch(function(){}); }catch(_e){}
prefillA2 = '';
try{ peopleNames = []; fetch(PEOPLE_API + '?url=' + encodeURIComponent(url)).then(function(r){ return r.json(); }).then(function(d){ if(d && d.names && d.names.length){ peopleNames = d.names.slice(0,3); } }).catch(function(){}); }catch(_e){}
try{ fetch(SUMMARY_API + '?url=' + encodeURIComponent(url)).then(function(r){ return r.json(); }).then(function(d){ if(d && d.prefill){ prefillA2 = d.prefill; var el = qview && qview.querySelector('.rfd-qinput'); var cur = QS[qi]; if(el && cur && cur.key === 'a2' && !el.value){ el.value = prefillA2; markPrefillNote(el); try{ el.focus(); el.selectionStart = el.selectionEnd = el.value.length; autoGrow(el); }catch(_e2){} } } }).catch(function(){}); }catch(_e){}
try{ if(typeof gtag==='function'){ gtag('event','lead_diagnostic',{event_category:'Diagnostic',event_label:url}); } }catch(_e){}
scanHost.textContent = '';
var _dot = document.createElement('span'); _dot.className = 'rfd-dot';
var _ht = document.createElement('span'); _ht.className = 'rfd-hosttxt';
_ht.appendChild(document.createTextNode('Analyse de : '));
var _hb = document.createElement('b'); _hb.textContent = hostOf(url);
_ht.appendChild(_hb);
scanHost.appendChild(_dot); scanHost.appendChild(_ht);
loadShot(url);
analysisData = null; analyzeSite(url);
stepForm.classList.add('rfd-hidden');
stepScan.classList.remove('rfd-hidden');
// Mobile : on ferme d'abord le clavier, puis UN SEUL scroll INSTANTANÉ aligné en haut, et seulement
// si l'étape n'est pas déjà visible. (Le scroll fluide + block:center oscillait à cause de la barre d'URL mobile.)
try{ elUrl.blur(); }catch(_e){}
setTimeout(function(){
try{ var r = stepScan.getBoundingClientRect(); if(r.top < 0 || r.top > window.innerHeight * 0.4){ stepScan.scrollIntoView({block:'start'}); } }catch(_e){}
}, 360);
runScan();
});
});
// Apercu reel du site scanne. Charge par le navigateur du VISITEUR (et pas par notre
// serveur) : le quota Microlink etant compte par IP, chaque visiteur a le sien.
// Le scan dure ~20 s, la capture arrive en ~8-13 s : elle a le temps.
// Regle d'or : on n'affiche JAMAIS une image cassee. Echec ou trop lent -> le bloc disparait.
function loadShot(url){
var box = document.getElementById('rfd-shot');
var img = document.getElementById('rfd-shot-img');
var lbl = document.getElementById('rfd-shot-url');
if(!box || !img) return;
try{
box.classList.remove('ready');
box.hidden = false;
if(lbl) lbl.textContent = hostOf(url);
/* L'alt suit la source : l'image est une vraie capture du site du
visiteur, un alt vide la ferait passer pour décorative. */
img.alt = 'Aperçu du site ' + hostOf(url);
var done = false;
// On ne RÉTRACTE JAMAIS le bloc pendant le scan (ça ferait sauter la page). Échec/lenteur -> on garde
// l'espace réservé (shimmer, jamais d'image cassée) ; le bloc disparaît de lui-même quand le bilan s'affiche.
var giveUp = setTimeout(function(){ if(!done){ done = true; img.removeAttribute('src'); } }, 12000);
img.onload = function(){ if(done) return; done = true; clearTimeout(giveUp); box.classList.add('ready'); };
img.onerror = function(){ if(done) return; done = true; clearTimeout(giveUp); img.removeAttribute('src'); };
img.src = 'https://api.microlink.io/?url=' + encodeURIComponent(url) +
'&screenshot=true&meta=false&embed=screenshot.url&viewport.width=640&viewport.height=420';
}catch(_e){ box.hidden = true; }
}
function runScan(){
checklist.innerHTML = '';
var lis = STEPS.map(function(label){
var li = document.createElement('li');
var ico = document.createElement('span'); ico.className = 'rfd-ico wait'; ico.textContent = '•';
var lbl = document.createElement('span'); lbl.className = 'rfd-lbl'; lbl.textContent = label;
li.appendChild(ico); li.appendChild(lbl);
checklist.appendChild(li);
return li;
});
var n = lis.length;
var shown = 0, target = 0;
var iv = setInterval(function(){
shown += (target - shown) * 0.06;
if(target - shown < 0.2) shown = target;
progress.style.width = shown.toFixed(1) + '%';
pctEl.textContent = Math.round(shown) + '%';
}, 30);
var i = 0;
function step(){
if(i > 0){
var prev = lis[i-1]; prev.classList.remove('active'); prev.classList.add('done');
var pi = prev.querySelector('.rfd-ico'); pi.className = 'rfd-ico ok'; pi.textContent = '✓';
}
if(i < n){
var cur = lis[i]; cur.classList.add('active');
var ci = cur.querySelector('.rfd-ico'); ci.className = 'rfd-ico spin'; ci.textContent = '';
labelEl.textContent = STEPS[i];
target = Math.round(((i+1)/n) * 100);
var base = 1050 + Math.random()*950;
if(i === 3 || i === 6 || i === 9) base += 650;
i++;
setTimeout(step, base);
} else {
target = 100;
labelEl.textContent = 'Compilation du diagnostic…';
setTimeout(function(){ clearInterval(iv); shown = 100; progress.style.width='100%'; pctEl.textContent='100%'; finish(); }, 1800);
}
}
step();
}
// ===== Mini-questionnaire fluide (façon Typeform) : les questions du Calendly, puis agenda pré-rempli =====
var QS = [
{ key:'name', type:'text', eyebrow:'On prépare votre rendez-vous', label:'Comment vous appelez-vous ?', ph:'Prénom et nom' },
{ key:'a4', type:'confirm', val:'Je confirme', label:"Vous serez présent, à l'heure, au rendez-vous ?", hint:'Le rendez-vous se fait en visio sur Google Meet.', btn:'Oui, je confirme' }
];
var A2_SUGG = [
{ l:'Manque de trafic', t:'le manque de trafic sur Google' },
{ l:'Bloqué en page 2', t:'que je stagne en 2e page de Google' },
{ l:'Pas assez de ventes', t:'un manque de contacts et de ventes' },
{ l:'Souci technique', t:'un problème technique sur mon site' },
{ l:'Je ne sais pas', t:"que je ne sais pas encore, à voir ensemble" }
];
var answers = {}, qi = 0, qLock = false;
var qview = document.getElementById('rfd-qview');
var qbar = document.getElementById('rfd-qbarfill');
var qcount = document.getElementById('rfd-qcount');
var qback = document.getElementById('rfd-qback');
// Apparition douce d'une carte-étape (one-shot). Respecte prefers-reduced-motion.
function stepIn(el, cls, delay){
if(!el) return;
var rm=false; try{ rm = window.matchMedia && window.matchMedia('(prefers-reduced-motion:reduce)').matches; }catch(_e){}
if(rm) return;
el.classList.remove('rfd-anim','rfd-anim-pop','rfd-anim-fade'); void el.offsetWidth;
el.style.animationDelay = (delay||0) + 'ms'; el.classList.add(cls);
}
function finish(){
if(finished) return; finished = true;
// Variante B : le scan livre le SCORE et le NOMBRE de points bloquants, pas leur nature.
// Le score seul ne repare rien : il cree le manque. Le diagnostic detaille est derriere l'email.
stepScan.classList.add('rfd-hidden');
if(analysisData && analysisData.cats && analysisData.cats.length){
renderFindings(analysisData);
renderTeaserCount();
stepFindings.classList.remove('rfd-hidden');
stepIn(stepFindings, 'rfd-anim-fade', 0);
// Scroll INSTANTANÉ + différé (le layout scan->bilan vient de changer) : évite l'overshoot du scroll
// fluide mobile qui remontait au-dessus du titre. scroll-margin-top le cale sous le header.
try{ stepFindings.scrollIntoView({block:'start'}); }catch(_e){}
setTimeout(function(){ try{ var r = stepFindings.getBoundingClientRect(); if(Math.abs(r.top) > 120){ stepFindings.scrollIntoView({block:'start'}); } }catch(_e){} }, 120);
try{ if(typeof gtag==='function'){ gtag('event','diagnostic_teaser',{event_category:'Diagnostic',event_label:lastUrl,value:analysisData.score,tunnel_variant:'B'}); } }catch(_e){}
} else {
goToQuiz();
}
}
// Étape email = DERNIÈRE étape avant le calendrier : l'adresse où on envoie le rendez-vous.
function showEmailStep(){
stepQuiz.classList.add('rfd-hidden');
if(stepFindings) stepFindings.classList.add('rfd-hidden');
stepEmail.classList.remove('rfd-hidden');
stepIn(stepEmail, 'rfd-anim', 0);
try{ stepEmail.scrollIntoView({behavior:'smooth', block:'start'}); }catch(_e){}
setTimeout(function(){ try{ document.getElementById('rfd-email-input').focus(); }catch(_e){} }, 420);
}
(function(){
var f = document.getElementById('rfd-email-form'); if(!f) return;
f.addEventListener('submit', function(e){
e.preventDefault();
var inp = document.getElementById('rfd-email-input');
var err = document.getElementById('rfd-email-err');
var val = (inp.value||'').trim();
if(!/^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(val)){ if(err) err.textContent = 'Entrez un email valide pour afficher votre bilan.'; try{ inp.focus(); }catch(_e){} return; }
if(err) err.textContent = '';
lastEmail = val; answers.email = val;
try{ if(leadId){ fetch(LEAD_API, { method:'POST', headers:{'content-type':'application/json'}, body: JSON.stringify({ id:leadId, url:lastUrl, email:val }) }).catch(function(){}); } }catch(_e){}
try{ if(typeof gtag==='function'){ gtag('event','lead_email',{event_category:'Diagnostic',event_label:lastUrl,tunnel_variant:'B'}); } }catch(_e){}
unlockFull();
});
})();
// Compteur du teaser : le chiffre vient des memes signaux reels que le bareme, jamais d'un arrondi invente.
function renderTeaserCount(){
var el = document.getElementById('rfd-fx-count'); if(!el) return;
var iss = (analysisData && analysisData.issues) || [];
if(!iss.length){
el.innerHTML = '<b>Aucun point bloquant majeur détecté</b><span>Le détail catégorie par catégorie vous attend.</span>';
return;
}
var crit = 0;
for(var i=0;i<iss.length;i++){ if(iss[i].sev === 'crit') crit++; }
var h = '<b>' + iss.length + ' point' + (iss.length>1?'s':'') + ' à corriger';
if(crit) h += ', dont ' + crit + ' critique' + (crit>1?'s':'');
h += '</b><span>Le détail de chacun, et par lequel commencer.</span>';
el.innerHTML = h;
}
function renderIssues(){
var ul = document.getElementById('rfd-issues'); if(!ul) return;
var iss = (analysisData && analysisData.issues) || [];
ul.innerHTML = '';
iss.forEach(function(it){
var li = document.createElement('li'); li.className = 'rfd-issue s-' + it.sev;
var sv = document.createElement('span'); sv.className = 'rfd-issue-sev'; sv.textContent = (it.sev==='crit' ? 'Critique' : 'À corriger');
var tt = document.createElement('span'); tt.className = 'rfd-issue-t'; tt.textContent = it.t;
var dd = document.createElement('span'); dd.className = 'rfd-issue-d'; dd.textContent = it.d;
li.appendChild(sv); li.appendChild(tt); li.appendChild(dd); ul.appendChild(li);
});
}
// Email laisse -> on ouvre le bilan complet. Le RDV n'est propose qu'APRES, sous le diagnostic.
function unlockFull(){
var lock = document.getElementById('rfd-fx-locked');
var teas = document.getElementById('rfd-fx-teaser');
if(teas) teas.classList.add('rfd-hidden');
if(stepEmail) stepEmail.classList.add('rfd-hidden');
if(!lock) return;
renderIssues();
lock.classList.remove('rfd-hidden');
stepFindings.classList.remove('rfd-hidden');
// Les barres ont ete posees pendant que le bloc etait masque : on les rejoue depuis 0.
// La largeur vient de analysisData (et non du style courant) : les setTimeout du rendu
// initial n'ont pas forcement eu le temps de s'executer si l'email arrive vite.
try{
var fills = lock.querySelectorAll('.rfd-cat-fill');
var cats = (analysisData && analysisData.cats) || [];
for(var i=0;i<fills.length;i++){
(function(f, val){ f.style.width = '0%'; setTimeout(function(){ f.style.width = val + '%'; }, 90); })(fills[i], cats[i] ? cats[i].score : 0);
}
}catch(_e){}
stepIn(stepFindings, 'rfd-anim-fade', 0);
try{ stepFindings.scrollIntoView({block:'start'}); }catch(_e){}
setTimeout(function(){ try{ var r = stepFindings.getBoundingClientRect(); if(Math.abs(r.top) > 120){ stepFindings.scrollIntoView({block:'start'}); } }catch(_e){} }, 120);
try{ if(typeof gtag==='function'){ gtag('event','diagnostic_findings',{event_category:'Diagnostic',event_label:lastUrl,value:(analysisData?analysisData.score:0),tunnel_variant:'B'}); } }catch(_e){}
}
(function(){ var g = document.getElementById('rfd-teaser-go'); if(g) g.addEventListener('click', showEmailStep); })();
// Sortie basse : l'email est deja capte, la personne n'est donc jamais perdue si elle refuse l'appel.
(function(){
var x = document.getElementById('rfd-lowexit'); if(!x) return;
x.addEventListener('click', function(){
var g = document.getElementById('rfd-findings-go'); if(g) g.classList.add('rfd-hidden');
var r = document.getElementById('rfd-fx-reassure'); if(r) r.classList.add('rfd-hidden');
var done = document.createElement('div');
done.className = 'rfd-lowexit-done';
done.textContent = "C'est noté, aucun appel. Votre bilan reste affiché ci-dessus : vous pouvez le traiter point par point.";
x.parentNode.replaceChild(done, x);
try{ if(typeof gtag==='function'){ gtag('event','diagnostic_no_call',{event_category:'Diagnostic',event_label:lastUrl,tunnel_variant:'B'}); } }catch(_e){}
});
})();
function goToQuiz(){
stepScan.classList.add('rfd-hidden');
if(stepEmail) stepEmail.classList.add('rfd-hidden');
if(stepFindings) stepFindings.classList.add('rfd-hidden');
stepQuiz.classList.remove('rfd-hidden');
stepIn(stepQuiz, 'rfd-anim', 0);
try{ stepQuiz.scrollIntoView({behavior:'smooth', block:'start'}); }catch(_e){}
qi = 0; answers = {}; if(lastEmail) answers.email = lastEmail;
renderQ(0);
}
(function(){ var g=document.getElementById('rfd-findings-go'); if(g) g.addEventListener('click', goToQuiz); })();
function qesc(s){ return (s||'').replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>').replace(/"/g,'"'); }
function buildQ(q){
var h = '<div class="rfd-qtop">';
if(q.eyebrow) h += '<div class="rfd-qbadge">✓ '+qesc(q.eyebrow)+'</div>';
h += '<p class="rfd-qlabel">'+qesc(q.label)+'</p>';
if(q.hint) h += '<p class="rfd-qhint">'+qesc(q.hint)+'</p>';
h += '</div>';
if(q.type==='confirm'){
h += '<button type="button" class="rfd-btn rfd-qgo">'+qesc(q.btn)+' →</button>';
} else if(q.type==='textarea'){
h += '<div class="rfd-fields"><textarea class="rfd-qinput" rows="3" placeholder="'+qesc(q.ph)+'"></textarea></div>';
if(q.key==='a2'){ h += '<div class="rfd-sugg"><span class="rfd-sugg-t">Choisissez ou écrivez votre blocage</span>' + A2_SUGG.map(function(s){ return '<button type="button" class="rfd-sugg-chip" data-t="'+qesc(s.t)+'">'+qesc(s.l)+'</button>'; }).join('') + '</div>'; }
h += '<button type="button" class="rfd-btn rfd-qgo">Continuer →</button>';
} else {
var it = q.type==='email' ? 'email' : 'text';
h += '<div class="rfd-fields"><input class="rfd-qinput" type="'+it+'" inputmode="'+it+'" name="'+(q.type==='email'?'email':'name')+'" placeholder="'+qesc(q.ph)+'" autocomplete="'+(q.type==='email'?'email':'name')+'" autocapitalize="'+(q.type==='email'?'off':'words')+'" spellcheck="false"></div>';
// Pastilles de noms issues des mentions legales (page legalement obligatoire).
// JAMAIS de pre-remplissage : la personne TAPE la pastille si c'est bien elle.
if(q.key === 'name' && peopleNames.length){
h += '<div class="rfd-sugg"><span class="rfd-sugg-t">C\'est vous ? Touchez votre nom</span>'
+ peopleNames.map(function(n){ return '<button type="button" class="rfd-sugg-chip" data-n="'+qesc(n)+'">'+qesc(n)+'</button>'; }).join('')
+ '</div>';
}
h += '<button type="button" class="rfd-btn rfd-qgo">Continuer →</button>';
}
h += '<div class="rfd-err rfd-qerr"></div>';
return h;
}
function advance(){
if(qLock) return;
var q = QS[qi];
var el = qview.firstElementChild; if(!el) return;
var errEl = el.querySelector('.rfd-qerr');
var val;
if(q.type==='confirm'){ val = q.val; }
else {
var inp = el.querySelector('.rfd-qinput');
val = (inp.value || '').trim();
if(q.type==='email'){
if(!/^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(val)){ errEl.textContent = 'Entrez un email valide pour continuer.'; inp.focus(); return; }
} else if(!val){ errEl.textContent = 'Merci de répondre pour continuer.'; inp.focus(); return; }
if(q.key === 'a2'){
var mm = val.match(/probl[eé]matique n°1 en seo est\s*(.*)$/i);
var after = mm ? mm[1].replace(/[.\s]+$/, '').trim() : val;
if(after.length < 3){ errEl.textContent = 'Choisissez un blocage ci-dessous, ou décrivez le vôtre.'; try{ inp.focus(); inp.selectionStart = inp.selectionEnd = inp.value.length; }catch(_e){} return; }
}
}
answers[q.key] = val;
if(q.key==='email'){
lastEmail = val;
try{ if(typeof gtag==='function'){ gtag('event','lead_email',{event_category:'Diagnostic',event_label:lastUrl}); } }catch(_e){}
try{ fetch(LEAD_API, { method:'POST', headers:{'content-type':'application/json'}, body: JSON.stringify({ id:leadId, url:lastUrl, email:val }) }).catch(function(){}); }catch(_e){}
}
// Variante B : l email est deja capte avant le bilan -> la fin du quiz ouvre directement l agenda.
if(qi >= QS.length - 1){ revealCalendar(); return; }
qi++; renderQ(qi, 1);
}
function goBack(){ if(qLock || qi === 0) return; qi--; renderQ(qi, -1); }
function renderQ(i){
var q = QS[i];
try{ stepQuiz.scrollIntoView({behavior:'smooth', block:'start'}); }catch(_e){}
var next = document.createElement('div');
next.className = 'rfd-q' + (reduceM ? '' : ' rfd-q-enter');
next.innerHTML = buildQ(q);
qLock = true;
var old = qview.firstElementChild;
if(old && !reduceM){ old.classList.add('rfd-q-leave'); }
function swapIn(){
if(old){ old.remove(); }
qview.appendChild(next);
var go = next.querySelector('.rfd-qgo'); if(go){ go.addEventListener('click', advance); }
var inp = next.querySelector('.rfd-qinput');
if(inp){
if(answers[q.key]){ inp.value = answers[q.key]; }
else if(q.key === 'a2' && prefillA2){ inp.value = prefillA2; markPrefillNote(inp); }
if(inp.tagName === 'TEXTAREA'){ inp.addEventListener('input', function(){ autoGrow(inp); }); }
var suggs = next.querySelectorAll('.rfd-sugg-chip');
[].forEach.call(suggs, function(b){ b.addEventListener('click', function(){
// Pastille de NOM (mentions legales) : on remplit le champ tel quel.
var nm = b.getAttribute('data-n');
if(nm){ inp.value = nm; try{ inp.focus(); inp.selectionStart = inp.selectionEnd = inp.value.length; }catch(_e0){} return; }
var t = b.getAttribute('data-t'); var v = inp.value; var re = /(probl[eé]matique n°1 en seo est\s*).*/i;
if(re.test(v)){ inp.value = v.replace(re, '$1' + t + '.'); }
else { var base = v.replace(/[\s.]*$/, ''); inp.value = (base ? base + ' ' : '') + t.charAt(0).toUpperCase() + t.slice(1) + '.'; }
try{ inp.focus(); inp.selectionStart = inp.selectionEnd = inp.value.length; }catch(_e){} autoGrow(inp);
}); });
inp.addEventListener('keydown', function(e){ if(e.key === 'Enter' && !(inp.tagName === 'TEXTAREA' && e.shiftKey)){ e.preventDefault(); advance(); } });
setTimeout(function(){ try{ inp.focus(); if(inp.value){ inp.selectionStart = inp.selectionEnd = inp.value.length; } autoGrow(inp); }catch(_e){} }, reduceM ? 0 : 260);
}
setTimeout(function(){ if(!reduceM){ next.classList.remove('rfd-q-enter'); } qLock = false; }, reduceM ? 0 : 30);
}
setTimeout(swapIn, (old && !reduceM) ? 190 : 0);
qbar.style.width = Math.round(((i+1)/QS.length)*100) + '%';
qcount.textContent = (i+1) + '/' + QS.length;
qback.disabled = (i === 0);
}
function revealCalendar(){
stepQuiz.classList.add('rfd-hidden');
if(stepEmail) stepEmail.classList.add('rfd-hidden');
stepDone.classList.remove('rfd-hidden');
stepIn(stepDone, 'rfd-anim-fade', 0);
try{ stepDone.scrollIntoView({behavior:'smooth', block:'start'}); }catch(_e){}
var cal = document.getElementById('rfd-cal');
cal.innerHTML = '';
function doInit(){
if(cal.getAttribute('data-rfd-cal'))return; cal.setAttribute('data-rfd-cal','1');
var p = [];
if(lastUrl) p.push('a1=' + encodeURIComponent(lastUrl));
var a2val = answers.a2; if(!a2val){ try{ a2val = buildAutoA2(); }catch(_e){ a2val = ''; } }
if(a2val) p.push('a2=' + encodeURIComponent(a2val));
if(answers.a3) p.push('a3=' + encodeURIComponent(answers.a3));
if(answers.a4) p.push('a4=' + encodeURIComponent(answers.a4));
if(answers.name) p.push('name=' + encodeURIComponent(answers.name));
if(lastEmail) p.push('email=' + encodeURIComponent(lastEmail));
var calUrl = CALENDLY + (p.length ? '&' + p.join('&') : '');
try{ window.Calendly.initInlineWidget({url:calUrl, parentElement:cal}); }catch(_e){}
}
if(window.Calendly && window.Calendly.initInlineWidget){ doInit(); }
else {
var s = document.createElement('script');
s.src = 'https://assets.calendly.com/assets/external/widget.js';
s.async = true;
s.onload = doInit;
document.body.appendChild(s);
}
}
qback.addEventListener('click', goBack);
window.addEventListener('message', function(e){
try{
// Ce handler gere UNIQUEMENT la Calendly du tunnel. S'il tourne alors que l'etape finale
// du tunnel n'est pas affichee, c'est la Calendly directe (#cal-direct) qui a emis -> on ignore
// (sinon il scrollait la page de facon aberrante a la selection d'un creneau).
if(!stepDone || stepDone.classList.contains('rfd-hidden')) return;
if((''+e.origin).indexOf('calendly.com') > -1 && e.data && e.data.event === 'calendly.date_and_time_selected'){
// Calendly reaffiche son widget par le HAUT apres le choix du creneau. Or le bouton
// « Confirmer l'evenement » est tout en BAS de son formulaire, et l'iframe fait 1000px
// sur mobile pour un ecran de ~812px : le bouton tombe sous la ligne de flottaison et
// la personne croit avoir termine. On redescend donc sur le bas + on affiche le rappel.
try{
var _h = document.getElementById('rfd-calhint');
var _ht = document.getElementById('rfd-calhint-top');
if(_h) _h.hidden = false;
if(_ht) _ht.hidden = false; // celui du HAUT : visible la ou Calendly remonte, meme si le scroll echoue
// Calendly scrolle LUI-MEME vers le haut de son widget, et il le fait APRES nous :
// un seul scroll se fait ecraser (constate par Vincent le 16/07). On insiste donc sur
// ~1,6 s pour repasser devant lui, mais on ABANDONNE des que la personne touche
// l'ecran ou la molette : on ne se bat jamais contre un utilisateur qui scrolle.
var _stop = false;
var _mano = function(){ _stop = true; };
window.addEventListener('wheel', _mano, {passive:true});
window.addEventListener('touchstart', _mano, {passive:true});
// Position calculee EXPLICITEMENT plutot que scrollIntoView : on veut le BAS du rappel
// colle au BAS de l'ecran, donc le bouton « Confirmer » de Calendly juste au-dessus.
// (scrollIntoView delegue au navigateur et n'aboutissait pas : constate par Vincent.)
var _bas = function(_fluide){
var _t = document.getElementById('rfd-calhint') || document.getElementById('rfd-cal');
if(!_t) return;
var _r = _t.getBoundingClientRect();
var _y = window.pageYOffset + _r.bottom - window.innerHeight + 14;
var _max = Math.max(0, document.documentElement.scrollHeight - window.innerHeight);
_y = Math.max(0, Math.min(_y, _max));
window.scrollTo({ top: _y, behavior: _fluide ? 'smooth' : 'auto' });
};
// 1re passe fluide (agreable), puis passes INSTANTANEES : un scroll fluide relance
// en boucle se reinitialise sans jamais aboutir, et Calendly scrolle apres nous.
setTimeout(function(){ if(!_stop) _bas(true); }, 420);
[1100, 1700, 2400, 3100].forEach(function(_d){
setTimeout(function(){ if(!_stop) _bas(false); }, _d);
});
setTimeout(function(){
try{ window.removeEventListener('wheel', _mano); window.removeEventListener('touchstart', _mano); }catch(_e3){}
}, 3300);
}catch(_e1){}
}
if((''+e.origin).indexOf('calendly.com') > -1 && e.data && e.data.event === 'calendly.event_scheduled'){
try{ var _hh=document.getElementById('rfd-calhint'); if(_hh) _hh.hidden = true; var _hht=document.getElementById('rfd-calhint-top'); if(_hht) _hht.hidden = true; }catch(_e0){}
try{ if(typeof gtag==='function'){ gtag('event','rdv_reserve',{event_category:'Diagnostic',event_label:lastUrl}); } }catch(_e){}
if(leadId && lastUrl){ try{ fetch(LEAD_API, { method:'POST', headers:{'content-type':'application/json'}, body: JSON.stringify({ id:leadId, url:lastUrl, booked:true }) }).catch(function(){}); }catch(_e){} }
}
}catch(err){}
});
document.addEventListener('click', function(e){
var t = e.target.closest && e.target.closest('[data-rfd-cta]');
if(t){
e.preventDefault();
root.scrollIntoView({behavior:'smooth', block:'center'});
setTimeout(function(){ try{ if(!stepForm.classList.contains('rfd-hidden')) elUrl.focus(); }catch(_e){} }, 500);
}
});
}
if(document.readyState === 'loading'){ document.addEventListener('DOMContentLoaded', boot); }
else { boot(); }
})();
</script>
<script>
/* Quiz "Avez-vous besoin d'un accompagnement SEO ?" - assistant étape par étape, vanilla. */
(function(){
var form = document.getElementById("quizForm");
if(!form) return;
var steps = [].slice.call(form.querySelectorAll(".quiz-step"));
var bar = document.getElementById("quizBar");
var count = document.getElementById("quizCount");
var back = document.getElementById("quizBack");
var result = document.getElementById("quizResult");
var cur = 0, TOTAL = steps.length;
function render(focus){
steps.forEach(function(s, i){ s.classList.toggle("is-active", i === cur); });
bar.style.width = Math.round(((cur + 1) / TOTAL) * 100) + "%";
count.textContent = "Question " + (cur + 1) + " sur " + TOTAL;
back.style.visibility = cur > 0 ? "visible" : "hidden";
if(focus){ try{ var r = steps[cur].querySelector("input"); r && r.focus({preventScroll:true}); }catch(_e){} }
}
var quizLock = false;
function quizPick(radio){
if(quizLock || !radio) return;
var step = radio.closest(".quiz-step"); if(!step) return;
radio.checked = true;
step.querySelectorAll(".quiz-opt").forEach(function(l){ l.classList.toggle("sel", l.querySelector("input").checked); });
quizLock = true;
if(cur < TOTAL - 1){ setTimeout(function(){ cur++; quizLock = false; render(true); }, 260); }
else { setTimeout(finish, 320); }
}
/* Avance au CLIC (fiable meme si l'option est deja cochee) ET au change (clavier). Verrou anti double-avance. */
form.addEventListener("change", function(e){ if(e.target && e.target.type === "radio") quizPick(e.target); });
form.addEventListener("click", function(e){ var opt = e.target.closest && e.target.closest(".quiz-opt"); if(opt) quizPick(opt.querySelector("input")); });
back.addEventListener("click", function(){ if(cur > 0){ cur--; render(true); } });
function finish(){
var score = 0;
form.querySelectorAll("input[type=radio]:checked").forEach(function(i){ score += parseInt(i.value, 10) || 0; });
var cls, badge, title, msg, cta;
if(score >= 7){
cls = "hi"; badge = "✓";
title = "Oui, un accompagnement SEO est clairement fait pour vous.";
msg = "Vous avez une activité qui tourne et la volonté d'investir dans la durée. Le SEO peut devenir votre canal d'acquisition le plus rentable. La prochaine étape logique : un diagnostic pour identifier vos leviers prioritaires.";
cta = "<a class='btn btn-primary' href='#diagnostic' data-rfd-cta>Lancer mon diagnostic SEO →</a>";
} else if(score >= 4){
cls = "mid"; badge = "≈";
title = "Probablement, mais validons-le ensemble.";
msg = "Il y a de vrais signaux positifs, et sûrement 2 ou 3 points à clarifier. Le plus simple : un diagnostic offert de 30 min. On regarde votre site en direct et je vous dis franchement si un accompagnement en vaut la peine pour vous.";
cta = "<a class='btn btn-primary' href='#diagnostic' data-rfd-cta>Lancer mon diagnostic SEO →</a>";
} else {
cls = "lo"; badge = "!";
title = "Honnêtement, ce n'est pas encore le moment.";
msg = "Un accompagnement SEO donne le meilleur quand vous avez déjà du chiffre d'affaires et de la patience sur 6 à 12 mois. Ce n'est pas tout à fait votre situation, et je préfère vous le dire plutôt que de vous vendre l'inverse. Commencez par les bases : ma checklist SEO gratuite, et revenez quand votre activité aura décollé.";
cta = "<a class='btn btn-ghost' href='https://formation.vincenthego.com/la-checklist-seo'>Recevoir la checklist SEO gratuite</a>";
}
form.style.display = "none";
var pg = document.querySelector(".quiz-progress"); if(pg) pg.style.display = "none";
count.style.display = "none";
var nav = document.querySelector(".quiz-nav"); if(nav) nav.style.display = "none";
result.innerHTML = "<div class='qr-badge " + cls + "'>" + badge + "</div><div class='qr-title'>" + title + "</div><p>" + msg + "</p>" + cta;
result.hidden = false;
try{ if(typeof gtag === "function"){ gtag("event", "quiz_accompagnement", {event_category:"Quiz", event_label:cls, value:score}); } }catch(_e){}
try{ result.scrollIntoView({behavior:"smooth", block:"center"}); }catch(_e){}
}
render(false);
})();
</script>
<script>
(function(){
var header=document.getElementById('site-header');
var burger=document.querySelector('label.burger');
var nav=document.querySelector('.site-nav');
var box=document.getElementById('navtoggle');
function set(open){
header.classList.toggle('menu-open',open);
if(nav){nav.style.transform=open?'translateY(0)':'';nav.style.visibility=open?'visible':'';}
if(box)box.checked=open;
}
if(burger){burger.addEventListener('click',function(e){e.preventDefault();set(!header.classList.contains('menu-open'));});}
document.querySelectorAll('.site-nav a').forEach(function(a){a.addEventListener('click',function(){
if(header.classList.contains('menu-open')&&a.target!=='_blank')set(false);
});});
})();
</script>
<script>(function(){var p=document.getElementById("scroll-prog");if(!p)return;var tick=false;function upd(){var h=document.documentElement.scrollHeight-window.innerHeight;p.style.width=(h>0?Math.min(100,window.scrollY/h*100):0)+"%";}function onS(){if(tick)return;tick=true;requestAnimationFrame(function(){upd();tick=false;});}window.addEventListener("scroll",onS,{passive:true});window.addEventListener("resize",upd,{passive:true});upd();})();</script><script defer src="/assets/consent.js?v=5"></script>
<!-- ===== Widget WhatsApp conversationnel (site-wide) ===== -->
<style id="vh-wa">
.vhwa{position:fixed;right:22px;bottom:22px;z-index:5000;font-family:var(--font,'Gilroy',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif);transition:bottom .35s var(--ease,cubic-bezier(.22,1,.36,1))}
.vhwa *{box-sizing:border-box}
/* --- bouton flottant --- */
.vhwa-fab{position:relative;display:flex;align-items:center;justify-content:center;width:62px;height:62px;border:0;border-radius:50%;
background:#25d366;cursor:pointer;box-shadow:0 8px 24px rgba(37,211,102,.42),0 3px 8px rgba(20,16,60,.18);
transition:transform .28s var(--ease,cubic-bezier(.22,1,.36,1)),box-shadow .28s ease;-webkit-tap-highlight-color:transparent;overflow:visible}
.vhwa-fab:hover{transform:scale(1.07);box-shadow:0 12px 30px rgba(37,211,102,.5),0 4px 10px rgba(20,16,60,.2)}
.vhwa-fab:active{transform:scale(.96)}
.vhwa-fab svg{width:34px;height:34px;fill:#fff;transition:transform .35s var(--ease,ease)}
.vhwa-fab:hover svg{transform:rotate(-6deg) scale(1.05)}
.vhwa-fab:focus-visible{outline:3px solid #0a7d49;outline-offset:3px}
/* halo pulsé (6 cycles puis stop) */
.vhwa-fab::before{content:"";position:absolute;inset:0;border-radius:50%;background:#25d366;z-index:-1;opacity:0;animation:vhwaPulse 2.4s ease-out 6}
@keyframes vhwaPulse{0%{transform:scale(1);opacity:.55}70%{transform:scale(1.7);opacity:0}100%{transform:scale(1.7);opacity:0}}
/* point rouge de notif (parfaitement centré) */
.vhwa-dot{position:absolute;top:-3px;right:-3px;display:flex;align-items:center;justify-content:center;width:22px;height:22px;
border-radius:50%;background:#ff3b30;color:#fff;font-size:12px;font-weight:700;line-height:1;border:2.5px solid #fff;
box-shadow:0 2px 6px rgba(255,59,48,.45);animation:vhwaPop .45s var(--ease,ease) both}
@keyframes vhwaPop{0%{transform:scale(0)}60%{transform:scale(1.18)}100%{transform:scale(1)}}
/* label de survol (desktop) */
.vhwa-tip{position:absolute;right:74px;bottom:14px;white-space:nowrap;background:#fff;color:var(--ink,#15131f);font-size:14px;font-weight:600;
padding:10px 15px;border-radius:14px;box-shadow:0 6px 20px rgba(20,16,60,.16);opacity:0;transform:translateX(10px) scale(.9);
transform-origin:right center;pointer-events:none;transition:opacity .25s ease,transform .3s var(--ease,ease)}
.vhwa-tip::after{content:"";position:absolute;right:-6px;top:50%;margin-top:-6px;border:6px solid transparent;border-left-color:#fff;border-right:0}
.vhwa-fab:hover+.vhwa-tip,.vhwa-tip.show{opacity:1;transform:translateX(0) scale(1)}
/* --- panneau chat --- */
.vhwa-panel{position:absolute;right:0;bottom:80px;width:340px;max-width:calc(100vw - 32px);height:520px;max-height:calc(100dvh - 130px);
background:#eae2d9;border-radius:18px;overflow:hidden;display:flex;flex-direction:column;
box-shadow:0 18px 60px rgba(11,20,26,.28),0 6px 18px rgba(11,20,26,.16);
opacity:0;transform:translateY(16px) scale(.94);transform-origin:bottom right;pointer-events:none;visibility:hidden;
transition:opacity .26s ease,transform .3s var(--ease,cubic-bezier(.22,1,.36,1)),visibility 0s linear .3s}
.vhwa.open .vhwa-panel{opacity:1;transform:translateY(0) scale(1);pointer-events:auto;visibility:visible;
transition:opacity .26s ease,transform .3s var(--ease,cubic-bezier(.22,1,.36,1)),visibility 0s}
.vhwa.open .vhwa-fab::before{animation:none;opacity:0}
.vhwa-panel:focus{outline:none}
@media(hover:none){.vhwa-x:hover,.vhwa-back:hover{background:transparent}}
/* header */
.vhwa-head{display:flex;align-items:center;gap:11px;padding:11px 10px 11px 14px;background:#0a7d49;
background-image:linear-gradient(180deg,rgba(255,255,255,.07),rgba(0,0,0,.05));color:#fff;flex:none}
.vhwa-ava{position:relative;width:42px;height:42px;border-radius:50%;flex:none;background:#0e5d3a}
.vhwa-ava::before{content:"VH";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#fff;font-size:14px;font-weight:700}
.vhwa-ava img{position:relative;width:42px;height:42px;border-radius:50%;object-fit:cover;display:block;border:1.5px solid rgba(255,255,255,.5)}
.vhwa-ava::after{content:"";position:absolute;right:-1px;bottom:-1px;width:12px;height:12px;border-radius:50%;background:#4ade80;border:2px solid #0a7d49}
.vhwa-hi{flex:1;min-width:0;line-height:1.25}
.vhwa-name{font-size:16px;font-weight:700;color:#fff}
.vhwa-status{font-size:13px;color:rgba(255,255,255,.92);display:flex;align-items:center;gap:5px}
.vhwa-status::before{content:"";width:7px;height:7px;border-radius:50%;background:#4ade80;display:inline-block}
.vhwa-x{border:0;background:transparent;color:#fff;cursor:pointer;width:44px;height:44px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex:none;transition:background .2s}
.vhwa-x:hover{background:rgba(255,255,255,.16)}
.vhwa-x:focus-visible{outline:2px solid #fff;outline-offset:2px}
.vhwa-x svg{width:20px;height:20px;stroke:#fff;stroke-width:2.4;fill:none}
/* bouton retour (mode réservation Calendly) */
.vhwa-back{display:none;border:0;background:transparent;cursor:pointer;width:40px;height:40px;flex:0 0 40px;align-items:center;justify-content:center;border-radius:50%;transition:background .2s;padding:0;margin:0 2px 0 -6px}
.vhwa-back:hover{background:rgba(255,255,255,.16)}
.vhwa-back:focus-visible{outline:2px solid #fff;outline-offset:2px}
.vhwa-back svg{width:22px;height:22px;stroke:#fff;stroke-width:2.4;fill:none;display:block}
.vhwa.booking .vhwa-back{display:flex}
/* conteneur Calendly inline */
.vhwa-cal{display:none;flex:1;min-height:0;background:#fff;position:relative}
.vhwa-cal:empty::before{content:"Chargement du calendrier…";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#667781;font-size:14px}
.vhwa-cal .calendly-inline-widget,.vhwa-cal iframe{width:100%!important;height:100%!important;min-width:0!important}
.vhwa.booking .vhwa-body,.vhwa.booking .vhwa-foot{display:none}
.vhwa.booking .vhwa-cal{display:block}
/* fenêtre agrandie en mode réservation */
.vhwa.booking .vhwa-panel{width:min(460px,calc(100vw - 24px));height:min(86dvh,720px)}
/* corps */
.vhwa-body{flex:1;overflow-y:auto;display:flex;flex-direction:column;align-items:stretch;padding:16px 14px 16px;background-color:#eae2d9;
background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='58' height='58' viewBox='0 0 58 58'%3E%3Cg fill='none' stroke='%23d6cbbc' stroke-width='1.1' opacity='.55'%3E%3Cpath d='M8 13h11a2 2 0 0 1 2 2v6a2 2 0 0 1-2 2h-5l-3 3v-3H8a2 2 0 0 1-2-2v-6a2 2 0 0 1 2-2z'/%3E%3Ccircle cx='44' cy='40' r='5'/%3E%3Cpath d='M35 12l3 3 5-6'/%3E%3C/g%3E%3C/svg%3E");
scrollbar-width:thin;scrollbar-color:#c9bfb0 transparent}
.vhwa-body::-webkit-scrollbar{width:6px}.vhwa-body::-webkit-scrollbar-thumb{background:#c9bfb0;border-radius:3px}
.vhwa-body>*{flex:0 0 auto}
.vhwa-body>*:first-child{margin-top:0}
.vhwa-row{display:flex;align-items:flex-end;gap:7px;margin-top:13px;animation:vhwaIn .34s var(--ease,ease) both}
.vhwa-row.me{justify-content:flex-end}
@keyframes vhwaIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.vhwa-mini{width:26px;height:26px;border-radius:50%;object-fit:cover;flex:none;box-shadow:0 1px 2px rgba(11,20,26,.15)}
.vhwa-mini.spacer{visibility:hidden}
.vhwa-bub{position:relative;max-width:80%;padding:8px 11px 7px;border-radius:9px;font-size:15px;line-height:1.42;color:#111b21;
font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
box-shadow:0 1px 1px rgba(11,20,26,.13);word-wrap:break-word}
.vhwa-bub.them{background:#fff;border-top-left-radius:2px}
.vhwa-bub.them::before{content:"";position:absolute;top:0;left:-7px;border-top:8px solid #fff;border-left:8px solid transparent}
.vhwa-bub.you{background:#d9fdd3;border-top-right-radius:2px}
.vhwa-bub.you::before{content:"";position:absolute;top:0;right:-7px;border-top:8px solid #d9fdd3;border-right:8px solid transparent}
.vhwa-tm{display:flex;justify-content:flex-end;align-items:center;gap:3px;font-size:11px;color:#667781;margin-top:3px}
.vhwa-tm svg{width:16px;height:11px;flex:none}
/* typing : points immobiles qui s'allument un par un */
.vhwa-typing{position:relative;display:inline-flex;gap:5px;align-items:center;padding:10px 12px;background:#fff;border-radius:9px;border-top-left-radius:2px;box-shadow:0 1px 1px rgba(11,20,26,.13)}
.vhwa-typing::before{content:"";position:absolute;top:0;left:-6px;border-top:7px solid #fff;border-left:7px solid transparent}
.vhwa-typing i{width:7px;height:7px;border-radius:50%;background:#9aa6ad;opacity:.28;animation:vhwaBlink 1.4s infinite ease-in-out}
.vhwa-typing i:nth-child(2){animation-delay:.25s}.vhwa-typing i:nth-child(3){animation-delay:.5s}
@keyframes vhwaBlink{0%,70%,100%{opacity:.28;background:#9aa6ad}35%{opacity:1;background:#5a6b73}}
/* quick replies (pastilles premium empilées à droite) */
.vhwa-qr{display:flex;flex-direction:column;align-items:flex-end;gap:11px;margin:15px 0 0}
.vhwa-qr.more{margin-top:18px}
.vhwa-sep{align-self:stretch;display:flex;align-items:center;gap:10px;margin:0 2px 8px;color:#6b7b72;font-size:12px;font-weight:600}
.vhwa-sep::before,.vhwa-sep::after{content:"";flex:1;height:1px;background:rgba(11,20,26,.12)}
.vhwa-chip{display:inline-flex;align-items:center;gap:10px;min-height:44px;max-width:100%;border:1.5px solid #d5e9df;background:#fff;color:#0a7d49;
font-family:var(--font,'Gilroy',sans-serif);font-size:14.5px;font-weight:600;
padding:7px 18px 7px 7px;border-radius:16px;cursor:pointer;box-shadow:0 1px 3px rgba(11,20,26,.09);
transition:background .18s,color .18s,border-color .18s,box-shadow .2s,transform .18s;line-height:1.2;text-align:left;
animation:vhwaIn .34s var(--ease,ease) both}
.vhwa-chip .ic{width:30px;height:30px;border-radius:50%;background:#eaf6f0;display:flex;align-items:center;justify-content:center;flex:none;transition:background .18s}
.vhwa-chip .ic svg{width:16px;height:16px}
.vhwa-chip svg{flex:none}
.vhwa-chip:hover{background:#0a7d49;color:#fff;border-color:#0a7d49;box-shadow:0 6px 16px rgba(10,125,73,.26);transform:translateY(-1px)}
.vhwa-chip:hover .ic{background:rgba(255,255,255,.22)}
.vhwa-chip:active{transform:scale(.98)}
.vhwa-chip:focus-visible{outline:2px solid #0a7d49;outline-offset:2px}
.vhwa-chip.opt{padding:10px 16px}
/* CTA final */
.vhwa-cta{display:flex;align-items:center;justify-content:center;gap:9px;width:100%;margin-top:16px;padding:14px 16px;border-radius:14px;
font-family:var(--font,'Gilroy',sans-serif);font-size:15px;font-weight:700;text-decoration:none;cursor:pointer;border:0;transition:transform .18s,box-shadow .2s,background .2s;
animation:vhwaIn .34s var(--ease,ease) both}
.vhwa-cta:hover{transform:translateY(-2px)}
.vhwa-cta:active{transform:scale(.98)}
.vhwa-cta:focus-visible{outline:2px solid #0a7d49;outline-offset:2px}
.vhwa-cta.wa{background:#0a7d49;color:#fff;box-shadow:0 6px 16px rgba(10,125,73,.3)}
.vhwa-cta.wa:hover{background:#08693d}
.vhwa-cta.brand{background:linear-gradient(135deg,var(--orange,#f05820),var(--orange-soft,#ff7a4a));color:#fff;box-shadow:0 6px 16px rgba(240,88,32,.32)}
.vhwa-cta svg{width:20px;height:20px;fill:currentColor;flex:none}
/* barre de saisie */
.vhwa-foot{flex:none;display:flex;align-items:center;gap:9px;padding:9px 10px;background:#f0f0f0;border-top:1px solid #e0ddd6}
.vhwa-fake{flex:1;min-width:0;min-height:44px;background:#fff;border:0;border-radius:999px;padding:11px 16px;
font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;font-size:16px;color:#111b21;transition:box-shadow .2s}
.vhwa-fake::placeholder{color:#54656f}
.vhwa-fake:hover{box-shadow:0 0 0 2px #d9e6df inset}
.vhwa-fake:focus{outline:none;box-shadow:0 0 0 2px #0a7d49 inset}
.vhwa-send{flex:none;width:44px;height:44px;border-radius:50%;border:0;background:#0a7d49;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:transform .18s,background .2s}
.vhwa-send:hover{background:#08693d;transform:scale(1.06)}
.vhwa-send svg{width:22px;height:22px;fill:#fff;margin-left:2px}
.vhwa-send:focus-visible{outline:2px solid #0a7d49;outline-offset:2px}
@media (max-width:480px){
.vhwa{right:14px;bottom:14px}
.vhwa-panel{bottom:76px;width:calc(100vw - 24px);height:min(74dvh,540px)}
.vhwa.booking .vhwa-panel{width:calc(100vw - 12px);height:min(90dvh,760px)}
.vhwa-tip{display:none}
}
@media (prefers-reduced-motion:reduce){
.vhwa-fab::before{animation:none;opacity:0}
.vhwa-row,.vhwa-chip,.vhwa-cta,.vhwa-dot{animation:none}
.vhwa-typing i{animation:none;opacity:.6}
.vhwa-panel{transition:opacity .2s ease}
}
</style>
<div class="vhwa" id="vhwa" aria-live="polite">
<div class="vhwa-panel" id="vhwa-panel" role="dialog" aria-label="Discuter avec Vincent Hégo sur WhatsApp" aria-modal="false" tabindex="-1" inert>
<div class="vhwa-head">
<button class="vhwa-back" id="vhwa-back" aria-label="Retour à la discussion"><svg viewbox="0 0 24 24" fill="none" aria-hidden="true"><path d="M15 6l-6 6 6 6" stroke-linecap="round" stroke-linejoin="round"/></svg></button>
<span class="vhwa-ava"><img src="/assets/brand/vincent-rond.webp" width="42" height="42" alt="Vincent Hégo" loading="lazy" decoding="async"></span>
<span class="vhwa-hi"><span class="vhwa-name">Vincent Hégo</span><span class="vhwa-status">En ligne</span></span>
<button class="vhwa-x" id="vhwa-close" aria-label="Fermer la discussion"><svg viewbox="0 0 24 24" aria-hidden="true"><path d="M6 6l12 12M18 6L6 18" stroke-linecap="round"/></svg></button>
</div>
<div class="vhwa-body" id="vhwa-body"></div>
<div class="vhwa-cal" id="vhwa-cal"></div>
<div class="vhwa-foot">
<input class="vhwa-fake" id="vhwa-fake" type="text" maxlength="500" enterkeyhint="send" placeholder="Posez votre question…" aria-label="Votre question pour Vincent (envoyée via WhatsApp)">
<button class="vhwa-send" id="vhwa-send" aria-label="Envoyer sur WhatsApp"><svg viewbox="0 0 24 24" aria-hidden="true"><path d="M3 20.5l18-8.5L3 3.5 3 10l13 2-13 2z"/></svg></button>
</div>
</div>
<button class="vhwa-fab" id="vhwa-fab" aria-label="Ouvrir la discussion WhatsApp avec Vincent Hégo" aria-expanded="false">
<svg viewbox="0 0 24 24" aria-hidden="true"><path d="M17.5 14.4c-.3-.15-1.7-.85-2-.95-.25-.1-.45-.15-.6.15-.2.3-.7.95-.85 1.1-.15.2-.3.2-.6.05-.3-.15-1.25-.45-2.4-1.5-.9-.8-1.5-1.75-1.65-2.05-.15-.3 0-.45.15-.6.15-.15.3-.35.45-.55.15-.2.2-.3.3-.5.1-.2.05-.4-.05-.55-.1-.15-.6-1.45-.85-2-.2-.5-.4-.45-.6-.45h-.5c-.2 0-.5.05-.75.35-.25.3-1 .95-1 2.35s1.05 2.7 1.2 2.9c.15.2 2.05 3.15 5 4.4.7.3 1.25.5 1.65.65.7.2 1.35.2 1.85.1.55-.05 1.7-.7 1.95-1.35.25-.65.25-1.2.15-1.35-.1-.1-.3-.15-.6-.3zM12 2a10 10 0 0 0-8.5 15.3L2 22l4.8-1.5A10 10 0 1 0 12 2zm0 18.2a8.2 8.2 0 0 1-4.2-1.15l-.3-.18-3 .8.8-2.9-.2-.3A8.2 8.2 0 1 1 12 20.2z"/></svg>
<span class="vhwa-dot" aria-hidden="true">1</span>
</button>
<span class="vhwa-tip" id="vhwa-tip" aria-hidden="true">👋 Une question SEO ? Écrivez-moi</span>
</div>
<script>
(function(){
var WA="https://wa.me/33756856634";
var root=document.getElementById('vhwa'),fab=document.getElementById('vhwa-fab'),body=document.getElementById('vhwa-body'),
tip=document.getElementById('vhwa-tip'),panel=document.getElementById('vhwa-panel'),dot=document.querySelector('.vhwa-dot'),
input=document.getElementById('vhwa-fake'),reduce=matchMedia('(prefers-reduced-motion:reduce)').matches,
started=false,qtimer=null,chosen={};
function wa(txt){return WA+(txt?'?text='+encodeURIComponent(txt):'');}
function track(n,p){try{if(typeof gtag==='function')gtag('event',n,p||{});}catch(e){}}
// Contexte de la page (accroche + source WhatsApp adaptées), dérivé au runtime :
var CTX=(function(){try{
var path=location.pathname.replace(/\/+$/,'/');
var title=(document.title||'').replace(/\s*\|.*$/,'').trim();
var m=path.match(/^\/((?:consultant|agence)-(?:seo|geo))-([a-z0-9-]+)\/$/);
if(m){
var h1=document.querySelector('h1');
var cm=(h1?h1.textContent:title).match(/(?:^|\s)à\s+([^,:.|]+?)\s*(?:[:,.|]|$)/);
if(cm){var ville=cm[1].trim();var isGeo=m[1].indexOf('geo')>-1;
var offre=(m[1].indexOf('agence')===0?'une agence ':'un consultant ')+(isGeo?'GEO':'SEO');
return {greet2:'Vous cherchez '+offre+' à '+ville+' ? Vous êtes au bon endroit. Choisissez un sujet ci-dessous, ou écrivez-moi 😊',
src:'votre page '+(isGeo?'GEO':'SEO')+' '+ville,ville:ville};}
}
if(/^\/blog\/.+\//.test(path))
return {greet2:'Une question sur cet article, ou sur votre référencement ? Choisissez ci-dessous ou écrivez-moi 😊',
src:'l\'article « '+title+' »',sujet:title};
}catch(e){}return {};})();
var SRC=CTX.src?' (depuis '+CTX.src+')':'';
function now(){var d=new Date();return (d.getHours()<10?'0':'')+d.getHours()+':'+(d.getMinutes()<10?'0':'')+d.getMinutes();}
function scroll(){body.scrollTop=body.scrollHeight;}
function esc(s){return s.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>');}
var CHECKS='<svg viewBox="0 0 18 12" fill="none" stroke="#53bdeb" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M1.5 6.6l3.2 3.2L10.2 4"/><path d="M7.6 9.8L16.5 1.6"/></svg>';
var AVA='<img class="vhwa-mini" src="/assets/brand/vincent-rond.webp" width="26" height="26" alt="" aria-hidden="true" decoding="async">';
function groupAva(r){var p=r.previousElementSibling;if(p&&p.classList.contains('them')){var a=p.querySelector('.vhwa-mini');if(a){a.classList.add('spacer');r.style.marginTop='7px';}}}
function bubble(side,html,time){var me=side==='me';var r=document.createElement('div');r.className='vhwa-row '+(me?'me':'them');
r.innerHTML=(me?'':AVA)+'<div class="vhwa-bub '+(me?'you':'them')+'">'+html+(time?'<span class="vhwa-tm">'+now()+(me?CHECKS:'')+'</span>':'')+'</div>';
body.appendChild(r);if(!me)groupAva(r);scroll();return r;}
function typing(cb,ms){var r=document.createElement('div');r.className='vhwa-row them';
r.innerHTML=AVA+'<span class="vhwa-typing" aria-label="Vincent écrit"><i></i><i></i><i></i></span>';body.appendChild(r);groupAva(r);scroll();
setTimeout(function(){r.remove();cb();},reduce?200:(ms||1400));}
// Tous les points d'entrée passent par l'arbre TREE + startTree() (plus de STEPS).
var ICON={wa:'<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M17.5 14.4c-.3-.15-1.7-.85-2-.95-.25-.1-.45-.15-.6.15-.2.3-.7.95-.85 1.1-.15.2-.3.2-.6.05-.3-.15-1.25-.45-2.4-1.5-.9-.8-1.5-1.75-1.65-2.05-.15-.3 0-.45.15-.6.15-.15.3-.35.45-.55.15-.2.2-.3.3-.5.1-.2.05-.4-.05-.55-.1-.15-.6-1.45-.85-2-.2-.5-.4-.45-.6-.45h-.5c-.2 0-.5.05-.75.35-.25.3-1 .95-1 2.35s1.05 2.7 1.2 2.9c.15.2 2.05 3.15 5 4.4.7.3 1.25.5 1.65.65.7.2 1.35.2 1.85.1.55-.05 1.7-.7 1.95-1.35.25-.65.25-1.2.15-1.35-.1-.1-.3-.15-.6-.3zM12 2a10 10 0 0 0-8.5 15.3L2 22l4.8-1.5A10 10 0 1 0 12 2zm0 18.2a8.2 8.2 0 0 1-4.2-1.15l-.3-.18-3 .8.8-2.9-.2-.3A8.2 8.2 0 1 1 12 20.2z"/></svg>',
arrow:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>'};
var CHIP={
seo:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z"/><path d="M12 15l-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z"/><path d="M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0"/><path d="M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5"/></svg>',
formation:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M22 10L12 5 2 10l10 5 10-5z"/><path d="M6 12v5c0 1.66 2.69 3 6 3s6-1.34 6-3v-5"/></svg>',
diag:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6A19.79 19.79 0 0 1 2.12 4.18 2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.13.96.36 1.9.7 2.81a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45c.91.34 1.85.57 2.81.7A2 2 0 0 1 22 16.92z"/></svg>',
ask:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z"/></svg>'};
function makeChip(key,label,i){var b=document.createElement('button');b.className='vhwa-chip';b.type='button';
b.innerHTML='<span class="ic">'+CHIP[key]+'</span><span>'+label+'</span>';
b.style.animationDelay=(reduce?0:i*70)+'ms';return b;}
function pfill(s){var v=CTX.ville?(' à '+CTX.ville):'';return s.replace(/\{ville\}/g,v).replace(/\{sujet\}/g,CTX.sujet||'votre référencement');}
function showQuick(){
var old=body.querySelector('.vhwa-qr');if(old)old.remove();
var qr=document.createElement('div');qr.className='vhwa-qr';
// [nœud d'arbre, icône, libellé]
var opts=[['boost','seo','Faire décoller mon SEO'],['diag','diag','Mon diagnostic offert'],['formation','formation','Me former au SEO'],['question','ask',"J'ai une question"]];
opts.forEach(function(o,i){var b=makeChip(o[1],o[2],i);b.onclick=function(){startTree(o[0],qr);};qr.appendChild(b);});
body.appendChild(qr);scroll();
}
// ===== Qualification guidée (arbre pondéré) déclenchée par « Poser une autre question » =====
var TREE={
// ---- entrée : Faire décoller mon SEO ----
boost:{q:"Génial 🚀 Pour faire décoller votre SEO{ville}, dites-moi : où en êtes-vous ?",a:[
{t:"J'ai un site mais il stagne",v:"mon site stagne",w:2,go:'secteur'},
{t:"Mon site est neuf ou à créer",v:"mon site est tout neuf (ou à créer)",w:1,go:'secteur'},
{t:"Je suis déjà visible, je veux plus",v:"je suis déjà visible mais je veux plus",w:2,go:'secteur'}
]},
secteur:{q:"Vous êtes dans quel domaine ?",a:[
{t:"E-commerce / boutique",v:"je suis en e-commerce",w:2,go:'budget',say:"L'e-commerce, c'est un terrain que j'adore 🛒 Fiches produits et catégories bien optimisées = du ROI rapide."},
{t:"SaaS / tech / B2B",v:"je suis dans le SaaS / la tech",w:3,go:'budget',say:"Le SEO pour les SaaS, c'est ma spécialité (Waalaxy, MarkCopy…) 🚀 C'est là que je fais vraiment la différence."},
{t:"Activité locale (resto, artisan…)",v:"j'ai une activité locale",w:2,go:'budget',say:"En local, le combo fiche Google + pages villes fait des merveilles 📍"},
{t:"Autre",v:"mon secteur est un peu à part",w:1,go:'budget'}
]},
budget:{q:"Votre budget mensuel pour accélérer ?",a:[
{t:"Moins de 1000€",v:"avec un budget de moins de 1000€/mois",w:1,go:'end'},
{t:"1000 à 3000€",v:"avec un budget de 1000 à 3000€/mois",w:3,go:'end'},
{t:"Plus de 3000€",v:"avec un budget de plus de 3000€/mois",w:3,go:'end'},
{t:"À définir ensemble",v:"avec un budget encore à définir",w:1,go:'end'}
]},
// ---- entrée : Me former ----
formation:{q:"Excellent choix 🎓 La formation, c'est ranker sans dépendre de personne. Vous partez d'où ?",a:[
{t:"Grand débutant",v:"je débute totalement",w:1,go:'form_but'},
{t:"Je connais les bases",v:"je connais les bases",w:1,go:'form_but'},
{t:"Je gère déjà, je veux un cap",v:"je gère déjà mais je veux progresser",w:1,go:'form_but'}
]},
form_but:{q:"C'est pour :",a:[
{t:"Mon propre business",v:"c'est pour mon propre business",w:1,go:'form_end'},
{t:"Les sites de mes clients",v:"c'est pour les sites de mes clients",w:2,go:'form_end'}
]},
// ---- entrée : Diagnostic ----
diag:{q:"Parfait 🙂 Pour un diagnostic bien ciblé, votre priorité n°1 ?",a:[
{t:"Plus de trafic Google",v:"ma priorité c'est plus de trafic",w:2,go:'diag_end'},
{t:"Plus de ventes / de leads",v:"ma priorité c'est plus de ventes / de leads",w:2,go:'diag_end'},
{t:"Régler un souci technique",v:"ma priorité c'est régler un souci technique",w:1,go:'diag_end'},
{t:"Un regard global sur mon site",v:"je veux surtout un regard global sur mon site",w:1,go:'diag_end'}
]},
// ---- entrée : Question ----
question:{q:"Bien sûr ! Sur quoi puis-je vous éclairer ?",a:[
{t:"Vos tarifs",v:"j'ai une question sur vos tarifs",w:1,go:'q_tarif'},
{t:"Les délais de résultats",v:"je me demande en combien de temps j'aurai des résultats",w:1,go:'q_delai'},
{t:"Comment vous travaillez",v:"j'aimerais comprendre comment vous travaillez",w:1,go:'q_methode'},
{t:"Autre, je préfère écrire",v:"j'ai une question précise",w:0,go:'free'}
]},
q_tarif:{say:"En transparence : audit ponctuel dès ~800€, accompagnement mensuel entre 1000 et 3000€ selon l'ampleur, formation payable en une fois. Le juste prix dépend de votre projet.",q:"Vous cherchez plutôt :",a:[
{t:"Un accompagnement mensuel",v:"je m'intéresse à un accompagnement mensuel",w:2,go:'budget'},
{t:"Un audit ponctuel",v:"je pense plutôt à un audit ponctuel",w:1,go:'end'},
{t:"La formation",v:"c'est la formation qui m'intéresse",w:1,go:'form_end'}
]},
q_delai:{say:"Sincèrement : premiers signaux à 2-3 mois, du solide vers 6 mois, et ça compose ensuite. Le SEO est un actif durable, pas un sprint 📈",q:"Vous en êtes où aujourd'hui ?",a:[
{t:"Je démarre de zéro",v:"je démarre de zéro",w:1,go:'end'},
{t:"J'ai un site qui stagne",v:"mon site stagne aujourd'hui",w:2,go:'budget'},
{t:"Je veux accélérer",v:"je veux accélérer",w:2,go:'budget'}
]},
q_methode:{say:"Simple et carré : un audit qui priorise, une feuille de route claire, puis l'exécution (technique, contenu, netlinking), piloté par moi, pas par un junior.",q:"Ça vous parle ? On peut :",a:[
{t:"En discuter de vive voix",v:"j'aimerais qu'on échange de vive voix",w:2,go:'end'},
{t:"J'ai encore une question",v:"j'ai encore une question",w:0,go:'free'}
]}
};
var LEAD;
function ctaBtn(cls,icon,label,href){
var a=document.createElement('a');a.className='vhwa-cta '+cls;a.href=href||'#';a.target='_blank';a.rel='noopener';
a.innerHTML=ICON[icon]+'<span>'+label+'</span>';body.appendChild(a);scroll();return a;
}
function treeStep(id){
var node=TREE[id];
function showQ(){
bubble('them',pfill(node.q),true);
setTimeout(function(){
var wrap=document.createElement('div');wrap.className='vhwa-qr';
node.a.forEach(function(opt,i){
var b=document.createElement('button');b.className='vhwa-chip opt';b.type='button';
b.innerHTML='<span>'+esc(opt.t)+'</span>';b.style.animationDelay=(reduce?0:i*70)+'ms';
b.onclick=function(){pickTree(opt,wrap);};wrap.appendChild(b);
});
body.appendChild(wrap);scroll();
},reduce?0:450);
}
if(node.say){bubble('them',pfill(node.say),true);setTimeout(showQ,reduce?0:1000);}
else showQ();
}
function pickTree(opt,wrap){
if(wrap)wrap.remove();
bubble('me',esc(opt.t),true);
LEAD.push(opt.v);LEAD.score+=(opt.w||0);
var proceed=function(){
if(opt.go==='free'){typing(function(){bubble('them','Bien sûr 🙂 Écrivez votre message juste en dessous 👇',true);setTimeout(function(){try{input.focus();}catch(e){}},reduce?0:200);},900);return;}
if(opt.go==='form_end'){formEnd();return;}
if(opt.go==='diag_end'){diagEnd();return;}
if(opt.go==='end'){treeEnd();return;}
typing(function(){treeStep(opt.go);},900);
};
if(opt.say){typing(function(){bubble('them',pfill(opt.say),true);setTimeout(proceed,reduce?0:650);},1000);}
else proceed();
}
// Message WhatsApp pré-rempli, écrit comme le visiteur le dirait (1re personne, naturel) :
function leadMsg(){
var op={boost:"j'aimerais faire décoller mon référencement",diag:"j'aimerais réserver le diagnostic offert",formation:"votre formation SEO m'intéresse",question:"j'aurais quelques questions"}[LEAD.entry]||"j'ai un projet SEO";
var sit=LEAD.length?(' Voici ma situation : '+LEAD.join(', ')+'.'):'';
var from=CTX.src?(' (je vous écris depuis '+CTX.src+')'):'';
return wa('Bonjour Vincent 👋 '+op.charAt(0).toUpperCase()+op.slice(1)+'.'+sit+from);
}
function calCta(label){var a=ctaBtn('brand','arrow',label,'https://calendly.com/vhdigitalcorp/appel');a.addEventListener('click',function(ev){ev.preventDefault();track('whatsapp_lead',{dest:'tree_calendly'});openBooking();});return a;}
function waCta(label){ctaBtn('wa','wa',label,leadMsg()).addEventListener('click',function(){track('whatsapp_lead',{dest:'tree_wa'});});}
function treeEnd(){
var sc=LEAD.score;
typing(function(){
if(sc>=5){
bubble('them','Votre projet a un vrai potentiel 🚀 Le plus efficace : 30 min en visio (offert) pour tracer un plan clair. Choisissez votre créneau 👇',true);
calCta('Réserver mon créneau');waCta('Ou en discuter sur WhatsApp','voici ma situation');
}else if(sc>=3){
bubble('them','Ça se tient 🙂 Le plus simple : on en parle directement, je vous réponds vite 👇',true);
waCta('Continuer sur WhatsApp','voici ma situation');calCta('Ou réserver un appel offert');
}else{
bubble('them','Pour bien démarrer, on peut en parler quand vous voulez, ou vous former à votre rythme 🙂',true);
waCta('Continuer sur WhatsApp','voici ma situation');
ctaBtn('brand','arrow','Voir la formation SEO','https://formation.vincenthego.com/').addEventListener('click',function(){track('whatsapp_lead',{dest:'tree_formation'});});
}
},1200);
}
function formEnd(){
typing(function(){
bubble('them','La formation est faite pour ça 🎓 Vous apprenez à ranker vos pages vous-même, avec ma méthode et une garantie satisfait 365 jours.',true);
ctaBtn('brand','arrow','Découvrir la formation','https://formation.vincenthego.com/').addEventListener('click',function(){track('whatsapp_lead',{dest:'tree_formation'});});
waCta('une question sur la formation','à propos de la formation');
},1100);
}
function diagEnd(){
typing(function(){
bubble('them','Parfait, on fait le point ensemble en visio (30 min, offert). Choisissez votre créneau juste ici 👇',true);
calCta('Réserver mon créneau');waCta("Ou m'écrire sur WhatsApp",'je veux réserver un diagnostic');
},1100);
}
function startTree(entry,qr){
if(qr)qr.remove();if(qtimer){clearTimeout(qtimer);qtimer=null;}
LEAD=[];LEAD.score=0;LEAD.entry=entry;
var lbl={boost:"Je veux faire décoller mon SEO",diag:"Je réserve mon diagnostic offert",formation:"Je veux me former au SEO",question:"J'ai une question"};
bubble('me',lbl[entry]||'…',true);
typing(function(){treeStep(entry);},1300);
}
function intro(){
if(started)return;started=true;
// Le badge "1" = message déjà reçu -> on l'affiche IMMÉDIATEMENT (pas d'animation avant, cohérence).
bubble('them','Bonjour 👋 Ici Vincent, ravi de vous accueillir.',true);
// Puis Vincent "écrit" la suite en direct (chargement) :
setTimeout(function(){
typing(function(){
bubble('them',CTX.greet2||'Une question SEO ou un projet ? Choisissez un sujet ci-dessous, ou écrivez-moi directement 😁',true);
setTimeout(function(){showQuick();},reduce?0:400);
},2000);
},reduce?0:600);
}
function open(){root.classList.add('open');fab.setAttribute('aria-expanded','true');tip.classList.remove('show');
track('whatsapp_open');panel.removeAttribute('inert');
if(dot){dot.remove();dot=null;}
intro();setTimeout(function(){try{panel.focus();}catch(e){}},300);}
function close(){root.classList.remove('open');root.classList.remove('booking');fab.setAttribute('aria-expanded','false');panel.setAttribute('inert','');fab.focus();}
fab.addEventListener('click',function(){root.classList.contains('open')?close():open();});
document.getElementById('vhwa-close').addEventListener('click',close);
// ===== Réservation Calendly intégrée (lazy-load au clic, zéro poids tant qu'on ne clique pas) =====
var calBack=document.getElementById('vhwa-back'),calBox=document.getElementById('vhwa-cal');
function loadCalendly(cb){
if(window.Calendly){cb();return;}
var s=document.createElement('script');s.src='https://assets.calendly.com/assets/external/widget.js';s.async=true;
s.onload=cb;s.onerror=function(){window.open('https://calendly.com/vhdigitalcorp/appel','_blank','noopener');root.classList.remove('booking');};
document.head.appendChild(s);
}
function openBooking(){
track('whatsapp_lead',{dest:'calendly_open'});
root.classList.add('booking');
if(!calBox.dataset.init){
loadCalendly(function(){
try{window.Calendly.initInlineWidget({url:'https://calendly.com/vhdigitalcorp/appel?hide_event_type_details=1&hide_gdpr_banner=1&primary_color=f05820',parentElement:calBox});calBox.dataset.init='1';}
catch(e){window.open('https://calendly.com/vhdigitalcorp/appel','_blank','noopener');root.classList.remove('booking');}
});
}
setTimeout(function(){try{panel.focus();}catch(e){}},200);
}
function closeBooking(){root.classList.remove('booking');}
calBack.addEventListener('click',closeBooking);
window.addEventListener('message',function(e){
try{if((''+e.origin).indexOf('calendly.com')>-1&&e.data&&e.data.event==='calendly.event_scheduled'){
track('whatsapp_lead',{dest:'calendly_booked'});
setTimeout(function(){closeBooking();bubble('them','C\'est réservé, merci ! Je vous confirme tout par mail. À très vite 🎉',true);},1400);
}}catch(err){}
});
function sendText(v){
if(qtimer){clearTimeout(qtimer);qtimer=null;}
track('whatsapp_lead',{dest:'message'});
if(v){bubble('me',esc(v),true);
typing(function(){bubble('them','Je vous réponds sur WhatsApp, ça arrive 👍',true);},1200);}
window.open(wa((v||'Bonjour Vincent,')+SRC),'_blank','noopener');
}
function sendMsg(){var v=input.value.trim();input.value='';sendText(v);}
document.getElementById('vhwa-send').addEventListener('click',sendMsg);
input.addEventListener('keydown',function(e){if(e.key==='Enter'){e.preventDefault();sendMsg();}});
document.addEventListener('keydown',function(e){if(e.key==='Escape'&&root.classList.contains('open')){root.classList.contains('booking')?closeBooking():close();}});
// teaser proactif desktop : bulle après 18s OU à l'intention de sortie (une seule fois)
var teased=false;
function teaseOnce(){
if(teased||reduce||root.classList.contains('open'))return;
teased=true;tip.classList.add('show'); // le CSS masque .vhwa-tip en mobile (display:none), pas besoin de tester innerWidth
setTimeout(function(){tip.classList.remove('show');},6500);
}
setTimeout(teaseOnce,18000);
document.addEventListener('mouseout',function(e){if(e.clientY<=0&&!e.relatedTarget)teaseOnce();},{passive:true});
// mobile : remonter le widget au-dessus de la barre CTA sticky (« Lancer mon diagnostic SEO ») pour ne pas la chevaucher
var sticky=document.querySelector('.sticky-cta');
if(sticky){
function syncLift(){
var shown=matchMedia('(max-width:720px)').matches&&getComputedStyle(sticky).display!=='none'&&!sticky.classList.contains('is-hidden');
root.style.bottom=shown?(Math.round(sticky.getBoundingClientRect().height)+14)+'px':'';
}
new MutationObserver(syncLift).observe(sticky,{attributes:true,attributeFilter:['class','style']});
window.addEventListener('resize',syncLift,{passive:true});
window.addEventListener('orientationchange',syncLift);
syncLift();
}
})();
</script>
<!-- ===== /Widget WhatsApp ===== -->
<!-- PUCE RAPPEL FLOTTANTE (VH DIGITAL CORP) -->
<style id="vhrc-style">
.vhrc{position:fixed;left:24px;bottom:24px;z-index:2147480000;font-family:'Gilroy','Poppins',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;opacity:0;transform:translateY(16px);pointer-events:none;transition:opacity .5s cubic-bezier(.22,1,.36,1),transform .5s cubic-bezier(.22,1,.36,1)}
.vhrc.vhrc-in{opacity:1;transform:none;pointer-events:auto}
.vhrc *,.vhrc *::before,.vhrc *::after{box-sizing:border-box}
.vhrc-pill{display:flex;align-items:center;gap:12px;background:#fff;border:1px solid #eceaf4;border-radius:100px;box-shadow:0 10px 26px -8px rgba(20,16,60,.28),0 2px 6px rgba(20,16,60,.06);padding:8px 20px 8px 8px;cursor:pointer;transition:opacity .28s ease,transform .35s cubic-bezier(.22,1,.36,1),box-shadow .3s;font:inherit;color:inherit;text-align:left}
.vhrc-pill:hover{transform:translateY(-2px);box-shadow:0 18px 36px -10px rgba(20,16,60,.34)}
.vhrc-ava{position:relative;flex:0 0 auto;width:46px;height:46px;border-radius:50%}
.vhrc-ava img{width:46px;height:46px;border-radius:50%;object-fit:cover;display:block;border:2px solid #fff;box-shadow:0 0 0 1px #eceaf4}
.vhrc-dot{position:absolute;right:1px;bottom:1px;width:12px;height:12px;border-radius:50%;background:#2ac08a;border:2px solid #fff}
.vhrc-dot::after{content:"";position:absolute;inset:-3px;border-radius:50%;border:2px solid #2ac08a;opacity:.6;animation:vhrc-pulse 2.2s ease-out infinite}
.vhrc-lbl{display:flex;flex-direction:column;line-height:1.16}
.vhrc-lbl b{font-size:.96rem;color:#1c1962;font-weight:800;letter-spacing:-.2px}
.vhrc-lbl span{font-size:.78rem;color:#6b6880;font-weight:500}
.vhrc-card{position:absolute;left:0;bottom:0;width:328px;max-width:calc(100vw - 48px);background:radial-gradient(120% 120% at 0% 0%,#fff 0%,#fbfaff 65%,#f7f6fd 100%);border:1px solid #eceaf4;border-radius:22px;box-shadow:0 30px 70px -24px rgba(20,16,60,.42),0 6px 16px rgba(20,16,60,.10);padding:20px 20px 18px;opacity:0;transform:translateY(10px) scale(.97);transform-origin:left bottom;pointer-events:none;transition:opacity .3s cubic-bezier(.22,1,.36,1),transform .34s cubic-bezier(.22,1,.36,1)}
.vhrc:hover .vhrc-pill,.vhrc:focus-within .vhrc-pill,.vhrc.vhrc-open .vhrc-pill{opacity:0;transform:translateY(6px);pointer-events:none}
.vhrc:hover .vhrc-card,.vhrc:focus-within .vhrc-card,.vhrc.vhrc-open .vhrc-card{opacity:1;transform:none;pointer-events:auto}
.vhrc.vhrc-gone{opacity:0!important;transform:translateY(16px)!important;pointer-events:none!important}
.vhrc-head{display:flex;align-items:center;gap:11px;margin-bottom:13px;padding-right:26px}
.vhrc-head .vhrc-ava{width:44px;height:44px}
.vhrc-head .vhrc-ava img{width:44px;height:44px}
.vhrc-head b{font-size:.97rem;color:#1c1962;font-weight:800;display:block;line-height:1.2}
.vhrc-head span{font-size:.79rem;color:#6b6880}
.vhrc-close{position:absolute;top:13px;right:13px;width:27px;height:27px;border-radius:50%;background:#f4f3f9;border:none;color:#908da2;font-size:15px;line-height:1;display:grid;place-items:center;cursor:pointer;transition:background .2s,color .2s,transform .2s}
.vhrc-close:hover{background:#eceaf4;color:#1c1962;transform:rotate(90deg)}
.vhrc-title{font-size:1.1rem;color:#1c1962;font-weight:800;letter-spacing:-.3px;line-height:1.25;margin:0 0 4px;text-wrap:balance}
.vhrc-sub{font-size:.86rem;color:#565372;line-height:1.5;margin:0 0 13px}
.vhrc-form{margin:0}
.vhrc-hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.vhrc-input{width:100%;padding:13px 15px;border:1.5px solid #e2e0ee;border-radius:12px;font-family:inherit;font-size:.98rem;color:#15131f;background:#fff;transition:border-color .2s,box-shadow .2s}
.vhrc-input::placeholder{color:#8a879c}
.vhrc-input:focus{outline:none;border-color:#f05820;box-shadow:0 0 0 4px rgba(240,88,32,.13)}
.vhrc-btn{width:100%;margin-top:9px;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:13px;border:none;border-radius:12px;cursor:pointer;font-family:inherit;font-weight:800;font-size:.98rem;color:#fff;background:linear-gradient(135deg,#f05820,#ff7c4d);box-shadow:0 14px 30px -10px rgba(240,88,32,.6);transition:transform .18s cubic-bezier(.22,1,.36,1),box-shadow .25s,filter .2s}
.vhrc-btn:hover{transform:translateY(-1px);box-shadow:0 20px 40px -10px rgba(240,88,32,.7)}
.vhrc-btn:disabled{opacity:.85;cursor:default;transform:none}
.vhrc-btn svg{width:17px;height:17px;transition:transform .25s}
.vhrc-btn:hover svg{transform:translateX(3px)}
.vhrc-trust{font-size:.74rem;color:#9895a8;text-align:center;margin:9px 0 0}
@keyframes vhrc-pulse{0%{transform:scale(1);opacity:.6}100%{transform:scale(2.2);opacity:0}}
@media (prefers-reduced-motion:reduce){.vhrc{transition:opacity .2s}.vhrc-dot::after{animation:none}.vhrc-card,.vhrc-pill,.vhrc-btn,.vhrc-close{transition:opacity .15s}}
@media (max-width:900px){.vhrc{display:none!important}}
</style>
<div class="vhrc" id="vhrc">
<button class="vhrc-pill" id="vhrc-pill" type="button" aria-label="Se faire rappeler par Vincent Hégo">
<span class="vhrc-ava"><img src="/assets/brand/vincent-rond.webp" width="46" height="46" alt="Vincent Hégo" loading="lazy" decoding="async"><span class="vhrc-dot" aria-hidden="true"></span></span>
<span class="vhrc-lbl"><b>Être rappelé</b><span>Vincent vous rappelle vite</span></span>
</button>
<div class="vhrc-card" role="dialog" aria-label="Demande de rappel">
<button class="vhrc-close" id="vhrc-close" type="button" aria-label="Masquer">×</button>
<div class="vhrc-head">
<span class="vhrc-ava"><img src="/assets/brand/vincent-rond.webp" width="44" height="44" alt="Vincent Hégo" loading="lazy" decoding="async"><span class="vhrc-dot" aria-hidden="true"></span></span>
<span><b>Vincent Hégo</b><span>Vous rappelle personnellement</span></span>
</div>
<p class="vhrc-title">Vous préférez qu'on vous rappelle ?</p>
<p class="vhrc-sub">Laissez votre numéro, je vous rappelle vite pour en parler de vive voix.</p>
<form class="vhrc-form" id="vhrc-form" data-vhr data-vhr-chip novalidate>
<div class="vhrc-hp" aria-hidden="true"><label>Ne pas remplir<input type="text" name="_gotcha" tabindex="-1" autocomplete="off"></label></div>
<div data-vhr-fields>
<input class="vhrc-input" id="vhrc-tel" data-vhr-phone name="tel" type="tel" inputmode="tel" autocomplete="tel" placeholder="Votre numéro de téléphone" aria-label="Votre numéro de téléphone">
<div class="vhr-name" data-vhr-name><input type="text" name="prenom" autocomplete="given-name" placeholder="Votre prénom" aria-label="Votre prénom"></div>
<button class="vhrc-btn" id="vhrc-submit" type="submit">Me faire rappeler
<svg viewbox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
</button>
</div>
<div class="vhrc-status" data-vhr-status role="alert" aria-live="polite"></div>
<p class="vhrc-trust">🔒 Zéro spam. Juste un rappel de ma part.</p>
</form>
</div>
</div>
<script>
(function(){
var root=document.getElementById('vhrc'); if(!root) return;
var KEY='vhrc_dismiss';
function dismissed(days){ try{ var d=localStorage.getItem(KEY); return d && (Date.now()-parseInt(d,10))<days*864e5; }catch(e){ return false; } }
function setDismiss(){ try{ localStorage.setItem(KEY, ''+Date.now()); }catch(e){} }
var shown=false;
function canShow(){ return window.innerWidth>=901 && !dismissed(7); }
function reveal(){ if(shown||!canShow()) return; shown=true; root.classList.add('vhrc-in'); window.removeEventListener('scroll', onScroll); }
function onScroll(){ var h=document.documentElement.scrollHeight-window.innerHeight; if(h>0 && (window.scrollY/h)>=0.55) reveal(); }
if(canShow()){ window.addEventListener('scroll', onScroll, {passive:true}); setTimeout(reveal, 25000); }
document.getElementById('vhrc-close').addEventListener('click', function(){ setDismiss(); root.classList.add('vhrc-gone'); setTimeout(function(){ root.classList.remove('vhrc-in','vhrc-gone'); }, 350); });
// Ouverture au SURVOL / focus (+ pilotage JS pour robustesse et petit délai anti-flicker)
var closeTimer;
function openCard(){ clearTimeout(closeTimer); root.classList.add('vhrc-open'); }
function scheduleClose(){ clearTimeout(closeTimer); closeTimer=setTimeout(function(){ if(!root.contains(document.activeElement)) root.classList.remove('vhrc-open'); }, 280); }
root.addEventListener('mouseenter', openCard);
root.addEventListener('mouseleave', scheduleClose);
root.addEventListener('focusin', openCard);
root.addEventListener('focusout', scheduleClose);
document.getElementById('vhrc-pill').addEventListener('click', function(){ openCard(); try{ document.getElementById('vhrc-tel').focus(); }catch(e){} });
})();
</script>
<!-- /PUCE RAPPEL FLOTTANTE -->
<script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a3621f37097b2a7a',t:'MTc4ODU3ODY3Ng=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script><script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"bbeee1d64b2448218547f36defc2c1d2","r":1,"spa":2}' crossorigin="anonymous"></script>
</body>
</html>