Outiref

Code source de l'URL : https://loanfikri.com/

<!DOCTYPE html><html lang="fr"> <head><!-- Google Tag Manager --><script nonce="XHrfByA78aZOgLSU7TdCHg==">(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;var n=d.querySelector('[nonce]');n&&j.setAttribute('nonce',n.nonce||n.getAttribute('nonce'));f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','GTM-WKLG87HN');</script><!-- End Google Tag Manager --><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="theme-color" content="#0a1f3d"><title>loanfikri.com — Media Buyer freelance · Meta · Google · TikTok · LinkedIn Ads</title><meta name="description" content="Je pilote vos campagnes Meta, Google, TikTok et LinkedIn Ads pour transformer votre budget pub en résultats mesurables. Audit gratuit, sans engagement."><link rel="canonical" href="https://loanfikri.com/"><!-- Open Graph --><meta property="og:type" content="website"><meta property="og:url" content="https://loanfikri.com/"><meta property="og:title" content="loanfikri.com — Media Buyer freelance"><meta property="og:description" content="Plus de visibilité. Plus de clients. Plus de ventes. Media buyer freelance, campagnes Meta, Google, TikTok et LinkedIn Ads. Audit gratuit, sans engagement."><meta property="og:image" content="https://loanfikri.com/og-image.png"><meta property="og:image:width" content="1200"><meta property="og:image:height" content="630"><meta property="og:locale" content="fr_FR"><meta property="og:site_name" content="loanfikri.com"><!-- Twitter Cards --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:url" content="https://loanfikri.com/"><meta name="twitter:title" content="loanfikri.com — Media Buyer freelance"><meta name="twitter:description" content="Plus de visibilité. Plus de clients. Plus de ventes. Media buyer freelance, campagnes Meta, Google, TikTok et LinkedIn Ads. Audit gratuit, sans engagement."><meta name="twitter:image" content="https://loanfikri.com/og-image.png"><!-- Favicons --><link rel="icon" type="image/svg+xml" href="/favicon.svg"><link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"><link rel="manifest" href="/site.webmanifest"><!-- Self-hosted fonts (woff2 in /public/fonts/) --><link rel="preload" as="font" type="font/woff2" href="/fonts/figtree-v9-latin-regular.woff2" crossorigin><link rel="preload" as="font" type="font/woff2" href="/fonts/fraunces-v38-latin-regular.woff2" crossorigin><!-- Structured data --><script type="application/ld+json" nonce="XHrfByA78aZOgLSU7TdCHg==">{"@context":"https://schema.org","@type":"ProfessionalService","name":"LFK Consulting & Agency","description":"Media buyer freelance · Meta, Google, TikTok, LinkedIn Ads","url":"https://loanfikri.com","email":"contact@loanfikri.com","founder":{"@type":"Person","name":"Loan Fikri"},"address":{"@type":"PostalAddress","streetAddress":"265, Bd Zerktouni, 9ème étage, N° 92","addressLocality":"Casablanca","postalCode":"20000","addressCountry":"MA"},"areaServed":["FR","MA","BE","CH","CA"],"knowsAbout":["Meta Ads","Google Ads","TikTok Ads","LinkedIn Ads","Performance marketing"]}</script><link rel="stylesheet" href="/_astro/index.7SzScaAU.css"></head> <body> <!-- Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-WKLG87HN" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) -->   <nav class="nav"> <div class="nav-inner"> <a href="/" class="brand"> <span class="brand-mark"> <svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" fill="none"> <path d="M6 17V7H8.5V14.8H13V17H6Z" fill="#fbf9f3"></path> <path d="M14 17V7H20V9.1H16.4V11H19.5V13H16.4V17H14Z" fill="#c9a227"></path> </svg> </span> <span class="brand-name">loanfikri<span>.com</span></span> </a> <ul class="nav-links"> <li><a href="#top" class="nav-link nav-link-active" data-fr="Ads" data-en="Ads">Ads</a></li> <li><a href="/sites-tunnels" class="nav-link" data-fr="Sites & Tunnels" data-en="Sites & Funnels">Sites & Tunnels</a></li> <li><a href="#methode" class="nav-link" data-fr="Méthode" data-en="Method">Méthode</a></li> <li><a href="#avis" class="nav-link" data-fr="Avis" data-en="Reviews">Avis</a></li> <li><a href="#contact" class="nav-link" data-fr="Contact" data-en="Contact">Contact</a></li> </ul> <div class="nav-right"> <div class="lang-toggle"> <button class="lang-btn active" data-lang="fr" type="button">FR</button> <button class="lang-btn" data-lang="en" type="button">EN</button> </div> <a href="#contact" class="btn btn-primary nav-cta" data-fr="Audit gratuit" data-en="Free audit">Audit gratuit</a> <button class="nav-toggle" type="button" aria-label="Menu" aria-expanded="false"> <span></span><span></span><span></span> </button> </div> </div> </nav> <main id="main"> <!-- ===== HERO ===== --> <section class="hero" id="top"> <div class="container"> <div class="hero-grid"> <div class="hero-content"> <div class="hero-tags"> <span class="hero-tag">Meta Ads</span> <span class="hero-tag">Google Ads</span> <span class="hero-tag">TikTok Ads</span> <span class="hero-tag">LinkedIn Ads</span> </div> <h1 class="serif hero-headline"> <span class="hero-line hero-line-1" data-fr="Plus de visibilité." data-en="More visibility.">Plus de visibilité.</span><br> <span class="hero-line hero-line-2" data-fr="Plus de clients." data-en="More clients.">Plus de clients.</span><br> <em class="hero-line hero-line-3 hero-shine" data-fr="Plus de ventes." data-en="More sales.">Plus de ventes.</em><span class="hero-sparkles" aria-hidden="true"><span class="sparkle sparkle-a"><svg viewbox="0 0 24 24" fill="currentColor"><path d="M12 0L13.5 10.5L24 12L13.5 13.5L12 24L10.5 13.5L0 12L10.5 10.5Z"></path></svg></span><span class="sparkle sparkle-b"><svg viewbox="0 0 24 24" fill="currentColor"><path d="M12 0L13.5 10.5L24 12L13.5 13.5L12 24L10.5 13.5L0 12L10.5 10.5Z"></path></svg></span><span class="sparkle sparkle-c"><svg viewbox="0 0 24 24" fill="currentColor"><path d="M12 0L13.5 10.5L24 12L13.5 13.5L12 24L10.5 13.5L0 12L10.5 10.5Z"></path></svg></span></span> </h1> <p class="hero-sub" data-fr="Je pilote vos campagnes de publicité en ligne (Meta, Google, TikTok et LinkedIn Ads) pour transformer votre budget pub en résultats mesurables. Audit gratuit, sans engagement." data-en="I run your online advertising campaigns (Meta, Google, TikTok and LinkedIn Ads) to turn your ad budget into measurable results. Free audit, no commitment.">Je pilote vos campagnes de publicité en ligne (Meta, Google, TikTok et LinkedIn Ads) pour transformer votre budget pub en résultats mesurables. Audit gratuit, sans engagement.</p> <div class="hero-ctas"> <a href="#contact" class="btn btn-primary btn-lg"><span data-fr="Réserver un audit gratuit" data-en="Book a free audit">Réserver un audit gratuit</span> <span class="arrow">→</span></a> <a href="#clients" class="btn btn-secondary btn-lg" data-fr="Voir mon travail" data-en="See my work">Voir mon travail</a> </div> <div class="hero-trust"> <div class="trust-item" data-fr="Audit & set-up offerts" data-en="Free audit & setup">Audit &amp; set-up offerts</div> <div class="trust-dot"></div> <div class="trust-item" data-fr="Réponse 24h" data-en="Reply within 24h">Réponse 24h</div> <div class="trust-dot"></div> <div class="trust-item" data-fr="Audit 48h" data-en="Audit within 48h">Audit 48h</div> <div class="trust-dot"></div> <a href="#avis" class="trust-item trust-item-link"> <div class="stars"><span>★</span><span>★</span><span>★</span><span>★</span><span>★</span></div> <strong>5/5</strong> <span data-fr="sur Trustpilot" data-en="on Trustpilot">sur Trustpilot</span> </a> <div class="trust-dot"></div> <a href="#avis" class="trust-item trust-item-link"> <div class="stars"><span>★</span><span>★</span><span>★</span><span>★</span><span>★</span></div> <strong>5/5</strong> <span data-fr="sur Malt" data-en="on Malt">sur Malt</span> </a> </div> </div> <div class="hero-visual"> <div class="chat-scene"> <!-- Mobile-only micro-label between phone and logos --> <div class="platforms-label" data-fr="Pilotés au quotidien" data-en="Managed daily">Pilotés au quotidien</div> <!-- Floating iOS-style app icons — 5 platforms in separate tiles --> <div class="platforms-row"> <div class="platform-float platform-facebook"> <div class="platform-float-inner platform-facebook-inner"> <svg viewbox="0 0 24 24" aria-hidden="true" fill="#fff"> <path d="M14 22v-8.5h2.85l.42-3.4H14V7.85c0-1 .28-1.66 1.7-1.66h1.78V3.18c-.31-.04-1.37-.13-2.6-.13-2.58 0-4.35 1.58-4.35 4.47v2.49H7.7v3.4h2.83V22H14Z"></path> </svg> </div> </div> <div class="platform-float platform-instagram"> <div class="platform-float-inner platform-instagram-inner"> <svg viewbox="0 0 24 24" aria-hidden="true"> <rect x="3" y="3" width="18" height="18" rx="5.2" fill="none" stroke="#fff" stroke-width="2"></rect> <circle cx="12" cy="12" r="4" fill="none" stroke="#fff" stroke-width="2"></circle> <circle cx="17.4" cy="6.6" r="1.2" fill="#fff"></circle> </svg> </div> </div> <div class="platform-float platform-google"> <div class="platform-float-inner platform-google-inner"> <svg viewbox="0 0 24 24" aria-hidden="true"> <path fill="#4285F4" d="M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09Z"></path> <path fill="#34A853" d="M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84A10.99 10.99 0 0 0 12 23Z"></path> <path fill="#FBBC05" d="M5.84 14.09a6.6 6.6 0 0 1 0-4.18V7.07H2.18a11 11 0 0 0 0 9.86l3.66-2.84Z"></path> <path fill="#EA4335" d="M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84C6.71 7.31 9.14 5.38 12 5.38Z"></path> </svg> </div> </div> <div class="platform-float platform-tiktok"> <div class="platform-float-inner platform-tiktok-inner"> <svg viewbox="0 0 24 24" aria-hidden="true"> <path fill="#25F4EE" d="M13.4 2.5v9.8c0 1.4-1.1 2.5-2.5 2.5s-2.5-1.1-2.5-2.5 1.1-2.5 2.5-2.5h.4V7.2h-.4c-2.8 0-5.1 2.3-5.1 5.1s2.3 5.1 5.1 5.1 5.1-2.3 5.1-5.1V7.7c1.1.7 2.4 1.1 3.7 1.1V6.2c-1.4 0-2.6-.5-3.5-1.4-1-1-1.5-2.2-1.5-3.6h-1.3Z"></path> <path fill="#FE2C55" d="M15.4 4.5v9.8c0 1.4-1.1 2.5-2.5 2.5s-2.5-1.1-2.5-2.5 1.1-2.5 2.5-2.5h.4V9.2h-.4c-2.8 0-5.1 2.3-5.1 5.1s2.3 5.1 5.1 5.1 5.1-2.3 5.1-5.1V9.7c1.1.7 2.4 1.1 3.7 1.1V8.2c-1.4 0-2.6-.5-3.5-1.4-1-1-1.5-2.2-1.5-3.6h-1.3Z"></path> <path fill="#fff" d="M14.4 3.5v9.8c0 1.4-1.1 2.5-2.5 2.5s-2.5-1.1-2.5-2.5 1.1-2.5 2.5-2.5h.4V8.2h-.4c-2.8 0-5.1 2.3-5.1 5.1s2.3 5.1 5.1 5.1 5.1-2.3 5.1-5.1V8.7c1.1.7 2.4 1.1 3.7 1.1V7.2c-1.4 0-2.6-.5-3.5-1.4-1-1-1.5-2.2-1.5-3.6h-1.3Z"></path> </svg> </div> </div> <div class="platform-float platform-linkedin"> <div class="platform-float-inner platform-linkedin-inner"> <svg viewbox="0 0 24 24" aria-hidden="true" fill="#fff"> <rect x="3.5" y="9.2" width="3" height="10.8" rx=".3"></rect> <circle cx="5" cy="5.5" r="1.7"></circle> <path d="M9.4 9.2h2.88v1.48h.04c.4-.76 1.4-1.55 2.88-1.55 3.08 0 3.65 2.03 3.65 4.66V20h-3v-5.5c0-1.31-.02-3-1.83-3-1.83 0-2.11 1.43-2.11 2.9V20h-3V9.2Z"></path> </svg> </div> </div> </div> <!-- iPhone with iMessage scene --> <div class="chat-phone"> <div class="chat-notch"></div> <div class="chat-header"> <div class="chat-header-avatar"><picture><source srcset="/img/loan.avif" type="image/avif"><source srcset="/img/loan.webp" type="image/webp"><img src="/img/loan.jpg" alt="Loan" width="800" height="800" fetchpriority="high" decoding="async"></picture></div> <div class="chat-header-info"> <div class="chat-header-name">Loan</div> <div class="chat-header-status" data-fr="Disponible" data-en="Available">Disponible</div> </div> </div> <div class="chat-body"> <div class="chat-msg chat-msg-them"> <div class="chat-bubble chat-bubble-them"> <span data-fr="Loan, dispo pour piloter mes campagnes ?" data-en="Loan, available to run my campaigns?">Loan, dispo pour piloter mes campagnes ?</span> </div> <div class="chat-time" data-fr="il y a 2 min" data-en="2 min ago">il y a 2 min</div> </div> <div class="chat-msg chat-msg-me"> <div class="chat-bubble chat-bubble-me"> <span>YESSSSS 🔥</span> </div> </div> <div class="chat-msg chat-msg-me chat-msg-me-2"> <div class="chat-bubble chat-bubble-me"> <span data-fr="On commence quand tu veux. Mois par mois, sans engagement." data-en="We start whenever you want. Month by month, no commitment.">On commence quand tu veux. Mois par mois, sans engagement.</span> </div> <div class="chat-time" data-fr="à l'instant · lu" data-en="just now · read">à l'instant · lu</div> </div> </div> </div> </div> </div> </div> </div> </section> <!-- ===== CLIENTS BAND ===== --> <section class="clients-band"> <div class="container"> <div class="clients-label" data-fr="Ils m'ont fait confiance" data-en="They trust me">Ils m'ont fait confiance</div> <div class="clients-row"> <div class="client-mark serif">Brauman <em>&amp;</em> K</div> <div class="client-mark caps">ByeBail Immo</div> <div class="client-mark">AOClub</div> <div class="client-mark thin">CrossFit Arles</div> <div class="client-mark serif italic">MonkeyHands</div> <div class="client-mark caps">Ilhū Care</div> <div class="client-mark">Chazam</div> <div class="client-mark client-mark-stacked"><span class="client-mark-name serif">M. Van Acker</span><span class="client-mark-sub" data-fr="Physiothérapie" data-en="Physiotherapy">Physiothérapie</span></div> <div class="client-mark thin">Optimum-e</div> </div> </div> </section> <!-- ===== BANDE CHIFFRES V5.2 ===== --> <section class="section section-navy results-band"> <div class="container"> <div class="eyebrow light eyebrow-gold"><span data-fr="— Résultats récents" data-en="— Recent results">— Résultats récents</span></div> <div class="results-band-grid"> <div class="results-band-card"> <div class="results-band-stat">×2 — ×<span class="stat-num" data-stat-final="20" data-stat-mode="slot">20</span></div> <div class="results-band-label" data-fr="de chiffre d'affaires" data-en="in revenue">de chiffre d'affaires</div> <div class="results-band-meta" data-fr="Accompagnements ponctuels ou long terme" data-en="One-off or long-term engagements">Accompagnements ponctuels ou long terme</div> </div> <div class="results-band-card"> <div class="results-band-stat">+<span class="stat-num stat-num-wide" data-stat-final="1000000" data-stat-mode="counter">1 M</span></div> <div class="results-band-label" data-fr="de personnes touchées / mois" data-en="people reached / month">de personnes touchées / mois</div> <div class="results-band-meta" data-fr="Meta, Google, TikTok, LinkedIn · tous secteurs" data-en="Meta, Google, TikTok, LinkedIn · all sectors">Meta, Google, TikTok, LinkedIn · tous secteurs</div> </div> <div class="results-band-card"> <div class="results-band-stat"><span class="stat-num" data-stat-final="5" data-stat-mode="slot">5</span>/5</div> <div class="results-band-label" data-fr="sur 100% des clients" data-en="from 100% of clients">sur 100% des clients</div> <div class="results-band-meta" data-fr="Trustpilot · Malt · sans engagement" data-en="Trustpilot · Malt · no commitment">Trustpilot · Malt · sans engagement</div> </div> </div> </div> </section> <!-- ===== SECTORS ===== --> <section class="section section-paper" id="services"> <div class="container"> <div class="eyebrow"><span data-fr="Pour qui je travaille" data-en="Who I work with">Pour qui je travaille</span></div> <h2 class="serif"> <span data-fr="Des entreprises qui veulent " data-en="Companies that want ">Des entreprises qui veulent </span><em data-fr="vraiment scaler." data-en="to truly scale.">vraiment scaler.</em> </h2> <p class="section-intro" data-fr="Je travaille avec des entrepreneurs et marques qui ont déjà un produit qui fonctionne et qui veulent passer à la prochaine étape. Pas pour faire des tests à l'aveugle, mais pour faire grandir ce qui marche déjà." data-en="I work with entrepreneurs and brands that already have a product that works and want to scale to the next level. Not blind testing, but growing what already works.">Je travaille avec des entrepreneurs et marques qui ont déjà un produit qui fonctionne et qui veulent passer à la prochaine étape. Pas pour faire des tests à l'aveugle, mais pour faire grandir ce qui marche déjà.</p> <div class="sectors-grid"> <div class="sector-pill"><span class="dot"></span>E-commerce</div> <div class="sector-pill"><span class="dot"></span><span data-fr="Immobilier" data-en="Real estate">Immobilier</span></div> <div class="sector-pill"><span class="dot"></span><span data-fr="Hôtellerie & lifestyle" data-en="Hospitality & lifestyle">Hôtellerie & lifestyle</span></div> <div class="sector-pill"><span class="dot"></span><span data-fr="Clubs de sport & fitness" data-en="Sports clubs & fitness">Clubs de sport & fitness</span></div> <div class="sector-pill"><span class="dot"></span><span data-fr="Coachs & consultants" data-en="Coaches & consultants">Coachs & consultants</span></div> <div class="sector-pill"><span class="dot"></span><span data-fr="Services locaux" data-en="Local services">Services locaux</span></div> <div class="sector-pill"><span class="dot"></span><span data-fr="Formations & infoproduits" data-en="Training & infoproducts">Formations & infoproduits</span></div> </div> </div> </section> <!-- ===== OBJECTIFS ===== --> <section class="section section-cream" id="objectifs"> <div class="container"> <div class="eyebrow"><span data-fr="Vos objectifs" data-en="Your goals">Vos objectifs</span></div> <h2 class="serif"> <span data-fr="Quoi que vous cherchiez à " data-en="Whatever you want to ">Quoi que vous cherchiez à </span><em data-fr="développer." data-en="grow.">développer.</em> </h2> <p class="section-intro" data-fr="Je pilote vos campagnes selon l'objectif que vous fixez. Pas selon ce qui me ferait gagner du temps. Chaque levier publicitaire sert un but business précis. Vous me dites où vous voulez aller, je trouve le bon chemin." data-en="I run your campaigns based on the goal you set. Not on what would save me time. Every advertising lever serves a specific business goal. You tell me where you want to go, I find the right path.">Je pilote vos campagnes selon l'objectif que vous fixez. Pas selon ce qui me ferait gagner du temps. Chaque levier publicitaire sert un but business précis. Vous me dites où vous voulez aller, je trouve le bon chemin.</p> <div class="objectives-grid"> <div class="objective-card"> <div class="objective-num">01</div> <h3 data-fr="Ventes & e-commerce" data-en="Sales & e-commerce">Ventes & e-commerce</h3> <p data-fr="Conversion directe en ligne. Transactions, paniers moyens, retour sur invest : la mesure ultime de la rentabilité." data-en="Direct online conversion. Transactions, average basket, return on investment: the ultimate measure of profitability.">Conversion directe en ligne. Transactions, paniers moyens, retour sur invest : la mesure ultime de la rentabilité.</p> </div> <div class="objective-card"> <div class="objective-num">02</div> <h3 data-fr="Leads & demandes" data-en="Leads & inquiries">Leads & demandes</h3> <p data-fr="Demandes de devis, prises de RDV, formulaires de contact. Des prospects qualifiés à recontacter." data-en="Quote requests, appointment bookings, contact forms. Qualified prospects to follow up.">Demandes de devis, prises de RDV, formulaires de contact. Des prospects qualifiés à recontacter.</p> </div> <div class="objective-card"> <div class="objective-num">03</div> <h3 data-fr="Trafic web" data-en="Web traffic">Trafic web</h3> <p data-fr="Plus de visiteurs ciblés sur votre site ou votre boutique, prêts à découvrir votre offre." data-en="More targeted visitors to your website or store, ready to discover your offer.">Plus de visiteurs ciblés sur votre site ou votre boutique, prêts à découvrir votre offre.</p> </div> <div class="objective-card"> <div class="objective-num">04</div> <h3 data-fr="Notoriété" data-en="Awareness">Notoriété</h3> <p data-fr="Faire connaître votre marque auprès de la bonne audience. Idéal pour un lancement ou un repositionnement." data-en="Make your brand known to the right audience. Ideal for a launch or repositioning.">Faire connaître votre marque auprès de la bonne audience. Idéal pour un lancement ou un repositionnement.</p> </div> <div class="objective-card"> <div class="objective-num">05</div> <h3 data-fr="Audience & followers" data-en="Audience & followers">Audience & followers</h3> <p data-fr="Plus de followers qualifiés sur Instagram, TikTok ou LinkedIn. Pas n'importe qui, votre vraie cible." data-en="More qualified followers on Instagram, TikTok or LinkedIn. Not just anyone, your real target audience.">Plus de followers qualifiés sur Instagram, TikTok ou LinkedIn. Pas n'importe qui, votre vraie cible.</p> </div> <div class="objective-card"> <div class="objective-num">06</div> <h3 data-fr="Fidélité & rachat" data-en="Loyalty & repurchase">Fidélité & rachat</h3> <p data-fr="Remarketing intelligent, ré-engagement, des clients qui reviennent acheter. Pas juste un achat unique." data-en="Smart remarketing, re-engagement, customers that come back to buy. Not just a one-off purchase.">Remarketing intelligent, ré-engagement, des clients qui reviennent acheter. Pas juste un achat unique.</p> </div> </div> </div> </section> <!-- ===== PAIN POINTS ===== --> <section class="section section-paper"> <div class="container"> <div class="eyebrow"><span data-fr="Vous êtes au bon endroit si…" data-en="You're in the right place if…">Vous êtes au bon endroit si…</span></div> <h2 class="serif"> <span data-fr="Vos campagnes vous coûtent " data-en="Your campaigns cost ">Vos campagnes vous coûtent </span><em data-fr="plus qu'elles ne rapportent." data-en="more than they bring in.">plus qu'elles ne rapportent.</em> </h2> <div class="pain-list"> <div class="pain-card"> <div class="pain-icon">✕</div> <h3 data-fr="Vos pubs tournent, mais le ROAS plafonne." data-en="Your ads run, but ROAS plateaus.">Vos pubs tournent, mais le ROAS plafonne.</h3> <p data-fr="Vous dépensez, vous voyez des clics et quelques ventes, mais impossible de scaler sans que le coût d'acquisition explose." data-en="You spend, you see clicks and a few sales, but you can't scale without acquisition costs exploding.">Vous dépensez, vous voyez des clics et quelques ventes, mais impossible de scaler sans que le coût d'acquisition explose.</p> </div> <div class="pain-card"> <div class="pain-icon">✕</div> <h3 data-fr="Vous voulez déléguer, sans perdre le contrôle." data-en="You want to delegate, without losing control.">Vous voulez déléguer, sans perdre le contrôle.</h3> <p data-fr="Vous avez déjà été déçu par une agence opaque, avec des reportings vagues et des résultats invérifiables. Vous voulez de la transparence." data-en="You've been burned by an opaque agency, with vague reporting and unverifiable results. You want transparency.">Vous avez déjà été déçu par une agence opaque, avec des reportings vagues et des résultats invérifiables. Vous voulez de la transparence.</p> </div> <div class="pain-card"> <div class="pain-icon">✕</div> <h3 data-fr="Vous n'avez pas le temps de tout piloter." data-en="You don't have time to manage it all.">Vous n'avez pas le temps de tout piloter.</h3> <p data-fr="Meta, Google, TikTok, tracking server-side, créas, audiences. La technique change tous les 3 mois. Il vous faut quelqu'un qui le fait tous les jours." data-en="Meta, Google, TikTok, server-side tracking, creatives, audiences. The tech changes every 3 months. You need someone doing this every day.">Meta, Google, TikTok, tracking server-side, créas, audiences. La technique change tous les 3 mois. Il vous faut quelqu'un qui le fait tous les jours.</p> </div> </div> <div class="pain-cta"> <div class="pain-cta-text" data-fr="Je suis là pour <em>résoudre ces problèmes.</em>" data-en="I'm here to <em>solve these problems.</em>">Je suis là pour <em>résoudre ces problèmes.</em></div> <a href="#contact" class="btn btn-primary pain-cta-btn"><span data-fr="Audit gratuit · 30 min" data-en="Free audit · 30 min">Audit gratuit · 30 min</span> <span class="arrow">→</span></a> </div> </div> </section> <!-- ===== SERVICES / PLATEFORMES ===== --> <section class="section section-cream"> <div class="container"> <div class="eyebrow"><span data-fr="Les plateformes que je pilote" data-en="The platforms I run">Les plateformes que je pilote</span></div> <h2 class="serif"> <span data-fr="Une plateforme. Ou plusieurs. " data-en="One platform. Or several. ">Une plateforme. Ou plusieurs. </span><em data-fr="Selon votre cas." data-en="Whatever fits.">Selon votre cas.</em> </h2> <p class="section-intro" data-fr="Pas de pack obligatoire, pas d'upsell forcé. On choisit ensemble la ou les plateformes pertinentes selon votre offre, votre cible et votre maturité. Une seule pour démarrer, ou plusieurs en orchestré." data-en="No mandatory bundle, no forced upsell. We pick together the right platform(s) based on your offer, audience and maturity. One to start, or several in orchestration.">Pas de pack obligatoire, pas d'upsell forcé. On choisit ensemble la ou les plateformes pertinentes selon votre offre, votre cible et votre maturité. Une seule pour démarrer, ou plusieurs en orchestré.</p> <div class="services-grid"> <div class="service-card service-card-meta" id="meta-ads"> <div class="service-accent service-accent-meta"></div> <div class="service-logo service-logo-meta"> <svg viewbox="0 0 36 36" aria-hidden="true"> <defs> <lineargradient id="ig-grad-card" x1="0%" y1="100%" x2="100%" y2="0%"> <stop offset="0%" stop-color="#F58529"></stop> <stop offset="50%" stop-color="#DD2A7B"></stop> <stop offset="100%" stop-color="#8134AF"></stop> </lineargradient> </defs> <rect x="0" y="2" width="16" height="32" rx="8" fill="#1877F2"></rect> <text x="8" y="24" text-anchor="middle" fill="#fff" font-family="-apple-system,sans-serif" font-weight="700" font-size="18">f</text> <rect x="20" y="2" width="16" height="32" rx="5" fill="url(#ig-grad-card)"></rect> <rect x="23.5" y="9" width="9" height="18" rx="3" fill="none" stroke="#fff" stroke-width="1.6"></rect> <circle cx="28" cy="18" r="3" fill="none" stroke="#fff" stroke-width="1.6"></circle> <circle cx="30.8" cy="11.5" r=".9" fill="#fff"></circle> </svg> </div> <div class="service-num">01</div> <h3 class="serif">Meta Ads</h3> <div class="service-sub" data-fr="Facebook · Instagram · Audience Network" data-en="Facebook · Instagram · Audience Network">Facebook · Instagram · Audience Network</div> <p class="service-desc" data-fr="Acquisition, retargeting, lead generation. La plateforme la plus polyvalente pour scaler une offre claire avec des créas testées en continu." data-en="Acquisition, retargeting, lead generation. The most versatile platform to scale a clear offer with continuously tested creatives.">Acquisition, retargeting, lead generation. La plateforme la plus polyvalente pour scaler une offre claire avec des créas testées en continu.</p> <ul class="service-list"> <li data-fr="Business Manager & pixel server-side" data-en="Business Manager & server-side pixel">Business Manager & pixel server-side</li> <li data-fr="Stratégie d'audiences (Cold, Warm, Look-alike)" data-en="Audience strategy (Cold, Warm, Look-alike)">Stratégie d'audiences (Cold, Warm, Look-alike)</li> <li data-fr="Tests créatifs et angles publicitaires" data-en="Creative testing and ad angles">Tests créatifs et angles publicitaires</li> <li data-fr="Reporting hebdo + arbitrages mensuels" data-en="Weekly reporting + monthly trade-offs">Reporting hebdo + arbitrages mensuels</li> </ul> </div> <div class="service-card service-card-google" id="google-ads"> <div class="service-accent service-accent-google"></div> <div class="service-logo"> <svg viewbox="0 0 24 24" aria-hidden="true"> <path fill="#4285F4" d="M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09Z"></path> <path fill="#34A853" d="M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84A10.99 10.99 0 0 0 12 23Z"></path> <path fill="#FBBC05" d="M5.84 14.09a6.6 6.6 0 0 1 0-4.18V7.07H2.18a11 11 0 0 0 0 9.86l3.66-2.84Z"></path> <path fill="#EA4335" d="M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84C6.71 7.31 9.14 5.38 12 5.38Z"></path> </svg> </div> <div class="service-num">02</div> <h3 class="serif">Google Ads</h3> <div class="service-sub" data-fr="Search · Performance Max · YouTube · Shopping · Business Profile" data-en="Search · Performance Max · YouTube · Shopping · Business Profile">Search · Performance Max · YouTube · Shopping · Business Profile</div> <p class="service-desc" data-fr="Capter la demande qui existe déjà. Idéal pour les services à intention forte, le local, et les ventes B2B." data-en="Capture existing demand. Ideal for high-intent services, local, and B2B sales.">Capter la demande qui existe déjà. Idéal pour les services à intention forte, le local, et les ventes B2B.</p> <ul class="service-list"> <li data-fr="Search à intention commerciale" data-en="Commercial intent Search">Search à intention commerciale</li> <li data-fr="Performance Max & Shopping" data-en="Performance Max & Shopping">Performance Max & Shopping</li> <li data-fr="YouTube Ads pour la notoriété ciblée" data-en="YouTube Ads for targeted awareness">YouTube Ads pour la notoriété ciblée</li> <li data-fr="Tracking GA4 et conversions hors ligne" data-en="GA4 tracking and offline conversions">Tracking GA4 et conversions hors ligne</li> <li data-fr="Optimisation Google Business Profile & SEO local" data-en="Google Business Profile & local SEO optimization">Optimisation Google Business Profile & SEO local</li> </ul> </div> <div class="service-card service-card-tiktok" id="tiktok-ads"> <div class="service-accent service-accent-tiktok"></div> <div class="service-logo service-logo-dark"> <svg viewbox="0 0 24 24" aria-hidden="true"> <path fill="#25F4EE" d="M14.4 2.5v9.8c0 1.4-1.1 2.5-2.5 2.5s-2.5-1.1-2.5-2.5 1.1-2.5 2.5-2.5h.4V7.2h-.4c-2.8 0-5.1 2.3-5.1 5.1S8.9 17.4 11.7 17.4s5.1-2.3 5.1-5.1V7.7c1.1.7 2.4 1.1 3.7 1.1V6.2c-1.4 0-2.6-.5-3.5-1.4-1-1-1.5-2.2-1.5-3.6h-1.3Z" transform="translate(1,0)"></path> <path fill="#FE2C55" d="M15.7 3.7v9.8c0 1.4-1.1 2.5-2.5 2.5s-2.5-1.1-2.5-2.5 1.1-2.5 2.5-2.5h.4V8.4h-.4c-2.8 0-5.1 2.3-5.1 5.1S10.2 18.6 13 18.6s5.1-2.3 5.1-5.1V8.9c1.1.7 2.4 1.1 3.7 1.1V7.4c-1.4 0-2.6-.5-3.5-1.4-1-1-1.5-2.2-1.5-3.6h-1.1Z"></path> <path fill="#fff" d="M15 3.1v9.8c0 1.4-1.1 2.5-2.5 2.5S10 14.3 10 12.9s1.1-2.5 2.5-2.5h.4V7.8h-.4c-2.8 0-5.1 2.3-5.1 5.1s2.3 5.1 5.1 5.1 5.1-2.3 5.1-5.1V8.3c1.1.7 2.4 1.1 3.7 1.1V6.8c-1.4 0-2.6-.5-3.5-1.4-1-1-1.5-2.2-1.5-3.6H15Z"></path> </svg> </div> <div class="service-num">03</div> <h3 class="serif">TikTok Ads</h3> <div class="service-sub" data-fr="Spark Ads · UGC · Promote · Branded Effects" data-en="Spark Ads · UGC · Promote · Branded Effects">Spark Ads · UGC · Promote · Branded Effects</div> <p class="service-desc" data-fr="L'algorithme le plus rapide à apprendre. Si votre cible y est, c'est souvent le meilleur CPM du marché, à condition d'avoir les bons formats." data-en="The fastest-learning algorithm. If your audience is there, often the best CPM on the market, provided you have the right formats.">L'algorithme le plus rapide à apprendre. Si votre cible y est, c'est souvent le meilleur CPM du marché, à condition d'avoir les bons formats.</p> <ul class="service-list"> <li data-fr="Spark Ads à partir de contenus organiques" data-en="Spark Ads from organic content">Spark Ads à partir de contenus organiques</li> <li data-fr="Briefs créatifs UGC-friendly" data-en="UGC-friendly creative briefs">Briefs créatifs UGC-friendly</li> <li data-fr="Pixel TikTok & événements custom" data-en="TikTok Pixel & custom events">Pixel TikTok & événements custom</li> <li data-fr="Itérations rapides sur les hooks" data-en="Fast iterations on hooks">Itérations rapides sur les hooks</li> </ul> </div> <div class="service-card service-card-linkedin" id="linkedin-ads"> <div class="service-accent service-accent-linkedin"></div> <div class="service-logo service-logo-linkedin"> <svg viewbox="0 0 24 24" fill="#fff" aria-hidden="true"><path d="M19 3a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14ZM8.34 17.34V9.67H5.67v7.67h2.67Zm-1.34-8.84a1.55 1.55 0 1 0 0-3.09 1.55 1.55 0 0 0 0 3.09Zm11.34 8.84v-4.2c0-2.36-1.27-3.46-2.96-3.46-1.37 0-1.98.75-2.32 1.28V9.67H10.4v7.67h2.66v-4.06c0-.95.18-1.87 1.36-1.87 1.16 0 1.18 1.08 1.18 1.93v4Z"></path></svg> </div> <div class="service-num">04</div> <h3 class="serif">LinkedIn Ads</h3> <div class="service-sub" data-fr="Sponsored Content · Lead Gen Forms · ABM" data-en="Sponsored Content · Lead Gen Forms · ABM">Sponsored Content · Lead Gen Forms · ABM</div> <p class="service-desc" data-fr="Pour les offres B2B avec un cycle long. Précision du ciblage qui n'existe nulle part ailleurs, à condition d'avoir un budget cohérent." data-en="For B2B offers with a long cycle. Targeting precision that doesn't exist elsewhere, provided the budget makes sense.">Pour les offres B2B avec un cycle long. Précision du ciblage qui n'existe nulle part ailleurs, à condition d'avoir un budget cohérent.</p> <ul class="service-list"> <li data-fr="Ciblage par fonction, secteur, taille" data-en="Targeting by role, industry, size">Ciblage par fonction, secteur, taille</li> <li data-fr="Lead Gen Forms & Sponsored Content" data-en="Lead Gen Forms & Sponsored Content">Lead Gen Forms & Sponsored Content</li> <li data-fr="Account-Based Marketing" data-en="Account-Based Marketing">Account-Based Marketing</li> <li data-fr="Nurturing post-conversion" data-en="Post-conversion nurturing">Nurturing post-conversion</li> </ul> </div> </div> </div> </section> <!-- ===== AU-DELÀ DE LA PUB ===== --> <section class="section section-paper" id="creatif"> <div class="container"> <div class="eyebrow"><span data-fr="Au-delà du pilotage" data-en="Beyond campaign management">Au-delà du pilotage</span></div> <h2 class="serif"> <span data-fr="On peut aussi tout " data-en="We can also handle ">On peut aussi tout </span><em data-fr="construire ensemble." data-en="everything together.">construire ensemble.</em> </h2> <p class="section-intro" data-fr="Si vous partez de zéro ou si vous voulez tout déléguer côté acquisition, je m'occupe aussi du set-up complet et de la création des assets. Pas obligatoire, mais disponible." data-en="If you're starting from scratch or want to fully delegate acquisition, I also handle the full set-up and asset creation. Not mandatory, but available.">Si vous partez de zéro ou si vous voulez tout déléguer côté acquisition, je m'occupe aussi du set-up complet et de la création des assets. Pas obligatoire, mais disponible.</p> <div class="creative-grid"> <div class="creative-card"> <div class="creative-icon"> <svg viewbox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"> <rect x="3" y="4" width="18" height="16" rx="2"></rect> <path d="M3 9h18M8 4v16"></path> </svg> </div> <h3 class="serif" data-fr="Création de comptes" data-en="Account setup">Création de comptes</h3> <p data-fr="Comptes publicitaires Meta Business, Google Ads, TikTok Business et LinkedIn Campaign Manager. Tracking, pixels, conversion API, GA4 : tout configuré proprement, prêt à diffuser." data-en="Meta Business, Google Ads, TikTok Business and LinkedIn Campaign Manager ad accounts. Tracking, pixels, conversion API, GA4: everything configured cleanly, ready to broadcast.">Comptes publicitaires Meta Business, Google Ads, TikTok Business et LinkedIn Campaign Manager. Tracking, pixels, conversion API, GA4 : tout configuré proprement, prêt à diffuser.</p> </div> <div class="creative-card"> <div class="creative-icon"> <svg viewbox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"> <circle cx="12" cy="12" r="9"></circle> <circle cx="12" cy="12" r="3"></circle> <path d="M3 12h6M15 12h6M12 3v6M12 15v6"></path> </svg> </div> <h3 class="serif" data-fr="Comptes sociaux" data-en="Social accounts">Comptes sociaux</h3> <p data-fr="Set-up et optimisation de vos comptes Instagram, Facebook, TikTok, LinkedIn. Bio, identité visuelle, structure de contenu pour servir vos campagnes publicitaires." data-en="Setup and optimisation of your Instagram, Facebook, TikTok, LinkedIn accounts. Bio, visual identity, content structure to serve your ad campaigns.">Set-up et optimisation de vos comptes Instagram, Facebook, TikTok, LinkedIn. Bio, identité visuelle, structure de contenu pour servir vos campagnes publicitaires.</p> </div> <div class="creative-card"> <div class="creative-icon"> <svg viewbox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"> <rect x="3" y="3" width="18" height="18" rx="2"></rect> <circle cx="8.5" cy="9" r="1.5" fill="currentColor"></circle> <path d="m3 17 5-5 4 4 3-3 6 6"></path> </svg> </div> <h3 class="serif" data-fr="Production de visuels" data-en="Visual production">Production de visuels</h3> <p data-fr="Visuels statiques, carrousels, motion design léger, retouches photo. Tout ce qu'il faut pour alimenter vos campagnes pub avec des créas testées et performantes." data-en="Static visuals, carousels, light motion design, photo retouching. Everything you need to fuel your ad campaigns with tested, high-performing creatives.">Visuels statiques, carrousels, motion design léger, retouches photo. Tout ce qu'il faut pour alimenter vos campagnes pub avec des créas testées et performantes.</p> </div> <a href="/sites-tunnels" class="creative-card creative-card-link"> <div class="creative-icon"> <svg viewbox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"> <rect x="2.5" y="4.5" width="19" height="14" rx="2"></rect> <path d="M2.5 8.5h19M6 6h.01M8.5 6h.01M11 6h.01"></path> <path d="M9 21h6M12 18.5V21"></path> </svg> </div> <div class="creative-card-sub" data-fr="Landing, tracking, email automation" data-en="Landing, tracking, email automation">Landing, tracking, email automation</div> <h3 class="serif" data-fr="Sites & Tunnels" data-en="Sites & Funnels">Sites & Tunnels</h3> <p data-fr="Sites one-page ou multi-pages pensés pour convertir. Stack moderne, hébergement zéro coût, performance maximale." data-en="One-page or multi-page sites built to convert. Modern stack, zero hosting cost, maximum performance.">Sites one-page ou multi-pages pensés pour convertir. Stack moderne, hébergement zéro coût, performance maximale.</p> <ul class="creative-list"> <li data-fr="Landing page ou site complet" data-en="Landing page or full site">Landing page ou site complet</li> <li data-fr="Tracking Pixel & server-side" data-en="Pixel & server-side tracking">Tracking Pixel & server-side</li> <li data-fr="Email automation" data-en="Email automation">Email automation</li> <li data-fr="Hébergement zéro coût" data-en="Zero hosting cost">Hébergement zéro coût</li> <li data-fr="Pack de modifs incluses" data-en="Modifications package included">Pack de modifs incluses</li> </ul> <span class="creative-cta" data-fr="Voir l'offre détaillée →" data-en="See the full offer →">Voir l'offre détaillée →</span> </a> </div> </div> </section> <!-- ===== MÉTHODE ===== --> <section class="section section-cream" id="methode"> <div class="container"> <div class="eyebrow"><span data-fr="Méthode 3D" data-en="3D Method">Méthode 3D</span></div> <h2 class="serif"> <span data-fr="Décoder. Déployer. " data-en="Decode. Deploy. ">Décoder. Déployer. </span><em data-fr="Décider." data-en="Decide.">Décider.</em> </h2> <p class="section-intro" data-fr="Trois temps, zéro boîte noire. Le plan est une boussole, pas un contrat. On décrypte ce qui marche, on lance vite, puis on décide chaque semaine selon ce que les chiffres disent : on amplifie, on coupe, on teste autre chose." data-en="Three phases, zero black box. The plan is a compass, not a contract. We decode what works, launch fast, then decide every week based on what numbers say: amplify, cut, or test something else.">Trois temps, zéro boîte noire. Le plan est une boussole, pas un contrat. On décrypte ce qui marche, on lance vite, puis on décide chaque semaine selon ce que les chiffres disent : on amplifie, on coupe, on teste autre chose.</p> <a href="#contact" class="method-intro-cta"> <span data-fr="Démarrer mon audit gratuit" data-en="Start my free audit">Démarrer mon audit gratuit</span> <span class="arrow">→</span> </a> <div class="method-grid"> <div class="method-card featured"> <span class="method-badge" data-fr="Offert · nouveau client" data-en="Free · new client">Offert · nouveau client</span> <div class="method-num">01</div> <h3 data-fr="Décoder" data-en="Decode">Décoder</h3> <p data-fr="Audit de votre acquisition actuelle, analyse de la cible, structure d'offre. Comprendre ce qui se passe vraiment avant de toucher au budget." data-en="Audit of your current acquisition, audience analysis, offer structure. Understand what's really happening before touching the budget.">Audit de votre acquisition actuelle, analyse de la cible, structure d'offre. Comprendre ce qui se passe vraiment avant de toucher au budget.</p> <a href="#contact" class="btn btn-primary method-cta"><span data-fr="Réserver mon audit gratuit" data-en="Book my free audit">Réserver mon audit gratuit</span> <span class="arrow">→</span></a> <div class="method-reassurance" data-fr="30 min · Sans engagement" data-en="30 min · No commitment">30 min · Sans engagement</div> </div> <div class="method-card"> <div class="method-num">02</div> <h3 data-fr="Déployer" data-en="Deploy">Déployer</h3> <p data-fr="Business Manager, comptes pub, Pixel ou GA4, événements, plan de campagnes et audiences. Tout est lancé proprement, tracking carré, base saine." data-en="Business Manager, ad accounts, Pixel or GA4, events, campaign plan and audiences. Everything launched cleanly, solid tracking, healthy foundation.">Business Manager, comptes pub, Pixel ou GA4, événements, plan de campagnes et audiences. Tout est lancé proprement, tracking carré, base saine.</p> </div> <div class="method-card"> <div class="method-num">03</div> <h3 data-fr="Décider" data-en="Decide">Décider</h3> <p data-fr="Suivi hebdo, reporting mensuel lisible, ajustements continus. À chaque semaine sa décision : on amplifie, on coupe, on teste. Que des chiffres qui rapportent, pas des stats flatteuses." data-en="Weekly monitoring, readable monthly reporting, continuous adjustments. Every week, a decision: amplify, cut, or test. Only numbers that pay off, not flattering stats.">Suivi hebdo, reporting mensuel lisible, ajustements continus. À chaque semaine sa décision : on amplifie, on coupe, on teste. Que des chiffres qui rapportent, pas des stats flatteuses.</p> </div> </div> </div> </section> <!-- ===== ROAS 100% MANIFESTO ===== --> <section class="manifesto-band"> <div class="container"> <p class="manifesto-quote serif"> <span data-fr="ROAS positif sur " data-en="Positive ROAS on ">ROAS positif sur </span><em class="manifesto-100 hero-shine">100%</em><span data-fr=" des comptes actuellement pilotés." data-en=" of currently managed accounts."> des comptes actuellement pilotés.</span> </p> <p class="manifesto-sub"><span class="manifesto-dash">— </span><em data-fr="Pas une promesse marketing. Un standard que je m'impose." data-en="Not a marketing promise. A standard I hold myself to.">Pas une promesse marketing. Un standard que je m'impose.</em></p> </div> </section> <!-- ===== CLIENTS DETAIL ===== --> <section class="section section-paper" id="clients"> <div class="container"> <div class="eyebrow"><span data-fr="Quelques missions récentes" data-en="Recent engagements">Quelques missions récentes</span></div> <h2 class="serif"> <span data-fr="Les marques que " data-en="The brands ">Les marques que </span><em data-fr="j'accompagne." data-en="I work with.">j'accompagne.</em> </h2> <p class="section-intro" data-fr="Un échantillon des comptes que je gère ou ai gérés. Du e-commerce skincare au lancement de formation, en passant par l'immobilier de luxe et les clubs de sport." data-en="A sample of accounts I manage or have managed. From skincare e-commerce to training launches, luxury real estate and sports clubs.">Un échantillon des comptes que je gère ou ai gérés. Du e-commerce skincare au lancement de formation, en passant par l'immobilier de luxe et les clubs de sport.</p> <div class="portfolio-grid"> <div class="portfolio-card"> <div class="portfolio-header"> <span class="portfolio-sector" data-fr="Immobilier · B2C" data-en="Real estate · B2C">Immobilier · B2C</span> <span class="portfolio-platform-tag">Meta · Google · TikTok</span> </div> <h3 class="serif">Brauman & K</h3> <p class="portfolio-desc" data-fr="Structuration des campagnes Meta Ads et accompagnement sur le positionnement de marque personnelle dans l'immobilier. Extension multi-plateformes en cours." data-en="Meta Ads campaign structuring and personal brand positioning support in real estate. Multi-platform expansion in progress.">Structuration des campagnes Meta Ads et accompagnement sur le positionnement de marque personnelle dans l'immobilier. Extension multi-plateformes en cours.</p> <div class="portfolio-result"><strong data-fr="Résultat :" data-en="Outcome:">Résultat :</strong> <span data-fr="leads qualifiés + notoriété structurée, recommandation au pôle marketing pour extension multi-canal." data-en="qualified leads + structured awareness, recommendation to marketing team for multi-channel extension.">leads qualifiés + notoriété structurée, recommandation au pôle marketing pour extension multi-canal.</span></div> </div> <div class="portfolio-card"> <div class="portfolio-header"> <span class="portfolio-sector" data-fr="E-commerce · Sport" data-en="E-commerce · Sport">E-commerce · Sport</span> <span class="portfolio-platform-tag">Meta · Google</span> </div> <h3 class="serif">MonkeyHands</h3> <p class="portfolio-desc" data-fr="Restructuration des campagnes d'acquisition et retargeting, réorganisation du compte Meta Ads, meilleure allocation Google Ads. Focus ROAS et revenus réels." data-en="Restructuring of acquisition and retargeting campaigns, Meta Ads account reorganisation, better Google Ads allocation. Focus on ROAS and real revenue.">Restructuration des campagnes d'acquisition et retargeting, réorganisation du compte Meta Ads, meilleure allocation Google Ads. Focus ROAS et revenus réels.</p> <div class="portfolio-result"><strong data-fr="Résultat :" data-en="Outcome:">Résultat :</strong> <span data-fr="croissance stable des ventes en ligne et meilleure compréhension de ce qui drive le revenu." data-en="steady growth in online sales and clearer understanding of what drives revenue.">croissance stable des ventes en ligne et meilleure compréhension de ce qui drive le revenu.</span></div> </div> <div class="portfolio-card"> <div class="portfolio-header"> <span class="portfolio-sector" data-fr="Beauté · Skincare" data-en="Beauty · Skincare">Beauté · Skincare</span> <span class="portfolio-platform-tag">Meta · TikTok</span> </div> <h3 class="serif">Ilhū Care</h3> <p class="portfolio-desc" data-fr="Brand awareness et présence sociale avec budgets limités. Clarification des piliers de contenu, premières campagnes Meta et TikTok, formats UGC." data-en="Brand awareness and social presence with limited budgets. Content pillar clarification, first Meta and TikTok campaigns, UGC formats.">Brand awareness et présence sociale avec budgets limités. Clarification des piliers de contenu, premières campagnes Meta et TikTok, formats UGC.</p> <div class="portfolio-result"><strong data-fr="Résultat :" data-en="Outcome:">Résultat :</strong> <span data-fr="reach étendu, followers plus pertinents, coûts maîtrisés." data-en="extended reach, more relevant followers, costs under control.">reach étendu, followers plus pertinents, coûts maîtrisés.</span></div> </div> <div class="portfolio-card"> <div class="portfolio-header"> <span class="portfolio-sector" data-fr="B2B · Conseil" data-en="B2B · Consulting">B2B · Conseil</span> <span class="portfolio-platform-tag">Google · Landing</span> </div> <h3 class="serif">AOClub / FormAO</h3> <p class="portfolio-desc" data-fr="Plateforme de documents pour appels d'offres publics. Stratégie Google Ads sur cibles à intention forte + landing page intégrée au tunnel de vente." data-en="Public procurement documents platform. High-intent Google Ads strategy + landing page integrated into the sales funnel.">Plateforme de documents pour appels d'offres publics. Stratégie Google Ads sur cibles à intention forte + landing page intégrée au tunnel de vente.</p> <div class="portfolio-result"><strong data-fr="Résultat :" data-en="Outcome:">Résultat :</strong> <span data-fr="impact très rapide, prospects qualifiés et plus faciles à convertir." data-en="very fast impact, qualified prospects much easier to convert.">impact très rapide, prospects qualifiés et plus faciles à convertir.</span></div> </div> <div class="portfolio-card"> <div class="portfolio-header"> <span class="portfolio-sector" data-fr="Sport · Fitness local" data-en="Sport · Local fitness">Sport · Fitness local</span> <span class="portfolio-platform-tag">Meta · Google</span> </div> <h3 class="serif">CrossFit Arles</h3> <p class="portfolio-desc" data-fr="Tunnel de vente complet avec landing page qui convertit, campagnes Meta Ads et Google Ads, tracking propre. Gestion mensuelle en cours." data-en="Complete sales funnel with converting landing page, Meta Ads and Google Ads campaigns, clean tracking. Ongoing monthly management.">Tunnel de vente complet avec landing page qui convertit, campagnes Meta Ads et Google Ads, tracking propre. Gestion mensuelle en cours.</p> <div class="portfolio-result"><strong data-fr="Résultat :" data-en="Outcome:">Résultat :</strong> <span data-fr="landing page qui convertit vraiment, gestion mensuelle confiée en continu." data-en="landing page that actually converts, monthly management entrusted long-term.">landing page qui convertit vraiment, gestion mensuelle confiée en continu.</span></div> </div> <div class="portfolio-card"> <div class="portfolio-header"> <span class="portfolio-sector" data-fr="Formation · Infoproduit" data-en="Training · Infoproduct">Formation · Infoproduit</span> <span class="portfolio-platform-tag">Meta · Google · TikTok</span> </div> <h3 class="serif" data-fr="Formation physiothérapie" data-en="Physiotherapy training">Formation physiothérapie</h3> <p class="portfolio-desc" data-fr="Lancement de formation. Construction des fondations : branding, image de marque, stratégie globale. Structure multi-plateformes ultra-complète." data-en="Training launch. Building the foundations: branding, brand image, overall strategy. Ultra-complete multi-platform structure.">Lancement de formation. Construction des fondations : branding, image de marque, stratégie globale. Structure multi-plateformes ultra-complète.</p> <div class="portfolio-result"><strong data-fr="Résultat :" data-en="Outcome:">Résultat :</strong> <span data-fr="structure long terme déployée, confiance totale du client pour la suite." data-en="long-term structure deployed, full client confidence for what's next.">structure long terme déployée, confiance totale du client pour la suite.</span></div> </div> </div> </div> </section> <!-- ===== TÉMOIGNAGES ===== --> <section class="section section-cream" id="avis"> <div class="container"> <div class="eyebrow"><span data-fr="Avis clients vérifiés" data-en="Verified client reviews">Avis clients vérifiés</span></div> <h2 class="serif"> <span data-fr="Ce qu'ils en " data-en="What they ">Ce qu'ils en </span><em data-fr="disent." data-en="say.">disent.</em> </h2> <div class="review-badges"> <div class="review-badge"> <div class="review-badge-logo"><span class="tp-icon">★</span> Trustpilot</div> <div class="review-rating"> <strong>5/5</strong> <div class="stars"><span>★</span><span>★</span><span>★</span><span>★</span><span>★</span></div> <em data-fr="· avis vérifiés" data-en="· verified reviews">· avis vérifiés</em> </div> </div> <div class="divider-v"></div> <div class="review-badge"> <div class="review-badge-logo"><span class="malt-icon">M</span> Malt</div> <div class="review-rating"> <strong>5/5</strong> <div class="stars"><span>★</span><span>★</span><span>★</span><span>★</span><span>★</span></div> <em data-fr="· 4 évaluations" data-en="· 4 ratings">· 4 évaluations</em> </div> </div> </div> <div class="testimonials-grid"> <!-- 1. David Brauman · Trustpilot · Immobilier --> <article class="testimonial"> <div class="testimonial-header"> <div class="testimonial-avatar testimonial-avatar-db">DB</div> <div class="testimonial-meta"> <div class="testimonial-name">David Brauman</div> <div class="testimonial-role" data-fr="Immobilier" data-en="Real estate">Immobilier</div> </div> </div> <div class="testimonial-stars"><span>★</span><span>★</span><span>★</span><span>★</span><span>★</span></div> <h3 class="testimonial-title">Un partenaire fiable pour développer ma présence en ligne et mon image de marque</h3> <p class="testimonial-preview">Je travaille avec Loan depuis plusieurs mois sur ma présence en ligne et mon image de marque dans l'immobilier. Il m'a aidé à structurer mes campagnes Meta Ads et à clarifier mes objectifs : visibilité, notoriété, leads qualifiés…</p> <div class="testimonial-full"> <p>Je travaille avec Loan depuis plusieurs mois sur ma présence en ligne et mon image de marque dans l'immobilier.</p> <p>Il m'a aidé à structurer mes campagnes Meta Ads et à clarifier mes objectifs : visibilité, notoriété, abonnements et génération de leads qualifiés. J'ai particulièrement apprécié sa capacité à traduire les chiffres en décisions concrètes : ce qu'on garde, ce qu'on coupe, ce qu'on teste ensuite. Le reporting est clair, et les recommandations sont toujours orientées résultats.</p> <p>Loan ne s'occupe pas seulement de la partie technique des campagnes : il m'accompagne aussi sur les angles, les créatifs et le positionnement de ma marque personnelle, avec des idées de formats et de scripts adaptés à mon univers. Les échanges sont fluides, rapides, et toujours dans un esprit constructif.</p> <p>Satisfait de notre collaboration, je l'ai recommandé à mon pôle marketing pour un nouveau projet, cette fois en multi-plateformes (Meta, TikTok, Google/YouTube Ads) — ce qui en dit long sur la confiance que je lui accorde.</p> <p>Je recommande Loan à toute personne ou entreprise qui cherche un media buyer sérieux, pédagogue et réellement orienté performance.</p> </div> <button class="testimonial-toggle" type="button" aria-expanded="false"> <span data-fr="Voir l'avis complet" data-en="Read full review">Voir l'avis complet</span> </button> <a class="testimonial-source" href="https://fr.trustpilot.com/review/loanfikri.com" target="_blank" rel="noopener noreferrer"> <span class="source-badge source-tp"><span class="tp-icon">★</span><span data-fr="Trustpilot vérifié" data-en="Trustpilot verified">Trustpilot vérifié</span></span> </a> </article> <!-- 2. Daniele de Paolis · Trustpilot · MonkeyHands + Ilhū Care (EN verbatim, no translation) --> <article class="testimonial"> <div class="testimonial-header"> <div class="testimonial-avatar testimonial-avatar-dp">DP</div> <div class="testimonial-meta"> <div class="testimonial-name">Daniele de Paolis</div> <div class="testimonial-role">MonkeyHands &amp; Ilhū Care</div> </div> </div> <div class="testimonial-stars"><span>★</span><span>★</span><span>★</span><span>★</span><span>★</span></div> <h3 class="testimonial-title">Loan is a great Meta Ads, Google Ads &amp; TikTok Ads partner for our brands</h3> <p class="testimonial-preview">Loan has been supporting our group as a freelance Media Buyer on two skincare brands, MonkeyHands and Ilhū Care… He focuses on ROAS, CPA and real business results, not vanity metrics. We have seen steady growth in online sales and a clearer understanding of what drives revenue.</p> <div class="testimonial-full"> <p>Loan has been supporting our group as a freelance Media Buyer &amp; Growth Marketer on two skincare brands, MonkeyHands and Ilhū Care. He combines strong technical skills on Meta Ads / Google Ads / TikTok Ads with a very clear, data-driven way of working.</p> <p>For MonkeyHands (our sports brand), Loan helped us structure our acquisition and retargeting campaigns, reorganise our Meta Ads account and make better use of our Google Ads budget. He focuses on ROAS, CPA and real business results, not vanity metrics.</p> <p>Thanks to his work on campaigns, audiences and creatives, we have seen a steady growth in online sales, more stable results over time and a clearer understanding of what actually drives revenue. His reports are easy to read and always come with concrete next steps.</p> <p>For Ilhū Care (our personal care brand), the priority was brand awareness and social presence with limited budgets. Loan helped us clarify our content pillars, improve the visual coherence of our Instagram feed and stories, and prepare our first advertising campaigns on Meta and TikTok. By combining organic content, UGC-style formats and light advertising campaigns, he managed to increase our reach and attract more relevant followers, while keeping costs under control and respecting the reality of a small team.</p> <p>Overall, Loan is reliable, transparent and easy to work with. He adapts to each brand's stage of growth and always looks for smart, realistic actions rather than pushing for spend. We're happy to recommend him to any company looking for a serious, performance-oriented media buyer.</p> </div> <button class="testimonial-toggle" type="button" aria-expanded="false"> <span data-fr="Voir l'avis complet" data-en="Read full review">Voir l'avis complet</span> </button> <a class="testimonial-source" href="https://fr.trustpilot.com/review/loanfikri.com" target="_blank" rel="noopener noreferrer"> <span class="source-badge source-tp"><span class="tp-icon">★</span><span data-fr="Trustpilot vérifié" data-en="Trustpilot verified">Trustpilot vérifié</span></span> </a> </article> <!-- 3. CL "cliente" · Trustpilot --> <article class="testimonial"> <div class="testimonial-header"> <div class="testimonial-avatar testimonial-avatar-cl">CL</div> <div class="testimonial-meta"> <div class="testimonial-name">CL</div> <div class="testimonial-role" data-fr="Cliente vérifiée" data-en="Verified client">Cliente vérifiée</div> </div> </div> <div class="testimonial-stars"><span>★</span><span>★</span><span>★</span><span>★</span><span>★</span></div> <h3 class="testimonial-title">Super expérience avec Loan</h3> <p class="testimonial-preview">Super expérience avec Loan ! Il m'a créé un tunnel de vente avec une Landing Page propre qui convertit vraiment. Il a assuré la création des campagnes Meta Ads et Google Ads, ainsi que le tracking… Je recommande sans hésiter !</p> <div class="testimonial-full"> <p>Super expérience avec Loan ! Il m'a créé un tunnel de vente avec une Landing Page propre qui convertit vraiment. Il a assuré la création des campagnes Meta Ads et Google Ads, ainsi que le tracking.</p> <p>Je lui ai désormais confié la gestion mensuelle et l'optimisation de mes publicités.</p> <p>Au-delà du résultat, Loan est très réactif et communique super bien. C'est vraiment plaisant de bosser avec quelqu'un qui a cette bonne humeur et ce sérieux. Je recommande sans hésiter !</p> </div> <button class="testimonial-toggle" type="button" aria-expanded="false"> <span data-fr="Voir l'avis complet" data-en="Read full review">Voir l'avis complet</span> </button> <a class="testimonial-source" href="https://fr.trustpilot.com/review/loanfikri.com" target="_blank" rel="noopener noreferrer"> <span class="source-badge source-tp"><span class="tp-icon">★</span><span data-fr="Trustpilot vérifié" data-en="Trustpilot verified">Trustpilot vérifié</span></span> </a> </article> <!-- 4. Charlène · Malt · Content Producer · Chazam --> <article class="testimonial"> <div class="testimonial-header"> <div class="testimonial-avatar testimonial-avatar-c">C</div> <div class="testimonial-meta"> <div class="testimonial-name">Charlène</div> <div class="testimonial-role" data-fr="Content Producer — Chazam" data-en="Content Producer — Chazam">Content Producer — Chazam</div> </div> </div> <div class="testimonial-stars"><span>★</span><span>★</span><span>★</span><span>★</span><span>★</span></div> <h3 class="testimonial-title">Collaboration efficace, orientée ROI.</h3> <p class="testimonial-preview">J'ai collaboré avec Loan sur la gestion de campagnes Meta Ads et Google Ads, ainsi que sur la mise en place du tracking. Son approche structurée et orientée performance a permis d'optimiser efficacement les campagnes… Collaboration efficace, orientée ROI.</p> <div class="testimonial-full"> <p>J'ai collaboré avec Loan sur la gestion de campagnes Meta Ads et Google Ads, ainsi que sur la mise en place du tracking.</p> <p>Son approche structurée et orientée performance a permis d'optimiser efficacement les campagnes et d'améliorer la fiabilité des données grâce à un tracking server-side précis.</p> <p>Les reportings étaient clairs et directement exploitables, facilitant le pilotage des résultats et les arbitrages.</p> <p>Collaboration efficace, orientée ROI — je retravaillerai avec Loan sans hésiter.</p> </div> <button class="testimonial-toggle" type="button" aria-expanded="false"> <span data-fr="Voir l'avis complet" data-en="Read full review">Voir l'avis complet</span> </button> <a class="testimonial-source" href="https://www.malt.fr/profile/loanfikri" target="_blank" rel="noopener noreferrer"> <span class="source-badge source-malt"><span class="malt-icon">M</span><span data-fr="Avis Malt" data-en="Malt review">Avis Malt</span></span> </a> </article> <!-- 5. Matt Van Acker · Trustpilot · Formation physiothérapie --> <article class="testimonial"> <div class="testimonial-header"> <div class="testimonial-avatar testimonial-avatar-mv">MV</div> <div class="testimonial-meta"> <div class="testimonial-name">Matt Van Acker</div> <div class="testimonial-role" data-fr="Formation physiothérapie" data-en="Physiotherapy training">Formation physiothérapie</div> </div> </div> <div class="testimonial-stars"><span>★</span><span>★</span><span>★</span><span>★</span><span>★</span></div> <h3 class="testimonial-title">Expérience concluante !</h3> <p class="testimonial-preview">J'ai fait appel à Loan pour le lancement de ma formation en physiothérapie. Loan ne se contente pas de lancer des pubs, il a pris le temps de bâtir avec moi les fondations : branding, image de marque et stratégie globale…</p> <div class="testimonial-full"> <p>J'ai fait appel à Loan pour le lancement de ma formation en physiothérapie, et je ne pourrais pas être plus satisfait. Loan ne se contente pas de lancer des pubs, il a pris le temps de bâtir avec moi les fondations : branding, image de marque et stratégie globale. Il a mis en place une structure multi-plateformes ultra-complète (Google Ads, TikTok Ads et Meta Ads) avec une vision long terme. C'est un véritable partenaire business, pédagogique et très structuré. Je me sens en totale confiance pour la suite !</p> </div> <button class="testimonial-toggle" type="button" aria-expanded="false"> <span data-fr="Voir l'avis complet" data-en="Read full review">Voir l'avis complet</span> </button> <a class="testimonial-source" href="https://fr.trustpilot.com/review/loanfikri.com" target="_blank" rel="noopener noreferrer"> <span class="source-badge source-tp"><span class="tp-icon">★</span><span data-fr="Trustpilot vérifié" data-en="Trustpilot verified">Trustpilot vérifié</span></span> </a> </article> <!-- 6. Loriane P · Trustpilot · Consultante FormAO --> <article class="testimonial"> <div class="testimonial-header"> <div class="testimonial-avatar testimonial-avatar-lp">LP</div> <div class="testimonial-meta"> <div class="testimonial-name">Loriane P</div> <div class="testimonial-role" data-fr="Consultante — FormAO" data-en="Consultant — FormAO">Consultante — FormAO</div> </div> </div> <div class="testimonial-stars"><span>★</span><span>★</span><span>★</span><span>★</span><span>★</span></div> <h3 class="testimonial-title">Je recommande à 100%.</h3> <p class="testimonial-preview">Loan FIKRI m'a accompagnée sur Google Ads et ça a eu un impact très rapide : j'ai obtenu des prospects qualifiés, beaucoup plus faciles à convertir ensuite. Il maîtrise parfaitement la stratégie, l'optimisation et le pilotage des campagnes… Je recommande à 100%.</p> <div class="testimonial-full"> <p>Loan FIKRI m'a accompagnée sur Google Ads et ça a eu un impact très rapide : j'ai obtenu des prospects qualifiés, beaucoup plus faciles à convertir ensuite.</p> <p>Il maîtrise parfaitement la stratégie, l'optimisation et le pilotage des campagnes.</p> <p>J'ai aussi beaucoup apprécié sa communication : clair, réactif, pédagogue, avec un reporting régulier et lisible.</p> <p>En complément, il a réalisé une landing page moderne et optimisée intégrée à un tunnel de vente, parfaitement alignée avec les annonces, ce qui a encore amélioré la qualité des leads.</p> <p>Je recommande à 100%.</p> </div> <button class="testimonial-toggle" type="button" aria-expanded="false"> <span data-fr="Voir l'avis complet" data-en="Read full review">Voir l'avis complet</span> </button> <a class="testimonial-source" href="https://fr.trustpilot.com/review/loanfikri.com" target="_blank" rel="noopener noreferrer"> <span class="source-badge source-tp"><span class="tp-icon">★</span><span data-fr="Trustpilot vérifié" data-en="Trustpilot verified">Trustpilot vérifié</span></span> </a> </article> </div> </div> </section> <!-- ===== ABOUT ===== --> <section class="section section-cream" id="apropos"> <div class="container"> <div class="about-grid"> <div class="about-photo"> <picture><source srcset="/img/loan.avif" type="image/avif"><source srcset="/img/loan.webp" type="image/webp"><img src="/img/loan.jpg" alt="Loan Fikri" class="about-photo-img" width="800" height="800" loading="lazy" decoding="async"></picture> </div> <div class="about-content"> <div class="eyebrow"><span data-fr="Qui je suis" data-en="About me">Qui je suis</span></div> <h2 class="serif"> <span data-fr="Freelance " data-en="Freelance ">Freelance </span><em data-fr="international." data-en="international.">international.</em> </h2> <p class="about-bio" data-fr="Je suis <strong>Loan Fikri</strong>, media buyer freelance. Ex-analyste financier passé par les directions marketing de groupes français et internationaux, j'applique cette même rigueur à vos campagnes publicitaires : Meta, Google, TikTok et LinkedIn Ads." data-en="I'm <strong>Loan Fikri</strong>, freelance media buyer. Former financial analyst with experience across the marketing departments of French and international groups. I now apply that same discipline to your advertising campaigns: Meta, Google, TikTok and LinkedIn Ads.">Je suis <strong>Loan Fikri</strong>, media buyer freelance. Ex-analyste financier passé par les directions marketing de groupes français et internationaux, j'applique cette même rigueur à vos campagnes publicitaires : Meta, Google, TikTok et LinkedIn Ads.</p> <p class="about-bio" data-fr="J'accompagne marques et entrepreneurs à chaque étape : lancement, scaling ou optimisation. Chaque mission part d'objectifs clairs, d'une stratégie adaptée et d'un reporting que vous comprenez vraiment. Je pilote vos campagnes au résultat : ventes, leads, croissance. Communication directe et réactive." data-en="I work with brands and entrepreneurs at every stage: launch, scale-up or optimisation. Every engagement starts with clear objectives, a tailored strategy and reporting you can actually read. I run your campaigns for results: sales, leads, growth. Direct, responsive communication.">J'accompagne marques et entrepreneurs à chaque étape : lancement, scaling ou optimisation. Chaque mission part d'objectifs clairs, d'une stratégie adaptée et d'un reporting que vous comprenez vraiment. Je pilote vos campagnes au résultat : ventes, leads, croissance. Communication directe et réactive.</p> <a href="#contact" class="about-cta"><span data-fr="Premier audit offert : parlons de vos objectifs" data-en="First audit's on me: let's talk about your goals">Premier audit offert : parlons de vos objectifs</span> <span class="arrow">→</span></a> <div class="about-creds"> <span class="cred">Meta Ads Certified</span> <span class="cred">Google Ads Certified</span> <span class="cred" data-fr="3 langues · FR / EN / ES" data-en="3 languages · FR / EN / ES">3 langues · FR / EN / ES</span> </div> </div> </div> </div> </section> <!-- ===== FAQ ===== --> <section class="section section-paper"> <div class="container-narrow"> <div class="eyebrow"><span data-fr="Questions fréquentes" data-en="Frequently asked">Questions fréquentes</span></div> <h2 class="serif"> <span data-fr="Tout ce que vous voulez " data-en="Everything you want ">Tout ce que vous voulez </span><em data-fr="savoir." data-en="to know.">savoir.</em> </h2> <div class="faq-list"> <div class="faq-item"> <button class="faq-q" type="button"> <span data-fr="Quel est l'engagement minimum ?" data-en="What's the minimum commitment?">Quel est l'engagement minimum ?</span> <span class="faq-icon">+</span> </button> <div class="faq-a"><p data-fr="Aucun engagement de durée. La mission est facturée mois par mois, reconductible. Si on ne s'aligne pas après le premier mois, on s'arrête sans frais. Le but c'est de gagner votre confiance par les résultats, pas par un contrat." data-en="No duration commitment. Engagements are billed monthly, renewable. If we don't align after the first month, we stop with no fee. The goal is to earn your trust through results, not through a contract.">Aucun engagement de durée. La mission est facturée mois par mois, reconductible. Si on ne s'aligne pas après le premier mois, on s'arrête sans frais. Le but c'est de gagner votre confiance par les résultats, pas par un contrat.</p></div> </div> <div class="faq-item"> <button class="faq-q" type="button"> <span data-fr="Comment se passe l'audit gratuit ?" data-en="How does the free audit work?">Comment se passe l'audit gratuit ?</span> <span class="faq-icon">+</span> </button> <div class="faq-a"><p data-fr="30 minutes en visio. On analyse votre situation actuelle, vos objectifs, votre offre. Je reviens vers vous sous 48h avec un diagnostic écrit et un plan d'acquisition concret, que vous travailliez avec moi ensuite ou non. Pas de pitch agressif." data-en="A 30-minute video call. We analyse your current situation, your goals, your offer. I come back within 48 hours with a written diagnosis and a concrete acquisition plan, whether you work with me afterwards or not. No pushy pitching.">30 minutes en visio. On analyse votre situation actuelle, vos objectifs, votre offre. Je reviens vers vous sous 48h avec un diagnostic écrit et un plan d'acquisition concret, que vous travailliez avec moi ensuite ou non. Pas de pitch agressif.</p></div> </div> <div class="faq-item"> <button class="faq-q" type="button"> <span data-fr="Quel budget publicitaire minimum ?" data-en="What's the minimum ad budget?">Quel budget publicitaire minimum ?</span> <span class="faq-icon">+</span> </button> <div class="faq-a"><p data-fr="10 € par jour minimum, soit environ 300 €/mois. C'est le seuil à partir duquel les algorithmes Meta et Google ont assez de signal pour optimiser correctement. J'ai déjà piloté des comptes locaux à ce niveau avec de très bons résultats, donc pas de complexe à démarrer petit. Il n'y a pas de maximum : certains de mes clients dépensent plusieurs dizaines de milliers d'euros par mois. Dans tous les cas, le budget pub est géré directement côté client, jamais inclus dans mes honoraires." data-en="€10 per day minimum, about €300/month. That's the threshold where Meta and Google algorithms have enough signal to optimise properly. I've already run local accounts at that level with strong results, so no shame in starting small. There's no maximum: some clients spend tens of thousands per month. In all cases, ad budget is managed directly by the client, never included in my fees.">10 € par jour minimum, soit environ 300 €/mois. C'est le seuil à partir duquel les algorithmes Meta et Google ont assez de signal pour optimiser correctement. J'ai déjà piloté des comptes locaux à ce niveau avec de très bons résultats, donc pas de complexe à démarrer petit. Il n'y a pas de maximum : certains de mes clients dépensent plusieurs dizaines de milliers d'euros par mois. Dans tous les cas, le budget pub est géré directement côté client, jamais inclus dans mes honoraires.</p></div> </div> <div class="faq-item"> <button class="faq-q" type="button"> <span data-fr="Travaillez-vous sur quels secteurs ?" data-en="Which sectors do you work in?">Travaillez-vous sur quels secteurs ?</span> <span class="faq-icon">+</span> </button> <div class="faq-a"><p data-fr="Tous les secteurs. J'ai notamment piloté des campagnes pour de l'e-commerce, de l'immobilier, de l'hôtellerie, des clubs de sport, des coachs et consultants, des services locaux, des formations et infoproduits. Seuls les secteurs sensibles (crypto-trading agressif, MLM, certains paris) sortent de mon périmètre. Si vous avez un doute, on en parle." data-en="All sectors. I've notably run campaigns for e-commerce, real estate, hospitality, sports clubs, coaches and consultants, local services, training and infoproducts. Only sensitive sectors (aggressive crypto-trading, MLM, certain gambling) are off-limits. If you're unsure, let's talk.">Tous les secteurs. J'ai notamment piloté des campagnes pour de l'e-commerce, de l'immobilier, de l'hôtellerie, des clubs de sport, des coachs et consultants, des services locaux, des formations et infoproduits. Seuls les secteurs sensibles (crypto-trading agressif, MLM, certains paris) sortent de mon périmètre. Si vous avez un doute, on en parle.</p></div> </div> <div class="faq-item"> <button class="faq-q" type="button"> <span data-fr="Sous combien de temps peut-on démarrer ?" data-en="How quickly can we start?">Sous combien de temps peut-on démarrer ?</span> <span class="faq-icon">+</span> </button> <div class="faq-a"><p data-fr="Audit écrit sous 48h max après notre appel. Ensuite, dès validation commune, on lance. Pas de timeline imposée de mon côté : si les accès et le tracking sont prêts, je peux activer les premières campagnes dans la foulée. La rapidité d'exécution fait partie du deal, c'est l'avantage du freelance vs l'agence." data-en="Written audit within 48 hours of our call. Then, as soon as we both validate, we launch. No imposed timeline on my end: if accesses and tracking are ready, I can activate the first campaigns right away. Speed of execution is part of the deal, that's the freelance advantage over agencies.">Audit écrit sous 48h max après notre appel. Ensuite, dès validation commune, on lance. Pas de timeline imposée de mon côté : si les accès et le tracking sont prêts, je peux activer les premières campagnes dans la foulée. La rapidité d'exécution fait partie du deal, c'est l'avantage du freelance vs l'agence.</p></div> </div> <div class="faq-item"> <button class="faq-q" type="button"> <span data-fr="En quelles langues travaillez-vous ?" data-en="What languages do you work in?">En quelles langues travaillez-vous ?</span> <span class="faq-icon">+</span> </button> <div class="faq-a"><p data-fr="Français, anglais et espagnol, couramment. Reportings, copies publicitaires, échanges et stratégie disponibles dans les trois langues. J'accompagne des clients en France, au Maghreb, dans les pays anglophones (USA, UK, Canada, Australie) et hispanophones (Espagne, Mexique, Amérique latine). Les fuseaux horaires, on s'arrange." data-en="French, English and Spanish, fluently. Reports, ad copy, communication and strategy available in all three languages. I work with clients in France, North Africa, English-speaking countries (USA, UK, Canada, Australia) and Spanish-speaking ones (Spain, Mexico, Latin America). Time zones, we work it out.">Français, anglais et espagnol, couramment. Reportings, copies publicitaires, échanges et stratégie disponibles dans les trois langues. J'accompagne des clients en France, au Maghreb, dans les pays anglophones (USA, UK, Canada, Australie) et hispanophones (Espagne, Mexique, Amérique latine). Les fuseaux horaires, on s'arrange.</p></div> </div> </div> </div> </section> <!-- ===== CONTACT ===== --> <section class="section section-navy" id="contact"> <div class="container"> <div class="eyebrow light"><span data-fr="Contact" data-en="Contact">Contact</span></div> <h2 class="serif"> <span data-fr="Discutons de " data-en="Let's talk about ">Discutons de </span><em data-fr="votre projet." data-en="your project.">votre projet.</em> </h2> <div class="contact-grid"> <div class="contact-info"> <p data-fr="Un audit gratuit de 30 minutes pour comprendre votre situation et vous proposer un plan concret. Réponse sous 24h ouvrées." data-en="A free 30-minute audit to understand your situation and propose a concrete plan. Response within 24 business hours.">Un audit gratuit de 30 minutes pour comprendre votre situation et vous proposer un plan concret. Réponse sous 24h ouvrées.</p> <div class="contact-meta"> <div class="contact-meta-item"> <div class="contact-meta-label">Email</div> <div class="contact-meta-value"><a href="/cdn-cgi/l/email-protection#ee8d81809a8f8d9aae82818f808887859c87c08d8183"><span class="__cf_email__" data-cfemail="e3808c8d97828097a38f8c828d858a88918acd808c8e">[email&#160;protected]</span></a></div> </div> <div class="contact-meta-item"> <div class="contact-meta-label">Trustpilot</div> <div class="contact-meta-value"><a href="https://fr.trustpilot.com/review/loanfikri.com" target="_blank">fr.trustpilot.com/review/loanfikri.com</a></div> </div> <div class="contact-meta-item"> <div class="contact-meta-label">Malt</div> <div class="contact-meta-value"><a href="https://www.malt.fr/profile/loanfikri" target="_blank">malt.fr/profile/loanfikri</a></div> </div> <div class="contact-meta-item"> <div class="contact-meta-label">LinkedIn</div> <div class="contact-meta-value"><a href="https://www.linkedin.com/in/loanfikri" target="_blank">linkedin.com/in/loanfikri</a></div> </div> </div> </div> <form class="contact-form" id="contact-form"> <div class="form-row two"> <div> <label for="contact-name" class="form-label" data-fr="Prénom Nom" data-en="First & last name">Prénom Nom</label> <input type="text" id="contact-name" name="name" class="form-input" autocomplete="name" required> </div> <div> <label for="contact-email" class="form-label">Email</label> <input type="email" id="contact-email" name="email" class="form-input" autocomplete="email" required> </div> </div> <div class="form-row"> <label for="contact-company" class="form-label" data-fr="Entreprise" data-en="Company">Entreprise</label> <input type="text" id="contact-company" name="company" class="form-input" autocomplete="organization"> </div> <div class="form-row"> <label for="contact-subject" class="form-label" data-fr="Sujet" data-en="Subject">Sujet</label> <select name="subject" id="contact-subject" class="form-select"> <option value="audit" data-fr="Audit ads" data-en="Ads audit">Audit ads</option> <option value="landing" data-fr="Landing page" data-en="Landing page">Landing page</option> <option value="tunnel" data-fr="Tunnel de conversion" data-en="Conversion funnel">Tunnel de conversion</option> <option value="site-complet" data-fr="Site complet" data-en="Full website">Site complet</option> <option value="maintenance" data-fr="Maintenance site" data-en="Site maintenance">Maintenance site</option> <option value="autre" data-fr="Autre" data-en="Other">Autre</option> </select> </div> <div class="form-row"> <label for="contact-sector" class="form-label" data-fr="Secteur d'activité" data-en="Sector">Secteur d'activité</label> <select name="sector" id="contact-sector" class="form-select"> <option data-fr="Choisissez un secteur" data-en="Select a sector">Choisissez un secteur</option> <option>E-commerce</option> <option data-fr="Immobilier" data-en="Real estate">Immobilier</option> <option data-fr="Hôtellerie & lifestyle" data-en="Hospitality & lifestyle">Hôtellerie & lifestyle</option> <option data-fr="Clubs de sport & fitness" data-en="Sports clubs & fitness">Clubs de sport & fitness</option> <option data-fr="Coachs & consultants" data-en="Coaches & consultants">Coachs & consultants</option> <option data-fr="Services locaux" data-en="Local services">Services locaux</option> <option data-fr="Formation & infoproduits" data-en="Training & infoproducts">Formation & infoproduits</option> <option data-fr="Autre" data-en="Other">Autre</option> </select> </div> <div class="form-row"> <label for="contact-message" class="form-label" data-fr="Votre projet en quelques mots" data-en="Your project in a few words">Votre projet en quelques mots</label> <textarea name="message" id="contact-message" class="form-textarea" rows="3" required></textarea> </div> <button type="submit" class="btn btn-primary form-submit"><span data-fr="Envoyer · réponse sous 24h" data-en="Send · reply within 24h">Envoyer · réponse sous 24h</span> <span class="arrow">→</span></button> <p class="form-note" data-fr="En envoyant ce formulaire, vous acceptez d'être recontacté par email. Aucune donnée n'est partagée à des tiers." data-en="By submitting this form, you agree to be contacted by email. No data is shared with third parties.">En envoyant ce formulaire, vous acceptez d'être recontacté par email. Aucune donnée n'est partagée à des tiers.</p> </form> </div> </div> </section> </main>  <section class="footer-cta-band"> <div class="container"> <p class="footer-cta-eyebrow"><span data-fr="— Une dernière chose" data-en="— One last thing">— Une dernière chose</span></p> <h2 class="footer-cta-title serif"> <span data-fr="Prêt à transformer votre budget pub en " data-en="Ready to turn your ad budget into ">Prêt à transformer votre budget pub en </span><em data-fr="résultats mesurables ?" data-en="measurable results?">résultats mesurables ?</em> </h2> <p class="footer-cta-sub" data-fr="Un audit gratuit de 30 minutes. Sans engagement. Réponse sous 24h." data-en="A free 30-minute audit. No commitment. Reply within 24h.">Un audit gratuit de 30 minutes. Sans engagement. Réponse sous 24h.</p> <a href="#contact" class="btn btn-primary btn-lg footer-cta-btn"> <span data-fr="Réserver mon audit gratuit" data-en="Book my free audit">Réserver mon audit gratuit</span> <span class="arrow">→</span> </a> </div> </section>  <footer class="footer"> <div class="container"> <div class="footer-top"> <div class="footer-brand"> <a href="#" class="brand"> <span class="brand-mark"> <svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" fill="none"> <path d="M6 17V7H8.5V14.8H13V17H6Z" fill="#fbf9f3"></path> <path d="M14 17V7H20V9.1H16.4V11H19.5V13H16.4V17H14Z" fill="#c9a227"></path> </svg> </span> <span class="brand-name">loanfikri<span>.com</span></span> </a> <p class="footer-tagline" data-fr="Media buyer freelance. Meta · Google · TikTok · LinkedIn Ads. Au service des marques qui veulent vraiment scaler." data-en="Freelance media buyer. Meta · Google · TikTok · LinkedIn Ads. For brands that want to truly scale.">Media buyer freelance. Meta · Google · TikTok · LinkedIn Ads. Au service des marques qui veulent vraiment scaler.</p> </div> <div class="footer-col"> <h3 class="footer-col-title" data-fr="Navigation" data-en="Navigation">Navigation</h3> <ul> <li><a href="#top" data-fr="Ads" data-en="Ads">Ads</a></li> <li><a href="/sites-tunnels" data-fr="Sites & Tunnels" data-en="Sites & Funnels">Sites & Tunnels</a></li> <li><a href="#methode" data-fr="Méthode" data-en="Method">Méthode</a></li> <li><a href="#avis" data-fr="Avis" data-en="Reviews">Avis</a></li> <li><a href="#contact" data-fr="Contact" data-en="Contact">Contact</a></li> </ul> </div> <div class="footer-col"> <h3 class="footer-col-title" data-fr="Plateformes" data-en="Platforms">Plateformes</h3> <ul> <li><a href="#meta-ads">Meta Ads</a></li> <li><a href="#google-ads">Google Ads</a></li> <li><a href="#tiktok-ads">TikTok Ads</a></li> <li><a href="#linkedin-ads">LinkedIn Ads</a></li> </ul> </div> <div class="footer-col"> <h3 class="footer-col-title" data-fr="Contact" data-en="Contact">Contact</h3> <ul> <li><a href="/cdn-cgi/l/email-protection#34575b5a4055574074585b555a525d5f465d1a575b59"><span class="__cf_email__" data-cfemail="3655595842575542765a595758505f5d445f1855595b">[email&#160;protected]</span></a></li> <li><a href="https://fr.trustpilot.com/review/loanfikri.com" target="_blank">Trustpilot</a></li> <li><a href="https://www.malt.fr" target="_blank">Malt</a></li> </ul> </div> </div> <div class="footer-legal"> <div data-fr="© <span class=&quot;dynamic-year&quot;>2026</span> LFK Consulting & Agency SARLAU · Tous droits réservés." data-en="© <span class=&quot;dynamic-year&quot;>2026</span> LFK Consulting & Agency SARLAU · All rights reserved.">© <span class="dynamic-year">2026</span> LFK Consulting & Agency SARLAU · Tous droits réservés.</div> <div class="footer-legal-meta"> <a href="/mentions-legales" data-fr="Mentions légales" data-en="Legal notice">Mentions légales</a> <a href="/politique-confidentialite" data-fr="Politique de confidentialité" data-en="Privacy policy">Politique de confidentialité</a> </div> </div> </div> </footer> <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script><script nonce="XHrfByA78aZOgLSU7TdCHg==">
  // Auto-update copyright year
  function updateYear() {
    const y = new Date().getFullYear();
    document.querySelectorAll('.dynamic-year').forEach((el) => { el.textContent = y; });
  }

  // Language toggle (FR/EN)
  function setLang(lang) {
    document.querySelectorAll('[data-fr]').forEach((el) => {
      const val = el.getAttribute('data-' + lang);
      if (val === null) return;
      el.innerHTML = val;
    });
    document.querySelectorAll('.lang-btn').forEach((b) => {
      b.classList.toggle('active', b.dataset.lang === lang);
    });
    document.documentElement.lang = lang;
    try { localStorage.setItem('loan_lang', lang); } catch (e) {}
    updateYear();
  }
  window.setLang = setLang;

  // FAQ accordion
  function toggleFaq(btn) {
    btn.parentElement.classList.toggle('open');
  }
  window.toggleFaq = toggleFaq;

  // Mobile nav drawer toggle
  function toggleNav(btn) {
    const nav = btn.closest('.nav');
    if (!nav) return;
    const open = nav.classList.toggle('nav-open');
    btn.setAttribute('aria-expanded', open ? 'true' : 'false');
  }
  window.toggleNav = toggleNav;
  // Close mobile nav on link click
  document.querySelectorAll('.nav .nav-links a').forEach((a) => {
    a.addEventListener('click', () => {
      const nav = a.closest('.nav');
      if (nav && nav.classList.contains('nav-open')) {
        nav.classList.remove('nav-open');
        const t = nav.querySelector('.nav-toggle');
        if (t) t.setAttribute('aria-expanded', 'false');
      }
    });
  });

  // Reviews — inline expand
  function toggleReview(btn) {
    const card = btn.closest('.testimonial');
    if (!card) return;
    const isOpen = card.classList.toggle('open');
    btn.setAttribute('aria-expanded', isOpen ? 'true' : 'false');
    const label = btn.querySelector('span');
    if (!label) return;
    if (isOpen) {
      label.setAttribute('data-fr', 'Réduire');
      label.setAttribute('data-en', 'Show less');
    } else {
      label.setAttribute('data-fr', "Voir l'avis complet");
      label.setAttribute('data-en', 'Read full review');
    }
    const currentLang = document.documentElement.lang || 'fr';
    const val = label.getAttribute('data-' + currentLang);
    if (val !== null) label.innerHTML = val;
  }
  window.toggleReview = toggleReview;

  // Bind UI handlers (CSP-safe — replaces former inline onclick attrs)
  document.querySelectorAll('.lang-btn').forEach((b) => {
    b.addEventListener('click', () => setLang(b.dataset.lang));
  });
  document.querySelectorAll('.nav-toggle').forEach((b) => {
    b.addEventListener('click', () => toggleNav(b));
  });
  document.querySelectorAll('.testimonial-toggle').forEach((b) => {
    b.addEventListener('click', () => toggleReview(b));
  });
  document.querySelectorAll('.faq-q').forEach((b) => {
    b.addEventListener('click', () => toggleFaq(b));
  });

  // Restore saved language
  try {
    const saved = localStorage.getItem('loan_lang');
    if (saved === 'en' || saved === 'fr') {
      setLang(saved);
    } else {
      const serverLang = document.documentElement.lang;
      if (serverLang === 'en') setLang('en');
    }
  } catch (e) {}
  updateYear();

  // Hero sequential orchestration on DOMContentLoaded.
  // The hero is above-the-fold, so IntersectionObserver fires instantly for every
  // element. We stagger the reveals via setTimeout for a deliberate cascade.
  (function orchestrateHero() {
    const reduceMotion = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;
    const steps = [
      // Phase 1 — text
      { sel: '.hero-line-1',    t: 200 },
      { sel: '.hero-line-2',    t: 500 },
      { sel: '.hero-line-3',    t: 800 },
      // Phase 2 — phone & meta
      { sel: '.chat-phone',     t: 1000 },
      { sel: '.hero-sub',       t: 1200 },
      { sel: '.hero-ctas',      t: 1500 },
      { sel: '.hero-trust',     t: 1800 },
      // Phase 3 — logos staggered + chat bubbles
      { sel: '.platform-facebook',  t: 1300 },
      { sel: '.platform-instagram', t: 1500 },
      { sel: '.platform-google',    t: 1700 },
      { sel: '.platform-tiktok',    t: 1900 },
      { sel: '.platform-linkedin',  t: 2100 },
      { sel: '.chat-msg-them',                       t: 1500 },
      { sel: '.chat-msg-me:not(.chat-msg-me-2)',     t: 2000 },
      { sel: '.chat-msg-me-2',                       t: 2500 },
    ];

    function reveal(sel) {
      document.querySelectorAll(sel).forEach((el) => el.classList.add('hero-visible'));
    }

    if (reduceMotion) {
      steps.forEach((s) => reveal(s.sel));
      return;
    }
    steps.forEach((s) => setTimeout(() => reveal(s.sel), s.t));
  })();

  // Contact form: prefill subject from ?subject= URL param
  (function prefillSubject() {
    const select = document.getElementById('contact-subject');
    if (!select) return;
    try {
      const params = new URLSearchParams(window.location.search);
      const subj = (params.get('subject') || '').toLowerCase();
      if (!subj) return;
      const valid = Array.from(select.options).some((o) => o.value === subj);
      if (valid) select.value = subj;
    } catch (e) {}
  })();

  // Manifesto band: trigger gold-shine animation on the "100%" when in view
  (function initManifestoShine() {
    const band = document.querySelector('.manifesto-band');
    if (!band || !('IntersectionObserver' in window)) {
      // Fallback: reveal immediately
      band && band.querySelectorAll('.hero-shine').forEach((el) => el.classList.add('hero-visible'));
      return;
    }
    const reduceMotion = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;
    if (reduceMotion) {
      band.querySelectorAll('.hero-shine').forEach((el) => el.classList.add('hero-visible'));
      return;
    }
    let fired = false;
    const obs = new IntersectionObserver((entries) => {
      entries.forEach((entry) => {
        if (entry.isIntersecting && !fired) {
          fired = true;
          band.querySelectorAll('.hero-shine').forEach((el) => el.classList.add('hero-visible'));
          obs.disconnect();
        }
      });
    }, { threshold: 0.4 });
    obs.observe(band);
  })();

  // Results band: slot-machine / counter animation on scroll
  (function initStatAnimations() {
    const band = document.querySelector('.results-band');
    if (!band) return;
    const stats = band.querySelectorAll('.stat-num');
    if (!stats.length) return;

    const reduceMotion = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;

    function formatCounter(n) {
      if (n >= 1000000) return '1 M';
      if (n >= 1000) {
        const k = Math.round(n / 50000) * 50;
        return k + ' K';
      }
      return Math.round(n / 10) * 10 + '';
    }

    function animateStat(el) {
      const finalRaw = el.dataset.statFinal;
      const finalNum = parseInt(finalRaw, 10);
      const mode = el.dataset.statMode;
      const duration = mode === 'counter' ? 1800 : 1500;
      const start = performance.now();
      const easeOutCubic = (t) => 1 - Math.pow(1 - t, 3);
      const digits = String(finalNum).length;
      const slotMin = digits === 1 ? 1 : Math.pow(10, digits - 1);
      const slotMax = Math.pow(10, digits) - 1;
      let lastSlot = 0;

      function tick(now) {
        const t = Math.min((now - start) / duration, 1);
        const eased = easeOutCubic(t);

        if (mode === 'slot') {
          if (t < 1) {
            // throttle random updates to ~30fps for crisper slot feel
            if (now - lastSlot > 33) {
              const r = Math.floor(slotMin + Math.random() * (slotMax - slotMin + 1));
              el.textContent = r;
              lastSlot = now;
            }
          } else {
            el.textContent = finalNum;
          }
        } else if (mode === 'counter') {
          const value = Math.floor(eased * finalNum);
          el.textContent = formatCounter(value);
        }

        if (t < 1) requestAnimationFrame(tick);
      }

      requestAnimationFrame(tick);
    }

    function setFinalImmediate() {
      stats.forEach((el) => {
        const mode = el.dataset.statMode;
        if (mode === 'counter') el.textContent = '1 M';
        else el.textContent = el.dataset.statFinal;
      });
    }

    if (reduceMotion) {
      setFinalImmediate();
      return;
    }

    if ('IntersectionObserver' in window) {
      let fired = false;
      const obs = new IntersectionObserver(
        (entries) => {
          entries.forEach((entry) => {
            if (entry.isIntersecting && !fired) {
              fired = true;
              stats.forEach(animateStat);
              obs.disconnect();
            }
          });
        },
        { threshold: 0.3 }
      );
      obs.observe(band);
    } else {
      stats.forEach(animateStat);
    }
  })();

  // Contact form submission via Resend API
  const form = document.getElementById('contact-form');
  if (form) {
    const FORM_MESSAGES = {
      fr: {
        sending: 'Envoi en cours...',
        success: 'Message envoyé. Je vous reviens sous 24h.',
        error: 'Erreur. Réessayez ou écrivez directement à contact@loanfikri.com',
      },
      en: {
        sending: 'Sending...',
        success: 'Message sent. I\'ll get back to you within 24h.',
        error: 'Error. Try again or email contact@loanfikri.com directly.',
      },
    };
    const getMessages = () => {
      const lang = document.documentElement.lang === 'en' ? 'en' : 'fr';
      return FORM_MESSAGES[lang];
    };

    form.addEventListener('submit', async (e) => {
      e.preventDefault();
      const submitBtn = form.querySelector('button[type="submit"]');
      const originalText = submitBtn ? submitBtn.textContent : '';
      const statusEl = document.getElementById('form-status');
      const msgs = getMessages();

      if (submitBtn) {
        submitBtn.disabled = true;
        submitBtn.textContent = msgs.sending;
      }
      if (statusEl) {
        statusEl.textContent = '';
        statusEl.className = 'form-status';
      }

      const formData = new FormData(form);
      const payload = Object.fromEntries(formData.entries());

      try {
        const res = await fetch('/api/contact', {
          method: 'POST',
          headers: { 'Content-Type': 'application/json' },
          body: JSON.stringify(payload),
        });
        const data = await res.json();

        if (res.ok && data.ok) {
          form.reset();
          if (statusEl) {
            statusEl.textContent = msgs.success;
            statusEl.className = 'form-status form-status-success';
          } else {
            alert(msgs.success);
          }
        } else {
          throw new Error(data.error || 'request failed');
        }
      } catch (err) {
        console.error(err);
        if (statusEl) {
          statusEl.textContent = msgs.error;
          statusEl.className = 'form-status form-status-error';
        } else {
          alert(msgs.error);
        }
      } finally {
        if (submitBtn) {
          submitBtn.disabled = false;
          submitBtn.textContent = originalText;
        }
      }
    });
  }
</script>  </body></html>