<!DOCTYPE html>
<html lang="fr">
<head>
<!-- Google tag (gtag.js) -->
<meta charset="utf-8">
<meta content="width=device-width, initial-scale=1.0" name="viewport">
<title>Ostéopathe Tourcoing - Yacine Boughagha | Sport & Dry Needling</title>
<meta name="description" content="Yacine Boughagha, ostéopathe D.O. à Tourcoing. Spécialiste en ostéopathie du sport, pédiatrie et dry needling. Cabinet proche métro Carliers.">
<meta name="keywords" content="ostéopathe Tourcoing, ostéopathe Wattrelos, ostéopathe Roubaix, ostéopathe Marcq-en-Barœul, ostéopathe Mouvaux, ostéopathe Roncq, ostéopathe Croix, ostéopathe Bondues, ostéopathie sport, Dry Needling, pédiatrie, rendez-vous ostéopathe, Yacine Boughagha, ostéopathe 59200">
<meta name="opening-hours" content="Mo 08:00-20:00, Tu 08:00-20:00, We 08:00-20:00, Th 08:00-20:00, Fr 08:00-20:00, Sa 08:00-20:00, Su 08:00-20:00">
<link rel="canonical" href="https://www.osteopathe-yacineboughagha.fr/" />
<link rel="manifest" href="https://www.osteopathe-yacineboughagha.fr/site.webmanifest" />
<link rel="icon" href="https://www.osteopathe-yacineboughagha.fr/favicon.ico?v=2" sizes="any" type="image/x-icon" />
<link rel="icon" type="image/svg+xml" href="https://www.osteopathe-yacineboughagha.fr/favicon.svg" />
<link rel="icon" type="image/png" sizes="48x48" href="https://www.osteopathe-yacineboughagha.fr/favicon-48x48.png?v=2" />
<link rel="apple-touch-icon" sizes="180x180" href="https://www.osteopathe-yacineboughagha.fr/apple-touch-icon.png" />
<meta name="apple-mobile-web-app-title" content="Ostéo YB" />
<meta property="og:title" content="Yacine Boughagha - Ostéopathe Tourcoing">
<meta property="og:description" content="Yacine Boughagha, ostéopathe D.O. à Tourcoing. Spécialiste en ostéopathie du sport, pédiatrie et dry needling. Cabinet proche métro Carliers.">
<meta property="og:image" content="https://www.osteopathe-yacineboughagha.fr/assets/img/yacine-pro.webp">
<meta property="og:url" content="https://www.osteopathe-yacineboughagha.fr/">
<meta property="og:type" content="website">
<meta property="og:locale" content="fr_FR">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Yacine Boughagha - Ostéopathe Tourcoing">
<meta name="twitter:description" content="Ostéopathe D.O. à Tourcoing. Spécialiste sport, pédiatrie et dry needling.">
<meta name="twitter:image" content="https://www.osteopathe-yacineboughagha.fr/assets/img/yacine-pro.webp">
<link href="assets/vendor/bootstrap/css/bootstrap-purged.css" rel="stylesheet">
<link href="assets/css/main.min.css" rel="stylesheet">
<style>
/* Accessibilité mobile : zone tactile minimale 24×24 px (WCAG 2.5.8) sur les bullets Swiper */
.swiper-pagination-bullet {
width: 12px;
height: 12px;
min-width: 12px;
min-height: 12px;
position: relative;
}
/* Pseudo-élément qui agrandit la zone cliquable sans changer le visuel */
.swiper-pagination-bullet::before {
content: '';
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
min-width: 44px;
min-height: 44px;
width: 44px;
height: 44px;
}
@media (max-width: 767.98px) {
.swiper-pagination {
display: flex;
justify-content: center;
align-items: center;
gap: 4px;
padding: 8px 0;
}
}
</style>
<link rel="preload" href="assets/vendor/bootstrap-icons/bootstrap-icons-purged.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
<link rel="preload" href="assets/vendor/aos/aos.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
<link rel="preload" href="assets/vendor/swiper/swiper.min.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
<noscript>
<link href="assets/vendor/bootstrap-icons/bootstrap-icons-purged.css" rel="stylesheet">
<link href="assets/vendor/aos/aos.css" rel="stylesheet">
<link href="assets/vendor/swiper/swiper-bundle.min.css" rel="stylesheet">
</noscript>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "MedicalBusiness",
"additionalType": "http://www.productontology.org/id/Osteopathy",
"name": "Yacine Boughagha",
"alternateName": "Yacine Boughagha - Ostéopathe Tourcoing",
"url": "https://www.osteopathe-yacineboughagha.fr/",
"logo": "https://www.osteopathe-yacineboughagha.fr/apple-touch-icon.png",
"image": [
"https://www.osteopathe-yacineboughagha.fr/assets/img/yacine-pro.webp",
"https://www.osteopathe-yacineboughagha.fr/assets/img/cabinet.webp"
],
"description": "Yacine Boughagha, ostéopathe D.O. à Tourcoing (59200). Expert en ostéopathie du sport, pédiatrie et prise en charge de la douleur.",
"hasMap": "https://www.google.com/maps/place/?q=place_id:ChIJC4uxEQApw0cRp4p2jPAqlkw",
"address": {
"@type": "PostalAddress",
"streetAddress": "29 Avenue de la Marne",
"addressLocality": "Tourcoing",
"postalCode": "59200",
"addressRegion": "Hauts-de-France",
"addressCountry": "FR"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "5",
"reviewCount": "10"
},
"areaServed": [
{"@type": "City", "name": "Tourcoing"},
{"@type": "City", "name": "Wattrelos"},
{"@type": "City", "name": "Mouvaux"},
{"@type": "City", "name": "Roncq"},
{"@type": "City", "name": "Marcq-en-Barœul"},
{"@type": "City", "name": "Roubaix"},
{"@type": "City", "name": "Croix"},
{"@type": "City", "name": "Lannoy"},
{"@type": "City", "name": "Neuville-en-Ferrain"},
{"@type": "City", "name": "Bondues"},
{"@type": "City", "name": "Halluin"},
{"@type": "City", "name": "Villeneuve-d'Ascq"},
{"@type": "City", "name": "Lille"}
],
"founder": {
"@type": "Person",
"name": "Yacine Boughagha",
"jobTitle": "Ostéopathe D.O."
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 50.7239,
"longitude": 3.1612
},
"telephone": "06 69 45 22 58",
"priceRange": "50€-70€",
"openingHoursSpecification": [
],
"hasOfferCatalog": {
"@type": "OfferCatalog",
"name": "Services d'ostéopathie",
"itemListElement": [
{
"@type": "Offer",
"itemOffered": {
"@type": "Service",
"name": "Ostéopathie du sport Tourcoing"
}
},
{
"@type": "Offer",
"itemOffered": {
"@type": "Service",
"name": "Dry Needling & Neuromodulation"
}
},
{
"@type": "Offer",
"itemOffered": {
"@type": "Service",
"name": "Ostéopathie pédiatrique"
}
}
]
},
"sameAs": [
"https://share.google/eqOkkS1AkrMquI4Cl"
]
}
</script>
<link rel="preload" as="image" href="assets/img/cabinet.webp" fetchpriority="high">
<link rel="preload" as="image" href="assets/img/logo-yb-80.webp" fetchpriority="high">
<link rel="preconnect" href="https://cdn.jsdelivr.net" crossorigin>
<link rel="dns-prefetch" href="https://cdn.jsdelivr.net">
<link rel="preconnect" href="https://www.google.com" crossorigin>
<link rel="dns-prefetch" href="https://www.google.com">
</head>
<body class="index-page">
<a href="#main-content" class="visually-hidden focusable skip-link" title="Aller au contenu principal">Aller au contenu principal</a>
<header id="header" class="header d-flex align-items-center fixed-top" role="banner">
<div class="container-fluid container-xl position-relative d-flex align-items-center">
<a href="/" class="logo d-flex align-items-center me-auto" aria-label="Accueil - Cabinet ostéopathie Yacine Boughagha">
<img src="assets/img/logo-yb-80.webp"
srcset="assets/img/logo-yb-80.webp 2x"
alt="Logo du cabinet d'ostéopathie Yacine Boughagha"
width="40" height="40"
fetchpriority="high"
style="aspect-ratio: 1/1;">
<span class="logo-text mb-0 fs-5">Ostéopathe Tourcoing - Yacine Boughagha</span>
</a>
<nav id="navmenu" class="navmenu" aria-label="Navigation principale">
<ul role="list">
<li><a href="/#hero" class="active" aria-current="page" title="Accueil">Accueil</a></li>
<li><a href="/#about" title="À propos de Yacine Boughagha">À propos</a></li>
<li><a href="/#featured-departments" title="Spécialités ostéopathiques">Spécialités</a></li>
<li><a href="/#testimonials" title="Avis de mes patients">Avis Patients</a></li>
<li><a href="/#appointment" title="Prendre un rendez-vous en ligne">Prendre RDV</a></li>
<li><a href="/#pricing" title="Tarifs des consultations">Tarifs</a></li>
<li><a href="/#contact" title="Contact et accès au cabinet">Contact</a></li>
</ul>
<button class="mobile-nav-toggle d-xl-none"
aria-label="Menu de navigation"
aria-expanded="false"
aria-controls="navmenu"
style="background:none; border:none;">
<span class="bi bi-list" aria-hidden="true"></span>
</button>
</nav>
</div>
</header>
<main class="main" id="main-content">
<section id="hero" class="hero section" aria-label="Présentation du cabinet">
<div class="container" data-aos="fade-up" data-aos-delay="100">
<div class="row align-items-center">
<div class="col-lg-6">
<div class="hero-content">
<div class="trust-badges mb-4" data-aos="fade-right" data-aos-delay="200">
<div class="badge-item">
<i class="bi bi-shield-check" aria-hidden="true"></i>
<span>Diplômé D.O.</span>
</div>
<div class="badge-item">
<i class="bi bi-google text-primary" aria-hidden="true"></i>
<span>
<strong>5/5</strong>
(10 avis)
</span>
</div>
</div>
<h1 data-aos="fade-right" data-aos-delay="300">
Ostéopathe D.O. à <span class="highlight">Tourcoing</span> — Sport, Pédiatrie & Dry Needling
</h1>
<p class="hero-description" data-aos="fade-right" data-aos-delay="400">
Ostéopathe D.O. à <strong>Tourcoing</strong>,
proche de <strong>Halluin</strong> et <strong>Roncq</strong>
— Yacine Boughagha, je reçois adultes, sportifs et bébés.
Spécialisé en <strong>sport</strong>, <strong>pédiatrie</strong>, <strong>Dry Needling</strong> et <strong>Neuromodulation</strong>.
</p>
<div class="hero-actions" data-aos="fade-right" data-aos-delay="600">
<a href="#appointment" class="btn btn-primary" title="Prendre rendez-vous en ligne">Prendre Rendez-vous</a>
<a href="#featured-departments" class="btn btn-outline ms-2" title="Découvrir mes spécialités ostéopathiques">
<i class="bi bi-info-circle me-2" aria-hidden="true"></i>En savoir plus sur mes spécialités
</a>
</div>
<div class="emergency-contact mt-4" data-aos="fade-right" data-aos-delay="700">
<a href="tel:+33669452258 " title="Appeler le cabinet Ostéopathe au 06 69 45 22 58"
class="d-flex align-items-center text-decoration-none"
aria-label="Appeler le cabinet Ostéopathe au 06 69 45 22 58">
<div class="emergency-icon"><i class="bi bi-telephone-fill" aria-hidden="true"></i></div>
<div class="emergency-info">
<small class="d-block text-muted">Contact Cabinet</small>
<strong class="text-dark">06 69 45 22 58</strong>
</div>
</a>
</div>
</div>
</div>
<div class="col-lg-6">
<div class="hero-visual" data-aos="fade-left" data-aos-delay="400">
<div class="main-image position-relative">
<img src="assets/img/cabinet.webp"
srcset="assets/img/cabinet-400.webp 400w, assets/img/cabinet.webp 600w"
sizes="(max-width: 768px) 100vw, 600px"
alt="Salle de consultation d'ostéopathie Tourcoing - Cabinet Yacine Boughagha"
class="img-fluid rounded-4"
width="600" height="400"
fetchpriority="high" decoding="sync" loading="eager">
<div class="floating-card appointment-card">
<div class="card-icon"><i class="bi bi-calendar-check" aria-hidden="true"></i></div>
<div class="card-content">
<p class="fw-bold mb-1 small">Prochaine disponibilité</p>
<p class="mb-0">
<span class="text-primary">
<strong>
Demain à 08:00 </strong>
</span>
</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<section id="about" class="about section" aria-label="À propos de Yacine Boughagha">
<div class="container" data-aos="fade-up">
<div class="row gy-4 align-items-center">
<div class="col-lg-5 text-center d-flex justify-content-center align-items-center" data-aos="zoom-in">
<div class="profile-image-wrapper">
<img src="assets/img/yacine-pro.webp"
srcset="assets/img/yacine-pro-200.webp 200w, assets/img/yacine-pro.webp 350w"
sizes="(max-width: 768px) 200px, 350px"
width="350" height="350" loading="lazy"
class="img-fluid profile-circle"
alt="Yacine Boughagha, Ostéopathe D.O. spécialisé en sport, Dry Needling & Neuromodulation et pédiatrie à Tourcoing">
<div class="experience-badge shadow">
<span class="number">D.O.</span>
<span class="text">Diplômé</span>
</div>
</div>
</div>
<div class="col-lg-7">
<div class="content ps-0 ps-lg-5">
<h2 class="fw-bold text-primary">Yacine Boughagha</h2>
<p class="fst-italic mb-4" style="color: #495057;">
<strong>Ostéopathe D.O. • Infirmier libéral • Coach sportif</strong>
</p>
<p>
Ma vision de l'ostéopathie est celle d'une <strong>prise en charge hybride</strong>. En combinant mes compétences médicales d'infirmier et ma connaissance du mouvement en tant que coach, je propose un accompagnement qui va au-delà de la simple manipulation.
</p>
<h3 class="h6 fw-bold text-primary mt-4">
<i class="bi bi-fire me-2" aria-hidden="true"></i>Spécialisation Performance & Sport
</h3>
<p class="small">Expert dans l'accompagnement des athlètes (<strong>CrossFit, Musculation, Football, Tennis</strong>), j'interviens sur :</p>
<ul class="list-unstyled small mb-4">
<li><i class="bi bi-check2-circle text-primary me-2"></i><strong>Thérapie manuelle :</strong> Relâchement myofascial et manipulations précises.</li>
<li><i class="bi bi-check2-circle text-primary me-2"></i><strong>Prévention :</strong> Analyse du mouvement pour éviter les récidives.</li>
<li><i class="bi bi-check2-circle text-primary me-2"></i><strong>Récupération :</strong> Optimisation des capacités physiques post-effort.</li>
</ul>
<div class="row g-3 mt-3">
<div class="col-md-6">
<div class="history-box p-3 bg-light rounded h-100 border-start border-primary border-3 shadow-sm">
<h4 class="h6 fw-bold mb-3"><i class="bi bi-mortarboard me-2"></i>Diplômes & Parcours</h4>
<ul class="list-unstyled x-small mb-0">
<li class="mb-2"><strong>2023 :</strong> D.U. Ostéopathie - COPB</li>
<li class="mb-2"><strong>2018 :</strong> Infirmier Diplômé d'État (IDE) - Tourcoing</li>
</ul>
<hr class="opacity-25 my-2" role="presentation" aria-hidden="true">
<ul class="list-unstyled x-small mb-0">
<li class="text-dark">
<i class="bi bi-geo-alt-fill text-danger me-1" aria-hidden="true"></i>
<strong>Depuis 2024 :</strong> Cabinet Libéral à Tourcoing
</li>
</ul>
</div>
</div>
<div class="col-md-6">
<div class="legal-info p-3 border rounded h-100 bg-white shadow-sm">
<h4 class="h6 fw-bold text-secondary mb-3"><i class="bi bi-shield-check me-2"></i>Mentions Légales</h4>
<div class="d-flex justify-content-between mb-1">
<span class="small text-muted">Numéro RPPS</span>
<span class="badge bg-primary-light text-primary">10105134364</span>
</div>
<div class="d-flex justify-content-between mb-2 pb-2 border-bottom">
<span class="small text-muted">Statut</span>
<span class="text-success small fw-bold">Certifié ARS</span>
</div>
<div class="mt-2">
<span class="d-block small fw-bold mb-1">Langues :</span>
<span class="small text-muted">Français, Anglais, Arabe, Espagnol</span>
</div>
</div>
</div>
</div>
<div class="social-about mt-4" data-aos="fade-up" data-aos-delay="200">
<p class="small text-muted fw-semibold mb-2 text-uppercase" style="letter-spacing:.06em;">Me retrouver en ligne</p>
<div class="d-flex flex-wrap gap-2">
<a href="https://www.instagram.com/yacineosteo"
target="_blank" rel="noopener noreferrer"
class="social-about-btn"
style="--sn-color:#e1306c;"
title="Yacineosteo de Yacine Boughagha"
aria-label="Yacineosteo">
<span class="social-about-icon"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="currentColor" viewbox="0 0 16 16" aria-hidden="true"><path d="M8 0C5.829 0 5.556.01 4.703.048 3.85.088 3.269.222 2.76.42a3.9 3.9 0 0 0-1.417.923A3.9 3.9 0 0 0 .42 2.76C.222 3.268.087 3.85.048 4.7.01 5.555 0 5.827 0 8.001c0 2.172.01 2.444.048 3.297.04.852.174 1.433.372 1.942.205.526.478.972.923 1.417.444.445.89.719 1.416.923.51.198 1.09.333 1.942.372C5.555 15.99 5.827 16 8 16s2.444-.01 3.298-.048c.851-.04 1.434-.174 1.943-.372a3.9 3.9 0 0 0 1.416-.923c.445-.445.718-.891.923-1.417.197-.509.332-1.09.372-1.942C15.99 10.445 16 10.173 16 8s-.01-2.445-.048-3.299c-.04-.851-.175-1.433-.372-1.941a3.9 3.9 0 0 0-.923-1.417A3.9 3.9 0 0 0 13.24.42c-.51-.198-1.092-.333-1.943-.372C10.443.01 10.172 0 7.998 0zm-.717 1.442h.718c2.136 0 2.389.007 3.232.046.78.035 1.204.166 1.486.275.373.145.64.319.92.599s.453.546.598.92c.11.281.24.705.275 1.485.039.843.047 1.096.047 3.231s-.008 2.389-.047 3.232c-.035.78-.166 1.203-.275 1.485a2.5 2.5 0 0 1-.599.919c-.28.28-.546.453-.92.598-.28.11-.704.24-1.485.276-.843.038-1.096.047-3.232.047s-2.39-.009-3.233-.047c-.78-.036-1.203-.166-1.485-.276a2.5 2.5 0 0 1-.92-.598 2.5 2.5 0 0 1-.6-.92c-.109-.281-.24-.705-.275-1.485-.038-.843-.046-1.096-.046-3.233s.008-2.388.046-3.231c.036-.78.166-1.204.276-1.486.145-.373.319-.64.599-.92s.546-.453.92-.598c.282-.11.705-.24 1.485-.276.738-.034 1.024-.044 2.515-.045zm4.988 1.328a.96.96 0 1 0 0 1.92.96.96 0 0 0 0-1.92m-4.27 1.122a4.109 4.109 0 1 0 0 8.217 4.109 4.109 0 0 0 0-8.217m0 1.441a2.667 2.667 0 1 1 0 5.334 2.667 2.667 0 0 1 0-5.334"/></svg></span>
<span class="social-about-label">Yacineosteo</span>
</a>
<a href="http://www.linkedin.com/in/yacine-boughagha-4355b3336"
target="_blank" rel="noopener noreferrer"
class="social-about-btn"
style="--sn-color:#0A66C2;"
title="linkedin de Yacine Boughagha"
aria-label="linkedin">
<span class="social-about-icon"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="currentColor" viewbox="0 0 16 16" aria-hidden="true"><path d="M0 1.146C0 .513.526 0 1.175 0h13.65C15.474 0 16 .513 16 1.146v13.708c0 .633-.526 1.146-1.175 1.146H1.175C.526 16 0 15.487 0 14.854zm4.943 12.248V6.169H2.542v7.225zm-1.2-8.212c.837 0 1.358-.554 1.358-1.248-.015-.709-.52-1.248-1.342-1.248S2.4 3.226 2.4 3.934c0 .694.521 1.248 1.327 1.248zm4.908 8.212V9.359c0-.216.016-.432.08-.586.173-.431.568-.878 1.232-.878.869 0 1.216.662 1.216 1.634v3.865h2.401V9.25c0-2.22-1.184-3.252-2.764-3.252-1.274 0-1.845.7-2.165 1.193v.025h-.016l.016-.025V6.169h-2.4c.03.678 0 7.225 0 7.225z"/></svg></span>
<span class="social-about-label">linkedin</span>
</a>
</div>
</div>
<style>
.social-about-btn {
display: inline-flex;
align-items: center;
gap: 0;
text-decoration: none;
border-radius: 12px;
overflow: hidden;
border: 2px solid var(--sn-color, #333);
transition: box-shadow .2s, transform .2s;
}
.social-about-btn:hover {
transform: translateY(-2px);
box-shadow: 0 4px 14px color-mix(in srgb, var(--sn-color) 35%, transparent);
}
.social-about-icon {
display: flex;
align-items: center;
justify-content: center;
width: 36px;
height: 36px;
background: var(--sn-color, #333);
color: #fff;
font-size: 1rem;
flex-shrink: 0;
}
/* ✅ CORRECTION WCAG AA : fond foncé fixe (#1a1a1a) + texte blanc garanti */
.social-about-label {
padding: 0 .75rem;
font-size: .8rem;
font-weight: 700;
background: #1a1a1a;
color: #ffffff;
letter-spacing: .02em;
height: 36px;
display: flex;
align-items: center;
}
/* Sur mobile : label masqué, seule l'icône ronde reste visible */
@media (max-width: 575.98px) {
.social-about-label {
display: none;
}
.social-about-btn {
border-radius: 50%;
width: 42px;
height: 42px;
justify-content: center;
}
.social-about-icon {
width: 42px;
height: 42px;
border-radius: 50%;
font-size: 1.1rem;
}
}
</style>
</div>
</div>
</div>
</div>
</section>
<section id="featured-departments" class="featured-departments section" aria-label="Spécialités ostéopathiques">
<div class="container section-title" data-aos="fade-up">
<h2>Expertises en Ostéopathie à Tourcoing</h2>
<p>Une expertise complète alliant santé, sport et mouvement.</p>
</div>
<div class="container" data-aos="fade-up">
<div class="row gy-4">
<div class="col-lg-3 col-md-6">
<div class="specialty-card p-4 border rounded shadow-sm h-100">
<div class="specialty-meta"><span class="badge bg-primary mb-2">Sport</span></div>
<h3><i class="bi bi-trophy-fill text-primary me-2" aria-hidden="true"></i>Ostéopathie du Sport</h3>
<p>Accompagnement des athlètes pour la récupération et la prévention des traumatismes. Idéal pour le suivi post-compétition ou post-blessure.</p>
</div>
</div>
<div class="col-lg-3 col-md-6">
<div class="specialty-card p-4 border rounded shadow-sm h-100 border-primary border-2">
<div class="specialty-meta"><span class="badge bg-dark mb-2">Performance</span></div>
<h3><i class="bi bi-lightning-charge-fill text-warning me-2" aria-hidden="true"></i>Performance & Troubles</h3>
<p>Optimisation du geste technique et traitement des troubles fonctionnels (stress, sommeil, digestion) pour maximiser votre potentiel physique.</p>
</div>
</div>
<div class="col-lg-3 col-md-6">
<div class="specialty-card p-4 border rounded shadow-sm h-100">
<div class="specialty-meta"><span class="badge bg-danger mb-2">Innovation</span></div>
<h3><i class="bi bi-target text-danger me-2" aria-hidden="true"></i>Dry Needling & Neuromodulation</h3>
<p>Traitements avancés pour les douleurs myofasciales et la régulation du système nerveux, optimisant la récupération tissulaire.</p>
</div>
</div>
<div class="col-lg-3 col-md-6">
<div class="specialty-card p-4 border rounded shadow-sm h-100">
<div class="specialty-meta"><span class="badge bg-info text-dark mb-2">Pédiatrie</span></div>
<h3><i class="bi bi-heart-pulse-fill text-info me-2" aria-hidden="true"></i>Nourrissons & Enfants</h3>
<p>Prise en charge douce pour les bilans de naissance, coliques, troubles du sommeil ou de la posture durant la croissance.</p>
</div>
</div>
</div>
</div>
</section>
<section id="testimonials" class="testimonials section bg-light" aria-label="Avis patients Google">
<div class="container section-title" data-aos="fade-up">
<h2>Avis de mes patients</h2>
<p>Retours d'expérience en direct de Google Maps</p>
</div>
<div class="container" data-aos="fade-up" data-aos-delay="100">
<div class="swiper init-swiper" role="region" aria-label="Avis de patients">
<div class="swiper-wrapper">
<div class="swiper-slide" role="group" aria-label="Avis patient 1">
<div class="testimonial-item shadow-sm bg-white p-4 rounded-4 h-100 d-flex flex-column">
<!-- ✅ role="img" ajouté -->
<div class="stars mb-3 text-warning" role="img" aria-label="5 étoiles sur 5">
<i class="bi bi-star-fill" aria-hidden="true"></i><i class="bi bi-star-fill" aria-hidden="true"></i><i class="bi bi-star-fill" aria-hidden="true"></i><i class="bi bi-star-fill" aria-hidden="true"></i><i class="bi bi-star-fill" aria-hidden="true"></i> </div>
<p class="fst-italic flex-grow-1">
"Bonjour,
J’ai consulté Yacine il y’a moins d’une semaine et tout s’est super bien passé. J’y suis allé pour une douleur dorsale du côté droit et lui a pu également déceler une du côté gauche et franchement la séance s’est super bien passée. Au final je me suis retrouvé sans douleur jusqu’à lors que je fais ce message et je suis ressorti de là gagnant avec des exercices de renforcement. Franchement au top et super pour le côté humain, je vous le recommande 100%"
</p>
<div class="profile mt-3 d-flex align-items-center">
<!-- ✅ crossorigin="anonymous" retiré (cause erreurs CORS sur photos Google) -->
<img src="https://lh3.googleusercontent.com/a/ACg8ocIAHECY53seKusM7GMVYHsjX7kowUs-Y770LaNdFAChNVWTqw=s128-c0x00000000-cc-rp-mo"
class="rounded-circle me-3"
width="45" height="45"
loading="lazy"
decoding="async"
alt="Photo de Charles Tsonga">
<div>
<!-- ✅ h4 remplacé par p pour respecter la hiérarchie des titres -->
<p class="h6 mb-0 fw-bold">Charles Tsonga</p>
<small class="text-muted">il y a un mois</small>
</div>
</div>
</div>
</div>
<div class="swiper-slide" role="group" aria-label="Avis patient 2">
<div class="testimonial-item shadow-sm bg-white p-4 rounded-4 h-100 d-flex flex-column">
<!-- ✅ role="img" ajouté -->
<div class="stars mb-3 text-warning" role="img" aria-label="5 étoiles sur 5">
<i class="bi bi-star-fill" aria-hidden="true"></i><i class="bi bi-star-fill" aria-hidden="true"></i><i class="bi bi-star-fill" aria-hidden="true"></i><i class="bi bi-star-fill" aria-hidden="true"></i><i class="bi bi-star-fill" aria-hidden="true"></i> </div>
<p class="fst-italic flex-grow-1">
"Ostéopathe très compétent et à l’écoute. Les explications sont claires, la prise en charge est douce et efficace. J’ai senti une nette amélioration dès la première séance. Je recommande à 100 %."
</p>
<div class="profile mt-3 d-flex align-items-center">
<!-- ✅ crossorigin="anonymous" retiré (cause erreurs CORS sur photos Google) -->
<img src="https://lh3.googleusercontent.com/a/ACg8ocKw6vRXg-tNqHhfROWnKsKExMlLwn6ABq-fJHqUsHgHrBGamQ=s128-c0x00000000-cc-rp-mo"
class="rounded-circle me-3"
width="45" height="45"
loading="lazy"
decoding="async"
alt="Photo de Nora EL">
<div>
<!-- ✅ h4 remplacé par p pour respecter la hiérarchie des titres -->
<p class="h6 mb-0 fw-bold">Nora EL</p>
<small class="text-muted">il y a 3 mois</small>
</div>
</div>
</div>
</div>
<div class="swiper-slide" role="group" aria-label="Avis patient 3">
<div class="testimonial-item shadow-sm bg-white p-4 rounded-4 h-100 d-flex flex-column">
<!-- ✅ role="img" ajouté -->
<div class="stars mb-3 text-warning" role="img" aria-label="5 étoiles sur 5">
<i class="bi bi-star-fill" aria-hidden="true"></i><i class="bi bi-star-fill" aria-hidden="true"></i><i class="bi bi-star-fill" aria-hidden="true"></i><i class="bi bi-star-fill" aria-hidden="true"></i><i class="bi bi-star-fill" aria-hidden="true"></i> </div>
<p class="fst-italic flex-grow-1">
"Un grand merci à Yacine pour son professionnalisme. Ostéopathe passionné qui prend le temps d’expliquer. Mes douleurs qui perdurent depuis des années ont disparu. Cabinet magnifique dans un beau quartier. Table chauffante ce qui est un grand plus. Je recommande vivement ce professionnel"
</p>
<div class="profile mt-3 d-flex align-items-center">
<!-- ✅ crossorigin="anonymous" retiré (cause erreurs CORS sur photos Google) -->
<img src="https://lh3.googleusercontent.com/a/ACg8ocKnihR__-ekUmqM2eMXM9G4EhSmy7PJgIR9eZ0dI3_KSlv-rg=s128-c0x00000000-cc-rp-mo"
class="rounded-circle me-3"
width="45" height="45"
loading="lazy"
decoding="async"
alt="Photo de S. De Abreu">
<div>
<!-- ✅ h4 remplacé par p pour respecter la hiérarchie des titres -->
<p class="h6 mb-0 fw-bold">S. De Abreu</p>
<small class="text-muted">il y a 2 mois</small>
</div>
</div>
</div>
</div>
<div class="swiper-slide" role="group" aria-label="Avis patient 4">
<div class="testimonial-item shadow-sm bg-white p-4 rounded-4 h-100 d-flex flex-column">
<!-- ✅ role="img" ajouté -->
<div class="stars mb-3 text-warning" role="img" aria-label="5 étoiles sur 5">
<i class="bi bi-star-fill" aria-hidden="true"></i><i class="bi bi-star-fill" aria-hidden="true"></i><i class="bi bi-star-fill" aria-hidden="true"></i><i class="bi bi-star-fill" aria-hidden="true"></i><i class="bi bi-star-fill" aria-hidden="true"></i> </div>
<p class="fst-italic flex-grow-1">
"Je recommande vivement Yacine pour son professionnalisme et la qualité de sa prise en charge. Il a su être pleinement à l’écoute et identifier immédiatement les actions nécessaires pour soulager mes douleurs au dos et à l’épaule, liées à mes entraînements de musculation.
Ses compétences et ses connaissances sont indéniables, ce qui inspire une totale confiance. Il pratique également la méthode du dry needling que peu d’ostéopathes pratiquent dans la région ce qui constitue un réel atout dans la qualité des soins proposés. Cette méthode est très efficace et m’a soulagée grandement mes tensions musculaire.
Je reviendrai sans hésitation !"
</p>
<div class="profile mt-3 d-flex align-items-center">
<!-- ✅ crossorigin="anonymous" retiré (cause erreurs CORS sur photos Google) -->
<img src="https://lh3.googleusercontent.com/a/ACg8ocLCD8SVLb6MbvoPpaeZHZx0Qh2X2nNPZ5wqfTaf5245ncwnyq4=s128-c0x00000000-cc-rp-mo"
class="rounded-circle me-3"
width="45" height="45"
loading="lazy"
decoding="async"
alt="Photo de Barbosa Alexia">
<div>
<!-- ✅ h4 remplacé par p pour respecter la hiérarchie des titres -->
<p class="h6 mb-0 fw-bold">Barbosa Alexia</p>
<small class="text-muted">il y a 4 semaines</small>
</div>
</div>
</div>
</div>
<div class="swiper-slide" role="group" aria-label="Avis patient 5">
<div class="testimonial-item shadow-sm bg-white p-4 rounded-4 h-100 d-flex flex-column">
<!-- ✅ role="img" ajouté -->
<div class="stars mb-3 text-warning" role="img" aria-label="5 étoiles sur 5">
<i class="bi bi-star-fill" aria-hidden="true"></i><i class="bi bi-star-fill" aria-hidden="true"></i><i class="bi bi-star-fill" aria-hidden="true"></i><i class="bi bi-star-fill" aria-hidden="true"></i><i class="bi bi-star-fill" aria-hidden="true"></i> </div>
<p class="fst-italic flex-grow-1">
"Un grand merci Monsieur Yassine, j’ai eu une séance aujourd’hui urgent, très professionnel prends vraiment le temps pour calmer vous douleur débloquer le corps, J’arrive même pas tourner je suis sortie en forme je me sens bien beaucoup mieux.
Merci Monsieur Yassine"
</p>
<div class="profile mt-3 d-flex align-items-center">
<!-- ✅ crossorigin="anonymous" retiré (cause erreurs CORS sur photos Google) -->
<img src="https://lh3.googleusercontent.com/a/ACg8ocLeJJ8PflBzWg4QYRD3U2gKtYepaOm4yhfmE2XcsjjE9djr-Q=s128-c0x00000000-cc-rp-mo"
class="rounded-circle me-3"
width="45" height="45"
loading="lazy"
decoding="async"
alt="Photo de Lili Lili">
<div>
<!-- ✅ h4 remplacé par p pour respecter la hiérarchie des titres -->
<p class="h6 mb-0 fw-bold">Lili Lili</p>
<small class="text-muted">il y a 3 mois</small>
</div>
</div>
</div>
</div>
</div>
<div class="swiper-pagination" aria-label="Navigation entre les avis patients"></div>
</div>
</div>
</section>
<section id="appointment" class="appointment section light-background" aria-label="Formulaire de prise de rendez-vous">
<div class="container section-title" data-aos="fade-up">
<h2>Prendre RDV avec votre Ostéopathe</h2>
</div>
<div class="container" data-aos="fade-up">
<div class="row justify-content-center">
<div class="col-lg-8">
<form action="" method="post" id="rdvForm" class="appointment-form p-4 p-md-5 bg-white rounded shadow-sm">
<div class="section-header mb-4">
<h3 class="h5 text-primary">
<i class="bi bi-person-badge me-2" aria-hidden="true"></i>Informations Personnelles
</h3>
<hr class="opacity-10">
</div>
<div class="row gy-4">
<div class="col-md-6">
<label for="nom" class="form-label small fw-bold">Nom</label>
<input type="text" id="nom" name="nom" class="form-control" placeholder="Nom" autocomplete="family-name" required>
</div>
<div class="col-md-6">
<label for="prenom" class="form-label small fw-bold">Prénom</label>
<input type="text" id="prenom" name="prenom" class="form-control" placeholder="Prénom" autocomplete="given-name" required>
</div>
<div class="col-md-6">
<label for="email" class="form-label small fw-bold">Email</label>
<input type="email" id="email" name="email" class="form-control" placeholder="Email" autocomplete="email" required>
</div>
<div class="col-md-6">
<label for="phone" class="form-label small fw-bold">Téléphone</label>
<input type="tel" id="phone" name="phone" class="form-control" placeholder="06.." autocomplete="tel" required>
</div>
<div class="col-12">
<label for="raison_rdv" class="form-label small fw-bold">Motif de consultation</label>
<select id="raison_rdv" name="raison_rdv" class="form-select form-select-lg" required aria-required="true">
<option value="" disabled selected>Sélectionnez la raison</option>
<option value="Première consultation">Première consultation d'ostéopathie</option>
<option value="Suivi">Consultation de suivi</option>
<option value="Sport">Sportif (Suivi/Blessure)</option>
<option value="Pédiatrie">Pédiatrie (Nourrisson/Enfant)</option>
<option value="Dry Needling">Dry Needling / Neuromodulation</option>
<option value="Urgence">Urgence / Douleur aiguë</option>
</select>
</div>
<div class="col-md-6">
<label for="calendrier_pro" class="form-label small fw-bold">Date souhaitée</label>
<div class="input-group">
<span class="input-group-text bg-white"><i class="bi bi-calendar3"></i></span>
<input type="text" name="date_rdv" id="calendrier_pro" class="form-control form-control-lg bg-light" value="2026-03-23" readonly style="cursor: pointer;" aria-label="Choisir une date">
</div>
</div>
<div class="col-md-6">
<label for="time_rdv_select" class="form-label small fw-bold">Heures disponibles</label>
<div class="input-group">
<span class="input-group-text bg-white"><i class="bi bi-clock"></i></span>
<select name="time_rdv" id="time_rdv_select" class="form-select form-select-lg" required>
<option value='08:00'>08:00</option><option value='08:45'>08:45</option><option value='09:30'>09:30</option><option value='10:15'>10:15</option><option value='11:00'>11:00</option><option value='11:45'>11:45</option><option value='12:30'>12:30</option><option value='13:15'>13:15</option><option value='14:00'>14:00</option><option value='14:45'>14:45</option><option value='15:30'>15:30</option><option value='16:15'>16:15</option><option value='17:00'>17:00</option><option value='17:45'>17:45</option><option value='18:30'>18:30</option><option value='19:15'>19:15</option> </select>
</div>
</div>
<button type="submit" name="book_appointment" class="btn btn-primary btn-lg w-100 mt-5 shadow-sm py-3">
<i class="bi bi-check2-circle me-2"></i>Confirmer la réservation
</button>
</div>
</form>
</div> </div> </div> </section>
<section id="pricing" class="pricing section" aria-label="Tarifs des consultations">
<div class="container section-title" data-aos="fade-up">
<h2>Tarifs & Expertises</h2>
</div>
<div class="container" data-aos="fade-up">
<div class="row gy-4 justify-content-center">
<div class="col-lg-4 col-md-6">
<div class="pricing-card p-4 border rounded shadow-sm bg-white h-100 d-flex flex-column">
<h3 class="h5 mb-4 text-primary fw-bold">
<i class="bi bi-tag me-2" aria-hidden="true"></i>Tarifs des prestations
</h3>
<ul class="list-unstyled flex-grow-1">
<li class="d-flex justify-content-between mb-3 border-bottom pb-2">
<span>Consultation d'ostéopathie</span>
<span class="fw-bold">70 €</span>
</li>
<li class="d-flex justify-content-between mb-3 border-bottom pb-2">
<span>Suivi d'ostéopathie</span>
<span class="fw-bold">50 €</span>
</li>
<li class="d-flex justify-content-between mb-3 border-bottom pb-2">
<span>Massage récupération</span>
<span class="fw-bold">50 €</span>
</li>
<li class="p-3 rounded bg-primary bg-opacity-10 border border-primary border-opacity-25 mb-3">
<div class="d-flex justify-content-between fw-bold text-primary">
<span>Forfait (10 séances)</span>
<span>400 €</span>
</div>
<small class="text-muted d-block mt-1">Soit 40 € la séance au lieu de 50 €</small>
</li>
</ul>
<p class="small text-muted mt-3 mb-0"><i>Paiement en une fois à la première séance.</i></p>
</div>
</div>
<div class="col-lg-4 col-md-6">
<div class="expertises-card p-4 border rounded shadow-sm bg-white h-100">
<h4 class="h5 mb-4 text-primary fw-bold"><i class="bi bi-mortarboard me-2"></i>Expertises & Actes</h4>
<ul class="list-unstyled">
<li class="mb-2"><i class="bi bi-check2-circle text-primary me-2" aria-hidden="true"></i>Ostéopathie du sport</li>
<li class="mb-2"><i class="bi bi-check2-circle text-primary me-2" aria-hidden="true"></i>Dry Needling & Neuromodulation</li>
<li class="mb-2"><i class="bi bi-check2-circle text-primary me-2" aria-hidden="true"></i>Ostéopathie pédiatrique</li>
<li class="mb-2"><i class="bi bi-check2-circle text-primary me-2" aria-hidden="true"></i>Ostéopathie de la femme enceinte</li>
<li class="mb-2"><i class="bi bi-check2-circle text-primary me-2" aria-hidden="true"></i>Ostéopathie structurelle</li>
<li class="mb-2"><i class="bi bi-check2-circle text-primary me-2" aria-hidden="true"></i>Ostéopathie myofasciale</li>
<li class="mb-2"><i class="bi bi-check2-circle text-primary me-2" aria-hidden="true"></i>Massage thérapeutique</li>
<li class="mb-2"><i class="bi bi-check2-circle text-primary me-2" aria-hidden="true"></i>Nutrition du sportif</li>
</ul>
</div>
</div>
<div class="col-lg-4 col-md-12">
<div class="payment-card p-4 border rounded shadow-sm bg-light h-100 d-flex flex-column">
<h4 class="h5 mb-4 text-primary fw-bold"><i class="bi bi-wallet2 me-2"></i>Paiement & Mutuelle</h4>
<div class="payment-methods mb-4">
<div class="d-flex align-items-center mb-3 p-3 bg-white rounded border border-success border-opacity-25 shadow-sm">
<i class="bi bi-cash-stack text-success fs-3 me-3"></i>
<div>
<span class="fw-bold d-block text-success">Espèces uniquement</span>
<small class="text-muted">Merci de prévoir l'appoint si possible.</small>
</div>
</div>
<div class="p-3 border rounded bg-white border-danger border-opacity-10">
<div class="d-flex align-items-center mb-2">
<i class="bi bi-x-circle text-danger me-2"></i>
<span class="text-danger fw-bold small">Modes non acceptés :</span>
</div>
<ul class="list-unstyled mb-0 text-muted"> <li class="d-flex align-items-center mb-1 x-small">
<i class="bi bi-credit-card me-2 opacity-50"></i>
<span>
Cartes Bancaires
<small>(Pas de terminal)</small> </span>
</li>
<li class="d-flex align-items-center mb-1 x-small">
<i class="bi bi-check2-square me-2 opacity-50"></i>
<span>
Chèques bancaires
<small>(Non acceptés)</small> </span>
</li>
</ul>
</div>
</div>
<div class="remboursement-info p-3 rounded bg-white border border-primary border-opacity-10 shadow-sm mt-auto">
<h4 class="fw-bold text-primary mb-2">
<i class="bi bi-file-earmark-medical me-2" aria-hidden="true"></i>Remboursement
</h4>
<p class="small text-muted mb-2">
L'ostéopathie est prise en charge par la <strong>quasi-totalité des mutuelles</strong>.
</p>
<ul class="x-small text-muted ps-3 mb-0">
<li>Facture remise en fin de séance.</li>
<li>Envoi simplifié via l'appli mutuelle.</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</section>
<section id="contact" class="contact section" aria-label="Contact et accès au cabinet">
<div class="container section-title" data-aos="fade-up">
<h2>Contact & Accès</h2>
</div>
<div class="row gy-4 align-items-stretch">
<div class="col-lg-4" data-aos="fade-up" data-aos-delay="100">
<div class="p-4 border rounded shadow-sm bg-white h-100 d-flex flex-column" itemscope itemtype="https://schema.org/HealthAndBeautyBusiness">
<h3 class="h5 mb-4 text-primary fw-bold">
<i class="bi bi-info-circle me-2" aria-hidden="true"></i>Infos & Horaires
</h3>
<meta itemprop="name" content="Yacine Boughagha - Ostéopathe Tourcoing">
<meta itemprop="priceRange" content="55€-65€">
<link itemprop="image" href="https://www.osteopathe-yacineboughagha.fr/assets/img/yacine-pro.webp">
<div class="flex-grow-1">
<div class="d-flex mb-3" itemprop="address" itemscope itemtype="https://schema.org/PostalAddress">
<i class="bi bi-geo-alt text-primary fs-5 me-3"></i>
<p class="small mb-0">
<a href="https://www.google.com/maps/search/?api=1&query=29+Av.+de+la+Marne+59200+Tourcoing"
target="_blank" rel="noopener" class="text-dark text-decoration-none"
title="Voir l'adresse du cabinet sur Google Maps">
<span itemprop="streetAddress">29 Av. de la Marne</span>, <br>
<span itemprop="postalCode">59200</span> <span itemprop="addressLocality">Tourcoing</span>
</a>
</p>
</div>
<div class="d-flex mb-4 border-bottom pb-3">
<i class="bi bi-telephone text-primary fs-5 me-3"></i>
<p class="small mb-0 fw-bold">
<a href="tel:+33669452258" class="text-primary text-decoration-none" itemprop="telephone" title="Appeler le cabinet de Yacine Boughagha">
<strong>06 69 45 22 58</strong>
</a>
</p>
</div>
<div class="card border-0 shadow-sm p-3 mb-4 bg-white">
<h3 class="h6 fw-bold mb-3 text-uppercase" style="letter-spacing: 0.5px;">
<i class="bi bi-geo-alt-fill text-primary me-2"></i>Accès au cabinet à Tourcoing
</h3>
<ul class="list-unstyled mb-3">
<li class="d-flex align-items-center mb-2">
<span class="badge bg-danger me-2" style="width: 35px;">M2</span>
<span class="small text-muted"><strong>Métro :</strong> Arrêt Carliers (8 min à pied)</span>
</li>
<li class="d-flex align-items-center mb-2">
<span class="badge bg-warning text-dark me-2" style="width: 35px;">T</span>
<span class="small text-muted"><strong>Tramway :</strong> Arrêt Ma Campagne (2 min à pied)</span>
</li>
<li class="d-flex align-items-center">
<span class="badge bg-success-subtle text-success border border-success-subtle me-2">
<i class="bi bi-p-circle-fill"></i>
</span>
<span class="small text-muted"><strong>Parking gratuit</strong> à proximité immédiate</span>
</li>
</ul>
<hr class="my-3 opacity-10">
<div class="location-context">
<p class="small text-muted mb-2">
Le cabinet est idéalement situé pour les résidents de <strong>Tourcoing</strong> et des communes de la <strong>métropole lilloise</strong> :
</p>
<div class="d-flex flex-wrap gap-2">
<span class="badge rounded-pill bg-primary px-3 py-2">Tourcoing</span>
<span class="badge rounded-pill border text-secondary bg-light px-3 py-2">
Halluin </span>
<span class="badge rounded-pill border text-secondary bg-light px-3 py-2">
Roncq </span>
<span class="badge rounded-pill bg-light text-muted border-0 px-3 py-2 small">
+ Métropole de Lille
</span>
</div>
</div>
</div>
<div class="info-item pt-3 border-top">
<h4 class="h6 fw-bold mb-2">Horaires d'ouverture :</h4>
<meta itemprop="openingHours" content="Mo 08:00-20:00, Tu 08:00-20:00, We 08:00-20:00, Th 08:00-20:00, Fr 08:00-20:00, Sa 08:00-20:00, Su 08:00-20:00">
<table class="table table-sm table-borderless small mb-0" aria-label="Horaires d'ouverture du cabinet">
<tbody>
<tr class="">
<td scope="row">Lundi</td>
<td class="text-end">
<span class="">
08:00 - 20:00 </span>
</td>
</tr>
<tr class="">
<td scope="row">Mardi</td>
<td class="text-end">
<span class="">
08:00 - 20:00 </span>
</td>
</tr>
<tr class="">
<td scope="row">Mercredi</td>
<td class="text-end">
<span class="">
08:00 - 20:00 </span>
</td>
</tr>
<tr class="">
<td scope="row">Jeudi</td>
<td class="text-end">
<span class="">
08:00 - 20:00 </span>
</td>
</tr>
<tr class="">
<td scope="row">Vendredi</td>
<td class="text-end">
<span class="">
08:00 - 20:00 </span>
</td>
</tr>
<tr class="">
<td scope="row">Samedi</td>
<td class="text-end">
<span class="">
08:00 - 20:00 </span>
</td>
</tr>
<tr class="text-primary fw-bold">
<td scope="row">Dimanche</td>
<td class="text-end">
<span class="">
08:00 - 20:00 </span>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div class="col-lg-4" data-aos="fade-up" data-aos-delay="200">
<div class="p-4 border rounded shadow-sm bg-white h-100 d-flex flex-column">
<h4 class="h5 mb-4 text-primary fw-bold"><i class="bi bi-envelope me-2"></i>M'envoyer un message</h4>
<form action="" method="post" id="contactForm">
<input type="hidden" name="recaptcha_token" id="recaptcha_token">
<div class="row">
<div class="col-md-6 mb-3">
<label for="contact_nom" class="visually-hidden">Nom</label>
<input type="text" id="contact_nom" name="nom" class="form-control" placeholder="Nom" autocomplete="family-name" required>
</div>
<div class="col-md-6 mb-3">
<label for="contact_prenom" class="visually-hidden">Prénom</label>
<input type="text" id="contact_prenom" name="prenom" class="form-control" placeholder="Prénom" autocomplete="given-name" required>
</div>
</div>
<div class="mb-3">
<label for="contact_email" class="visually-hidden">Email</label>
<input type="email" id="contact_email" name="email" class="form-control" placeholder="Votre email" autocomplete="email" required>
</div>
<div class="mb-3">
<label for="contact_phone" class="visually-hidden">Téléphone</label>
<input type="tel" id="contact_phone" name="phone" class="form-control" placeholder="Téléphone" autocomplete="tel">
</div>
<div class="mb-3">
<label for="contact_message" class="visually-hidden">Message</label>
<textarea id="contact_message" class="form-control" name="message" rows="4" placeholder="Votre message..." required></textarea>
</div>
<button type="submit" name="send_message" id="submitBtnMsg" class="btn btn-primary w-100 shadow-sm py-2">
<span class="btn-content">Envoyer le message <i class="bi bi-send ms-2"></i></span>
</button>
</form>
</div>
</div>
<div class="col-lg-4" data-aos="fade-up" data-aos-delay="300">
<div class="p-4 border rounded shadow-sm bg-white h-100 d-flex flex-column">
<div class="d-flex justify-content-between align-items-center mb-4">
<h4 class="h5 mb-0 text-primary fw-bold">
<i class="bi bi-geo-alt-fill me-2"></i>Localisation
</h4>
<a href="https://www.google.com/maps/search/?api=1&query=Ostéopathe&query_place_id=ChIJC4uxEQApw0cRp4p2jPAqlkw"
target="_blank"
aria-label="Voir le cabinet sur Google Maps (nouvel onglet)"
rel="noopener noreferrer"
class="btn btn-sm btn-outline-primary py-0 px-2"
title="Voir sur Google Maps">
<i class="bi bi-box-arrow-up-right" aria-hidden="true"></i>
</a>
</div>
<div class="flex-grow-1 overflow-hidden rounded-3 shadow-sm border position-relative" style="min-height: 300px;">
<div id="map-placeholder" style="width:100%; height:100%; min-height:300px;">
</div>
</div>
<div class="mt-3">
<a href="https://www.google.com/maps/dir/?api=1&destination=29+Av.+de+la+Marne+59200+Tourcoing&destination_place_id=ChIJC4uxEQApw0cRp4p2jPAqlkw"
target="_blank"
rel="noopener noreferrer"
title="Calculer mon itinéraire vers le cabinet"
class="btn btn-sm w-100" style="background-color: #f1f3f4; color: #333333; border: 1px solid #cccccc;">
<i class="bi bi-signpost-split me-2" aria-hidden="true"></i>Calculer mon itinéraire
</a>
</div>
</div>
</div>
</div>
</section>
</main>
<footer id="footer" class="footer text-center py-4 border-top" role="contentinfo" aria-label="Pied de page">
<div class="container">
<p class="mb-0 text-muted">
© 2026 <strong>Yacine Boughagha</strong> - Ostéopathe D.O. Tourcoing
<span class="mx-2" aria-hidden="true">|</span>
<a href="/mentions-legales" class="text-decoration-none text-muted" title="Consulter les mentions légales">Mentions Légales</a>
</p>
</div>
</footer>
<script src="assets/vendor/bootstrap/js/bootstrap.bundle.min.js" defer></script>
<script src="assets/vendor/aos/aos.js" defer></script>
<script src="assets/vendor/swiper/swiper.min.js" defer></script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Accueil",
"item": "https://www.osteopathe-yacineboughagha.fr/"
}
]
}
</script>
<script>
document.getElementById('rdvForm').addEventListener('submit', function() {
const btn = this.querySelector('button[type="submit"]');
btn.classList.add('btn-loading');
btn.innerHTML = '<span class="spinner-border spinner-border-sm me-2"></span>Envoi en cours...';
});
let recaptchaLoaded = false;
function loadRecaptcha() {
if (recaptchaLoaded) return;
recaptchaLoaded = true;
const script = document.createElement('script');
script.src = 'https://www.google.com/recaptcha/api.js?render=6LeDcYksAAAAAIjj8sjf32XhdYerQtUBL5OoDpmZ';
script.async = true;
document.head.appendChild(script);
}
const contactForm = document.getElementById('contactForm');
if (contactForm) {
contactForm.addEventListener('mouseenter', loadRecaptcha, { once: true });
contactForm.addEventListener('focusin', loadRecaptcha, { once: true });
contactForm.addEventListener('submit', function(e) {
e.preventDefault();
const form = this;
const btn = document.getElementById('submitBtnMsg');
btn.disabled = true;
btn.innerHTML = '<span class="spinner-border spinner-border-sm me-2"></span>Vérification...';
grecaptcha.ready(function() {
grecaptcha.execute('6LeDcYksAAAAAIjj8sjf32XhdYerQtUBL5OoDpmZ', { action: 'contact' }).then(function(token) {
document.getElementById('recaptcha_token').value = token;
// Simule le clic bouton submit pour que send_message soit dans le POST
const hiddenBtn = document.createElement('input');
hiddenBtn.type = 'hidden';
hiddenBtn.name = 'send_message';
hiddenBtn.value = '1';
form.appendChild(hiddenBtn);
form.submit();
}).catch(function() {
btn.disabled = false;
btn.innerHTML = '<span class="btn-content">Envoyer le message <i class="bi bi-send ms-2"></i></span>';
alert('Erreur de vérification, veuillez réessayer.');
});
});
});
}
window.addEventListener('load', function() {
if (typeof AOS !== 'undefined') {
AOS.init({
duration: 400,
once: true,
disable: 'mobile'
});
}
if (typeof Swiper !== 'undefined' && document.querySelector('.init-swiper')) {
new Swiper('.init-swiper', {
loop: true,
autoplay: { delay: 5000 },
slidesPerView: 1,
spaceBetween: 20,
pagination: { el: '.swiper-pagination', clickable: true },
breakpoints: {
768: { slidesPerView: 2 },
1200: { slidesPerView: 3 }
}
});
}
});
// ✅ Définition de initBookingSystem avec locale correcte
function initBookingSystem() {
const calendarInput = document.getElementById('calendrier_pro');
const timeSelect = document.getElementById('time_rdv_select');
if (!calendarInput || !timeSelect || typeof flatpickr === 'undefined') return;
let fullDays = [];
const fp = flatpickr(calendarInput, {
locale: flatpickr.l10ns.fr, // ✅ Référence directe à l'objet locale
minDate: "today",
defaultDate: "2026-03-23",
dateFormat: "Y-m-d",
disableMobile: true,
disable: fullDays,
onChange: function(selectedDates, dateStr) {
updateTimeSlots(dateStr);
}
});
function updateTimeSlots(dateStr) {
timeSelect.innerHTML = '<option value="" disabled selected>Chargement...</option>';
fetch('get_slots.php?date=' + dateStr)
.then(response => response.json())
.then(data => {
timeSelect.innerHTML = '';
if (data.length === 0) {
timeSelect.innerHTML = '<option value="" disabled selected>Aucun créneau disponible</option>';
const todayStr = new Date().toISOString().split('T')[0];
if (dateStr === todayStr && !fullDays.includes(todayStr)) {
fullDays.push(todayStr);
fp.set('disable', fullDays);
}
} else {
const fragment = document.createDocumentFragment();
data.forEach(slot => {
let option = document.createElement('option');
option.value = slot;
option.text = slot;
fragment.appendChild(option);
});
timeSelect.appendChild(fragment);
}
})
.catch(() => {
timeSelect.innerHTML = '<option value="" disabled selected>Erreur réseau</option>';
});
}
}
// ✅ Chargement différé de Flatpickr uniquement quand #appointment est visible
function loadFlatpickrAndInit() {
if (window._flatpickrLoaded) return;
window._flatpickrLoaded = true;
const css = document.createElement('link');
css.rel = 'stylesheet';
css.href = 'https://cdn.jsdelivr.net/npm/flatpickr/dist/flatpickr.min.css';
document.head.appendChild(css);
const script = document.createElement('script');
script.src = 'https://cdn.jsdelivr.net/npm/flatpickr';
script.onload = function() {
const locale = document.createElement('script');
locale.src = 'https://cdn.jsdelivr.net/npm/flatpickr/dist/l10n/fr.js';
locale.onload = function() {
initBookingSystem(); // ✅ Appelé uniquement après que tout est chargé
};
document.head.appendChild(locale);
};
document.head.appendChild(script);
}
const appointmentSection = document.getElementById('appointment');
if (appointmentSection) {
const observer = new IntersectionObserver(function(entries) {
if (entries[0].isIntersecting) {
loadFlatpickrAndInit();
observer.disconnect();
}
}, { rootMargin: '200px' });
observer.observe(appointmentSection);
}
// ✅ Navigation mobile
document.addEventListener('DOMContentLoaded', function() {
const mobileNavToggleBtn = document.querySelector('.mobile-nav-toggle');
function mobileNavToogle() {
document.querySelector('body').classList.toggle('mobile-nav-active');
const icon = mobileNavToggleBtn.querySelector('span');
icon.classList.toggle('bi-list');
icon.classList.toggle('bi-x');
mobileNavToggleBtn.setAttribute('aria-expanded',
document.querySelector('body').classList.contains('mobile-nav-active') ? 'true' : 'false'
);
}
if (mobileNavToggleBtn) {
mobileNavToggleBtn.addEventListener('click', mobileNavToogle);
}
document.querySelectorAll('#navmenu a').forEach(navmenu => {
navmenu.addEventListener('click', () => {
if (document.querySelector('.mobile-nav-active')) {
mobileNavToogle();
}
});
});
});
// ✅ Lazy-load Google Maps
const mapPlaceholder = document.getElementById('map-placeholder');
if (mapPlaceholder) {
const mapObserver = new IntersectionObserver(function(entries) {
if (entries[0].isIntersecting) {
const iframe = document.createElement('iframe');
iframe.style.cssText = 'border:0; width:100%; height:100%; min-height:300px; display:block;';
iframe.src = 'https://www.google.com/maps/embed/v1/place?key=AIzaSyBt8pdDIFz0VvHs1EPc0cxq4SwNcJ2N53o&q=place_id:ChIJC4uxEQApw0cRp4p2jPAqlkw&language=fr';
iframe.allowFullscreen = true;
iframe.title = 'Carte Google Maps - Cabinet ostéopathie Tourcoing';
iframe.referrerPolicy = 'no-referrer-when-downgrade';
mapPlaceholder.appendChild(iframe);
mapObserver.disconnect();
}
}, { rootMargin: '200px' });
mapObserver.observe(mapPlaceholder);
}
</script>
<div class="mobile-cta-floating d-md-none">
<a href="tel:+33669452258" class="cta-float call" aria-label="Appeler le cabinet de Yacine Boughagha" title="Appeler le cabinet">
<span><span role="img" aria-hidden="true">📞</span> Appeler</span>
</a>
<a href="#appointment" class="cta-float book" aria-label="Prendre un rendez-vous en ligne" title="Prendre un rendez-vous en ligne">
<span><span role="img" aria-hidden="true">📅</span> Prendre RDV</span>
</a>
</div>
<script>
window.addEventListener('load', function() {
setTimeout(function() {
var s = document.createElement('script');
s.src = 'https://www.googletagmanager.com/gtag/js?id=AW-17941726715';
s.async = true;
s.onload = function() {
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'AW-17941726715');
// Conversion uniquement sur les pages pertinentes
// gtag('event', 'conversion', {'send_to': 'AW-17941726715/QJ5iCKyRwIwcEPuLpOtC'});
};
document.head.appendChild(s);
}, 2000); // 2s après le load
});
</script>
</body>
</html>