{"id":6939,"date":"2026-04-30T17:19:29","date_gmt":"2026-04-30T21:19:29","guid":{"rendered":"https:\/\/epoxy.express\/soumission-entretien-sanitaire-commercial-alimentaire-institutionnel\/"},"modified":"2026-06-15T16:22:19","modified_gmt":"2026-06-15T20:22:19","slug":"soumission-entretien-sanitaire-commercial-alimentaire-institutionnel","status":"publish","type":"page","link":"https:\/\/epoxy.express\/en\/soumission-entretien-sanitaire-commercial-alimentaire-institutionnel\/","title":{"rendered":"Quotes for Sanitary Maintenance in the Food, Medical, Commercial and Industrial Sectors"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"6939\" class=\"elementor elementor-6939 elementor-5309\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-585d1cbe e-flex e-con-boxed e-con e-parent\" data-id=\"585d1cbe\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2a2331f9 elementor-widget elementor-widget-text-editor\" data-id=\"2a2331f9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<div><div id=\"epoxy-elementor-widget\" class=\"text-slate-800\" style=\"background-color: #f8fafc; padding: 20px 0;\">\n    <script src=\"https:\/\/cdn.tailwindcss.com\"><\/script>\n    <link href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.0.0\/css\/all.min.css\" rel=\"stylesheet\">\n    <script>\n        tailwind.config = {\n            theme: {\n                extend: {\n                    colors: {\n                        primary: '#0ea5e9',\n                        secondary: '#1e293b',\n                        accent: '#f59e0b',\n                    }\n                }\n            }\n        }\n    <\/script>\n    <style>\n        #epoxy-elementor-widget { font-family: 'Inter', sans-serif; }\n        #epoxy-elementor-widget .form-section { background: white; border-radius: 0.75rem; padding: 1.5rem; margin-bottom: 1.5rem; box-shadow: 0 4px 6px -1px rgb(0 0 0 \/ 0.1); }\n        #epoxy-elementor-widget .sticky-summary { position: sticky; top: 1.5rem; z-index: 10; }\n        #epoxy-elementor-widget input[type=\"number\"], \n        #epoxy-elementor-widget input[type=\"text\"], \n        #epoxy-elementor-widget input[type=\"email\"], \n        #epoxy-elementor-widget input[type=\"tel\"] {\n            width: 100%; padding: 0.5rem; border: 1px solid #cbd5e1; border-radius: 0.375rem; margin-top: 0.25rem;\n        }\n        #epoxy-elementor-widget input[type=\"checkbox\"] { width: 1.25rem; height: 1.25rem; accent-color: #0ea5e9; cursor: pointer; }\n    <\/style>\n<\/head>\n\n\n<div class=\"max-w-7xl mx-auto p-4 sm:p-6 lg:p-8\">\n    <div class=\"mb-8 text-center\">\n        <h1 class=\"text-3xl md:text-4xl font-bold text-secondary mb-2\"><i class=\"fa-solid fa-building-shield text-primary\"><\/i> Food Cleaning Quote (Maximum Level)<\/h1>\n        <p class=\"text-slate-600 max-w-3xl mx-auto\">Compliant with CPEEP standards (Montreal 2026), MAPAQ requirements and HACCP protocols for large areas.<\/p>\n    <\/div>\n\n    <form id=\"quoteForm\" class=\"flex flex-col lg:flex-row gap-6\">\n        \n        \n        <div class=\"w-full lg:w-2\/3\">\n            \n            \n            <div class=\"form-section border-t-4 border-primary\">\n                <h2 class=\"text-xl font-bold mb-4 border-b pb-2\"><i class=\"fa-solid fa-address-card mr-2\"><\/i>1. Customer Information<\/h2>\n                <div class=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n                    <div>\n                        <label class=\"block text-sm font-semibold\">Business name (e.g. IGA, Metro)<\/label>\n                        <input type=\"text\" id=\"clientName\" required=\"\" placeholder=\"XYZ Supermarket\">\n                    <\/div>\n                    <div>\n                        <label class=\"block text-sm font-semibold\">Contact person<\/label>\n                        <input type=\"text\" id=\"contactName\" required=\"\" placeholder=\"Jean Tremblay\">\n                    <\/div>\n                    <div>\n                        <label class=\"block text-sm font-semibold\">E-mail<\/label>\n                        <input type=\"email\" id=\"clientEmail\" required=\"\" placeholder=\"direction@supermarche.ca\">\n                    <\/div>\n                    <div>\n                        <label class=\"block text-sm font-semibold\">Phone<\/label>\n                        <input type=\"tel\" id=\"clientPhone\" required=\"\" placeholder=\"514-555-0199\">\n                    <\/div>\n                    <div class=\"md:col-span-2 bg-blue-50 p-4 rounded-lg mt-2 border border-blue-100\">\n                        <label class=\"block text-sm font-bold text-blue-900\">Estimated total area (square feet);<\/label>\n                        <input type=\"number\" id=\"sqft\" value=\"50000\" min=\"5000\" step=\"1000\" class=\"text-lg font-bold text-primary\">\n                        <p class=\"text-xs text-blue-700 mt-1\">The surface area affects the calculation of recurring costs (economies of scale apply).<\/p>\n                    <\/div>\n                <\/div>\n            <\/div>\n\n            \n            <div class=\"form-section border-t-4 border-secondary\">\n                <h2 class=\"text-xl font-bold mb-4 border-b pb-2\"><i class=\"fa-solid fa-broom mr-2\"><\/i>2. Recurring Services (Monthly Package)<\/h2>\n                <p class=\"text-sm mb-4 text-slate-500\">Basic protocols guaranteeing health and legal compliance (hourly rates Class A\/B, bonuses included).<\/p>\n                \n                <div class=\"space-y-4\">\n                    <label class=\"flex items-start gap-3 p-3 hover:bg-slate-50 rounded border border-transparent hover:border-slate-200 transition\">\n                        <input type=\"checkbox\" id=\"baseGeneral\" checked disabled class=\"mt-1\">\n                        <div>\n                            <span class=\"font-bold block\">General Sanitary Maintenance (Mandatory)<\/span>\n<span class=\"text-xs text-slate-500\">Aisles, checkouts, offices, restrooms. 7 days\/week. Mechanical washing.<\/span>\n                        <\/div>\n                    <\/label>\n\n                    <label class=\"flex items-start gap-3 p-3 hover:bg-slate-50 rounded border border-transparent hover:border-slate-200 transition\">\n                        <input type=\"checkbox\" id=\"baseHACCP\" checked class=\"mt-1\" onchange=\"calculateTotal()\">\n                        <div>\n                            <span class=\"font-bold block\">Specialized HACCP Sanitation (High-Risk Areas)<\/span>\n<span class=\"text-xs text-slate-500\">Butcher shop, fish market, delicatessen. MAPAQ 5-step method (Twice daily).<\/span>\n                        <\/div>\n                    <\/label>\n\n                    <label class=\"flex items-start gap-3 p-3 hover:bg-slate-50 rounded border border-transparent hover:border-slate-200 transition\">\n                        <input type=\"checkbox\" id=\"baseRobot\" class=\"mt-1\" onchange=\"calculateTotal()\">\n                        <div>\n                            <span class=\"font-bold block\">Technological Integration (Autonomous Scrubber)<\/span>\n<span class=\"text-xs text-slate-500\">Monthly rental of a floor-cleaning robot for maximum consistency and workforce reallocation.<\/span>\n                        <\/div>\n                    <\/label>\n\n                    <label class=\"flex items-start gap-3 p-3 hover:bg-slate-50 rounded border border-transparent hover:border-slate-200 transition\">\n                        <input type=\"checkbox\" id=\"baseConsumables\" checked class=\"mt-1\" onchange=\"calculateTotal()\">\n                        <div>\n                            <span class=\"font-bold block\">Consumables Management<\/span>\n<span class=\"text-xs text-slate-500\">Supply of soap, paper and CFIA bio-cleaning solutions.<\/span>\n                        <\/div>\n                    <\/label>\n                <\/div>\n            <\/div>\n\n            \n            <div class=\"form-section border-t-4 border-accent\">\n                <h2 class=\"text-xl font-bold mb-4 border-b pb-2\"><i class=\"fa-solid fa-star mr-2\"><\/i>3. Specialized Interventions &#038; Extras<\/h2>\n                <p class=\"text-sm mb-4 text-slate-500\">Maximum services to protect real estate assets and reduce long-term operating costs.<\/p>\n\n                <div class=\"space-y-4\">\n                    \n                    <div class=\"p-3 border rounded-lg bg-slate-50\">\n                        <label class=\"flex items-center gap-3 font-bold mb-2 cursor-pointer\">\n                            <input type=\"checkbox\" id=\"extStripping\" onchange=\"toggleInputs('extStripping'); calculateTotal()\"> Stripping, Sealing and Waxing (VCT Floors);\n                        <\/label>\n                        <div id=\"extStripping_div\" class=\"hidden pl-8 text-sm text-slate-600\">\n                            <p class=\"mb-2\">Protection against winter abrasion (calcium). Recommended twice a year. <\/p>\n                            <label>Surface area to be stripped (sq ft): <input type=\"number\" id=\"qtyStripping\" value=\"35000\" oninput=\"calculateTotal()\" class=\"w-32 inline-block ml-2\"><\/label>\n                        <\/div>\n                    <\/div>\n\n                    \n                    <div class=\"p-3 border rounded-lg bg-slate-50\">\n                        <label class=\"flex items-center gap-3 font-bold mb-2 cursor-pointer\">\n                            <input type=\"checkbox\" id=\"extWindows\" onchange=\"toggleInputs('extWindows'); calculateTotal()\"> Architectural Window Cleaning (Height \/ Osmosis)\n                        <\/label>\n                        <div id=\"extWindows_div\" class=\"hidden pl-8 text-sm text-slate-600\">\n                            <label>Number of glass panels: <input type=\"number\" id=\"qtyWindows\" value=\"150\" oninput=\"calculateTotal()\" class=\"w-32 inline-block ml-2\"><\/label>\n                        <\/div>\n                    <\/div>\n\n                    \n                    <div class=\"p-3 border rounded-lg bg-slate-50\">\n                        <label class=\"flex items-center gap-3 font-bold mb-2 cursor-pointer\">\n                            <input type=\"checkbox\" id=\"extPressure\" onchange=\"toggleInputs('extPressure'); calculateTotal()\"> High Pressure Cleaning (Docks &#038; Compactors)\n                        <\/label>\n                        <div id=\"extPressure_div\" class=\"hidden pl-8 text-sm text-slate-600\">\n                            <p class=\"mb-2\">Elimination of grease, odors and prevention of vermin.<\/p>\n                            <label>Number of interventions per year: <input type=\"number\" id=\"qtyPressure\" value=\"6\" oninput=\"calculateTotal()\" class=\"w-32 inline-block ml-2\"><\/label>\n                        <\/div>\n                    <\/div>\n\n                    \n                    <div class=\"p-3 border rounded-lg bg-slate-50\">\n                        <label class=\"flex items-center gap-3 font-bold mb-2 cursor-pointer\">\n                            <input type=\"checkbox\" id=\"extThermodynamic\" onchange=\"toggleInputs('extThermodynamic'); calculateTotal()\"> Thermodynamic Maintenance (Coils &#038; Condensers);\n                        <\/label>\n                        <div id=\"extThermodynamic_div\" class=\"hidden pl-8 text-sm text-slate-600\">\n                            <p class=\"mb-2 text-green-700 font-semibold\">Generates up to 30% energy savings on refrigeration.<\/p>\n                            <label>Number of refrigeration units: <input type=\"number\" id=\"qtyThermodynamic\" value=\"30\" oninput=\"calculateTotal()\" class=\"w-32 inline-block ml-2\"><\/label>\n                        <\/div>\n                    <\/div>\n\n                    \n                    <div class=\"p-3 border rounded-lg bg-slate-50\">\n                        <label class=\"flex items-center gap-3 font-bold mb-2 cursor-pointer\">\n                            <input type=\"checkbox\" id=\"extDrains\" onchange=\"toggleInputs('extDrains'); calculateTotal()\"> Hydro-jet and Biological Drain Treatment\n                        <\/label>\n                        <div id=\"extDrains_div\" class=\"hidden pl-8 text-sm text-slate-600\">\n                            <p class=\"mb-2\">Critical prevention of Listeria backflow and biofilms.<\/p>\n                            <label>Quarterly interventions (Zones): <input type=\"number\" id=\"qtyDrains\" value=\"4\" oninput=\"calculateTotal()\" class=\"w-32 inline-block ml-2\"><\/label>\n                        <\/div>\n                    <\/div>\n\n                    \n                    <div class=\"p-3 border rounded-lg bg-slate-50\">\n                        <label class=\"flex items-center gap-3 font-bold cursor-pointer\">\n                            <input type=\"checkbox\" id=\"extCeilings\" onchange=\"calculateTotal()\"> Industrial Cleaning at Height (HVAC Ducts, Bridging)\n                        <\/label>\n                    <\/div>\n\n                    \n                    <div class=\"p-3 border rounded-lg bg-slate-50\">\n                        <label class=\"flex items-center gap-3 font-bold mb-2 cursor-pointer\">\n                            <input type=\"checkbox\" id=\"extCarts\" onchange=\"toggleInputs('extCarts'); calculateTotal()\"> Cleaning and Disinfection of the Fleet of Trolleys\n                        <\/label>\n                        <div id=\"extCarts_div\" class=\"hidden pl-8 text-sm text-slate-600\">\n                            <label>Number of fleet washes per year: <input type=\"number\" id=\"qtyCarts\" value=\"12\" oninput=\"calculateTotal()\" class=\"w-32 inline-block ml-2\"><\/label>\n                        <\/div>\n                    <\/div>\n\n                    \n                    <div class=\"p-3 border rounded-lg bg-slate-50\">\n                        <label class=\"flex items-center gap-3 font-bold cursor-pointer\">\n                            <input type=\"checkbox\" id=\"extParking\" onchange=\"calculateTotal()\"> Spring Mechanical Sweeping of the Parking Lot\n                        <\/label>\n                    <\/div>\n\n                    \n                    <div class=\"p-3 border rounded-lg bg-slate-50\">\n                        <label class=\"flex items-center gap-3 font-bold cursor-pointer\">\n                            <input type=\"checkbox\" id=\"extElectro\" onchange=\"calculateTotal()\"> Emergency Electrostatic Disinfection (Epidemic Prevention);\n                        <\/label>\n                    <\/div>\n\n                <\/div>\n            <\/div>\n        <\/div>\n\n        \n        <div class=\"w-full lg:w-1\/3\">\n            <div class=\"form-section sticky-summary bg-secondary text-white\">\n                <h3 class=\"text-xl font-bold mb-4 border-b border-slate-600 pb-2\"><i class=\"fa-solid fa-calculator mr-2\"><\/i>Estimated Summary<\/h3>\n                \n                <div class=\"mb-6\">\n                    <p class=\"text-sm text-slate-400 mb-1\">Total Recurring Monthly<\/p>\n                    <p class=\"text-3xl font-bold text-primary\" id=\"totalMonthly\">0 $<\/p>\n                    <ul class=\"text-xs text-slate-300 mt-2 space-y-1\" id=\"listMonthly\">\n                        \n                    <\/ul>\n                <\/div>\n\n                <div class=\"mb-6\">\n                    <p class=\"text-sm text-slate-400 mb-1\">Total Extras (Annual Budget)<\/p>\n                    <p class=\"text-2xl font-bold text-accent\" id=\"totalAnnual\">0 $<\/p>\n                    <ul class=\"text-xs text-slate-300 mt-2 space-y-1\" id=\"listAnnual\">\n                        \n                    <\/ul>\n                <\/div>\n\n                <div class=\"bg-slate-800 p-4 rounded mt-4 mb-6 text-sm text-slate-300 italic\">\n *These prices are average estimates for Montreal (2026) based on current regulations. An on-site inspection will confirm the final quote. \n                <\/div>\n\n                <button type=\"submit\" class=\"w-full bg-primary hover:bg-blue-500 text-white font-bold py-3 px-4 rounded-lg transition duration-200 flex justify-center items-center gap-2\">\n                    <i class=\"fa-solid fa-paper-plane\"><\/i> Submit to Epoxy.Express\n                <\/button>\n            <\/div>\n        <\/div>\n    <\/form>\n<\/div>\n\n<script>\n    \/\/ Rates & Formulas (Based on 2026 Montreal Analysis)\n    const rates = {\n        monthlyBasePerSqft: 0.30,      \/\/ General cleaning\n        monthlyHaccpPerSqft: 0.13,     \/\/ HACCP zones\n        monthlyRobot: 950,             \/\/ Autonomous scrubber\n        monthlyConsumables: 0.045,     \/\/ Supplies\n        \n        stripPerSqft: 0.75,            \/\/ Stripping\/Waxing\n        windowPerPanel: 6.50,          \/\/ Architectural windows\n        pressurePerIntervention: 750,  \/\/ Docks\/Compactors\n        thermoPerUnit: 225,            \/\/ HVAC\/Coils\n        drainsPerZone: 350,            \/\/ Hydro-jet drains\n        ceilingFlat: 5000,             \/\/ High ceiling dust\n        cartsPerFleet: 450,            \/\/ Cart washing\n        parkingFlat: 2250,             \/\/ Sweeper truck\n        electroFlat: 1200              \/\/ Electrostatic emergency spray\n    };\n\n    function toggleInputs(id) {\n        const div = document.getElementById(id + '_div');\n        if (div) {\n            div.style.display = document.getElementById(id).checked ? 'block' : 'none';\n        }\n    }\n\n    \/\/ Attach event listeners to all inputs to trigger calculation\n    document.querySelectorAll('input').forEach(input => {\n        input.addEventListener('input', calculateTotal);\n        input.addEventListener('change', calculateTotal);\n    });\n\n    let currentSummary = { monthly: 0, annual: 0, items: [] };\n\n    function calculateTotal() {\n        const sqft = parseFloat(document.getElementById('sqft').value) || 0;\n        \n        let monthly = 0;\n        let annual = 0;\n        let listM = '';\n        let listA = '';\n        let summaryItems = [];\n\n        \/\/ --- MONTHLY ---\n        \/\/ Base General (always included implicitly in our calc if checked, which is disabled\/forced true)\n        let costBase = sqft * rates.monthlyBasePerSqft;\n        monthly += costBase;\n        listM += `<li>+ Entretien r\u00e9gulier: ${costBase.toLocaleString('fr-CA')} $<\/li>`;\n        summaryItems.push(`Entretien r\u00e9gulier Mensuel: ${costBase.toFixed(2)}$`);\n\n        if (document.getElementById('baseHACCP').checked) {\n            let cost = sqft * rates.monthlyHaccpPerSqft;\n            monthly += cost;\n            listM += `<li>+ HACCP MAPAQ: ${cost.toLocaleString('fr-CA')} $<\/li>`;\n            summaryItems.push(`HACCP MAPAQ Mensuel: ${cost.toFixed(2)}$`);\n        }\n        if (document.getElementById('baseRobot').checked) {\n            monthly += rates.monthlyRobot;\n            listM += `<li>+ Robot Autonome: ${rates.monthlyRobot.toLocaleString('fr-CA')} $<\/li>`;\n            summaryItems.push(`Robot Autonome Mensuel: ${rates.monthlyRobot.toFixed(2)}$`);\n        }\n        if (document.getElementById('baseConsumables').checked) {\n            let cost = sqft * rates.monthlyConsumables;\n            monthly += cost;\n            listM += `<li>+ Consommables: ${cost.toLocaleString('fr-CA')} $<\/li>`;\n            summaryItems.push(`Consommables Mensuel: ${cost.toFixed(2)}$`);\n        }\n\n        \/\/ --- ANNUAL \/ EXTRAS ---\n        if (document.getElementById('extStripping').checked) {\n            let qty = parseFloat(document.getElementById('qtyStripping').value) || 0;\n            let cost = qty * rates.stripPerSqft * 2; \/\/ Assuming 2x year standard\n            annual += cost;\n            listA += `<li>+ D\u00e9capage\/Cirage (2x\/an): ${cost.toLocaleString('fr-CA')} $<\/li>`;\n            summaryItems.push(`D\u00e9capage\/Cirage (Annuel): ${cost.toFixed(2)}$`);\n        }\n        if (document.getElementById('extWindows').checked) {\n            let qty = parseFloat(document.getElementById('qtyWindows').value) || 0;\n            let cost = qty * rates.windowPerPanel * 4; \/\/ 4 seasons\n            annual += cost;\n            listA += `<li>+ Vitres (4x\/an): ${cost.toLocaleString('fr-CA')} $<\/li>`;\n            summaryItems.push(`Lavage Vitres (Annuel): ${cost.toFixed(2)}$`);\n        }\n        if (document.getElementById('extPressure').checked) {\n            let qty = parseFloat(document.getElementById('qtyPressure').value) || 0;\n            let cost = qty * rates.pressurePerIntervention;\n            annual += cost;\n            listA += `<li>+ Haute Pression (${qty}x): ${cost.toLocaleString('fr-CA')} $<\/li>`;\n            summaryItems.push(`Haute Pression (Annuel): ${cost.toFixed(2)}$`);\n        }\n        if (document.getElementById('extThermodynamic').checked) {\n            let qty = parseFloat(document.getElementById('qtyThermodynamic').value) || 0;\n            let cost = qty * rates.thermoPerUnit;\n            annual += cost;\n            listA += `<li>+ Thermodynamique: ${cost.toLocaleString('fr-CA')} $<\/li>`;\n            summaryItems.push(`Entretien Thermodynamique (Annuel): ${cost.toFixed(2)}$`);\n        }\n        if (document.getElementById('extDrains').checked) {\n            let qty = parseFloat(document.getElementById('qtyDrains').value) || 0;\n            let cost = qty * rates.drainsPerZone;\n            annual += cost;\n            listA += `<li>+ Drains (${qty} interv.): ${cost.toLocaleString('fr-CA')} $<\/li>`;\n            summaryItems.push(`Entretien Drains (Annuel): ${cost.toFixed(2)}$`);\n        }\n        if (document.getElementById('extCeilings').checked) {\n            annual += rates.ceilingFlat;\n            listA += `<li>+ Plafonds\/CVC: ${rates.ceilingFlat.toLocaleString('fr-CA')} $<\/li>`;\n            summaryItems.push(`Nettoyage Plafonds\/CVC (Annuel): ${rates.ceilingFlat.toFixed(2)}$`);\n        }\n        if (document.getElementById('extCarts').checked) {\n            let qty = parseFloat(document.getElementById('qtyCarts').value) || 0;\n            let cost = qty * rates.cartsPerFleet;\n            annual += cost;\n            listA += `<li>+ Chariots (${qty}x): ${cost.toLocaleString('fr-CA')} $<\/li>`;\n            summaryItems.push(`Nettoyage Chariots (Annuel): ${cost.toFixed(2)}$`);\n        }\n        if (document.getElementById('extParking').checked) {\n            annual += rates.parkingFlat;\n            listA += `<li>+ Stationnement: ${rates.parkingFlat.toLocaleString('fr-CA')} $<\/li>`;\n            summaryItems.push(`Stationnement (Annuel): ${rates.parkingFlat.toFixed(2)}$`);\n        }\n        if (document.getElementById('extElectro').checked) {\n            annual += rates.electroFlat;\n            listA += `<li>+ \u00c9lectrostatique (1x d'urgence): ${rates.electroFlat.toLocaleString('fr-CA')} $<\/li>`;\n            summaryItems.push(`D\u00e9sinfection \u00c9lectrostatique (Base): ${rates.electroFlat.toFixed(2)}$`);\n        }\n\n        \/\/ Update UI\n        document.getElementById('totalMonthly').innerText = monthly.toLocaleString('fr-CA') + ' $';\n        document.getElementById('totalAnnual').innerText = annual.toLocaleString('fr-CA') + ' $';\n        document.getElementById('listMonthly').innerHTML = listM;\n        document.getElementById('listAnnual').innerHTML = listA;\n\n        currentSummary = { monthly, annual, items: summaryItems };\n    }\n\n    \/\/ Initialisation s\u00e9curis\u00e9e pour Elementor \/ WordPress\n    function initEpoxyApp() {\n        calculateTotal();\n        const form = document.getElementById('quoteForm');\n        if (form) {\n            form.addEventListener('submit', function(e) {\n                e.preventDefault();\n                \n                const clientName = document.getElementById('clientName').value;\n                const contactName = document.getElementById('contactName').value;\n                const email = document.getElementById('clientEmail').value;\n                const phone = document.getElementById('clientPhone').value;\n                const sqft = document.getElementById('sqft').value;\n\n                let bodyText = `NOUVELLE DEMANDE DE SOUMISSION - EPOXY.EXPRESS\\n\\n`;\n                bodyText += `=== INFORMATIONS CLIENT ===\\n`;\n                bodyText += `Entreprise : ${clientName}\\n`;\n                bodyText += `Contact : ${contactName}\\n`;\n                bodyText += `Courriel : ${email}\\n`;\n                bodyText += `T\u00e9l\u00e9phone : ${phone}\\n`;\n                bodyText += `Superficie : ${sqft} pi\u00b2\\n\\n`;\n                \n                bodyText += `=== SERVICES S\u00c9LECTIONN\u00c9S ===\\n`;\n                currentSummary.items.forEach(item => {\n                    bodyText += `- ${item}\\n`;\n                });\n\n                bodyText += `\\n=== ESTIMATION GLOBALE ===\\n`;\n                bodyText += `Budget Mensuel R\u00e9current : ${currentSummary.monthly.toLocaleString('fr-CA')} $\\n`;\n                bodyText += `Budget Annuel Extras : ${currentSummary.annual.toLocaleString('fr-CA')} $\\n`;\n                bodyText += `\\nNote : Ceci est une estimation bas\u00e9e sur les bar\u00e8mes de Montr\u00e9al 2026. Une \u00e9valuation sur place est requise pour le devis officiel.`;\n\n                const mailtoLink = `mailto:info@epoxy.express?subject=${encodeURIComponent(\"Demande de soumission - \" + clientName)}&body=${encodeURIComponent(bodyText)}`;\n                \n                window.location.href = mailtoLink;\n            });\n        }\n    }\n\n    \/\/ S'assure que le script s'ex\u00e9cute peu importe comment Elementor l'injecte\n    if (document.readyState === 'loading') {\n        document.addEventListener('DOMContentLoaded', initEpoxyApp);\n    } else {\n        initEpoxyApp();\n    }\n<\/script>\n\n<\/div><\/div><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Food Cleaning Quote (Maximum Level) Compliant with CPEEP standards (Montreal 2026), MAPAQ requirements and HACCP protocols for large areas. 1. Customer Information Business name (e.g. IGA, Metro) Contact person E-mail Phone Estimated total area (square feet); The surface area affects the calculation of recurring costs (economies of scale apply). 2. Recurring Services (Monthly Package) Basic [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-6939","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/epoxy.express\/en\/wp-json\/wp\/v2\/pages\/6939","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/epoxy.express\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/epoxy.express\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/epoxy.express\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/epoxy.express\/en\/wp-json\/wp\/v2\/comments?post=6939"}],"version-history":[{"count":2,"href":"https:\/\/epoxy.express\/en\/wp-json\/wp\/v2\/pages\/6939\/revisions"}],"predecessor-version":[{"id":7095,"href":"https:\/\/epoxy.express\/en\/wp-json\/wp\/v2\/pages\/6939\/revisions\/7095"}],"wp:attachment":[{"href":"https:\/\/epoxy.express\/en\/wp-json\/wp\/v2\/media?parent=6939"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}