{"id":14910,"date":"2026-03-28T17:40:32","date_gmt":"2026-03-28T20:40:32","guid":{"rendered":"https:\/\/termasdepanimavida.cl\/esp\/?page_id=14910"},"modified":"2026-06-07T17:56:48","modified_gmt":"2026-06-07T21:56:48","slug":"reserva-termas","status":"publish","type":"page","link":"https:\/\/termasdepanimavida.cl\/esp\/reserva-termas\/","title":{"rendered":"Reserva Termas"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"14910\" class=\"elementor elementor-14910\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f3576a7 e-con-full e-flex e-con e-parent\" data-id=\"f3576a7\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5da8ebb elementor-widget elementor-widget-shortcode\" data-id=\"5da8ebb\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><div class=\"rt-step1-titulo\">\n    <h2>Sistema de Reservas On-line<\/h2>\n    <span class=\"rt-step1-titulo-linea\" aria-hidden=\"true\"><\/span>\n<\/div>\n<form method=\"POST\" action=\"https:\/\/termasdepanimavida.cl\/esp\/esp\/reserva-paso-2\/\" class=\"rt-step1-form-anim\">\n\n<div class=\"rt-form-wrapper\">\n\n<div class=\"rt-form\">\n\n<!-- \ud83d\udecf\ufe0f Aviso de plazas (dentro del flex de campos, forzado a ancho completo arriba) -->\n<div id=\"rt-aviso-plazas\" class=\"rt-aviso-plazas\" style=\"display:none;\"><\/div>\n\n    <div class=\"rt-field\">\n        <label><b>Tipo<\/b><\/label>\n        <select name=\"tipo\" id=\"tipo\">\n            <option value=\"estadia\">Estadia<\/option>\n            <option value=\"dia\">Por el dia<\/option>\n        <\/select>\n    <\/div>\n    <div class=\"rt-field\">\n        <label id=\"label-checkin\"><b>Fecha Ingreso<\/b><\/label>\n        <input type=\"date\" name=\"checkin\" id=\"checkin\">\n        <span id=\"rt-email-info\" style=\"display:none; max-width:100%; display:block; margin-top:4px; min-height:30px; line-height:1.3;\">\n            <span style=\"font-size:12px; color:#00b5ad; font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; display:block;\"><span id=\"rt-email-registrado\"><\/span><\/span>\n            <a href=\"#\" id=\"rt-cambiar-email\" style=\"font-size:10px; color:#aaa; text-decoration:none; margin-top:-2px; display:none;\">&#9998; Cambiar<\/a>\n        <\/span>\n    <\/div>\n    <div class=\"rt-field\" id=\"campo-dinamico\">\n        <label id=\"label-dinamico\"><b>Fecha Salida<\/b><\/label>\n        <input type=\"date\" name=\"checkout\" id=\"checkout\">\n        <span id=\"rt-noches-info\" style=\"display:none; font-size:12px; color:#0073aa; font-weight:600; margin-top:4px; min-height:16px; line-height:1.3;\"><\/span>\n        <select name=\"servicio\" id=\"servicio\" style=\"display:none;\">\n            <option value=\"\">Seleccionar Servicio<\/option>\n                            <option value=\"16907\"\n                        data-nino-activo=\"0\"\n                        data-infante-activo=\"0\"\n                        data-dias=\"1,2,3,4,5,6,0\"\n                        data-rangos=\"[]\"\n                        data-usar-ventana=\"1\"\n                        data-temporada=\"todas\">\n                    Drenaje Linf\u00e1tico + Mascarilla Facial                <\/option>\n                            <option value=\"16902\"\n                        data-nino-activo=\"1\"\n                        data-infante-activo=\"1\"\n                        data-dias=\"1,2,3,4,5,6,0\"\n                        data-rangos=\"[]\"\n                        data-usar-ventana=\"0\"\n                        data-temporada=\"todas\">\n                    Piscina + Almuerzo Buffet + Cena Buffet                <\/option>\n                            <option value=\"16892\"\n                        data-nino-activo=\"0\"\n                        data-infante-activo=\"0\"\n                        data-dias=\"1,2,3,4,5,6,0\"\n                        data-rangos=\"[]\"\n                        data-usar-ventana=\"1\"\n                        data-temporada=\"todas\">\n                    Biomagnetismo + Mascarilla Facial                <\/option>\n                            <option value=\"16891\"\n                        data-nino-activo=\"0\"\n                        data-infante-activo=\"0\"\n                        data-dias=\"1,2,3,4,5,6,0\"\n                        data-rangos=\"[]\"\n                        data-usar-ventana=\"1\"\n                        data-temporada=\"todas\">\n                    Masaje Cuerpo Entero + Mascarilla Facial                <\/option>\n                            <option value=\"16890\"\n                        data-nino-activo=\"0\"\n                        data-infante-activo=\"0\"\n                        data-dias=\"1,2,3,4,5,6,0\"\n                        data-rangos=\"[]\"\n                        data-usar-ventana=\"1\"\n                        data-temporada=\"todas\">\n                    Masaje Piedras Calientes + Mascarilla Facial                <\/option>\n                            <option value=\"16889\"\n                        data-nino-activo=\"0\"\n                        data-infante-activo=\"0\"\n                        data-dias=\"1,2,3,4,5,6,0\"\n                        data-rangos=\"[]\"\n                        data-usar-ventana=\"1\"\n                        data-temporada=\"todas\">\n                    Promoci\u00f3n d\u00eda de SPA (Promoci\u00f3n 4)                <\/option>\n                            <option value=\"16888\"\n                        data-nino-activo=\"0\"\n                        data-infante-activo=\"0\"\n                        data-dias=\"1,2,3,4,5,6,0\"\n                        data-rangos=\"[]\"\n                        data-usar-ventana=\"1\"\n                        data-temporada=\"todas\">\n                    Promoci\u00f3n d\u00eda de SPA (Promoci\u00f3n 3)                <\/option>\n                            <option value=\"16886\"\n                        data-nino-activo=\"0\"\n                        data-infante-activo=\"0\"\n                        data-dias=\"1,2,3,4,5,6,0\"\n                        data-rangos=\"[]\"\n                        data-usar-ventana=\"1\"\n                        data-temporada=\"todas\">\n                    Promoci\u00f3n d\u00eda de SPA (Promoci\u00f3n 2)                <\/option>\n                            <option value=\"16885\"\n                        data-nino-activo=\"0\"\n                        data-infante-activo=\"0\"\n                        data-dias=\"1,2,3,4,5,6,0\"\n                        data-rangos=\"[]\"\n                        data-usar-ventana=\"1\"\n                        data-temporada=\"todas\">\n                    Promoci\u00f3n d\u00eda de SPA (Promoci\u00f3n 1)                <\/option>\n                            <option value=\"15387\"\n                        data-nino-activo=\"1\"\n                        data-infante-activo=\"1\"\n                        data-dias=\"1,2,3,4,5,6,0\"\n                        data-rangos=\"[]\"\n                        data-usar-ventana=\"1\"\n                        data-temporada=\"todas\">\n                    Desayuno Buffet                <\/option>\n                            <option value=\"15386\"\n                        data-nino-activo=\"1\"\n                        data-infante-activo=\"1\"\n                        data-dias=\"1,2,3,4,5,6,0\"\n                        data-rangos=\"[]\"\n                        data-usar-ventana=\"1\"\n                        data-temporada=\"todas\">\n                    Almuerzo Buffet                <\/option>\n                            <option value=\"15384\"\n                        data-nino-activo=\"1\"\n                        data-infante-activo=\"1\"\n                        data-dias=\"1,2,3,4,5,6,0\"\n                        data-rangos=\"[]\"\n                        data-usar-ventana=\"0\"\n                        data-temporada=\"todas\">\n                    Once                <\/option>\n                            <option value=\"15383\"\n                        data-nino-activo=\"1\"\n                        data-infante-activo=\"1\"\n                        data-dias=\"1,2,3,4,5,6,0\"\n                        data-rangos=\"[]\"\n                        data-usar-ventana=\"1\"\n                        data-temporada=\"todas\">\n                    Cena Buffet                <\/option>\n                            <option value=\"15382\"\n                        data-nino-activo=\"1\"\n                        data-infante-activo=\"1\"\n                        data-dias=\"1,2,3,4,5,6,0\"\n                        data-rangos=\"[]\"\n                        data-usar-ventana=\"1\"\n                        data-temporada=\"todas\">\n                    Piscinas D\u00eda Completo                <\/option>\n                            <option value=\"15381\"\n                        data-nino-activo=\"1\"\n                        data-infante-activo=\"1\"\n                        data-dias=\"1,2,3,4,5,6,0\"\n                        data-rangos=\"[]\"\n                        data-usar-ventana=\"1\"\n                        data-temporada=\"todas\">\n                    Piscina Medio D\u00eda                <\/option>\n                            <option value=\"15380\"\n                        data-nino-activo=\"1\"\n                        data-infante-activo=\"1\"\n                        data-dias=\"1,2,3,4,5\"\n                        data-rangos=\"[]\"\n                        data-usar-ventana=\"1\"\n                        data-temporada=\"baja\">\n                    Piscina Media Tarde                <\/option>\n                            <option value=\"15379\"\n                        data-nino-activo=\"1\"\n                        data-infante-activo=\"1\"\n                        data-dias=\"1,2,3,4,5,6,0\"\n                        data-rangos=\"[]\"\n                        data-usar-ventana=\"1\"\n                        data-temporada=\"todas\">\n                    Piscina + Almuerzo Buffet                <\/option>\n                            <option value=\"15378\"\n                        data-nino-activo=\"1\"\n                        data-infante-activo=\"1\"\n                        data-dias=\"1,2,3,4,5,6,0\"\n                        data-rangos=\"[]\"\n                        data-usar-ventana=\"1\"\n                        data-temporada=\"todas\">\n                    Piscina + Desayuno Buffet + Almuerzo buffet                <\/option>\n                            <option value=\"15377\"\n                        data-nino-activo=\"1\"\n                        data-infante-activo=\"1\"\n                        data-dias=\"1,2,3,4,5,6,0\"\n                        data-rangos=\"[]\"\n                        data-usar-ventana=\"1\"\n                        data-temporada=\"todas\">\n                    Piscina + Almuerzo Buffet + Once                <\/option>\n                            <option value=\"15376\"\n                        data-nino-activo=\"1\"\n                        data-infante-activo=\"1\"\n                        data-dias=\"1,2,3,4,5,6,0\"\n                        data-rangos=\"[]\"\n                        data-usar-ventana=\"1\"\n                        data-temporada=\"todas\">\n                    Piscina + Desayuno Buffet + Almuerzo Buffet + Once                <\/option>\n                            <option value=\"15375\"\n                        data-nino-activo=\"1\"\n                        data-infante-activo=\"1\"\n                        data-dias=\"1,2,3,4,5,6,0\"\n                        data-rangos=\"[]\"\n                        data-usar-ventana=\"0\"\n                        data-temporada=\"todas\">\n                    Piscina 1\/2 d\u00eda + Once                <\/option>\n                    <\/select>\n        <div id=\"modal-precios\" class=\"rt-modal\">\n            <div class=\"rt-modal-content\">\n                <h3 id=\"modal-titulo\"><\/h3>\n                <div id=\"modal-body\"><\/div>\n                <div class=\"rt-modal-actions\">\n                    <button type=\"button\" id=\"cancelar-servicio\" class=\"rt-btn-cancelar\">Cancelar<\/button>\n                    <button type=\"button\" id=\"aceptar-servicio\" class=\"rt-btn-aceptar\">Aceptar<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n    <div class=\"rt-field small\">\n        <label><b>Adultos<\/b> <span class=\"rt-tooltip-trigger\" data-tooltip=\"Sobre 10 a&ntilde;os\">?<\/span><\/label>\n        <select name=\"adultos\" id=\"adultos\">\n                            <option value=\"1\" >1<\/option>\n                            <option value=\"2\" selected>2<\/option>\n                            <option value=\"3\" >3<\/option>\n                            <option value=\"4\" >4<\/option>\n                            <option value=\"5\" >5<\/option>\n                            <option value=\"6\" >6<\/option>\n                            <option value=\"7\" >7<\/option>\n                            <option value=\"8\" >8<\/option>\n                            <option value=\"9\" >9<\/option>\n                            <option value=\"10\" >10<\/option>\n                    <\/select>\n        <span id=\"rt-subtotal-adultos\" class=\"rt-subtotal\"><\/span>\n    <\/div>\n    <div class=\"rt-field small\">\n        <label><b>Ninos<\/b> <span class=\"rt-tooltip-trigger\" data-tooltip=\"De 5 a 9 a&ntilde;os\">?<\/span><\/label>\n        <select name=\"ninos\" id=\"ninos\">\n                            <option value=\"0\">0<\/option>\n                            <option value=\"1\">1<\/option>\n                            <option value=\"2\">2<\/option>\n                            <option value=\"3\">3<\/option>\n                            <option value=\"4\">4<\/option>\n                            <option value=\"5\">5<\/option>\n                            <option value=\"6\">6<\/option>\n                            <option value=\"7\">7<\/option>\n                            <option value=\"8\">8<\/option>\n                            <option value=\"9\">9<\/option>\n                            <option value=\"10\">10<\/option>\n                    <\/select>\n        <span id=\"rt-subtotal-ninos\" class=\"rt-subtotal\"><\/span>\n    <\/div>\n    <!-- Contador Adolescentes: solo visible en fechas especiales con tarifa de adolescente. -->\n    <div class=\"rt-field small\" id=\"rt-field-adolescentes\" style=\"display:none;\">\n        <label><b>Adolesc.<\/b> <span class=\"rt-tooltip-trigger\" data-tooltip=\"De 10 a 17 a&ntilde;os\">?<\/span><\/label>\n        <select name=\"adolescentes\" id=\"adolescentes\">\n                            <option value=\"0\">0<\/option>\n                            <option value=\"1\">1<\/option>\n                            <option value=\"2\">2<\/option>\n                            <option value=\"3\">3<\/option>\n                            <option value=\"4\">4<\/option>\n                            <option value=\"5\">5<\/option>\n                            <option value=\"6\">6<\/option>\n                            <option value=\"7\">7<\/option>\n                            <option value=\"8\">8<\/option>\n                            <option value=\"9\">9<\/option>\n                            <option value=\"10\">10<\/option>\n                    <\/select>\n        <span id=\"rt-subtotal-adolescentes\" class=\"rt-subtotal\"><\/span>\n    <\/div>\n    <div class=\"rt-field small\">\n        <label><b>Infantes<\/b> <span class=\"rt-tooltip-trigger\" data-tooltip=\"De 0 a 4 a&ntilde;os\">?<\/span><\/label>\n        <select name=\"infantes\" id=\"infantes\">\n                            <option value=\"0\">0<\/option>\n                            <option value=\"1\">1<\/option>\n                            <option value=\"2\">2<\/option>\n                            <option value=\"3\">3<\/option>\n                            <option value=\"4\">4<\/option>\n                            <option value=\"5\">5<\/option>\n                            <option value=\"6\">6<\/option>\n                            <option value=\"7\">7<\/option>\n                            <option value=\"8\">8<\/option>\n                            <option value=\"9\">9<\/option>\n                            <option value=\"10\">10<\/option>\n                    <\/select>\n        <span id=\"rt-subtotal-infantes\" class=\"rt-subtotal\"><\/span>\n    <\/div>\n\n    <!-- \ud83d\udc36 NUEVO: Campo Mascotas -->\n    <div class=\"rt-field small\">\n        <label><b>Mascotas<\/b> <span class=\"rt-tooltip-trigger\" data-tooltip=\"Solo 1 mascota peque&ntilde;a de hasta 15 kg.\">?<\/span><\/label>\n        <select name=\"mascotas\" id=\"mascotas\">\n            <option value=\"0\" selected>0<\/option>\n            <option value=\"1\">1<\/option>\n            <option value=\"2\">2<\/option>\n        <\/select>\n        <span id=\"rt-subtotal-mascotas\" class=\"rt-subtotal\"><\/span>\n    <\/div>\n\n    <div class=\"rt-field rt-total-box\" style=\"display:none;\">\n        <label><b>Total<\/b><\/label>\n        <div id=\"rt-total-general\" class=\"rt-total-valor\"><\/div>\n    <\/div>\n    <div class=\"rt-actions rt-field\">\n        <label aria-hidden=\"true\" style=\"visibility:hidden;\"><b>&nbsp;<\/b><\/label>\n        <div class=\"rt-actions-inner\">\n            <!-- Bot\u00f3n Step 1: siempre \"Siguiente\". El modo se elige en un modal posterior. -->\n            <button type=\"button\" data-tipo=\"reserva\" class=\"rt-btn reservar\">Siguiente<\/button>\n        <\/div>\n    <\/div>\n<\/div>\n\n<\/div>\n\n<\/form>\n\n<!-- \ud83d\udc36 NUEVO: Modal informativo para mascotas (al elegir 2) -->\n<div id=\"rt-modal-mascotas\" class=\"rt-modal-mascotas\" style=\"display:none;\">\n    <div class=\"rt-modal-mascotas-overlay\"><\/div>\n    <div class=\"rt-modal-mascotas-content\">\n        <button type=\"button\" class=\"rt-modal-mascotas-close\" aria-label=\"Cerrar\">&times;<\/button>\n        <div class=\"rt-modal-mascotas-icon\">\ud83d\udc36<\/div>\n        <h3 class=\"rt-modal-mascotas-titulo\">Solo se permite 1 mascota<\/h3>\n        <p class=\"rt-modal-mascotas-texto\">\n            Por motivos de comodidad y seguridad de todos nuestros hu\u00e9spedes, en cada reserva\n            se permite <b>\u00fanicamente 1 mascota peque\u00f1a de hasta 15 kg<\/b>.\n        <\/p>\n                        <div class=\"rt-modal-mascotas-actions\">\n            <button type=\"button\" class=\"rt-modal-mascotas-volver\">Volver<\/button>\n        <\/div>\n    <\/div>\n<\/div>\n\n<style>\n\/* \u2500\u2500\u2500 T\u00edtulo Step 1 (Sistema de Reservas\/Cotizaciones) \u2500\u2500\u2500 *\/\n.rt-step1-titulo{\n    text-align:center;\n    margin:-60px auto -20px;\n    padding:0 16px;\n    opacity:0;\n    transform:translateY(-6px);\n    filter:blur(4px);\n    animation: rtTituloIn .7s cubic-bezier(.22,.61,.36,1) .08s forwards;\n}\n\/* En mobile el banner es m\u00e1s corto: usar menos margen negativo para no encimar el t\u00edtulo. *\/\n@media (max-width: 768px){\n    .rt-step1-titulo{\n        margin:-25px auto -6px;\n        \/* Garantizar ancho completo: si el contenedor de Elementor que lo envuelve\n           colapsa en m\u00f3vil, el t\u00edtulo se apilaba letra por letra. *\/\n        width:100% !important;\n        max-width:100% !important;\n        box-sizing:border-box;\n        display:block;\n    }\n    .rt-step1-titulo h2{\n        width:100% !important;\n        max-width:100% !important;\n        white-space:normal !important;\n        word-break:normal !important;\n        overflow-wrap:normal !important;\n        writing-mode:horizontal-tb !important;\n    }\n}\n\/* Si el formulario se renderiza dentro del modal \"Modificar b\u00fasqueda\"\n   (en la pantalla de elegir habitaci\u00f3n), ocultar el t\u00edtulo global porque\n   el modal ya tiene su propio t\u00edtulo \"Modificar b\u00fasqueda\". *\/\n#rt-modal-modificar .rt-step1-titulo,\n.rt-modal-modificar .rt-step1-titulo{\n    display:none !important;\n}\n.rt-step1-titulo h2{\n    margin:0;\n    font-size:clamp(20px, 2.6vw, 28px);\n    font-weight:600;\n    color:#0d4f6c;\n    letter-spacing:.3px;\n    line-height:1.25;\n}\n.rt-step1-titulo-linea{\n    display:block;\n    width:0;\n    height:2px;\n    margin:6px auto 0;\n    background:linear-gradient(90deg, transparent, #0073aa 50%, transparent);\n    animation: rtLineaExpand .65s cubic-bezier(.22,.61,.36,1) .45s forwards;\n}\n.rt-step1-form-anim{\n    opacity:0;\n    transform:translateY(8px);\n    filter:blur(3px);\n    animation: rtFormIn .65s cubic-bezier(.22,.61,.36,1) .35s forwards;\n}\n\/* Cascada de campos: cada hijo del wrapper entra con un peque\u00f1o retraso. *\/\n.rt-step1-form-anim .rt-form > *{\n    opacity:0;\n    transform:translateY(6px);\n    animation: rtCampoIn .5s ease-out forwards;\n}\n.rt-step1-form-anim .rt-form > *:nth-child(1){ animation-delay:.55s; }\n.rt-step1-form-anim .rt-form > *:nth-child(2){ animation-delay:.62s; }\n.rt-step1-form-anim .rt-form > *:nth-child(3){ animation-delay:.69s; }\n.rt-step1-form-anim .rt-form > *:nth-child(4){ animation-delay:.76s; }\n.rt-step1-form-anim .rt-form > *:nth-child(5){ animation-delay:.83s; }\n.rt-step1-form-anim .rt-form > *:nth-child(6){ animation-delay:.90s; }\n.rt-step1-form-anim .rt-form > *:nth-child(7){ animation-delay:.97s; }\n.rt-step1-form-anim .rt-form > *:nth-child(n+8){ animation-delay:1.04s; }\n\n@keyframes rtTituloIn{\n    to { opacity:1; transform:translateY(0); filter:blur(0); }\n}\n@keyframes rtFormIn{\n    to { opacity:1; transform:translateY(0); filter:blur(0); }\n}\n@keyframes rtLineaExpand{\n    to { width:60px; }\n}\n@keyframes rtCampoIn{\n    to { opacity:1; transform:translateY(0); }\n}\n\/* Respetar preferencias de accesibilidad. *\/\n@media (prefers-reduced-motion: reduce){\n    .rt-step1-titulo, .rt-step1-titulo-linea, .rt-step1-form-anim,\n    .rt-step1-form-anim .rt-form > *{\n        animation:none;\n        opacity:1;\n        transform:none;\n        filter:none;\n        width:60px;\n    }\n}\n\/* \ud83d\udc36 Estilos del modal de mascotas *\/\n.rt-modal-mascotas{\n    position:fixed; inset:0;\n    z-index:2147483647; \/* m\u00e1ximo posible, garantiza estar arriba de cualquier overlay del tema\/Elementor *\/\n    display:flex; align-items:center; justify-content:center;\n    padding:20px;\n}\n.rt-modal-mascotas-overlay{\n    position:absolute; inset:0;\n    background:rgba(0,0,0,0.55);\n    backdrop-filter:blur(2px);\n}\n.rt-modal-mascotas-content{\n    position:relative;\n    background:#fff;\n    border-radius:14px;\n    max-width:440px; width:100%;\n    padding:32px 28px 24px;\n    text-align:center;\n    box-shadow:0 20px 60px rgba(0,0,0,0.25);\n    animation:rtModalMascotasIn .25s ease-out;\n}\n@keyframes rtModalMascotasIn{\n    from{opacity:0; transform:translateY(20px) scale(.96);}\n    to{opacity:1; transform:translateY(0) scale(1);}\n}\n.rt-modal-mascotas-close{\n    position:absolute; top:10px; right:14px;\n    background:transparent; border:none;\n    font-size:28px; line-height:1;\n    color:#999; cursor:pointer;\n    padding:4px 10px; border-radius:6px;\n    transition:.15s;\n}\n.rt-modal-mascotas-close:hover{background:#f0f0f0; color:#222;}\n.rt-modal-mascotas-icon{\n    font-size:48px; line-height:1;\n    margin-bottom:14px;\n}\n.rt-modal-mascotas-titulo{\n    margin:0 0 12px;\n    font-size:20px; font-weight:700;\n    color:#0073aa;\n}\n.rt-modal-mascotas-texto{\n    margin:0 0 16px;\n    font-size:14px; line-height:1.55;\n    color:#444;\n}\n.rt-modal-mascotas-link{\n    display:inline-block;\n    margin:0 0 22px;\n    color:#0073aa; font-weight:600;\n    font-size:13px;\n    text-decoration:underline;\n    text-decoration-style:dotted;\n    text-underline-offset:3px;\n}\n.rt-modal-mascotas-link:hover{\n    color:#005a87;\n    text-decoration-style:solid;\n}\n.rt-modal-mascotas-actions{\n    margin-top:8px;\n}\n.rt-modal-mascotas-volver{\n    background:#0073aa; color:#fff;\n    border:none;\n    padding:12px 32px;\n    border-radius:8px;\n    font-size:14px; font-weight:600;\n    cursor:pointer;\n    transition:.15s;\n}\n.rt-modal-mascotas-volver:hover{background:#005a87;}\n\n\n\/* ============================================================ *\/\n\/* \ud83c\udfa8 RESTYLING MODERNO DEL FORMULARIO STEP 1\n\/* ============================================================ *\/\n\n\/* Wrapper general *\/\n.rt-form-wrapper{\n    --rt-c-border: #d9dde3;\n    --rt-c-border-hover: #99c8e0;\n    --rt-c-focus: #0073aa;\n    --rt-c-focus-ring: rgba(0, 115, 170, 0.18);\n    --rt-c-text: #2c3e50;\n    --rt-c-text-soft: #6b7785;\n    --rt-c-bg: #ffffff;\n    --rt-c-bg-hover: #f9fbfd;\n    --rt-radius: 10px;\n}\n\n\/* Labels: m\u00e1s limpio, color suave *\/\n.rt-form .rt-field label{\n    color: var(--rt-c-text-soft);\n    font-size: 12px;\n    font-weight: 600;\n    letter-spacing: .3px;\n    text-transform: uppercase;\n    margin-bottom: 6px;\n    display: block;\n}\n.rt-form .rt-field label b{\n    color: var(--rt-c-text);\n    font-weight: 700;\n    text-transform: none;\n    letter-spacing: 0;\n    font-size: 14px;\n}\n\n\/* Inputs y selects: estilo unificado moderno *\/\n.rt-form .rt-field input[type=\"date\"],\n.rt-form .rt-field input[type=\"text\"],\n.rt-form .rt-field input[type=\"email\"],\n.rt-form .rt-field input[type=\"number\"],\n.rt-form .rt-field select{\n    width: 100%;\n    height: 52px;\n    padding: 0 8px 0 38px; \/* deja espacio para el icono a la izquierda *\/\n    background-color: var(--rt-c-bg);\n    background-repeat: no-repeat;\n    background-position: 10px center;\n    background-size: 20px 20px;\n    border: 1.5px solid var(--rt-c-border);\n    border-radius: var(--rt-radius);\n    color: var(--rt-c-text);\n    font-size: 14px;\n    font-weight: 500;\n    transition: border-color .15s, box-shadow .15s, background-color .15s;\n    appearance: none;\n    -webkit-appearance: none;\n    box-shadow: 0 1px 2px rgba(0,0,0,0.02);\n    box-sizing: border-box;\n    min-width: 0; \/* permite que el input shrinkee dentro de un flex container *\/\n}\n\n\/* Selects: dejar espacio a la flecha custom de la derecha *\/\n.rt-form .rt-field select{\n    padding-right: 30px;\n    cursor: pointer;\n    \/* flecha custom a la derecha *\/\n    background-image:\n        var(--rt-icon, none),\n        url(\"data:image\/svg+xml;utf8,<svg xmlns='http:\/\/www.w3.org\/2000\/svg' width='12' height='8' viewBox='0 0 12 8'><path fill='%236b7785' d='M6 8L0 0h12z'\/><\/svg>\");\n    background-position:\n        10px center,\n        calc(100% - 10px) center;\n    background-size:\n        20px 20px,\n        10px 7px;\n}\n\n\/* Contadores peque\u00f1os (Adultos, Ni\u00f1os, Adolesc., Infantes, Mascotas): se\n   angostan para que todos quepan c\u00f3modos en la fila, especialmente cuando\n   aparece el contador de Adolescentes en fechas especiales. *\/\n.rt-form .rt-field.small{\n    flex: 0 0 auto;\n    max-width: 84px;\n    min-width: 70px;\n}\n.rt-form .rt-field.small label{\n    white-space: nowrap;\n}\n.rt-form .rt-field.small select{\n    padding-left: 8px;\n    padding-right: 24px;\n}\n\/* Cuando el formulario tiene el contador de adolescentes visible, se aprieta un\n   poco m\u00e1s todo para que el bot\u00f3n \"Siguiente\" no se salga del recuadro. *\/\n.rt-form{ gap: 12px; }\n.rt-form .rt-field.small select{\n    background-position: 7px center, calc(100% - 8px) center;\n}\n\n\/* En m\u00f3vil los contadores peque\u00f1os deben ocupar el ancho completo: liberamos\n   el max-width de 84px (que se usa solo en desktop para que quepan en la fila). *\/\n@media (max-width: 768px){\n    \/* El formulario fluye en filas que se envuelven. *\/\n    .rt-form{\n        display: flex !important;\n        flex-direction: row !important;\n        flex-wrap: wrap !important;\n        gap: 8px !important;\n        align-items: flex-start !important;\n    }\n    \/* Campos grandes (Tipo, Fecha, Servicio, Total y acciones): ancho completo. *\/\n    .rt-form > .rt-field:not(.small){\n        flex: 1 1 100% !important;\n        max-width: 100% !important;\n        width: 100% !important;\n        min-width: 0 !important;\n    }\n    \/* Contadores peque\u00f1os: ~50% para que fluyan de a DOS por fila.\n       Los campos ocultos (display:none) no ocupan espacio, as\u00ed que el\n       emparejamiento se acomoda solo seg\u00fan cu\u00e1les est\u00e9n visibles. *\/\n    .rt-form > .rt-field.small{\n        flex: 1 1 calc(50% - 4px) !important;\n        max-width: calc(50% - 4px) !important;\n        min-width: calc(50% - 4px) !important;\n        width: calc(50% - 4px) !important;\n        box-sizing: border-box !important;\n    }\n    .rt-form > .rt-field.small select{\n        width: 100% !important;\n        max-width: 100% !important;\n        box-sizing: border-box !important;\n        \/* M\u00e1s espacio a la izquierda para que el n\u00famero no pise el icono de fondo. *\/\n        padding-left: 34px !important;\n    }\n}\n\n\/* Inputs date: en algunos navegadores muestran el indicador a la derecha,\n   le dejamos algo de aire *\/\n.rt-form .rt-field input[type=\"date\"]{\n    padding-right: 6px;\n}\n\n\/* Hover *\/\n.rt-form .rt-field input[type=\"date\"]:hover,\n.rt-form .rt-field input[type=\"text\"]:hover,\n.rt-form .rt-field input[type=\"email\"]:hover,\n.rt-form .rt-field input[type=\"number\"]:hover,\n.rt-form .rt-field select:hover{\n    border-color: var(--rt-c-border-hover);\n    background-color: var(--rt-c-bg-hover);\n}\n\n\/* Focus: anillo azul *\/\n.rt-form .rt-field input[type=\"date\"]:focus,\n.rt-form .rt-field input[type=\"text\"]:focus,\n.rt-form .rt-field input[type=\"email\"]:focus,\n.rt-form .rt-field input[type=\"number\"]:focus,\n.rt-form .rt-field select:focus{\n    outline: none;\n    border-color: var(--rt-c-focus);\n    background-color: var(--rt-c-bg);\n    box-shadow: 0 0 0 4px var(--rt-c-focus-ring);\n}\n\n\/* Iconos por campo (SVG inline en base64) *\/\n.rt-form #tipo{\n    --rt-icon: url(\"data:image\/svg+xml;utf8,<svg xmlns='http:\/\/www.w3.org\/2000\/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%230073aa' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z'\/><polyline points='9 22 9 12 15 12 15 22'\/><\/svg>\");\n}\n.rt-form #checkin,\n.rt-form #checkout{\n    background-image: url(\"data:image\/svg+xml;utf8,<svg xmlns='http:\/\/www.w3.org\/2000\/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%230073aa' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><rect x='3' y='4' width='18' height='18' rx='2' ry='2'\/><line x1='16' y1='2' x2='16' y2='6'\/><line x1='8' y1='2' x2='8' y2='6'\/><line x1='3' y1='10' x2='21' y2='10'\/><\/svg>\");\n}\n.rt-form #servicio{\n    --rt-icon: url(\"data:image\/svg+xml;utf8,<svg xmlns='http:\/\/www.w3.org\/2000\/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%230073aa' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z'\/><\/svg>\");\n}\n.rt-form #adultos{\n    --rt-icon: url(\"data:image\/svg+xml;utf8,<svg xmlns='http:\/\/www.w3.org\/2000\/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%230073aa' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2'\/><circle cx='12' cy='7' r='4'\/><\/svg>\");\n}\n.rt-form #ninos{\n    --rt-icon: url(\"data:image\/svg+xml;utf8,<svg xmlns='http:\/\/www.w3.org\/2000\/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%230073aa' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='8' r='4'\/><path d='M6 21v-2a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v2'\/><circle cx='9' cy='7' r='.5' fill='%230073aa'\/><circle cx='15' cy='7' r='.5' fill='%230073aa'\/><\/svg>\");\n}\n.rt-form #infantes{\n    --rt-icon: url(\"data:image\/svg+xml;utf8,<svg xmlns='http:\/\/www.w3.org\/2000\/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%230073aa' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='9' r='5'\/><path d='M9 19h6'\/><path d='M12 14v5'\/><\/svg>\");\n}\n.rt-form #mascotas{\n    --rt-icon: url(\"data:image\/svg+xml;utf8,<svg xmlns='http:\/\/www.w3.org\/2000\/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%230073aa' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='11' cy='4' r='2'\/><circle cx='18' cy='8' r='2'\/><circle cx='20' cy='14' r='2'\/><circle cx='4' cy='10' r='2'\/><path d='M7.5 16c-1.5 1.5-3 4 0 5s3 0 4.5-1 3 1 4.5 0c2-1.5 1-4 0-5s-2-3-4-3-3.5 2-5 4z'\/><\/svg>\");\n}\n\n\/* Tooltips de ayuda (?) m\u00e1s amigables *\/\n.rt-tooltip-trigger{\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    width: 16px;\n    height: 16px;\n    background: #e3eef5;\n    color: #0073aa;\n    border-radius: 50%;\n    font-size: 11px;\n    font-weight: 700;\n    cursor: help;\n    margin-left: 4px;\n    transition: background .15s;\n}\n.rt-tooltip-trigger:hover{\n    background: #0073aa;\n    color: #fff;\n}\n\n\/* Mostrar el \u00edcono de calendario nativo del input date m\u00e1s sutil\n   (algunos navegadores lo ocultan autom\u00e1ticamente con appearance:none,\n    en otros queda doble; le bajamos opacidad para que no compita) *\/\n.rt-form input[type=\"date\"]::-webkit-calendar-picker-indicator{\n    opacity: 0.5;\n    cursor: pointer;\n    margin-left: 6px;\n}\n\n\/* Subtotales debajo de cada campo *\/\n.rt-form .rt-subtotal{\n    display: block;\n    font-size: 12px;\n    color: var(--rt-c-focus);\n    font-weight: 600;\n    margin-top: 6px;\n    min-height: 16px;\n    line-height: 1.3;\n}\n\n\/* Bot\u00f3n Reservar m\u00e1s moderno *\/\n.rt-form .rt-btn.reservar,\n.rt-form .rt-btn[data-tipo=\"reserva\"]{\n    height: 52px;\n    padding: 0 22px;\n    background: linear-gradient(135deg, #0073aa 0%, #005a87 100%);\n    color: #fff;\n    border: none;\n    border-radius: var(--rt-radius);\n    font-size: 15px;\n    font-weight: 700;\n    letter-spacing: .3px;\n    cursor: pointer;\n    box-shadow: 0 4px 12px rgba(0, 115, 170, 0.25);\n    transition: transform .12s, box-shadow .15s;\n    white-space: nowrap;       \/* nunca cortar en dos l\u00edneas *\/\n    min-width: 110px;          \/* asegura que la palabra \"Reservar\" entre completa *\/\n}\n.rt-form .rt-btn.reservar:hover,\n.rt-form .rt-btn[data-tipo=\"reserva\"]:hover{\n    transform: translateY(-1px);\n    box-shadow: 0 6px 18px rgba(0, 115, 170, 0.35);\n}\n.rt-form .rt-btn.reservar:active,\n.rt-form .rt-btn[data-tipo=\"reserva\"]:active{\n    transform: translateY(0);\n    box-shadow: 0 2px 8px rgba(0, 115, 170, 0.25);\n}\n\n\/* Alineaci\u00f3n del bot\u00f3n \"Siguiente\": el contenedor de acciones replica el mismo\n   markup de label que los dem\u00e1s campos (un <b> oculto), de modo que reserva\n   exactamente la misma altura y el bot\u00f3n queda alineado con los inputs. *\/\n.rt-form .rt-actions{\n    display: flex;\n    flex-direction: column;\n}\n.rt-form .rt-actions-inner{\n    display: flex;\n}\n.rt-form .rt-actions-inner .rt-btn{\n    width: 100%;\n}\n\n\n\/* ============================================================ *\/\n\/* \ud83c\udf89 TOASTS (notificaciones flotantes esquina sup derecha)\n\/* ============================================================ *\/\n.rt-toast-container{\n    position: fixed;\n    top: 20px;\n    right: 20px;\n    z-index: 2147483646;\n    display: flex;\n    flex-direction: column;\n    gap: 10px;\n    pointer-events: none;\n    max-width: calc(100vw - 40px);\n}\n.rt-toast{\n    background: #fff;\n    border-left: 4px solid #0073aa;\n    border-radius: 10px;\n    padding: 14px 18px 14px 16px;\n    min-width: 280px;\n    max-width: 380px;\n    box-shadow: 0 10px 30px rgba(0,0,0,0.15), 0 2px 6px rgba(0,0,0,0.08);\n    display: flex;\n    align-items: flex-start;\n    gap: 12px;\n    pointer-events: auto;\n    animation: rtToastIn .25s cubic-bezier(.16,1,.3,1);\n    font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif;\n}\n.rt-toast.rt-toast-leaving{\n    animation: rtToastOut .2s ease-in forwards;\n}\n@keyframes rtToastIn{\n    from{ opacity:0; transform: translateX(20px) scale(.95); }\n    to  { opacity:1; transform: translateX(0)    scale(1); }\n}\n@keyframes rtToastOut{\n    from{ opacity:1; transform: translateX(0); }\n    to  { opacity:0; transform: translateX(20px); }\n}\n.rt-toast-icon{\n    flex-shrink: 0;\n    width: 22px;\n    height: 22px;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    font-size: 16px;\n    line-height: 1;\n    margin-top: 1px;\n}\n.rt-toast-body{\n    flex: 1;\n    font-size: 14px;\n    line-height: 1.45;\n    color: #2c3e50;\n    font-weight: 500;\n}\n.rt-toast-close{\n    background: none;\n    border: none;\n    color: #999;\n    font-size: 18px;\n    line-height: 1;\n    cursor: pointer;\n    padding: 0;\n    margin-left: 4px;\n    width: 20px; height: 20px;\n    border-radius: 4px;\n    transition: background .15s, color .15s;\n}\n.rt-toast-close:hover{ background:#f0f0f0; color:#333; }\n\n\/* Variantes *\/\n.rt-toast-info   { border-left-color: #0073aa; }\n.rt-toast-info    .rt-toast-icon{ color: #0073aa; }\n.rt-toast-success{ border-left-color: #2e7d32; }\n.rt-toast-success .rt-toast-icon{ color: #2e7d32; }\n.rt-toast-error  { border-left-color: #c62828; }\n.rt-toast-error   .rt-toast-icon{ color: #c62828; }\n.rt-toast-warning{ border-left-color: #f57c00; }\n.rt-toast-warning .rt-toast-icon{ color: #f57c00; }\n\n\n\/* ============================================================ *\/\n\/* \u26a0\ufe0f INLINE ERRORS (mensaje rojo debajo del campo)\n\/* ============================================================ *\/\n.rt-field-error{\n    display: flex;\n    align-items: center;\n    gap: 6px;\n    margin-top: 6px;\n    padding: 6px 10px;\n    background: #fff5f5;\n    border: 1px solid #fecaca;\n    border-radius: 6px;\n    color: #c62828;\n    font-size: 12px;\n    font-weight: 600;\n    line-height: 1.3;\n    animation: rtErrorShake .35s cubic-bezier(.36,.07,.19,.97);\n}\n\/* En los campos de fecha el error se posiciona absoluto justo debajo del\n   input, para que no lo empujen los spans informativos (email\/noches) que\n   tienen distinta altura. As\u00ed el error de \"ingreso\" y \"salida\" quedan a la\n   misma altura. La distancia = label (~20px) + input (52px) + 4px. *\/\n.rt-form .rt-field{ position: relative; }\n.rt-form #checkin ~ .rt-field-error,\n.rt-form #checkout ~ .rt-field-error,\n.rt-field:has(#checkin) .rt-field-error,\n.rt-field:has(#checkout) .rt-field-error{\n    position: absolute;\n    top: 80px;\n    left: 0;\n    right: 0;\n    margin-top: 0;\n    z-index: 3;\n}\n.rt-field-error::before{\n    content: \"\u26a0\ufe0f\";\n    font-size: 13px;\n    line-height: 1;\n}\n@keyframes rtErrorShake{\n    0%, 100% { transform: translateX(0); }\n    20%, 60% { transform: translateX(-4px); }\n    40%, 80% { transform: translateX(4px); }\n}\n\n\/* Campo con error: borde rojo *\/\n.rt-form .rt-field input.rt-input-error,\n.rt-form .rt-field select.rt-input-error{\n    border-color: #c62828 !important;\n    box-shadow: 0 0 0 4px rgba(198, 40, 40, 0.12) !important;\n}\n\n\/* ============================================================ *\/\n\/* \ud83d\udecf\ufe0f AVISO DE PLAZAS (varias habitaciones \/ contactar eventos)\n\/* ============================================================ *\/\n\/* El aviso se posiciona absoluto en la parte superior del formulario,\n   ocupando todo el ancho, SIN participar del flex (as\u00ed los campos y el\n   bot\u00f3n siguen en una sola fila). El espacio se reserva con padding-top\n   din\u00e1mico aplicado por JS (clase rt-tiene-aviso). *\/\n.rt-form{ position: relative; }\n.rt-form.rt-tiene-aviso{ }\n\n.rt-aviso-plazas{\n    position: absolute;\n    top: 0; left: 0; right: 0;\n    width: 100%;\n    box-sizing: border-box;\n    margin: 0;\n    padding: 14px 20px;\n    border-radius: 10px;\n    line-height: 1.45;\n    text-align: center;\n    animation: rtErrorShake .35s cubic-bezier(.36,.07,.19,.97);\n}\n\/* L\u00ednea principal *\/\n.rt-aviso-plazas .rt-aviso-titulo{\n    font-size: 15px;\n    font-weight: 700;\n    margin: 0;\n}\n.rt-aviso-plazas .rt-aviso-titulo .rt-aviso-emoji{ margin-right: 6px; }\n\/* Segunda l\u00ednea, texto m\u00e1s chico *\/\n.rt-aviso-plazas .rt-aviso-sub{\n    font-size: 12.5px;\n    font-weight: 500;\n    margin: 4px 0 0;\n    opacity: .9;\n}\n\/* Tercera l\u00ednea: contactos *\/\n.rt-aviso-plazas .rt-aviso-contactos{\n    margin: 8px 0 0;\n    display: flex;\n    flex-wrap: wrap;\n    justify-content: center;\n    gap: 14px;\n    font-size: 12px;\n}\n.rt-aviso-plazas .rt-aviso-contactos a{\n    color: inherit;\n    text-decoration: none;\n    font-weight: 600;\n    display: inline-flex;\n    align-items: center;\n    gap: 4px;\n    border-bottom: 1px dotted currentColor;\n    padding-bottom: 1px;\n    transition: opacity .15s;\n}\n.rt-aviso-plazas .rt-aviso-contactos a:hover{ opacity: .7; }\n\n\/* Variante celeste (8-9 personas) *\/\n.rt-aviso-plazas.rt-aviso-info{\n    background: #eef7fb;\n    border: 1px solid #99c8e0;\n    color: #0d4f6c;\n}\n\/* Variante amarilla (10+ personas, con contactos) *\/\n.rt-aviso-plazas.rt-aviso-eventos{\n    background: #fff8ec;\n    border: 1px solid #f0c878;\n    color: #7a5800;\n}\n.rt-aviso-plazas b{ font-weight: 700; }\n\n\/* Bot\u00f3n Reservar deshabilitado por tope de plazas *\/\n.rt-form .rt-btn.reservar.rt-btn-bloqueado,\n.rt-form .rt-btn[data-tipo=\"reserva\"].rt-btn-bloqueado,\n.rt-btn-aceptar-modal.rt-btn-bloqueado,\n#rt-btn-aceptar-modal.rt-btn-bloqueado{\n    background: #c4ccd4 !important;\n    box-shadow: none !important;\n    cursor: not-allowed !important;\n    transform: none !important;\n    opacity: .85;\n}\n\n\/* ============================================================ *\/\n\/* \ud83d\udcf1 M\u00d3VIL: el aviso flota fijo abajo (siempre visible)\n\/* ============================================================ *\/\n@media (max-width: 768px){\n    \/* El form ya no necesita reservar espacio arriba en m\u00f3vil *\/\n    .rt-form.rt-tiene-aviso{ padding-top: 0 !important; }\n\n    .rt-aviso-plazas{\n        position: fixed !important;\n        left: 12px !important;\n        right: 12px !important;\n        top: 12px !important;\n        bottom: auto !important;\n        width: auto !important;\n        z-index: 2147483647 !important;\n        margin: 0 !important;\n        box-shadow: 0 12px 36px rgba(0,0,0,.28);\n        padding: 16px 18px 16px;\n        animation: rtAvisoMovilIn .3s cubic-bezier(.16,1,.3,1);\n    }\n    \/* Bot\u00f3n de cerrar (solo visible en m\u00f3vil) *\/\n    .rt-aviso-cerrar{\n        position: absolute;\n        top: 6px; right: 8px;\n        background: transparent; border: none;\n        font-size: 22px; line-height: 1;\n        color: currentColor; opacity: .6;\n        cursor: pointer; padding: 2px 6px;\n    }\n    .rt-aviso-cerrar:hover{ opacity: 1; }\n    \/* dejar aire arriba del texto para no chocar con la \u2715 *\/\n    .rt-aviso-plazas .rt-aviso-titulo{ padding: 0 18px; }\n}\n@keyframes rtAvisoMovilIn{\n    from{ opacity:0; transform: translateY(-20px); }\n    to  { opacity:1; transform: translateY(0); }\n}\n\/* El bot\u00f3n cerrar se oculta en escritorio (el aviso es est\u00e1tico ah\u00ed) *\/\n.rt-aviso-cerrar{ display: none; }\n@media (max-width: 768px){\n    .rt-aviso-cerrar{ display: block; }\n}\n<\/style>\n\n<script>\n(function(){\n    \/\/ L\u00f3gica del select Mascotas + modal informativo\n    var $selMascotas = document.getElementById('mascotas');\n    var $modal       = document.getElementById('rt-modal-mascotas');\n    if(!$selMascotas || !$modal) return;\n\n    \/\/ \ud83d\udd27 PORTAL: Mover el modal directamente al <body> para que escape\n    \/\/ de cualquier contenedor con position:relative, overflow:hidden o\n    \/\/ stacking context creado por el tema\/Elementor. As\u00ed el z-index funciona.\n    if($modal.parentNode !== document.body){\n        document.body.appendChild($modal);\n    }\n\n    var $overlay     = $modal.querySelector('.rt-modal-mascotas-overlay');\n    var $btnCerrar   = $modal.querySelector('.rt-modal-mascotas-close');\n    var $btnVolver   = $modal.querySelector('.rt-modal-mascotas-volver');\n\n    function abrirModal(){\n        $modal.style.display = 'flex';\n        \/\/ Bloquear scroll del body mientras est\u00e1 abierto\n        document.body.style.overflow = 'hidden';\n    }\n    function cerrarModal(){\n        $modal.style.display = 'none';\n        document.body.style.overflow = '';\n        \/\/ Forzar selecci\u00f3n a \"1\" (1 mascota es lo m\u00e1ximo permitido)\n        $selMascotas.value = '1';\n        \/\/ Disparar evento change por si el resto del JS escucha esto para recalcular\n        try {\n            $selMascotas.dispatchEvent(new Event('change', { bubbles: true }));\n        } catch(e){}\n    }\n\n    $selMascotas.addEventListener('change', function(){\n        if(parseInt(this.value, 10) >= 2){\n            abrirModal();\n        }\n    });\n\n    if($overlay)   $overlay.addEventListener('click', cerrarModal);\n    if($btnCerrar) $btnCerrar.addEventListener('click', cerrarModal);\n    if($btnVolver) $btnVolver.addEventListener('click', cerrarModal);\n\n    \/\/ ESC tambi\u00e9n cierra\n    document.addEventListener('keydown', function(e){\n        if(e.key === 'Escape' && $modal.style.display === 'flex'){\n            cerrarModal();\n        }\n    });\n})();\n<\/script>\n\n\n<script>\n\/* ============================================================\n * \ud83d\udcc5 BLOQUEO DE FECHAS PASADAS (desktop + m\u00f3vil)\n *\n * - Fecha Ingreso: min = hoy\n * - Fecha Salida:  min = checkin + 1 d\u00eda (se actualiza al cambiar checkin)\n *\n * Funciona porque el navegador (incluyendo iOS Safari y Android Chrome)\n * respeta el atributo `min` en <input type=\"date\"> y deshabilita d\u00edas\n * anteriores en el datepicker nativo.\n * ============================================================ *\/\n(function(){\n    var $checkin  = document.getElementById('checkin');\n    var $checkout = document.getElementById('checkout');\n    if(!$checkin) return;\n\n    \/\/ Helper: convertir Date a \"YYYY-MM-DD\" (formato requerido por input type=date)\n    function toISODate(d){\n        var yyyy = d.getFullYear();\n        var mm   = String(d.getMonth() + 1).padStart(2, '0');\n        var dd   = String(d.getDate()).padStart(2, '0');\n        return yyyy + '-' + mm + '-' + dd;\n    }\n\n    \/\/ Bloquear fechas pasadas en check-in\n    var hoy = new Date();\n    var hoyISO = toISODate(hoy);\n    $checkin.setAttribute('min', hoyISO);\n\n    \/\/ Si tiene una fecha vieja (anterior a hoy) por cache\/historial, limpiarla\n    if($checkin.value && $checkin.value < hoyISO){\n        $checkin.value = '';\n    }\n\n    \/\/ Cuando cambia checkin \u2192 actualizar min de checkout al d\u00eda siguiente\n    function actualizarMinCheckout(){\n        if(!$checkout) return;\n        if(!$checkin.value){\n            $checkout.setAttribute('min', hoyISO);\n            return;\n        }\n        var checkinDate = new Date($checkin.value + 'T00:00:00');\n        if(isNaN(checkinDate.getTime())) return;\n        var minCheckout = new Date(checkinDate);\n        minCheckout.setDate(minCheckout.getDate() + 1);\n        var minCheckoutISO = toISODate(minCheckout);\n        $checkout.setAttribute('min', minCheckoutISO);\n\n        \/\/ Si el checkout actual qued\u00f3 antes del nuevo min, limpiarlo\n        if($checkout.value && $checkout.value < minCheckoutISO){\n            $checkout.value = '';\n            try { $checkout.dispatchEvent(new Event('change', { bubbles: true })); } catch(e){}\n        }\n    }\n\n    $checkin.addEventListener('change', actualizarMinCheckout);\n    actualizarMinCheckout(); \/\/ estado inicial\n})();\n<\/script>\n\n\n<script>\n\/* ============================================================\n * \ud83c\udf89 SISTEMA DE NOTIFICACIONES MODERNAS (toasts + inline errors)\n *\n * Reemplaza los alert() nativos del navegador por feedback moderno.\n *\n * API global:\n *   rtToast.info(msg)\n *   rtToast.success(msg)\n *   rtToast.error(msg)\n *   rtToast.warning(msg)\n *\n *   rtFieldError(selector, msg)   \u2192 muestra error rojo debajo del campo\n *   rtClearFieldError(selector)   \u2192 limpia el error de ese campo\n *   rtClearAllFieldErrors()       \u2192 limpia todos los errores inline\n * ============================================================ *\/\n(function(){\n    if(window.rtToast) return; \/\/ ya est\u00e1 cargado\n\n    \/\/ \u2500\u2500\u2500\u2500\u2500 Toast container \u2500\u2500\u2500\u2500\u2500\n    function getContainer(){\n        var c = document.getElementById('rt-toast-container');\n        if(!c){\n            c = document.createElement('div');\n            c.id = 'rt-toast-container';\n            c.className = 'rt-toast-container';\n            document.body.appendChild(c);\n        }\n        return c;\n    }\n\n    var iconos = {\n        info:    '\u2139\ufe0f',\n        success: '\u2713',\n        error:   '\u2715',\n        warning: '\u26a0\ufe0f'\n    };\n\n    function showToast(tipo, mensaje, duracion){\n        if(typeof duracion !== 'number') duracion = 4000;\n        var c = getContainer();\n        var toast = document.createElement('div');\n        toast.className = 'rt-toast rt-toast-' + tipo;\n        toast.innerHTML =\n            '<span class=\"rt-toast-icon\">' + (iconos[tipo] || '') + '<\/span>' +\n            '<div class=\"rt-toast-body\"><\/div>' +\n            '<button type=\"button\" class=\"rt-toast-close\" aria-label=\"Cerrar\">\u00d7<\/button>';\n        toast.querySelector('.rt-toast-body').textContent = mensaje;\n        c.appendChild(toast);\n\n        function cerrar(){\n            if(!toast.parentNode) return;\n            toast.classList.add('rt-toast-leaving');\n            setTimeout(function(){\n                if(toast.parentNode) toast.parentNode.removeChild(toast);\n            }, 200);\n        }\n\n        toast.querySelector('.rt-toast-close').addEventListener('click', cerrar);\n        if(duracion > 0){\n            setTimeout(cerrar, duracion);\n        }\n        return toast;\n    }\n\n    window.rtToast = {\n        info:    function(msg, dur){ return showToast('info', msg, dur); },\n        success: function(msg, dur){ return showToast('success', msg, dur); },\n        error:   function(msg, dur){ return showToast('error', msg, dur); },\n        warning: function(msg, dur){ return showToast('warning', msg, dur); }\n    };\n\n\n    \/\/ \u2500\u2500\u2500\u2500\u2500 Inline field errors \u2500\u2500\u2500\u2500\u2500\n    function $resolveField(selector){\n        if(typeof selector === 'string'){\n            return document.querySelector(selector);\n        }\n        if(selector && selector.jquery) return selector[0];\n        return selector;\n    }\n\n    window.rtFieldError = function(selector, mensaje){\n        var $field = $resolveField(selector);\n        if(!$field) return;\n\n        \/\/ Marcar el input con borde rojo\n        $field.classList.add('rt-input-error');\n\n        \/\/ Buscar contenedor .rt-field padre\n        var $container = $field.closest('.rt-field') || $field.parentNode;\n\n        \/\/ \u00bfYa existe un error en este contenedor? actualizarlo\n        var $existing = $container.querySelector('.rt-field-error');\n        if($existing){\n            $existing.textContent = mensaje;\n            \/\/ re-disparar animaci\u00f3n\n            $existing.style.animation = 'none';\n            void $existing.offsetWidth; \/\/ forzar reflow\n            $existing.style.animation = '';\n            return;\n        }\n\n        \/\/ Crear nuevo error\n        var $err = document.createElement('div');\n        $err.className = 'rt-field-error';\n        $err.textContent = mensaje;\n        $container.appendChild($err);\n\n        \/\/ Auto-limpiar cuando el usuario interact\u00faa con el campo\n        var limpiarUnaVez = function(){\n            window.rtClearFieldError($field);\n            $field.removeEventListener('change', limpiarUnaVez);\n            $field.removeEventListener('input', limpiarUnaVez);\n            $field.removeEventListener('focus', limpiarUnaVez);\n        };\n        $field.addEventListener('change', limpiarUnaVez);\n        $field.addEventListener('input',  limpiarUnaVez);\n        $field.addEventListener('focus',  limpiarUnaVez);\n    };\n\n    window.rtClearFieldError = function(selector){\n        var $field = $resolveField(selector);\n        if(!$field) return;\n        $field.classList.remove('rt-input-error');\n        var $container = $field.closest('.rt-field') || $field.parentNode;\n        var $err = $container.querySelector('.rt-field-error');\n        if($err && $err.parentNode) $err.parentNode.removeChild($err);\n    };\n\n    window.rtClearAllFieldErrors = function(){\n        document.querySelectorAll('.rt-input-error').forEach(function(el){\n            el.classList.remove('rt-input-error');\n        });\n        document.querySelectorAll('.rt-field-error').forEach(function(el){\n            if(el.parentNode) el.parentNode.removeChild(el);\n        });\n    };\n})();\n<\/script>\n\n<script>\n\/* ============================================================\n * \ud83d\udecf\ufe0f VALIDACI\u00d3N DE PLAZAS \/ CANTIDAD DE PERSONAS (Step 1)\n *\n * Reglas (suma = adultos + ni\u00f1os + infantes):\n *  ESTAD\u00cdA:\n *    - suma \u2264 maxPlazas (hab. m\u00e1s grande) \u2192 OK, sin aviso\n *    - maxPlazas < suma \u2264 9  \u2192 aviso CELESTE \"2 o m\u00e1s habitaciones\". BLOQUEA.\n *    - suma \u2265 10             \u2192 aviso AMARILLO con contactos. BLOQUEA.\n *  POR EL D\u00cdA:\n *    - suma \u2265 10 \u2192 aviso AMARILLO con contactos. BLOQUEA.\n *    - resto \u2192 OK.\n * ============================================================ *\/\n(function(){\n    var MAX_PLAZAS = 7;\n\n    \/\/ Datos de contacto (desde Ajustes del admin)\n    var CONTACTO = {\n        telefono: \"+56991586623\",\n        whatsapp: \"56996864771\",\n        email:    \"eventos@termasdepanimavida.cl\"    };\n\n    var $tipo     = document.getElementById('tipo');\n    var $adultos  = document.getElementById('adultos');\n    var $ninos    = document.getElementById('ninos');\n    var $infantes = document.getElementById('infantes');\n    var $aviso    = document.getElementById('rt-aviso-plazas');\n    var $rtForm   = document.querySelector('.rt-form');\n\n    \/\/ Recoge TODOS los botones que deben bloquearse: el \"Reservar\" del Step 1\n    \/\/ y el \"Aceptar\" del modal \"Modificar b\u00fasqueda\" (en Step 2 y Step 3).\n    function getBotones(){\n        return document.querySelectorAll(\n            '.rt-btn.reservar, .rt-btn[data-tipo=\"reserva\"], #rt-btn-aceptar-modal, .rt-btn-aceptar-modal'\n        );\n    }\n\n    if(!$tipo || !$adultos || !$aviso) return;\n\n    function intval(v){ var n = parseInt(v, 10); return isNaN(n) ? 0 : n; }\n\n    function mostrarAviso(tipoAviso, html){\n        $aviso.className = 'rt-aviso-plazas rt-aviso-' + tipoAviso;\n        $aviso.innerHTML = '<button type=\"button\" class=\"rt-aviso-cerrar\" aria-label=\"Cerrar\">\\u00D7<\/button>' + html;\n        $aviso.style.display = 'block';\n\n        \/\/ En m\u00f3vil: t\u00e9cnica portal. Mover el aviso al <body> para que escape\n        \/\/ de cualquier stacking context de Elementor\/tema y su z-index m\u00e1ximo\n        \/\/ gane sobre los botones flotantes del sitio (WhatsApp, etc).\n        var esMovil = window.matchMedia('(max-width: 768px)').matches;\n        if(esMovil){\n            if($aviso.parentNode !== document.body){\n                document.body.appendChild($aviso);\n            }\n        } else {\n            \/\/ En escritorio: devolverlo a su lugar original (dentro de .rt-form)\n            if($rtForm && $aviso.parentNode !== $rtForm){\n                $rtForm.insertBefore($aviso, $rtForm.firstChild);\n            }\n        }\n\n        if($rtForm){\n            $rtForm.classList.add('rt-tiene-aviso');\n            \/\/ Reservar espacio arriba (solo aplica en escritorio; en m\u00f3vil flota fijo)\n            requestAnimationFrame(function(){\n                if(window.matchMedia('(max-width: 768px)').matches){\n                    $rtForm.style.paddingTop = '';\n                } else {\n                    var h = $aviso.offsetHeight || 0;\n                    $rtForm.style.paddingTop = (h + 16) + 'px';\n                }\n            });\n        }\n        \/\/ Bot\u00f3n cerrar (\u00fatil sobre todo en m\u00f3vil, donde el aviso flota)\n        var $cerrar = $aviso.querySelector('.rt-aviso-cerrar');\n        if($cerrar){\n            $cerrar.addEventListener('click', function(){\n                $aviso.style.display = 'none';\n                if($rtForm) $rtForm.style.paddingTop = '';\n            });\n        }\n        $aviso.style.animation = 'none'; void $aviso.offsetWidth; $aviso.style.animation = '';\n    }\n    function ocultarAviso(){\n        $aviso.style.display = 'none';\n        $aviso.innerHTML = '';\n        if($rtForm){\n            $rtForm.classList.remove('rt-tiene-aviso');\n            $rtForm.style.paddingTop = '';\n        }\n    }\n    function bloquearBoton(bloquear){\n        getBotones().forEach(function($b){\n            if(bloquear){\n                $b.classList.add('rt-btn-bloqueado');\n                $b.setAttribute('data-bloqueado', '1');\n            } else {\n                $b.classList.remove('rt-btn-bloqueado');\n                $b.removeAttribute('data-bloqueado');\n            }\n        });\n    }\n\n    \/\/ Construye la l\u00ednea de contactos (tel \/ whatsapp \/ correo) como hiperv\u00ednculos chicos\n    function lineaContactos(){\n        var items = [];\n        if(CONTACTO.telefono){\n            var telLimpio = CONTACTO.telefono.replace(\/[^\\d+]\/g, '');\n            items.push('<a href=\"tel:' + telLimpio + '\">\\u260E\\uFE0F ' + CONTACTO.telefono + '<\/a>');\n        }\n        if(CONTACTO.whatsapp){\n            var waLimpio = CONTACTO.whatsapp.replace(\/[^\\d]\/g, '');\n            items.push('<a href=\"https:\/\/wa.me\/' + waLimpio + '\" target=\"_blank\" rel=\"noopener\">' +\n                '<svg viewBox=\"0 0 32 32\" width=\"15\" height=\"15\" style=\"vertical-align:-2px;margin-right:4px;\">' +\n                '<path fill=\"#25D366\" d=\"M16 .4C7.4.4.4 7.4.4 16c0 2.8.7 5.4 2 7.7L.3 31.6l8.1-2.1c2.2 1.2 4.8 1.9 7.5 1.9 8.6 0 15.6-7 15.6-15.6S24.6.4 16 .4z\"\/>' +\n                '<path fill=\"#fff\" d=\"M24.5 19.6c-.4-.2-2.5-1.2-2.9-1.4-.4-.1-.7-.2-.9.2-.3.4-1 1.4-1.3 1.6-.2.3-.5.3-.9.1-.4-.2-1.8-.7-3.4-2.1-1.3-1.1-2.1-2.5-2.4-2.9-.2-.4 0-.6.2-.8.2-.2.4-.5.6-.7.2-.2.3-.4.4-.7.1-.3.1-.5 0-.7-.1-.2-.9-2.2-1.3-3-.3-.8-.7-.7-.9-.7h-.8c-.3 0-.7.1-1 .5-.4.4-1.4 1.3-1.4 3.3s1.4 3.8 1.6 4.1c.2.3 2.8 4.3 6.8 6 .9.4 1.7.7 2.2.9.9.3 1.8.2 2.4.2.7-.1 2.2-.9 2.5-1.8.3-.9.3-1.6.2-1.8-.1-.1-.4-.2-.8-.4z\"\/>' +\n                '<\/svg>Ir a WhatsApp<\/a>');\n        }\n        if(CONTACTO.email){\n            items.push('<a href=\"mailto:' + CONTACTO.email + '\">\\u2709\\uFE0F ' + CONTACTO.email + '<\/a>');\n        }\n        if(items.length === 0) return '';\n        return '<div class=\"rt-aviso-contactos\">' + items.join('') + '<\/div>';\n    }\n\n    function validar(){\n        var tipo  = $tipo.value;\n        var total = intval($adultos.value) + intval($ninos && $ninos.value) + intval($infantes && $infantes.value);\n\n        \/\/ POR EL D\u00cdA: 10 o m\u00e1s personas \u2192 amarillo con contactos\n        if(tipo === 'dia'){\n            if(total >= 10){\n                mostrarAviso('eventos',\n                    '<p class=\"rt-aviso-titulo\"><span class=\"rt-aviso-emoji\">\\uD83D\\uDCDE<\/span>Grupos de <b>' + total + ' personas<\/b> requieren cotizaci\u00f3n especial<\/p>' +\n                    '<p class=\"rt-aviso-sub\">Si eres un grupo o delegaci\u00f3n especial, comun\u00edcate con ventas para un descuento especial por grupos grandes.<\/p>' +\n                    lineaContactos());\n                bloquearBoton(true);\n            } else {\n                ocultarAviso();\n                bloquearBoton(false);\n            }\n            return;\n        }\n\n        \/\/ ESTAD\u00cdA \u2014 10 o m\u00e1s personas \u2192 amarillo con contactos\n        if(total >= 10){\n            var nHabAmarillo = (MAX_PLAZAS > 0) ? Math.ceil(total \/ MAX_PLAZAS) : 2;\n            if(nHabAmarillo < 2) nHabAmarillo = 2;\n            mostrarAviso('eventos',\n                '<p class=\"rt-aviso-titulo\"><span class=\"rt-aviso-emoji\">\\uD83D\\uDCDE<\/span>Con <b>' + total + ' personas<\/b> necesitar\u00e1s <b>' + nHabAmarillo + ' o m\u00e1s habitaciones<\/b><\/p>' +\n                '<p class=\"rt-aviso-sub\">Si eres un grupo o delegaci\u00f3n especial, comun\u00edcate con ventas para un descuento especial por grupos grandes.<\/p>' +\n                lineaContactos());\n            bloquearBoton(true);\n            return;\n        }\n\n        \/\/ ESTAD\u00cdA \u2014 sobre la habitaci\u00f3n m\u00e1s grande (hasta 9) \u2192 celeste\n        if(MAX_PLAZAS > 0 && total > MAX_PLAZAS){\n            var nHabCeleste = Math.ceil(total \/ MAX_PLAZAS);\n            if(nHabCeleste < 2) nHabCeleste = 2;\n            mostrarAviso('info',\n                '<p class=\"rt-aviso-titulo\"><span class=\"rt-aviso-emoji\">\\uD83D\\uDECF\\uFE0F<\/span>Con <b>' + total + ' personas<\/b> necesitar\u00e1s <b>' + nHabCeleste + ' o m\u00e1s habitaciones<\/b><\/p>' +\n                '<p class=\"rt-aviso-sub\">Esta cantidad de hu\u00e9spedes supera la capacidad de una sola habitaci\u00f3n.<\/p>');\n            bloquearBoton(true);\n            return;\n        }\n\n        \/\/ Todo OK\n        ocultarAviso();\n        bloquearBoton(false);\n    }\n\n    \/\/ Al cambiar el TIPO (estad\u00eda \u2194 por el d\u00eda), limpiar la cantidad de personas\n    \/\/ a sus valores por defecto, para no arrastrar grupos grandes de un modo a otro.\n    $tipo.addEventListener('change', function(){\n        $adultos.value = '2';\n        if($ninos)    $ninos.value = '0';\n        if($infantes) $infantes.value = '0';\n        \/\/ Notificar a otros scripts (subtotales, etc.) que los valores cambiaron\n        try { $adultos.dispatchEvent(new Event('change', { bubbles: true })); } catch(e){}\n        if($ninos)    { try { $ninos.dispatchEvent(new Event('change', { bubbles: true })); } catch(e){} }\n        if($infantes) { try { $infantes.dispatchEvent(new Event('change', { bubbles: true })); } catch(e){} }\n        validar();\n    });\n    $adultos.addEventListener('change', validar);\n    if($ninos)    $ninos.addEventListener('change', validar);\n    if($infantes) $infantes.addEventListener('change', validar);\n\n    \/\/ Interceptar el click de cualquier bot\u00f3n bloqueado (Reservar o Aceptar del modal).\n    \/\/ A nivel document con captura: funciona aunque el modal se inyecte despu\u00e9s.\n    document.addEventListener('click', function(e){\n        var $b = e.target.closest(\n            '.rt-btn.reservar, .rt-btn[data-tipo=\"reserva\"], #rt-btn-aceptar-modal, .rt-btn-aceptar-modal'\n        );\n        if(!$b) return;\n        \/\/ Bloqueado si tiene el flag, o si hay un aviso de restricci\u00f3n visible.\n        var hayAviso = $aviso && $aviso.style.display !== 'none' && $aviso.innerHTML.trim() !== '';\n        if($b.getAttribute('data-bloqueado') === '1' || hayAviso){\n            e.preventDefault();\n            e.stopImmediatePropagation();\n            if(window.rtToast){\n                rtToast.warning('Para ese n\u00famero de personas, necesitas 2 o m\u00e1s habitaciones.');\n            }\n        }\n    }, true);\n\n    \/\/ Estado inicial\n    validar();\n})();\n<\/script><\/div>\n\t\t\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":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"template-wide-content.php","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"cozystay_single_page_hide_site_header":"","cozystay_single_page_site_header_source":"","cozystay_single_page_custom_site_header":"0","cozystay_single_page_custom_sticky_site_header":"0","cozystay_single_page_hide_page_title":"","cozystay_single_page_header_section_size":"","cozystay_single_page_header_background_color":"","cozystay_single_page_header_background_position_x":"center","cozystay_single_page_header_background_position_y":"center","cozystay_single_page_header_background_size":"cover","cozystay_single_page_header_background_repeat":"off","cozystay_single_page_header_background_scroll":"on","cozystay_single_page_header_text_color":"","cozystay_single_page_header_show_breadcrumb":"","cozystay_single_page_site_footer_hide_main":"","cozystay_single_custom_site_footer_main_source":"","cozystay_single_custom_site_footer_main":"0","cozystay_single_page_site_footer_hide_above":"","cozystay_single_custom_site_footer_above_source":"","cozystay_single_custom_site_footer_above":"0","cozystay_single_page_site_footer_hide_instagram":"","cozystay_single_page_site_footer_hide_bottom":"","cozystay_single_custom_mobile_menu_source":"","cozystay_single_custom_mobile_menu":"0","cozystay_single_custom_mobile_menu_animation":"","cozystay_single_custom_mobile_menu_width":"","cozystay_single_custom_mobile_menu_custom_width":375,"footnotes":""},"class_list":["post-14910","page","type-page","status-publish","hentry"],"aioseo_notices":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Reserva Termas - Termas de P\u00e1nimavida<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/termasdepanimavida.cl\/esp\/reserva-termas\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Reserva Termas - Termas de P\u00e1nimavida\" \/>\n<meta property=\"og:url\" content=\"https:\/\/termasdepanimavida.cl\/esp\/reserva-termas\/\" \/>\n<meta property=\"og:site_name\" content=\"Termas de P\u00e1nimavida\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/termasdepanimavida.cl\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-07T21:56:48+00:00\" \/>\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=\"1 minuto\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/termasdepanimavida.cl\/esp\/reserva-termas\/\",\"url\":\"https:\/\/termasdepanimavida.cl\/esp\/reserva-termas\/\",\"name\":\"Reserva Termas - Termas de P\u00e1nimavida\",\"isPartOf\":{\"@id\":\"https:\/\/termasdepanimavida.cl\/esp\/#website\"},\"datePublished\":\"2026-03-28T20:40:32+00:00\",\"dateModified\":\"2026-06-07T21:56:48+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/termasdepanimavida.cl\/esp\/reserva-termas\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/termasdepanimavida.cl\/esp\/reserva-termas\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/termasdepanimavida.cl\/esp\/reserva-termas\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Inicio\",\"item\":\"https:\/\/termasdepanimavida.cl\/esp\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Reserva Termas\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/termasdepanimavida.cl\/esp\/#website\",\"url\":\"https:\/\/termasdepanimavida.cl\/esp\/\",\"name\":\"Termas de P\u00e1nimavida\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/termasdepanimavida.cl\/esp\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/termasdepanimavida.cl\/esp\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/termasdepanimavida.cl\/esp\/#organization\",\"name\":\"Termas de P\u00e1nimavida\",\"url\":\"https:\/\/termasdepanimavida.cl\/esp\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/termasdepanimavida.cl\/esp\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/termasdepanimavida.cl\/2024\/wp-content\/uploads\/2024\/03\/Logotipo_Amarillo-copia.png\",\"contentUrl\":\"https:\/\/termasdepanimavida.cl\/2024\/wp-content\/uploads\/2024\/03\/Logotipo_Amarillo-copia.png\",\"width\":1080,\"height\":589,\"caption\":\"Termas de P\u00e1nimavida\"},\"image\":{\"@id\":\"https:\/\/termasdepanimavida.cl\/esp\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/termasdepanimavida.cl\",\"https:\/\/www.instagram.com\/termasdepanimavida.cl\/\",\"https:\/\/www.youtube.com\/@termasdepanimavida1822\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Reserva Termas - Termas de P\u00e1nimavida","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:\/\/termasdepanimavida.cl\/esp\/reserva-termas\/","og_locale":"es_ES","og_type":"article","og_title":"Reserva Termas - Termas de P\u00e1nimavida","og_url":"https:\/\/termasdepanimavida.cl\/esp\/reserva-termas\/","og_site_name":"Termas de P\u00e1nimavida","article_publisher":"https:\/\/www.facebook.com\/termasdepanimavida.cl","article_modified_time":"2026-06-07T21:56:48+00:00","twitter_card":"summary_large_image","twitter_misc":{"Tiempo de lectura":"1 minuto"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/termasdepanimavida.cl\/esp\/reserva-termas\/","url":"https:\/\/termasdepanimavida.cl\/esp\/reserva-termas\/","name":"Reserva Termas - Termas de P\u00e1nimavida","isPartOf":{"@id":"https:\/\/termasdepanimavida.cl\/esp\/#website"},"datePublished":"2026-03-28T20:40:32+00:00","dateModified":"2026-06-07T21:56:48+00:00","breadcrumb":{"@id":"https:\/\/termasdepanimavida.cl\/esp\/reserva-termas\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/termasdepanimavida.cl\/esp\/reserva-termas\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/termasdepanimavida.cl\/esp\/reserva-termas\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Inicio","item":"https:\/\/termasdepanimavida.cl\/esp\/"},{"@type":"ListItem","position":2,"name":"Reserva Termas"}]},{"@type":"WebSite","@id":"https:\/\/termasdepanimavida.cl\/esp\/#website","url":"https:\/\/termasdepanimavida.cl\/esp\/","name":"Termas de P\u00e1nimavida","description":"","publisher":{"@id":"https:\/\/termasdepanimavida.cl\/esp\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/termasdepanimavida.cl\/esp\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/termasdepanimavida.cl\/esp\/#organization","name":"Termas de P\u00e1nimavida","url":"https:\/\/termasdepanimavida.cl\/esp\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/termasdepanimavida.cl\/esp\/#\/schema\/logo\/image\/","url":"https:\/\/termasdepanimavida.cl\/2024\/wp-content\/uploads\/2024\/03\/Logotipo_Amarillo-copia.png","contentUrl":"https:\/\/termasdepanimavida.cl\/2024\/wp-content\/uploads\/2024\/03\/Logotipo_Amarillo-copia.png","width":1080,"height":589,"caption":"Termas de P\u00e1nimavida"},"image":{"@id":"https:\/\/termasdepanimavida.cl\/esp\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/termasdepanimavida.cl","https:\/\/www.instagram.com\/termasdepanimavida.cl\/","https:\/\/www.youtube.com\/@termasdepanimavida1822"]}]}},"_links":{"self":[{"href":"https:\/\/termasdepanimavida.cl\/esp\/wp-json\/wp\/v2\/pages\/14910","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/termasdepanimavida.cl\/esp\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/termasdepanimavida.cl\/esp\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/termasdepanimavida.cl\/esp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/termasdepanimavida.cl\/esp\/wp-json\/wp\/v2\/comments?post=14910"}],"version-history":[{"count":10,"href":"https:\/\/termasdepanimavida.cl\/esp\/wp-json\/wp\/v2\/pages\/14910\/revisions"}],"predecessor-version":[{"id":15371,"href":"https:\/\/termasdepanimavida.cl\/esp\/wp-json\/wp\/v2\/pages\/14910\/revisions\/15371"}],"wp:attachment":[{"href":"https:\/\/termasdepanimavida.cl\/esp\/wp-json\/wp\/v2\/media?parent=14910"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}