<!DOCTYPE html><html lang="fr"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Location Toilette Chantier Chalon-sur-Saône | WC BTP 24/48h</title><meta name="description" content="Location de WC et cabines de chantier à Chalon-sur-Saône et Grand Chalon (71). Sanitaires autonomes conformes Code du Travail. Vidange & entretien inclus !"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><!-- Polices du thème actif (skill-16-style-and-theme) — preconnect pour limiter la latence
de premier octet, chargement asynchrone standard Google Fonts. --><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Barlow%20Condensed:wght@400;600;700&family=Inter:wght@400;600;700&display=swap"><!-- Thème du moteur visuel générique (skill-13-brand-identity) — variables CSS globales
consommées par src/components/ui/*. Valeurs internes (sites/{domain}.json ou défauts
codés en dur), jamais une donnée utilisateur à l'exécution : set:html sans risque
d'injection ici, même principe que le JSON-LD plus bas. --><style>:root{
--primary:oklch(0.38 0.12 240);
--primary-hover:oklch(0.44 0.12 240);
--primary-active:oklch(0.30 0.12 240);
--secondary:oklch(0.45 0.02 240);
--accent:oklch(0.55 0.19 55);
--bg:oklch(0.97 0.005 240);
--surface:oklch(1 0 0);
--surface-elevated:oklch(0.99 0.003 240);
--text:oklch(0.18 0.01 240);
--text-muted:oklch(0.45 0.01 240);
--text-on-primary:oklch(0.98 0 0);
--font-heading:'Barlow Condensed', ui-sans-serif, system-ui, sans-serif;
--font-body:'Inter', ui-sans-serif, system-ui, sans-serif;
--text-h1:clamp(2rem, 1.6rem + 2vw, 4rem);
--text-h2:clamp(1.5rem, 1.3rem + 1vw, 2.5rem);
--text-h3:clamp(1.25rem, 1.15rem + 0.5vw, 1.75rem);
--text-body:clamp(1rem, 0.975rem + 0.125vw, 1.125rem);
--radius:6px;
--shadow-sm:0 1px 2px oklch(0.2 0.02 240 / 0.08);
--shadow-md:0 4px 12px oklch(0.2 0.02 240 / 0.12);
--shadow-lg:0 12px 32px oklch(0.2 0.02 240 / 0.18);
--motion-fast:120ms;
--motion-base:200ms;
--motion-slow:350ms;
--ease-standard:cubic-bezier(0.4, 0, 0.2, 1);
--ease-emphasized:cubic-bezier(0.2, 0, 0, 1);
}
body{font-family:var(--font-body);}
h1,h2,h3{font-family:var(--font-heading);}
h1{font-size:var(--text-h1);}
h2{font-size:var(--text-h2);}
h3{font-size:var(--text-h3);}</style><!-- Canonical + hreflang FR/EN (voir skill-01-seo-strategy pour la règle des slugs) --><link rel="canonical" href="https://location-toilette-chantier-chalon.fr/"><link rel="alternate" hreflang="fr" href="https://location-toilette-chantier-chalon.fr/"><link rel="alternate" hreflang="x-default" href="https://location-toilette-chantier-chalon.fr/"><!-- Open Graph --><meta property="og:type" content="website"><meta property="og:title" content="Location Toilette Chantier Chalon-sur-Saône | WC BTP 24/48h"><meta property="og:description" content="Location de WC et cabines de chantier à Chalon-sur-Saône et Grand Chalon (71). Sanitaires autonomes conformes Code du Travail. Vidange & entretien inclus !"><meta property="og:url" content="https://location-toilette-chantier-chalon.fr/"><meta property="og:locale" content="fr_FR"><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="Location Toilette Chantier Chalon-sur-Saône | WC BTP 24/48h"><meta name="twitter:description" content="Location de WC et cabines de chantier à Chalon-sur-Saône et Grand Chalon (71). Sanitaires autonomes conformes Code du Travail. Vidange & entretien inclus !"><!-- Google Consent Mode v2 — consentement par défaut refusé, AVANT tout tag GA4 (skill-08-image-gdpr) --><script>
window.dataLayer = window.dataLayer || [];
function gtag() { window.dataLayer.push(arguments); }
gtag('consent', 'default', {
ad_storage: 'denied',
analytics_storage: 'denied',
ad_user_data: 'denied',
ad_personalization: 'denied',
});
</script><!-- Google tag (gtag.js) — injecté TOUJOURS et uniquement si PUBLIC_GA4_MEASUREMENT_ID est
définie ET commence par "G-" (voir skill-09-google-provisioning / skill-14-ui-assembly,
"Vérification d'injection GA4 dans le <head>"). Toujours après le bloc Consent Mode v2
ci-dessus. `set:html` (au lieu de `define:vars`) : injection du JS 100% en brut dans le
HTML final, sans passer par une réécriture/directive de compilation Astro — voir le bug
constaté avec `define:vars` qui supprimait silencieusement l'attribut `data-ga-id` posé
sur le même tag ; `set:html` élimine cette classe de surprise. Le bloc redéfinit
dataLayer/gtag() en local (idempotent avec le bloc Consent Mode v2 ci-dessus) pour rendre
ce script totalement autonome, indépendant de tout réordonnancement futur. --><script async data-ga-id="G-BZTFPZST78" src="https://www.googletagmanager.com/gtag/js?id=G-BZTFPZST78"></script><script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-BZTFPZST78', { send_page_view: true });
</script><!-- Schema.org JSON-LD (voir skill-04-content-cocon) --><script type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https://location-toilette-chantier-chalon.fr/"}]}</script><script type="application/ld+json">{"@context":"https://schema.org","@type":"ProfessionalService","name":"Location Toilette Chantier Chalon","description":"Location de WC et cabines de chantier à Chalon-sur-Saône et Grand Chalon (71). Sanitaires autonomes conformes Code du Travail. Vidange & entretien inclus !","serviceType":"Location de toilettes et cabines sanitaires de chantier","areaServed":["Chalon-sur-Saône","71100","Grand Chalon","Saône-et-Loire"],"provider":{"@type":"LocalBusiness","name":"Chalon Sanitaires BTP","address":{"@type":"PostalAddress","addressLocality":"Chalon-sur-Saône","postalCode":"71100","addressRegion":"Bourgogne-Franche-Comté","addressCountry":"FR"}}}</script><link rel="stylesheet" href="/_astro/Layout.Bbtuxho2.css"></head><body><main><header class="w-full bg-[var(--surface)] border-b border-black/10 sticky top-0 z-40"><!-- Bandeau coordonnées (desktop uniquement) --><div class="hidden md:flex items-center justify-end gap-6 max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-2 text-xs text-[var(--text)]/70 border-b border-black/5"><span>Chalon-sur-Saône, 71100</span></div><div class="max-w-7xl mx-auto flex items-center justify-between gap-4 px-4 sm:px-6 lg:px-8 py-4"><a href="/" class="flex items-center gap-2 shrink-0" aria-label="Chalon Sanitaires BTP"><svg viewbox="0 0 32 32" class="h-9 w-9 shrink-0" role="img" aria-label="Chalon Sanitaires BTP"><rect width="32" height="32" rx="6" fill="#00477b"></rect><path d="M8 20c0-6.6 3.6-11 8-11s8 4.4 8 11" stroke="#ffffff" stroke-width="2.6" stroke-linecap="round" fill="none"></path><rect x="6" y="20" width="20" height="3.2" rx="1.6" fill="#ffffff"></rect></svg><span class="font-bold text-[var(--text)] hidden sm:inline">Chalon Sanitaires BTP</span></a><nav class="hidden md:flex items-center gap-6" aria-label="Navigation principale"><a href="#services" class="text-sm font-medium text-[var(--text)]/80 hover:text-[var(--primary)] transition-colors">Services</a><a href="#avis" class="text-sm font-medium text-[var(--text)]/80 hover:text-[var(--primary)] transition-colors">Avis clients</a><a href="#zones" class="text-sm font-medium text-[var(--text)]/80 hover:text-[var(--primary)] transition-colors">Zone d'intervention</a><a href="#faq-gold" class="text-sm font-medium text-[var(--text)]/80 hover:text-[var(--primary)] transition-colors">FAQ</a><a href="/contact/" class="text-sm font-medium text-[var(--text)]/80 hover:text-[var(--primary)] transition-colors">Contact</a></nav><div class="flex items-center gap-2"><a href="#contact" class="hidden sm:inline-flex items-center gap-2 rounded-lg bg-[var(--primary)] px-5 py-2.5 text-sm font-semibold text-[var(--text-on-primary)] hover:opacity-90 transition-opacity whitespace-nowrap">Devis gratuit</a><button id="header-gold-toggle" type="button" aria-expanded="false" aria-controls="header-gold-drawer" class="md:hidden inline-flex items-center justify-center h-10 w-10 rounded-lg border border-black/10 text-[var(--text)]"><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="22" height="22" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewbox="0 0 24 24" aria-hidden="true" class="lucide lucide-menu header-gold-icon-open"><path d="M4 5h16"></path><path d="M4 12h16"></path><path d="M4 19h16"></path></svg><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="22" height="22" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewbox="0 0 24 24" aria-hidden="true" class="lucide lucide-x header-gold-icon-close hidden"><path d="M18 6 6 18"></path><path d="m6 6 12 12"></path></svg><span class="sr-only">Ouvrir le menu</span></button></div></div><!-- Tiroir mobile --><div id="header-gold-drawer" class="w-full md:hidden hidden border-t border-black/10 bg-[var(--surface)]"><nav class="flex flex-col gap-1 px-4 sm:px-6 lg:px-8 py-4" aria-label="Navigation mobile"><a href="#services" class="py-2 text-sm font-medium text-[var(--text)]/80 hover:text-[var(--primary)] transition-colors">Services</a><a href="#avis" class="py-2 text-sm font-medium text-[var(--text)]/80 hover:text-[var(--primary)] transition-colors">Avis clients</a><a href="#zones" class="py-2 text-sm font-medium text-[var(--text)]/80 hover:text-[var(--primary)] transition-colors">Zone d'intervention</a><a href="#faq-gold" class="py-2 text-sm font-medium text-[var(--text)]/80 hover:text-[var(--primary)] transition-colors">FAQ</a><a href="/contact/" class="py-2 text-sm font-medium text-[var(--text)]/80 hover:text-[var(--primary)] transition-colors">Contact</a><a href="#contact" class="mt-2 inline-flex items-center justify-center gap-2 rounded-lg bg-[var(--primary)] px-5 py-2.5 text-sm font-semibold text-[var(--text-on-primary)]">Devis gratuit</a></nav></div></header><script>
(function () {
const toggle = document.getElementById('header-gold-toggle');
const drawer = document.getElementById('header-gold-drawer');
if (!toggle || !drawer) return;
const iconOpen = toggle.querySelector('.header-gold-icon-open');
const iconClose = toggle.querySelector('.header-gold-icon-close');
function setOpen(open) {
toggle.setAttribute('aria-expanded', String(open));
drawer.classList.toggle('hidden', !open);
iconOpen?.classList.toggle('hidden', open);
iconClose?.classList.toggle('hidden', !open);
}
toggle.addEventListener('click', () => {
setOpen(toggle.getAttribute('aria-expanded') !== 'true');
});
document.addEventListener('keydown', (event) => {
if (event.key === 'Escape') setOpen(false);
});
})();
</script><section class="w-full bg-[var(--bg)]"><div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-12 md:py-20 grid grid-cols-1 lg:grid-cols-2 gap-8 items-center"><div class="flex flex-col gap-5"><ul class="flex flex-wrap gap-2 list-none p-0 m-0"><li class="inline-flex items-center rounded-full bg-[var(--surface)] px-3 py-1 text-xs font-semibold text-[var(--primary)] border border-[var(--primary)]/20">Livraison 24/48h</li><li class="inline-flex items-center rounded-full bg-[var(--surface)] px-3 py-1 text-xs font-semibold text-[var(--primary)] border border-[var(--primary)]/20">Entretien Hebdo Inclus</li><li class="inline-flex items-center rounded-full bg-[var(--surface)] px-3 py-1 text-xs font-semibold text-[var(--primary)] border border-[var(--primary)]/20">Conforme Art. R4228-10</li></ul><h1 class="text-3xl md:text-5xl font-bold text-[var(--text)] leading-tight">Location Toilette de Chantier à Chalon-sur-Saône (71)</h1><p class="text-lg text-[var(--text)]/80 max-w-xl">▸ Dépôt Logistique Saône-et-Loire — Chalon-sur-Saône (71). Solution sanitaire autonome pour chantiers BTP, déconstruction et rénovation sur Chalon-sur-Saône et son agglomération. Livraison sous 24/48h.</p><div class="flex flex-wrap gap-3 mt-2"><a href="#contact" class="inline-flex items-center gap-2 rounded-lg bg-[var(--primary)] px-6 py-3 font-semibold text-[var(--text-on-primary)] hover:opacity-90 transition-opacity">Devis gratuit</a><a href="#services" class="inline-flex items-center gap-2 rounded-lg border border-[var(--primary)] px-6 py-3 font-semibold text-[var(--primary)] hover:bg-[var(--primary)]/5 transition-colors">Voir nos services</a></div></div><div class="relative rounded-2xl overflow-hidden aspect-[4/3] lg:aspect-square bg-[var(--surface)] border border-black/10"><img src="https://images.unsplash.com/photo-1771582964775-cc2e5889bd47?q=80&w=1200&auto=format&fit=crop" srcset="https://images.unsplash.com/photo-1771582964775-cc2e5889bd47?q=80&w=480&auto=format&fit=crop 480w, https://images.unsplash.com/photo-1771582964775-cc2e5889bd47?q=80&w=768&auto=format&fit=crop 768w, https://images.unsplash.com/photo-1771582964775-cc2e5889bd47?q=80&w=1200&auto=format&fit=crop 1200w, https://images.unsplash.com/photo-1771582964775-cc2e5889bd47?q=80&w=1600&auto=format&fit=crop 1600w" sizes="(min-width: 1024px) 592px, 100vw" alt="Chantier BTP avec cabine sanitaire de chantier installée à Chalon-sur-Saône" decoding="async" class="absolute inset-0 h-full w-full object-cover" fetchpriority="high"></div></div></section><section class="w-full py-8 bg-[var(--surface)] border-y border-black/10"><ul class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 grid gap-6 grid-cols-2 md:grid-cols-4 list-none p-0 m-0"><li class="flex flex-col items-center gap-2 text-center"><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="32" height="32" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewbox="0 0 24 24" aria-hidden="true" class="lucide lucide-truck text-[var(--primary)]"><path d="M14 18V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v11a1 1 0 0 0 1 1h2"></path><path d="M15 18H9"></path><path d="M19 18h2a1 1 0 0 0 1-1v-3.65a1 1 0 0 0-.22-.624l-3.48-4.35A1 1 0 0 0 17.52 8H14"></path><circle cx="17" cy="18" r="2"></circle><circle cx="7" cy="18" r="2"></circle></svg><span class="text-xs font-semibold text-[var(--text)]/80">Livraison 24/48h</span></li><li class="flex flex-col items-center gap-2 text-center"><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="32" height="32" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewbox="0 0 24 24" aria-hidden="true" class="lucide lucide-droplets text-[var(--primary)]"><path d="M7 16.3c2.2 0 4-1.83 4-4.05 0-1.16-.57-2.26-1.71-3.19S7.29 6.75 7 5.3c-.29 1.45-1.14 2.84-2.29 3.76S3 11.1 3 12.25c0 2.22 1.8 4.05 4 4.05z"></path><path d="M12.56 6.6A10.97 10.97 0 0 0 14 3.02c.5 2.5 2 4.9 4 6.5s3 3.5 3 5.5a6.98 6.98 0 0 1-11.91 4.97"></path></svg><span class="text-xs font-semibold text-[var(--text)]/80">Entretien Hebdo Inclus</span></li><li class="flex flex-col items-center gap-2 text-center"><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="32" height="32" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewbox="0 0 24 24" aria-hidden="true" class="lucide lucide-shield-check text-[var(--primary)]"><path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"></path><path d="m9 12 2 2 4-4"></path></svg><span class="text-xs font-semibold text-[var(--text)]/80">Conforme Art. R4228-10</span></li><li class="flex flex-col items-center gap-2 text-center"><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="32" height="32" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewbox="0 0 24 24" aria-hidden="true" class="lucide lucide-clock text-[var(--primary)]"><path d="M12 6v6l4 2"></path><circle cx="12" cy="12" r="10"></circle></svg><span class="text-xs font-semibold text-[var(--text)]/80">Astreinte 7j/7</span></li></ul></section><section class="py-16"><div class="max-w-5xl mx-auto px-4 sm:px-6 lg:px-8"><h2 class="text-2xl md:text-3xl font-bold text-[var(--text)] mb-3">Tarifs et Devis de Location de WC de Chantier à Chalon-sur-Saône</h2><p class="text-sm text-[var(--text)]/80 leading-relaxed mb-10 max-w-3xl">Fourchettes indicatives pour un chantier sur le Grand Chalon — chiffrage exact transmis sous 2h après votre demande, en fonction de la durée, de l'effectif et de l'accès au site.<a href="/contact/" class="underline hover:text-amber-500">Demander un chiffrage express sur Chalon</a>.</p><h3 class="text-xl font-bold text-[var(--text)] mb-4">Forfait Tout Compris : Cabine Autonome, Livraison et Vidange Hebdomadaire</h3><div class="overflow-x-auto rounded-xl border border-black/10 mb-4"><table class="w-full text-sm border-collapse"><thead><tr class="bg-[var(--surface)] text-left"><th class="p-4 font-semibold text-[var(--text)]">Modèle</th><th class="p-4 font-semibold text-[var(--text)]">Tarif indicatif</th><th class="p-4 font-semibold text-[var(--text)]">Inclus</th></tr></thead><tbody><tr class="border-t border-black/10"><td class="p-4 font-semibold text-[var(--text)]">Cabine sanitaire autonome (chimique)</td><td class="p-4 text-[var(--text)]/80">Dès 49€ HT / semaine</td><td class="p-4 text-[var(--text)]/80">Livraison + Pose + Vidange hebdo + Reprise</td></tr><tr class="border-t border-black/10 bg-[var(--surface)]"><td class="p-4 font-semibold text-[var(--text)]">WC de chantier raccordable à l'égout</td><td class="p-4 text-[var(--text)]/80">Sur devis (selon raccordement)</td><td class="p-4 text-[var(--text)]/80">Livraison + Pose + Raccordement + Entretien + Reprise</td></tr></tbody></table></div><p class="inline-flex items-center gap-2 rounded-lg bg-[var(--accent)]/10 px-4 py-3 text-sm font-semibold text-[var(--accent)] mb-10">Forfait tout compris — aucun poste caché ajouté en cours de location.</p><h3 class="text-xl font-bold text-[var(--text)] mb-4">Facteurs de Prix : Location Courte vs Longue Durée sur le Grand Chalon</h3><ul class="grid gap-3 sm:grid-cols-3 list-none p-0 m-0"><li class="rounded-lg border border-black/10 bg-[var(--bg)] p-4"><p class="text-xs font-semibold text-[var(--text)]/60 uppercase tracking-wide mb-1">Durée du chantier</p><p class="text-sm text-[var(--text)]/80">Tarif dégressif au-delà d'un mois de location, avec facturation hebdomadaire simplifiée.</p></li><li class="rounded-lg border border-black/10 bg-[var(--bg)] p-4"><p class="text-xs font-semibold text-[var(--text)]/60 uppercase tracking-wide mb-1">Effectif sur site</p><p class="text-sm text-[var(--text)]/80">Le nombre de cabines et la fréquence de vidange dépendent de l'effectif simultané (voir grille R4228-10 ci-dessous).</p></li><li class="rounded-lg border border-black/10 bg-[var(--bg)] p-4"><p class="text-xs font-semibold text-[var(--text)]/60 uppercase tracking-wide mb-1">Accès au site</p><p class="text-sm text-[var(--text)]/80">Un accès contraint (centre-ville, voirie étroite) peut ajuster le délai et les modalités de livraison.</p></li></ul></div></section><div id="services"><section class="py-16 bg-[var(--surface)]"><div class="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8"><h2 class="text-2xl md:text-3xl font-bold text-[var(--text)] text-center mb-10">Nos Modèles de Sanitaires et WC Mobiles BTP en Saône-et-Loire</h2><p class="text-sm text-[var(--text)]/70 text-center max-w-2xl mx-auto -mt-6 mb-10">Besoin d'aide pour choisir ? Consultez notre guide <a href="/sanitaire-de-chantier/" class="underline hover:text-amber-500">sanitaire de chantier</a> comparant les équipements disponibles.</p><div class="grid gap-8 lg:grid-cols-3"><article class="rounded-xl border border-black/10 bg-[var(--bg)] overflow-hidden"><div class="relative aspect-[4/3] bg-[var(--surface)]"><img src="https://images.unsplash.com/photo-1701637783855-da67ab363cfa?q=80&w=1200&auto=format&fit=crop" alt="WC chimique de chantier autonome, sans raccordement réseau" loading="lazy" decoding="async" class="absolute inset-0 h-full w-full object-cover"></div><div class="p-5"><h3 class="text-lg font-bold text-[var(--text)] mb-2">Cabine Sanitaire Autonome Chimique</h3><p class="text-xs font-semibold text-[var(--primary)] mb-2">Chantiers sans arrivée d'eau</p><p class="text-sm text-[var(--text)]/80 mb-3">Réserve d'eau propre embarquée, aucun raccordement réseau nécessaire. Idéale pour un démarrage de chantier ou un site isolé du Grand Chalon.</p><a href="/services/wc-chimique-chantier/" class="text-sm font-semibold text-[var(--primary)] hover:underline">WC chimique de chantier</a></div></article><article class="rounded-xl border border-black/10 bg-[var(--bg)] overflow-hidden"><div class="relative aspect-[4/3] bg-[var(--surface)]"><img src="https://images.unsplash.com/photo-1780326412297-343392abe373?q=80&w=1200&auto=format&fit=crop" alt="Plusieurs cabines sanitaires de chantier installées sur un site en longue durée" loading="lazy" decoding="async" class="absolute inset-0 h-full w-full object-cover"></div><div class="p-5"><h3 class="text-lg font-bold text-[var(--text)] mb-2">WC de Chantier Raccordable à l'Égout</h3><p class="text-xs font-semibold text-[var(--primary)] mb-2">Chantiers longue durée</p><p class="text-sm text-[var(--text)]/80">Raccordement direct au réseau d'assainissement : solution pensée pour les chantiers de plusieurs mois avec effectif stable, sans contrainte de vidange fréquente.</p></div></article><article class="rounded-xl border border-black/10 bg-[var(--bg)] overflow-hidden"><div class="relative aspect-[4/3] bg-[var(--bg)] overflow-hidden" role="img" aria-label="Cabine sanitaire PMR et station lave-mains de chantier à Chalon-sur-Saône"><svg viewbox="0 0 400 300" xmlns="http://www.w3.org/2000/svg" class="absolute inset-0 h-full w-full" preserveaspectratio="xMidYMid meet"><!-- Trame de fond "plan technique" --><g class="stroke-slate-400" stroke-width="0.5" opacity="0.15"><line x1="0" y1="0" x2="0" y2="300"></line><line x1="25" y1="0" x2="25" y2="300"></line><line x1="50" y1="0" x2="50" y2="300"></line><line x1="75" y1="0" x2="75" y2="300"></line><line x1="100" y1="0" x2="100" y2="300"></line><line x1="125" y1="0" x2="125" y2="300"></line><line x1="150" y1="0" x2="150" y2="300"></line><line x1="175" y1="0" x2="175" y2="300"></line><line x1="200" y1="0" x2="200" y2="300"></line><line x1="225" y1="0" x2="225" y2="300"></line><line x1="250" y1="0" x2="250" y2="300"></line><line x1="275" y1="0" x2="275" y2="300"></line><line x1="300" y1="0" x2="300" y2="300"></line><line x1="325" y1="0" x2="325" y2="300"></line><line x1="350" y1="0" x2="350" y2="300"></line><line x1="375" y1="0" x2="375" y2="300"></line><line x1="400" y1="0" x2="400" y2="300"></line><line x1="0" y1="0" x2="400" y2="0"></line><line x1="0" y1="25" x2="400" y2="25"></line><line x1="0" y1="50" x2="400" y2="50"></line><line x1="0" y1="75" x2="400" y2="75"></line><line x1="0" y1="100" x2="400" y2="100"></line><line x1="0" y1="125" x2="400" y2="125"></line><line x1="0" y1="150" x2="400" y2="150"></line><line x1="0" y1="175" x2="400" y2="175"></line><line x1="0" y1="200" x2="400" y2="200"></line><line x1="0" y1="225" x2="400" y2="225"></line><line x1="0" y1="250" x2="400" y2="250"></line><line x1="0" y1="275" x2="400" y2="275"></line><line x1="0" y1="300" x2="400" y2="300"></line></g><!-- Cloisons de la cabine PMR, ouverture de porte ménagée sur le mur bas --><g class="stroke-slate-700" stroke-width="2.5" fill="none" stroke-linecap="round"><line x1="40" y1="40" x2="190" y2="40"></line><line x1="190" y1="40" x2="190" y2="230"></line><line x1="40" y1="230" x2="40" y2="40"></line><line x1="40" y1="230" x2="150" y2="230"></line><line x1="185" y1="230" x2="190" y2="230"></line></g><!-- Porte (vantail + arc d'ouverture) --><g class="stroke-amber-500" stroke-width="2" fill="none"><line x1="150" y1="230" x2="150" y2="195" stroke-dasharray="0"></line><path d="M 150 195 A 35 35 0 0 1 185 230" stroke-dasharray="4 3"></path></g><!-- Cercle de giration PMR (Ø 150 cm) --><circle cx="115" cy="140" r="55" class="stroke-amber-500" stroke-width="1.5" stroke-dasharray="5 4" fill="none" opacity="0.8"></circle><line x1="115" y1="140" x2="115" y2="85" class="stroke-amber-500" stroke-width="1" opacity="0.6"></line><text x="119" y="112" class="fill-amber-600" font-size="9" font-weight="600">Ø 150 cm</text><!-- Barre d'appui PMR --><g class="stroke-amber-500" stroke-width="4" stroke-linecap="round"><line x1="55" y1="90" x2="55" y2="140"></line></g><circle cx="55" cy="90" r="2.5" class="fill-amber-500"></circle><circle cx="55" cy="140" r="2.5" class="fill-amber-500"></circle><!-- Pictogramme WC --><g class="stroke-slate-600 fill-[var(--surface)]" stroke-width="1.5"><rect x="152" y="52" width="20" height="11" rx="2"></rect><ellipse cx="162" cy="76" rx="15" ry="11"></ellipse></g><!-- Module lave-mains autonome --><g class="stroke-slate-700" stroke-width="2" fill="none"><rect x="230" y="110" width="110" height="90" rx="4" class="fill-[var(--bg)]"></rect></g><ellipse cx="285" cy="118" rx="32" ry="12" class="stroke-slate-600 fill-[var(--surface)]" stroke-width="1.5"></ellipse><line x1="285" y1="95" x2="285" y2="113" class="stroke-slate-700" stroke-width="3" stroke-linecap="round"></line><circle cx="285" cy="95" r="4" class="fill-amber-500"></circle><path d="M 293 100 q 4 5 0 9 q -4 -4 0 -9 Z" class="fill-amber-400" opacity="0.85"></path><!-- Cheminement de liaison cabine <-> lave-mains --><path d="M 188 224 Q 210 200 232 155" class="stroke-slate-400" stroke-width="1.5" stroke-dasharray="3 3" fill="none"></path><!-- Cotes --><g class="stroke-slate-500" stroke-width="1"><line x1="40" y1="248" x2="190" y2="248"></line><line x1="40" y1="243" x2="40" y2="253"></line><line x1="190" y1="243" x2="190" y2="253"></line></g><text x="115" y="264" text-anchor="middle" class="fill-slate-500" font-size="9" font-weight="500">150 cm</text></svg><span class="absolute top-3 left-3 flex items-center justify-center h-8 w-8 rounded-full bg-amber-500 text-white shadow-sm"><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="16" height="16" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewbox="0 0 24 24" aria-hidden="true" class="lucide lucide-accessibility"><circle cx="16" cy="4" r="1"></circle><path d="m18 19 1-7-6 1"></path><path d="m5 8 3-3 5.5 3-2.36 3.5"></path><path d="M4.24 14.5a5 5 0 0 0 6.88 6"></path><path d="M13.76 17.5a5 5 0 0 0-6.88-6"></path></svg></span><span class="absolute top-3 right-3 flex items-center justify-center h-8 w-8 rounded-full bg-slate-700 text-white shadow-sm"><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="16" height="16" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewbox="0 0 24 24" aria-hidden="true" class="lucide lucide-droplets"><path d="M7 16.3c2.2 0 4-1.83 4-4.05 0-1.16-.57-2.26-1.71-3.19S7.29 6.75 7 5.3c-.29 1.45-1.14 2.84-2.29 3.76S3 11.1 3 12.25c0 2.22 1.8 4.05 4 4.05z"></path><path d="M12.56 6.6A10.97 10.97 0 0 0 14 3.02c.5 2.5 2 4.9 4 6.5s3 3.5 3 5.5a6.98 6.98 0 0 1-11.91 4.97"></path></svg></span></div><div class="p-5"><h3 class="text-lg font-bold text-[var(--text)] mb-2">Cabine PMR Chantier & Station Lave-Mains Autonome</h3><p class="text-xs font-semibold text-[var(--primary)] mb-2">Accès élargi + point d'eau conforme</p><p class="text-sm text-[var(--text)]/80 mb-3">Cabine PMR aux normes d'accessibilité et station lave-mains autonome, seule ou en complément d'une cabine standard — réponse directe à l'obligation d'hygiène de l'article R4228-10.</p><div class="flex flex-wrap gap-x-4 gap-y-1"><a href="/services/cabine-pmr-chantier/" class="text-sm font-semibold text-[var(--primary)] hover:underline">Cabine PMR</a><a href="/services/station-lave-mains/" class="text-sm font-semibold text-[var(--primary)] hover:underline">Station lave-mains</a></div></div></article></div><p class="text-center text-sm text-[var(--text)]/70 mt-8">Vous organisez un événement ?<a href="/services/sanitaires-evenementiel/" class="font-semibold text-[var(--primary)] hover:underline">Découvrez nos sanitaires événementiels</a></p></div></section></div><section class="py-16"><div class="max-w-5xl mx-auto px-4 sm:px-6 lg:px-8"><h2 class="text-2xl md:text-3xl font-bold text-[var(--text)] mb-10">Service Logistique BTP : Livraison 24/48h et Entretien à Chalon (71)</h2><div class="grid gap-8 md:grid-cols-2 mb-10"><div><h3 class="text-xl font-bold text-[var(--text)] mb-3">Nettoyage Hebdomadaire et Pompage des Effluents dans le 71</h3><p class="text-sm text-[var(--text)]/80 leading-relaxed">Passage hebdomadaire pour le pompage des effluents et le nettoyage haute pression de la cabine, réalisé par nos propres équipes sur l'ensemble de la Saône-et-Loire — jamais sous-traité, jamais facturé en supplément du forfait initial.</p></div><div><h3 class="text-xl font-bold text-[var(--text)] mb-3">Traçabilité Sanitaire et Traitement en Station d'Épuration Agréée</h3><p class="text-sm text-[var(--text)]/80 leading-relaxed">Les effluents collectés sont systématiquement traités en station d'épuration agréée de Saône-et-Loire, avec des produits désinfectants biodégradables et un réapprovisionnement automatique en papier et gel hydroalcoolique à chaque passage.</p></div></div><ul class="grid gap-3 sm:grid-cols-2 lg:grid-cols-4 list-none p-0 m-0"><li class="rounded-lg border border-black/10 bg-[var(--surface)] p-4"><p class="text-xs font-semibold text-[var(--text)]/60 uppercase tracking-wide mb-1">Livraison</p><p class="text-sm text-[var(--text)]/80">Transport et dépose sur site sous 24h à 48h chrono sur le Grand Chalon.</p></li><li class="rounded-lg border border-black/10 bg-[var(--surface)] p-4"><p class="text-xs font-semibold text-[var(--text)]/60 uppercase tracking-wide mb-1">Installation</p><p class="text-sm text-[var(--text)]/80">Mise en service immédiate à la livraison, cabine prête à l’usage.</p></li><li class="rounded-lg border border-black/10 bg-[var(--surface)] p-4"><p class="text-xs font-semibold text-[var(--text)]/60 uppercase tracking-wide mb-1">Vidange</p><p class="text-sm text-[var(--text)]/80">Pompage et nettoyage haute pression hebdomadaires inclus, sans surcoût.</p></li><li class="rounded-lg border border-black/10 bg-[var(--surface)] p-4"><p class="text-xs font-semibold text-[var(--text)]/60 uppercase tracking-wide mb-1">Reprise</p><p class="text-sm text-[var(--text)]/80">Enlèvement de la cabine en fin de chantier, sans frais additionnel.</p></li></ul></div></section><section class="py-16 bg-[var(--surface)]"><div class="max-w-5xl mx-auto px-4 sm:px-6 lg:px-8"><h2 class="text-2xl md:text-3xl font-bold text-[var(--text)] mb-10">Réglementation Code du Travail : Combien de WC de Chantier Prévoir ?</h2><h3 class="text-xl font-bold text-[var(--text)] mb-3">Obligations Légales du Chef d'Entreprise BTP (Article R4228-10)</h3><p class="text-sm text-[var(--text)]/80 leading-relaxed mb-8 max-w-3xl"><a href="https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000018531982" target="_blank" rel="noopener noreferrer" class="underline hover:text-amber-500">L'article R4228-10 du Code du Travail</a> impose la mise à disposition de cabinets d'aisance sur tout lieu de travail, à raison d'au moins un cabinet pour vingt personnes présentes simultanément (effectif maximal atteint au même moment). Cette obligation s'applique au chef d'entreprise, quelle que soit la taille du chantier.</p><h3 class="text-xl font-bold text-[var(--text)] mb-4">Grille de Dimensionnement Selon l'Effectif de Vos Équipes</h3><div class="overflow-x-auto rounded-xl border border-black/10 mb-6"><table class="w-full text-sm border-collapse"><thead><tr class="bg-[var(--bg)] text-left"><th class="p-4 font-semibold text-[var(--text)]">Effectif simultané</th><th class="p-4 font-semibold text-[var(--text)]">Équipement recommandé</th></tr></thead><tbody><tr class="border-t border-black/10"><td class="p-4 text-[var(--text)]/80">1 à 10 ouvriers</td><td class="p-4 text-[var(--text)]/80">1 cabine sanitaire + 1 station lave-mains</td></tr><tr class="border-t border-black/10 bg-[var(--bg)]"><td class="p-4 text-[var(--text)]/80">11 à 20 ouvriers</td><td class="p-4 text-[var(--text)]/80">2 cabines sanitaires</td></tr><tr class="border-t border-black/10"><td class="p-4 text-[var(--text)]/80">Fréquence de vidange conseillée</td><td class="p-4 text-[var(--text)]/80">1 passage hebdomadaire</td></tr></tbody></table></div><p class="text-xs text-[var(--text)]/60 max-w-3xl">Répartition usuelle appliquée sur nos chantiers pour rester au-dessus du minimum légal (1 cabinet pour 20 personnes). Le dimensionnement exact dépend de l'effectif réel simultané sur site — confirmé au moment du devis.</p></div></section><div id="zones"><section class="w-full py-16 bg-[var(--surface)]"><div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 grid gap-10 lg:grid-cols-2 items-center"><div class="relative rounded-xl overflow-hidden aspect-[4/3] bg-[var(--bg)] border border-black/10"><div class="absolute inset-0 flex items-center justify-center bg-gradient-to-br from-[var(--primary)]/10 to-[var(--accent)]/10" role="img" aria-label="Zone desservie autour de Chalon-sur-Saône"><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="40" height="40" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewbox="0 0 24 24" aria-hidden="true" class="lucide lucide-map-pin text-[var(--text)]/30"><path d="M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"></path><circle cx="12" cy="10" r="3"></circle></svg></div></div><div><h2 class="text-2xl md:text-3xl font-bold text-[var(--text)] mb-3">Zone d'Intervention : Chalon-sur-Saône, Grand Chalon et Saône-et-Loire</h2><p class="text-[var(--text)]/80 mb-6">Intervention à <strong>Chalon-sur-Saône</strong> et dans les communes environnantes.</p><ul class="grid gap-2 sm:grid-cols-2 list-none p-0 m-0 mb-6"><li class="flex items-center gap-2 text-sm"><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="14" height="14" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewbox="0 0 24 24" aria-hidden="true" class="lucide lucide-map-pin text-[var(--primary)] shrink-0"><path d="M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"></path><circle cx="12" cy="10" r="3"></circle></svg><a href="/zones/chagny/" class="text-[var(--text)]/80 hover:text-[var(--primary)] transition-colors">Chagny<span class="text-[var(--text)]/50"> (71150)</span></a></li><li class="flex items-center gap-2 text-sm"><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="14" height="14" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewbox="0 0 24 24" aria-hidden="true" class="lucide lucide-map-pin text-[var(--primary)] shrink-0"><path d="M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"></path><circle cx="12" cy="10" r="3"></circle></svg><a href="/zones/givry/" class="text-[var(--text)]/80 hover:text-[var(--primary)] transition-colors">Givry<span class="text-[var(--text)]/50"> (71640)</span></a></li><li class="flex items-center gap-2 text-sm"><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="14" height="14" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewbox="0 0 24 24" aria-hidden="true" class="lucide lucide-map-pin text-[var(--primary)] shrink-0"><path d="M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"></path><circle cx="12" cy="10" r="3"></circle></svg><a href="/zones/tournus/" class="text-[var(--text)]/80 hover:text-[var(--primary)] transition-colors">Tournus<span class="text-[var(--text)]/50"> (71700)</span></a></li><li class="flex items-center gap-2 text-sm"><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="14" height="14" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewbox="0 0 24 24" aria-hidden="true" class="lucide lucide-map-pin text-[var(--primary)] shrink-0"><path d="M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"></path><circle cx="12" cy="10" r="3"></circle></svg><a href="/zones/sanvignes-les-mines/" class="text-[var(--text)]/80 hover:text-[var(--primary)] transition-colors">Sanvignes-les-Mines<span class="text-[var(--text)]/50"> (71410)</span></a></li><li class="flex items-center gap-2 text-sm"><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="14" height="14" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewbox="0 0 24 24" aria-hidden="true" class="lucide lucide-map-pin text-[var(--primary)] shrink-0"><path d="M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"></path><circle cx="12" cy="10" r="3"></circle></svg><a href="/zones/montceau-les-mines/" class="text-[var(--text)]/80 hover:text-[var(--primary)] transition-colors">Montceau-les-Mines<span class="text-[var(--text)]/50"> (71300)</span></a></li><li class="flex items-center gap-2 text-sm"><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="14" height="14" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewbox="0 0 24 24" aria-hidden="true" class="lucide lucide-map-pin text-[var(--primary)] shrink-0"><path d="M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"></path><circle cx="12" cy="10" r="3"></circle></svg><a href="/zones/le-creusot/" class="text-[var(--text)]/80 hover:text-[var(--primary)] transition-colors">Le Creusot<span class="text-[var(--text)]/50"> (71200)</span></a></li><li class="flex items-center gap-2 text-sm"><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="14" height="14" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewbox="0 0 24 24" aria-hidden="true" class="lucide lucide-map-pin text-[var(--primary)] shrink-0"><path d="M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"></path><circle cx="12" cy="10" r="3"></circle></svg><a href="/zones/beaune/" class="text-[var(--text)]/80 hover:text-[var(--primary)] transition-colors">Beaune<span class="text-[var(--text)]/50"> (21200)</span></a></li><li class="flex items-center gap-2 text-sm"><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="14" height="14" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewbox="0 0 24 24" aria-hidden="true" class="lucide lucide-map-pin text-[var(--primary)] shrink-0"><path d="M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"></path><circle cx="12" cy="10" r="3"></circle></svg><a href="/zones/autun/" class="text-[var(--text)]/80 hover:text-[var(--primary)] transition-colors">Autun<span class="text-[var(--text)]/50"> (71400)</span></a></li><li class="flex items-center gap-2 text-sm"><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="14" height="14" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewbox="0 0 24 24" aria-hidden="true" class="lucide lucide-map-pin text-[var(--primary)] shrink-0"><path d="M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"></path><circle cx="12" cy="10" r="3"></circle></svg><a href="/zones/louhans/" class="text-[var(--text)]/80 hover:text-[var(--primary)] transition-colors">Louhans<span class="text-[var(--text)]/50"> (71500)</span></a></li><li class="flex items-center gap-2 text-sm"><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="14" height="14" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewbox="0 0 24 24" aria-hidden="true" class="lucide lucide-map-pin text-[var(--primary)] shrink-0"><path d="M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"></path><circle cx="12" cy="10" r="3"></circle></svg><a href="/location-toilette-chantier-dijon/" class="text-[var(--text)]/80 hover:text-[var(--primary)] transition-colors">Dijon<span class="text-[var(--text)]/50"> (21000)</span></a></li><li class="flex items-center gap-2 text-sm"><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="14" height="14" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewbox="0 0 24 24" aria-hidden="true" class="lucide lucide-map-pin text-[var(--primary)] shrink-0"><path d="M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"></path><circle cx="12" cy="10" r="3"></circle></svg><span class="text-[var(--text)]/80">Saint-Rémy<span class="text-[var(--text)]/50"> (71100)</span></span></li><li class="flex items-center gap-2 text-sm"><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="14" height="14" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewbox="0 0 24 24" aria-hidden="true" class="lucide lucide-map-pin text-[var(--primary)] shrink-0"><path d="M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"></path><circle cx="12" cy="10" r="3"></circle></svg><span class="text-[var(--text)]/80">Châtenoy-le-Royal<span class="text-[var(--text)]/50"> (71880)</span></span></li><li class="flex items-center gap-2 text-sm"><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="14" height="14" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewbox="0 0 24 24" aria-hidden="true" class="lucide lucide-map-pin text-[var(--primary)] shrink-0"><path d="M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"></path><circle cx="12" cy="10" r="3"></circle></svg><span class="text-[var(--text)]/80">Champforgeuil<span class="text-[var(--text)]/50"> (71530)</span></span></li><li class="flex items-center gap-2 text-sm"><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="14" height="14" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewbox="0 0 24 24" aria-hidden="true" class="lucide lucide-map-pin text-[var(--primary)] shrink-0"><path d="M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"></path><circle cx="12" cy="10" r="3"></circle></svg><span class="text-[var(--text)]/80">Lux<span class="text-[var(--text)]/50"> (71100)</span></span></li><li class="flex items-center gap-2 text-sm"><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="14" height="14" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewbox="0 0 24 24" aria-hidden="true" class="lucide lucide-map-pin text-[var(--primary)] shrink-0"><path d="M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"></path><circle cx="12" cy="10" r="3"></circle></svg><span class="text-[var(--text)]/80">Crissey<span class="text-[var(--text)]/50"> (71530)</span></span></li></ul><p class="inline-flex items-center gap-2 rounded-lg bg-[var(--accent)]/10 px-4 py-3 text-sm font-semibold text-[var(--accent)]"><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="18" height="18" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewbox="0 0 24 24" aria-hidden="true" class="lucide lucide-truck"><path d="M14 18V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v11a1 1 0 0 0 1 1h2"></path><path d="M15 18H9"></path><path d="M19 18h2a1 1 0 0 0 1-1v-3.65a1 1 0 0 0-.22-.624l-3.48-4.35A1 1 0 0 0 17.52 8H14"></path><circle cx="17" cy="18" r="2"></circle><circle cx="7" cy="18" r="2"></circle></svg>Livraison et installation sous 24h à 48h chrono sur le Grand Chalon et le bassin élargi.</p></div></div></section></div><section class="py-16 bg-[var(--surface)]"><div class="max-w-5xl mx-auto px-4 sm:px-6 lg:px-8"><h3 class="text-xl font-bold text-[var(--text)] mb-4">Desserte des Zones d'Activités (Zone Saôneor, ZI Nord, ZI Sud, Actisud Sevrey)</h3><ul class="grid gap-3 sm:grid-cols-2 list-none p-0 m-0"><li class="rounded-lg border border-black/10 bg-[var(--bg)] p-4"><p class="font-semibold text-[var(--text)] text-sm mb-1">Zone Saôneor</p><p class="text-xs text-[var(--text)]/60">pôle d'activités en bord de Saône, au nord de la ville</p></li><li class="rounded-lg border border-black/10 bg-[var(--bg)] p-4"><p class="font-semibold text-[var(--text)] text-sm mb-1">ZI Nord</p><p class="text-xs text-[var(--text)]/60">zone industrielle au nord de Chalon-sur-Saône</p></li><li class="rounded-lg border border-black/10 bg-[var(--bg)] p-4"><p class="font-semibold text-[var(--text)] text-sm mb-1">ZI Sud</p><p class="text-xs text-[var(--text)]/60">zone industrielle au sud de Chalon-sur-Saône</p></li><li class="rounded-lg border border-black/10 bg-[var(--bg)] p-4"><p class="font-semibold text-[var(--text)] text-sm mb-1">Actisud Sevrey</p><p class="text-xs text-[var(--text)]/60">zone d'activités au sud de l'agglomération, entre Sevrey et Saint-Loup-de-Varennes</p></li></ul></div></section><section class="py-16"><div class="max-w-5xl mx-auto px-4 sm:px-6 lg:px-8"><h3 class="text-xl font-bold text-[var(--text)] mb-4">Couverture Régionale : Interventions à Dijon, Beaune et Mâcon</h3><p class="text-sm text-[var(--text)]/80 leading-relaxed max-w-3xl">Au-delà du Grand Chalon, nous intervenons aussi sur un rayon élargi de Saône-et-Loire et de Côte-d'Or : retrouvez notre offre dédiée de <a href="/location-toilette-chantier-dijon/" class="underline hover:text-amber-500">location toilette chantier Dijon</a>, ainsi qu'à <a href="/zones/beaune/" class="underline hover:text-amber-500">Beaune (21200)</a>. Une intervention sur Mâcon et le Mâconnais reste possible sur devis, selon la localisation exacte du chantier.</p></div></section><section class="w-full py-16" id="faq-gold"><div class="max-w-3xl mx-auto px-4 sm:px-6 lg:px-8"><h2 class="text-2xl md:text-3xl font-bold text-[var(--text)] text-center mb-10">FAQ — Réponses à vos Questions sur la Location de WC Chantier à Chalon</h2><div class="flex flex-col gap-3"><div class="rounded-lg border border-black/10 bg-[var(--surface)] overflow-hidden"><h3 class="m-0"><button type="button" class="faq-gold-trigger w-full flex items-center justify-between gap-4 px-5 py-4 text-left font-semibold text-[var(--text)]" aria-expanded="false" aria-controls="faq-gold-panel-0" id="faq-gold-trigger-0"><span>Quel est le délai de livraison d’un WC de chantier sur Chalon-sur-Saône ?</span><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="18" height="18" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewbox="0 0 24 24" aria-hidden="true" class="lucide lucide-chevron-down faq-gold-chevron shrink-0 transition-transform"><path d="m6 9 6 6 6-6"></path></svg></button></h3><div id="faq-gold-panel-0" role="region" aria-labelledby="faq-gold-trigger-0" class="faq-gold-panel hidden px-5 pb-4 text-sm text-[var(--text)]/80">Le délai standard est de 24h à 48h chrono sur Chalon-sur-Saône et le Grand Chalon, à compter de la validation du devis.</div></div><div class="rounded-lg border border-black/10 bg-[var(--surface)] overflow-hidden"><h3 class="m-0"><button type="button" class="faq-gold-trigger w-full flex items-center justify-between gap-4 px-5 py-4 text-left font-semibold text-[var(--text)]" aria-expanded="false" aria-controls="faq-gold-panel-1" id="faq-gold-trigger-1"><span>La vidange et le nettoyage sont-ils inclus dans le tarif de location ?</span><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="18" height="18" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewbox="0 0 24 24" aria-hidden="true" class="lucide lucide-chevron-down faq-gold-chevron shrink-0 transition-transform"><path d="m6 9 6 6 6-6"></path></svg></button></h3><div id="faq-gold-panel-1" role="region" aria-labelledby="faq-gold-trigger-1" class="faq-gold-panel hidden px-5 pb-4 text-sm text-[var(--text)]/80">Oui, le nettoyage haute pression et la vidange hebdomadaire sont systématiquement inclus dans le tarif de location, à partir de 49€ HT/semaine, sans surcoût caché.</div></div><div class="rounded-lg border border-black/10 bg-[var(--surface)] overflow-hidden"><h3 class="m-0"><button type="button" class="faq-gold-trigger w-full flex items-center justify-between gap-4 px-5 py-4 text-left font-semibold text-[var(--text)]" aria-expanded="false" aria-controls="faq-gold-panel-2" id="faq-gold-trigger-2"><span>Proposez-vous des sanitaires BTP conformes aux normes PMR et Code du Travail ?</span><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="18" height="18" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewbox="0 0 24 24" aria-hidden="true" class="lucide lucide-chevron-down faq-gold-chevron shrink-0 transition-transform"><path d="m6 9 6 6 6-6"></path></svg></button></h3><div id="faq-gold-panel-2" role="region" aria-labelledby="faq-gold-trigger-2" class="faq-gold-panel hidden px-5 pb-4 text-sm text-[var(--text)]/80">Oui, la cabine PMR aux normes d'accessibilité et la station lave-mains autonome répondent directement à l'obligation de l'article R4228-10 du Code du Travail.</div></div></div></div></section><script type="application/ld+json">{"@context":"https://schema.org","@type":"FAQPage","mainEntity":[{"@type":"Question","name":"Quel est le délai de livraison d’un WC de chantier sur Chalon-sur-Saône ?","acceptedAnswer":{"@type":"Answer","text":"Le délai standard est de 24h à 48h chrono sur Chalon-sur-Saône et le Grand Chalon, à compter de la validation du devis."}},{"@type":"Question","name":"La vidange et le nettoyage sont-ils inclus dans le tarif de location ?","acceptedAnswer":{"@type":"Answer","text":"Oui, le nettoyage haute pression et la vidange hebdomadaire sont systématiquement inclus dans le tarif de location, à partir de 49€ HT/semaine, sans surcoût caché."}},{"@type":"Question","name":"Proposez-vous des sanitaires BTP conformes aux normes PMR et Code du Travail ?","acceptedAnswer":{"@type":"Answer","text":"Oui, la cabine PMR aux normes d'accessibilité et la station lave-mains autonome répondent directement à l'obligation de l'article R4228-10 du Code du Travail."}}]}</script><script>
(function () {
document.querySelectorAll('.faq-gold-trigger').forEach((trigger) => {
trigger.addEventListener('click', () => {
const expanded = trigger.getAttribute('aria-expanded') === 'true';
const panel = document.getElementById(trigger.getAttribute('aria-controls'));
trigger.setAttribute('aria-expanded', String(!expanded));
panel?.classList.toggle('hidden', expanded);
trigger.querySelector('.faq-gold-chevron')?.classList.toggle('rotate-180', !expanded);
});
});
})();
</script><div id="avis"><section class="w-full py-16"><div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"><div class="text-2xl md:text-3xl font-bold text-[var(--text)] text-center mb-10" role="heading" aria-level="2">Avis clients</div><div class="grid gap-6 md:grid-cols-2 lg:grid-cols-3"><figure class="rounded-xl border border-black/10 bg-[var(--surface)] p-6 flex flex-col gap-3"><div class="flex items-center gap-1" role="img" aria-label="Note : 5 sur 5"><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="16" height="16" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewbox="0 0 24 24" aria-hidden="true" class="lucide lucide-star text-[var(--accent)] fill-[var(--accent)]"><path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="16" height="16" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewbox="0 0 24 24" aria-hidden="true" class="lucide lucide-star text-[var(--accent)] fill-[var(--accent)]"><path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="16" height="16" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewbox="0 0 24 24" aria-hidden="true" class="lucide lucide-star text-[var(--accent)] fill-[var(--accent)]"><path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="16" height="16" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewbox="0 0 24 24" aria-hidden="true" class="lucide lucide-star text-[var(--accent)] fill-[var(--accent)]"><path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="16" height="16" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewbox="0 0 24 24" aria-hidden="true" class="lucide lucide-star text-[var(--accent)] fill-[var(--accent)]"><path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"></path></svg></div><blockquote class="text-sm text-[var(--text)]/80 flex-1">"Livraison en 24h comme promis, cabine impeccable dès l’installation."</blockquote><figcaption class="flex items-center gap-3 mt-2"><span class="flex items-center justify-center h-10 w-10 rounded-full bg-[var(--primary)] text-[var(--text-on-primary)] font-bold text-sm" aria-hidden="true">J</span><div><p class="text-sm font-semibold text-[var(--text)]">Julien M.</p><p class="text-xs text-[var(--text)]/60">Conducteur de travaux — Mars 2026</p></div></figcaption></figure><figure class="rounded-xl border border-black/10 bg-[var(--surface)] p-6 flex flex-col gap-3"><div class="flex items-center gap-1" role="img" aria-label="Note : 5 sur 5"><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="16" height="16" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewbox="0 0 24 24" aria-hidden="true" class="lucide lucide-star text-[var(--accent)] fill-[var(--accent)]"><path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="16" height="16" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewbox="0 0 24 24" aria-hidden="true" class="lucide lucide-star text-[var(--accent)] fill-[var(--accent)]"><path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="16" height="16" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewbox="0 0 24 24" aria-hidden="true" class="lucide lucide-star text-[var(--accent)] fill-[var(--accent)]"><path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="16" height="16" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewbox="0 0 24 24" aria-hidden="true" class="lucide lucide-star text-[var(--accent)] fill-[var(--accent)]"><path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="16" height="16" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewbox="0 0 24 24" aria-hidden="true" class="lucide lucide-star text-[var(--accent)] fill-[var(--accent)]"><path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"></path></svg></div><blockquote class="text-sm text-[var(--text)]/80 flex-1">"Vidange hebdomadaire toujours respectée, aucune mauvaise surprise sur la facture."</blockquote><figcaption class="flex items-center gap-3 mt-2"><span class="flex items-center justify-center h-10 w-10 rounded-full bg-[var(--primary)] text-[var(--text-on-primary)] font-bold text-sm" aria-hidden="true">S</span><div><p class="text-sm font-semibold text-[var(--text)]">Sophie R.</p><p class="text-xs text-[var(--text)]/60">Cheffe de chantier — Février 2026</p></div></figcaption></figure><figure class="rounded-xl border border-black/10 bg-[var(--surface)] p-6 flex flex-col gap-3"><div class="flex items-center gap-1" role="img" aria-label="Note : 4 sur 5"><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="16" height="16" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewbox="0 0 24 24" aria-hidden="true" class="lucide lucide-star text-[var(--accent)] fill-[var(--accent)]"><path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="16" height="16" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewbox="0 0 24 24" aria-hidden="true" class="lucide lucide-star text-[var(--accent)] fill-[var(--accent)]"><path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="16" height="16" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewbox="0 0 24 24" aria-hidden="true" class="lucide lucide-star text-[var(--accent)] fill-[var(--accent)]"><path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="16" height="16" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewbox="0 0 24 24" aria-hidden="true" class="lucide lucide-star text-[var(--accent)] fill-[var(--accent)]"><path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="16" height="16" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewbox="0 0 24 24" aria-hidden="true" class="lucide lucide-star text-[var(--text)]/20"><path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"></path></svg></div><blockquote class="text-sm text-[var(--text)]/80 flex-1">"Bon rapport qualité-prix, l’astreinte 7j/7 est un vrai plus sur nos chantiers isolés."</blockquote><figcaption class="flex items-center gap-3 mt-2"><span class="flex items-center justify-center h-10 w-10 rounded-full bg-[var(--primary)] text-[var(--text-on-primary)] font-bold text-sm" aria-hidden="true">M</span><div><p class="text-sm font-semibold text-[var(--text)]">Marc D.</p><p class="text-xs text-[var(--text)]/60">Gérant BTP — Janvier 2026</p></div></figcaption></figure></div></div></section></div><section id="contact" class="w-full bg-[var(--surface)] py-16"><div class="max-w-xl mx-auto px-4 sm:px-6 lg:px-8"><div class="text-2xl font-bold text-center text-[var(--text)] mb-6" role="heading" aria-level="2">Demander un devis gratuit</div><form id="lead-form-gold" action="/api/contact" method="POST" class="flex flex-col gap-4" novalidate><div class="flex flex-col gap-1"><label for="lfg-name" class="text-sm font-semibold text-[var(--text)]">Nom</label><input id="lfg-name" name="name" type="text" autocomplete="name" required class="rounded-lg border border-black/15 px-4 py-2.5 text-[var(--text)]"><p id="error-name" class="hidden text-xs text-red-600 mt-1 font-medium"></p></div><div class="flex flex-col gap-1"><label for="lfg-email" class="text-sm font-semibold text-[var(--text)]">Email</label><input id="lfg-email" name="email" type="email" autocomplete="email" class="rounded-lg border border-black/15 px-4 py-2.5 text-[var(--text)]"><p id="error-email" class="hidden text-xs text-red-600 mt-1 font-medium"></p></div><div class="flex flex-col gap-1"><label for="lfg-phone" class="text-sm font-semibold text-[var(--text)]">Téléphone</label><input id="lfg-phone" name="phone" type="tel" autocomplete="tel" required class="rounded-lg border border-black/15 px-4 py-2.5 text-[var(--text)]"><p id="error-phone" class="hidden text-xs text-red-600 mt-1 font-medium"></p></div><div class="flex flex-col gap-1"><label for="lfg-message" class="text-sm font-semibold text-[var(--text)]">Message</label><textarea id="lfg-message" name="message" rows="4" required class="rounded-lg border border-black/15 px-4 py-2.5 text-[var(--text)]"></textarea><p id="error-message" class="hidden text-xs text-red-600 mt-1 font-medium"></p></div><!-- Honeypot anti-spam : champ invisible, jamais rempli par un humain --><input type="text" name="company" tabindex="-1" autocomplete="off" aria-hidden="true" class="absolute -left-[9999px] h-px w-px overflow-hidden"><button type="submit" class="rounded-lg bg-[var(--primary)] px-6 py-3 font-semibold text-[var(--text-on-primary)] hover:opacity-90 transition-opacity">Envoyer ma demande</button><p id="lfg-status" role="status" aria-live="polite" class="text-sm text-center text-[var(--text)]"></p></form></div></section><script>
(function () {
const form = document.getElementById('lead-form-gold');
const status = document.getElementById('lfg-status');
if (!form) return;
const VALIDATED_FIELDS = ['name', 'email', 'phone', 'message'];
const ERROR_INPUT_CLASSES = ['border-red-500', 'bg-red-50', 'focus:ring-red-500', 'focus:border-red-500'];
const PHONE_REGEX = /^(?:(?:\+|00)33|0)[1-9]\d{8}$/;
const EMAIL_REGEX = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
function setFieldError(fieldName, message) {
const input = form.elements[fieldName];
const errorEl = document.getElementById(`error-${fieldName}`);
if (input) input.classList.add(...ERROR_INPUT_CLASSES);
if (errorEl) {
errorEl.textContent = message;
errorEl.classList.remove('hidden');
}
}
function clearFieldError(fieldName) {
const input = form.elements[fieldName];
const errorEl = document.getElementById(`error-${fieldName}`);
if (input) input.classList.remove(...ERROR_INPUT_CLASSES);
if (errorEl) {
errorEl.textContent = '';
errorEl.classList.add('hidden');
}
}
VALIDATED_FIELDS.forEach((fieldName) => {
form.elements[fieldName]?.addEventListener('input', () => clearFieldError(fieldName));
});
function validate() {
let valid = true;
if (form.name.value.trim().length < 2) {
setFieldError('name', 'Veuillez renseigner votre nom.');
valid = false;
}
const phoneDigits = form.phone.value.trim().replace(/[\s.-]/g, '');
if (!PHONE_REGEX.test(phoneDigits)) {
setFieldError('phone', 'Numéro de téléphone invalide (ex: 06 12 34 56 78).');
valid = false;
}
const emailValue = form.email.value.trim();
if (emailValue && !EMAIL_REGEX.test(emailValue)) {
setFieldError('email', 'Adresse e-mail invalide.');
valid = false;
}
return valid;
}
form.addEventListener('submit', async (event) => {
event.preventDefault();
if (form.company.value) return; // honeypot rempli -> abandon silencieux
VALIDATED_FIELDS.forEach(clearFieldError);
status.textContent = '';
if (!validate()) return;
const submitButton = form.querySelector('button[type="submit"]');
submitButton.disabled = true;
status.textContent = 'Envoi en cours...';
const payload = {
nom: form.name.value,
email: form.email.value,
telephone: form.phone.value,
message: form.message.value,
};
try {
const response = await fetch(form.action, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(payload),
});
const result = await response.json().catch(() => ({}));
if (!response.ok || !result.success) {
if (result.errors && typeof result.errors === 'object') {
Object.entries(result.errors).forEach(([field, message]) => setFieldError(field, String(message)));
} else {
status.textContent = result.message || 'Une erreur est survenue, merci de réessayer.';
}
return;
}
status.textContent = 'Merci, votre demande a bien été envoyée.';
form.reset();
} catch {
status.textContent = 'Une erreur est survenue, merci de réessayer ou de nous contacter directement par téléphone.';
} finally {
submitButton.disabled = false;
}
});
})();
</script><footer class="w-full bg-[var(--text)] text-white/70"><div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-14 grid grid-cols-1 gap-10 md:grid-cols-4"><!-- Colonne 1 — Identité --><div><p class="text-lg font-bold text-white mb-1">Chalon Sanitaires BTP</p><address class="not-italic text-sm leading-relaxed text-white/70">Chalon-sur-Saône, Saône-et-Loire<br></address><ul class="flex flex-col gap-1 text-xs text-white/60 mt-3"><li class="flex justify-between gap-4"><span>Lun - Ven</span><span>8h - 18h</span></li><li class="flex justify-between gap-4"><span>Astreinte</span><span>7j/7</span></li></ul></div><!-- Colonne 2 — Services (maillage interne obligatoire, totalité des services réels) --><div><p class="font-bold text-white mb-3">Nos Services</p><ul class="flex flex-col gap-2 text-sm"><li><a href="/services/wc-chimique-chantier/" class="text-white/70 hover:text-[var(--primary)] transition-colors">WC Chimique de Chantier : Cabine Sanitaire Autonome à Chalon-sur-Saône</a></li><li><a href="/services/cabine-pmr-chantier/" class="text-white/70 hover:text-[var(--primary)] transition-colors">Cabine PMR de Chantier : Accès Handicapé aux Normes</a></li><li><a href="/services/station-lave-mains/" class="text-white/70 hover:text-[var(--primary)] transition-colors">Station Lave-Mains de Chantier : Hygiène Réglementaire BTP</a></li><li><a href="/services/sanitaires-evenementiel/" class="text-white/70 hover:text-[var(--primary)] transition-colors">Location Sanitaires pour Événements à Chalon-sur-Saône</a></li></ul></div><!-- Colonne 3 — Zones (maillage interne obligatoire, totalité des zones réelles) --><div><p class="font-bold text-white mb-3">Zones d'intervention</p><ul class="flex flex-col gap-2 text-sm"><li><a href="/zones/chagny/" class="text-white/70 hover:text-[var(--primary)] transition-colors">Chagny (71150)</a></li><li><a href="/zones/givry/" class="text-white/70 hover:text-[var(--primary)] transition-colors">Givry (71640)</a></li><li><a href="/zones/tournus/" class="text-white/70 hover:text-[var(--primary)] transition-colors">Tournus (71700)</a></li><li><a href="/zones/sanvignes-les-mines/" class="text-white/70 hover:text-[var(--primary)] transition-colors">Sanvignes-les-Mines (71410)</a></li><li><a href="/zones/montceau-les-mines/" class="text-white/70 hover:text-[var(--primary)] transition-colors">Montceau-les-Mines (71300)</a></li><li><a href="/zones/le-creusot/" class="text-white/70 hover:text-[var(--primary)] transition-colors">Le Creusot (71200)</a></li><li><a href="/zones/beaune/" class="text-white/70 hover:text-[var(--primary)] transition-colors">Beaune (21200)</a></li><li><a href="/zones/autun/" class="text-white/70 hover:text-[var(--primary)] transition-colors">Autun (71400)</a></li><li><a href="/zones/louhans/" class="text-white/70 hover:text-[var(--primary)] transition-colors">Louhans (71500)</a></li><li><a href="/location-toilette-chantier-dijon/" class="text-white/70 hover:text-[var(--primary)] transition-colors">Dijon (21000)</a></li></ul></div><!-- Colonne 4 — Légal / Navigation --><div><p class="font-bold text-white mb-3">Informations</p><ul class="flex flex-col gap-2 text-sm"><li><a href="/contact/" class="text-white/70 hover:text-[var(--primary)] transition-colors">Contact</a></li><li><a href="/mentions-legales/" class="text-white/70 hover:text-[var(--primary)] transition-colors">Mentions légales</a></li><li><a href="/conditions-generales-de-vente/" class="text-white/70 hover:text-[var(--primary)] transition-colors">CGV</a></li><li><a href="/politique-de-confidentialite/" class="text-white/70 hover:text-[var(--primary)] transition-colors">Politique de confidentialité</a></li></ul></div></div><div class="border-t border-white/10"><div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-6 text-center text-xs text-white/50"><p class="text-white/50">© 2026 Chalon Sanitaires BTP. Tous droits réservés.</p></div></div></footer></main></body></html>