{"id":5860,"date":"2025-10-02T17:32:37","date_gmt":"2025-10-02T23:32:37","guid":{"rendered":"https:\/\/cuilpilapan.com\/?page_id=5860"},"modified":"2026-09-14T00:30:25","modified_gmt":"2026-09-14T06:30:25","slug":"about-us","status":"publish","type":"page","link":"https:\/\/cuilpilapan.com\/es\/","title":{"rendered":"Inicio"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"5860\" class=\"elementor elementor-5860\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4ba3871 e-con-full e-flex e-con e-parent\" data-id=\"4ba3871\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-181bed3 elementor-widget elementor-widget-html\" data-id=\"181bed3\" 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<style>\r\n\/* === RESETEO GENERAL === *\/\r\nhtml, body {\r\n  margin: 0;\r\n  padding: 0;\r\n  width: 100%;\r\n  height: 100%;\r\n  overflow-x: hidden;\r\n  background: transparent;\r\n}\r\n\r\n\/* === CONTENEDOR DEL VIDEO === *\/\r\n.fullscreen-video {\r\n  position: relative;\r\n  width: 100vw;\r\n  margin-left: calc(50% - 50vw);\r\n  height: 100vh;\r\n  overflow: hidden;\r\n  background: transparent;\r\n}\r\n\r\n\/* === VIDEO DE VIMEO === *\/\r\n.fullscreen-video iframe {\r\n  position: absolute;\r\n  top: 50%;\r\n  left: 50%;\r\n  width: 100vw;\r\n  height: 56.25vw;\r\n  min-height: 100vh;\r\n  min-width: 177.78vh;\r\n  transform: translate(-50%, -50%) scale(1.03);\r\n  object-fit: cover;\r\n  border: none;\r\n  z-index: 0;\r\n  transition: transform 0.5s ease;\r\n}\r\n\r\n\/* === BOT\u00d3N CENTRADO \"VIEW TOURS\" === *\/\r\n.video-button {\r\n  position: absolute;\r\n  top: 50%;\r\n  left: 50%;\r\n  transform: translate(-50%, -50%);\r\n  background: transparent;\r\n  color: rgba(255, 255, 255, 0.75);\r\n  font-size: 1.3rem;\r\n  text-transform: uppercase;\r\n  font-weight: 600;\r\n  padding: 14px 36px;\r\n  border: 2px solid rgba(255, 255, 255, 0.4);\r\n  border-radius: 50px;\r\n  text-decoration: none;\r\n  z-index: 3;\r\n  opacity: 0;\r\n  animation: fadeIn 1.8s ease 3s forwards; \/* aparece a los 3 s *\/\r\n  transition: all 0.3s ease;\r\n}\r\n\r\n.video-button:hover {\r\n  background: rgba(255, 255, 255, 0.1);\r\n  color: rgba(255, 255, 255, 0.9);\r\n  transform: translate(-50%, -50%) scale(1.05);\r\n}\r\n\r\n\/* === ANIMACI\u00d3N FADE-IN === *\/\r\n@keyframes fadeIn {\r\n  from {\r\n    opacity: 0;\r\n    transform: translate(-50%, -55%);\r\n  }\r\n  to {\r\n    opacity: 1;\r\n    transform: translate(-50%, -50%);\r\n  }\r\n}\r\n\r\n\/* === FLECHA ANIMADA === *\/\r\n.scroll-down {\r\n  position: absolute;\r\n  bottom: 30px;\r\n  left: 50%;\r\n  transform: translateX(-50%);\r\n  font-size: 2.2rem;\r\n  color: rgba(255, 255, 255, 0.45);\r\n  text-shadow: 0 0 8px rgba(0,0,0,0.3);\r\n  animation: gentle-bounce 2s infinite ease-in-out;\r\n  z-index: 2;\r\n  user-select: none;\r\n  opacity: 0.85;\r\n}\r\n\r\n@keyframes gentle-bounce {\r\n  0%, 20%, 50%, 80%, 100% {\r\n    transform: translate(-50%, 0);\r\n  }\r\n  40% {\r\n    transform: translate(-50%, -8px);\r\n  }\r\n  60% {\r\n    transform: translate(-50%, -4px);\r\n  }\r\n}\r\n\r\n\/* === AJUSTES PARA TEL\u00c9FONOS === *\/\r\n@media (max-width: 1024px) {\r\n  .fullscreen-video {\r\n    height: 52vh;\r\n    width: 100vw;\r\n    margin-left: calc(50% - 50vw);\r\n  }\r\n\r\n  .fullscreen-video iframe {\r\n    width: 100vw;\r\n    height: 56.25vw;\r\n    min-height: 52vh;\r\n    min-width: 106.67vh;\r\n    transform: translate(-50%, -50%) scale(1.05);\r\n  }\r\n\r\n  .scroll-down {\r\n    font-size: 2.2rem;\r\n    bottom: 25px;\r\n    color: rgba(255, 255, 255, 0.55);\r\n  }\r\n\r\n  .video-button {\r\n    font-size: 0.9rem;       \/* m\u00e1s peque\u00f1o en m\u00f3viles *\/\r\n    padding: 8px 22px;\r\n  }\r\n}\r\n<\/style>\r\n\r\n<!-- === HTML === -->\r\n<div class=\"fullscreen-video\">\r\n  <iframe \r\n    id=\"vimeo-video\"\r\n    src=\"https:\/\/player.vimeo.com\/video\/1122409298?background=1&autoplay=1&muted=1&loop=1\"\r\n    allow=\"autoplay; fullscreen; picture-in-picture\"\r\n    title=\"Intro de la web mejorada\">\r\n  <\/iframe>\r\n\r\n  <!-- Bot\u00f3n centrado -->\r\n  <a href=\"https:\/\/cuilpilapan.com\/#listadetours\" class=\"video-button\">View Tours<\/a>\r\n\r\n  <!-- Flechita animada -->\r\n  <div class=\"scroll-down\">\u2304<\/div>\r\n<\/div>\r\n\r\n<script src=\"https:\/\/player.vimeo.com\/api\/player.js\"><\/script>\r\n<script>\r\n  \/\/ Hacer que el video empiece en el segundo 9.5\r\n  const player = new Vimeo.Player('vimeo-video');\r\n  player.setCurrentTime(9.5).catch(() => {});\r\n<\/script>\r\n\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-6db0b8e e-con-full full-width-container e-flex e-con e-child\" data-id=\"6db0b8e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-fba523a elementor-widget elementor-widget-spacer\" data-id=\"fba523a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3bdfc56 elementor-widget elementor-widget-text-editor\" data-id=\"3bdfc56\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><strong>\ud83c\udf3f<span style=\"color: #404040; font-family: Arial, sans-serif; font-size: 16px; text-align: start;\">\u2728<\/span>CUILPILAPAN A RIVER OF COLORS\u00a0 \ud83c\udf3f\u2728<\/strong><\/p>\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-4b26a23 elementor-widget-mobile__width-initial full-width-container elementor-widget elementor-widget-text-editor\" data-id=\"4b26a23\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p data-start=\"271\" data-end=\"519\">Just 1 hour and 13 minutes from Liberia Airport, on the slopes of Miravalles Volcano, in Fortuna de Bagaces, Guanacaste, lies Cuilpilapan, an ideal destination for nature lovers and sustainable tourism.<\/p><p data-start=\"501\" data-end=\"743\">We are a family project committed to the environment: we use solar energy and focus on showcasing and preserving the <strong data-start=\"287\" data-end=\"320\">native and endemic vegetation<\/strong> of the area, creating a space where culture, nature, and sustainability come together.<\/p><p data-start=\"745\" data-end=\"1147\">We border the newly declared Jorge Manuel Dengo National Park, a protected environment where biodiversity and landscapes remain intact. Here you can walk along cool trails, experience the change in climate from warm to cool within minutes, and regardless of the tour you choose, be amazed by waterfalls, a suspension bridge, viewpoints, canyons, and the rich preservation of wildlife.<\/p><p data-start=\"1268\" data-end=\"1418\">Tour prices are for self-guided experiences. No reservation is required for this option; you can simply arrive anytime between 8:00 a.m. and 4:00 p.m.<\/p><p data-start=\"1420\" data-end=\"1717\">However, if you prefer, you can pay an additional fee to be accompanied by a local guide, available in Spanish or English. Your guide will share insights about the local flora, unique wildlife, and the importance of preserving this valuable environment. Reservations are required for guided tours.<\/p><p data-start=\"1719\" data-end=\"1993\">You can also enhance your experience by adding extras to each package for an additional cost. For the sloth tour, advance reservation is required, as the animals are in their natural habitat and a staff member is arranged to locate and show them at the time of your arrival.<\/p><p data-start=\"999\" data-end=\"1161\"><span style=\"font-style: inherit; font-weight: inherit;\">Additionally, we offer mountain bike trails, allowing you to choose whether to visit the attractions on foot or by bicycle. The routes have a moderate difficulty level, making them ideal for those looking for a bit of adventure. We also have bicycles available for rent, or you may bring your own if you prefer.<\/span><\/p><p data-start=\"1343\" data-end=\"1507\"><strong data-start=\"1343\" data-end=\"1367\">Included services:<\/strong><br data-start=\"1367\" data-end=\"1370\" \/>All our tours include secure parking, restrooms, and access to our facilities, so you can enjoy your visit without worries.<\/p><p data-start=\"1509\" data-end=\"1547\"><strong data-start=\"1509\" data-end=\"1545\">Special rates and benefits:<\/strong><\/p><ul data-start=\"1548\" data-end=\"1695\"><li data-start=\"1548\" data-end=\"1608\"><span style=\"font-style: inherit; font-weight: inherit;\">Children from 5 to 12 years old pay only 50% and\u00a0<\/span><span data-start=\"649\" data-end=\"673\">Children ages<\/span> <span data-start=\"649\" data-end=\"673\">0 to 4<\/span> join for <span data-start=\"683\" data-end=\"691\">free<\/span><strong data-start=\"683\" data-end=\"691\">.<\/strong><\/li><\/ul><p data-start=\"1697\" data-end=\"2059\">The name \u201cCuilpilapan\u201d was chosen to revive the cultural identity of the ancient town of Cuipilapa, which has been lost over the years. It is of Nahuatl origin from the Chorotega region. means <strong>River of Colors<\/strong>, in honor of the stunning refraction of light that the crystal-clear water of our rivers reflects, creating a breathtaking display of shades.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-904f097 e-grid e-con-full e-con e-parent\" data-id=\"904f097\" data-element_type=\"container\" data-e-type=\"container\" id=\"listadetours\">\n\t\t<div class=\"elementor-element elementor-element-151598a e-con-full e-flex e-con e-child\" data-id=\"151598a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-fc5a3ef elementor-widget__width-initial elementor-arrows-position-inside elementor-pagination-position-outside elementor-widget elementor-widget-image-carousel\" data-id=\"fc5a3ef\" data-element_type=\"widget\" data-e-type=\"widget\" id=\"EssentialAdventure\" data-settings=\"{&quot;slides_to_show&quot;:&quot;1&quot;,&quot;navigation&quot;:&quot;both&quot;,&quot;autoplay&quot;:&quot;yes&quot;,&quot;pause_on_hover&quot;:&quot;yes&quot;,&quot;pause_on_interaction&quot;:&quot;yes&quot;,&quot;autoplay_speed&quot;:5000,&quot;infinite&quot;:&quot;yes&quot;,&quot;effect&quot;:&quot;slide&quot;,&quot;speed&quot;:500}\" data-widget_type=\"image-carousel.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-image-carousel-wrapper swiper\" role=\"region\" aria-roledescription=\"carousel\" aria-label=\"Carrusel de im\u00e1genes\" dir=\"ltr\">\n\t\t\t<div class=\"elementor-image-carousel swiper-wrapper\" aria-live=\"off\">\n\t\t\t\t\t\t\t\t<div class=\"swiper-slide\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"1 de 3\"><figure class=\"swiper-slide-inner\"><img decoding=\"async\" class=\"swiper-slide-image\" src=\"https:\/\/cuilpilapan.com\/wp-content\/uploads\/elementor\/thumbs\/7-scaled-rbmy5ufbqhwxd4a5xkewqvv3y4wlmlqdawsfc1gyww.jpg\" alt=\"7\" \/><\/figure><\/div><div class=\"swiper-slide\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"2 de 3\"><figure class=\"swiper-slide-inner\"><img decoding=\"async\" class=\"swiper-slide-image\" src=\"https:\/\/cuilpilapan.com\/wp-content\/uploads\/elementor\/thumbs\/DJI_0386-scaled-rbmym32xtg59ykox3l4utsbtfsuwmc7evakfu5e3eo.jpg\" alt=\"DCIM100MEDIADJI_0386.JPG\" \/><\/figure><\/div><div class=\"swiper-slide\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"3 de 3\"><figure class=\"swiper-slide-inner\"><img decoding=\"async\" class=\"swiper-slide-image\" src=\"https:\/\/cuilpilapan.com\/wp-content\/uploads\/elementor\/thumbs\/DSC_3656-1-scaled-rbxjk2h299k020d72j54k3zvzedq59rnp7hbyrj5j4.jpg\" alt=\"DSC_3656 (1)\" \/><\/figure><\/div>\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"elementor-swiper-button elementor-swiper-button-prev\" role=\"button\" tabindex=\"0\">\n\t\t\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-eicon-chevron-left\" viewBox=\"0 0 1000 1000\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M646 125C629 125 613 133 604 142L308 442C296 454 292 471 292 487 292 504 296 521 308 533L604 854C617 867 629 875 646 875 663 875 679 871 692 858 704 846 713 829 713 812 713 796 708 779 692 767L438 487 692 225C700 217 708 204 708 187 708 171 704 154 692 142 675 129 663 125 646 125Z\"><\/path><\/svg>\t\t\t\t\t<\/div>\n\t\t\t\t\t<div class=\"elementor-swiper-button elementor-swiper-button-next\" role=\"button\" tabindex=\"0\">\n\t\t\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-eicon-chevron-right\" viewBox=\"0 0 1000 1000\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M696 533C708 521 713 504 713 487 713 471 708 454 696 446L400 146C388 133 375 125 354 125 338 125 325 129 313 142 300 154 292 171 292 187 292 204 296 221 308 233L563 492 304 771C292 783 288 800 288 817 288 833 296 850 308 863 321 871 338 875 354 875 371 875 388 867 400 854L696 533Z\"><\/path><\/svg>\t\t\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<div class=\"swiper-pagination\"><\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bb98caa elementor-widget__width-initial elementor-widget elementor-widget-image-box\" data-id=\"bb98caa\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image-box.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-image-box-wrapper\"><div class=\"elementor-image-box-content\"><h5 class=\"elementor-image-box-title\"><span style=\"font-size: 1.125rem\">\u201c<\/span>Essential Adventure, Hanging Bridge, 1 Waterfall, and La Perdiz Viewpoint<span style=\"font-size: 1.125rem\">\u201d<\/span><span style=\"font-size: 1.125rem;font-style: inherit\"><\/span><br><\/h5><p class=\"elementor-image-box-description\">$23 Foreign<br>\u20a19 500 National<br>Duration: 2 hours,\n<br>Distance: 3,2 km (1.98 miles)<br> Designed for all physical abilities<br><\/p><\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3ba3aff elementor-align-center elementor-widget__width-initial elementor-widget elementor-widget-button\" data-id=\"3ba3aff\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/cuilpilapan.com\/services\/#minitour-dedia\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-long-arrow-alt-right\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M313.941 216H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h301.941v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.569 0-33.941l-86.059-86.059c-15.119-15.119-40.971-4.411-40.971 16.971V216z\"><\/path><\/svg>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">More information<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\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-9d3dd52 elementor-widget__width-initial elementor-widget elementor-widget-html\" data-id=\"9d3dd52\" 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<div style=\"text-align:center; margin:1px 0;\">\r\n    <button\r\n        onclick=\"openBookingForm(this)\"\r\n        data-tour=\"Essential Adventure\"\r\n        data-desc=\"Total tour distance: 3 km \/ 1.86 miles (round trip), with an approximate duration of 2 hours.\"\r\n        data-precio-adulto-nacional=\"9500\"\r\n        data-precio-adulto-extranjero=\"23\"\r\n        data-precio-nino-nacional=\"4750\"\r\n        data-precio-nino-extranjero=\"11.5\"\r\n        style=\"background:#ff1a50; color:white; font-size:15px; padding:15px 77px; border:none; border-radius:30px; cursor:pointer; box-shadow: 0 4px 10px rgba(255, 26, 80, 0.4);\">\r\n        BOOK NOW\r\n    <\/button>\r\n<\/div>\r\n\r\n<div id=\"bookingModal\" style=\"display:none; position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(0,0,0,0.7); z-index:9999; overflow:auto;\">\r\n    <div style=\"background:#fff; max-width:750px; margin:50px auto; padding:30px; border-radius:15px; position:relative; box-shadow: 0 5px 15px rgba(0,0,0,0.3);\">\r\n\r\n        <button onclick=\"closeBookingForm()\" style=\"position:absolute; top:15px; right:15px; font-size:24px; background:none; border:none; cursor:pointer; color:#333;\">\u2716<\/button>\r\n\r\n        <h2 style=\"text-align:center; margin-bottom:10px; color:#2E7D32; font-size:26px;\" id=\"tourTitle\"><\/h2>\r\n        <p style=\"text-align:center; margin-bottom:25px; color:#555;\" id=\"tourDesc\"><\/p>\r\n\r\n        <form id=\"bookingForm\" onsubmit=\"event.preventDefault();\">\r\n\r\n            <div style=\"margin-top:20px; margin-bottom:16px;\">\r\n                <label for=\"fecha\" class=\"form-label\"><b>\ud83d\udcc5 Fecha (Select Date):<\/b><\/label><span id=\"fecha-asterisk\" class=\"field-asterisk\" style=\"display:none\">*<\/span>\r\n                <input type=\"date\" id=\"fecha\" class=\"input\" required onchange=\"calcularTotal()\">\r\n                <span id=\"fecha-error\" class=\"field-error\" style=\"display:none\"><\/span>\r\n            <\/div>\r\n\r\n            <div style=\"margin-bottom:12px;\">\r\n                <label for=\"hora\" class=\"form-label\"><b>Hora (Select Time):<\/b><\/label><span id=\"hora-asterisk\" class=\"field-asterisk\" style=\"display:none\">*<\/span>\r\n                <select id=\"hora\" class=\"input\">\r\n                    <option value=\"\" selected disabled>Select a time<\/option>\r\n                    <option value=\"8:00 am\">8:00 am<\/option>\r\n                    <option value=\"9:00 am\">9:00 am<\/option>\r\n                    <option value=\"10:00 am\">10:00 am<\/option>\r\n                    <option value=\"1:00 pm\">1:00 pm<\/option>\r\n                    <option value=\"2:00 pm\">2:00 pm<\/option>\r\n                <\/select>\r\n                <span id=\"hora-error\" class=\"field-error\" style=\"display:none\"><\/span>\r\n            <\/div>\r\n\r\n            <div style=\"margin-bottom:12px;\">\r\n                <label for=\"tipoVisitante\" class=\"form-label\"><b>Visitor Type:<\/b><\/label><span id=\"tipoVisitante-asterisk\" class=\"field-asterisk\" style=\"display:none\">*<\/span>\r\n                <select id=\"tipoVisitante\" class=\"input\" onchange=\"onVisitorTypeChange(); calcularTotal()\">\r\n                    <option value=\"\" selected disabled>Select visitor type<\/option>\r\n                    <option value=\"extranjero\">Foreign \/ Extranjero<\/option>\r\n                    <option value=\"nacional\">Local \/ Nacional<\/option>\r\n                <\/select>\r\n                <span id=\"tipoVisitante-error\" class=\"field-error\" style=\"display:none\"><\/span>\r\n            <\/div>\r\n\r\n            <div id=\"guideLanguageDiv\" style=\"display:none; margin-bottom:15px;\">\r\n                <label for=\"guideLanguage\" class=\"form-label\"><b>Select Guide Language:<\/b><\/label><span id=\"guideLanguage-asterisk\" class=\"field-asterisk\" style=\"display:none\">*<\/span>\r\n                <select id=\"guideLanguage\" class=\"input\">\r\n                    <option value=\"\" selected disabled>Select guide language<\/option>\r\n                    <option value=\"English\">English<\/option>\r\n                    <option value=\"Spanish\">Spanish<\/option>\r\n                <\/select>\r\n                <p class=\"note\"><i>Choose the tour guide's language.<\/i><\/p>\r\n                <span id=\"guideLanguage-error\" class=\"field-error\" style=\"display:none\"><\/span>\r\n            <\/div>\r\n\r\n<h3 class=\"section-title\">Travelers<\/h3>\r\n<p class=\"section-note\">Prices vary by age and number of people.<\/p>\r\n<p class=\"note\"><i>Total travelers: <span id=\"totalTravelers\" style=\"font-weight:bold;\">0<\/span><\/i><\/p>\r\n<p class=\"note discount-note\" id=\"discountNote\"><i>10% discount available for groups of 10 or more people.<\/i><\/p>\r\n\r\n<div class=\"traveler-row\">\r\n<div class=\"traveler-info\">\r\n<label for=\"adultos\" class=\"traveler-label\">Adults (13-70 years):<span class=\"discount-tag discount-green\">-0%<\/span><\/label>\r\n<\/div>\r\n<div class=\"quantity-control\">\r\n<button type=\"button\" class=\"qty-btn minus-btn\" data-target=\"adultos\">-<\/button>\r\n<input type=\"number\" id=\"adultos\" min=\"0\" value=\"0\" class=\"input-num\" oninput=\"calcularTotal()\">\r\n<button type=\"button\" class=\"qty-btn plus-btn\" data-target=\"adultos\">+<\/button>\r\n<\/div>\r\n<\/div>\r\n<div class=\"traveler-row\">\r\n<div class=\"traveler-info\">\r\n<label for=\"ninos\" class=\"traveler-label\">Children (5-12 years):<span class=\"discount-tag discount-green\">-50%*<\/span><\/label>\r\n<\/div>\r\n<div class=\"quantity-control\">\r\n<button type=\"button\" class=\"qty-btn minus-btn\" data-target=\"ninos\">-<\/button>\r\n<input type=\"number\" id=\"ninos\" min=\"0\" value=\"0\" class=\"input-num\" oninput=\"calcularTotal()\">\r\n<button type=\"button\" class=\"qty-btn plus-btn\" data-target=\"ninos\">+<\/button>\r\n<\/div>\r\n<\/div>\r\n<div class=\"traveler-row\">\r\n<div class=\"traveler-info\">\r\n<label for=\"bebes\" class=\"traveler-label\">Babies (0-4 years):<span class=\"discount-tag discount-green\">FREE*<\/span><\/label>\r\n<\/div>\r\n<div class=\"quantity-control\">\r\n<button type=\"button\" class=\"qty-btn minus-btn\" data-target=\"bebes\">-<\/button>\r\n<input type=\"number\" id=\"bebes\" min=\"0\" value=\"0\" class=\"input-num\" oninput=\"calcularTotal()\">\r\n<button type=\"button\" class=\"qty-btn plus-btn\" data-target=\"bebes\">+<\/button>\r\n<\/div>\r\n<\/div>\r\n\r\n<h3 class=\"section-title\">Add extras<\/h3>\r\n<p class=\"section-note\">Select the extra items you need and add the quantity.<\/p>\r\n\r\n<div class=\"extra-item extra-item-featured no-qty-row\">\r\n    <div class=\"extra-label-info\">\r\n        <span class=\"featured-badge\">\u2b50 Recommended<\/span>\r\n        <label class=\"extra-label\" style=\"display:block; margin-top:6px;\">\r\n            <input type=\"checkbox\" id=\"extraGuia\" onchange=\"calcularTotal()\">\r\n            Optional Guide to accompany your group (<span id=\"precioGuia\" class=\"price-span\" style=\"color:black;\">\u20a110000<\/span>)\r\n        <\/label>\r\n        <p class=\"note\" style=\"margin-left:25px; margin-top:2px;\">\r\n            <i>(A private guide will accompany your group during the whole tour)<\/i>\r\n        <\/p>\r\n    <\/div>\r\n    <div class=\"quantity-control extra-qty-control\" style=\"visibility:hidden; height:36px; border:none; width:110px; margin-left:10px;\"><\/div>\r\n<\/div>\r\n\r\n<div class=\"extra-item no-qty-row\">\r\n    <div class=\"extra-label-info\">\r\n        <label class=\"extra-label\" style=\"display:block;\">\r\n            <input type=\"checkbox\" id=\"extraPerezoso\" onchange=\"calcularTotal()\"> \r\n            Sloth & Tropical Birds Tour (<span id=\"precioPerezoso\" class=\"price-span\" style=\"color:black;\">$10<\/span> per person)\r\n        <\/label>\r\n        <p class=\"note\" style=\"margin-left:25px; margin-top:2px;\">\r\n            <i>(Includes binoculars and telescope use)<\/i>\r\n        <\/p>\r\n    <\/div>\r\n    <div class=\"quantity-control extra-qty-control\" style=\"visibility:hidden; height:36px; border:none; width:110px; margin-left:10px;\"><\/div>\r\n<\/div>\r\n\r\n<div class=\"extra-item with-qty-row\">\r\n    <div class=\"extra-label-info\">\r\n        <label class=\"extra-label\" for=\"botellasAgua\">Bottled Water (<span id=\"precioAgua\" class=\"price-span\" style=\"color:black;\">$2<\/span> each)<\/label>\r\n    <\/div>\r\n    <div class=\"quantity-control extra-qty-control\">\r\n        <button type=\"button\" class=\"qty-btn minus-btn\" data-target=\"botellasAgua\">-<\/button>\r\n        <input type=\"number\" id=\"botellasAgua\" min=\"0\" value=\"0\" class=\"input-num extra-num\" oninput=\"calcularTotal()\">\r\n        <button type=\"button\" class=\"qty-btn plus-btn\" data-target=\"botellasAgua\">+<\/button>\r\n    <\/div>\r\n    <input type=\"checkbox\" id=\"checkAgua\" onchange=\"calcularTotal()\" style=\"display:none;\"\/>\r\n<\/div>\r\n\r\n<div class=\"extra-item with-qty-row\">\r\n    <div class=\"extra-label-info\">\r\n        <label class=\"extra-label\" for=\"numToallas\">Towels (<span id=\"precioToallas\" class=\"price-span\" style=\"color:black;\">$2<\/span> each)<\/label>\r\n    <\/div>\r\n    <div class=\"quantity-control extra-qty-control\">\r\n        <button type=\"button\" class=\"qty-btn minus-btn\" data-target=\"numToallas\">-<\/button>\r\n        <input type=\"number\" id=\"numToallas\" min=\"0\" value=\"0\" class=\"input-num extra-num\" oninput=\"calcularTotal()\">\r\n        <button type=\"button\" class=\"qty-btn plus-btn\" data-target=\"numToallas\">+<\/button>\r\n    <\/div>\r\n    <input type=\"checkbox\" id=\"checkToallas\" onchange=\"calcularTotal()\" style=\"display:none;\"\/>\r\n<\/div>\r\n\r\n<div class=\"extra-item with-qty-row\">\r\n    <div class=\"extra-label-info\">\r\n        <label class=\"extra-label\" for=\"numSnacks\">Granuts Snacks (<span id=\"precioSnacks\" class=\"price-span\" style=\"color:black;\">$2<\/span> each)<\/label>\r\n    <\/div>\r\n    <div class=\"quantity-control extra-qty-control\">\r\n        <button type=\"button\" class=\"qty-btn minus-btn\" data-target=\"numSnacks\">-<\/button>\r\n        <input type=\"number\" id=\"numSnacks\" min=\"0\" value=\"0\" class=\"input-num extra-num\" oninput=\"calcularTotal()\">\r\n        <button type=\"button\" class=\"qty-btn plus-btn\" data-target=\"numSnacks\">+<\/button>\r\n    <\/div>\r\n    <input type=\"checkbox\" id=\"checkSnacks\" onchange=\"calcularTotal()\" style=\"display:none;\"\/>\r\n<\/div>\r\n\r\n<div class=\"extra-item with-qty-row\">\r\n    <div class=\"extra-label-info\">\r\n        <label class=\"extra-label\" for=\"numPonchos\">Rain Ponchos (<span id=\"precioPonchos\" class=\"price-span\" style=\"color:black;\">$2<\/span> each)<\/label>\r\n        <p class=\"note\" style=\"margin-left:25px; margin-top:2px;\">\r\n            <i>(Recommended for rainy season)<\/i>\r\n        <\/p>\r\n    <\/div>\r\n    <div class=\"quantity-control extra-qty-control\">\r\n        <button type=\"button\" class=\"qty-btn minus-btn\" data-target=\"numPonchos\">-<\/button>\r\n        <input type=\"number\" id=\"numPonchos\" min=\"0\" value=\"0\" class=\"input-num extra-num\" oninput=\"calcularTotal()\">\r\n        <button type=\"button\" class=\"qty-btn plus-btn\" data-target=\"numPonchos\">+<\/button>\r\n    <\/div>\r\n    <input type=\"checkbox\" id=\"checkPonchos\" onchange=\"calcularTotal()\" style=\"display:none;\"\/>\r\n<\/div>\r\n\r\n<div class=\"extra-item with-qty-row\">\r\n    <div class=\"extra-label-info\">\r\n        <label class=\"extra-label\" for=\"numBinoculares\">Binocular Use (<span id=\"precioBinoculares\" class=\"price-span\" style=\"color:black;\">$5<\/span>)<\/label>\r\n    <\/div>\r\n    <div class=\"quantity-control extra-qty-control\">\r\n        <button type=\"button\" class=\"qty-btn minus-btn\" data-target=\"numBinoculares\">-<\/button>\r\n        <input type=\"number\" id=\"numBinoculares\" min=\"0\" value=\"0\" class=\"input-num extra-num\" oninput=\"calcularTotal()\">\r\n        <button type=\"button\" class=\"qty-btn plus-btn\" data-target=\"numBinoculares\">+<\/button>\r\n    <\/div>\r\n<\/div>\r\n\r\n<p class=\"note\" style=\"margin-left: 0; margin-top: -5px; margin-bottom: 12px; text-align: left; font-size: 0.85em; width: 100%;\">\r\n    <i>(Binoculars only available if you do NOT select the Sloth & Tropical Birds Tour)<\/i>\r\n<\/p>\r\n\r\n<div class=\"extra-item with-qty-row final-extra-row\">\r\n    <div class=\"extra-label-info\">\r\n        <label class=\"extra-label\" for=\"numBicicletas\">Bicycle Rental (<span id=\"precioBicicleta\" class=\"price-span\" style=\"color:black;\">$20<\/span> each)<\/label>\r\n        <p class=\"note\" style=\"margin-left:25px; margin-top:2px;\">\r\n            <i>(Rent a bike for your visit)<\/i>\r\n        <\/p>\r\n    <\/div>\r\n    <div class=\"quantity-control extra-qty-control\">\r\n        <button type=\"button\" class=\"qty-btn minus-btn\" data-target=\"numBicicletas\">-<\/button>\r\n        <input type=\"number\" id=\"numBicicletas\" min=\"0\" value=\"0\" class=\"input-num extra-num\" oninput=\"calcularTotal()\">\r\n        <button type=\"button\" class=\"qty-btn plus-btn\" data-target=\"numBicicletas\">+<\/button>\r\n    <\/div>\r\n<\/div>\r\n\r\n            <h3 class=\"section-title\">Customer Information<\/h3>\r\n\r\n            <label for=\"nombre\" class=\"form-label\">Full Name:<\/label><span id=\"nombre-asterisk\" class=\"field-asterisk\" style=\"display:none\">*<\/span>\r\n            <input type=\"text\" id=\"nombre\" class=\"input\" style=\"margin-bottom:6px;\">\r\n            <span id=\"nombre-error\" class=\"field-error\" style=\"display:none\"><\/span>\r\n\r\n            <label for=\"email\" class=\"form-label\">Email:<\/label><span id=\"email-asterisk\" class=\"field-asterisk\" style=\"display:none\">*<\/span>\r\n            <input type=\"email\" id=\"email\" class=\"input\" style=\"margin-bottom:6px;\">\r\n            <span id=\"email-error\" class=\"field-error\" style=\"display:none\"><\/span>\r\n\r\n            <label for=\"cedula\" class=\"form-label\">ID \/ Passport Number (C\u00e9dula o Pasaporte):<\/label><span id=\"cedula-asterisk\" class=\"field-asterisk\" style=\"display:none\">*<\/span>\r\n            <input type=\"text\" id=\"cedula\" class=\"input\" style=\"margin-bottom:6px; text-transform:uppercase;\" placeholder=\"Ej: 112340567 (sin guiones ni espacios)\">\r\n            <p class=\"note\"><i>Enter your ID or passport number without dashes or spaces. \/ Ingrese su c\u00e9dula o pasaporte sin guiones ni espacios.<\/i><\/p>\r\n            <span id=\"cedula-error\" class=\"field-error\" style=\"display:none\"><\/span>\r\n\r\n            <label for=\"acompanantes\" class=\"form-label\">Companion Names: <span id=\"acompanantes-note\" style=\"font-weight:normal; font-size:0.9em; color:#555;\">(Required if 2+ travelers)<\/span><\/label><span id=\"acompanantes-asterisk\" class=\"field-asterisk\" style=\"display:none\">*<\/span>\r\n            <textarea id=\"acompanantes\" class=\"input\" style=\"margin-bottom:12px;\" placeholder=\"List companion names separated by commas\"><\/textarea>\r\n            <span id=\"acompanantes-error\" class=\"field-error\" style=\"display:none\"><\/span>\r\n\r\n            <div style=\"margin:10px 0;\">\r\n                <style>\r\n                    #acceptTermsLink {\r\n                        color: #1A237E;\r\n                        font-weight: bold;\r\n                        text-decoration: none;\r\n                        transition: color 0.3s;\r\n                    }\r\n                    #acceptTermsLink:hover {\r\n                        color: #0D1033;\r\n                        text-decoration: underline;\r\n                    }\r\n                <\/style>\r\n                <label>\r\n                    <input type=\"checkbox\" id=\"acceptTerms\" style=\"margin-right:8px;\" onchange=\"clearFieldError(this)\">\r\n                    <span style=\"color:black;\">I have read and accept the <\/span>\r\n                    <a id=\"acceptTermsLink\" href=\"https:\/\/cuilpilapan.com\/terms-and-conditions\/\" target=\"_blank\">Terms and Conditions<\/a>\r\n                    <span style=\"color:black;\"> and consent to the use of my personal data for the reservation process.<\/span>\r\n                <\/label>\r\n                <span id=\"terms-error\" class=\"field-error\" style=\"display:none\"><\/span>\r\n            <\/div>\r\n\r\n            <h2 style=\"margin-top: 8px; font-size: 28px; color: #333;\">Total: <span id=\"total\" style=\"color:#ff8c00;\">$0<\/span><\/h2>\r\n            <div id=\"discountApplied\" style=\"margin-bottom:8px; font-weight:bold; color:#2d6a4f; display:none;\"><\/div>\r\n            <div id=\"totalAfterDiscount\" style=\"margin-bottom:8px; font-weight:normal; text-decoration:line-through; color:#aaa; display:none;\"><\/div>\r\n\r\n            <div id=\"tilopayDepositNote\" style=\"background: #e6f7ff; border: 1px solid #91d5ff; padding: 10px; border-radius: 5px; margin-top: 10px;\">\r\n                <strong style=\"color: #0056b3;\">IMPORTANT NOTE:<\/strong> When booking, a deposit will be charged for\r\n                <span id=\"depositAmountDisplay\" style=\"font-weight:bold;\"><\/span> (\u20a17000 local \/ $15 foreign). The remaining amount must be canceled upon arrival.\r\n            <\/div>\r\n\r\n            <div style=\"background:#f9f9f9; padding:15px; border-radius:10px; box-shadow:0 2px 6px rgba(0,0,0,0.1); margin-top:20px;\">\r\n                <b>Recommendations:<\/b> Choose the tour that suits your physical capacity to fully enjoy the adventure.\r\n                Bring appropriate clothing, extra clothes, snacks, water to stay hydrated,\r\n                and any personal medication if you have a medical condition.\r\n                Feel free to ask any questions.\r\n            <\/div>\r\n\r\n            <div style=\"text-align:center; margin-top:25px;\">\r\n                <button id=\"btnProceed\" onclick=\"onProceedToPayment()\" style=\"background:#ff8c00; color:white; font-size:18px; padding:15px 40px; border:none; border-radius:30px; cursor:pointer; margin-bottom:10px; box-shadow: 0 4px 10px rgba(255, 140, 0, 0.4);\">\r\n                    Proceder a reservar \/ Proceed to payment\r\n                <\/button>\r\n            <\/div>\r\n\r\n            <div id=\"paymentSection\" style=\"display:none; margin-top:25px; border-top:1px solid #eee; padding-top:16px;\">\r\n                <h3 class=\"section-title\" style=\"font-size:20px;\">Seleccione su m\u00e9todo de pago \/ Select payment method<\/h3>\r\n                \r\n                <div style=\"display:flex; flex-direction:column; gap:12px;\">\r\n\r\n                    <label style=\"display:flex; align-items:center; gap:10px; padding:10px; border:1px solid #ddd; border-radius:10px; cursor:pointer; transition:transform 0.2s; background:#fafafa;\">\r\n                        <input type=\"radio\" name=\"paymentMethod\" value=\"tarjeta\" onchange=\"onPaymentMethodChange()\" style=\"transform:scale(1.3); margin-right:6px;\">\r\n                        <img decoding=\"async\" src=\"https:\/\/cuilpilapan.com\/wp-content\/uploads\/2025\/10\/WhatsApp-Image-2025-10-22-at-3.59.08-PM.jpeg\"\r\n                            alt=\"Tilopay\" width=\"50\" height=\"50\" style=\"border-radius:8px; transition:transform 0.3s;\">\r\n                        <span style=\"font-size:16px;\">Credit\/Debit Card (Tilopay) - Deposit Only<\/span>\r\n                    <\/label>\r\n\r\n                    <label style=\"display:flex; align-items:center; gap:10px; padding:10px; border:1px solid #ddd; border-radius:10px; cursor:pointer; transition:transform 0.2s; background:#fafafa;\">\r\n                        <input type=\"radio\" name=\"paymentMethod\" value=\"simpe\" onchange=\"onPaymentMethodChange()\" style=\"transform:scale(1.3); margin-right:6px;\">\r\n                        <img decoding=\"async\" src=\"https:\/\/cuilpilapan.com\/wp-content\/uploads\/2025\/10\/WhatsApp-Image-2025-10-22-at-3.57.36-PM.jpeg\"\r\n                            alt=\"Simpe M\u00f3vil\" width=\"50\" height=\"50\" style=\"border-radius:8px; transition:transform 0.3s;\">\r\n                        <span style=\"font-size:16px;\">Simpe M\u00f3vil - Deposit Only (or full payment)<\/span>\r\n                    <\/label>\r\n\r\n                    <label style=\"display:flex; align-items:center; gap:10px; padding:10px; border:1px solid #ddd; border-radius:10px; cursor:pointer; transition:transform 0.2s; background:#fafafa;\">\r\n                        <input type=\"radio\" name=\"paymentMethod\" value=\"binance\" onchange=\"onPaymentMethodChange()\" style=\"transform:scale(1.3); margin-right:6px;\">\r\n                        <img decoding=\"async\" src=\"https:\/\/cuilpilapan.com\/wp-content\/uploads\/2025\/10\/WhatsApp-Image-2025-10-22-at-3.56.45-PM.jpeg\"\r\n                            alt=\"Binance\" width=\"50\" height=\"50\" style=\"border-radius:8px; transition:transform 0.3s;\">\r\n                        <span style=\"font-size:16px;\">Binance Payment (USDT) - Deposit Only (or full payment)<\/span>\r\n                    <\/label>\r\n                <\/div>\r\n\r\n<style>\r\n#paymentSection label:hover {\r\ntransform: scale(1.03);\r\nbackground: #fffbe6;\r\nbox-shadow: 0 2px 6px rgba(0,0,0,0.1);\r\n}\r\n#paymentSection img:hover {\r\ntransform: scale(1.1) rotate(3deg);\r\n}\r\n<\/style>\r\n\r\n<div id=\"paymentDetails\" style=\"margin-top:12px;\"><\/div>\r\n\r\n<div id=\"tilopayButtonContainer\" style=\"text-align:center; margin-top:20px; display:none;\">\r\n<button type=\"button\" onclick=\"handleCardPayment()\"\r\n                        style=\"\r\n                            background-color: #007bff;\r\n                            color: white;\r\n                            padding: 15px 30px;\r\n                            border: none;\r\n                            border-radius: 5px;\r\n                            font-size: 18px;\r\n                            cursor: pointer;\r\n                            box-shadow: 0 4px 6px rgba(0,0,0,0.1);\r\n                            transition: background-color 0.3s;\r\n                        \"\r\n                        onmouseover=\"this.style.backgroundColor='#0056b3'\"\r\n                        onmouseout=\"this.style.backgroundColor='#007bff'\"\r\n                    >\r\n                        \ud83d\udcb3 Pay Deposit Now with Card (Tilopay)\r\n                    <\/button>\r\n                    <p style=\"margin-top:10px; font-size:0.9em; color:#555;\">You will be redirected to the Tilopay payment gateway in this tab.<\/p>\r\n                <\/div>\r\n            <\/div>\r\n\r\n        <\/form>\r\n\r\n    <\/div>\r\n<\/div>\r\n\r\n<style>\r\n\/* Estilos Globales *\/\r\n.input, textarea, select { width:100%; padding:10px; margin:3px 0; border:1px solid #ddd; border-radius:8px; display:block; box-sizing: border-box; }\r\n\r\n\/* 1. ESTILO PARA DESHABILITAR D\u00cdAS ANTERIORES EN EL CALENDARIO *\/\r\ninput[type=\"date\"] { font-family: inherit; color: #333; }\r\n\/* MEJORA 1: Estilo para d\u00edas inv\u00e1lidos en Safari\/iOS *\/\r\ninput[type=\"date\"]:not([value=\"\"]):invalid { box-shadow: 0 0 5px rgba(231,76,60,0.6); }\r\n\r\n.input-num { width: 40px; text-align: center; border: none; padding: 0; -moz-appearance: textfield; }\r\n.input-num::-webkit-inner-spin-button, .input-num::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }\r\n\r\n.form-label { display:block; margin-bottom:6px; font-weight: 500; color: #333; }\r\n.note { font-size:0.9em; color:#555; margin:3px 0 5px 0; }\r\n.section-title { margin-top:20px; margin-bottom:10px; font-size:24px; color:#555; border-bottom: 2px solid #ddd; padding-bottom: 5px; }\r\n.section-note { margin-top:8px; margin-bottom:15px; font-weight:normal; color:#444; font-size:16px; }\r\n\r\n\/* Traveler Quantity Controls *\/\r\n.traveler-row { display: flex; justify-content: space-between; align-items: center; margin-bottom: 15px; padding: 10px 0; border-bottom: 1px solid #eee; }\r\n.traveler-row:last-child { border-bottom: none; margin-bottom: 0; }\r\n.traveler-info { display: flex; align-items: center; }\r\n.traveler-label { font-size: 16px; color: #333; display: flex; align-items: center; gap: 10px; margin-right: 15px; }\r\n.quantity-control { display: flex; align-items: center; border: 1px solid #ccc; border-radius: 5px; overflow: hidden; }\r\n.qty-btn { background: #f7f7f7; border: none; color: #555; padding: 8px 10px; cursor: pointer; font-weight: bold; font-size: 16px; transition: background 0.2s; line-height: 1; height: 36px; box-sizing: border-box; }\r\n.qty-btn:hover { background: #eee; color: #000; }\r\n.qty-btn:active { background: #ddd; }\r\n.input-num { padding: 8px 0; height: 36px; box-sizing: border-box; font-size: 16px; }\r\n\r\n.discount-tag { background: #e9f5e9; color: #2E7D32; padding: 3px 8px; border-radius: 10px; font-size: 14px; font-weight: bold; margin-left: 0; white-space: nowrap; }\r\n\r\n\/* Extras *\/\r\n.extra-item {\r\n    display: flex;\r\n    justify-content: space-between;\r\n    align-items: flex-start;\r\n    padding: 10px 0;\r\n    border-bottom: 1px solid #eee;\r\n}\r\n.extra-item.final-extra-row { border-bottom: none; }\r\n.extra-label-info {\r\n    display: flex;\r\n    flex-direction: column;\r\n    flex-grow: 1;\r\n    margin-right: 15px;\r\n}\r\n.extra-label { \r\n    font-size: 16px; \r\n    color: #333; \r\n    display: flex; \r\n    align-items: center; \r\n    margin-bottom: 0; \r\n}\r\n.extra-label input[type=\"checkbox\"] { \r\n    width: auto; \r\n    margin-right: 10px; \r\n}\r\n.extra-item .note { \r\n    margin-left: 25px;\r\n    margin-top: 2px;\r\n    margin-bottom: 0; \r\n    font-size: 0.85em;\r\n}\r\n\r\n\/* Extra destacado: Gu\u00eda Opcional *\/\r\n.extra-item-featured {\r\n    background: linear-gradient(135deg, #fff8ec, #fff1d6);\r\n    border: 2px solid #ff8c00;\r\n    border-radius: 12px;\r\n    padding: 14px 16px !important;\r\n    margin-bottom: 12px;\r\n    box-shadow: 0 3px 8px rgba(255, 140, 0, 0.15);\r\n}\r\n.extra-item-featured .extra-label {\r\n    font-weight: bold;\r\n    font-size: 17px;\r\n}\r\n.featured-badge {\r\n    display: inline-block;\r\n    background: #ff8c00;\r\n    color: #fff;\r\n    font-size: 12px;\r\n    font-weight: bold;\r\n    padding: 3px 10px;\r\n    border-radius: 20px;\r\n    letter-spacing: 0.3px;\r\n}\r\n\r\n.price-span { font-weight: bold; color: #000; }\r\n.extra-qty-control { margin-left: 0; }\r\n.extra-num { width: 40px !important; }\r\n\r\n\/* Error visual *\/\r\n.invalid-field { border-color:#e74c3c !important; box-shadow: 0 0 4px rgba(231,76,60,0.4); }\r\n.field-error { color:#e74c3c; font-size:0.9em; display:block; margin-top:4px; }\r\n.field-asterisk { color:#e74c3c; font-weight:bold; margin-left:6px; font-size:1.2em; vertical-align:middle; }\r\n\r\n\/* Small helper for payment details box *\/\r\n#paymentDetails { background:#fafafa; padding:12px; border-radius:8px; border:1px dashed #ddd; margin-top:10px; }\r\n.payment-note { background:#fff3cd; padding:10px; border-radius:6px; margin-bottom:8px; border:1px solid #ffeeba; }\r\n.action-btn { display:inline-block; margin:6px 6px 0 0; padding:10px 14px; border-radius:8px; text-decoration:none; cursor:pointer; }\r\n.btn-green { background:#25d366; color:#fff; }\r\n.btn-blue { background:#0072c6; color:#fff; }\r\n.btn-gray { background:#6c757d; color:#fff; }\r\n<\/style>\r\n\r\n<script>\r\n\/* ---------- Helpers and state ---------- *\/\r\nlet currentButton = null;\r\nconst CR_OFFSET_MINUTES = -6 * 60; \/\/ Costa Rica UTC-6 => -360 minutes\r\nconst ADMIN_WHATSAPP = '50660110640';\r\nconst ADMIN_EMAIL = 'contacto@cuilpilapan.com';\r\n\r\n\/\/ CONFIGURACI\u00d3N DE TILOPAY (montos fijos, sin manipulaci\u00f3n de cliente)\r\nconst TILO_LINK_COLONES = 'https:\/\/tp.cr\/l\/MTYyMTQ3';\r\nconst DEPOSIT_COLONES = 7000;\r\nconst TILO_LINK_USD = 'https:\/\/tp.cr\/l\/MTYyMTQ4';\r\nconst DEPOSIT_USD = 15.00;\r\n\r\nconst RETURN_URL = 'https:\/\/cuilpilapan.com\/payment-success\/';\r\nconst SAVE_URL = '\/save_pending_reservation.php';\r\nconst SEND_BOOKING_URL = '\/send_booking.php';\r\n\r\n\/\/ Simpe \/ Binance details\r\nconst SIMPE_PHONE = '60110640';\r\nconst SIMPE_NAME = 'Cuipilapan Sociedad Civil';\r\nconst BINANCE_ID = '450335940';\r\n\r\nconst STORAGE_KEY = 'reservaCuilpilapan_v1';\r\nlet _lastComputed = {};\r\n\r\nfunction generateOrderReference() {\r\n    const date = new Date();\r\n    const dateStr = date.getFullYear().toString() +\r\n                    (date.getMonth() + 1).toString().padStart(2, '0') +\r\n                    date.getDate().toString().padStart(2, '0');\r\n    const randomStr = Math.random().toString(36).substring(2, 7).toUpperCase();\r\n    return `CUP-${dateStr}-${randomStr}`;\r\n}\r\n\r\nfunction formatCurrency(amount, tipo) {\r\n    if (tipo === 'nacional') {\r\n        return '\u20a1' + Math.round(amount);\r\n    } else {\r\n        return '$' + Number(amount).toFixed(2);\r\n    }\r\n}\r\n\r\n\/* ---------- small UI helpers for errors ---------- *\/\r\nfunction showFieldError(inputEl, message) {\r\n    if (!inputEl) return;\r\n    inputEl.classList.add('invalid-field');\r\n\r\n    const errId = inputEl.id + '-error';\r\n    let err = document.getElementById(errId);\r\n    if (!err) {\r\n        err = document.createElement('span');\r\n        err.id = errId;\r\n        err.className = 'field-error';\r\n        inputEl.parentNode.insertBefore(err, inputEl.nextSibling);\r\n    }\r\n    err.innerText = message;\r\n    err.style.display = 'block';\r\n\r\n    const starId = inputEl.id + '-asterisk';\r\n    let star = document.getElementById(starId);\r\n    if (!star) {\r\n        star = document.createElement('span');\r\n        star.id = starId;\r\n        star.className = 'field-asterisk';\r\n        star.innerText = '*';\r\n        const label = document.querySelector('label[for=\"' + inputEl.id + '\"]');\r\n        if (label && label.parentNode) {\r\n            label.parentNode.insertBefore(star, label.nextSibling);\r\n        } else {\r\n            inputEl.parentNode.insertBefore(star, inputEl);\r\n        }\r\n    }\r\n    star.style.display = 'inline';\r\n}\r\n\r\nfunction clearFieldError(inputEl) {\r\n    if (!inputEl) return;\r\n    inputEl.classList.remove('invalid-field');\r\n    const err = document.getElementById(inputEl.id + '-error');\r\n    if (err) { err.style.display = 'none'; err.innerText = ''; }\r\n    const star = document.getElementById(inputEl.id + '-asterisk');\r\n    if (star) star.style.display = 'none';\r\n}\r\n\r\n\/* ---------- Open \/ Close ---------- *\/\r\nfunction openBookingForm(button) {\r\n    currentButton = button;\r\n    document.getElementById('bookingModal').style.display = 'block';\r\n    document.getElementById('tourTitle').innerText = button.getAttribute('data-tour') || 'Tour';\r\n    document.getElementById('tourDesc').innerText = button.getAttribute('data-desc') || '';\r\n\r\n    applyDateRestriction();\r\n    clearAllFieldErrors();\r\n\r\n    document.getElementById('paymentSection').style.display = 'none';\r\n    document.getElementById('paymentDetails').innerHTML = '';\r\n    document.getElementById('tilopayButtonContainer').style.display = 'none';\r\n\r\n    const radios = document.getElementsByName('paymentMethod');\r\n    for (let r of radios) r.checked = false;\r\n\r\n    document.getElementById('btnProceed').style.display = 'inline-block';\r\n\r\n    calcularTotal();\r\n}\r\n\r\nfunction closeBookingForm() {\r\n    document.getElementById('bookingModal').style.display = 'none';\r\n}\r\n\r\n\/* L\u00d3GICA DE CALENDARIO *\/\r\nfunction applyDateRestriction() {\r\n    const fechaEl = document.getElementById('fecha');\r\n    if (!fechaEl) return;\r\n\r\n    const now = new Date();\r\n    const localOffsetMin = now.getTimezoneOffset();\r\n    const utcNowMs = now.getTime() + (localOffsetMin * 60000);\r\n    const crNowMs = utcNowMs + (CR_OFFSET_MINUTES * 60000);\r\n    const crToday = new Date(crNowMs);\r\n\r\n    const year = crToday.getFullYear();\r\n    const month = (crToday.getMonth() + 1).toString().padStart(2, '0');\r\n    const day = crToday.getDate().toString().padStart(2, '0');\r\n    const minDate = `${year}-${month}-${day}`;\r\n\r\n    fechaEl.min = minDate;\r\n\r\n    fechaEl.addEventListener('change', function() {\r\n        const selectedDate = new Date(this.value);\r\n        const todayRef = new Date(Date.UTC(crToday.getFullYear(), crToday.getMonth(), crToday.getDate()));\r\n\r\n        if (selectedDate < todayRef) {\r\n            this.setCustomValidity('The selected date cannot be in the past \/ La fecha seleccionada no puede ser anterior a hoy.');\r\n            this.classList.add('invalid-field');\r\n            showFieldError(this, 'The selected date cannot be in the past \/ La fecha seleccionada no puede ser anterior a hoy.');\r\n        } else {\r\n            this.setCustomValidity('');\r\n            clearFieldError(this);\r\n        }\r\n    });\r\n}\r\n\r\nfunction onVisitorTypeChange(){\r\n    const tipo = document.getElementById('tipoVisitante').value;\r\n    document.getElementById('guideLanguageDiv').style.display = (tipo === 'extranjero') ? 'block' : 'none';\r\n    calcularTotal();\r\n}\r\n\r\n\/* ---------- Core calculation ---------- *\/\r\nfunction calcularTotal() {\r\n    if (!currentButton) return;\r\n\r\n    let tipo = document.getElementById('tipoVisitante').value;\r\n    if (!tipo) tipo = 'nacional';\r\n\r\n    let adultos = parseInt(document.getElementById('adultos').value) || 0;\r\n    let ninos = parseInt(document.getElementById('ninos').value) || 0;\r\n    let bebes = parseInt(document.getElementById('bebes').value) || 0;\r\n    let totalViajeros = adultos + ninos + bebes;\r\n    document.getElementById('totalTravelers').innerText = totalViajeros;\r\n\r\n    let precioAdultoNac = parseFloat(currentButton.getAttribute('data-precio-adulto-nacional')) || 0;\r\n    let precioAdultoExt = parseFloat(currentButton.getAttribute('data-precio-adulto-extranjero')) || 0;\r\n    let precioAdulto = (tipo === 'nacional') ? precioAdultoNac : precioAdultoExt;\r\n    let precioNino = precioAdulto \/ 2;\r\n\r\n    \/\/ extras unit prices (local vs foreign)\r\n    let precioExtraPerezoso = (tipo === 'nacional') ? 3500 : 10;\r\n    let precioAgua = (tipo === 'nacional') ? 1000 : 2;\r\n    let precioToallas = (tipo === 'nacional') ? 1000 : 2;\r\n    let precioSnacks = (tipo === 'nacional') ? 1000 : 2;\r\n    let precioPonchos = (tipo === 'nacional') ? 1000 : 2;\r\n    let precioBinoculares = (tipo === 'nacional') ? 2000 : 5;\r\n    let precioGuia = (tipo === 'nacional') ? 10000 : 32;\r\n    let precioBicicleta = (tipo === 'nacional') ? 7000 : 20;\r\n\r\n    let extraPerezoso = document.getElementById('extraPerezoso').checked;\r\n    let botellasAgua = parseInt(document.getElementById('botellasAgua').value) || 0;\r\n    let numToallas = parseInt(document.getElementById('numToallas').value) || 0;\r\n    let numSnacks = parseInt(document.getElementById('numSnacks').value) || 0;\r\n    let numPonchos = parseInt(document.getElementById('numPonchos').value) || 0;\r\n    let numBinoculares = parseInt(document.getElementById('numBinoculares').value) || 0;\r\n    let numBicicletas = parseInt(document.getElementById('numBicicletas')?.value) || 0;\r\n    let extraGuia = document.getElementById('extraGuia')?.checked || false;\r\n\r\n    let total = (adultos * precioAdulto) + (ninos * precioNino);\r\n\r\n    if (extraPerezoso) {\r\n        total += (adultos + ninos) * precioExtraPerezoso;\r\n    }\r\n    total += botellasAgua * precioAgua;\r\n    total += numToallas * precioToallas;\r\n    total += numSnacks * precioSnacks;\r\n    total += numPonchos * precioPonchos;\r\n    total += numBicicletas * precioBicicleta;\r\n\r\n    if (numBinoculares > 0 && !extraPerezoso) {\r\n        total += numBinoculares * precioBinoculares;\r\n    } else if (extraPerezoso) {\r\n        document.getElementById('numBinoculares').value = 0;\r\n    }\r\n\r\n    if (extraGuia) {\r\n        total += precioGuia;\r\n    }\r\n\r\n    \/\/ Descuento autom\u00e1tico: 10% \u00fanicamente para grupos de 10 personas o m\u00e1s\r\n    let totalDiscountPercent = (totalViajeros >= 10) ? 10 : 0;\r\n\r\n    let rawTotal = total;\r\n    let discountedTotal = total;\r\n    let discountText = '';\r\n    if (totalDiscountPercent > 0) {\r\n        discountedTotal = total * (1 - totalDiscountPercent \/ 100);\r\n        discountText = `\ud83d\udcb0 Discount Applied: ${totalDiscountPercent}% (Group of 10+ people)`;\r\n    }\r\n\r\n    if (tipo === 'nacional') {\r\n        rawTotal = Math.ceil(rawTotal);\r\n        discountedTotal = Math.ceil(discountedTotal);\r\n    }\r\n\r\n    document.getElementById('total').innerText = formatCurrency(discountedTotal, tipo);\r\n\r\n    if (totalDiscountPercent > 0) {\r\n        document.getElementById('discountApplied').style.display = 'block';\r\n        document.getElementById('discountApplied').innerText = discountText;\r\n\r\n        document.getElementById('totalAfterDiscount').style.display = 'block';\r\n        document.getElementById('totalAfterDiscount').innerText = `Total before discount: ${formatCurrency(rawTotal, tipo)}`;\r\n    } else {\r\n        document.getElementById('discountApplied').style.display = 'none';\r\n        document.getElementById('totalAfterDiscount').style.display = 'none';\r\n    }\r\n\r\n    \/\/ update unit-price labels\r\n    document.getElementById('precioPerezoso').innerText = formatCurrency(precioExtraPerezoso, tipo);\r\n    document.getElementById('precioAgua').innerText = formatCurrency(precioAgua, tipo);\r\n    document.getElementById('precioToallas').innerText = formatCurrency(precioToallas, tipo);\r\n    document.getElementById('precioSnacks').innerText = formatCurrency(precioSnacks, tipo);\r\n    document.getElementById('precioPonchos').innerText = formatCurrency(precioPonchos, tipo);\r\n    document.getElementById('precioBinoculares').innerText = formatCurrency(precioBinoculares, tipo);\r\n    document.getElementById('precioGuia').innerText = formatCurrency(precioGuia, tipo);\r\n    document.getElementById('precioBicicleta').innerText = formatCurrency(precioBicicleta, tipo);\r\n\r\n    const depositDisplayEl = document.getElementById('depositAmountDisplay');\r\n    const depositAmountText = tipo === 'nacional' ? formatCurrency(DEPOSIT_COLONES, 'nacional') : formatCurrency(DEPOSIT_USD, 'extranjero');\r\n    if (depositDisplayEl) {\r\n        depositDisplayEl.innerText = depositAmountText;\r\n    }\r\n    const tilopayNoteEl = document.getElementById('tilopayDepositNote');\r\n    if (tilopayNoteEl) {\r\n        tilopayNoteEl.innerHTML = `<strong style=\"color: #0056b3;\">IMPORTANT NOTE:<\/strong> When booking, a deposit will be charged for \r\n            <span id=\"depositAmountDisplay\" style=\"font-weight:bold;\">${depositAmountText}<\/span>. The remaining amount must be canceled upon arrival.`;\r\n    }\r\n\r\n    _lastComputed = {\r\n        rawTotal: rawTotal,\r\n        discountPercent: totalDiscountPercent,\r\n        discountedTotal: discountedTotal,\r\n        currencyType: tipo\r\n    };\r\n}\r\n\r\n\/* ---------- Validation and UI helpers ---------- *\/\r\nfunction clearAllFieldErrors() {\r\n    const ids = ['fecha','hora','tipoVisitante','guideLanguage','nombre','email','cedula','acompanantes','acceptTerms'];\r\n    ids.forEach(id => {\r\n        const el = document.getElementById(id);\r\n        if (el) clearFieldError(el);\r\n    });\r\n    const termsErr = document.getElementById('terms-error');\r\n    if(termsErr) termsErr.style.display = 'none';\r\n}\r\n\r\nfunction validateAll() {\r\n    clearAllFieldErrors();\r\n    let valid = true;\r\n\r\n    const adultos = parseInt(document.getElementById('adultos').value) || 0;\r\n    const ninos = parseInt(document.getElementById('ninos').value) || 0;\r\n    const bebes = parseInt(document.getElementById('bebes').value) || 0;\r\n    const totalViajeros = adultos + ninos + bebes;\r\n\r\n    if (totalViajeros < 1) {\r\n        const adultosEl = document.getElementById('adultos');\r\n        showFieldError(adultosEl, 'Minimum 1 traveler required \/ Se requiere m\u00ednimo 1 viajero');\r\n        valid = false;\r\n    }\r\n\r\n    const nombreEl = document.getElementById('nombre');\r\n    const nombre = (nombreEl.value || '').trim();\r\n    if (!nombre) { showFieldError(nombreEl, 'Please enter full name \/ Por favor ingrese su nombre completo'); valid = false; }\r\n\r\n    const emailEl = document.getElementById('email');\r\n    const email = (emailEl.value || '').trim();\r\n    const emailRegex = \/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/;\r\n    if (!email) { showFieldError(emailEl, 'Please enter email address \/ Por favor ingrese su correo'); valid = false; }\r\n    else if (!emailRegex.test(email)) { showFieldError(emailEl, 'Please enter a valid email address \/ Por favor ingrese un correo v\u00e1lido'); valid = false; }\r\n\r\n    const cedulaEl = document.getElementById('cedula');\r\n    const cedulaVal = (cedulaEl.value || '').trim();\r\n    const cedulaRegex = \/^[A-Za-z0-9]{5,20}$\/;\r\n    if (!cedulaVal) {\r\n        showFieldError(cedulaEl, 'Please enter your ID or passport number \/ Por favor ingrese su c\u00e9dula o pasaporte');\r\n        valid = false;\r\n    } else if (!cedulaRegex.test(cedulaVal)) {\r\n        showFieldError(cedulaEl, 'Enter only letters\/numbers, no dashes or spaces (5-20 characters) \/ Solo letras y n\u00fameros, sin guiones ni espacios (5-20 caracteres)');\r\n        valid = false;\r\n    }\r\n\r\n    const tipoEl = document.getElementById('tipoVisitante');\r\n    const tipo = tipoEl.value;\r\n    if (!tipo) { showFieldError(tipoEl, 'Please select visitor type \/ Seleccione tipo de visitante'); valid = false; }\r\n\r\n    if (tipo === 'extranjero') {\r\n        const glEl = document.getElementById('guideLanguage');\r\n        const glVal = (glEl.value || '').trim();\r\n        if (!glVal) { showFieldError(glEl, 'Please select the guide language \/ Seleccione idioma del gu\u00eda'); valid = false; }\r\n    }\r\n\r\n    const fechaEl = document.getElementById('fecha');\r\n    const fechaVal = fechaEl.value;\r\n    if (!fechaVal) { showFieldError(fechaEl, 'Please select a valid date \/ Por favor seleccione una fecha'); valid = false; }\r\n    if (fechaEl.customValidity && fechaEl.customValidity !== '') {\r\n        showFieldError(fechaEl, fechaEl.customValidity);\r\n        valid = false;\r\n    }\r\n\r\n    const horaEl = document.getElementById('hora');\r\n    const horaVal = horaEl.value;\r\n    if (!horaVal) { showFieldError(horaEl, 'Please select a valid time \/ Por favor seleccione una hora'); valid = false; }\r\n\r\n    const acompEl = document.getElementById('acompanantes');\r\n    const acompVal = (acompEl.value || '').trim();\r\n    if (totalViajeros >= 2 && acompVal.length < 3) {\r\n        showFieldError(acompEl, 'Please list companion names when there are 2 or more people \/ Por favor liste los acompa\u00f1antes cuando hay 2 o m\u00e1s personas.');\r\n        valid = false;\r\n    }\r\n\r\n    const accept = document.getElementById('acceptTerms');\r\n    if (!accept || !accept.checked) {\r\n        const termsErr = document.getElementById('terms-error');\r\n        termsErr.innerText = 'Debe aceptar los T\u00e9rminos y Condiciones y el uso de datos antes de continuar \/ You must accept Terms & Conditions and data usage.';\r\n        termsErr.style.display = 'block';\r\n        valid = false;\r\n    }\r\n\r\n    return valid;\r\n}\r\n\r\n\/* ---------- Gather form data for submission\/storage ---------- *\/\r\nfunction gatherFormData() {\r\n    const tour = document.getElementById('tourTitle').innerText;\r\n    const nombre = document.getElementById('nombre').value.trim();\r\n    const fecha = document.getElementById('fecha').value;\r\n    const hora = document.getElementById('hora').value;\r\n    const tipo = document.getElementById('tipoVisitante').value;\r\n    const email = document.getElementById('email').value || 'N\/A';\r\n    const cedula = (document.getElementById('cedula').value || '').trim().toUpperCase().replace(\/[\\s-]\/g, '');\r\n    const adultos = document.getElementById('adultos').value || '0';\r\n    const ninos = document.getElementById('ninos').value || '0';\r\n    const bebes = document.getElementById('bebes').value || '0';\r\n    const acompanantes = document.getElementById('acompanantes').value || '';\r\n    const guideLang = document.getElementById('guideLanguage').value || '';\r\n    const total = document.getElementById('total').innerText || '';\r\n    const discountText = document.getElementById('discountApplied').innerText || '';\r\n    const totalAfter = document.getElementById('totalAfterDiscount').innerText || '';\r\n    const comentarios = '';\r\n\r\n    let extrasArr = [];\r\n    if (document.getElementById('extraGuia')?.checked) extrasArr.push('Optional Guide (' + (document.getElementById('precioGuia')?.innerText || '') + ')');\r\n    if (document.getElementById('extraPerezoso')?.checked) extrasArr.push('Sloth & Tropical Birds Tour');\r\n    if ((parseInt(document.getElementById('botellasAgua')?.value) || 0) > 0) extrasArr.push('Bottled Water (' + document.getElementById('botellasAgua').value + ')');\r\n    if ((parseInt(document.getElementById('numToallas')?.value) || 0) > 0) extrasArr.push('Towels (' + document.getElementById('numToallas').value + ')');\r\n    if ((parseInt(document.getElementById('numSnacks')?.value) || 0) > 0) extrasArr.push('Snacks (' + document.getElementById('numSnacks').value + ')');\r\n    if ((parseInt(document.getElementById('numPonchos')?.value) || 0) > 0) extrasArr.push('Ponchos (' + document.getElementById('numPonchos').value + ')');\r\n    if ((parseInt(document.getElementById('numBinoculares')?.value) || 0) > 0 && !document.getElementById('extraPerezoso')?.checked) extrasArr.push('Binoculars (' + document.getElementById('numBinoculares').value + ')');\r\n    if ((parseInt(document.getElementById('numBicicletas')?.value) || 0) > 0) extrasArr.push('Bicycle Rental (' + document.getElementById('numBicicletas').value + ')');\r\n    const extrasText = extrasArr.length ? extrasArr.join('\\n- ') : 'None';\r\n\r\n    const computed = _lastComputed || {};\r\n    return {\r\n        tour, nombre, fecha, hora, tipo, email, cedula, adultos, ninos, bebes, acompanantes, guideLang, total, extrasText, discountText, totalAfter, comentarios,\r\n        rawTotal: computed.rawTotal || null,\r\n        discountedTotal: computed.discountedTotal || null,\r\n        currencyType: computed.currencyType || (document.getElementById('tipoVisitante').value || 'nacional')\r\n    };\r\n}\r\n\r\n\/* ---------- Proceed to payment ---------- *\/\r\nfunction onProceedToPayment() {\r\n    if (!validateAll()) {\r\n        const firstInvalid = document.querySelector('.invalid-field');\r\n        if (firstInvalid) firstInvalid.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n        return;\r\n    }\r\n    document.getElementById('paymentSection').style.display = 'block';\r\n    document.getElementById('btnProceed').style.display = 'none';\r\n    document.getElementById('paymentSection').scrollIntoView({behavior: 'smooth', block: 'center'});\r\n    onPaymentMethodChange();\r\n}\r\n\r\n\/* ---------- Save reservation to server ---------- *\/\r\nfunction persistReservation(formData, paymentMethodLabel, orderReference, depositAmount, depositCurrency) {\r\n    const payload = Object.assign({}, formData, {\r\n        paymentMethod: paymentMethodLabel,\r\n        orderReference: orderReference,\r\n        depositAmount: depositAmount,\r\n        depositCurrency: depositCurrency,\r\n        savedAt: new Date().toISOString()\r\n    });\r\n\r\n    try {\r\n        localStorage.setItem(STORAGE_KEY, JSON.stringify(payload));\r\n    } catch (e) {\r\n        console.error('Error saving reservation to localStorage (continuando con server)', e);\r\n    }\r\n\r\n    return fetch(SAVE_URL, {\r\n        method: 'POST',\r\n        headers: { 'Content-Type': 'application\/json' },\r\n        body: JSON.stringify(payload)\r\n    })\r\n    .then(response => response.json())\r\n    .then(data => {\r\n        if (!data.success) {\r\n            console.error('Error: La reserva NO se guard\u00f3 en el servidor:', data.message);\r\n            return false;\r\n        }\r\n        console.log(\"Reserva guardada en el servidor con \u00e9xito:\", orderReference);\r\n        return true;\r\n    })\r\n    .catch(error => {\r\n        console.error('Error de red al guardar en el servidor:', error);\r\n        return false;\r\n    });\r\n}\r\n\r\n\/* ---------- FUNCI\u00d3N DE PAGO CON TARJETA ---------- *\/\r\nasync function handleCardPayment() {\r\n    if (!validateAll()) {\r\n        alert('Please complete all form data correctly before proceeding to payment. \/ Por favor, complete todos los datos del formulario correctamente antes de pagar.');\r\n        const firstInvalid = document.querySelector('.invalid-field');\r\n        if (firstInvalid) firstInvalid.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n        return;\r\n    }\r\n\r\n    const btn = document.querySelector('#tilopayButtonContainer button');\r\n    btn.disabled = true;\r\n    const originalText = btn.innerText;\r\n    btn.innerText = 'Saving reservation... \/ Guardando reserva...';\r\n\r\n    const reservationData = gatherFormData();\r\n    reservationData.orderReference = generateOrderReference();\r\n\r\n    const isUSD = reservationData.currencyType !== 'nacional';\r\n\r\n    let tilopayAmount;\r\n    let tilopayCurrency;\r\n    let tilopayLink;\r\n\r\n    if (isUSD) {\r\n        tilopayAmount = DEPOSIT_USD.toFixed(2);\r\n        tilopayCurrency = 'USD';\r\n        tilopayLink = TILO_LINK_USD;\r\n    } else {\r\n        tilopayAmount = DEPOSIT_COLONES;\r\n        tilopayCurrency = 'CRC';\r\n        tilopayLink = TILO_LINK_COLONES;\r\n    }\r\n\r\n    const savedToServer = await persistReservation(reservationData, 'Card (Tilopay - Deposit)', reservationData.orderReference, tilopayAmount, tilopayCurrency);\r\n\r\n    if (!savedToServer) {\r\n        alert(\"\u274c Error: Could not secure reservation on the server. Please try again. \/ No se pudo asegurar la reserva en el servidor. Intente nuevamente.\");\r\n        btn.disabled = false;\r\n        btn.innerText = originalText;\r\n        return;\r\n    }\r\n\r\n    const conceptText = encodeURIComponent(`Reservation: ${reservationData.tour}. Total: ${reservationData.total}. Deposit: ${tilopayCurrency} ${tilopayAmount}`);\r\n\r\n    const tilopayUrl = `${tilopayLink}?` +\r\n                        `amount=${tilopayAmount}` +\r\n                        `&currency=${tilopayCurrency}` +\r\n                        `&reference=${reservationData.orderReference}` +\r\n                        `&description=${conceptText}` +\r\n                        `&return_url=${RETURN_URL}`;\r\n\r\n    btn.innerText = 'Redirecting to Tilopay... \/ Redirigiendo a Tilopay...';\r\n    window.location.href = tilopayUrl;\r\n}\r\n\r\n\/* ---------- Handle selection of payment method ---------- *\/\r\nfunction onPaymentMethodChange() {\r\n    const selected = document.querySelector('input[name=\"paymentMethod\"]:checked');\r\n    const detailsEl = document.getElementById('paymentDetails');\r\n    const tilopayBtnContainer = document.getElementById('tilopayButtonContainer');\r\n\r\n    detailsEl.innerHTML = '';\r\n    tilopayBtnContainer.style.display = 'none';\r\n\r\n    if (!selected) return;\r\n\r\n    const method = selected.value;\r\n    const data = gatherFormData();\r\n    const isUSD = data.currencyType !== 'nacional';\r\n    const depositAmountColones = formatCurrency(DEPOSIT_COLONES, 'nacional');\r\n    const depositAmountUSD = formatCurrency(DEPOSIT_USD, 'extranjero');\r\n\r\n    const summaryHtml = `<div style=\"margin-bottom:8px;\"><strong>Summary:<\/strong><br>Tour: ${data.tour}<br>Date: ${data.fecha} ${data.hora}<br>Name: ${data.nombre}<br>Total Tour: ${data.total}<br>${data.discountText ? data.discountText + '<br>' + (data.totalAfter ? data.totalAfter : '') : ''}<\/div>`;\r\n    detailsEl.insertAdjacentHTML('beforeend', summaryHtml);\r\n\r\n    if (method === 'tarjeta') {\r\n        detailsEl.insertAdjacentHTML('beforeend', `\r\n            <div class=\"payment-note\">\r\n                <strong>Card Payment (Tilopay - Deposit)<\/strong><br>\r\n                Only the deposit of <strong>${isUSD ? depositAmountUSD : depositAmountColones}<\/strong> will be charged. The remainder is paid on site.<br>\r\n                <br>You will be redirected to the secure Tilopay payment gateway in this tab.\r\n            <\/div>\r\n        `);\r\n        tilopayBtnContainer.style.display = 'block';\r\n\r\n        setTimeout(() => {\r\n            tilopayBtnContainer.scrollIntoView({behavior: 'smooth', block: 'nearest'});\r\n        }, 100);\r\n\r\n    } else if (method === 'simpe' || method === 'binance') {\r\n        const isSimpe = method === 'simpe';\r\n        const paymentLabel = isSimpe ? 'Simpe M\u00f3vil' : 'Binance (USDT)';\r\n        const phoneOrID = isSimpe ? SIMPE_PHONE : BINANCE_ID;\r\n        const nameOrTitle = isSimpe ? SIMPE_NAME : 'Wallet ID';\r\n        const noteTitle = isSimpe ? 'Payment by Simpe M\u00f3vil' : 'Payment by Binance (USDT)';\r\n        const totalToPay = data.total;\r\n\r\n        const depositAmount = isUSD ? depositAmountUSD : depositAmountColones;\r\n\r\n        const instruction = `<div class=\"payment-note\">\r\n            <strong>${noteTitle}<\/strong><br>\r\n            Please make a deposit payment of <strong>${depositAmount}<\/strong> to <strong>${nameOrTitle}<\/strong>: <strong>${phoneOrID}<\/strong>.\r\n            <br><br>\r\n            The deposit amount will be **deducted from your total payment** on the day of the tour.\r\n            <br>\r\n            *Note: You have the option to pay the full amount (${totalToPay}) if you prefer to simplify management.*\r\n        <\/div>`;\r\n\r\n        const uploadForm = `\r\n            <div style=\"border: 1px dashed #ff8c00; padding: 15px; border-radius: 8px; margin-top: 15px;\">\r\n                <p style=\"font-weight:bold; margin-bottom:10px;\">FINAL STEP: Upload your receipt to confirm your booking (English\/Spanish)<\/p>\r\n                <p style=\"margin-bottom:10px; font-size:0.9em;\">**We will confirm your payment to create your reservation.**<\/p>\r\n                <div class=\"form-group\" style=\"margin-bottom: 20px;\">\r\n                    <label for=\"comprobanteFile\"><b>Attach Payment Receipt (JPEG, PNG, PDF):<\/b><\/label>\r\n                    <input type=\"file\" id=\"comprobanteFile\" class=\"input\" accept=\"image\/jpeg,image\/png,application\/pdf\">\r\n                    <span id=\"comprobanteFile-error\" class=\"field-error\" style=\"display:none\"><\/span>\r\n            <\/div>\r\n                <button class=\"action-btn btn-blue\" type=\"button\" onclick=\"sendBookingByPHP('${paymentLabel}', 'deposit')\">\r\n                    Upload Receipt and Confirm Booking by Email\r\n                <\/button>\r\n            <\/div>\r\n            <p style=\"margin-top:10px;\">Optional: If you prefer to send via WhatsApp without attaching here, click: <a id=\"whatsappButton\" class=\"action-btn btn-green\" target=\"_blank\" href=\"#\">Send WhatsApp Message<\/a><\/p>\r\n            `;\r\n\r\n        detailsEl.insertAdjacentHTML('beforeend', instruction + uploadForm);\r\n\r\n        const whatsappButton = document.getElementById('whatsappButton');\r\n        if (whatsappButton) {\r\n            const whatsappMessage = `Hello, I made a booking with the following details:\\n\\n` +\r\n                `*Tour:* ${data.tour}\\n` +\r\n                `*Date:* ${data.fecha} at ${data.hora}\\n` +\r\n                `*Name:* ${data.nombre} (${data.email})\\n` +\r\n                `*ID\/Passport:* ${data.cedula}\\n` +\r\n                `*Travelers:* ${parseInt(data.adultos)+parseInt(data.ninos)+parseInt(data.bebes)}\\n` +\r\n                `*Companion Names:* ${data.acompanantes || 'None'}\\n` +\r\n                `*Total Paid\/Deposit:* ${depositAmount} (for Simpe\/Binance)\\n` +\r\n                `*Total Tour Price:* ${data.total}\\n\\n` +\r\n                `I attach the payment receipt for the deposit\/full amount via ${paymentLabel}. Please confirm my reservation.`;\r\n\r\n            whatsappButton.href = `https:\/\/wa.me\/${ADMIN_WHATSAPP}?text=${encodeURIComponent(whatsappMessage)}`;\r\n        }\r\n\r\n        detailsEl.scrollIntoView({behavior: 'smooth', block: 'center'});\r\n    }\r\n}\r\n\r\n\/* ---------- Funci\u00f3n de env\u00edo de datos y archivo (fetch con FormData) para Simpe\/Binance ---------- *\/\r\nfunction sendBookingByPHP(paymentMethod, paymentType) {\r\n    if (!validateAll()) {\r\n        const firstInvalid = document.querySelector('.invalid-field');\r\n        if (firstInvalid) firstInvalid.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n        return;\r\n    }\r\n\r\n    const comprobanteFileEl = document.getElementById('comprobanteFile');\r\n    if (!comprobanteFileEl || !comprobanteFileEl.files.length) {\r\n        showFieldError(comprobanteFileEl, 'You must attach the payment receipt to send the booking. \/ Debe adjuntar el comprobante de pago para enviar la reserva.');\r\n        return;\r\n    }\r\n    clearFieldError(comprobanteFileEl);\r\n\r\n    const formData = new FormData();\r\n    const data = gatherFormData();\r\n    const isUSD = data.currencyType !== 'nacional';\r\n    const depositAmount = isUSD ? DEPOSIT_USD : DEPOSIT_COLONES;\r\n\r\n    Object.keys(data).forEach(key => {\r\n        formData.append(key, data[key]);\r\n    });\r\n    formData.append('paymentMethod', paymentMethod);\r\n    formData.append('rawTotal', _lastComputed.rawTotal);\r\n    formData.append('discountedTotal', _lastComputed.discountedTotal);\r\n    formData.append('discountPercent', _lastComputed.discountPercent);\r\n    formData.append('paymentAmount', depositAmount);\r\n    formData.append('paymentCurrency', _lastComputed.currencyType === 'nacional' ? 'CRC' : 'USD');\r\n    formData.append('comprobante', comprobanteFileEl.files[0]);\r\n\r\n    const btn = document.querySelector(`[onclick=\"sendBookingByPHP('${paymentMethod}', 'deposit')\"]`);\r\n    const originalText = btn.innerText;\r\n    btn.disabled = true;\r\n    btn.innerText = 'Sending... \/ Enviando...';\r\n\r\n    fetch(SEND_BOOKING_URL, {\r\n        method: 'POST',\r\n        body: formData\r\n    })\r\n    .then(response => {\r\n        const contentType = response.headers.get(\"content-type\");\r\n        if (contentType && contentType.indexOf(\"application\/json\") !== -1) {\r\n            return response.json();\r\n        } else {\r\n            return response.text().then(text => {\r\n                console.error('Raw PHP Error:', text);\r\n                throw new Error(\"Response is not JSON. Server or PHP error: \" + text.substring(0, 100) + '...');\r\n            });\r\n        }\r\n    })\r\n    .then(data => {\r\n        if (data.success) {\r\n            alert('\u2705 Booking and receipt successfully sent!\\n\\nWe have sent the details to your email and the administrator. \/ \u00a1Reserva y comprobante enviados exitosamente! Hemos enviado los detalles a su correo y al administrador.');\r\n            closeBookingForm();\r\n        } else {\r\n            console.error('Server error:', data.message);\r\n            alert('\u274c Error sending booking: ' + (data.message || ''));\r\n        }\r\n    })\r\n    .catch(error => {\r\n        console.error('Connection\/Upload error:', error.message);\r\n        alert('\u274c Connection Error. Email could not be sent. Check browser console.');\r\n    })\r\n    .finally(() => {\r\n        btn.disabled = false;\r\n        btn.innerText = originalText;\r\n    });\r\n}\r\n\r\n\/* ---------- L\u00f3gica para los botones de Cantidad (+\/-) ---------- *\/\r\nfunction updateQuantity(targetId, delta) {\r\n    const inputEl = document.getElementById(targetId);\r\n    if (!inputEl) return;\r\n\r\n    let currentValue = parseInt(inputEl.value) || 0;\r\n    let newValue = currentValue + delta;\r\n\r\n    if (newValue < 0) {\r\n        newValue = 0;\r\n    }\r\n\r\n    inputEl.value = newValue;\r\n\r\n    if (['adultos','ninos','bebes','fecha'].includes(targetId) || targetId.startsWith('num') || targetId.startsWith('botellas')) {\r\n        calcularTotal();\r\n    }\r\n}\r\n\r\n\/* ---------- Attach events to clear errors and recalc ---------- *\/\r\ndocument.addEventListener('DOMContentLoaded', function(){\r\n    const ids = ['tipoVisitante','adultos','ninos','bebes','extraPerezoso','botellasAgua','numToallas','numSnacks','numPonchos','numBinoculares','numBicicletas','extraGuia','fecha','hora','nombre','email','cedula','acompanantes','guideLanguage','acceptTerms'];\r\n    ids.forEach(id => {\r\n        const el = document.getElementById(id);\r\n        if (el) {\r\n            const eventNames = (el.type === 'text' || el.type === 'email' || el.type === 'textarea' || el.type === 'number') ? ['input', 'change'] : ['change'];\r\n            eventNames.forEach(eventName => {\r\n                el.addEventListener(eventName, function(){\r\n                    clearFieldError(el);\r\n                    if (['adultos','ninos','bebes','tipoVisitante','extraPerezoso','botellasAgua','numToallas','numSnacks','numPonchos','numBinoculares','numBicicletas','extraGuia','fecha'].includes(id)) {\r\n                        calcularTotal();\r\n                    }\r\n                });\r\n            });\r\n        }\r\n    });\r\n\r\n    document.querySelectorAll('.qty-btn').forEach(button => {\r\n        button.addEventListener('click', function() {\r\n            const targetId = this.getAttribute('data-target');\r\n            const delta = this.classList.contains('plus-btn') ? 1 : -1;\r\n            updateQuantity(targetId, delta);\r\n        });\r\n    });\r\n\r\n    calcularTotal();\r\n});\r\n<\/script>\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-aa2f238 e-con-full e-flex e-con e-child\" data-id=\"aa2f238\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2599a4b elementor-widget__width-initial elementor-arrows-position-inside elementor-pagination-position-outside elementor-widget elementor-widget-image-carousel\" data-id=\"2599a4b\" data-element_type=\"widget\" data-e-type=\"widget\" id=\"Adventureplus\" data-settings=\"{&quot;slides_to_show&quot;:&quot;1&quot;,&quot;navigation&quot;:&quot;both&quot;,&quot;autoplay&quot;:&quot;yes&quot;,&quot;pause_on_hover&quot;:&quot;yes&quot;,&quot;pause_on_interaction&quot;:&quot;yes&quot;,&quot;autoplay_speed&quot;:5000,&quot;infinite&quot;:&quot;yes&quot;,&quot;effect&quot;:&quot;slide&quot;,&quot;speed&quot;:500}\" data-widget_type=\"image-carousel.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-image-carousel-wrapper swiper\" role=\"region\" aria-roledescription=\"carousel\" aria-label=\"Carrusel de im\u00e1genes\" dir=\"ltr\">\n\t\t\t<div class=\"elementor-image-carousel swiper-wrapper\" aria-live=\"off\">\n\t\t\t\t\t\t\t\t<div class=\"swiper-slide\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"1 de 4\"><figure class=\"swiper-slide-inner\"><img decoding=\"async\" class=\"swiper-slide-image\" src=\"https:\/\/cuilpilapan.com\/wp-content\/uploads\/elementor\/thumbs\/Catarata-Editada-scaled-rbxkvn305eofnj9ja3fdr3tqbfwhpsmlko40cwzum8.jpg\" alt=\"{&quot;tiktok_developers_3p_anchor_params&quot;:&quot;{&quot;capability_name&quot;:&quot;retouch_edit_tool&quot;,&quot;picture_template_id&quot;:&quot;&quot;,&quot;source_type&quot;:&quot;vicut&quot;,&quot;client_key&quot;:&quot;aw889s25wozf8s7e&quot;}&quot;,&quot;editType&quot;:&quot;image_edit&quot;,&quot;pictureId&quot;:&quot;B66E1CC4-A9EF-452E-A6F7-ADC7154AEF89&quot;,&quot;exportType&quot;:&quot;image_export&quot;,&quot;data&quot;:{},&quot;source_type&quot;:&quot;vicut&quot;}\" \/><\/figure><\/div><div class=\"swiper-slide\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"2 de 4\"><figure class=\"swiper-slide-inner\"><img decoding=\"async\" class=\"swiper-slide-image\" src=\"https:\/\/cuilpilapan.com\/wp-content\/uploads\/elementor\/thumbs\/DSC_3898-1-scaled-rbmy8tkxdlzm4nyijuqdn4tno28g03jrpn5s1l237k.jpg\" alt=\"DSC_3898\" \/><\/figure><\/div><div class=\"swiper-slide\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"3 de 4\"><figure class=\"swiper-slide-inner\"><img decoding=\"async\" class=\"swiper-slide-image\" src=\"https:\/\/cuilpilapan.com\/wp-content\/uploads\/elementor\/thumbs\/IMG_1672-scaled-rbxkoaycsymv13x74f97sgh7e62cmui0wcski5vh6o.jpg\" alt=\"{&quot;exportType&quot;:&quot;image_export&quot;,&quot;pictureId&quot;:&quot;C8C79CF5-95FE-4E76-9C02-D571A061ED7B&quot;,&quot;editType&quot;:&quot;image_edit&quot;,&quot;source_type&quot;:&quot;vicut&quot;,&quot;data&quot;:{},&quot;tiktok_developers_3p_anchor_params&quot;:&quot;{&quot;picture_template_id&quot;:&quot;&quot;,&quot;client_key&quot;:&quot;aw889s25wozf8s7e&quot;,&quot;source_type&quot;:&quot;vicut&quot;,&quot;capability_name&quot;:&quot;retouch_edit_tool&quot;}&quot;}\" \/><\/figure><\/div><div class=\"swiper-slide\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"4 de 4\"><figure class=\"swiper-slide-inner\"><img decoding=\"async\" class=\"swiper-slide-image\" src=\"https:\/\/cuilpilapan.com\/wp-content\/uploads\/elementor\/thumbs\/Puente-Arana-scaled-r43fahwm8fpmxzwplv7lzg7pkwa7uvle6nf8to7lq8.jpg\" alt=\"Puente Aran\u0303a\" \/><\/figure><\/div>\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"elementor-swiper-button elementor-swiper-button-prev\" role=\"button\" tabindex=\"0\">\n\t\t\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-eicon-chevron-left\" viewBox=\"0 0 1000 1000\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M646 125C629 125 613 133 604 142L308 442C296 454 292 471 292 487 292 504 296 521 308 533L604 854C617 867 629 875 646 875 663 875 679 871 692 858 704 846 713 829 713 812 713 796 708 779 692 767L438 487 692 225C700 217 708 204 708 187 708 171 704 154 692 142 675 129 663 125 646 125Z\"><\/path><\/svg>\t\t\t\t\t<\/div>\n\t\t\t\t\t<div class=\"elementor-swiper-button elementor-swiper-button-next\" role=\"button\" tabindex=\"0\">\n\t\t\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-eicon-chevron-right\" viewBox=\"0 0 1000 1000\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M696 533C708 521 713 504 713 487 713 471 708 454 696 446L400 146C388 133 375 125 354 125 338 125 325 129 313 142 300 154 292 171 292 187 292 204 296 221 308 233L563 492 304 771C292 783 288 800 288 817 288 833 296 850 308 863 321 871 338 875 354 875 371 875 388 867 400 854L696 533Z\"><\/path><\/svg>\t\t\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<div class=\"swiper-pagination\"><\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b67292 elementor-widget__width-initial elementor-widget elementor-widget-image-box\" data-id=\"1b67292\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image-box.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-image-box-wrapper\"><div class=\"elementor-image-box-content\"><h5 class=\"elementor-image-box-title\"><span style=\"font-size: 1.125rem\">\u201c<\/span>Adventure Plus: Hanging Bridge, 2 Waterfalls &amp; La Perdiz Viewpoint<span style=\"font-size: 1.125rem\">\u201d<\/span><\/h5><p class=\"elementor-image-box-description\">$25 Foreign<br>\u20a111 500 National<br>Duration: 2 a 3 hours\n<br>Distance: 4,2 km (<span data-start=\"145\" data-end=\"169\">2.6 <\/span>miles)<br> Designed for all physical abilities<\/p><\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-449a42f elementor-align-center elementor-widget-mobile__width-initial elementor-widget elementor-widget-button\" data-id=\"449a42f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/cuilpilapan.com\/services\/#AventuraPlus\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-long-arrow-alt-right\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M313.941 216H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h301.941v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.569 0-33.941l-86.059-86.059c-15.119-15.119-40.971-4.411-40.971 16.971V216z\"><\/path><\/svg>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">More information<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\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-7c21e3d elementor-widget__width-initial elementor-widget elementor-widget-html\" data-id=\"7c21e3d\" 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<div style=\"text-align:center; margin:1px 0;\">\r\n    <button\r\n        onclick=\"openBookingForm(this)\"\r\n        data-tour=\"Adventure Plus\"\r\n        data-desc=\"Total tour distance: 3,5 km \/ 2.17 miles (round trip), with an approximate duration from 2 to 3 hours.\"\r\n        data-precio-adulto-nacional=\"11500\"\r\n        data-precio-adulto-extranjero=\"25\"\r\n        data-precio-nino-nacional=\"5750\"\r\n        data-precio-nino-extranjero=\"12,5\"\r\n        style=\"background:#ff1a50; color:white; font-size:15px; padding:15px 77px; border:none; border-radius:30px; cursor:pointer; box-shadow: 0 4px 10px rgba(255, 26, 80, 0.4);\">\r\n        BOOK NOW\r\n    <\/button>\r\n<\/div>\r\n\r\n<div id=\"bookingModal\" style=\"display:none; position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(0,0,0,0.7); z-index:9999; overflow:auto;\">\r\n    <div style=\"background:#fff; max-width:750px; margin:50px auto; padding:30px; border-radius:15px; position:relative; box-shadow: 0 5px 15px rgba(0,0,0,0.3);\">\r\n\r\n        <button onclick=\"closeBookingForm()\" style=\"position:absolute; top:15px; right:15px; font-size:24px; background:none; border:none; cursor:pointer; color:#333;\">\u2716<\/button>\r\n\r\n        <h2 style=\"text-align:center; margin-bottom:10px; color:#2E7D32; font-size:26px;\" id=\"tourTitle\"><\/h2>\r\n        <p style=\"text-align:center; margin-bottom:25px; color:#555;\" id=\"tourDesc\"><\/p>\r\n\r\n        <form id=\"bookingForm\" onsubmit=\"event.preventDefault();\">\r\n\r\n            <div style=\"margin-top:20px; margin-bottom:16px;\">\r\n                <label for=\"fecha\" class=\"form-label\"><b>\ud83d\udcc5 Fecha (Select Date):<\/b><\/label><span id=\"fecha-asterisk\" class=\"field-asterisk\" style=\"display:none\">*<\/span>\r\n                <input type=\"date\" id=\"fecha\" class=\"input\" required onchange=\"calcularTotal()\">\r\n                <span id=\"fecha-error\" class=\"field-error\" style=\"display:none\"><\/span>\r\n            <\/div>\r\n\r\n            <div style=\"margin-bottom:12px;\">\r\n                <label for=\"hora\" class=\"form-label\"><b>Hora (Select Time):<\/b><\/label><span id=\"hora-asterisk\" class=\"field-asterisk\" style=\"display:none\">*<\/span>\r\n                <select id=\"hora\" class=\"input\">\r\n                    <option value=\"\" selected disabled>Select a time<\/option>\r\n                    <option value=\"8:00 am\">8:00 am<\/option>\r\n                    <option value=\"9:00 am\">9:00 am<\/option>\r\n                    <option value=\"10:00 am\">10:00 am<\/option>\r\n                    <option value=\"1:00 pm\">1:00 pm<\/option>\r\n                    <option value=\"2:00 pm\">2:00 pm<\/option>\r\n                <\/select>\r\n                <span id=\"hora-error\" class=\"field-error\" style=\"display:none\"><\/span>\r\n            <\/div>\r\n\r\n            <div style=\"margin-bottom:12px;\">\r\n                <label for=\"tipoVisitante\" class=\"form-label\"><b>Visitor Type:<\/b><\/label><span id=\"tipoVisitante-asterisk\" class=\"field-asterisk\" style=\"display:none\">*<\/span>\r\n                <select id=\"tipoVisitante\" class=\"input\" onchange=\"onVisitorTypeChange(); calcularTotal()\">\r\n                    <option value=\"\" selected disabled>Select visitor type<\/option>\r\n                    <option value=\"extranjero\">Foreign \/ Extranjero<\/option>\r\n                    <option value=\"nacional\">Local \/ Nacional<\/option>\r\n                <\/select>\r\n                <span id=\"tipoVisitante-error\" class=\"field-error\" style=\"display:none\"><\/span>\r\n            <\/div>\r\n\r\n            <div id=\"guideLanguageDiv\" style=\"display:none; margin-bottom:15px;\">\r\n                <label for=\"guideLanguage\" class=\"form-label\"><b>Select Guide Language:<\/b><\/label><span id=\"guideLanguage-asterisk\" class=\"field-asterisk\" style=\"display:none\">*<\/span>\r\n                <select id=\"guideLanguage\" class=\"input\">\r\n                    <option value=\"\" selected disabled>Select guide language<\/option>\r\n                    <option value=\"English\">English<\/option>\r\n                    <option value=\"Spanish\">Spanish<\/option>\r\n                <\/select>\r\n                <p class=\"note\"><i>Choose the tour guide's language.<\/i><\/p>\r\n                <span id=\"guideLanguage-error\" class=\"field-error\" style=\"display:none\"><\/span>\r\n            <\/div>\r\n\r\n<h3 class=\"section-title\">Travelers<\/h3>\r\n<p class=\"section-note\">Prices vary by age and number of people.<\/p>\r\n<p class=\"note\"><i>Total travelers: <span id=\"totalTravelers\" style=\"font-weight:bold;\">0<\/span><\/i><\/p>\r\n<p class=\"note discount-note\" id=\"discountNote\"><i>10% discount available for groups of 10 or more people.<\/i><\/p>\r\n\r\n<div class=\"traveler-row\">\r\n<div class=\"traveler-info\">\r\n<label for=\"adultos\" class=\"traveler-label\">Adults (13-70 years):<span class=\"discount-tag discount-green\">-0%<\/span><\/label>\r\n<\/div>\r\n<div class=\"quantity-control\">\r\n<button type=\"button\" class=\"qty-btn minus-btn\" data-target=\"adultos\">-<\/button>\r\n<input type=\"number\" id=\"adultos\" min=\"0\" value=\"0\" class=\"input-num\" oninput=\"calcularTotal()\">\r\n<button type=\"button\" class=\"qty-btn plus-btn\" data-target=\"adultos\">+<\/button>\r\n<\/div>\r\n<\/div>\r\n<div class=\"traveler-row\">\r\n<div class=\"traveler-info\">\r\n<label for=\"ninos\" class=\"traveler-label\">Children (5-12 years):<span class=\"discount-tag discount-green\">-50%*<\/span><\/label>\r\n<\/div>\r\n<div class=\"quantity-control\">\r\n<button type=\"button\" class=\"qty-btn minus-btn\" data-target=\"ninos\">-<\/button>\r\n<input type=\"number\" id=\"ninos\" min=\"0\" value=\"0\" class=\"input-num\" oninput=\"calcularTotal()\">\r\n<button type=\"button\" class=\"qty-btn plus-btn\" data-target=\"ninos\">+<\/button>\r\n<\/div>\r\n<\/div>\r\n<div class=\"traveler-row\">\r\n<div class=\"traveler-info\">\r\n<label for=\"bebes\" class=\"traveler-label\">Babies (0-4 years):<span class=\"discount-tag discount-green\">FREE*<\/span><\/label>\r\n<\/div>\r\n<div class=\"quantity-control\">\r\n<button type=\"button\" class=\"qty-btn minus-btn\" data-target=\"bebes\">-<\/button>\r\n<input type=\"number\" id=\"bebes\" min=\"0\" value=\"0\" class=\"input-num\" oninput=\"calcularTotal()\">\r\n<button type=\"button\" class=\"qty-btn plus-btn\" data-target=\"bebes\">+<\/button>\r\n<\/div>\r\n<\/div>\r\n\r\n<h3 class=\"section-title\">Add extras<\/h3>\r\n<p class=\"section-note\">Select the extra items you need and add the quantity.<\/p>\r\n\r\n<div class=\"extra-item extra-item-featured no-qty-row\">\r\n    <div class=\"extra-label-info\">\r\n        <span class=\"featured-badge\">\u2b50 Recommended<\/span>\r\n        <label class=\"extra-label\" style=\"display:block; margin-top:6px;\">\r\n            <input type=\"checkbox\" id=\"extraGuia\" onchange=\"calcularTotal()\">\r\n            Optional Guide to accompany your group (<span id=\"precioGuia\" class=\"price-span\" style=\"color:black;\">\u20a110000<\/span>)\r\n        <\/label>\r\n        <p class=\"note\" style=\"margin-left:25px; margin-top:2px;\">\r\n            <i>(A private guide will accompany your group during the whole tour)<\/i>\r\n        <\/p>\r\n    <\/div>\r\n    <div class=\"quantity-control extra-qty-control\" style=\"visibility:hidden; height:36px; border:none; width:110px; margin-left:10px;\"><\/div>\r\n<\/div>\r\n\r\n<div class=\"extra-item no-qty-row\">\r\n    <div class=\"extra-label-info\">\r\n        <label class=\"extra-label\" style=\"display:block;\">\r\n            <input type=\"checkbox\" id=\"extraPerezoso\" onchange=\"calcularTotal()\"> \r\n            Sloth & Tropical Birds Tour (<span id=\"precioPerezoso\" class=\"price-span\" style=\"color:black;\">$10<\/span> per person)\r\n        <\/label>\r\n        <p class=\"note\" style=\"margin-left:25px; margin-top:2px;\">\r\n            <i>(Includes binoculars and telescope use)<\/i>\r\n        <\/p>\r\n    <\/div>\r\n    <div class=\"quantity-control extra-qty-control\" style=\"visibility:hidden; height:36px; border:none; width:110px; margin-left:10px;\"><\/div>\r\n<\/div>\r\n\r\n<div class=\"extra-item with-qty-row\">\r\n    <div class=\"extra-label-info\">\r\n        <label class=\"extra-label\" for=\"botellasAgua\">Bottled Water (<span id=\"precioAgua\" class=\"price-span\" style=\"color:black;\">$2<\/span> each)<\/label>\r\n    <\/div>\r\n    <div class=\"quantity-control extra-qty-control\">\r\n        <button type=\"button\" class=\"qty-btn minus-btn\" data-target=\"botellasAgua\">-<\/button>\r\n        <input type=\"number\" id=\"botellasAgua\" min=\"0\" value=\"0\" class=\"input-num extra-num\" oninput=\"calcularTotal()\">\r\n        <button type=\"button\" class=\"qty-btn plus-btn\" data-target=\"botellasAgua\">+<\/button>\r\n    <\/div>\r\n    <input type=\"checkbox\" id=\"checkAgua\" onchange=\"calcularTotal()\" style=\"display:none;\"\/>\r\n<\/div>\r\n\r\n<div class=\"extra-item with-qty-row\">\r\n    <div class=\"extra-label-info\">\r\n        <label class=\"extra-label\" for=\"numToallas\">Towels (<span id=\"precioToallas\" class=\"price-span\" style=\"color:black;\">$2<\/span> each)<\/label>\r\n    <\/div>\r\n    <div class=\"quantity-control extra-qty-control\">\r\n        <button type=\"button\" class=\"qty-btn minus-btn\" data-target=\"numToallas\">-<\/button>\r\n        <input type=\"number\" id=\"numToallas\" min=\"0\" value=\"0\" class=\"input-num extra-num\" oninput=\"calcularTotal()\">\r\n        <button type=\"button\" class=\"qty-btn plus-btn\" data-target=\"numToallas\">+<\/button>\r\n    <\/div>\r\n    <input type=\"checkbox\" id=\"checkToallas\" onchange=\"calcularTotal()\" style=\"display:none;\"\/>\r\n<\/div>\r\n\r\n<div class=\"extra-item with-qty-row\">\r\n    <div class=\"extra-label-info\">\r\n        <label class=\"extra-label\" for=\"numSnacks\">Granuts Snacks (<span id=\"precioSnacks\" class=\"price-span\" style=\"color:black;\">$2<\/span> each)<\/label>\r\n    <\/div>\r\n    <div class=\"quantity-control extra-qty-control\">\r\n        <button type=\"button\" class=\"qty-btn minus-btn\" data-target=\"numSnacks\">-<\/button>\r\n        <input type=\"number\" id=\"numSnacks\" min=\"0\" value=\"0\" class=\"input-num extra-num\" oninput=\"calcularTotal()\">\r\n        <button type=\"button\" class=\"qty-btn plus-btn\" data-target=\"numSnacks\">+<\/button>\r\n    <\/div>\r\n    <input type=\"checkbox\" id=\"checkSnacks\" onchange=\"calcularTotal()\" style=\"display:none;\"\/>\r\n<\/div>\r\n\r\n<div class=\"extra-item with-qty-row\">\r\n    <div class=\"extra-label-info\">\r\n        <label class=\"extra-label\" for=\"numPonchos\">Rain Ponchos (<span id=\"precioPonchos\" class=\"price-span\" style=\"color:black;\">$2<\/span> each)<\/label>\r\n        <p class=\"note\" style=\"margin-left:25px; margin-top:2px;\">\r\n            <i>(Recommended for rainy season)<\/i>\r\n        <\/p>\r\n    <\/div>\r\n    <div class=\"quantity-control extra-qty-control\">\r\n        <button type=\"button\" class=\"qty-btn minus-btn\" data-target=\"numPonchos\">-<\/button>\r\n        <input type=\"number\" id=\"numPonchos\" min=\"0\" value=\"0\" class=\"input-num extra-num\" oninput=\"calcularTotal()\">\r\n        <button type=\"button\" class=\"qty-btn plus-btn\" data-target=\"numPonchos\">+<\/button>\r\n    <\/div>\r\n    <input type=\"checkbox\" id=\"checkPonchos\" onchange=\"calcularTotal()\" style=\"display:none;\"\/>\r\n<\/div>\r\n\r\n<div class=\"extra-item with-qty-row\">\r\n    <div class=\"extra-label-info\">\r\n        <label class=\"extra-label\" for=\"numBinoculares\">Binocular Use (<span id=\"precioBinoculares\" class=\"price-span\" style=\"color:black;\">$5<\/span>)<\/label>\r\n    <\/div>\r\n    <div class=\"quantity-control extra-qty-control\">\r\n        <button type=\"button\" class=\"qty-btn minus-btn\" data-target=\"numBinoculares\">-<\/button>\r\n        <input type=\"number\" id=\"numBinoculares\" min=\"0\" value=\"0\" class=\"input-num extra-num\" oninput=\"calcularTotal()\">\r\n        <button type=\"button\" class=\"qty-btn plus-btn\" data-target=\"numBinoculares\">+<\/button>\r\n    <\/div>\r\n<\/div>\r\n\r\n<p class=\"note\" style=\"margin-left: 0; margin-top: -5px; margin-bottom: 12px; text-align: left; font-size: 0.85em; width: 100%;\">\r\n    <i>(Binoculars only available if you do NOT select the Sloth & Tropical Birds Tour)<\/i>\r\n<\/p>\r\n\r\n<div class=\"extra-item with-qty-row final-extra-row\">\r\n    <div class=\"extra-label-info\">\r\n        <label class=\"extra-label\" for=\"numBicicletas\">Bicycle Rental (<span id=\"precioBicicleta\" class=\"price-span\" style=\"color:black;\">$20<\/span> each)<\/label>\r\n        <p class=\"note\" style=\"margin-left:25px; margin-top:2px;\">\r\n            <i>(Rent a bike for your visit)<\/i>\r\n        <\/p>\r\n    <\/div>\r\n    <div class=\"quantity-control extra-qty-control\">\r\n        <button type=\"button\" class=\"qty-btn minus-btn\" data-target=\"numBicicletas\">-<\/button>\r\n        <input type=\"number\" id=\"numBicicletas\" min=\"0\" value=\"0\" class=\"input-num extra-num\" oninput=\"calcularTotal()\">\r\n        <button type=\"button\" class=\"qty-btn plus-btn\" data-target=\"numBicicletas\">+<\/button>\r\n    <\/div>\r\n<\/div>\r\n\r\n            <h3 class=\"section-title\">Customer Information<\/h3>\r\n\r\n            <label for=\"nombre\" class=\"form-label\">Full Name:<\/label><span id=\"nombre-asterisk\" class=\"field-asterisk\" style=\"display:none\">*<\/span>\r\n            <input type=\"text\" id=\"nombre\" class=\"input\" style=\"margin-bottom:6px;\">\r\n            <span id=\"nombre-error\" class=\"field-error\" style=\"display:none\"><\/span>\r\n\r\n            <label for=\"email\" class=\"form-label\">Email:<\/label><span id=\"email-asterisk\" class=\"field-asterisk\" style=\"display:none\">*<\/span>\r\n            <input type=\"email\" id=\"email\" class=\"input\" style=\"margin-bottom:6px;\">\r\n            <span id=\"email-error\" class=\"field-error\" style=\"display:none\"><\/span>\r\n\r\n            <label for=\"cedula\" class=\"form-label\">ID \/ Passport Number (C\u00e9dula o Pasaporte):<\/label><span id=\"cedula-asterisk\" class=\"field-asterisk\" style=\"display:none\">*<\/span>\r\n            <input type=\"text\" id=\"cedula\" class=\"input\" style=\"margin-bottom:6px; text-transform:uppercase;\" placeholder=\"Ej: 112340567 (sin guiones ni espacios)\">\r\n            <p class=\"note\"><i>Enter your ID or passport number without dashes or spaces. \/ Ingrese su c\u00e9dula o pasaporte sin guiones ni espacios.<\/i><\/p>\r\n            <span id=\"cedula-error\" class=\"field-error\" style=\"display:none\"><\/span>\r\n\r\n            <label for=\"acompanantes\" class=\"form-label\">Companion Names: <span id=\"acompanantes-note\" style=\"font-weight:normal; font-size:0.9em; color:#555;\">(Required if 2+ travelers)<\/span><\/label><span id=\"acompanantes-asterisk\" class=\"field-asterisk\" style=\"display:none\">*<\/span>\r\n            <textarea id=\"acompanantes\" class=\"input\" style=\"margin-bottom:12px;\" placeholder=\"List companion names separated by commas\"><\/textarea>\r\n            <span id=\"acompanantes-error\" class=\"field-error\" style=\"display:none\"><\/span>\r\n\r\n            <div style=\"margin:10px 0;\">\r\n                <style>\r\n                    #acceptTermsLink {\r\n                        color: #1A237E;\r\n                        font-weight: bold;\r\n                        text-decoration: none;\r\n                        transition: color 0.3s;\r\n                    }\r\n                    #acceptTermsLink:hover {\r\n                        color: #0D1033;\r\n                        text-decoration: underline;\r\n                    }\r\n                <\/style>\r\n                <label>\r\n                    <input type=\"checkbox\" id=\"acceptTerms\" style=\"margin-right:8px;\" onchange=\"clearFieldError(this)\">\r\n                    <span style=\"color:black;\">I have read and accept the <\/span>\r\n                    <a id=\"acceptTermsLink\" href=\"https:\/\/cuilpilapan.com\/terms-and-conditions\/\" target=\"_blank\">Terms and Conditions<\/a>\r\n                    <span style=\"color:black;\"> and consent to the use of my personal data for the reservation process.<\/span>\r\n                <\/label>\r\n                <span id=\"terms-error\" class=\"field-error\" style=\"display:none\"><\/span>\r\n            <\/div>\r\n\r\n            <h2 style=\"margin-top: 8px; font-size: 28px; color: #333;\">Total: <span id=\"total\" style=\"color:#ff8c00;\">$0<\/span><\/h2>\r\n            <div id=\"discountApplied\" style=\"margin-bottom:8px; font-weight:bold; color:#2d6a4f; display:none;\"><\/div>\r\n            <div id=\"totalAfterDiscount\" style=\"margin-bottom:8px; font-weight:normal; text-decoration:line-through; color:#aaa; display:none;\"><\/div>\r\n\r\n            <div id=\"tilopayDepositNote\" style=\"background: #e6f7ff; border: 1px solid #91d5ff; padding: 10px; border-radius: 5px; margin-top: 10px;\">\r\n                <strong style=\"color: #0056b3;\">IMPORTANT NOTE:<\/strong> When booking, a deposit will be charged for\r\n                <span id=\"depositAmountDisplay\" style=\"font-weight:bold;\"><\/span> (\u20a17000 local \/ $15 foreign). The remaining amount must be canceled upon arrival.\r\n            <\/div>\r\n\r\n            <div style=\"background:#f9f9f9; padding:15px; border-radius:10px; box-shadow:0 2px 6px rgba(0,0,0,0.1); margin-top:20px;\">\r\n                <b>Recommendations:<\/b> Choose the tour that suits your physical capacity to fully enjoy the adventure.\r\n                Bring appropriate clothing, extra clothes, snacks, water to stay hydrated,\r\n                and any personal medication if you have a medical condition.\r\n                Feel free to ask any questions.\r\n            <\/div>\r\n\r\n            <div style=\"text-align:center; margin-top:25px;\">\r\n                <button id=\"btnProceed\" onclick=\"onProceedToPayment()\" style=\"background:#ff8c00; color:white; font-size:18px; padding:15px 40px; border:none; border-radius:30px; cursor:pointer; margin-bottom:10px; box-shadow: 0 4px 10px rgba(255, 140, 0, 0.4);\">\r\n                    Proceder a reservar \/ Proceed to payment\r\n                <\/button>\r\n            <\/div>\r\n\r\n            <div id=\"paymentSection\" style=\"display:none; margin-top:25px; border-top:1px solid #eee; padding-top:16px;\">\r\n                <h3 class=\"section-title\" style=\"font-size:20px;\">Seleccione su m\u00e9todo de pago \/ Select payment method<\/h3>\r\n                \r\n                <div style=\"display:flex; flex-direction:column; gap:12px;\">\r\n\r\n                    <label style=\"display:flex; align-items:center; gap:10px; padding:10px; border:1px solid #ddd; border-radius:10px; cursor:pointer; transition:transform 0.2s; background:#fafafa;\">\r\n                        <input type=\"radio\" name=\"paymentMethod\" value=\"tarjeta\" onchange=\"onPaymentMethodChange()\" style=\"transform:scale(1.3); margin-right:6px;\">\r\n                        <img decoding=\"async\" src=\"https:\/\/cuilpilapan.com\/wp-content\/uploads\/2025\/10\/WhatsApp-Image-2025-10-22-at-3.59.08-PM.jpeg\"\r\n                            alt=\"Tilopay\" width=\"50\" height=\"50\" style=\"border-radius:8px; transition:transform 0.3s;\">\r\n                        <span style=\"font-size:16px;\">Credit\/Debit Card (Tilopay) - Deposit Only<\/span>\r\n                    <\/label>\r\n\r\n                    <label style=\"display:flex; align-items:center; gap:10px; padding:10px; border:1px solid #ddd; border-radius:10px; cursor:pointer; transition:transform 0.2s; background:#fafafa;\">\r\n                        <input type=\"radio\" name=\"paymentMethod\" value=\"simpe\" onchange=\"onPaymentMethodChange()\" style=\"transform:scale(1.3); margin-right:6px;\">\r\n                        <img decoding=\"async\" src=\"https:\/\/cuilpilapan.com\/wp-content\/uploads\/2025\/10\/WhatsApp-Image-2025-10-22-at-3.57.36-PM.jpeg\"\r\n                            alt=\"Simpe M\u00f3vil\" width=\"50\" height=\"50\" style=\"border-radius:8px; transition:transform 0.3s;\">\r\n                        <span style=\"font-size:16px;\">Simpe M\u00f3vil - Deposit Only (or full payment)<\/span>\r\n                    <\/label>\r\n\r\n                    <label style=\"display:flex; align-items:center; gap:10px; padding:10px; border:1px solid #ddd; border-radius:10px; cursor:pointer; transition:transform 0.2s; background:#fafafa;\">\r\n                        <input type=\"radio\" name=\"paymentMethod\" value=\"binance\" onchange=\"onPaymentMethodChange()\" style=\"transform:scale(1.3); margin-right:6px;\">\r\n                        <img decoding=\"async\" src=\"https:\/\/cuilpilapan.com\/wp-content\/uploads\/2025\/10\/WhatsApp-Image-2025-10-22-at-3.56.45-PM.jpeg\"\r\n                            alt=\"Binance\" width=\"50\" height=\"50\" style=\"border-radius:8px; transition:transform 0.3s;\">\r\n                        <span style=\"font-size:16px;\">Binance Payment (USDT) - Deposit Only (or full payment)<\/span>\r\n                    <\/label>\r\n                <\/div>\r\n\r\n<style>\r\n#paymentSection label:hover {\r\ntransform: scale(1.03);\r\nbackground: #fffbe6;\r\nbox-shadow: 0 2px 6px rgba(0,0,0,0.1);\r\n}\r\n#paymentSection img:hover {\r\ntransform: scale(1.1) rotate(3deg);\r\n}\r\n<\/style>\r\n\r\n<div id=\"paymentDetails\" style=\"margin-top:12px;\"><\/div>\r\n\r\n<div id=\"tilopayButtonContainer\" style=\"text-align:center; margin-top:20px; display:none;\">\r\n<button type=\"button\" onclick=\"handleCardPayment()\"\r\n                        style=\"\r\n                            background-color: #007bff;\r\n                            color: white;\r\n                            padding: 15px 30px;\r\n                            border: none;\r\n                            border-radius: 5px;\r\n                            font-size: 18px;\r\n                            cursor: pointer;\r\n                            box-shadow: 0 4px 6px rgba(0,0,0,0.1);\r\n                            transition: background-color 0.3s;\r\n                        \"\r\n                        onmouseover=\"this.style.backgroundColor='#0056b3'\"\r\n                        onmouseout=\"this.style.backgroundColor='#007bff'\"\r\n                    >\r\n                        \ud83d\udcb3 Pay Deposit Now with Card (Tilopay)\r\n                    <\/button>\r\n                    <p style=\"margin-top:10px; font-size:0.9em; color:#555;\">You will be redirected to the Tilopay payment gateway in this tab.<\/p>\r\n                <\/div>\r\n            <\/div>\r\n\r\n        <\/form>\r\n\r\n    <\/div>\r\n<\/div>\r\n\r\n<style>\r\n\/* Estilos Globales *\/\r\n.input, textarea, select { width:100%; padding:10px; margin:3px 0; border:1px solid #ddd; border-radius:8px; display:block; box-sizing: border-box; }\r\n\r\n\/* 1. ESTILO PARA DESHABILITAR D\u00cdAS ANTERIORES EN EL CALENDARIO *\/\r\ninput[type=\"date\"] { font-family: inherit; color: #333; }\r\n\/* MEJORA 1: Estilo para d\u00edas inv\u00e1lidos en Safari\/iOS *\/\r\ninput[type=\"date\"]:not([value=\"\"]):invalid { box-shadow: 0 0 5px rgba(231,76,60,0.6); }\r\n\r\n.input-num { width: 40px; text-align: center; border: none; padding: 0; -moz-appearance: textfield; }\r\n.input-num::-webkit-inner-spin-button, .input-num::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }\r\n\r\n.form-label { display:block; margin-bottom:6px; font-weight: 500; color: #333; }\r\n.note { font-size:0.9em; color:#555; margin:3px 0 5px 0; }\r\n.section-title { margin-top:20px; margin-bottom:10px; font-size:24px; color:#555; border-bottom: 2px solid #ddd; padding-bottom: 5px; }\r\n.section-note { margin-top:8px; margin-bottom:15px; font-weight:normal; color:#444; font-size:16px; }\r\n\r\n\/* Traveler Quantity Controls *\/\r\n.traveler-row { display: flex; justify-content: space-between; align-items: center; margin-bottom: 15px; padding: 10px 0; border-bottom: 1px solid #eee; }\r\n.traveler-row:last-child { border-bottom: none; margin-bottom: 0; }\r\n.traveler-info { display: flex; align-items: center; }\r\n.traveler-label { font-size: 16px; color: #333; display: flex; align-items: center; gap: 10px; margin-right: 15px; }\r\n.quantity-control { display: flex; align-items: center; border: 1px solid #ccc; border-radius: 5px; overflow: hidden; }\r\n.qty-btn { background: #f7f7f7; border: none; color: #555; padding: 8px 10px; cursor: pointer; font-weight: bold; font-size: 16px; transition: background 0.2s; line-height: 1; height: 36px; box-sizing: border-box; }\r\n.qty-btn:hover { background: #eee; color: #000; }\r\n.qty-btn:active { background: #ddd; }\r\n.input-num { padding: 8px 0; height: 36px; box-sizing: border-box; font-size: 16px; }\r\n\r\n.discount-tag { background: #e9f5e9; color: #2E7D32; padding: 3px 8px; border-radius: 10px; font-size: 14px; font-weight: bold; margin-left: 0; white-space: nowrap; }\r\n\r\n\/* Extras *\/\r\n.extra-item {\r\n    display: flex;\r\n    justify-content: space-between;\r\n    align-items: flex-start;\r\n    padding: 10px 0;\r\n    border-bottom: 1px solid #eee;\r\n}\r\n.extra-item.final-extra-row { border-bottom: none; }\r\n.extra-label-info {\r\n    display: flex;\r\n    flex-direction: column;\r\n    flex-grow: 1;\r\n    margin-right: 15px;\r\n}\r\n.extra-label { \r\n    font-size: 16px; \r\n    color: #333; \r\n    display: flex; \r\n    align-items: center; \r\n    margin-bottom: 0; \r\n}\r\n.extra-label input[type=\"checkbox\"] { \r\n    width: auto; \r\n    margin-right: 10px; \r\n}\r\n.extra-item .note { \r\n    margin-left: 25px;\r\n    margin-top: 2px;\r\n    margin-bottom: 0; \r\n    font-size: 0.85em;\r\n}\r\n\r\n\/* Extra destacado: Gu\u00eda Opcional *\/\r\n.extra-item-featured {\r\n    background: linear-gradient(135deg, #fff8ec, #fff1d6);\r\n    border: 2px solid #ff8c00;\r\n    border-radius: 12px;\r\n    padding: 14px 16px !important;\r\n    margin-bottom: 12px;\r\n    box-shadow: 0 3px 8px rgba(255, 140, 0, 0.15);\r\n}\r\n.extra-item-featured .extra-label {\r\n    font-weight: bold;\r\n    font-size: 17px;\r\n}\r\n.featured-badge {\r\n    display: inline-block;\r\n    background: #ff8c00;\r\n    color: #fff;\r\n    font-size: 12px;\r\n    font-weight: bold;\r\n    padding: 3px 10px;\r\n    border-radius: 20px;\r\n    letter-spacing: 0.3px;\r\n}\r\n\r\n.price-span { font-weight: bold; color: #000; }\r\n.extra-qty-control { margin-left: 0; }\r\n.extra-num { width: 40px !important; }\r\n\r\n\/* Error visual *\/\r\n.invalid-field { border-color:#e74c3c !important; box-shadow: 0 0 4px rgba(231,76,60,0.4); }\r\n.field-error { color:#e74c3c; font-size:0.9em; display:block; margin-top:4px; }\r\n.field-asterisk { color:#e74c3c; font-weight:bold; margin-left:6px; font-size:1.2em; vertical-align:middle; }\r\n\r\n\/* Small helper for payment details box *\/\r\n#paymentDetails { background:#fafafa; padding:12px; border-radius:8px; border:1px dashed #ddd; margin-top:10px; }\r\n.payment-note { background:#fff3cd; padding:10px; border-radius:6px; margin-bottom:8px; border:1px solid #ffeeba; }\r\n.action-btn { display:inline-block; margin:6px 6px 0 0; padding:10px 14px; border-radius:8px; text-decoration:none; cursor:pointer; }\r\n.btn-green { background:#25d366; color:#fff; }\r\n.btn-blue { background:#0072c6; color:#fff; }\r\n.btn-gray { background:#6c757d; color:#fff; }\r\n<\/style>\r\n\r\n<script>\r\n\/* ---------- Helpers and state ---------- *\/\r\nlet currentButton = null;\r\nconst CR_OFFSET_MINUTES = -6 * 60; \/\/ Costa Rica UTC-6 => -360 minutes\r\nconst ADMIN_WHATSAPP = '50660110640';\r\nconst ADMIN_EMAIL = 'contacto@cuilpilapan.com';\r\n\r\n\/\/ CONFIGURACI\u00d3N DE TILOPAY (montos fijos, sin manipulaci\u00f3n de cliente)\r\nconst TILO_LINK_COLONES = 'https:\/\/tp.cr\/l\/MTYyMTQ3';\r\nconst DEPOSIT_COLONES = 7000;\r\nconst TILO_LINK_USD = 'https:\/\/tp.cr\/l\/MTYyMTQ4';\r\nconst DEPOSIT_USD = 15.00;\r\n\r\nconst RETURN_URL = 'https:\/\/cuilpilapan.com\/payment-success\/';\r\nconst SAVE_URL = '\/save_pending_reservation.php';\r\nconst SEND_BOOKING_URL = '\/send_booking.php';\r\n\r\n\/\/ Simpe \/ Binance details\r\nconst SIMPE_PHONE = '60110640';\r\nconst SIMPE_NAME = 'Cuipilapan Sociedad Civil';\r\nconst BINANCE_ID = '450335940';\r\n\r\nconst STORAGE_KEY = 'reservaCuilpilapan_v1';\r\nlet _lastComputed = {};\r\n\r\nfunction generateOrderReference() {\r\n    const date = new Date();\r\n    const dateStr = date.getFullYear().toString() +\r\n                    (date.getMonth() + 1).toString().padStart(2, '0') +\r\n                    date.getDate().toString().padStart(2, '0');\r\n    const randomStr = Math.random().toString(36).substring(2, 7).toUpperCase();\r\n    return `CUP-${dateStr}-${randomStr}`;\r\n}\r\n\r\nfunction formatCurrency(amount, tipo) {\r\n    if (tipo === 'nacional') {\r\n        return '\u20a1' + Math.round(amount);\r\n    } else {\r\n        return '$' + Number(amount).toFixed(2);\r\n    }\r\n}\r\n\r\n\/* ---------- small UI helpers for errors ---------- *\/\r\nfunction showFieldError(inputEl, message) {\r\n    if (!inputEl) return;\r\n    inputEl.classList.add('invalid-field');\r\n\r\n    const errId = inputEl.id + '-error';\r\n    let err = document.getElementById(errId);\r\n    if (!err) {\r\n        err = document.createElement('span');\r\n        err.id = errId;\r\n        err.className = 'field-error';\r\n        inputEl.parentNode.insertBefore(err, inputEl.nextSibling);\r\n    }\r\n    err.innerText = message;\r\n    err.style.display = 'block';\r\n\r\n    const starId = inputEl.id + '-asterisk';\r\n    let star = document.getElementById(starId);\r\n    if (!star) {\r\n        star = document.createElement('span');\r\n        star.id = starId;\r\n        star.className = 'field-asterisk';\r\n        star.innerText = '*';\r\n        const label = document.querySelector('label[for=\"' + inputEl.id + '\"]');\r\n        if (label && label.parentNode) {\r\n            label.parentNode.insertBefore(star, label.nextSibling);\r\n        } else {\r\n            inputEl.parentNode.insertBefore(star, inputEl);\r\n        }\r\n    }\r\n    star.style.display = 'inline';\r\n}\r\n\r\nfunction clearFieldError(inputEl) {\r\n    if (!inputEl) return;\r\n    inputEl.classList.remove('invalid-field');\r\n    const err = document.getElementById(inputEl.id + '-error');\r\n    if (err) { err.style.display = 'none'; err.innerText = ''; }\r\n    const star = document.getElementById(inputEl.id + '-asterisk');\r\n    if (star) star.style.display = 'none';\r\n}\r\n\r\n\/* ---------- Open \/ Close ---------- *\/\r\nfunction openBookingForm(button) {\r\n    currentButton = button;\r\n    document.getElementById('bookingModal').style.display = 'block';\r\n    document.getElementById('tourTitle').innerText = button.getAttribute('data-tour') || 'Tour';\r\n    document.getElementById('tourDesc').innerText = button.getAttribute('data-desc') || '';\r\n\r\n    applyDateRestriction();\r\n    clearAllFieldErrors();\r\n\r\n    document.getElementById('paymentSection').style.display = 'none';\r\n    document.getElementById('paymentDetails').innerHTML = '';\r\n    document.getElementById('tilopayButtonContainer').style.display = 'none';\r\n\r\n    const radios = document.getElementsByName('paymentMethod');\r\n    for (let r of radios) r.checked = false;\r\n\r\n    document.getElementById('btnProceed').style.display = 'inline-block';\r\n\r\n    calcularTotal();\r\n}\r\n\r\nfunction closeBookingForm() {\r\n    document.getElementById('bookingModal').style.display = 'none';\r\n}\r\n\r\n\/* L\u00d3GICA DE CALENDARIO *\/\r\nfunction applyDateRestriction() {\r\n    const fechaEl = document.getElementById('fecha');\r\n    if (!fechaEl) return;\r\n\r\n    const now = new Date();\r\n    const localOffsetMin = now.getTimezoneOffset();\r\n    const utcNowMs = now.getTime() + (localOffsetMin * 60000);\r\n    const crNowMs = utcNowMs + (CR_OFFSET_MINUTES * 60000);\r\n    const crToday = new Date(crNowMs);\r\n\r\n    const year = crToday.getFullYear();\r\n    const month = (crToday.getMonth() + 1).toString().padStart(2, '0');\r\n    const day = crToday.getDate().toString().padStart(2, '0');\r\n    const minDate = `${year}-${month}-${day}`;\r\n\r\n    fechaEl.min = minDate;\r\n\r\n    fechaEl.addEventListener('change', function() {\r\n        const selectedDate = new Date(this.value);\r\n        const todayRef = new Date(Date.UTC(crToday.getFullYear(), crToday.getMonth(), crToday.getDate()));\r\n\r\n        if (selectedDate < todayRef) {\r\n            this.setCustomValidity('The selected date cannot be in the past \/ La fecha seleccionada no puede ser anterior a hoy.');\r\n            this.classList.add('invalid-field');\r\n            showFieldError(this, 'The selected date cannot be in the past \/ La fecha seleccionada no puede ser anterior a hoy.');\r\n        } else {\r\n            this.setCustomValidity('');\r\n            clearFieldError(this);\r\n        }\r\n    });\r\n}\r\n\r\nfunction onVisitorTypeChange(){\r\n    const tipo = document.getElementById('tipoVisitante').value;\r\n    document.getElementById('guideLanguageDiv').style.display = (tipo === 'extranjero') ? 'block' : 'none';\r\n    calcularTotal();\r\n}\r\n\r\n\/* ---------- Core calculation ---------- *\/\r\nfunction calcularTotal() {\r\n    if (!currentButton) return;\r\n\r\n    let tipo = document.getElementById('tipoVisitante').value;\r\n    if (!tipo) tipo = 'nacional';\r\n\r\n    let adultos = parseInt(document.getElementById('adultos').value) || 0;\r\n    let ninos = parseInt(document.getElementById('ninos').value) || 0;\r\n    let bebes = parseInt(document.getElementById('bebes').value) || 0;\r\n    let totalViajeros = adultos + ninos + bebes;\r\n    document.getElementById('totalTravelers').innerText = totalViajeros;\r\n\r\n    let precioAdultoNac = parseFloat(currentButton.getAttribute('data-precio-adulto-nacional')) || 0;\r\n    let precioAdultoExt = parseFloat(currentButton.getAttribute('data-precio-adulto-extranjero')) || 0;\r\n    let precioAdulto = (tipo === 'nacional') ? precioAdultoNac : precioAdultoExt;\r\n    let precioNino = precioAdulto \/ 2;\r\n\r\n    \/\/ extras unit prices (local vs foreign)\r\n    let precioExtraPerezoso = (tipo === 'nacional') ? 3500 : 10;\r\n    let precioAgua = (tipo === 'nacional') ? 1000 : 2;\r\n    let precioToallas = (tipo === 'nacional') ? 1000 : 2;\r\n    let precioSnacks = (tipo === 'nacional') ? 1000 : 2;\r\n    let precioPonchos = (tipo === 'nacional') ? 1000 : 2;\r\n    let precioBinoculares = (tipo === 'nacional') ? 2000 : 5;\r\n    let precioGuia = (tipo === 'nacional') ? 10000 : 32;\r\n    let precioBicicleta = (tipo === 'nacional') ? 7000 : 20;\r\n\r\n    let extraPerezoso = document.getElementById('extraPerezoso').checked;\r\n    let botellasAgua = parseInt(document.getElementById('botellasAgua').value) || 0;\r\n    let numToallas = parseInt(document.getElementById('numToallas').value) || 0;\r\n    let numSnacks = parseInt(document.getElementById('numSnacks').value) || 0;\r\n    let numPonchos = parseInt(document.getElementById('numPonchos').value) || 0;\r\n    let numBinoculares = parseInt(document.getElementById('numBinoculares').value) || 0;\r\n    let numBicicletas = parseInt(document.getElementById('numBicicletas')?.value) || 0;\r\n    let extraGuia = document.getElementById('extraGuia')?.checked || false;\r\n\r\n    let total = (adultos * precioAdulto) + (ninos * precioNino);\r\n\r\n    if (extraPerezoso) {\r\n        total += (adultos + ninos) * precioExtraPerezoso;\r\n    }\r\n    total += botellasAgua * precioAgua;\r\n    total += numToallas * precioToallas;\r\n    total += numSnacks * precioSnacks;\r\n    total += numPonchos * precioPonchos;\r\n    total += numBicicletas * precioBicicleta;\r\n\r\n    if (numBinoculares > 0 && !extraPerezoso) {\r\n        total += numBinoculares * precioBinoculares;\r\n    } else if (extraPerezoso) {\r\n        document.getElementById('numBinoculares').value = 0;\r\n    }\r\n\r\n    if (extraGuia) {\r\n        total += precioGuia;\r\n    }\r\n\r\n    \/\/ Descuento autom\u00e1tico: 10% \u00fanicamente para grupos de 10 personas o m\u00e1s\r\n    let totalDiscountPercent = (totalViajeros >= 10) ? 10 : 0;\r\n\r\n    let rawTotal = total;\r\n    let discountedTotal = total;\r\n    let discountText = '';\r\n    if (totalDiscountPercent > 0) {\r\n        discountedTotal = total * (1 - totalDiscountPercent \/ 100);\r\n        discountText = `\ud83d\udcb0 Discount Applied: ${totalDiscountPercent}% (Group of 10+ people)`;\r\n    }\r\n\r\n    if (tipo === 'nacional') {\r\n        rawTotal = Math.ceil(rawTotal);\r\n        discountedTotal = Math.ceil(discountedTotal);\r\n    }\r\n\r\n    document.getElementById('total').innerText = formatCurrency(discountedTotal, tipo);\r\n\r\n    if (totalDiscountPercent > 0) {\r\n        document.getElementById('discountApplied').style.display = 'block';\r\n        document.getElementById('discountApplied').innerText = discountText;\r\n\r\n        document.getElementById('totalAfterDiscount').style.display = 'block';\r\n        document.getElementById('totalAfterDiscount').innerText = `Total before discount: ${formatCurrency(rawTotal, tipo)}`;\r\n    } else {\r\n        document.getElementById('discountApplied').style.display = 'none';\r\n        document.getElementById('totalAfterDiscount').style.display = 'none';\r\n    }\r\n\r\n    \/\/ update unit-price labels\r\n    document.getElementById('precioPerezoso').innerText = formatCurrency(precioExtraPerezoso, tipo);\r\n    document.getElementById('precioAgua').innerText = formatCurrency(precioAgua, tipo);\r\n    document.getElementById('precioToallas').innerText = formatCurrency(precioToallas, tipo);\r\n    document.getElementById('precioSnacks').innerText = formatCurrency(precioSnacks, tipo);\r\n    document.getElementById('precioPonchos').innerText = formatCurrency(precioPonchos, tipo);\r\n    document.getElementById('precioBinoculares').innerText = formatCurrency(precioBinoculares, tipo);\r\n    document.getElementById('precioGuia').innerText = formatCurrency(precioGuia, tipo);\r\n    document.getElementById('precioBicicleta').innerText = formatCurrency(precioBicicleta, tipo);\r\n\r\n    const depositDisplayEl = document.getElementById('depositAmountDisplay');\r\n    const depositAmountText = tipo === 'nacional' ? formatCurrency(DEPOSIT_COLONES, 'nacional') : formatCurrency(DEPOSIT_USD, 'extranjero');\r\n    if (depositDisplayEl) {\r\n        depositDisplayEl.innerText = depositAmountText;\r\n    }\r\n    const tilopayNoteEl = document.getElementById('tilopayDepositNote');\r\n    if (tilopayNoteEl) {\r\n        tilopayNoteEl.innerHTML = `<strong style=\"color: #0056b3;\">IMPORTANT NOTE:<\/strong> When booking, a deposit will be charged for \r\n            <span id=\"depositAmountDisplay\" style=\"font-weight:bold;\">${depositAmountText}<\/span>. The remaining amount must be canceled upon arrival.`;\r\n    }\r\n\r\n    _lastComputed = {\r\n        rawTotal: rawTotal,\r\n        discountPercent: totalDiscountPercent,\r\n        discountedTotal: discountedTotal,\r\n        currencyType: tipo\r\n    };\r\n}\r\n\r\n\/* ---------- Validation and UI helpers ---------- *\/\r\nfunction clearAllFieldErrors() {\r\n    const ids = ['fecha','hora','tipoVisitante','guideLanguage','nombre','email','cedula','acompanantes','acceptTerms'];\r\n    ids.forEach(id => {\r\n        const el = document.getElementById(id);\r\n        if (el) clearFieldError(el);\r\n    });\r\n    const termsErr = document.getElementById('terms-error');\r\n    if(termsErr) termsErr.style.display = 'none';\r\n}\r\n\r\nfunction validateAll() {\r\n    clearAllFieldErrors();\r\n    let valid = true;\r\n\r\n    const adultos = parseInt(document.getElementById('adultos').value) || 0;\r\n    const ninos = parseInt(document.getElementById('ninos').value) || 0;\r\n    const bebes = parseInt(document.getElementById('bebes').value) || 0;\r\n    const totalViajeros = adultos + ninos + bebes;\r\n\r\n    if (totalViajeros < 1) {\r\n        const adultosEl = document.getElementById('adultos');\r\n        showFieldError(adultosEl, 'Minimum 1 traveler required \/ Se requiere m\u00ednimo 1 viajero');\r\n        valid = false;\r\n    }\r\n\r\n    const nombreEl = document.getElementById('nombre');\r\n    const nombre = (nombreEl.value || '').trim();\r\n    if (!nombre) { showFieldError(nombreEl, 'Please enter full name \/ Por favor ingrese su nombre completo'); valid = false; }\r\n\r\n    const emailEl = document.getElementById('email');\r\n    const email = (emailEl.value || '').trim();\r\n    const emailRegex = \/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/;\r\n    if (!email) { showFieldError(emailEl, 'Please enter email address \/ Por favor ingrese su correo'); valid = false; }\r\n    else if (!emailRegex.test(email)) { showFieldError(emailEl, 'Please enter a valid email address \/ Por favor ingrese un correo v\u00e1lido'); valid = false; }\r\n\r\n    const cedulaEl = document.getElementById('cedula');\r\n    const cedulaVal = (cedulaEl.value || '').trim();\r\n    const cedulaRegex = \/^[A-Za-z0-9]{5,20}$\/;\r\n    if (!cedulaVal) {\r\n        showFieldError(cedulaEl, 'Please enter your ID or passport number \/ Por favor ingrese su c\u00e9dula o pasaporte');\r\n        valid = false;\r\n    } else if (!cedulaRegex.test(cedulaVal)) {\r\n        showFieldError(cedulaEl, 'Enter only letters\/numbers, no dashes or spaces (5-20 characters) \/ Solo letras y n\u00fameros, sin guiones ni espacios (5-20 caracteres)');\r\n        valid = false;\r\n    }\r\n\r\n    const tipoEl = document.getElementById('tipoVisitante');\r\n    const tipo = tipoEl.value;\r\n    if (!tipo) { showFieldError(tipoEl, 'Please select visitor type \/ Seleccione tipo de visitante'); valid = false; }\r\n\r\n    if (tipo === 'extranjero') {\r\n        const glEl = document.getElementById('guideLanguage');\r\n        const glVal = (glEl.value || '').trim();\r\n        if (!glVal) { showFieldError(glEl, 'Please select the guide language \/ Seleccione idioma del gu\u00eda'); valid = false; }\r\n    }\r\n\r\n    const fechaEl = document.getElementById('fecha');\r\n    const fechaVal = fechaEl.value;\r\n    if (!fechaVal) { showFieldError(fechaEl, 'Please select a valid date \/ Por favor seleccione una fecha'); valid = false; }\r\n    if (fechaEl.customValidity && fechaEl.customValidity !== '') {\r\n        showFieldError(fechaEl, fechaEl.customValidity);\r\n        valid = false;\r\n    }\r\n\r\n    const horaEl = document.getElementById('hora');\r\n    const horaVal = horaEl.value;\r\n    if (!horaVal) { showFieldError(horaEl, 'Please select a valid time \/ Por favor seleccione una hora'); valid = false; }\r\n\r\n    const acompEl = document.getElementById('acompanantes');\r\n    const acompVal = (acompEl.value || '').trim();\r\n    if (totalViajeros >= 2 && acompVal.length < 3) {\r\n        showFieldError(acompEl, 'Please list companion names when there are 2 or more people \/ Por favor liste los acompa\u00f1antes cuando hay 2 o m\u00e1s personas.');\r\n        valid = false;\r\n    }\r\n\r\n    const accept = document.getElementById('acceptTerms');\r\n    if (!accept || !accept.checked) {\r\n        const termsErr = document.getElementById('terms-error');\r\n        termsErr.innerText = 'Debe aceptar los T\u00e9rminos y Condiciones y el uso de datos antes de continuar \/ You must accept Terms & Conditions and data usage.';\r\n        termsErr.style.display = 'block';\r\n        valid = false;\r\n    }\r\n\r\n    return valid;\r\n}\r\n\r\n\/* ---------- Gather form data for submission\/storage ---------- *\/\r\nfunction gatherFormData() {\r\n    const tour = document.getElementById('tourTitle').innerText;\r\n    const nombre = document.getElementById('nombre').value.trim();\r\n    const fecha = document.getElementById('fecha').value;\r\n    const hora = document.getElementById('hora').value;\r\n    const tipo = document.getElementById('tipoVisitante').value;\r\n    const email = document.getElementById('email').value || 'N\/A';\r\n    const cedula = (document.getElementById('cedula').value || '').trim().toUpperCase().replace(\/[\\s-]\/g, '');\r\n    const adultos = document.getElementById('adultos').value || '0';\r\n    const ninos = document.getElementById('ninos').value || '0';\r\n    const bebes = document.getElementById('bebes').value || '0';\r\n    const acompanantes = document.getElementById('acompanantes').value || '';\r\n    const guideLang = document.getElementById('guideLanguage').value || '';\r\n    const total = document.getElementById('total').innerText || '';\r\n    const discountText = document.getElementById('discountApplied').innerText || '';\r\n    const totalAfter = document.getElementById('totalAfterDiscount').innerText || '';\r\n    const comentarios = '';\r\n\r\n    let extrasArr = [];\r\n    if (document.getElementById('extraGuia')?.checked) extrasArr.push('Optional Guide (' + (document.getElementById('precioGuia')?.innerText || '') + ')');\r\n    if (document.getElementById('extraPerezoso')?.checked) extrasArr.push('Sloth & Tropical Birds Tour');\r\n    if ((parseInt(document.getElementById('botellasAgua')?.value) || 0) > 0) extrasArr.push('Bottled Water (' + document.getElementById('botellasAgua').value + ')');\r\n    if ((parseInt(document.getElementById('numToallas')?.value) || 0) > 0) extrasArr.push('Towels (' + document.getElementById('numToallas').value + ')');\r\n    if ((parseInt(document.getElementById('numSnacks')?.value) || 0) > 0) extrasArr.push('Snacks (' + document.getElementById('numSnacks').value + ')');\r\n    if ((parseInt(document.getElementById('numPonchos')?.value) || 0) > 0) extrasArr.push('Ponchos (' + document.getElementById('numPonchos').value + ')');\r\n    if ((parseInt(document.getElementById('numBinoculares')?.value) || 0) > 0 && !document.getElementById('extraPerezoso')?.checked) extrasArr.push('Binoculars (' + document.getElementById('numBinoculares').value + ')');\r\n    if ((parseInt(document.getElementById('numBicicletas')?.value) || 0) > 0) extrasArr.push('Bicycle Rental (' + document.getElementById('numBicicletas').value + ')');\r\n    const extrasText = extrasArr.length ? extrasArr.join('\\n- ') : 'None';\r\n\r\n    const computed = _lastComputed || {};\r\n    return {\r\n        tour, nombre, fecha, hora, tipo, email, cedula, adultos, ninos, bebes, acompanantes, guideLang, total, extrasText, discountText, totalAfter, comentarios,\r\n        rawTotal: computed.rawTotal || null,\r\n        discountedTotal: computed.discountedTotal || null,\r\n        currencyType: computed.currencyType || (document.getElementById('tipoVisitante').value || 'nacional')\r\n    };\r\n}\r\n\r\n\/* ---------- Proceed to payment ---------- *\/\r\nfunction onProceedToPayment() {\r\n    if (!validateAll()) {\r\n        const firstInvalid = document.querySelector('.invalid-field');\r\n        if (firstInvalid) firstInvalid.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n        return;\r\n    }\r\n    document.getElementById('paymentSection').style.display = 'block';\r\n    document.getElementById('btnProceed').style.display = 'none';\r\n    document.getElementById('paymentSection').scrollIntoView({behavior: 'smooth', block: 'center'});\r\n    onPaymentMethodChange();\r\n}\r\n\r\n\/* ---------- Save reservation to server ---------- *\/\r\nfunction persistReservation(formData, paymentMethodLabel, orderReference, depositAmount, depositCurrency) {\r\n    const payload = Object.assign({}, formData, {\r\n        paymentMethod: paymentMethodLabel,\r\n        orderReference: orderReference,\r\n        depositAmount: depositAmount,\r\n        depositCurrency: depositCurrency,\r\n        savedAt: new Date().toISOString()\r\n    });\r\n\r\n    try {\r\n        localStorage.setItem(STORAGE_KEY, JSON.stringify(payload));\r\n    } catch (e) {\r\n        console.error('Error saving reservation to localStorage (continuando con server)', e);\r\n    }\r\n\r\n    return fetch(SAVE_URL, {\r\n        method: 'POST',\r\n        headers: { 'Content-Type': 'application\/json' },\r\n        body: JSON.stringify(payload)\r\n    })\r\n    .then(response => response.json())\r\n    .then(data => {\r\n        if (!data.success) {\r\n            console.error('Error: La reserva NO se guard\u00f3 en el servidor:', data.message);\r\n            return false;\r\n        }\r\n        console.log(\"Reserva guardada en el servidor con \u00e9xito:\", orderReference);\r\n        return true;\r\n    })\r\n    .catch(error => {\r\n        console.error('Error de red al guardar en el servidor:', error);\r\n        return false;\r\n    });\r\n}\r\n\r\n\/* ---------- FUNCI\u00d3N DE PAGO CON TARJETA ---------- *\/\r\nasync function handleCardPayment() {\r\n    if (!validateAll()) {\r\n        alert('Please complete all form data correctly before proceeding to payment. \/ Por favor, complete todos los datos del formulario correctamente antes de pagar.');\r\n        const firstInvalid = document.querySelector('.invalid-field');\r\n        if (firstInvalid) firstInvalid.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n        return;\r\n    }\r\n\r\n    const btn = document.querySelector('#tilopayButtonContainer button');\r\n    btn.disabled = true;\r\n    const originalText = btn.innerText;\r\n    btn.innerText = 'Saving reservation... \/ Guardando reserva...';\r\n\r\n    const reservationData = gatherFormData();\r\n    reservationData.orderReference = generateOrderReference();\r\n\r\n    const isUSD = reservationData.currencyType !== 'nacional';\r\n\r\n    let tilopayAmount;\r\n    let tilopayCurrency;\r\n    let tilopayLink;\r\n\r\n    if (isUSD) {\r\n        tilopayAmount = DEPOSIT_USD.toFixed(2);\r\n        tilopayCurrency = 'USD';\r\n        tilopayLink = TILO_LINK_USD;\r\n    } else {\r\n        tilopayAmount = DEPOSIT_COLONES;\r\n        tilopayCurrency = 'CRC';\r\n        tilopayLink = TILO_LINK_COLONES;\r\n    }\r\n\r\n    const savedToServer = await persistReservation(reservationData, 'Card (Tilopay - Deposit)', reservationData.orderReference, tilopayAmount, tilopayCurrency);\r\n\r\n    if (!savedToServer) {\r\n        alert(\"\u274c Error: Could not secure reservation on the server. Please try again. \/ No se pudo asegurar la reserva en el servidor. Intente nuevamente.\");\r\n        btn.disabled = false;\r\n        btn.innerText = originalText;\r\n        return;\r\n    }\r\n\r\n    const conceptText = encodeURIComponent(`Reservation: ${reservationData.tour}. Total: ${reservationData.total}. Deposit: ${tilopayCurrency} ${tilopayAmount}`);\r\n\r\n    const tilopayUrl = `${tilopayLink}?` +\r\n                        `amount=${tilopayAmount}` +\r\n                        `&currency=${tilopayCurrency}` +\r\n                        `&reference=${reservationData.orderReference}` +\r\n                        `&description=${conceptText}` +\r\n                        `&return_url=${RETURN_URL}`;\r\n\r\n    btn.innerText = 'Redirecting to Tilopay... \/ Redirigiendo a Tilopay...';\r\n    window.location.href = tilopayUrl;\r\n}\r\n\r\n\/* ---------- Handle selection of payment method ---------- *\/\r\nfunction onPaymentMethodChange() {\r\n    const selected = document.querySelector('input[name=\"paymentMethod\"]:checked');\r\n    const detailsEl = document.getElementById('paymentDetails');\r\n    const tilopayBtnContainer = document.getElementById('tilopayButtonContainer');\r\n\r\n    detailsEl.innerHTML = '';\r\n    tilopayBtnContainer.style.display = 'none';\r\n\r\n    if (!selected) return;\r\n\r\n    const method = selected.value;\r\n    const data = gatherFormData();\r\n    const isUSD = data.currencyType !== 'nacional';\r\n    const depositAmountColones = formatCurrency(DEPOSIT_COLONES, 'nacional');\r\n    const depositAmountUSD = formatCurrency(DEPOSIT_USD, 'extranjero');\r\n\r\n    const summaryHtml = `<div style=\"margin-bottom:8px;\"><strong>Summary:<\/strong><br>Tour: ${data.tour}<br>Date: ${data.fecha} ${data.hora}<br>Name: ${data.nombre}<br>Total Tour: ${data.total}<br>${data.discountText ? data.discountText + '<br>' + (data.totalAfter ? data.totalAfter : '') : ''}<\/div>`;\r\n    detailsEl.insertAdjacentHTML('beforeend', summaryHtml);\r\n\r\n    if (method === 'tarjeta') {\r\n        detailsEl.insertAdjacentHTML('beforeend', `\r\n            <div class=\"payment-note\">\r\n                <strong>Card Payment (Tilopay - Deposit)<\/strong><br>\r\n                Only the deposit of <strong>${isUSD ? depositAmountUSD : depositAmountColones}<\/strong> will be charged. The remainder is paid on site.<br>\r\n                <br>You will be redirected to the secure Tilopay payment gateway in this tab.\r\n            <\/div>\r\n        `);\r\n        tilopayBtnContainer.style.display = 'block';\r\n\r\n        setTimeout(() => {\r\n            tilopayBtnContainer.scrollIntoView({behavior: 'smooth', block: 'nearest'});\r\n        }, 100);\r\n\r\n    } else if (method === 'simpe' || method === 'binance') {\r\n        const isSimpe = method === 'simpe';\r\n        const paymentLabel = isSimpe ? 'Simpe M\u00f3vil' : 'Binance (USDT)';\r\n        const phoneOrID = isSimpe ? SIMPE_PHONE : BINANCE_ID;\r\n        const nameOrTitle = isSimpe ? SIMPE_NAME : 'Wallet ID';\r\n        const noteTitle = isSimpe ? 'Payment by Simpe M\u00f3vil' : 'Payment by Binance (USDT)';\r\n        const totalToPay = data.total;\r\n\r\n        const depositAmount = isUSD ? depositAmountUSD : depositAmountColones;\r\n\r\n        const instruction = `<div class=\"payment-note\">\r\n            <strong>${noteTitle}<\/strong><br>\r\n            Please make a deposit payment of <strong>${depositAmount}<\/strong> to <strong>${nameOrTitle}<\/strong>: <strong>${phoneOrID}<\/strong>.\r\n            <br><br>\r\n            The deposit amount will be **deducted from your total payment** on the day of the tour.\r\n            <br>\r\n            *Note: You have the option to pay the full amount (${totalToPay}) if you prefer to simplify management.*\r\n        <\/div>`;\r\n\r\n        const uploadForm = `\r\n            <div style=\"border: 1px dashed #ff8c00; padding: 15px; border-radius: 8px; margin-top: 15px;\">\r\n                <p style=\"font-weight:bold; margin-bottom:10px;\">FINAL STEP: Upload your receipt to confirm your booking (English\/Spanish)<\/p>\r\n                <p style=\"margin-bottom:10px; font-size:0.9em;\">**We will confirm your payment to create your reservation.**<\/p>\r\n                <div class=\"form-group\" style=\"margin-bottom: 20px;\">\r\n                    <label for=\"comprobanteFile\"><b>Attach Payment Receipt (JPEG, PNG, PDF):<\/b><\/label>\r\n                    <input type=\"file\" id=\"comprobanteFile\" class=\"input\" accept=\"image\/jpeg,image\/png,application\/pdf\">\r\n                    <span id=\"comprobanteFile-error\" class=\"field-error\" style=\"display:none\"><\/span>\r\n            <\/div>\r\n                <button class=\"action-btn btn-blue\" type=\"button\" onclick=\"sendBookingByPHP('${paymentLabel}', 'deposit')\">\r\n                    Upload Receipt and Confirm Booking by Email\r\n                <\/button>\r\n            <\/div>\r\n            <p style=\"margin-top:10px;\">Optional: If you prefer to send via WhatsApp without attaching here, click: <a id=\"whatsappButton\" class=\"action-btn btn-green\" target=\"_blank\" href=\"#\">Send WhatsApp Message<\/a><\/p>\r\n            `;\r\n\r\n        detailsEl.insertAdjacentHTML('beforeend', instruction + uploadForm);\r\n\r\n        const whatsappButton = document.getElementById('whatsappButton');\r\n        if (whatsappButton) {\r\n            const whatsappMessage = `Hello, I made a booking with the following details:\\n\\n` +\r\n                `*Tour:* ${data.tour}\\n` +\r\n                `*Date:* ${data.fecha} at ${data.hora}\\n` +\r\n                `*Name:* ${data.nombre} (${data.email})\\n` +\r\n                `*ID\/Passport:* ${data.cedula}\\n` +\r\n                `*Travelers:* ${parseInt(data.adultos)+parseInt(data.ninos)+parseInt(data.bebes)}\\n` +\r\n                `*Companion Names:* ${data.acompanantes || 'None'}\\n` +\r\n                `*Total Paid\/Deposit:* ${depositAmount} (for Simpe\/Binance)\\n` +\r\n                `*Total Tour Price:* ${data.total}\\n\\n` +\r\n                `I attach the payment receipt for the deposit\/full amount via ${paymentLabel}. Please confirm my reservation.`;\r\n\r\n            whatsappButton.href = `https:\/\/wa.me\/${ADMIN_WHATSAPP}?text=${encodeURIComponent(whatsappMessage)}`;\r\n        }\r\n\r\n        detailsEl.scrollIntoView({behavior: 'smooth', block: 'center'});\r\n    }\r\n}\r\n\r\n\/* ---------- Funci\u00f3n de env\u00edo de datos y archivo (fetch con FormData) para Simpe\/Binance ---------- *\/\r\nfunction sendBookingByPHP(paymentMethod, paymentType) {\r\n    if (!validateAll()) {\r\n        const firstInvalid = document.querySelector('.invalid-field');\r\n        if (firstInvalid) firstInvalid.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n        return;\r\n    }\r\n\r\n    const comprobanteFileEl = document.getElementById('comprobanteFile');\r\n    if (!comprobanteFileEl || !comprobanteFileEl.files.length) {\r\n        showFieldError(comprobanteFileEl, 'You must attach the payment receipt to send the booking. \/ Debe adjuntar el comprobante de pago para enviar la reserva.');\r\n        return;\r\n    }\r\n    clearFieldError(comprobanteFileEl);\r\n\r\n    const formData = new FormData();\r\n    const data = gatherFormData();\r\n    const isUSD = data.currencyType !== 'nacional';\r\n    const depositAmount = isUSD ? DEPOSIT_USD : DEPOSIT_COLONES;\r\n\r\n    Object.keys(data).forEach(key => {\r\n        formData.append(key, data[key]);\r\n    });\r\n    formData.append('paymentMethod', paymentMethod);\r\n    formData.append('rawTotal', _lastComputed.rawTotal);\r\n    formData.append('discountedTotal', _lastComputed.discountedTotal);\r\n    formData.append('discountPercent', _lastComputed.discountPercent);\r\n    formData.append('paymentAmount', depositAmount);\r\n    formData.append('paymentCurrency', _lastComputed.currencyType === 'nacional' ? 'CRC' : 'USD');\r\n    formData.append('comprobante', comprobanteFileEl.files[0]);\r\n\r\n    const btn = document.querySelector(`[onclick=\"sendBookingByPHP('${paymentMethod}', 'deposit')\"]`);\r\n    const originalText = btn.innerText;\r\n    btn.disabled = true;\r\n    btn.innerText = 'Sending... \/ Enviando...';\r\n\r\n    fetch(SEND_BOOKING_URL, {\r\n        method: 'POST',\r\n        body: formData\r\n    })\r\n    .then(response => {\r\n        const contentType = response.headers.get(\"content-type\");\r\n        if (contentType && contentType.indexOf(\"application\/json\") !== -1) {\r\n            return response.json();\r\n        } else {\r\n            return response.text().then(text => {\r\n                console.error('Raw PHP Error:', text);\r\n                throw new Error(\"Response is not JSON. Server or PHP error: \" + text.substring(0, 100) + '...');\r\n            });\r\n        }\r\n    })\r\n    .then(data => {\r\n        if (data.success) {\r\n            alert('\u2705 Booking and receipt successfully sent!\\n\\nWe have sent the details to your email and the administrator. \/ \u00a1Reserva y comprobante enviados exitosamente! Hemos enviado los detalles a su correo y al administrador.');\r\n            closeBookingForm();\r\n        } else {\r\n            console.error('Server error:', data.message);\r\n            alert('\u274c Error sending booking: ' + (data.message || ''));\r\n        }\r\n    })\r\n    .catch(error => {\r\n        console.error('Connection\/Upload error:', error.message);\r\n        alert('\u274c Connection Error. Email could not be sent. Check browser console.');\r\n    })\r\n    .finally(() => {\r\n        btn.disabled = false;\r\n        btn.innerText = originalText;\r\n    });\r\n}\r\n\r\n\/* ---------- L\u00f3gica para los botones de Cantidad (+\/-) ---------- *\/\r\nfunction updateQuantity(targetId, delta) {\r\n    const inputEl = document.getElementById(targetId);\r\n    if (!inputEl) return;\r\n\r\n    let currentValue = parseInt(inputEl.value) || 0;\r\n    let newValue = currentValue + delta;\r\n\r\n    if (newValue < 0) {\r\n        newValue = 0;\r\n    }\r\n\r\n    inputEl.value = newValue;\r\n\r\n    if (['adultos','ninos','bebes','fecha'].includes(targetId) || targetId.startsWith('num') || targetId.startsWith('botellas')) {\r\n        calcularTotal();\r\n    }\r\n}\r\n\r\n\/* ---------- Attach events to clear errors and recalc ---------- *\/\r\ndocument.addEventListener('DOMContentLoaded', function(){\r\n    const ids = ['tipoVisitante','adultos','ninos','bebes','extraPerezoso','botellasAgua','numToallas','numSnacks','numPonchos','numBinoculares','numBicicletas','extraGuia','fecha','hora','nombre','email','cedula','acompanantes','guideLanguage','acceptTerms'];\r\n    ids.forEach(id => {\r\n        const el = document.getElementById(id);\r\n        if (el) {\r\n            const eventNames = (el.type === 'text' || el.type === 'email' || el.type === 'textarea' || el.type === 'number') ? ['input', 'change'] : ['change'];\r\n            eventNames.forEach(eventName => {\r\n                el.addEventListener(eventName, function(){\r\n                    clearFieldError(el);\r\n                    if (['adultos','ninos','bebes','tipoVisitante','extraPerezoso','botellasAgua','numToallas','numSnacks','numPonchos','numBinoculares','numBicicletas','extraGuia','fecha'].includes(id)) {\r\n                        calcularTotal();\r\n                    }\r\n                });\r\n            });\r\n        }\r\n    });\r\n\r\n    document.querySelectorAll('.qty-btn').forEach(button => {\r\n        button.addEventListener('click', function() {\r\n            const targetId = this.getAttribute('data-target');\r\n            const delta = this.classList.contains('plus-btn') ? 1 : -1;\r\n            updateQuantity(targetId, delta);\r\n        });\r\n    });\r\n\r\n    calcularTotal();\r\n});\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5a5ad2d elementor-widget elementor-widget-spacer\" data-id=\"5a5ad2d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-dd62b90 e-con-full e-flex e-con e-child\" data-id=\"dd62b90\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5b3c838 elementor-widget__width-initial elementor-arrows-position-inside elementor-pagination-position-outside elementor-widget elementor-widget-image-carousel\" data-id=\"5b3c838\" data-element_type=\"widget\" data-e-type=\"widget\" id=\"MiravallesExpedition\" data-settings=\"{&quot;slides_to_show&quot;:&quot;1&quot;,&quot;navigation&quot;:&quot;both&quot;,&quot;autoplay&quot;:&quot;yes&quot;,&quot;pause_on_hover&quot;:&quot;yes&quot;,&quot;pause_on_interaction&quot;:&quot;yes&quot;,&quot;autoplay_speed&quot;:5000,&quot;infinite&quot;:&quot;yes&quot;,&quot;effect&quot;:&quot;slide&quot;,&quot;speed&quot;:500}\" data-widget_type=\"image-carousel.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-image-carousel-wrapper swiper\" role=\"region\" aria-roledescription=\"carousel\" aria-label=\"Carrusel de im\u00e1genes\" dir=\"ltr\">\n\t\t\t<div class=\"elementor-image-carousel swiper-wrapper\" aria-live=\"off\">\n\t\t\t\t\t\t\t\t<div class=\"swiper-slide\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"1 de 6\"><figure class=\"swiper-slide-inner\"><img decoding=\"async\" class=\"swiper-slide-image\" src=\"https:\/\/cuilpilapan.com\/wp-content\/uploads\/elementor\/thumbs\/IMG_20250809_085852-scaled-rbxk23zjfs94wk5qptwbx23egngcw4e6ii9ukys43k.jpg\" alt=\"IMG_20250809_085852\" \/><\/figure><\/div><div class=\"swiper-slide\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"2 de 6\"><figure class=\"swiper-slide-inner\"><img decoding=\"async\" class=\"swiper-slide-image\" src=\"https:\/\/cuilpilapan.com\/wp-content\/uploads\/elementor\/thumbs\/DJI_0163-scaled-r43bru5jb4bohlw07m8ehwunwqknn5rhrqqtse0e68.jpg\" alt=\"DCIM100MEDIADJI_0163.JPG\" \/><\/figure><\/div><div class=\"swiper-slide\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"3 de 6\"><figure class=\"swiper-slide-inner\"><img decoding=\"async\" class=\"swiper-slide-image\" src=\"https:\/\/cuilpilapan.com\/wp-content\/uploads\/elementor\/thumbs\/DSC_3716-1-scaled-rbxj429zvtn8d1m5j42tlnebu79q2t875zkos59hhc.jpg\" alt=\"DSC_3716 (1)\" \/><\/figure><\/div><div class=\"swiper-slide\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"4 de 6\"><figure class=\"swiper-slide-inner\"><img decoding=\"async\" class=\"swiper-slide-image\" src=\"https:\/\/cuilpilapan.com\/wp-content\/uploads\/elementor\/thumbs\/IMG_20250809_095108-scaled-rbxk3r7deci77zrq41hts55fvxchd1x9qndftecb7k.jpg\" alt=\"IMG_20250809_095108\" \/><\/figure><\/div><div class=\"swiper-slide\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"5 de 6\"><figure class=\"swiper-slide-inner\"><img decoding=\"async\" class=\"swiper-slide-image\" src=\"https:\/\/cuilpilapan.com\/wp-content\/uploads\/elementor\/thumbs\/3-scaled-rbmy7r1jleiuwnihsw2oawjrb9ie8iarwcevd8n8ao.jpg\" alt=\"3\" \/><\/figure><\/div><div class=\"swiper-slide\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"6 de 6\"><figure class=\"swiper-slide-inner\"><img decoding=\"async\" class=\"swiper-slide-image\" src=\"https:\/\/cuilpilapan.com\/wp-content\/uploads\/elementor\/thumbs\/DJI_0386-scaled-rbmym32xtg59ykox3l4utsbtfsuwmc7evakfu5e3eo.jpg\" alt=\"DCIM100MEDIADJI_0386.JPG\" \/><\/figure><\/div>\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"elementor-swiper-button elementor-swiper-button-prev\" role=\"button\" tabindex=\"0\">\n\t\t\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-eicon-chevron-left\" viewBox=\"0 0 1000 1000\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M646 125C629 125 613 133 604 142L308 442C296 454 292 471 292 487 292 504 296 521 308 533L604 854C617 867 629 875 646 875 663 875 679 871 692 858 704 846 713 829 713 812 713 796 708 779 692 767L438 487 692 225C700 217 708 204 708 187 708 171 704 154 692 142 675 129 663 125 646 125Z\"><\/path><\/svg>\t\t\t\t\t<\/div>\n\t\t\t\t\t<div class=\"elementor-swiper-button elementor-swiper-button-next\" role=\"button\" tabindex=\"0\">\n\t\t\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-eicon-chevron-right\" viewBox=\"0 0 1000 1000\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M696 533C708 521 713 504 713 487 713 471 708 454 696 446L400 146C388 133 375 125 354 125 338 125 325 129 313 142 300 154 292 171 292 187 292 204 296 221 308 233L563 492 304 771C292 783 288 800 288 817 288 833 296 850 308 863 321 871 338 875 354 875 371 875 388 867 400 854L696 533Z\"><\/path><\/svg>\t\t\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<div class=\"swiper-pagination\"><\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8e7f0e1 elementor-widget elementor-widget-image-box\" data-id=\"8e7f0e1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image-box.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-image-box-wrapper\"><div class=\"elementor-image-box-content\"><h5 class=\"elementor-image-box-title\">Miravalles Expedition: Viewpoints and Waterfall<\/h5><p class=\"elementor-image-box-description\">$ 25 Foreign<span style=\"font-size: 1rem\">.<\/span><span style=\"font-size: 1rem\"> <\/span><br>\u20a111 500 National.<br>Duration: 5 a 6 horas<br>Distance: 10 km (6.2<span data-start=\"145\" data-end=\"169\"> <\/span>miles.) <br> Designed for all physical abilities.<br><\/p><\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c070802 elementor-align-center elementor-widget-mobile__width-initial elementor-widget elementor-widget-button\" data-id=\"c070802\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/cuilpilapan.com\/services\/#Expedici\u00f3n\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-long-arrow-alt-right\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M313.941 216H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h301.941v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.569 0-33.941l-86.059-86.059c-15.119-15.119-40.971-4.411-40.971 16.971V216z\"><\/path><\/svg>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">More information<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\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-ab0fa17 elementor-widget__width-initial elementor-widget elementor-widget-html\" data-id=\"ab0fa17\" 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<div style=\"text-align:center; margin:1px 0;\">\r\n    <button\r\n        onclick=\"openBookingForm(this)\"\r\n        data-tour=\"Miravalles Expedition\"\r\n        data-desc=\"Total tour distance: 10 km \/ 6.2 miles (round trip), with an approximate duration of 6 hours.\"\r\n        data-precio-adulto-nacional=\"11500\"\r\n        data-precio-adulto-extranjero=\"25\"\r\n        data-precio-nino-nacional=\"5750\"\r\n        data-precio-nino-extranjero=\"12,5\"\r\n        style=\"background:#ff1a50; color:white; font-size:15px; padding:15px 77px; border:none; border-radius:30px; cursor:pointer; box-shadow: 0 4px 10px rgba(255, 26, 80, 0.4);\">\r\n        BOOK NOW\r\n    <\/button>\r\n<\/div>\r\n\r\n<div id=\"bookingModal\" style=\"display:none; position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(0,0,0,0.7); z-index:9999; overflow:auto;\">\r\n    <div style=\"background:#fff; max-width:750px; margin:50px auto; padding:30px; border-radius:15px; position:relative; box-shadow: 0 5px 15px rgba(0,0,0,0.3);\">\r\n\r\n        <button onclick=\"closeBookingForm()\" style=\"position:absolute; top:15px; right:15px; font-size:24px; background:none; border:none; cursor:pointer; color:#333;\">\u2716<\/button>\r\n\r\n        <h2 style=\"text-align:center; margin-bottom:10px; color:#2E7D32; font-size:26px;\" id=\"tourTitle\"><\/h2>\r\n        <p style=\"text-align:center; margin-bottom:25px; color:#555;\" id=\"tourDesc\"><\/p>\r\n\r\n        <form id=\"bookingForm\" onsubmit=\"event.preventDefault();\">\r\n\r\n            <div style=\"margin-top:20px; margin-bottom:16px;\">\r\n                <label for=\"fecha\" class=\"form-label\"><b>\ud83d\udcc5 Fecha (Select Date):<\/b><\/label><span id=\"fecha-asterisk\" class=\"field-asterisk\" style=\"display:none\">*<\/span>\r\n                <input type=\"date\" id=\"fecha\" class=\"input\" required onchange=\"calcularTotal()\">\r\n                <span id=\"fecha-error\" class=\"field-error\" style=\"display:none\"><\/span>\r\n            <\/div>\r\n\r\n            <div style=\"margin-bottom:12px;\">\r\n                <label for=\"hora\" class=\"form-label\"><b>Hora (Select Time):<\/b><\/label><span id=\"hora-asterisk\" class=\"field-asterisk\" style=\"display:none\">*<\/span>\r\n                <select id=\"hora\" class=\"input\">\r\n                    <option value=\"\" selected disabled>Select a time<\/option>\r\n                    <option value=\"8:00 am\">8:00 am<\/option>\r\n                    <option value=\"9:00 am\">9:00 am<\/option>\r\n                    <option value=\"10:00 am\">10:00 am<\/option>\r\n                    <option value=\"1:00 pm\">1:00 pm<\/option>\r\n                    <option value=\"2:00 pm\">2:00 pm<\/option>\r\n                <\/select>\r\n                <span id=\"hora-error\" class=\"field-error\" style=\"display:none\"><\/span>\r\n            <\/div>\r\n\r\n            <div style=\"margin-bottom:12px;\">\r\n                <label for=\"tipoVisitante\" class=\"form-label\"><b>Visitor Type:<\/b><\/label><span id=\"tipoVisitante-asterisk\" class=\"field-asterisk\" style=\"display:none\">*<\/span>\r\n                <select id=\"tipoVisitante\" class=\"input\" onchange=\"onVisitorTypeChange(); calcularTotal()\">\r\n                    <option value=\"\" selected disabled>Select visitor type<\/option>\r\n                    <option value=\"extranjero\">Foreign \/ Extranjero<\/option>\r\n                    <option value=\"nacional\">Local \/ Nacional<\/option>\r\n                <\/select>\r\n                <span id=\"tipoVisitante-error\" class=\"field-error\" style=\"display:none\"><\/span>\r\n            <\/div>\r\n\r\n            <div id=\"guideLanguageDiv\" style=\"display:none; margin-bottom:15px;\">\r\n                <label for=\"guideLanguage\" class=\"form-label\"><b>Select Guide Language:<\/b><\/label><span id=\"guideLanguage-asterisk\" class=\"field-asterisk\" style=\"display:none\">*<\/span>\r\n                <select id=\"guideLanguage\" class=\"input\">\r\n                    <option value=\"\" selected disabled>Select guide language<\/option>\r\n                    <option value=\"English\">English<\/option>\r\n                    <option value=\"Spanish\">Spanish<\/option>\r\n                <\/select>\r\n                <p class=\"note\"><i>Choose the tour guide's language.<\/i><\/p>\r\n                <span id=\"guideLanguage-error\" class=\"field-error\" style=\"display:none\"><\/span>\r\n            <\/div>\r\n\r\n<h3 class=\"section-title\">Travelers<\/h3>\r\n<p class=\"section-note\">Prices vary by age and number of people.<\/p>\r\n<p class=\"note\"><i>Total travelers: <span id=\"totalTravelers\" style=\"font-weight:bold;\">0<\/span><\/i><\/p>\r\n<p class=\"note discount-note\" id=\"discountNote\"><i>10% discount available for groups of 10 or more people.<\/i><\/p>\r\n\r\n<div class=\"traveler-row\">\r\n<div class=\"traveler-info\">\r\n<label for=\"adultos\" class=\"traveler-label\">Adults (13-70 years):<span class=\"discount-tag discount-green\">-0%<\/span><\/label>\r\n<\/div>\r\n<div class=\"quantity-control\">\r\n<button type=\"button\" class=\"qty-btn minus-btn\" data-target=\"adultos\">-<\/button>\r\n<input type=\"number\" id=\"adultos\" min=\"0\" value=\"0\" class=\"input-num\" oninput=\"calcularTotal()\">\r\n<button type=\"button\" class=\"qty-btn plus-btn\" data-target=\"adultos\">+<\/button>\r\n<\/div>\r\n<\/div>\r\n<div class=\"traveler-row\">\r\n<div class=\"traveler-info\">\r\n<label for=\"ninos\" class=\"traveler-label\">Children (5-12 years):<span class=\"discount-tag discount-green\">-50%*<\/span><\/label>\r\n<\/div>\r\n<div class=\"quantity-control\">\r\n<button type=\"button\" class=\"qty-btn minus-btn\" data-target=\"ninos\">-<\/button>\r\n<input type=\"number\" id=\"ninos\" min=\"0\" value=\"0\" class=\"input-num\" oninput=\"calcularTotal()\">\r\n<button type=\"button\" class=\"qty-btn plus-btn\" data-target=\"ninos\">+<\/button>\r\n<\/div>\r\n<\/div>\r\n<div class=\"traveler-row\">\r\n<div class=\"traveler-info\">\r\n<label for=\"bebes\" class=\"traveler-label\">Babies (0-4 years):<span class=\"discount-tag discount-green\">FREE*<\/span><\/label>\r\n<\/div>\r\n<div class=\"quantity-control\">\r\n<button type=\"button\" class=\"qty-btn minus-btn\" data-target=\"bebes\">-<\/button>\r\n<input type=\"number\" id=\"bebes\" min=\"0\" value=\"0\" class=\"input-num\" oninput=\"calcularTotal()\">\r\n<button type=\"button\" class=\"qty-btn plus-btn\" data-target=\"bebes\">+<\/button>\r\n<\/div>\r\n<\/div>\r\n\r\n<h3 class=\"section-title\">Add extras<\/h3>\r\n<p class=\"section-note\">Select the extra items you need and add the quantity.<\/p>\r\n\r\n<div class=\"extra-item extra-item-featured no-qty-row\">\r\n    <div class=\"extra-label-info\">\r\n        <span class=\"featured-badge\">\u2b50 Recommended<\/span>\r\n        <label class=\"extra-label\" style=\"display:block; margin-top:6px;\">\r\n            <input type=\"checkbox\" id=\"extraGuia\" onchange=\"calcularTotal()\">\r\n            Optional Guide to accompany your group (<span id=\"precioGuia\" class=\"price-span\" style=\"color:black;\">\u20a110000<\/span>)\r\n        <\/label>\r\n        <p class=\"note\" style=\"margin-left:25px; margin-top:2px;\">\r\n            <i>(A private guide will accompany your group during the whole tour)<\/i>\r\n        <\/p>\r\n    <\/div>\r\n    <div class=\"quantity-control extra-qty-control\" style=\"visibility:hidden; height:36px; border:none; width:110px; margin-left:10px;\"><\/div>\r\n<\/div>\r\n\r\n<div class=\"extra-item no-qty-row\">\r\n    <div class=\"extra-label-info\">\r\n        <label class=\"extra-label\" style=\"display:block;\">\r\n            <input type=\"checkbox\" id=\"extraPerezoso\" onchange=\"calcularTotal()\"> \r\n            Sloth & Tropical Birds Tour (<span id=\"precioPerezoso\" class=\"price-span\" style=\"color:black;\">$10<\/span> per person)\r\n        <\/label>\r\n        <p class=\"note\" style=\"margin-left:25px; margin-top:2px;\">\r\n            <i>(Includes binoculars and telescope use)<\/i>\r\n        <\/p>\r\n    <\/div>\r\n    <div class=\"quantity-control extra-qty-control\" style=\"visibility:hidden; height:36px; border:none; width:110px; margin-left:10px;\"><\/div>\r\n<\/div>\r\n\r\n<div class=\"extra-item with-qty-row\">\r\n    <div class=\"extra-label-info\">\r\n        <label class=\"extra-label\" for=\"botellasAgua\">Bottled Water (<span id=\"precioAgua\" class=\"price-span\" style=\"color:black;\">$2<\/span> each)<\/label>\r\n    <\/div>\r\n    <div class=\"quantity-control extra-qty-control\">\r\n        <button type=\"button\" class=\"qty-btn minus-btn\" data-target=\"botellasAgua\">-<\/button>\r\n        <input type=\"number\" id=\"botellasAgua\" min=\"0\" value=\"0\" class=\"input-num extra-num\" oninput=\"calcularTotal()\">\r\n        <button type=\"button\" class=\"qty-btn plus-btn\" data-target=\"botellasAgua\">+<\/button>\r\n    <\/div>\r\n    <input type=\"checkbox\" id=\"checkAgua\" onchange=\"calcularTotal()\" style=\"display:none;\"\/>\r\n<\/div>\r\n\r\n<div class=\"extra-item with-qty-row\">\r\n    <div class=\"extra-label-info\">\r\n        <label class=\"extra-label\" for=\"numToallas\">Towels (<span id=\"precioToallas\" class=\"price-span\" style=\"color:black;\">$2<\/span> each)<\/label>\r\n    <\/div>\r\n    <div class=\"quantity-control extra-qty-control\">\r\n        <button type=\"button\" class=\"qty-btn minus-btn\" data-target=\"numToallas\">-<\/button>\r\n        <input type=\"number\" id=\"numToallas\" min=\"0\" value=\"0\" class=\"input-num extra-num\" oninput=\"calcularTotal()\">\r\n        <button type=\"button\" class=\"qty-btn plus-btn\" data-target=\"numToallas\">+<\/button>\r\n    <\/div>\r\n    <input type=\"checkbox\" id=\"checkToallas\" onchange=\"calcularTotal()\" style=\"display:none;\"\/>\r\n<\/div>\r\n\r\n<div class=\"extra-item with-qty-row\">\r\n    <div class=\"extra-label-info\">\r\n        <label class=\"extra-label\" for=\"numSnacks\">Granuts Snacks (<span id=\"precioSnacks\" class=\"price-span\" style=\"color:black;\">$2<\/span> each)<\/label>\r\n    <\/div>\r\n    <div class=\"quantity-control extra-qty-control\">\r\n        <button type=\"button\" class=\"qty-btn minus-btn\" data-target=\"numSnacks\">-<\/button>\r\n        <input type=\"number\" id=\"numSnacks\" min=\"0\" value=\"0\" class=\"input-num extra-num\" oninput=\"calcularTotal()\">\r\n        <button type=\"button\" class=\"qty-btn plus-btn\" data-target=\"numSnacks\">+<\/button>\r\n    <\/div>\r\n    <input type=\"checkbox\" id=\"checkSnacks\" onchange=\"calcularTotal()\" style=\"display:none;\"\/>\r\n<\/div>\r\n\r\n<div class=\"extra-item with-qty-row\">\r\n    <div class=\"extra-label-info\">\r\n        <label class=\"extra-label\" for=\"numPonchos\">Rain Ponchos (<span id=\"precioPonchos\" class=\"price-span\" style=\"color:black;\">$2<\/span> each)<\/label>\r\n        <p class=\"note\" style=\"margin-left:25px; margin-top:2px;\">\r\n            <i>(Recommended for rainy season)<\/i>\r\n        <\/p>\r\n    <\/div>\r\n    <div class=\"quantity-control extra-qty-control\">\r\n        <button type=\"button\" class=\"qty-btn minus-btn\" data-target=\"numPonchos\">-<\/button>\r\n        <input type=\"number\" id=\"numPonchos\" min=\"0\" value=\"0\" class=\"input-num extra-num\" oninput=\"calcularTotal()\">\r\n        <button type=\"button\" class=\"qty-btn plus-btn\" data-target=\"numPonchos\">+<\/button>\r\n    <\/div>\r\n    <input type=\"checkbox\" id=\"checkPonchos\" onchange=\"calcularTotal()\" style=\"display:none;\"\/>\r\n<\/div>\r\n\r\n<div class=\"extra-item with-qty-row\">\r\n    <div class=\"extra-label-info\">\r\n        <label class=\"extra-label\" for=\"numBinoculares\">Binocular Use (<span id=\"precioBinoculares\" class=\"price-span\" style=\"color:black;\">$5<\/span>)<\/label>\r\n    <\/div>\r\n    <div class=\"quantity-control extra-qty-control\">\r\n        <button type=\"button\" class=\"qty-btn minus-btn\" data-target=\"numBinoculares\">-<\/button>\r\n        <input type=\"number\" id=\"numBinoculares\" min=\"0\" value=\"0\" class=\"input-num extra-num\" oninput=\"calcularTotal()\">\r\n        <button type=\"button\" class=\"qty-btn plus-btn\" data-target=\"numBinoculares\">+<\/button>\r\n    <\/div>\r\n<\/div>\r\n\r\n<p class=\"note\" style=\"margin-left: 0; margin-top: -5px; margin-bottom: 12px; text-align: left; font-size: 0.85em; width: 100%;\">\r\n    <i>(Binoculars only available if you do NOT select the Sloth & Tropical Birds Tour)<\/i>\r\n<\/p>\r\n\r\n<div class=\"extra-item with-qty-row final-extra-row\">\r\n    <div class=\"extra-label-info\">\r\n        <label class=\"extra-label\" for=\"numBicicletas\">Bicycle Rental (<span id=\"precioBicicleta\" class=\"price-span\" style=\"color:black;\">$20<\/span> each)<\/label>\r\n        <p class=\"note\" style=\"margin-left:25px; margin-top:2px;\">\r\n            <i>(Rent a bike for your visit)<\/i>\r\n        <\/p>\r\n    <\/div>\r\n    <div class=\"quantity-control extra-qty-control\">\r\n        <button type=\"button\" class=\"qty-btn minus-btn\" data-target=\"numBicicletas\">-<\/button>\r\n        <input type=\"number\" id=\"numBicicletas\" min=\"0\" value=\"0\" class=\"input-num extra-num\" oninput=\"calcularTotal()\">\r\n        <button type=\"button\" class=\"qty-btn plus-btn\" data-target=\"numBicicletas\">+<\/button>\r\n    <\/div>\r\n<\/div>\r\n\r\n            <h3 class=\"section-title\">Customer Information<\/h3>\r\n\r\n            <label for=\"nombre\" class=\"form-label\">Full Name:<\/label><span id=\"nombre-asterisk\" class=\"field-asterisk\" style=\"display:none\">*<\/span>\r\n            <input type=\"text\" id=\"nombre\" class=\"input\" style=\"margin-bottom:6px;\">\r\n            <span id=\"nombre-error\" class=\"field-error\" style=\"display:none\"><\/span>\r\n\r\n            <label for=\"email\" class=\"form-label\">Email:<\/label><span id=\"email-asterisk\" class=\"field-asterisk\" style=\"display:none\">*<\/span>\r\n            <input type=\"email\" id=\"email\" class=\"input\" style=\"margin-bottom:6px;\">\r\n            <span id=\"email-error\" class=\"field-error\" style=\"display:none\"><\/span>\r\n\r\n            <label for=\"cedula\" class=\"form-label\">ID \/ Passport Number (C\u00e9dula o Pasaporte):<\/label><span id=\"cedula-asterisk\" class=\"field-asterisk\" style=\"display:none\">*<\/span>\r\n            <input type=\"text\" id=\"cedula\" class=\"input\" style=\"margin-bottom:6px; text-transform:uppercase;\" placeholder=\"Ej: 112340567 (sin guiones ni espacios)\">\r\n            <p class=\"note\"><i>Enter your ID or passport number without dashes or spaces. \/ Ingrese su c\u00e9dula o pasaporte sin guiones ni espacios.<\/i><\/p>\r\n            <span id=\"cedula-error\" class=\"field-error\" style=\"display:none\"><\/span>\r\n\r\n            <label for=\"acompanantes\" class=\"form-label\">Companion Names: <span id=\"acompanantes-note\" style=\"font-weight:normal; font-size:0.9em; color:#555;\">(Required if 2+ travelers)<\/span><\/label><span id=\"acompanantes-asterisk\" class=\"field-asterisk\" style=\"display:none\">*<\/span>\r\n            <textarea id=\"acompanantes\" class=\"input\" style=\"margin-bottom:12px;\" placeholder=\"List companion names separated by commas\"><\/textarea>\r\n            <span id=\"acompanantes-error\" class=\"field-error\" style=\"display:none\"><\/span>\r\n\r\n            <div style=\"margin:10px 0;\">\r\n                <style>\r\n                    #acceptTermsLink {\r\n                        color: #1A237E;\r\n                        font-weight: bold;\r\n                        text-decoration: none;\r\n                        transition: color 0.3s;\r\n                    }\r\n                    #acceptTermsLink:hover {\r\n                        color: #0D1033;\r\n                        text-decoration: underline;\r\n                    }\r\n                <\/style>\r\n                <label>\r\n                    <input type=\"checkbox\" id=\"acceptTerms\" style=\"margin-right:8px;\" onchange=\"clearFieldError(this)\">\r\n                    <span style=\"color:black;\">I have read and accept the <\/span>\r\n                    <a id=\"acceptTermsLink\" href=\"https:\/\/cuilpilapan.com\/terms-and-conditions\/\" target=\"_blank\">Terms and Conditions<\/a>\r\n                    <span style=\"color:black;\"> and consent to the use of my personal data for the reservation process.<\/span>\r\n                <\/label>\r\n                <span id=\"terms-error\" class=\"field-error\" style=\"display:none\"><\/span>\r\n            <\/div>\r\n\r\n            <h2 style=\"margin-top: 8px; font-size: 28px; color: #333;\">Total: <span id=\"total\" style=\"color:#ff8c00;\">$0<\/span><\/h2>\r\n            <div id=\"discountApplied\" style=\"margin-bottom:8px; font-weight:bold; color:#2d6a4f; display:none;\"><\/div>\r\n            <div id=\"totalAfterDiscount\" style=\"margin-bottom:8px; font-weight:normal; text-decoration:line-through; color:#aaa; display:none;\"><\/div>\r\n\r\n            <div id=\"tilopayDepositNote\" style=\"background: #e6f7ff; border: 1px solid #91d5ff; padding: 10px; border-radius: 5px; margin-top: 10px;\">\r\n                <strong style=\"color: #0056b3;\">IMPORTANT NOTE:<\/strong> When booking, a deposit will be charged for\r\n                <span id=\"depositAmountDisplay\" style=\"font-weight:bold;\"><\/span> (\u20a17000 local \/ $15 foreign). The remaining amount must be canceled upon arrival.\r\n            <\/div>\r\n\r\n            <div style=\"background:#f9f9f9; padding:15px; border-radius:10px; box-shadow:0 2px 6px rgba(0,0,0,0.1); margin-top:20px;\">\r\n                <b>Recommendations:<\/b> Choose the tour that suits your physical capacity to fully enjoy the adventure.\r\n                Bring appropriate clothing, extra clothes, snacks, water to stay hydrated,\r\n                and any personal medication if you have a medical condition.\r\n                Feel free to ask any questions.\r\n            <\/div>\r\n\r\n            <div style=\"text-align:center; margin-top:25px;\">\r\n                <button id=\"btnProceed\" onclick=\"onProceedToPayment()\" style=\"background:#ff8c00; color:white; font-size:18px; padding:15px 40px; border:none; border-radius:30px; cursor:pointer; margin-bottom:10px; box-shadow: 0 4px 10px rgba(255, 140, 0, 0.4);\">\r\n                    Proceder a reservar \/ Proceed to payment\r\n                <\/button>\r\n            <\/div>\r\n\r\n            <div id=\"paymentSection\" style=\"display:none; margin-top:25px; border-top:1px solid #eee; padding-top:16px;\">\r\n                <h3 class=\"section-title\" style=\"font-size:20px;\">Seleccione su m\u00e9todo de pago \/ Select payment method<\/h3>\r\n                \r\n                <div style=\"display:flex; flex-direction:column; gap:12px;\">\r\n\r\n                    <label style=\"display:flex; align-items:center; gap:10px; padding:10px; border:1px solid #ddd; border-radius:10px; cursor:pointer; transition:transform 0.2s; background:#fafafa;\">\r\n                        <input type=\"radio\" name=\"paymentMethod\" value=\"tarjeta\" onchange=\"onPaymentMethodChange()\" style=\"transform:scale(1.3); margin-right:6px;\">\r\n                        <img decoding=\"async\" src=\"https:\/\/cuilpilapan.com\/wp-content\/uploads\/2025\/10\/WhatsApp-Image-2025-10-22-at-3.59.08-PM.jpeg\"\r\n                            alt=\"Tilopay\" width=\"50\" height=\"50\" style=\"border-radius:8px; transition:transform 0.3s;\">\r\n                        <span style=\"font-size:16px;\">Credit\/Debit Card (Tilopay) - Deposit Only<\/span>\r\n                    <\/label>\r\n\r\n                    <label style=\"display:flex; align-items:center; gap:10px; padding:10px; border:1px solid #ddd; border-radius:10px; cursor:pointer; transition:transform 0.2s; background:#fafafa;\">\r\n                        <input type=\"radio\" name=\"paymentMethod\" value=\"simpe\" onchange=\"onPaymentMethodChange()\" style=\"transform:scale(1.3); margin-right:6px;\">\r\n                        <img decoding=\"async\" src=\"https:\/\/cuilpilapan.com\/wp-content\/uploads\/2025\/10\/WhatsApp-Image-2025-10-22-at-3.57.36-PM.jpeg\"\r\n                            alt=\"Simpe M\u00f3vil\" width=\"50\" height=\"50\" style=\"border-radius:8px; transition:transform 0.3s;\">\r\n                        <span style=\"font-size:16px;\">Simpe M\u00f3vil - Deposit Only (or full payment)<\/span>\r\n                    <\/label>\r\n\r\n                    <label style=\"display:flex; align-items:center; gap:10px; padding:10px; border:1px solid #ddd; border-radius:10px; cursor:pointer; transition:transform 0.2s; background:#fafafa;\">\r\n                        <input type=\"radio\" name=\"paymentMethod\" value=\"binance\" onchange=\"onPaymentMethodChange()\" style=\"transform:scale(1.3); margin-right:6px;\">\r\n                        <img decoding=\"async\" src=\"https:\/\/cuilpilapan.com\/wp-content\/uploads\/2025\/10\/WhatsApp-Image-2025-10-22-at-3.56.45-PM.jpeg\"\r\n                            alt=\"Binance\" width=\"50\" height=\"50\" style=\"border-radius:8px; transition:transform 0.3s;\">\r\n                        <span style=\"font-size:16px;\">Binance Payment (USDT) - Deposit Only (or full payment)<\/span>\r\n                    <\/label>\r\n                <\/div>\r\n\r\n<style>\r\n#paymentSection label:hover {\r\ntransform: scale(1.03);\r\nbackground: #fffbe6;\r\nbox-shadow: 0 2px 6px rgba(0,0,0,0.1);\r\n}\r\n#paymentSection img:hover {\r\ntransform: scale(1.1) rotate(3deg);\r\n}\r\n<\/style>\r\n\r\n<div id=\"paymentDetails\" style=\"margin-top:12px;\"><\/div>\r\n\r\n<div id=\"tilopayButtonContainer\" style=\"text-align:center; margin-top:20px; display:none;\">\r\n<button type=\"button\" onclick=\"handleCardPayment()\"\r\n                        style=\"\r\n                            background-color: #007bff;\r\n                            color: white;\r\n                            padding: 15px 30px;\r\n                            border: none;\r\n                            border-radius: 5px;\r\n                            font-size: 18px;\r\n                            cursor: pointer;\r\n                            box-shadow: 0 4px 6px rgba(0,0,0,0.1);\r\n                            transition: background-color 0.3s;\r\n                        \"\r\n                        onmouseover=\"this.style.backgroundColor='#0056b3'\"\r\n                        onmouseout=\"this.style.backgroundColor='#007bff'\"\r\n                    >\r\n                        \ud83d\udcb3 Pay Deposit Now with Card (Tilopay)\r\n                    <\/button>\r\n                    <p style=\"margin-top:10px; font-size:0.9em; color:#555;\">You will be redirected to the Tilopay payment gateway in this tab.<\/p>\r\n                <\/div>\r\n            <\/div>\r\n\r\n        <\/form>\r\n\r\n    <\/div>\r\n<\/div>\r\n\r\n<style>\r\n\/* Estilos Globales *\/\r\n.input, textarea, select { width:100%; padding:10px; margin:3px 0; border:1px solid #ddd; border-radius:8px; display:block; box-sizing: border-box; }\r\n\r\n\/* 1. ESTILO PARA DESHABILITAR D\u00cdAS ANTERIORES EN EL CALENDARIO *\/\r\ninput[type=\"date\"] { font-family: inherit; color: #333; }\r\n\/* MEJORA 1: Estilo para d\u00edas inv\u00e1lidos en Safari\/iOS *\/\r\ninput[type=\"date\"]:not([value=\"\"]):invalid { box-shadow: 0 0 5px rgba(231,76,60,0.6); }\r\n\r\n.input-num { width: 40px; text-align: center; border: none; padding: 0; -moz-appearance: textfield; }\r\n.input-num::-webkit-inner-spin-button, .input-num::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }\r\n\r\n.form-label { display:block; margin-bottom:6px; font-weight: 500; color: #333; }\r\n.note { font-size:0.9em; color:#555; margin:3px 0 5px 0; }\r\n.section-title { margin-top:20px; margin-bottom:10px; font-size:24px; color:#555; border-bottom: 2px solid #ddd; padding-bottom: 5px; }\r\n.section-note { margin-top:8px; margin-bottom:15px; font-weight:normal; color:#444; font-size:16px; }\r\n\r\n\/* Traveler Quantity Controls *\/\r\n.traveler-row { display: flex; justify-content: space-between; align-items: center; margin-bottom: 15px; padding: 10px 0; border-bottom: 1px solid #eee; }\r\n.traveler-row:last-child { border-bottom: none; margin-bottom: 0; }\r\n.traveler-info { display: flex; align-items: center; }\r\n.traveler-label { font-size: 16px; color: #333; display: flex; align-items: center; gap: 10px; margin-right: 15px; }\r\n.quantity-control { display: flex; align-items: center; border: 1px solid #ccc; border-radius: 5px; overflow: hidden; }\r\n.qty-btn { background: #f7f7f7; border: none; color: #555; padding: 8px 10px; cursor: pointer; font-weight: bold; font-size: 16px; transition: background 0.2s; line-height: 1; height: 36px; box-sizing: border-box; }\r\n.qty-btn:hover { background: #eee; color: #000; }\r\n.qty-btn:active { background: #ddd; }\r\n.input-num { padding: 8px 0; height: 36px; box-sizing: border-box; font-size: 16px; }\r\n\r\n.discount-tag { background: #e9f5e9; color: #2E7D32; padding: 3px 8px; border-radius: 10px; font-size: 14px; font-weight: bold; margin-left: 0; white-space: nowrap; }\r\n\r\n\/* Extras *\/\r\n.extra-item {\r\n    display: flex;\r\n    justify-content: space-between;\r\n    align-items: flex-start;\r\n    padding: 10px 0;\r\n    border-bottom: 1px solid #eee;\r\n}\r\n.extra-item.final-extra-row { border-bottom: none; }\r\n.extra-label-info {\r\n    display: flex;\r\n    flex-direction: column;\r\n    flex-grow: 1;\r\n    margin-right: 15px;\r\n}\r\n.extra-label { \r\n    font-size: 16px; \r\n    color: #333; \r\n    display: flex; \r\n    align-items: center; \r\n    margin-bottom: 0; \r\n}\r\n.extra-label input[type=\"checkbox\"] { \r\n    width: auto; \r\n    margin-right: 10px; \r\n}\r\n.extra-item .note { \r\n    margin-left: 25px;\r\n    margin-top: 2px;\r\n    margin-bottom: 0; \r\n    font-size: 0.85em;\r\n}\r\n\r\n\/* Extra destacado: Gu\u00eda Opcional *\/\r\n.extra-item-featured {\r\n    background: linear-gradient(135deg, #fff8ec, #fff1d6);\r\n    border: 2px solid #ff8c00;\r\n    border-radius: 12px;\r\n    padding: 14px 16px !important;\r\n    margin-bottom: 12px;\r\n    box-shadow: 0 3px 8px rgba(255, 140, 0, 0.15);\r\n}\r\n.extra-item-featured .extra-label {\r\n    font-weight: bold;\r\n    font-size: 17px;\r\n}\r\n.featured-badge {\r\n    display: inline-block;\r\n    background: #ff8c00;\r\n    color: #fff;\r\n    font-size: 12px;\r\n    font-weight: bold;\r\n    padding: 3px 10px;\r\n    border-radius: 20px;\r\n    letter-spacing: 0.3px;\r\n}\r\n\r\n.price-span { font-weight: bold; color: #000; }\r\n.extra-qty-control { margin-left: 0; }\r\n.extra-num { width: 40px !important; }\r\n\r\n\/* Error visual *\/\r\n.invalid-field { border-color:#e74c3c !important; box-shadow: 0 0 4px rgba(231,76,60,0.4); }\r\n.field-error { color:#e74c3c; font-size:0.9em; display:block; margin-top:4px; }\r\n.field-asterisk { color:#e74c3c; font-weight:bold; margin-left:6px; font-size:1.2em; vertical-align:middle; }\r\n\r\n\/* Small helper for payment details box *\/\r\n#paymentDetails { background:#fafafa; padding:12px; border-radius:8px; border:1px dashed #ddd; margin-top:10px; }\r\n.payment-note { background:#fff3cd; padding:10px; border-radius:6px; margin-bottom:8px; border:1px solid #ffeeba; }\r\n.action-btn { display:inline-block; margin:6px 6px 0 0; padding:10px 14px; border-radius:8px; text-decoration:none; cursor:pointer; }\r\n.btn-green { background:#25d366; color:#fff; }\r\n.btn-blue { background:#0072c6; color:#fff; }\r\n.btn-gray { background:#6c757d; color:#fff; }\r\n<\/style>\r\n\r\n<script>\r\n\/* ---------- Helpers and state ---------- *\/\r\nlet currentButton = null;\r\nconst CR_OFFSET_MINUTES = -6 * 60; \/\/ Costa Rica UTC-6 => -360 minutes\r\nconst ADMIN_WHATSAPP = '50660110640';\r\nconst ADMIN_EMAIL = 'contacto@cuilpilapan.com';\r\n\r\n\/\/ CONFIGURACI\u00d3N DE TILOPAY (montos fijos, sin manipulaci\u00f3n de cliente)\r\nconst TILO_LINK_COLONES = 'https:\/\/tp.cr\/l\/MTYyMTQ3';\r\nconst DEPOSIT_COLONES = 7000;\r\nconst TILO_LINK_USD = 'https:\/\/tp.cr\/l\/MTYyMTQ4';\r\nconst DEPOSIT_USD = 15.00;\r\n\r\nconst RETURN_URL = 'https:\/\/cuilpilapan.com\/payment-success\/';\r\nconst SAVE_URL = '\/save_pending_reservation.php';\r\nconst SEND_BOOKING_URL = '\/send_booking.php';\r\n\r\n\/\/ Simpe \/ Binance details\r\nconst SIMPE_PHONE = '60110640';\r\nconst SIMPE_NAME = 'Cuipilapan Sociedad Civil';\r\nconst BINANCE_ID = '450335940';\r\n\r\nconst STORAGE_KEY = 'reservaCuilpilapan_v1';\r\nlet _lastComputed = {};\r\n\r\nfunction generateOrderReference() {\r\n    const date = new Date();\r\n    const dateStr = date.getFullYear().toString() +\r\n                    (date.getMonth() + 1).toString().padStart(2, '0') +\r\n                    date.getDate().toString().padStart(2, '0');\r\n    const randomStr = Math.random().toString(36).substring(2, 7).toUpperCase();\r\n    return `CUP-${dateStr}-${randomStr}`;\r\n}\r\n\r\nfunction formatCurrency(amount, tipo) {\r\n    if (tipo === 'nacional') {\r\n        return '\u20a1' + Math.round(amount);\r\n    } else {\r\n        return '$' + Number(amount).toFixed(2);\r\n    }\r\n}\r\n\r\n\/* ---------- small UI helpers for errors ---------- *\/\r\nfunction showFieldError(inputEl, message) {\r\n    if (!inputEl) return;\r\n    inputEl.classList.add('invalid-field');\r\n\r\n    const errId = inputEl.id + '-error';\r\n    let err = document.getElementById(errId);\r\n    if (!err) {\r\n        err = document.createElement('span');\r\n        err.id = errId;\r\n        err.className = 'field-error';\r\n        inputEl.parentNode.insertBefore(err, inputEl.nextSibling);\r\n    }\r\n    err.innerText = message;\r\n    err.style.display = 'block';\r\n\r\n    const starId = inputEl.id + '-asterisk';\r\n    let star = document.getElementById(starId);\r\n    if (!star) {\r\n        star = document.createElement('span');\r\n        star.id = starId;\r\n        star.className = 'field-asterisk';\r\n        star.innerText = '*';\r\n        const label = document.querySelector('label[for=\"' + inputEl.id + '\"]');\r\n        if (label && label.parentNode) {\r\n            label.parentNode.insertBefore(star, label.nextSibling);\r\n        } else {\r\n            inputEl.parentNode.insertBefore(star, inputEl);\r\n        }\r\n    }\r\n    star.style.display = 'inline';\r\n}\r\n\r\nfunction clearFieldError(inputEl) {\r\n    if (!inputEl) return;\r\n    inputEl.classList.remove('invalid-field');\r\n    const err = document.getElementById(inputEl.id + '-error');\r\n    if (err) { err.style.display = 'none'; err.innerText = ''; }\r\n    const star = document.getElementById(inputEl.id + '-asterisk');\r\n    if (star) star.style.display = 'none';\r\n}\r\n\r\n\/* ---------- Open \/ Close ---------- *\/\r\nfunction openBookingForm(button) {\r\n    currentButton = button;\r\n    document.getElementById('bookingModal').style.display = 'block';\r\n    document.getElementById('tourTitle').innerText = button.getAttribute('data-tour') || 'Tour';\r\n    document.getElementById('tourDesc').innerText = button.getAttribute('data-desc') || '';\r\n\r\n    applyDateRestriction();\r\n    clearAllFieldErrors();\r\n\r\n    document.getElementById('paymentSection').style.display = 'none';\r\n    document.getElementById('paymentDetails').innerHTML = '';\r\n    document.getElementById('tilopayButtonContainer').style.display = 'none';\r\n\r\n    const radios = document.getElementsByName('paymentMethod');\r\n    for (let r of radios) r.checked = false;\r\n\r\n    document.getElementById('btnProceed').style.display = 'inline-block';\r\n\r\n    calcularTotal();\r\n}\r\n\r\nfunction closeBookingForm() {\r\n    document.getElementById('bookingModal').style.display = 'none';\r\n}\r\n\r\n\/* L\u00d3GICA DE CALENDARIO *\/\r\nfunction applyDateRestriction() {\r\n    const fechaEl = document.getElementById('fecha');\r\n    if (!fechaEl) return;\r\n\r\n    const now = new Date();\r\n    const localOffsetMin = now.getTimezoneOffset();\r\n    const utcNowMs = now.getTime() + (localOffsetMin * 60000);\r\n    const crNowMs = utcNowMs + (CR_OFFSET_MINUTES * 60000);\r\n    const crToday = new Date(crNowMs);\r\n\r\n    const year = crToday.getFullYear();\r\n    const month = (crToday.getMonth() + 1).toString().padStart(2, '0');\r\n    const day = crToday.getDate().toString().padStart(2, '0');\r\n    const minDate = `${year}-${month}-${day}`;\r\n\r\n    fechaEl.min = minDate;\r\n\r\n    fechaEl.addEventListener('change', function() {\r\n        const selectedDate = new Date(this.value);\r\n        const todayRef = new Date(Date.UTC(crToday.getFullYear(), crToday.getMonth(), crToday.getDate()));\r\n\r\n        if (selectedDate < todayRef) {\r\n            this.setCustomValidity('The selected date cannot be in the past \/ La fecha seleccionada no puede ser anterior a hoy.');\r\n            this.classList.add('invalid-field');\r\n            showFieldError(this, 'The selected date cannot be in the past \/ La fecha seleccionada no puede ser anterior a hoy.');\r\n        } else {\r\n            this.setCustomValidity('');\r\n            clearFieldError(this);\r\n        }\r\n    });\r\n}\r\n\r\nfunction onVisitorTypeChange(){\r\n    const tipo = document.getElementById('tipoVisitante').value;\r\n    document.getElementById('guideLanguageDiv').style.display = (tipo === 'extranjero') ? 'block' : 'none';\r\n    calcularTotal();\r\n}\r\n\r\n\/* ---------- Core calculation ---------- *\/\r\nfunction calcularTotal() {\r\n    if (!currentButton) return;\r\n\r\n    let tipo = document.getElementById('tipoVisitante').value;\r\n    if (!tipo) tipo = 'nacional';\r\n\r\n    let adultos = parseInt(document.getElementById('adultos').value) || 0;\r\n    let ninos = parseInt(document.getElementById('ninos').value) || 0;\r\n    let bebes = parseInt(document.getElementById('bebes').value) || 0;\r\n    let totalViajeros = adultos + ninos + bebes;\r\n    document.getElementById('totalTravelers').innerText = totalViajeros;\r\n\r\n    let precioAdultoNac = parseFloat(currentButton.getAttribute('data-precio-adulto-nacional')) || 0;\r\n    let precioAdultoExt = parseFloat(currentButton.getAttribute('data-precio-adulto-extranjero')) || 0;\r\n    let precioAdulto = (tipo === 'nacional') ? precioAdultoNac : precioAdultoExt;\r\n    let precioNino = precioAdulto \/ 2;\r\n\r\n    \/\/ extras unit prices (local vs foreign)\r\n    let precioExtraPerezoso = (tipo === 'nacional') ? 3500 : 10;\r\n    let precioAgua = (tipo === 'nacional') ? 1000 : 2;\r\n    let precioToallas = (tipo === 'nacional') ? 1000 : 2;\r\n    let precioSnacks = (tipo === 'nacional') ? 1000 : 2;\r\n    let precioPonchos = (tipo === 'nacional') ? 1000 : 2;\r\n    let precioBinoculares = (tipo === 'nacional') ? 2000 : 5;\r\n    let precioGuia = (tipo === 'nacional') ? 10000 : 32;\r\n    let precioBicicleta = (tipo === 'nacional') ? 7000 : 20;\r\n\r\n    let extraPerezoso = document.getElementById('extraPerezoso').checked;\r\n    let botellasAgua = parseInt(document.getElementById('botellasAgua').value) || 0;\r\n    let numToallas = parseInt(document.getElementById('numToallas').value) || 0;\r\n    let numSnacks = parseInt(document.getElementById('numSnacks').value) || 0;\r\n    let numPonchos = parseInt(document.getElementById('numPonchos').value) || 0;\r\n    let numBinoculares = parseInt(document.getElementById('numBinoculares').value) || 0;\r\n    let numBicicletas = parseInt(document.getElementById('numBicicletas')?.value) || 0;\r\n    let extraGuia = document.getElementById('extraGuia')?.checked || false;\r\n\r\n    let total = (adultos * precioAdulto) + (ninos * precioNino);\r\n\r\n    if (extraPerezoso) {\r\n        total += (adultos + ninos) * precioExtraPerezoso;\r\n    }\r\n    total += botellasAgua * precioAgua;\r\n    total += numToallas * precioToallas;\r\n    total += numSnacks * precioSnacks;\r\n    total += numPonchos * precioPonchos;\r\n    total += numBicicletas * precioBicicleta;\r\n\r\n    if (numBinoculares > 0 && !extraPerezoso) {\r\n        total += numBinoculares * precioBinoculares;\r\n    } else if (extraPerezoso) {\r\n        document.getElementById('numBinoculares').value = 0;\r\n    }\r\n\r\n    if (extraGuia) {\r\n        total += precioGuia;\r\n    }\r\n\r\n    \/\/ Descuento autom\u00e1tico: 10% \u00fanicamente para grupos de 10 personas o m\u00e1s\r\n    let totalDiscountPercent = (totalViajeros >= 10) ? 10 : 0;\r\n\r\n    let rawTotal = total;\r\n    let discountedTotal = total;\r\n    let discountText = '';\r\n    if (totalDiscountPercent > 0) {\r\n        discountedTotal = total * (1 - totalDiscountPercent \/ 100);\r\n        discountText = `\ud83d\udcb0 Discount Applied: ${totalDiscountPercent}% (Group of 10+ people)`;\r\n    }\r\n\r\n    if (tipo === 'nacional') {\r\n        rawTotal = Math.ceil(rawTotal);\r\n        discountedTotal = Math.ceil(discountedTotal);\r\n    }\r\n\r\n    document.getElementById('total').innerText = formatCurrency(discountedTotal, tipo);\r\n\r\n    if (totalDiscountPercent > 0) {\r\n        document.getElementById('discountApplied').style.display = 'block';\r\n        document.getElementById('discountApplied').innerText = discountText;\r\n\r\n        document.getElementById('totalAfterDiscount').style.display = 'block';\r\n        document.getElementById('totalAfterDiscount').innerText = `Total before discount: ${formatCurrency(rawTotal, tipo)}`;\r\n    } else {\r\n        document.getElementById('discountApplied').style.display = 'none';\r\n        document.getElementById('totalAfterDiscount').style.display = 'none';\r\n    }\r\n\r\n    \/\/ update unit-price labels\r\n    document.getElementById('precioPerezoso').innerText = formatCurrency(precioExtraPerezoso, tipo);\r\n    document.getElementById('precioAgua').innerText = formatCurrency(precioAgua, tipo);\r\n    document.getElementById('precioToallas').innerText = formatCurrency(precioToallas, tipo);\r\n    document.getElementById('precioSnacks').innerText = formatCurrency(precioSnacks, tipo);\r\n    document.getElementById('precioPonchos').innerText = formatCurrency(precioPonchos, tipo);\r\n    document.getElementById('precioBinoculares').innerText = formatCurrency(precioBinoculares, tipo);\r\n    document.getElementById('precioGuia').innerText = formatCurrency(precioGuia, tipo);\r\n    document.getElementById('precioBicicleta').innerText = formatCurrency(precioBicicleta, tipo);\r\n\r\n    const depositDisplayEl = document.getElementById('depositAmountDisplay');\r\n    const depositAmountText = tipo === 'nacional' ? formatCurrency(DEPOSIT_COLONES, 'nacional') : formatCurrency(DEPOSIT_USD, 'extranjero');\r\n    if (depositDisplayEl) {\r\n        depositDisplayEl.innerText = depositAmountText;\r\n    }\r\n    const tilopayNoteEl = document.getElementById('tilopayDepositNote');\r\n    if (tilopayNoteEl) {\r\n        tilopayNoteEl.innerHTML = `<strong style=\"color: #0056b3;\">IMPORTANT NOTE:<\/strong> When booking, a deposit will be charged for \r\n            <span id=\"depositAmountDisplay\" style=\"font-weight:bold;\">${depositAmountText}<\/span>. The remaining amount must be canceled upon arrival.`;\r\n    }\r\n\r\n    _lastComputed = {\r\n        rawTotal: rawTotal,\r\n        discountPercent: totalDiscountPercent,\r\n        discountedTotal: discountedTotal,\r\n        currencyType: tipo\r\n    };\r\n}\r\n\r\n\/* ---------- Validation and UI helpers ---------- *\/\r\nfunction clearAllFieldErrors() {\r\n    const ids = ['fecha','hora','tipoVisitante','guideLanguage','nombre','email','cedula','acompanantes','acceptTerms'];\r\n    ids.forEach(id => {\r\n        const el = document.getElementById(id);\r\n        if (el) clearFieldError(el);\r\n    });\r\n    const termsErr = document.getElementById('terms-error');\r\n    if(termsErr) termsErr.style.display = 'none';\r\n}\r\n\r\nfunction validateAll() {\r\n    clearAllFieldErrors();\r\n    let valid = true;\r\n\r\n    const adultos = parseInt(document.getElementById('adultos').value) || 0;\r\n    const ninos = parseInt(document.getElementById('ninos').value) || 0;\r\n    const bebes = parseInt(document.getElementById('bebes').value) || 0;\r\n    const totalViajeros = adultos + ninos + bebes;\r\n\r\n    if (totalViajeros < 1) {\r\n        const adultosEl = document.getElementById('adultos');\r\n        showFieldError(adultosEl, 'Minimum 1 traveler required \/ Se requiere m\u00ednimo 1 viajero');\r\n        valid = false;\r\n    }\r\n\r\n    const nombreEl = document.getElementById('nombre');\r\n    const nombre = (nombreEl.value || '').trim();\r\n    if (!nombre) { showFieldError(nombreEl, 'Please enter full name \/ Por favor ingrese su nombre completo'); valid = false; }\r\n\r\n    const emailEl = document.getElementById('email');\r\n    const email = (emailEl.value || '').trim();\r\n    const emailRegex = \/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/;\r\n    if (!email) { showFieldError(emailEl, 'Please enter email address \/ Por favor ingrese su correo'); valid = false; }\r\n    else if (!emailRegex.test(email)) { showFieldError(emailEl, 'Please enter a valid email address \/ Por favor ingrese un correo v\u00e1lido'); valid = false; }\r\n\r\n    const cedulaEl = document.getElementById('cedula');\r\n    const cedulaVal = (cedulaEl.value || '').trim();\r\n    const cedulaRegex = \/^[A-Za-z0-9]{5,20}$\/;\r\n    if (!cedulaVal) {\r\n        showFieldError(cedulaEl, 'Please enter your ID or passport number \/ Por favor ingrese su c\u00e9dula o pasaporte');\r\n        valid = false;\r\n    } else if (!cedulaRegex.test(cedulaVal)) {\r\n        showFieldError(cedulaEl, 'Enter only letters\/numbers, no dashes or spaces (5-20 characters) \/ Solo letras y n\u00fameros, sin guiones ni espacios (5-20 caracteres)');\r\n        valid = false;\r\n    }\r\n\r\n    const tipoEl = document.getElementById('tipoVisitante');\r\n    const tipo = tipoEl.value;\r\n    if (!tipo) { showFieldError(tipoEl, 'Please select visitor type \/ Seleccione tipo de visitante'); valid = false; }\r\n\r\n    if (tipo === 'extranjero') {\r\n        const glEl = document.getElementById('guideLanguage');\r\n        const glVal = (glEl.value || '').trim();\r\n        if (!glVal) { showFieldError(glEl, 'Please select the guide language \/ Seleccione idioma del gu\u00eda'); valid = false; }\r\n    }\r\n\r\n    const fechaEl = document.getElementById('fecha');\r\n    const fechaVal = fechaEl.value;\r\n    if (!fechaVal) { showFieldError(fechaEl, 'Please select a valid date \/ Por favor seleccione una fecha'); valid = false; }\r\n    if (fechaEl.customValidity && fechaEl.customValidity !== '') {\r\n        showFieldError(fechaEl, fechaEl.customValidity);\r\n        valid = false;\r\n    }\r\n\r\n    const horaEl = document.getElementById('hora');\r\n    const horaVal = horaEl.value;\r\n    if (!horaVal) { showFieldError(horaEl, 'Please select a valid time \/ Por favor seleccione una hora'); valid = false; }\r\n\r\n    const acompEl = document.getElementById('acompanantes');\r\n    const acompVal = (acompEl.value || '').trim();\r\n    if (totalViajeros >= 2 && acompVal.length < 3) {\r\n        showFieldError(acompEl, 'Please list companion names when there are 2 or more people \/ Por favor liste los acompa\u00f1antes cuando hay 2 o m\u00e1s personas.');\r\n        valid = false;\r\n    }\r\n\r\n    const accept = document.getElementById('acceptTerms');\r\n    if (!accept || !accept.checked) {\r\n        const termsErr = document.getElementById('terms-error');\r\n        termsErr.innerText = 'Debe aceptar los T\u00e9rminos y Condiciones y el uso de datos antes de continuar \/ You must accept Terms & Conditions and data usage.';\r\n        termsErr.style.display = 'block';\r\n        valid = false;\r\n    }\r\n\r\n    return valid;\r\n}\r\n\r\n\/* ---------- Gather form data for submission\/storage ---------- *\/\r\nfunction gatherFormData() {\r\n    const tour = document.getElementById('tourTitle').innerText;\r\n    const nombre = document.getElementById('nombre').value.trim();\r\n    const fecha = document.getElementById('fecha').value;\r\n    const hora = document.getElementById('hora').value;\r\n    const tipo = document.getElementById('tipoVisitante').value;\r\n    const email = document.getElementById('email').value || 'N\/A';\r\n    const cedula = (document.getElementById('cedula').value || '').trim().toUpperCase().replace(\/[\\s-]\/g, '');\r\n    const adultos = document.getElementById('adultos').value || '0';\r\n    const ninos = document.getElementById('ninos').value || '0';\r\n    const bebes = document.getElementById('bebes').value || '0';\r\n    const acompanantes = document.getElementById('acompanantes').value || '';\r\n    const guideLang = document.getElementById('guideLanguage').value || '';\r\n    const total = document.getElementById('total').innerText || '';\r\n    const discountText = document.getElementById('discountApplied').innerText || '';\r\n    const totalAfter = document.getElementById('totalAfterDiscount').innerText || '';\r\n    const comentarios = '';\r\n\r\n    let extrasArr = [];\r\n    if (document.getElementById('extraGuia')?.checked) extrasArr.push('Optional Guide (' + (document.getElementById('precioGuia')?.innerText || '') + ')');\r\n    if (document.getElementById('extraPerezoso')?.checked) extrasArr.push('Sloth & Tropical Birds Tour');\r\n    if ((parseInt(document.getElementById('botellasAgua')?.value) || 0) > 0) extrasArr.push('Bottled Water (' + document.getElementById('botellasAgua').value + ')');\r\n    if ((parseInt(document.getElementById('numToallas')?.value) || 0) > 0) extrasArr.push('Towels (' + document.getElementById('numToallas').value + ')');\r\n    if ((parseInt(document.getElementById('numSnacks')?.value) || 0) > 0) extrasArr.push('Snacks (' + document.getElementById('numSnacks').value + ')');\r\n    if ((parseInt(document.getElementById('numPonchos')?.value) || 0) > 0) extrasArr.push('Ponchos (' + document.getElementById('numPonchos').value + ')');\r\n    if ((parseInt(document.getElementById('numBinoculares')?.value) || 0) > 0 && !document.getElementById('extraPerezoso')?.checked) extrasArr.push('Binoculars (' + document.getElementById('numBinoculares').value + ')');\r\n    if ((parseInt(document.getElementById('numBicicletas')?.value) || 0) > 0) extrasArr.push('Bicycle Rental (' + document.getElementById('numBicicletas').value + ')');\r\n    const extrasText = extrasArr.length ? extrasArr.join('\\n- ') : 'None';\r\n\r\n    const computed = _lastComputed || {};\r\n    return {\r\n        tour, nombre, fecha, hora, tipo, email, cedula, adultos, ninos, bebes, acompanantes, guideLang, total, extrasText, discountText, totalAfter, comentarios,\r\n        rawTotal: computed.rawTotal || null,\r\n        discountedTotal: computed.discountedTotal || null,\r\n        currencyType: computed.currencyType || (document.getElementById('tipoVisitante').value || 'nacional')\r\n    };\r\n}\r\n\r\n\/* ---------- Proceed to payment ---------- *\/\r\nfunction onProceedToPayment() {\r\n    if (!validateAll()) {\r\n        const firstInvalid = document.querySelector('.invalid-field');\r\n        if (firstInvalid) firstInvalid.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n        return;\r\n    }\r\n    document.getElementById('paymentSection').style.display = 'block';\r\n    document.getElementById('btnProceed').style.display = 'none';\r\n    document.getElementById('paymentSection').scrollIntoView({behavior: 'smooth', block: 'center'});\r\n    onPaymentMethodChange();\r\n}\r\n\r\n\/* ---------- Save reservation to server ---------- *\/\r\nfunction persistReservation(formData, paymentMethodLabel, orderReference, depositAmount, depositCurrency) {\r\n    const payload = Object.assign({}, formData, {\r\n        paymentMethod: paymentMethodLabel,\r\n        orderReference: orderReference,\r\n        depositAmount: depositAmount,\r\n        depositCurrency: depositCurrency,\r\n        savedAt: new Date().toISOString()\r\n    });\r\n\r\n    try {\r\n        localStorage.setItem(STORAGE_KEY, JSON.stringify(payload));\r\n    } catch (e) {\r\n        console.error('Error saving reservation to localStorage (continuando con server)', e);\r\n    }\r\n\r\n    return fetch(SAVE_URL, {\r\n        method: 'POST',\r\n        headers: { 'Content-Type': 'application\/json' },\r\n        body: JSON.stringify(payload)\r\n    })\r\n    .then(response => response.json())\r\n    .then(data => {\r\n        if (!data.success) {\r\n            console.error('Error: La reserva NO se guard\u00f3 en el servidor:', data.message);\r\n            return false;\r\n        }\r\n        console.log(\"Reserva guardada en el servidor con \u00e9xito:\", orderReference);\r\n        return true;\r\n    })\r\n    .catch(error => {\r\n        console.error('Error de red al guardar en el servidor:', error);\r\n        return false;\r\n    });\r\n}\r\n\r\n\/* ---------- FUNCI\u00d3N DE PAGO CON TARJETA ---------- *\/\r\nasync function handleCardPayment() {\r\n    if (!validateAll()) {\r\n        alert('Please complete all form data correctly before proceeding to payment. \/ Por favor, complete todos los datos del formulario correctamente antes de pagar.');\r\n        const firstInvalid = document.querySelector('.invalid-field');\r\n        if (firstInvalid) firstInvalid.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n        return;\r\n    }\r\n\r\n    const btn = document.querySelector('#tilopayButtonContainer button');\r\n    btn.disabled = true;\r\n    const originalText = btn.innerText;\r\n    btn.innerText = 'Saving reservation... \/ Guardando reserva...';\r\n\r\n    const reservationData = gatherFormData();\r\n    reservationData.orderReference = generateOrderReference();\r\n\r\n    const isUSD = reservationData.currencyType !== 'nacional';\r\n\r\n    let tilopayAmount;\r\n    let tilopayCurrency;\r\n    let tilopayLink;\r\n\r\n    if (isUSD) {\r\n        tilopayAmount = DEPOSIT_USD.toFixed(2);\r\n        tilopayCurrency = 'USD';\r\n        tilopayLink = TILO_LINK_USD;\r\n    } else {\r\n        tilopayAmount = DEPOSIT_COLONES;\r\n        tilopayCurrency = 'CRC';\r\n        tilopayLink = TILO_LINK_COLONES;\r\n    }\r\n\r\n    const savedToServer = await persistReservation(reservationData, 'Card (Tilopay - Deposit)', reservationData.orderReference, tilopayAmount, tilopayCurrency);\r\n\r\n    if (!savedToServer) {\r\n        alert(\"\u274c Error: Could not secure reservation on the server. Please try again. \/ No se pudo asegurar la reserva en el servidor. Intente nuevamente.\");\r\n        btn.disabled = false;\r\n        btn.innerText = originalText;\r\n        return;\r\n    }\r\n\r\n    const conceptText = encodeURIComponent(`Reservation: ${reservationData.tour}. Total: ${reservationData.total}. Deposit: ${tilopayCurrency} ${tilopayAmount}`);\r\n\r\n    const tilopayUrl = `${tilopayLink}?` +\r\n                        `amount=${tilopayAmount}` +\r\n                        `&currency=${tilopayCurrency}` +\r\n                        `&reference=${reservationData.orderReference}` +\r\n                        `&description=${conceptText}` +\r\n                        `&return_url=${RETURN_URL}`;\r\n\r\n    btn.innerText = 'Redirecting to Tilopay... \/ Redirigiendo a Tilopay...';\r\n    window.location.href = tilopayUrl;\r\n}\r\n\r\n\/* ---------- Handle selection of payment method ---------- *\/\r\nfunction onPaymentMethodChange() {\r\n    const selected = document.querySelector('input[name=\"paymentMethod\"]:checked');\r\n    const detailsEl = document.getElementById('paymentDetails');\r\n    const tilopayBtnContainer = document.getElementById('tilopayButtonContainer');\r\n\r\n    detailsEl.innerHTML = '';\r\n    tilopayBtnContainer.style.display = 'none';\r\n\r\n    if (!selected) return;\r\n\r\n    const method = selected.value;\r\n    const data = gatherFormData();\r\n    const isUSD = data.currencyType !== 'nacional';\r\n    const depositAmountColones = formatCurrency(DEPOSIT_COLONES, 'nacional');\r\n    const depositAmountUSD = formatCurrency(DEPOSIT_USD, 'extranjero');\r\n\r\n    const summaryHtml = `<div style=\"margin-bottom:8px;\"><strong>Summary:<\/strong><br>Tour: ${data.tour}<br>Date: ${data.fecha} ${data.hora}<br>Name: ${data.nombre}<br>Total Tour: ${data.total}<br>${data.discountText ? data.discountText + '<br>' + (data.totalAfter ? data.totalAfter : '') : ''}<\/div>`;\r\n    detailsEl.insertAdjacentHTML('beforeend', summaryHtml);\r\n\r\n    if (method === 'tarjeta') {\r\n        detailsEl.insertAdjacentHTML('beforeend', `\r\n            <div class=\"payment-note\">\r\n                <strong>Card Payment (Tilopay - Deposit)<\/strong><br>\r\n                Only the deposit of <strong>${isUSD ? depositAmountUSD : depositAmountColones}<\/strong> will be charged. The remainder is paid on site.<br>\r\n                <br>You will be redirected to the secure Tilopay payment gateway in this tab.\r\n            <\/div>\r\n        `);\r\n        tilopayBtnContainer.style.display = 'block';\r\n\r\n        setTimeout(() => {\r\n            tilopayBtnContainer.scrollIntoView({behavior: 'smooth', block: 'nearest'});\r\n        }, 100);\r\n\r\n    } else if (method === 'simpe' || method === 'binance') {\r\n        const isSimpe = method === 'simpe';\r\n        const paymentLabel = isSimpe ? 'Simpe M\u00f3vil' : 'Binance (USDT)';\r\n        const phoneOrID = isSimpe ? SIMPE_PHONE : BINANCE_ID;\r\n        const nameOrTitle = isSimpe ? SIMPE_NAME : 'Wallet ID';\r\n        const noteTitle = isSimpe ? 'Payment by Simpe M\u00f3vil' : 'Payment by Binance (USDT)';\r\n        const totalToPay = data.total;\r\n\r\n        const depositAmount = isUSD ? depositAmountUSD : depositAmountColones;\r\n\r\n        const instruction = `<div class=\"payment-note\">\r\n            <strong>${noteTitle}<\/strong><br>\r\n            Please make a deposit payment of <strong>${depositAmount}<\/strong> to <strong>${nameOrTitle}<\/strong>: <strong>${phoneOrID}<\/strong>.\r\n            <br><br>\r\n            The deposit amount will be **deducted from your total payment** on the day of the tour.\r\n            <br>\r\n            *Note: You have the option to pay the full amount (${totalToPay}) if you prefer to simplify management.*\r\n        <\/div>`;\r\n\r\n        const uploadForm = `\r\n            <div style=\"border: 1px dashed #ff8c00; padding: 15px; border-radius: 8px; margin-top: 15px;\">\r\n                <p style=\"font-weight:bold; margin-bottom:10px;\">FINAL STEP: Upload your receipt to confirm your booking (English\/Spanish)<\/p>\r\n                <p style=\"margin-bottom:10px; font-size:0.9em;\">**We will confirm your payment to create your reservation.**<\/p>\r\n                <div class=\"form-group\" style=\"margin-bottom: 20px;\">\r\n                    <label for=\"comprobanteFile\"><b>Attach Payment Receipt (JPEG, PNG, PDF):<\/b><\/label>\r\n                    <input type=\"file\" id=\"comprobanteFile\" class=\"input\" accept=\"image\/jpeg,image\/png,application\/pdf\">\r\n                    <span id=\"comprobanteFile-error\" class=\"field-error\" style=\"display:none\"><\/span>\r\n            <\/div>\r\n                <button class=\"action-btn btn-blue\" type=\"button\" onclick=\"sendBookingByPHP('${paymentLabel}', 'deposit')\">\r\n                    Upload Receipt and Confirm Booking by Email\r\n                <\/button>\r\n            <\/div>\r\n            <p style=\"margin-top:10px;\">Optional: If you prefer to send via WhatsApp without attaching here, click: <a id=\"whatsappButton\" class=\"action-btn btn-green\" target=\"_blank\" href=\"#\">Send WhatsApp Message<\/a><\/p>\r\n            `;\r\n\r\n        detailsEl.insertAdjacentHTML('beforeend', instruction + uploadForm);\r\n\r\n        const whatsappButton = document.getElementById('whatsappButton');\r\n        if (whatsappButton) {\r\n            const whatsappMessage = `Hello, I made a booking with the following details:\\n\\n` +\r\n                `*Tour:* ${data.tour}\\n` +\r\n                `*Date:* ${data.fecha} at ${data.hora}\\n` +\r\n                `*Name:* ${data.nombre} (${data.email})\\n` +\r\n                `*ID\/Passport:* ${data.cedula}\\n` +\r\n                `*Travelers:* ${parseInt(data.adultos)+parseInt(data.ninos)+parseInt(data.bebes)}\\n` +\r\n                `*Companion Names:* ${data.acompanantes || 'None'}\\n` +\r\n                `*Total Paid\/Deposit:* ${depositAmount} (for Simpe\/Binance)\\n` +\r\n                `*Total Tour Price:* ${data.total}\\n\\n` +\r\n                `I attach the payment receipt for the deposit\/full amount via ${paymentLabel}. Please confirm my reservation.`;\r\n\r\n            whatsappButton.href = `https:\/\/wa.me\/${ADMIN_WHATSAPP}?text=${encodeURIComponent(whatsappMessage)}`;\r\n        }\r\n\r\n        detailsEl.scrollIntoView({behavior: 'smooth', block: 'center'});\r\n    }\r\n}\r\n\r\n\/* ---------- Funci\u00f3n de env\u00edo de datos y archivo (fetch con FormData) para Simpe\/Binance ---------- *\/\r\nfunction sendBookingByPHP(paymentMethod, paymentType) {\r\n    if (!validateAll()) {\r\n        const firstInvalid = document.querySelector('.invalid-field');\r\n        if (firstInvalid) firstInvalid.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n        return;\r\n    }\r\n\r\n    const comprobanteFileEl = document.getElementById('comprobanteFile');\r\n    if (!comprobanteFileEl || !comprobanteFileEl.files.length) {\r\n        showFieldError(comprobanteFileEl, 'You must attach the payment receipt to send the booking. \/ Debe adjuntar el comprobante de pago para enviar la reserva.');\r\n        return;\r\n    }\r\n    clearFieldError(comprobanteFileEl);\r\n\r\n    const formData = new FormData();\r\n    const data = gatherFormData();\r\n    const isUSD = data.currencyType !== 'nacional';\r\n    const depositAmount = isUSD ? DEPOSIT_USD : DEPOSIT_COLONES;\r\n\r\n    Object.keys(data).forEach(key => {\r\n        formData.append(key, data[key]);\r\n    });\r\n    formData.append('paymentMethod', paymentMethod);\r\n    formData.append('rawTotal', _lastComputed.rawTotal);\r\n    formData.append('discountedTotal', _lastComputed.discountedTotal);\r\n    formData.append('discountPercent', _lastComputed.discountPercent);\r\n    formData.append('paymentAmount', depositAmount);\r\n    formData.append('paymentCurrency', _lastComputed.currencyType === 'nacional' ? 'CRC' : 'USD');\r\n    formData.append('comprobante', comprobanteFileEl.files[0]);\r\n\r\n    const btn = document.querySelector(`[onclick=\"sendBookingByPHP('${paymentMethod}', 'deposit')\"]`);\r\n    const originalText = btn.innerText;\r\n    btn.disabled = true;\r\n    btn.innerText = 'Sending... \/ Enviando...';\r\n\r\n    fetch(SEND_BOOKING_URL, {\r\n        method: 'POST',\r\n        body: formData\r\n    })\r\n    .then(response => {\r\n        const contentType = response.headers.get(\"content-type\");\r\n        if (contentType && contentType.indexOf(\"application\/json\") !== -1) {\r\n            return response.json();\r\n        } else {\r\n            return response.text().then(text => {\r\n                console.error('Raw PHP Error:', text);\r\n                throw new Error(\"Response is not JSON. Server or PHP error: \" + text.substring(0, 100) + '...');\r\n            });\r\n        }\r\n    })\r\n    .then(data => {\r\n        if (data.success) {\r\n            alert('\u2705 Booking and receipt successfully sent!\\n\\nWe have sent the details to your email and the administrator. \/ \u00a1Reserva y comprobante enviados exitosamente! Hemos enviado los detalles a su correo y al administrador.');\r\n            closeBookingForm();\r\n        } else {\r\n            console.error('Server error:', data.message);\r\n            alert('\u274c Error sending booking: ' + (data.message || ''));\r\n        }\r\n    })\r\n    .catch(error => {\r\n        console.error('Connection\/Upload error:', error.message);\r\n        alert('\u274c Connection Error. Email could not be sent. Check browser console.');\r\n    })\r\n    .finally(() => {\r\n        btn.disabled = false;\r\n        btn.innerText = originalText;\r\n    });\r\n}\r\n\r\n\/* ---------- L\u00f3gica para los botones de Cantidad (+\/-) ---------- *\/\r\nfunction updateQuantity(targetId, delta) {\r\n    const inputEl = document.getElementById(targetId);\r\n    if (!inputEl) return;\r\n\r\n    let currentValue = parseInt(inputEl.value) || 0;\r\n    let newValue = currentValue + delta;\r\n\r\n    if (newValue < 0) {\r\n        newValue = 0;\r\n    }\r\n\r\n    inputEl.value = newValue;\r\n\r\n    if (['adultos','ninos','bebes','fecha'].includes(targetId) || targetId.startsWith('num') || targetId.startsWith('botellas')) {\r\n        calcularTotal();\r\n    }\r\n}\r\n\r\n\/* ---------- Attach events to clear errors and recalc ---------- *\/\r\ndocument.addEventListener('DOMContentLoaded', function(){\r\n    const ids = ['tipoVisitante','adultos','ninos','bebes','extraPerezoso','botellasAgua','numToallas','numSnacks','numPonchos','numBinoculares','numBicicletas','extraGuia','fecha','hora','nombre','email','cedula','acompanantes','guideLanguage','acceptTerms'];\r\n    ids.forEach(id => {\r\n        const el = document.getElementById(id);\r\n        if (el) {\r\n            const eventNames = (el.type === 'text' || el.type === 'email' || el.type === 'textarea' || el.type === 'number') ? ['input', 'change'] : ['change'];\r\n            eventNames.forEach(eventName => {\r\n                el.addEventListener(eventName, function(){\r\n                    clearFieldError(el);\r\n                    if (['adultos','ninos','bebes','tipoVisitante','extraPerezoso','botellasAgua','numToallas','numSnacks','numPonchos','numBinoculares','numBicicletas','extraGuia','fecha'].includes(id)) {\r\n                        calcularTotal();\r\n                    }\r\n                });\r\n            });\r\n        }\r\n    });\r\n\r\n    document.querySelectorAll('.qty-btn').forEach(button => {\r\n        button.addEventListener('click', function() {\r\n            const targetId = this.getAttribute('data-target');\r\n            const delta = this.classList.contains('plus-btn') ? 1 : -1;\r\n            updateQuantity(targetId, delta);\r\n        });\r\n    });\r\n\r\n    calcularTotal();\r\n});\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-970e405 elementor-widget elementor-widget-spacer\" data-id=\"970e405\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/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<div class=\"elementor-element elementor-element-819fa2d e-grid e-con-boxed e-con e-parent\" data-id=\"819fa2d\" 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-5e4829a e-con-full e-flex e-con e-child\" data-id=\"5e4829a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-097f9ba elementor-widget__width-initial elementor-arrows-position-inside elementor-pagination-position-outside elementor-widget elementor-widget-image-carousel\" data-id=\"097f9ba\" data-element_type=\"widget\" data-e-type=\"widget\" id=\"WildEncounter\" data-settings=\"{&quot;slides_to_show&quot;:&quot;1&quot;,&quot;navigation&quot;:&quot;both&quot;,&quot;autoplay&quot;:&quot;yes&quot;,&quot;pause_on_hover&quot;:&quot;yes&quot;,&quot;pause_on_interaction&quot;:&quot;yes&quot;,&quot;autoplay_speed&quot;:5000,&quot;infinite&quot;:&quot;yes&quot;,&quot;effect&quot;:&quot;slide&quot;,&quot;speed&quot;:500}\" data-widget_type=\"image-carousel.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-image-carousel-wrapper swiper\" role=\"region\" aria-roledescription=\"carousel\" aria-label=\"Carrusel de im\u00e1genes\" dir=\"ltr\">\n\t\t\t<div class=\"elementor-image-carousel swiper-wrapper\" aria-live=\"off\">\n\t\t\t\t\t\t\t\t<div class=\"swiper-slide\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"1 de 3\"><figure class=\"swiper-slide-inner\"><img decoding=\"async\" class=\"swiper-slide-image\" src=\"https:\/\/cuilpilapan.com\/wp-content\/uploads\/elementor\/thumbs\/image00003-scaled-rlqf8xrn4hry44uvboi0895rykvom2k3gqv73hj0e8.jpeg\" alt=\"DCIM101MEDIADJI_0541.JPG\" \/><\/figure><\/div><div class=\"swiper-slide\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"2 de 3\"><figure class=\"swiper-slide-inner\"><img decoding=\"async\" class=\"swiper-slide-image\" src=\"https:\/\/cuilpilapan.com\/wp-content\/uploads\/elementor\/thumbs\/image00004-scaled-rlqf63b8fjvoymzoxy7o6h0j7kwob29cqnr9sbqx8g.jpeg\" alt=\"image00004\" \/><\/figure><\/div><div class=\"swiper-slide\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"3 de 3\"><figure class=\"swiper-slide-inner\"><img decoding=\"async\" class=\"swiper-slide-image\" src=\"https:\/\/cuilpilapan.com\/wp-content\/uploads\/elementor\/thumbs\/image00002-scaled-rlqf5jkmg14o6tsd57oi83zuqhlytf2zny22pik6v4.jpeg\" alt=\"DCIM101MEDIADJI_0569.JPG\" \/><\/figure><\/div>\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"elementor-swiper-button elementor-swiper-button-prev\" role=\"button\" tabindex=\"0\">\n\t\t\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-eicon-chevron-left\" viewBox=\"0 0 1000 1000\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M646 125C629 125 613 133 604 142L308 442C296 454 292 471 292 487 292 504 296 521 308 533L604 854C617 867 629 875 646 875 663 875 679 871 692 858 704 846 713 829 713 812 713 796 708 779 692 767L438 487 692 225C700 217 708 204 708 187 708 171 704 154 692 142 675 129 663 125 646 125Z\"><\/path><\/svg>\t\t\t\t\t<\/div>\n\t\t\t\t\t<div class=\"elementor-swiper-button elementor-swiper-button-next\" role=\"button\" tabindex=\"0\">\n\t\t\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-eicon-chevron-right\" viewBox=\"0 0 1000 1000\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M696 533C708 521 713 504 713 487 713 471 708 454 696 446L400 146C388 133 375 125 354 125 338 125 325 129 313 142 300 154 292 171 292 187 292 204 296 221 308 233L563 492 304 771C292 783 288 800 288 817 288 833 296 850 308 863 321 871 338 875 354 875 371 875 388 867 400 854L696 533Z\"><\/path><\/svg>\t\t\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<div class=\"swiper-pagination\"><\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d5fed70 elementor-widget elementor-widget-image-box\" data-id=\"d5fed70\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image-box.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-image-box-wrapper\"><div class=\"elementor-image-box-content\"><h5 class=\"elementor-image-box-title\">\u201cWaterfall &amp; Hanging Bridge Mountain Bike Tour\u201d<\/h5><p class=\"elementor-image-box-description\">$ 23 Foreign<span style=\"font-size: 1rem\">. <\/span><br>\u20a19 500 National.<br><strong data-start=\"223\" data-end=\"236\" data-is-only-node=\"\">Distance:<\/strong> Customized, from 3,2 km up to 6,5 km or more.<br data-start=\"269\" data-end=\"272\"><strong data-start=\"272\" data-end=\"285\">Duration:<\/strong> Customized, 2 to 3 hours<br data-start=\"310\" data-end=\"313\">\n<strong data-start=\"313\" data-end=\"322\">Note:<\/strong> Prices do not include bicycle rental or guide.<\/p><\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b9cebec elementor-align-center elementor-widget-mobile__width-initial elementor-widget elementor-widget-button\" data-id=\"b9cebec\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/cuilpilapan.com\/services\/#Encuentro\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-long-arrow-alt-right\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M313.941 216H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h301.941v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.569 0-33.941l-86.059-86.059c-15.119-15.119-40.971-4.411-40.971 16.971V216z\"><\/path><\/svg>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">More information<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\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-fef39c9 elementor-widget__width-initial elementor-widget elementor-widget-html\" data-id=\"fef39c9\" 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<div style=\"text-align:center; margin:1px 0;\">\r\n    <button\r\n        onclick=\"openBookingForm(this)\"\r\n        data-tour=\"Waterfall & Hanging Bridge Mountain Bike Tour\"\r\n        data-desc=\"customizable duration and distance.\"\r\n        data-precio-adulto-nacional=\"9500\"\r\n        data-precio-adulto-extranjero=\"23\"\r\n        data-precio-nino-nacional=\"4750\"\r\n        data-precio-nino-extranjero=\"11.5\"\r\n        style=\"background:#ff1a50; color:white; font-size:15px; padding:15px 77px; border:none; border-radius:30px; cursor:pointer; box-shadow: 0 4px 10px rgba(255, 26, 80, 0.4);\">\r\n        BOOK NOW\r\n    <\/button>\r\n<\/div>\r\n\r\n<div id=\"bookingModal\" style=\"display:none; position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(0,0,0,0.7); z-index:9999; overflow:auto;\">\r\n    <div style=\"background:#fff; max-width:750px; margin:50px auto; padding:30px; border-radius:15px; position:relative; box-shadow: 0 5px 15px rgba(0,0,0,0.3);\">\r\n\r\n        <button onclick=\"closeBookingForm()\" style=\"position:absolute; top:15px; right:15px; font-size:24px; background:none; border:none; cursor:pointer; color:#333;\">\u2716<\/button>\r\n\r\n        <h2 style=\"text-align:center; margin-bottom:10px; color:#2E7D32; font-size:26px;\" id=\"tourTitle\"><\/h2>\r\n        <p style=\"text-align:center; margin-bottom:25px; color:#555;\" id=\"tourDesc\"><\/p>\r\n\r\n        <form id=\"bookingForm\" onsubmit=\"event.preventDefault();\">\r\n\r\n            <div style=\"margin-top:20px; margin-bottom:16px;\">\r\n                <label for=\"fecha\" class=\"form-label\"><b>\ud83d\udcc5 Fecha (Select Date):<\/b><\/label><span id=\"fecha-asterisk\" class=\"field-asterisk\" style=\"display:none\">*<\/span>\r\n                <input type=\"date\" id=\"fecha\" class=\"input\" required onchange=\"calcularTotal()\">\r\n                <span id=\"fecha-error\" class=\"field-error\" style=\"display:none\"><\/span>\r\n            <\/div>\r\n\r\n            <div style=\"margin-bottom:12px;\">\r\n                <label for=\"hora\" class=\"form-label\"><b>Hora (Select Time):<\/b><\/label><span id=\"hora-asterisk\" class=\"field-asterisk\" style=\"display:none\">*<\/span>\r\n                <select id=\"hora\" class=\"input\">\r\n                    <option value=\"\" selected disabled>Select a time<\/option>\r\n                    <option value=\"8:00 am\">8:00 am<\/option>\r\n                    <option value=\"9:00 am\">9:00 am<\/option>\r\n                    <option value=\"10:00 am\">10:00 am<\/option>\r\n                    <option value=\"1:00 pm\">1:00 pm<\/option>\r\n                    <option value=\"2:00 pm\">2:00 pm<\/option>\r\n                <\/select>\r\n                <span id=\"hora-error\" class=\"field-error\" style=\"display:none\"><\/span>\r\n            <\/div>\r\n\r\n            <div style=\"margin-bottom:12px;\">\r\n                <label for=\"tipoVisitante\" class=\"form-label\"><b>Visitor Type:<\/b><\/label><span id=\"tipoVisitante-asterisk\" class=\"field-asterisk\" style=\"display:none\">*<\/span>\r\n                <select id=\"tipoVisitante\" class=\"input\" onchange=\"onVisitorTypeChange(); calcularTotal()\">\r\n                    <option value=\"\" selected disabled>Select visitor type<\/option>\r\n                    <option value=\"extranjero\">Foreign \/ Extranjero<\/option>\r\n                    <option value=\"nacional\">Local \/ Nacional<\/option>\r\n                <\/select>\r\n                <span id=\"tipoVisitante-error\" class=\"field-error\" style=\"display:none\"><\/span>\r\n            <\/div>\r\n\r\n            <div id=\"guideLanguageDiv\" style=\"display:none; margin-bottom:15px;\">\r\n                <label for=\"guideLanguage\" class=\"form-label\"><b>Select Guide Language:<\/b><\/label><span id=\"guideLanguage-asterisk\" class=\"field-asterisk\" style=\"display:none\">*<\/span>\r\n                <select id=\"guideLanguage\" class=\"input\">\r\n                    <option value=\"\" selected disabled>Select guide language<\/option>\r\n                    <option value=\"English\">English<\/option>\r\n                    <option value=\"Spanish\">Spanish<\/option>\r\n                <\/select>\r\n                <p class=\"note\"><i>Choose the tour guide's language.<\/i><\/p>\r\n                <span id=\"guideLanguage-error\" class=\"field-error\" style=\"display:none\"><\/span>\r\n            <\/div>\r\n\r\n<h3 class=\"section-title\">Travelers<\/h3>\r\n<p class=\"section-note\">Prices vary by age and number of people.<\/p>\r\n<p class=\"note\"><i>Total travelers: <span id=\"totalTravelers\" style=\"font-weight:bold;\">0<\/span><\/i><\/p>\r\n<p class=\"note discount-note\" id=\"discountNote\"><i>10% discount available for groups of 10 or more people.<\/i><\/p>\r\n\r\n<div class=\"traveler-row\">\r\n<div class=\"traveler-info\">\r\n<label for=\"adultos\" class=\"traveler-label\">Adults (13-70 years):<span class=\"discount-tag discount-green\">-0%<\/span><\/label>\r\n<\/div>\r\n<div class=\"quantity-control\">\r\n<button type=\"button\" class=\"qty-btn minus-btn\" data-target=\"adultos\">-<\/button>\r\n<input type=\"number\" id=\"adultos\" min=\"0\" value=\"0\" class=\"input-num\" oninput=\"calcularTotal()\">\r\n<button type=\"button\" class=\"qty-btn plus-btn\" data-target=\"adultos\">+<\/button>\r\n<\/div>\r\n<\/div>\r\n<div class=\"traveler-row\">\r\n<div class=\"traveler-info\">\r\n<label for=\"ninos\" class=\"traveler-label\">Children (5-12 years):<span class=\"discount-tag discount-green\">-50%*<\/span><\/label>\r\n<\/div>\r\n<div class=\"quantity-control\">\r\n<button type=\"button\" class=\"qty-btn minus-btn\" data-target=\"ninos\">-<\/button>\r\n<input type=\"number\" id=\"ninos\" min=\"0\" value=\"0\" class=\"input-num\" oninput=\"calcularTotal()\">\r\n<button type=\"button\" class=\"qty-btn plus-btn\" data-target=\"ninos\">+<\/button>\r\n<\/div>\r\n<\/div>\r\n<div class=\"traveler-row\">\r\n<div class=\"traveler-info\">\r\n<label for=\"bebes\" class=\"traveler-label\">Babies (0-4 years):<span class=\"discount-tag discount-green\">FREE*<\/span><\/label>\r\n<\/div>\r\n<div class=\"quantity-control\">\r\n<button type=\"button\" class=\"qty-btn minus-btn\" data-target=\"bebes\">-<\/button>\r\n<input type=\"number\" id=\"bebes\" min=\"0\" value=\"0\" class=\"input-num\" oninput=\"calcularTotal()\">\r\n<button type=\"button\" class=\"qty-btn plus-btn\" data-target=\"bebes\">+<\/button>\r\n<\/div>\r\n<\/div>\r\n\r\n<h3 class=\"section-title\">Add extras<\/h3>\r\n<p class=\"section-note\">Select the extra items you need and add the quantity.<\/p>\r\n\r\n<div class=\"extra-item extra-item-featured no-qty-row\">\r\n    <div class=\"extra-label-info\">\r\n        <span class=\"featured-badge\">\u2b50 Recommended<\/span>\r\n        <label class=\"extra-label\" style=\"display:block; margin-top:6px;\">\r\n            <input type=\"checkbox\" id=\"extraGuia\" onchange=\"calcularTotal()\">\r\n            Optional Guide to accompany your group (<span id=\"precioGuia\" class=\"price-span\" style=\"color:black;\">\u20a110000<\/span>)\r\n        <\/label>\r\n        <p class=\"note\" style=\"margin-left:25px; margin-top:2px;\">\r\n            <i>(A private guide will accompany your group during the whole tour)<\/i>\r\n        <\/p>\r\n    <\/div>\r\n    <div class=\"quantity-control extra-qty-control\" style=\"visibility:hidden; height:36px; border:none; width:110px; margin-left:10px;\"><\/div>\r\n<\/div>\r\n\r\n<div class=\"extra-item no-qty-row\">\r\n    <div class=\"extra-label-info\">\r\n        <label class=\"extra-label\" style=\"display:block;\">\r\n            <input type=\"checkbox\" id=\"extraPerezoso\" onchange=\"calcularTotal()\"> \r\n            Sloth & Tropical Birds Tour (<span id=\"precioPerezoso\" class=\"price-span\" style=\"color:black;\">$10<\/span> per person)\r\n        <\/label>\r\n        <p class=\"note\" style=\"margin-left:25px; margin-top:2px;\">\r\n            <i>(Includes binoculars and telescope use)<\/i>\r\n        <\/p>\r\n    <\/div>\r\n    <div class=\"quantity-control extra-qty-control\" style=\"visibility:hidden; height:36px; border:none; width:110px; margin-left:10px;\"><\/div>\r\n<\/div>\r\n\r\n<div class=\"extra-item with-qty-row\">\r\n    <div class=\"extra-label-info\">\r\n        <label class=\"extra-label\" for=\"botellasAgua\">Bottled Water (<span id=\"precioAgua\" class=\"price-span\" style=\"color:black;\">$2<\/span> each)<\/label>\r\n    <\/div>\r\n    <div class=\"quantity-control extra-qty-control\">\r\n        <button type=\"button\" class=\"qty-btn minus-btn\" data-target=\"botellasAgua\">-<\/button>\r\n        <input type=\"number\" id=\"botellasAgua\" min=\"0\" value=\"0\" class=\"input-num extra-num\" oninput=\"calcularTotal()\">\r\n        <button type=\"button\" class=\"qty-btn plus-btn\" data-target=\"botellasAgua\">+<\/button>\r\n    <\/div>\r\n    <input type=\"checkbox\" id=\"checkAgua\" onchange=\"calcularTotal()\" style=\"display:none;\"\/>\r\n<\/div>\r\n\r\n<div class=\"extra-item with-qty-row\">\r\n    <div class=\"extra-label-info\">\r\n        <label class=\"extra-label\" for=\"numToallas\">Towels (<span id=\"precioToallas\" class=\"price-span\" style=\"color:black;\">$2<\/span> each)<\/label>\r\n    <\/div>\r\n    <div class=\"quantity-control extra-qty-control\">\r\n        <button type=\"button\" class=\"qty-btn minus-btn\" data-target=\"numToallas\">-<\/button>\r\n        <input type=\"number\" id=\"numToallas\" min=\"0\" value=\"0\" class=\"input-num extra-num\" oninput=\"calcularTotal()\">\r\n        <button type=\"button\" class=\"qty-btn plus-btn\" data-target=\"numToallas\">+<\/button>\r\n    <\/div>\r\n    <input type=\"checkbox\" id=\"checkToallas\" onchange=\"calcularTotal()\" style=\"display:none;\"\/>\r\n<\/div>\r\n\r\n<div class=\"extra-item with-qty-row\">\r\n    <div class=\"extra-label-info\">\r\n        <label class=\"extra-label\" for=\"numSnacks\">Granuts Snacks (<span id=\"precioSnacks\" class=\"price-span\" style=\"color:black;\">$2<\/span> each)<\/label>\r\n    <\/div>\r\n    <div class=\"quantity-control extra-qty-control\">\r\n        <button type=\"button\" class=\"qty-btn minus-btn\" data-target=\"numSnacks\">-<\/button>\r\n        <input type=\"number\" id=\"numSnacks\" min=\"0\" value=\"0\" class=\"input-num extra-num\" oninput=\"calcularTotal()\">\r\n        <button type=\"button\" class=\"qty-btn plus-btn\" data-target=\"numSnacks\">+<\/button>\r\n    <\/div>\r\n    <input type=\"checkbox\" id=\"checkSnacks\" onchange=\"calcularTotal()\" style=\"display:none;\"\/>\r\n<\/div>\r\n\r\n<div class=\"extra-item with-qty-row\">\r\n    <div class=\"extra-label-info\">\r\n        <label class=\"extra-label\" for=\"numPonchos\">Rain Ponchos (<span id=\"precioPonchos\" class=\"price-span\" style=\"color:black;\">$2<\/span> each)<\/label>\r\n        <p class=\"note\" style=\"margin-left:25px; margin-top:2px;\">\r\n            <i>(Recommended for rainy season)<\/i>\r\n        <\/p>\r\n    <\/div>\r\n    <div class=\"quantity-control extra-qty-control\">\r\n        <button type=\"button\" class=\"qty-btn minus-btn\" data-target=\"numPonchos\">-<\/button>\r\n        <input type=\"number\" id=\"numPonchos\" min=\"0\" value=\"0\" class=\"input-num extra-num\" oninput=\"calcularTotal()\">\r\n        <button type=\"button\" class=\"qty-btn plus-btn\" data-target=\"numPonchos\">+<\/button>\r\n    <\/div>\r\n    <input type=\"checkbox\" id=\"checkPonchos\" onchange=\"calcularTotal()\" style=\"display:none;\"\/>\r\n<\/div>\r\n\r\n<div class=\"extra-item with-qty-row\">\r\n    <div class=\"extra-label-info\">\r\n        <label class=\"extra-label\" for=\"numBinoculares\">Binocular Use (<span id=\"precioBinoculares\" class=\"price-span\" style=\"color:black;\">$5<\/span>)<\/label>\r\n    <\/div>\r\n    <div class=\"quantity-control extra-qty-control\">\r\n        <button type=\"button\" class=\"qty-btn minus-btn\" data-target=\"numBinoculares\">-<\/button>\r\n        <input type=\"number\" id=\"numBinoculares\" min=\"0\" value=\"0\" class=\"input-num extra-num\" oninput=\"calcularTotal()\">\r\n        <button type=\"button\" class=\"qty-btn plus-btn\" data-target=\"numBinoculares\">+<\/button>\r\n    <\/div>\r\n<\/div>\r\n\r\n<p class=\"note\" style=\"margin-left: 0; margin-top: -5px; margin-bottom: 12px; text-align: left; font-size: 0.85em; width: 100%;\">\r\n    <i>(Binoculars only available if you do NOT select the Sloth & Tropical Birds Tour)<\/i>\r\n<\/p>\r\n\r\n<div class=\"extra-item with-qty-row final-extra-row\">\r\n    <div class=\"extra-label-info\">\r\n        <label class=\"extra-label\" for=\"numBicicletas\">Bicycle Rental (<span id=\"precioBicicleta\" class=\"price-span\" style=\"color:black;\">$20<\/span> each)<\/label>\r\n        <p class=\"note\" style=\"margin-left:25px; margin-top:2px;\">\r\n            <i>(Rent a bike for your visit)<\/i>\r\n        <\/p>\r\n    <\/div>\r\n    <div class=\"quantity-control extra-qty-control\">\r\n        <button type=\"button\" class=\"qty-btn minus-btn\" data-target=\"numBicicletas\">-<\/button>\r\n        <input type=\"number\" id=\"numBicicletas\" min=\"0\" value=\"0\" class=\"input-num extra-num\" oninput=\"calcularTotal()\">\r\n        <button type=\"button\" class=\"qty-btn plus-btn\" data-target=\"numBicicletas\">+<\/button>\r\n    <\/div>\r\n<\/div>\r\n\r\n            <h3 class=\"section-title\">Customer Information<\/h3>\r\n\r\n            <label for=\"nombre\" class=\"form-label\">Full Name:<\/label><span id=\"nombre-asterisk\" class=\"field-asterisk\" style=\"display:none\">*<\/span>\r\n            <input type=\"text\" id=\"nombre\" class=\"input\" style=\"margin-bottom:6px;\">\r\n            <span id=\"nombre-error\" class=\"field-error\" style=\"display:none\"><\/span>\r\n\r\n            <label for=\"email\" class=\"form-label\">Email:<\/label><span id=\"email-asterisk\" class=\"field-asterisk\" style=\"display:none\">*<\/span>\r\n            <input type=\"email\" id=\"email\" class=\"input\" style=\"margin-bottom:6px;\">\r\n            <span id=\"email-error\" class=\"field-error\" style=\"display:none\"><\/span>\r\n\r\n            <label for=\"cedula\" class=\"form-label\">ID \/ Passport Number (C\u00e9dula o Pasaporte):<\/label><span id=\"cedula-asterisk\" class=\"field-asterisk\" style=\"display:none\">*<\/span>\r\n            <input type=\"text\" id=\"cedula\" class=\"input\" style=\"margin-bottom:6px; text-transform:uppercase;\" placeholder=\"Ej: 112340567 (sin guiones ni espacios)\">\r\n            <p class=\"note\"><i>Enter your ID or passport number without dashes or spaces. \/ Ingrese su c\u00e9dula o pasaporte sin guiones ni espacios.<\/i><\/p>\r\n            <span id=\"cedula-error\" class=\"field-error\" style=\"display:none\"><\/span>\r\n\r\n            <label for=\"acompanantes\" class=\"form-label\">Companion Names: <span id=\"acompanantes-note\" style=\"font-weight:normal; font-size:0.9em; color:#555;\">(Required if 2+ travelers)<\/span><\/label><span id=\"acompanantes-asterisk\" class=\"field-asterisk\" style=\"display:none\">*<\/span>\r\n            <textarea id=\"acompanantes\" class=\"input\" style=\"margin-bottom:12px;\" placeholder=\"List companion names separated by commas\"><\/textarea>\r\n            <span id=\"acompanantes-error\" class=\"field-error\" style=\"display:none\"><\/span>\r\n\r\n            <div style=\"margin:10px 0;\">\r\n                <style>\r\n                    #acceptTermsLink {\r\n                        color: #1A237E;\r\n                        font-weight: bold;\r\n                        text-decoration: none;\r\n                        transition: color 0.3s;\r\n                    }\r\n                    #acceptTermsLink:hover {\r\n                        color: #0D1033;\r\n                        text-decoration: underline;\r\n                    }\r\n                <\/style>\r\n                <label>\r\n                    <input type=\"checkbox\" id=\"acceptTerms\" style=\"margin-right:8px;\" onchange=\"clearFieldError(this)\">\r\n                    <span style=\"color:black;\">I have read and accept the <\/span>\r\n                    <a id=\"acceptTermsLink\" href=\"https:\/\/cuilpilapan.com\/terms-and-conditions\/\" target=\"_blank\">Terms and Conditions<\/a>\r\n                    <span style=\"color:black;\"> and consent to the use of my personal data for the reservation process.<\/span>\r\n                <\/label>\r\n                <span id=\"terms-error\" class=\"field-error\" style=\"display:none\"><\/span>\r\n            <\/div>\r\n\r\n            <h2 style=\"margin-top: 8px; font-size: 28px; color: #333;\">Total: <span id=\"total\" style=\"color:#ff8c00;\">$0<\/span><\/h2>\r\n            <div id=\"discountApplied\" style=\"margin-bottom:8px; font-weight:bold; color:#2d6a4f; display:none;\"><\/div>\r\n            <div id=\"totalAfterDiscount\" style=\"margin-bottom:8px; font-weight:normal; text-decoration:line-through; color:#aaa; display:none;\"><\/div>\r\n\r\n            <div id=\"tilopayDepositNote\" style=\"background: #e6f7ff; border: 1px solid #91d5ff; padding: 10px; border-radius: 5px; margin-top: 10px;\">\r\n                <strong style=\"color: #0056b3;\">IMPORTANT NOTE:<\/strong> When booking, a deposit will be charged for\r\n                <span id=\"depositAmountDisplay\" style=\"font-weight:bold;\"><\/span> (\u20a17000 local \/ $15 foreign). The remaining amount must be canceled upon arrival.\r\n            <\/div>\r\n\r\n            <div style=\"background:#f9f9f9; padding:15px; border-radius:10px; box-shadow:0 2px 6px rgba(0,0,0,0.1); margin-top:20px;\">\r\n                <b>Recommendations:<\/b> Choose the tour that suits your physical capacity to fully enjoy the adventure.\r\n                Bring appropriate clothing, extra clothes, snacks, water to stay hydrated,\r\n                and any personal medication if you have a medical condition.\r\n                Feel free to ask any questions.\r\n            <\/div>\r\n\r\n            <div style=\"text-align:center; margin-top:25px;\">\r\n                <button id=\"btnProceed\" onclick=\"onProceedToPayment()\" style=\"background:#ff8c00; color:white; font-size:18px; padding:15px 40px; border:none; border-radius:30px; cursor:pointer; margin-bottom:10px; box-shadow: 0 4px 10px rgba(255, 140, 0, 0.4);\">\r\n                    Proceder a reservar \/ Proceed to payment\r\n                <\/button>\r\n            <\/div>\r\n\r\n            <div id=\"paymentSection\" style=\"display:none; margin-top:25px; border-top:1px solid #eee; padding-top:16px;\">\r\n                <h3 class=\"section-title\" style=\"font-size:20px;\">Seleccione su m\u00e9todo de pago \/ Select payment method<\/h3>\r\n                \r\n                <div style=\"display:flex; flex-direction:column; gap:12px;\">\r\n\r\n                    <label style=\"display:flex; align-items:center; gap:10px; padding:10px; border:1px solid #ddd; border-radius:10px; cursor:pointer; transition:transform 0.2s; background:#fafafa;\">\r\n                        <input type=\"radio\" name=\"paymentMethod\" value=\"tarjeta\" onchange=\"onPaymentMethodChange()\" style=\"transform:scale(1.3); margin-right:6px;\">\r\n                        <img decoding=\"async\" src=\"https:\/\/cuilpilapan.com\/wp-content\/uploads\/2025\/10\/WhatsApp-Image-2025-10-22-at-3.59.08-PM.jpeg\"\r\n                            alt=\"Tilopay\" width=\"50\" height=\"50\" style=\"border-radius:8px; transition:transform 0.3s;\">\r\n                        <span style=\"font-size:16px;\">Credit\/Debit Card (Tilopay) - Deposit Only<\/span>\r\n                    <\/label>\r\n\r\n                    <label style=\"display:flex; align-items:center; gap:10px; padding:10px; border:1px solid #ddd; border-radius:10px; cursor:pointer; transition:transform 0.2s; background:#fafafa;\">\r\n                        <input type=\"radio\" name=\"paymentMethod\" value=\"simpe\" onchange=\"onPaymentMethodChange()\" style=\"transform:scale(1.3); margin-right:6px;\">\r\n                        <img decoding=\"async\" src=\"https:\/\/cuilpilapan.com\/wp-content\/uploads\/2025\/10\/WhatsApp-Image-2025-10-22-at-3.57.36-PM.jpeg\"\r\n                            alt=\"Simpe M\u00f3vil\" width=\"50\" height=\"50\" style=\"border-radius:8px; transition:transform 0.3s;\">\r\n                        <span style=\"font-size:16px;\">Simpe M\u00f3vil - Deposit Only (or full payment)<\/span>\r\n                    <\/label>\r\n\r\n                    <label style=\"display:flex; align-items:center; gap:10px; padding:10px; border:1px solid #ddd; border-radius:10px; cursor:pointer; transition:transform 0.2s; background:#fafafa;\">\r\n                        <input type=\"radio\" name=\"paymentMethod\" value=\"binance\" onchange=\"onPaymentMethodChange()\" style=\"transform:scale(1.3); margin-right:6px;\">\r\n                        <img decoding=\"async\" src=\"https:\/\/cuilpilapan.com\/wp-content\/uploads\/2025\/10\/WhatsApp-Image-2025-10-22-at-3.56.45-PM.jpeg\"\r\n                            alt=\"Binance\" width=\"50\" height=\"50\" style=\"border-radius:8px; transition:transform 0.3s;\">\r\n                        <span style=\"font-size:16px;\">Binance Payment (USDT) - Deposit Only (or full payment)<\/span>\r\n                    <\/label>\r\n                <\/div>\r\n\r\n<style>\r\n#paymentSection label:hover {\r\ntransform: scale(1.03);\r\nbackground: #fffbe6;\r\nbox-shadow: 0 2px 6px rgba(0,0,0,0.1);\r\n}\r\n#paymentSection img:hover {\r\ntransform: scale(1.1) rotate(3deg);\r\n}\r\n<\/style>\r\n\r\n<div id=\"paymentDetails\" style=\"margin-top:12px;\"><\/div>\r\n\r\n<div id=\"tilopayButtonContainer\" style=\"text-align:center; margin-top:20px; display:none;\">\r\n<button type=\"button\" onclick=\"handleCardPayment()\"\r\n                        style=\"\r\n                            background-color: #007bff;\r\n                            color: white;\r\n                            padding: 15px 30px;\r\n                            border: none;\r\n                            border-radius: 5px;\r\n                            font-size: 18px;\r\n                            cursor: pointer;\r\n                            box-shadow: 0 4px 6px rgba(0,0,0,0.1);\r\n                            transition: background-color 0.3s;\r\n                        \"\r\n                        onmouseover=\"this.style.backgroundColor='#0056b3'\"\r\n                        onmouseout=\"this.style.backgroundColor='#007bff'\"\r\n                    >\r\n                        \ud83d\udcb3 Pay Deposit Now with Card (Tilopay)\r\n                    <\/button>\r\n                    <p style=\"margin-top:10px; font-size:0.9em; color:#555;\">You will be redirected to the Tilopay payment gateway in this tab.<\/p>\r\n                <\/div>\r\n            <\/div>\r\n\r\n        <\/form>\r\n\r\n    <\/div>\r\n<\/div>\r\n\r\n<style>\r\n\/* Estilos Globales *\/\r\n.input, textarea, select { width:100%; padding:10px; margin:3px 0; border:1px solid #ddd; border-radius:8px; display:block; box-sizing: border-box; }\r\n\r\n\/* 1. ESTILO PARA DESHABILITAR D\u00cdAS ANTERIORES EN EL CALENDARIO *\/\r\ninput[type=\"date\"] { font-family: inherit; color: #333; }\r\n\/* MEJORA 1: Estilo para d\u00edas inv\u00e1lidos en Safari\/iOS *\/\r\ninput[type=\"date\"]:not([value=\"\"]):invalid { box-shadow: 0 0 5px rgba(231,76,60,0.6); }\r\n\r\n.input-num { width: 40px; text-align: center; border: none; padding: 0; -moz-appearance: textfield; }\r\n.input-num::-webkit-inner-spin-button, .input-num::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }\r\n\r\n.form-label { display:block; margin-bottom:6px; font-weight: 500; color: #333; }\r\n.note { font-size:0.9em; color:#555; margin:3px 0 5px 0; }\r\n.section-title { margin-top:20px; margin-bottom:10px; font-size:24px; color:#555; border-bottom: 2px solid #ddd; padding-bottom: 5px; }\r\n.section-note { margin-top:8px; margin-bottom:15px; font-weight:normal; color:#444; font-size:16px; }\r\n\r\n\/* Traveler Quantity Controls *\/\r\n.traveler-row { display: flex; justify-content: space-between; align-items: center; margin-bottom: 15px; padding: 10px 0; border-bottom: 1px solid #eee; }\r\n.traveler-row:last-child { border-bottom: none; margin-bottom: 0; }\r\n.traveler-info { display: flex; align-items: center; }\r\n.traveler-label { font-size: 16px; color: #333; display: flex; align-items: center; gap: 10px; margin-right: 15px; }\r\n.quantity-control { display: flex; align-items: center; border: 1px solid #ccc; border-radius: 5px; overflow: hidden; }\r\n.qty-btn { background: #f7f7f7; border: none; color: #555; padding: 8px 10px; cursor: pointer; font-weight: bold; font-size: 16px; transition: background 0.2s; line-height: 1; height: 36px; box-sizing: border-box; }\r\n.qty-btn:hover { background: #eee; color: #000; }\r\n.qty-btn:active { background: #ddd; }\r\n.input-num { padding: 8px 0; height: 36px; box-sizing: border-box; font-size: 16px; }\r\n\r\n.discount-tag { background: #e9f5e9; color: #2E7D32; padding: 3px 8px; border-radius: 10px; font-size: 14px; font-weight: bold; margin-left: 0; white-space: nowrap; }\r\n\r\n\/* Extras *\/\r\n.extra-item {\r\n    display: flex;\r\n    justify-content: space-between;\r\n    align-items: flex-start;\r\n    padding: 10px 0;\r\n    border-bottom: 1px solid #eee;\r\n}\r\n.extra-item.final-extra-row { border-bottom: none; }\r\n.extra-label-info {\r\n    display: flex;\r\n    flex-direction: column;\r\n    flex-grow: 1;\r\n    margin-right: 15px;\r\n}\r\n.extra-label { \r\n    font-size: 16px; \r\n    color: #333; \r\n    display: flex; \r\n    align-items: center; \r\n    margin-bottom: 0; \r\n}\r\n.extra-label input[type=\"checkbox\"] { \r\n    width: auto; \r\n    margin-right: 10px; \r\n}\r\n.extra-item .note { \r\n    margin-left: 25px;\r\n    margin-top: 2px;\r\n    margin-bottom: 0; \r\n    font-size: 0.85em;\r\n}\r\n\r\n\/* Extra destacado: Gu\u00eda Opcional *\/\r\n.extra-item-featured {\r\n    background: linear-gradient(135deg, #fff8ec, #fff1d6);\r\n    border: 2px solid #ff8c00;\r\n    border-radius: 12px;\r\n    padding: 14px 16px !important;\r\n    margin-bottom: 12px;\r\n    box-shadow: 0 3px 8px rgba(255, 140, 0, 0.15);\r\n}\r\n.extra-item-featured .extra-label {\r\n    font-weight: bold;\r\n    font-size: 17px;\r\n}\r\n.featured-badge {\r\n    display: inline-block;\r\n    background: #ff8c00;\r\n    color: #fff;\r\n    font-size: 12px;\r\n    font-weight: bold;\r\n    padding: 3px 10px;\r\n    border-radius: 20px;\r\n    letter-spacing: 0.3px;\r\n}\r\n\r\n.price-span { font-weight: bold; color: #000; }\r\n.extra-qty-control { margin-left: 0; }\r\n.extra-num { width: 40px !important; }\r\n\r\n\/* Error visual *\/\r\n.invalid-field { border-color:#e74c3c !important; box-shadow: 0 0 4px rgba(231,76,60,0.4); }\r\n.field-error { color:#e74c3c; font-size:0.9em; display:block; margin-top:4px; }\r\n.field-asterisk { color:#e74c3c; font-weight:bold; margin-left:6px; font-size:1.2em; vertical-align:middle; }\r\n\r\n\/* Small helper for payment details box *\/\r\n#paymentDetails { background:#fafafa; padding:12px; border-radius:8px; border:1px dashed #ddd; margin-top:10px; }\r\n.payment-note { background:#fff3cd; padding:10px; border-radius:6px; margin-bottom:8px; border:1px solid #ffeeba; }\r\n.action-btn { display:inline-block; margin:6px 6px 0 0; padding:10px 14px; border-radius:8px; text-decoration:none; cursor:pointer; }\r\n.btn-green { background:#25d366; color:#fff; }\r\n.btn-blue { background:#0072c6; color:#fff; }\r\n.btn-gray { background:#6c757d; color:#fff; }\r\n<\/style>\r\n\r\n<script>\r\n\/* ---------- Helpers and state ---------- *\/\r\nlet currentButton = null;\r\nconst CR_OFFSET_MINUTES = -6 * 60; \/\/ Costa Rica UTC-6 => -360 minutes\r\nconst ADMIN_WHATSAPP = '50660110640';\r\nconst ADMIN_EMAIL = 'contacto@cuilpilapan.com';\r\n\r\n\/\/ CONFIGURACI\u00d3N DE TILOPAY (montos fijos, sin manipulaci\u00f3n de cliente)\r\nconst TILO_LINK_COLONES = 'https:\/\/tp.cr\/l\/MTYyMTQ3';\r\nconst DEPOSIT_COLONES = 7000;\r\nconst TILO_LINK_USD = 'https:\/\/tp.cr\/l\/MTYyMTQ4';\r\nconst DEPOSIT_USD = 15.00;\r\n\r\nconst RETURN_URL = 'https:\/\/cuilpilapan.com\/payment-success\/';\r\nconst SAVE_URL = '\/save_pending_reservation.php';\r\nconst SEND_BOOKING_URL = '\/send_booking.php';\r\n\r\n\/\/ Simpe \/ Binance details\r\nconst SIMPE_PHONE = '60110640';\r\nconst SIMPE_NAME = 'Cuipilapan Sociedad Civil';\r\nconst BINANCE_ID = '450335940';\r\n\r\nconst STORAGE_KEY = 'reservaCuilpilapan_v1';\r\nlet _lastComputed = {};\r\n\r\nfunction generateOrderReference() {\r\n    const date = new Date();\r\n    const dateStr = date.getFullYear().toString() +\r\n                    (date.getMonth() + 1).toString().padStart(2, '0') +\r\n                    date.getDate().toString().padStart(2, '0');\r\n    const randomStr = Math.random().toString(36).substring(2, 7).toUpperCase();\r\n    return `CUP-${dateStr}-${randomStr}`;\r\n}\r\n\r\nfunction formatCurrency(amount, tipo) {\r\n    if (tipo === 'nacional') {\r\n        return '\u20a1' + Math.round(amount);\r\n    } else {\r\n        return '$' + Number(amount).toFixed(2);\r\n    }\r\n}\r\n\r\n\/* ---------- small UI helpers for errors ---------- *\/\r\nfunction showFieldError(inputEl, message) {\r\n    if (!inputEl) return;\r\n    inputEl.classList.add('invalid-field');\r\n\r\n    const errId = inputEl.id + '-error';\r\n    let err = document.getElementById(errId);\r\n    if (!err) {\r\n        err = document.createElement('span');\r\n        err.id = errId;\r\n        err.className = 'field-error';\r\n        inputEl.parentNode.insertBefore(err, inputEl.nextSibling);\r\n    }\r\n    err.innerText = message;\r\n    err.style.display = 'block';\r\n\r\n    const starId = inputEl.id + '-asterisk';\r\n    let star = document.getElementById(starId);\r\n    if (!star) {\r\n        star = document.createElement('span');\r\n        star.id = starId;\r\n        star.className = 'field-asterisk';\r\n        star.innerText = '*';\r\n        const label = document.querySelector('label[for=\"' + inputEl.id + '\"]');\r\n        if (label && label.parentNode) {\r\n            label.parentNode.insertBefore(star, label.nextSibling);\r\n        } else {\r\n            inputEl.parentNode.insertBefore(star, inputEl);\r\n        }\r\n    }\r\n    star.style.display = 'inline';\r\n}\r\n\r\nfunction clearFieldError(inputEl) {\r\n    if (!inputEl) return;\r\n    inputEl.classList.remove('invalid-field');\r\n    const err = document.getElementById(inputEl.id + '-error');\r\n    if (err) { err.style.display = 'none'; err.innerText = ''; }\r\n    const star = document.getElementById(inputEl.id + '-asterisk');\r\n    if (star) star.style.display = 'none';\r\n}\r\n\r\n\/* ---------- Open \/ Close ---------- *\/\r\nfunction openBookingForm(button) {\r\n    currentButton = button;\r\n    document.getElementById('bookingModal').style.display = 'block';\r\n    document.getElementById('tourTitle').innerText = button.getAttribute('data-tour') || 'Tour';\r\n    document.getElementById('tourDesc').innerText = button.getAttribute('data-desc') || '';\r\n\r\n    applyDateRestriction();\r\n    clearAllFieldErrors();\r\n\r\n    document.getElementById('paymentSection').style.display = 'none';\r\n    document.getElementById('paymentDetails').innerHTML = '';\r\n    document.getElementById('tilopayButtonContainer').style.display = 'none';\r\n\r\n    const radios = document.getElementsByName('paymentMethod');\r\n    for (let r of radios) r.checked = false;\r\n\r\n    document.getElementById('btnProceed').style.display = 'inline-block';\r\n\r\n    calcularTotal();\r\n}\r\n\r\nfunction closeBookingForm() {\r\n    document.getElementById('bookingModal').style.display = 'none';\r\n}\r\n\r\n\/* L\u00d3GICA DE CALENDARIO *\/\r\nfunction applyDateRestriction() {\r\n    const fechaEl = document.getElementById('fecha');\r\n    if (!fechaEl) return;\r\n\r\n    const now = new Date();\r\n    const localOffsetMin = now.getTimezoneOffset();\r\n    const utcNowMs = now.getTime() + (localOffsetMin * 60000);\r\n    const crNowMs = utcNowMs + (CR_OFFSET_MINUTES * 60000);\r\n    const crToday = new Date(crNowMs);\r\n\r\n    const year = crToday.getFullYear();\r\n    const month = (crToday.getMonth() + 1).toString().padStart(2, '0');\r\n    const day = crToday.getDate().toString().padStart(2, '0');\r\n    const minDate = `${year}-${month}-${day}`;\r\n\r\n    fechaEl.min = minDate;\r\n\r\n    fechaEl.addEventListener('change', function() {\r\n        const selectedDate = new Date(this.value);\r\n        const todayRef = new Date(Date.UTC(crToday.getFullYear(), crToday.getMonth(), crToday.getDate()));\r\n\r\n        if (selectedDate < todayRef) {\r\n            this.setCustomValidity('The selected date cannot be in the past \/ La fecha seleccionada no puede ser anterior a hoy.');\r\n            this.classList.add('invalid-field');\r\n            showFieldError(this, 'The selected date cannot be in the past \/ La fecha seleccionada no puede ser anterior a hoy.');\r\n        } else {\r\n            this.setCustomValidity('');\r\n            clearFieldError(this);\r\n        }\r\n    });\r\n}\r\n\r\nfunction onVisitorTypeChange(){\r\n    const tipo = document.getElementById('tipoVisitante').value;\r\n    document.getElementById('guideLanguageDiv').style.display = (tipo === 'extranjero') ? 'block' : 'none';\r\n    calcularTotal();\r\n}\r\n\r\n\/* ---------- Core calculation ---------- *\/\r\nfunction calcularTotal() {\r\n    if (!currentButton) return;\r\n\r\n    let tipo = document.getElementById('tipoVisitante').value;\r\n    if (!tipo) tipo = 'nacional';\r\n\r\n    let adultos = parseInt(document.getElementById('adultos').value) || 0;\r\n    let ninos = parseInt(document.getElementById('ninos').value) || 0;\r\n    let bebes = parseInt(document.getElementById('bebes').value) || 0;\r\n    let totalViajeros = adultos + ninos + bebes;\r\n    document.getElementById('totalTravelers').innerText = totalViajeros;\r\n\r\n    let precioAdultoNac = parseFloat(currentButton.getAttribute('data-precio-adulto-nacional')) || 0;\r\n    let precioAdultoExt = parseFloat(currentButton.getAttribute('data-precio-adulto-extranjero')) || 0;\r\n    let precioAdulto = (tipo === 'nacional') ? precioAdultoNac : precioAdultoExt;\r\n    let precioNino = precioAdulto \/ 2;\r\n\r\n    \/\/ extras unit prices (local vs foreign)\r\n    let precioExtraPerezoso = (tipo === 'nacional') ? 3500 : 10;\r\n    let precioAgua = (tipo === 'nacional') ? 1000 : 2;\r\n    let precioToallas = (tipo === 'nacional') ? 1000 : 2;\r\n    let precioSnacks = (tipo === 'nacional') ? 1000 : 2;\r\n    let precioPonchos = (tipo === 'nacional') ? 1000 : 2;\r\n    let precioBinoculares = (tipo === 'nacional') ? 2000 : 5;\r\n    let precioGuia = (tipo === 'nacional') ? 10000 : 32;\r\n    let precioBicicleta = (tipo === 'nacional') ? 7000 : 20;\r\n\r\n    let extraPerezoso = document.getElementById('extraPerezoso').checked;\r\n    let botellasAgua = parseInt(document.getElementById('botellasAgua').value) || 0;\r\n    let numToallas = parseInt(document.getElementById('numToallas').value) || 0;\r\n    let numSnacks = parseInt(document.getElementById('numSnacks').value) || 0;\r\n    let numPonchos = parseInt(document.getElementById('numPonchos').value) || 0;\r\n    let numBinoculares = parseInt(document.getElementById('numBinoculares').value) || 0;\r\n    let numBicicletas = parseInt(document.getElementById('numBicicletas')?.value) || 0;\r\n    let extraGuia = document.getElementById('extraGuia')?.checked || false;\r\n\r\n    let total = (adultos * precioAdulto) + (ninos * precioNino);\r\n\r\n    if (extraPerezoso) {\r\n        total += (adultos + ninos) * precioExtraPerezoso;\r\n    }\r\n    total += botellasAgua * precioAgua;\r\n    total += numToallas * precioToallas;\r\n    total += numSnacks * precioSnacks;\r\n    total += numPonchos * precioPonchos;\r\n    total += numBicicletas * precioBicicleta;\r\n\r\n    if (numBinoculares > 0 && !extraPerezoso) {\r\n        total += numBinoculares * precioBinoculares;\r\n    } else if (extraPerezoso) {\r\n        document.getElementById('numBinoculares').value = 0;\r\n    }\r\n\r\n    if (extraGuia) {\r\n        total += precioGuia;\r\n    }\r\n\r\n    \/\/ Descuento autom\u00e1tico: 10% \u00fanicamente para grupos de 10 personas o m\u00e1s\r\n    let totalDiscountPercent = (totalViajeros >= 10) ? 10 : 0;\r\n\r\n    let rawTotal = total;\r\n    let discountedTotal = total;\r\n    let discountText = '';\r\n    if (totalDiscountPercent > 0) {\r\n        discountedTotal = total * (1 - totalDiscountPercent \/ 100);\r\n        discountText = `\ud83d\udcb0 Discount Applied: ${totalDiscountPercent}% (Group of 10+ people)`;\r\n    }\r\n\r\n    if (tipo === 'nacional') {\r\n        rawTotal = Math.ceil(rawTotal);\r\n        discountedTotal = Math.ceil(discountedTotal);\r\n    }\r\n\r\n    document.getElementById('total').innerText = formatCurrency(discountedTotal, tipo);\r\n\r\n    if (totalDiscountPercent > 0) {\r\n        document.getElementById('discountApplied').style.display = 'block';\r\n        document.getElementById('discountApplied').innerText = discountText;\r\n\r\n        document.getElementById('totalAfterDiscount').style.display = 'block';\r\n        document.getElementById('totalAfterDiscount').innerText = `Total before discount: ${formatCurrency(rawTotal, tipo)}`;\r\n    } else {\r\n        document.getElementById('discountApplied').style.display = 'none';\r\n        document.getElementById('totalAfterDiscount').style.display = 'none';\r\n    }\r\n\r\n    \/\/ update unit-price labels\r\n    document.getElementById('precioPerezoso').innerText = formatCurrency(precioExtraPerezoso, tipo);\r\n    document.getElementById('precioAgua').innerText = formatCurrency(precioAgua, tipo);\r\n    document.getElementById('precioToallas').innerText = formatCurrency(precioToallas, tipo);\r\n    document.getElementById('precioSnacks').innerText = formatCurrency(precioSnacks, tipo);\r\n    document.getElementById('precioPonchos').innerText = formatCurrency(precioPonchos, tipo);\r\n    document.getElementById('precioBinoculares').innerText = formatCurrency(precioBinoculares, tipo);\r\n    document.getElementById('precioGuia').innerText = formatCurrency(precioGuia, tipo);\r\n    document.getElementById('precioBicicleta').innerText = formatCurrency(precioBicicleta, tipo);\r\n\r\n    const depositDisplayEl = document.getElementById('depositAmountDisplay');\r\n    const depositAmountText = tipo === 'nacional' ? formatCurrency(DEPOSIT_COLONES, 'nacional') : formatCurrency(DEPOSIT_USD, 'extranjero');\r\n    if (depositDisplayEl) {\r\n        depositDisplayEl.innerText = depositAmountText;\r\n    }\r\n    const tilopayNoteEl = document.getElementById('tilopayDepositNote');\r\n    if (tilopayNoteEl) {\r\n        tilopayNoteEl.innerHTML = `<strong style=\"color: #0056b3;\">IMPORTANT NOTE:<\/strong> When booking, a deposit will be charged for \r\n            <span id=\"depositAmountDisplay\" style=\"font-weight:bold;\">${depositAmountText}<\/span>. The remaining amount must be canceled upon arrival.`;\r\n    }\r\n\r\n    _lastComputed = {\r\n        rawTotal: rawTotal,\r\n        discountPercent: totalDiscountPercent,\r\n        discountedTotal: discountedTotal,\r\n        currencyType: tipo\r\n    };\r\n}\r\n\r\n\/* ---------- Validation and UI helpers ---------- *\/\r\nfunction clearAllFieldErrors() {\r\n    const ids = ['fecha','hora','tipoVisitante','guideLanguage','nombre','email','cedula','acompanantes','acceptTerms'];\r\n    ids.forEach(id => {\r\n        const el = document.getElementById(id);\r\n        if (el) clearFieldError(el);\r\n    });\r\n    const termsErr = document.getElementById('terms-error');\r\n    if(termsErr) termsErr.style.display = 'none';\r\n}\r\n\r\nfunction validateAll() {\r\n    clearAllFieldErrors();\r\n    let valid = true;\r\n\r\n    const adultos = parseInt(document.getElementById('adultos').value) || 0;\r\n    const ninos = parseInt(document.getElementById('ninos').value) || 0;\r\n    const bebes = parseInt(document.getElementById('bebes').value) || 0;\r\n    const totalViajeros = adultos + ninos + bebes;\r\n\r\n    if (totalViajeros < 1) {\r\n        const adultosEl = document.getElementById('adultos');\r\n        showFieldError(adultosEl, 'Minimum 1 traveler required \/ Se requiere m\u00ednimo 1 viajero');\r\n        valid = false;\r\n    }\r\n\r\n    const nombreEl = document.getElementById('nombre');\r\n    const nombre = (nombreEl.value || '').trim();\r\n    if (!nombre) { showFieldError(nombreEl, 'Please enter full name \/ Por favor ingrese su nombre completo'); valid = false; }\r\n\r\n    const emailEl = document.getElementById('email');\r\n    const email = (emailEl.value || '').trim();\r\n    const emailRegex = \/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/;\r\n    if (!email) { showFieldError(emailEl, 'Please enter email address \/ Por favor ingrese su correo'); valid = false; }\r\n    else if (!emailRegex.test(email)) { showFieldError(emailEl, 'Please enter a valid email address \/ Por favor ingrese un correo v\u00e1lido'); valid = false; }\r\n\r\n    const cedulaEl = document.getElementById('cedula');\r\n    const cedulaVal = (cedulaEl.value || '').trim();\r\n    const cedulaRegex = \/^[A-Za-z0-9]{5,20}$\/;\r\n    if (!cedulaVal) {\r\n        showFieldError(cedulaEl, 'Please enter your ID or passport number \/ Por favor ingrese su c\u00e9dula o pasaporte');\r\n        valid = false;\r\n    } else if (!cedulaRegex.test(cedulaVal)) {\r\n        showFieldError(cedulaEl, 'Enter only letters\/numbers, no dashes or spaces (5-20 characters) \/ Solo letras y n\u00fameros, sin guiones ni espacios (5-20 caracteres)');\r\n        valid = false;\r\n    }\r\n\r\n    const tipoEl = document.getElementById('tipoVisitante');\r\n    const tipo = tipoEl.value;\r\n    if (!tipo) { showFieldError(tipoEl, 'Please select visitor type \/ Seleccione tipo de visitante'); valid = false; }\r\n\r\n    if (tipo === 'extranjero') {\r\n        const glEl = document.getElementById('guideLanguage');\r\n        const glVal = (glEl.value || '').trim();\r\n        if (!glVal) { showFieldError(glEl, 'Please select the guide language \/ Seleccione idioma del gu\u00eda'); valid = false; }\r\n    }\r\n\r\n    const fechaEl = document.getElementById('fecha');\r\n    const fechaVal = fechaEl.value;\r\n    if (!fechaVal) { showFieldError(fechaEl, 'Please select a valid date \/ Por favor seleccione una fecha'); valid = false; }\r\n    if (fechaEl.customValidity && fechaEl.customValidity !== '') {\r\n        showFieldError(fechaEl, fechaEl.customValidity);\r\n        valid = false;\r\n    }\r\n\r\n    const horaEl = document.getElementById('hora');\r\n    const horaVal = horaEl.value;\r\n    if (!horaVal) { showFieldError(horaEl, 'Please select a valid time \/ Por favor seleccione una hora'); valid = false; }\r\n\r\n    const acompEl = document.getElementById('acompanantes');\r\n    const acompVal = (acompEl.value || '').trim();\r\n    if (totalViajeros >= 2 && acompVal.length < 3) {\r\n        showFieldError(acompEl, 'Please list companion names when there are 2 or more people \/ Por favor liste los acompa\u00f1antes cuando hay 2 o m\u00e1s personas.');\r\n        valid = false;\r\n    }\r\n\r\n    const accept = document.getElementById('acceptTerms');\r\n    if (!accept || !accept.checked) {\r\n        const termsErr = document.getElementById('terms-error');\r\n        termsErr.innerText = 'Debe aceptar los T\u00e9rminos y Condiciones y el uso de datos antes de continuar \/ You must accept Terms & Conditions and data usage.';\r\n        termsErr.style.display = 'block';\r\n        valid = false;\r\n    }\r\n\r\n    return valid;\r\n}\r\n\r\n\/* ---------- Gather form data for submission\/storage ---------- *\/\r\nfunction gatherFormData() {\r\n    const tour = document.getElementById('tourTitle').innerText;\r\n    const nombre = document.getElementById('nombre').value.trim();\r\n    const fecha = document.getElementById('fecha').value;\r\n    const hora = document.getElementById('hora').value;\r\n    const tipo = document.getElementById('tipoVisitante').value;\r\n    const email = document.getElementById('email').value || 'N\/A';\r\n    const cedula = (document.getElementById('cedula').value || '').trim().toUpperCase().replace(\/[\\s-]\/g, '');\r\n    const adultos = document.getElementById('adultos').value || '0';\r\n    const ninos = document.getElementById('ninos').value || '0';\r\n    const bebes = document.getElementById('bebes').value || '0';\r\n    const acompanantes = document.getElementById('acompanantes').value || '';\r\n    const guideLang = document.getElementById('guideLanguage').value || '';\r\n    const total = document.getElementById('total').innerText || '';\r\n    const discountText = document.getElementById('discountApplied').innerText || '';\r\n    const totalAfter = document.getElementById('totalAfterDiscount').innerText || '';\r\n    const comentarios = '';\r\n\r\n    let extrasArr = [];\r\n    if (document.getElementById('extraGuia')?.checked) extrasArr.push('Optional Guide (' + (document.getElementById('precioGuia')?.innerText || '') + ')');\r\n    if (document.getElementById('extraPerezoso')?.checked) extrasArr.push('Sloth & Tropical Birds Tour');\r\n    if ((parseInt(document.getElementById('botellasAgua')?.value) || 0) > 0) extrasArr.push('Bottled Water (' + document.getElementById('botellasAgua').value + ')');\r\n    if ((parseInt(document.getElementById('numToallas')?.value) || 0) > 0) extrasArr.push('Towels (' + document.getElementById('numToallas').value + ')');\r\n    if ((parseInt(document.getElementById('numSnacks')?.value) || 0) > 0) extrasArr.push('Snacks (' + document.getElementById('numSnacks').value + ')');\r\n    if ((parseInt(document.getElementById('numPonchos')?.value) || 0) > 0) extrasArr.push('Ponchos (' + document.getElementById('numPonchos').value + ')');\r\n    if ((parseInt(document.getElementById('numBinoculares')?.value) || 0) > 0 && !document.getElementById('extraPerezoso')?.checked) extrasArr.push('Binoculars (' + document.getElementById('numBinoculares').value + ')');\r\n    if ((parseInt(document.getElementById('numBicicletas')?.value) || 0) > 0) extrasArr.push('Bicycle Rental (' + document.getElementById('numBicicletas').value + ')');\r\n    const extrasText = extrasArr.length ? extrasArr.join('\\n- ') : 'None';\r\n\r\n    const computed = _lastComputed || {};\r\n    return {\r\n        tour, nombre, fecha, hora, tipo, email, cedula, adultos, ninos, bebes, acompanantes, guideLang, total, extrasText, discountText, totalAfter, comentarios,\r\n        rawTotal: computed.rawTotal || null,\r\n        discountedTotal: computed.discountedTotal || null,\r\n        currencyType: computed.currencyType || (document.getElementById('tipoVisitante').value || 'nacional')\r\n    };\r\n}\r\n\r\n\/* ---------- Proceed to payment ---------- *\/\r\nfunction onProceedToPayment() {\r\n    if (!validateAll()) {\r\n        const firstInvalid = document.querySelector('.invalid-field');\r\n        if (firstInvalid) firstInvalid.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n        return;\r\n    }\r\n    document.getElementById('paymentSection').style.display = 'block';\r\n    document.getElementById('btnProceed').style.display = 'none';\r\n    document.getElementById('paymentSection').scrollIntoView({behavior: 'smooth', block: 'center'});\r\n    onPaymentMethodChange();\r\n}\r\n\r\n\/* ---------- Save reservation to server ---------- *\/\r\nfunction persistReservation(formData, paymentMethodLabel, orderReference, depositAmount, depositCurrency) {\r\n    const payload = Object.assign({}, formData, {\r\n        paymentMethod: paymentMethodLabel,\r\n        orderReference: orderReference,\r\n        depositAmount: depositAmount,\r\n        depositCurrency: depositCurrency,\r\n        savedAt: new Date().toISOString()\r\n    });\r\n\r\n    try {\r\n        localStorage.setItem(STORAGE_KEY, JSON.stringify(payload));\r\n    } catch (e) {\r\n        console.error('Error saving reservation to localStorage (continuando con server)', e);\r\n    }\r\n\r\n    return fetch(SAVE_URL, {\r\n        method: 'POST',\r\n        headers: { 'Content-Type': 'application\/json' },\r\n        body: JSON.stringify(payload)\r\n    })\r\n    .then(response => response.json())\r\n    .then(data => {\r\n        if (!data.success) {\r\n            console.error('Error: La reserva NO se guard\u00f3 en el servidor:', data.message);\r\n            return false;\r\n        }\r\n        console.log(\"Reserva guardada en el servidor con \u00e9xito:\", orderReference);\r\n        return true;\r\n    })\r\n    .catch(error => {\r\n        console.error('Error de red al guardar en el servidor:', error);\r\n        return false;\r\n    });\r\n}\r\n\r\n\/* ---------- FUNCI\u00d3N DE PAGO CON TARJETA ---------- *\/\r\nasync function handleCardPayment() {\r\n    if (!validateAll()) {\r\n        alert('Please complete all form data correctly before proceeding to payment. \/ Por favor, complete todos los datos del formulario correctamente antes de pagar.');\r\n        const firstInvalid = document.querySelector('.invalid-field');\r\n        if (firstInvalid) firstInvalid.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n        return;\r\n    }\r\n\r\n    const btn = document.querySelector('#tilopayButtonContainer button');\r\n    btn.disabled = true;\r\n    const originalText = btn.innerText;\r\n    btn.innerText = 'Saving reservation... \/ Guardando reserva...';\r\n\r\n    const reservationData = gatherFormData();\r\n    reservationData.orderReference = generateOrderReference();\r\n\r\n    const isUSD = reservationData.currencyType !== 'nacional';\r\n\r\n    let tilopayAmount;\r\n    let tilopayCurrency;\r\n    let tilopayLink;\r\n\r\n    if (isUSD) {\r\n        tilopayAmount = DEPOSIT_USD.toFixed(2);\r\n        tilopayCurrency = 'USD';\r\n        tilopayLink = TILO_LINK_USD;\r\n    } else {\r\n        tilopayAmount = DEPOSIT_COLONES;\r\n        tilopayCurrency = 'CRC';\r\n        tilopayLink = TILO_LINK_COLONES;\r\n    }\r\n\r\n    const savedToServer = await persistReservation(reservationData, 'Card (Tilopay - Deposit)', reservationData.orderReference, tilopayAmount, tilopayCurrency);\r\n\r\n    if (!savedToServer) {\r\n        alert(\"\u274c Error: Could not secure reservation on the server. Please try again. \/ No se pudo asegurar la reserva en el servidor. Intente nuevamente.\");\r\n        btn.disabled = false;\r\n        btn.innerText = originalText;\r\n        return;\r\n    }\r\n\r\n    const conceptText = encodeURIComponent(`Reservation: ${reservationData.tour}. Total: ${reservationData.total}. Deposit: ${tilopayCurrency} ${tilopayAmount}`);\r\n\r\n    const tilopayUrl = `${tilopayLink}?` +\r\n                        `amount=${tilopayAmount}` +\r\n                        `&currency=${tilopayCurrency}` +\r\n                        `&reference=${reservationData.orderReference}` +\r\n                        `&description=${conceptText}` +\r\n                        `&return_url=${RETURN_URL}`;\r\n\r\n    btn.innerText = 'Redirecting to Tilopay... \/ Redirigiendo a Tilopay...';\r\n    window.location.href = tilopayUrl;\r\n}\r\n\r\n\/* ---------- Handle selection of payment method ---------- *\/\r\nfunction onPaymentMethodChange() {\r\n    const selected = document.querySelector('input[name=\"paymentMethod\"]:checked');\r\n    const detailsEl = document.getElementById('paymentDetails');\r\n    const tilopayBtnContainer = document.getElementById('tilopayButtonContainer');\r\n\r\n    detailsEl.innerHTML = '';\r\n    tilopayBtnContainer.style.display = 'none';\r\n\r\n    if (!selected) return;\r\n\r\n    const method = selected.value;\r\n    const data = gatherFormData();\r\n    const isUSD = data.currencyType !== 'nacional';\r\n    const depositAmountColones = formatCurrency(DEPOSIT_COLONES, 'nacional');\r\n    const depositAmountUSD = formatCurrency(DEPOSIT_USD, 'extranjero');\r\n\r\n    const summaryHtml = `<div style=\"margin-bottom:8px;\"><strong>Summary:<\/strong><br>Tour: ${data.tour}<br>Date: ${data.fecha} ${data.hora}<br>Name: ${data.nombre}<br>Total Tour: ${data.total}<br>${data.discountText ? data.discountText + '<br>' + (data.totalAfter ? data.totalAfter : '') : ''}<\/div>`;\r\n    detailsEl.insertAdjacentHTML('beforeend', summaryHtml);\r\n\r\n    if (method === 'tarjeta') {\r\n        detailsEl.insertAdjacentHTML('beforeend', `\r\n            <div class=\"payment-note\">\r\n                <strong>Card Payment (Tilopay - Deposit)<\/strong><br>\r\n                Only the deposit of <strong>${isUSD ? depositAmountUSD : depositAmountColones}<\/strong> will be charged. The remainder is paid on site.<br>\r\n                <br>You will be redirected to the secure Tilopay payment gateway in this tab.\r\n            <\/div>\r\n        `);\r\n        tilopayBtnContainer.style.display = 'block';\r\n\r\n        setTimeout(() => {\r\n            tilopayBtnContainer.scrollIntoView({behavior: 'smooth', block: 'nearest'});\r\n        }, 100);\r\n\r\n    } else if (method === 'simpe' || method === 'binance') {\r\n        const isSimpe = method === 'simpe';\r\n        const paymentLabel = isSimpe ? 'Simpe M\u00f3vil' : 'Binance (USDT)';\r\n        const phoneOrID = isSimpe ? SIMPE_PHONE : BINANCE_ID;\r\n        const nameOrTitle = isSimpe ? SIMPE_NAME : 'Wallet ID';\r\n        const noteTitle = isSimpe ? 'Payment by Simpe M\u00f3vil' : 'Payment by Binance (USDT)';\r\n        const totalToPay = data.total;\r\n\r\n        const depositAmount = isUSD ? depositAmountUSD : depositAmountColones;\r\n\r\n        const instruction = `<div class=\"payment-note\">\r\n            <strong>${noteTitle}<\/strong><br>\r\n            Please make a deposit payment of <strong>${depositAmount}<\/strong> to <strong>${nameOrTitle}<\/strong>: <strong>${phoneOrID}<\/strong>.\r\n            <br><br>\r\n            The deposit amount will be **deducted from your total payment** on the day of the tour.\r\n            <br>\r\n            *Note: You have the option to pay the full amount (${totalToPay}) if you prefer to simplify management.*\r\n        <\/div>`;\r\n\r\n        const uploadForm = `\r\n            <div style=\"border: 1px dashed #ff8c00; padding: 15px; border-radius: 8px; margin-top: 15px;\">\r\n                <p style=\"font-weight:bold; margin-bottom:10px;\">FINAL STEP: Upload your receipt to confirm your booking (English\/Spanish)<\/p>\r\n                <p style=\"margin-bottom:10px; font-size:0.9em;\">**We will confirm your payment to create your reservation.**<\/p>\r\n                <div class=\"form-group\" style=\"margin-bottom: 20px;\">\r\n                    <label for=\"comprobanteFile\"><b>Attach Payment Receipt (JPEG, PNG, PDF):<\/b><\/label>\r\n                    <input type=\"file\" id=\"comprobanteFile\" class=\"input\" accept=\"image\/jpeg,image\/png,application\/pdf\">\r\n                    <span id=\"comprobanteFile-error\" class=\"field-error\" style=\"display:none\"><\/span>\r\n            <\/div>\r\n                <button class=\"action-btn btn-blue\" type=\"button\" onclick=\"sendBookingByPHP('${paymentLabel}', 'deposit')\">\r\n                    Upload Receipt and Confirm Booking by Email\r\n                <\/button>\r\n            <\/div>\r\n            <p style=\"margin-top:10px;\">Optional: If you prefer to send via WhatsApp without attaching here, click: <a id=\"whatsappButton\" class=\"action-btn btn-green\" target=\"_blank\" href=\"#\">Send WhatsApp Message<\/a><\/p>\r\n            `;\r\n\r\n        detailsEl.insertAdjacentHTML('beforeend', instruction + uploadForm);\r\n\r\n        const whatsappButton = document.getElementById('whatsappButton');\r\n        if (whatsappButton) {\r\n            const whatsappMessage = `Hello, I made a booking with the following details:\\n\\n` +\r\n                `*Tour:* ${data.tour}\\n` +\r\n                `*Date:* ${data.fecha} at ${data.hora}\\n` +\r\n                `*Name:* ${data.nombre} (${data.email})\\n` +\r\n                `*ID\/Passport:* ${data.cedula}\\n` +\r\n                `*Travelers:* ${parseInt(data.adultos)+parseInt(data.ninos)+parseInt(data.bebes)}\\n` +\r\n                `*Companion Names:* ${data.acompanantes || 'None'}\\n` +\r\n                `*Total Paid\/Deposit:* ${depositAmount} (for Simpe\/Binance)\\n` +\r\n                `*Total Tour Price:* ${data.total}\\n\\n` +\r\n                `I attach the payment receipt for the deposit\/full amount via ${paymentLabel}. Please confirm my reservation.`;\r\n\r\n            whatsappButton.href = `https:\/\/wa.me\/${ADMIN_WHATSAPP}?text=${encodeURIComponent(whatsappMessage)}`;\r\n        }\r\n\r\n        detailsEl.scrollIntoView({behavior: 'smooth', block: 'center'});\r\n    }\r\n}\r\n\r\n\/* ---------- Funci\u00f3n de env\u00edo de datos y archivo (fetch con FormData) para Simpe\/Binance ---------- *\/\r\nfunction sendBookingByPHP(paymentMethod, paymentType) {\r\n    if (!validateAll()) {\r\n        const firstInvalid = document.querySelector('.invalid-field');\r\n        if (firstInvalid) firstInvalid.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n        return;\r\n    }\r\n\r\n    const comprobanteFileEl = document.getElementById('comprobanteFile');\r\n    if (!comprobanteFileEl || !comprobanteFileEl.files.length) {\r\n        showFieldError(comprobanteFileEl, 'You must attach the payment receipt to send the booking. \/ Debe adjuntar el comprobante de pago para enviar la reserva.');\r\n        return;\r\n    }\r\n    clearFieldError(comprobanteFileEl);\r\n\r\n    const formData = new FormData();\r\n    const data = gatherFormData();\r\n    const isUSD = data.currencyType !== 'nacional';\r\n    const depositAmount = isUSD ? DEPOSIT_USD : DEPOSIT_COLONES;\r\n\r\n    Object.keys(data).forEach(key => {\r\n        formData.append(key, data[key]);\r\n    });\r\n    formData.append('paymentMethod', paymentMethod);\r\n    formData.append('rawTotal', _lastComputed.rawTotal);\r\n    formData.append('discountedTotal', _lastComputed.discountedTotal);\r\n    formData.append('discountPercent', _lastComputed.discountPercent);\r\n    formData.append('paymentAmount', depositAmount);\r\n    formData.append('paymentCurrency', _lastComputed.currencyType === 'nacional' ? 'CRC' : 'USD');\r\n    formData.append('comprobante', comprobanteFileEl.files[0]);\r\n\r\n    const btn = document.querySelector(`[onclick=\"sendBookingByPHP('${paymentMethod}', 'deposit')\"]`);\r\n    const originalText = btn.innerText;\r\n    btn.disabled = true;\r\n    btn.innerText = 'Sending... \/ Enviando...';\r\n\r\n    fetch(SEND_BOOKING_URL, {\r\n        method: 'POST',\r\n        body: formData\r\n    })\r\n    .then(response => {\r\n        const contentType = response.headers.get(\"content-type\");\r\n        if (contentType && contentType.indexOf(\"application\/json\") !== -1) {\r\n            return response.json();\r\n        } else {\r\n            return response.text().then(text => {\r\n                console.error('Raw PHP Error:', text);\r\n                throw new Error(\"Response is not JSON. Server or PHP error: \" + text.substring(0, 100) + '...');\r\n            });\r\n        }\r\n    })\r\n    .then(data => {\r\n        if (data.success) {\r\n            alert('\u2705 Booking and receipt successfully sent!\\n\\nWe have sent the details to your email and the administrator. \/ \u00a1Reserva y comprobante enviados exitosamente! Hemos enviado los detalles a su correo y al administrador.');\r\n            closeBookingForm();\r\n        } else {\r\n            console.error('Server error:', data.message);\r\n            alert('\u274c Error sending booking: ' + (data.message || ''));\r\n        }\r\n    })\r\n    .catch(error => {\r\n        console.error('Connection\/Upload error:', error.message);\r\n        alert('\u274c Connection Error. Email could not be sent. Check browser console.');\r\n    })\r\n    .finally(() => {\r\n        btn.disabled = false;\r\n        btn.innerText = originalText;\r\n    });\r\n}\r\n\r\n\/* ---------- L\u00f3gica para los botones de Cantidad (+\/-) ---------- *\/\r\nfunction updateQuantity(targetId, delta) {\r\n    const inputEl = document.getElementById(targetId);\r\n    if (!inputEl) return;\r\n\r\n    let currentValue = parseInt(inputEl.value) || 0;\r\n    let newValue = currentValue + delta;\r\n\r\n    if (newValue < 0) {\r\n        newValue = 0;\r\n    }\r\n\r\n    inputEl.value = newValue;\r\n\r\n    if (['adultos','ninos','bebes','fecha'].includes(targetId) || targetId.startsWith('num') || targetId.startsWith('botellas')) {\r\n        calcularTotal();\r\n    }\r\n}\r\n\r\n\/* ---------- Attach events to clear errors and recalc ---------- *\/\r\ndocument.addEventListener('DOMContentLoaded', function(){\r\n    const ids = ['tipoVisitante','adultos','ninos','bebes','extraPerezoso','botellasAgua','numToallas','numSnacks','numPonchos','numBinoculares','numBicicletas','extraGuia','fecha','hora','nombre','email','cedula','acompanantes','guideLanguage','acceptTerms'];\r\n    ids.forEach(id => {\r\n        const el = document.getElementById(id);\r\n        if (el) {\r\n            const eventNames = (el.type === 'text' || el.type === 'email' || el.type === 'textarea' || el.type === 'number') ? ['input', 'change'] : ['change'];\r\n            eventNames.forEach(eventName => {\r\n                el.addEventListener(eventName, function(){\r\n                    clearFieldError(el);\r\n                    if (['adultos','ninos','bebes','tipoVisitante','extraPerezoso','botellasAgua','numToallas','numSnacks','numPonchos','numBinoculares','numBicicletas','extraGuia','fecha'].includes(id)) {\r\n                        calcularTotal();\r\n                    }\r\n                });\r\n            });\r\n        }\r\n    });\r\n\r\n    document.querySelectorAll('.qty-btn').forEach(button => {\r\n        button.addEventListener('click', function() {\r\n            const targetId = this.getAttribute('data-target');\r\n            const delta = this.classList.contains('plus-btn') ? 1 : -1;\r\n            updateQuantity(targetId, delta);\r\n        });\r\n    });\r\n\r\n    calcularTotal();\r\n});\r\n<\/script>\t\t\t\t<\/div>\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-052a57b e-flex e-con-boxed e-con e-parent\" data-id=\"052a57b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3b8d2f8 elementor-widget elementor-widget-spacer\" data-id=\"3b8d2f8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-433e9ab elementor-widget elementor-widget-heading\" data-id=\"433e9ab\" 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\">WHAT OUR CUSTOMER SAY<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-295361f elementor-widget elementor-widget-shortcode\" data-id=\"295361f\" data-element_type=\"widget\" data-e-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=\"tripadvisor-wrapper\">\n  <style>#wprev-slider-2 .wprev_showdate_T1 {display: none;}#wprev-slider-2 .wprev_preview_bradius_T1 {border-radius: 18px;}#wprev-slider-2 .wprev_preview_tcolor2_T1 {color:#000000;}<\/style><style>\/* Ajusta el tama&ntilde;o de la imagen del perfil *\/ .wptripadvisor-widget .review .avatar img { width: 50px; \/* Cambia el tama&ntilde;o seg&uacute;n lo necesites *\/ height: 50px; \/* Mant&eacute;n proporci&oacute;n cuadrada *\/ border-radius: 50%; \/* Hace la imagen redonda *\/ display: block; margin: 0 auto 10px auto; \/* Centra la imagen y agrega espacio debajo *\/ } \/* Asegura que el nombre y el texto queden debajo de la imagen *\/ .wptripadvisor-widget .review .review-text { text-align: center; \/* Opcional: centra el texto debajo de la imagen *\/ }<\/style><div class=\"wprev-slider revnotsameheight\" id=\"wprev-slider-2\" data-revsameheight=\"no\" data-onemobil=\"\" data-sliderautoplay=\"\"  data-slidespeed=\"\" data-slideautodelay=\"\" data-sliderhideprevnext=\"\" data-sliderhidedots=\"\" data-sliderfixedheight=\"\"><ul><li>\t\t<div class=\"wptripadvisor_t1_outer_div w3_wprs-row-padding\">\r\n\t\t\t\t<div class=\"wptripadvisor_t1_DIV_1 w3_wprs-col l12 outerrevdiv\">\r\n\t\t\t<div class=\"indrevdiv wptripadvisor_t1_DIV_2 wprev_preview_bg1_T1 wprev_preview_bradius_T1\">\r\n\t\t\t\t<p class=\"wptripadvisor_t1_P_3 wprev_preview_tcolor1_T1\">\r\n\t\t\t\t\t<span class=\"wptripadvisor_star_imgs_T1 wprevpro_star_imgs_T1\"><img decoding=\"async\" src=\"https:\/\/cuilpilapan.com\/wp-content\/plugins\/wp-tripadvisor-review-slider\/public\/partials\/imgs\/tripadvisor_stars_5.png\" alt=\"star rating\" class=\"wptripadvisor_t1_star_img_file\"><span class=\"verifiedloc1 wprevpro_verified_svg wprevtooltip\" data-wprevtooltip=\"Verified on TripAdvisor\"><span class=\"svgicons svg-wprsp-verified\"><\/span><\/span><\/span><span class=\"wprevrevtitle\">Excelente experiencia! <\/span>&nbsp;-&nbsp;Nuestro pa\u00eds es hermoso y aqu\u00ed en pocas horas vimos muchas de las maravillas que ofrece. El lugar es impresionante, retador y con un excelente servicio.\t\t\t\t<\/p>\r\n\t\t\t\t<div class=\"wprev_media_div 2\"><a class=\"wprev_media_img_a notyoutu\" href=\"https:\/\/media-cdn.tripadvisor.com\/media\/photo-f\/31\/00\/e3\/e0\/caption.jpg\" data-lity-desc=\"Review media\"><img decoding=\"async\" src=\"https:\/\/media-cdn.tripadvisor.com\/media\/photo-f\/31\/00\/e3\/e0\/caption.jpg\" class=\"wprev_media_img\" alt=\"media thumbnail 0\"><\/a><a class=\"wprev_media_img_a notyoutu\" href=\"https:\/\/media-cdn.tripadvisor.com\/media\/photo-f\/31\/00\/e4\/3e\/caption.jpg\" data-lity-desc=\"Review media\"><img decoding=\"async\" src=\"https:\/\/media-cdn.tripadvisor.com\/media\/photo-f\/31\/00\/e4\/3e\/caption.jpg\" class=\"wprev_media_img\" alt=\"media thumbnail 1\"><\/a><\/div>\t\t\t\t<a href=\"https:\/\/www.tripadvisor.com\/Attraction_Review-g1119814-d33217023-Reviews-Cuilpilapan_Miravalles-Area_de_Conservacion_Guanacaste_Province_of_Guanacaste.html\" target=\"_blank\" rel=\"nofollow\"><img decoding=\"async\" src=\"https:\/\/cuilpilapan.com\/wp-content\/plugins\/wp-tripadvisor-review-slider\/public\/partials\/imgs\/tripadvisor_outline.png\" alt=\"tripadvisor logo\" class=\"wptripadvisor_t1_tripadvisor_logo\"><\/a>\t\t\t<\/div><span class=\"wptripadvisor_t1_A_8\"><img decoding=\"async\" src=\"https:\/\/media-cdn.tripadvisor.com\/media\/photo-l\/1a\/f6\/e2\/a7\/default-avatar-2020-44.jpg\" alt=\"avatar thumb\" class=\"wptripadvisor_t1_IMG_4\" loading=\"lazy\"\/><\/span> <span class=\"wptripadvisor_t1_SPAN_5 wprev_preview_tcolor2_T1\">Dahiana B<br\/><span class=\"wprev_showdate_T1\">3 de septiembre de 2025<\/span> <\/span>\r\n\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t<\/li><li class=\"wprevnextslide\">\t\t<div class=\"wptripadvisor_t1_outer_div w3_wprs-row-padding\">\r\n\t\t\t\t<div class=\"wptripadvisor_t1_DIV_1 w3_wprs-col l12 outerrevdiv\">\r\n\t\t\t<div class=\"indrevdiv wptripadvisor_t1_DIV_2 wprev_preview_bg1_T1 wprev_preview_bradius_T1\">\r\n\t\t\t\t<p class=\"wptripadvisor_t1_P_3 wprev_preview_tcolor1_T1\">\r\n\t\t\t\t\t<span class=\"wptripadvisor_star_imgs_T1 wprevpro_star_imgs_T1\"><img decoding=\"async\" src=\"https:\/\/cuilpilapan.com\/wp-content\/plugins\/wp-tripadvisor-review-slider\/public\/partials\/imgs\/tripadvisor_stars_5.png\" alt=\"star rating\" class=\"wptripadvisor_t1_star_img_file\"><span class=\"verifiedloc1 wprevpro_verified_svg wprevtooltip\" data-wprevtooltip=\"Verified on TripAdvisor\"><span class=\"svgicons svg-wprsp-verified\"><\/span><\/span><\/span><span class=\"wprevrevtitle\">Conexi\u00f3n Completa con la Naturaleza <\/span>&nbsp;-&nbsp;Hermosa experiencia, hicimos miradores, puente y Cataratas. Nivel intermedio ! Espectaculares vistas, clima y la Catarata es simplemente hermosa. Justo para pasar un d\u00eda de conexi\u00f3n con la naturaleza y<a class=\"wprs_rd_more\">... read more<\/a><span class=\"wprs_rd_more_text\" style=\"display:none\"> hermosas vistas con una caminata de alto impacto alrededor de 10km todo el recorrido.<\/span>\t\t\t\t<\/p>\r\n\t\t\t\t\t\t\t\t<a href=\"https:\/\/www.tripadvisor.com\/Attraction_Review-g1119814-d33217023-Reviews-Cuilpilapan_Miravalles-Area_de_Conservacion_Guanacaste_Province_of_Guanacaste.html\" target=\"_blank\" rel=\"nofollow\"><img decoding=\"async\" src=\"https:\/\/cuilpilapan.com\/wp-content\/plugins\/wp-tripadvisor-review-slider\/public\/partials\/imgs\/tripadvisor_outline.png\" alt=\"tripadvisor logo\" class=\"wptripadvisor_t1_tripadvisor_logo\"><\/a>\t\t\t<\/div><span class=\"wptripadvisor_t1_A_8\"><img decoding=\"async\" src=\"https:\/\/media-cdn.tripadvisor.com\/media\/photo-l\/15\/ab\/ee\/5a\/caption.jpg\" alt=\"avatar thumb\" class=\"wptripadvisor_t1_IMG_4\" loading=\"lazy\"\/><\/span> <span class=\"wptripadvisor_t1_SPAN_5 wprev_preview_tcolor2_T1\">Vtraveling12<br\/><span class=\"wprev_showdate_T1\">17 de agosto de 2025<\/span> <\/span>\r\n\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t<\/li><li class=\"wprevnextslide\">\t\t<div class=\"wptripadvisor_t1_outer_div w3_wprs-row-padding\">\r\n\t\t\t\t<div class=\"wptripadvisor_t1_DIV_1 w3_wprs-col l12 outerrevdiv\">\r\n\t\t\t<div class=\"indrevdiv wptripadvisor_t1_DIV_2 wprev_preview_bg1_T1 wprev_preview_bradius_T1\">\r\n\t\t\t\t<p class=\"wptripadvisor_t1_P_3 wprev_preview_tcolor1_T1\">\r\n\t\t\t\t\t<span class=\"wptripadvisor_star_imgs_T1 wprevpro_star_imgs_T1\"><img decoding=\"async\" src=\"https:\/\/cuilpilapan.com\/wp-content\/plugins\/wp-tripadvisor-review-slider\/public\/partials\/imgs\/tripadvisor_stars_5.png\" alt=\"star rating\" class=\"wptripadvisor_t1_star_img_file\"><span class=\"verifiedloc1 wprevpro_verified_svg wprevtooltip\" data-wprevtooltip=\"Verified on TripAdvisor\"><span class=\"svgicons svg-wprsp-verified\"><\/span><\/span><\/span><span class=\"wprevrevtitle\">Experiencia que no debes perderte <\/span>&nbsp;-&nbsp;Un lugar lleno de naturaleza, lleno de fauna, ideal para salir de la rutina, hacer una buena caminata, ba\u00f1arse en una agua fr\u00eda deliciosa y disfrutar de los hermosos paisajes.<a class=\"wprs_rd_more\">... read more<\/a><span class=\"wprs_rd_more_text\" style=\"display:none\"> Atenci\u00f3n muy especial de los due\u00f1os.<\/span>\t\t\t\t<\/p>\r\n\t\t\t\t<div class=\"wprev_media_div 3\"><a class=\"wprev_media_img_a notyoutu\" href=\"https:\/\/media-cdn.tripadvisor.com\/media\/photo-s\/31\/0b\/7a\/92\/caption.jpg\" data-lity-desc=\"Review media\"><img decoding=\"async\" src=\"https:\/\/media-cdn.tripadvisor.com\/media\/photo-s\/31\/0b\/7a\/92\/caption.jpg\" class=\"wprev_media_img\" alt=\"media thumbnail 0\"><\/a><a class=\"wprev_media_img_a notyoutu\" href=\"https:\/\/media-cdn.tripadvisor.com\/media\/photo-s\/31\/0b\/7a\/93\/caption.jpg\" data-lity-desc=\"Review media\"><img decoding=\"async\" src=\"https:\/\/media-cdn.tripadvisor.com\/media\/photo-s\/31\/0b\/7a\/93\/caption.jpg\" class=\"wprev_media_img\" alt=\"media thumbnail 1\"><\/a><a class=\"wprev_media_img_a notyoutu\" href=\"https:\/\/media-cdn.tripadvisor.com\/media\/photo-s\/31\/0b\/7a\/94\/caption.jpg\" data-lity-desc=\"Review media\"><img decoding=\"async\" src=\"https:\/\/media-cdn.tripadvisor.com\/media\/photo-s\/31\/0b\/7a\/94\/caption.jpg\" class=\"wprev_media_img\" alt=\"media thumbnail 2\"><\/a><\/div>\t\t\t\t<a href=\"https:\/\/www.tripadvisor.com\/Attraction_Review-g1119814-d33217023-Reviews-Cuilpilapan_Miravalles-Area_de_Conservacion_Guanacaste_Province_of_Guanacaste.html\" target=\"_blank\" rel=\"nofollow\"><img decoding=\"async\" src=\"https:\/\/cuilpilapan.com\/wp-content\/plugins\/wp-tripadvisor-review-slider\/public\/partials\/imgs\/tripadvisor_outline.png\" alt=\"tripadvisor logo\" class=\"wptripadvisor_t1_tripadvisor_logo\"><\/a>\t\t\t<\/div><span class=\"wptripadvisor_t1_A_8\"><img decoding=\"async\" src=\"https:\/\/media-cdn.tripadvisor.com\/media\/photo-l\/31\/0b\/7d\/a6\/cristal-l.jpg\" alt=\"avatar thumb\" class=\"wptripadvisor_t1_IMG_4\" loading=\"lazy\"\/><\/span> <span class=\"wptripadvisor_t1_SPAN_5 wprev_preview_tcolor2_T1\">Cristal L<br\/><span class=\"wprev_showdate_T1\">7 de septiembre de 2025<\/span> <\/span>\r\n\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t<\/li><li class=\"wprevnextslide\">\t\t<div class=\"wptripadvisor_t1_outer_div w3_wprs-row-padding\">\r\n\t\t\t\t<div class=\"wptripadvisor_t1_DIV_1 w3_wprs-col l12 outerrevdiv\">\r\n\t\t\t<div class=\"indrevdiv wptripadvisor_t1_DIV_2 wprev_preview_bg1_T1 wprev_preview_bradius_T1\">\r\n\t\t\t\t<p class=\"wptripadvisor_t1_P_3 wprev_preview_tcolor1_T1\">\r\n\t\t\t\t\t<span class=\"wptripadvisor_star_imgs_T1 wprevpro_star_imgs_T1\"><img decoding=\"async\" src=\"https:\/\/cuilpilapan.com\/wp-content\/plugins\/wp-tripadvisor-review-slider\/public\/partials\/imgs\/tripadvisor_stars_5.png\" alt=\"star rating\" class=\"wptripadvisor_t1_star_img_file\"><span class=\"verifiedloc1 wprevpro_verified_svg wprevtooltip\" data-wprevtooltip=\"Verified on TripAdvisor\"><span class=\"svgicons svg-wprsp-verified\"><\/span><\/span><\/span><span class=\"wprevrevtitle\">Conociendo el bosque de Costa Rica, aire puro y vistas de otro nivel y cataratas impresionantes <\/span>&nbsp;-&nbsp;De las mejores caminatas y experiencias de senderismo que he hecho en mi vida, las vistas, cataratas, el gu\u00eda, la atenci\u00f3n, todo fue excelente, d\u00eda para no olvidar y repetir.&lt;br<a class=\"wprs_rd_more\">... read more<\/a><span class=\"wprs_rd_more_text\" style=\"display:none\"> \/&gt;\r\n100% recomendado.<\/span>\t\t\t\t<\/p>\r\n\t\t\t\t<div class=\"wprev_media_div 4\"><a class=\"wprev_media_img_a notyoutu\" href=\"https:\/\/media-cdn.tripadvisor.com\/media\/photo-f\/30\/ff\/c5\/19\/caption.jpg\" data-lity-desc=\"Review media\"><img decoding=\"async\" src=\"https:\/\/media-cdn.tripadvisor.com\/media\/photo-f\/30\/ff\/c5\/19\/caption.jpg\" class=\"wprev_media_img\" alt=\"media thumbnail 0\"><\/a><a class=\"wprev_media_img_a notyoutu\" href=\"https:\/\/media-cdn.tripadvisor.com\/media\/photo-f\/30\/ff\/c5\/db\/caption.jpg\" data-lity-desc=\"Review media\"><img decoding=\"async\" src=\"https:\/\/media-cdn.tripadvisor.com\/media\/photo-f\/30\/ff\/c5\/db\/caption.jpg\" class=\"wprev_media_img\" alt=\"media thumbnail 1\"><\/a><a class=\"wprev_media_img_a notyoutu\" href=\"https:\/\/media-cdn.tripadvisor.com\/media\/photo-s\/30\/ff\/c5\/dc\/caption.jpg\" data-lity-desc=\"Review media\"><img decoding=\"async\" src=\"https:\/\/media-cdn.tripadvisor.com\/media\/photo-s\/30\/ff\/c5\/dc\/caption.jpg\" class=\"wprev_media_img\" alt=\"media thumbnail 2\"><\/a><a class=\"wprev_media_img_a notyoutu\" href=\"https:\/\/media-cdn.tripadvisor.com\/media\/photo-s\/30\/ff\/c5\/dd\/caption.jpg\" data-lity-desc=\"Review media\"><img decoding=\"async\" src=\"https:\/\/media-cdn.tripadvisor.com\/media\/photo-s\/30\/ff\/c5\/dd\/caption.jpg\" class=\"wprev_media_img\" alt=\"media thumbnail 3\"><\/a><\/div>\t\t\t\t<a href=\"https:\/\/www.tripadvisor.com\/Attraction_Review-g1119814-d33217023-Reviews-Cuilpilapan_Miravalles-Area_de_Conservacion_Guanacaste_Province_of_Guanacaste.html\" target=\"_blank\" rel=\"nofollow\"><img decoding=\"async\" src=\"https:\/\/cuilpilapan.com\/wp-content\/plugins\/wp-tripadvisor-review-slider\/public\/partials\/imgs\/tripadvisor_outline.png\" alt=\"tripadvisor logo\" class=\"wptripadvisor_t1_tripadvisor_logo\"><\/a>\t\t\t<\/div><span class=\"wptripadvisor_t1_A_8\"><img decoding=\"async\" src=\"https:\/\/media-cdn.tripadvisor.com\/media\/photo-l\/1a\/f6\/f0\/48\/default-avatar-2020-15.jpg\" alt=\"avatar thumb\" class=\"wptripadvisor_t1_IMG_4\" loading=\"lazy\"\/><\/span> <span class=\"wptripadvisor_t1_SPAN_5 wprev_preview_tcolor2_T1\">Linneth C<br\/><span class=\"wprev_showdate_T1\">2 de septiembre de 2025<\/span> <\/span>\r\n\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t<\/li><li class=\"wprevnextslide\">\t\t<div class=\"wptripadvisor_t1_outer_div w3_wprs-row-padding\">\r\n\t\t\t\t<div class=\"wptripadvisor_t1_DIV_1 w3_wprs-col l12 outerrevdiv\">\r\n\t\t\t<div class=\"indrevdiv wptripadvisor_t1_DIV_2 wprev_preview_bg1_T1 wprev_preview_bradius_T1\">\r\n\t\t\t\t<p class=\"wptripadvisor_t1_P_3 wprev_preview_tcolor1_T1\">\r\n\t\t\t\t\t<span class=\"wptripadvisor_star_imgs_T1 wprevpro_star_imgs_T1\"><img decoding=\"async\" src=\"https:\/\/cuilpilapan.com\/wp-content\/plugins\/wp-tripadvisor-review-slider\/public\/partials\/imgs\/tripadvisor_stars_5.png\" alt=\"star rating\" class=\"wptripadvisor_t1_star_img_file\"><span class=\"verifiedloc1 wprevpro_verified_svg wprevtooltip\" data-wprevtooltip=\"Verified on TripAdvisor\"><span class=\"svgicons svg-wprsp-verified\"><\/span><\/span><\/span><span class=\"wprevrevtitle\">Unique Nature Experience<\/span>&nbsp;-&nbsp;If come to Fortuna this is a most, amazing customer service and a unique nature experience!!! Don\u2019t think too much just go. Hiking gear some snacks and enjoy 10 km<a class=\"wprs_rd_more\">... read more<\/a><span class=\"wprs_rd_more_text\" style=\"display:none\"> of pure nature.. PURA VIDA<\/span>\t\t\t\t<\/p>\r\n\t\t\t\t<div class=\"wprev_media_div 3\"><a class=\"wprev_media_img_a notyoutu\" href=\"https:\/\/media-cdn.tripadvisor.com\/media\/photo-f\/31\/1b\/9a\/be\/caption.jpg\" data-lity-desc=\"Review media\"><img decoding=\"async\" src=\"https:\/\/media-cdn.tripadvisor.com\/media\/photo-f\/31\/1b\/9a\/be\/caption.jpg\" class=\"wprev_media_img\" alt=\"media thumbnail 0\"><\/a><a class=\"wprev_media_img_a notyoutu\" href=\"https:\/\/media-cdn.tripadvisor.com\/media\/photo-f\/31\/1b\/9a\/bf\/caption.jpg\" data-lity-desc=\"Review media\"><img decoding=\"async\" src=\"https:\/\/media-cdn.tripadvisor.com\/media\/photo-f\/31\/1b\/9a\/bf\/caption.jpg\" class=\"wprev_media_img\" alt=\"media thumbnail 1\"><\/a><a class=\"wprev_media_img_a notyoutu\" href=\"https:\/\/media-cdn.tripadvisor.com\/media\/photo-f\/31\/1b\/9a\/c0\/caption.jpg\" data-lity-desc=\"Review media\"><img decoding=\"async\" src=\"https:\/\/media-cdn.tripadvisor.com\/media\/photo-f\/31\/1b\/9a\/c0\/caption.jpg\" class=\"wprev_media_img\" alt=\"media thumbnail 2\"><\/a><\/div>\t\t\t\t<a href=\"https:\/\/www.tripadvisor.com\/Attraction_Review-g1119814-d33217023-Reviews-Cuilpilapan_Miravalles-Area_de_Conservacion_Guanacaste_Province_of_Guanacaste.html\" target=\"_blank\" rel=\"nofollow\"><img decoding=\"async\" src=\"https:\/\/cuilpilapan.com\/wp-content\/plugins\/wp-tripadvisor-review-slider\/public\/partials\/imgs\/tripadvisor_outline.png\" alt=\"tripadvisor logo\" class=\"wptripadvisor_t1_tripadvisor_logo\"><\/a>\t\t\t<\/div><span class=\"wptripadvisor_t1_A_8\"><img decoding=\"async\" src=\"https:\/\/media-cdn.tripadvisor.com\/media\/photo-l\/1a\/f6\/e8\/5b\/default-avatar-2020-61.jpg\" alt=\"avatar thumb\" class=\"wptripadvisor_t1_IMG_4\" loading=\"lazy\"\/><\/span> <span class=\"wptripadvisor_t1_SPAN_5 wprev_preview_tcolor2_T1\">Steven R<br\/><span class=\"wprev_showdate_T1\">14 de septiembre de 2025<\/span> <\/span>\r\n\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t<\/li><li class=\"wprevnextslide\">\t\t<div class=\"wptripadvisor_t1_outer_div w3_wprs-row-padding\">\r\n\t\t\t\t<div class=\"wptripadvisor_t1_DIV_1 w3_wprs-col l12 outerrevdiv\">\r\n\t\t\t<div class=\"indrevdiv wptripadvisor_t1_DIV_2 wprev_preview_bg1_T1 wprev_preview_bradius_T1\">\r\n\t\t\t\t<p class=\"wptripadvisor_t1_P_3 wprev_preview_tcolor1_T1\">\r\n\t\t\t\t\t<span class=\"wptripadvisor_star_imgs_T1 wprevpro_star_imgs_T1\"><img decoding=\"async\" src=\"https:\/\/cuilpilapan.com\/wp-content\/plugins\/wp-tripadvisor-review-slider\/public\/partials\/imgs\/tripadvisor_stars_5.png\" alt=\"star rating\" class=\"wptripadvisor_t1_star_img_file\"><span class=\"verifiedloc1 wprevpro_verified_svg wprevtooltip\" data-wprevtooltip=\"Verified on TripAdvisor\"><span class=\"svgicons svg-wprsp-verified\"><\/span><\/span><\/span><span class=\"wprevrevtitle\">Disfrutar de la naturaleza, Guanacaste no es solo playas. <\/span>&nbsp;-&nbsp;Personal y gu\u00eda muy atentos y serviciales, el lugar con vistas hermosas, las catarata un plus espectacular. Llevar repelente, tennis von buena tracci\u00f3n, poncho o capa, buena hidratacion y la<a class=\"wprs_rd_more\">... read more<\/a><span class=\"wprs_rd_more_text\" style=\"display:none\"> merienda es super importante.<\/span>\t\t\t\t<\/p>\r\n\t\t\t\t<div class=\"wprev_media_div 2\"><a class=\"wprev_media_img_a notyoutu\" href=\"https:\/\/media-cdn.tripadvisor.com\/media\/photo-f\/31\/1b\/9c\/0c\/caption.jpg\" data-lity-desc=\"Review media\"><img decoding=\"async\" src=\"https:\/\/media-cdn.tripadvisor.com\/media\/photo-f\/31\/1b\/9c\/0c\/caption.jpg\" class=\"wprev_media_img\" alt=\"media thumbnail 0\"><\/a><a class=\"wprev_media_img_a notyoutu\" href=\"https:\/\/media-cdn.tripadvisor.com\/media\/photo-f\/31\/1b\/9c\/97\/caption.jpg\" data-lity-desc=\"Review media\"><img decoding=\"async\" src=\"https:\/\/media-cdn.tripadvisor.com\/media\/photo-f\/31\/1b\/9c\/97\/caption.jpg\" class=\"wprev_media_img\" alt=\"media thumbnail 1\"><\/a><\/div>\t\t\t\t<a href=\"https:\/\/www.tripadvisor.com\/Attraction_Review-g1119814-d33217023-Reviews-Cuilpilapan_Miravalles-Area_de_Conservacion_Guanacaste_Province_of_Guanacaste.html\" target=\"_blank\" rel=\"nofollow\"><img decoding=\"async\" src=\"https:\/\/cuilpilapan.com\/wp-content\/plugins\/wp-tripadvisor-review-slider\/public\/partials\/imgs\/tripadvisor_outline.png\" alt=\"tripadvisor logo\" class=\"wptripadvisor_t1_tripadvisor_logo\"><\/a>\t\t\t<\/div><span class=\"wptripadvisor_t1_A_8\"><img decoding=\"async\" src=\"https:\/\/media-cdn.tripadvisor.com\/media\/photo-l\/1a\/f6\/f1\/42\/default-avatar-2020-20.jpg\" alt=\"avatar thumb\" class=\"wptripadvisor_t1_IMG_4\" loading=\"lazy\"\/><\/span> <span class=\"wptripadvisor_t1_SPAN_5 wprev_preview_tcolor2_T1\">Roxana G<br\/><span class=\"wprev_showdate_T1\">14 de septiembre de 2025<\/span> <\/span>\r\n\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t<\/li><\/ul><\/div>\n\n<\/div>\n\n<style>\n.tripadvisor-wrapper {\n  max-width: 100%;      \/* No excede el ancho del contenedor *\/\n  overflow: hidden;     \/* Evita scroll horizontal *\/\n}\n\n.tripadvisor-wrapper iframe,\n.tripadvisor-wrapper .wptripadvisor {\n  width: 100% !important;  \/* Siempre toma el 100% del contenedor *\/\n  max-width: 100%;\n  box-sizing: border-box;\n}\n<\/style>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-878a215 e-flex e-con-boxed e-con e-parent\" data-id=\"878a215\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-aa8d65e elementor-widget elementor-widget-spacer\" data-id=\"aa8d65e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1c3f978 elementor-widget elementor-widget-heading\" data-id=\"1c3f978\" 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\">RESERVATION CONFIRMATION<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-955bda2 elementor-widget elementor-widget-spacer\" data-id=\"955bda2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a0df8cf elementor-widget elementor-widget-text-editor\" data-id=\"a0df8cf\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p data-start=\"1420\" data-end=\"1619\">To guarantee your spot and help us organize groups and tour schedules, a deposit is required at the time of booking:<\/p><p data-start=\"1420\" data-end=\"1619\"><strong data-start=\"1544\" data-end=\"1569\">\u00a0<\/strong><\/p><p data-start=\"1420\" data-end=\"1619\"><strong data-start=\"1544\" data-end=\"1569\">Costa Rican visitors:<\/strong> \u20a17,000<br data-start=\"1576\" data-end=\"1579\" \/><strong data-start=\"1582\" data-end=\"1609\">International visitors:<\/strong> $15 USD<\/p><p data-start=\"1420\" data-end=\"1619\"><span style=\"font-style: inherit; font-weight: inherit;\">This amount will be <\/span><span style=\"font-style: inherit; font-weight: inherit;\" data-start=\"1641\" data-end=\"1673\">deducted from the total cost<\/span><span style=\"font-style: inherit; font-weight: inherit;\"> on the day of your visit.<\/span><\/p><p data-start=\"1420\" data-end=\"1619\"><b style=\"font-style: inherit;\">Payment methods available:<\/b><\/p><ul data-start=\"1733\" data-end=\"1873\"><li data-start=\"1733\" data-end=\"1776\"><p data-start=\"1735\" data-end=\"1776\"><span data-start=\"1735\" data-end=\"1750\">SINPE M\u00f3vil<\/span> or <span data-start=\"1754\" data-end=\"1771\">bank transfer.<\/span><\/p><\/li><li data-start=\"1733\" data-end=\"1776\"><p data-start=\"1735\" data-end=\"1776\"><span style=\"font-style: inherit; font-weight: inherit;\" data-start=\"1779\" data-end=\"1822\">Online payments by credit or debit card.<\/span><\/p><\/li><li data-start=\"1733\" data-end=\"1776\"><p data-start=\"1735\" data-end=\"1776\"><span style=\"font-style: inherit; font-weight: inherit;\">Crypto payments (USDT)\u00a0<\/span><span style=\"font-style: inherit; font-weight: inherit;\">via Binance.<\/span><\/p><\/li><\/ul><p data-start=\"1875\" data-end=\"1959\"><span style=\"font-size: 1rem; font-style: inherit; font-weight: inherit;\">You can book up to<\/span><span style=\"font-weight: bold; font-size: 1rem; font-style: inherit;\">\u00a0<\/span><span style=\"font-size: 1rem; font-style: inherit;\" data-start=\"1897\" data-end=\"1915\">2 hours before<\/span><span style=\"font-size: 1rem; font-style: inherit; font-weight: inherit;\">\u00a0the tour starts, subject to availability.<\/span><\/p><p data-start=\"2072\" data-end=\"2338\">In case of cancellation, the deposit is <span data-start=\"2115\" data-end=\"2175\">refundable only if notified at least 24 hours in advance<\/span> of the tour start time.<br data-start=\"2199\" data-end=\"2202\" \/>Cancellations made less than 24 hours before the tour are <strong data-start=\"2260\" data-end=\"2278\">non-refundable<\/strong>, as logistics and spaces will already have been assigned.<\/p><p data-start=\"2072\" data-end=\"2338\">In the event of a refund, the amount returned <span data-start=\"2631\" data-end=\"2677\"><b>may be affected by payment processing<\/b> <b>fees<\/b><\/span><b> <\/b>depending on the selected payment method (e.g., online platforms or international transfers).<\/p><p data-start=\"2072\" data-end=\"2338\">\u00a0<\/p>\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-35c88e7 elementor-widget elementor-widget-html\" data-id=\"35c88e7\" 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>Information Table<\/title>\r\n  <style>\r\n    body {\r\n      font-family: Arial, sans-serif;\r\n      margin: 0;\r\n      padding: 20px;\r\n      box-sizing: border-box;\r\n    }\r\n\r\n    .tabla-container {\r\n      width: 100%;\r\n      overflow-x: auto; \/* Permite scroll solo dentro de la tabla si es necesario *\/\r\n    }\r\n\r\n    table {\r\n      width: 100%;\r\n      border-collapse: collapse;\r\n      table-layout: auto;\r\n      word-wrap: break-word;\r\n      max-width: 100%;\r\n    }\r\n\r\n    th, td {\r\n      padding: 12px;\r\n      text-align: left;\r\n      vertical-align: top;\r\n      border: 1px solid #ddd;\r\n    }\r\n\r\n    th {\r\n      background-color: #2ecc71;\r\n      color: white;\r\n    }\r\n\r\n    \/* Ajustes en pantallas medianas *\/\r\n    @media screen and (max-width: 768px) {\r\n      table {\r\n        font-size: 14px;\r\n      }\r\n      th, td {\r\n        padding: 8px;\r\n      }\r\n    }\r\n\r\n    \/* Ajustes en pantallas muy peque\u00f1as *\/\r\n    @media screen and (max-width: 480px) {\r\n      table {\r\n        font-size: 13px;\r\n      }\r\n    }\r\n  <\/style>\r\n<\/head>\r\n<body>\r\n  <div class=\"tabla-container\">\r\n    <table>\r\n      <thead>\r\n        <tr>\r\n          <th>Category<\/th>\r\n          <th>Details<\/th>\r\n        <\/tr>\r\n      <\/thead>\r\n      <tbody>\r\n        <tr>\r\n          <td>Foreign Guests<\/td>\r\n          <td>The guide service costs $22 in Spanish and $32 in English.\r\n        <\/tr>\r\n        <tr>\r\n          <td>Local Guests<\/td>\r\n          <td>\u201cThe local guide service has an additional cost of \u20a110,000\u201d.\r\n          <\/td>\r\n        <\/tr>\r\n        <tr>\r\n          <td>Booking \/ Tour Coordination<\/td>\r\n          <td>We recommend <strong>booking at least 3 hours in advance<\/strong> and <strong>informing us of your arrival<\/strong> to avoid unnecessary waiting.<\/td>\r\n        <\/tr>\r\n        <tr>\r\n          <td>Individual Tours<\/td>\r\n          <td>Individual tours are not available: minimum <strong>2 participants<\/strong>.<br>\r\n              You can pay an <strong>extra fee<\/strong> to have a private guide.\r\n          <\/td>\r\n        <\/tr>\r\n        <tr>\r\n          <td>Self-Guided<\/td>\r\n          <td>Walkie-talkie, map, and route briefing provided for a safe experience; marked trail.<\/td>\r\n        <\/tr>\r\n        <tr>\r\n          <td>Available Extras<\/td>\r\n          <td>\r\n            - <strong>Extras (for rental)<\/strong>: Binoculars $4, Hiking poles $1, Towels $2, Bottled water $1 per item, Bicycle rental (includes helmet and gloves) \u20a18000 CRC for locals, $20 USD for international guests.<br>\r\n          <\/td>\r\n        <\/tr>\r\n      <\/tbody>\r\n    <\/table>\r\n  <\/div>\r\n<\/body>\r\n<\/html>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4f61587 elementor-widget elementor-widget-spacer\" data-id=\"4f61587\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7b08c35 elementor-widget elementor-widget-heading\" data-id=\"7b08c35\" 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\"><span style=\"font-size: 1.4em;text-align: center\">\ud83d\udd39 Recommendations<\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8f040e9 elementor-widget elementor-widget-html\" data-id=\"8f040e9\" 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>Recommendations Table<\/title>\r\n  <style>\r\n    body {\r\n      font-family: Arial, sans-serif;\r\n      margin: 0;\r\n      padding: 20px;\r\n      box-sizing: border-box;\r\n    }\r\n\r\n    .tabla-container {\r\n      width: 100%;\r\n      overflow-x: auto; \/* permite scroll solo dentro de la tabla si es necesario *\/\r\n    }\r\n\r\n    table {\r\n      width: 100%;\r\n      border-collapse: collapse;\r\n      table-layout: auto;\r\n      max-width: 100%;\r\n      word-wrap: break-word;\r\n    }\r\n\r\n    th, td {\r\n      padding: 12px;\r\n      text-align: left;\r\n      vertical-align: top;\r\n      border: 1px solid #ddd;\r\n    }\r\n\r\n    th {\r\n      background-color: #2ecc71;\r\n      color: white;\r\n    }\r\n\r\n    td {\r\n      background-color: #f9f9f9;\r\n    }\r\n\r\n    strong {\r\n      font-weight: bold;\r\n    }\r\n\r\n    \/* Ajustes en pantallas medianas *\/\r\n    @media screen and (max-width: 768px) {\r\n      table {\r\n        font-size: 14px;\r\n      }\r\n      th, td {\r\n        padding: 8px;\r\n      }\r\n    }\r\n\r\n    \/* Ajustes en pantallas peque\u00f1as *\/\r\n    @media screen and (max-width: 480px) {\r\n      table {\r\n        font-size: 13px;\r\n      }\r\n    }\r\n  <\/style>\r\n<\/head>\r\n<body>\r\n\r\n  <div class=\"tabla-container\">\r\n    <table>\r\n      <thead>\r\n        <tr>\r\n          <th style=\"width: 30%;\">Recommendation<\/th>\r\n          <th>Details<\/th>\r\n        <\/tr>\r\n      <\/thead>\r\n      <tbody>\r\n        <tr>\r\n          <td>Physical Condition<\/td>\r\n          <td>\r\n            The hikes are <strong>not suitable for wheelchair users or individuals recovering from surgery<\/strong>. \r\n            Check the information for each tour to choose one that matches your physical condition and ensures you enjoy the activity.\r\n          <\/td>\r\n        <\/tr>\r\n        <tr>\r\n          <td>Clothing and Footwear<\/td>\r\n          <td>\r\n            Bring suitable walking clothes, extra clothing if you want to swim in the river, and <strong>comfortable shoes<\/strong>.\r\n          <\/td>\r\n        <\/tr>\r\n        <tr>\r\n          <td>Health<\/td>\r\n          <td>\r\n            If you have any medical condition or allergy, <strong>bring your medication<\/strong>. \r\n            It is also recommended to carry insect repellent.\r\n          <\/td>\r\n        <\/tr>\r\n        <tr>\r\n          <td>Hydration<\/td>\r\n          <td>\r\n            Bring enough <strong>water<\/strong> to stay hydrated throughout the tour.\r\n          <\/td>\r\n        <\/tr>\r\n      <\/tbody>\r\n    <\/table>\r\n  <\/div>\r\n\r\n<\/body>\r\n<\/html>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1de6ee7 elementor-widget elementor-widget-heading\" data-id=\"1de6ee7\" 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\">LOCATION<\/h2>\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-7d72297 e-flex e-con-boxed e-con e-parent\" data-id=\"7d72297\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c8c0a07 elementor-widget__width-initial elementor-widget elementor-widget-google_maps\" data-id=\"c8c0a07\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"google_maps.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-custom-embed\">\n\t\t\t<iframe loading=\"lazy\"\n\t\t\t\t\tsrc=\"https:\/\/maps.google.com\/maps?q=cuilpilapan&#038;t=m&#038;z=10&#038;output=embed&#038;iwloc=near\"\n\t\t\t\t\ttitle=\"cuilpilapan\"\n\t\t\t\t\taria-label=\"cuilpilapan\"\n\t\t\t><\/iframe>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-79ea543 elementor-widget-mobile__width-initial elementor-widget elementor-widget-html\" data-id=\"79ea543\" 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<a href=\"https:\/\/maps.app.goo.gl\/M2EjH7MwzqjKcsXw8\" target=\"_blank\" class=\"maps-button\">\r\n  <img decoding=\"async\" src=\"https:\/\/cuilpilapan.com\/wp-content\/uploads\/2025\/10\/google-maps-3.jpg\" alt=\"Open in Google Maps\">\r\n  <div class=\"button-text\">\r\n    <span class=\"main-text\">Take me to Cuilpilapan!<\/span>\r\n    <span class=\"sub-text\">Press this button \ud83d\udc46<\/span>\r\n  <\/div>\r\n<\/a>\r\n\r\n<style>\r\n.maps-button {\r\n  display: inline-flex;\r\n  align-items: center;\r\n  justify-content: center;\r\n  background: linear-gradient(135deg, #5ca0a0, #8cc0c0, #c0e0e0); \/* verdes azulados y celestes suaves *\/\r\n  color: white;\r\n  font-weight: bold;\r\n  font-size: 17px;\r\n  padding: 6px 16px;\r\n  border-radius: 12px;\r\n  text-decoration: none;\r\n  box-shadow: 0 3px 10px rgba(0,0,0,0.25);\r\n  position: relative;\r\n  animation: pressPulseMaps 1.2s infinite ease-in-out;\r\n  text-align: center;\r\n}\r\n\r\n.maps-button:active {\r\n  transform: translateY(3px);\r\n  box-shadow: 0 2px 6px rgba(0,0,0,0.25);\r\n  animation: none;\r\n}\r\n\r\n.maps-button img {\r\n  width: 45px;\r\n  height: 45px;\r\n  margin-right: 12px;\r\n  border-radius: 10px;\r\n  box-shadow: 0 3px 6px rgba(0,0,0,0.2);\r\n}\r\n\r\n.button-text {\r\n  display: flex;\r\n  flex-direction: column;\r\n  justify-content: center;\r\n  align-items: center;\r\n}\r\n\r\n.main-text {\r\n  text-shadow: 1px 1px 2px rgba(0,0,0,0.3);\r\n}\r\n\r\n.sub-text {\r\n  font-size: 11px;\r\n  font-weight: normal;\r\n  text-shadow: 1px 1px 2px rgba(0,0,0,0.3);\r\n  margin-top: 2px;\r\n}\r\n\r\n@keyframes pressPulseMaps {\r\n  0%, 100% {\r\n    transform: translateY(0);\r\n  }\r\n  50% {\r\n    transform: translateY(3px);\r\n  }\r\n}\r\n<\/style>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-cb69bf4 elementor-widget-mobile__width-initial elementor-widget elementor-widget-html\" data-id=\"cb69bf4\" 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<a href=\"https:\/\/waze.com\/ul\/hd1gkynmbe\" target=\"_blank\" class=\"waze-button\">\r\n  <img decoding=\"async\" src=\"https:\/\/cuilpilapan.com\/wp-content\/uploads\/2025\/10\/Waze.jpg\" alt=\"Open in Waze\">\r\n  <div class=\"button-text\">\r\n    <span class=\"main-text\">Take me to Cuilpilapan!<\/span>\r\n    <span class=\"sub-text\">Press this button \ud83d\udc46<\/span>\r\n  <\/div>\r\n<\/a>\r\n\r\n<style>\r\n.waze-button {\r\n  display: inline-flex;\r\n  align-items: center;\r\n  justify-content: center;\r\n  background: #e3f2fd; \/* color original de Waze *\/\r\n  color: #000;\r\n  font-weight: bold;\r\n  font-size: 17px;\r\n  padding: 6px 16px;\r\n  border-radius: 12px;\r\n  text-decoration: none;\r\n  box-shadow: 0 3px 10px rgba(0,0,0,0.25);\r\n  position: relative;\r\n  text-align: center;\r\n  animation: pressPulseWaze 1.2s infinite ease-in-out; \/* pulso animado *\/\r\n}\r\n\r\n.waze-button:active {\r\n  transform: translateY(3px);\r\n  box-shadow: 0 2px 6px rgba(0,0,0,0.25);\r\n  animation: none;\r\n}\r\n\r\n.waze-button img {\r\n  width: 45px;\r\n  height: 45px;\r\n  margin-right: 12px;\r\n  border-radius: 10px;\r\n  box-shadow: 0 3px 6px rgba(0,0,0,0.2);\r\n}\r\n\r\n.button-text {\r\n  display: flex;\r\n  flex-direction: column;\r\n  justify-content: center;\r\n  align-items: center;\r\n}\r\n\r\n.main-text {\r\n  font-size: 15px;\r\n}\r\n\r\n.sub-text {\r\n  font-size: 11px;\r\n  font-weight: normal;\r\n  margin-top: 2px;\r\n  opacity: 0.8;\r\n}\r\n\r\n\/* Animaci\u00f3n de pulso igual que Google Maps *\/\r\n@keyframes pressPulseWaze {\r\n  0%, 100% {\r\n    transform: translateY(0);\r\n  }\r\n  50% {\r\n    transform: translateY(3px);\r\n  }\r\n}\r\n<\/style>\r\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-e2d7028 e-flex e-con-boxed e-con e-parent\" data-id=\"e2d7028\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a370a97 elementor-widget elementor-widget-spacer\" data-id=\"a370a97\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-3bb3bb9 e-flex e-con-boxed e-con e-parent\" data-id=\"3bb3bb9\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-13c1bb6 elementor-widget elementor-widget-heading\" data-id=\"13c1bb6\" 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\">Contact Info<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-aaceb50 elementor-widget elementor-widget-heading\" data-id=\"aaceb50\" 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<h5 class=\"elementor-heading-title elementor-size-default\">Address<\/h5>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-468b41f elementor-widget__width-initial elementor-widget elementor-widget-icon-box\" data-id=\"468b41f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon-box.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-box-wrapper\">\n\n\t\t\t\n\t\t\t\t\t\t<div class=\"elementor-icon-box-content\">\n\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<p class=\"elementor-icon-box-description\">\n\t\t\t\t\t\t2,360 m to the northeast of the entrance of the Las Hornillas tourist center, in the direction towards Jorge Manuel Dengo Park and 100 m south of the public street\t\t\t\t\t<\/p>\n\t\t\t\t\n\t\t\t<\/div>\n\t\t\t\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ced16a4 elementor-widget elementor-widget-heading\" data-id=\"ced16a4\" 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<h5 class=\"elementor-heading-title elementor-size-default\">Email<\/h5>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b570107 elementor-widget elementor-widget-icon-box\" data-id=\"b570107\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon-box.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-box-wrapper\">\n\n\t\t\t\n\t\t\t\t\t\t<div class=\"elementor-icon-box-content\">\n\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<p class=\"elementor-icon-box-description\">\n\t\t\t\t\t\tcontacto@cuilpilapan.com\t\t\t\t\t<\/p>\n\t\t\t\t\n\t\t\t<\/div>\n\t\t\t\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-647ae23 elementor-widget elementor-widget-icon-box\" data-id=\"647ae23\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon-box.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-box-wrapper\">\n\n\t\t\t\n\t\t\t\t\t\t<div class=\"elementor-icon-box-content\">\n\n\t\t\t\t\t\t\t\t\t<h5 class=\"elementor-icon-box-title\">\n\t\t\t\t\t\t<span  >\n\t\t\t\t\t\t\tTelephone\t\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/h5>\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<p class=\"elementor-icon-box-description\">\n\t\t\t\t\t\t6011-0640\t\t\t\t\t<\/p>\n\t\t\t\t\n\t\t\t<\/div>\n\t\t\t\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b9c46ad elementor-widget elementor-widget-heading\" data-id=\"b9c46ad\" 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<h5 class=\"elementor-heading-title elementor-size-default\">Our Networks<\/h5>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-60a8b97 elementor-shape-circle e-grid-align-left e-grid-align-mobile-left elementor-grid-mobile-3 elementor-grid-0 elementor-widget elementor-widget-social-icons\" data-id=\"60a8b97\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"social-icons.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-social-icons-wrapper elementor-grid\" role=\"list\">\n\t\t\t\t\t\t\t<span class=\"elementor-grid-item\" role=\"listitem\">\n\t\t\t\t\t<a class=\"elementor-icon elementor-social-icon elementor-social-icon-facebook-f elementor-repeater-item-57fe014\" href=\"https:\/\/www.facebook.com\/share\/1BNwLiXvhB\/?mibextid=wwXIfr\">\n\t\t\t\t\t\t<span class=\"elementor-screen-only\">Facebook-f<\/span>\n\t\t\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fab-facebook-f\" viewBox=\"0 0 320 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M279.14 288l14.22-92.66h-88.91v-60.13c0-25.35 12.42-50.06 52.24-50.06h40.42V6.26S260.43 0 225.36 0c-73.22 0-121.08 44.38-121.08 124.72v70.62H22.89V288h81.39v224h100.17V288z\"><\/path><\/svg>\t\t\t\t\t<\/a>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t\t<span class=\"elementor-grid-item\" role=\"listitem\">\n\t\t\t\t\t<a class=\"elementor-icon elementor-social-icon elementor-social-icon-instagram elementor-repeater-item-5cd17d1\" href=\"https:\/\/www.instagram.com\/cuilpilapan?igsh=MTlmYXp6Nmo2ZGpsNw==\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-screen-only\">Instagram<\/span>\n\t\t\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fab-instagram\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z\"><\/path><\/svg>\t\t\t\t\t<\/a>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t\t<span class=\"elementor-grid-item\" role=\"listitem\">\n\t\t\t\t\t<a class=\"elementor-icon elementor-social-icon elementor-social-icon-whatsapp elementor-repeater-item-5d2554d\" href=\"https:\/\/wa.me\/60110640\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-screen-only\">Whatsapp<\/span>\n\t\t\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fab-whatsapp\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M380.9 97.1C339 55.1 283.2 32 223.9 32c-122.4 0-222 99.6-222 222 0 39.1 10.2 77.3 29.6 111L0 480l117.7-30.9c32.4 17.7 68.9 27 106.1 27h.1c122.3 0 224.1-99.6 224.1-222 0-59.3-25.2-115-67.1-157zm-157 341.6c-33.2 0-65.7-8.9-94-25.7l-6.7-4-69.8 18.3L72 359.2l-4.4-7c-18.5-29.4-28.2-63.3-28.2-98.2 0-101.7 82.8-184.5 184.6-184.5 49.3 0 95.6 19.2 130.4 54.1 34.8 34.9 56.2 81.2 56.1 130.5 0 101.8-84.9 184.6-186.6 184.6zm101.2-138.2c-5.5-2.8-32.8-16.2-37.9-18-5.1-1.9-8.8-2.8-12.5 2.8-3.7 5.6-14.3 18-17.6 21.8-3.2 3.7-6.5 4.2-12 1.4-32.6-16.3-54-29.1-75.5-66-5.7-9.8 5.7-9.1 16.3-30.3 1.8-3.7.9-6.9-.5-9.7-1.4-2.8-12.5-30.1-17.1-41.2-4.5-10.8-9.1-9.3-12.5-9.5-3.2-.2-6.9-.2-10.6-.2-3.7 0-9.7 1.4-14.8 6.9-5.1 5.6-19.4 19-19.4 46.3 0 27.3 19.9 53.7 22.6 57.4 2.8 3.7 39.1 59.7 94.8 83.8 35.2 15.2 49 16.5 66.6 13.9 10.7-1.6 32.8-13.4 37.4-26.4 4.6-13 4.6-24.1 3.2-26.4-1.3-2.5-5-3.9-10.5-6.6z\"><\/path><\/svg>\t\t\t\t\t<\/a>\n\t\t\t\t<\/span>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-14c93f9 e-flex e-con-boxed e-con e-parent\" data-id=\"14c93f9\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>View Tours \u2304 \ud83c\udf3f\u2728CUILPILAPAN A RIVER OF COLORS\u00a0 \ud83c\udf3f\u2728 Just 1 hour and 13 minutes from Liberia Airport, on the slopes of Miravalles Volcano, in Fortuna de Bagaces, Guanacaste, lies Cuilpilapan, an ideal destination for nature lovers and sustainable tourism. We are a family project committed to the environment: we use solar energy and focus [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"page-builder","ast-site-content-layout":"full-width-container","site-content-style":"unboxed","site-sidebar-style":"unboxed","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"enabled","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-5860","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Home - Cuilpilapan | Adventure Tours in Guanacaste<\/title>\n<meta name=\"description\" content=\"Discover Cuilpilap\u00e1n \u2013 a Colorful River in Fortuna de Bagaces, Guanacaste. Experience hiking, crystal-clear waters, waterfalls, hanging bridges, and sustainable tours, just minutes from R\u00edo Perdido, Y\u00f6k\u00f6 Hot Springs, Guayac\u00e1n Hot Springs, and Colinas del Miravalles. Perfect for travelers looking for things to do near Miravalles Volcano and Bagaces in Costa Rica.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cuilpilapan.com\/es\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Home - Cuilpilapan | Adventure Tours in Guanacaste\" \/>\n<meta property=\"og:description\" content=\"Discover Cuilpilap\u00e1n \u2013 a Colorful River in Fortuna de Bagaces, Guanacaste. Experience hiking, crystal-clear waters, waterfalls, hanging bridges, and sustainable tours, just minutes from R\u00edo Perdido, Y\u00f6k\u00f6 Hot Springs, Guayac\u00e1n Hot Springs, and Colinas del Miravalles. Perfect for travelers looking for things to do near Miravalles Volcano and Bagaces in Costa Rica.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cuilpilapan.com\/es\/\" \/>\n<meta property=\"og:site_name\" content=\"Cuilpilapan | Adventure Tours in Guanacaste\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/share\/17HdeKKdL8\/\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-14T06:30:25+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cuilpilapan.com\/wp-content\/uploads\/elementor\/thumbs\/7-scaled-rbmy5ufbqhwxd4a5xkewqvv3y4wlmlqdawsfc1gyww.jpg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"18 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/cuilpilapan.com\\\/\",\"url\":\"https:\\\/\\\/cuilpilapan.com\\\/\",\"name\":\"Home - Cuilpilapan | Adventure Tours in Guanacaste\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/cuilpilapan.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/cuilpilapan.com\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/cuilpilapan.com\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/cuilpilapan.com\\\/wp-content\\\/uploads\\\/elementor\\\/thumbs\\\/7-scaled-rbmy5ufbqhwxd4a5xkewqvv3y4wlmlqdawsfc1gyww.jpg\",\"datePublished\":\"2025-10-02T23:32:37+00:00\",\"dateModified\":\"2026-09-14T06:30:25+00:00\",\"description\":\"Discover Cuilpilap\u00e1n \u2013 a Colorful River in Fortuna de Bagaces, Guanacaste. Experience hiking, crystal-clear waters, waterfalls, hanging bridges, and sustainable tours, just minutes from R\u00edo Perdido, Y\u00f6k\u00f6 Hot Springs, Guayac\u00e1n Hot Springs, and Colinas del Miravalles. Perfect for travelers looking for things to do near Miravalles Volcano and Bagaces in Costa Rica.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/cuilpilapan.com\\\/#breadcrumb\"},\"inLanguage\":\"es-CR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/cuilpilapan.com\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es-CR\",\"@id\":\"https:\\\/\\\/cuilpilapan.com\\\/#primaryimage\",\"url\":\"https:\\\/\\\/cuilpilapan.com\\\/wp-content\\\/uploads\\\/elementor\\\/thumbs\\\/7-scaled-rbmy5ufbqhwxd4a5xkewqvv3y4wlmlqdawsfc1gyww.jpg\",\"contentUrl\":\"https:\\\/\\\/cuilpilapan.com\\\/wp-content\\\/uploads\\\/elementor\\\/thumbs\\\/7-scaled-rbmy5ufbqhwxd4a5xkewqvv3y4wlmlqdawsfc1gyww.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/cuilpilapan.com\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/cuilpilapan.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Home\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/cuilpilapan.com\\\/#website\",\"url\":\"https:\\\/\\\/cuilpilapan.com\\\/\",\"name\":\"Cuilpilapan | Adventure Tours in Guanacaste\",\"description\":\"Discover Cuilpilap\u00e1n \u2013 a Colorful River in Fortuna de Bagaces, Guanacaste. Experience hiking, crystal-clear waters, waterfalls, hanging bridges, and sustainable tours, just minutes from R\u00edo Perdido, Y\u00f6k\u00f6 Hot Springs, Guayac\u00e1n Hot Springs, and Colinas del Miravalles. Perfect for travelers looking for things to do near Miravalles Volcano and Bagaces in Costa Rica.\",\"publisher\":{\"@id\":\"https:\\\/\\\/cuilpilapan.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/cuilpilapan.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es-CR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/cuilpilapan.com\\\/#organization\",\"name\":\"Cuilpilapan | Adventure Tours in Guanacaste\",\"url\":\"https:\\\/\\\/cuilpilapan.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es-CR\",\"@id\":\"https:\\\/\\\/cuilpilapan.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/cuilpilapan.com\\\/wp-content\\\/uploads\\\/2025\\\/02\\\/cropped-WhatsApp-Image-2025-01-12-at-11.47.21-AM-1.jpeg\",\"contentUrl\":\"https:\\\/\\\/cuilpilapan.com\\\/wp-content\\\/uploads\\\/2025\\\/02\\\/cropped-WhatsApp-Image-2025-01-12-at-11.47.21-AM-1.jpeg\",\"width\":500,\"height\":312,\"caption\":\"Cuilpilapan | Adventure Tours in Guanacaste\"},\"image\":{\"@id\":\"https:\\\/\\\/cuilpilapan.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/share\\\/17HdeKKdL8\\\/\",\"https:\\\/\\\/www.tiktok.com\\\/@cuilpilapan?_t=ZM-90Irm1QBNbI&_r=1\",\"https:\\\/\\\/share.google\\\/UYFQTVugflTXCXXHA\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Home - Cuilpilapan | Adventure Tours in Guanacaste","description":"Discover Cuilpilap\u00e1n \u2013 a Colorful River in Fortuna de Bagaces, Guanacaste. Experience hiking, crystal-clear waters, waterfalls, hanging bridges, and sustainable tours, just minutes from R\u00edo Perdido, Y\u00f6k\u00f6 Hot Springs, Guayac\u00e1n Hot Springs, and Colinas del Miravalles. Perfect for travelers looking for things to do near Miravalles Volcano and Bagaces in Costa Rica.","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:\/\/cuilpilapan.com\/es\/","og_locale":"es_ES","og_type":"article","og_title":"Home - Cuilpilapan | Adventure Tours in Guanacaste","og_description":"Discover Cuilpilap\u00e1n \u2013 a Colorful River in Fortuna de Bagaces, Guanacaste. Experience hiking, crystal-clear waters, waterfalls, hanging bridges, and sustainable tours, just minutes from R\u00edo Perdido, Y\u00f6k\u00f6 Hot Springs, Guayac\u00e1n Hot Springs, and Colinas del Miravalles. Perfect for travelers looking for things to do near Miravalles Volcano and Bagaces in Costa Rica.","og_url":"https:\/\/cuilpilapan.com\/es\/","og_site_name":"Cuilpilapan | Adventure Tours in Guanacaste","article_publisher":"https:\/\/www.facebook.com\/share\/17HdeKKdL8\/","article_modified_time":"2026-09-14T06:30:25+00:00","og_image":[{"url":"https:\/\/cuilpilapan.com\/wp-content\/uploads\/elementor\/thumbs\/7-scaled-rbmy5ufbqhwxd4a5xkewqvv3y4wlmlqdawsfc1gyww.jpg","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"18 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/cuilpilapan.com\/","url":"https:\/\/cuilpilapan.com\/","name":"Home - Cuilpilapan | Adventure Tours in Guanacaste","isPartOf":{"@id":"https:\/\/cuilpilapan.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cuilpilapan.com\/#primaryimage"},"image":{"@id":"https:\/\/cuilpilapan.com\/#primaryimage"},"thumbnailUrl":"https:\/\/cuilpilapan.com\/wp-content\/uploads\/elementor\/thumbs\/7-scaled-rbmy5ufbqhwxd4a5xkewqvv3y4wlmlqdawsfc1gyww.jpg","datePublished":"2025-10-02T23:32:37+00:00","dateModified":"2026-09-14T06:30:25+00:00","description":"Discover Cuilpilap\u00e1n \u2013 a Colorful River in Fortuna de Bagaces, Guanacaste. Experience hiking, crystal-clear waters, waterfalls, hanging bridges, and sustainable tours, just minutes from R\u00edo Perdido, Y\u00f6k\u00f6 Hot Springs, Guayac\u00e1n Hot Springs, and Colinas del Miravalles. Perfect for travelers looking for things to do near Miravalles Volcano and Bagaces in Costa Rica.","breadcrumb":{"@id":"https:\/\/cuilpilapan.com\/#breadcrumb"},"inLanguage":"es-CR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cuilpilapan.com\/"]}]},{"@type":"ImageObject","inLanguage":"es-CR","@id":"https:\/\/cuilpilapan.com\/#primaryimage","url":"https:\/\/cuilpilapan.com\/wp-content\/uploads\/elementor\/thumbs\/7-scaled-rbmy5ufbqhwxd4a5xkewqvv3y4wlmlqdawsfc1gyww.jpg","contentUrl":"https:\/\/cuilpilapan.com\/wp-content\/uploads\/elementor\/thumbs\/7-scaled-rbmy5ufbqhwxd4a5xkewqvv3y4wlmlqdawsfc1gyww.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/cuilpilapan.com\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/cuilpilapan.com\/"},{"@type":"ListItem","position":2,"name":"Home"}]},{"@type":"WebSite","@id":"https:\/\/cuilpilapan.com\/#website","url":"https:\/\/cuilpilapan.com\/","name":"Cuilpilapan | Tours de Aventura en Guanacaste","description":"Discover Cuilpilap\u00e1n \u2013 a Colorful River in Fortuna de Bagaces, Guanacaste. Experience hiking, crystal-clear waters, waterfalls, hanging bridges, and sustainable tours, just minutes from R\u00edo Perdido, Y\u00f6k\u00f6 Hot Springs, Guayac\u00e1n Hot Springs, and Colinas del Miravalles. Perfect for travelers looking for things to do near Miravalles Volcano and Bagaces in Costa Rica.","publisher":{"@id":"https:\/\/cuilpilapan.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cuilpilapan.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es-CR"},{"@type":"Organization","@id":"https:\/\/cuilpilapan.com\/#organization","name":"Cuilpilapan | Tours de Aventura en Guanacaste","url":"https:\/\/cuilpilapan.com\/","logo":{"@type":"ImageObject","inLanguage":"es-CR","@id":"https:\/\/cuilpilapan.com\/#\/schema\/logo\/image\/","url":"https:\/\/cuilpilapan.com\/wp-content\/uploads\/2025\/02\/cropped-WhatsApp-Image-2025-01-12-at-11.47.21-AM-1.jpeg","contentUrl":"https:\/\/cuilpilapan.com\/wp-content\/uploads\/2025\/02\/cropped-WhatsApp-Image-2025-01-12-at-11.47.21-AM-1.jpeg","width":500,"height":312,"caption":"Cuilpilapan | Adventure Tours in Guanacaste"},"image":{"@id":"https:\/\/cuilpilapan.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/share\/17HdeKKdL8\/","https:\/\/www.tiktok.com\/@cuilpilapan?_t=ZM-90Irm1QBNbI&_r=1","https:\/\/share.google\/UYFQTVugflTXCXXHA"]}]}},"_links":{"self":[{"href":"https:\/\/cuilpilapan.com\/es\/wp-json\/wp\/v2\/pages\/5860","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cuilpilapan.com\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/cuilpilapan.com\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/cuilpilapan.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cuilpilapan.com\/es\/wp-json\/wp\/v2\/comments?post=5860"}],"version-history":[{"count":701,"href":"https:\/\/cuilpilapan.com\/es\/wp-json\/wp\/v2\/pages\/5860\/revisions"}],"predecessor-version":[{"id":7837,"href":"https:\/\/cuilpilapan.com\/es\/wp-json\/wp\/v2\/pages\/5860\/revisions\/7837"}],"wp:attachment":[{"href":"https:\/\/cuilpilapan.com\/es\/wp-json\/wp\/v2\/media?parent=5860"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}