{"id":11251,"date":"2025-04-24T17:12:44","date_gmt":"2025-04-24T17:12:44","guid":{"rendered":"https:\/\/shinykeycleaning.com\/?page_id=11251"},"modified":"2026-03-23T18:00:08","modified_gmt":"2026-03-23T18:00:08","slug":"booking","status":"publish","type":"page","link":"https:\/\/shinykeycleaning.com\/es\/booking\/","title":{"rendered":"Formulario de Reserva"},"content":{"rendered":"<style>.elementor-11251 .elementor-element.elementor-element-588010e{--display:flex;--flex-direction:column;--container-widget-width:100%;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--flex-wrap-mobile:wrap;--gap:0px 0px;--row-gap:0px;--column-gap:0px;--overflow:hidden;}.elementor-11251 .elementor-element.elementor-element-f22432a{--display:flex;}.elementor-11251 .elementor-element.elementor-element-2fc3530{--display:flex;--flex-direction:column;--container-widget-width:100%;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--flex-wrap-mobile:wrap;}.elementor-11251 .elementor-element.elementor-element-1bba7bb > .elementor-widget-container{padding:20px 0px 0px 0px;}.elementor-11251 .elementor-element.elementor-element-17f0259{text-align:center;}.elementor-11251 .elementor-element.elementor-element-17f0259 .elementor-heading-title{font-family:\"Bricolage Grotesque\", Sans-serif;font-size:38px;font-weight:600;color:#0D8FD6;}.elementor-11251 .elementor-element.elementor-element-0060aaf{--display:flex;}.elementor-11251 .elementor-element.elementor-element-e63cf4a{--display:flex;}.elementor-11251 .elementor-element.elementor-element-e63cf4a.e-con{--flex-grow:0;--flex-shrink:0;}:root{--page-title-display:none;}@media(max-width:1024px) and (min-width:768px){.elementor-11251 .elementor-element.elementor-element-e63cf4a{--width:854px;}}@media(max-width:767px){.elementor-11251 .elementor-element.elementor-element-17f0259{text-align:center;}}<\/style>\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"11251\" class=\"elementor elementor-11251\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-588010e e-flex e-con-boxed e-con e-parent\" data-id=\"588010e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-f22432a e-con-full e-flex e-con e-child\" data-id=\"f22432a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-2fc3530 e-con-full e-flex e-con e-child\" data-id=\"2fc3530\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1bba7bb elementor-widget elementor-widget-image\" data-id=\"1bba7bb\" data-element_type=\"widget\" data-e-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:\/\/shinykeycleaning.com\/\">\n\t\t\t\t\t\t\t<img decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/shinykeycleaning.com\/wp-content\/uploads\/2024\/09\/LOGO-LETTR-500PX-TR-150x150.png\" class=\"attachment-thumbnail size-thumbnail wp-image-4467\" alt=\"\" srcset=\"https:\/\/shinykeycleaning.com\/wp-content\/uploads\/2024\/09\/LOGO-LETTR-500PX-TR-150x150.png 150w, https:\/\/shinykeycleaning.com\/wp-content\/uploads\/2024\/09\/LOGO-LETTR-500PX-TR-300x300.png 300w, https:\/\/shinykeycleaning.com\/wp-content\/uploads\/2024\/09\/LOGO-LETTR-500PX-TR.png 500w\" sizes=\"(max-width: 150px) 100vw, 150px\" \/>\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<div class=\"elementor-element elementor-element-17f0259 elementor-widget elementor-widget-heading\" data-id=\"17f0259\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><a href=\"https:\/\/shinykeycleaning.com\/\">Booking Form<\/a><\/h2>\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-0060aaf e-con-full e-flex e-con e-child\" data-id=\"0060aaf\" data-element_type=\"container\" data-e-type=\"container\">\n\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-e63cf4a e-con-full e-flex e-con e-parent\" data-id=\"e63cf4a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1d25d6c elementor-widget elementor-widget-html\" data-id=\"1d25d6c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<head>\r\n    <meta charset=\"UTF-8\">\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n    <title>Cleaning Price Calculator<\/title>\r\n    <script src=\"https:\/\/cdn.tailwindcss.com\"><\/script>\r\n\r\n    <style>\r\n        \/* \u2014\u2014\u2014 BASE STYLES \u2014\u2014\u2014 *\/\r\n        body {\r\n            font-family: 'Bricolage Grotesque', sans-serif;\r\n            background: #FF8AAD; \r\n        }\r\n\r\n        \/* 1. T\u00cdTULOS PRINCIPALES (H2) Y ETIQUETAS DE PRECIO (TEXTO) - AZUL OSCURO #003B59 *\/\r\n        h2, \r\n        .thank-you-message h2,\r\n        .price-summary p,        \/* Texto \"Estimated Price:\" *\/\r\n        .price-display           \/* Texto \"Estimated Final Price:\" *\/\r\n        {\r\n            color: #003B59 !important;\r\n        }\r\n\r\n        \/* AJUSTE DE PESO (WEIGHT) PARA QUE \"ESTIMATED PRICE\" SEA IGUAL A \"FINAL PRICE\" *\/\r\n        .price-summary p {\r\n            font-size: 1.25rem;\r\n            font-weight: 700 !important; \/* BOLD para igualar al Final Price *\/\r\n        }\r\n\r\n        \/* 2. SUBT\u00cdTULOS, ETIQUETAS Y VALORES DE PRECIO (N\u00daMEROS) - AZUL BRILLANTE #0D8FD6 *\/\r\n        h3, \r\n        label,\r\n        .info-block p strong,    \r\n        .info-block em,          \r\n        .summary-title,\r\n        .price-summary span,     \/* VALOR DEL PRECIO EN PASO 1 ($0.00) *\/\r\n        #finalEstimatedPrice     \/* VALOR DEL PRECIO EN PASO 2 *\/\r\n        { \r\n            color: #0D8FD6 !important; \r\n            font-weight: 600;\r\n        }\r\n\r\n        \/* Texto general de listas en gris *\/\r\n        .info-block ul, \r\n        .info-block li { \r\n            color: #6b7280; \r\n        }\r\n\r\n        \/* Step Indicator *\/\r\n        .step-indicator { display: flex; flex-wrap: wrap; justify-content: center; margin-bottom: 2rem; padding: .5rem; background: #e2e8f0; border-radius: .5rem; gap: 0.5rem; }\r\n        .step-indicator-item { padding: .5rem 1rem; border-radius: .375rem; font-weight: 500; color: #0D8FD6; cursor: default; transition: .3s; text-align: center; flex-grow: 1; flex-basis: 150px; }\r\n        .step-indicator-item.active { background: #0D8FD6; color: #fff; font-weight: 600; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -1px rgba(0, 0, 0, .06); }\r\n\r\n        \/* Form steps *\/\r\n        .form-step { display: none; background: #fff; padding: 2rem; border-radius: .75rem; box-shadow: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -2px #0D8FD6; }\r\n        .form-step.active { display: block; }\r\n\r\n        \/* Options *\/\r\n        .service-option { display: flex; align-items: center; gap: .75rem; padding: 1rem; border: .1px solid #0D8FD6; border-radius: .5rem; margin-bottom: 1rem; transition: .3s; }\r\n        .service-option:hover { border-color: #FF8AAD; box-shadow: 0 4px 12px rgba(0, 0, 0, .08); }\r\n        .service-option label { flex-grow: 1; margin: 0; cursor: pointer; }\r\n\r\n        \/* --- ESTILOS PERSONALIZADOS RADIO Y CHECKBOX --- *\/\r\n        input[type=\"radio\"], \r\n        input[type=\"checkbox\"] {\r\n            -webkit-appearance: none; \r\n            appearance: none; \r\n            background-color: #fff;\r\n            margin: 0;\r\n            cursor: pointer;\r\n            outline: none !important;\r\n            border: 2px solid #e5e7eb;\r\n            position: relative;\r\n            transition: all 0.2s ease-in-out;\r\n            width: 1.25rem;\r\n            height: 1.25rem;\r\n            display: inline-block;\r\n            vertical-align: middle;\r\n            flex-shrink: 0;\r\n        }\r\n        \r\n        input[type=\"radio\"] { border-radius: 50%; }\r\n        input[type=\"checkbox\"] { border-radius: 4px; }\r\n\r\n        input[type=\"radio\"]:checked,\r\n        input[type=\"checkbox\"]:checked {\r\n            background-color: #fff;\r\n            border-color: #FF8AAD;\r\n        }\r\n\r\n        input[type=\"radio\"]:checked::after {\r\n            content: '';\r\n            position: absolute;\r\n            top: 50%;\r\n            left: 50%;\r\n            transform: translate(-50%, -50%);\r\n            width: 0.6rem; \r\n            height: 0.6rem;\r\n            border-radius: 50%;\r\n            background-color: #FF8AAD; \r\n        }\r\n\r\n        input[type=\"checkbox\"]:checked::after {\r\n            content: '';\r\n            position: absolute;\r\n            top: 40%;\r\n            left: 50%;\r\n            transform: translate(-50%, -50%) rotate(45deg);\r\n            width: 0.35rem;\r\n            height: 0.6rem;\r\n            border: solid #FF8AAD; \r\n            border-width: 0 2px 2px 0;\r\n        }\r\n\r\n        input[type=\"radio\"]:hover, \r\n        input[type=\"checkbox\"]:hover,\r\n        input[type=\"radio\"]:focus, \r\n        input[type=\"checkbox\"]:focus {\r\n            border-color: #FF8AAD; \r\n            box-shadow: 0 0 0 4px rgba(255, 138, 173, 0.25); \r\n        }\r\n\r\n        \/* Responsive Columns *\/\r\n        .customer-type-options, .service-type-options, .glass-options, .pets-options, .referral-options { display: flex; flex-direction: column; gap: 1rem; }\r\n        .customer-type-options .service-option, .service-type-options .service-option, .pets-options .service-option, .glass-options .service-option, .referral-options .service-option { flex: 1 1 100%; margin-bottom: 0; }\r\n        \r\n        .area-options { display: flex; flex-direction: column; gap: 1rem; }\r\n        .count-input { width: 5rem; margin-left: auto; }\r\n\r\n        \/* Price Summary Container *\/\r\n        .price-summary { margin-top: 1.5rem; padding: 1rem; background: #f9fafb; border-radius: .5rem; border: 1px solid #e5e7eb; text-align: right; }\r\n        \r\n        .hidden-element { display: none; }\r\n        .honeypot { opacity: 0; position: absolute; top: 0; left: 0; height: 0; width: 0; z-index: -1; }\r\n\r\n        \/* Navigation *\/\r\n        .nav-buttons { margin-top: 2rem; display: flex; justify-content: space-between; }\r\n        .nav-buttons button { padding: .75rem 1.5rem; border-radius: .5rem; font-weight: 500; box-shadow: 0 2px 4px rgba(0, 0, 0, .1); transition: .3s; }\r\n        .nav-buttons button:active { transform: translateY(1px); }\r\n        .next-btn, .prev-btn, .accept-btn { border: .5px solid #fff; background: #FF8AAD; color: #fff; }\r\n        .next-btn:hover, .prev-btn:hover, .accept-btn:hover { border: .2px solid #FF8AAD; background: #fff; color: #FF8AAD; }\r\n\r\n        \/* Inputs *\/\r\n        input[type=text], input[type=email], input[type=tel], input[type=number], textarea { width: 100%; padding: .75rem; border: 1px solid #d1d5db; border-radius: .375rem; margin-top: .25rem; margin-bottom: 1rem; }\r\n        input:focus, textarea:focus { border-color: #3b82f6; outline: none; }\r\n        \r\n        .error-message { color: #ef4444; font-size: .875rem; margin-top: -.75rem; margin-bottom: 1rem; }\r\n\r\n        \/* Thank You & Info *\/\r\n        .thank-you-message { text-align: center; padding: 2rem; }\r\n        .thank-you-message h2 { font-size: 1.75rem; margin-bottom: 1rem; }\r\n        .thank-you-message p { color: #4b5563; margin-bottom: 1.5rem; }\r\n        .whatsapp-button { display: inline-flex; align-items: center; background: #25D366; color: #fff; padding: .75rem 1.5rem; border-radius: .5rem; text-decoration: none; font-weight: 500; }\r\n        .whatsapp-button:hover { background: #1DAE50; }\r\n        .info-block { background: #eff6ff; border-left: 4px solid #3b82f6; padding: 1rem 1.25rem; border-radius: .5rem; margin-top: 1.5rem; font-size: .95rem; line-height: 1.4; }\r\n        .info-block ul { list-style: disc; margin-left: 1.25rem; margin: .4rem 0; }\r\n        \r\n        @media (min-width: 640px) {\r\n            .step-indicator { flex-wrap: nowrap; justify-content: space-around; }\r\n            .step-indicator-item { flex-grow: 0; flex-basis: auto; }\r\n            .customer-type-options, .service-type-options, .pets-options, .referral-options { flex-direction: row; }\r\n            .customer-type-options .service-option, .service-type-options .service-option, .pets-options .service-option, .referral-options .service-option { flex: 1 1 50%; }\r\n            .glass-options { flex-direction: row; }\r\n            .glass-options .service-option { flex: 1 1 33.33%; }\r\n        }\r\n    <\/style>\r\n<\/head>\r\n<body>\r\n    <div class=\"w-full max-w-2xl mx-auto\">\r\n        <div class=\"step-indicator\">\r\n            <div id=\"indicator-step1\" class=\"step-indicator-item active\">1. Services<\/div>\r\n            <div id=\"indicator-step2\" class=\"step-indicator-item\">2. Estimated Price<\/div>\r\n            <div id=\"indicator-step3\" class=\"step-indicator-item\">3. Personal Information<\/div>\r\n            <div id=\"indicator-step4\" class=\"step-indicator-item\">4. Confirmation<\/div>\r\n        <\/div>\r\n\r\n        <form id=\"cleaningForm\">\r\n            <div id=\"step1\" class=\"form-step active\">\r\n                <h2 class=\"text-2xl font-bold mb-6\">1. What do you need?<\/h2>\r\n\r\n                <div class=\"mb-6\">\r\n                    <h3 class=\"text-lg font-medium mb-3\">Customer Type:<\/h3>\r\n                    <div class=\"customer-type-options\">\r\n                        <div class=\"service-option\">\r\n                            <input type=\"radio\" id=\"vacationRental\" name=\"typeCustomer\" data-nombre=\"Vacation Rental\" value=\"vacationRental\" checked>\r\n                            <label for=\"vacationRental\">Vacation Rental<\/label>\r\n                        <\/div>\r\n                        <div class=\"service-option\">\r\n                            <input type=\"radio\" id=\"owner\" name=\"typeCustomer\" data-nombre=\"Owner\" value=\"owner\">\r\n                            <label for=\"owner\">Owner<\/label>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n\r\n                <div class=\"mb-6\">\r\n                    <h3 class=\"text-lg font-medium mb-3\">Service Type:<\/h3>\r\n                    <div class=\"service-type-options\">\r\n                        <div class=\"service-option\">\r\n                            <input type=\"radio\" id=\"basicCleaning\" name=\"cleaningType\" data-nombre=\"Basic Cleaning\" value=\"basicCleaning\" checked>\r\n                            <label for=\"basicCleaning\">Basic Cleaning<\/label>\r\n                        <\/div>\r\n                        <div class=\"service-option\">\r\n                            <input type=\"radio\" id=\"deepCleaning\" name=\"cleaningType\" data-nombre=\"Deep Cleaning\" value=\"deepCleaning\">\r\n                            <label for=\"deepCleaning\">Deep Cleaning<\/label>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n\r\n                <div class=\"mb-6\">\r\n                    <h3 class=\"text-lg font-medium mb-3\">Areas to include:<\/h3>\r\n                    <div class=\"area-options\">\r\n                        <div class=\"service-option\">\r\n                            <input type=\"checkbox\" id=\"hall\" name=\"areas\" data-nombre=\"Living room\" data-count=\"hallsCount\">\r\n                            <label for=\"hall\">Living room<\/label>\r\n                            <input type=\"number\" id=\"hallsCount\" class=\"count-input\" min=\"1\" value=\"1\" disabled hidden>\r\n                        <\/div>\r\n                        <div class=\"service-option\">\r\n                            <input type=\"checkbox\" id=\"bedroom\" name=\"areas\" data-nombre=\"Bedroom\" data-count=\"bedroomsCount\">\r\n                            <label for=\"bedroom\">Bedroom<\/label>\r\n                            <input type=\"number\" id=\"bedroomsCount\" class=\"count-input\" min=\"1\" value=\"1\" disabled hidden>\r\n                        <\/div>\r\n                        <div class=\"service-option\">\r\n                            <input type=\"checkbox\" id=\"bathroom\" name=\"areas\" data-nombre=\"Bathroom\" data-count=\"bathsCount\">\r\n                            <label for=\"bathroom\">Bathroom<\/label>\r\n                            <input type=\"number\" id=\"bathsCount\" class=\"count-input\" min=\"1\" value=\"1\" disabled hidden>\r\n                        <\/div>\r\n                        <div class=\"service-option\">\r\n                            <input type=\"checkbox\" id=\"kitchen\" name=\"areas\" data-nombre=\"Kitchen\" data-count=\"kitchensCount\">\r\n                            <label for=\"kitchen\">Kitchen<\/label>\r\n                            <input type=\"number\" id=\"kitchensCount\" class=\"count-input\" min=\"1\" value=\"1\" disabled hidden>\r\n                        <\/div>\r\n                        <div class=\"service-option\">\r\n                            <input type=\"checkbox\" id=\"laundry\" name=\"areas\" data-nombre=\"Laundry\" data-count=\"laundryCount\">\r\n                            <label for=\"laundry\">Laundry<\/label>\r\n                            <input type=\"number\" id=\"laundryCount\" class=\"count-input\" min=\"1\" value=\"1\" disabled hidden>\r\n                        <\/div>\r\n                        <div class=\"service-option\">\r\n                            <input type=\"checkbox\" id=\"yard\" name=\"areas\" data-nombre=\"Yard & Outdoor\" data-count=\"yardCount\">\r\n                            <label for=\"yard\">Yard & Outdoor<\/label>\r\n                            <input type=\"number\" id=\"yardCount\" class=\"count-input\" min=\"1\" value=\"1\" disabled hidden>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n\r\n                <div class=\"mb-6\">\r\n                    <h3 class=\"text-lg font-medium mb-3\">Glass Surfaces:<\/h3>\r\n                    <div class=\"glass-options\">\r\n                        <div class=\"service-option\">\r\n                            <input type=\"radio\" id=\"few\" name=\"glassCount\" data-nombre=\"Few\" value=\"few\" checked>\r\n                            <label for=\"few\">Few<\/label>\r\n                        <\/div>\r\n                        <div class=\"service-option\">\r\n                            <input type=\"radio\" id=\"moderate\" name=\"glassCount\" data-nombre=\"Moderate\" value=\"moderate\">\r\n                            <label for=\"moderate\">Moderate<\/label>\r\n                        <\/div>\r\n                        <div class=\"service-option\">\r\n                            <input type=\"radio\" id=\"many\" name=\"glassCount\" data-nombre=\"Many\" value=\"many\">\r\n                            <label for=\"many\">Many<\/label>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n\r\n                <div class=\"mb-6\">\r\n                    <label for=\"direccionZona\">Property Location: <span class=\"text-red-500\">*<\/span><\/label>\r\n                    <input type=\"text\" id=\"direccionZona\" required>\r\n                    <div id=\"direccionZonaError\" class=\"error-message\"><\/div>\r\n                <\/div>\r\n\r\n                <div class=\"mb-6\">\r\n                    <label for=\"detallesAdicionales\">Additional Details:<\/label>\r\n                    <textarea id=\"detallesAdicionales\" rows=\"4\"><\/textarea>\r\n                <\/div>\r\n\r\n                <div class=\"mb-6\">\r\n                    <h3 class=\"text-lg font-medium mb-3\">Are pets allowed?<\/h3>\r\n                    <div class=\"pets-options\">\r\n                        <div class=\"service-option\">\r\n                            <input type=\"radio\" id=\"petsYes\" name=\"hasPets\" data-nombre=\"Yes\" value=\"petsYes\" checked>\r\n                            <label for=\"petsYes\">Yes<\/label>\r\n                        <\/div>\r\n                        <div class=\"service-option\">\r\n                            <input type=\"radio\" id=\"petsNo\" name=\"hasPets\" data-nombre=\"No\" value=\"petsNo\">\r\n                            <label for=\"petsNo\">No<\/label>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n                \r\n                <div class=\"mb-6\">\r\n                    <h3 class=\"text-lg font-medium mb-3\">Referred by a friend or is it a promotional code?<\/h3>\r\n                    <div class=\"referral-options\">\r\n                        <div class=\"service-option\">\r\n                            <input type=\"radio\" id=\"referralYes\" name=\"isReferral\" data-nombre=\"Yes\" value=\"yes\">\r\n                            <label for=\"referralYes\">Yes<\/label>\r\n                        <\/div>\r\n                        <div class=\"service-option\">\r\n                            <input type=\"radio\" id=\"referralNo\" name=\"isReferral\" data-nombre=\"No\" value=\"no\" checked>\r\n                            <label for=\"referralNo\">No<\/label>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n\r\n                <div id=\"referralInputContainer\" class=\"mb-6 hidden-element\">\r\n                    <label class=\"block text-lg font-semibold mb-2\">Referral \/ Promotional Codes<\/label>\r\n                    <div class=\"flex flex-col sm:flex-row gap-4\">\r\n                        <div class=\"flex-1\">\r\n                            <label for=\"referralCode\" class=\"block text-sm font-medium\">Referral Code:<\/label>\r\n                            <input type=\"text\" id=\"referralCode\" name=\"referralCode\" placeholder=\"Enter referral code\" disabled>\r\n                        <\/div>\r\n                        <div class=\"flex-1\">\r\n                            <label for=\"discountCode\" class=\"block text-sm font-medium\">Promotional code:<\/label>\r\n                            <input type=\"text\" id=\"discountCode\" name=\"discountCode\" placeholder=\"Enter promotional code\" disabled>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n\r\n                <div class=\"price-summary\" id=\"priceSummaryStep1\">\r\n                    <p>Estimated Price: <span id=\"estimatedPriceStep1\" style=\"color:#0D8FD6\">$0.00<\/span><\/p>\r\n                <\/div>\r\n                \r\n                <div class=\"honeypot\" aria-hidden=\"true\">\r\n                    <label for=\"website_url\">Website<\/label>\r\n                    <input type=\"text\" id=\"website_url\" name=\"website_url\" tabindex=\"-1\" autocomplete=\"off\">\r\n                <\/div>\r\n\r\n                <div class=\"nav-buttons\">\r\n                    <button type=\"button\" class=\"next-btn\" data-next-step=\"2\">Next<\/button>\r\n                <\/div>\r\n            <\/div>\r\n\r\n            <div id=\"step2\" class=\"form-step\">\r\n                <h2 id=\"step2Title\" class=\"text-2xl font-bold mb-6\">2. Estimated Final Price<\/h2>\r\n\r\n                <div class=\"bg-blue-50 p-6 rounded-lg shadow mb-6\">\r\n                    <div id=\"summaryContent\"><\/div>\r\n                <\/div>\r\n\r\n                <div id=\"infoBlock\" class=\"info-block\">\r\n                    <div class=\"mb-4 p-3 bg-yellow-100 border-l-4 border-yellow-500 text-yellow-800 text-sm rounded\">\r\n                        <p class=\"font-medium\" style=\"color: #854d0e !important;\">Important Note regarding Discount Codes:<\/p>\r\n                        <p class=\"mt-1\" style=\"color: #854d0e !important;\">When applying a discount code, it will not automatically be reflected in the estimate obtained, as it may vary when the inspection is carried out before cleaning. It will only be applied when you, as the customer, receive your invoice.<\/p>\r\n                    <\/div>\r\n\r\n                    <p><strong>This service also includes:<\/strong><\/p>\r\n                    <p><em>In each bathroom:<\/em><\/p>\r\n                    <ul>\r\n                        <li>Shampoo, conditioner, and body lotion (travel size)<\/li>\r\n                        <li>Quality shower gel and bar soap<\/li>\r\n                        <li>Decorated toilet paper + extra rolls<\/li>\r\n                        <li>Sanitary seals on toilets<\/li>\r\n                        <li>New trash bags + refills<\/li>\r\n                    <\/ul>\r\n                    <p><em>In the kitchen:<\/em><\/p>\r\n                    <ul>\r\n                        <li>Liquid dish soap<\/li>\r\n                        <li>New sponge<\/li>\r\n                        <li>New trash bag + refill<\/li>\r\n                        <li>Decorated paper towel<\/li>\r\n                    <\/ul>\r\n                    <p><em>Laundry area:<\/em><\/p>\r\n                    <ul>\r\n                        <li>Detergent<\/li>\r\n                        <li>Suavisant<\/li>\r\n                    <\/ul>\r\n                    <p>\ud83c\udf81 **Active promotion:** 10% discount for each recommended friend (stackable up to 30%).<\/p>\r\n                    <p>**Note:** The displayed price is an estimate; it may vary after on-site inspection.<\/p>\r\n                <\/div>\r\n\r\n                <div class=\"mt-6\">\r\n                    <label for=\"customerSuggestions\">Suggestions \/ Special Requests:<\/label>\r\n                    <textarea id=\"customerSuggestions\" rows=\"8\"\r\n                        placeholder=\"Please let us know any special suggestions, cleaning information, if prices are in line with expectations and how much it costs, or other details...\"><\/textarea>\r\n                <\/div>\r\n\r\n                <div class=\"nav-buttons mt-8\">\r\n                    <button type=\"button\" class=\"prev-btn\" data-prev-step=\"1\">Previous<\/button>\r\n                    <button type=\"button\" class=\"accept-btn\" data-next-step=\"3\">Accept and Continue<\/button>\r\n                <\/div>\r\n            <\/div>\r\n\r\n            <div id=\"step3\" class=\"form-step\">\r\n                <h2 class=\"text-2xl font-bold mb-6\">3. Personal Information<\/h2>\r\n                <div>\r\n                    <label for=\"nombreCompleto\">Full Name: <span class=\"text-red-500\">*<\/span><\/label>\r\n                    <input type=\"text\" id=\"nombreCompleto\" required>\r\n                    <div id=\"nombreError\" class=\"error-message\"><\/div>\r\n                <\/div>\r\n                <div>\r\n                    <label for=\"direccion\">Residential Address: <span class=\"text-red-500\">*<\/span><\/label>\r\n                    <input type=\"text\" id=\"direccion\" required>\r\n                    <div id=\"direccionError\" class=\"error-message\"><\/div>\r\n                <\/div>\r\n                <div>\r\n                    <label for=\"telefono\">Phone: <span class=\"text-red-500\">*<\/span><\/label>\r\n                    <input type=\"tel\" id=\"telefono\" required>\r\n                    <div id=\"telefonoError\" class=\"error-message\"><\/div>\r\n                <\/div>\r\n                <div>\r\n                    <label for=\"email\">Email: <span class=\"text-red-500\">*<\/span><\/label>\r\n                    <input type=\"email\" id=\"email\" required>\r\n                    <div id=\"emailError\" class=\"error-message\"><\/div>\r\n                <\/div>\r\n\r\n                <div>\r\n                    <div class=\"service-option\" style=\"margin-bottom: 0; border-color: transparent; padding-left: 0;\">\r\n                        <input type=\"checkbox\" id=\"terms\" name=\"terms\" required>\r\n                        <label for=\"terms\" style=\"font-size: 0.9rem;\">\r\n                            I accept the <a href=\"\/terms-and-conditions\" target=\"_blank\" rel=\"noopener\" class=\"text-blue-600 underline\">Terms and Conditions<\/a>.\r\n                            <span class=\"text-red-500\">*<\/span>\r\n                        <\/label>\r\n                    <\/div>\r\n                    <div id=\"termsError\" class=\"error-message\" style=\"margin-top: 0.5rem; margin-bottom: 1rem;\"><\/div>\r\n                <\/div>\r\n                <div class=\"nav-buttons\">\r\n                    <button type=\"button\" class=\"prev-btn\" data-prev-step=\"2\">Previous<\/button>\r\n                    <button type=\"button\" id=\"confirmBookingBtn\" class=\"next-btn\" data-next-step=\"4\">Confirm Booking<\/button>\r\n                <\/div>\r\n            <\/div>\r\n\r\n            <div id=\"step4\" class=\"form-step\">\r\n                <div class=\"thank-you-message\">\r\n                    <h2 class=\"font-bold text-2xl mb-4\">Thank you for your booking!<\/h2>\r\n                    <p>We will contact you shortly to confirm all the details.<\/p>\r\n                    <a href=\"https:\/\/wa.me\/13053704452?text=Hi%20I%20confirm%20my%20reservation\" class=\"whatsapp-button\"\r\n                        target=\"_blank\" rel=\"noopener\">Contact us via WhatsApp<\/a>\r\n                <\/div>\r\n            <\/div>\r\n        <\/form>\r\n    <\/div>\r\n\r\n    <script src=\"https:\/\/cdn.jsdelivr.net\/npm\/@emailjs\/browser@3\/dist\/email.min.js\"><\/script>\r\n    <script>\r\n    const $ = id => document.getElementById(id);\r\n\r\n    \/* --- EMAILJS CONFIGURATION --- *\/\r\n    \/\/ VERIFICA ESTOS DATOS ANTES DE GUARDAR\r\n    const PUBLIC_KEY = 'RLCIO9JpE5fc1i5jB'; \r\n    const SERVICE_ID = 'service_n23kj55'; \r\n    const TEMPLATE_ID = 'template_47af45r'; \r\n\r\n    \/* PRICES *\/\r\n    const BASE_PRICE = 30;\r\n    const DEEP_MULTIPLIER = 1.80;\r\n    const prices = {\r\n        hallsCount: 15, bedroomsCount: 20, bathsCount: 35, kitchensCount: 35,\r\n        laundryCount: 20, yardCount: 15, few: 5, moderate: 15, many: 20,\r\n        petsYes: 15, petsNo: 0\r\n    };\r\n    let estimatedPrice = 0;\r\n\r\n    \/* \u2014\u2014 CALCULATE PRICE \u2014\u2014 *\/\r\n    function calculatePrice() {\r\n        let subtotal = BASE_PRICE;\r\n        document.querySelectorAll('input[name=\"areas\"]:checked').forEach(checkbox => {\r\n            const countInputId = checkbox.dataset.count;\r\n            if (countInputId) {\r\n                const count = +$(countInputId).value || 0;\r\n                const priceKey = checkbox.dataset.count ; \r\n                if (prices[priceKey]) subtotal += count * prices[priceKey];\r\n            }\r\n        });\r\n        const glassOption = document.querySelector('input[name=\"glassCount\"]:checked');\r\n        if (glassOption) subtotal += prices[glassOption.id];\r\n        const petsOption = document.querySelector('input[name=\"hasPets\"]:checked');\r\n        if (petsOption) subtotal += prices[petsOption.id];\r\n\r\n        const cleaningType = document.querySelector('input[name=\"cleaningType\"]:checked');\r\n        const mult = (cleaningType && cleaningType.id === 'deepCleaning') ? DEEP_MULTIPLIER : 1;\r\n        estimatedPrice = subtotal * mult;\r\n        \r\n        const lowerBound = estimatedPrice.toFixed(2);\r\n        const upperBound = (estimatedPrice + 50).toFixed(2);\r\n        const priceRangeText = `$${lowerBound} - $${upperBound}`;\r\n\r\n        $('estimatedPriceStep1').textContent = '$' + estimatedPrice.toFixed(2);\r\n        const ownerRadio = $('owner');\r\n        if ($('finalEstimatedPrice') && !ownerRadio.checked) {\r\n            $('finalEstimatedPrice').textContent = priceRangeText;\r\n        }\r\n    }\r\n\r\n    \/* \u2014\u2014 UI LOGIC \u2014\u2014 *\/\r\n    function toggleAreaCount(chk) {\r\n        const inputID = chk.dataset.count;\r\n        if (!inputID) return;\r\n        const inp = $(inputID);\r\n        const show = chk.checked;\r\n        inp.hidden = !show;\r\n        inp.disabled = !show;\r\n        calculatePrice();\r\n    }\r\n\r\n    function togglePriceVisibility() {\r\n        const ownerRadio = $('owner');\r\n        const priceSummaryStep1 = $('priceSummaryStep1');\r\n        if (ownerRadio.checked) priceSummaryStep1.classList.add('hidden-element');\r\n        else priceSummaryStep1.classList.remove('hidden-element');\r\n    }\r\n\r\n    function buildSummary() {\r\n        const summaryContentDiv = $('summaryContent');\r\n        const ownerRadio = $('owner');\r\n        const step2Title = $('step2Title');\r\n        const infoBlock = $('infoBlock');\r\n\r\n        if (ownerRadio.checked) {\r\n            step2Title.classList.add('hidden-element');\r\n            infoBlock.classList.add('hidden-element');\r\n            summaryContentDiv.innerHTML = `\r\n                <div class=\"info-block\"><p class=\"text-lg mb-4\" style=\"color:#0D8FD6;\">\r\n                Thank you for completing the form! For homeowners, we will provide a free in-person estimate.<\/p><\/div>`;\r\n        } else {\r\n            step2Title.classList.remove('hidden-element');\r\n            infoBlock.classList.remove('hidden-element');\r\n            \/\/ Updated colors for JS generated content\r\n            summaryContentDiv.innerHTML = `\r\n                <h3 class=\"text-xl font-semibold mb-2 summary-title\">Summary:<\/h3>\r\n                <ul id=\"summaryList\" class=\"space-y-1 mb-4\" style=\"color:#6b7280;\"><\/ul>\r\n                <p class=\"text-2xl font-bold price-display\" style=\"color:#003B59 !important;\">Estimated Final Price: <span id=\"finalEstimatedPrice\" style=\"color:#0D8FD6\">$0.00 - $50.00<\/span><\/p>`;\r\n            \r\n            const ul = $('summaryList');\r\n            ul.innerHTML = '';\r\n            \r\n            const getVal = (name) => document.querySelector(`input[name=\"${name}\"]:checked`)?.dataset.nombre || '';\r\n            const isReferral = getVal('isReferral');\r\n            const referralCode = $('referralCode').value.trim();\r\n            const discountCode = $('discountCode').value.trim();\r\n\r\n            const areaCounts = [];\r\n            const areaInputs = { hall: 'hallsCount', bedroom: 'bedroomsCount', bathroom: 'bathsCount', kitchen: 'kitchensCount', laundry: 'laundryCount', yard: 'yardCount' };\r\n            for (const areaId in areaInputs) {\r\n                const checkbox = $(areaId);\r\n                const countInput = $(areaInputs[areaId]);\r\n                if (checkbox && checkbox.checked && countInput && countInput.value > 0) {\r\n                    areaCounts.push(`${countInput.value} ${checkbox.dataset.nombre}`);\r\n                }\r\n            }\r\n\r\n            const sections = [\r\n                ['Customer Type', getVal('typeCustomer')],\r\n                ['Service Type', getVal('cleaningType')],\r\n                ['Areas Selected', areaCounts.join(', ')],\r\n                ['Glass Surfaces', getVal('glassCount')],\r\n                ['Pets', getVal('hasPets')],\r\n                ['Referred?', isReferral],\r\n                (isReferral === 'Yes' && referralCode) ? ['Referral Code', referralCode] : null,\r\n                (isReferral === 'Yes' && discountCode) ? ['Discount Code', discountCode] : null\r\n            ].filter(Boolean);\r\n\r\n            sections.forEach(([title, text]) => {\r\n                if (text) {\r\n                    const li = document.createElement('li');\r\n                    li.innerHTML = `<strong>${title}:<\/strong> ${text}`;\r\n                    ul.appendChild(li);\r\n                }\r\n            });\r\n        }\r\n        calculatePrice();\r\n    }\r\n    \r\n    \/* \u2014\u2014 VALIDATION \u2014\u2014 *\/\r\n    function validateStep1() {\r\n        const dir = $('direccionZona');\r\n        if (!dir.value.trim()) { $('direccionZonaError').textContent = 'Required'; return false; }\r\n        return true;\r\n    }\r\n    function validateStep3() {\r\n        let isValid = true;\r\n        ['nombreError', 'direccionError', 'telefonoError', 'emailError', 'termsError'].forEach(id => $(id).textContent = '');\r\n        if (!$('nombreCompleto').value.trim()) { $('nombreError').textContent = 'Required'; isValid = false; }\r\n        if (!$('direccion').value.trim()) { $('direccionError').textContent = 'Required'; isValid = false; }\r\n        if (!$('telefono').value.trim()) { $('telefonoError').textContent = 'Required'; isValid = false; }\r\n        if (!$('email').value.trim()) { $('emailError').textContent = 'Required'; isValid = false; }\r\n        if (!$('terms').checked) { $('termsError').textContent = 'Must accept terms'; isValid = false; }\r\n        return isValid;\r\n    }\r\n\r\n    \/* \u2014\u2014 DATA GATHERING \u2014\u2014 *\/\r\n    function gatherData() {\r\n        const getVal = (name) => document.querySelector(`input[name=\"${name}\"]:checked`)?.dataset.nombre || 'No seleccionado';\r\n        const isOwner = document.getElementById('owner').checked;\r\n        const nombreCliente = $('nombreCompleto').value.trim();\r\n        const emailCliente = $('email').value.trim();\r\n        const telefonoCliente = $('telefono').value.trim();\r\n        \r\n        let areasFormatted = [];\r\n        document.querySelectorAll('input[name=\"areas\"]:checked').forEach(chk => {\r\n            const countId = chk.dataset.count;\r\n            const count = $(countId).value;\r\n            const name = chk.dataset.nombre;\r\n            areasFormatted.push(`${count} x ${name}`);\r\n        });\r\n\r\n        let precioString = \"\";\r\n        if (isOwner) {\r\n            precioString = \"A cotizar (Propietario)\";\r\n        } else {\r\n            const lower = estimatedPrice.toFixed(2);\r\n            const upper = (estimatedPrice + 30).toFixed(2);\r\n            precioString = `$${lower} (Rango: $${lower} - $${upper})`;\r\n        }\r\n\r\n        return {\r\n            \/\/ == SECTION: Booking Details ==\r\n            nombreCompleto: nombreCliente,\r\n            email: emailCliente,\r\n            telefono: telefonoCliente,\r\n            direccion: $('direccion').value.trim(),      \r\n            direccionZona: $('direccionZona').value.trim(), \r\n            typeCustomer: getVal('typeCustomer'),\r\n            cleaningType: getVal('cleaningType'),\r\n            areasSelected: areasFormatted.length > 0 ? areasFormatted.join(', ') : 'Ninguna',\r\n            glassCount: getVal('glassCount'),\r\n            hasPets: getVal('hasPets'),\r\n            detallesAdicionales: $('detallesAdicionales').value.trim() || '',\r\n            customerSuggestions: $('customerSuggestions').value.trim() || '',\r\n            isReferral: getVal('isReferral'),\r\n            referralCode: $('referralCode').value.trim() || '',\r\n            discountCode: $('discountCode').value.trim() || '',\r\n            aceptoTerminos: $('terms').checked ? 'Si' : 'No',\r\n            precioEstimado: precioString,\r\n            \r\n            \/\/ == SECTION: Referral Details ==\r\n            from_name: nombreCliente, \r\n            from_email: emailCliente, \r\n            from_phone: telefonoCliente, \r\n            company_name: \"\", \r\n            business_type: \"\", \r\n            payment_method: \"\", \r\n            payment_contact: \"\", \r\n            referral_program_applicant: getVal('isReferral') === 'Yes' ? \"Si (Referido por amigo)\" : \"No\"\r\n        };\r\n    }\r\n\r\n    function sendEmail() {\r\n        if ($('website_url').value) { showStep(4); return; } \/\/ Honeypot\r\n    \r\n        const templateParams = gatherData();\r\n        const confirmBtn = $('confirmBookingBtn');\r\n        const originalText = confirmBtn.innerHTML;\r\n        \r\n        confirmBtn.innerHTML = 'Sending...';\r\n        confirmBtn.disabled = true;\r\n    \r\n        emailjs.send(SERVICE_ID, TEMPLATE_ID, templateParams)\r\n            .then(function() {\r\n                console.log('SUCCESS!');\r\n                showStep(4);\r\n            }, function(error) {\r\n                console.log('FAILED...', error);\r\n                alert('ERROR DE ENV\u00cdO: ' + JSON.stringify(error) + '\\n\\nPor favor verifica tu Public Key y Service ID en el c\u00f3digo.');\r\n                confirmBtn.innerHTML = originalText;\r\n                confirmBtn.disabled = false;\r\n            });\r\n    }\r\n\r\n    \/* \u2014\u2014 NAVIGATION & INIT \u2014\u2014 *\/\r\n    let currentStep = 1;\r\n    function showStep(n) {\r\n        document.querySelectorAll('.form-step').forEach(s => s.classList.remove('active'));\r\n        $(`step${n}`).classList.add('active');\r\n        document.querySelectorAll('.step-indicator-item').forEach(i => i.classList.remove('active'));\r\n        $(`indicator-step${n}`).classList.add('active');\r\n        currentStep = n;\r\n        if (n === 4) setTimeout(() => { window.location.href = 'https:\/\/shinykeycleaning.com\/'; }, 15000);\r\n    }\r\n    function nextStep(n) {\r\n        if (n === 2 && !validateStep1()) return;\r\n        if (n === 2) buildSummary();\r\n        showStep(n);\r\n    }\r\n    function prevStep(n) {\r\n        showStep(n);\r\n        if (n === 1 || n === 2) { togglePriceVisibility(); if(n===2) buildSummary(); }\r\n    }\r\n    function handleReferralInput() {\r\n        const isYes = $('referralYes').checked;\r\n        const div = $('referralInputContainer');\r\n        const code1 = $('referralCode');\r\n        const code2 = $('discountCode');\r\n        if (isYes) {\r\n            div.classList.remove('hidden-element');\r\n            code1.disabled = false; code2.disabled = false;\r\n        } else {\r\n            div.classList.add('hidden-element');\r\n            code1.disabled = true; code2.disabled = true;\r\n            code1.value = ''; code2.value = '';\r\n        }\r\n    }\r\n\r\n    document.addEventListener('DOMContentLoaded', () => {\r\n        emailjs.init(PUBLIC_KEY);\r\n\r\n        const urlParams = new URLSearchParams(window.location.search);\r\n        const miCupon = urlParams.get('cupon');\r\n        if (miCupon) {\r\n            $('referralNo').checked = false;\r\n            $('referralYes').checked = true;\r\n            handleReferralInput();\r\n            $('discountCode').value = miCupon;\r\n        }\r\n\r\n        calculatePrice();\r\n        togglePriceVisibility();\r\n        \r\n        document.querySelectorAll('input[name=\"typeCustomer\"]').forEach(r => r.addEventListener('change', () => {\r\n            togglePriceVisibility();\r\n            if (r.id === 'owner') {\r\n                document.querySelectorAll('input[name=\"areas\"]').forEach(c => { c.checked = false; toggleAreaCount(c); });\r\n                $('basicCleaning').checked = true; $('few').checked = true; $('petsYes').checked = true;\r\n            }\r\n            calculatePrice();\r\n        }));\r\n        document.querySelectorAll('input[name=\"cleaningType\"], input[name=\"glassCount\"], input[name=\"hasPets\"]').forEach(r => r.addEventListener('change', calculatePrice));\r\n        document.querySelectorAll('input[name=\"areas\"]').forEach(c => c.addEventListener('change', (e) => toggleAreaCount(e.target)));\r\n        document.querySelectorAll('.count-input').forEach(i => i.addEventListener('input', calculatePrice));\r\n        \r\n        const rYes = $('referralYes'), rNo = $('referralNo');\r\n        if (rYes && rNo) { rYes.addEventListener('change', handleReferralInput); rNo.addEventListener('change', handleReferralInput); }\r\n        handleReferralInput();\r\n\r\n        document.querySelectorAll('.next-btn').forEach(b => {\r\n            if (b.id !== 'confirmBookingBtn') b.addEventListener('click', (e) => nextStep(parseInt(e.target.dataset.nextStep)));\r\n        });\r\n        document.querySelectorAll('.prev-btn').forEach(b => b.addEventListener('click', (e) => prevStep(parseInt(e.target.dataset.prevStep))));\r\n        $('cleaningForm').querySelector('.accept-btn').addEventListener('click', (e) => nextStep(parseInt(e.target.dataset.nextStep)));\r\n\r\n        $('confirmBookingBtn').addEventListener('click', (e) => {\r\n            e.preventDefault(); \r\n            if (validateStep3()) {\r\n                sendEmail();\r\n            }\r\n        });\r\n    });\r\n    <\/script>\r\n<\/body>\r\n<\/html>\t\t\t\t<\/div>\n\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>Booking Form Cleaning Price Calculator 1. Services 2. Estimated Price 3. Personal Information 4. Confirmation 1. What do you need? Customer Type: Vacation Rental Owner Service Type: Basic Cleaning Deep Cleaning Areas to include: Living room Bedroom Bathroom Kitchen Laundry Yard &#038; Outdoor Glass Surfaces: Few Moderate Many Property Location: * Additional Details: Are pets [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"_joinchat":[],"footnotes":""},"class_list":["post-11251","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Booking Form - Shiny Key<\/title>\n<meta name=\"description\" content=\"Booking Form Shiny Key -\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/shinykeycleaning.com\/es\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Booking Form - Shiny Key\" \/>\n<meta property=\"og:description\" content=\"Booking Form Shiny Key -\" \/>\n<meta property=\"og:url\" content=\"https:\/\/shinykeycleaning.com\/es\/\" \/>\n<meta property=\"og:site_name\" content=\"Shiny Key\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-23T18:00:08+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/shinykeycleaning.com\/wp-content\/uploads\/2024\/09\/LOGO-LETTR-500PX-TR.png\" \/>\n\t<meta property=\"og:image:width\" content=\"500\" \/>\n\t<meta property=\"og:image:height\" content=\"500\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data1\" content=\"2 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/shinykeycleaning.com\\\/booking\\\/\",\"url\":\"https:\\\/\\\/shinykeycleaning.com\\\/\",\"name\":\"Booking Form - Shiny Key\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/shinykeycleaning.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/shinykeycleaning.com\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/shinykeycleaning.com\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/shinykeycleaning.com\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/LOGO-LETTR-500PX-TR-150x150.png\",\"datePublished\":\"2025-04-24T17:12:44+00:00\",\"dateModified\":\"2026-03-23T18:00:08+00:00\",\"description\":\"Booking Form Shiny Key -\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/shinykeycleaning.com\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/shinykeycleaning.com\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/shinykeycleaning.com\\\/#primaryimage\",\"url\":\"https:\\\/\\\/shinykeycleaning.com\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/LOGO-LETTR-500PX-TR-150x150.png\",\"contentUrl\":\"https:\\\/\\\/shinykeycleaning.com\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/LOGO-LETTR-500PX-TR-150x150.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/shinykeycleaning.com\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Inicio\",\"item\":\"https:\\\/\\\/shinykeycleaning.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Booking Form\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/shinykeycleaning.com\\\/#website\",\"url\":\"https:\\\/\\\/shinykeycleaning.com\\\/\",\"name\":\"Shiny Key Cleaning\",\"description\":\"Shiny Key Cleaning\",\"publisher\":{\"@id\":\"https:\\\/\\\/shinykeycleaning.com\\\/#organization\"},\"alternateName\":\"Shiny Key Cleaning\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/shinykeycleaning.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/shinykeycleaning.com\\\/#organization\",\"name\":\"Shiny Key Cleaning\",\"alternateName\":\"Shiny Key Cleaning Services\",\"url\":\"https:\\\/\\\/shinykeycleaning.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/shinykeycleaning.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/shinykeycleaning.com\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/34.jpg\",\"contentUrl\":\"https:\\\/\\\/shinykeycleaning.com\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/34.jpg\",\"width\":940,\"height\":788,\"caption\":\"Shiny Key Cleaning\"},\"image\":{\"@id\":\"https:\\\/\\\/shinykeycleaning.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Booking Form - Shiny Key","description":"Booking Form Shiny Key -","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/shinykeycleaning.com\/es\/","og_locale":"es_ES","og_type":"article","og_title":"Booking Form - Shiny Key","og_description":"Booking Form Shiny Key -","og_url":"https:\/\/shinykeycleaning.com\/es\/","og_site_name":"Shiny Key","article_modified_time":"2026-03-23T18:00:08+00:00","og_image":[{"width":500,"height":500,"url":"https:\/\/shinykeycleaning.com\/wp-content\/uploads\/2024\/09\/LOGO-LETTR-500PX-TR.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Tiempo de lectura":"2 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/shinykeycleaning.com\/booking\/","url":"https:\/\/shinykeycleaning.com\/","name":"Booking Form - Shiny Key","isPartOf":{"@id":"https:\/\/shinykeycleaning.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/shinykeycleaning.com\/#primaryimage"},"image":{"@id":"https:\/\/shinykeycleaning.com\/#primaryimage"},"thumbnailUrl":"https:\/\/shinykeycleaning.com\/wp-content\/uploads\/2024\/09\/LOGO-LETTR-500PX-TR-150x150.png","datePublished":"2025-04-24T17:12:44+00:00","dateModified":"2026-03-23T18:00:08+00:00","description":"Booking Form Shiny Key -","breadcrumb":{"@id":"https:\/\/shinykeycleaning.com\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/shinykeycleaning.com\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/shinykeycleaning.com\/#primaryimage","url":"https:\/\/shinykeycleaning.com\/wp-content\/uploads\/2024\/09\/LOGO-LETTR-500PX-TR-150x150.png","contentUrl":"https:\/\/shinykeycleaning.com\/wp-content\/uploads\/2024\/09\/LOGO-LETTR-500PX-TR-150x150.png"},{"@type":"BreadcrumbList","@id":"https:\/\/shinykeycleaning.com\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Inicio","item":"https:\/\/shinykeycleaning.com\/"},{"@type":"ListItem","position":2,"name":"Booking Form"}]},{"@type":"WebSite","@id":"https:\/\/shinykeycleaning.com\/#website","url":"https:\/\/shinykeycleaning.com\/","name":"Shiny Key Cleaning,","description":"Shiny Key Cleaning,","publisher":{"@id":"https:\/\/shinykeycleaning.com\/#organization"},"alternateName":"Shiny Key Cleaning","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/shinykeycleaning.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/shinykeycleaning.com\/#organization","name":"Shiny Key Cleaning,","alternateName":"Shiny Key Cleaning Services","url":"https:\/\/shinykeycleaning.com\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/shinykeycleaning.com\/#\/schema\/logo\/image\/","url":"https:\/\/shinykeycleaning.com\/wp-content\/uploads\/2025\/05\/34.jpg","contentUrl":"https:\/\/shinykeycleaning.com\/wp-content\/uploads\/2025\/05\/34.jpg","width":940,"height":788,"caption":"Shiny Key Cleaning"},"image":{"@id":"https:\/\/shinykeycleaning.com\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/shinykeycleaning.com\/es\/wp-json\/wp\/v2\/pages\/11251","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/shinykeycleaning.com\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/shinykeycleaning.com\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/shinykeycleaning.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/shinykeycleaning.com\/es\/wp-json\/wp\/v2\/comments?post=11251"}],"version-history":[{"count":21,"href":"https:\/\/shinykeycleaning.com\/es\/wp-json\/wp\/v2\/pages\/11251\/revisions"}],"predecessor-version":[{"id":16273,"href":"https:\/\/shinykeycleaning.com\/es\/wp-json\/wp\/v2\/pages\/11251\/revisions\/16273"}],"wp:attachment":[{"href":"https:\/\/shinykeycleaning.com\/es\/wp-json\/wp\/v2\/media?parent=11251"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}