{"id":596852,"date":"2026-08-16T17:28:23","date_gmt":"2026-08-16T17:28:23","guid":{"rendered":"https:\/\/cspraypw.com\/?page_id=596852"},"modified":"2026-09-15T00:47:06","modified_gmt":"2026-09-15T00:47:06","slug":"get-a-quote","status":"publish","type":"page","link":"https:\/\/cspraypw.com\/home\/get-a-quote","title":{"rendered":"Get A Quote"},"content":{"rendered":"\n<style>\n\n\/* =========================================================\n   C SPRAY PRESSURE WASHING\n   GET A QUOTE PAGE\n   ========================================================= *\/\n\n.cs-quote-page {\n    --blue:#087fd1;\n    --blue-bright:#12a8f4;\n    --blue-light:#4fc3ff;\n    --blue-dark:#004a80;\n\n    --black:#020609;\n    --dark:#071018;\n    --light:#f4f7f9;\n    --white:#ffffff;\n\n    --text:#17212a;\n    --gray:#64717c;\n\n    --green:#2f855a;\n    --red:#a73535;\n\n    font-family:Arial,Helvetica,sans-serif;\n\n    background:var(--black);\n    color:white;\n\n    width:100vw;\n    max-width:none;\n\n    margin-left:calc(50% - 50vw);\n\n    overflow-x:hidden;\n}\n\n.cs-quote-page,\n.cs-quote-page * {\n    box-sizing:border-box;\n}\n\n.cs-quote-page img {\n    max-width:100%;\n}\n\n.cs-quote-container {\n    width:min(1180px,92%);\n    margin:0 auto;\n}\n\n\n\/* =========================================================\n   HEADER\n   ========================================================= *\/\n\n.cs-quote-header {\n    background:rgba(2,6,9,.97);\n    border-bottom:1px solid rgba(255,255,255,.08);\n\n    position:sticky;\n    top:0;\n    z-index:9999;\n\n    box-shadow:0 3px 18px rgba(0,0,0,.25);\n}\n\n.cs-quote-nav {\n    min-height:92px;\n\n    display:flex;\n    align-items:center;\n    justify-content:space-between;\n\n    gap:35px;\n}\n\n.cs-quote-logo {\n    display:flex;\n    align-items:center;\n\n    text-decoration:none !important;\n}\n\n.cs-quote-logo img {\n    width:215px;\n    height:auto;\n\n    display:block;\n}\n\n.cs-quote-menu {\n    display:flex;\n    align-items:center;\n    justify-content:flex-end;\n\n    gap:28px;\n\n    flex-wrap:wrap;\n}\n\n.cs-quote-menu a {\n    color:white !important;\n\n    text-decoration:none !important;\n\n    font-size:15px;\n    font-weight:700;\n\n    transition:color .2s ease;\n}\n\n.cs-quote-menu a:hover {\n    color:var(--blue-light) !important;\n}\n\n.cs-quote-nav-btn {\n    display:inline-block;\n\n    padding:12px 20px;\n\n    border-radius:7px;\n\n    background:linear-gradient(\n        135deg,\n        var(--blue),\n        var(--blue-bright)\n    );\n\n    color:white !important;\n\n    text-decoration:none !important;\n\n    font-weight:800;\n\n    box-shadow:0 8px 25px rgba(8,127,209,.28);\n}\n\n\n\/* =========================================================\n   HERO\n   ========================================================= *\/\n\n.cs-quote-hero {\n    padding:105px 0 95px;\n\n    text-align:center;\n\n    background:\n        radial-gradient(\n            circle at 50% 35%,\n            rgba(8,127,209,.30),\n            transparent 34%\n        ),\n        linear-gradient(\n            135deg,\n            #020609,\n            #071724,\n            #00243e\n        );\n}\n\n.cs-quote-kicker {\n    display:block;\n\n    color:var(--blue-light);\n\n    font-size:14px;\n    font-weight:900;\n\n    letter-spacing:3px;\n\n    text-transform:uppercase;\n\n    margin-bottom:14px;\n}\n\n.cs-quote-hero h1 {\n    margin:0 0 20px;\n\n    color:white;\n\n    font-size:clamp(45px,7vw,72px);\n\n    line-height:1;\n}\n\n.cs-quote-hero h1 span {\n    color:var(--blue-bright);\n}\n\n.cs-quote-hero p {\n    max-width:780px;\n\n    margin:0 auto;\n\n    color:#d0dae2;\n\n    font-size:19px;\n\n    line-height:1.7;\n}\n\n\n\/* =========================================================\n   MAIN\n   ========================================================= *\/\n\n.cs-quote-main {\n    padding:85px 0;\n\n    background:#eef4f7;\n\n    color:var(--text);\n}\n\n.cs-quote-layout {\n    display:grid;\n\n    grid-template-columns:minmax(0,2fr) minmax(280px,.8fr);\n\n    gap:35px;\n\n    align-items:start;\n}\n\n\n\/* =========================================================\n   FORM BOX\n   ========================================================= *\/\n\n.cs-quote-form-box {\n    background:white;\n\n    border:1px solid #dce6ec;\n\n    border-radius:16px;\n\n    padding:42px;\n\n    box-shadow:0 12px 36px rgba(0,0,0,.06);\n}\n\n.cs-form-heading {\n    margin-bottom:35px;\n}\n\n.cs-form-heading span {\n    display:block;\n\n    color:var(--blue);\n\n    font-size:13px;\n    font-weight:900;\n\n    letter-spacing:2.5px;\n\n    text-transform:uppercase;\n\n    margin-bottom:9px;\n}\n\n.cs-form-heading h2 {\n    margin:0 0 10px;\n\n    color:var(--text);\n\n    font-size:clamp(31px,4vw,42px);\n}\n\n.cs-form-heading p {\n    margin:0;\n\n    color:#66737d;\n\n    line-height:1.7;\n}\n\n.cs-form-section {\n    padding:30px 0;\n\n    border-top:1px solid #e7edf1;\n}\n\n.cs-form-section:first-of-type {\n    border-top:none;\n    padding-top:0;\n}\n\n.cs-form-section h3 {\n    margin:0 0 8px;\n\n    color:var(--text);\n\n    font-size:23px;\n}\n\n.cs-form-section > p {\n    margin:0 0 22px;\n\n    color:#68757f;\n\n    line-height:1.65;\n}\n\n\n\/* =========================================================\n   STANDARD FIELDS\n   ========================================================= *\/\n\n.cs-field-grid {\n    display:grid;\n\n    grid-template-columns:repeat(2,1fr);\n\n    gap:20px;\n}\n\n.cs-field {\n    margin-bottom:20px;\n}\n\n.cs-field-full {\n    grid-column:1 \/ -1;\n}\n\n.cs-field label {\n    display:block;\n\n    margin-bottom:7px;\n\n    color:#34434e;\n\n    font-size:14px;\n    font-weight:800;\n}\n\n.cs-field input,\n.cs-field select,\n.cs-field textarea {\n    width:100%;\n\n    border:1px solid #cfd9df;\n\n    border-radius:8px;\n\n    padding:13px 14px;\n\n    background:white;\n\n    color:#1d2932;\n\n    font-family:inherit;\n\n    font-size:16px;\n\n    outline:none;\n\n    transition:\n        border-color .2s ease,\n        box-shadow .2s ease;\n}\n\n.cs-field input:focus,\n.cs-field select:focus,\n.cs-field textarea:focus {\n    border-color:var(--blue);\n\n    box-shadow:0 0 0 3px rgba(8,127,209,.10);\n}\n\n.cs-field textarea {\n    min-height:135px;\n    resize:vertical;\n}\n\n.cs-help {\n    display:block;\n\n    margin-top:7px;\n\n    color:#77848d;\n\n    font-size:13px;\n\n    line-height:1.5;\n}\n\n\n\/* =========================================================\n   MULTI-SELECT SERVICE DROPDOWN\n   ========================================================= *\/\n\n.cs-service-dropdown {\n    position:relative;\n\n    width:100%;\n\n    margin-top:18px;\n}\n\n.cs-service-dropdown summary {\n    list-style:none;\n\n    width:100%;\n\n    display:flex;\n    align-items:center;\n    justify-content:space-between;\n\n    gap:18px;\n\n    padding:18px 20px;\n\n    background:white;\n\n    border:2px solid #d5e1e8;\n\n    border-radius:10px;\n\n    cursor:pointer;\n\n    user-select:none;\n\n    transition:\n        border-color .2s ease,\n        box-shadow .2s ease,\n        background .2s ease;\n}\n\n.cs-service-dropdown summary::-webkit-details-marker {\n    display:none;\n}\n\n.cs-service-dropdown summary:hover {\n    border-color:#8bcff4;\n\n    background:#fbfdff;\n}\n\n.cs-service-dropdown[open] summary {\n    border-color:var(--blue);\n\n    border-radius:10px 10px 0 0;\n\n    box-shadow:0 0 0 3px rgba(8,127,209,.08);\n}\n\n.cs-service-dropdown-left {\n    display:flex;\n\n    align-items:center;\n\n    gap:13px;\n\n    min-width:0;\n}\n\n.cs-service-dropdown-icon {\n    width:42px;\n    height:42px;\n\n    flex:0 0 42px;\n\n    display:flex;\n    align-items:center;\n    justify-content:center;\n\n    border-radius:9px;\n\n    background:#edf8ff;\n\n    font-size:22px;\n}\n\n.cs-service-dropdown-text {\n    min-width:0;\n}\n\n.cs-service-dropdown-text strong {\n    display:block;\n\n    margin-bottom:3px;\n\n    color:#273640;\n\n    font-size:16px;\n}\n\n.cs-service-dropdown-text span {\n    display:block;\n\n    color:#6b7882;\n\n    font-size:14px;\n\n    white-space:normal;\n}\n\n.cs-service-dropdown-arrow {\n    color:var(--blue);\n\n    font-size:20px;\n    font-weight:900;\n\n    transition:transform .2s ease;\n}\n\n.cs-service-dropdown[open] .cs-service-dropdown-arrow {\n    transform:rotate(180deg);\n}\n\n.cs-service-dropdown-menu {\n    padding:10px;\n\n    background:white;\n\n    border:2px solid var(--blue);\n\n    border-top:0;\n\n    border-radius:0 0 10px 10px;\n\n    box-shadow:0 12px 30px rgba(0,0,0,.08);\n}\n\n.cs-service-drop-option {\n    display:grid;\n\n    grid-template-columns:auto auto 1fr auto;\n\n    align-items:center;\n\n    gap:13px;\n\n    padding:15px 14px;\n\n    border-radius:9px;\n\n    cursor:pointer;\n\n    transition:\n        background .2s ease,\n        border-color .2s ease;\n}\n\n.cs-service-drop-option:hover {\n    background:#f2f9fd;\n}\n\n.cs-service-drop-option + .cs-service-drop-option {\n    border-top:1px solid #e8eef2;\n}\n\n.cs-service-drop-option input {\n    width:19px;\n    height:19px;\n\n    accent-color:var(--blue);\n\n    cursor:pointer;\n}\n\n.cs-service-drop-icon {\n    font-size:27px;\n}\n\n.cs-service-drop-name strong {\n    display:block;\n\n    color:#293841;\n\n    font-size:15px;\n\n    margin-bottom:3px;\n}\n\n.cs-service-drop-name span {\n    display:block;\n\n    color:#6c7982;\n\n    font-size:13px;\n}\n\n.cs-service-drop-price {\n    color:var(--blue-dark);\n\n    font-weight:900;\n\n    font-size:14px;\n\n    text-align:right;\n\n    white-space:nowrap;\n}\n\n.cs-service-selected {\n    margin-top:11px;\n\n    color:#66747e;\n\n    font-size:13px;\n\n    line-height:1.5;\n}\n\n.cs-service-selected strong {\n    color:var(--blue-dark);\n}\n\n\n\/* =========================================================\n   DYNAMIC SERVICE QUESTIONS\n   ========================================================= *\/\n\n.cs-dynamic-service {\n    display:none;\n\n    margin-top:25px;\n\n    padding:25px;\n\n    border-radius:12px;\n\n    border:1px solid #d8e5ed;\n\n    background:#f8fbfd;\n}\n\n.cs-dynamic-service.cs-show {\n    display:block;\n}\n\n.cs-dynamic-title {\n    display:flex;\n\n    align-items:center;\n\n    gap:12px;\n\n    margin-bottom:22px;\n\n    padding-bottom:17px;\n\n    border-bottom:1px solid #dee8ee;\n}\n\n.cs-dynamic-title span {\n    font-size:29px;\n}\n\n.cs-dynamic-title strong {\n    color:var(--blue-dark);\n\n    font-size:21px;\n}\n\n\n\/* =========================================================\n   YES \/ NO \/ UNSURE\n   ========================================================= *\/\n\n.cs-question {\n    padding:17px 0;\n\n    border-bottom:1px solid #e2e9ed;\n}\n\n.cs-question:last-child {\n    border-bottom:none;\n}\n\n.cs-question > strong {\n    display:block;\n\n    margin-bottom:11px;\n\n    color:#42515b;\n\n    font-size:15px;\n\n    line-height:1.5;\n}\n\n.cs-radio-group {\n    display:flex;\n\n    flex-wrap:wrap;\n\n    gap:18px;\n}\n\n.cs-radio-group label {\n    display:flex;\n\n    align-items:center;\n\n    gap:6px;\n\n    color:#596872;\n\n    font-size:14px;\n\n    cursor:pointer;\n}\n\n.cs-radio-group input {\n    width:16px;\n    height:16px;\n\n    accent-color:var(--blue);\n}\n\n\n\n\/* =========================================================\n   MULTI-VEHICLE DETAILS\n   ========================================================= *\/\n\n.cs-vehicle-count-wrap {\n    margin-bottom:22px;\n}\n\n.cs-vehicle-card {\n    margin-top:22px;\n    padding:24px;\n    border:1px solid #d8e5ed;\n    border-radius:12px;\n    background:white;\n    box-shadow:0 5px 18px rgba(0,0,0,.035);\n}\n\n.cs-vehicle-card:first-child {\n    margin-top:0;\n}\n\n.cs-vehicle-card-title {\n    display:flex;\n    align-items:center;\n    gap:10px;\n    margin:0 0 20px;\n    padding-bottom:15px;\n    border-bottom:1px solid #e3ebef;\n    color:var(--blue-dark);\n    font-size:19px;\n    font-weight:900;\n}\n\n.cs-vehicle-starting-price {\n    margin-top:8px;\n    color:#6b7882;\n    font-size:13px;\n    line-height:1.5;\n}\n\n.cs-vehicle-other-type {\n    display:none;\n}\n\n.cs-vehicle-other-type.cs-show {\n    display:block;\n}\n\n\n\/* =========================================================\n   TRASH CAN EMPTY WARNING \/ ACKNOWLEDGMENT\n   ========================================================= *\/\n\n.cs-trash-empty-warning {\n    display:none;\n    margin-top:18px;\n    padding:19px;\n    border:1px solid #efb3b3;\n    border-left:5px solid #c62828;\n    border-radius:9px;\n    background:#fff1f1;\n    color:#6f2e2e;\n    line-height:1.65;\n}\n\n.cs-trash-empty-warning.cs-show {\n    display:block;\n}\n\n.cs-trash-empty-warning strong {\n    color:#9d2020;\n}\n\n.cs-trash-empty-ack {\n    margin:15px 0 0;\n    padding:15px 16px;\n    display:flex;\n    align-items:flex-start;\n    gap:10px;\n    border:1px solid #e4b0b0;\n    border-radius:8px;\n    background:white;\n    color:#5e3434;\n    font-size:14px;\n    font-weight:700;\n    line-height:1.55;\n    cursor:pointer;\n}\n\n.cs-trash-empty-ack input {\n    margin-top:3px;\n    width:19px;\n    height:19px;\n    flex:0 0 auto;\n    accent-color:#c62828;\n}\n\n.cs-trash-empty-ack:has(input:checked) {\n    border-color:#8bcda1;\n    background:#f1faf4;\n    color:#356345;\n}\n\n\/* =========================================================\n   TRAVEL NOTICE\n   ========================================================= *\/\n\n.cs-travel-notice {\n    margin-top:5px;\n\n    padding:20px;\n\n    border-radius:9px;\n\n    background:#eef8ff;\n\n    border-left:5px solid var(--blue);\n\n    color:#52616c;\n\n    line-height:1.7;\n}\n\n.cs-travel-notice strong {\n    color:var(--blue-dark);\n}\n\n\n\/* =========================================================\n   AGREEMENT CHECKBOXES\n   ========================================================= *\/\n\n.cs-agreement {\n    margin:16px 0;\n\n    padding:17px 18px;\n\n    display:flex;\n\n    align-items:flex-start;\n\n    gap:12px;\n\n    color:#53616b;\n\n    font-size:14px;\n\n    line-height:1.6;\n\n    background:#f8fafb;\n\n    border:1px solid #e1e8ec;\n\n    border-radius:8px;\n\n    cursor:pointer;\n\n    transition:\n        border-color .2s ease,\n        background .2s ease;\n}\n\n.cs-agreement:hover {\n    border-color:#bcd8e8;\n}\n\n.cs-agreement:has(input:checked) {\n    border-color:#8bcda1;\n\n    background:#f1faf4;\n}\n\n.cs-agreement input {\n    margin-top:3px;\n\n    width:19px;\n    height:19px;\n\n    flex:0 0 auto;\n\n    accent-color:var(--green);\n}\n\n\n\/* =========================================================\n   SUBMIT NOTICE\n   ========================================================= *\/\n\n.cs-submit-notice {\n    margin:25px 0;\n\n    padding:22px;\n\n    border-radius:9px;\n\n    background:#fff8ea;\n\n    border-left:5px solid #e5a63a;\n\n    color:#704c27;\n\n    line-height:1.65;\n}\n\n.cs-submit-notice strong {\n    color:#764a0a;\n}\n\n\n\/* =========================================================\n   SUBMIT BUTTON\n   ========================================================= *\/\n\n.cs-submit-btn {\n    width:100%;\n\n    padding:17px 25px;\n\n    border:0;\n\n    border-radius:8px;\n\n    background:linear-gradient(\n        135deg,\n        var(--blue),\n        var(--blue-bright)\n    );\n\n    color:white;\n\n    font-family:inherit;\n\n    font-size:18px;\n    font-weight:900;\n\n    cursor:pointer;\n\n    box-shadow:0 10px 27px rgba(8,127,209,.28);\n\n    transition:\n        transform .2s ease,\n        box-shadow .2s ease,\n        opacity .2s ease;\n}\n\n.cs-submit-btn:not(:disabled):hover {\n    transform:translateY(-2px);\n\n    box-shadow:0 13px 31px rgba(8,127,209,.40);\n}\n\n.cs-submit-btn:disabled {\n    background:#9ba8b0;\n\n    color:#eef1f3;\n\n    cursor:not-allowed;\n\n    opacity:.72;\n\n    box-shadow:none;\n}\n\n.cs-submit-lock-message {\n    margin-top:11px;\n\n    text-align:center;\n\n    color:#7a858d;\n\n    font-size:13px;\n}\n\n.cs-submit-lock-message.cs-ready {\n    color:#388058;\n\n    font-weight:700;\n}\n\n\n\/* =========================================================\n   STATUS\n   ========================================================= *\/\n\n.cs-status {\n    display:none;\n\n    margin-bottom:25px;\n\n    padding:18px 20px;\n\n    border-radius:9px;\n\n    font-weight:700;\n\n    line-height:1.6;\n}\n\n.cs-status-success {\n    display:block;\n\n    background:#eef9f1;\n\n    border-left:5px solid #36905a;\n\n    color:#356345;\n}\n\n.cs-status-error {\n    display:block;\n\n    background:#fff2f2;\n\n    border-left:5px solid #a73535;\n\n    color:#762f2f;\n}\n\n\n\/* =========================================================\n   FULL-PAGE QUOTE CONFIRMATION\n   ========================================================= *\/\n\n.cs-confirm-overlay {\n    position:fixed;\n    inset:0;\n    z-index:100000;\n\n    display:flex;\n    align-items:center;\n    justify-content:center;\n\n    padding:24px;\n\n    background:rgba(2,6,9,.86);\n    backdrop-filter:blur(5px);\n}\n\n.cs-confirm-card {\n    width:min(600px,100%);\n\n    padding:38px 34px;\n\n    border:1px solid rgba(255,255,255,.12);\n    border-radius:18px;\n\n    background:white;\n    color:var(--text);\n\n    text-align:center;\n\n    box-shadow:0 28px 80px rgba(0,0,0,.42);\n}\n\n.cs-confirm-icon {\n    width:72px;\n    height:72px;\n\n    margin:0 auto 20px;\n\n    display:flex;\n    align-items:center;\n    justify-content:center;\n\n    border-radius:50%;\n\n    background:#eaf8ef;\n    color:#2f855a;\n\n    font-size:38px;\n    font-weight:900;\n}\n\n.cs-confirm-card h2 {\n    margin:0 0 13px;\n\n    color:var(--blue-dark);\n\n    font-size:clamp(28px,5vw,38px);\n}\n\n.cs-confirm-card p {\n    margin:0;\n\n    color:#566570;\n\n    font-size:16px;\n    line-height:1.7;\n}\n\n.cs-confirm-email-note {\n    margin-top:20px !important;\n    padding:17px 18px;\n\n    border-left:5px solid var(--blue);\n    border-radius:9px;\n\n    background:#eef8ff;\n\n    color:#405562 !important;\n\n    text-align:left;\n}\n\n.cs-confirm-email-note strong {\n    color:var(--blue-dark);\n}\n\n.cs-confirm-button {\n    margin-top:26px;\n    width:100%;\n    padding:15px 22px;\n    border:0;\n    border-radius:9px;\n    background:linear-gradient(\n        135deg,\n        #c62828,\n        #ef4444\n    );\n    color:white;\n    font-family:inherit;\n    font-size:17px;\n    font-weight:900;\n    cursor:pointer;\n    box-shadow:0 10px 27px rgba(198,40,40,.30);\n    transition:\n        transform .2s ease,\n        box-shadow .2s ease,\n        filter .2s ease;\n}\n\n.cs-confirm-button:hover {\n    filter:brightness(1.08);\n    transform:translateY(-2px);\n    box-shadow:0 13px 30px rgba(198,40,40,.40);\n}\n\nbody.cs-confirm-open {\n    overflow:hidden;\n}\n\n@media(max-width:500px) {\n    .cs-confirm-overlay {\n        padding:16px;\n    }\n\n    .cs-confirm-card {\n        padding:30px 22px;\n    }\n}\n\n\n\/* =========================================================\n   SIDEBAR\n   ========================================================= *\/\n\n.cs-quote-sidebar {\n    display:grid;\n\n    gap:22px;\n}\n\n.cs-sidebar-box {\n    padding:29px;\n\n    border-radius:13px;\n\n    background:white;\n\n    border:1px solid #dce6ec;\n\n    box-shadow:0 8px 25px rgba(0,0,0,.04);\n}\n\n.cs-sidebar-box h3 {\n    margin:0 0 15px;\n\n    color:var(--text);\n\n    font-size:21px;\n}\n\n.cs-sidebar-box p {\n    margin:0;\n\n    color:#66747e;\n\n    line-height:1.7;\n}\n\n.cs-sidebar-list {\n    list-style:none;\n\n    margin:0;\n\n    padding:0;\n}\n\n.cs-sidebar-list li {\n    padding:11px 0;\n\n    color:#5e6d77;\n\n    border-bottom:1px solid #e5ebef;\n\n    line-height:1.5;\n}\n\n.cs-sidebar-list li:last-child {\n    border-bottom:0;\n}\n\n.cs-sidebar-list strong {\n    color:var(--blue-dark);\n}\n\n.cs-sidebar-dark {\n    background:var(--dark);\n\n    border-color:var(--dark);\n}\n\n.cs-sidebar-dark h3 {\n    color:white;\n}\n\n.cs-sidebar-dark p {\n    color:#bcc7cf;\n}\n\n\n\/* =========================================================\n   FOOTER\n   ========================================================= *\/\n\n.cs-quote-footer {\n    background:#020609;\n\n    padding:60px 0 28px;\n}\n\n.cs-quote-footer-grid {\n    display:grid;\n\n    grid-template-columns:2fr 1fr 1fr;\n\n    gap:60px;\n}\n\n.cs-quote-footer-logo {\n    width:220px;\n\n    display:block;\n\n    margin-bottom:18px;\n}\n\n.cs-quote-footer p {\n    max-width:390px;\n\n    color:#9ba8b2;\n\n    line-height:1.7;\n}\n\n.cs-quote-footer h4 {\n    margin:0 0 20px;\n\n    color:white;\n}\n\n.cs-quote-footer a {\n    display:block;\n\n    margin-bottom:13px;\n\n    color:#9fb9ca !important;\n\n    text-decoration:none !important;\n}\n\n.cs-quote-footer a:hover {\n    color:var(--blue-light) !important;\n}\n\n.cs-quote-copyright {\n    margin-top:45px;\n\n    padding-top:22px;\n\n    border-top:1px solid rgba(255,255,255,.08);\n\n    text-align:center;\n\n    color:#778590;\n\n    font-size:14px;\n}\n\n\n\/* =========================================================\n   HONEYPOT\n   ========================================================= *\/\n\n.cs-hp-field {\n    position:absolute !important;\n\n    left:-99999px !important;\n\n    width:1px !important;\n    height:1px !important;\n\n    overflow:hidden !important;\n}\n\n\n\/* =========================================================\n   MOBILE\n   ========================================================= *\/\n\n@media(max-width:950px) {\n\n    .cs-quote-layout {\n        grid-template-columns:1fr;\n    }\n\n    .cs-quote-sidebar {\n        grid-template-columns:repeat(2,1fr);\n    }\n\n}\n\n@media(max-width:800px) {\n\n    .cs-quote-nav {\n        flex-direction:column;\n\n        padding:18px 0;\n    }\n\n    .cs-quote-menu {\n        justify-content:center;\n\n        gap:17px;\n    }\n\n    .cs-quote-footer-grid {\n        grid-template-columns:1fr;\n\n        gap:35px;\n    }\n\n}\n\n@media(max-width:650px) {\n\n    .cs-field-grid,\n    .cs-quote-sidebar {\n        grid-template-columns:1fr;\n    }\n\n    .cs-quote-form-box {\n        padding:27px 21px;\n    }\n\n    .cs-dynamic-service {\n        padding:20px;\n    }\n\n    .cs-service-drop-option {\n        grid-template-columns:auto auto 1fr;\n    }\n\n    .cs-service-drop-price {\n        grid-column:3;\n        text-align:left;\n    }\n\n}\n\n@media(max-width:500px) {\n\n    .cs-quote-container {\n        width:90%;\n    }\n\n    .cs-quote-logo img {\n        width:190px;\n    }\n\n    .cs-quote-menu a {\n        font-size:14px;\n    }\n\n    .cs-quote-hero {\n        padding:70px 0;\n    }\n\n    .cs-quote-main {\n        padding:60px 0;\n    }\n\n}\n\n<\/style>\n\n\n<div class=\"cs-quote-page\">\n\n\n<!-- =========================================================\n     HEADER\n     ========================================================= -->\n\n<header class=\"cs-quote-header\">\n\n<div class=\"cs-quote-container cs-quote-nav\">\n\n\n<a href=\"\/home\/\" class=\"cs-quote-logo\">\n\n<img decoding=\"async\" src=\"https:\/\/cspraypw.com\/wp-content\/uploads\/2026\/08\/ChatGPT-Image-Aug-15-2026-10_56_03-PM.png\" alt=\"C Spray Pressure Washing\">\n\n<\/a>\n\n\n<nav class=\"cs-quote-menu\">\n\n<a href=\"\/home\/\">Home<\/a>\n\n<a href=\"\/services\/\">Services<\/a>\n\n<a href=\"\/about\/\">About<\/a>\n\n<a href=\"\/terms\/\">Terms<\/a>\n\n<a href=\"\/privacy-policy\/\">Privacy<\/a>\n\n<a href=\"\/get-a-quote\/\" class=\"cs-quote-nav-btn\">\nGet a Quote\n<\/a>\n\n<\/nav>\n\n\n<\/div>\n\n<\/header>\n\n\n<!-- =========================================================\n     HERO\n     ========================================================= -->\n\n<section class=\"cs-quote-hero\">\n\n<div class=\"cs-quote-container\">\n\n<span class=\"cs-quote-kicker\">\nFree Quote Request\n<\/span>\n\n<h1>\nTell Us What You Need <span>Cleaned.<\/span>\n<\/h1>\n\n<p>\n\nProvide a few details about the service you need.\nC Spray will review your request and contact you with pricing,\navailability and any additional questions.\n\n<\/p>\n\n<\/div>\n\n<\/section>\n\n\n<!-- =========================================================\n     MAIN FORM AREA\n     ========================================================= -->\n\n<section class=\"cs-quote-main\">\n\n<div class=\"cs-quote-container cs-quote-layout\">\n\n\n<div class=\"cs-quote-form-box\">\n\n\n<div id=\"csQuoteStatus\" class=\"cs-status\"><\/div>\n\n\n<div class=\"cs-form-heading\">\n\n<span>\nRequest Your Quote\n<\/span>\n\n<h2>\nLet&#8217;s Get Some Details\n<\/h2>\n\n<p>\nFields marked with an asterisk (*) are required.\n<\/p>\n\n<\/div>\n\n\n<form id=\"csQuoteForm\" method=\"post\" action=\"\/wp-admin\/admin-post.php\">\n\n\n<input type=\"hidden\" name=\"action\" value=\"cspray_quote_submit\">\n\n\n<!-- HONEYPOT -->\n\n<div class=\"cs-hp-field\">\n\n<label>\n\nLeave this field empty\n\n<input type=\"text\" name=\"company_website\" autocomplete=\"off\" tabindex=\"-1\">\n\n<\/label>\n\n<\/div>\n\n\n<!-- =========================================================\n     CUSTOMER INFORMATION\n     ========================================================= -->\n\n<div class=\"cs-form-section\">\n\n\n<h3>\nYour Information\n<\/h3>\n\n<p>\nHow should we contact you about the quote?\n<\/p>\n\n\n<div class=\"cs-field-grid\">\n\n\n<div class=\"cs-field\">\n\n<label for=\"cs_first_name\">\nFirst Name *\n<\/label>\n\n<input id=\"cs_first_name\" type=\"text\" name=\"first_name\" required=\"\">\n\n<\/div>\n\n\n<div class=\"cs-field\">\n\n<label for=\"cs_last_name\">\nLast Name *\n<\/label>\n\n<input id=\"cs_last_name\" type=\"text\" name=\"last_name\" required=\"\">\n\n<\/div>\n\n\n<div class=\"cs-field\">\n\n<label for=\"cs_phone\">\nPhone Number *\n<\/label>\n\n<input id=\"cs_phone\" type=\"tel\" name=\"phone\" required=\"\">\n\n<\/div>\n\n\n<div class=\"cs-field\">\n\n<label for=\"cs_email\">\nEmail Address *\n<\/label>\n\n<input id=\"cs_email\" type=\"email\" name=\"email\" required=\"\">\n\n<\/div>\n\n\n<div class=\"cs-field\">\n\n<label for=\"cs_contact_method\">\nPreferred Contact Method *\n<\/label>\n\n<select id=\"cs_contact_method\" name=\"contact_method\" required=\"\">\n\n<option value=\"\">\nSelect one\n<\/option>\n\n<option value=\"Text\">\nText\n<\/option>\n\n<option value=\"Phone Call\">\nPhone Call\n<\/option>\n\n<option value=\"Email\">\nEmail\n<\/option>\n\n<\/select>\n\n<\/div>\n\n\n<\/div>\n\n<\/div>\n\n\n<!-- =========================================================\n     SERVICE ADDRESS\n     ========================================================= -->\n\n<div class=\"cs-form-section\">\n\n\n<h3>\nService Address\n<\/h3>\n\n<p>\n\nYour service address is used to determine availability\nand any applicable travel charge.\n\n<\/p>\n\n\n<div class=\"cs-field-grid\">\n\n\n<div class=\"cs-field cs-field-full\">\n\n<label for=\"cs_address\">\nStreet Address *\n<\/label>\n\n<input id=\"cs_address\" type=\"text\" name=\"address\" required=\"\">\n\n<\/div>\n\n\n<div class=\"cs-field\">\n\n<label for=\"cs_city\">\nCity *\n<\/label>\n\n<input id=\"cs_city\" type=\"text\" name=\"city\" required=\"\">\n\n<\/div>\n\n\n<div class=\"cs-field\">\n\n<label for=\"cs_zip\">\nZIP Code *\n<\/label>\n\n<input id=\"cs_zip\" type=\"text\" name=\"zip\" inputmode=\"numeric\" required=\"\">\n\n<\/div>\n\n\n<\/div>\n\n\n<div class=\"cs-travel-notice\">\n\n<strong>\nTravel Charges:\n<\/strong>\n\nNo charge within 5 miles of C Spray&#8217;s Mooresville service base.\n\nLocations more than 5 miles through 10 miles have a $5 travel charge.\nEach additional 5-mile range adds $5.\n\nAny applicable travel charge will be confirmed before an appointment\nis scheduled.\n\n<\/div>\n\n\n<\/div>\n\n\n<!-- =========================================================\n     SERVICE DROPDOWN\n     ========================================================= -->\n\n<div class=\"cs-form-section\">\n\n\n<h3>\nWhat Would You Like Cleaned?\n<\/h3>\n\n<p>\n\nOpen the box below and select one or more services.\nYou can choose multiple services in the same quote request.\n\n<\/p>\n\n\n<details class=\"cs-service-dropdown\" id=\"csServiceDropdown\">\n\n\n<summary>\n\n<div class=\"cs-service-dropdown-left\">\n\n<div class=\"cs-service-dropdown-icon\">\n\ud83d\udca7\n<\/div>\n\n<div class=\"cs-service-dropdown-text\">\n\n<strong>\nSelect Services\n<\/strong>\n\n<span id=\"csServiceSummary\">\nChoose one or more services\n<\/span>\n\n<\/div>\n\n<\/div>\n\n\n<div class=\"cs-service-dropdown-arrow\">\n\u2304\n<\/div>\n\n<\/summary>\n\n\n<div class=\"cs-service-dropdown-menu\">\n\n\n<!-- MOBILE HOME -->\n\n<label class=\"cs-service-drop-option\">\n\n<input type=\"checkbox\" name=\"services[]\" value=\"Mobile Home Washing\" data-target=\"mobileQuestions\" data-label=\"Mobile Home Washing\">\n\n<span class=\"cs-service-drop-icon\">\n\ud83c\udfe0\n<\/span>\n\n<span class=\"cs-service-drop-name\">\n\n<strong>\nMobile Home Washing\n<\/strong>\n\n<span>\nExterior mobile-home cleaning\n<\/span>\n\n<\/span>\n\n<span class=\"cs-service-drop-price\">\n$125+\n<\/span>\n\n<\/label>\n\n\n<!-- STANDARD HOUSE -->\n\n<label class=\"cs-service-drop-option\">\n\n<input type=\"checkbox\" name=\"services[]\" value=\"Standard House Washing\" data-target=\"houseQuestions\" data-label=\"House Washing\">\n\n<span class=\"cs-service-drop-icon\">\n\ud83c\udfe1\n<\/span>\n\n<span class=\"cs-service-drop-name\">\n\n<strong>\nStandard House Washing\n<\/strong>\n\n<span>\nTraditional residential homes\n<\/span>\n\n<\/span>\n\n<span class=\"cs-service-drop-price\">\n$150+\n<\/span>\n\n<\/label>\n\n\n<!-- CONCRETE -->\n\n<label class=\"cs-service-drop-option\">\n\n<input type=\"checkbox\" name=\"services[]\" value=\"Concrete \/ Hard Surface Cleaning\" data-target=\"concreteQuestions\" data-label=\"Concrete \/ Hard Surfaces\">\n\n<span class=\"cs-service-drop-icon\">\n\ud83e\uddf1\n<\/span>\n\n<span class=\"cs-service-drop-name\">\n\n<strong>\nConcrete &amp; Hard Surfaces\n<\/strong>\n\n<span>\nDriveways, sidewalks, patios and walkways\n<\/span>\n\n<\/span>\n\n<span class=\"cs-service-drop-price\">\n$50+\n<\/span>\n\n<\/label>\n\n\n<!-- TRASH -->\n\n<label class=\"cs-service-drop-option\">\n\n<input type=\"checkbox\" name=\"services[]\" value=\"Trash Can Cleaning\" data-target=\"trashQuestions\" data-label=\"Trash Can Cleaning\">\n\n<span class=\"cs-service-drop-icon\">\n\ud83d\uddd1\ufe0f\n<\/span>\n\n<span class=\"cs-service-drop-name\">\n\n<strong>\nTrash Can Cleaning\n<\/strong>\n\n<span>\nResidential trash and recycling containers\n<\/span>\n\n<\/span>\n\n<span class=\"cs-service-drop-price\">\n$10\/can\n<\/span>\n\n<\/label>\n\n\n<!-- VEHICLE -->\n\n<label class=\"cs-service-drop-option\">\n\n<input type=\"checkbox\" name=\"services[]\" value=\"Touchless Vehicle Washing\" data-target=\"vehicleQuestions\" data-label=\"Vehicle Washing\">\n\n<span class=\"cs-service-drop-icon\">\n\ud83d\ude97\n<\/span>\n\n<span class=\"cs-service-drop-name\">\n\n<strong>\nTouchless Vehicle Washing\n<\/strong>\n\n<span>\nBasic soap application and pressure rinse\n<\/span>\n\n<\/span>\n\n<span class=\"cs-service-drop-price\">\n$20+\n<\/span>\n\n<\/label>\n\n\n<\/div>\n\n<\/details>\n\n\n<div id=\"csSelectedServices\" class=\"cs-service-selected\">\n\n<strong>No services selected yet.<\/strong>\n\n<\/div>\n\n\n<!-- =========================================================\n     MOBILE HOME QUESTIONS\n     ========================================================= -->\n\n<div id=\"mobileQuestions\" class=\"cs-dynamic-service\">\n\n\n<div class=\"cs-dynamic-title\">\n\n<span>\ud83c\udfe0<\/span>\n\n<strong>\nMobile Home Details\n<\/strong>\n\n<\/div>\n\n\n<div class=\"cs-field-grid\">\n\n\n<div class=\"cs-field\">\n\n<label>\nApproximate Square Footage\n<\/label>\n\n<input type=\"number\" name=\"mobile_sqft\" min=\"0\" placeholder=\"Example: 1200\">\n\n<\/div>\n\n\n<div class=\"cs-field\">\n\n<label>\nMobile Home Type\n<\/label>\n\n<select name=\"mobile_type\">\n\n<option value=\"\">\nSelect one\n<\/option>\n\n<option value=\"Single-wide\">\nSingle-wide\n<\/option>\n\n<option value=\"Double-wide\">\nDouble-wide\n<\/option>\n\n<option value=\"Other \/ Unsure\">\nOther \/ Unsure\n<\/option>\n\n<\/select>\n\n<\/div>\n\n\n<div class=\"cs-field\">\n\n<label>\nAdditions \/ Enclosed Porches?\n<\/label>\n\n<select name=\"mobile_additions\">\n\n<option value=\"\">\nSelect one\n<\/option>\n\n<option value=\"No\">\nNo\n<\/option>\n\n<option value=\"Yes\">\nYes\n<\/option>\n\n<option value=\"Unsure\">\nUnsure\n<\/option>\n\n<\/select>\n\n<\/div>\n\n\n<div class=\"cs-field\">\n\n<label>\nAdd $25 Shed Wash?\n<\/label>\n\n<select name=\"mobile_shed\">\n\n<option value=\"\">\nSelect one\n<\/option>\n\n<option value=\"No\">\nNo\n<\/option>\n\n<option value=\"Yes - Vinyl or metal, up to 12x12\">\nYes \u2014 vinyl or metal, up to 12\u00d712\n<\/option>\n\n<option value=\"Unsure\">\nUnsure\n<\/option>\n\n<\/select>\n\n<span class=\"cs-help\">\nFull wooden sheds are not eligible for this add-on.\n<\/span>\n\n<\/div>\n\n\n<\/div>\n\n\n<div class=\"cs-question\">\n\n<strong>\nDo you know of loose, cracked or significantly damaged siding?\n<\/strong>\n\n<div class=\"cs-radio-group\">\n\n<label>\n<input type=\"radio\" name=\"mobile_damaged_siding\" value=\"Yes\">\nYes\n<\/label>\n\n<label>\n<input type=\"radio\" name=\"mobile_damaged_siding\" value=\"No\">\nNo\n<\/label>\n\n<label>\n<input type=\"radio\" name=\"mobile_damaged_siding\" value=\"Unsure\">\nUnsure\n<\/label>\n\n<\/div>\n\n<\/div>\n\n\n<div class=\"cs-question\">\n\n<strong>\nDo you know of leaking or poorly sealed windows or doors?\n<\/strong>\n\n<div class=\"cs-radio-group\">\n\n<label>\n<input type=\"radio\" name=\"mobile_leaks\" value=\"Yes\">\nYes\n<\/label>\n\n<label>\n<input type=\"radio\" name=\"mobile_leaks\" value=\"No\">\nNo\n<\/label>\n\n<label>\n<input type=\"radio\" name=\"mobile_leaks\" value=\"Unsure\">\nUnsure\n<\/label>\n\n<\/div>\n\n<\/div>\n\n\n<div class=\"cs-question\">\n\n<strong>\nDo you know of any areas where water enters the home?\n<\/strong>\n\n<div class=\"cs-radio-group\">\n\n<label>\n<input type=\"radio\" name=\"mobile_water_entry\" value=\"Yes\">\nYes\n<\/label>\n\n<label>\n<input type=\"radio\" name=\"mobile_water_entry\" value=\"No\">\nNo\n<\/label>\n\n<label>\n<input type=\"radio\" name=\"mobile_water_entry\" value=\"Unsure\">\nUnsure\n<\/label>\n\n<\/div>\n\n<\/div>\n\n\n<div class=\"cs-question\">\n\n<strong>\nDo you know of loose skirting, trim or exterior fixtures?\n<\/strong>\n\n<div class=\"cs-radio-group\">\n\n<label>\n<input type=\"radio\" name=\"mobile_loose_parts\" value=\"Yes\">\nYes\n<\/label>\n\n<label>\n<input type=\"radio\" name=\"mobile_loose_parts\" value=\"No\">\nNo\n<\/label>\n\n<label>\n<input type=\"radio\" name=\"mobile_loose_parts\" value=\"Unsure\">\nUnsure\n<\/label>\n\n<\/div>\n\n<\/div>\n\n\n<\/div>\n\n\n<!-- =========================================================\n     HOUSE QUESTIONS\n     ========================================================= -->\n\n<div id=\"houseQuestions\" class=\"cs-dynamic-service\">\n\n\n<div class=\"cs-dynamic-title\">\n\n<span>\ud83c\udfe1<\/span>\n\n<strong>\nHouse Details\n<\/strong>\n\n<\/div>\n\n\n<div class=\"cs-field-grid\">\n\n\n<div class=\"cs-field\">\n\n<label>\nApproximate House Square Footage\n<\/label>\n\n<input type=\"number\" name=\"house_sqft\" min=\"0\" placeholder=\"Example: 1800\">\n\n<\/div>\n\n\n<div class=\"cs-field\">\n\n<label>\nNumber of Stories\n<\/label>\n\n<select name=\"house_stories\">\n\n<option value=\"\">\nSelect one\n<\/option>\n\n<option value=\"1\">\n1 story\n<\/option>\n\n<option value=\"2\">\n2 stories\n<\/option>\n\n<option value=\"3+\">\n3+ stories\n<\/option>\n\n<option value=\"Unsure\">\nUnsure\n<\/option>\n\n<\/select>\n\n<\/div>\n\n\n<div class=\"cs-field\">\n\n<label>\nSiding Type\n<\/label>\n\n<select name=\"house_siding\">\n\n<option value=\"\">\nSelect one\n<\/option>\n\n<option value=\"Vinyl\">\nVinyl\n<\/option>\n\n<option value=\"Metal\">\nMetal\n<\/option>\n\n<option value=\"Brick \/ Mixed\">\nBrick \/ Mixed\n<\/option>\n\n<option value=\"Other\">\nOther\n<\/option>\n\n<option value=\"Unsure\">\nUnsure\n<\/option>\n\n<\/select>\n\n<\/div>\n\n\n<div class=\"cs-field\">\n\n<label>\nAdd $25 Shed Wash?\n<\/label>\n\n<select name=\"house_shed\">\n\n<option value=\"\">\nSelect one\n<\/option>\n\n<option value=\"No\">\nNo\n<\/option>\n\n<option value=\"Yes - Vinyl or metal, up to 12x12\">\nYes \u2014 vinyl or metal, up to 12\u00d712\n<\/option>\n\n<option value=\"Unsure\">\nUnsure\n<\/option>\n\n<\/select>\n\n<span class=\"cs-help\">\nFull wooden sheds are not eligible.\n<\/span>\n\n<\/div>\n\n\n<\/div>\n\n\n<div class=\"cs-question\">\n\n<strong>\nDo you know of loose, cracked or significantly damaged siding?\n<\/strong>\n\n<div class=\"cs-radio-group\">\n\n<label>\n<input type=\"radio\" name=\"house_damaged_siding\" value=\"Yes\">\nYes\n<\/label>\n\n<label>\n<input type=\"radio\" name=\"house_damaged_siding\" value=\"No\">\nNo\n<\/label>\n\n<label>\n<input type=\"radio\" name=\"house_damaged_siding\" value=\"Unsure\">\nUnsure\n<\/label>\n\n<\/div>\n\n<\/div>\n\n\n<div class=\"cs-question\">\n\n<strong>\nDo you know of severely peeling, bubbling or loose exterior paint?\n<\/strong>\n\n<div class=\"cs-radio-group\">\n\n<label>\n<input type=\"radio\" name=\"house_paint\" value=\"Yes\">\nYes\n<\/label>\n\n<label>\n<input type=\"radio\" name=\"house_paint\" value=\"No\">\nNo\n<\/label>\n\n<label>\n<input type=\"radio\" name=\"house_paint\" value=\"Unsure\">\nUnsure\n<\/label>\n\n<\/div>\n\n<\/div>\n\n\n<div class=\"cs-question\">\n\n<strong>\nDo you know of leaking or poorly sealed windows or doors?\n<\/strong>\n\n<div class=\"cs-radio-group\">\n\n<label>\n<input type=\"radio\" name=\"house_leaks\" value=\"Yes\">\nYes\n<\/label>\n\n<label>\n<input type=\"radio\" name=\"house_leaks\" value=\"No\">\nNo\n<\/label>\n\n<label>\n<input type=\"radio\" name=\"house_leaks\" value=\"Unsure\">\nUnsure\n<\/label>\n\n<\/div>\n\n<\/div>\n\n\n<div class=\"cs-question\">\n\n<strong>\nDo you know of other areas where water enters the home?\n<\/strong>\n\n<div class=\"cs-radio-group\">\n\n<label>\n<input type=\"radio\" name=\"house_water_entry\" value=\"Yes\">\nYes\n<\/label>\n\n<label>\n<input type=\"radio\" name=\"house_water_entry\" value=\"No\">\nNo\n<\/label>\n\n<label>\n<input type=\"radio\" name=\"house_water_entry\" value=\"Unsure\">\nUnsure\n<\/label>\n\n<\/div>\n\n<\/div>\n\n\n<\/div>\n\n\n<!-- =========================================================\n     CONCRETE QUESTIONS\n     ========================================================= -->\n\n<div id=\"concreteQuestions\" class=\"cs-dynamic-service\">\n\n\n<div class=\"cs-dynamic-title\">\n\n<span>\ud83e\uddf1<\/span>\n\n<strong>\nConcrete &amp; Hard Surface Details\n<\/strong>\n\n<\/div>\n\n\n<div class=\"cs-field-grid\">\n\n\n<div class=\"cs-field\">\n\n<label>\nWhat Needs Cleaned?\n<\/label>\n\n<select name=\"concrete_type\">\n\n<option value=\"\">\nSelect one\n<\/option>\n\n<option value=\"Driveway\">\nDriveway\n<\/option>\n\n<option value=\"Sidewalk\">\nSidewalk\n<\/option>\n\n<option value=\"Patio\">\nPatio\n<\/option>\n\n<option value=\"Walkway\">\nWalkway\n<\/option>\n\n<option value=\"Multiple Surfaces\">\nMultiple surfaces\n<\/option>\n\n<option value=\"Other\">\nOther\n<\/option>\n\n<\/select>\n\n<\/div>\n\n\n<div class=\"cs-field\">\n\n<label>\nApproximate Square Footage\n<\/label>\n\n<input type=\"number\" name=\"concrete_sqft\" min=\"0\" placeholder=\"If known\">\n\n<\/div>\n\n\n<\/div>\n\n\n<div class=\"cs-question\">\n\n<strong>\nIs any concrete loose, crumbling or actively flaking?\n<\/strong>\n\n<div class=\"cs-radio-group\">\n\n<label>\n<input type=\"radio\" name=\"concrete_crumbling\" value=\"Yes\">\nYes\n<\/label>\n\n<label>\n<input type=\"radio\" name=\"concrete_crumbling\" value=\"No\">\nNo\n<\/label>\n\n<label>\n<input type=\"radio\" name=\"concrete_crumbling\" value=\"Unsure\">\nUnsure\n<\/label>\n\n<\/div>\n\n<\/div>\n\n\n<div class=\"cs-question\">\n\n<strong>\nIs there severe spalling or loose material around cracks?\n<\/strong>\n\n<div class=\"cs-radio-group\">\n\n<label>\n<input type=\"radio\" name=\"concrete_spalling\" value=\"Yes\">\nYes\n<\/label>\n\n<label>\n<input type=\"radio\" name=\"concrete_spalling\" value=\"No\">\nNo\n<\/label>\n\n<label>\n<input type=\"radio\" name=\"concrete_spalling\" value=\"Unsure\">\nUnsure\n<\/label>\n\n<\/div>\n\n<\/div>\n\n\n<div class=\"cs-question\">\n\n<strong>\nAre any pavers, bricks or stones loose or unstable?\n<\/strong>\n\n<div class=\"cs-radio-group\">\n\n<label>\n<input type=\"radio\" name=\"concrete_unstable\" value=\"Yes\">\nYes\n<\/label>\n\n<label>\n<input type=\"radio\" name=\"concrete_unstable\" value=\"No\">\nNo\n<\/label>\n\n<label>\n<input type=\"radio\" name=\"concrete_unstable\" value=\"Unsure\">\nUnsure\n<\/label>\n\n<\/div>\n\n<\/div>\n\n\n<\/div>\n\n\n<!-- =========================================================\n     TRASH QUESTIONS\n     ========================================================= -->\n\n<div id=\"trashQuestions\" class=\"cs-dynamic-service\">\n\n\n<div class=\"cs-dynamic-title\">\n\n<span>\ud83d\uddd1\ufe0f<\/span>\n\n<strong>\nTrash Can Details\n<\/strong>\n\n<\/div>\n\n\n<div class=\"cs-field-grid\">\n\n\n<div class=\"cs-field\">\n\n<label>\nNumber of Cans\n<\/label>\n\n<input type=\"number\" name=\"trash_count\" min=\"1\" placeholder=\"Example: 2\">\n\n<\/div>\n\n\n<div class=\"cs-field\">\n\n<label>\nContainer Type\n<\/label>\n\n<select name=\"trash_type\">\n\n<option value=\"\">\nSelect one\n<\/option>\n\n<option value=\"Trash\">\nTrash\n<\/option>\n\n<option value=\"Recycling\">\nRecycling\n<\/option>\n\n<option value=\"Both\">\nBoth\n<\/option>\n\n<\/select>\n\n<\/div>\n\n\n<\/div>\n\n\n<div class=\"cs-question\">\n\n<strong>\nWill the cans be empty before C Spray arrives?\n<\/strong>\n\n<div class=\"cs-radio-group\">\n\n<label>\n<input type=\"radio\" name=\"trash_empty\" value=\"Yes\">\nYes\n<\/label>\n\n<label>\n<input type=\"radio\" name=\"trash_empty\" value=\"No\">\nNo\n<\/label>\n\n<\/div>\n\n<\/div>\n\n\n<div id=\"csTrashEmptyWarning\" class=\"cs-trash-empty-warning\" aria-live=\"polite\">\n\n<strong>\nTrash cans must be empty before service.\n<\/strong>\n\n<div>\nC Spray cannot perform trash can cleaning while trash, recycling, bags, loose contents, or other items remain inside the container. Please make sure all cans are completely emptied before the scheduled service.\n<\/div>\n\n<label class=\"cs-trash-empty-ack\">\n<input\n    id=\"csTrashEmptyAck\"\n    type=\"checkbox\"\n    name=\"trash_empty_acknowledgment\"\n    value=\"Yes\"\n>\n<span>\nI understand that all cans must be completely emptied before C Spray arrives and that service may need to be rescheduled if contents remain inside.\n<\/span>\n<\/label>\n\n<\/div>\n\n\n<div class=\"cs-question\">\n\n<strong>\nDo the cans contain or have significant residue from sharps, hazardous chemicals, pesticides or biohazardous material?\n<\/strong>\n\n<div class=\"cs-radio-group\">\n\n<label>\n<input type=\"radio\" name=\"trash_hazardous\" value=\"Yes\">\nYes\n<\/label>\n\n<label>\n<input type=\"radio\" name=\"trash_hazardous\" value=\"No\">\nNo\n<\/label>\n\n<label>\n<input type=\"radio\" name=\"trash_hazardous\" value=\"Unsure\">\nUnsure\n<\/label>\n\n<\/div>\n\n<\/div>\n\n\n<\/div>\n\n\n<!-- =========================================================\n     VEHICLE QUESTIONS\n     ========================================================= -->\n\n<div id=\"vehicleQuestions\" class=\"cs-dynamic-service\">\n\n\n<div class=\"cs-dynamic-title\">\n\n<span>\ud83d\ude97<\/span>\n\n<strong>\nVehicle Details\n<\/strong>\n\n<\/div>\n\n\n<div class=\"cs-field cs-vehicle-count-wrap\">\n\n<label for=\"cs_vehicle_count\">\nHow Many Vehicles?\n<\/label>\n\n<select id=\"cs_vehicle_count\" name=\"vehicle_count\">\n<option value=\"1\">1 vehicle<\/option>\n<option value=\"2\">2 vehicles<\/option>\n<option value=\"3\">3 vehicles<\/option>\n<option value=\"4\">4 vehicles<\/option>\n<option value=\"5\">5 vehicles<\/option>\n<option value=\"6\">6 vehicles<\/option>\n<option value=\"7\">7 vehicles<\/option>\n<option value=\"8\">8 vehicles<\/option>\n<option value=\"9\">9 vehicles<\/option>\n<option value=\"10\">10 vehicles<\/option>\n<\/select>\n\n<span class=\"cs-help\">\nSelect the total number of vehicles you would like included in this quote request. A separate information section will appear for each vehicle.\n<\/span>\n\n<div id=\"csVehicleStartingPrice\" class=\"cs-vehicle-starting-price\">\nStarting price: $20+ for one standard passenger car. Final pricing depends on vehicle type and condition.\n<\/div>\n\n<\/div>\n\n\n<div id=\"csVehicleFields\"><\/div>\n\n\n<\/div>\n\n\n<!-- =========================================================\n     ADDITIONAL INFORMATION\n     ========================================================= -->\n\n<div class=\"cs-form-section\">\n\n\n<h3>\nAnything Else We Should Know?\n<\/h3>\n\n\n<div class=\"cs-field\">\n\n<label for=\"cs_details\">\nJob Details \/ Additional Information\n<\/label>\n\n<textarea id=\"cs_details\" name=\"details\" placeholder=\"Tell us about heavy buildup, unusual access, problem areas, additional surfaces or anything else that may help us prepare your quote.\"><\/textarea>\n\n<\/div>\n\n\n<\/div>\n\n\n<!-- =========================================================\n     ACKNOWLEDGMENTS\n     ========================================================= -->\n\n<div class=\"cs-form-section\">\n\n\n<h3>\nBefore You Submit\n<\/h3>\n\n<p>\nBoth boxes below must be checked before the quote request can be submitted.\n<\/p>\n\n\n<label class=\"cs-agreement\">\n\n<input id=\"csConditionAck\" type=\"checkbox\" name=\"condition_acknowledgment\" value=\"Yes\" required=\"\">\n\n<span>\n\nI have answered the condition questions to the best of my\nknowledge and disclosed any known conditions that could affect\nthe requested service.\n\n<\/span>\n\n<\/label>\n\n\n<label class=\"cs-agreement\">\n\n<input id=\"csQuoteAck\" type=\"checkbox\" name=\"quote_acknowledgment\" value=\"Yes\" required=\"\">\n\n<span>\n\nI understand that submitting this form is a quote request\nand does not create or confirm an appointment.\n\n<\/span>\n\n<\/label>\n\n\n<div class=\"cs-submit-notice\">\n\n<strong>\nSubmitting this form does not schedule an appointment.\n<\/strong>\n\nC Spray will review your request and contact you to confirm\nthe requested service, final quote, applicable travel charge,\navailability and any additional information needed before an\nappointment is scheduled.\n\n<\/div>\n\n\n<button id=\"csSubmitButton\" type=\"submit\" class=\"cs-submit-btn\" disabled=\"\">\nSubmit Quote Request\n<\/button>\n\n\n<div id=\"csSubmitLockMessage\" class=\"cs-submit-lock-message\">\n\nCheck both acknowledgment boxes above to enable submission.\n\n<\/div>\n\n\n<\/div>\n\n\n<\/form>\n\n\n<\/div>\n\n\n<!-- =========================================================\n     SIDEBAR\n     ========================================================= -->\n\n<aside class=\"cs-quote-sidebar\">\n\n\n<div class=\"cs-sidebar-box\">\n\n<h3>\nCurrent Starting Prices\n<\/h3>\n\n<ul class=\"cs-sidebar-list\">\n\n<li>\n<strong>$125+<\/strong> Mobile Home Washing\n<\/li>\n\n<li>\n<strong>$150+<\/strong> Standard House Washing\n<\/li>\n\n<li>\n<strong>$50+<\/strong> Concrete &amp; Hard Surfaces\n<\/li>\n\n<li>\n<strong>$10<\/strong> Per Trash Can\n<\/li>\n\n<li>\n<strong>$20<\/strong> Standard Passenger Car\n<\/li>\n\n<li>\n<strong>+$25<\/strong> Eligible Shed With Home Wash\n<\/li>\n\n<\/ul>\n\n<\/div>\n\n\n<div class=\"cs-sidebar-box\">\n\n<h3>\nTravel Charges\n<\/h3>\n\n<ul class=\"cs-sidebar-list\">\n\n<li>\n<strong>0\u20135 miles:<\/strong> Free\n<\/li>\n\n<li>\n<strong>5.1\u201310:<\/strong> $5\n<\/li>\n\n<li>\n<strong>10.1\u201315:<\/strong> $10\n<\/li>\n\n<li>\n<strong>15.1\u201320:<\/strong> $15\n<\/li>\n\n<li>\n<strong>20.1\u201325:<\/strong> $20\n<\/li>\n\n<li>\nEach additional 5-mile range adds $5.\n<\/li>\n\n<\/ul>\n\n<\/div>\n\n\n<div class=\"cs-sidebar-box cs-sidebar-dark\">\n\n<h3>\nWhat Happens Next?\n<\/h3>\n\n<p>\n\nAfter your request is submitted, C Spray will review the\ninformation you provided.\n\nWe&#8217;ll contact you to discuss the job, confirm pricing and\ndetermine an appointment time if you&#8217;d like to move forward.\n\n<\/p>\n\n<\/div>\n\n\n<\/aside>\n\n\n<\/div>\n\n<\/section>\n\n\n<!-- =========================================================\n     FOOTER\n     ========================================================= -->\n\n<footer class=\"cs-quote-footer\">\n\n<div class=\"cs-quote-container\">\n\n\n<div class=\"cs-quote-footer-grid\">\n\n\n<div>\n\n<img decoding=\"async\" class=\"cs-quote-footer-logo\" src=\"https:\/\/cspraypw.com\/wp-content\/uploads\/2026\/08\/ChatGPT-Image-Aug-15-2026-10_56_03-PM.png\" alt=\"C Spray Pressure Washing\">\n\n<p>\n\nExterior cleaning for mobile homes, houses, concrete,\ntrash cans, vehicles and other compatible surfaces.\n\n<\/p>\n\n<\/div>\n\n\n<div>\n\n<h4>\nQUICK LINKS\n<\/h4>\n\n<a href=\"\/home\/\">\nHome\n<\/a>\n\n<a href=\"\/services\/\">\nServices\n<\/a>\n\n<a href=\"\/about\/\">\nAbout\n<\/a>\n\n<a href=\"\/get-a-quote\/\">\nGet a Quote\n<\/a>\n\n<\/div>\n\n\n<div>\n\n<h4>\nINFORMATION\n<\/h4>\n\n<a href=\"\/terms\/\">\nTerms of Service\n<\/a>\n\n<a href=\"\/privacy-policy\/\">\nPrivacy Policy\n<\/a>\n\n<\/div>\n\n\n<\/div>\n\n\n<div class=\"cs-quote-copyright\">\n\n\u00a9 2026 C Spray Pressure Washing.\nAll rights reserved.\n\n<\/div>\n\n\n<\/div>\n\n<\/footer>\n\n\n<\/div>\n\n\n<script>\n\ndocument.addEventListener(\n    \"DOMContentLoaded\",\n    function() {\n\n\n        \/* =====================================================\n           ELEMENTS\n           ===================================================== *\/\n\n        const form =\n            document.getElementById(\n                \"csQuoteForm\"\n            );\n\n        const serviceBoxes =\n            document.querySelectorAll(\n                '#csQuoteForm input[name=\"services[]\"]'\n            );\n\n        const serviceSummary =\n            document.getElementById(\n                \"csServiceSummary\"\n            );\n\n        const selectedServices =\n            document.getElementById(\n                \"csSelectedServices\"\n            );\n\n        const conditionAck =\n            document.getElementById(\n                \"csConditionAck\"\n            );\n\n        const quoteAck =\n            document.getElementById(\n                \"csQuoteAck\"\n            );\n\n        const submitButton =\n            document.getElementById(\n                \"csSubmitButton\"\n            );\n\n        const submitLockMessage =\n            document.getElementById(\n                \"csSubmitLockMessage\"\n            );\n\n\n        const vehicleCount =\n            document.getElementById(\n                \"cs_vehicle_count\"\n            );\n\n        const vehicleFields =\n            document.getElementById(\n                \"csVehicleFields\"\n            );\n\n        const vehicleStartingPrice =\n            document.getElementById(\n                \"csVehicleStartingPrice\"\n            );\n\n        const trashEmptyRadios =\n            document.querySelectorAll(\n                'input[name=\"trash_empty\"]'\n            );\n\n        const trashEmptyWarning =\n            document.getElementById(\n                \"csTrashEmptyWarning\"\n            );\n\n        const trashEmptyAck =\n            document.getElementById(\n                \"csTrashEmptyAck\"\n            );\n\n\n\n        \/* =====================================================\n           MULTI-VEHICLE FIELDS\n           ===================================================== *\/\n\n        let renderedVehicleCount = 0;\n\n\n        function createVehicleCard(number) {\n\n            const index = number - 1;\n            const card = document.createElement(\"div\");\n\n            card.className = \"cs-vehicle-card\";\n            card.dataset.vehicleNumber = number;\n\n            card.innerHTML = `\n\n                <div class=\"cs-vehicle-card-title\">\n                    <span>\ud83d\ude97<\/span>\n                    <span>Vehicle ${number}<\/span>\n                <\/div>\n\n                <div class=\"cs-field-grid\">\n\n                    <div class=\"cs-field\">\n                        <label for=\"cs_vehicle_${number}_year\">Year<\/label>\n                        <input\n                            id=\"cs_vehicle_${number}_year\"\n                            type=\"text\"\n                            name=\"vehicles[${index}][year]\"\n                            placeholder=\"Example: 2019\"\n                        >\n                    <\/div>\n\n                    <div class=\"cs-field\">\n                        <label for=\"cs_vehicle_${number}_make\">Make<\/label>\n                        <input\n                            id=\"cs_vehicle_${number}_make\"\n                            type=\"text\"\n                            name=\"vehicles[${index}][make]\"\n                            placeholder=\"Example: Ford\"\n                        >\n                    <\/div>\n\n                    <div class=\"cs-field\">\n                        <label for=\"cs_vehicle_${number}_model\">Model<\/label>\n                        <input\n                            id=\"cs_vehicle_${number}_model\"\n                            type=\"text\"\n                            name=\"vehicles[${index}][model]\"\n                            placeholder=\"Example: Fusion\"\n                        >\n                    <\/div>\n\n                    <div class=\"cs-field\">\n                        <label for=\"cs_vehicle_${number}_type\">Vehicle Type<\/label>\n                        <select\n                            id=\"cs_vehicle_${number}_type\"\n                            name=\"vehicles[${index}][type]\"\n                            class=\"cs-vehicle-type-select\"\n                        >\n                            <option value=\"\">Select one<\/option>\n                            <option value=\"Car\">Car<\/option>\n                            <option value=\"SUV\">SUV<\/option>\n                            <option value=\"Pickup Truck\">Pickup truck<\/option>\n                            <option value=\"Work Vehicle\">Work vehicle<\/option>\n                            <option value=\"Trailer\">Trailer<\/option>\n                            <option value=\"Other\">Other<\/option>\n                        <\/select>\n                    <\/div>\n\n                    <div class=\"cs-field cs-field-full cs-vehicle-other-type\">\n                        <label for=\"cs_vehicle_${number}_other_type\">Please Describe the Vehicle Type *<\/label>\n                        <input\n                            id=\"cs_vehicle_${number}_other_type\"\n                            type=\"text\"\n                            name=\"vehicles[${index}][other_type]\"\n                            placeholder=\"Example: Motorcycle, ATV, golf cart, box truck, etc.\"\n                        >\n                        <span class=\"cs-help\">\n                            This field appears only when \u201cOther\u201d is selected above.\n                        <\/span>\n                    <\/div>\n\n                <\/div>\n\n                <div class=\"cs-question\">\n                    <strong>\n                        Does this vehicle have severe rust, rust-through or heavily flaking rust?\n                    <\/strong>\n                    <div class=\"cs-radio-group\">\n                        <label><input type=\"radio\" name=\"vehicles[${index}][rust]\" value=\"Yes\"> Yes<\/label>\n                        <label><input type=\"radio\" name=\"vehicles[${index}][rust]\" value=\"No\"> No<\/label>\n                        <label><input type=\"radio\" name=\"vehicles[${index}][rust]\" value=\"Unsure\"> Unsure<\/label>\n                    <\/div>\n                <\/div>\n\n                <div class=\"cs-question\">\n                    <strong>\n                        Does this vehicle have loose or severely peeling paint?\n                    <\/strong>\n                    <div class=\"cs-radio-group\">\n                        <label><input type=\"radio\" name=\"vehicles[${index}][paint]\" value=\"Yes\"> Yes<\/label>\n                        <label><input type=\"radio\" name=\"vehicles[${index}][paint]\" value=\"No\"> No<\/label>\n                        <label><input type=\"radio\" name=\"vehicles[${index}][paint]\" value=\"Unsure\"> Unsure<\/label>\n                    <\/div>\n                <\/div>\n\n                <div class=\"cs-question\">\n                    <strong>\n                        Does this vehicle have loose trim, moldings or body panels?\n                    <\/strong>\n                    <div class=\"cs-radio-group\">\n                        <label><input type=\"radio\" name=\"vehicles[${index}][loose_parts]\" value=\"Yes\"> Yes<\/label>\n                        <label><input type=\"radio\" name=\"vehicles[${index}][loose_parts]\" value=\"No\"> No<\/label>\n                        <label><input type=\"radio\" name=\"vehicles[${index}][loose_parts]\" value=\"Unsure\"> Unsure<\/label>\n                    <\/div>\n                <\/div>\n\n                <div class=\"cs-question\">\n                    <strong>\n                        Are there known water leaks through windows, doors, trunk or other body openings?\n                    <\/strong>\n                    <div class=\"cs-radio-group\">\n                        <label><input type=\"radio\" name=\"vehicles[${index}][leaks]\" value=\"Yes\"> Yes<\/label>\n                        <label><input type=\"radio\" name=\"vehicles[${index}][leaks]\" value=\"No\"> No<\/label>\n                        <label><input type=\"radio\" name=\"vehicles[${index}][leaks]\" value=\"Unsure\"> Unsure<\/label>\n                    <\/div>\n                <\/div>\n\n            `;\n\n            const typeSelect = card.querySelector(\n                \".cs-vehicle-type-select\"\n            );\n\n            const otherTypeWrap = card.querySelector(\n                \".cs-vehicle-other-type\"\n            );\n\n            const otherTypeInput = card.querySelector(\n                `input[name=\"vehicles[${index}][other_type]\"]`\n            );\n\n            function updateOtherVehicleType() {\n\n                const isOther =\n                    typeSelect &&\n                    typeSelect.value === \"Other\";\n\n                const vehicleServiceSelected =\n                    Array.from(serviceBoxes).some(\n                        function(box) {\n                            return (\n                                box.checked &&\n                                box.value === \"Touchless Vehicle Washing\"\n                            );\n                        }\n                    );\n\n                if (otherTypeWrap) {\n                    otherTypeWrap.classList.toggle(\n                        \"cs-show\",\n                        isOther\n                    );\n                }\n\n                if (otherTypeInput) {\n                    otherTypeInput.required =\n                        isOther &&\n                        vehicleServiceSelected;\n\n                    if (!isOther) {\n                        otherTypeInput.value = \"\";\n                    }\n                }\n            }\n\n            if (typeSelect) {\n                typeSelect.addEventListener(\n                    \"change\",\n                    updateOtherVehicleType\n                );\n            }\n\n            updateOtherVehicleType();\n\n            return card;\n        }\n\n\n        function updateVehicleFields() {\n\n            if (!vehicleCount || !vehicleFields) {\n                return;\n            }\n\n            let desiredCount = parseInt(\n                vehicleCount.value,\n                10\n            );\n\n            if (\n                Number.isNaN(desiredCount) ||\n                desiredCount < 1\n            ) {\n                desiredCount = 1;\n            }\n\n            if (desiredCount > 10) {\n                desiredCount = 10;\n            }\n\n\n            while (\n                renderedVehicleCount < desiredCount\n            ) {\n\n                renderedVehicleCount++;\n\n                vehicleFields.appendChild(\n                    createVehicleCard(\n                        renderedVehicleCount\n                    )\n                );\n            }\n\n\n            while (\n                renderedVehicleCount > desiredCount\n            ) {\n\n                const card =\n                    vehicleFields.querySelector(\n                        '.cs-vehicle-card[data-vehicle-number=\"' +\n                        renderedVehicleCount +\n                        '\"]'\n                    );\n\n                if (card) {\n                    card.remove();\n                }\n\n                renderedVehicleCount--;\n            }\n\n\n            if (vehicleStartingPrice) {\n\n                if (desiredCount === 1) {\n                    vehicleStartingPrice.textContent =\n                        \"Starting price: $20+ for one standard passenger car. Final pricing depends on vehicle type and condition.\";\n                } else {\n                    vehicleStartingPrice.textContent =\n                        \"Starting passenger-car pricing: $\" +\n                        (desiredCount * 20) +\n                        \"+ for \" +\n                        desiredCount +\n                        \" vehicles. Final pricing depends on each vehicle's type and condition.\";\n                }\n            }\n        }\n\n\n        if (vehicleCount) {\n            vehicleCount.addEventListener(\n                \"change\",\n                updateVehicleFields\n            );\n        }\n\n\n        updateVehicleFields();\n\n\n        \/* =====================================================\n           TRASH CAN EMPTY REQUIREMENT\n           ===================================================== *\/\n\n        function updateTrashEmptyRequirement() {\n\n            const trashServiceSelected =\n                Array.from(serviceBoxes).some(\n                    function(box) {\n                        return (\n                            box.checked &&\n                            box.value === \"Trash Can Cleaning\"\n                        );\n                    }\n                );\n\n            const selectedTrashEmpty =\n                document.querySelector(\n                    'input[name=\"trash_empty\"]:checked'\n                );\n\n            const requiresAcknowledgment =\n                trashServiceSelected &&\n                selectedTrashEmpty &&\n                selectedTrashEmpty.value === \"No\";\n\n            if (trashEmptyWarning) {\n                trashEmptyWarning.classList.toggle(\n                    \"cs-show\",\n                    Boolean(requiresAcknowledgment)\n                );\n            }\n\n            if (trashEmptyAck) {\n                trashEmptyAck.required =\n                    Boolean(requiresAcknowledgment);\n\n                if (!requiresAcknowledgment) {\n                    trashEmptyAck.checked = false;\n                }\n            }\n        }\n\n        trashEmptyRadios.forEach(\n            function(radio) {\n                radio.addEventListener(\n                    \"change\",\n                    updateTrashEmptyRequirement\n                );\n            }\n        );\n\n        updateTrashEmptyRequirement();\n\n\n        \/* =====================================================\n           SERVICE DROPDOWN \/ DYNAMIC QUESTIONS\n           ===================================================== *\/\n\n        function updateServices() {\n\n            const selected = [];\n\n            serviceBoxes.forEach(\n                function(box) {\n\n                    const target =\n                        document.getElementById(\n                            box.dataset.target\n                        );\n\n                    if (box.checked) {\n\n                        selected.push(\n                            box.dataset.label\n                        );\n\n                        if (target) {\n                            target.classList.add(\n                                \"cs-show\"\n                            );\n                        }\n\n                    } else {\n\n                        if (target) {\n                            target.classList.remove(\n                                \"cs-show\"\n                            );\n                        }\n\n                    }\n\n                }\n            );\n\n\n            if (vehicleFields) {\n                vehicleFields.querySelectorAll(\n                    \".cs-vehicle-type-select\"\n                ).forEach(\n                    function(select) {\n                        select.dispatchEvent(\n                            new Event(\"change\")\n                        );\n                    }\n                );\n            }\n\n\n            updateTrashEmptyRequirement();\n\n\n            if (selected.length === 0) {\n\n                serviceSummary.textContent =\n                    \"Choose one or more services\";\n\n                selectedServices.innerHTML =\n                    \"<strong>No services selected yet.<\/strong>\";\n\n            } else if (selected.length === 1) {\n\n                serviceSummary.textContent =\n                    selected[0];\n\n                selectedServices.innerHTML =\n                    \"<strong>Selected:<\/strong> \" +\n                    selected[0];\n\n            } else {\n\n                serviceSummary.textContent =\n                    selected.length +\n                    \" services selected\";\n\n                selectedServices.innerHTML =\n                    \"<strong>Selected:<\/strong> \" +\n                    selected.join(\", \");\n\n            }\n\n        }\n\n\n        serviceBoxes.forEach(\n            function(box) {\n\n                box.addEventListener(\n                    \"change\",\n                    updateServices\n                );\n\n            }\n        );\n\n\n        updateServices();\n\n\n        \/* =====================================================\n           BOTH ACKNOWLEDGMENTS REQUIRED\n           ===================================================== *\/\n\n        function updateSubmitButton() {\n\n            const bothChecked =\n                conditionAck.checked &&\n                quoteAck.checked;\n\n            submitButton.disabled =\n                !bothChecked;\n\n\n            if (bothChecked) {\n\n                submitLockMessage.textContent =\n                    \"\u2713 Required acknowledgments completed.\";\n\n                submitLockMessage.classList.add(\n                    \"cs-ready\"\n                );\n\n            } else {\n\n                submitLockMessage.textContent =\n                    \"Check both acknowledgment boxes above to enable submission.\";\n\n                submitLockMessage.classList.remove(\n                    \"cs-ready\"\n                );\n\n            }\n\n        }\n\n\n        conditionAck.addEventListener(\n            \"change\",\n            updateSubmitButton\n        );\n\n        quoteAck.addEventListener(\n            \"change\",\n            updateSubmitButton\n        );\n\n\n        updateSubmitButton();\n\n\n        \/* =====================================================\n           FINAL SUBMISSION VALIDATION\n           ===================================================== *\/\n\n        form.addEventListener(\n            \"submit\",\n            function(event) {\n\n\n                \/* ---------------------------------------------\n                   REQUIRE AT LEAST ONE SERVICE\n                   --------------------------------------------- *\/\n\n                const selected =\n                    document.querySelectorAll(\n                        '#csQuoteForm input[name=\"services[]\"]:checked'\n                    );\n\n\n                if (selected.length === 0) {\n\n                    event.preventDefault();\n\n                    alert(\n                        \"Please select at least one service before submitting your quote request.\"\n                    );\n\n                    const dropdown =\n                        document.getElementById(\n                            \"csServiceDropdown\"\n                        );\n\n                    if (dropdown) {\n                        dropdown.open = true;\n\n                        dropdown.scrollIntoView({\n                            behavior:\"smooth\",\n                            block:\"center\"\n                        });\n                    }\n\n                    return false;\n\n                }\n\n\n                \/* ---------------------------------------------\n                   REQUIRE TRASH-CAN EMPTY ACKNOWLEDGMENT\n                   WHEN \"NO\" IS SELECTED\n                   --------------------------------------------- *\/\n\n                const trashServiceSelected =\n                    Array.from(serviceBoxes).some(\n                        function(box) {\n                            return (\n                                box.checked &&\n                                box.value === \"Trash Can Cleaning\"\n                            );\n                        }\n                    );\n\n                const selectedTrashEmpty =\n                    document.querySelector(\n                        'input[name=\"trash_empty\"]:checked'\n                    );\n\n                if (\n                    trashServiceSelected &&\n                    selectedTrashEmpty &&\n                    selectedTrashEmpty.value === \"No\" &&\n                    trashEmptyAck &&\n                    !trashEmptyAck.checked\n                ) {\n                    event.preventDefault();\n\n                    alert(\n                        \"Please confirm that you understand all trash and recycling cans must be completely emptied before C Spray arrives.\"\n                    );\n\n                    if (trashEmptyWarning) {\n                        trashEmptyWarning.scrollIntoView({\n                            behavior:\"smooth\",\n                            block:\"center\"\n                        });\n                    }\n\n                    trashEmptyAck.focus();\n                    return false;\n                }\n\n\n                \/* ---------------------------------------------\n                   REQUIRE BOTH BOTTOM CHECKBOXES\n                   --------------------------------------------- *\/\n\n                if (\n                    !conditionAck.checked ||\n                    !quoteAck.checked\n                ) {\n\n                    event.preventDefault();\n\n                    submitButton.disabled = true;\n\n                    alert(\n                        \"Both acknowledgment boxes must be checked before your quote request can be submitted.\"\n                    );\n\n                    conditionAck.scrollIntoView({\n                        behavior:\"smooth\",\n                        block:\"center\"\n                    });\n\n                    return false;\n\n                }\n\n\n            }\n        );\n\n\n        \/* =====================================================\n           SUCCESS \/ ERROR URL MESSAGE\n           ===================================================== *\/\n\n        const params =\n            new URLSearchParams(\n                window.location.search\n            );\n\n        const quoteStatus =\n            params.get(\"quote\");\n\n        const statusBox =\n            document.getElementById(\n                \"csQuoteStatus\"\n            );\n\n\n        if (quoteStatus === \"sent\") {\n\n            const preferredContact =\n                (params.get(\"contact\") || \"\").toLowerCase();\n\n            const overlay =\n                document.createElement(\"div\");\n\n            overlay.className =\n                \"cs-confirm-overlay\";\n\n            overlay.setAttribute(\n                \"role\",\n                \"dialog\"\n            );\n\n            overlay.setAttribute(\n                \"aria-modal\",\n                \"true\"\n            );\n\n            overlay.setAttribute(\n                \"aria-labelledby\",\n                \"csConfirmTitle\"\n            );\n\n            let emailReminder = \"\";\n\n            if (preferredContact === \"email\") {\n                emailReminder = `\n                    <p class=\"cs-confirm-email-note\">\n                        <strong>Email selected as your preferred contact method:<\/strong><br>\n                        If you have not received a response from C Spray within 1\u20132 days, please check your spam or junk folder in case our message was filtered there.\n                    <\/p>\n                `;\n            }\n\n            overlay.innerHTML = `\n                <div class=\"cs-confirm-card\">\n                    <div class=\"cs-confirm-icon\" aria-hidden=\"true\">\u2713<\/div>\n                    <h2 id=\"csConfirmTitle\">Quote Request Received<\/h2>\n                    <p>\n                        Thank you! Your quote request was sent successfully.\n                        C Spray will review the information you provided and contact you regarding pricing, availability, and any additional questions.\n                    <\/p>\n                    ${emailReminder}\n                    <button type=\"button\" class=\"cs-confirm-button\" id=\"csConfirmClose\">\n                        Close\n                    <\/button>\n                <\/div>\n            `;\n\n            document.body.appendChild(overlay);\n            document.body.classList.add(\"cs-confirm-open\");\n\n            const closeButton =\n                document.getElementById(\n                    \"csConfirmClose\"\n                );\n\n            function closeConfirmation() {\n                overlay.remove();\n                document.body.classList.remove(\n                    \"cs-confirm-open\"\n                );\n\n                const cleanUrl =\n                    new URL(window.location.href);\n\n                cleanUrl.searchParams.delete(\"quote\");\n                cleanUrl.searchParams.delete(\"contact\");\n\n                window.history.replaceState(\n                    {},\n                    document.title,\n                    cleanUrl.pathname +\n                        cleanUrl.search +\n                        cleanUrl.hash\n                );\n            }\n\n            if (closeButton) {\n                closeButton.addEventListener(\n                    \"click\",\n                    closeConfirmation\n                );\n\n                closeButton.focus();\n            }\n\n            document.addEventListener(\n                \"keydown\",\n                function csConfirmEscape(event) {\n                    if (event.key === \"Escape\") {\n                        closeConfirmation();\n                        document.removeEventListener(\n                            \"keydown\",\n                            csConfirmEscape\n                        );\n                    }\n                }\n            );\n\n        }\n\n\n        if (\n            quoteStatus === \"error\" &&\n            statusBox\n        ) {\n\n            statusBox.className =\n                \"cs-status cs-status-error\";\n\n            statusBox.innerHTML =\n                \"We couldn't send your quote request. Please try again. If the problem continues, contact C Spray directly.\";\n\n        }\n\n\n    }\n);\n\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Home Services About Terms Privacy Get a Quote Free Quote Request Tell Us What You Need Cleaned. Provide a few details about the service you need. C Spray will review your request and contact you with pricing, availability and any additional questions. Request Your Quote Let&#8217;s Get Some Details Fields marked with an asterisk (*) [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-596852","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/cspraypw.com\/home\/wp-json\/wp\/v2\/pages\/596852","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cspraypw.com\/home\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/cspraypw.com\/home\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/cspraypw.com\/home\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cspraypw.com\/home\/wp-json\/wp\/v2\/comments?post=596852"}],"version-history":[{"count":9,"href":"https:\/\/cspraypw.com\/home\/wp-json\/wp\/v2\/pages\/596852\/revisions"}],"predecessor-version":[{"id":1076849,"href":"https:\/\/cspraypw.com\/home\/wp-json\/wp\/v2\/pages\/596852\/revisions\/1076849"}],"wp:attachment":[{"href":"https:\/\/cspraypw.com\/home\/wp-json\/wp\/v2\/media?parent=596852"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}