{"id":351,"date":"2026-10-08T22:57:11","date_gmt":"2026-10-08T22:57:11","guid":{"rendered":"https:\/\/puntarodezno.com\/?page_id=351"},"modified":"2026-10-09T03:39:53","modified_gmt":"2026-10-09T03:39:53","slug":"calendario","status":"publish","type":"page","link":"https:\/\/puntarodezno.com\/index.php\/calendario\/","title":{"rendered":"calendario"},"content":{"rendered":"        <section id=\"rdzn-51337\" class=\"rdzn-widget\" data-ajax=\"https:\/\/puntarodezno.com\/wp-admin\/admin-ajax.php\" data-nonce=\"2dbf7760c8\">\n          <div class=\"rdzn-header\"><div><p class=\"rdzn-eyebrow\">PUNTA RODEZNO<\/p><h2>Consulta disponibilidad<\/h2><p>Consulta las fechas disponibles y env\u00edanos tu solicitud. La reservaci\u00f3n se confirma directamente con nuestro equipo.<\/p>\n          <div class=\"rdzn-instructions\" aria-label=\"Instrucciones para solicitar fechas\">\n            <h3>\u00bfC\u00f3mo solicitar tu reservaci\u00f3n?<\/h3>\n            <ol>\n              <li><strong>Elige tu caba\u00f1a.<\/strong> Selecciona Chimonque o Abeto para consultar su disponibilidad.<\/li>\n              <li><strong>Selecciona tus fechas.<\/strong> Indica primero tu llegada y despu\u00e9s tu salida. Los d\u00edas ocupados no est\u00e1n disponibles.<\/li>\n              <li><strong>Completa tus datos.<\/strong> Ingresa tu nombre, correo, tel\u00e9fono y, si lo deseas, un mensaje.<\/li>\n              <li><strong>Env\u00eda tu solicitud.<\/strong> Recibiremos tus datos y nos pondremos en contacto contigo para confirmar la reservaci\u00f3n. Tambi\u00e9n podr\u00e1s continuar por WhatsApp.<\/li>\n            <\/ol>\n            <p class=\"rdzn-instructions-note\"><strong>Importante:<\/strong> enviar la solicitud no garantiza la reservaci\u00f3n. Nuestro equipo debe confirmarla.<\/p>\n          <\/div><\/div><\/div>\n          <form class=\"rdzn-form\"><div class=\"rdzn-fields\"><label for=\"rdzn-51337-cabin\">Selecciona caba\u00f1a aqu\u00ed<select id=\"rdzn-51337-cabin\" name=\"cabin\" required><option value=\"\" selected disabled>Selecciona caba\u00f1a aqu\u00ed \u25be<\/option><option value=\"chimonque\">Chimonque<\/option><option value=\"abeto\">Abeto<\/option><\/select><\/label><label>Entrada<input name=\"checkin\" type=\"date\" required><\/label><label>Salida<input name=\"checkout\" type=\"date\" required><\/label><\/div>\n          <div class=\"rdzn-calendar\"><div class=\"rdzn-calhead\"><button type=\"button\" class=\"rdzn-prev\" aria-label=\"Mes anterior\">\u2039<\/button><strong class=\"rdzn-month\"><\/strong><button type=\"button\" class=\"rdzn-next\" aria-label=\"Mes siguiente\">\u203a<\/button><\/div><div class=\"rdzn-grid rdzn-weekdays\"><span>L<\/span><span>M<\/span><span>M<\/span><span>J<\/span><span>V<\/span><span>S<\/span><span>D<\/span><\/div><div class=\"rdzn-grid rdzn-days\"><\/div><div class=\"rdzn-legend\"><span><i class=\"rdzn-free\"><\/i> Disponible<\/span><span><i class=\"rdzn-busy\"><\/i> Ocupado<\/span><\/div><\/div>\n          <div class=\"rdzn-guest\"><h3>Solicitar informaci\u00f3n<\/h3><div class=\"rdzn-fields\"><label>Nombre<input name=\"guest_name\" type=\"text\" maxlength=\"180\" required autocomplete=\"name\"><\/label><label>Correo electr\u00f3nico<input name=\"guest_email\" type=\"email\" required autocomplete=\"email\"><\/label><label>Tel\u00e9fono \/ WhatsApp<input name=\"guest_phone\" type=\"tel\" maxlength=\"60\" required autocomplete=\"tel\"><\/label><\/div><label>Mensaje (opcional)<textarea name=\"notes\" rows=\"3\" maxlength=\"2000\"><\/textarea><\/label><div class=\"rdzn-hp\" aria-hidden=\"true\"><label>Sitio web<input name=\"website\" tabindex=\"-1\" autocomplete=\"off\"><\/label><\/div><label class=\"rdzn-consent\"><input type=\"checkbox\" required> Acepto que Punta Rodezno utilice mis datos para atender esta solicitud de hospedaje, conforme a su aviso de privacidad.<\/label><button type=\"submit\" class=\"rdzn-submit\">Enviar solicitud<\/button><div class=\"rdzn-result\" role=\"status\" aria-live=\"polite\"><\/div><\/div><\/form>\n        <\/section>\n        <style>\n        #rdzn-51337{--rdzn:#304638;--rdzn-light:#f7f5ef;max-width:960px;margin:24px auto;padding:clamp(20px,4vw,42px);background:var(--rdzn-light);color:#252b25;border-radius:16px;font-family:inherit;box-sizing:border-box}#rdzn-51337 *{box-sizing:border-box}#rdzn-51337 h2{margin:0 0 8px;font-size:clamp(26px,4vw,38px)}#rdzn-51337 h3{margin:10px 0 18px}#rdzn-51337 .rdzn-eyebrow{font-size:11px;letter-spacing:.2em;color:#596b5b;font-weight:700}#rdzn-51337 .rdzn-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}#rdzn-51337 label{display:block;font-size:14px;font-weight:600;margin:10px 0}#rdzn-51337 input:not([type=checkbox]),#rdzn-51337 select,#rdzn-51337 textarea{width:100%;border:1px solid #b9c2b7;border-radius:7px;background:white;padding:11px;font:inherit;margin-top:7px;color:#252b25}#rdzn-51337 .rdzn-calendar{background:#fff;border:1px solid #e0e4dc;border-radius:12px;padding:16px;margin:22px 0}#rdzn-51337 .rdzn-calhead{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px}#rdzn-51337 .rdzn-calhead button{border:1px solid #d7ddd5;background:#fff;color:#304638;padding:4px 14px;border-radius:6px;font-size:24px;cursor:pointer}#rdzn-51337 .rdzn-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;text-align:center}#rdzn-51337 .rdzn-weekdays{font-size:12px;color:#6a7669;margin-bottom:8px}#rdzn-51337 .rdzn-days button{min-height:42px;border:0;border-radius:6px;background:#eaf1e8;color:#29452d;cursor:pointer;font:inherit}#rdzn-51337 .rdzn-days button:disabled{background:#eee;color:#aaa;cursor:not-allowed}#rdzn-51337 .rdzn-days button.rdzn-occupied{background:#e3d8d4;color:#785e55}#rdzn-51337 .rdzn-days button.rdzn-picked{outline:2px solid #304638;outline-offset:-2px;background:#cadbc8}#rdzn-51337 .rdzn-legend{display:flex;gap:18px;font-size:12px;margin-top:14px}#rdzn-51337 .rdzn-legend span{display:flex;align-items:center;gap:7px}#rdzn-51337 .rdzn-legend i{display:inline-block;width:13px;height:13px;border-radius:3px}#rdzn-51337 .rdzn-free{background:#eaf1e8}#rdzn-51337 .rdzn-busy{background:#e3d8d4}#rdzn-51337 .rdzn-consent{display:flex;gap:9px;align-items:flex-start;font-weight:400}#rdzn-51337 .rdzn-consent input{margin-top:4px}#rdzn-51337 .rdzn-submit,#rdzn-51337 .rdzn-wa{display:inline-block;border:0;border-radius:8px;background:#304638;color:#fff;padding:13px 22px;text-decoration:none;cursor:pointer;font-weight:700}#rdzn-51337 .rdzn-result{margin-top:14px}#rdzn-51337 .rdzn-wa{margin-top:12px}#rdzn-51337 .rdzn-hp{position:absolute;left:-99999px;width:1px;height:1px;overflow:hidden}@media(max-width:650px){#rdzn-51337 .rdzn-fields{grid-template-columns:1fr}#rdzn-51337 .rdzn-days button{min-height:35px}}\n          #rdzn-51337 select[name=\"cabin\"]{appearance:auto;cursor:pointer;border:2px solid #304638;font-weight:600;min-height:48px}#rdzn-51337 select[name=\"cabin\"]:invalid{color:#526653;background:#f0f5ed}#rdzn-51337 select[name=\"cabin\"]:focus-visible{outline:3px solid #a5bca9;outline-offset:2px}\n          #rdzn-51337 .rdzn-instructions{margin:20px 0 8px;padding:18px 20px;background:#fff;border:1px solid #e0e4dc;border-radius:12px}#rdzn-51337 .rdzn-instructions h3{font-size:19px;margin:0 0 12px;color:#304638}#rdzn-51337 .rdzn-instructions ol{padding-left:22px;margin:0}#rdzn-51337 .rdzn-instructions li{margin:0 0 10px;font-size:14px;line-height:1.55}#rdzn-51337 .rdzn-instructions-note{font-size:13px;line-height:1.5;margin:12px 0 0;padding:10px 12px;border-left:3px solid #304638;background:#f7f5ef}\n        <\/style>\n        <script>\n        (function(){\n          const root=document.getElementById(\"rdzn-51337\");if(!root)return;\n          const form=root.querySelector('form'),cabin=form.elements.cabin,cin=form.elements.checkin,cout=form.elements.checkout,result=root.querySelector('.rdzn-result'),days=root.querySelector('.rdzn-days'),title=root.querySelector('.rdzn-month');\n          const today=new Date();today.setHours(12,0,0,0);let view=new Date(today.getFullYear(),today.getMonth(),1),periods=[],loaded=false;\n          const pad=n=>String(n).padStart(2,'0');const fmt=d=>d.getFullYear()+'-'+pad(d.getMonth()+1)+'-'+pad(d.getDate());const parse=s=>new Date(s+'T12:00:00');\n          cin.min=fmt(today);cout.min=fmt(new Date(today.getFullYear(),today.getMonth(),today.getDate()+1));\n          const busy=date=>periods.some(p=>date>=p.checkin&&date<p.checkout);\n          const conflict=(a,b)=>periods.some(p=>a<p.checkout&&b>p.checkin);\n          function render(){title.textContent=view.toLocaleDateString('es-MX',{month:'long',year:'numeric'});days.innerHTML='';const offset=(new Date(view.getFullYear(),view.getMonth(),1).getDay()+6)%7;for(let i=0;i<offset;i++)days.appendChild(document.createElement('span'));\n            const count=new Date(view.getFullYear(),view.getMonth()+1,0).getDate();for(let n=1;n<=count;n++){const d=new Date(view.getFullYear(),view.getMonth(),n,12),iso=fmt(d),occupied=busy(iso),past=d<today,b=document.createElement('button');b.type='button';b.textContent=n;b.disabled=past||occupied||!loaded;if(occupied)b.classList.add('rdzn-occupied');if(iso===cin.value||iso===cout.value)b.classList.add('rdzn-picked');b.title=occupied?'Ocupado':past?'Fecha pasada':'Seleccionar fecha';b.addEventListener('click',()=>{if(!cin.value||cout.value||iso<=cin.value){cin.value=iso;cout.value='';}else{cout.value=iso;}render()});days.appendChild(b);}}\n          async function post(action,data){const body=new URLSearchParams({action,nonce:root.dataset.nonce,...data});const response=await fetch(root.dataset.ajax,{method:'POST',body,credentials:'same-origin',cache:'no-store'});const json=await response.json();if(!json.success)throw new Error(json.data?.message||'Ocurri\u00f3 un error.');return json.data;}\n          async function load(preserveMessage=false){loaded=false;if(!cabin.value){periods=[];if(!preserveMessage)result.textContent='Selecciona caba\u00f1a aqu\u00ed para consultar las fechas disponibles.';render();return;}if(!preserveMessage)result.textContent='Consultando disponibilidad\u2026';render();try{const data=await post('rdzn_availability',{cabin:cabin.value});periods=data.periods;loaded=true;if(!preserveMessage)result.textContent='';}catch(e){periods=[];result.textContent='No se pudo cargar la disponibilidad. Intenta recargar la p\u00e1gina.';}render();}\n          cabin.addEventListener('change',()=>{cin.value='';cout.value='';load()});cin.addEventListener('change',render);cout.addEventListener('change',render);\n          root.querySelector('.rdzn-prev').addEventListener('click',()=>{const previous=new Date(view.getFullYear(),view.getMonth()-1,1);if(previous>=new Date(today.getFullYear(),today.getMonth(),1)){view=previous;render()}});\n          root.querySelector('.rdzn-next').addEventListener('click',()=>{view=new Date(view.getFullYear(),view.getMonth()+1,1);render()});\n          form.addEventListener('submit',async e=>{e.preventDefault();result.textContent='';if(!cabin.value){result.textContent='Selecciona una caba\u00f1a antes de continuar.';cabin.focus();return}if(!loaded){result.textContent='Espera a que cargue la disponibilidad.';return}if(!form.reportValidity())return;if(!cin.value||!cout.value||cout.value<=cin.value||cin.value<fmt(today)){result.textContent='Selecciona fechas v\u00e1lidas de entrada y salida.';return}if(conflict(cin.value,cout.value)){result.textContent='El periodo incluye fechas ocupadas. Selecciona otras fechas.';return}\n            const button=root.querySelector('.rdzn-submit');button.disabled=true;button.textContent='Enviando\u2026';try{const data=await post('rdzn_request',Object.fromEntries(new FormData(form)));form.reset();cin.value='';cout.value='';render();result.textContent=data.message;if(data.whatsapp){const a=document.createElement('a');a.href=data.whatsapp;a.target='_blank';a.rel='noopener noreferrer';a.className='rdzn-wa';a.textContent='Continuar por WhatsApp';result.appendChild(document.createElement('br'));result.appendChild(a)}await load(true);}catch(err){result.textContent=err.message}finally{button.disabled=false;button.textContent='Enviar solicitud'}});\n          load();\n        })();\n        <\/script>\n        \n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_mi_skip_tracking":false,"footnotes":""},"class_list":["post-351","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/puntarodezno.com\/index.php\/wp-json\/wp\/v2\/pages\/351","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/puntarodezno.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/puntarodezno.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/puntarodezno.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/puntarodezno.com\/index.php\/wp-json\/wp\/v2\/comments?post=351"}],"version-history":[{"count":1,"href":"https:\/\/puntarodezno.com\/index.php\/wp-json\/wp\/v2\/pages\/351\/revisions"}],"predecessor-version":[{"id":352,"href":"https:\/\/puntarodezno.com\/index.php\/wp-json\/wp\/v2\/pages\/351\/revisions\/352"}],"wp:attachment":[{"href":"https:\/\/puntarodezno.com\/index.php\/wp-json\/wp\/v2\/media?parent=351"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}