Outiref

Code source de l'URL : https://www.adamspilmann.com/

<!doctype html>
<html lang="fr">
<head>
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-NF9RFZV3');</script>
<!-- End Google Tag Manager -->
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta name="description" content="J’accompagne votre entreprise de service avec des stratégies Google Ads et Meta Ads conçues pour générer davantage de demandes qualifiées, maîtriser vos coûts et développer durablement votre chiffre d’affaires.">
  <meta name="robots" content="index, follow, max-image-preview:large">
  <link rel="canonical" href="https://www.adamspilmann.com/">
  <meta property="og:url" content="https://www.adamspilmann.com/">
  <title>Adam Spilmann | Expert Google Ads et Meta Ads pour entreprises de services</title>
  <link rel="icon" href="../favicon.svg" type="image/svg+xml">
  <script>
    // Polyfill Shadow DOM déclaratif : ne fait rien sur les navigateurs qui le
    // supportent nativement (Chrome/Edge/Safari/Firefox récents), et attache
    // les <template shadowrootmode> à la main sur les navigateurs plus anciens.
    (function attachShadowRoots(root) {
      root.querySelectorAll("template[shadowrootmode]").forEach((template) => {
        const mode = template.getAttribute("shadowrootmode");
        const shadowRoot = template.parentNode.attachShadow({ mode });
        shadowRoot.appendChild(template.content);
        template.remove();
        attachShadowRoots(shadowRoot);
      });
    })(document);
  </script>
  <style>
    @font-face {
      font-family: "Overused Grotesk Medium";
      src: url("../sections-validees/_ressources/communs/overused-grotesk-medium.woff2") format("woff2");
      font-weight: 500;
      font-display: swap;
    }
    @font-face {
      font-family: "Inter";
      src: url("../sections-validees/_ressources/communs/inter-regular.woff2") format("woff2");
      font-weight: 400;
      font-display: swap;
    }
    @font-face {
      font-family: "Inter";
      src: url("../sections-validees/_ressources/communs/inter-medium.woff2") format("woff2");
      font-weight: 500;
      font-display: swap;
    }

    * { box-sizing: border-box; }
    html, body { margin: 0; background: #161512; }

    .qualif-overlay {
      position: fixed;
      inset: 0;
      z-index: 200;
      display: flex;
      align-items: center;
      justify-content: center;
      padding: 20px;
      background: rgba(13, 12, 10, 0.7);
      backdrop-filter: blur(6px);
      -webkit-backdrop-filter: blur(6px);
      opacity: 0;
      visibility: hidden;
      pointer-events: none;
      transition: opacity 160ms ease, visibility 160ms ease;
    }
    .qualif-overlay.is-open { opacity: 1; visibility: visible; pointer-events: auto; }

    .qualif-dialog {
      position: relative;
      width: min(560px, 100%);
      max-height: min(680px, 90vh);
      overflow-y: auto;
      padding: 32px clamp(20px, 4vw, 40px) 36px;
      border-radius: 12px;
      background: #f7f7f7;
      color: rgba(0, 0, 0, 0.82);
      font-family: "Inter", sans-serif;
      box-shadow: 0 30px 80px rgba(0, 0, 0, 0.4);
    }

    .qualif-header {
      display: flex;
      align-items: flex-start;
      justify-content: space-between;
      gap: 16px;
      margin-bottom: 20px;
    }
    .qualif-brand strong { display: block; font-family: "Overused Grotesk Medium", sans-serif; font-size: 15px; }
    .qualif-brand span { display: block; font-size: 12px; color: rgba(0, 0, 0, 0.5); margin-top: 2px; }
    .qualif-close {
      flex-shrink: 0;
      width: 32px;
      height: 32px;
      border: 0;
      border-radius: 50%;
      background: rgba(0, 0, 0, 0.06);
      font-size: 18px;
      line-height: 1;
      cursor: pointer;
      color: rgba(0, 0, 0, 0.6);
    }
    .qualif-close:hover { background: rgba(0, 0, 0, 0.12); }

    .qualif-progress { height: 3px; border-radius: 999px; background: rgba(0, 0, 0, 0.08); margin-bottom: 28px; overflow: hidden; }
    .qualif-progress-bar { height: 100%; width: 0%; background: #161512; border-radius: 999px; transition: width 250ms ease; }

    .qualif-panel { display: none; }
    .qualif-panel.is-active { display: block; }

    .qualif-question { font-family: "Overused Grotesk Medium", sans-serif; font-size: clamp(21px, 3vw, 26px); line-height: 1.2; letter-spacing: -0.02em; margin: 0 0 14px; }
    .qualif-subtitle { margin: 0 0 20px; display: grid; gap: 12px; }
    .qualif-subtitle span { display: block; font-size: 14px; line-height: 1.55; color: rgba(0, 0, 0, 0.66); }

    .qualif-answers { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; border: 0; width: 100%; }
    .qualif-answer {
      display: flex;
      align-items: center;
      gap: 12px;
      width: 100%;
      padding: 14px 16px;
      border: 1px solid rgba(0, 0, 0, 0.14);
      border-radius: 8px;
      background: #fff;
      color: inherit;
      font-family: "Inter", sans-serif;
      font-size: 14.5px;
      line-height: 1.4;
      text-align: left;
      cursor: pointer;
      transition: border-color 140ms ease, background 140ms ease;
    }
    .qualif-answer:hover, .qualif-answer:focus-visible { border-color: rgba(0, 0, 0, 0.35); background: rgba(0, 0, 0, 0.02); }
    .qualif-answer .dot { flex-shrink: 0; width: 9px; height: 9px; border-radius: 50%; border: 1px solid rgba(0, 0, 0, 0.3); }

    .qualif-disclaimer { margin: 16px 0 0; font-size: 11.5px; line-height: 1.5; color: rgba(0, 0, 0, 0.45); }

    .qualif-result { text-align: center; padding-top: 8px; }
    .qualif-result-icon { width: 52px; height: 52px; margin: 0 auto 16px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 24px; }
    .qualif-result.ok .qualif-result-icon { background: rgba(31, 122, 82, 0.12); color: #1f7a52; }
    .qualif-result.no .qualif-result-icon { background: rgba(179, 38, 30, 0.1); color: #b3261e; }
    .qualif-result-label { margin: 0 0 10px; font-size: 12px; letter-spacing: 0.06em; text-transform: uppercase; color: rgba(0, 0, 0, 0.5); }
    .qualif-result-title { font-family: "Overused Grotesk Medium", sans-serif; font-size: 22px; line-height: 1.25; letter-spacing: -0.02em; margin: 0 0 14px; }
    .qualif-result-copy { margin: 0 0 24px; font-size: 14.5px; line-height: 1.55; color: rgba(0, 0, 0, 0.66); }

    .qualif-whatsapp {
      display: inline-flex;
      align-items: center;
      gap: 10px;
      padding: 14px 26px;
      border-radius: 999px;
      background: #25d366;
      color: #fff;
      font-size: 14.5px;
      font-weight: 500;
      text-decoration: none;
    }
    .qualif-whatsapp:hover { background: #20bd5a; }
    .qualif-whatsapp svg { width: 18px; height: 18px; }

    .qualif-desktop-note { margin: 18px 0 0; font-size: 12px; color: rgba(0, 0, 0, 0.5); }
    .qualif-desktop-number { margin: 2px 0 0; font-size: 14px; font-weight: 500; }

    .qualif-instagram {
      display: inline-flex;
      padding: 14px 26px;
      border-radius: 999px;
      border: 1px solid rgba(0, 0, 0, 0.2);
      color: rgba(0, 0, 0, 0.8);
      text-decoration: none;
      font-size: 14.5px;
    }
    .qualif-instagram:hover { border-color: rgba(0, 0, 0, 0.4); }

    @media (max-width: 520px) {
      .qualif-dialog { padding: 26px 18px 28px; border-radius: 10px; }
    }

    .sticky-contact {
      position: fixed;
      z-index: 150;
      right: clamp(20px, 3vw, 40px);
      bottom: clamp(20px, 3vw, 32px);
      opacity: 0;
      visibility: hidden;
      transform: translateY(12px);
      transition: opacity 220ms ease, transform 220ms ease, visibility 220ms ease;
    }

    .sticky-contact.is-visible {
      opacity: 1;
      visibility: visible;
      transform: translateY(0);
    }

    .sticky-contact-btn {
      display: inline-flex;
      align-items: center;
      gap: 12px;
      padding: 16px 26px;
      border: 1px solid rgba(247, 247, 247, 0.28);
      border-radius: 999px;
      background: rgba(22, 21, 18, 0.92);
      backdrop-filter: blur(10px);
      -webkit-backdrop-filter: blur(10px);
      color: #f7f7f7;
      font-family: "Inter", sans-serif;
      font-size: 14.5px;
      font-weight: 500;
      letter-spacing: -0.2px;
      white-space: nowrap;
      cursor: pointer;
      box-shadow: 0 16px 40px rgba(0, 0, 0, 0.35);
      transition: background-color 160ms ease, border-color 160ms ease, color 160ms ease;
    }

    .sticky-contact-dot {
      position: relative;
      width: 9px;
      height: 9px;
      flex: 0 0 9px;
      border-radius: 50%;
      background: #25d366;
    }

    .sticky-contact-dot::after {
      content: "";
      position: absolute;
      inset: -5px;
      border: 1px solid #25d366;
      border-radius: 50%;
      animation: sticky-contact-pulse 1.8s ease-out infinite;
    }

    @keyframes sticky-contact-pulse {
      0% { transform: scale(0.6); opacity: 0.8; }
      100% { transform: scale(2); opacity: 0; }
    }

    .sticky-contact-btn:hover,
    .sticky-contact-btn:focus-visible {
      background: #f7f7f7;
      border-color: #f7f7f7;
      color: rgba(0, 0, 0, 0.88);
    }

    @media (max-width: 809px) {
      .sticky-contact {
        left: 16px;
        right: 16px;
        bottom: calc(16px + env(safe-area-inset-bottom));
        transform: translateY(16px);
      }

      .sticky-contact-btn {
        width: 100%;
        justify-content: center;
        padding: 18px 22px;
        border-radius: 8px;
        background: rgba(22, 21, 18, 0.94);
        border-color: rgba(247, 247, 247, 0.28);
        color: #f7f7f7;
        font-size: 15.5px;
        box-shadow: 0 20px 45px rgba(0, 0, 0, 0.45);
      }
    }
  </style>
</head>
<body>
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-NF9RFZV3"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
  <div id="hero-frame">
    <template shadowrootmode="open">
      <style>
    @font-face {
      font-family: "Overused Grotesk Medium";
      src: url("../sections-validees/_ressources/communs/overused-grotesk-medium.woff2") format("woff2");
      font-display: swap;
      font-style: normal;
      font-weight: 500;
    }

    @font-face {
      font-family: "Inter";
      src: url("../sections-validees/_ressources/communs/inter-regular.woff2") format("woff2");
      font-display: swap;
      font-style: normal;
      font-weight: 400;
    }

    * {
      box-sizing: border-box;
      -webkit-font-smoothing: antialiased;
    }

    html,
    body,
    :host {
      width: 100%;
      margin: 0;
      background: #161512;
    }

    body,
    :host {
      color: #f7f7f7;
      font-family: "Inter", sans-serif;
      font-weight: 400;
      font-synthesis: none;
    }

    a,
    button {
      color: inherit;
      font: inherit;
    }

    .hero {
      position: relative;
      width: 100%;
      min-height: 100svh;
      overflow: hidden;
      isolation: isolate;
      background: #161512;
    }

    @media (min-width: 1200px) {
      /* Évite que la photo 16:9 soit de plus en plus zoomée sur les fenêtres très hautes. */
      .hero { min-height: min(100svh, 62.5vw); }
    }

    .hero-photo {
      position: absolute;
      inset: 0;
      z-index: -2;
      width: 100%;
      height: 100%;
      display: block;
      object-fit: cover;
      object-position: 64% center;
      -webkit-user-drag: none;
      user-select: none;
      -webkit-touch-callout: none;
    }

    .hero-shade {
      position: absolute;
      inset: 0;
      z-index: -1;
      pointer-events: none;
      backdrop-filter: blur(28px);
      -webkit-backdrop-filter: blur(28px);
      background: linear-gradient(304deg, rgba(0, 0, 0, 0) 59%, rgba(0, 0, 0, 0.2) 100%);
      -webkit-mask: linear-gradient(237deg, rgba(0, 0, 0, 0) 43.4435%, rgba(0, 0, 0, 0.95) 63.0631%, rgba(0, 0, 0, 1) 100%);
      mask: linear-gradient(237deg, rgba(0, 0, 0, 0) 43.4435%, rgba(0, 0, 0, 0.95) 63.0631%, rgba(0, 0, 0, 1) 100%);
    }

    @media (max-width: 700px) {
      .hero-shade {
        backdrop-filter: none;
        -webkit-backdrop-filter: none;
        background:
          linear-gradient(90deg, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.2) 40%, rgba(0, 0, 0, 0) 65%),
          linear-gradient(180deg, rgba(0, 0, 0, 0) 50%, rgba(0, 0, 0, 0.6) 75%, rgba(0, 0, 0, 0.88) 100%);
        -webkit-mask: none;
        mask: none;
      }
    }

    .navbar {
      position: absolute;
      z-index: 20;
      top: 0;
      left: 0;
      width: 100%;
      min-height: 82px;
      padding: 20px clamp(28px, 5.55vw, 80px);
      display: flex;
      align-items: center;
      gap: 34px;
      border: 0;
      background: transparent;
    }

    .brand {
      display: inline-flex;
      align-items: center;
      gap: 10px;
      flex: 0 0 auto;
      text-decoration: none;
      font-family: "Overused Grotesk Medium", sans-serif;
      font-size: 18px;
      font-weight: 500;
      letter-spacing: -0.025em;
      color: #f7f7f7;
    }

    .brand-mark {
      width: 26px;
      height: 26px;
      display: grid;
      place-items: center;
      border: 1px solid rgba(255, 255, 255, 0.65);
      border-radius: 50%;
      font-family: "Inter", sans-serif;
      font-size: 10px;
      letter-spacing: -0.06em;
    }

    .nav-separator {
      width: 1px;
      height: 26px;
      background: rgba(255, 255, 255, 0.14);
    }

    .nav-links {
      display: flex;
      align-items: center;
      gap: clamp(20px, 2.2vw, 36px);
    }

    .nav-link {
      padding: 8px 0;
      border: 0;
      background: none;
      color: #f7f7f7;
      text-decoration: none;
      font-size: 14px;
      line-height: 1;
      cursor: pointer;
      opacity: 0.92;
      transition: opacity 160ms ease;
    }

    .nav-link:hover,
    .nav-link:focus-visible {
      opacity: 0.62;
    }

    .nav-cta {
      margin-left: auto;
      min-height: 44px;
      padding: 0 20px;
      font-size: 13px;
    }

    .menu-toggle,
    .mobile-menu {
      display: none;
    }

    @media (max-width: 1050px) {
      .navbar { gap: 24px; }
      .nav-links { gap: 18px; }
      .nav-link { font-size: 13px; }
    }

    @media (max-width: 809px) {
      .navbar {
        min-height: 72px;
        padding: 18px 20px;
      }

      .brand { font-size: 16px; }
      .brand-mark { width: 24px; height: 24px; }

      .nav-separator,
      .nav-links,
      .nav-cta {
        display: none;
      }

      .menu-toggle {
        width: 44px;
        height: 40px;
        margin-left: auto;
        padding: 0;
        display: grid;
        place-content: center;
        gap: 5px;
        border: 0;
        background: transparent;
        cursor: pointer;
      }

      .menu-toggle span {
        width: 22px;
        height: 1px;
        display: block;
        background: #f7f7f7;
        transition: transform 180ms ease;
      }

      .menu-toggle[aria-expanded="true"] span:first-child {
        transform: translateY(3px) rotate(45deg);
      }

      .menu-toggle[aria-expanded="true"] span:last-child {
        transform: translateY(-3px) rotate(-45deg);
      }

      .mobile-menu {
        position: absolute;
        z-index: 18;
        top: 70px;
        right: 20px;
        left: 20px;
        padding: 14px;
        display: grid;
        gap: 2px;
        border: 1px solid rgba(255, 255, 255, 0.12);
        border-radius: 6px;
        background: rgba(12, 12, 10, 0.96);
        box-shadow: 0 20px 50px rgba(0, 0, 0, 0.28);
        backdrop-filter: blur(18px);
        opacity: 0;
        visibility: hidden;
        transform: translateY(-8px);
        transition: opacity 180ms ease, visibility 180ms ease, transform 180ms ease;
      }

      .mobile-menu.is-open {
        opacity: 1;
        visibility: visible;
        transform: translateY(0);
      }

      .mobile-menu .nav-link {
        width: 100%;
        padding: 13px 12px;
        text-align: left;
      }
    }

    .hero-content {
      position: absolute;
      inset: 0;
      z-index: 2;
      width: min(100%, 1440px);
      margin: 0 auto;
      padding: 120px clamp(28px, 5.55vw, 80px) 60px;
      display: flex;
      flex-direction: column;
      justify-content: flex-end;
      align-items: flex-start;
    }

    .eyebrow { font-family: "Inter", "Inter Placeholder", sans-serif; font-weight: 400;
      min-height: 34px;
      margin: 0 0 16px;
      padding: 9px 14px;
      display: inline-flex;
      align-items: center;
      gap: 9px;
      border-radius: 999px;
      background: rgba(255, 255, 255, 0.08);
      color: rgba(255, 255, 255, 0.88);
      font-size: 11px;
      line-height: 1;
      letter-spacing: 0.1em;
      text-transform: uppercase;
      backdrop-filter: blur(8px);
    }

    .eyebrow::before {
      content: "";
      width: 7px;
      height: 7px;
      flex: 0 0 7px;
      border-radius: 50%;
      background: currentColor;
    }

    .eyebrow-icon {
      width: 13px;
      height: 13px;
      flex: 0 0 13px;
    }

    .hero-title {
      max-width: 680px;
      margin: 0;
      font-family: "Overused Grotesk Medium", sans-serif;
      font-size: clamp(34px, 4.6vw, 64px);
      font-weight: 500;
      line-height: 1.02;
      letter-spacing: -0.045em;
      text-wrap: balance;
      color: #f7f7f7;
    }

    .hero-copy {
      max-width: 470px;
      margin: 26px 0 0;
      color: #f7f7f7;
      font-size: 16px;
      line-height: 24px;
      letter-spacing: -0.1px;
    }

    .hero-actions {
      margin-top: 28px;
      display: flex;
      flex-wrap: wrap;
      align-items: center;
      gap: 12px;
    }

    .arrow {
      font-size: 20px;
      line-height: 0;
    }

    .button {
      min-height: 52px;
      padding: 0 24px;
      display: inline-flex;
      align-items: center;
      justify-content: center;
      gap: 12px;
      border: 1px solid rgba(255, 255, 255, 0.25);
      border-radius: 4px;
      background: transparent;
      color: #f7f7f7;
      text-decoration: none;
      font-size: 14px;
      line-height: 1;
      cursor: pointer;
      transition: background-color 160ms ease, color 160ms ease, border-color 160ms ease;
    }

    .button-primary {
      border-color: #f7f7f7;
      background: #f7f7f7;
      color: rgba(0, 0, 0, 0.9);
    }

    .button:hover,
    .button:focus-visible {
      border-color: #f7f7f7;
      background: #f7f7f7;
      color: rgba(0, 0, 0, 0.9);
    }

    @media (max-width: 700px) {
      /* mobile : photo en haut (comme la variante LP), texte dessous sur fond uni */
      .hero { min-height: 0; background: #111820; }
      .hero-photo { position: relative; inset: auto; height: 66vw; min-height: 280px; object-position: 66% center; }
      .hero-shade {
        inset: 0 0 auto 0;
        height: 66vw;
        min-height: 280px;
        backdrop-filter: none;
        -webkit-backdrop-filter: none;
        background: linear-gradient(180deg, rgba(17, 24, 32, 0.55) 0%, rgba(17, 24, 32, 0) 38%);
        -webkit-mask: none;
        mask: none;
      }
      .hero-content {
        position: relative;
        inset: auto;
        margin: 0;
        padding: 56px 28px 64px;
        background: #111820;
      }

      .hero-title {
        font-size: 40px;
        line-height: 1.05;
      }

      .eyebrow { font-family: "Inter", "Inter Placeholder", sans-serif; font-weight: 400;
        background: rgba(0, 0, 0, 0.4);
      }
    }
  </style>
      <section class="hero">
    <img class="hero-photo" src="../sections-validees/_ressources/section-01/portrait-adam-hero-hd.webp" alt="Adam Spilmann dans son bureau" width="1672" height="941" fetchpriority="high" draggable="false">
    <div class="hero-shade"></div>

    <nav class="navbar" aria-label="Navigation principale">
      <a class="brand" href="#" data-scroll-target="#hero-frame" aria-label="Adam Spilmann, retour en haut">
        <span class="brand-mark" aria-hidden="true">AS</span>
        <span>Adam Spilmann</span>
      </a>
      <span class="nav-separator" aria-hidden="true"></span>
      <div class="nav-links">
        <button class="nav-link" type="button" data-scroll-target="#hero-frame">Accueil</button>
        <button class="nav-link" type="button" data-scroll-target="#about-frame">À propos</button>
        <button class="nav-link" type="button" data-scroll-target="#etapes-frame">Méthode</button>
        <button class="nav-link" type="button" data-scroll-target="#faq-frame">FAQ</button>
      </div>
      <button class="menu-toggle" type="button" aria-expanded="false" aria-controls="mobile-menu" aria-label="Ouvrir le menu">
        <span></span>
        <span></span>
      </button>
    </nav>

    <div class="mobile-menu" id="mobile-menu">
      <button class="nav-link" type="button" data-scroll-target="#hero-frame">Accueil</button>
      <button class="nav-link" type="button" data-scroll-target="#about-frame">À propos</button>
      <button class="nav-link" type="button" data-scroll-target="#etapes-frame">Méthode</button>
      <button class="nav-link" type="button" data-scroll-target="#faq-frame">FAQ</button>
      <a class="nav-link" href="mailto:adam@adamspilmann.fr" data-open-qualif>Réserver un échange</a>
    </div>

    <div class="hero-content">
      <h1 class="eyebrow">Adam Spilmann</h1>
      <p class="hero-title">J’aide les entreprises de services à transformer leur publicité en nouveaux clients.</p>
      <p class="hero-copy">Stratégie, gestion et optimisation de ton acquisition : l’objectif n’est pas de faire tourner des campagnes, mais de construire un système capable de <strong>faire sonner ton téléphone et d’absorber ta croissance.</strong></p>
    </div>
  </section>

    </template>
  </div>

  <div id="intro-frame">
    <template shadowrootmode="open">
      <style>
    @font-face {
      font-family: "Overused Grotesk Medium";
      src: url("../sections-validees/_ressources/communs/overused-grotesk-medium.woff2") format("woff2");
      font-display: swap;
      font-style: normal;
      font-weight: 500;
    }

    @font-face {
      font-family: "Inter";
      src: url("../sections-validees/_ressources/communs/inter-regular.woff2") format("woff2");
      font-display: swap;
      font-style: normal;
      font-weight: 400;
    }

    :root,
    :host {
      --background: #f7f7f7;
      --ink: rgba(0, 0, 0, 0.88);
    }

    * {
      box-sizing: border-box;
      -webkit-font-smoothing: antialiased;
    }

    html,
    body,
    :host {
      margin: 0;
      background: var(--background);
    }

    body,
    :host {
      color: var(--ink);
      font-family: "Inter", sans-serif;
      font-synthesis: none;
    }

    .intro {
      min-height: 374px;
      padding: 120px clamp(28px, 5.55vw, 80px);
      background: var(--background);
    }

    .statement {
      width: min(100%, 1280px);
      margin: 0 auto;
      font-family: "Overused Grotesk Medium", sans-serif;
      font-size: 40px;
      font-weight: 500;
      line-height: 44px;
      letter-spacing: -0.02em;
      text-wrap: balance;
    }

    .statement strong {
      color: inherit;
      font-weight: 500;
    }

    @media (max-width: 809px) {
      .intro {
        min-height: auto;
        padding: 72px 20px;
      }

      .statement {
        font-size: 26px;
        line-height: 32px;
      }
    }
  </style>
      <style>
        .intro { min-height: auto; padding-bottom: 0; }
        @media (max-width: 809px) { .intro { padding-bottom: 0; } }
      </style>
      <section class="intro" aria-labelledby="intro-title">
    <p class="statement" id="intro-title">Aujourd’hui, attendre que les clients viennent à toi ne suffit plus. Google Ads, Facebook Ads et désormais ChatGPT Ads : <strong>je t’aide à capter de nouveaux clients, pas à payer pour de la visibilité qui ne rapporte rien.</strong></p>
  </section>
    </template>
  </div>

  <div id="plan-frame">
    <template shadowrootmode="open">
      <style>
      @font-face{font-family:"Overused Grotesk Medium";src:url("../sections-validees/_ressources/communs/overused-grotesk-medium.woff2") format("woff2");font-weight:500;font-display:swap}
      @font-face{font-family:"Inter";src:url("../sections-validees/_ressources/communs/inter-regular.woff2") format("woff2");font-weight:400;font-display:swap}
      @font-face{font-family:"Inter";src:url("../sections-validees/_ressources/communs/inter-medium.woff2") format("woff2");font-weight:500;font-display:swap}
      *{box-sizing:border-box;-webkit-font-smoothing:antialiased}
      :host{display:block;background:#f7f7f7;color:rgba(0,0,0,.82);font-family:"Inter",sans-serif;font-synthesis:none}
      .services{padding:120px clamp(28px,5.55vw,80px)}
      .inner{max-width:1280px;margin:0 auto}
      .head{margin-bottom:96px;text-align:center}
      .eyebrow{display:flex;width:fit-content;align-items:center;gap:8px;min-height:28px;padding:8px 12px;margin:0 auto 24px;border-radius:999px;background:rgba(0,0,0,.05);color:rgba(0,0,0,.8);font-family:"Inter","Inter Placeholder",sans-serif;font-size:12px;font-weight:500;line-height:12px;letter-spacing:1.2px;text-transform:uppercase}
      .eyebrow:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
      h2,h3{margin:0;font-family:"Overused Grotesk Medium",sans-serif;font-weight:500}
      .services-title{margin:0 auto;max-width:850px;font-family:"Overused Grotesk Medium",sans-serif;font-weight:500;font-size:64px;line-height:1.04;letter-spacing:-.04em;text-wrap:balance}
      .grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:80px 32px}
      .card{position:relative;display:flex;flex-direction:column;align-items:center;text-align:center;padding:60px 32px 32px;border:1px solid rgba(0,0,0,.12);border-radius:4px;background:#fff;color:inherit;text-decoration:none;transition:border-color .2s,box-shadow .2s}
      .card:hover{border-color:#111820;box-shadow:0 18px 40px rgba(17,24,32,.08)}
      .card:focus-visible{outline:2px solid #111820;outline-offset:4px}
      .brand-icon{position:absolute;top:-32px;left:50%;margin-left:-32px;display:flex;align-items:center;justify-content:center;line-height:1;width:64px;height:64px;border-radius:8px;background:linear-gradient(rgba(0,0,0,.06),rgba(0,0,0,.06)),#f7f7f7;color:#111820;border:1px solid rgba(0,0,0,.08);box-shadow:0 10px 24px rgba(17,24,32,.08);transition:transform .2s}
      .card:hover .brand-icon{transform:translateY(-4px)}
      .brand-icon svg{display:block;width:32px;height:32px}.brand-icon.meta svg{width:38px;height:38px}.brand-icon.webflow{color:#146ef5}.brand-icon.webflow svg{width:34px;height:34px}
      .brand-icon.adam{font-family:"Overused Grotesk Medium";font-size:18px;letter-spacing:-.03em}
      h3{margin:0 0 14px;font-size:28px;line-height:1.1;letter-spacing:-.03em;text-wrap:balance}
      .description{flex:1;margin:0 0 28px;font-size:16px;line-height:24px;letter-spacing:-.1px;color:rgba(0,0,0,.82)}
      .link{display:flex;align-items:center;justify-content:center;gap:9px;width:100%;padding-top:20px;border-top:1px solid rgba(0,0,0,.12);font-size:14px;font-weight:500;color:#111820}
      .arrow{transition:transform .2s ease}.card:hover .arrow{transform:translateX(5px)}
      @media(max-width:1023px){.grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
      @media(max-width:809px){.services{padding:72px 20px}.head{margin-bottom:64px}.services-title{font-size:40px;line-height:1.06}.grid{grid-template-columns:1fr;gap:64px}.card{padding:52px 24px 24px}.brand-icon{left:50%;margin-left:-28px;top:-28px;width:56px;height:56px}.brand-icon svg{width:28px;height:28px}.brand-icon.meta svg{width:34px;height:34px}.brand-icon.webflow svg{width:30px;height:30px}h3{font-size:24px}}
      </style>
      <section class="services" id="services" aria-labelledby="services-title">
        <div class="inner">
          <header class="head">
            <h2 class="eyebrow" id="services-title">Mes services</h2>
            <p class="services-title">Choisis le service qui correspond le mieux à ton besoin du moment.</p>
          </header>
          <div class="grid">
            <a class="card" href="../services/consultant-google-ads/"><span class="brand-icon" aria-label="Google Ads"><svg viewbox="5 6 39 35" aria-hidden="true"><polygon fill="#ffc107" points="30.129,15.75 18.871,9.25 5.871,31.25 17.129,37.75"/><path fill="#1e88e5" d="M31.871 37.75c1.795 3.109 5.847 4.144 8.879 2.379 3.103-1.806 4.174-5.77 2.379-8.879l-13-22c-1.795-3.109-5.835-4.144-8.879-2.379-3.106 1.801-4.174 5.77-2.379 8.879l13 22z"/><circle cx="11.5" cy="34.5" r="6.5" fill="#43a047"/></svg></span><h3>Stratégie Google Ads</h3><p class="description">Positionne ton entreprise face à des prospects qualifiés qui recherchent déjà ton service et sont prêts à payer pour l’obtenir.</p><span class="link"><span class="link-text">Découvrir le service</span><span class="arrow" aria-hidden="true">→</span></span></a>
            <a class="card" href="../services/consultant-facebook-ads/"><span class="brand-icon meta" aria-label="Meta"><svg viewbox="3.25 2.25 57.5 25.5" fill="none" aria-hidden="true"><path d="M6 25C10 10 15 5 21 5c8 0 12 20 20 20 6 0 10-7 17-20M6 25C12 25 17 8 24 8c7 0 12 17 20 17 6 0 10-7 14-20" stroke="#0866ff" stroke-width="5.5" stroke-linecap="round" stroke-linejoin="round"/></svg></span><h3>Stratégie Facebook Ads</h3><p class="description">Capte des prospects chauds avant même qu’ils ne recherchent activement ton service, puis transforme leur intérêt en demandes concrètes.</p><span class="link"><span class="link-text">Découvrir le service</span><span class="arrow" aria-hidden="true">→</span></span></a>
            <a class="card" href="../services/consultant-audit-google-ads/"><span class="brand-icon" aria-label="Google Ads"><svg viewbox="5 6 39 35" aria-hidden="true"><polygon fill="#ffc107" points="30.129,15.75 18.871,9.25 5.871,31.25 17.129,37.75"/><path fill="#1e88e5" d="M31.871 37.75c1.795 3.109 5.847 4.144 8.879 2.379 3.103-1.806 4.174-5.77 2.379-8.879l-13-22c-1.795-3.109-5.835-4.144-8.879-2.379-3.106 1.801-4.174 5.77-2.379 8.879l13 22z"/><circle cx="11.5" cy="34.5" r="6.5" fill="#43a047"/></svg></span><h3>Audit Google Ads</h3><p class="description">Exploite enfin tes données pour comprendre ce qui bloque, relancer un compte en échec et retrouver un vrai potentiel de croissance.</p><span class="link"><span class="link-text">Découvrir le service</span><span class="arrow" aria-hidden="true">→</span></span></a>
            <a class="card" href="../services/consultant-audit-facebook-ads/"><span class="brand-icon meta" aria-label="Meta"><svg viewbox="3.25 2.25 57.5 25.5" fill="none" aria-hidden="true"><path d="M6 25C10 10 15 5 21 5c8 0 12 20 20 20 6 0 10-7 17-20M6 25C12 25 17 8 24 8c7 0 12 17 20 17 6 0 10-7 14-20" stroke="#0866ff" stroke-width="5.5" stroke-linecap="round" stroke-linejoin="round"/></svg></span><h3>Audit Facebook Ads</h3><p class="description">Trouve le point précis qui freine tes résultats, qu’il s’agisse du ciblage, des créations, de l’offre ou du tunnel, puis corrige-le pour générer davantage de prospects.</p><span class="link"><span class="link-text">Découvrir le service</span><span class="arrow" aria-hidden="true">→</span></span></a>
            <a class="card" href="../services/consultant-landing-page-google-ads/"><span class="brand-icon webflow" aria-label="Webflow"><svg viewbox="6 4.3 29 15.4" fill="none" aria-hidden="true"><path fill="currentColor" d="M29.8 4.3 25 14.7l-3.4-7.9h-4.5l-3.7 7.9-2-10.4H6l4.5 15.4h5l3.7-7.5 3.3 7.5h5L35 4.3h-5.2Z"/></svg></span><h3>Création de page de vente</h3><p class="description">Génère plus de demandes avec le même trafic grâce à une page pensée pour convertir, sans toucher à tes campagnes publicitaires.</p><span class="link"><span class="link-text">Découvrir le service</span><span class="arrow" aria-hidden="true">→</span></span></a>
            <a class="card" href="../services/consultant-google-ads-aux-resultats/"><span class="brand-icon adam" aria-label="Adam Spilmann">AS</span><h3>Partenaire publicitaire</h3><p class="description">Tu vises plusieurs dizaines de milliers d’euros de bénéfices supplémentaires par mois ? Construisons le système publicitaire capable de soutenir cette croissance.</p><span class="link"><span class="link-text">Découvrir le service</span><span class="arrow" aria-hidden="true">→</span></span></a>
          </div>
        </div>
      </section>
    </template>
  </div>

  <div id="about-frame">
    <template shadowrootmode="open">
      <style>
@font-face{font-family:"Overused Grotesk Medium";src:url("../sections-validees/_ressources/communs/overused-grotesk-medium.woff2") format("woff2");font-weight:500;font-display:swap}
@font-face{font-family:"Inter";src:url("../sections-validees/_ressources/communs/inter-regular.woff2") format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Inter";src:url("../sections-validees/_ressources/communs/inter-medium.woff2") format("woff2");font-weight:500;font-display:swap}

* { box-sizing: border-box; }
html, body, :host { margin: 0; background: #f7f7f7; }
img { display: block; width: 100%; height: 100%; }
h1, h2, h3 { font-family: "Overused Grotesk Medium", sans-serif; font-weight: 500; margin: 0; }

.about { --background:#f7f7f7; --ink:rgba(0,0,0,.8); --body:rgba(0,0,0,.82); --line:rgba(0,0,0,.1); background: var(--background); color: var(--ink); font-family: "Inter","Inter Placeholder",sans-serif; font-weight: 400; font-synthesis: none; padding: 120px clamp(28px, 5.55vw, 80px) 0; }
.about .inner { max-width: 1280px; margin: 0 auto; display: grid; grid-template-columns: minmax(0,.85fr) minmax(0,1.15fr); gap: 50px; align-items: center; }

.about-photo { aspect-ratio: 1; border-radius: 4px; overflow: hidden; }
.about-photo img { object-fit: cover; object-position: center 20%; }

.eyebrow { display:inline-flex; align-items:center; gap:8px; min-height:28px; padding:8px 12px; margin:0 0 24px; border-radius:999px; background:rgba(0,0,0,.05); color:rgba(0,0,0,.8); font-family:"Inter","Inter Placeholder",sans-serif; font-size:12px; font-weight:500; line-height:12px; letter-spacing:1.2px; text-transform:uppercase; }
.eyebrow:before { content: ""; width: 6px; height: 6px; flex: 0 0 6px; border-radius: 50%; background: currentColor; }

.about-title { margin-top: 0; font-family: "Overused Grotesk Medium", sans-serif; font-weight: 500; font-size: 64px; line-height: 1.04; letter-spacing: -.04em; margin-bottom: 24px; }

.value-label { font-size: 16px; line-height: 24px; letter-spacing: -.1px; font-weight: 500; color: rgba(0,0,0,.9); margin: 0 0 20px; }

.checklist { list-style: none; margin: 0 0 24px; padding: 0; display: grid; gap: 16px; max-width: 600px; }
.about-details .desc { font-size: 16px; line-height: 24px; letter-spacing: -.1px; color: var(--body); margin: 0 0 36px; max-width: 600px; }
.checklist li { display: flex; align-items: center; gap: 14px; font-size: 16px; line-height: 24px; letter-spacing: -.1px; color: var(--body); }
.checklist .mark { flex-shrink: 0; width: 26px; height: 26px; border-radius: 50%; background: rgba(0,0,0,.08); display: inline-flex; align-items: center; justify-content: center; }
.checklist .mark svg { width: 12px; height: 12px; }
.checklist .mark svg path { stroke: rgba(0,0,0,.5); }

.cta { display: inline-flex; align-items: center; gap: 8px; padding: 16px 28px; border-radius: 4px; border: 0; background: #111820; color: #f7f7f7; font-family: "Inter","Inter Placeholder",sans-serif; font-size: 15px; font-weight: 500; letter-spacing: -.2px; cursor: pointer; }
.cta svg { width: 14px; height: 14px; }

@media (max-width: 900px) {
  .about .inner { grid-template-columns: 1fr; gap: 36px; }
  .about-photo { max-width: 420px; order: 2; }
  .about-details { order: 1; }
}
@media (max-width: 700px) {
  .about { padding: 72px 16px 0; }
  .about-title { margin-top: 0; font-family: "Overused Grotesk Medium", sans-serif; font-weight: 500; font-size: 40px; line-height: 1.06; }
}
</style>
      <section class="about" id="about">
  <div class="inner">
    <div class="about-photo">
      <img src="../sections-validees/_ressources/section-about/portrait-adam-about.webp" alt="Adam Spilmann">
    </div>
    <div class="about-details">
      <h2 class="eyebrow">Qui suis-je ?</h2>
      <p class="about-title">17 000 prospects <strong>générés en 3 ans</strong></p>
      <p class="value-label">Moi c’est Adam Spilmann, partenaire Google &amp; Meta Ads des entreprises de services qui veulent plus de clients.</p>
      <ul class="checklist">
        <li><span class="mark"><svg viewbox="0 0 24 24" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.5"><path d="M20 6L9 17l-5-5"/></svg></span>Formé sur les marchés publicitaires les plus concurrentiels</li>
        <li><span class="mark"><svg viewbox="0 0 24 24" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.5"><path d="M20 6L9 17l-5-5"/></svg></span>Plusieurs comptes passés de 0 à 10, 20, 50 appels/jour (72 mon record)</li>
        <li><span class="mark"><svg viewbox="0 0 24 24" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.5"><path d="M20 6L9 17l-5-5"/></svg></span>Pas là pour te vendre du rêve, mais pour te dire la réalité, même si elle ne te plaît pas (sorry)</li>
      </ul>
      <p class="desc">Mes comptes sont pensés pour absorber la croissance, pas seulement pour tourner. Jamais de la vie je ne te garantirai des résultats chiffrés. Par contre, je peux te garantir de déployer tout ce que je sais, sans compter mes heures, tant que ton compte ne performe pas.</p>
    </div>
  </div>
</section>
    </template>
  </div>

  <div id="etapes-frame">
    <template shadowrootmode="open">
      <style>
      @font-face { font-family: "Overused Grotesk Medium"; src: url("../sections-validees/_ressources/communs/overused-grotesk-medium.woff2") format("woff2"); font-weight: 500; font-display: swap; }
      @font-face { font-family: "Inter"; src: url("../sections-validees/_ressources/communs/inter-regular.woff2") format("woff2"); font-weight: 400; font-display: swap; }
      @font-face { font-family: "Inter"; src: url("../sections-validees/_ressources/communs/inter-medium.woff2") format("woff2"); font-weight: 500; font-display: swap; }

            
    :host {
      --bg: #111820;
      --card: #1b2735;
      --line: rgba(255, 255, 255, .16);
      --text: rgba(255, 255, 255, .84);
      --gutter: clamp(28px, 5.55vw, 80px);
    }
    * { box-sizing: border-box; -webkit-font-smoothing: antialiased; }
    :host { display: block; background: var(--bg); color: #fff; font-family: "Inter", sans-serif; font-synthesis: none; }

    .steps { padding: 120px var(--gutter); }
    .inner { max-width: 1280px; margin: 0 auto; }
    .head { margin-bottom: 72px; text-align: center; }
    .eyebrow { display: inline-flex; align-items: center; gap: 8px; min-height: 28px; margin: 0 0 24px; padding: 8px 12px; border-radius: 999px; background: rgba(247, 247, 247, .08); color: rgba(247, 247, 247, .8); font-size: 12px; font-weight: 500; line-height: 12px; letter-spacing: 1.2px; text-transform: uppercase; }
    .eyebrow::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
    .title { max-width: 850px; margin: 0 auto; font-family: "Overused Grotesk Medium", sans-serif; font-size: clamp(40px, 5vw, 64px); font-weight: 500; line-height: 1.04; letter-spacing: -.04em; text-wrap: balance; }

    .grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; }
    .card { padding: 40px; border-radius: 8px; background: var(--card); }
    .top { display: flex; align-items: center; gap: 18px; margin-bottom: 24px; }
    .num { flex: 0 0 auto; width: 48px; height: 48px; display: grid; place-items: center; border: 1px solid rgba(255, 255, 255, .6); border-radius: 50%; font-size: 16px; font-weight: 500; }
    .name { margin: 0; font-family: "Overused Grotesk Medium", sans-serif; font-size: 28px; font-weight: 500; line-height: 1.1; letter-spacing: -.03em; }
    .card p { margin: 0; max-width: 520px; font-size: 16px; line-height: 1.5; letter-spacing: -.1px; color: var(--text); }

    @media (min-width: 1100px) { .title { max-width: none; white-space: nowrap; } }

    @media (max-width: 809px) {
      :host { --gutter: 20px; }
      .steps { padding: 72px var(--gutter); }
      .head { margin-bottom: 48px; }
      .grid { grid-template-columns: 1fr; gap: 16px; }
      .card { padding: 28px 24px; }
      .name { font-size: 24px; }
      .num { width: 44px; height: 44px; }
    }
  
      </style>
      <section class="steps" id="etapes" aria-labelledby="steps-title">
    <div class="inner">
      <header class="head">
        <h2 class="eyebrow">Comment ça marche ?</h2>
        <p class="title" id="steps-title">Les 4 étapes pour travailler avec moi</p>
      </header>
      <div class="grid">
        <article class="card">
          <div class="top"><span class="num">1</span><h3 class="name">Point stratégique</h3></div>
          <p>On pose vos chiffres à plat : combien de demandes il vous faut, combien coûte réellement une demande sur votre marché, quel budget prévoir. On part de votre marché et de vos marges, sans vous vendre du rêve.</p>
        </article>
        <article class="card">
          <div class="top"><span class="num">2</span><h3 class="name">Lancement des campagnes</h3></div>
          <p>Je déploie une structure de campagnes déjà éprouvée sur des marchés difficiles. Une base solide, lisible et pilotable, améliorée dès que les premières données arrivent.</p>
        </article>
        <article class="card">
          <div class="top"><span class="num">3</span><h3 class="name">Consolidation des campagnes</h3></div>
          <p>On repère les campagnes qui convertissent et génèrent des demandes que vous signez, puis on les stabilise. Elles deviennent une source constante de demandes et de revenus.</p>
        </article>
        <article class="card">
          <div class="top"><span class="num">4</span><h3 class="name">Scaling et testing agressif</h3></div>
          <p>Un flux stable installé, on augmente les budgets et on teste de nouveaux services, zones et offres. On réinvestit une partie du chiffre généré : la croissance se finance sans brûler la trésorerie.</p>
        </article>
      </div>
    </div>
  </section>
    </template>
  </div>

  <div id="faq-frame">
    <template shadowrootmode="open">
      <style>
/* ==========================================================================
   THEME ADAM SPILMANN, v3
   Une seule feuille de style pour tout le site : accueil, pages services,
   articles de blog, style guide. Aucune valeur en dur dans les composants :
   tout passe par les variables de la section 1.

   1. Variables (couleurs, typo, espacements, rayon)
   2. Base
   3. Mise en page (conteneur, sections, grille)
   4. Composants (label, titres, boutons, listes, accordéon, en-tête, pied)
   5. Blocs de page (hero, à propos, étapes, compatibilité, faq)
   6. Fenêtre de qualification
   7. Responsive
   ========================================================================== */

/* ---------- 1. Variables ---------- */

@font-face {
  font-family: "Overused Grotesk Medium";
  src: url("../sections-validees/_ressources/communs/overused-grotesk-medium.woff2") format("woff2");
  font-weight: 500;
  font-display: swap;
}
@font-face {
  font-family: "Inter";
  src: url("../sections-validees/_ressources/communs/inter-regular.woff2") format("woff2");
  font-weight: 400;
  font-display: swap;
}
@font-face {
  font-family: "Inter";
  src: url("../sections-validees/_ressources/communs/inter-medium.woff2") format("woff2");
  font-weight: 500;
  font-display: swap;
}

:host {
  /* Couleurs : jamais de blanc pur en fond, jamais de couleur en dehors de cette liste */
  --paper: #f7f7f7;
  --paper-2: #efefed;
  --ink: #111820;
  --text: rgba(17, 24, 32, .92);
  --text-soft: rgba(17, 24, 32, .68);
  --text-faint: rgba(17, 24, 32, .5);
  --line: rgba(17, 24, 32, .14);
  --on-dark: #ffffff;
  --on-dark-soft: rgba(255, 255, 255, .72);
  --on-dark-faint: rgba(255, 255, 255, .5);
  --line-dark: rgba(255, 255, 255, .16);
  --positive: #1f7a52;
  --negative: #b3261e;
  --whatsapp: #25d366;

  /* Typographie */
  --font-title: "Overused Grotesk Medium", "Inter", sans-serif;
  --font-body: "Inter", system-ui, sans-serif;
  --fs-h1: clamp(42px, 5.6vw, 76px);
  --fs-h2: clamp(40px, 5vw, 64px);
  --fs-h3: 28px;
  --fs-lead: 19px;
  --fs-body: 16px;
  --fs-small: 14px;
  --fs-label: 12px;

  /* Espacements (échelle de 8) */
  --s-1: 8px;
  --s-2: 16px;
  --s-3: 24px;
  --s-4: 32px;
  --s-5: 48px;
  --s-6: 64px;
  --s-7: 96px;
  --s-8: 128px;
  --section: 120px;
  --gutter: clamp(28px, 5.55vw, 80px);
  --container: 1280px;

  /* Forme : tout est carré, seuls les boutons et champs ont un léger arrondi */
  --radius: 4px;
  --header-h: 72px;
}

/* ---------- 2. Base ---------- */

*, *::before, *::after { box-sizing: border-box; -webkit-font-smoothing: antialiased; }
:host { display: block; background: var(--paper); color: var(--text); font-family: var(--font-body); font-size: var(--fs-body); line-height: 1.6; font-synthesis: none; }
img { display: block; max-width: 100%; height: auto; }
a { color: inherit; }
button { font: inherit; color: inherit; }
h1, h2, h3, h4, p, ul { margin: 0; }
ul { padding: 0; list-style: none; }
:focus-visible { outline: 2px solid currentColor; outline-offset: 3px; }
.skip-link { position: absolute; left: -9999px; top: 0; z-index: 100; padding: var(--s-1) var(--s-2); background: var(--ink); color: var(--on-dark); }
.skip-link:focus { left: 0; }

/* ---------- 3. Mise en page ---------- */

.container { width: min(100% - 2 * var(--gutter), var(--container)); margin-inline: auto; }

.section { padding-block: var(--section); }
.section--alt { background: var(--paper); }
.section--dark { background: var(--ink); color: var(--on-dark); }
.section--dark .label { color: var(--on-dark-faint); }
.section--dark .lead,
.section--dark .text { color: var(--on-dark-soft); }

/* Grille 12 colonnes : les blocs se calent dessus, rien ne flotte */
.grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--s-4); row-gap: var(--s-5); }

/* En-tête de section : label, titre, texte. Toujours le même. */
.section-head { max-width: 760px; margin-bottom: var(--s-6); }
.section-head .label { margin-bottom: var(--s-3); }
.section-head .lead { margin-top: var(--s-3); }

/* ---------- 4. Composants ---------- */

/* Label : petit texte en capitales avec un carré */
.label {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: var(--fs-label);
  font-weight: 500;
  line-height: 1;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--text-faint);
}
.label::before { content: ""; width: 7px; height: 7px; background: currentColor; }

/* Titres */
.h1, .h2, .h3 { font-family: var(--font-title); font-weight: 500; text-wrap: balance; }
.h1 { font-size: var(--fs-h1); line-height: 1.02; letter-spacing: -.045em; }
.h2 { font-size: var(--fs-h2); line-height: 1.04; letter-spacing: -.04em; }
.h3 { font-size: var(--fs-h3); line-height: 1.2; letter-spacing: -.02em; }
.h1 strong, .h2 strong, .h3 strong { font-weight: 500; color: var(--text-faint); }
.section--dark .h2 strong, .section--dark .h3 strong { color: var(--on-dark-faint); }

/* Textes */
.lead { max-width: 640px; font-size: var(--fs-lead); line-height: 1.5; color: var(--text-soft); }
.text { max-width: 640px; color: var(--text-soft); }
.text + .text { margin-top: var(--s-2); }
.small { font-size: var(--fs-small); line-height: 1.5; }

/* Boutons : deux formats, une seule hauteur */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  min-height: 52px;
  padding: 0 var(--s-3);
  border: 1px solid transparent;
  border-radius: var(--radius);
  font-size: 15px;
  font-weight: 500;
  line-height: 1;
  text-decoration: none;
  cursor: pointer;
  transition: background-color .2s, color .2s, border-color .2s;
}
.btn--primary { background: var(--ink); color: var(--on-dark); }
.btn--primary:hover { background: #26303b; }
.btn--secondary { border-color: var(--line); background: transparent; color: var(--text); }
.btn--secondary:hover { border-color: var(--ink); }
.section--dark .btn--primary, .btn--light { background: var(--on-dark); color: var(--ink); }
.section--dark .btn--primary:hover, .btn--light:hover { background: var(--paper); }
.btn-row { display: flex; flex-wrap: wrap; gap: var(--s-2); }
.btn .arrow { transition: transform .2s; }
.btn:hover .arrow { transform: translateX(4px); }

/* Liste à coches : une ligne = un trait fin au-dessus */
.checklist { border-top: 1px solid var(--line); }
.checklist li {
  display: grid;
  grid-template-columns: 24px 1fr;
  gap: var(--s-2);
  padding-block: var(--s-2);
  border-bottom: 1px solid var(--line);
  color: var(--text);
}
.checklist svg { width: 20px; height: 20px; margin-top: 2px; fill: none; stroke: var(--positive); stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.checklist--negative svg { stroke: var(--negative); }

/* Accordéon : utilisé partout (compatibilité et FAQ), un seul composant */
.accordion { border-top: 1px solid var(--line); }
.accordion details { border-bottom: 1px solid var(--line); }
.accordion summary {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: var(--s-3);
  padding-block: var(--s-3);
  font-family: var(--font-body);
  font-size: 16px;
  font-weight: 500;
  line-height: 24px;
  letter-spacing: -.1px;
  color: rgba(0, 0, 0, .9);
  cursor: pointer;
  list-style: none;
}
.accordion summary::-webkit-details-marker { display: none; }
.accordion summary::after {
  content: "+";
  flex: 0 0 auto;
  width: 24px;
  font-family: var(--font-body);
  font-size: 24px;
  line-height: 1;
  text-align: center;
  color: var(--text-faint);
}
.accordion details[open] summary::after { content: "−"; }
.accordion .answer { padding-bottom: var(--s-3); max-width: 680px; color: var(--text-soft); font-size: 16px; line-height: 24px; letter-spacing: -.1px; }
.accordion .answer > * + * { margin-top: var(--s-2); }
.accordion .answer .checklist { margin-top: var(--s-2); }
.accordion .answer .checklist li { padding-block: 12px; font-size: var(--fs-small); }

/* En-tête du site */
.header {
  position: sticky;
  top: 0;
  z-index: 50;
  height: var(--header-h);
  background: var(--paper);
  border-bottom: 1px solid var(--line);
}
.header .container { height: 100%; display: flex; align-items: center; justify-content: space-between; gap: var(--s-4); }
.brand { font-family: var(--font-title); font-size: 21px; letter-spacing: -.03em; text-decoration: none; }
.nav { display: flex; align-items: center; gap: var(--s-4); }
.nav a:not(.btn) { font-size: var(--fs-small); text-decoration: none; color: var(--text-soft); transition: color .2s; }
.nav a:not(.btn):hover { color: var(--ink); }
.nav .btn { min-height: 44px; padding-inline: 20px; font-size: var(--fs-small); }
.menu-toggle { display: none; width: 44px; height: 44px; border: 1px solid var(--line); border-radius: var(--radius); background: transparent; cursor: pointer; }
.menu-toggle span { display: block; width: 18px; height: 1.5px; margin: 5px auto; background: var(--ink); }

/* Pied de page */
.footer { background: var(--ink); color: var(--on-dark); }
.footer-cta { padding-block: var(--s-7); border-bottom: 1px solid var(--line-dark); }
.footer-cta .container { display: grid; grid-template-columns: 1fr auto; gap: var(--s-5); align-items: end; }
.footer-cta .h2 { max-width: 780px; }
.footer-cols { padding-block: var(--s-6); display: grid; grid-template-columns: 1.4fr 1fr 1fr 1fr; gap: var(--s-5); }
.footer .label { margin-bottom: var(--s-2); color: var(--on-dark-faint); }
.footer li + li { margin-top: 10px; }
.footer li, .footer a { font-size: 16px; line-height: 24px; letter-spacing: -.1px; }
.footer a { text-decoration: none; color: var(--on-dark-soft); }
.footer a:hover { color: var(--on-dark); }
.footer .about-note { max-width: 320px; color: var(--on-dark-soft); font-size: 16px; line-height: 24px; letter-spacing: -.1px; }
.footer-bottom { padding-block: var(--s-3); border-top: 1px solid var(--line-dark); color: var(--on-dark-faint); font-size: 12px; }
.footer-bottom .container { display: flex; justify-content: space-between; gap: var(--s-3); }

/* ---------- 5. Blocs de page ---------- */

/* Hero : texte à gauche, photo à droite */
.hero { padding-block: var(--s-7) var(--section); }
.hero .grid { align-items: center; }
.hero-text { grid-column: 1 / span 7; }
.hero-text .label { margin-bottom: var(--s-4); }
.hero-text .lead { margin-top: var(--s-4); }
.hero-text .btn-row { margin-top: var(--s-5); }
.hero-photo { grid-column: 9 / span 4; }
.hero-photo img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; object-position: 90% 50%; }

/* À propos : photo à gauche, texte à droite */
.about-photo { grid-column: 1 / span 5; }
.about-photo img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; }
.about-body { grid-column: 7 / span 6; align-self: center; }
.about-body .label { margin-bottom: var(--s-3); }
.about-body .checklist { margin-top: var(--s-4); margin-bottom: var(--s-4); }
.about-body .lead { margin-top: var(--s-3); color: var(--text); }

/* Étapes : chaque ligne = numéro, titre, texte */
.steps { border-top: 1px solid var(--line-dark); }
.step {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  column-gap: var(--s-4);
  row-gap: var(--s-2);
  padding-block: var(--s-5);
  border-bottom: 1px solid var(--line-dark);
}
.step-num { grid-column: 1 / span 1; font-family: var(--font-title); font-size: var(--fs-h3); color: var(--on-dark-faint); line-height: 1.2; }
.step-title { grid-column: 2 / span 5; }
.step-title .kicker { margin-bottom: var(--s-1); font-size: var(--fs-label); letter-spacing: .12em; text-transform: uppercase; color: var(--on-dark-faint); }
.step-text { grid-column: 8 / span 5; color: var(--on-dark-soft); }
.step-text > * + * { margin-top: var(--s-2); }

/* Compatibilité : deux colonnes égales */
.split { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: var(--s-6); row-gap: var(--s-6); }
.split-title { display: flex; align-items: center; gap: var(--s-2); margin-bottom: var(--s-3); }
.split-title .mark { display: grid; place-items: center; width: 32px; height: 32px; font-size: 16px; font-weight: 500; color: var(--on-dark); background: var(--positive); }
.split-title .mark--no { background: var(--negative); }

/* FAQ : titre à gauche, questions à droite */
.faq-head { grid-column: 1 / span 5; align-self: start; position: sticky; top: calc(var(--header-h) + var(--s-4)); }
.faq-head .label { margin-bottom: var(--s-3); }
.faq-head .lead { margin-top: var(--s-3); font-size: 16px; line-height: 24px; letter-spacing: -.1px; }
.faq-list { grid-column: 7 / span 6; }


/* ---------- 7. Responsive ---------- */

@media (max-width: 1023px) {
  :host { --section: var(--s-7); --gutter: clamp(28px, 5.55vw, 80px); }
  .hero-text { grid-column: 1 / -1; }
  .hero-photo { grid-column: 1 / span 6; }
  .about-photo { grid-column: 1 / span 5; }
  .about-body { grid-column: 6 / -1; }
  .step-title { grid-column: 2 / -1; }
  .step-text { grid-column: 2 / -1; }
  .faq-head { grid-column: 1 / -1; position: static; }
  .faq-list { grid-column: 1 / -1; }
  .footer-cols { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 809px) {
  :host { --section: 72px; --gutter: 20px; --header-h: 64px; --fs-lead: 17px; --fs-h2: 40px; }
  .menu-toggle { display: block; }
  .nav {
    position: absolute;
    top: var(--header-h);
    left: 0;
    right: 0;
    display: none;
    flex-direction: column;
    align-items: stretch;
    gap: 0;
    padding: var(--s-2) var(--gutter) var(--s-3);
    background: var(--paper);
    border-bottom: 1px solid var(--line);
  }
  .nav.is-open { display: flex; }
  .nav a:not(.btn) { padding-block: 14px; font-size: 16px; border-bottom: 1px solid var(--line); }
  .nav .btn { margin-top: var(--s-2); }
  .section-head { margin-bottom: var(--s-5); }
  .hero { padding-block: var(--s-5) var(--section); }
  .hero-photo { grid-column: 1 / -1; }
  .about-photo, .about-body { grid-column: 1 / -1; }
  .btn-row .btn { flex: 1 1 100%; }
  .step { padding-block: var(--s-4); }
  .step-num { grid-column: 1 / -1; }
  .step-title, .step-text { grid-column: 1 / -1; }
  .split { grid-template-columns: 1fr; }
  .accordion summary { font-size: 16px; }
  .footer-cta .container { grid-template-columns: 1fr; align-items: start; }
  .footer-cols { grid-template-columns: 1fr; gap: var(--s-4); }
  .footer-bottom .container { flex-direction: column; }
  .sticky-contact { left: var(--s-2); right: var(--s-2); bottom: var(--s-2); }
  .sticky-contact .btn { width: 100%; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  * { transition: none !important; }
}

.eyebrow { display:inline-flex; align-items:center; gap:8px; min-height:28px; padding:8px 12px; margin:0 0 24px; border-radius:999px; background:rgba(0,0,0,.05); color:rgba(0,0,0,.8); font-family:"Inter","Inter Placeholder",sans-serif; font-size:12px; font-weight:500; line-height:12px; letter-spacing:1.2px; text-transform:uppercase; }
.eyebrow:before{ content:""; width:6px; height:6px; flex:0 0 6px; border-radius:50%; background:currentColor}

.h1 strong, .h2 strong, .h3 strong { color: inherit; }
.accordion .answer, .faq-head .lead { color: rgba(17, 24, 32, .82); }
.section--alt { background: var(--paper); }
:host { background: var(--paper); }

      </style>
      <section class="section section--alt" id="faq">
      <div class="container grid">
        <div class="faq-head">
          <h2 class="eyebrow" id="faq-title">Questions fréquentes</h2>
          <p class="h2">Les questions que l’on me pose <strong>le plus souvent</strong></p>
          <p class="lead">Tu ne trouves pas ta réponse ? Écris-moi, je réponds sous 24 heures ouvrées.</p>
        </div>
        <div class="faq-list accordion">
          <details open>
            <summary>Peux-tu accompagner le lancement d’une nouvelle activité ?</summary>
            <div class="answer"><p>Oui, totalement. Je l’ai déjà fait plusieurs fois, avec des entreprises parties de zéro et devenues très rentables en quelques mois. Mais lancer une activité ne signifie pas forcément se lancer sans argent. Si tu viens de créer ta micro-entreprise avec 300 € à investir, je ne peux pas t’aider : on ne construit pas un système d’acquisition solide avec ses derniers euros. En revanche, si tu lances une entreprise, une activité ou une implantation avec une vraie enveloppe pour te développer, c’est exactement le genre de projet que j’aime accompagner.</p></div>
          </details>
          <details>
            <summary>Pourquoi refuses-tu de garantir un nombre d’appels ?</summary>
            <div class="answer"><p>Parce que garantir un nombre d’appels, c’est du bullshit. Je pourrais te promettre 30 appels en 90 jours, mais je ne prendrais aucun risque. Deux campagnes identiques ne produisent jamais exactement les mêmes résultats : les enchères, la concurrence et les prospects changent d’une zone à l’autre. Mes clients ne signent pas pour une garantie artificielle. Ils signent parce que j’ai déjà atteint les niveaux qu’ils veulent viser. Ma garantie, c’est mon implication : je vais me tuer sur leur compte jusqu’à trouver ce qui fonctionne.</p></div>
          </details>
          <details>
            <summary>Peut-on relancer un compte qui a déjà échoué ?</summary>
            <div class="answer"><p>Oui. Un compte qui a échoué n’est pas forcément un compte qui ne pouvait pas fonctionner. Nous auditons les campagnes, le tracking, la landing page, l’offre et le traitement des appels pour trouver le vrai point de blocage. Ensuite, il faut poser la question que beaucoup évitent : les moyens engagés étaient-ils cohérents avec les objectifs ? Tu ne peux pas vouloir générer 50 000 € de chiffre d’affaires supplémentaire avec 500 € de budget, puis conclure que Google Ads ne fonctionne pas.</p></div>
          </details>
          <details>
            <summary>Mon marché est concurrentiel : peut-il quand même être rentable ?</summary>
            <div class="answer"><p>Quand j’entends qu’un marché est « trop concurrentiel », je demande : trop concurrentiel par rapport à quoi ? Tu es couvreur, tu peux gagner 20 000 ou 30 000 € sur une rénovation, mais investir 3 000 € pour trouver des clients te paraît déraisonnable ? Tu es plombier, tu factures une recherche de fuite près de 1 000 €, mais une demande à 80 € serait impossible à rentabiliser ? Si tes concurrents investissent pour rester visibles, c’est probablement qu’ils y trouvent leur compte. Le problème n’est pas toujours la concurrence. Parfois, c’est simplement la peur d’investir.</p></div>
          </details>
          <details>
            <summary>Puis-je vérifier les résultats de tes anciens clients ?</summary>
            <div class="answer"><p>Oui, avec grand plaisir. Je peux te montrer la majorité des comptes Google Ads que je gère, avec leurs dépenses, les appels générés et le contexte des résultats. Avec leur accord, je peux également te transmettre les coordonnées de certains clients pour que tu leur poses directement tes questions. Je préfère te montrer de vrais comptes plutôt que te demander de croire une capture d’écran sortie de son contexte.</p></div>
          </details>
          <details>
            <summary>Peux-tu m’aider à conquérir un nouveau secteur ?</summary>
            <div class="answer"><p>Oui, je l’ai déjà fait plusieurs fois. Si tu veux ouvrir une nouvelle ville, un département ou une zone, dis-le-moi dès le départ. Je construirai une stratégie spécifique avec des budgets, des services et des objectifs adaptés à chaque secteur. Je ne lance pas quelques annonces dans une nouvelle ville en espérant que ça prenne : je réfléchis au tunnel complet, de la visibilité jusqu’au traitement des appels et à la rentabilité de la zone.</p></div>
          </details>
          <details>
            <summary>Quelqu’un a déjà géré mes publicités sans succès : que feras-tu différemment ?</summary>
            <div class="answer"><p>Beaucoup de personnes s’improvisent expertes après avoir lancé quelques campagnes. De mon côté, j’ai dépensé plusieurs millions d’euros et généré des dizaines de milliers d’appels pour mes clients. Je commencerai par auditer ton compte et t’expliquer précisément ce qui n’allait pas. Mais demande-toi aussi si ton ancien prestataire avait déjà atteint les résultats que tu lui demandais. Tu veux passer un cap sur ton chiffre d’affaires ? Pourquoi confier cet objectif à quelqu’un qui n’a jamais réussi à le faire pour d’autres ?</p></div>
          </details>
          <details>
            <summary>Je n’ai que quelques centaines d’euros à investir : est-ce suffisant ?</summary>
            <div class="answer"><p>Dans la majorité des entreprises de services, non. Je préfère te le dire franchement plutôt que d’encaisser tes derniers euros pour faire semblant de travailler. Avec quelques centaines d’euros, tu n’auras généralement ni le volume ni les données nécessaires pour prendre de bonnes décisions. Pour la plupart des entreprises que j’accompagne, investir moins de 3 000 € par mois n’a pas beaucoup de sens. Si cet investissement met ton entreprise en danger, ne lance pas Google Ads maintenant : ce n’est pas un bouton magique pour sauver une société sans trésorerie.</p></div>
          </details>
        </div>
      </div>
    </section>
    </template>
  </div>

  <div id="footer-frame">
    <template shadowrootmode="open">
      <style>
/* ==========================================================================
   THEME ADAM SPILMANN, v3
   Une seule feuille de style pour tout le site : accueil, pages services,
   articles de blog, style guide. Aucune valeur en dur dans les composants :
   tout passe par les variables de la section 1.

   1. Variables (couleurs, typo, espacements, rayon)
   2. Base
   3. Mise en page (conteneur, sections, grille)
   4. Composants (label, titres, boutons, listes, accordéon, en-tête, pied)
   5. Blocs de page (hero, à propos, étapes, compatibilité, faq)
   6. Fenêtre de qualification
   7. Responsive
   ========================================================================== */

/* ---------- 1. Variables ---------- */

@font-face {
  font-family: "Overused Grotesk Medium";
  src: url("../sections-validees/_ressources/communs/overused-grotesk-medium.woff2") format("woff2");
  font-weight: 500;
  font-display: swap;
}
@font-face {
  font-family: "Inter";
  src: url("../sections-validees/_ressources/communs/inter-regular.woff2") format("woff2");
  font-weight: 400;
  font-display: swap;
}
@font-face {
  font-family: "Inter";
  src: url("../sections-validees/_ressources/communs/inter-medium.woff2") format("woff2");
  font-weight: 500;
  font-display: swap;
}

:host {
  /* Couleurs : jamais de blanc pur en fond, jamais de couleur en dehors de cette liste */
  --paper: #f7f7f7;
  --paper-2: #efefed;
  --ink: #111820;
  --text: rgba(17, 24, 32, .92);
  --text-soft: rgba(17, 24, 32, .68);
  --text-faint: rgba(17, 24, 32, .5);
  --line: rgba(17, 24, 32, .14);
  --on-dark: #ffffff;
  --on-dark-soft: rgba(255, 255, 255, .72);
  --on-dark-faint: rgba(255, 255, 255, .5);
  --line-dark: rgba(255, 255, 255, .16);
  --positive: #1f7a52;
  --negative: #b3261e;
  --whatsapp: #25d366;

  /* Typographie */
  --font-title: "Overused Grotesk Medium", "Inter", sans-serif;
  --font-body: "Inter", system-ui, sans-serif;
  --fs-h1: clamp(42px, 5.6vw, 76px);
  --fs-h2: clamp(40px, 5vw, 64px);
  --fs-h3: 28px;
  --fs-lead: 19px;
  --fs-body: 16px;
  --fs-small: 14px;
  --fs-label: 12px;

  /* Espacements (échelle de 8) */
  --s-1: 8px;
  --s-2: 16px;
  --s-3: 24px;
  --s-4: 32px;
  --s-5: 48px;
  --s-6: 64px;
  --s-7: 96px;
  --s-8: 128px;
  --section: 120px;
  --gutter: clamp(28px, 5.55vw, 80px);
  --container: 1280px;

  /* Forme : tout est carré, seuls les boutons et champs ont un léger arrondi */
  --radius: 4px;
  --header-h: 72px;
}

/* ---------- 2. Base ---------- */

*, *::before, *::after { box-sizing: border-box; -webkit-font-smoothing: antialiased; }
:host { display: block; background: var(--paper); color: var(--text); font-family: var(--font-body); font-size: var(--fs-body); line-height: 1.6; font-synthesis: none; }
img { display: block; max-width: 100%; height: auto; }
a { color: inherit; }
button { font: inherit; color: inherit; }
h1, h2, h3, h4, p, ul { margin: 0; }
ul { padding: 0; list-style: none; }
:focus-visible { outline: 2px solid currentColor; outline-offset: 3px; }
.skip-link { position: absolute; left: -9999px; top: 0; z-index: 100; padding: var(--s-1) var(--s-2); background: var(--ink); color: var(--on-dark); }
.skip-link:focus { left: 0; }

/* ---------- 3. Mise en page ---------- */

.container { width: min(100% - 2 * var(--gutter), var(--container)); margin-inline: auto; }

.section { padding-block: var(--section); }
.section--alt { background: var(--paper-2); }
.section--dark { background: var(--ink); color: var(--on-dark); }
.section--dark .label { color: var(--on-dark-faint); }
.section--dark .lead,
.section--dark .text { color: var(--on-dark-soft); }

/* Grille 12 colonnes : les blocs se calent dessus, rien ne flotte */
.grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--s-4); row-gap: var(--s-5); }

/* En-tête de section : label, titre, texte. Toujours le même. */
.section-head { max-width: 760px; margin-bottom: var(--s-6); }
.section-head .label { margin-bottom: var(--s-3); }
.section-head .lead { margin-top: var(--s-3); }

/* ---------- 4. Composants ---------- */

/* Label : petit texte en capitales avec un carré */
.label {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: var(--fs-label);
  font-weight: 500;
  line-height: 1;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--text-faint);
}
.label::before { content: ""; width: 7px; height: 7px; background: currentColor; }

/* Titres */
.h1, .h2, .h3 { font-family: var(--font-title); font-weight: 500; text-wrap: balance; }
.h1 { font-size: var(--fs-h1); line-height: 1.02; letter-spacing: -.045em; }
.h2 { font-size: var(--fs-h2); line-height: 1.04; letter-spacing: -.04em; }
.h3 { font-size: var(--fs-h3); line-height: 1.2; letter-spacing: -.02em; }
.h1 strong, .h2 strong, .h3 strong { font-weight: 500; color: var(--text-faint); }
.section--dark .h2 strong, .section--dark .h3 strong { color: var(--on-dark-faint); }

/* Textes */
.lead { max-width: 640px; font-size: var(--fs-lead); line-height: 1.5; color: var(--text-soft); }
.text { max-width: 640px; color: var(--text-soft); }
.text + .text { margin-top: var(--s-2); }
.small { font-size: var(--fs-small); line-height: 1.5; }

/* Boutons : deux formats, une seule hauteur */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  min-height: 52px;
  padding: 0 var(--s-3);
  border: 1px solid transparent;
  border-radius: var(--radius);
  font-size: 15px;
  font-weight: 500;
  line-height: 1;
  text-decoration: none;
  cursor: pointer;
  transition: background-color .2s, color .2s, border-color .2s;
}
.btn--primary { background: var(--ink); color: var(--on-dark); }
.btn--primary:hover { background: #26303b; }
.btn--secondary { border-color: var(--line); background: transparent; color: var(--text); }
.btn--secondary:hover { border-color: var(--ink); }
.section--dark .btn--primary, .btn--light { background: var(--on-dark); color: var(--ink); }
.section--dark .btn--primary:hover, .btn--light:hover { background: var(--paper-2); }
.btn-row { display: flex; flex-wrap: wrap; gap: var(--s-2); }
.btn .arrow { transition: transform .2s; }
.btn:hover .arrow { transform: translateX(4px); }

/* Liste à coches : une ligne = un trait fin au-dessus */
.checklist { border-top: 1px solid var(--line); }
.checklist li {
  display: grid;
  grid-template-columns: 24px 1fr;
  gap: var(--s-2);
  padding-block: var(--s-2);
  border-bottom: 1px solid var(--line);
  color: var(--text);
}
.checklist svg { width: 20px; height: 20px; margin-top: 2px; fill: none; stroke: var(--positive); stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.checklist--negative svg { stroke: var(--negative); }

/* Accordéon : utilisé partout (compatibilité et FAQ), un seul composant */
.accordion { border-top: 1px solid var(--line); }
.accordion details { border-bottom: 1px solid var(--line); }
.accordion summary {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: var(--s-3);
  padding-block: var(--s-3);
  font-family: var(--font-body);
  font-size: 16px;
  font-weight: 500;
  line-height: 24px;
  letter-spacing: -.1px;
  color: rgba(0, 0, 0, .9);
  cursor: pointer;
  list-style: none;
}
.accordion summary::-webkit-details-marker { display: none; }
.accordion summary::after {
  content: "+";
  flex: 0 0 auto;
  width: 24px;
  font-family: var(--font-body);
  font-size: 24px;
  line-height: 1;
  text-align: center;
  color: var(--text-faint);
}
.accordion details[open] summary::after { content: "−"; }
.accordion .answer { padding-bottom: var(--s-3); max-width: 680px; color: var(--text-soft); font-size: 16px; line-height: 24px; letter-spacing: -.1px; }
.accordion .answer > * + * { margin-top: var(--s-2); }
.accordion .answer .checklist { margin-top: var(--s-2); }
.accordion .answer .checklist li { padding-block: 12px; font-size: var(--fs-small); }

/* En-tête du site */
.header {
  position: sticky;
  top: 0;
  z-index: 50;
  height: var(--header-h);
  background: var(--paper);
  border-bottom: 1px solid var(--line);
}
.header .container { height: 100%; display: flex; align-items: center; justify-content: space-between; gap: var(--s-4); }
.brand { font-family: var(--font-title); font-size: 21px; letter-spacing: -.03em; text-decoration: none; }
.nav { display: flex; align-items: center; gap: var(--s-4); }
.nav a:not(.btn) { font-size: var(--fs-small); text-decoration: none; color: var(--text-soft); transition: color .2s; }
.nav a:not(.btn):hover { color: var(--ink); }
.nav .btn { min-height: 44px; padding-inline: 20px; font-size: var(--fs-small); }
.menu-toggle { display: none; width: 44px; height: 44px; border: 1px solid var(--line); border-radius: var(--radius); background: transparent; cursor: pointer; }
.menu-toggle span { display: block; width: 18px; height: 1.5px; margin: 5px auto; background: var(--ink); }

/* Pied de page */
.footer { background: var(--ink); color: var(--on-dark); }
.footer-cta { padding-block: var(--s-7); border-bottom: 1px solid var(--line-dark); }
.footer-cta .container { display: grid; grid-template-columns: 1fr auto; gap: var(--s-5); align-items: end; }
.footer-cta .h2 { max-width: 780px; }
.footer-cols { padding-block: var(--s-6); display: grid; grid-template-columns: 1.4fr 1fr 1fr 1fr; gap: var(--s-5); }
.footer .label { margin-bottom: var(--s-2); color: var(--on-dark-faint); }
.footer li + li { margin-top: 10px; }
.footer li, .footer a { font-size: 16px; line-height: 24px; letter-spacing: -.1px; }
.footer a { text-decoration: none; color: var(--on-dark-soft); }
.footer a:hover { color: var(--on-dark); }
.footer .about-note { max-width: 320px; color: var(--on-dark-soft); font-size: 16px; line-height: 24px; letter-spacing: -.1px; }
.footer-bottom { padding-block: var(--s-3); border-top: 1px solid var(--line-dark); color: var(--on-dark-faint); font-size: 12px; }
.footer-bottom .container { display: flex; justify-content: space-between; gap: var(--s-3); }

/* ---------- 5. Blocs de page ---------- */

/* Hero : texte à gauche, photo à droite */
.hero { padding-block: var(--s-7) var(--section); }
.hero .grid { align-items: center; }
.hero-text { grid-column: 1 / span 7; }
.hero-text .label { margin-bottom: var(--s-4); }
.hero-text .lead { margin-top: var(--s-4); }
.hero-text .btn-row { margin-top: var(--s-5); }
.hero-photo { grid-column: 9 / span 4; }
.hero-photo img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; object-position: 90% 50%; }

/* À propos : photo à gauche, texte à droite */
.about-photo { grid-column: 1 / span 5; }
.about-photo img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; }
.about-body { grid-column: 7 / span 6; align-self: center; }
.about-body .label { margin-bottom: var(--s-3); }
.about-body .checklist { margin-top: var(--s-4); margin-bottom: var(--s-4); }
.about-body .lead { margin-top: var(--s-3); color: var(--text); }

/* Étapes : chaque ligne = numéro, titre, texte */
.steps { border-top: 1px solid var(--line-dark); }
.step {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  column-gap: var(--s-4);
  row-gap: var(--s-2);
  padding-block: var(--s-5);
  border-bottom: 1px solid var(--line-dark);
}
.step-num { grid-column: 1 / span 1; font-family: var(--font-title); font-size: var(--fs-h3); color: var(--on-dark-faint); line-height: 1.2; }
.step-title { grid-column: 2 / span 5; }
.step-title .kicker { margin-bottom: var(--s-1); font-size: var(--fs-label); letter-spacing: .12em; text-transform: uppercase; color: var(--on-dark-faint); }
.step-text { grid-column: 8 / span 5; color: var(--on-dark-soft); }
.step-text > * + * { margin-top: var(--s-2); }

/* Compatibilité : deux colonnes égales */
.split { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: var(--s-6); row-gap: var(--s-6); }
.split-title { display: flex; align-items: center; gap: var(--s-2); margin-bottom: var(--s-3); }
.split-title .mark { display: grid; place-items: center; width: 32px; height: 32px; font-size: 16px; font-weight: 500; color: var(--on-dark); background: var(--positive); }
.split-title .mark--no { background: var(--negative); }

/* FAQ : titre à gauche, questions à droite */
.faq-head { grid-column: 1 / span 5; align-self: start; position: sticky; top: calc(var(--header-h) + var(--s-4)); }
.faq-head .label { margin-bottom: var(--s-3); }
.faq-head .lead { margin-top: var(--s-3); font-size: 16px; line-height: 24px; letter-spacing: -.1px; }
.faq-list { grid-column: 7 / span 6; }


/* ---------- 7. Responsive ---------- */

@media (max-width: 1023px) {
  :host { --section: var(--s-7); --gutter: clamp(28px, 5.55vw, 80px); }
  .hero-text { grid-column: 1 / -1; }
  .hero-photo { grid-column: 1 / span 6; }
  .about-photo { grid-column: 1 / span 5; }
  .about-body { grid-column: 6 / -1; }
  .step-title { grid-column: 2 / -1; }
  .step-text { grid-column: 2 / -1; }
  .faq-head { grid-column: 1 / -1; position: static; }
  .faq-list { grid-column: 1 / -1; }
  .footer-cols { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 809px) {
  :host { --section: 72px; --gutter: 20px; --header-h: 64px; --fs-lead: 17px; --fs-h2: 40px; }
  .menu-toggle { display: block; }
  .nav {
    position: absolute;
    top: var(--header-h);
    left: 0;
    right: 0;
    display: none;
    flex-direction: column;
    align-items: stretch;
    gap: 0;
    padding: var(--s-2) var(--gutter) var(--s-3);
    background: var(--paper);
    border-bottom: 1px solid var(--line);
  }
  .nav.is-open { display: flex; }
  .nav a:not(.btn) { padding-block: 14px; font-size: 16px; border-bottom: 1px solid var(--line); }
  .nav .btn { margin-top: var(--s-2); }
  .section-head { margin-bottom: var(--s-5); }
  .hero { padding-block: var(--s-5) var(--section); }
  .hero-photo { grid-column: 1 / -1; }
  .about-photo, .about-body { grid-column: 1 / -1; }
  .btn-row .btn { flex: 1 1 100%; }
  .step { padding-block: var(--s-4); }
  .step-num { grid-column: 1 / -1; }
  .step-title, .step-text { grid-column: 1 / -1; }
  .split { grid-template-columns: 1fr; }
  .accordion summary { font-size: 16px; }
  .footer-cta .container { grid-template-columns: 1fr; align-items: start; }
  .footer-cols { grid-template-columns: 1fr; gap: var(--s-4); }
  .footer-bottom .container { flex-direction: column; }
  .sticky-contact { left: var(--s-2); right: var(--s-2); bottom: var(--s-2); }
  .sticky-contact .btn { width: 100%; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  * { transition: none !important; }
}

:host{background:var(--ink)}

      </style>
      <footer class="footer">
    <div class="container footer-cols">
      <div>
        <p class="label">Adam Spilmann</p>
        <p class="about-note">J’accompagne votre entreprise de service avec des stratégies Google Ads et Meta Ads conçues pour générer davantage de demandes qualifiées, maîtriser vos coûts et développer durablement votre chiffre d’affaires.</p>
      </div>
      <div>
        <p class="label">Services</p>
        <ul>
          <li><a href="../services/consultant-google-ads/">Stratégie Google Ads</a></li>
          <li><a href="../services/consultant-facebook-ads/">Stratégie Facebook Ads</a></li>
          <li><a href="../services/consultant-audit-google-ads/">Audit Google Ads</a></li>
          <li><a href="../services/consultant-audit-facebook-ads/">Audit Facebook Ads</a></li>
          <li><a href="../services/consultant-landing-page-google-ads/">Création de page de vente</a></li>
          <li><a href="../services/consultant-google-ads-aux-resultats/">Partenaire publicitaire</a></li>
        </ul>
      </div>
      <div>
        <p class="label">Contact</p>
        <ul>
          <li><a href="mailto:adam@adamspilmann.fr">adam@adamspilmann.fr</a></li>
          <li>Réponse sous 24 h ouvrées</li>
        </ul>
      </div>
      <div>
        <p class="label">Légal</p>
        <ul>
          <li><a href="../mentions-legales.html">Mentions légales</a></li>
          <li><a href="../politique-de-confidentialite.html">Politique de confidentialité</a></li>
          <li><a href="../politique-de-cookies.html">Politique de cookies</a></li>
        </ul>
      </div>
    </div>
    <div class="footer-bottom">
      <div class="container"><p>© 2026 Adam Spilmann. Tous droits réservés.</p></div>
    </div>
  </footer>
    </template>
  </div>

<div class="qualif-overlay" id="qualif-overlay" aria-hidden="true">
    <div class="qualif-dialog" role="dialog" aria-modal="true" aria-labelledby="qualif-title">
      <div class="qualif-header">
        <div class="qualif-brand">
          <strong>Adam Spilmann</strong>
          <span>Qualification du projet</span>
        </div>
        <button type="button" class="qualif-close" id="qualif-close" aria-label="Fermer">×</button>
      </div>
      <div class="qualif-progress"><div class="qualif-progress-bar" id="qualif-progress-bar"></div></div>

      <div class="qualif-panel" data-panel="step-1">
        <p class="qualif-question" id="qualif-title">Point important : je ne suis pas un sauveur d’entreprise.</p>
        <p class="qualif-subtitle">
          <span>Google Ads peut être extrêmement rentable, mais il faut un minimum de budget pour lancer, tester et optimiser une stratégie correctement.</span>
          <span>On voit de tout sur les réseaux sociaux, mais non : 500 € ne suffisent pas pour transformer un compte en machine à générer des clients. J’ai monté des comptes à 10, 20, parfois 50 appels par jour, et aucun n’a démarré avec quelques centaines d’euros.</span>
          <span>Je ne vous demande pas de rouler sur l’or. En revanche, si vous avez de grandes ambitions pour votre entreprise, il faut être prêt à mettre les moyens en face pour les atteindre.</span>
          <span>La publicité est un levier de développement, pas une méthode miracle.</span>
        </p>
        <div class="qualif-answers">
          <button type="button" class="qualif-answer" data-next="step-2" data-label="Je suis prêt à mettre les moyens pour me développer"><span class="dot" aria-hidden="true"></span><span>Je suis prêt à mettre les moyens pour me développer</span></button>
          <button type="button" class="qualif-answer" data-next="result-no" data-label="Je préfère continuer sans investir dans mon acquisition"><span class="dot" aria-hidden="true"></span><span>Je préfère continuer sans investir dans mon acquisition</span></button>
        </div>
      </div>

      <div class="qualif-panel" data-panel="step-2">
        <p class="qualif-question">Quand souhaitez-vous commencer à recevoir plus de clients grâce à la publicité ?</p>
        <div class="qualif-answers">
          <button type="button" class="qualif-answer" data-next="step-3" data-label="Le plus rapidement possible"><span class="dot" aria-hidden="true"></span><span>Le plus rapidement possible</span></button>
          <button type="button" class="qualif-answer" data-next="step-3" data-label="Dans les semaines à venir"><span class="dot" aria-hidden="true"></span><span>Dans les semaines à venir</span></button>
          <button type="button" class="qualif-answer" data-next="result-no" data-label="Je compare actuellement différentes offres"><span class="dot" aria-hidden="true"></span><span>Je compare actuellement différentes offres</span></button>
        </div>
      </div>

      <div class="qualif-panel" data-panel="step-3">
        <p class="qualif-question">Mise en situation FICTIVE</p>
        <p class="qualif-subtitle"><span>Une solution pourrait permettre de générer 50 000 € de chiffre d’affaires supplémentaire chaque mois. Sa mise en place représente un investissement initial de 5 000 €. Quelle serait votre première réaction ?</span></p>
        <div class="qualif-answers">
          <button type="button" class="qualif-answer" data-next="result-ok" data-label="L’investissement me semble cohérent si le plan est sérieux et le potentiel crédible."><span class="dot" aria-hidden="true"></span><span>L’investissement me semble cohérent si le plan est sérieux et le potentiel crédible.</span></button>
          <button type="button" class="qualif-answer" data-next="result-no" data-label="5 000 €, c’est trop cher, même si cela me rapporte 50 000 €."><span class="dot" aria-hidden="true"></span><span>5 000 €, c’est trop cher, même si cela me rapporte 50 000 €.</span></button>
          <button type="button" class="qualif-answer" data-next="result-ok" data-label="Si cela me rapporte 50 000 €, je suis prêt à investir 5 000 €."><span class="dot" aria-hidden="true"></span><span>Si cela me rapporte 50 000 €, je suis prêt à investir 5 000 €.</span></button>
          <button type="button" class="qualif-answer" data-next="result-no" data-label="Je cherche actuellement une solution aux alentours de 500 €."><span class="dot" aria-hidden="true"></span><span>Je cherche actuellement une solution aux alentours de 500 €.</span></button>
        </div>
        <p class="qualif-disclaimer">Cette situation est un exemple entièrement fictif. Les montants présentés ne correspondent pas nécessairement au prix d’une prestation ou aux résultats pouvant être obtenus.</p>
      </div>

      <div class="qualif-panel qualif-result ok" data-panel="result-ok">
        <div class="qualif-result-icon">✓</div>
        <p class="qualif-result-label">Votre profil semble correspondre</p>
        <p class="qualif-result-title">Super, d’après tes réponses, il y a de fortes chances que je puisse t’aider à te développer !</p>
        <p class="qualif-result-copy">Je t’invite à m’envoyer directement un message WhatsApp en cliquant sur le bouton pour que nous puissions échanger ensemble.</p>
        <a class="qualif-whatsapp" id="qualif-whatsapp-link" href="#" target="_blank" rel="noopener noreferrer">
          <svg viewbox="0 0 24 24" aria-hidden="true"><path fill="currentColor" d="M19.05 4.91A9.82 9.82 0 0 0 12.03 2C6.57 2 2.13 6.44 2.13 11.9c0 1.75.46 3.46 1.33 4.96L2 22l5.27-1.38a9.84 9.84 0 0 0 4.74 1.21h.01c5.46 0 9.9-4.44 9.9-9.9a9.8 9.8 0 0 0-2.87-7.02Zm-7.02 15.25h-.01a8.14 8.14 0 0 1-4.15-1.14l-.3-.18-3.13.82.84-3.05-.2-.31a8.18 8.18 0 0 1-1.25-4.39c0-4.5 3.66-8.16 8.17-8.16 2.18 0 4.22.85 5.76 2.39a8.09 8.09 0 0 1 2.38 5.77c0 4.5-3.66 8.16-8.16 8.16Zm4.48-6.11c-.25-.12-1.47-.72-1.7-.8-.23-.09-.4-.12-.57.12-.17.25-.65.8-.8.97-.15.17-.29.19-.54.06-.25-.12-1.04-.38-1.98-1.22-.73-.65-1.22-1.45-1.37-1.69-.14-.25-.02-.38.11-.5.11-.11.25-.29.37-.43.12-.15.17-.25.25-.42.08-.17.04-.31-.02-.43-.06-.12-.57-1.37-.78-1.88-.21-.5-.42-.43-.57-.43h-.49c-.17 0-.43.06-.66.31-.23.25-.87.85-.87 2.08s.89 2.41 1.01 2.58c.12.17 1.76 2.69 4.27 3.77.6.26 1.07.42 1.43.54.6.19 1.14.16 1.57.1.48-.07 1.47-.6 1.68-1.18.21-.59.21-1.09.15-1.19-.06-.11-.23-.17-.48-.29Z"/></svg>
          <span>Clique ici pour lancer une conversation WhatsApp</span>
        </a>
        <p class="qualif-desktop-note">Tu es sur ordinateur ? Envoie-moi directement un message à ce numéro :</p>
        <p class="qualif-desktop-number">+33 7 59 60 49 17</p>
      </div>

      <div class="qualif-panel qualif-result no" data-panel="result-no">
        <div class="qualif-result-icon">×</div>
        <p class="qualif-result-label">Votre profil semble moins correspondre</p>
        <p class="qualif-result-title">Il semblerait, d’après vos réponses, que vous ne soyez peut-être pas éligible à mon offre.</p>
        <p class="qualif-result-copy">Cela ne signifie pas que ton projet n’est pas intéressant. Tu peux toujours m’envoyer directement un message sur Instagram pour m’expliquer ta situation.</p>
        <a class="qualif-instagram" href="#" target="_blank" rel="noopener noreferrer">M’envoyer un message sur Instagram</a>
      </div>
    </div>
  </div>

  <div class="sticky-contact" id="sticky-contact">
    <button type="button" class="sticky-contact-btn" data-open-qualif>
      <span class="sticky-contact-dot" aria-hidden="true"></span>
      Je souhaite être recontacté
    </button>
  </div>

  <script>

    // La section claire précédente doit aussi respirer avant la rupture sombre.
    const homepageAbout = document.querySelector("#about-frame")?.shadowRoot;
    if (homepageAbout) {
      const style = document.createElement("style");
      style.textContent = `.about{padding-bottom:120px!important}@media(max-width:700px){.about{padding-bottom:72px!important}}`;
      homepageAbout.appendChild(style);
    }

    // Les scripts placés dans un Shadow DOM déclaratif restent inertes après
    // le parsing HTML. Les interactions sont donc initialisées depuis la page.
    const heroRoot = document.querySelector("#hero-frame")?.shadowRoot;
    if (heroRoot) {
      const menuToggle = heroRoot.querySelector(".menu-toggle");
      const mobileMenu = heroRoot.querySelector("#mobile-menu");
      const closeMenu = () => {
        menuToggle.setAttribute("aria-expanded", "false");
        menuToggle.setAttribute("aria-label", "Ouvrir le menu");
        mobileMenu.classList.remove("is-open");
      };

      menuToggle?.addEventListener("click", () => {
        const willOpen = menuToggle.getAttribute("aria-expanded") !== "true";
        menuToggle.setAttribute("aria-expanded", String(willOpen));
        menuToggle.setAttribute("aria-label", willOpen ? "Fermer le menu" : "Ouvrir le menu");
        mobileMenu.classList.toggle("is-open", willOpen);
      });

      heroRoot.querySelectorAll("[data-scroll-target]").forEach((control) => {
        control.addEventListener("click", (event) => {
          event.preventDefault();
          document.querySelector(control.dataset.scrollTarget)?.scrollIntoView({ behavior: "smooth", block: "start" });
          closeMenu();
        });
      });

      heroRoot.querySelectorAll("[data-open-qualif]").forEach((control) => {
        control.addEventListener("click", (event) => {
          if (typeof window.openQualifPopup !== "function") return;
          event.preventDefault();
          window.openQualifPopup();
          closeMenu();
        });
      });
    }

    const enableExclusiveDetails = (root) => {
      if (!root) return;
      const details = [...root.querySelectorAll("details")];
      details.forEach((item) => {
        item.addEventListener("toggle", () => {
          if (!item.open) return;
          details.forEach((other) => {
            if (other !== item) other.open = false;
          });
        });
      });
    };

    enableExclusiveDetails(document.querySelector("#plan-frame")?.shadowRoot);
    enableExclusiveDetails(document.querySelector("#faq-frame")?.shadowRoot);

    const footerRoot = document.querySelector("#footer-frame")?.shadowRoot;
    if (footerRoot) {
      footerRoot.querySelectorAll("[data-open-qualif]").forEach((control) => {
        control.addEventListener("click", (event) => {
          if (typeof window.openQualifPopup !== "function") return;
          event.preventDefault();
          window.openQualifPopup();
        });
      });
      footerRoot.querySelectorAll("[data-scroll-target]").forEach((control) => {
        control.addEventListener("click", (event) => {
          event.preventDefault();
          document.querySelector(control.dataset.scrollTarget)?.scrollIntoView({ behavior: "smooth", block: "start" });
        });
      });
    }

// Popup de préqualification.
    const qualifOverlay = document.querySelector("#qualif-overlay");
    const qualifPanels = document.querySelectorAll(".qualif-panel");
    const qualifProgressBar = document.querySelector("#qualif-progress-bar");
    const qualifWhatsappLink = document.querySelector("#qualif-whatsapp-link");
    const qualifCloseBtn = document.querySelector("#qualif-close");

    const QUALIF_PROGRESS = { "step-1": "33%", "step-2": "66%", "step-3": "100%", "result-ok": "100%", "result-no": "100%" };
    const QUALIF_LABELS = { "step-1": "Budget & ambition", "step-2": "Calendrier", "step-3": "Mise en situation" };
    const QUALIF_WHATSAPP_NUMBER = "33759604917";
    let qualifAnswers = {};

    const qualifShowPanel = (id) => {
      qualifPanels.forEach((panel) => {
        panel.classList.toggle("is-active", panel.dataset.panel === id);
      });
      qualifProgressBar.style.width = QUALIF_PROGRESS[id] || "0%";
    };

    const qualifBuildWhatsappLink = () => {
      const lines = Object.keys(QUALIF_LABELS)
        .filter((id) => qualifAnswers[id])
        .map((id) => `• ${QUALIF_LABELS[id]} : ${qualifAnswers[id]}`)
        .join("\n");
      const message = `Bonjour Adam, je viens de remplir ton questionnaire.\n\nVoici ma situation :\n${lines}\n\nJe souhaiterais échanger avec toi pour voir ce qu'il est possible de mettre en place.`;
      return `https://wa.me/${QUALIF_WHATSAPP_NUMBER}?text=${encodeURIComponent(message)}`;
    };

    window.openQualifPopup = () => {
      qualifAnswers = {};
      qualifShowPanel("step-1");
      qualifOverlay.classList.add("is-open");
      qualifOverlay.setAttribute("aria-hidden", "false");
      document.body.style.overflow = "hidden";
    };

    window.closeQualifPopup = () => {
      qualifOverlay.classList.remove("is-open");
      qualifOverlay.setAttribute("aria-hidden", "true");
      document.body.style.overflow = "";
    };

    qualifCloseBtn.addEventListener("click", () => window.closeQualifPopup());
    qualifOverlay.addEventListener("click", (event) => {
      if (event.target === qualifOverlay) window.closeQualifPopup();
    });
    document.addEventListener("keydown", (event) => {
      if (event.key === "Escape" && qualifOverlay.classList.contains("is-open")) window.closeQualifPopup();
    });

    document.querySelectorAll(".qualif-answer").forEach((button) => {
      button.addEventListener("click", () => {
        const panel = button.closest(".qualif-panel");
        qualifAnswers[panel.dataset.panel] = button.dataset.label;
        const next = button.dataset.next;
        if (next === "result-ok") qualifWhatsappLink.href = qualifBuildWhatsappLink();
        qualifShowPanel(next);
      });
    });

    // Bouton de contact sticky : apparaît une fois le hero dépassé, pour ne
    // pas doubler les CTA déjà visibles dedans.
    const stickyContact = document.querySelector("#sticky-contact");
    const stickyContactBtn = stickyContact?.querySelector(".sticky-contact-btn");
    stickyContactBtn?.addEventListener("click", () => window.openQualifPopup());

    const heroFrame = document.querySelector("#hero-frame");
    if (stickyContact && heroFrame && "IntersectionObserver" in window) {
      const heroObserver = new IntersectionObserver(
        ([entry]) => stickyContact.classList.toggle("is-visible", !entry.isIntersecting),
        { rootMargin: "-80% 0px 0px 0px" }
      );
      heroObserver.observe(heroFrame);
    }
  </script>
</body>
</html>