{"id":7234,"date":"2026-06-20T16:27:41","date_gmt":"2026-06-20T20:27:41","guid":{"rendered":"https:\/\/epoxy.express\/residential-painting-services-in-montreal-epoxy-express-inc\/"},"modified":"2026-06-21T00:06:55","modified_gmt":"2026-06-21T04:06:55","slug":"residential-painting-services-in-montreal-epoxy-express-inc","status":"publish","type":"page","link":"https:\/\/epoxy.express\/en\/residential-painting-services-in-montreal-epoxy-express-inc\/","title":{"rendered":"Residential painting services in Montreal &#8211; Epoxy Express Inc."},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"7234\" class=\"elementor elementor-7234 elementor-7227\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2712036 e-con e-atomic-element e-flexbox-base e-7e8861c \" data-id=\"2712036\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"2712036\">\n    \t\t<div class=\"elementor-element elementor-element-d58c55b elementor-widget elementor-widget-html\" data-id=\"d58c55b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- Integration of Tailwind CSS with -5% font size configuration -->\r\n<script src=\"https:\/\/cdn.tailwindcss.com\"><\/script>\r\n<script>\r\n  tailwind.config = {\r\n    theme: {\r\n      extend: {\r\n        fontSize: {\r\n          'xs': ['0.7125rem', { lineHeight: '0.85rem' }],       \/\/ 0.75rem - 5%\r\n          'sm': ['0.83125rem', { lineHeight: '1rem' }],   \/\/ 0.875rem - 5%\r\n          'base': ['0.95rem', { lineHeight: '1.25rem' }],     \/\/ 1rem - 5%\r\n          'lg': ['1.06875rem', { lineHeight: '1.50rem' }],   \/\/ 1.125rem - 5%\r\n          'xl': ['1.1875rem', { lineHeight: '1.50rem' }],    \/\/ 1.25rem - 5%\r\n          '2xl': ['1.425rem', { lineHeight: '1.75rem' }],       \/\/ 1.5rem - 5%\r\n          '3xl': ['1.78125rem', { lineHeight: '2rem' }],  \/\/ 1.875rem - 5%\r\n          '4xl': ['2.1375rem', { lineHeight: '2.25rem' }],    \/\/ 2.25rem - 5%\r\n          '5xl': ['2.85rem', { lineHeight: '1' }],            \/\/ 3rem - 5%\r\n        }\r\n      }\r\n    }\r\n  }\r\n<\/script>\r\n\r\n<!-- Integration of Lucide icons -->\r\n<script src=\"https:\/\/unpkg.com\/lucide@latest\"><\/script>\r\n\r\n<style>\r\n    \/* Scoped CSS to avoid conflicts with page builders like Elementor *\/\r\n    #epoxy-estimator-widget .hidden { display: none !important; }\r\n    #epoxy-estimator-widget input[type=\"number\"]::-webkit-inner-spin-button, \r\n    #epoxy-estimator-widget input[type=\"number\"]::-webkit-outer-spin-button { \r\n        -webkit-appearance: none; margin: 0; \r\n    }\r\n    \r\n    \/* Custom scrollbar for the widget only *\/\r\n    #epoxy-estimator-widget ::-webkit-scrollbar { width: 8px; }\r\n    #epoxy-estimator-widget ::-webkit-scrollbar-track { background: #f1f5f9; }\r\n    #epoxy-estimator-widget ::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 4px; }\r\n    #epoxy-estimator-widget ::-webkit-scrollbar-thumb:hover { background: #94a3b8; }\r\n\r\n    \/* Styles for Expertise\/Education sections *\/\r\n    #epoxy-estimator-widget .tab-active { border-bottom-width: 4px; border-color: #2563eb; color: #1e40af; font-weight: 700; background-color: #eff6ff; }\r\n    #epoxy-estimator-widget .tab-inactive { color: #64748b; font-weight: 500; }\r\n    #epoxy-estimator-widget .tab-inactive:hover { background-color: #f8fafc; color: #0f172a; }\r\n    \r\n    #epoxy-estimator-widget .exp-btn-active { border-color: #059669; background-color: #d1fae5; color: #064e3b; font-weight: bold; border-left-width: 4px; box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05); }\r\n    #epoxy-estimator-widget .exp-btn-inactive { border-color: #e2e8f0; background-color: #ffffff; color: #475569; border-left-width: 4px; border-left-color: transparent; }\r\n    #epoxy-estimator-widget .exp-btn-inactive:hover { border-color: #a7f3d0; background-color: #ecfdf5; }\r\n\r\n    #epoxy-estimator-widget .fade-in { animation: fadeIn 0.4s ease-out forwards; }\r\n    @keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }\r\n    \r\n    #epoxy-estimator-widget .pulse-border { animation: pulseBorder 2s infinite; }\r\n    @keyframes pulseBorder { 0% { box-shadow: 0 0 0 0 rgba(16, 185, 129, 0.4); } 70% { box-shadow: 0 0 0 10px rgba(16, 185, 129, 0); } 100% { box-shadow: 0 0 0 0 rgba(16, 185, 129, 0); } }\r\n<\/style>\r\n\r\n<!-- Main Widget Container -->\r\n<div id=\"epoxy-estimator-widget\" class=\"bg-slate-50 text-slate-800 font-sans pb-20 text-base\">\r\n\r\n    <!-- EXPERTISE AND EDUCATION SECTIONS (DASHBOARD) -->\r\n    <div class=\"max-w-7xl mx-auto px-4 md:px-8 mt-4 mb-16\">\r\n        \r\n        <!-- Dashboard Navigation -->\r\n        <nav class=\"flex flex-wrap rounded-t-xl overflow-hidden border border-slate-200 bg-white shadow-sm mb-8\">\r\n            <button onclick=\"switchTab('expertise')\" id=\"tab-expertise\" class=\"tab-active flex-1 min-w-[150px] py-4 px-2 text-center transition-all duration-200 focus:outline-none flex justify-center items-center gap-2\">\r\n                <span class=\"text-xl\">\ud83d\udee0\ufe0f<\/span> Expertise & Equipment\r\n            <\/button>\r\n            <button onclick=\"switchTab('education')\" id=\"tab-education\" class=\"tab-inactive flex-1 min-w-[150px] py-4 px-2 text-center transition-all duration-200 border-l border-slate-200 focus:outline-none flex justify-center items-center gap-2\">\r\n                <span class=\"text-xl\">\ud83c\udf93<\/span> Education, Laws & Insurance\r\n            <\/button>\r\n        <\/nav>\r\n\r\n        <!-- EXPERTISE SECTION -->\r\n        <section id=\"section-expertise\" class=\"fade-in\">\r\n            <div class=\"bg-white rounded-xl shadow-md border border-slate-200 p-6 md:p-8\">\r\n                <div class=\"flex flex-col md:flex-row justify-between items-start md:items-center mb-6\">\r\n                    <div>\r\n                        <h2 class=\"text-2xl font-bold text-slate-800 mb-2 border-b-2 border-emerald-500 pb-2 inline-block\">Expertise & Equipment<\/h2>\r\n                        <p class=\"text-slate-600 mt-2\">Details of operations, materials, and tooling per service.<\/p>\r\n                    <\/div>\r\n                <\/div>\r\n\r\n                <div class=\"grid grid-cols-1 lg:grid-cols-5 gap-6\">\r\n                    <div class=\"lg:col-span-1 flex flex-col gap-2 border-r border-slate-100 pr-0 lg:pr-4\">\r\n                        <button onclick=\"loadExpertise('epoxy')\" id=\"exp-epoxy\" class=\"exp-btn exp-btn-active py-3 px-4 rounded-r-lg text-left transition-colors\">\r\n                            \ud83e\uddea Epoxy Coating\r\n                        <\/button>\r\n                        <button onclick=\"loadExpertise('tapis')\" id=\"exp-tapis\" class=\"exp-btn exp-btn-inactive py-3 px-4 rounded-r-lg text-left transition-colors\">\r\n                            \ud83e\uddf6 Carpet Install\r\n                        <\/button>\r\n                        <button onclick=\"loadExpertise('peinture')\" id=\"exp-peinture\" class=\"exp-btn exp-btn-inactive py-3 px-4 rounded-r-lg text-left transition-colors\">\r\n                            \ud83d\udd8c\ufe0f Comm. Painting\r\n                        <\/button>\r\n                        <button onclick=\"loadExpertise('nettoyage')\" id=\"exp-nettoyage\" class=\"exp-btn exp-btn-inactive py-3 px-4 rounded-r-lg text-left transition-colors\">\r\n                            \ud83e\uddf9 Pro Cleaning\r\n                        <\/button>\r\n                    <\/div>\r\n                    <div class=\"lg:col-span-4\" id=\"expertise-content-area\">\r\n                        <!-- Dynamic Content -->\r\n                    <\/div>\r\n                <\/div>\r\n            <\/div>\r\n        <\/section>\r\n\r\n        <!-- EDUCATION SECTION -->\r\n        <section id=\"section-education\" class=\"hidden fade-in\">\r\n            <div class=\"bg-white rounded-xl shadow-md border border-slate-200 overflow-hidden\">\r\n                <div class=\"bg-gradient-to-r from-blue-900 to-indigo-800 p-8 text-white\">\r\n                    <h2 class=\"text-3xl md:text-4xl font-extrabold mb-3 flex items-center gap-3\">\r\n                        <span>\ud83c\udf93<\/span> Glossary, Laws & Insurance Benefits\r\n                    <\/h2>\r\n                    <p class=\"text-indigo-100 text-lg max-w-3xl\">\r\n                        Educate your clients and justify your rates. A client who understands the law and the chemistry no longer buys a \"price\", but rather protection and peace of mind.\r\n                    <\/p>\r\n                <\/div>\r\n\r\n                <div class=\"p-6 md:p-8 space-y-12\">\r\n                    <!-- 1. TECHNICAL GLOSSARY -->\r\n                    <div>\r\n                        <h3 class=\"text-2xl font-bold text-slate-800 mb-6 flex items-center gap-2 border-b border-slate-200 pb-2\">\r\n                            <span class=\"text-blue-600\">\ud83d\udcd6<\/span> The Master's Glossary\r\n                        <\/h3>\r\n                        <div class=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4\">\r\n                            <div class=\"p-4 bg-slate-50 rounded-lg border border-slate-200 hover:shadow-md transition-shadow\">\r\n                                <h4 class=\"font-bold text-slate-900 mb-1 text-lg\">100% Solid Epoxy<\/h4>\r\n                                <p class=\"text-slate-600\">Pure resin without evaporating solvents. Applied thickness = final dry thickness. Zero shrinkage, maximum durability and mechanical resistance.<\/p>\r\n                            <\/div>\r\n                            <div class=\"p-4 bg-slate-50 rounded-lg border border-slate-200 hover:shadow-md transition-shadow\">\r\n                                <h4 class=\"font-bold text-slate-900 mb-1 text-lg\">Polyaspartic \/ Polyurea<\/h4>\r\n                                <p class=\"text-slate-600\">Evolution of epoxy. Ultra-fast drying (return to service in hours), extremely flexible, and most importantly <strong>100% UV resistant<\/strong> (never yellows in the sun).<\/p>\r\n                            <\/div>\r\n                            <div class=\"p-4 bg-slate-50 rounded-lg border border-slate-200 hover:shadow-md transition-shadow\">\r\n                                <h4 class=\"font-bold text-slate-900 mb-1 text-lg\">CSP (Concrete Surface Profile)<\/h4>\r\n                                <p class=\"text-slate-600\">The roughness scale of concrete (1 to 9). Durable epoxy requires a <strong>CSP of 2 or 3<\/strong>, achieved via diamond grinding, allowing the resin to mechanically \"anchor\" into the slab.<\/p>\r\n                            <\/div>\r\n                            <div class=\"p-4 bg-slate-50 rounded-lg border border-slate-200 hover:shadow-md transition-shadow\">\r\n                                <h4 class=\"font-bold text-slate-900 mb-1 text-lg\">Shotblasting<\/h4>\r\n                                <p class=\"text-slate-600\">Industrial preparation technique propelling steel beads at high speed to aggressively strip the concrete and expose the sound matrix.<\/p>\r\n                            <\/div>\r\n                            <div class=\"p-4 bg-slate-50 rounded-lg border border-slate-200 hover:shadow-md transition-shadow\">\r\n                                <h4 class=\"font-bold text-slate-900 mb-1 text-lg\">VOCs<\/h4>\r\n                                <p class=\"text-slate-600\"><em>Volatile Organic Compounds.<\/em> Toxic gases emitted by low-end paints. Our systems are 'Zero VOC' or 'Low VOC', guaranteeing total respiratory safety.<\/p>\r\n                            <\/div>\r\n                            <div class=\"p-4 bg-slate-50 rounded-lg border border-slate-200 hover:shadow-md transition-shadow\">\r\n                                <h4 class=\"font-bold text-slate-900 mb-1 text-lg\">Vapour Barrier<\/h4>\r\n                                <p class=\"text-slate-600\">Special primer applied as a first coat blocking moisture vapour transmission from the slab, the #1 cause of coating delamination (bubbling and peeling).<\/p>\r\n                            <\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n\r\n                    <!-- 2. LEGAL SHIELD -->\r\n                    <div>\r\n                        <h3 class=\"text-2xl font-bold text-slate-800 mb-6 flex items-center gap-2 border-b border-slate-200 pb-2\">\r\n                            <span class=\"text-red-600\">\u2696\ufe0f<\/span> The Legal Shield: Why \"Under the Table\" Costs Dearly\r\n                        <\/h3>\r\n                        <div class=\"grid grid-cols-1 md:grid-cols-3 gap-6\">\r\n                            <div class=\"bg-red-50 p-6 rounded-xl border border-red-200\">\r\n                                <div class=\"w-12 h-12 bg-red-100 rounded-full flex items-center justify-center text-red-600 text-2xl mb-4\">\ud83c\udfe2<\/div>\r\n                                <h4 class=\"font-bold text-red-900 mb-2\">RBQ License (The Company)<\/h4>\r\n                                <p class=\"text-red-800 mb-3\">The R\u00e9gie du b\u00e2timent du Qu\u00e9bec regulates company legality. Working without an RBQ license is a criminal offense.<\/p>\r\n                                <p class=\"font-semibold text-red-900\">The client's risk:<\/p>\r\n                                <p class=\"text-xs text-red-700 mt-1\">No warranty. In case of defects, the client has access to <strong>no compensation fund<\/strong> (the mandatory $40,000 surety bond only covers certified companies).<\/p>\r\n                            <\/div>\r\n                            <div class=\"bg-orange-50 p-6 rounded-xl border border-orange-200\">\r\n                                <div class=\"w-12 h-12 bg-orange-100 rounded-full flex items-center justify-center text-orange-600 text-2xl mb-4\">\ud83d\udc77<\/div>\r\n                                <h4 class=\"font-bold text-orange-900 mb-2\">CCQ Cards (The Worker)<\/h4>\r\n                                <p class=\"text-orange-800 mb-3\">The Commission de la construction du Qu\u00e9bec governs the workforce. It is mandatory in commercial\/industrial sectors.<\/p>\r\n                                <p class=\"font-semibold text-orange-900\">The client's risk:<\/p>\r\n                                <p class=\"text-xs text-orange-700 mt-1\">The CCQ inspects regularly. If they find 'under the table' workers on your commercial property, <strong>your site is immediately shut down<\/strong>, causing critical delays.<\/p>\r\n                            <\/div>\r\n                            <div class=\"bg-yellow-50 p-6 rounded-xl border border-yellow-200\">\r\n                                <div class=\"w-12 h-12 bg-yellow-100 rounded-full flex items-center justify-center text-yellow-600 text-2xl mb-4\">\ud83d\udea7<\/div>\r\n                                <h4 class=\"font-bold text-yellow-900 mb-2\">CNESST & Liability<\/h4>\r\n                                <p class=\"text-yellow-800 mb-3\">Workplace safety. Our workers are trained (ASP Construction) and covered.<\/p>\r\n                                <p class=\"font-semibold text-yellow-900\">The client's risk:<\/p>\r\n                                <p class=\"text-xs text-yellow-700 mt-1\">If an undeclared worker gets injured on your property, <strong>the building owner can be personally sued<\/strong> for negligence and pay medical expenses.<\/p>\r\n                            <\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n\r\n                    <!-- 3. INSURANCE BENEFIT -->\r\n                    <div class=\"bg-gradient-to-br from-emerald-800 to-teal-900 p-8 rounded-2xl shadow-lg relative overflow-hidden pulse-border\">\r\n                        <div class=\"absolute top-0 right-0 -mt-4 -mr-4 text-9xl opacity-10\">\ud83d\udee1\ufe0f<\/div>\r\n                        <div class=\"relative z-10\">\r\n                            <h3 class=\"text-2xl md:text-3xl font-bold text-white mb-4 flex items-center gap-3\">\r\n                                \ud83d\udee1\ufe0f The Closing Argument: Insurance Benefits\r\n                            <\/h3>\r\n                            <p class=\"text-emerald-100 text-lg mb-6\">\r\n                                A certified coating is not an expense, it is an active protection of the building that directly interests commercial insurance brokers.\r\n                            <\/p>\r\n                            \r\n                            <div class=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\r\n                                <div class=\"bg-white\/10 backdrop-blur-sm p-5 rounded-xl border border-emerald-500\/30\">\r\n                                    <h4 class=\"font-bold text-emerald-300 mb-2 flex items-center gap-2\"><span>\ud83d\udca7<\/span> Water Damage Prevention<\/h4>\r\n                                    <p class=\"text-emerald-50 leading-relaxed\">\r\n                                        Professional-grade epoxy creates a perfect waterproof basin. In the event of pipe leaks or chemical spills, the concrete absorbs nothing and lower floors are protected. Insurers favour sealed structures.\r\n                                    <\/p>\r\n                                <\/div>\r\n                                <div class=\"bg-white\/10 backdrop-blur-sm p-5 rounded-xl border border-emerald-500\/30\">\r\n                                    <h4 class=\"font-bold text-emerald-300 mb-2 flex items-center gap-2\"><span>\ud83d\udeb6<\/span> Lawsuit Reduction (Slips and Falls)<\/h4>\r\n                                    <p class=\"text-emerald-50 leading-relaxed\">\r\n                                        Adding textured anti-slip additives (silica, aluminum oxide) certifies the floor's coefficient of friction. This drastically reduces slip and fall risks. Fewer risks = massive leverage to negotiate the business's civil liability insurance premium.\r\n                                    <\/p>\r\n                                <\/div>\r\n                                <div class=\"bg-white\/10 backdrop-blur-sm p-5 rounded-xl border border-emerald-500\/30\">\r\n                                    <h4 class=\"font-bold text-emerald-300 mb-2 flex items-center gap-2\"><span>\ud83d\udd25<\/span> Fire Retardant & Sanitary Compliance<\/h4>\r\n                                    <p class=\"text-emerald-50 leading-relaxed\">\r\n                                        Our resins can include flame-retardant and antibacterial properties (MAPAQ requirements). Insurers require these standards in industrial kitchens, garages, and laboratories to keep coverage valid.\r\n                                    <\/p>\r\n                                <\/div>\r\n                                <div class=\"bg-white\/10 backdrop-blur-sm p-5 rounded-xl border border-emerald-500\/30\">\r\n                                    <h4 class=\"font-bold text-emerald-300 mb-2 flex items-center gap-2\"><span>\ud83d\udcdc<\/span> Proof of Work (Certificate)<\/h4>\r\n                                    <p class=\"text-emerald-50 leading-relaxed\">\r\n                                        We are insured ($5M Civil Liability). Upon completion, the client receives a detailed official invoice and a written warranty. This is the only document recognized by a claims adjuster to prove added value to the building.\r\n                                    <\/p>\r\n                                <\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n\r\n                <\/div>\r\n            <\/div>\r\n        <\/section>\r\n    <\/div>\r\n\r\n    <!-- MAIN CALCULATOR AREA -->\r\n    <main class=\"max-w-7xl mx-auto mt-8 px-4 md:px-8 grid grid-cols-1 lg:grid-cols-3 gap-8\">\r\n        \r\n        <!-- LEFT COLUMN: CALCULATOR -->\r\n        <div class=\"lg:col-span-2 space-y-8\">\r\n            \r\n            <!-- SECTION 1: PAINTING -->\r\n            <section class=\"bg-white p-6 md:p-8 rounded-2xl shadow-sm border border-slate-200\">\r\n                <h2 class=\"text-2xl font-bold mb-6 flex items-center gap-2 text-slate-800\">\r\n                    <i data-lucide=\"paint-roller\" class=\"w-6 h-6 text-blue-600\"><\/i>\r\n                    1. Apartment Painting\r\n                <\/h2>\r\n                <div class=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\r\n                    \r\n                    <!-- Studio -->\r\n                    <div class=\"p-4 border border-slate-100 rounded-xl bg-slate-50 transition hover:shadow-md hover:border-blue-200\">\r\n                        <label class=\"block font-semibold text-slate-700 mb-1\">Studios (1 \u00bd and 2 \u00bd)<\/label>\r\n                        <p class=\"text-xs text-slate-500 mb-3 h-8\">Standard prep, 2 coats walls\/ceilings, woodwork.<\/p>\r\n                        <div class=\"flex items-center gap-3\">\r\n                            <input type=\"number\" min=\"0\" id=\"unit-studio\" placeholder=\"0\" class=\"unit-input w-24 p-2 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 text-lg font-bold text-center\" data-price=\"1200\" \/>\r\n                            <span class=\"font-medium text-slate-600\">units<\/span>\r\n                        <\/div>\r\n                        <div class=\"mt-2 text-right font-bold text-blue-600\">$1,200 \/ ea.<\/div>\r\n                    <\/div>\r\n\r\n                    <!-- 1 Bedroom -->\r\n                    <div class=\"p-4 border border-slate-100 rounded-xl bg-slate-50 transition hover:shadow-md hover:border-blue-200\">\r\n                        <label class=\"block font-semibold text-slate-700 mb-1\">1 Bedroom (3 \u00bd)<\/label>\r\n                        <p class=\"text-xs text-slate-500 mb-3 h-8\">Standard prep, 2 coats walls\/ceilings, woodwork.<\/p>\r\n                        <div class=\"flex items-center gap-3\">\r\n                            <input type=\"number\" min=\"0\" id=\"unit-ch1\" placeholder=\"0\" class=\"unit-input w-24 p-2 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 text-lg font-bold text-center\" data-price=\"1800\" \/>\r\n                            <span class=\"font-medium text-slate-600\">units<\/span>\r\n                        <\/div>\r\n                        <div class=\"mt-2 text-right font-bold text-blue-600\">$1,800 \/ ea.<\/div>\r\n                    <\/div>\r\n\r\n                    <!-- 2 Bedrooms -->\r\n                    <div class=\"p-4 border border-slate-100 rounded-xl bg-slate-50 transition hover:shadow-md hover:border-blue-200\">\r\n                        <label class=\"block font-semibold text-slate-700 mb-1\">2 Bedrooms (4 \u00bd)<\/label>\r\n                        <p class=\"text-xs text-slate-500 mb-3 h-8\">Standard prep, 2 coats walls\/ceilings, woodwork.<\/p>\r\n                        <div class=\"flex items-center gap-3\">\r\n                            <input type=\"number\" min=\"0\" id=\"unit-ch2\" placeholder=\"0\" class=\"unit-input w-24 p-2 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 text-lg font-bold text-center\" data-price=\"2500\" \/>\r\n                            <span class=\"font-medium text-slate-600\">units<\/span>\r\n                        <\/div>\r\n                        <div class=\"mt-2 text-right font-bold text-blue-600\">$2,500 \/ ea.<\/div>\r\n                    <\/div>\r\n\r\n                    <!-- 3 Bedrooms -->\r\n                    <div class=\"p-4 border border-slate-100 rounded-xl bg-slate-50 transition hover:shadow-md hover:border-blue-200\">\r\n                        <label class=\"block font-semibold text-slate-700 mb-1\">3 Bedrooms (5 \u00bd+)<\/label>\r\n                        <p class=\"text-xs text-slate-500 mb-3 h-8\">Standard prep, 2 coats walls\/ceilings, woodwork.<\/p>\r\n                        <div class=\"flex items-center gap-3\">\r\n                            <input type=\"number\" min=\"0\" id=\"unit-ch3\" placeholder=\"0\" class=\"unit-input w-24 p-2 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 text-lg font-bold text-center\" data-price=\"3200\" \/>\r\n                            <span class=\"font-medium text-slate-600\">units<\/span>\r\n                        <\/div>\r\n                        <div class=\"mt-2 text-right font-bold text-blue-600\">$3,200 \/ ea.<\/div>\r\n                    <\/div>\r\n                <\/div>\r\n            <\/section>\r\n\r\n            <!-- SECTION 2: EPOXY EXPRESS INC -->\r\n            <section class=\"bg-white p-6 md:p-8 rounded-2xl shadow-sm border border-slate-200\">\r\n                <div class=\"flex items-center justify-between mb-6\">\r\n                    <h2 class=\"text-2xl font-bold flex items-center gap-2 text-slate-800\">\r\n                        <i data-lucide=\"droplets\" class=\"w-6 h-6 text-indigo-600\"><\/i>\r\n                        2. Epoxy Express Inc. Services\r\n                    <\/h2>\r\n                    <span class=\"bg-indigo-100 text-indigo-800 text-xs font-bold px-3 py-1 rounded-full uppercase tracking-wide\">Options & Upgrades<\/span>\r\n                <\/div>\r\n                \r\n                <p class=\"text-slate-500 mb-6\">Epoxy is ultra-resistant, easy to maintain, and provides a high-end modern look. Perfect for making your units profitable long-term.<\/p>\r\n\r\n                <!-- Options par unit\u00e9 (Matrice) -->\r\n                <h3 class=\"font-bold text-slate-700 mb-3 text-lg border-b pb-2\">Coatings per unit<\/h3>\r\n                <div class=\"space-y-4 mb-8\">\r\n                    \r\n                    <!-- Cuisine Epoxy -->\r\n                    <div id=\"container-epoxy-kitchen\" class=\"border border-slate-200 rounded-xl overflow-hidden transition-all duration-300\">\r\n                        <label class=\"flex items-center p-4 cursor-pointer hover:bg-slate-50\">\r\n                            <input type=\"checkbox\" id=\"epoxy-kitchen\" data-target=\"matrix-epoxy-kitchen\" class=\"main-option-checkbox w-5 h-5 text-indigo-600 focus:ring-indigo-500 rounded\" disabled>\r\n                            <div class=\"ml-4 flex-1\">\r\n                                <span class=\"font-bold text-slate-800\">Epoxy Kitchen Floor<\/span>\r\n                                <span class=\"block text-xs text-slate-500\">Waterproof, stain-resistant, glossy finish. ($800 \/ unit)<\/span>\r\n                            <\/div>\r\n                        <\/label>\r\n                        <div id=\"matrix-epoxy-kitchen\" class=\"matrix-container hidden bg-indigo-50\/50 p-4 border-t border-indigo-100\">\r\n                            <p class=\"text-xs font-bold text-indigo-800 mb-3 uppercase tracking-wider\">Select the number of units to treat:<\/p>\r\n                            <div class=\"grid grid-cols-2 md:grid-cols-4 gap-4\">\r\n                                <div><label class=\"block text-xs font-semibold text-slate-700 mb-1\">Studios (Max <span class=\"max-lbl-studio text-indigo-600\">0<\/span>)<\/label><input type=\"number\" min=\"0\" class=\"sub-opt-input w-full p-2 border border-indigo-200 rounded text-center font-bold\" data-price=\"800\" data-unit-type=\"studio\"><\/div>\r\n                                <div><label class=\"block text-xs font-semibold text-slate-700 mb-1\">1 Bed (Max <span class=\"max-lbl-ch1 text-indigo-600\">0<\/span>)<\/label><input type=\"number\" min=\"0\" class=\"sub-opt-input w-full p-2 border border-indigo-200 rounded text-center font-bold\" data-price=\"800\" data-unit-type=\"ch1\"><\/div>\r\n                                <div><label class=\"block text-xs font-semibold text-slate-700 mb-1\">2 Beds (Max <span class=\"max-lbl-ch2 text-indigo-600\">0<\/span>)<\/label><input type=\"number\" min=\"0\" class=\"sub-opt-input w-full p-2 border border-indigo-200 rounded text-center font-bold\" data-price=\"800\" data-unit-type=\"ch2\"><\/div>\r\n                                <div><label class=\"block text-xs font-semibold text-slate-700 mb-1\">3 Beds (Max <span class=\"max-lbl-ch3 text-indigo-600\">0<\/span>)<\/label><input type=\"number\" min=\"0\" class=\"sub-opt-input w-full p-2 border border-indigo-200 rounded text-center font-bold\" data-price=\"800\" data-unit-type=\"ch3\"><\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n\r\n                    <!-- Balcon Epoxy -->\r\n                    <div id=\"container-epoxy-balcony\" class=\"border border-slate-200 rounded-xl overflow-hidden transition-all duration-300\">\r\n                        <label class=\"flex items-center p-4 cursor-pointer hover:bg-slate-50\">\r\n                            <input type=\"checkbox\" id=\"epoxy-balcony\" data-target=\"matrix-epoxy-balcony\" class=\"main-option-checkbox w-5 h-5 text-indigo-600 focus:ring-indigo-500 rounded\" disabled>\r\n                            <div class=\"ml-4 flex-1\">\r\n                                <span class=\"font-bold text-slate-800\">Epoxy Flake Balconies<\/span>\r\n                                <span class=\"block text-xs text-slate-500\">Anti-slip, withstands the Quebec winter. ($600 \/ unit)<\/span>\r\n                            <\/div>\r\n                        <\/label>\r\n                        <div id=\"matrix-epoxy-balcony\" class=\"matrix-container hidden bg-indigo-50\/50 p-4 border-t border-indigo-100\">\r\n                            <p class=\"text-xs font-bold text-indigo-800 mb-3 uppercase tracking-wider\">Select the number of balconies:<\/p>\r\n                            <div class=\"grid grid-cols-2 md:grid-cols-4 gap-4\">\r\n                                <div><label class=\"block text-xs font-semibold text-slate-700 mb-1\">Studios (Max <span class=\"max-lbl-studio text-indigo-600\">0<\/span>)<\/label><input type=\"number\" min=\"0\" class=\"sub-opt-input w-full p-2 border border-indigo-200 rounded text-center font-bold\" data-price=\"600\" data-unit-type=\"studio\"><\/div>\r\n                                <div><label class=\"block text-xs font-semibold text-slate-700 mb-1\">1 Bed (Max <span class=\"max-lbl-ch1 text-indigo-600\">0<\/span>)<\/label><input type=\"number\" min=\"0\" class=\"sub-opt-input w-full p-2 border border-indigo-200 rounded text-center font-bold\" data-price=\"600\" data-unit-type=\"ch1\"><\/div>\r\n                                <div><label class=\"block text-xs font-semibold text-slate-700 mb-1\">2 Beds (Max <span class=\"max-lbl-ch2 text-indigo-600\">0<\/span>)<\/label><input type=\"number\" min=\"0\" class=\"sub-opt-input w-full p-2 border border-indigo-200 rounded text-center font-bold\" data-price=\"600\" data-unit-type=\"ch2\"><\/div>\r\n                                <div><label class=\"block text-xs font-semibold text-slate-700 mb-1\">3 Beds (Max <span class=\"max-lbl-ch3 text-indigo-600\">0<\/span>)<\/label><input type=\"number\" min=\"0\" class=\"sub-opt-input w-full p-2 border border-indigo-200 rounded text-center font-bold\" data-price=\"600\" data-unit-type=\"ch3\"><\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n\r\n                    <!-- Plancher complet Epoxy -->\r\n                    <div id=\"container-epoxy-floor\" class=\"border border-slate-200 rounded-xl overflow-hidden transition-all duration-300\">\r\n                        <label class=\"flex items-center p-4 cursor-pointer hover:bg-slate-50\">\r\n                            <input type=\"checkbox\" id=\"epoxy-floor\" data-target=\"matrix-epoxy-floor\" class=\"main-option-checkbox w-5 h-5 text-indigo-600 focus:ring-indigo-500 rounded\" disabled>\r\n                            <div class=\"ml-4 flex-1\">\r\n                                <span class=\"font-bold text-slate-800\">Full Apartment Epoxy Floor<\/span>\r\n                                <span class=\"block text-xs text-slate-500\">100% tenant-proof unit. Solid color or metallic finish. ($2,500 \/ unit)<\/span>\r\n                            <\/div>\r\n                        <\/label>\r\n                        <div id=\"matrix-epoxy-floor\" class=\"matrix-container hidden bg-indigo-50\/50 p-4 border-t border-indigo-100\">\r\n                            <div class=\"grid grid-cols-2 md:grid-cols-4 gap-4\">\r\n                                <div><label class=\"block text-xs font-semibold text-slate-700 mb-1\">Studios (Max <span class=\"max-lbl-studio text-indigo-600\">0<\/span>)<\/label><input type=\"number\" min=\"0\" class=\"sub-opt-input w-full p-2 border border-indigo-200 rounded text-center font-bold\" data-price=\"2500\" data-unit-type=\"studio\"><\/div>\r\n                                <div><label class=\"block text-xs font-semibold text-slate-700 mb-1\">1 Bed (Max <span class=\"max-lbl-ch1 text-indigo-600\">0<\/span>)<\/label><input type=\"number\" min=\"0\" class=\"sub-opt-input w-full p-2 border border-indigo-200 rounded text-center font-bold\" data-price=\"2500\" data-unit-type=\"ch1\"><\/div>\r\n                                <div><label class=\"block text-xs font-semibold text-slate-700 mb-1\">2 Beds (Max <span class=\"max-lbl-ch2 text-indigo-600\">0<\/span>)<\/label><input type=\"number\" min=\"0\" class=\"sub-opt-input w-full p-2 border border-indigo-200 rounded text-center font-bold\" data-price=\"2500\" data-unit-type=\"ch2\"><\/div>\r\n                                <div><label class=\"block text-xs font-semibold text-slate-700 mb-1\">3 Beds (Max <span class=\"max-lbl-ch3 text-indigo-600\">0<\/span>)<\/label><input type=\"number\" min=\"0\" class=\"sub-opt-input w-full p-2 border border-indigo-200 rounded text-center font-bold\" data-price=\"2500\" data-unit-type=\"ch3\"><\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n\r\n                    <!-- Couche Polyur\u00e9thane -->\r\n                    <div id=\"container-epoxy-poly\" class=\"border border-slate-200 rounded-xl overflow-hidden transition-all duration-300\">\r\n                        <label class=\"flex items-center p-4 cursor-pointer hover:bg-slate-50\">\r\n                            <input type=\"checkbox\" id=\"epoxy-poly\" data-target=\"matrix-epoxy-poly\" class=\"main-option-checkbox w-5 h-5 text-blue-600 focus:ring-blue-500 rounded\" disabled>\r\n                            <div class=\"ml-4 flex-1\">\r\n                                <span class=\"font-bold text-slate-800\">Polyurethane Protective Topcoat (Anti-infiltration)<\/span>\r\n                                <span class=\"block text-xs text-slate-500\">The ultimate shield: prevents water from leaking to the floor below. ($300 \/ unit)<\/span>\r\n                            <\/div>\r\n                        <\/label>\r\n                        <div id=\"matrix-epoxy-poly\" class=\"matrix-container hidden bg-blue-50\/50 p-4 border-t border-blue-100\">\r\n                            <div class=\"grid grid-cols-2 md:grid-cols-4 gap-4\">\r\n                                <div><label class=\"block text-xs font-semibold text-slate-700 mb-1\">Studios (Max <span class=\"max-lbl-studio text-blue-600\">0<\/span>)<\/label><input type=\"number\" min=\"0\" class=\"sub-opt-input w-full p-2 border border-blue-200 rounded text-center font-bold\" data-price=\"300\" data-unit-type=\"studio\"><\/div>\r\n                                <div><label class=\"block text-xs font-semibold text-slate-700 mb-1\">1 Bed (Max <span class=\"max-lbl-ch1 text-blue-600\">0<\/span>)<\/label><input type=\"number\" min=\"0\" class=\"sub-opt-input w-full p-2 border border-blue-200 rounded text-center font-bold\" data-price=\"300\" data-unit-type=\"ch1\"><\/div>\r\n                                <div><label class=\"block text-xs font-semibold text-slate-700 mb-1\">2 Beds (Max <span class=\"max-lbl-ch2 text-blue-600\">0<\/span>)<\/label><input type=\"number\" min=\"0\" class=\"sub-opt-input w-full p-2 border border-blue-200 rounded text-center font-bold\" data-price=\"300\" data-unit-type=\"ch2\"><\/div>\r\n                                <div><label class=\"block text-xs font-semibold text-slate-700 mb-1\">3 Beds (Max <span class=\"max-lbl-ch3 text-blue-600\">0<\/span>)<\/label><input type=\"number\" min=\"0\" class=\"sub-opt-input w-full p-2 border border-blue-200 rounded text-center font-bold\" data-price=\"300\" data-unit-type=\"ch3\"><\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n\r\n                <!-- Forfaits Immeubles -->\r\n                <h3 class=\"font-bold text-slate-700 mb-3 text-lg border-b pb-2\">Common Building Upgrades (Fixed Prices)<\/h3>\r\n                <div class=\"grid grid-cols-1 md:grid-cols-2 gap-3\">\r\n                    <label class=\"option-fixed-container flex items-center p-4 border border-slate-200 rounded-xl cursor-pointer hover:bg-slate-50 transition-all\">\r\n                        <input type=\"checkbox\" class=\"fixed-option-checkbox w-5 h-5 text-indigo-600 focus:ring-indigo-500 rounded\" data-price=\"2500\" data-name=\"Building Entrance (Epoxy)\">\r\n                        <div class=\"ml-3\">\r\n                            <span class=\"block font-bold text-slate-800\">Building Entrance<\/span>\r\n                            <span class=\"block text-xs text-slate-500\">$2,500 (High traffic)<\/span>\r\n                        <\/div>\r\n                    <\/label>\r\n\r\n                    <label class=\"option-fixed-container flex items-center p-4 border border-slate-200 rounded-xl cursor-pointer hover:bg-slate-50 transition-all\">\r\n                        <input type=\"checkbox\" class=\"fixed-option-checkbox w-5 h-5 text-indigo-600 focus:ring-indigo-500 rounded\" data-price=\"4000\" data-name=\"Underground Garage (Epoxy)\">\r\n                        <div class=\"ml-3\">\r\n                            <span class=\"block font-bold text-slate-800\">Underground Garage<\/span>\r\n                            <span class=\"block text-xs text-slate-500\">$4,000 (Salt\/oil resistant)<\/span>\r\n                        <\/div>\r\n                    <\/label>\r\n\r\n                    <label class=\"option-fixed-container flex items-center p-4 border border-slate-200 rounded-xl cursor-pointer hover:bg-slate-50 transition-all\">\r\n                        <input type=\"checkbox\" class=\"fixed-option-checkbox w-5 h-5 text-indigo-600 focus:ring-indigo-500 rounded\" data-price=\"3500\" data-name=\"Common Areas (Epoxy\/Paint)\">\r\n                        <div class=\"ml-3\">\r\n                            <span class=\"block font-bold text-slate-800\">Common Areas (Hallways)<\/span>\r\n                            <span class=\"block text-xs text-slate-500\">$3,500 (Epoxy + Paint)<\/span>\r\n                        <\/div>\r\n                    <\/label>\r\n\r\n                    <label class=\"option-fixed-container flex items-center p-4 border border-slate-200 rounded-xl cursor-pointer hover:bg-slate-50 transition-all\">\r\n                        <input type=\"checkbox\" class=\"fixed-option-checkbox w-5 h-5 text-indigo-600 focus:ring-indigo-500 rounded\" data-price=\"2000\" data-name=\"Staircases (Anti-slip Epoxy)\">\r\n                        <div class=\"ml-3\">\r\n                            <span class=\"block font-bold text-slate-800\">Staircases (Anti-slip)<\/span>\r\n                            <span class=\"block text-xs text-slate-500\">$2,000 (Max security)<\/span>\r\n                        <\/div>\r\n                    <\/label>\r\n\r\n                    <label class=\"option-fixed-container md:col-span-2 flex items-center p-4 border border-slate-200 rounded-xl cursor-pointer hover:bg-slate-50 transition-all\">\r\n                        <input type=\"checkbox\" class=\"fixed-option-checkbox w-5 h-5 text-teal-500 focus:ring-teal-500 rounded\" data-price=\"3000\" data-name=\"Outdoor Pool Deck (Exterior Epoxy)\">\r\n                        <div class=\"ml-3\">\r\n                            <span class=\"block font-bold text-slate-800\">Outdoor Pool Deck<\/span>\r\n                            <span class=\"block text-xs text-slate-500\">$3,000 (Rubber\/Quartz Epoxy, UV and chlorine resistant)<\/span>\r\n                        <\/div>\r\n                    <\/label>\r\n                <\/div>\r\n\r\n            <\/section>\r\n\r\n            <!-- SECTION 3: COMMUNAUTAIRE -->\r\n            <section class=\"bg-white p-6 md:p-8 rounded-2xl shadow-sm border border-slate-200\">\r\n                <h2 class=\"text-2xl font-bold mb-2 flex items-center gap-2 text-slate-800\">\r\n                    <i data-lucide=\"heart-handshake\" class=\"w-6 h-6 text-red-500\"><\/i>\r\n                    3. Community Involvement Program\r\n                <\/h2>\r\n                <p class=\"text-slate-500 mb-6\">We offer a corporate contribution (donation) of up to 30% of the work for social projects or NPOs.<\/p>\r\n                \r\n                <div class=\"space-y-3\">\r\n                    <label id=\"container-comm-none\" class=\"flex items-start p-4 border rounded-xl cursor-pointer transition-all border-red-500 bg-red-50\">\r\n                        <input type=\"radio\" name=\"community-discount\" id=\"comm-none\" value=\"0\" class=\"mt-1 w-5 h-5 text-red-600 focus:ring-red-500\" checked \/>\r\n                        <div class=\"ml-4 flex-1\">\r\n                            <span class=\"font-bold text-slate-800\">Regular Private Project<\/span>\r\n                            <p class=\"text-xs text-slate-500 mt-1\">Standard corporate pricing.<\/p>\r\n                        <\/div>\r\n                    <\/label>\r\n\r\n                    <label id=\"container-comm-obnl\" class=\"flex items-start p-4 border rounded-xl cursor-pointer transition-all border-slate-200 hover:bg-slate-50\">\r\n                        <input type=\"radio\" name=\"community-discount\" id=\"comm-obnl\" value=\"0.10\" class=\"mt-1 w-5 h-5 text-red-600 focus:ring-red-500\" \/>\r\n                        <div class=\"ml-4 flex-1\">\r\n                            <div class=\"flex justify-between items-center\">\r\n                                <span class=\"font-bold text-slate-800\">NPOs & Cooperatives<\/span>\r\n                                <span class=\"font-bold text-red-600 bg-red-100 px-2 py-0.5 rounded text-xs\">10% Donation<\/span>\r\n                            <\/div>\r\n                        <\/div>\r\n                    <\/label>\r\n\r\n                    <label id=\"container-comm-active\" class=\"flex items-start p-4 border rounded-xl cursor-pointer transition-all border-slate-200 hover:bg-slate-50\">\r\n                        <input type=\"radio\" name=\"community-discount\" id=\"comm-active\" value=\"0.30\" class=\"mt-1 w-5 h-5 text-red-600 focus:ring-red-500\" \/>\r\n                        <div class=\"ml-4 flex-1\">\r\n                            <div class=\"flex justify-between items-center\">\r\n                                <span class=\"font-bold text-slate-800\">Training Site \/ Participation<\/span>\r\n                                <span class=\"font-bold text-red-600 bg-red-100 px-2 py-0.5 rounded text-xs\">30% Donation<\/span>\r\n                            <\/div>\r\n                            <p class=\"text-xs text-slate-500 mt-1\">The community participates in the preparation.<\/p>\r\n                        <\/div>\r\n                    <\/label>\r\n                <\/div>\r\n            <\/section>\r\n\r\n        <\/div>\r\n\r\n        <!-- RIGHT COLUMN: SUMMARY AND FORM -->\r\n        <div class=\"lg:col-span-1\">\r\n            <div class=\"sticky top-8 space-y-6\">\r\n                \r\n                <!-- Sommaire Financier -->\r\n                <div class=\"bg-white rounded-2xl shadow-xl border border-slate-200 overflow-hidden\">\r\n                    <div class=\"bg-slate-900 text-white p-5\">\r\n                        <h3 class=\"text-xl font-bold flex items-center gap-2\">\r\n                            <i data-lucide=\"calculator\" class=\"w-5 h-5\"><\/i> Estimate Summary\r\n                        <\/h3>\r\n                    <\/div>\r\n                    \r\n                    <div class=\"p-5 space-y-4\">\r\n                        <div class=\"flex justify-between\">\r\n                            <span class=\"text-slate-600 font-medium\">Units to paint:<\/span>\r\n                            <span class=\"font-bold text-blue-600\" id=\"summary-total-units\">0<\/span>\r\n                        <\/div>\r\n                        <div class=\"flex justify-between\">\r\n                            <span class=\"text-slate-600 font-medium\">Base painting:<\/span>\r\n                            <span class=\"font-bold text-slate-800\" id=\"summary-base-cost\">$0<\/span>\r\n                        <\/div>\r\n                        \r\n                        <div id=\"summary-epoxy-row\" class=\"flex justify-between text-indigo-600 hidden\">\r\n                            <span>Epoxy (Units):<\/span>\r\n                            <span class=\"font-bold\" id=\"summary-epoxy-cost\">+$0<\/span>\r\n                        <\/div>\r\n\r\n                        <div id=\"summary-fixed-row\" class=\"flex justify-between text-teal-600 hidden\">\r\n                            <span>Common \/ Fixed areas:<\/span>\r\n                            <span class=\"font-bold\" id=\"summary-fixed-cost\">+$0<\/span>\r\n                        <\/div>\r\n\r\n                        <div class=\"pt-3 border-t border-slate-100 flex justify-between items-center\">\r\n                            <span class=\"text-slate-500 font-bold uppercase tracking-wider text-xs\">Gross subtotal:<\/span>\r\n                            <span class=\"font-bold text-slate-700\" id=\"summary-subtotal\">$0<\/span>\r\n                        <\/div>\r\n\r\n                        <div id=\"summary-community-row\" class=\"flex justify-between items-center bg-red-50 p-2 rounded-lg border border-red-100 hidden\">\r\n                            <span class=\"text-red-700 font-semibold flex items-center gap-1 text-xs\">\r\n                                <i data-lucide=\"heart\" class=\"w-3 h-3\"><\/i> Community donation\r\n                            <\/span>\r\n                            <span class=\"font-bold text-red-700\" id=\"summary-community-cost\">-$0<\/span>\r\n                        <\/div>\r\n\r\n                        <div class=\"flex justify-between items-start bg-orange-50 p-3 rounded-lg border border-orange-100\">\r\n                            <div>\r\n                                <span class=\"text-orange-800 font-bold flex items-center gap-1 text-xs uppercase tracking-wider\">\r\n                                    Contingency Fund (20%)\r\n                                <\/span>\r\n                                <span class=\"text-[10px] text-orange-600 block mt-0.5\">Safety margin for unforeseen issues. Not billed if unused.<\/span>\r\n                            <\/div>\r\n                            <span class=\"font-bold text-orange-700 mt-0.5\" id=\"summary-contingency\">+$0<\/span>\r\n                        <\/div>\r\n\r\n                        <div class=\"pt-3 border-t-2 border-slate-800 flex justify-between items-end\">\r\n                            <span class=\"text-slate-800 font-black text-lg\">ESTIMATED TOTAL<\/span>\r\n                            <span class=\"font-black text-2xl text-blue-700\" id=\"summary-final\">$0<\/span>\r\n                        <\/div>\r\n                        <p class=\"text-[10px] text-slate-400 text-right\">* Taxes not included. Estimate subject to validation.<\/p>\r\n                    <\/div>\r\n                <\/div>\r\n\r\n                <!-- Formulaire de contact & V\u00e9rification -->\r\n                <div class=\"bg-white rounded-2xl shadow-lg border border-slate-200 p-6\" id=\"form-container\">\r\n                    <h3 id=\"form-title\" class=\"text-lg font-bold text-slate-800 mb-4 border-b pb-2\">Client Information<\/h3>\r\n                    \r\n                    <!-- Etape 1: Le Formulaire -->\r\n                    <form id=\"contact-form\" class=\"space-y-4\">\r\n                        <div class=\"grid grid-cols-2 gap-3\">\r\n                            <div>\r\n                                <label class=\"block text-xs font-semibold text-slate-600 mb-1\">First & Last Name *<\/label>\r\n                                <input required type=\"text\" id=\"input-name\" class=\"w-full p-2.5 bg-slate-50 border border-slate-300 rounded-lg text-sm focus:ring-2 focus:ring-blue-500 outline-none\" placeholder=\"John Doe\" \/>\r\n                            <\/div>\r\n                            <div>\r\n                                <label class=\"block text-xs font-semibold text-slate-600 mb-1\">Phone *<\/label>\r\n                                <input required type=\"tel\" id=\"input-phone\" class=\"w-full p-2.5 bg-slate-50 border border-slate-300 rounded-lg text-sm focus:ring-2 focus:ring-blue-500 outline-none\" placeholder=\"(555) 555-5555\" \/>\r\n                            <\/div>\r\n                        <\/div>\r\n\r\n                        <div>\r\n                            <label class=\"block text-xs font-semibold text-slate-600 mb-1\">Email *<\/label>\r\n                            <input required type=\"email\" id=\"input-email\" class=\"w-full p-2.5 bg-slate-50 border border-slate-300 rounded-lg text-sm focus:ring-2 focus:ring-blue-500 outline-none\" placeholder=\"john@company.com\" \/>\r\n                        <\/div>\r\n\r\n                        <div>\r\n                            <label class=\"block text-xs font-semibold text-slate-600 mb-1\">Building \/ Company Address<\/label>\r\n                            <input type=\"text\" id=\"input-address\" class=\"w-full p-2.5 bg-slate-50 border border-slate-300 rounded-lg text-sm focus:ring-2 focus:ring-blue-500 outline-none\" placeholder=\"123 Main Street, City\" \/>\r\n                        <\/div>\r\n\r\n                        <div class=\"pt-2\">\r\n                            <label class=\"block text-xs font-bold text-blue-600 mb-2\"><i data-lucide=\"phone-call\" class=\"w-3 h-3 inline\"><\/i> Availability for a sales call<\/label>\r\n                            <div class=\"grid grid-cols-2 gap-3\">\r\n                                <input type=\"date\" id=\"input-date\" required class=\"w-full p-2 bg-blue-50 border border-blue-200 rounded-lg focus:ring-2 focus:ring-blue-500 text-slate-700\" \/>\r\n                                <select id=\"input-time\" required class=\"w-full p-2 bg-blue-50 border border-blue-200 rounded-lg focus:ring-2 focus:ring-blue-500 text-slate-700\">\r\n                                    <option value=\"\">Time...<\/option>\r\n                                    <option value=\"Morning (8am-12pm)\">Morning (8am-12pm)<\/option>\r\n                                    <option value=\"Afternoon (12pm-4pm)\">Afternoon (12pm-4pm)<\/option>\r\n                                    <option value=\"Late afternoon (4pm-7pm)\">Late afternoon (4pm-7pm)<\/option>\r\n                                <\/select>\r\n                            <\/div>\r\n                        <\/div>\r\n\r\n                        <button type=\"submit\" id=\"submit-btn\" disabled class=\"w-full py-3 px-4 mt-4 rounded-xl font-bold flex justify-center items-center gap-2 transition-all bg-slate-300 text-slate-500 cursor-not-allowed\">\r\n                            Get my estimate <i data-lucide=\"send\" class=\"w-4 h-4\"><\/i>\r\n                        <\/button>\r\n                        <p id=\"submit-warning\" class=\"text-xs text-center text-red-500 font-medium mt-2\">Add at least one unit or service to continue.<\/p>\r\n                    <\/form>\r\n\r\n                    <!-- Etape 2: V\u00e9rification des informations -->\r\n                    <div id=\"verification-step\" class=\"hidden\">\r\n                        <div class=\"bg-blue-50 p-4 rounded-lg text-slate-700 space-y-2 mb-6 border border-blue-100\">\r\n                            <p class=\"font-bold text-blue-800 mb-2 border-b border-blue-200 pb-2\">Verify your information:<\/p>\r\n                            <p><strong>Name:<\/strong> <span id=\"verify-name\" class=\"ml-1\"><\/span><\/p>\r\n                            <p><strong>Phone:<\/strong> <span id=\"verify-phone\" class=\"ml-1\"><\/span><\/p>\r\n                            <p><strong>Email:<\/strong> <span id=\"verify-email\" class=\"ml-1\"><\/span><\/p>\r\n                            <p><strong>Address:<\/strong> <span id=\"verify-address\" class=\"ml-1\"><\/span><\/p>\r\n                            <p><strong>Availability:<\/strong> <span id=\"verify-datetime\" class=\"ml-1\"><\/span><\/p>\r\n                        <\/div>\r\n                        <div class=\"flex gap-3\">\r\n                            <button type=\"button\" id=\"btn-edit\" class=\"flex-1 py-2 px-4 border border-slate-300 rounded-lg text-slate-600 font-bold hover:bg-slate-50 transition-colors\">\r\n                                Edit\r\n                            <\/button>\r\n                            <button type=\"button\" id=\"btn-confirm\" class=\"flex-1 py-2 px-4 bg-green-600 text-white rounded-lg font-bold hover:bg-green-700 transition-colors flex justify-center items-center\">\r\n                                Confirm submission\r\n                            <\/button>\r\n                        <\/div>\r\n                        <p id=\"submit-error-msg\" class=\"text-xs text-center text-red-500 font-bold mt-3 hidden\"><\/p>\r\n                    <\/div>\r\n\r\n                    <!-- Etape 3: Message de succ\u00e8s & Courriel simul\u00e9 -->\r\n                    <div id=\"success-message\" class=\"hidden text-center py-4\">\r\n                        <div class=\"inline-flex items-center justify-center w-16 h-16 bg-green-100 rounded-full mb-4\">\r\n                            <i data-lucide=\"check-circle\" class=\"w-8 h-8 text-green-600\"><\/i>\r\n                        <\/div>\r\n                        <h4 class=\"text-xl font-bold text-slate-800 mb-2\">Request sent, <span id=\"success-name\"><\/span>!<\/h4>\r\n                        <p class=\"text-slate-600 mb-6\">We have received your configuration. <strong>A detailed copy has just been sent to your email address.<\/strong> Here is a preview:<\/p>\r\n                        \r\n                        <!-- Simili-Courriel -->\r\n                        <div class=\"bg-slate-100 text-left p-5 rounded-xl border border-slate-200 shadow-inner overflow-hidden relative\">\r\n                            <div class=\"absolute top-0 left-0 w-full h-1 bg-blue-500\"><\/div>\r\n                            <p class=\"font-bold text-slate-700 border-b pb-2 mb-3 text-xs uppercase tracking-wider\"><i data-lucide=\"mail\" class=\"w-3 h-3 inline mr-1\"><\/i> New Message<\/p>\r\n                            \r\n                            <p class=\"font-bold text-lg mb-4 text-slate-800\">Subject: Your project estimate with Paint Pro & Epoxy Express Inc! \ud83d\ude80<\/p>\r\n                            \r\n                            <div id=\"email-body\" class=\"space-y-3 text-slate-700 leading-relaxed\">\r\n                                <!-- Generated in JS -->\r\n                            <\/div>\r\n                            \r\n                            <button onclick=\"resetForm()\" class=\"mt-6 w-full py-2 bg-white border border-slate-300 rounded-lg font-bold text-slate-600 hover:bg-slate-50 transition-colors text-xs\">\r\n                                Make a new estimate\r\n                            <\/button>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n\r\n            <\/div>\r\n        <\/div>\r\n    <\/main>\r\n\r\n    <script>\r\n        \/\/ Initialize icons\r\n        lucide.createIcons();\r\n\r\n        const formatCurrency = (value) => {\r\n            return new Intl.NumberFormat('en-CA', { style: 'currency', currency: 'CAD', maximumFractionDigits: 0 }).format(value);\r\n        };\r\n\r\n        \/\/ Global Variables\r\n        let globalData = {};\r\n\r\n        \/\/ --- GESTION DU CALCUL GLOBAL ET DES MATRICES ---\r\n        function calculate() {\r\n            \/\/ 1. Calcul Peinture de base\r\n            let totalUnits = 0;\r\n            let baseCost = 0;\r\n            const unitTypes = ['studio', 'ch1', 'ch2', 'ch3'];\r\n            const unitCounts = {};\r\n\r\n            unitTypes.forEach(type => {\r\n                const input = document.getElementById('unit-' + type);\r\n                let count = Math.max(0, parseInt(input.value) || 0);\r\n                let price = parseInt(input.dataset.price);\r\n                \r\n                unitCounts[type] = count;\r\n                totalUnits += count;\r\n                baseCost += (count * price);\r\n\r\n                \/\/ Mise \u00e0 jour de l'UI des matrices \u00c9poxy (Limites MAX)\r\n                document.querySelectorAll(`.max-lbl-${type}`).forEach(el => el.innerText = count);\r\n                \r\n                \/\/ Forcer la valeur matricielle \u00e0 ne pas d\u00e9passer le MAX disponible\r\n                document.querySelectorAll(`.sub-opt-input[data-unit-type=\"${type}\"]`).forEach(subInput => {\r\n                    subInput.max = count;\r\n                    let currentVal = parseInt(subInput.value) || 0;\r\n                    if (currentVal > count) {\r\n                        subInput.value = count;\r\n                    }\r\n                });\r\n            });\r\n\r\n            document.getElementById('summary-total-units').innerText = totalUnits;\r\n            document.getElementById('summary-base-cost').innerText = formatCurrency(baseCost);\r\n\r\n            \/\/ 2. Calcul des options \u00c9poxy par unit\u00e9\r\n            let epoxyUnitCost = 0;\r\n            let epoxyItemsList = []; \/\/ Pour le courriel\r\n            \r\n            document.querySelectorAll('.main-option-checkbox').forEach(cb => {\r\n                const matrixId = cb.dataset.target;\r\n                const container = document.getElementById('container-' + cb.id);\r\n                const title = container.querySelector('.font-bold').innerText;\r\n                \r\n                \/\/ Verrouiller si aucune unit\u00e9 globale\r\n                if (totalUnits === 0) {\r\n                    cb.disabled = true;\r\n                    if (cb.checked) {\r\n                        cb.checked = false;\r\n                        document.getElementById(matrixId).classList.add('hidden');\r\n                        container.classList.remove('border-indigo-500', 'border-blue-500', 'border-2', 'shadow-md');\r\n                    }\r\n                } else {\r\n                    cb.disabled = false;\r\n                }\r\n\r\n                if (cb.checked) {\r\n                    let colorClass = cb.id.includes('poly') ? 'border-blue-500' : 'border-indigo-500';\r\n                    container.classList.add(colorClass, 'border-2', 'shadow-md');\r\n                    \r\n                    const matrix = document.getElementById(matrixId);\r\n                    if(matrix) {\r\n                        let itemTotalQty = 0;\r\n                        matrix.querySelectorAll('.sub-opt-input').forEach(input => {\r\n                            const qty = parseInt(input.value) || 0;\r\n                            const price = parseInt(input.dataset.price);\r\n                            epoxyUnitCost += (qty * price);\r\n                            itemTotalQty += qty;\r\n                        });\r\n                        if(itemTotalQty > 0) {\r\n                            epoxyItemsList.push(`${title} (for ${itemTotalQty} apartments)`);\r\n                        }\r\n                    }\r\n                } else {\r\n                    container.classList.remove('border-indigo-500', 'border-blue-500', 'border-2', 'shadow-md');\r\n                }\r\n            });\r\n\r\n            const epoxyRow = document.getElementById('summary-epoxy-row');\r\n            if (epoxyUnitCost > 0) {\r\n                epoxyRow.classList.remove('hidden');\r\n                document.getElementById('summary-epoxy-cost').innerText = \"+\" + formatCurrency(epoxyUnitCost);\r\n            } else {\r\n                epoxyRow.classList.add('hidden');\r\n            }\r\n\r\n            \/\/ 3. Calcul des options Fixes (Immeuble)\r\n            let fixedCost = 0;\r\n            let fixedItemsList = []; \/\/ Pour le courriel\r\n\r\n            document.querySelectorAll('.fixed-option-checkbox').forEach(cb => {\r\n                const container = cb.closest('.option-fixed-container');\r\n                const price = parseInt(cb.dataset.price);\r\n                const name = cb.dataset.name;\r\n                \r\n                if (cb.checked) {\r\n                    fixedCost += price;\r\n                    fixedItemsList.push(name);\r\n                    container.classList.add('border-indigo-500', 'bg-indigo-50', 'border-2');\r\n                    container.classList.remove('border-slate-200', 'bg-white', 'hover:bg-slate-50');\r\n                } else {\r\n                    container.classList.remove('border-indigo-500', 'bg-indigo-50', 'border-2');\r\n                    container.classList.add('border-slate-200', 'bg-white', 'hover:bg-slate-50');\r\n                }\r\n            });\r\n\r\n            const fixedRow = document.getElementById('summary-fixed-row');\r\n            if (fixedCost > 0) {\r\n                fixedRow.classList.remove('hidden');\r\n                document.getElementById('summary-fixed-cost').innerText = \"+\" + formatCurrency(fixedCost);\r\n            } else {\r\n                fixedRow.classList.add('hidden');\r\n            }\r\n\r\n            \/\/ 4. Calcul de la subvention\r\n            let discountRate = 0;\r\n            document.querySelectorAll('input[name=\"community-discount\"]').forEach(radio => {\r\n                const container = document.getElementById('container-' + radio.id);\r\n                if (radio.checked) {\r\n                    discountRate = parseFloat(radio.value);\r\n                    container.classList.add('border-red-500', 'bg-red-50', 'border-2');\r\n                    container.classList.remove('border-slate-200');\r\n                } else {\r\n                    container.classList.remove('border-red-500', 'bg-red-50', 'border-2');\r\n                    container.classList.add('border-slate-200');\r\n                }\r\n            });\r\n\r\n            \/\/ 5. Totaux Finaux\r\n            const grossSubtotal = baseCost + epoxyUnitCost + fixedCost;\r\n            const communityDonation = grossSubtotal * discountRate;\r\n            const netSubtotal = grossSubtotal - communityDonation;\r\n            \r\n            const contingency = netSubtotal * 0.20;\r\n            const finalEstimate = netSubtotal + contingency;\r\n\r\n            document.getElementById('summary-subtotal').innerText = formatCurrency(grossSubtotal);\r\n            \r\n            const commRow = document.getElementById('summary-community-row');\r\n            if (communityDonation > 0) {\r\n                commRow.classList.remove('hidden');\r\n                document.getElementById('summary-community-cost').innerText = \"- \" + formatCurrency(communityDonation);\r\n            } else {\r\n                commRow.classList.add('hidden');\r\n            }\r\n\r\n            document.getElementById('summary-contingency').innerText = \"+\" + formatCurrency(contingency);\r\n            document.getElementById('summary-final').innerText = formatCurrency(finalEstimate);\r\n\r\n            \/\/ Sauvegarder les donn\u00e9es pour le courriel\r\n            globalData = {\r\n                units: totalUnits,\r\n                epoxyList: epoxyItemsList,\r\n                fixedList: fixedItemsList,\r\n                total: finalEstimate,\r\n                hasPoly: epoxyItemsList.some(item => item.includes('Polyurethane')),\r\n                hasEpoxy: epoxyItemsList.length > 0 || fixedItemsList.length > 0\r\n            };\r\n\r\n            \/\/ 6. \u00c9tat du bouton final\r\n            const submitBtn = document.getElementById('submit-btn');\r\n            const submitWarning = document.getElementById('submit-warning');\r\n\r\n            if (totalUnits > 0 || fixedCost > 0) {\r\n                submitBtn.disabled = false;\r\n                submitBtn.className = \"w-full py-3 px-4 mt-4 rounded-xl font-bold flex justify-center items-center gap-2 transition-all bg-blue-600 text-white hover:bg-blue-700 hover:shadow-lg shadow-blue-600\/30 text-lg\";\r\n                submitWarning.classList.add('hidden');\r\n            } else {\r\n                submitBtn.disabled = true;\r\n                submitBtn.className = \"w-full py-3 px-4 mt-4 rounded-xl font-bold flex justify-center items-center gap-2 transition-all bg-slate-300 text-slate-500 cursor-not-allowed text-lg\";\r\n                submitWarning.classList.remove('hidden');\r\n            }\r\n        }\r\n\r\n        \/\/ --- G\u00c9N\u00c9RATION DU COURRIEL ---\r\n        function generateEmailHTML(name, date, time) {\r\n            let firstName = name.split(' ')[0] || \"there\";\r\n            \r\n            let emailHTML = `\r\n                <p>Hi <strong>${firstName}<\/strong>! \ud83d\udc4b<\/p>\r\n                <p>Thank you for your request. We are super excited to look into your project. Here is a simple summary of what we will do for you.<\/p>\r\n                \r\n                <h4 class=\"font-bold mt-4 text-blue-600\">\ud83c\udfe0 What's the plan?<\/h4>\r\n            `;\r\n\r\n            if(globalData.units > 0) {\r\n                emailHTML += `<p>You asked us to prep and paint <strong>${globalData.units} apartment(s)<\/strong>. We handle everything (walls, ceilings, woodwork)!<\/p>`;\r\n            } else {\r\n                emailHTML += `<p>You didn't select any apartment painting, so we're focusing on your other requests!<\/p>`;\r\n            }\r\n\r\n            if(globalData.hasEpoxy) {\r\n                emailHTML += `<h4 class=\"font-bold mt-4 text-indigo-600\">\u2728 The cool extras (Epoxy Express):<\/h4>\r\n                <p>You chose to add epoxy. Great choice: it's a liquid resin that cures ultra-solid. It makes your floors glossy, super easy to clean, and virtually unbreakable by tenants!<\/p>\r\n                <ul class=\"list-disc pl-5 mt-2 space-y-1\">`;\r\n                \r\n                globalData.epoxyList.forEach(item => { emailHTML += `<li>${item}<\/li>`; });\r\n                globalData.fixedList.forEach(item => { emailHTML += `<li>${item}<\/li>`; });\r\n                \r\n                emailHTML += `<\/ul>`;\r\n\r\n                if(globalData.hasPoly) {\r\n                    emailHTML += `<p class=\"mt-2 bg-blue-50 p-2 rounded text-xs border border-blue-100\">\ud83d\udee1\ufe0f <strong>Note on Polyurethane:<\/strong> You took the protective topcoat! It's literally like putting a super-powered raincoat on your floor. If there's a water leak, it won't drip to the neighbor below.<\/p>`;\r\n                }\r\n            }\r\n\r\n            emailHTML += `\r\n                <h4 class=\"font-bold mt-4 text-green-600\">\ud83d\udcb0 The numbers (Estimate):<\/h4>\r\n                <p>The estimated total is <strong>${formatCurrency(globalData.total)}<\/strong>. This includes our labor, materials, and insurance.<\/p>\r\n                <p class=\"text-xs text-slate-500 italic\">\ud83d\udca1 Cool fact: We added a 20% \"contingency margin\" in case we find surprises while working (like a badly damaged wall hidden behind furniture). If all goes well and we don't use it, you never pay for it!<\/p>\r\n                \r\n                <h4 class=\"font-bold mt-4 text-slate-800\">\ud83d\udcde What's next:<\/h4>\r\n                <p>As agreed, we will call you on <strong>${date}<\/strong> during the <strong>${time.toLowerCase()}<\/strong> to chat about all this without pressure and answer your questions.<\/p>\r\n                \r\n                <p class=\"mt-4\">Talk soon!<br><strong>The Epoxy Express Inc. Team<\/strong><\/p>\r\n            `;\r\n\r\n            return emailHTML;\r\n        }\r\n\r\n        \/\/ --- DASHBOARD LOGIC (ONGLETS & EXPERTISE) ---\r\n        const dashTabs = ['expertise', 'education'];\r\n        function switchTab(tabId) {\r\n            dashTabs.forEach(id => {\r\n                const btn = document.getElementById(`tab-${id}`);\r\n                if(btn) btn.className = 'tab-inactive flex-1 min-w-[150px] py-4 px-2 text-center transition-all duration-200 border-l border-r border-slate-200 focus:outline-none flex justify-center items-center gap-2 text-sm md:text-base';\r\n                const sec = document.getElementById(`section-${id}`);\r\n                if(sec) sec.classList.add('hidden');\r\n            });\r\n            \r\n            const activeTab = document.getElementById(`tab-${tabId}`);\r\n            if(activeTab) activeTab.className = 'tab-active flex-1 min-w-[150px] py-4 px-2 text-center transition-all duration-200 focus:outline-none flex justify-center items-center gap-2 text-sm md:text-base';\r\n            const activeSec = document.getElementById(`section-${tabId}`);\r\n            if(activeSec) activeSec.classList.remove('hidden');\r\n        }\r\n\r\n        const expertiseData = {\r\n            epoxy: {\r\n                vars: \"Slab moisture rate, Ambient temperature, Surface profile (CSP 2 to 4 required), Presence of contaminants (salt, oil), Active cracks.\",\r\n                mats: \"100% solid epoxy (zero VOC), Polyurea\/Polyaspartic (fast drying, UV resistant), Cementitious urethane (food grade), Vinyl flakes, Quartz.\",\r\n                tools: \"Diamond floor grinders (Husqvarna, Lavina), Shotblasters, Industrial HEPA vacuums, Notched squeegees, Spiked shoes.\",\r\n            },\r\n            tapis: {\r\n                vars: \"Subfloor condition (need for patching), Type of old glue to remove (potential asbestos in old mastics), Transitions with other floors.\",\r\n                mats: \"Modular carpet tiles (PVC\/Bitumen), Broadloom carpet, Pressure Sensitive adhesive, Leveling compound (Patching).\",\r\n                tools: \"Floor scrapers (Ride-on or manual Panther), Carpet knives, Knee kickers, Seaming irons, Heavy rollers.\",\r\n            },\r\n            peinture: {\r\n                vars: \"Work at heights, Prep level (pressure washing, sanding), Substrate type (steel, drywall, concrete), Ventilation\/VOC requirements.\",\r\n                mats: \"DTM (Direct To Metal) Paint, Dryfall paint (industrial ceilings), Two-component epoxy, Sealer primers, High-durability commercial latex paint.\",\r\n                tools: \"Airless Sprayers (Graco\/Titan), Scissor lifts, Scaffolding, Sanders with HEPA vacuum.\",\r\n            },\r\n            nettoyage: {\r\n                vars: \"Fine dust level (post-construction), Total area, Traffic frequency, Types of stains (grease, cement, glue).\",\r\n                mats: \"EcoLogo\/GreenSeal certified products, Industrial degreasers, Floor strippers, Acrylic waxes, Enzymatic extraction solutions.\",\r\n                tools: \"Auto-scrubbers (Ride-on or walk-behind), High-speed floor burnishers, Carpet extractors, Commercial wet\/dry vacuums.\",\r\n            }\r\n        };\r\n\r\n        function loadExpertise(key) {\r\n            document.querySelectorAll('.exp-btn').forEach(btn => {\r\n                btn.className = 'exp-btn exp-btn-inactive py-3 px-4 rounded-r-lg text-left transition-colors w-full';\r\n            });\r\n            document.getElementById(`exp-${key}`).className = 'exp-btn exp-btn-active py-3 px-4 rounded-r-lg text-left transition-colors w-full shadow-sm';\r\n\r\n            const data = expertiseData[key];\r\n            const html = `\r\n                <div class=\"fade-in\">\r\n                    <div class=\"grid grid-cols-1 md:grid-cols-2 gap-4 mb-4\">\r\n                        <div class=\"bg-emerald-50\/50 p-5 rounded-xl border border-emerald-100\">\r\n                            <h4 class=\"font-bold text-emerald-800 mb-2 flex items-center gap-2\"><span class=\"text-xl\">\ud83c\udfb2<\/span> Variables & Possibilities<\/h4>\r\n                            <p class=\"text-sm text-slate-700\">${data.vars}<\/p>\r\n                        <\/div>\r\n                        <div class=\"bg-emerald-50\/50 p-5 rounded-xl border border-emerald-100\">\r\n                            <h4 class=\"font-bold text-emerald-800 mb-2 flex items-center gap-2\"><span class=\"text-xl\">\ud83d\udee2\ufe0f<\/span> Advanced Materials<\/h4>\r\n                            <p class=\"text-sm text-slate-700\">${data.mats}<\/p>\r\n                        <\/div>\r\n                        <div class=\"bg-emerald-50\/50 p-5 rounded-xl border border-emerald-100 md:col-span-2\">\r\n                            <h4 class=\"font-bold text-emerald-800 mb-2 flex items-center gap-2\"><span class=\"text-xl\">\ud83d\ude9c<\/span> Machines & Tools<\/h4>\r\n                            <p class=\"text-sm text-slate-700\">${data.tools}<\/p>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n            `;\r\n            document.getElementById('expertise-content-area').innerHTML = html;\r\n        }\r\n\r\n        \/\/ --- \u00c9V\u00c9NEMENTS ---\r\n\r\n        document.querySelectorAll('.unit-input').forEach(input => {\r\n            input.addEventListener('input', calculate);\r\n        });\r\n\r\n        document.querySelectorAll('.main-option-checkbox').forEach(cb => {\r\n            cb.addEventListener('change', function() {\r\n                const matrixId = this.dataset.target;\r\n                const matrix = document.getElementById(matrixId);\r\n                \r\n                if (matrix) {\r\n                    if (this.checked) {\r\n                        matrix.classList.remove('hidden');\r\n                        matrix.querySelectorAll('.sub-opt-input').forEach(input => {\r\n                            const type = input.dataset.unitType;\r\n                            input.value = Math.max(0, parseInt(document.getElementById('unit-' + type).value) || 0);\r\n                        });\r\n                    } else {\r\n                        matrix.classList.add('hidden');\r\n                        matrix.querySelectorAll('.sub-opt-input').forEach(input => { input.value = 0; });\r\n                    }\r\n                }\r\n                calculate();\r\n            });\r\n        });\r\n\r\n        document.querySelectorAll('.sub-opt-input').forEach(input => {\r\n            input.addEventListener('input', function() {\r\n                if(parseInt(this.value) < 0) this.value = 0;\r\n                calculate();\r\n            });\r\n        });\r\n\r\n        document.querySelectorAll('.fixed-option-checkbox, input[name=\"community-discount\"]').forEach(input => {\r\n            input.addEventListener('change', calculate);\r\n        });\r\n\r\n        \/\/ 1. Soumission du formulaire (Ouvre la v\u00e9rification)\r\n        document.getElementById('contact-form').addEventListener('submit', function(e) {\r\n            e.preventDefault();\r\n            \r\n            const dateStr = document.getElementById('input-date').value;\r\n            const time = document.getElementById('input-time').value;\r\n            const dateObj = new Date(dateStr);\r\n            const dateOptions = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };\r\n            const formattedDate = dateObj.toLocaleDateString('en-CA', dateOptions);\r\n\r\n            \/\/ Remplir les informations de v\u00e9rification\r\n            document.getElementById('verify-name').innerText = document.getElementById('input-name').value;\r\n            document.getElementById('verify-phone').innerText = document.getElementById('input-phone').value;\r\n            document.getElementById('verify-email').innerText = document.getElementById('input-email').value;\r\n            document.getElementById('verify-address').innerText = document.getElementById('input-address').value || \"Not specified\";\r\n            document.getElementById('verify-datetime').innerText = `${formattedDate} at ${time}`;\r\n\r\n            \/\/ Cacher le formulaire et montrer la v\u00e9rification\r\n            document.getElementById('contact-form').classList.add('hidden');\r\n            document.getElementById('verification-step').classList.remove('hidden');\r\n        });\r\n\r\n        \/\/ 2. Bouton \"Modifier\" (Retour au formulaire)\r\n        document.getElementById('btn-edit').addEventListener('click', function() {\r\n            document.getElementById('verification-step').classList.add('hidden');\r\n            document.getElementById('contact-form').classList.remove('hidden');\r\n        });\r\n\r\n        \/\/ 3. Bouton \"Confirmer l'envoi\" (Finalise et envoi AJAX vers WordPress)\r\n        document.getElementById('btn-confirm').addEventListener('click', function() {\r\n            const btn = this;\r\n            const originalText = btn.innerHTML;\r\n            const errorMsg = document.getElementById('submit-error-msg');\r\n            \r\n            errorMsg.classList.add('hidden');\r\n            btn.innerHTML = `<svg class=\"animate-spin -ml-1 mr-2 h-5 w-5 text-white inline-block\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"none\" viewBox=\"0 0 24 24\"><circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\"><\/circle><path class=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"><\/path><\/svg> Sending...`;\r\n            btn.disabled = true;\r\n\r\n            const name = document.getElementById('input-name').value;\r\n            const email = document.getElementById('input-email').value;\r\n            const phone = document.getElementById('input-phone').value;\r\n            const address = document.getElementById('input-address').value;\r\n            const dateStr = document.getElementById('input-date').value;\r\n            const time = document.getElementById('input-time').value;\r\n            \r\n            const dateObj = new Date(dateStr);\r\n            const formattedDate = dateObj.toLocaleDateString('en-CA', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' });\r\n\r\n            const emailBodyHtml = generateEmailHTML(name, formattedDate, time);\r\n\r\n            \/\/ Pr\u00e9paration des donn\u00e9es pour WordPress AJAX\r\n            const formData = new URLSearchParams();\r\n            formData.append('action', 'submit_epoxy_estimator'); \/\/ Nom du Hook PHP cibl\u00e9\r\n            formData.append('name', name);\r\n            formData.append('email', email);\r\n            formData.append('phone', phone);\r\n            formData.append('address', address);\r\n            formData.append('date', formattedDate);\r\n            formData.append('time', time);\r\n            formData.append('send_copy', 'true'); \/\/ Indique au PHP d'envoyer la copie client\r\n            formData.append('html_body', emailBodyHtml);\r\n\r\n            \/\/ Requ\u00eate vers le fichier admin-ajax.php de WordPress\r\n            fetch('\/wp-admin\/admin-ajax.php', {\r\n                method: 'POST',\r\n                headers: {\r\n                    'Content-Type': 'application\/x-www-form-urlencoded',\r\n                },\r\n                body: formData.toString()\r\n            })\r\n            .then(response => {\r\n                \/\/ S'assure de ne pas bloquer dans l'\u00e9diteur de pr\u00e9visualisation (si non-WordPress)\r\n                if (!response.ok && response.status === 404) {\r\n                    return { success: true, simulated: true }; \r\n                }\r\n                return response.json();\r\n            })\r\n            .then(data => {\r\n                if (data.success || data.simulated) {\r\n                    document.getElementById('success-name').innerText = name.split(' ')[0];\r\n                    document.getElementById('email-body').innerHTML = emailBodyHtml;\r\n                    \r\n                    document.getElementById('verification-step').classList.add('hidden');\r\n                    document.getElementById('form-title').classList.add('hidden');\r\n                    document.getElementById('success-message').classList.remove('hidden');\r\n                } else {\r\n                    errorMsg.innerText = \"Error sending: \" + (data.data?.message || \"Please try again.\");\r\n                    errorMsg.classList.remove('hidden');\r\n                }\r\n            })\r\n            .catch(error => {\r\n                console.error('Error:', error);\r\n                \/\/ Si la requ\u00eate \u00e9choue (ex: test local hors WP), on affiche quand m\u00eame la suite visuellement\r\n                document.getElementById('success-name').innerText = name.split(' ')[0];\r\n                document.getElementById('email-body').innerHTML = emailBodyHtml;\r\n                document.getElementById('verification-step').classList.add('hidden');\r\n                document.getElementById('form-title').classList.add('hidden');\r\n                document.getElementById('success-message').classList.remove('hidden');\r\n            })\r\n            .finally(() => {\r\n                btn.innerHTML = originalText;\r\n                btn.disabled = false;\r\n            });\r\n        });\r\n\r\n        function resetForm() {\r\n            document.getElementById('contact-form').reset();\r\n            document.getElementById('contact-form').classList.remove('hidden');\r\n            document.getElementById('verification-step').classList.add('hidden');\r\n            document.getElementById('form-title').classList.remove('hidden');\r\n            document.getElementById('success-message').classList.add('hidden');\r\n            \r\n            \/\/ Uncheck matrices\r\n            document.querySelectorAll('.main-option-checkbox').forEach(cb => {\r\n                cb.checked = false;\r\n                const matrix = document.getElementById(cb.dataset.target);\r\n                if(matrix) {\r\n                    matrix.classList.add('hidden');\r\n                    matrix.querySelectorAll('.sub-opt-input').forEach(i => i.value = 0);\r\n                }\r\n            });\r\n            \r\n            calculate();\r\n            window.scrollTo({ top: 0, behavior: 'smooth' });\r\n        }\r\n\r\n        \/\/ Init au chargement\r\n        calculate();\r\n        loadExpertise('epoxy'); \/\/ Init le premier panneau du dashboard\r\n\r\n    <\/script>\r\n<\/div>\t\t\t\t<\/div>\n\t\t\n<\/div>\n\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>\ud83d\udee0\ufe0f Expertise &#038; Equipment \ud83c\udf93 Education, Laws &#038; Insurance Expertise &#038; Equipment Details of operations, materials, and tooling per service. \ud83e\uddea Epoxy Coating \ud83e\uddf6 Carpet Install \ud83d\udd8c\ufe0f Comm. Painting \ud83e\uddf9 Pro Cleaning \ud83c\udf93 Glossary, Laws &#038; Insurance Benefits Educate your clients and justify your rates. A client who understands the law and the chemistry no [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":7315,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-7234","page","type-page","status-publish","has-post-thumbnail","hentry"],"_links":{"self":[{"href":"https:\/\/epoxy.express\/en\/wp-json\/wp\/v2\/pages\/7234","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=7234"}],"version-history":[{"count":21,"href":"https:\/\/epoxy.express\/en\/wp-json\/wp\/v2\/pages\/7234\/revisions"}],"predecessor-version":[{"id":7263,"href":"https:\/\/epoxy.express\/en\/wp-json\/wp\/v2\/pages\/7234\/revisions\/7263"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/epoxy.express\/en\/wp-json\/wp\/v2\/media\/7315"}],"wp:attachment":[{"href":"https:\/\/epoxy.express\/en\/wp-json\/wp\/v2\/media?parent=7234"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}