{"id":10978,"date":"2026-01-07T06:23:36","date_gmt":"2026-01-07T10:23:36","guid":{"rendered":"https:\/\/www.atacama.tours\/?page_id=10978"},"modified":"2026-05-25T20:07:18","modified_gmt":"2026-05-26T00:07:18","slug":"planificador-de-itinerarios","status":"publish","type":"page","link":"https:\/\/www.atacama.tours\/en\/planificador-de-itinerarios\/","title":{"rendered":"Itinerary planner in San Pedro de Atacama"},"content":{"rendered":"\n<style>\n\/* 1. CONTENEDOR DEL T\u00cdTULO PRINCIPAL (100% INDEPENDIENTE) *\/\n.om-main-title-sec {\n    width: 100% !important;\n    max-width: 900px;\n    margin: clamp(40px, 8vh, 60px) auto clamp(20px, 4vh, 40px) auto;\n    padding: 0 15px; \n    text-align: center;\n    box-sizing: border-box !important;\n}\n\n\/* 2. ICONO SVG NATIVO (SIN PLUGINS) *\/\n.om-main-title-sec svg {\n    width: clamp(35px, 6vw, 45px);\n    height: clamp(35px, 6vw, 45px);\n    stroke: #FF8700; \/* Naranja Corporativo *\/\n    margin-bottom: 15px;\n    display: inline-block;\n    animation: omPopIn 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards;\n}\n\n\/* 3. T\u00cdTULO H1 ESTANDARIZADO *\/\n.om-main-title-sec h1 {\n    font-family: 'Poppins', sans-serif !important;\n    font-weight: 900;\n    color: #12374C; \/* Azul Corporativo [cite: 2026-02-02] *\/\n    font-size: clamp(32px, 6vw, 54px) !important; \n    line-height: 1.1;\n    margin: 0;\n    text-transform: uppercase;\n    letter-spacing: -1px;\n    word-wrap: break-word;\n    overflow-wrap: break-word;\n}\n\n\/* 4. RESALTE DE COLOR *\/\n.om-main-title-sec h1 span.om-highlight {\n    color: #ff6b00; \/* Naranja Corporativo *\/\n    display: block; \n    margin-top: 5px;\n}\n\n\/* ANIMACI\u00d3N LIGERA *\/\n@keyframes omPopIn {\n    0% { opacity: 0; transform: scale(0.5); }\n    100% { opacity: 1; transform: scale(1); }\n}\n\n\/* AJUSTES PARA M\u00d3VILES PEQUE\u00d1OS *\/\n@media (max-width: 480px) {\n    .om-main-title-sec {\n        margin-top: 30px;\n        margin-bottom: 20px;\n    }\n}\n<\/style>\n\n<div class=\"om-main-title-sec\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n        <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"><\/rect>\n        <line x1=\"16\" y1=\"2\" x2=\"16\" y2=\"6\"><\/line>\n        <line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"6\"><\/line>\n        <line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\"><\/line>\n    <\/svg>\n    \n    <h1>\n        Planificador de itinerarios en\n        <span class=\"om-highlight\">San Pedro de Atacama<\/span>\n    <\/h1>\n<\/div>\n\n\n\n<div id=\"planner-tool\">\n  <div id=\"global-alert-container\" class=\"alert-wrapper\" style=\"display: none;\">\n    <div class=\"alert-box\">\n      <span>\u2139\ufe0f El itinerario se organiza considerando horarios, esfuerzo y altura para evitar errores comunes en Atacama.<\/span>\n    <\/div>\n  <\/div>\n\n  <section id=\"view-mode\" class=\"view active\">\n    <div class=\"centered-layout\">\n      <header class=\"tool-header\">\n        <h3>Dise\u00f1a tu itinerario para vivir San Pedro de Atacama<\/h3>\n        <p>Una herramienta gratuita para organizar tu viaje d\u00eda por d\u00eda, considerando horarios, altitud y nivel de esfuerzo. Hecha por gente que conoce el desierto.<\/p>\n        <h4>Elige c\u00f3mo quieres empezar<\/h4>\n      <\/header>\n\n      <div class=\"mode-selection-wrapper\">\n        <button class=\"mode-card\" onclick=\"showView('selection')\">\n          <strong>Ya s\u00e9 qu\u00e9 quiero ver<\/strong>\n          <p>Selecciona los tours que te interesan y los organizamos en un itinerario inteligente al instante.<\/p>\n          <span class=\"action-text\">\u2192 Elegir mis tours<\/span>\n        <\/button>\n\n        <div class=\"selection-divider\">\n          <span>o tambi\u00e9n<\/span>\n        <\/div>\n\n        <button class=\"mode-card\" onclick=\"startWizard()\">\n          <strong>No s\u00e9 por d\u00f3nde empezar<\/strong>\n          <p>Responde unas preguntas r\u00e1pidas y te sugerimos un itinerario hecho a tu medida, seg\u00fan tus d\u00edas, intereses y experiencia con la altitud.<\/p>\n          <span class=\"action-text\">\u2192 Ay\u00fadame a decidir<\/span>\n        <\/button>\n      <\/div>\n\n      <div class=\"alert-box secondary-alert\" style=\"margin-top: 32px; justify-content: center;\">\n        \u2139\ufe0f Podr\u00e1s modificar el itinerario antes de descargar el PDF profesional.\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <section id=\"view-wizard\" class=\"view\">\n    <div class=\"centered-layout\">\n      <header class=\"tool-header\">\n        <h3>Modo asistido<\/h3>\n      <\/header>\n      <div id=\"wizard-form\" class=\"mode-container wizard-gap\"><\/div>\n    <\/div>\n  <\/section>\n\n  <section id=\"view-selection\" class=\"view\">\n    <div class=\"selection-layout\">\n      <header class=\"tool-header\">\n        <h3>Configuraci\u00f3n del itinerario<\/h3>\n        <div id=\"status-bar\" class=\"status-bar\">Tours a\u00f1adidos: 0<\/div>\n      <\/header>\n\n      <div id=\"tour-grid\" class=\"tour-grid-2x4\"><\/div>\n\n      <div class=\"sticky-footer\">\n        <button class=\"btn-secondary\" onclick=\"resetApp()\">Reinicio<\/button>\n        <button id=\"btn-to-itinerary\" class=\"btn-primary\" disabled onclick=\"handleGenerate()\">Ver mi itinerario \u2192<\/button>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <section id=\"view-result\" class=\"view\">\n    <div class=\"result-wrapper\">\n      <header class=\"tool-header\">\n        <button class=\"btn-back\" onclick=\"showView('selection')\">\u2190 Ajustar selecci\u00f3n<\/button>\n        <h3 style=\"margin-top: 24px;\">Tu itinerario est\u00e1 listo<\/h3>\n        <p>Lo organizamos respetando tiempos, altitud y nivel de exigencia.\nPuedes ajustarlo cuantas veces necesites antes de descargarlo.<\/p>\n        <div id=\"expert-interpretation\" class=\"interpretation-box\"><\/div>\n      <\/header>\n\n      <div class=\"paper-clean\">\n        <div id=\"itinerary-content\"><\/div>\n      <\/div>\n\n      <div class=\"result-footer\" style=\"margin-top: 40px; padding-bottom: 60px; display: flex; gap: 16px; justify-content: center;\">\n        <button class=\"btn-secondary\" onclick=\"resetApp()\">Reiniciar planificador<\/button>\n        <button class=\"btn-primary\" onclick=\"openLeadForm()\">Descargar itinerario en PDF<\/button>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- POPUP LEAD FLUENT FORMS -->\n  <div id=\"lead-popup\" class=\"lead-popup\">\n    <div class=\"lead-popup-box\">\n\n      <button class=\"lead-popup-close\" onclick=\"closeLeadForm()\" aria-label=\"Cerrar formulario\">\n        \u00d7\n      <\/button>\n\n      <h3 class=\"lead-popup-title\">\n        Recibe tu itinerario\n      <\/h3>\n\n      <p class=\"lead-popup-text\">\n        Completa tus datos para descargar el PDF y recibir una copia en tu correo.\n      <\/p>\n\n      <div class='fluentform ff-default fluentform_wrapper_19 ffs_default_wrap'><form data-form_id=\"19\" id=\"fluentform_19\" class=\"frm-fluent-form fluent_form_19 ff-el-form-top ff_form_instance_19_1 ff-form-loading ffs_default\" data-form_instance=\"ff_form_instance_19_1\" method=\"POST\" ><fieldset  style=\"border: none!important;margin: 0!important;padding: 0!important;background-color: transparent!important;box-shadow: none!important;outline: none!important; min-inline-size: 100%;\">\n                    <legend class=\"ff_screen_reader_title\" style=\"display: block; margin: 0!important;padding: 0!important;height: 0!important;text-indent: -999999px;width: 0!important;overflow:hidden;\">Formulario de itinerario<\/legend><input type='hidden' name='__fluent_form_embded_post_id' value='10978' \/><input type=\"hidden\" id=\"_fluentform_19_fluentformnonce\" name=\"_fluentform_19_fluentformnonce\" value=\"6bc2279ecb\" \/><input type=\"hidden\" name=\"_wp_http_referer\" value=\"\/en\/wp-json\/wp\/v2\/pages\/10978\" \/><div data-type=\"name-element\" data-name=\"names\" class=\" ff-field_container ff-name-field-wrapper\" ><div class='ff-t-container'><div class='ff-t-cell '><div class='ff-el-group ff-el-form-top'><div class=\"ff-el-input--label asterisk-right\"><label for='ff_19_names_first_name_' id='label_ff_19_names_first_name_' >Nombre<\/label><\/div><div class='ff-el-input--content'><input type=\"text\" name=\"names[first_name]\" id=\"ff_19_names_first_name_\" class=\"ff-el-form-control\" placeholder=\"Introduce tu nombre\" aria-invalid=\"false\" aria-required=false><\/div><\/div><\/div><\/div><\/div><div class='ff-el-group'><div class=\"ff-el-input--label asterisk-right\"><label for='ff_19_email' id='label_ff_19_email' aria-label=\"Correo electr\u00f3nico\">Correo electr\u00f3nico<\/label><\/div><div class='ff-el-input--content'><input type=\"email\" name=\"email\" id=\"ff_19_email\" class=\"ff-el-form-control\" data-name=\"email\"  aria-invalid=\"false\" aria-required=false><\/div><\/div><div class='ff-el-group ff-text-left ff_submit_btn_wrapper'><button type=\"submit\" class=\"ff-btn ff-btn-submit ff-btn-md ff_btn_style\"  aria-label=\"Enviar\">Enviar<\/button><\/div><\/fieldset><\/form><div id='fluentform_19_errors' class='ff-errors-in-stack ff_form_instance_19_1 ff-form-loading_errors ff_form_instance_19_1_errors'><\/div><\/div>            <script type=\"text\/javascript\">\n                window.fluent_form_ff_form_instance_19_1 = {\"id\":\"19\",\"ajaxUrl\":\"https:\\\/\\\/www.atacama.tours\\\/wp-admin\\\/admin-ajax.php\",\"settings\":{\"layout\":{\"labelPlacement\":\"top\",\"asteriskPlacement\":\"asterisk-right\",\"helpMessagePlacement\":\"with_label\",\"errorMessagePlacement\":\"inline\",\"cssClassName\":\"\"},\"restrictions\":{\"denyEmptySubmission\":{\"enabled\":false}}},\"form_instance\":\"ff_form_instance_19_1\",\"form_id_selector\":\"fluentform_19\",\"rules\":{\"names[first_name]\":{\"required\":{\"value\":false,\"message\":\"This field is required\",\"global_message\":\"Este campo es obligatorio\",\"global\":true}},\"names[middle_name]\":{\"required\":{\"value\":false,\"message\":\"This field is required\",\"global_message\":\"Este campo es obligatorio\",\"global\":true}},\"names[last_name]\":{\"required\":{\"value\":false,\"message\":\"This field is required\",\"global_message\":\"Este campo es obligatorio\",\"global\":true}},\"email\":{\"required\":{\"value\":false,\"message\":\"This field is required\",\"global_message\":\"Este campo es obligatorio\",\"global\":true},\"email\":{\"value\":true,\"message\":\"This field must contain a valid email\",\"global_message\":\"Este campo debe contener un correo electr\\u00f3nico v\\u00e1lido\",\"global\":true}}},\"debounce_time\":300,\"file_upload_settings\":[]};\n                            <\/script>\n            \n\n    <\/div>\n  <\/div>\n<\/div>\n\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jspdf\/2.5.1\/jspdf.umd.min.js\"><\/script>\n\n<style>\n  :root {\n    --dark: #111827;\n    --gray-med: #6b7280;\n    --border: #E5E7EB;\n    --alert-bg: #FFF7CC;\n    --alert-border: #F2C94C;\n    --bg-main: #ffffff;\n  }\n\n  #planner-tool {\n    width: 100%;\n    margin: 0 auto;\n    font-family: 'Inter', sans-serif;\n    color: var(--dark);\n    background: white;\n  }\n\n  .centered-layout {\n    max-width: 760px;\n    margin: 40px auto;\n    text-align: center;\n  }\n\n  .selection-layout {\n    max-width: 1000px;\n    margin: 20px auto;\n  }\n\n  .view {\n    display: none;\n    padding: 24px;\n    animation: fadeIn 0.3s ease;\n    background: white;\n  }\n\n  .view.active {\n    display: block;\n  }\n\n  @keyframes fadeIn {\n    from {\n      opacity: 0;\n      transform: translateY(4px);\n    }\n\n    to {\n      opacity: 1;\n      transform: translateY(0);\n    }\n  }\n\n  .tool-header h3 {\n    font-size: 28px;\n    font-weight: 700;\n    margin-bottom: 24px;\n    letter-spacing: -1px;\n  }\n\n  .mode-selection-wrapper {\n    display: flex;\n    flex-direction: column;\n    gap: 0;\n  }\n\n  .selection-divider {\n    position: relative;\n    height: 60px;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n  }\n\n  .selection-divider::before {\n    content: \"\";\n    position: absolute;\n    width: 100%;\n    height: 1px;\n    background: var(--border);\n    z-index: 1;\n  }\n\n  .selection-divider span {\n    background: #fff;\n    padding: 0 20px;\n    color: var(--gray-med);\n    font-size: 14px;\n    z-index: 2;\n    font-weight: 500;\n  }\n\n  .alert-wrapper {\n    padding: 0 24px 20px 24px;\n    max-width: 1000px;\n    margin: 0 auto;\n  }\n\n  .alert-box {\n    background: var(--alert-bg) !important;\n    border-left: 4px solid var(--alert-border);\n    padding: 14px 20px;\n    font-size: 14px;\n    color: #111 !important;\n    text-align: left;\n  }\n\n  .interpretation-box {\n    margin-bottom: 24px;\n    display: flex;\n    flex-direction: column;\n    gap: 12px;\n  }\n\n  .tour-grid-2x4 {\n    display: grid;\n    grid-template-columns: repeat(2, 1fr);\n    gap: 16px;\n    margin-bottom: 120px;\n  }\n\n  .mode-card,\n  .tour-item {\n    background-color: #ffffff !important;\n    border: 1px solid var(--border) !important;\n    border-radius: 12px;\n    padding: 20px;\n    text-align: left;\n    cursor: pointer;\n    transition: all 0.2s ease;\n    width: 100%;\n    color: var(--dark) !important;\n    white-space: normal !important;\n  }\n\n  .mode-card:hover,\n  .tour-item:hover {\n    background-color: #F8FAFC !important;\n    border-color: var(--dark) !important;\n  }\n\n  .mode-card.selected,\n  .tour-item.selected {\n    background-color: var(--alert-bg) !important;\n    border-color: var(--alert-border) !important;\n    border-left: 6px solid var(--alert-border) !important;\n  }\n\n  .btn-primary {\n    background: var(--dark);\n    color: #fff;\n    border: none;\n    padding: 16px 32px;\n    font-weight: 700;\n    cursor: pointer;\n    border-radius: 8px;\n    font-size: 16px;\n  }\n\n  .btn-primary:disabled {\n    background: #ccc;\n    cursor: not-allowed;\n  }\n\n  .btn-secondary {\n    background: #fff;\n    border: 1px solid var(--dark);\n    padding: 16px 32px;\n    font-weight: 700;\n    cursor: pointer;\n    border-radius: 8px;\n    font-size: 16px;\n  }\n\n  .btn-availability {\n    background-color: var(--dark);\n    color: #ffffff !important;\n    text-decoration: none;\n    padding: 12px 24px;\n    border-radius: 6px;\n    font-size: 14px;\n    font-weight: 700;\n    display: inline-flex;\n    justify-content: center;\n    align-items: center;\n    margin-top: 12px;\n  }\n\n  .sticky-footer {\n    position: fixed;\n    bottom: 0;\n    left: 0;\n    width: 100%;\n    background: #fff;\n    border-top: 1px solid var(--border);\n    padding: 24px;\n    display: flex;\n    justify-content: center;\n    gap: 16px;\n    z-index: 100;\n    box-shadow: 0 -4px 15px rgba(0,0,0,0.05);\n  }\n\n  .result-wrapper {\n    max-width: 800px;\n    margin: 0 auto;\n    background: white;\n  }\n\n  .paper-clean {\n    background: #fff;\n    padding: 20px 0;\n    border-radius: 0;\n  }\n\n  .day-label {\n    font-size: 12px;\n    font-weight: 800;\n    color: var(--gray-med);\n    text-transform: uppercase;\n    border-bottom: 1px solid #eee;\n    padding-bottom: 8px;\n    margin-bottom: 24px;\n    display: block;\n  }\n\n  .btn-back {\n    background: none;\n    border: none;\n    color: var(--gray-med);\n    cursor: pointer;\n    font-weight: 600;\n    padding: 0;\n    margin-bottom: 10px;\n  }\n\n  @media (max-width: 768px) {\n    .tour-grid-2x4 {\n      grid-template-columns: 1fr;\n    }\n\n    .result-footer {\n      flex-direction: column;\n    }\n\n    .result-footer button {\n      width: 100%;\n    }\n  }\n\n  .timeline {\n    max-width: 700px;\n    margin: 40px auto;\n    font-family: Inter, sans-serif;\n  }\n\n  .timeline .day-label {\n    font-weight: 800;\n    color: #6b7280;\n    margin-bottom: 24px;\n    display: block;\n    text-transform: uppercase;\n    border-bottom: 1px solid #e5e7eb;\n    padding-bottom: 8px;\n  }\n\n  .timeline .event {\n    position: relative;\n    padding-left: 32px;\n    margin-bottom: 32px;\n  }\n\n  .timeline .event::before {\n    content: \"\";\n    position: absolute;\n    left: 6px;\n    top: 4px;\n    width: 12px;\n    height: 12px;\n    background: #111827;\n    border-radius: 50%;\n  }\n\n  .timeline .event::after {\n    content: \"\";\n    position: absolute;\n    left: 11px;\n    top: 18px;\n    width: 2px;\n    height: 100%;\n    background: #e5e7eb;\n  }\n\n  .timeline .event:last-child::after {\n    display: none;\n  }\n\n  .timeline .event h4 {\n    margin: 0;\n    font-size: 18px;\n    font-weight: 700;\n  }\n\n  .timeline .event p {\n    margin: 4px 0;\n    color: #6b7280;\n    font-size: 14px;\n  }\n\n  .timeline .event a {\n    font-size: 13px;\n    font-weight: 700;\n    color: #111827;\n    text-decoration: underline;\n  }\n\n  \/* POPUP LEAD *\/\n  .lead-popup {\n    display: none;\n    position: fixed;\n    inset: 0;\n    background: rgba(0,0,0,.65);\n    z-index: 99999;\n    justify-content: center;\n    align-items: center;\n    padding: 20px;\n    box-sizing: border-box;\n  }\n\n  .lead-popup-box {\n    background: #ffffff;\n    width: 100%;\n    max-width: 520px;\n    border-radius: 20px;\n    padding: 40px 30px;\n    position: relative;\n    box-shadow: 0 24px 70px rgba(0,0,0,.22);\n    box-sizing: border-box;\n  }\n\n  .lead-popup-close {\n    position: absolute;\n    top: 14px;\n    right: 18px;\n    border: none;\n    background: none;\n    font-size: 30px;\n    line-height: 1;\n    cursor: pointer;\n    color: #111827;\n  }\n\n  .lead-popup-title {\n    font-family: 'Poppins', sans-serif;\n    font-size: 30px;\n    font-weight: 800;\n    line-height: 1.2;\n    color: #111827;\n    margin: 0 0 10px;\n  }\n\n  .lead-popup-text {\n    font-family: 'Open Sans', sans-serif;\n    font-size: 16px;\n    line-height: 1.6;\n    color: #6b7280;\n    margin: 0 0 24px;\n  }\n\n  @media(max-width:768px) {\n    .lead-popup-box {\n      padding: 34px 24px;\n      border-radius: 18px;\n    }\n\n    .lead-popup-title {\n      font-size: 24px;\n    }\n\n    .lead-popup-text {\n      font-size: 15px;\n    }\n  }\n<\/style>\n\n<script>\n  const TOUR_URLS = {\n    \"The Roofless - Tour astron\u00f3mico\": \"https:\/\/www.atacama.tours\/astronomico\/\",\n    \"Valle de la Luna\": \"https:\/\/www.atacama.tours\/tour\/valle-de-la-luna\/\",\n    \"Geyser del Tatio\": \"https:\/\/www.atacama.tours\/tour\/geyser-del-tatio\/\",\n    \"Valle del Arco\u00edris\": \"https:\/\/www.atacama.tours\/tour\/valle-del-arcoiris\/\",\n    \"Laguna Cejar\": \"https:\/\/www.atacama.tours\/tour\/laguna-cejar\/\",\n    \"Vallecito\": \"https:\/\/www.atacama.tours\/tour\/tour-al-vallecito\/\",\n    \"Chaxa, Toconao y Jere\": \"https:\/\/www.atacama.tours\/tour\/tour-chaxa-toconao-y-jere\/\",\n  };\n\n  const TOURS = [\n    { id: \"at\", name: \"The Roofless - Tour astron\u00f3mico\", slot: \"09:00 PM - 11:30 PM\", alt: \"Baja\", type: \"LOW\", dawn: false },\n    { id: \"vl\", name: \"Valle de la Luna\", slot: \"03:30 PM - 07:30 PM\", alt: \"Baja\", type: \"LOW\", dawn: false },\n    { id: \"gt\", name: \"Geyser del Tatio\", slot: \"05:00 AM - 12:00 PM\", alt: \"Alta\", type: \"HIGH\", dawn: true },\n    { id: \"va\", name: \"Valle del Arco\u00edris\", slot: \"08:30 AM - 01:30 PM\", alt: \"Baja\", type: \"LOW\", dawn: false },\n    { id: \"lc\", name: \"Laguna Cejar\", slot: \"03:00 PM - 07:00 PM\", alt: \"Baja\", type: \"LOW\", dawn: false },\n    { id: \"vc\", name: \"Vallecito\", slot: \"AM \/ PM\", alt: \"Baja\", type: \"LOW\", dawn: false },\n    { id: \"ctj\", name: \"Chaxa, Toconao y Jere\", slot: \"AM\", alt: \"Media\", type: \"MID\", dawn: false }\n  ];\n\n  let selection = new Set();\n  let wizAns = {};\n  let wizStep = 1;\n  let pdfDownloadAfterLeadLock = false;\n\n  function initSelectionGrid() {\n    const grid = document.getElementById('tour-grid');\n    grid.innerHTML = '';\n\n    TOURS.forEach(t => {\n      const card = document.createElement('div');\n      card.className = `tour-item ${selection.has(t.id) ? 'selected' : ''}`;\n      card.onclick = () => toggleTour(t.id, card);\n      card.innerHTML = `\n        <div><h3>${t.name}<\/h3><p>${t.slot} \u00b7 Altitud ${t.alt}<\/p><\/div>\n        <button class=\"btn-primary\" style=\"width:100%; font-size:13px; padding:10px; margin-top:20px;\">\n          ${selection.has(t.id) ? '\u2713 SELECCIONADO' : 'A\u00d1ADIR AL PLAN'}\n        <\/button>\n      `;\n      grid.appendChild(card);\n    });\n\n    updateStats();\n  }\n\n  function toggleTour(id, el) {\n    selection.has(id) ? selection.delete(id) : selection.add(id);\n    initSelectionGrid();\n  }\n\n  function updateStats() {\n    document.getElementById('status-bar').innerText = `Tours a\u00f1adidos: ${selection.size}`;\n    document.getElementById('btn-to-itinerary').disabled = selection.size === 0;\n  }\n\n  function showView(id) {\n    document.querySelectorAll('.view').forEach(v => v.classList.remove('active'));\n    document.getElementById(`view-${id}`).classList.add('active');\n\n    const alert = document.getElementById('global-alert-container');\n    alert.style.display = (id === 'selection') ? 'block' : 'none';\n\n    if (id === 'selection') initSelectionGrid();\n\n    window.scrollTo(0, 0);\n  }\n\n  function startWizard() {\n    wizStep = 1;\n    renderWizard();\n    showView('wizard');\n  }\n\n  function renderWizard() {\n    const container = document.getElementById('wizard-form');\n    container.innerHTML = '';\n\n    const questions = [\n      { q: \"\u00bfCu\u00e1ntos d\u00edas tienes en Atacama?\", o: [\"1-2\", \"3-4\", \"5+\"], k: \"days\" },\n      { q: \"\u00bfEs tu primera vez en altura?\", o: [\"S\u00ed\", \"No\"], k: \"alt\" },\n      { q: \"\u00bfQu\u00e9 te interesa m\u00e1s?\", o: [\"Paisajes\", \"Relajaci\u00f3n\", \"Experiencias\", \"Astronom\u00eda\"], k: \"int\" },\n      { q: \"\u00bfQu\u00e9 ritmo prefieres?\", o: [\"Tranquilo\", \"Normal\", \"Intenso\"], k: \"pace\" }\n    ];\n\n    const curr = questions[wizStep - 1];\n\n    container.innerHTML = `<h3>${curr.q}<\/h3><p style=\"color:#888; margin-bottom:12px;\">Pregunta ${wizStep} de 4<\/p>`;\n\n    curr.o.forEach(opt => {\n      const btn = document.createElement('button');\n      btn.className = 'mode-card';\n      btn.style.marginBottom = \"16px\";\n      btn.innerHTML = `<strong>${opt}<\/strong>`;\n\n      btn.onclick = () => {\n        wizAns[curr.k] = opt;\n\n        if (wizStep < 4) {\n          wizStep++;\n          renderWizard();\n        } else {\n          applyWizard();\n        }\n      };\n\n      container.appendChild(btn);\n    });\n  }\n\n  function applyWizard() {\n    selection.clear();\n    selection.add('vl');\n\n    if (wizAns.alt === 'No') selection.add('gt');\n    if (wizAns.int === 'Astronom\u00eda') selection.add('at');\n    if (wizAns.days !== '1-2') selection.add('lc');\n\n    showView('selection');\n  }\n\n  function handleGenerate() {\n    const content = document.getElementById('itinerary-content');\n    const expertBox = document.getElementById('expert-interpretation');\n\n    content.innerHTML = '';\n    expertBox.innerHTML = '';\n\n    const list = TOURS\n      .filter(t => selection.has(t.id))\n      .sort((a, b) => (a.type === 'HIGH' ? 1 : -1));\n\n    const rules = [\n      { cond: list.length === 1, msg: \"\u2139\ufe0f Itinerario de actividad \u00fanica: ideal para una escala corta o jornada de descanso activa.\" },\n      { cond: list.every(t => t.type === 'LOW'), msg: \"\u2705 Perfil de aclimataci\u00f3n: Este plan es excelente para sus primeras 48h en Atacama al evitar alturas extremas.\" },\n      { cond: list.some(t => t.type === 'HIGH') && list.some(t => t.type === 'LOW'), msg: \"\u26a0\ufe0f Combinaci\u00f3n mixta: Se ha priorizado el orden l\u00f3gico. Realice siempre los tours de baja altura antes que los Altipl\u00e1nicos.\" },\n      { cond: list.some(t => t.name === \"Piedras Rojas\") || list.some(t => t.name === \"Ruta de los salares\"), msg: \"\ud83c\udfd4\ufe0f Jornada Altipl\u00e1nica: Estos tours superan los 4.000m. Hidr\u00e1tese el doble de lo habitual el d\u00eda previo.\" },\n      { cond: list.some(t => t.dawn), msg: \"\u2744\ufe0f Alerta T\u00e9rmica: El amanecer en los Geysers o Salares implica temperaturas bajo cero. Use el sistema de vestimenta por capas.\" },\n      { cond: list.some(t => t.name === \"Laguna Cejar\") || list.some(t => t.name === \"Termas de Puritama\"), msg: \"\ud83d\udca7 Hidro-Recuperaci\u00f3n: El agua en Atacama agota minerales. Use protector solar biodegradable incluso en el agua.\" },\n      { cond: list.length > 4, msg: \"\ud83c\udfc3 Ritmo Exigente: Su itinerario est\u00e1 saturado. Asegure al menos 7 horas de sue\u00f1o para evitar el mal de monta\u00f1a por fatiga.\" },\n      { cond: list.some(t => t.name === \"The Roofless - Tour astron\u00f3mico\"), msg: \"\ud83c\udf0c Observaci\u00f3n Nocturna: La noche en el desierto es muy fr\u00eda. No conf\u00ede en el clima diurno; abr\u00edguese intensamente para esta actividad.\" },\n      { cond: list.some(t => t.name === \"Valle de la Luna\"), msg: \"\ud83c\udfdc\ufe0f Exposici\u00f3n Solar: La radiaci\u00f3n en el Valle es extrema. Use sombrero de ala ancha y reaplique bloqueador cada 2 horas.\" },\n      { cond: true, msg: \"\ud83d\udd52 Puntualidad: Los pick-ups pueden variar 30min. Est\u00e9 listo en el lobby desde la hora marcada para no retrasar la ruta.\" }\n    ];\n\n    rules.forEach(r => {\n      if (r.cond) expertBox.innerHTML += `<div class=\"alert-box\">${r.msg}<\/div>`;\n    });\n\n    let days = [];\n\n    for (let i = 0; i < list.length; i += 2) {\n      days.push(list.slice(i, i + 2));\n    }\n\n    days.forEach((dTours, idx) => {\n      const timeline = document.createElement('div');\n      timeline.className = 'timeline';\n\n      timeline.innerHTML = `<span class=\"day-label\">D\u00cdA ${idx + 1}<\/span>`;\n\n      dTours.forEach(t => {\n        const url = TOUR_URLS[t.name] || \"#\";\n\n        timeline.innerHTML += `\n          <div class=\"event\">\n            <h4>${t.name}<\/h4>\n            <p>${t.slot} \u00b7 Altitud ${t.alt}<\/p>\n            <a href=\"${url}\" target=\"_blank\">Ver disponibilidad<\/a>\n          <\/div>\n        `;\n      });\n\n      content.appendChild(timeline);\n    });\n\n    showView('result');\n  }\n\n  function resetApp() {\n    selection.clear();\n    wizAns = {};\n    showView('mode');\n  }\n\n  function openLeadForm() {\n    const popup = document.getElementById('lead-popup');\n\n    if (popup) {\n      popup.style.display = 'flex';\n    }\n  }\n\n  function closeLeadForm() {\n    const popup = document.getElementById('lead-popup');\n\n    if (popup) {\n      popup.style.display = 'none';\n    }\n  }\n\n  function downloadPDFAfterLeadSubmission() {\n    if (pdfDownloadAfterLeadLock) {\n      return;\n    }\n\n    pdfDownloadAfterLeadLock = true;\n\n    closeLeadForm();\n\n    setTimeout(function () {\n      generatePDF();\n\n      setTimeout(function () {\n        pdfDownloadAfterLeadLock = false;\n      }, 1500);\n\n    }, 600);\n  }\n\n  function bindFluentFormDownloadEvent() {\n    if (!window.jQuery) {\n      setTimeout(bindFluentFormDownloadEvent, 300);\n      return;\n    }\n\n    const $ = window.jQuery;\n\n    $(document).off('fluentform_submission_success.atacamaPdfDownload');\n\n    $(document).on('fluentform_submission_success.atacamaPdfDownload', function (event, response) {\n      const target = event && event.target ? event.target : null;\n      const $target = target ? $(target) : $();\n\n      const responseFormId = response ? (response.form_id || response.formId || response.id) : null;\n      const detailFormId = event && event.detail ? (event.detail.formId || event.detail.form_id || event.detail.id) : null;\n\n      const isForm19 =\n        String(responseFormId) === '19' ||\n        String(detailFormId) === '19' ||\n        $target.closest('#lead-popup').length > 0 ||\n        $target.closest('form').attr('data-form_id') === '19' ||\n        $target.closest('form').attr('id') === 'fluentform_19' ||\n        $target.closest('.fluent_form_19').length > 0;\n\n      if (isForm19) {\n        downloadPDFAfterLeadSubmission();\n      }\n    });\n\n    $(document).ajaxComplete(function (event, xhr, settings) {\n      const popup = document.getElementById('lead-popup');\n\n      if (!popup || popup.style.display !== 'flex') {\n        return;\n      }\n\n      let responseText = '';\n\n      try {\n        responseText = xhr.responseText || '';\n      } catch (e) {\n        responseText = '';\n      }\n\n      if (!responseText) {\n        return;\n      }\n\n      const looksLikeFluentSuccess =\n        responseText.indexOf('\"success\":true') !== -1 ||\n        responseText.indexOf('\"success\": true') !== -1 ||\n        responseText.indexOf('fluentform') !== -1 ||\n        responseText.indexOf('fluent_form') !== -1;\n\n      const hasForm19 =\n        responseText.indexOf('\"form_id\":19') !== -1 ||\n        responseText.indexOf('\"form_id\":\"19\"') !== -1 ||\n        responseText.indexOf('\"formId\":19') !== -1 ||\n        responseText.indexOf('\"formId\":\"19\"') !== -1 ||\n        popup.innerHTML.indexOf('fluentform_19') !== -1 ||\n        popup.innerHTML.indexOf('fluent_form_19') !== -1;\n\n      if (looksLikeFluentSuccess && hasForm19) {\n        downloadPDFAfterLeadSubmission();\n      }\n    });\n  }\n\n  bindFluentFormDownloadEvent();\n\n  document.addEventListener('fluentform_submission_success', function (event) {\n    const detail = event && event.detail ? event.detail : {};\n    const formId = detail.formId || detail.form_id || detail.id;\n\n    if (String(formId) === '19') {\n      downloadPDFAfterLeadSubmission();\n    }\n  });\n\n  function getImageDataUrl(url, callback) {\n    const img = new Image();\n    img.crossOrigin = \"anonymous\";\n\n    img.onload = function () {\n      const canvas = document.createElement(\"canvas\");\n      canvas.width = img.naturalWidth;\n      canvas.height = img.naturalHeight;\n\n      const ctx = canvas.getContext(\"2d\");\n      ctx.drawImage(img, 0, 0);\n\n      try {\n        callback(canvas.toDataURL(\"image\/png\"));\n      } catch (e) {\n        callback(null);\n      }\n    };\n\n    img.onerror = function () {\n      callback(null);\n    };\n\n    img.src = url;\n  }\n\n  function generatePDF() {\n    if (!window.jspdf || !window.jspdf.jsPDF) {\n      alert(\"No se pudo cargar el generador de PDF. Por favor intenta nuevamente.\");\n      return;\n    }\n\n    getImageDataUrl(\"https:\/\/www.atacama.tours\/wp-content\/uploads\/2022\/08\/logo_1-1.png\", function (logoData) {\n      const { jsPDF } = window.jspdf;\n      const doc = new jsPDF();\n\n      const pageW = doc.internal.pageSize.getWidth();\n      const pageH = doc.internal.pageSize.getHeight();\n\n      const colors = {\n        navy: [18, 55, 76],\n        navyDark: [8, 31, 43],\n        orange: [255, 107, 0],\n        orangeSoft: [255, 135, 55],\n        text: [17, 24, 39],\n        muted: [107, 114, 128],\n        border: [229, 231, 235],\n        soft: [248, 250, 252],\n        softBlue: [239, 246, 249],\n        white: [255, 255, 255],\n        logoShadow: [214, 221, 226]\n      };\n\n      let y = 20;\n\n      function drawHeader() {\n        doc.setFillColor(colors.navy[0], colors.navy[1], colors.navy[2]);\n        doc.rect(0, 0, pageW, 44, \"F\");\n\n        doc.setFillColor(colors.navyDark[0], colors.navyDark[1], colors.navyDark[2]);\n        doc.triangle(pageW - 46, 0, pageW, 0, pageW, 44, \"F\");\n\n        doc.setFillColor(colors.orange[0], colors.orange[1], colors.orange[2]);\n        doc.roundedRect(18, 38.5, pageW - 36, 2.2, 1, 1, \"F\");\n\n        doc.setFillColor(colors.logoShadow[0], colors.logoShadow[1], colors.logoShadow[2]);\n        doc.roundedRect(18.8, 8.8, 50, 22, 4, 4, \"F\");\n\n        doc.setFillColor(255, 255, 255);\n        doc.roundedRect(18, 8, 50, 22, 4, 4, \"F\");\n\n        if (logoData) {\n          doc.addImage(logoData, \"PNG\", 21.5, 12, 39, 13);\n        }\n\n        doc.setFillColor(colors.orange[0], colors.orange[1], colors.orange[2]);\n        doc.roundedRect(73, 12, 2.4, 15, 1, 1, \"F\");\n\n        doc.setFont(\"helvetica\", \"bold\");\n        doc.setFontSize(17);\n        doc.setTextColor(colors.white[0], colors.white[1], colors.white[2]);\n        doc.text(\"Itinerario de Tours en Atacama\", 81, 17);\n\n        doc.setFont(\"helvetica\", \"normal\");\n        doc.setFontSize(10);\n        doc.setTextColor(230, 236, 240);\n        doc.text(\"by atacama.tours\", 81, 25);\n      }\n\n      function drawFooter() {\n        doc.setDrawColor(colors.border[0], colors.border[1], colors.border[2]);\n        doc.setLineWidth(0.3);\n        doc.line(18, pageH - 16, pageW - 18, pageH - 16);\n\n        doc.setFont(\"helvetica\", \"normal\");\n        doc.setFontSize(8.5);\n        doc.setTextColor(colors.muted[0], colors.muted[1], colors.muted[2]);\n        doc.text(\"Atacama Tours \u00b7 San Pedro de Atacama\", 18, pageH - 10);\n\n        doc.text(\n          \"P\u00e1gina \" + doc.internal.getNumberOfPages(),\n          pageW - 34,\n          pageH - 10\n        );\n      }\n\n      function checkPageBreak(space) {\n        if (y + space > pageH - 28) {\n          drawFooter();\n          doc.addPage();\n          drawHeader();\n          y = 58;\n        }\n      }\n\n      function roundedCard(x, cardY, w, h, fillColor, borderColor) {\n        doc.setFillColor(fillColor[0], fillColor[1], fillColor[2]);\n        doc.setDrawColor(borderColor[0], borderColor[1], borderColor[2]);\n        doc.roundedRect(x, cardY, w, h, 5, 5, \"FD\");\n      }\n\n      drawHeader();\n\n      y = 60;\n\n      doc.setFont(\"helvetica\", \"bold\");\n      doc.setFontSize(15);\n      doc.setTextColor(colors.text[0], colors.text[1], colors.text[2]);\n      doc.text(\"Itinerario personalizado\", 18, y);\n\n      y += 8;\n\n      doc.setFont(\"helvetica\", \"normal\");\n      doc.setFontSize(9.5);\n      doc.setTextColor(colors.muted[0], colors.muted[1], colors.muted[2]);\n\n      const introLines = doc.splitTextToSize(\n        \"Organizado respetando tiempos, altitud y nivel de exigencia.\",\n        pageW - 36\n      );\n\n      doc.text(introLines, 18, y);\n\n      y += introLines.length * 5 + 10;\n\n      const list = TOURS\n        .filter(t => selection.has(t.id))\n        .sort((a, b) => (a.type === 'HIGH' ? 1 : -1));\n\n      let dNum = 1;\n\n      for (let i = 0; i < list.length; i += 2) {\n        const dayTours = list.slice(i, i + 2);\n        const cardHeight = 19 + (dayTours.length * 26) + 7;\n\n        checkPageBreak(cardHeight + 10);\n\n        roundedCard(18, y, pageW - 36, cardHeight, colors.soft, colors.border);\n\n        doc.setFillColor(colors.orange[0], colors.orange[1], colors.orange[2]);\n        doc.roundedRect(18, y, 4, cardHeight, 4, 4, \"F\");\n\n        doc.setFillColor(colors.softBlue[0], colors.softBlue[1], colors.softBlue[2]);\n        doc.roundedRect(26, y + 6, 24, 9, 3, 3, \"F\");\n\n        doc.setFont(\"helvetica\", \"bold\");\n        doc.setFontSize(9);\n        doc.setTextColor(colors.navy[0], colors.navy[1], colors.navy[2]);\n        doc.text(`D\u00cdA ${dNum++}`, 31, y + 12.2);\n\n        let tourY = y + 27;\n\n        dayTours.forEach(t => {\n          const url = TOUR_URLS[t.name] || \"\";\n\n          doc.setDrawColor(colors.border[0], colors.border[1], colors.border[2]);\n          doc.line(26, tourY - 8, pageW - 26, tourY - 8);\n\n          doc.setFont(\"helvetica\", \"bold\");\n          doc.setFontSize(12);\n          doc.setTextColor(colors.text[0], colors.text[1], colors.text[2]);\n          doc.text(t.name, 26, tourY);\n\n          doc.setFont(\"helvetica\", \"normal\");\n          doc.setFontSize(9.5);\n          doc.setTextColor(colors.muted[0], colors.muted[1], colors.muted[2]);\n          doc.text(`${t.slot} \u00b7 Altitud ${t.alt}`, 26, tourY + 6);\n\n          doc.setFillColor(colors.navy[0], colors.navy[1], colors.navy[2]);\n          doc.roundedRect(pageW - 66, tourY - 6.5, 40, 10, 2, 2, \"F\");\n\n          doc.setFont(\"helvetica\", \"bold\");\n          doc.setFontSize(8);\n          doc.setTextColor(colors.white[0], colors.white[1], colors.white[2]);\n          doc.textWithLink(\"Ver disponibilidad\", pageW - 62, tourY, { url: url });\n\n          tourY += 26;\n        });\n\n        y += cardHeight + 10;\n      }\n\n      y += 12;\n\n      checkPageBreak(30);\n\n      const btnWidth = 124;\n      const btnHeight = 14;\n      const btnX = (pageW - btnWidth) \/ 2;\n      const btnY = y;\n\n      doc.setFillColor(colors.navy[0], colors.navy[1], colors.navy[2]);\n      doc.roundedRect(btnX, btnY, btnWidth, btnHeight, 4, 4, 'F');\n\n      doc.setDrawColor(colors.orange[0], colors.orange[1], colors.orange[2]);\n      doc.setLineWidth(0.7);\n      doc.roundedRect(btnX, btnY, btnWidth, btnHeight, 4, 4, 'S');\n\n      doc.setFontSize(11);\n      doc.setFont(\"helvetica\", \"bold\");\n      doc.setTextColor(colors.white[0], colors.white[1], colors.white[2]);\n\n      const waText = \"Revisar mi itinerario por WhatsApp\";\n      const textWidth = doc.getTextWidth(waText);\n      const textX = btnX + (btnWidth - textWidth) \/ 2;\n      const textY = btnY + 9;\n\n      doc.textWithLink(\n        waText,\n        textX,\n        textY,\n        {\n          url: \"https:\/\/api.whatsapp.com\/send?phone=56977834208\"\n        }\n      );\n\n      y += 24;\n\n      drawFooter();\n\n      doc.save(\"itinerario-atacama.pdf\");\n    });\n  }\n<\/script>\n\n\n\n<style>\n\/* 1. CONTENEDOR FAQ (100% NATIVO Y RESPONSIVO) *\/\n#planner-faqs * {\n    box-sizing: border-box !important;\n}\n\n#planner-faqs {\n    width: 100% !important;\n    max-width: 850px;\n    margin: 60px auto;\n    padding: 0 15px;\n    font-family: 'Open Sans', sans-serif;\n    color: #12374c;\n    overflow-x: hidden;\n}\n\n\/* 2. T\u00cdTULO ESTANDARIZADO H2 *\/\n#planner-faqs h2 {\n    font-family: 'Poppins', sans-serif !important;\n    text-align: center;\n    color: #12374c;\n    font-weight: 800;\n    line-height: 1.2;\n    margin-bottom: 40px;\n    letter-spacing: -0.5px;\n    font-size: clamp(26px, 4vw, 40px) !important;\n    width: 100%;\n}\n\n\/* 3. ACORDE\u00d3N Y TARJETAS *\/\n.faq-accordion {\n    width: 100%;\n    display: flex;\n    flex-direction: column;\n    gap: 12px;\n}\n\n.faq-item {\n    width: 100%;\n    border: 1px solid #e5e7eb;\n    background-color: #ffffff;\n    border-radius: 12px;\n    overflow: hidden;\n    transition: all 0.3s ease;\n}\n\n\/* Estado Activo *\/\n.faq-item.active {\n    border-color: #FF8700;\n    box-shadow: 0 8px 20px rgba(255, 135, 0, 0.15);\n}\n\n.faq-question {\n    width: 100%;\n    background: transparent;\n    border: none;\n    padding: 20px 15px !important;\n    text-align: left;\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    cursor: pointer;\n    font-family: 'Poppins', sans-serif !important;\n    font-size: 16px;\n    font-weight: 700;\n    color: #111827;\n    transition: all 0.3s ease;\n    outline: none;\n    white-space: normal !important;\n}\n\n.faq-question span {\n    flex: 1 1 auto;\n    min-width: 0;\n    display: block;\n    white-space: normal !important;\n    word-wrap: break-word;\n    overflow-wrap: break-word;\n    line-height: 1.4;\n    padding-right: 15px;\n}\n\n\/* INTERACCI\u00d3N *\/\n.faq-question:hover,\n.faq-item.active .faq-question {\n    background-color: #FF8700 !important;\n    color: #ffffff !important;\n}\n\n\/* ICONO *\/\n.faq-question svg {\n    width: 20px;\n    height: 20px;\n    stroke: #12374c;\n    flex-shrink: 0;\n    transition: transform 0.4s ease, stroke 0.3s ease;\n}\n\n.faq-question:hover svg,\n.faq-item.active svg {\n    stroke: #ffffff !important;\n}\n\n.faq-item.active svg {\n    transform: rotate(180deg);\n}\n\n\/* RESPUESTAS *\/\n.faq-answer {\n    display: none;\n    width: 100%;\n    padding: 20px 15px !important;\n    font-family: 'Open Sans', sans-serif !important;\n    font-weight: 400 !important;\n    font-size: 16px !important;\n    line-height: 1.6;\n    color: #4b5563;\n    background-color: #ffffff;\n    word-wrap: break-word;\n    overflow-wrap: break-word;\n}\n\n.faq-item.active .faq-answer {\n    display: block;\n    animation: omFade 0.3s ease-out;\n}\n\n@keyframes omFade {\n    from { opacity: 0; transform: translateY(-5px); }\n    to { opacity: 1; transform: translateY(0); }\n}\n\n\/* CTA FINAL *\/\n.om-final-cta {\n    text-align: center;\n    margin-top: 60px;\n}\n\n.om-final-cta h2 {\n    margin-bottom: 18px !important;\n}\n\n.om-final-cta p {\n    font-family: 'Open Sans', sans-serif;\n    font-size: 16px;\n    line-height: 1.7;\n    color: #12374c;\n    max-width: 650px;\n    margin: 0 auto 30px auto;\n}\n\n.om-final-btn {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    gap: 10px;\n\n    background: #12374c;\n    color: #ffffff !important;\n\n    padding: 18px 34px;\n\n    border-radius: 14px;\n\n    font-family: 'Poppins', sans-serif;\n    font-size: 15px;\n    font-weight: 700;\n    text-transform: uppercase;\n\n    transition: all 0.3s ease;\n\n    box-shadow: 0 12px 28px rgba(5,48,153,0.18);\n}\n\n.om-final-btn:hover {\n    transform: translateY(-3px);\n    background: #12374c;\n    box-shadow: 0 18px 36px rgba(5,48,153,0.24);\n}\n\n@media (max-width: 480px) {\n\n    #planner-faqs {\n        padding: 0 10px;\n    }\n\n    .om-final-btn {\n        width: 100%;\n        padding: 17px 20px;\n        font-size: 14px;\n    }\n}\n<\/style>\n\n<section id=\"planner-faqs\">\n\n  <h2>Preguntas frecuentes sobre tu itinerario en Atacama<\/h2>\n\n  <div class=\"faq-accordion\">\n\n    <!-- 1 -->\n    <div class=\"faq-item\">\n      <button class=\"faq-question\">\n          <span>\u00bfCu\u00e1ntos d\u00edas necesito para conocer San Pedro de Atacama?<\/span>\n\n          <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n              <polyline points=\"6 9 12 15 18 9\"><\/polyline>\n          <\/svg>\n      <\/button>\n\n      <div class=\"faq-answer\">\n        Lo m\u00ednimo recomendable son 4 d\u00edas, que te permiten hacer tres tours con un d\u00eda de aclimataci\u00f3n. Lo ideal son 5 a 6 d\u00edas si quieres conocer los principales atractivos sin prisa. El planificador te ayuda a distribuirlos seg\u00fan tu tiempo.\n      <\/div>\n    <\/div>\n\n    <!-- 2 -->\n    <div class=\"faq-item\">\n      <button class=\"faq-question\">\n          <span>\u00bfC\u00f3mo organiza los tours este planificador?<\/span>\n\n          <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n              <polyline points=\"6 9 12 15 18 9\"><\/polyline>\n          <\/svg>\n      <\/button>\n\n      <div class=\"faq-answer\">\n        La herramienta considera tres factores: altitud (para favorecer aclimataci\u00f3n progresiva y evitar el mal de puna), horarios (evitando combinaciones imposibles como madrugadas con jornadas intensas) y nivel de exigencia f\u00edsica (para que no termines agotado a mitad de viaje).\n      <\/div>\n    <\/div>\n\n    <!-- 3 -->\n    <div class=\"faq-item\">\n      <button class=\"faq-question\">\n          <span>\u00bfPor qu\u00e9 la altitud importa tanto en San Pedro?<\/span>\n\n          <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n              <polyline points=\"6 9 12 15 18 9\"><\/polyline>\n          <\/svg>\n      <\/button>\n\n      <div class=\"faq-answer\">\n        San Pedro est\u00e1 a 2.400 msnm, pero algunos tours suben a m\u00e1s de 4.000 msnm (Geyser del Tatio: 4.320 msnm). Sin aclimataci\u00f3n previa, esto puede provocar mal de puna. El planificador ordena tus d\u00edas para que subas en altura gradualmente.\n      <\/div>\n    <\/div>\n\n    <!-- 4 -->\n    <div class=\"faq-item\">\n      <button class=\"faq-question\">\n          <span>\u00bfPuedo modificar el itinerario despu\u00e9s de generarlo?<\/span>\n\n          <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n              <polyline points=\"6 9 12 15 18 9\"><\/polyline>\n          <\/svg>\n      <\/button>\n\n      <div class=\"faq-answer\">\n        S\u00ed. Puedes ajustar tu selecci\u00f3n de tours y regenerar el plan todas las veces que necesites antes de descargar el PDF. La herramienta es flexible y se adapta a tus preferencias.\n      <\/div>\n    <\/div>\n\n    <!-- 5 -->\n    <div class=\"faq-item\">\n      <button class=\"faq-question\">\n          <span>\u00bfSe pueden combinar varios tours en un mismo d\u00eda?<\/span>\n\n          <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n              <polyline points=\"6 9 12 15 18 9\"><\/polyline>\n          <\/svg>\n      <\/button>\n\n      <div class=\"faq-answer\">\n        No siempre, el sistema eval\u00faa horarios, duraci\u00f3n y tiempos de recuperaci\u00f3n para proponer combinaciones viables y evitar jornadas excesivas o dif\u00edciles de sostener.\n      <\/div>\n    <\/div>\n\n    <!-- 6 -->\n    <div class=\"faq-item\">\n      <button class=\"faq-question\">\n          <span>\u00bfQu\u00e9 incluye el PDF que descargo?<\/span>\n\n          <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n              <polyline points=\"6 9 12 15 18 9\"><\/polyline>\n          <\/svg>\n      <\/button>\n\n      <div class=\"faq-answer\">\n        Un itinerario profesional organizado por d\u00edas, con horarios, informaci\u00f3n de cada tour, niveles de altitud y recomendaciones clave para tu viaje. Dise\u00f1ado para que llegues con todo ordenado y sin sorpresas.\n      <\/div>\n    <\/div>\n\n    <!-- 7 -->\n    <div class=\"faq-item\">\n      <button class=\"faq-question\">\n          <span>\u00bfCrear el itinerario implica una reserva?<\/span>\n\n          <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n              <polyline points=\"6 9 12 15 18 9\"><\/polyline>\n          <\/svg>\n      <\/button>\n\n      <div class=\"faq-answer\">\n        No. El itinerario es una herramienta de planificaci\u00f3n previa que te permite organizar tu viaje y revisar la disponibilidad de cada tour antes de tomar una decisi\u00f3n.\n      <\/div>\n    <\/div>\n\n  <\/div>\n\n  <!-- CTA FINAL -->\n  <div class=\"om-final-cta\">\n\n      <h2>\u00bfListo para vivir tu itinerario?<\/h2>\n\n      <p>\n          Una vez tengas tu plan armado, escr\u00edbenos. Coordinamos fechas,\n          horarios y resolvemos cualquier duda antes de que viajes.\n      <\/p>\n\n      <a href=\"https:\/\/api.whatsapp.com\/send\/?phone=56977834208\" target=\"_blank\" rel=\"noopener nofollow\" class=\"om-final-btn\">\n          Hablar con un asesor por WhatsApp \u2192\n      <\/a>\n\n  <\/div>\n\n<\/section>\n\n<script>\ndocument.querySelectorAll('.faq-question').forEach(btn => {\n  btn.addEventListener('click', () => {\n    const item = btn.parentElement;\n    item.classList.toggle('active');\n  });\n});\n<\/script>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Planificador de itinerarios en San Pedro de Atacama \u2139\ufe0f El itinerario se organiza considerando horarios, esfuerzo y altura para evitar errores comunes en Atacama. Dise\u00f1a tu itinerario para vivir San Pedro de Atacama Una herramienta gratuita para organizar tu viaje d\u00eda por d\u00eda, considerando horarios, altitud y nivel de esfuerzo. Hecha por gente que conoce [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":11040,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"postBodyCss":"","postBodyMargin":[],"postBodyPadding":[],"postBodyBackground":{"backgroundType":"classic","gradient":""},"footnotes":""},"class_list":["post-10978","page","type-page","status-publish","has-post-thumbnail","hentry"],"_links":{"self":[{"href":"https:\/\/www.atacama.tours\/en\/wp-json\/wp\/v2\/pages\/10978","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.atacama.tours\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.atacama.tours\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.atacama.tours\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.atacama.tours\/en\/wp-json\/wp\/v2\/comments?post=10978"}],"version-history":[{"count":9,"href":"https:\/\/www.atacama.tours\/en\/wp-json\/wp\/v2\/pages\/10978\/revisions"}],"predecessor-version":[{"id":14005,"href":"https:\/\/www.atacama.tours\/en\/wp-json\/wp\/v2\/pages\/10978\/revisions\/14005"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.atacama.tours\/en\/wp-json\/wp\/v2\/media\/11040"}],"wp:attachment":[{"href":"https:\/\/www.atacama.tours\/en\/wp-json\/wp\/v2\/media?parent=10978"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}