{"id":191,"date":"2025-03-16T02:06:20","date_gmt":"2025-03-16T02:06:20","guid":{"rendered":"https:\/\/estimateguide.com\/matching\/?page_id=191"},"modified":"2025-05-09T17:43:04","modified_gmt":"2025-05-09T17:43:04","slug":"adu","status":"publish","type":"page","link":"https:\/\/estimateguide.com\/matching\/adu\/","title":{"rendered":"ADU"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"191\" class=\"elementor elementor-191\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ba2ec1a e-flex e-con-boxed e-con e-parent\" data-id=\"ba2ec1a\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6a28c63 elementor-widget elementor-widget-image\" data-id=\"6a28c63\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/estimateguide.com\/\">\n\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"845\" height=\"331\" src=\"https:\/\/estimateguide.com\/matching\/wp-content\/uploads\/2025\/03\/eslogo.png\" class=\"attachment-full size-full wp-image-65\" alt=\"\" srcset=\"https:\/\/estimateguide.com\/matching\/wp-content\/uploads\/2025\/03\/eslogo.png 845w, https:\/\/estimateguide.com\/matching\/wp-content\/uploads\/2025\/03\/eslogo-300x118.png 300w, https:\/\/estimateguide.com\/matching\/wp-content\/uploads\/2025\/03\/eslogo-768x301.png 768w\" sizes=\"(max-width: 845px) 100vw, 845px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\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\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-0c09b35 e-con-full e-flex e-con e-parent\" data-id=\"0c09b35\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4f62811 elementor-widget elementor-widget-shortcode\" data-id=\"4f62811\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><head>\n\t<link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.4.0\/css\/all.min.css\">\n\t\t<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/canvas-confetti@1.5.1\/dist\/confetti.browser.min.js\"><\/script>\n\t    <script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/gsap\/3.12.2\/gsap.min.js\"><\/script>\n\t<script>\n\t\t\n\t\t    \/\/ Update location dynamically from ZIP input\n    zipInput.addEventListener(\"input\", function () {\n        let zipCode = zipInput.value;\n        if (zipCode.length === 5 && \/^\\d{5}$\/.test(zipCode)) {\n            fetch(`https:\/\/api.zippopotam.us\/us\/${zipCode}`)\n                .then(response => response.json())\n                .then(data => {\n                    if (data.places) {\n                        const city = data.places[0][\"place name\"];\n                        const state = data.places[0][\"state abbreviation\"];\n                        locationElement.textContent = ` ${city}, ${state}`;\n                    }\n                })\n                .catch(() => {\n                    locationElement.textContent = \" your area\";\n                });\n        }\n    });\n\n    showStep(currentStep);\n});\n\n\t\t\n\t\tdocument.addEventListener(\"DOMContentLoaded\", function () {\n    const locationSpans = document.querySelectorAll(\".dynamic-location\");\n\n    function updateLocation() {\n        let zipCode = document.getElementById(\"zip_code\").value;\n        \n        if (zipCode.length === 5 && \/^\\d{5}$\/.test(zipCode)) {\n            fetch(`https:\/\/api.zippopotam.us\/us\/${zipCode}`)\n                .then(response => response.json())\n                .then(data => {\n                    if (data.places) {\n                        const city = data.places[0][\"place name\"];\n                        const state = data.places[0][\"state abbreviation\"];\n                        const locationText = ` ${city}, ${state}`; \/\/ Space before location name\n\n                        locationSpans.forEach(span => {\n                            span.textContent = locationText;\n                        });\n                    }\n                })\n                .catch(() => {\n                    locationSpans.forEach(span => {\n                        span.textContent = \" Invalid Zip Code\";\n                    });\n                });\n        }\n    }\n\n    \/\/ Run function when ZIP code input changes\n    document.getElementById(\"zip_code\").addEventListener(\"input\", updateLocation);\n});\n\n\t\t\n\t\t\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n    const zipInput = document.getElementById(\"zip_code\");\n    const step6Heading = document.querySelector(\".step-6-heading .address-validation\"); \/\/ Target inside Step 6 heading\n\n    zipInput.addEventListener(\"input\", function () {\n        let zipCode = zipInput.value.trim();\n        \n        if (zipCode.length === 5 && \/^\\d{5}$\/.test(zipCode)) {\n            fetch(`https:\/\/api.zippopotam.us\/us\/${zipCode}`)\n                .then(response => response.json())\n                .then(data => {\n                    if (data.places) {\n                        const city = data.places[0][\"place name\"];\n                        const state = data.places[0][\"state abbreviation\"];\n                        step6Heading.textContent = `${city}, ${state}`;\n                    } else {\n                        step6Heading.textContent = \"Invalid Zip Code\";\n                    }\n                })\n                .catch(() => step6Heading.textContent = \"Invalid Zip Code\");\n        } else {\n            step6Heading.textContent = \"\"; \/\/ Clear if input is invalid\n        }\n    });\n});\n\t\t\n\t\tdocument.addEventListener(\"DOMContentLoaded\", function () {\n    const zipInput = document.getElementById(\"zip_code\");\n    const locationSpan = document.getElementById(\"dynamic-location\");\n\n    zipInput.addEventListener(\"input\", function () {\n        let zipCode = zipInput.value.trim();\n        \n        if (zipCode.length === 5 && \/^\\d{5}$\/.test(zipCode)) {\n            fetch(`https:\/\/api.zippopotam.us\/us\/${zipCode}`)\n                .then(response => response.json())\n                .then(data => {\n                    if (data.places) {\n                        const city = data.places[0][\"place name\"];\n                        const state = data.places[0][\"state abbreviation\"];\n                        locationSpan.textContent = `${city}, ${state}`;\n                    } else {\n                        locationSpan.textContent = \"your area\";\n                    }\n                })\n                .catch(() => locationSpan.textContent = \"your area\");\n        } else {\n            locationSpan.textContent = \"your area\"; \/\/ Default text if ZIP is invalid\n        }\n    });\n});\n\nfunction getFormattedDate(rawDate) {\n    const today = new Date();\n    const currentYear = today.getFullYear(); \/\/ Get the current year\n    const currentMonth = today.getMonth();  \/\/ Get the current month\n\n    \/\/ Ensure space exists between day abbreviation and number\n    let matches = rawDate.match(\/([A-Z]{3})\\s?(\\d+)\/); \/\/ Extract \"THU\" and \"20\"\n    \n    if (!matches) return rawDate; \/\/ If format is incorrect, return as is\n\n    const dayName = matches[1]; \/\/ Extract \"THU\"\n    const dayNumber = parseInt(matches[2], 10); \/\/ Extract \"20\"\n\n    \/\/ Construct the full date dynamically\n    let formattedDate = new Date(currentYear, currentMonth, dayNumber);\n\n    \/\/ If the calculated date is in the past (before today), move to the next month\n    if (formattedDate < today) {\n        formattedDate.setMonth(currentMonth + 1);\n    }\n\n    \/\/ Get the month name dynamically\n    const monthName = formattedDate.toLocaleString(\"en-US\", { month: \"long\" });\n\n    return `${dayNumber} ${monthName}, ${formattedDate.getFullYear()} (${dayName})`;\n}\n\t\t\n\n\n\n\t<\/script>\n<\/head>\n<form id=\"roof-estimate-form\" method=\"post\" class=\"roof-form\">\n\t<input type=\"hidden\" name=\"form_type\" value=\"ADU\">\n    <!-- Step 1: Zip Code -->\n    <div class=\"form-step active step-zip\">\n        <h2 class=\"form-heading\">Let's find you local ADU Pros<\/h2>\n        <p class=\"form-subheading\">Enter the location of your project<\/p>\n        <input type=\"text\" name=\"zip_code\" id=\"zip_code\" required placeholder=\"Enter Zip Code\" class=\"input-field zip-input\">\n        <p id=\"zip-location\" class=\"location-display\"><\/p>\n        <button type=\"button\" class=\"btn next-step\">Next<\/button>\n    <\/div>\n\n    <!-- Step 2: Work Type -->\n    <div class=\"form-step step-work-type\">\n        <h2 class=\"form-heading\">Service Needed<\/h2>\n        <div class=\"option-group work-options\">\n            <label class=\"option-label work-option\">\n                <input type=\"radio\" name=\"work_type\" value=\"Replace existing siding\" required style=\"width:120px; height:120px;\" class=\"radio-input\">\n                <span class=\"option-text\">Replace existing ADU<\/span>\n            <\/label>\n            <label class=\"option-label work-option\">\n                <input type=\"radio\" name=\"work_type\" value=\"Repair section(s) of siding\" style=\"width:120px; height:120px;\" class=\"radio-input\">\n                <span class=\"option-text\">Repair section(s) of ADU<\/span>\n            <\/label>\n\t\t\t            <label class=\"option-label work-option\">\n                <input type=\"radio\" name=\"work_type\" value=\"Siding for a new addition\" style=\"width:120px; height:120px;\" class=\"radio-input\">\n                <span class=\"option-text\">ADU for a new addition<\/span>\n            <\/label>\n\t\t\t            <label class=\"option-label work-option\">\n                <input type=\"radio\" name=\"work_type\" value=\"Siding for a new home\" style=\"width:120px; height:120px;\" class=\"radio-input\">\n                <span class=\"option-text\">ADU for a new home<\/span>\n            <\/label>\n        <\/div>\n<div class=\"button-group\">\n    <button type=\"button\" class=\"btn prev-step\">\n        <i class=\"fas fa-arrow-left\"><\/i> <!-- Font Awesome Left Arrow -->\n    <\/button>\n    <button type=\"button\" class=\"btn next-step\">Next<\/button>\n<\/div>\n\n    <\/div>\n\n    <!-- Step 3: Roof Type -->\n    <div class=\"form-step step-roof-type\">\n        <h2 class=\"form-heading\">Project Details<\/h2>\n        <div class=\"option-group roof-options\">\n            <label class=\"option-label roof-option\">\n                <input type=\"radio\" name=\"roof_type\" value=\"Wood Composite Siding\" required class=\"radio-input\">\n                <span class=\"option-text\">Wood Composite ADU<\/span>\n            <\/label>\n            <label class=\"option-label roof-option\">\n                <input type=\"radio\" name=\"roof_type\" value=\"Aluminum Siding\" class=\"radio-input\">\n                <span class=\"option-text\">Aluminum ADU<\/span>\n            <\/label>\n        <\/div>\n\n\t\t<div class=\"button-group\">\n    <button type=\"button\" class=\"btn prev-step\">\n        <i class=\"fas fa-arrow-left\"><\/i> <!-- Font Awesome Left Arrow -->\n    <\/button>\n    <button type=\"button\" class=\"btn next-step\">Next<\/button>\n<\/div>\n\n\t\t\n    <\/div>\n\n\n    <!-- Step 4: Full Name -->\n    <div class=\"form-step step-name\">\n        <h2 class=\"form-heading\">Please enter your full name<\/h2>\n        <input type=\"text\" name=\"first_name\" placeholder=\"First Name\" required class=\"input-field name-input\">\n        <input type=\"text\" name=\"last_name\" placeholder=\"Last Name\" required class=\"input-field name-input\">\n\t\t<div class=\"notification-box\">\n    <i class=\"fas fa-bell\"><\/i> <!-- Font Awesome Bell Icon -->\n    <span>Your matches are almost ready!<\/span>\n<\/div>\n\n\t\t<div class=\"button-group\">\n    <button type=\"button\" class=\"btn prev-step\">\n        <i class=\"fas fa-arrow-left\"><\/i> <!-- Font Awesome Left Arrow -->\n    <\/button>\n    <button type=\"button\" class=\"btn next-step\">Next<\/button>\n<\/div>\n    <\/div>\n\n    <!-- Step 5: Address -->\n    <div class=\"form-step step-address\">\n        <h2 class=\"form-heading\">What is your street address?<\/h2>\n        <input type=\"text\" name=\"address\" placeholder=\"Enter your address\" required class=\"input-field address-input\">\n        <p id=\"address-validation\" class=\"address-validation\"><\/p>\n\t\t\n<div class=\"checkbox-wrapper\">\n    <div class=\"checkbox-container\">\n        <input type=\"checkbox\" id=\"homeowner-checkbox\">\n        <label for=\"homeowner-checkbox\">\n            <i class=\"far fa-square\"><\/i> <!-- Default Unchecked Icon -->\n            <i class=\"fas fa-check-square\"><\/i> <!-- Checked Icon -->\n            <span>I am a homeowner<\/span>\n        <\/label>\n    <\/div>\n<\/div>\n\n\n\t\t\n\t\t<div class=\"button-group\">\n    <button type=\"button\" class=\"btn prev-step\">\n        <i class=\"fas fa-arrow-left\"><\/i> <!-- Font Awesome Left Arrow -->\n    <\/button>\n    <button type=\"button\" class=\"btn next-step\">Next<\/button>\n<\/div>\n    <\/div>\n\n    <!-- Step 6: Contact Information -->\n    <div class=\"form-step step-contact\">\n\t\t<div class=\"success-animation\">\n    <img decoding=\"async\" src=\"https:\/\/match.costguide.com\/img\/icon-complete.gif\" alt=\"Success\" class=\"success-gif\">\n<\/div>\n\n<h2 class=\"form-heading step-6-heading\">We have matching Pros in <span class=\"form-heading address-validation dynamic-location\"><\/span><\/h2>\n\t\t<p class=\"form-subheading\">Where should we send your matches?<\/p>\n        <input type=\"email\" name=\"email\" placeholder=\"Your Email\" required class=\"input-field email-input\">\n        <input type=\"tel\" name=\"phone_number\" placeholder=\"Your Phone Number\" required class=\"input-field phone-input\">\n\t\t\n\t\t<div class=\"disclaimer-wrapper\">\n    <p class=\"disclaimer-text\">\n        By clicking <strong>\u201cGet Results,\u201d<\/strong> I am providing my electronic signature and expressed written consent to permit \n        <strong>Estimate Guide<\/strong> and up to four home improvement companies to contact me at the number provided for marketing purposes, \n        including the use of automated technology and text messages. I acknowledge my consent is not required to obtain any good or service.\n        <br>\n        <a href=\"#\" class=\"disclaimer-link\">Terms of Service<\/a> and <a href=\"#\" class=\"disclaimer-link\">Privacy Policy<\/a>.\n    <\/p>\n<\/div>\n\n\t\t\n\t\t<div class=\"button-group\">\n    <button type=\"button\" class=\"btn prev-step\">\n        <i class=\"fas fa-arrow-left\"><\/i> <!-- Font Awesome Left Arrow -->\n    <\/button>\n    <button type=\"button\" class=\"btn next-step\">Get Result<\/button>\n<\/div>\n    <\/div>\n\t\n\t\n\n    <!-- Step 7: Appointment -->\n    <div class=\"form-step step-appointment\">\n        <h2 class=\"form-heading\" style=\"margin-bottom:30px;\">Here are your matching Pros<\/h2>\n        <div class=\"company-container\">\n            <!-- Company 1 -->\n            <div class=\"company-tile featured company-ecostar\">\n\n<div class=\"company-info\">\n    <h3 class=\"company-name\">EcoStar Remodeling         <div class=\"rating-container\">\n        <span class=\"rating-text\">4.9\/5<\/span>\n        <div class=\"stars\">\n            <svg class=\"star\" viewBox=\"0 0 24 24\"><polygon points=\"12,2 15,10 23,10 17,15 19,22 12,18 5,22 7,15 1,10 9,10\"\/><\/svg>\n            <svg class=\"star\" viewBox=\"0 0 24 24\"><polygon points=\"12,2 15,10 23,10 17,15 19,22 12,18 5,22 7,15 1,10 9,10\"\/><\/svg>\n            <svg class=\"star\" viewBox=\"0 0 24 24\"><polygon points=\"12,2 15,10 23,10 17,15 19,22 12,18 5,22 7,15 1,10 9,10\"\/><\/svg>\n            <svg class=\"star\" viewBox=\"0 0 24 24\"><polygon points=\"12,2 15,10 23,10 17,15 19,22 12,18 5,22 7,15 1,10 9,10\"\/><\/svg>\n            <svg class=\"star\" viewBox=\"0 0 24 24\">\n                <defs>\n                    <linearGradient id=\"halfStarGradient\">\n                        <stop offset=\"50%\" stop-color=\"#f4c150\"\/>\n                        <stop offset=\"50%\" stop-color=\"#ddd\"\/>\n                    <\/linearGradient>\n                <\/defs>\n                <polygon points=\"12,2 15,10 23,10 17,15 19,22 12,18 5,22 7,15 1,10 9,10\" fill=\"url(#halfStarGradient)\"\/>\n            <\/svg>\n        <\/div>\n    <\/div><\/h3>\n <p class=\"company-service\">\n            <i class=\"fas fa-check-circle\"><\/i> Services Siding in\u2002  <span class=\"dynamic-location\"> your area<\/span>\n        <\/p>\n<\/div>\n\t\t\t\t\n                <h4 class=\"date-heading\">Choose Your Date<\/h4>\n                <div class=\"date-selection\" id=\"date-ecostar\"><\/div>\n\n                <h4 class=\"time-heading\">Choose Your Time<\/h4>\n                <div class=\"time-selection\" id=\"time-ecostar\"><\/div>\n\t\t\t\t\n\t\t\t\t<div class=\"consent-container\">\n    <p class=\"disclaimer-text\" style=\"text-align: left;\">\n        By clicking <strong>\u201cRequest Estimate,\u201d<\/strong> I am providing my electronic signature and expressed written consent to permit \n        <strong>Estimate Guide<\/strong> and parties calling on their behalf to contact me at my phone number I input for marketing purposes, \n        including through the use of automated technology and text messages. I acknowledge my consent is not required to obtain any good or service.\n    <\/p>\n<\/div>\n\n\n                <button type=\"button\" id=\"request-ecostar\" data-company=\"ecostar\" class=\"btn request-estimate\" disabled>REQUEST ESTIMATE<\/button>\n            <\/div>\n\n            <!-- Company 2 -->\n            <div class=\"company-tile company-califirst\">\n\t\t\t\t<div class=\"company-info\">\n                <h3 class=\"company-name\">Top Pros Construction <div class=\"rating-container\">\n        <span class=\"rating-text\">4.8\/5<\/span>\n        <div class=\"stars\">\n            <svg class=\"star\" viewBox=\"0 0 24 24\"><polygon points=\"12,2 15,10 23,10 17,15 19,22 12,18 5,22 7,15 1,10 9,10\"\/><\/svg>\n            <svg class=\"star\" viewBox=\"0 0 24 24\"><polygon points=\"12,2 15,10 23,10 17,15 19,22 12,18 5,22 7,15 1,10 9,10\"\/><\/svg>\n            <svg class=\"star\" viewBox=\"0 0 24 24\"><polygon points=\"12,2 15,10 23,10 17,15 19,22 12,18 5,22 7,15 1,10 9,10\"\/><\/svg>\n            <svg class=\"star\" viewBox=\"0 0 24 24\"><polygon points=\"12,2 15,10 23,10 17,15 19,22 12,18 5,22 7,15 1,10 9,10\"\/><\/svg>\n            <svg class=\"star\" viewBox=\"0 0 24 24\">\n                <defs>\n                    <linearGradient id=\"halfStarGradient\">\n                        <stop offset=\"50%\" stop-color=\"#f4c150\"\/>\n                        <stop offset=\"50%\" stop-color=\"#ddd\"\/>\n                    <\/linearGradient>\n                <\/defs>\n                <polygon points=\"12,2 15,10 23,10 17,15 19,22 12,18 5,22 7,15 1,10 9,10\" fill=\"url(#halfStarGradient)\"\/>\n            <\/svg>\n        <\/div>\n    <\/div><\/h3>\n <p class=\"company-service\">\n            <i class=\"fas fa-check-circle\"><\/i> Services Siding in\u2002  <span class=\"dynamic-location\"> your area<\/span>\n        <\/p>\n<\/div>\n                <h4 class=\"date-heading\">Choose Your Date<\/h4>\n                <div class=\"date-selection\" id=\"date-califirst\"><\/div>\n\n                <h4 class=\"time-heading\">Choose Your Time<\/h4>\n                <div class=\"time-selection\" id=\"time-califirst\"><\/div>\n\t\t\t\t\n\t\t\t\t\t\t\t\t<div class=\"consent-container\">\n    <p class=\"disclaimer-text\" style=\"text-align: left;\">\n        By clicking <strong>\u201cRequest Estimate,\u201d<\/strong> I am providing my electronic signature and expressed written consent to permit \n        <strong>Estimate Guide<\/strong> and parties calling on their behalf to contact me at my phone number I input for marketing purposes, \n        including through the use of automated technology and text messages. I acknowledge my consent is not required to obtain any good or service.\n    <\/p>\n<\/div>\n\n\n                <button type=\"button\" id=\"request-califirst\" data-company=\"califirst\" class=\"btn request-estimate\" disabled>REQUEST ESTIMATE<\/button>\n            <\/div>\n\n            <!-- Company 3 -->\n            <div class=\"company-tile company-hull\">\n\t\t\t\t\t\t\t\t<div class=\"company-info\">\n                <h3 class=\"company-name\">NRG Remodeling <div class=\"rating-container\">\n        <span class=\"rating-text\">4.6\/5<\/span>\n        <div class=\"stars\">\n            <svg class=\"star\" viewBox=\"0 0 24 24\"><polygon points=\"12,2 15,10 23,10 17,15 19,22 12,18 5,22 7,15 1,10 9,10\"\/><\/svg>\n            <svg class=\"star\" viewBox=\"0 0 24 24\"><polygon points=\"12,2 15,10 23,10 17,15 19,22 12,18 5,22 7,15 1,10 9,10\"\/><\/svg>\n            <svg class=\"star\" viewBox=\"0 0 24 24\"><polygon points=\"12,2 15,10 23,10 17,15 19,22 12,18 5,22 7,15 1,10 9,10\"\/><\/svg>\n            <svg class=\"star\" viewBox=\"0 0 24 24\"><polygon points=\"12,2 15,10 23,10 17,15 19,22 12,18 5,22 7,15 1,10 9,10\"\/><\/svg>\n            <svg class=\"star\" viewBox=\"0 0 24 24\">\n                <defs>\n                    <linearGradient id=\"halfStarGradient\">\n                        <stop offset=\"50%\" stop-color=\"#f4c150\"\/>\n                        <stop offset=\"50%\" stop-color=\"#ddd\"\/>\n                    <\/linearGradient>\n                <\/defs>\n                <polygon points=\"12,2 15,10 23,10 17,15 19,22 12,18 5,22 7,15 1,10 9,10\" fill=\"url(#halfStarGradient)\"\/>\n            <\/svg>\n        <\/div>\n    <\/div><\/h3>\n <p class=\"company-service\">\n            <i class=\"fas fa-check-circle\"><\/i> Services Siding in\u2002  <span class=\"dynamic-location\"> your area<\/span>\n        <\/p>\n\t\t\t\t\t\t\t\t\t<\/div>\n\n                <h4 class=\"date-heading\">Choose Your Date<\/h4>\n                <div class=\"date-selection\" id=\"date-hull\"><\/div>\n\n                <h4 class=\"time-heading\">Choose Your Time<\/h4>\n                <div class=\"time-selection\" id=\"time-hull\"><\/div>\n\t\t\t\t\n\t\t\t\t\t\t\t\t<div class=\"consent-container\">\n    <p class=\"disclaimer-text\" style=\"text-align: left;\">\n        By clicking <strong>\u201cRequest Estimate,\u201d<\/strong> I am providing my electronic signature and expressed written consent to permit \n        <strong>Estimate Guide<\/strong> and parties calling on their behalf to contact me at my phone number I input for marketing purposes, \n        including through the use of automated technology and text messages. I acknowledge my consent is not required to obtain any good or service.\n    <\/p>\n<\/div>\n\n\n                <button type=\"button\" id=\"request-hull\" data-company=\"hull\" class=\"btn request-estimate\" disabled>REQUEST ESTIMATE<\/button>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/form>\n\n\n    <script>\n\t\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n    let currentStep = 0;\n    const steps = document.querySelectorAll(\".form-step\");\n    const nextBtns = document.querySelectorAll(\".next-step\");\n    const prevBtns = document.querySelectorAll(\".prev-step\");\n    const inputs = document.querySelectorAll(\"input, select\");\n    const zipInput = document.getElementById(\"zip_code\");\n    const addressInput = document.querySelector(\"input[name='address']\");\n    const form = document.getElementById(\"roof-estimate-form\");\n\n    \/\/ Create elements for displaying location & validation messages\n    const locationDisplayZip = document.createElement(\"p\");\n    locationDisplayZip.style.color = \"#666\";\n    zipInput.insertAdjacentElement(\"afterend\", locationDisplayZip);\n\n    const locationDisplayAddress = document.createElement(\"p\");\n    locationDisplayAddress.style.color = \"#666\";\n    addressInput.insertAdjacentElement(\"afterend\", locationDisplayAddress);\n\n    const addressValidationMessage = document.createElement(\"p\");\n    addressValidationMessage.style.color = \"#666\";\n    addressInput.insertAdjacentElement(\"afterend\", addressValidationMessage);\n\n    function showStep(index) {\n        steps.forEach((step, i) => step.classList.toggle(\"active\", i === index));\n        updateNextButtonState();\n    }\n\n    function updateNextButtonState() {\n        const activeStep = steps[currentStep];\n        const nextBtn = activeStep.querySelector(\".next-step\");\n\n        if (!nextBtn) return;\n\n        const requiredFields = activeStep.querySelectorAll(\"input[required], select[required]\");\n        let allFilled = true;\n\n        requiredFields.forEach(input => {\n            if (input.type === \"radio\") {\n                const name = input.name;\n                const checked = activeStep.querySelector(`input[name=\"${name}\"]:checked`);\n                if (!checked) allFilled = false;\n            } else if (!input.value.trim()) {\n                allFilled = false;\n            }\n        });\n\n        \/\/ Disable Next button if Address is invalid\n        if (currentStep === 4 && addressValidationMessage.textContent === \"Invalid Address \u274c\") {\n            allFilled = false;\n        }\n\n        nextBtn.disabled = !allFilled;\n        nextBtn.style.opacity = allFilled ? \"1\" : \"0.5\";\n        nextBtn.style.pointerEvents = allFilled ? \"auto\" : \"none\";\n    }\n\n    inputs.forEach(input => input.addEventListener(\"input\", updateNextButtonState));\n    inputs.forEach(input => input.addEventListener(\"change\", updateNextButtonState));\n\n    nextBtns.forEach(btn =>\n        btn.addEventListener(\"click\", function () {\n            if (btn.disabled) return;\n            currentStep++;\n            showStep(currentStep);\n        })\n    );\n\n    prevBtns.forEach(btn =>\n        btn.addEventListener(\"click\", function () {\n            currentStep--;\n            showStep(currentStep);\n        })\n    );\n\n    \/\/ **ZIP Code Validation (Only One Instance)**\n    function validateZipCode() {\n        let zipCode = zipInput.value;\n        if (zipCode.length === 5 && \/^\\d{5}$\/.test(zipCode)) {\n            fetch(`https:\/\/api.zippopotam.us\/us\/${zipCode}`)\n                .then(response => response.json())\n                .then(data => {\n                    if (data.places) {\n                        const city = data.places[0][\"place name\"];\n                        const state = data.places[0][\"state abbreviation\"];\n                        locationDisplayZip.textContent = `${city}, ${state}`;\n                        locationDisplayAddress.textContent = `${city}, ${state}`;\n                    } else {\n                        locationDisplayZip.textContent = \"Invalid Zip Code.\";\n                        locationDisplayAddress.textContent = \"\";\n                    }\n                })\n                .catch(() => {\n                    locationDisplayZip.textContent = \"Invalid Zip Code.\";\n                    locationDisplayAddress.textContent = \"\";\n                });\n        } else {\n            locationDisplayZip.textContent = \"\";\n            locationDisplayAddress.textContent = \"\";\n        }\n    }\n    zipInput.addEventListener(\"input\", validateZipCode);\n\n\n    \/\/ **Fix Option Selection**\n    document.querySelectorAll(\".option-group label\").forEach(label => {\n        label.addEventListener(\"click\", function () {\n            const parent = this.closest(\".option-group\");\n            parent.querySelectorAll(\"label\").forEach(l => l.classList.remove(\"selected\"));\n            this.classList.add(\"selected\");\n        });\n    });\n\n    \/\/ **Form Submission Handler**\n    form.addEventListener(\"submit\", function (e) {\n        e.preventDefault();\n        let formData = new FormData(form);\n        formData.append(\"action\", \"roof_estimate_submission\");\n\n        fetch(\"https:\/\/estimateguide.com\/matching\/wp-admin\/admin-ajax.php\", {\n            method: \"POST\",\n            body: formData\n        })\n            .then(response => response.json())\n            .then(data => {\n                if (data.success) {\n                    alert(\"Roof estimate submitted successfully!\");\n                    window.location.reload(); \/\/ Reload or redirect as needed\n                } else {\n                    alert(\"Error: \" + data.message);\n                }\n            })\n            .catch(error => {\n                console.error(\"Error:\", error);\n                alert(\"Something went wrong. Please try again.\");\n            });\n    });\n\n    showStep(currentStep);\n});\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n    const companies = [\"ecostar\", \"califirst\", \"hull\"];\n\n    function showNotice(message, type) {\n        let notice = document.createElement(\"div\");\n        notice.classList.add(\"notice\", type);\n        notice.textContent = message;\n        document.body.prepend(notice);\n        setTimeout(() => notice.remove(), 3000);\n    }\n\nfunction generateDates(containerId) {\n    const today = new Date();\n    let dateContainer = document.getElementById(containerId);\n\n    for (let i = 0; i < 7; i++) {\n        let date = new Date();\n        date.setDate(today.getDate() + i);\n\n        let day = date.toLocaleDateString(\"en-US\", { weekday: \"short\" }).toUpperCase();\n        let dayNum = date.getDate();\n\n        let button = document.createElement(\"button\");\n        button.type = \"button\"; \/\/ Prevent auto-submit\n        button.classList.add(\"date-btn\"); \/\/ Add main class for styling\n\n        \/\/ Add day and date separately inside the button\n        button.innerHTML = `<span class=\"date-day\">${day}<\/span><span class=\"date-number\">${dayNum}<\/span>`;\n\n        if (day === \"SAT\") {\n            button.disabled = true;\n            button.classList.add(\"disabled\"); \/\/ Add disabled class for styling\n        }\n\n        button.addEventListener(\"click\", function () {\n            document.querySelectorAll(`#${containerId} .date-btn`).forEach(btn => btn.classList.remove(\"selected\"));\n            this.classList.add(\"selected\");\n            updateTimeSlots(containerId.replace(\"date-\", \"\"), day);\n        });\n\n        dateContainer.appendChild(button);\n    }\n}\n\nfunction updateTimeSlots(company, day) {\n    const timeContainer = document.getElementById(`time-${company}`);\n    timeContainer.innerHTML = \"\";\n\n    let timeSlots = [];\n    if (day === \"FRI\") {\n        timeSlots = [\"10:00 AM\", \"11:00 AM\", \"12:00 PM\", \"1:00 PM\", \"2:00 PM\", \"3:00 PM\", \"4:00 PM\"];\n    } else if (day !== \"SAT\") {\n        timeSlots = [\"10:00 AM\", \"11:00 AM\", \"12:00 PM\", \"1:00 PM\", \"2:00 PM\", \"3:00 PM\", \"4:00 PM\", \"5:00 PM\", \"6:00 PM\", \"7:00 PM\", \"8:00 PM\", \"9:00 PM\", \"10:00 PM\"];\n    }\n\n    const now = new Date();\n    const todayName = now.toLocaleDateString(\"en-US\", { weekday: \"short\" }).toUpperCase();\n\n    timeSlots.forEach(time => {\n        const button = document.createElement(\"button\");\n        button.textContent = time;\n        button.type = \"button\";\n        button.classList.add(\"time-btn\");\n\n        \/\/ Disable if same day and within 6 hours\n        if (day === todayName) {\n            const timeParts = time.match(\/(\\d+):(\\d+)\\s?(AM|PM)\/);\n            if (timeParts) {\n                let [_, hour, minute, period] = timeParts;\n                hour = parseInt(hour, 10);\n                if (period === \"PM\" && hour !== 12) hour += 12;\n                if (period === \"AM\" && hour === 12) hour = 0;\n\n                const slotTime = new Date(now);\n                slotTime.setHours(hour, parseInt(minute), 0, 0);\n\n                const sixHoursLater = new Date(now.getTime() + 6 * 60 * 60 * 1000);\n\n                if (slotTime <= sixHoursLater) {\n                    button.disabled = true;\n                    button.classList.add(\"disabled\");\n                }\n            }\n        }\n\n        button.addEventListener(\"click\", function () {\n            if (button.disabled) return;\n            document.querySelectorAll(`#time-${company} .time-btn`).forEach(btn => btn.classList.remove(\"selected\"));\n            this.classList.add(\"selected\");\n            activateEstimateButton(company);\n        });\n\n        timeContainer.appendChild(button);\n    });\n}\n\n\nfunction activateEstimateButton(company) {\n    let selectedDate = document.querySelector(`#date-${company} .selected`);\n    let selectedTime = document.querySelector(`#time-${company} .selected`);\n    let estimateButton = document.querySelector(`#request-${company}`);\n\n    if (selectedDate && selectedTime) {\n        estimateButton.classList.add(\"active\");\n        estimateButton.disabled = false;\n        estimateButton.style.opacity = \"1\";\n        estimateButton.style.cursor = \"pointer\";\n    } else {\n        estimateButton.classList.remove(\"active\");\n        estimateButton.disabled = true;\n        estimateButton.style.opacity = \"0.5\";\n        estimateButton.style.cursor = \"not-allowed\";\n    }\n}\n\nfunction getFormattedDate(rawDate) {\n    const today = new Date();\n    const currentYear = today.getFullYear(); \/\/ Get the current year\n    const currentMonth = today.getMonth();  \/\/ Get the current month\n\n    \/\/ Ensure space exists between day abbreviation and number\n    let matches = rawDate.match(\/([A-Z]{3})\\s?(\\d+)\/); \/\/ Extract \"THU\" and \"20\"\n    \n    if (!matches) return rawDate; \/\/ If format is incorrect, return as is\n\n    const dayName = matches[1]; \/\/ Extract \"THU\"\n    const dayNumber = parseInt(matches[2], 10); \/\/ Extract \"20\"\n\n    \/\/ Construct the full date dynamically\n    let formattedDate = new Date(currentYear, currentMonth, dayNumber);\n\n    \/\/ If the calculated date is in the past (before today), move to the next month\n    if (formattedDate < today) {\n        formattedDate.setMonth(currentMonth + 1);\n    }\n\n    \/\/ Get the month name dynamically\n    const monthName = formattedDate.toLocaleString(\"en-US\", { month: \"long\" });\n\n    return `${dayNumber} ${monthName}, ${formattedDate.getFullYear()} (${dayName})`;\n}\n\n\n    function handleSubmit(event) {\n        event.preventDefault();\n\n        let button = event.target;\n        let company = button.dataset.company;\n        let selectedDate = document.querySelector(`#date-${company} .selected`);\n        let selectedTime = document.querySelector(`#time-${company} .selected`);\n\n        if (!selectedDate || !selectedTime) {\n            showNotice(\"Please select a date and time before submitting.\", \"error\");\n            return;\n        }\n\n        let formattedDate = getFormattedDate(selectedDate.textContent);\n\n        let formData = new FormData();\n        formData.append(\"action\", \"roof_estimate_submission\");\n        formData.append(\"company\", company);\n        formData.append(\"date\", formattedDate);\n        formData.append(\"time\", selectedTime.textContent);\n        formData.append(\"zip_code\", document.querySelector(\"[name='zip_code']\").value);\n        formData.append(\"work_type\", document.querySelector(\"[name='work_type']:checked\")?.value || \"\");\n        formData.append(\"roof_type\", document.querySelector(\"[name='roof_type']:checked\")?.value || \"\");\n        formData.append(\"first_name\", document.querySelector(\"[name='first_name']\").value);\n        formData.append(\"last_name\", document.querySelector(\"[name='last_name']\").value);\n        formData.append(\"address\", document.querySelector(\"[name='address']\").value);\n        formData.append(\"email\", document.querySelector(\"[name='email']\").value);\n        formData.append(\"phone_number\", document.querySelector(\"[name='phone_number']\").value);\n\t\tformData.append(\"form_type\", document.querySelector(\"[name='form_type']\").value);\n\n        \/\/ **Disable only this button, allow others to work**\n        button.disabled = true;\n        button.style.opacity = \"0.5\";\n        button.textContent = \"Submitting...\";\n\n        fetch(\"https:\/\/estimateguide.com\/matching\/wp-admin\/admin-ajax.php\", {\n            method: \"POST\",\n            body: formData\n        })\n        .then(response => response.json())\n        .then(data => {\n            if (data.success) {\n                showNotice(\"Roof estimate submitted successfully!\", \"success\");\n\n                \/\/ Keep other buttons active and only reset this one after success\n                setTimeout(() => {\n                    button.textContent = \"Request Estimate\";\n                    button.style.opacity = \"1\";\n                    button.disabled = false;\n                }, 2000);\n            } else {\n                showNotice(`Error: ${data.message}`, \"error\");\n                console.error(\"Server Error:\", data);\n                button.disabled = false;\n                button.style.opacity = \"1\";\n                button.textContent = \"Request Estimate\";\n            }\n        })\n        .catch(error => {\n            console.error(\"Fetch Error:\", error);\n            showNotice(\"Something went wrong. Try again.\", \"error\");\n            button.disabled = false;\n            button.style.opacity = \"1\";\n            button.textContent = \"Request Estimate\";\n        });\n    }\n\n    \/\/ **Fix: Remove duplicate event listeners before adding new ones**\n    document.querySelectorAll(\".request-estimate\").forEach(button => {\n        button.removeEventListener(\"click\", handleSubmit);\n        button.addEventListener(\"click\", handleSubmit);\n    });\n\n    companies.forEach(company => generateDates(`date-${company}`));\n});\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n    const checkbox = document.getElementById(\"homeowner-checkbox\");\n\n    checkbox.addEventListener(\"change\", function () {\n        console.log(this.checked ? \"User is a homeowner \u2705\" : \"User unchecked the box \u274c\");\n    });\n});\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n    const zipInput = document.getElementById(\"zip_code\");\n    const locationElements = document.querySelectorAll(\".dynamic-location\"); \/\/ Select all elements needing location updates\n\n    function updateLocationText(city, state) {\n        const fullLocation = ` ${city}, ${state}`; \/\/ Add space before location\n        locationElements.forEach(el => el.textContent = fullLocation);\n    }\n\n    zipInput.addEventListener(\"input\", function () {\n        let zipCode = zipInput.value.trim();\n\n        if (zipCode.length === 5 && \/^\\d{5}$\/.test(zipCode)) {\n            fetch(`https:\/\/api.zippopotam.us\/us\/${zipCode}`)\n                .then(response => response.json())\n                .then(data => {\n                    if (data.places && data.places.length > 0) {\n                        const city = data.places[0][\"place name\"];\n                        const state = data.places[0][\"state abbreviation\"];\n                        updateLocationText(city, state);\n                    } else {\n                        updateLocationText(\"your area\", \"\");\n                    }\n                })\n                .catch(() => {\n                    updateLocationText(\"your area\", \"\");\n                });\n        } else {\n            updateLocationText(\"your area\", \"\");\n        }\n    });\n\n    \/\/ If the zip code field is prefilled, trigger location update\n    if (zipInput.value.length === 5) {\n        zipInput.dispatchEvent(new Event(\"input\"));\n    }\n});\n\n\t\t\n\/\/ Popup Success\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n    document.querySelectorAll(\".request-estimate\").forEach(button => {\n        button.addEventListener(\"click\", function () {\n            let companyKey = this.dataset.company;\n            let selectedDate = document.querySelector(`#date-${companyKey} .selected`);\n            let selectedTime = document.querySelector(`#time-${companyKey} .selected`);\n\n            if (!selectedDate || !selectedTime) {\n                alert(\"Please select a date and time before submitting.\");\n                return;\n            }\n\n            let formattedDate = getFormattedDate(selectedDate.textContent);\n            let timeText = selectedTime.textContent;\n\n            showSuccessPopup(companyKey, formattedDate, timeText);\n        });\n    });\n});\n\nfunction showSuccessPopup(company, date, time) {\n    let popup = document.getElementById(\"successPopup\");\n\n    const popupHTML = `\n        <canvas id=\"confettiCanvas\" class=\"popup-confetti\"><\/canvas>\n        <div class=\"popup-box\">\n            <img decoding=\"async\" src=\"https:\/\/estimateguide.com\/matching\/wp-content\/uploads\/2025\/03\/icon-complete.gif\" class=\"popup-animation\" alt=\"Success\">\n            <h2 class=\"popup-heading\">Siding Estimate Scheduled!<\/h2>\n            <div class=\"popup-details\">\n                <div class=\"popup-row\">\n                    <span class=\"popup-label\">Company<\/span>\n                    <span class=\"popup-value\">${getCompanyName(company)}<\/span>\n                <\/div>\n                <div class=\"popup-row\">\n                    <span class=\"popup-label\">Date<\/span>\n                    <span class=\"popup-value\">${date} at ${time}<\/span>\n                <\/div>\n            <\/div>\n            <p class=\"popup-note\">I'm done booking estimates<\/p>\n        <\/div>\n    `;\n\n    if (!popup) {\n        popup = document.createElement(\"div\");\n        popup.id = \"successPopup\";\n        popup.className = \"popup-container\";\n        document.body.appendChild(popup);\n    }\n\n    popup.innerHTML = popupHTML;\n    popup.style.display = \"flex\";\n\n    \/\/ Confetti canvas\n    const confettiCanvas = document.getElementById(\"confettiCanvas\");\n    const myConfetti = confetti.create(confettiCanvas, {\n        resize: true,\n        useWorker: true\n    });\n\n    myConfetti({\n        particleCount: 200,\n        spread: 140,\n        startVelocity: 60,\n        scalar: 1.4,\n        origin: { y: 0.6 }\n    });\n\n    \/\/ Disable the tile\n    let tile = document.querySelector(`.company-${company}`);\n    if (tile) {\n        tile.style.pointerEvents = \"none\";\n        tile.style.opacity = \"0.6\";\n    }\n\n    setTimeout(() => {\n        popup.style.display = \"none\";\n    }, 3000);\n}\n\n\/\/ Map company keys to full names\nfunction getCompanyName(companyKey) {\n    const companyNames = {\n        ecostar: \"EcoStar Remodeling and Construction\",\n        califirst: \"Top Pros Construction\",\n        hull: \"NRG Remodeling\"\n    };\n    return companyNames[companyKey] || \"Unknown Company\";\n}\n\n\/\/ Format date function\nfunction getFormattedDate(rawDate) {\n    const today = new Date();\n    const currentYear = today.getFullYear();\n    const currentMonth = today.getMonth();\n\n    \/\/ Accepts formats like \"Mon 18\", \"Monday 18\"\n    let matches = rawDate.match(\/([A-Za-z]+)\\s?(\\d+)\/);\n    if (!matches) return rawDate;\n\n    const dayName = matches[1].substring(0, 3).toUpperCase(); \/\/ \"Monday\" \u2192 \"MON\"\n    const dayNumber = parseInt(matches[2], 10);\n\n    let formattedDate = new Date(currentYear, currentMonth, dayNumber);\n\n    \/\/ If date already passed, assume next month\n    if (formattedDate < today) {\n        formattedDate.setMonth(currentMonth + 1);\n    }\n\n    const monthName = formattedDate.toLocaleString(\"en-US\", { month: \"long\" });\n    return `${dayName} ${monthName} ${dayNumber}`;\n}\n\n\n\t\t\n    <\/script>\n\n    <style>\n        .form-step { display: none; }\n        .form-step.active { display: block; }\n        .option-group label {\n            display: inline-block; text-align: center; cursor: pointer;\n        }\n        .option-group img { width: 80px; height: 80px; display: block; margin: 0 auto; }\n        .option-group input { display: none; }\n        .prev-step, .next-step, button[type=\"submit\"] { padding: 10px 15px; cursor: pointer; }\n\t\t\n\t\t.form-step {\n    display: none;\n}\n.form-step.active {\n    display: block;\n}\n\n.option-group {\n    display: grid;\n    grid-template-columns: repeat(2, 1fr);\n    gap: 15px;\n}\n\n.option-group input {\n    display: none;\n}\n\n.option-group label.selected {\n    background-color: #1a8793;\n    color: white !important;\n    border-color: #1a8793;\n}\n.next-step, .prev-step {\n    padding: 10px 15px;\n    cursor: pointer;\n    transition: 0.3s;\n    border: none;\n    background-color: #007bff;\n    color: white;\n    border-radius: 5px;\n}\n\n.next-step {\n    opacity: 0.5;\n    pointer-events: none;\n}\n\n.next-step:not(:disabled) {\n    opacity: 1;\n    pointer-events: auto;\n}\n\n.next-step {\n    padding: 10px 15px;\n    cursor: pointer;\n    transition: 0.3s;\n    border: none;\n    background-color: #007bff;\n    color: white;\n    border-radius: 5px;\n    opacity: 0.5; \/* Initially disabled *\/\n    pointer-events: none; \/* Initially disabled *\/\n}\n\n.next-step:not(:disabled) {\n    opacity: 1;\n    pointer-events: auto;\n}\n\n.company-container {\n    display: flex;\n    gap: 20px;\n    justify-content: center;\n    flex-wrap: wrap;\n}\n\n.company-tile {\n    background: #eef9fa;\n    width: 30%;\n    text-align: center;\n    box-shadow: none;\n    border-radius: 20px;\n}\n\n.company-tile.featured {\n    border: 3px solid #0088cc;\n}\n\nh3 {\n    margin: 10px 0;\n}\n\n.date-selection,\n.time-selection {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 10px;\n    justify-content: center;\n}\n\n.date-selection button,\n.time-selection button {\n    background: white;\n    border: 1px solid #ccc;\n    padding: 10px;\n    cursor: pointer;\n    transition: 0.3s;\n    border-radius: 5px;\n}\n\n.date-selection button.selected,\n.time-selection button.selected {\n    background: #0088cc;\n    color: white;\n    border-color: #0088cc;\n}\n\n.request-estimate {\n    background: #f5c16c;\n    border: none;\n    padding: 10px 20px;\n    font-size: 16px;\n    color: white;\n    border-radius: 5px;\n    cursor: not-allowed;\n    opacity: 0.5;\n    margin-top: 15px;\n}\n\n.request-estimate.active {\n    cursor: pointer;\n    opacity: 1;\n}\n\t\t.form-step.active.step-zip {\n    background: #fff;\n    width: 630px !important;\n    border: none;\n    border-radius: 25px;\n    box-sizing: border-box;\n    box-shadow: 0 10px 40px 0px rgba(0, 0, 0, .1);\n    padding: 60px;\n    margin: 0 auto 40px;\n    position: relative;\n    display: block;\n}\n\t\t\n\t\th2.form-heading {\n    font-size: 24px;\n    color: #174146;\n    text-align: center;\n    font-family: 'Poppins', arial, verdana;\n    font-weight: 700;\n}\n\t\t\n\t\tp.form-subheading {\n    font-size: 16px;\n    font-weight: 300;\n    text-align: center;\n    font-family: 'Poppins', arial, verdana;\n    margin: 20px 0;\n    color: #666;\n}\n\t\t\n\t\tinput[type=date], input[type=email], input[type=number], input[type=password], input[type=search], input[type=tel], input[type=text], input[type=url], select, textarea {\n    padding: 15px;\n    margin: 3px 0;\n    border: 2px solid #87a5a9;\n    border-radius: 10px;\n    width: 100%;\n    box-sizing: border-box;\n    text-align: center;\n    color: #2C3E50;\n    font-size: 15px;\n}\n\t\t\n\t\t.roof-form {\n    font-family: 'Poppins', arial, verdana;\n}\n\t\t\n.next-step {\n    transition: 0.3s;\n    background: #fb9b26;\n    color: #fff;\n    margin: 10px auto; \/* Centers the button horizontally *\/\n    padding: 17px 25px;\n    width: 100%;\n    max-width: 240px;\n    box-sizing: border-box;\n    text-align: center;\n    display: block; \/* Ensures it takes up the full width of its container *\/\n    border: 0 none;\n    border-radius: 10px;\n    font-weight: 700;\n    font-size: 20px;\n    text-transform: uppercase;\n    text-decoration: none;\n    box-shadow: 0 4px 5px 4px rgba(0, 0, 0, .15);\n    cursor: pointer;\n}\n\n\n\n\t\t\n\t\t[type=button]:focus, [type=button]:hover, [type=submit]:focus, [type=submit]:hover, button:focus, button:hover {\n    color: #fff;\n    background-color: #fb9b26;\n    text-decoration: none;\n}\n\t\t\n\t\t\/* Optional: If inside a flex container, ensure centering *\/\n.form-step {\n    align-items: center; \/* Centers button inside step container *\/\n    text-align: center;\n}\n\t\t\n\t\t.form-step.step-work-type.active {\n    background: #fff;\n    width: 630px !important;\n    border: none;\n    border-radius: 25px;\n    box-sizing: border-box;\n    box-shadow: 0 10px 40px 0px rgba(0, 0, 0, .1);\n    padding: 60px;\n    margin: 0 auto 40px;\n    position: relative;\n    display: block;\n}\n\t\t\n\t\t.option-group label {\n    align-items: center;\n    cursor: pointer;\n    transition: 0.3s;\n    display: flex\n;\n    flex-direction: column;\n    flex: 1;\n    padding: 15px;\n    margin: 3px 0;\n    border: 2px solid #87a5a9;\n    border-radius: 10px;\n    width: 100%;\n    box-sizing: border-box;\n    text-align: center;\n    color: #2C3E50;\n    font-size: 15px;\n}\n\t\t\n\t\t}\n.option-group img {\n    width: 120px !important;\n    height: 120px !important;\n    margin-bottom: 15px !important;\n}\n\t\t\n\t\tspan.option-text {\n    font-size: 15px;\n    margin-bottom: 10px !important;\n}\n\t\t\n\t\t.option-group label.selected {\n    background-color: #1a8793;\n    color: white !important;\n    border-color: #1a8793;\n}\n\t\t\n\t\t.option-group.work-options {\n    margin: 25px 0;\n}\n\t\t\n\t\t\t\/* Button group: aligns Back and Next buttons side by side *\/\n.button-group {\n    display: flex;\n    justify-content: center; \/* Centers both buttons *\/\n    gap: 15px; \/* Adds spacing between buttons *\/\n    margin-top: 20px; \/* Adjust as needed *\/\n}\n\t\nbutton.btn.prev-step {\n    display: inline-flex;\n    border: 3px solid #a0cdd3;\n    border-radius: 100px;\n    width: 50px;\n    height: 50px;\n    line-height: 40px;\n    background: none;\n    color: #a0cdd3;\n    cursor: pointer;\n    margin-top: 20px;\n    padding: 13px;\n    font-size: 20px;\n}\n\t\t\n\t\tbutton.btn.prev-step:hover {\n    border-color: #1a8793;\n    color: #1a8793;\n}\n\t\t\n\t\t.form-step.step-roof-type.active {\n    background: #fff;\n    width: 630px !important;\n    border: none;\n    border-radius: 25px;\n    box-sizing: border-box;\n    box-shadow: 0 10px 40px 0px rgba(0, 0, 0, .1);\n    padding: 60px;\n    margin: 0 auto 40px;\n    position: relative;\n    display: block;\n}\n\t\t\n\t\t.form-step.step-name.active {\n    background: #fff;\n    width: 630px !important;\n    border: none;\n    border-radius: 25px;\n    box-sizing: border-box;\n    box-shadow: 0 10px 40px 0px rgba(0, 0, 0, .1);\n    padding: 60px;\n    margin: 0 auto 40px;\n    position: relative;\n    display: block;\n}\n\t\t\n.notification-box {\n    display: flex\n;\n    align-items: center;\n    background: #F2F2F2;\n    border-radius: 8px;\n    font-size: 15px;\n    font-weight: 300;\n    color: #666;\n    margin: 20px auto;\n    padding: 20px;\n    text-align: center !important;\n    justify-content: center;\n}\n\t\t\n.notification-box i {\n    color: #1a8793; \/* Orange bell icon *\/\n    font-size: 22px;\n    margin-right: 10px;\n}\n\t\t\n\t\t.form-step.step-address.active {\n    background: #fff;\n    width: 630px !important;\n    border: none;\n    border-radius: 25px;\n    box-sizing: border-box;\n    box-shadow: 0 10px 40px 0px rgba(0, 0, 0, .1);\n    padding: 60px;\n    margin: 0 auto 40px;\n    position: relative;\n    display: block;\n}\n\n\/* Centering Wrapper *\/\n.checkbox-wrapper {\n    display: flex;\n    justify-content: center;\n    align-items: center;\n}\n\n\/* Checkbox Container *\/\n.checkbox-container {\n    display: flex;\n    align-items: center;\n    font-size: 15px;\n    font-weight: 400;\n    color: #666;\n    cursor: pointer;\n    gap: 12px; \/* Space between checkbox and text *\/\n}\n\n\/* Hide Default Checkbox *\/\n.checkbox-container input {\n    display: none;\n}\n\n\/* Unchecked Icon *\/\n.checkbox-container label i.fa-square {\n    font-size: 40px; \/* Bigger checkbox *\/\n    color: #87a5a9;\n    transition: 0.3s;\n}\n\n\/* Checked Icon (Hidden by Default) *\/\n.checkbox-container label i.fa-check-square {\n    display: none;\n    font-size: 40px; \/* Bigger checkbox *\/\n    color: #1a8793;\n}\n\n\/* Show Checkmark When Checked *\/\n.checkbox-container input:checked + label i.fa-square {\n    display: none;\n}\n\n.checkbox-container input:checked + label i.fa-check-square {\n    display: inline;\n}\n\n\/* Adjust Text Position *\/\n.checkbox-container label {\n    display: flex;\n    align-items: center;\n    gap: 10px;\n}\n.checkbox-container {\n    margin: 15px 0;\n}\n\t\t\n\t\t.form-step.step-contact.active {\n    background: #fff;\n    width: 630px !important;\n    border: none;\n    border-radius: 25px;\n    box-sizing: border-box;\n    box-shadow: 0 10px 40px 0px rgba(0, 0, 0, .1);\n    padding: 60px;\n    margin: 0 auto 40px;\n    position: relative;\n    display: block;\n\t\t\tpadding-top:0 !important;\n}\n\t\t\n\t\t\/* Wrapper for proper alignment *\/\n.disclaimer-wrapper {\n    text-align: center;\n    max-width: 600px;\n    margin: 10px auto; \/* Centering *\/\n    padding: 5px;\n}\n\n\/* Small and readable text *\/\n.disclaimer-text {\n    font-size: 11px; \/* Smaller text *\/\n    color: #666; \/* Light gray for readability *\/\n    line-height: 20px;\n\tfont-weight:400;\n}\n\n\/* Links styled properly *\/\n.disclaimer-link {\n    text-decoration: underline !important;\n    font-weight: 400;\n\tcolor:#666;\n}\n\n\/* Hover effect for links *\/\n.disclaimer-link:hover {\n    text-decoration: underline !important;\n}\n\n.success-animation {\n    margin-bottom: -30px;\n}\n\t\t\n\t\t.company-tile.featured {\n    border: none !important;\n    box-shadow: 0 0 0 5px #1aacbe;\n}\n\t\t\n\t\th3.company-name {\n    font-size: 16px;\n    color: #000;\n    display: block;\n    margin: 0;\n    border-radius: 10px;\n    margin-bottom: 10px;\n    text-align: left;\n    font-weight: bolder;\n}\n\t\t\n.company-service {\n    display: flex;\n    align-items: center; \/* Ensures vertical alignment *\/\n    font-size: 16px;\n}\n\n.company-service i {\n    color: #4CAF50; \/* Green check color *\/\n    font-size: 20px;\n    margin-right: 8px;\n}\n\n\t\tp.company-service {\n    font-size: 11px;\n}\n.company-info {\n    border-top-left-radius: 20px;\n    border-top-right-radius: 20px;\n    background: #fff;\n    padding: 20px 40px 20px;\n\t    padding-bottom: 10px;\n}\n\t\t\n\t\th4.date-heading {\n    font-weight: 400;\n    font-size: 14px;\n    color: #1a8793;\n    display: block;\n    margin-bottom: 10px;\n    text-align: left;\n}\n\t\t\n\t\th4.time-heading{\n\t\t\t    font-weight: 400;\n    font-size: 14px;\n    color: #1a8793;\n    display: block;\n    margin-bottom: 10px;\n    text-align: left;\n\t\t\t\n\t\t}\n\t\t\n\t\t\n\t\t.date-btn, .time-btn {\n    background: #fff;\n    border: 2px solid #fb9b26; \/* Orange border *\/\n    padding: 10px 15px;\n    cursor: pointer;\n    border-radius: 5px;\n    font-weight: bold;\n    transition: all 0.3s ease;\n}\n\n.date-btn:hover, .time-btn:hover {\n    background: #fb9b26; \/* Orange background *\/\n    color: #fff;\n}\n\n.date-btn.selected, .time-btn.selected {\n    background: #fb9b26; \/* Selected state *\/\n    color: #fff;\n    border: 2px solid #e07c00;\n}\n\n.date-btn.disabled {\n    background: #ddd;\n    color: #999;\n    cursor: not-allowed;\n    border: 2px solid #ccc;\n}\n\n\t\tspan.date-day {\n    display: block;\n    font-size: 14px;\n    font-weight: 400;\n}\n\t\t\n\t\tspan.date-number {\n    display: block;\n    font-size: 22px;\n    font-weight: 700;\n}\n\t\t\n\t\t.date-btn:hover, .time-btn:hover {\n    background: #1a8793;\n    color: #fff !important;\n\t\t\tborder: 2px solid #1a8793;\n}\n\t\t\n\t\t.date-btn, .time-btn {\n    color: #1a8793 !important;\n}\n\t\t\n\t\t.date-selection, .time-selection {\n    display: flex\n;\n    flex-wrap: wrap;\n    gap: 5px;\n    justify-content: flex-start;\n}\n\t\tbutton.date-btn {\n    width: 14%;\n    display: block;\n    background: #fff;\n    position: relative;\n    border: 2px solid #87a5a9;\n    border-radius: 10px;\n    padding: 20px 10px;\n    cursor: pointer;\n    -webkit-transition: all 0.3s ease;\n    -o-transition: all 0.3s ease;\n    transition: all 0.3s ease;\n}\n\t\t\n\t\t.date-selection button.selected, .time-selection button.selected {\n    background: #1a8793;\n    color: white !important;\n    border-color: #1a8793;\n}\n\t\t\n\t\tbutton.time-btn {\n    font-size: 14px;\n    color: #046e7c;\n    font-weight: 400;\n    display: block;\n    background: #fff;\n    position: relative;\n    border: 2px solid #87a5a9;\n    border-radius: 10px;\n    padding: 10px 20px;\n    cursor: pointer;\n    -webkit-transition: all 0.3s ease;\n    -o-transition: all 0.3s ease;\n    transition: all 0.3s ease;\n}\n\t\t\n\t\t.consent-container {\n    margin: 30px 0;\n}\n\t\t\n\t\t.date-selection, .time-selection {\n    margin-bottom: 30px;\n}\n\t\t\nh4.date-heading {\n    padding: 20px 40px 20px;\n    padding-bottom: 10px;\n}\n\t\t\n\t\th4.time-heading {\n    padding: 20px 40px 20px;\n    padding-bottom: 10px;\n}\n\t\t\n\t\t.date-selection, .time-selection {\n    margin-bottom: 10px;\n    padding: 20px 40px 20px;\n    padding-top: 0;\n}\n\t\t\n\t\t.consent-container {\n    margin: 0;\n    padding: 20px 40px 20px;\n}\n\t\t.request-estimate {\n    background: #f5c16c;\n    border: none;\n    padding: 10px 20px;\n    font-size: 16px;\n    color: white;\n    border-radius: 5px;\n    cursor: not-allowed;\n    opacity: 0.5;\n    margin-top: 15px;\n    background: #fb9b26;\n    color: #fff;\n    margin: 20px 6%;\n    padding: 17px 25px;\n    width: 88%;\n    margin-bottom: 50px;\n    text-align: center;\n    display: inline-block;\n    border: 0 none;\n    border-radius: 10px;\n    font-weight: 700;\n}\n\t\t\n\t\t.company-tile {\n    background: #eef9fa;\n    width: 30%;\n    text-align: center;\n    border-radius: 20px;\n    box-shadow: 0 0 50px 0 #d9d9d9 !important;\n}\n\t\t\n\t\t\n\t\t\t\t.company-info:before {\n    content: \"Featured Pro\";\n    background: #1a8793;\n    color: #fff;\n    font-size: 16px;\n    font-weight: 700;\n    text-transform: uppercase;\n    display: inline-block;\n    position: absolute;\n    top: 13px;\n    left: 19%;\n    padding: 15px 30px;\n    border-top-left-radius: 20px;\n    border-top-right-radius: 20px;\n    transform: translateX(-50%);\n    white-space: nowrap;\n}\n\t\n\t\t\n\t\t.form-step.searching-step.active {\n    background: #fff;\n    width: 630px !important;\n    border: none;\n    border-radius: 25px;\n    box-sizing: border-box;\n    box-shadow: 0 10px 40px 0px rgba(0, 0, 0, .1);\n    padding: 60px;\n    margin: 0 auto 40px;\n    position: relative;\n    display: block;\n}\n\t\t\n\t\t@media only screen and (max-width: 479px) {\n.form-step.active.step-zip {\n    width: 360px !important;\n    padding: 30px;\n}\n\n\t.form-step.step-work-type.active {\n    width: 360px !important;\n    padding: 30px;\n}\n\t\n\t.form-step.step-roof-type.active {\n    width: 360px !important;\n    padding: 30px;\n}\n\n\t\t\t.form-step.step-name.active {\n    width: 360px !important;\n    padding: 30px !important;\n}\n\t\t\t\n\t\t\t.form-step.step-address.active {\n    width: 360px !important;\n    padding: 30px !important;\n}\n\t\t\n\t\t\t.form-step.step-contact.active {\n    width: 360px !important;\n    padding: 30px;\n}\n\t\t\t\n\t\t\t.company-tile {\n    width: 360px;\n\t\t\t\tmargin-bottom:20px !important;\n}\n\t\t\t\n\t\t\tbutton.date-btn {\n    width: 30%;\n\t\t\t}\n\t\t\t\n\t\t\tbutton.time-btn {\n    width: 46%;\n}\n\t\t\t\n\t\t\t.request-estimate {\n    margin: 20px 10%;\n    padding: 17px 25px;\n    width: 80%;\n\t\t\t}\n\t\t\t\n\t\t\t\n\t\t\t.company-info:before {\n    content: \"Featured Pro\";\n    background: #1aacbe;\n    color: #fff;\n    font-size: 16px;\n    font-weight: 700;\n    text-transform: uppercase;\n    display: inline-block;\n    position: absolute;\n    top: 50px;\n    left: 50%;\n    padding: 15px 30px;\n    border-top-left-radius: 20px;\n    border-top-right-radius: 20px;\n    transform: translateX(-50%);\n    white-space: nowrap;\n}\n\t\t\t\n\t\t\t.company-tile.featured.company-ecostar {\n    margin-top: 40px;\n}\n\t\t\t\n\t\t\t.form-step.searching-step.active{\n\t\t\t\t\n\t\t\t\t    width: 360px !important;\n    padding: 30px !important;\n\t\t\t}\n\t\t\t\n}\n\t\t\n.company-tile.featured {\n    border: none !important;\n    box-shadow: 0 0 0 5px #1aacbe !important;\n}\n\t\t\n\tspan.option-text {\n    font-size: 15px;\n    margin-bottom: 10px !important;\n    margin-top: 10px !important;\n}\t\n\t\t\n\t\t\n\t\t     .rating-container {\n            display: flex;\n            align-items: center;\n            font-family: 'Poppins', sans-serif;\n            font-size: 14px;\n            color: #333;\n            margin-top: 5px; \/* Added slight top margin *\/\n        }\n\n        .rating-text {\n            font-weight: 600;\n            color: #1a8793; \/* Accent Color *\/\n            border: 1px solid #1a8793;\n            padding: 3px 8px;\n            border-radius: 6px;\n            margin-right: 8px;\n            font-size: 12px;\n        }\n\n        .stars {\n            display: flex;\n            align-items: center;\n        }\n\n        .star {\n            width: 16px;\n            height: 16px;\n            fill: #f4c150; \/* Star Color *\/\n            margin-right: 2px;\n        }\n\t\t\n\t\t\n\/* Popup Container (Overlay) *\/\n.popup-container {\n    display: none;\n    position: fixed;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    background: white; \/* White overlay *\/\n    background: #ffffff url(\"https:\/\/estimateguide.com\/matching\/wp-content\/uploads\/2025\/03\/background-tools.png\") no-repeat center center;\n    background-size: cover;\n    z-index: 9999;\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    overflow: hidden;\n}\n\n\/* Popup Box *\/\n.popup-box {\nbackground: white;\n    padding: 30px;\n    border-radius: 25px;\n    text-align: center;\n    box-shadow: 0 10px 40px 0px rgba(0, 0, 0, .1);\n    max-width: 630px;\n    width: 100%;\n    animation: fadeIn 0.3s ease-in-out;\n}\n\n\/* Success Animation GIF *\/\n.popup-animation {\n    width: auto ;\n\tmargin-bottom:-20px !important;\n}\n\n\/* Popup Heading *\/\n.popup-heading {\n    font-size: 20px;\n    font-weight: bold;\n    color: #333;\n    margin-bottom: 15px;\n}\n\n\/* Details Container *\/\n.popup-details {\n    border: 1px solid #bdd5de;\n    border-radius: 8px;\n    padding: 10px;\n    background: #f7fcfd;\n}\n\n\/* Each Row *\/\n.popup-row {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    padding: 8px 10px;\n    border-bottom: 1px solid #bdd5de;\n    font-size: 14px;\n}\n\n.popup-row:last-child {\n    border-bottom: none;\n}\n\n\/* Labels *\/\n.popup-label {\n    font-weight: 500;\n    color: #444;\n    flex: 1;\n    text-align: left;\n}\n\n\/* Values *\/\n.popup-value {\n    font-weight: bold;\n    color: #1a8793;\n    text-align: right;\n}\n\n\/* Non-clickable \"I'm done\" text *\/\n.popup-note {\n    margin-top: 10px;\n    font-size: 13px;\n    color: #999;\n    pointer-events: none;\n}\n\n\/* Fade-in Animation *\/\n@keyframes fadeIn {\n    from { opacity: 0; transform: translateY(-10px); }\n    to { opacity: 1; transform: translateY(0); }\n}\n\n\/* Mobile Responsive *\/\n@media (max-width: 479px) {\n    .popup-box {\n        max-width: 360px;\n        padding: 20px;\n    }\n}\n\n.popup-box {\n    font-family: 'Poppins';\n}\n\t\t\n\t\th2.popup-heading {\n    text-align: center;\n    color: #000;\n    font-size: 18px;\n    font-weight: 700;\n    margin-bottom: 13px;\n    text-transform: capitalize;\n}\n\t\t\n\t\t.popup-details {\n    border: 2px solid #87a5a9 !important;\n    border-radius: 8px;\n    padding: 10px;\n\t\t;\n\t\t}\t\t\t\n\t\t\t.popup-label {\n    flex: 1;\n    text-align: left;\n    color: #2C3E50;\n    font-weight: 400;\n}\n\t\t\n\t\t.popup-value {\n    color: #1a8793;\n    font-size: 13px;\n    font-weight: 700;\n}\n\t\t\n\t\t\n\t\t.popup-row {\n    border-bottom: 2px solid #87a5a9;\n}\n\t\t\n.popup-confetti {\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    pointer-events: none;\n    z-index: 0;\n}\n\n.popup-box {\n    position: relative;\n    z-index: 1;\n}\n\n.tile-disabled {\n    pointer-events: none;\n    opacity: 0.6;\n}\n\t\n    <\/style>\n\n    <\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-f465ed0 e-flex e-con-boxed e-con e-parent\" data-id=\"f465ed0\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2bca17c elementor-icon-list--layout-inline elementor-align-center elementor-list-item-link-full_width elementor-widget elementor-widget-icon-list\" data-id=\"2bca17c\" data-element_type=\"widget\" data-widget_type=\"icon-list.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<ul class=\"elementor-icon-list-items elementor-inline-items\">\n\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item elementor-inline-item\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/estimateguide.com\/privacy\/\">\n\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">Privacy Policy<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item elementor-inline-item\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/estimateguide.com\/privacy\/\">\n\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">Terms of Service<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item elementor-inline-item\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/estimateguide.com\/are-you-a-contractor\/\">\n\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">I'm a Pro!<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<\/ul>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Privacy Policy Terms of Service I&#8217;m a Pro!<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"footnotes":""},"class_list":["post-191","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/estimateguide.com\/matching\/wp-json\/wp\/v2\/pages\/191","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/estimateguide.com\/matching\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/estimateguide.com\/matching\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/estimateguide.com\/matching\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/estimateguide.com\/matching\/wp-json\/wp\/v2\/comments?post=191"}],"version-history":[{"count":11,"href":"https:\/\/estimateguide.com\/matching\/wp-json\/wp\/v2\/pages\/191\/revisions"}],"predecessor-version":[{"id":410,"href":"https:\/\/estimateguide.com\/matching\/wp-json\/wp\/v2\/pages\/191\/revisions\/410"}],"wp:attachment":[{"href":"https:\/\/estimateguide.com\/matching\/wp-json\/wp\/v2\/media?parent=191"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}