{"id":5432,"date":"2025-07-29T17:28:28","date_gmt":"2025-07-29T17:28:28","guid":{"rendered":"https:\/\/excavationchanthier.ca\/en\/?page_id=5432"},"modified":"2026-06-11T02:28:40","modified_gmt":"2026-06-11T02:28:40","slug":"french-drain-cost","status":"publish","type":"page","link":"https:\/\/excavationchanthier.ca\/en\/excavation\/french-drain\/french-drain-cost\/","title":{"rendered":"French Drain Cost Real Time Calculator"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"5432\" class=\"elementor elementor-5432\" data-elementor-post-type=\"page\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-0a13f96 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"0a13f96\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-02cc28b\" data-id=\"02cc28b\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-a872baa elementor-widget elementor-widget-html\" data-id=\"a872baa\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n    <div class=\"french-drain-cost-container\">\n        <style>\n\n        .french-drain-cost-container * {\n            box-sizing: border-box;\n        }\n\n        .french-drain-cost-container {\n            max-width: 1200px;\n            margin: 0 auto;\n            padding: 40px 20px;\n            background-color: white;\n            font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n            line-height: 1.6;\n            color: #374151;\n        }\n\n        .french-drain-cost-container .french-drain-cost-header {\n            margin-bottom: 40px;\n            text-align: center;\n        }\n\n        .french-drain-cost-container .french-drain-cost-subtitle {\n            color: #000000;\n            font-size: 48px;\n            margin: 0 0 12px;\n        }\n\n        .french-drain-cost-container .french-drain-cost-instructions {\n            margin-top: 20px;\n            display: flex;\n            justify-content: center;\n        }\n\n        .french-drain-cost-container .french-drain-cost-instructions ol {\n            padding-left: 20px;\n            margin: 0;\n            text-align: left !important;\n            color: #374151;\n            font-size: 16px;\n            line-height: 1.5;\n        }\n\n        .french-drain-cost-container .french-drain-cost-instructions li {\n            margin-bottom: 8px;\n        }\n\n        .french-drain-cost-container .french-drain-cost-instructions li:last-child {\n            margin-bottom: 0;\n        }\n\n        .french-drain-cost-container h1 {\n            font-size: 36px;\n            font-weight: bold;\n            color: #111827;\n            margin: 0;\n            text-align: center !important;\n        }\n\n        .french-drain-cost-container .french-drain-cost-main-grid {\n            display: grid;\n            grid-template-columns: 1fr 1fr;\n            gap: 40px;\n        }\n\n        .french-drain-cost-container .french-drain-cost-card {\n            background-color: #f9fafb;\n            padding: 30px;\n            border-radius: 12px;\n            margin-bottom: 24px;\n            box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n        }\n\n        .french-drain-cost-container .french-drain-cost-card:last-child {\n            margin-bottom: 0;\n        }\n\n        .french-drain-cost-container .french-drain-cost-card h2 {\n            font-size: 24px;\n            font-weight: 600;\n            margin-bottom: 12px;\n            margin-top: 0;\n        }\n\n        .french-drain-cost-container .french-drain-cost-base-info {\n            background-color: #dbeafe;\n        }\n\n        .french-drain-cost-container .french-drain-cost-base-info h2 {\n            color: #1e40af;\n        }\n\n        .french-drain-cost-container .french-drain-cost-options-info {\n            background-color: #dcfce7;\n        }\n\n        .french-drain-cost-container .french-drain-cost-options-info h2 {\n            color: #166534;\n        }\n\n        .french-drain-cost-container .french-drain-cost-summary-card {\n            background-color: #f3f4f6;\n        }\n\n        .french-drain-cost-container .french-drain-cost-costs-card {\n            background-color: #dbeafe;\n        }\n\n        .french-drain-cost-container .french-drain-cost-costs-card h2 {\n            color: #1e40af;\n        }\n\n        .french-drain-cost-container .french-drain-cost-options-card {\n            background-color: #dcfce7;\n        }\n\n        .french-drain-cost-container .french-drain-cost-options-card h2 {\n            color: #166534;\n        }\n\n        .french-drain-cost-container .french-drain-cost-final-total {\n            background-color: #fed7aa;\n            border: 2px solid #fb923c;\n        }\n\n        .french-drain-cost-container .french-drain-cost-card.french-drain-cost-final-total h2 {\n            color: #9a3412;\n            font-size: 28px;\n            font-weight: bold;\n            margin-bottom: 10px;\n        }\n\n        .french-drain-cost-container .french-drain-cost-info-card {\n            background-color: #f3f4f6;\n        }\n\n        .french-drain-cost-container .french-drain-cost-input-group {\n            margin-bottom: 24px;\n        }\n\n        .french-drain-cost-container .french-drain-cost-input-group:last-child {\n            margin-bottom: 0;\n        }\n\n        .french-drain-cost-container .french-drain-cost-input-group label {\n            display: block;\n            font-size: 16px;\n            font-weight: 500;\n            margin-bottom: 8px;\n            color: #374151;\n        }\n\n        .french-drain-cost-container .french-drain-cost-input-group label,\n        .french-drain-cost-container .french-drain-cost-checkbox-group label,\n        .french-drain-cost-container .french-drain-cost-additional-input label {\n            text-transform: none !important;\n        }\n\n        .french-drain-cost-container .french-drain-cost-input-group input,\n        .french-drain-cost-container .french-drain-cost-input-group select {\n            width: 100%;\n            padding: 12px 16px;\n            border: 1px solid #d1d5db;\n            border-radius: 8px;\n            font-size: 16px;\n            background-color: white;\n            transition: border-color 0.2s ease, box-shadow 0.2s ease;\n        }\n\n        .french-drain-cost-container .french-drain-cost-input-group input:focus,\n        .french-drain-cost-container .french-drain-cost-input-group select:focus {\n            outline: none;\n            border-color: #2563eb;\n            box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);\n        }\n\n        .french-drain-cost-container .french-drain-cost-number-input-wrapper {\n            position: relative;\n            display: inline-block;\n            width: 100%;\n        }\n\n        .french-drain-cost-container .french-drain-cost-number-input-wrapper input[type=\"number\"] {\n            padding-right: 40px;\n        }\n\n        .french-drain-cost-container .french-drain-cost-number-input-wrapper input[type=\"number\"]::-webkit-inner-spin-button,\n        .french-drain-cost-container .french-drain-cost-number-input-wrapper input[type=\"number\"]::-webkit-outer-spin-button {\n            -webkit-appearance: none;\n            appearance: none;\n            margin: 0;\n        }\n\n        .french-drain-cost-container .french-drain-cost-number-input-wrapper .french-drain-cost-spinner-buttons {\n            position: absolute;\n            right: 1px;\n            top: 1px;\n            bottom: 1px;\n            width: 30px;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .french-drain-cost-container .french-drain-cost-number-input-wrapper .french-drain-cost-spinner-buttons button {\n            flex: 1;\n            border: none;\n            background: #f3f4f6 !important;\n            cursor: pointer;\n            font-size: 8px !important;\n            line-height: 1 !important;\n            padding: 2px !important;\n            color: #374151;\n            border-left: 1px solid #d1d5db;\n        }\n\n        .french-drain-cost-container .french-drain-cost-number-input-wrapper .french-drain-cost-spinner-buttons button:hover {\n            background: #e5e7eb;\n        }\n\n        .french-drain-cost-container .french-drain-cost-no-spinner::-webkit-inner-spin-button,\n        .french-drain-cost-container .french-drain-cost-no-spinner::-webkit-outer-spin-button {\n            -webkit-appearance: none;\n            appearance: none;\n            margin: 0;\n        }\n\n        .french-drain-cost-container .french-drain-cost-no-spinner {\n            -moz-appearance: textfield;\n        }\n\n        .french-drain-cost-container .french-drain-cost-checkbox-group {\n            display: flex;\n            align-items: center;\n            gap: 12px;\n            margin-bottom: 0;\n        }\n\n        .french-drain-cost-container .french-drain-cost-checkbox-group input[type=\"checkbox\"] {\n            width: 20px;\n            height: 20px;\n            accent-color: #2563eb;\n            cursor: pointer;\n        }\n\n        .french-drain-cost-container .french-drain-cost-checkbox-group label {\n            font-size: 16px;\n            font-weight: 500;\n            margin-bottom: 0;\n            cursor: pointer;\n        }\n\n        .french-drain-cost-container .french-drain-cost-additional-input {\n            margin-left: 32px;\n            margin-top: 20px;\n        }\n\n        .french-drain-cost-container .french-drain-cost-additional-input label {\n            display: block;\n            font-size: 15px;\n            font-weight: 500;\n            margin-bottom: 8px;\n        }\n\n        .french-drain-cost-container .french-drain-cost-additional-input input {\n            width: 100%;\n            padding: 10px 14px;\n            border: 1px solid #d1d5db;\n            border-radius: 6px;\n        }\n\n        .french-drain-cost-container .french-drain-cost-help-text {\n            font-size: 14px;\n            color: #6b7280;\n            margin-top: 6px;\n            margin-bottom: 0;\n        }\n\n        .french-drain-cost-container .french-drain-cost-note {\n            background-color: #fef3c7;\n            padding: 16px;\n            border-radius: 8px;\n            border: 1px solid #fbbf24;\n            margin-top: 24px;\n        }\n\n        .french-drain-cost-container .french-drain-cost-note p {\n            font-size: 15px;\n            color: #92400e;\n            margin: 0;\n        }\n\n        .french-drain-cost-container .french-drain-cost-summary-item {\n            display: block;\n            font-size: 16px;\n            margin-bottom: 8px;\n            padding: 0;\n            line-height: 1.6;\n        }\n\n        .french-drain-cost-container .french-drain-cost-summary-item span:first-child {\n            display: inline;\n            margin-right: 10px;\n        }\n\n        .french-drain-cost-container .french-drain-cost-summary-item span:last-child {\n            display: inline;\n            font-weight: 600;\n            color: #111827;\n        }\n\n        .french-drain-cost-container .french-drain-cost-cost-items {\n            margin-bottom: 0;\n            display: flex;\n            flex-direction: column;\n            gap: 8px;\n        }\n\n        .french-drain-cost-container .french-drain-cost-cost-item {\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n            width: 100%;\n            font-size: 16px;\n            margin-bottom: 0;\n            padding: 0;\n            color: #374151;\n            line-height: 1.6;\n            min-height: 24px;\n        }\n\n        .french-drain-cost-container .french-drain-cost-cost-item .french-drain-cost-cost-value {\n            font-weight: 600;\n            color: #111827;\n            margin-left: 12px;\n            white-space: nowrap;\n        }\n\n        .french-drain-cost-container .french-drain-cost-cost-item .french-drain-cost-cost-label {\n            flex: 1;\n            padding-right: 12px;\n        }\n\n        .french-drain-cost-container .french-drain-cost-cost-item .french-drain-cost-cost-label span {\n            font-weight: bold;\n        }\n\n        .french-drain-cost-container .french-drain-cost-total-base {\n            padding-top: 0;\n            margin-top: 12px;\n        }\n\n        .french-drain-cost-container .french-drain-cost-total-base::before {\n            content: '';\n            display: block;\n            border-top: 2px solid #d1d5db;\n            margin-bottom: 6px;\n            margin-top: -4px !important;\n        }\n\n        .french-drain-cost-container .french-drain-cost-total-line {\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n            font-size: 20px;\n            margin-bottom: 12px;\n        }\n\n        .french-drain-cost-container .french-drain-cost-total-line span:first-child {\n            font-weight: 600;\n            color: #374151;\n        }\n\n        .french-drain-cost-container .french-drain-cost-total-line span:last-child {\n            font-weight: bold;\n            color: #1e40af;\n        }\n\n        .french-drain-cost-container .french-drain-cost-total-line.french-drain-cost-second-line {\n            margin-top: 0;\n        }\n\n        .french-drain-cost-container .french-drain-cost-option-item {\n            display: flex;\n            justify-content: space-between;\n            font-size: 16px;\n            margin-bottom: 10px;\n            padding: 0;\n        }\n\n        .french-drain-cost-container .french-drain-cost-option-item:last-child {\n            margin-bottom: 0;\n        }\n\n        .french-drain-cost-container .french-drain-cost-option-item span:last-child {\n            font-weight: 600;\n            color: #111827;\n        }\n\n        .french-drain-cost-container .french-drain-cost-total-options {\n            padding-top: 0;\n            margin-top: 0;\n        }\n\n        .french-drain-cost-container .french-drain-cost-total-options::before {\n            content: '';\n            display: block;\n            border-top: 2px solid #d1d5db;\n            margin-bottom: 6px;\n            margin-top: 6px;\n        }\n\n        .french-drain-cost-container .french-drain-cost-total-options .french-drain-cost-total-line span:last-child {\n            color: #166534;\n        }\n\n        .french-drain-cost-container .french-drain-cost-price-breakdown {\n            display: flex;\n            flex-direction: column;\n            gap: 5px;\n            margin-bottom: 0;\n        }\n\n        .french-drain-cost-container .french-drain-cost-price-item {\n            display: flex;\n            justify-content: space-between;\n            font-size: 20px;\n            margin-bottom: 0;\n        }\n\n        .french-drain-cost-container .french-drain-cost-price-item span:last-child {\n            font-weight: 600;\n            color: #374151;\n        }\n\n        .french-drain-cost-container .french-drain-cost-final-price {\n            position: relative;\n            display: flex;\n            justify-content: space-between;\n            font-size: 28px;\n            font-weight: bold;\n            padding-top: 0;\n            margin-top: 0;\n        }\n\n        .french-drain-cost-container .french-drain-cost-final-price::before {\n            content: '';\n            position: absolute;\n            left: 0;\n            right: 0;\n            top: 0;\n            border-top: 2px solid #d1d5db;\n        }\n\n        .french-drain-cost-container .french-drain-cost-final-price span:last-child {\n            color: #ea580c;\n        }\n\n        .french-drain-cost-container .french-drain-cost-taxes {\n            font-size: 14px;\n            font-style: italic;\n            color: #9a3412;\n            text-align: right;\n            margin-top: 6px;\n        }\n\n        .french-drain-cost-container .french-drain-cost-info-text {\n            font-size: 16px;\n            color: #6b7280;\n        }\n\n        .french-drain-cost-container .french-drain-cost-info-text p {\n            font-weight: 600;\n            margin-bottom: 20px;\n            margin-top: 0;\n            color: #374151;\n        }\n\n        .french-drain-cost-container .french-drain-cost-info-text ul {\n            list-style: none;\n            padding-left: 25px;\n            margin: 0;\n        }\n\n        .french-drain-cost-container .french-drain-cost-info-text li {\n            margin-bottom: 5px;\n            padding-left: 0;\n            position: relative;\n        }\n\n        .french-drain-cost-container .french-drain-cost-info-text li:last-child {\n            margin-bottom: 0;\n        }\n\n        .french-drain-cost-container .french-drain-cost-summary-card,\n        .french-drain-cost-container .french-drain-cost-costs-card,\n        .french-drain-cost-container .french-drain-cost-options-card,\n        .french-drain-cost-container .french-drain-cost-final-total {\n            padding-bottom: 15px !important;\n        }\n\n        \/* Tablets *\/\n        @media (max-width: 768px) {\n            .french-drain-cost-container {\n                padding: 20px;\n            }\n\n            .french-drain-cost-container h1 {\n                font-size: 28px;\n            }\n\n            .french-drain-cost-container .french-drain-cost-subtitle {\n                font-size: 48px;\n            }\n\n            .french-drain-cost-container .french-drain-cost-main-grid {\n                grid-template-columns: 1fr;\n                gap: 24px;\n            }\n\n            .french-drain-cost-container .french-drain-cost-card {\n                padding: 20px;\n            }\n\n            .french-drain-cost-container .french-drain-cost-card h2 {\n                font-size: 20px;\n                margin-bottom: 18px;\n            }\n\n            .french-drain-cost-container .french-drain-cost-number-input-wrapper .french-drain-cost-spinner-buttons {\n                width: 35px;\n            }\n\n            .french-drain-cost-container .french-drain-cost-number-input-wrapper .french-drain-cost-spinner-buttons button {\n                font-size: 7px !important;\n                line-height: 1 !important;\n                padding: 1px !important;\n            }\n\n            .french-drain-cost-container .french-drain-cost-number-input-wrapper input[type=\"number\"] {\n                padding-right: 41px;\n            }\n\n            .french-drain-cost-container .french-drain-cost-summary-card,\n            .french-drain-cost-container .french-drain-cost-costs-card,\n            .french-drain-cost-container .french-drain-cost-options-card,\n            .french-drain-cost-container .french-drain-cost-final-total {\n                padding-bottom: 12px !important;\n            }\n        }\n\n        \/* Phones *\/\n        @media (max-width: 480px) {\n            .french-drain-cost-container {\n                padding: 16px;\n            }\n\n            .french-drain-cost-container h1 {\n                font-size: 24px;\n            }\n\n            .french-drain-cost-container .french-drain-cost-subtitle {\n                font-size: 32px;\n            }\n\n            .french-drain-cost-container .french-drain-cost-card {\n                padding: 16px;\n            }\n\n            .french-drain-cost-container .french-drain-cost-card h2 {\n                font-size: 18px;\n                margin-bottom: 12px;\n            }\n\n            .french-drain-cost-container .french-drain-cost-number-input-wrapper .french-drain-cost-spinner-buttons {\n                width: 32px;\n            }\n\n            .french-drain-cost-container .french-drain-cost-number-input-wrapper .french-drain-cost-spinner-buttons button {\n                font-size: 10px !important;\n            }\n\n            .french-drain-cost-container .french-drain-cost-number-input-wrapper input[type=\"number\"] {\n                padding-right: 38px;\n            }\n\n            .french-drain-cost-container .french-drain-cost-input-group input,\n            .french-drain-cost-container .french-drain-cost-input-group select {\n                font-size: 16px !important;\n            }\n\n            .french-drain-cost-container .french-drain-cost-summary-card,\n            .french-drain-cost-container .french-drain-cost-costs-card,\n            .french-drain-cost-container .french-drain-cost-options-card,\n            .french-drain-cost-container .french-drain-cost-final-total {\n                padding-bottom: 10px !important;\n            }\n\n            \/* Force prices to stay on one line *\/\n            .french-drain-cost-container .french-drain-cost-cost-item .french-drain-cost-cost-value,\n            .french-drain-cost-container .french-drain-cost-option-item span:last-child,\n            .french-drain-cost-container .french-drain-cost-price-item span:last-child,\n            .french-drain-cost-container .french-drain-cost-total-line span:last-child,\n            .french-drain-cost-container .french-drain-cost-final-price span:last-child {\n                white-space: nowrap !important;\n                flex-shrink: 0 !important;\n                min-width: fit-content !important;\n            }\n\n            \/* Adjust item text to make room for price *\/\n            .french-drain-cost-container .french-drain-cost-cost-item .french-drain-cost-cost-label,\n            .french-drain-cost-container .french-drain-cost-option-item span:first-child,\n            .french-drain-cost-container .french-drain-cost-price-item span:first-child {\n                overflow-wrap: break-word;\n                word-break: break-word;\n                hyphens: auto;\n                flex: 1;\n                padding-right: 8px;\n            }\n\n            \/* Ensure containers remain flexible *\/\n            .french-drain-cost-container .french-drain-cost-cost-item,\n            .french-drain-cost-container .french-drain-cost-option-item,\n            .french-drain-cost-container .french-drain-cost-price-item,\n            .french-drain-cost-container .french-drain-cost-total-line,\n            .french-drain-cost-container .french-drain-cost-final-price {\n                display: flex !important;\n                align-items: flex-start !important;\n                gap: 8px !important;\n            }\n        }\n        <\/style>\n\n        <div class=\"french-drain-cost-header\">\n            <p class=\"french-drain-cost-subtitle\">&#127968; User Guide<\/p>\n            <div class=\"french-drain-cost-instructions\">\n                <ol>\n                    <li>Enter the estimated length of the <a style=\"text-decoration: none;\" href=\"https:\/\/excavationchanthier.ca\/en\/excavation\/french-drain\/\">French drain<\/a>.<\/li>\n                    <li>Choose the foundation type.<\/li>\n                    <li>Select the options that apply.<\/li>\n                <\/ol>\n            <\/div>\n        <\/div>\n\n        <div class=\"french-drain-cost-main-grid\">\n            <div class=\"french-drain-cost-input-section\">\n                <div class=\"french-drain-cost-card french-drain-cost-base-info\">\n                    <h2>&#128451;&#65039; Basic Information<\/h2>\n\n                    <div class=\"french-drain-cost-input-group\">\n                        <label for=\"piedsLineaires\">Estimated length in linear ft.<\/label>\n                        <input type=\"number\" id=\"piedsLineaires\" value=\"100\" min=\"1\" max=\"1000\" placeholder=\"Enter a value between 1 and 1000\" class=\"french-drain-cost-no-spinner\">\n                    <\/div>\n\n                    <div class=\"french-drain-cost-input-group\">\n                        <label for=\"typeFondation\">Foundation type<\/label>\n                        <select id=\"typeFondation\">\n                            <option value=\"coulee\">Poured concrete foundation<\/option>\n                            <option value=\"blocs\">Concrete block foundation<\/option>\n                        <\/select>\n                    <\/div>\n                <\/div>\n\n                <div class=\"french-drain-cost-card french-drain-cost-options-info\">\n                    <h2>&#128736;&#65039; Options<\/h2>\n\n                    <div class=\"french-drain-cost-input-group\">\n                        <label for=\"nbFissures\">Foundation crack repair<\/label>\n                        <select id=\"nbFissures\">\n                            <option value=\"0\">0 &mdash; None<\/option>\n                            <option>1<\/option><option>2<\/option><option>3<\/option><option>4<\/option><option>5<\/option>\n                            <option>6<\/option><option>7<\/option><option>8<\/option><option>9<\/option><option>10<\/option>\n                        <\/select>\n                        <p class=\"french-drain-cost-help-text\">1st crack: $850 &mdash; each additional crack: $400.<\/p>\n                        <div class=\"french-drain-cost-note\">\n                            <p>Final price will be calculated per linear foot.<\/p>\n                        <\/div>\n                    <\/div>\n\n                    <div class=\"french-drain-cost-input-group\">\n                        <label for=\"nbMargelles\">Number of window wells<\/label>\n                        <select id=\"nbMargelles\">\n                            <option value=\"0\">0 &mdash; None<\/option>\n                            <option>1<\/option><option>2<\/option><option>3<\/option><option>4<\/option><option>5<\/option>\n                            <option>6<\/option><option>7<\/option><option>8<\/option><option>9<\/option><option>10<\/option>\n                        <\/select>\n                        <p class=\"french-drain-cost-help-text\">$100 per window well.<\/p>\n                    <\/div>\n\n                    <div class=\"french-drain-cost-input-group\">\n                        <div class=\"french-drain-cost-checkbox-group\">\n                            <input type=\"checkbox\" id=\"bassinRetention\">\n                            <label for=\"bassinRetention\">Retention basin and submersible pump ($2,900.00)<\/label>\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n\n            <div class=\"french-drain-cost-results-section\">\n                <div class=\"french-drain-cost-card french-drain-cost-summary-card\">\n                    <h2>Project Summary<\/h2>\n\n                    <div class=\"french-drain-cost-summary-item\">\n                        <span>Length of BNQ perforated drainage pipe:<\/span>\n                        <span id=\"resumePiedsLineaires\"><\/span>\n                    <\/div>\n\n                    <div class=\"french-drain-cost-summary-item\">\n                        <span>Foundation type:<\/span>\n                        <span id=\"resumeTypeFondation\"><\/span>\n                    <\/div>\n\n                    <div class=\"french-drain-cost-summary-item\">\n                        <span>Number of cleanouts:<\/span>\n                        <span id=\"resumeCheminees\"><\/span>\n                    <\/div>\n\n                    <div class=\"french-drain-cost-summary-item\">\n                        <span>Number of fittings:<\/span>\n                        <span id=\"resumeCoins\"><\/span>\n                    <\/div>\n\n                    <div class=\"french-drain-cost-summary-item\">\n                        <span>Membrane type:<\/span>\n                        <span id=\"resumeMembrane\"><\/span>\n                    <\/div>\n                <\/div>\n\n                <div class=\"french-drain-cost-card french-drain-cost-costs-card\">\n                    <h2>Base Costs<\/h2>\n\n                    <div class=\"french-drain-cost-cost-items\">\n                        <div class=\"french-drain-cost-cost-item\">\n                            <span class=\"french-drain-cost-cost-label\">Excavation (<span id=\"joursExcavation\"><\/span>)<\/span>\n                            <span id=\"coutExcavation\" class=\"french-drain-cost-cost-value\"><\/span>\n                        <\/div>\n\n                        <div class=\"french-drain-cost-cost-item\">\n                            <span class=\"french-drain-cost-cost-label\">Cleanout(s) (<span id=\"nombreCheminees\"><\/span>)<\/span>\n                            <span id=\"coutCheminees\" class=\"french-drain-cost-cost-value\"><\/span>\n                        <\/div>\n\n                        <div class=\"french-drain-cost-cost-item\">\n                            <span class=\"french-drain-cost-cost-label\">Fitting(s) (<span id=\"nombreCoins\"><\/span>)<\/span>\n                            <span id=\"coutCoins\" class=\"french-drain-cost-cost-value\"><\/span>\n                        <\/div>\n\n                        <div class=\"french-drain-cost-cost-item\">\n                            <span class=\"french-drain-cost-cost-label\">BNQ perforated drainage pipe (<span id=\"piedsLineairesTuyau\"><\/span> linear ft.)<\/span>\n                            <span id=\"coutTuyau\" class=\"french-drain-cost-cost-value\"><\/span>\n                        <\/div>\n\n                        <div class=\"french-drain-cost-cost-item\">\n                            <span class=\"french-drain-cost-cost-label\">Membrane (<span id=\"piedsCarresMembrane\"><\/span> ft&sup2;)<\/span>\n                            <span id=\"coutMembrane\" class=\"french-drain-cost-cost-value\"><\/span>\n                        <\/div>\n                    <\/div>\n\n                    <div class=\"french-drain-cost-total-base\">\n                        <div class=\"french-drain-cost-total-line\">\n                            <span>Total base cost:<\/span>\n                            <span id=\"coutBaseTotal\"><\/span>\n                        <\/div>\n\n                        <div class=\"french-drain-cost-total-line french-drain-cost-second-line\">\n                            <span>Price \/ linear ft.:<\/span>\n                            <span id=\"prixParPiedLineaireBase\"><\/span>\n                        <\/div>\n                    <\/div>\n                <\/div>\n\n                <div id=\"optionsCard\" class=\"french-drain-cost-card french-drain-cost-options-card\" style=\"display: none;\">\n                    <h2>Selected Options<\/h2>\n\n                    <div id=\"optionsList\"><\/div>\n\n                    <div class=\"french-drain-cost-total-options\">\n                        <div class=\"french-drain-cost-total-line\">\n                            <span>Total options:<\/span>\n                            <span id=\"totalOptions\"><\/span>\n                        <\/div>\n                    <\/div>\n                <\/div>\n\n                <div class=\"french-drain-cost-card french-drain-cost-final-total\">\n                    <h2>Final Estimated Total Price<\/h2>\n\n                    <div class=\"french-drain-cost-price-breakdown\">\n                        <div class=\"french-drain-cost-price-item\">\n                            <span>Base price:<\/span>\n                            <span id=\"prixDeBase\"><\/span>\n                        <\/div>\n\n                        <div id=\"prixOptionsLine\" class=\"french-drain-cost-price-item\" style=\"display: none;\">\n                            <span>Options:<\/span>\n                            <span id=\"prixOptions\"><\/span>\n                        <\/div>\n\n                        <div class=\"french-drain-cost-final-price\">\n                            <span>TOTAL:<\/span>\n                            <span id=\"prixTotalFinal\"><\/span>\n                        <\/div>\n\n                        <div class=\"french-drain-cost-taxes\">Plus taxes<\/div>\n\n                        <div class=\"french-drain-cost-total-line french-drain-cost-second-line\">\n                            <span>Price \/ linear ft.:<\/span>\n                            <span id=\"prixParPiedLineaire\"><\/span>\n                        <\/div>\n                    <\/div>\n                <\/div>\n\n                <div class=\"french-drain-cost-card french-drain-cost-info-card\">\n                    <div class=\"french-drain-cost-info-text\">\n                            <p>&#8505;&#65039;&nbsp;<strong>Factors that influence the price:<\/strong><\/p>\n                            <ul>\n                                <li>Soil type<\/li>\n                                <li>Property accessibility<\/li>\n                                <li>Underground obstacles<\/li>\n                                <li>Foundation layout<\/li>\n                                <li>Time of year<\/li>\n                            <\/ul>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <script>\n    (function() {\n        'use strict';\n\n        \/\/ Pricing configuration \u2014 single source of truth for all costs\n        const PRICING = Object.freeze({\n            excavation: {\n                tier1: { maxFeet: 70, days: 2, price: 12000 },\n                tier2: { maxFeet: 140, days: 3, price: 16000 },\n                extraDayPrice: 4500,\n                trancheSize: 70\n            },\n            chimney: { unitPrice: 105 },\n            fitting: { unitPrice: 17.20 },\n            drainPipe: { pricePerFoot: 2.00 },\n            membrane: {\n                widthMultiplier: 5,\n                poured: { pricePerSqFt: 6.50 },\n                block: { pricePerSqFt: 8.50 }\n            },\n            options: {\n                margelle: 100,\n                fissureFirst: 850,\n                fissureAdd: 400,\n                retentionBasin: 2900\n            }\n        });\n\n        const ANIMATION_DELAY_MS = 150;\n\n        \/\/ DOM element cache \u2014 populated once at init\n        const domCache = {};\n\n        \/\/ Pending animation updates \u2014 collected per cycle, flushed in one rAF\n        let pendingUpdates = [];\n\n        \/\/ Calculator state\n        const state = {\n            piedsLineaires: 100,\n            typeFondation: 'coulee',\n            nbFissures: 0,\n            nbMargelles: 0,\n            bassinRetention: false\n        };\n\n        \/\/ Format currency for EN locale: $8,000.00\n        function formatCurrency(amount) {\n            const parts = amount.toFixed(2).split('.');\n            parts[0] = parts[0].replace(\/\\B(?=(\\d{3})+(?!\\d))\/g, ',');\n            return '$' + parts[0] + '.' + parts[1];\n        }\n\n        \/\/ Create a safe DOM element for option line items\n        function createOptionItem(label, amount) {\n            const div = document.createElement('div');\n            div.className = 'french-drain-cost-option-item';\n            const labelSpan = document.createElement('span');\n            labelSpan.textContent = label;\n            const priceSpan = document.createElement('span');\n            priceSpan.textContent = formatCurrency(amount);\n            div.appendChild(labelSpan);\n            div.appendChild(priceSpan);\n            return div;\n        }\n\n        \/\/ Main calculation and display update function\n        function calculerEtMettreAJour() {\n            let prixFixe, joursExcavation;\n            const isSmallJob = state.piedsLineaires <= PRICING.excavation.tier1.maxFeet;\n\n            if (isSmallJob) {\n                joursExcavation = PRICING.excavation.tier1.days;\n                prixFixe = PRICING.excavation.tier1.price;\n            } else if (state.piedsLineaires <= PRICING.excavation.tier2.maxFeet) {\n                joursExcavation = PRICING.excavation.tier2.days;\n                prixFixe = PRICING.excavation.tier2.price;\n            } else {\n                joursExcavation = PRICING.excavation.tier2.days + Math.ceil((state.piedsLineaires - PRICING.excavation.tier2.maxFeet) \/ PRICING.excavation.trancheSize);\n                prixFixe = PRICING.excavation.tier2.price + ((joursExcavation - PRICING.excavation.tier2.days) * PRICING.excavation.extraDayPrice);\n            }\n\n            \/\/ Chimneys and fittings \u2014 1 per excavation day minus 1\n            const nombreCheminee = joursExcavation - 1;\n            const nombreCoins = joursExcavation - 1;\n            const chemineeRegard = PRICING.chimney.unitPrice * nombreCheminee;\n            const coins = PRICING.fitting.unitPrice * nombreCoins;\n\n            const coutTuyau = PRICING.drainPipe.pricePerFoot * state.piedsLineaires;\n\n            \/\/ Membrane calculation\n            const piedsCarres = state.piedsLineaires * PRICING.membrane.widthMultiplier;\n            let typeMembrane, prixParPiedCarre, coutMembrane;\n\n            if (state.typeFondation === 'coulee') {\n                typeMembrane = 'R-Coat spray membrane and Delta-MS membrane';\n                prixParPiedCarre = PRICING.membrane.poured.pricePerSqFt;\n            } else {\n                typeMembrane = 'Valco membrane (lifetime warranty)';\n                prixParPiedCarre = PRICING.membrane.block.pricePerSqFt;\n            }\n\n            coutMembrane = piedsCarres * prixParPiedCarre;\n\n            \/\/ Options \u2014 DOM-safe construction (no innerHTML)\n            let totalOptions = 0;\n            if (domCache.optionsList) domCache.optionsList.replaceChildren();\n\n            if (state.nbFissures > 0) {\n                const coutFissures = PRICING.options.fissureFirst + (state.nbFissures - 1) * PRICING.options.fissureAdd;\n                if (domCache.optionsList) domCache.optionsList.appendChild(createOptionItem('Foundation cracks (' + state.nbFissures + ')', coutFissures));\n                totalOptions += coutFissures;\n            }\n\n            if (state.nbMargelles > 0) {\n                const coutMargelles = state.nbMargelles * PRICING.options.margelle;\n                if (domCache.optionsList) domCache.optionsList.appendChild(createOptionItem('Window wells (' + state.nbMargelles + ' \\u00d7 ' + formatCurrency(PRICING.options.margelle) + ')', coutMargelles));\n                totalOptions += coutMargelles;\n            }\n\n            if (state.bassinRetention) {\n                const coutBassin = PRICING.options.retentionBasin;\n                if (domCache.optionsList) domCache.optionsList.appendChild(createOptionItem('Retention basin and submersible pump', coutBassin));\n                totalOptions += coutBassin;\n            }\n\n            \/\/ Final totals\n            const prixTotalSansOptions = prixFixe + chemineeRegard + coins + coutTuyau + coutMembrane;\n            const prixTotalAvecOptions = prixTotalSansOptions + totalOptions;\n            const prixParPiedLineaireBase = state.piedsLineaires > 0 ? prixTotalSansOptions \/ state.piedsLineaires : 0;\n            const prixParPiedLineaire = state.piedsLineaires > 0 ? prixTotalAvecOptions \/ state.piedsLineaires : 0;\n\n            \/\/ Update display with animation\n            updateWithAnimation('resumePiedsLineaires', state.piedsLineaires + ' ft');\n            updateWithAnimation('resumeTypeFondation', state.typeFondation === 'coulee' ? 'Poured concrete' : 'Concrete blocks');\n            updateWithAnimation('resumeCheminees', nombreCheminee);\n            updateWithAnimation('resumeCoins', nombreCoins);\n            updateWithAnimation('resumeMembrane', typeMembrane);\n\n            updateWithAnimation('nombreCheminees', nombreCheminee);\n            updateWithAnimation('nombreCoins', nombreCoins);\n            updateWithAnimation('piedsLineairesTuyau', state.piedsLineaires);\n            updateWithAnimation('piedsCarresMembrane', piedsCarres);\n\n            updateWithAnimation('joursExcavation', joursExcavation + ' days');\n\n            updateWithAnimation('coutExcavation', formatCurrency(prixFixe));\n            updateWithAnimation('coutCheminees', formatCurrency(chemineeRegard));\n            updateWithAnimation('coutCoins', formatCurrency(coins));\n            updateWithAnimation('coutTuyau', formatCurrency(coutTuyau));\n            updateWithAnimation('coutMembrane', formatCurrency(coutMembrane));\n\n            updateWithAnimation('coutBaseTotal', formatCurrency(prixTotalSansOptions));\n            updateWithAnimation('prixParPiedLineaireBase', formatCurrency(prixParPiedLineaireBase));\n\n            \/\/ Options card visibility\n            if (totalOptions > 0) {\n                if (domCache.optionsCard) domCache.optionsCard.style.display = 'block';\n                updateWithAnimation('totalOptions', formatCurrency(totalOptions));\n            } else {\n                if (domCache.optionsCard) domCache.optionsCard.style.display = 'none';\n            }\n\n            \/\/ Final price section\n            updateWithAnimation('prixDeBase', formatCurrency(prixTotalSansOptions));\n\n            if (totalOptions > 0) {\n                if (domCache.prixOptionsLine) domCache.prixOptionsLine.style.display = 'flex';\n                updateWithAnimation('prixOptions', formatCurrency(totalOptions));\n            } else {\n                if (domCache.prixOptionsLine) domCache.prixOptionsLine.style.display = 'none';\n            }\n\n            updateWithAnimation('prixParPiedLineaire', formatCurrency(prixParPiedLineaire));\n            updateWithAnimation('prixTotalFinal', formatCurrency(prixTotalAvecOptions));\n\n            flushUpdates();\n        }\n\n        \/\/ Queue an animated value update (collected, then flushed in one batch)\n        function updateWithAnimation(elementId, value) {\n            const el = domCache[elementId];\n            if (el) {\n                pendingUpdates.push({ el: el, value: value });\n            }\n        }\n\n        \/\/ Flush all queued updates in a single paint cycle\n        function flushUpdates() {\n            const updates = pendingUpdates;\n            pendingUpdates = [];\n            if (updates.length === 0) return;\n\n            requestAnimationFrame(() => {\n                for (let i = 0; i < updates.length; i++) {\n                    updates[i].el.style.opacity = '0.5';\n                }\n                setTimeout(() => {\n                    for (let j = 0; j < updates.length; j++) {\n                        updates[j].el.textContent = updates[j].value;\n                        updates[j].el.style.opacity = '1';\n                    }\n                }, ANIMATION_DELAY_MS);\n            });\n        }\n\n        \/\/ Debounce utility for number inputs\n        function debounce(func, wait) {\n            let timeout;\n            return function(...args) {\n                clearTimeout(timeout);\n                timeout = setTimeout(() => func(...args), wait);\n            };\n        }\n\n        const calculerAvecDebounce = debounce(calculerEtMettreAJour, 300);\n\n        \/\/ Initialization\n        function initCalculateur() {\n            \/\/ Cache DOM references for animated display elements\n            const cacheIds = [\n                'resumePiedsLineaires', 'resumeTypeFondation', 'resumeCheminees',\n                'resumeCoins', 'resumeMembrane', 'nombreCheminees', 'nombreCoins',\n                'piedsLineairesTuyau', 'piedsCarresMembrane', 'joursExcavation',\n                'coutExcavation', 'coutCheminees', 'coutCoins', 'coutTuyau',\n                'coutMembrane', 'coutBaseTotal', 'prixParPiedLineaireBase',\n                'totalOptions', 'prixDeBase', 'prixOptions', 'prixParPiedLineaire',\n                'prixTotalFinal', 'optionsList', 'optionsCard', 'prixOptionsLine'\n            ];\n            for (const id of cacheIds) {\n                domCache[id] = document.getElementById(id);\n            }\n\n            \/\/ Event listeners \u2014 piedsLineaires\n            const inputPiedsLineaires = document.getElementById('piedsLineaires');\n\n            inputPiedsLineaires.addEventListener('input', function() {\n                this.value = this.value.replace(\/[^0-9]\/g, '');\n                const value = parseInt(this.value);\n                state.piedsLineaires = isNaN(value) ? 1 : Math.min(Math.max(value, 1), 1000);\n                calculerAvecDebounce();\n            });\n\n            inputPiedsLineaires.addEventListener('keydown', (e) => {\n                if (e.key.length === 1 && !\/[0-9]\/.test(e.key)) {\n                    e.preventDefault();\n                }\n            });\n\n            inputPiedsLineaires.addEventListener('blur', function() {\n                const value = parseInt(this.value);\n                if (this.value === '' || isNaN(value) || value < 1) {\n                    this.value = 1;\n                    state.piedsLineaires = 1;\n                } else if (value > 1000) {\n                    this.value = 1000;\n                    state.piedsLineaires = 1000;\n                } else {\n                    state.piedsLineaires = value;\n                }\n                calculerEtMettreAJour();\n            });\n\n            \/\/ Event listeners \u2014 selects and checkboxes\n            document.getElementById('typeFondation').addEventListener('change', (e) => {\n                const allowed = ['coulee', 'blocs'];\n                state.typeFondation = allowed.includes(e.target.value) ? e.target.value : 'coulee';\n                calculerEtMettreAJour();\n            });\n\n            document.getElementById('nbFissures').addEventListener('change', (e) => {\n                state.nbFissures = parseInt(e.target.value, 10) || 0;\n                calculerEtMettreAJour();\n            });\n\n            document.getElementById('nbMargelles').addEventListener('change', (e) => {\n                state.nbMargelles = parseInt(e.target.value, 10) || 0;\n                calculerEtMettreAJour();\n            });\n\n            \/\/ Event listener \u2014 bassinRetention\n            document.getElementById('bassinRetention').addEventListener('change', (e) => {\n                state.bassinRetention = e.target.checked;\n                calculerEtMettreAJour();\n            });\n\n            \/\/ Initial calculation\n            calculerEtMettreAJour();\n        }\n\n        \/\/ Handle both inline rendering (DOMContentLoaded pending) and dynamic injection (already fired)\n        if (document.readyState === 'loading') {\n            document.addEventListener('DOMContentLoaded', initCalculateur);\n        } else {\n            initCalculateur();\n        }\n    })();\n    <\/script>\n    \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-ba3b688 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"ba3b688\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-6fe86f0\" data-id=\"6fe86f0\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-0b3a8e0 elementor-widget elementor-widget-text-editor\" data-id=\"0b3a8e0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<style>\n    \/* Scoped CSS - Only affects content within .french-drain-article-content *\/\n    .french-drain-article-content {\n        line-height: 1.6;\n        color: #333;\n        background-color: white;\n        padding: 30px;\n        border-radius: 10px;\n        box-shadow: 0 4px 6px rgba(0,0,0,0.1);\n        max-width: 100%;\n        word-wrap: break-word;\n        overflow-wrap: break-word;\n    }\n\n    \/* Extra small screens *\/\n    @media (max-width: 320px) {\n        .french-drain-article-content {\n            padding: 10px;\n        }\n\n        .french-drain-article-content h1 {\n            font-size: 1.4rem;\n            margin-bottom: 15px;\n        }\n\n        .french-drain-article-content h2 {\n            font-size: 1.2rem;\n            margin-top: 25px;\n            margin-bottom: 12px;\n            padding-left: 10px;\n        }\n\n        .french-drain-article-content h3 {\n            font-size: 1rem;\n            margin-top: 15px;\n            margin-bottom: 8px;\n        }\n\n        .french-drain-article-content .responsive-table {\n            font-size: 10px;\n        }\n\n        .french-drain-article-content th,\n        .french-drain-article-content td {\n            padding: 6px 4px;\n        }\n\n        .french-drain-article-content table {\n            min-width: 450px;\n        }\n\n        .french-drain-article-content .highlight-box,\n        .french-drain-article-content .warning-box,\n        .french-drain-article-content .danger-box,\n        .french-drain-article-content .info-list {\n            padding: 12px;\n            margin: 12px 0;\n        }\n\n        .french-drain-article-content .faq-section {\n            padding: 0.8rem;\n        }\n\n        .french-drain-article-content .faq-item {\n            padding: 0.6rem;\n            margin-bottom: 0.8rem;\n        }\n\n        .french-drain-article-content .faq-item h3 {\n            font-size: 0.9rem;\n        }\n\n        .french-drain-article-content .stat-number {\n            font-size: 1.3rem;\n        }\n\n        .french-drain-article-content .stat-label {\n            font-size: 0.75rem;\n        }\n\n        .french-drain-article-content .cta-button a {\n            padding: 8px 16px;\n            font-size: 13px;\n        }\n    }\n\n    .french-drain-article-content .cta-button {\n        padding: 15px 0;\n        text-align: center;\n        margin: 30px 0;\n    }\n\n    .french-drain-article-content .cta-button a {\n        background-color: #9e0505;\n        color: #ffffff;\n        padding: 12px 30px;\n        text-decoration: none;\n        border-radius: 5px;\n        font-weight: bold;\n        font-size: 16px;\n        transition: background-color 0.3s ease;\n        display: inline-block;\n    }\n\n    .french-drain-article-content .cta-button a:hover {\n        background-color: #7a0404;\n    }\n\n    .french-drain-article-content h1 {\n        color: #2c3e50;\n        font-size: 2.5rem;\n        text-align: center;\n        margin-bottom: 30px;\n        border-bottom: 3px solid #9e0505;\n        padding-bottom: 15px;\n    }\n\n    .french-drain-article-content h2 {\n        color: #34495e;\n        font-size: 1.8rem;\n        margin-top: 40px;\n        margin-bottom: 20px;\n        border-left: 5px solid #9e0505;\n        padding-left: 15px;\n    }\n\n    .french-drain-article-content h3 {\n        color: #34495e;\n        font-size: 1.4rem;\n        margin-top: 30px;\n        margin-bottom: 15px;\n    }\n\n    .french-drain-article-content .highlight-box {\n        background-color: #e8f4fd;\n        border-left: 5px solid #3498db;\n        padding: 20px;\n        margin: 20px 0;\n        border-radius: 5px;\n    }\n\n    .french-drain-article-content .warning-box {\n        background-color: #fff3cd;\n        border: 1px solid #ffeaa7;\n        border-left: 5px solid #f39c12;\n        padding: 15px;\n        margin: 20px 0;\n        border-radius: 5px;\n    }\n\n    .french-drain-article-content .danger-box {\n        background-color: #f8d7da;\n        border: 1px solid #f5c6cb;\n        border-left: 5px solid #dc3545;\n        padding: 15px;\n        margin: 20px 0;\n        border-radius: 5px;\n    }\n\n    .french-drain-article-content .info-list {\n        background-color: #f8f9fa;\n        padding: 20px;\n        border-radius: 8px;\n        margin: 20px 0;\n    }\n\n    .french-drain-article-content .info-list ul {\n        margin: 0;\n        padding-left: 20px;\n    }\n\n    .french-drain-article-content .info-list li {\n        margin-bottom: 8px;\n    }\n\n    .french-drain-article-content .responsive-table {\n        overflow-x: auto;\n        margin: 20px 0;\n        border-radius: 8px;\n        box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n    }\n\n    .french-drain-article-content table {\n        width: 100%;\n        border-collapse: collapse;\n        background-color: white;\n        min-width: 500px;\n    }\n\n    .french-drain-article-content th {\n        background-color: #2c3e50;\n        color: white;\n        padding: 15px 12px;\n        text-align: left;\n        font-weight: 600;\n        font-size: 14px;\n    }\n\n    .french-drain-article-content td {\n        padding: 12px;\n        border-bottom: 1px solid #e9ecef;\n        font-size: 14px;\n    }\n\n    .french-drain-article-content tr:nth-child(even) {\n        background-color: #f8f9fa;\n    }\n\n    .french-drain-article-content tr:hover {\n        background-color: #e3f2fd;\n    }\n\n    .french-drain-article-content .price-highlight {\n        font-weight: bold;\n        color: #9e0505;\n    }\n\n    .french-drain-article-content .percentage-positive {\n        color: #27ae60;\n        font-weight: bold;\n    }\n\n    .french-drain-article-content .percentage-negative {\n        color: #e74c3c;\n        font-weight: bold;\n    }\n\n    .french-drain-article-content .article-image {\n        text-align: center;\n        margin: 30px 0;\n    }\n\n    .french-drain-article-content .article-image img {\n        max-width: 100%;\n        height: auto;\n        border-radius: 8px;\n        box-shadow: 0 4px 8px rgba(0,0,0,0.1);\n        display: block;\n        margin: 0 auto;\n    }\n\n    .french-drain-article-content .faq-section {\n        margin: 2rem 0;\n        padding: 1.5rem;\n        background-color: #f9f9f9;\n        border-radius: 8px;\n    }\n\n    .french-drain-article-content .faq-item {\n        margin-bottom: 1.5rem;\n        padding: 1rem;\n        background-color: white;\n        border-radius: 5px;\n        box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n        transition: transform 0.2s ease;\n    }\n\n    .french-drain-article-content .faq-item:hover {\n        transform: translateY(-2px);\n    }\n\n    .french-drain-article-content .faq-item h3 {\n        color: #34495e;\n        margin-bottom: 0.5rem;\n        font-size: 1.2rem;\n    }\n\n    .french-drain-article-content .faq-item p {\n        line-height: 1.6;\n        margin: 0;\n        word-wrap: break-word;\n        overflow-wrap: break-word;\n    }\n\n    .french-drain-article-content a {\n        word-wrap: break-word;\n        overflow-wrap: break-word;\n    }\n\n    .french-drain-article-content .section-divider {\n        height: 2px;\n        background: linear-gradient(90deg, #9e0505, #34495e);\n        margin: 40px 0;\n        border-radius: 1px;\n    }\n\n    .french-drain-article-content .stats-grid {\n        display: grid;\n        grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n        gap: 15px;\n        margin: 30px 0;\n    }\n\n    .french-drain-article-content .stat-card {\n        background-color: #f8f9fa;\n        padding: 15px;\n        border-radius: 8px;\n        text-align: center;\n        border-left: 4px solid #9e0505;\n    }\n\n    .french-drain-article-content .stat-number {\n        font-size: 1.8rem;\n        font-weight: bold;\n        color: #9e0505;\n        display: block;\n    }\n\n    .french-drain-article-content .stat-label {\n        font-size: 0.85rem;\n        color: #666;\n        margin-top: 5px;\n    }\n\n    \/* Enhanced Mobile Responsiveness *\/\n    @media (max-width: 480px) {\n        .french-drain-article-content {\n            padding: 15px;\n        }\n\n        .french-drain-article-content h1 {\n            font-size: 1.6rem;\n            margin-bottom: 20px;\n        }\n\n        .french-drain-article-content h2 {\n            font-size: 1.3rem;\n            margin-top: 30px;\n            margin-bottom: 15px;\n        }\n\n        .french-drain-article-content h3 {\n            font-size: 1.1rem;\n            margin-top: 20px;\n            margin-bottom: 10px;\n        }\n\n        .french-drain-article-content .responsive-table {\n            font-size: 11px;\n        }\n\n        .french-drain-article-content th,\n        .french-drain-article-content td {\n            padding: 8px 6px;\n        }\n\n        .french-drain-article-content table {\n            min-width: 500px;\n        }\n\n        .french-drain-article-content .highlight-box,\n        .french-drain-article-content .warning-box,\n        .french-drain-article-content .danger-box,\n        .french-drain-article-content .info-list {\n            padding: 15px;\n            margin: 15px 0;\n        }\n\n        .french-drain-article-content .faq-section {\n            padding: 1rem;\n        }\n\n        .french-drain-article-content .faq-item {\n            padding: 0.8rem;\n            margin-bottom: 1rem;\n        }\n\n        .french-drain-article-content .faq-item h3 {\n            font-size: 1rem;\n        }\n\n        .french-drain-article-content .stats-grid {\n            grid-template-columns: 1fr;\n            gap: 10px;\n            margin: 20px 0;\n        }\n\n        .french-drain-article-content .stat-card {\n            padding: 12px;\n        }\n\n        .french-drain-article-content .stat-number {\n            font-size: 1.5rem;\n        }\n\n        .french-drain-article-content .stat-label {\n            font-size: 0.8rem;\n        }\n\n        .french-drain-article-content .cta-button a {\n            padding: 10px 20px;\n            font-size: 14px;\n        }\n    }\n\n    @media (max-width: 768px) and (min-width: 481px) {\n        .french-drain-article-content {\n            padding: 20px;\n        }\n\n        .french-drain-article-content h1 {\n            font-size: 2rem;\n        }\n\n        .french-drain-article-content h2 {\n            font-size: 1.5rem;\n        }\n\n        .french-drain-article-content h3 {\n            font-size: 1.2rem;\n        }\n\n        .french-drain-article-content .responsive-table {\n            font-size: 12px;\n        }\n\n        .french-drain-article-content .stats-grid {\n            grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n            gap: 15px;\n        }\n\n        .french-drain-article-content .stat-number {\n            font-size: 1.6rem;\n        }\n    }\n\n    @media (max-width: 1024px) and (min-width: 769px) {\n        .french-drain-article-content .stats-grid {\n            grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));\n        }\n    }\n\n    \/* Large screens optimization *\/\n    @media (min-width: 1200px) {\n        .french-drain-article-content {\n            padding: 40px;\n        }\n\n        .french-drain-article-content .stats-grid {\n            grid-template-columns: repeat(4, 1fr);\n            gap: 25px;\n        }\n    }\n<\/style>\n<div class=\"french-drain-article-content\">\n<div class=\"cta-button\"><a href=\"https:\/\/excavationchanthier.ca\/en\/contact\/\" target=\"_self\">REQUEST A FREE QUOTE<\/a><\/div>\n<h1>French Drain Cost: Complete 2026 Montreal Pricing Guide<\/h1>\n<div class=\"highlight-box\">\n<h2 style=\"margin-top: 0; border: none; padding: 0;\">WHAT YOU NEED TO KNOW<\/h2>\n<ul>\n     <li><strong>Base price:<\/strong> <span class=\"price-highlight\">$150-250 per linear foot<\/span> (without options)<\/li>\n     <li><strong>Variables can double the price:<\/strong> rock, winter, emergency<\/li>\n     <li><strong>68% of projects exceed initial budget by 15-25%<\/strong><\/li>\n     <li><strong>Potential savings:<\/strong> up to <span class=\"percentage-positive\">35%<\/span> (subsidies + timing)<\/li>\n     <li><strong>Warning signal:<\/strong> price <span class=\"price-highlight\">&lt;$100\/ft = DANGER<\/span><\/li>\n<\/ul>\n<\/div>\n<h2>Introduction<\/h2>\nThe calculator above gives you the base price according to length. However, 15 to 20 factors can modify this amount from -20% to +200%. Here&#8217;s everything that truly influences the final French drain cost.\n\nUnderstanding how much does a French drain cost requires analyzing multiple variables beyond the basic linear footage calculation. In 2026 across Greater Montreal, the price for <a href=\"https:\/\/excavationchanthier.ca\/en\/excavation\/french-drain\/\">French drain installation<\/a> varies: installation <span class=\"price-highlight\">$150-250\/ft<\/span> (without options), replacement <span class=\"price-highlight\">$190-325\/ft<\/span> (+25-30%), repair <span class=\"price-highlight\">$75-150\/ft<\/span>.\n\nWhen considering the cost to install French drain systems, the average cost for French drain installation fluctuates based on 20+ factors specific to Montreal&#8217;s unique conditions. This analysis, based on 150+ verified quotes in Montreal and surrounding areas, reveals the true cost structure behind professional French drain installations.\n<div class=\"section-divider\"><\/div>\n<h2>Beyond the Calculator: Hidden Price Variables<\/h2>\nThe calculator provides baseline estimates, but real-world French drain cost depends on critical multiplying factors that contractors encounter during Montreal installations. As with any <a href=\"https:\/\/excavationchanthier.ca\/en\/excavation\/residential-excavation\/\">residential excavation<\/a> project, soil type, foundation depth, and site access dictate the real cost:\n<div class=\"responsive-table\">\n<table>\n<thead>\n<tr>\n<th>Factor<\/th>\n<th>Calculator Impact<\/th>\n<th>Real Surcharge<\/th>\n<th>Montreal Frequency<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Rock presence<\/td>\n<td><span class=\"percentage-negative\">\u00d72 to \u00d73<\/span><\/td>\n<td class=\"price-highlight\">+$150-500\/ft<\/td>\n<td>15% of cases<\/td>\n<\/tr>\n<tr>\n<td>Clay soil (H1A, H2B)<\/td>\n<td><span class=\"percentage-negative\">\u00d71.3<\/span><\/td>\n<td class=\"price-highlight\">+$45-75\/ft<\/td>\n<td>40% of cases<\/td>\n<\/tr>\n<tr>\n<td>High water table<\/td>\n<td><span class=\"percentage-negative\">\u00d71.4<\/span><\/td>\n<td class=\"price-highlight\">+$60-100\/ft<\/td>\n<td>25% of cases<\/td>\n<\/tr>\n<tr>\n<td>Access &lt;3 feet<\/td>\n<td><span class=\"percentage-negative\">\u00d71.5<\/span><\/td>\n<td class=\"price-highlight\">+$75-125\/ft<\/td>\n<td>30% downtown<\/td>\n<\/tr>\n<tr>\n<td>Depth &gt;8 feet<\/td>\n<td><span class=\"percentage-negative\">\u00d71.6<\/span><\/td>\n<td class=\"price-highlight\">+$90-150\/ft<\/td>\n<td>20% of cases<\/td>\n<\/tr>\n<tr>\n<td>Century home<\/td>\n<td><span class=\"percentage-negative\">\u00d71.5<\/span><\/td>\n<td class=\"price-highlight\">+$75-125\/ft<\/td>\n<td>15% Plateau<\/td>\n<\/tr>\n<tr>\n<td>Slope &gt;15%<\/td>\n<td><span class=\"percentage-negative\">\u00d71.4<\/span><\/td>\n<td class=\"price-highlight\">+$60-100\/ft<\/td>\n<td>10% of cases<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div class=\"warning-box\"><strong>TRAP TO AVOID:<\/strong> Never accept French drain price quotes without soil evaluation. Difference between &#8220;visual&#8221; estimates and post-soil test quotes: 35-60%.<\/div>\n<h2>Installation vs Replacement vs Repair: Cost Breakdown<\/h2>\n<div class=\"article-image\"><img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/excavationchanthier.ca\/en\/wp-content\/uploads\/2025\/08\/french-drain-cost-1.jpg\" alt=\"French drain installation showing excavation, pipe placement, and gravel backfill - key components that determine your final cost\" width=\"500\" height=\"375\" \/><em>Professional French drain installation showing excavation, pipe placement, and gravel backfill &#8211; key components that determine your final cost<\/em>\n\n<\/div>\n<h3>New Installation &#8211; Complete Cost Structure<\/h3>\n<div class=\"responsive-table\">\n<table>\n<thead>\n<tr>\n<th>Component<\/th>\n<th>% of Price<\/th>\n<th>$\/foot<\/th>\n<th>What Makes It Vary<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Excavation<\/td>\n<td>30-40%<\/td>\n<td class=\"price-highlight\">$45-100<\/td>\n<td>Depth, access<\/td>\n<\/tr>\n<tr>\n<td>Materials<\/td>\n<td>25-30%<\/td>\n<td class=\"price-highlight\">$38-75<\/td>\n<td>Grade selected<\/td>\n<\/tr>\n<tr>\n<td>Labor<\/td>\n<td>30-35%<\/td>\n<td class=\"price-highlight\">$45-88<\/td>\n<td>Complexity<\/td>\n<\/tr>\n<tr>\n<td>Contractor margins<\/td>\n<td>15-25%<\/td>\n<td class=\"price-highlight\">$23-63<\/td>\n<td>Reputation<\/td>\n<\/tr>\n<tr>\n<td>Equipment<\/td>\n<td>5-10%<\/td>\n<td class=\"price-highlight\">$8-25<\/td>\n<td>Type required<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h3>Replacement &#8211; Why 25-30% More Expensive<\/h3>\nFrench drain cost for replacement exceeds new installation due to:\n<div class=\"info-list\">\n<ul>\n     <li>Old system demolition: <span class=\"price-highlight\">+$12-22\/ft<\/span><\/li>\n     <li>Contaminated waste management: <span class=\"price-highlight\">+$8-13\/ft<\/span><\/li>\n     <li>Hidden complications (68% of cases): <span class=\"price-highlight\">+$12-25\/ft<\/span><\/li>\n     <li>Working around landscaping: <span class=\"price-highlight\">+$8-15\/ft<\/span><\/li>\n<\/ul>\n<\/div>\n<h3>Repair &#8211; Decision Table<\/h3>\n<div class=\"responsive-table\">\n<table>\n<thead>\n<tr>\n<th>Situation<\/th>\n<th>Repair Cost<\/th>\n<th>Recommended Action<\/th>\n<th>Financial Impact<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>&lt;30% of replacement<\/td>\n<td class=\"price-highlight\">$2,500-7,000<\/td>\n<td>Repair<\/td>\n<td class=\"percentage-positive\">70% savings<\/td>\n<\/tr>\n<tr>\n<td>30-50% of replacement<\/td>\n<td class=\"price-highlight\">$7,000-13,000<\/td>\n<td>Evaluate remaining life<\/td>\n<td>Variable<\/td>\n<\/tr>\n<tr>\n<td>&gt;50% of replacement<\/td>\n<td class=\"price-highlight\">$13,000+<\/td>\n<td>Replace<\/td>\n<td class=\"percentage-positive\">Better ROI<\/td>\n<\/tr>\n<tr>\n<td>Defer work<\/td>\n<td>$0 immediate<\/td>\n<td>Risky<\/td>\n<td class=\"percentage-negative\">$500\/month potential damage<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h2>Add-On Options &amp; Complementary Work<\/h2>\nBeyond the drain itself, common related work is added to the base price. Here are the options offered by Excavation Chanthier:\n<div class=\"responsive-table\">\n<table>\n<thead>\n<tr>\n<th>Option<\/th>\n<th>Price<\/th>\n<th>Note<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Foundation crack repair<\/td>\n<td class=\"price-highlight\">$850 (1st crack) + $400 each additional<\/td>\n<td>Based on number of cracks<\/td>\n<\/tr>\n<tr>\n<td>Window well<\/td>\n<td class=\"price-highlight\">$100 each<\/td>\n<td>Per window well<\/td>\n<\/tr>\n<tr>\n<td>Retention basin + submersible pump<\/td>\n<td class=\"price-highlight\">$2,900<\/td>\n<td>Water pumping system<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div class=\"cta-button\"><a href=\"https:\/\/excavationchanthier.ca\/en\/contact\/\" target=\"_self\">Request A Free Quote<\/a><\/div>\n<h2>Montreal Regional Variations: 19 Boroughs + 15 Cities<\/h2>\n<h3>Montreal Borough Breakdown<\/h3>\n<div class=\"responsive-table\">\n<table>\n<thead>\n<tr>\n<th>Sector<\/th>\n<th>Variation vs Base<\/th>\n<th>Primary Reason<\/th>\n<th>Problematic Postal Codes<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Plateau-Mont-Royal<\/td>\n<td class=\"percentage-negative\">+15-20%<\/td>\n<td>Difficult access<\/td>\n<td>H2H, H2J<\/td>\n<\/tr>\n<tr>\n<td>Ville-Marie<\/td>\n<td class=\"percentage-negative\">+20-25%<\/td>\n<td>Dense downtown<\/td>\n<td>H3A, H3B<\/td>\n<\/tr>\n<tr>\n<td>Rosemont<\/td>\n<td class=\"percentage-negative\">+5-10%<\/td>\n<td>Standard soil<\/td>\n<td>H1X, H1Y<\/td>\n<\/tr>\n<tr>\n<td>Ahuntsic<\/td>\n<td class=\"percentage-negative\">+10-15%<\/td>\n<td>Old properties<\/td>\n<td>H3L, H4J<\/td>\n<\/tr>\n<tr>\n<td>Westmount<\/td>\n<td class=\"percentage-negative\">+10-15%<\/td>\n<td>Client\/finishes<\/td>\n<td>H3Y, H3Z<\/td>\n<\/tr>\n<tr>\n<td>Rivi\u00e8re-des-Prairies<\/td>\n<td class=\"percentage-negative\">+25-30%<\/td>\n<td>Problematic soil<\/td>\n<td>H1E, H1G<\/td>\n<\/tr>\n<tr>\n<td>Verdun<\/td>\n<td class=\"percentage-positive\">-5%<\/td>\n<td>Good accessibility<\/td>\n<td>H4G, H4H<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h3>Greater Montreal Comparison<\/h3>\n<div class=\"responsive-table\">\n<table>\n<thead>\n<tr>\n<th>City<\/th>\n<th>Difference vs Montreal<\/th>\n<th>Average Price\/ft<\/th>\n<th>Specialty<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Laval<\/td>\n<td class=\"percentage-positive\">-5 to -10%<\/td>\n<td class=\"price-highlight\">$135-240<\/td>\n<td>More accessible terrain<\/td>\n<\/tr>\n<tr>\n<td>Longueuil<\/td>\n<td class=\"percentage-positive\">-5 to -10%<\/td>\n<td class=\"price-highlight\">$135-240<\/td>\n<td>Less rock<\/td>\n<\/tr>\n<tr>\n<td>Brossard<\/td>\n<td class=\"percentage-positive\">-8%<\/td>\n<td class=\"price-highlight\">$140-230<\/td>\n<td>Sandy soil<\/td>\n<\/tr>\n<tr>\n<td>Terrebonne<\/td>\n<td class=\"percentage-positive\">-12%<\/td>\n<td class=\"price-highlight\">$130-220<\/td>\n<td>Local labor<\/td>\n<\/tr>\n<tr>\n<td>Quebec City (reference)<\/td>\n<td class=\"percentage-positive\">-15%<\/td>\n<td class=\"price-highlight\">$125-210<\/td>\n<td>Different market<\/td>\n<\/tr>\n<tr>\n<td>Toronto (reference)<\/td>\n<td class=\"percentage-negative\">+40-50%<\/td>\n<td class=\"price-highlight\">$210-375<\/td>\n<td>Cost of living<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h2>Seasonal Impact &amp; Emergency Pricing Reality<\/h2>\n<h3>Detailed Seasonal Pricing Grid<\/h3>\n<div class=\"responsive-table\">\n<table>\n<thead>\n<tr>\n<th>Period<\/th>\n<th>Variation<\/th>\n<th>Availability<\/th>\n<th>Timeline<\/th>\n<th>Client Strategy<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>May-June<\/td>\n<td>Base<\/td>\n<td>Excellent<\/td>\n<td>2-3 weeks<\/td>\n<td>Ideal for planning<\/td>\n<\/tr>\n<tr>\n<td>July-August<\/td>\n<td class=\"percentage-negative\">+10-15%<\/td>\n<td>Limited<\/td>\n<td>4-6 weeks<\/td>\n<td>Avoid if possible<\/td>\n<\/tr>\n<tr>\n<td>September-October<\/td>\n<td class=\"percentage-positive\">-10-15%<\/td>\n<td>Very good<\/td>\n<td>1-2 weeks<\/td>\n<td>Best value<\/td>\n<\/tr>\n<tr>\n<td>November<\/td>\n<td class=\"percentage-positive\">-15-20%<\/td>\n<td>Excellent<\/td>\n<td>&lt;1 week<\/td>\n<td>End-season deals<\/td>\n<\/tr>\n<tr>\n<td>December-March<\/td>\n<td class=\"percentage-negative\">+30-50%<\/td>\n<td>Emergency only<\/td>\n<td>24-48h<\/td>\n<td>Only if critical<\/td>\n<\/tr>\n<tr>\n<td>April<\/td>\n<td class=\"percentage-negative\">+15-20%<\/td>\n<td>Average<\/td>\n<td>2-3 weeks<\/td>\n<td>Wait for May<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h3>Emergency Pricing Structure<\/h3>\n<div class=\"responsive-table\">\n<table>\n<thead>\n<tr>\n<th>Emergency Type<\/th>\n<th>Surcharge<\/th>\n<th>Example Price<\/th>\n<th>When Justified<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>&lt;24h<\/td>\n<td class=\"percentage-negative\">+75-100%<\/td>\n<td class=\"price-highlight\">$265-500\/ft<\/td>\n<td>Active flooding<\/td>\n<\/tr>\n<tr>\n<td>48-72h<\/td>\n<td class=\"percentage-negative\">+50%<\/td>\n<td class=\"price-highlight\">$225-375\/ft<\/td>\n<td>Imminent risk<\/td>\n<\/tr>\n<tr>\n<td>Weekend<\/td>\n<td class=\"percentage-negative\">+35-50%<\/td>\n<td class=\"price-highlight\">$200-375\/ft<\/td>\n<td>Progressive damage<\/td>\n<\/tr>\n<tr>\n<td>Holidays<\/td>\n<td class=\"percentage-negative\">+100%<\/td>\n<td class=\"price-highlight\">$300-500\/ft<\/td>\n<td>Avoid except catastrophe<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div class=\"cta-button\"><a href=\"https:\/\/excavationchanthier.ca\/en\/contact\/\" target=\"_self\">Request A Free Quote<\/a><\/div>\n<h2>Material Quality: Direct Impact on French Drain Cost and Durability<\/h2>\n<h3>Material Grade Comparison<\/h3>\n<div class=\"responsive-table\">\n<table>\n<thead>\n<tr>\n<th>Grade<\/th>\n<th>Price Impact<\/th>\n<th>Lifespan<\/th>\n<th>Warranty<\/th>\n<th>ROI<\/th>\n<th>Recommended For<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Economy<\/td>\n<td class=\"percentage-positive\">-20%<\/td>\n<td>15-20 years<\/td>\n<td>5 years<\/td>\n<td>Low<\/td>\n<td>Short-term rental<\/td>\n<\/tr>\n<tr>\n<td>Standard<\/td>\n<td>Base<\/td>\n<td>25-30 years<\/td>\n<td>10 years<\/td>\n<td>Good<\/td>\n<td>Most cases<\/td>\n<\/tr>\n<tr>\n<td>Premium<\/td>\n<td class=\"percentage-negative\">+25%<\/td>\n<td>40-50 years<\/td>\n<td>15-25 years<\/td>\n<td>Excellent<\/td>\n<td>Lifetime property<\/td>\n<\/tr>\n<tr>\n<td>Commercial<\/td>\n<td class=\"percentage-negative\">+40%<\/td>\n<td>50+ years<\/td>\n<td>25 years<\/td>\n<td>Variable<\/td>\n<td>Revenue buildings<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div class=\"info-list\"><strong>Concrete Differences:<\/strong>\n<ul>\n     <li>Pipe: PVC vs ABS vs Concrete (<span class=\"price-highlight\">$15-40\/ft difference<\/span>)<\/li>\n     <li>Geotextile: 70g vs 110g vs 140g (<span class=\"price-highlight\">$3-8\/ft difference<\/span>)<\/li>\n     <li>Gravel: 0-3\/4&#8243; vs 3\/4&#8243; net (<span class=\"price-highlight\">$20-35\/tonne difference<\/span>)<\/li>\n     <li>Membrane: Standard vs reinforced (<span class=\"price-highlight\">$5-12\/sq ft difference<\/span>)<\/li>\n<\/ul>\n<\/div>\n<h2>Financing &amp; Tax Impacts: The Real French Drain Cost<\/h2>\n<h3>Available Financing Options 2026<\/h3>\n<div class=\"responsive-table\">\n<table>\n<thead>\n<tr>\n<th>Type<\/th>\n<th>Rate 2026<\/th>\n<th>Term<\/th>\n<th>Monthly Impact<\/th>\n<th>Total Cost<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Credit line<\/td>\n<td>7-9%<\/td>\n<td>Flexible<\/td>\n<td class=\"price-highlight\">$250-400\/month<\/td>\n<td class=\"percentage-negative\">+15-25%<\/td>\n<\/tr>\n<tr>\n<td>Renovation loan<\/td>\n<td>6-8%<\/td>\n<td>5-10 years<\/td>\n<td class=\"price-highlight\">$450-700\/month<\/td>\n<td class=\"percentage-negative\">+20-35%<\/td>\n<\/tr>\n<tr>\n<td>Contractor financing<\/td>\n<td>9-12%<\/td>\n<td>2-5 years<\/td>\n<td class=\"price-highlight\">$800-1200\/month<\/td>\n<td class=\"percentage-negative\">+25-40%<\/td>\n<\/tr>\n<tr>\n<td>Credit card<\/td>\n<td>19-22%<\/td>\n<td>&#8211;<\/td>\n<td>Variable<\/td>\n<td class=\"percentage-negative\">+40-60%<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div class=\"stats-grid\">\n<div class=\"stat-card\"><span class=\"stat-number\">+3-5%<\/span>\n<div class=\"stat-label\">Property value increase<\/div>\n<\/div>\n<div class=\"stat-card\"><span class=\"stat-number\">100%<\/span>\n<div class=\"stat-label\">Revenue properties deductible<\/div>\n<\/div>\n<div class=\"stat-card\"><span class=\"stat-number\">+$50-150<\/span>\n<div class=\"stat-label\">Municipal tax impact\/year<\/div>\n<\/div>\n<\/div>\n<div class=\"danger-box\"><strong>Cost of Inaction:<\/strong>\n<ul>\n     <li>Foundation damage: <span class=\"price-highlight\">$15,000-50,000<\/span><\/li>\n     <li>Mold: <span class=\"price-highlight\">$5,000-20,000<\/span><\/li>\n     <li>Value loss: <span class=\"percentage-negative\">-5 to -15%<\/span><\/li>\n     <li>Inability to sell<\/li>\n<\/ul>\nAfter major flooding, the work can escalate to a full <a href=\"https:\/\/excavationchanthier.ca\/en\/demolition\/post-disaster-demolition\/\">post-disaster demolition<\/a>.<\/div>\n<h2>Subsidies &amp; Aid Programs: Savings Up to 35%<\/h2>\n<h3>Available 2026 Programs<\/h3>\n<div class=\"responsive-table\">\n<table>\n<thead>\n<tr>\n<th>Program<\/th>\n<th>Max Amount<\/th>\n<th>Conditions<\/th>\n<th>Stackable<\/th>\n<th>Timeline<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>R\u00e9noVert<\/td>\n<td class=\"price-highlight\">20% ($10,000)<\/td>\n<td>Eco-responsible<\/td>\n<td>Yes<\/td>\n<td>3-6 months<\/td>\n<\/tr>\n<tr>\n<td>Municipal flood<\/td>\n<td class=\"price-highlight\">$15,000<\/td>\n<td>Flood zone<\/td>\n<td>No<\/td>\n<td>2-4 months<\/td>\n<\/tr>\n<tr>\n<td>Disaster aid<\/td>\n<td class=\"price-highlight\">80% costs<\/td>\n<td>Disaster declaration<\/td>\n<td>Limited<\/td>\n<td>1-2 months<\/td>\n<\/tr>\n<tr>\n<td>Tax credit 65+<\/td>\n<td class=\"price-highlight\">20% ($10,000)<\/td>\n<td>Owner 65+<\/td>\n<td>Yes<\/td>\n<td>Tax credit<\/td>\n<\/tr>\n<tr>\n<td>FHCC Program<\/td>\n<td class=\"price-highlight\">$40,000<\/td>\n<td>Designated sector<\/td>\n<td>No<\/td>\n<td>6-12 months<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div class=\"highlight-box\"><strong>How to Maximize Subsidies:<\/strong>\n<ol>\n     <li>Combine R\u00e9noVert + 65+ credit = up to <span class=\"percentage-positive\">35% savings<\/span><\/li>\n     <li>Timing: apply BEFORE work begins<\/li>\n     <li>Documentation: keep ALL detailed invoices<\/li>\n     <li>RBQ contractor mandatory for eligibility<\/li>\n<\/ol>\n<\/div>\n<div class=\"cta-button\"><a href=\"https:\/\/excavationchanthier.ca\/en\/contact\/\" target=\"_self\">Request A Free Quote<\/a><\/div>\n<h2>Warning Signals: Suspicious Prices &amp; Scams<\/h2>\n<h3>Too Low Prices &#8211; RED FLAGS<\/h3>\n<div class=\"responsive-table\">\n<table>\n<thead>\n<tr>\n<th>Signal<\/th>\n<th>Risk<\/th>\n<th>Consequence<\/th>\n<th>Action<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td class=\"price-highlight\">&lt;$100\/ft<\/td>\n<td>Inadequate materials<\/td>\n<td>Redo in 5 years<\/td>\n<td>Refuse<\/td>\n<\/tr>\n<tr>\n<td>-40% vs average<\/td>\n<td>No insurance\/RBQ<\/td>\n<td>No recourse<\/td>\n<td>Verify RBQ<\/td>\n<\/tr>\n<tr>\n<td>&#8220;Friend pricing&#8221;<\/td>\n<td>Under-table work<\/td>\n<td>Legal problems<\/td>\n<td>Demand invoice<\/td>\n<\/tr>\n<tr>\n<td>Discount &gt;25%<\/td>\n<td>Hidden additions later<\/td>\n<td class=\"percentage-negative\">+50-100% final<\/td>\n<td>Detailed contract<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h3>Too High Prices &#8211; BEWARE<\/h3>\n<div class=\"responsive-table\">\n<table>\n<thead>\n<tr>\n<th>Signal<\/th>\n<th>Indication<\/th>\n<th>Verification<\/th>\n<th>Alternative<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td class=\"price-highlight\">&gt;$325\/ft without rock<\/td>\n<td>Overcharging<\/td>\n<td>3 other quotes<\/td>\n<td>Negotiate<\/td>\n<\/tr>\n<tr>\n<td>Unjustified urgency<\/td>\n<td>Exploitation<\/td>\n<td>Assess real danger<\/td>\n<td>Delay<\/td>\n<\/tr>\n<tr>\n<td>Signature pressure<\/td>\n<td>Sales technique<\/td>\n<td>48h reflection<\/td>\n<td>Refuse<\/td>\n<\/tr>\n<tr>\n<td>Deposit &gt;30%<\/td>\n<td>Financial risk<\/td>\n<td>Maximum 15%<\/td>\n<td>Negotiate<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div class=\"warning-box\"><strong>Common Scams:<\/strong>\n<ol>\n     <li><strong>Double material billing:<\/strong> Verify supplier invoices<\/li>\n     <li><strong>False problem discovery:<\/strong> +30-50% mid-project<\/li>\n     <li><strong>Price change after signing:<\/strong> &#8220;Calculation error&#8221;<\/li>\n     <li><strong>Abusive warranty holdbacks:<\/strong> 10% maximum, not 25%<\/li>\n     <li><strong>Hidden subcontracting:<\/strong> Price inflated 20-30%<\/li>\n<\/ol>\n<\/div>\n<div class=\"cta-button\"><a href=\"https:\/\/excavationchanthier.ca\/en\/contact\/\" target=\"_self\">Request A Free Quote<\/a><\/div>\n<h2>Maintenance Costs &amp; Life Cycle<\/h2>\n<h3>Annual Costs by Type<\/h3>\n<div class=\"responsive-table\">\n<table>\n<thead>\n<tr>\n<th>Service<\/th>\n<th>Frequency<\/th>\n<th>Cost<\/th>\n<th>Impact if Neglected<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Inspection<\/td>\n<td>Annual<\/td>\n<td class=\"price-highlight\">$150-250<\/td>\n<td>Early detection<\/td>\n<\/tr>\n<tr>\n<td>Cleaning<\/td>\n<td>Every 2 years<\/td>\n<td class=\"price-highlight\">$300-500<\/td>\n<td>Clogging -10 years life<\/td>\n<\/tr>\n<tr>\n<td>Unclogging<\/td>\n<td>As needed<\/td>\n<td class=\"price-highlight\">$200-400<\/td>\n<td>Backflow<\/td>\n<\/tr>\n<tr>\n<td>Minor repair<\/td>\n<td>Variable<\/td>\n<td class=\"price-highlight\">$500-1500<\/td>\n<td>Becomes major<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div class=\"stats-grid\">\n<div class=\"stat-card\"><span class=\"stat-number\">$667<\/span>\n<div class=\"stat-label\">Annual amortization ($20,000 \u00f7 30 years)<\/div>\n<\/div>\n<div class=\"stat-card\"><span class=\"stat-number\">$250<\/span>\n<div class=\"stat-label\">Annual maintenance cost<\/div>\n<\/div>\n<div class=\"stat-card\"><span class=\"stat-number\">$917<\/span>\n<div class=\"stat-label\">Total yearly cost<\/div>\n<\/div>\n<div class=\"stat-card\"><span class=\"stat-number\">$2,000-5,000<\/span>\n<div class=\"stat-label\">Annual risk without drain<\/div>\n<\/div>\n<\/div>\n<section class=\"faq-section\">\n<h2 style=\"color: #2c3e50; margin-bottom: 1.5rem; font-size: 1.8rem; border: none; padding: 0;\">Frequently Asked Questions: French Drain Cost<\/h2>\n<div class=\"faq-item\">\n<h3>Q: How much does a French drain cost in Montreal 2026?<\/h3>\n<strong>A:<\/strong> French drain cost ranges $150-250 per linear foot for installation in Montreal (without options). A typical 100-foot project costs $15,000-25,000 including variables like rock (+$150-500\/ft), difficult access (+$75-125\/ft), permits ($300-800), and taxes (+14.975%). Use the calculator above for your base estimate.\n\n<\/div>\n<div class=\"faq-item\">\n<h3>Q: Why does my French drain quote cost more than online calculators?<\/h3>\n<strong>A:<\/strong> Online calculators show base pricing only. Real French drain cost includes: rock excavation (+30-50%), winter installation (+30-50%), difficult access (+20%), soil conditions (+15-25%), permits ($300-800), and taxes (+14.975%). A $20,000 base estimate often becomes $28,000-30,000.\n\n<\/div>\n<div class=\"faq-item\">\n<h3>Q: What is the cheapest time to install a French drain?<\/h3>\n<strong>A:<\/strong> November offers the lowest French drain cost with 15-20% savings, excellent contractor availability, and 1-week timelines. Avoid December-March (+30-50% emergency pricing) and July-August (+10-15% peak pricing). September-October provides moderate savings (-10%).\n\n<\/div>\n<div class=\"faq-item\">\n<h3>Q: How much should I budget for French drain installation?<\/h3>\n<strong>A:<\/strong> Budget 25-35% above base estimates for total French drain cost: base price + permits ($300-800) + unforeseen issues (+20%) + taxes (+14.975%) + seasonal adjustments (\u00b120%). Example: $20,000 base = $26,000-28,000 actual project cost.\n\n<\/div>\n<div class=\"faq-item\">\n<h3>Q: How to get the best French drain price in Montreal?<\/h3>\n<strong>A:<\/strong> Best French drain cost savings: Install in November (-15-20%), pay cash (-3-5%), coordinate with neighbors (-10-15%), get 4-5 quotes, verify RBQ licensing, and combine R\u00e9noVert + 65+ tax credits (up to 35% total savings). Avoid quotes under $100\/ft or over $325\/ft without justification.\n\n<\/div>\n<\/section>\n<h2>GET YOUR REAL FRENCH DRAIN COST WITH EXCAVATION CHANTHIER<\/h2>\n<div class=\"highlight-box\">\n\nThe calculator above provides a base, but your project has its particularities. Each factor detailed in this article can significantly influence the final French drain cost.\n\nWant to know EXACTLY how much does a French drain cost for your situation, without surprises?\n\nAt <strong>Excavation Chanthier<\/strong>, we analyze the 20+ factors specific to your property: soil type, required depth, access, obstacles, local regulations in your borough. Our free evaluation identifies ALL elements affecting your French drain price. Expert for 15+ years across Montreal and 15 surrounding cities, we master the cost to install French drain for every configuration, including replacement scenarios.\n\n<strong>Our absolute transparency commitment:<\/strong>\n<ul>\n     <li>Complete free evaluation with soil testing<\/li>\n     <li>Firm detailed pricing, no overruns except major discoveries<\/li>\n     <li>Identification of ALL possible savings (subsidies, timing)<\/li>\n     <li>20-year warranty included<\/li>\n     <li>Complete documentation for resale<\/li>\n<\/ul>\n<strong>Call now<\/strong> for your free evaluation and discover your exact price, guaranteed without surprise.\n\n<\/div>\n<h2>FRENCH DRAIN COST 2026 DECISION MEMO<\/h2>\n<div class=\"stats-grid\">\n<div class=\"stat-card\"><span class=\"stat-number\">$150-250<\/span>\n<div class=\"stat-label\">Installation per linear foot<\/div>\n<\/div>\n<div class=\"stat-card\"><span class=\"stat-number\">$190-325<\/span>\n<div class=\"stat-label\">Replacement (+25-30%)<\/div>\n<\/div>\n<div class=\"stat-card\"><span class=\"stat-number\">$75-150<\/span>\n<div class=\"stat-label\">Repair (if &lt;30% replacement)<\/div>\n<\/div>\n<div class=\"stat-card\"><span class=\"stat-number\">35%<\/span>\n<div class=\"stat-label\">Maximum potential savings<\/div>\n<\/div>\n<\/div>\n<div class=\"info-list\"><strong>Main Multiplying Factors:<\/strong>\n<ul>\n     <li>Rock: <span class=\"percentage-negative\">\u00d72 to \u00d73<\/span><\/li>\n     <li>Winter: <span class=\"percentage-negative\">\u00d71.3 to \u00d71.5<\/span><\/li>\n     <li>Emergency &lt;48h: <span class=\"percentage-negative\">\u00d71.75 to \u00d72<\/span><\/li>\n     <li>Century home: <span class=\"percentage-negative\">\u00d71.5<\/span><\/li>\n     <li>Downtown: <span class=\"percentage-negative\">\u00d71.2 to \u00d71.25<\/span><\/li>\n<\/ul>\n<\/div>\n<div class=\"info-list\"><strong>Systematic Additional Costs:<\/strong>\n<ul>\n     <li><a style=\"color: #9e0505;\" href=\"https:\/\/montreal.ca\/en\/how-to\/obtain-permit-to-construct-building\" target=\"_blank\" rel=\"noopener\">Permits: $300-800<\/a><\/li>\n     <li>Unforeseen: <span class=\"percentage-negative\">+20% budget<\/span><\/li>\n     <li>Taxes: <span class=\"percentage-negative\">+14.975%<\/span><\/li>\n     <li>Annual maintenance: <span class=\"price-highlight\">$200-500<\/span><\/li>\n<\/ul>\n<\/div>\n<div class=\"info-list\"><strong>Maximum Savings:<\/strong>\n<ul>\n     <li>November: <span class=\"percentage-positive\">-15 to -20%<\/span><\/li>\n     <li>Subsidies: up to <span class=\"percentage-positive\">-35%<\/span><\/li>\n     <li>Neighbor grouping: <span class=\"percentage-positive\">-10 to -15%<\/span><\/li>\n     <li>Cash payment: <span class=\"percentage-positive\">-3 to -5%<\/span><\/li>\n<\/ul>\n<\/div>\n<div class=\"danger-box\"><strong>Absolute Warning Signals:<\/strong>\n<ul>\n     <li>Price &lt;$100\/ft = <strong>DANGER<\/strong><\/li>\n     <li>Price &gt;$325\/ft without rock = <strong>OVERCHARGING<\/strong><\/li>\n     <li>Warranty &lt;5 years = <strong>ILLEGAL<\/strong><\/li>\n     <li>No RBQ license = <strong>FLEE<\/strong><\/li>\n     <li>Deposit &gt;30% = <strong>RISK<\/strong><\/li>\n<\/ul>\n<\/div>\n<div class=\"highlight-box\">\n\n<strong>Final Note:<\/strong> Prices verified in 2026 with 25 RBQ contractors. Use the above calculator for an initial estimate of your French drain installation, then adjust according to factors detailed in this article.\n\n<\/div>\n<div class=\"cta-button\"><a href=\"https:\/\/excavationchanthier.ca\/en\/contact\/\" target=\"_self\">REQUEST A FREE QUOTE<\/a><\/div>\n<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>REQUEST A FREE QUOTE French Drain Cost: Complete 2026 Montreal Pricing Guide WHAT YOU NEED TO KNOW Base price: $150-250 per linear foot (without options) Variables can double the price: rock, winter, emergency 68% of projects exceed initial budget by 15-25% Potential savings: up to 35% (subsidies + timing) Warning signal: price &lt;$100\/ft = DANGER [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":8640,"parent":367,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_theme","meta":{"footnotes":""},"class_list":["post-5432","page","type-page","status-publish","has-post-thumbnail","hentry"],"_links":{"self":[{"href":"https:\/\/excavationchanthier.ca\/en\/wp-json\/wp\/v2\/pages\/5432","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/excavationchanthier.ca\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/excavationchanthier.ca\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/excavationchanthier.ca\/en\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/excavationchanthier.ca\/en\/wp-json\/wp\/v2\/comments?post=5432"}],"version-history":[{"count":3,"href":"https:\/\/excavationchanthier.ca\/en\/wp-json\/wp\/v2\/pages\/5432\/revisions"}],"predecessor-version":[{"id":8712,"href":"https:\/\/excavationchanthier.ca\/en\/wp-json\/wp\/v2\/pages\/5432\/revisions\/8712"}],"up":[{"embeddable":true,"href":"https:\/\/excavationchanthier.ca\/en\/wp-json\/wp\/v2\/pages\/367"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/excavationchanthier.ca\/en\/wp-json\/wp\/v2\/media\/8640"}],"wp:attachment":[{"href":"https:\/\/excavationchanthier.ca\/en\/wp-json\/wp\/v2\/media?parent=5432"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}