{"id":43585,"date":"2025-10-07T11:45:06","date_gmt":"2025-10-07T09:45:06","guid":{"rendered":"https:\/\/staging.europe-hotels.org\/jet-popup\/mobile-en\/"},"modified":"2026-05-13T16:28:17","modified_gmt":"2026-05-13T14:28:17","slug":"mobile-en","status":"publish","type":"jet-popup","link":"https:\/\/www.europe-hotels.org\/en\/jet-popup\/mobile-en\/","title":{"rendered":"Mobile EN"},"content":{"rendered":"\t\t<div data-elementor-type=\"jet-popup\" data-elementor-id=\"43585\" class=\"elementor elementor-43585\" data-elementor-post-type=\"jet-popup\">\n\t\t\t\t<div class=\"elementor-element elementor-element-623d2d9 e-con-full elementor-hidden-desktop elementor-hidden-laptop e-flex e-con e-parent\" data-id=\"623d2d9\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\" data-no-translation=\"\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0e5fc2d elementor-widget elementor-widget-image\" data-id=\"0e5fc2d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"400\" height=\"87\" src=\"https:\/\/www.europe-hotels.org\/wp-content\/uploads\/2019\/09\/LOGO_EUROPE_CORPORATE.png\" class=\"attachment-large size-large wp-image-2690\" alt=\"\" srcset=\"https:\/\/www.europe-hotels.org\/wp-content\/uploads\/2019\/09\/LOGO_EUROPE_CORPORATE.png 400w, https:\/\/www.europe-hotels.org\/wp-content\/uploads\/2019\/09\/LOGO_EUROPE_CORPORATE-300x65.png 300w\" sizes=\"(max-width: 400px) 100vw, 400px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5dd1786 elementor-widget elementor-widget-html\" data-id=\"5dd1786\" data-element_type=\"widget\" data-e-type=\"widget\" data-no-translation=\"\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\n    \/* ====== EUROPE HOTELS \u2013 MOBILE\/TABLET ====== *\/\n    #beWidgetENRes,\n    #beWidgetENRes * {\n      box-sizing: border-box;\n      font-family: inherit;\n    }\n\n    \/* Reset seguro para botones\/inputs dentro del widget *\/\n    #beWidgetENRes button,\n    #beWidgetENRes input,\n    #beWidgetENRes select {\n      font: inherit;\n    }\n\n    #beWidgetENRes button {\n      -webkit-appearance: none;\n      appearance: none;\n    }\n\n    #beWidgetENRes {\n      --brand: #001D7E;\n      --brand-600: #2b3b6a;\n      --text: #3a3a3a;\n      --border: #e6e6e7;\n      --muted: #f5f6f8;\n      --ring: #eaf0ff;\n      --shadow: 0 10px 35px rgba(0, 0, 0, .12);\n      font-size: 16px;\n      line-height: 1.4;\n      color: var(--text);\n    }\n\n    \/* ===== SVG: fuerzo color aunque traigan fill\/stroke inline ===== *\/\n    #beWidgetENRes svg {\n      display: block;\n      color: var(--brand);\n    }\n\n    \/* Todo hijo que tenga fill\/stroke inline lo forzamos a currentColor *\/\n    #beWidgetENRes svg *,\n    #beWidgetENRes svg [fill],\n    #beWidgetENRes svg [stroke] {\n      fill: currentColor !important;\n      stroke: currentColor !important;\n    }\n\n    \/* ===== Barra ===== *\/\n    #beWidgetENRes .be-floating-bar {\n      display: grid !important;\n      grid-template-columns: 1fr;\n      row-gap: 12px;\n      background: #fff;\n      border-radius: 14px;\n      padding: 12px;\n      width: 100%;\n      box-shadow: var(--shadow);\n    }\n\n    #beWidgetENRes .be-seg {\n      display: flex !important;\n      align-items: center;\n      gap: .6rem;\n      background: #fff;\n      border: 1px solid #fff;\n      border-radius: 12px;\n      padding: 10px 12px;\n      cursor: pointer;\n      min-height: 52px;\n    }\n\n    \/* Tama\u00f1o unificado de iconos en la barra *\/\n    #beWidgetENRes .be-seg svg {\n      width: 22px;\n      height: 22px;\n      flex: 0 0 22px;\n      overflow: visible;\n    }\n\n    #beWidgetENRes .be-value {\n      font-weight: 500;\n      color: var(--brand);\n      line-height: 1.15;\n    }\n\n    #beWidgetENRes .be-cta {\n      background: var(--brand);\n      color: #fff;\n      border: none;\n      border-radius: 12px;\n      font-weight: 700;\n      padding: 1rem;\n      cursor: pointer;\n      width: 100%;\n    }\n\n    #beWidgetENRes .be-cta:hover {\n      filter: brightness(.96);\n    }\n\n    #beWidgetENRes .be-promo {\n      width: 100%;\n      border: none;\n      outline: none;\n      font-weight: 600;\n      color: var(--brand);\n      background: transparent;\n    }\n\n    \/* ===== Backdrop \/ Modales ===== *\/\n    #beWidgetENRes .be-modal-backdrop {\n      position: fixed;\n      inset: 0;\n      background: rgba(22, 22, 22, .52);\n      opacity: 0;\n      visibility: hidden;\n      z-index: 99998;\n      pointer-events: none;\n    }\n\n    #beWidgetENRes .be-modal-backdrop.open {\n      opacity: 1;\n      visibility: visible;\n      pointer-events: auto;\n    }\n\n    #beWidgetENRes .be-modal {\n      position: fixed;\n      left: 50%;\n      top: 50%;\n      transform: translate(-50%, -50%);\n      background: #fff;\n      border-radius: 14px;\n      box-shadow: 0 30px 80px rgba(0, 0, 0, .22);\n      width: min(640px, 96vw);\n      max-height: 90vh;\n      color: var(--text);\n      opacity: 0;\n      visibility: hidden;\n      z-index: 99999;\n      overflow: hidden;\n    }\n\n    #beWidgetENRes .be-modal.open {\n      opacity: 1;\n      visibility: visible;\n    }\n\n    #beWidgetENRes .be-body {\n      padding: 18px 20px;\n      max-height: calc(90vh - 64px);\n      overflow: auto;\n    }\n\n    #beWidgetENRes .be-ft {\n      padding: 16px 20px;\n      display: flex;\n      justify-content: flex-end;\n      gap: 10px;\n    }\n\n    #beWidgetENRes .be-btn {\n      border: 1px solid var(--border);\n      background: #fff;\n      border-radius: 10px;\n      padding: .65rem 1rem;\n      cursor: pointer;\n    }\n\n    #beWidgetENRes .be-btn-primary {\n      background: var(--brand);\n      color: #fff;\n      border-color: var(--brand);\n    }\n\n    \/* Tama\u00f1os modales *\/\n    #beWidgetENRes #beModalHotelENRes {\n      width: min(420px, 94vw);\n    }\n\n    #beWidgetENRes #beModalFechasENRes {\n      width: min(540px, 96vw);\n    }\n\n    #beWidgetENRes #beModalPaxENRes {\n      width: min(560px, 94vw);\n    }\n\n    \/* ===== Calendario ===== *\/\n    #beWidgetENRes .cal-wrap {\n      display: grid;\n      grid-template-columns: 1fr !important;\n      gap: 12px;\n    }\n\n    #beWidgetENRes .cal-nav {\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n      margin-bottom: 14px;\n    }\n\n    #beWidgetENRes .cal-arrow {\n      width: 36px;\n      height: 36px;\n      display: inline-flex;\n      align-items: center;\n      justify-content: center;\n      border: 1px solid #fff;\n      border-radius: 100px;\n      background: #fff;\n      cursor: pointer;\n    }\n\n    #beWidgetENRes .cal-arrow:hover {\n      background: var(--border);\n    }\n\n    #beWidgetENRes .cal-month {\n      border-radius: 12px;\n      padding: 12px;\n    }\n\n    #beWidgetENRes .cal-title {\n      font-weight: 800;\n      color: var(--brand);\n      text-align: center;\n      margin: 6px 0 10px;\n    }\n\n    #beWidgetENRes .cal-grid {\n      display: grid;\n      grid-template-columns: repeat(7, 1fr);\n      gap: 6px;\n    }\n\n    #beWidgetENRes .cal-dow {\n      font-size: .8rem;\n      text-align: center;\n      color: #7a7f86;\n      padding: 6px 0;\n    }\n\n    #beWidgetENRes .cal-day {\n      text-align: center;\n      padding: 10px;\n      border: 1px solid white;\n      border-radius: 5px;\n      cursor: pointer;\n      background: #fff;\n    }\n\n    #beWidgetENRes .cal-day:hover {\n      background: var(--brand);\n      color: #fff;\n    }\n\n    #beWidgetENRes .cal-day.muted {\n      color: #b9bfc8;\n      background: #fafafa;\n      cursor: default;\n    }\n\n    #beWidgetENRes .cal-day.disabled {\n      opacity: .45;\n      cursor: not-allowed;\n    }\n\n    #beWidgetENRes .cal-day.start,\n    #beWidgetENRes .cal-day.end {\n      background: var(--brand);\n      color: #fff;\n      border-color: var(--brand);\n      font-weight: 800;\n    }\n\n    #beWidgetENRes .cal-day.in-range {\n      background: var(--ring);\n      border-color: #dfe7ff;\n    }\n\n    \/* ===== Ocupaci\u00f3n ===== *\/\n    #beWidgetENRes .occ-room {\n      border-radius: 12px;\n      margin: 14px 0;\n      overflow: hidden;\n    }\n\n    #beWidgetENRes .occ-head {\n      display: flex;\n      align-items: center;\n      gap: 10px;\n      width: 100%;\n      background: #fff;\n      padding: 16px 14px;\n      border: none;\n    }\n\n    #beWidgetENRes .occ-head svg {\n      width: 22px;\n      height: 22px;\n      flex: 0 0 22px;\n    }\n\n    #beWidgetENRes .occ-title {\n      font-weight: 700;\n      color: var(--brand);\n      font-size: 1.05rem;\n      text-align: left;\n    }\n\n    #beWidgetENRes .occ-body {\n      padding: 18px 16px;\n      background: #fff;\n    }\n\n    #beWidgetENRes .occ-row {\n      display: grid;\n      grid-template-columns: 1fr auto;\n      align-items: center;\n      padding: 14px 0;\n      gap: 12px;\n    }\n\n    #beWidgetENRes .occ-label {\n      font-weight: 800;\n      color: var(--brand);\n      letter-spacing: .5px;\n      text-transform: uppercase;\n    }\n\n    \/* Stepper *\/\n    #beWidgetENRes .stepper {\n      display: inline-grid;\n      grid-template-columns: 36px 56px 36px;\n      align-items: center;\n      border: 1px solid var(--brand);\n      border-radius: 8px;\n      overflow: hidden;\n    }\n\n    #beWidgetENRes .st-btn {\n      all: unset;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      width: 36px;\n      height: 40px;\n      background: var(--brand);\n      color: #fff;\n      font-weight: 700;\n      cursor: pointer;\n    }\n\n    #beWidgetENRes .st-value {\n      all: unset;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      width: 56px;\n      height: 40px;\n      background: #fff;\n      color: #333;\n      font-weight: 700;\n      border-left: 1px solid #e2e2e6;\n      border-right: 1px solid #e2e2e6;\n      font-variant-numeric: tabular-nums;\n    }\n\n    #beWidgetENRes .st-btn:disabled {\n      opacity: .45;\n      cursor: not-allowed;\n    }\n\n    \/* Pill edad (matching desktop) *\/\n    #beWidgetENRes .age-pill {\n      display: inline-flex;\n      align-items: center;\n      justify-content: center;\n      gap: 8px;\n      border: 2px solid var(--brand);\n      color: var(--brand);\n      border-radius: 999px;\n      padding: 10px 16px;\n      min-width: 132px;\n      font-weight: 600;\n      background: #fff;\n    }\n\n    #beWidgetENRes .age-select {\n      appearance: none;\n      border: none;\n      background: transparent;\n      color: inherit;\n      font: inherit;\n      cursor: pointer;\n      outline: none;\n      padding: 0;\n      line-height: 1;\n      min-width: 60px;\n      text-align: center;\n    }\n\n    \/* Eliminar *\/\n    #beWidgetENRes .occ-del {\n      display: inline-flex;\n      align-items: center;\n      gap: 8px;\n      color: var(--brand);\n      cursor: pointer;\n      margin-top: 6px;\n    }\n\n    #beWidgetENRes .occ-del:hover {\n      color: #6d7179;\n    }\n\n    \/* Add room *\/\n    #beWidgetENRes #beAddRoomENRes {\n      width: 100%;\n      background: #fff !important;\n      border: 2px solid #cfd6e5 !important;\n      color: var(--brand) !important;\n      font-weight: 700;\n      padding: 14px 16px !important;\n      border-radius: 12px !important;\n    }\n\n    #beWidgetENRes #beAddRoomENRes:hover {\n      background: #f7fbff !important;\n      border-color: #b9c6ea !important;\n    }\n\n    #beWidgetENRes #beAddRoomENRes:disabled {\n      opacity: .5;\n      cursor: not-allowed;\n    }\n\n    \/* ===== Lista de hoteles ===== *\/\n    #beWidgetENRes .be-list {\n      max-height: 380px;\n      overflow: auto;\n      padding: 4px 6px;\n    }\n\n    #beWidgetENRes .be-group {\n      padding: 10px 8px 6px;\n      font-size: 1rem;\n      font-weight: 800;\n      color: var(--brand);\n      letter-spacing: .3px;\n    }\n\n    #beWidgetENRes .be-item {\n      display: flex;\n      align-items: center;\n      gap: .6rem;\n      padding: 10px 10px;\n      border-radius: 10px;\n      cursor: pointer;\n      color: #1b2a6d;\n    }\n\n    #beWidgetENRes .be-item:hover {\n      background: #f7faff;\n    }\n\n    \/* Iconos alineados y tama\u00f1o consistente en lista *\/\n    #beWidgetENRes .be-item svg {\n      width: 20px;\n      height: 20px;\n      flex: 0 0 20px;\n      color: var(--brand);\n    }\n\n    \/* Elementor\/JetPopup wrapper *\/\n    .elementor-popup-modal .elementor-container,\n    .jet-popup .elementor-container {\n      min-height: 100vh !important;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      padding: 20px;\n      padding-bottom: max(20px, env(safe-area-inset-bottom));\n      overflow: visible !important;\n    }\n\n    \/* Breakpoints *\/\n    @media (max-width:480px) {\n      #beWidgetENRes {\n        font-size: 15px;\n      }\n\n      #beWidgetENRes #beModalPaxENRes {\n        width: 94vw;\n      }\n\n      #beWidgetENRes .occ-row {\n        grid-template-columns: 1fr;\n        gap: 10px;\n        padding: 10px 0;\n      }\n\n      #beWidgetENRes .stepper {\n        justify-self: start;\n      }\n    }\n\n    @media (max-width:768px) {\n      #beWidgetENRes #beModalPaxENRes {\n        width: 96vw;\n      }\n\n      #beWidgetENRes .be-body {\n        max-height: calc(92vh - 64px);\n      }\n    }\n  <\/style>\n\n  <div id=\"beWidgetENRes\">\n    <div id=\"beBarENRes\" class=\"be-floating-bar\" data-endpoint=\"https:\/\/booking.europe-hotels.org\/BookingEngine\/Landing\"\n      data-portal=\"1501\" data-language=\"2\">\n\n      <!-- Hotel -->\n      <button class=\"be-seg\" id=\"segHotelENRes\" type=\"button\" aria-haspopup=\"dialog\">\n        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"15.75\" height=\"20.945\" viewBox=\"0 0 15.75 20.945\">\n          <path\n            d=\"M11.156-10.5A3.28,3.28,0,0,1,7.875-7.219,3.28,3.28,0,0,1,4.594-10.5a3.28,3.28,0,0,1,3.281-3.281A3.28,3.28,0,0,1,11.156-10.5ZM7.875-8.531A1.969,1.969,0,0,0,9.844-10.5a1.969,1.969,0,0,0-1.969-1.969A1.969,1.969,0,0,0,5.906-10.5,1.969,1.969,0,0,0,7.875-8.531ZM15.75-10.5c0,3.585-4.8,9.967-6.9,12.6A1.239,1.239,0,0,1,6.9,2.1C4.762-.533,0-6.915,0-10.5a7.875,7.875,0,0,1,7.875-7.875A7.876,7.876,0,0,1,15.75-10.5ZM7.875-17.062A6.561,6.561,0,0,0,1.312-10.5a7.2,7.2,0,0,0,.679,2.6A25.408,25.408,0,0,0,3.779-4.532a61.342,61.342,0,0,0,4.1,5.746,61.622,61.622,0,0,0,4.1-5.746A25.513,25.513,0,0,0,13.757-7.9a7.148,7.148,0,0,0,.681-2.6A6.561,6.561,0,0,0,7.875-17.062Z\"\n            transform=\"translate(0 18.375)\" \/>\n        <\/svg>\n        <div class=\"be-mono\"><span id=\"beHotelLabelENRes\" class=\"be-value\">Europe Hotels<\/span><\/div>\n      <\/button>\n\n      <!-- Fechas -->\n      <button class=\"be-seg\" id=\"segFechasENRes\" type=\"button\" aria-haspopup=\"dialog\">\n        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"22\" height=\"22\" viewBox=\"0 0 32 32\" aria-hidden=\"true\">\n          <path\n            d=\"M29.333 8c0-2.208-1.792-4-4-4h-18.667c-2.208 0-4 1.792-4 4v18.667c0 2.208 1.792 4 4 4h18.667c2.208 0 4-1.792 4-4v-18.667zM26.667 8v18.667c0 0.736-0.597 1.333-1.333 1.333 0 0-18.667 0-18.667 0-0.736 0-1.333-0.597-1.333-1.333 0 0 0-18.667 0-18.667 0-0.736 0.597-1.333 1.333-1.333 0 0 18.667 0 18.667 0 0.736 0 1.333 0.597 1.333 1.333z\" \/>\n          <path\n            d=\"M20 2.667v5.333c0 0.736 0.597 1.333 1.333 1.333s1.333-0.597 1.333-1.333v-5.333c0-0.736-0.597-1.333-1.333-1.333s-1.333 0.597-1.333 1.333z\" \/>\n          <path\n            d=\"M9.333 2.667v5.333c0 0.736 0.597 1.333 1.333 1.333s1.333-0.597 1.333-1.333v-5.333c0-0.736-0.597-1.333-1.333-1.333s-1.333 0.597-1.333 1.333z\" \/>\n          <path\n            d=\"M4 14.667h24c0.736 0 1.333-0.597 1.333-1.333s-0.597-1.333-1.333-1.333h-24c-0.736 0-1.333 0.597-1.333 1.333s0.597 1.333 1.333 1.333z\" \/>\n        <\/svg>\n        <div class=\"be-mono\"><span id=\"beDatesLabelENRes\" class=\"be-value\">Select dates<\/span><\/div>\n      <\/button>\n\n      <!-- Ocupaci\u00f3n -->\n      <button class=\"be-seg\" id=\"segPaxENRes\" type=\"button\" aria-haspopup=\"dialog\">\n        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n          <path d=\"M12 12c2.67 0 8 1.34 8 4v3H4v-3c0-2.66 5.33-4 8-4zm0-2a4 4 0 1 0 0-8 4 4 0 0 0 0 8z\" \/>\n        <\/svg>\n        <div class=\"be-mono\"><span id=\"bePaxLabelENRes\" class=\"be-value\">2 Adults<\/span><\/div>\n      <\/button>\n\n      <!-- Promo -->\n      <div class=\"be-seg input promo\">\n        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"25.015\" height=\"25\" viewBox=\"0 0 25.015 25\">\n          <g id=\"icon-promo-group\" data-name=\"Grupo 545\" transform=\"translate(-31 -2393.627)\">\n            <path id=\"icon-promo-1\" data-name=\"icon-promo-1\"\n              d=\"M-58.362-346a2.828,2.828,0,0,1-2.019-.831l-7.9-7.9a2.832,2.832,0,0,1,0-4.038l10.57-10.57A6.3,6.3,0,0,1-53.73-371h6.77a2.89,2.89,0,0,1,2.85,2.85v6.77a6.3,6.3,0,0,1-1.663,3.979l-10.57,10.57a2.828,2.828,0,0,1-2.019.831Zm4.632-23.219a4.673,4.673,0,0,0-2.732,1.128l-10.57,10.57a1.039,1.039,0,0,0,0,1.485l7.9,7.9a1.039,1.039,0,0,0,1.485,0l10.57-10.57a4.52,4.52,0,0,0,1.128-2.732v-6.77a1.064,1.064,0,0,0-1.069-1.069h-6.71Z\"\n              transform=\"translate(100.125 2764.627)\"><\/path>\n            <path id=\"icon-promo-2\" data-name=\"icon-promo-2\"\n              d=\"M-41.574-358.248a3.332,3.332,0,0,1-3.326-3.326,3.332,3.332,0,0,1,3.326-3.326,3.332,3.332,0,0,1,3.326,3.326,3.332,3.332,0,0,1-3.326,3.326Zm0-5.073a1.756,1.756,0,0,0-1.748,1.747,1.756,1.756,0,0,0,1.748,1.748,1.756,1.756,0,0,0,1.748-1.748,1.756,1.756,0,0,0-1.748-1.747Z\"\n              transform=\"translate(89.647 2763.144)\"><\/path>\n          <\/g>\n        <\/svg>\n        <div class=\"be-mono\" style=\"width:100%\">\n          <input id=\"bePromoENRes\" type=\"text\" class=\"be-promo\" placeholder=\"Promo code\">\n        <\/div>\n      <\/div>\n\n      <button id=\"beReservarENRes\" class=\"be-cta\" type=\"button\">BOOK NOW<\/button>\n    <\/div>\n\n    <!-- Backdrop + Modales -->\n    <div id=\"beBackdropENRes\" class=\"be-modal-backdrop\"><\/div>\n\n    <!-- Hoteles -->\n    <div id=\"beModalHotelENRes\" class=\"be-modal\" role=\"dialog\" aria-modal=\"true\">\n      <div class=\"be-body\">\n        <div class=\"be-list\" id=\"beHotelListENRes\">\n          <div class=\"be-group\">TENERIFE | SPAIN<\/div>\n          <div class=\"be-item\" data-id=\"76\">\n            <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 20.244 18\">\n              <path\n                d=\"M20.06-7.172a.536.536,0,0,1,.018.795.5.5,0,0,1-.763.018L18-7.52V-.562A2.812,2.812,0,0,1,15.188,2.25H5.063A2.812,2.812,0,0,1,2.25-.562V-7.52L.935-6.36a.537.537,0,0,1-.794-.018.561.561,0,0,1,.05-.795l9.562-8.437a.564.564,0,0,1,.745,0Zm-15,8.3h2.25V-4.5A1.124,1.124,0,0,1,8.438-5.625h3.375A1.124,1.124,0,0,1,12.938-4.5V1.125h2.25A1.688,1.688,0,0,0,16.875-.562V-8.483l-6.75-5.954L3.375-8.483V-.562A1.688,1.688,0,0,0,5.063,1.125Zm3.375,0h3.375V-4.5H8.438Z\"\n                transform=\"translate(0 15.75)\" \/>\n            <\/svg>\n            <span>Villa Cort\u00e9s*****<\/span>\n          <\/div>\n          <div class=\"be-item\" data-id=\"75\">\n            <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 20.244 18\">\n              <path\n                d=\"M20.06-7.172a.536.536,0,0,1,.018.795.5.5,0,0,1-.763.018L18-7.52V-.562A2.812,2.812,0,0,1,15.188,2.25H5.063A2.812,2.812,0,0,1,2.25-.562V-7.52L.935-6.36a.537.537,0,0,1-.794-.018.561.561,0,0,1,.05-.795l9.562-8.437a.564.564,0,0,1,.745,0Zm-15,8.3h2.25V-4.5A1.124,1.124,0,0,1,8.438-5.625h3.375A1.124,1.124,0,0,1,12.938-4.5V1.125h2.25A1.688,1.688,0,0,0,16.875-.562V-8.483l-6.75-5.954L3.375-8.483V-.562A1.688,1.688,0,0,0,5.063,1.125Zm3.375,0h3.375V-4.5H8.438Z\"\n                transform=\"translate(0 15.75)\" \/>\n            <\/svg>\n            <span>Park Club Europe***<\/span>\n          <\/div>\n          <div class=\"be-item\" data-id=\"481\">\n            <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 20.244 18\">\n              <path\n                d=\"M20.06-7.172a.536.536,0,0,1,.018.795.5.5,0,0,1-.763.018L18-7.52V-.562A2.812,2.812,0,0,1,15.188,2.25H5.063A2.812,2.812,0,0,1,2.25-.562V-7.52L.935-6.36a.537.537,0,0,1-.794-.018.561.561,0,0,1,.05-.795l9.562-8.437a.564.564,0,0,1,.745,0Zm-15,8.3h2.25V-4.5A1.124,1.124,0,0,1,8.438-5.625h3.375A1.124,1.124,0,0,1,12.938-4.5V1.125h2.25A1.688,1.688,0,0,0,16.875-.562V-8.483l-6.75-5.954L3.375-8.483V-.562A1.688,1.688,0,0,0,5.063,1.125Zm3.375,0h3.375V-4.5H8.438Z\"\n                transform=\"translate(0 15.75)\" \/>\n            <\/svg>\n            <span>Apartamentos Arcade<\/span>\n          <\/div>\n\n          <div class=\"be-group\">MALLORCA | SPAIN<\/div>\n          <div class=\"be-item\" data-id=\"74\">\n            <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 20.244 18\">\n              <path\n                d=\"M20.06-7.172a.536.536,0,0,1,.018.795.5.5,0,0,1-.763.018L18-7.52V-.562A2.812,2.812,0,0,1,15.188,2.25H5.063A2.812,2.812,0,0,1,2.25-.562V-7.52L.935-6.36a.537.537,0,0,1-.794-.018.561.561,0,0,1,.05-.795l9.562-8.437a.564.564,0,0,1,.745,0Zm-15,8.3h2.25V-4.5A1.124,1.124,0,0,1,8.438-5.625h3.375A1.124,1.124,0,0,1,12.938-4.5V1.125h2.25A1.688,1.688,0,0,0,16.875-.562V-8.483l-6.75-5.954L3.375-8.483V-.562A1.688,1.688,0,0,0,5.063,1.125Zm3.375,0h3.375V-4.5H8.438Z\"\n                transform=\"translate(0 15.75)\" \/>\n            <\/svg>\n            <span>Playa Marina****<\/span>\n          <\/div>\n\n          <div class=\"be-group\">LISBON | PORTUGAL<\/div>\n          <div class=\"be-item\" data-id=\"452\">\n            <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 20.244 18\">\n              <path\n                d=\"M20.06-7.172a.536.536,0,0,1,.018.795.5.5,0,0,1-.763.018L18-7.52V-.562A2.812,2.812,0,0,1,15.188,2.25H5.063A2.812,2.812,0,0,1,2.25-.562V-7.52L.935-6.36a.537.537,0,0,1-.794-.018.561.561,0,0,1,.05-.795l9.562-8.437a.564.564,0,0,1,.745,0Zm-15,8.3h2.25V-4.5A1.124,1.124,0,0,1,8.438-5.625h3.375A1.124,1.124,0,0,1,12.938-4.5V1.125h2.25A1.688,1.688,0,0,0,16.875-.562V-8.483l-6.75-5.954L3.375-8.483V-.562A1.688,1.688,0,0,0,5.063,1.125Zm3.375,0h3.375V-4.5H8.438Z\"\n                transform=\"translate(0 15.75)\" \/>\n            <\/svg>\n            <span>Europe Lisboa Boutique Hotel<\/span>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <!-- Fechas -->\n    <div id=\"beModalFechasENRes\" class=\"be-modal\" role=\"dialog\" aria-modal=\"true\">\n      <div class=\"be-body\">\n        <div class=\"cal-nav\">\n          <button id=\"calPrevENRes\" class=\"cal-arrow\" type=\"button\" aria-label=\"Mes anterior\">\u2039<\/button>\n          <button id=\"calNextENRes\" class=\"cal-arrow\" type=\"button\" aria-label=\"Mes siguiente\">\u203a<\/button>\n        <\/div>\n        <div id=\"calWrapENRes\" class=\"cal-wrap\"><\/div>\n        <input id=\"beCheckinENRes\" type=\"hidden\" \/>\n        <input id=\"beCheckoutENRes\" type=\"hidden\" \/>\n      <\/div>\n      <div class=\"be-ft\">\n        <button id=\"calClearENRes\" class=\"be-btn\" type=\"button\">Reset<\/button>\n        <button class=\"be-btn be-btn-primary\" data-close=\"beModalFechasENRes\" type=\"button\">OK<\/button>\n      <\/div>\n    <\/div>\n\n    <!-- Ocupaci\u00f3n -->\n    <div id=\"beModalPaxENRes\" class=\"be-modal\" role=\"dialog\" aria-modal=\"true\">\n      <div class=\"be-body\" id=\"beRoomsWrapENRes\"><\/div>\n      <div class=\"be-ft\">\n        <button id=\"beAddRoomENRes\" class=\"be-btn\" type=\"button\">+ Add room<\/button>\n        <button class=\"be-btn be-btn-primary\" data-close=\"beModalPaxENRes\" type=\"button\">OK<\/button>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <script>\n    (function () {\n      document.addEventListener('DOMContentLoaded', function () {\n        const root = document.getElementById('beWidgetENRes'); if (!root) return;\n        const $ = (sel, ctx = root) => ctx.querySelector(sel);\n        const $$ = (sel, ctx = root) => Array.from(ctx.querySelectorAll(sel));\n\n        const bar = $('#beBarENRes');\n        const endpoint = bar?.dataset.endpoint || '';\n        const portal = bar?.dataset.portal || '1501';\n        const language = bar?.dataset.language || '2';\n\n        const labels = {\n          hotel: $('#beHotelLabelENRes'),\n          dates: $('#beDatesLabelENRes'),\n          pax: $('#bePaxLabelENRes')\n        };\n\n        \/* === MODALES === *\/\n        const backdrop = $('#beBackdropENRes');\n        const modals = $$('.be-modal');\n        const anyOpen = () => modals.some(m => m.classList.contains('open'));\n        const openModal = id => { backdrop.classList.add('open'); $('#' + id)?.classList.add('open'); };\n        const closeModal = id => { $('#' + id)?.classList.remove('open'); if (!anyOpen()) backdrop.classList.remove('open'); };\n\n        $('#segHotelENRes')?.addEventListener('click', () => openModal('beModalHotelENRes'));\n        $('#segFechasENRes')?.addEventListener('click', () => { centerOnCheckin(); openModal('beModalFechasENRes'); renderCalendar(); });\n        $('#segPaxENRes')?.addEventListener('click', () => openModal('beModalPaxENRes'));\n\n        backdrop.addEventListener('click', () => {\n          ['beModalHotelENRes', 'beModalFechasENRes', 'beModalPaxENRes'].forEach(id => $('#' + id)?.classList.remove('open'));\n          backdrop.classList.remove('open');\n        });\n        $$('[data-close]').forEach(b => b.addEventListener('click', e => closeModal(e.currentTarget.getAttribute('data-close'))));\n\n        \/* === HOTELES === *\/\n        let selectedHotel = '';\n        \/* ===== Autoselecci\u00f3n de hotel por URL (robusto) ===== *\/\n        const HOTEL_MAP = [\n          { id: \"76\", label: \"Villa Cort\u00e9s*****\", patterns: [\"\/villa-cortes\", \"\/hoteles\/villa-cortes\"] },\n          { id: \"74\", label: \"Playa Marina****\", patterns: [\"\/playa-marina\", \"\/hoteles\/playa-marina\"] },\n          { id: \"75\", label: \"Park Club Europe***\", patterns: [\"\/park-club\", \"\/hoteles\/park-club\"] },\n          { id: \"452\", label: \"Europe Lisboa Boutique Hotel\", patterns: [\"\/europe-lisboa-boutique-hotel\"] },\n          { id: \"481\", label: \"Apartamentos Arcade\", patterns: [\"\/apartamentos\"] },\n        ];\n\n        function autoSelectHotelFromURL() {\n          try {\n            const path = (location.pathname || \"\").toLowerCase();\n\n            \/\/ Coincidencia flexible: exacto, empieza por patr\u00f3n o contiene patr\u00f3n seguido de \"\/\"\n            const match = HOTEL_MAP.find(h =>\n              h.patterns.some(p =>\n                path === p || path.startsWith(p + \"\/\") || path.includes(p + \"\/\")\n              )\n            );\n\n            if (!match) return; \/\/ no estamos en p\u00e1gina de hotel\n\n            \/\/ Asigna hotel\n            selectedHotel = match.id;\n\n            \/\/ Actualiza etiqueta si existe\n            if (labels && labels.hotel) labels.hotel.textContent = match.label;\n\n            \/\/ Solo adultos (ajusta si cambia la pol\u00edtica)\n            if (typeof setOnlyAdultsMode === \"function\") {\n              setOnlyAdultsMode(selectedHotel === \"74\");\n            }\n          } catch (err) {\n            console.error(\"AutoSelectHotel error:\", err);\n          }\n        }\n\n        \/\/ Ejecuta al cargar\n        autoSelectHotelFromURL();\n        $('#beHotelListENRes')?.addEventListener('click', e => {\n          const item = e.target.closest('.be-item'); if (!item) return;\n          selectedHotel = item.dataset.id || '';\n          if (labels.hotel) labels.hotel.textContent = item.textContent.trim();\n          closeModal('beModalHotelENRes');\n        });\n\n        \/* === FECHAS === *\/\n        const toISO = (y, m, d) => new Date(Date.UTC(y, m, d)).toISOString().slice(0, 10);\n        const fromISO = (iso) => { const [y, m, d] = iso.split('-').map(Number); return new Date(Date.UTC(y, m - 1, d)); };\n        const todayISO = () => { const n = new Date(); return toISO(n.getUTCFullYear(), n.getUTCMonth(), n.getUTCDate()); };\n        const addDaysISO = (iso, n) => { const d = fromISO(iso); d.setUTCDate(d.getUTCDate() + n); return toISO(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate()); };\n        const toDDMMYYYY = (iso) => { const [y, m, d] = iso.split('-'); return `${d}-${m}-${y}`; };\n        const monthLabelEN = (y, m) =>\n          ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december'][m] + ' ' + y;\n        const dowEN = ['mo', 'tu', 'we', 'th', 'fr', 'sa', 'su'];\n\n        \/* === Reglas de calendario por hotel (versi\u00f3n responsive) ===\n   452 (Europe Lisboa Boutique Hotel): inactivo desde 2025-11-01 en adelante\n   74 (Playa Marina): cerrado del 19-10-2025 al 13-05-2026 (ambos inclusive)\n*\/\n        const CAL_RULES = {\n          '452': { \/\/ Europe Lisboa Boutique Hotel \n                minBookable: '2026-07-10',\n            maxBookable: '2027-04-30' \/\/ \u00faltimo d\u00eda permitido\n          },\n          '74': {  \/\/ Playa Marina\n            blackout: [\n              { start: '2025-10-19', end: '2026-05-13' }\n            ]\n          }\n        };\n        \/\/ === Comparadores de fechas ISO (YYYY-MM-DD) ===\n        function cmpISO(a, b) { return fromISO(a) - fromISO(b); }\n        function ltISO(a, b) { return cmpISO(a, b) < 0; }\n        function lteISO(a, b) { return cmpISO(a, b) <= 0; }\n        function gtISO(a, b) { return cmpISO(a, b) > 0; }\n        function gteISO(a, b) { return cmpISO(a, b) >= 0; }\n        function inRangeISO(x, a, b) { return (gteISO(x, a) && lteISO(x, b)); }\n\n        \/\/ === Decide si una fecha debe estar deshabilitada ===\nfunction shouldDisableDate(iso) {\n  \/\/ 1) Nunca permitir fechas pasadas\n  if (ltISO(iso, todayISO())) return true;\n\n  const rules = CAL_RULES[selectedHotel];\n  if (!rules) return false;\n\n  \/\/ 2) minBookable: si existe, bloquea todo lo anterior\n  if (rules.minBookable && ltISO(iso, rules.minBookable)) return true;\n\n  \/\/ 3) maxBookable: si existe, bloquea todo lo posterior\n  if (rules.maxBookable && gtISO(iso, rules.maxBookable)) return true;\n\n  \/\/ 4) rangos de blackout\n  if (Array.isArray(rules.blackout)) {\n    for (const r of rules.blackout) {\n      if (inRangeISO(iso, r.start, r.end)) return true;\n    }\n  }\n\n  return false;\n}\n        const ciInput = $('#beCheckinENRes');\n        const coInput = $('#beCheckoutENRes');\n        if (ciInput && coInput) { ciInput.value = todayISO(); coInput.value = addDaysISO(ciInput.value, 1); }\n        function updateDatesLabel() {\n          if (!labels.dates || !ciInput || !coInput) return;\n          if (ciInput.value && coInput.value) labels.dates.textContent = `${ciInput.value.split('-').reverse().join('\/')} - ${coInput.value.split('-').reverse().join('\/')}`;\n          else if (ciInput.value) labels.dates.textContent = `${ciInput.value.split('-').reverse().join('\/')} - \u2014`;\n          else labels.dates.textContent = 'Select dates';\n        }\n\n        let baseYear, baseMonth;\n        function centerOnCheckin() {\n          const targetISO = (ciInput?.value) || todayISO();\n          const d = fromISO(targetISO);\n          baseYear = d.getUTCFullYear();\n          baseMonth = d.getUTCMonth();\n        }\n        function monthStart(y, m) { return new Date(Date.UTC(y, m, 1)); }\n        function daysInMonth(y, m) { return new Date(Date.UTC(y, m + 1, 0)).getUTCDate(); }\n        const calWrap = $('#calWrapENRes'), calPrev = $('#calPrevENRes'), calNext = $('#calNextENRes');\n\n        const isBefore = (a, b) => fromISO(a) < fromISO(b);\n        const isSame = (a, b) => a === b;\n\n        function paintCell(cell) {\n          const iso = cell.dataset.iso, ci = ciInput.value, co = coInput.value;\n          if (!ci && !co) return;\n          if (ci && !co) { if (isSame(iso, ci)) cell.classList.add('start'); return; }\n          if (ci && co) {\n            if (isSame(iso, ci)) cell.classList.add('start');\n            else if (isSame(iso, co)) cell.classList.add('end');\n            else if (isBefore(ci, iso) && isBefore(iso, co)) cell.classList.add('in-range');\n          }\n        }\n\n        function renderCalendar() {\n          if (!calWrap) return;\n          calWrap.innerHTML = '';\n          const y = baseYear, m = baseMonth;\n          const box = document.createElement('div'); box.className = 'cal-month';\n          const title = document.createElement('div'); title.className = 'cal-title'; title.textContent = monthLabelEN(y, m).toUpperCase();\n          const grid = document.createElement('div'); grid.className = 'cal-grid';\n          dowEN.forEach(d => { const el = document.createElement('div'); el.className = 'cal-dow'; el.textContent = d; grid.appendChild(el); });\n\n          let start = monthStart(y, m).getUTCDay(); if (start === 0) start = 7;\n          const lead = start - 1;\n          for (let i = 0; i < lead; i++) { const dummy = document.createElement('div'); dummy.className = 'cal-day muted'; grid.appendChild(dummy); }\n\n          const total = daysInMonth(y, m); const t = todayISO();\n          for (let d = 1; d <= total; d++) {\n            const cell = document.createElement('button'); cell.type = 'button'; cell.className = 'cal-day'; cell.textContent = d;\n            const iso = toISO(y, m, d); cell.dataset.iso = iso;\n            if (shouldDisableDate(iso)) {\n              cell.classList.add('disabled');\n              cell.disabled = true;\n            }\n            paintCell(cell);\n            cell.addEventListener('click', () => {\n              if (!ciInput.value || (ciInput.value && coInput.value)) { ciInput.value = iso; coInput.value = ''; }\n              else { if (!isBefore(ciInput.value, iso)) ciInput.value = iso; else coInput.value = iso; }\n              updateDatesLabel(); renderCalendar();\n            });\n            grid.appendChild(cell);\n          }\n          box.appendChild(title); box.appendChild(grid); calWrap.appendChild(box);\n        }\n        calPrev?.addEventListener('click', () => { if (baseMonth === 0) { baseMonth = 11; baseYear--; } else baseMonth--; renderCalendar(); });\n        calNext?.addEventListener('click', () => { if (baseMonth === 11) { baseMonth = 0; baseYear++; } else baseMonth++; renderCalendar(); });\n        $('#calClearENRes')?.addEventListener('click', () => { if (ciInput) ciInput.value = ''; if (coInput) coInput.value = ''; updateDatesLabel(); renderCalendar(); });\n\n        centerOnCheckin(); renderCalendar(); updateDatesLabel();\n\n        \/* === OCUPACI\u00d3N === *\/\n        const roomsWrap = $('#beRoomsWrapENRes');\n        let rooms = [];\n        const MAX_ROOMS = 5;\n\n        function updatePaxLabel() {\n          if (!labels.pax) return;\n          const ta = rooms.reduce((a, r) => a + r.adults, 0);\n          const tc = rooms.reduce((a, r) => a + r.children, 0);\n          labels.pax.textContent = `${ta} Adult${ta !== 1 ? 's' : ''}${tc ? ` \u00b7 ${tc} Child${tc !== 1 ? 'ren' : ''}` : ''}`;\n        }\n\n        function addRoom(ad = 2, ch = 0) {\n          if (rooms.length >= MAX_ROOMS) return;\n          rooms.push({ adults: ad, children: ch, ages: Array.from({ length: ch }, () => 8), open: true });\n          renderRooms();\n        }\n        function removeRoom(i) {\n          rooms.splice(i, 1);\n          if (rooms.length === 0) addRoom(); else renderRooms();\n        }\n\n        function agesRowHTML(r, idx) {\n          if (!r.children) return '';\n          let rows = '';\n          for (let i = 0; i < r.children; i++) {\n            const current = r.ages[i] ?? 8;\n            let opts = '';\n            for (let a = 0; a <= 11; a++) {\n              const label = a === 1 ? `${a} year` : `${a} years`;\n              opts += `<option value=\"${a}\" ${a === current ? 'selected' : ''}>${label}<\/option>`;\n            }\n            rows += `\n            <div class=\"occ-row\">\n              <div class=\"occ-label\">AGE CHILD ${i + 1}<\/div>\n              <label class=\"age-pill\"><select class=\"age-select\" data-age=\"${idx}\" data-k=\"${i}\">${opts}<\/select><\/label>\n            <\/div>`;\n          }\n          return rows;\n        }\n\n        function roomHeaderHTML(idx) {\n          return `\n          <button class=\"occ-head\" type=\"button\" data-toggle=\"${idx}\">\n            <svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\"><path d=\"M21 10V7a2 2 0 0 0-2-2H5C3.9 5 3 5.9 3 7v3h18zm0 2H3v7h2v-3h14v3h2v-7zM5 7h14v1H5V7z\"\/><\/svg>\n            <div class=\"occ-title\">Room ${idx + 1}<\/div>\n            <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" style=\"margin-left:auto\"><path d=\"M7.41 8.59 12 13.17l4.59-4.58L18 10l-6 6-6-6z\"\/><\/svg>\n          <\/button>\n          <div class=\"occ-sep\"><\/div>`;\n        }\n\n        function renderRooms() {\n          if (!roomsWrap) return;\n          roomsWrap.innerHTML = '';\n          rooms.forEach((r, idx) => {\n            const el = document.createElement('div');\n            el.className = 'occ-room' + (r.open ? ' open' : '');\n            el.innerHTML = `\n            ${roomHeaderHTML(idx)}\n            <div class=\"occ-body\" style=\"${r.open ? 'display:block' : 'display:none'}\">\n              <div class=\"occ-row\">\n                <div class=\"occ-label\">ADULTS<\/div>\n                <div class=\"stepper\">\n                  <button class=\"st-btn\" data-ad=\"-1\" data-i=\"${idx}\" type=\"button\">-<\/button>\n                  <div class=\"st-value\" id=\"ad-${idx}\">${r.adults}<\/div>\n                  <button class=\"st-btn\" data-ad=\"+1\" data-i=\"${idx}\" type=\"button\">+<\/button>\n                <\/div>\n              <\/div>\n              <div class=\"occ-row\">\n                <div class=\"occ-label\">CHILDREN<\/div>\n                <div class=\"stepper\">\n                  <button class=\"st-btn\" data-ch=\"-1\" data-i=\"${idx}\" type=\"button\">-<\/button>\n                  <div class=\"st-value\" id=\"ch-${idx}\">${r.children}<\/div>\n                  <button class=\"st-btn\" data-ch=\"+1\" data-i=\"${idx}\" type=\"button\">+<\/button>\n                <\/div>\n              <\/div>\n              ${agesRowHTML(r, idx)}\n              <div class=\"occ-del\" data-del=\"${idx}\"><svg class=\"trash\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\"><path d=\"M9 3h6v2h5v2H4V5h5V3zm1 6h2v9h-2V9zm4 0h2v9h-2V9z\"\/><\/svg>\n            <span>Remove<\/span><\/div>\n            <\/div>`;\n            roomsWrap.appendChild(el);\n          });\n\n          \/\/ Toggle acorde\u00f3n\n          roomsWrap.querySelectorAll('[data-toggle]').forEach(btn => {\n            btn.addEventListener('click', () => {\n              const i = +btn.getAttribute('data-toggle');\n              rooms[i].open = !rooms[i].open;\n              renderRooms();\n            });\n          });\n\n          \/\/ Acciones\n          roomsWrap.querySelectorAll('[data-del]').forEach(b => b.addEventListener('click', () => removeRoom(+b.dataset.del)));\n          roomsWrap.querySelectorAll('[data-ad]').forEach(b => b.addEventListener('click', () => {\n            const i = +b.dataset.i, d = b.dataset.ad === '+1' ? 1 : -1;\n            rooms[i].adults = Math.max(1, Math.min(4, rooms[i].adults + d));\n            renderRooms();\n          }));\n          roomsWrap.querySelectorAll('[data-ch]').forEach(b => b.addEventListener('click', () => {\n            const i = +b.dataset.i, d = b.dataset.ch === '+1' ? 1 : -1;\n            rooms[i].children = Math.max(0, Math.min(3, rooms[i].children + d));\n            rooms[i].ages = rooms[i].ages.slice(0, rooms[i].children);\n            while (rooms[i].ages.length < rooms[i].children) rooms[i].ages.push(8);\n            renderRooms();\n          }));\n          roomsWrap.querySelectorAll('.age-select').forEach(sel => sel.addEventListener('change', e => {\n            const i = +e.target.getAttribute('data-age'); const k = +e.target.getAttribute('data-k');\n            rooms[i].ages[k] = parseInt(e.target.value, 10);\n          }));\n\n          updatePaxLabel();\n          const addBtn = $('#beAddRoomENRes');\n          if (addBtn) {\n            addBtn.disabled = rooms.length >= MAX_ROOMS;\n            addBtn.textContent = rooms.length >= MAX_ROOMS ? 'Only 5 rooms max.' : '+ Add room';\n          }\n        }\n\n        $('#beAddRoomENRes')?.addEventListener('click', () => addRoom(2, 0));\n        addRoom(2, 0);\n        autoSelectHotelFromURL();\n        \/* === RESERVAR === *\/\n        $('#beReservarENRes')?.addEventListener('click', () => {\n          \/\/ Evitar reservas con fechas bloqueadas\n          if (ciInput?.value && shouldDisableDate(ciInput.value)) { openModal('beModalFechasEsRes'); return; }\n          if (coInput?.value && shouldDisableDate(coInput.value)) { openModal('beModalFechasEsRes'); return; }\n          if (!ciInput?.value || !coInput?.value || !isBefore(ciInput.value, coInput.value)) { openModal('beModalFechasENRes'); return; }\n          const occupation = rooms.map(r => {\n            const ages = []; for (let i = 0; i < r.adults; i++) ages.push(30);\n            for (let k = 0; k < r.children; k++) { let v = r.ages[k] ?? 0; if (v < 0) v = 0; if (v > 11) v = 11; ages.push(v); }\n            return ages.join(',');\n          }).join(';');\n\n          const params = new URLSearchParams({\n            'Request.Language': language,\n            'Request.PortalCodeOPR': portal,\n            'Request.HotelCodeOPR': selectedHotel,\n            'Request.CheckinDate': toDDMMYYYY(ciInput.value),\n            'Request.CheckoutDate': toDDMMYYYY(coInput.value),\n            'Request.Occupation': occupation,\n            'Request.PromotionalCode': ($('#bePromoENRes')?.value || '').trim()\n          });\n          if (endpoint) window.location.href = `${endpoint}?${params.toString()}`;\n        });\n      });\n    })();\n  <\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"author":12,"template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","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":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","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":""}},"_jet_sm_ready_style":"","_jet_sm_style":"","_jet_sm_controls_values":"","_jet_sm_fonts_collection":"","_jet_sm_fonts_links":"","_styles":{"container_width":"800px","container_custom_height":false,"container_height":"","container_hor_position":"center","container_ver_position":"center","content_ver_position":"flex-start","container_bg_color":"#fff","container_bg":{"type":"classic","color":"#fff","bg_image_id":"","bg_image_url":"","bg_position":"center center","bg_repeat":"no-repeat","bg_size":"auto","gradient":"linear-gradient(160deg, rgba(85,85,85,0.8477984943977591) 0%, rgba(0,0,0,0.8505996148459384) 100%)"},"container_hor_padding":"20px","container_ver_padding":"20px","container_hor_margin":"0px","container_ver_margin":"0px","container_border":"0px solid #fff","container_border_color":"#fff","container_border_style":"solid","container_border_width":"1px","container_border_radius":"0px","container_box_shadow":"none","overlay_bg_color":"#0000007D","overlay_bg":{"type":"classic","color":"#0000007D","bg_image_id":"","bg_image_url":"","bg_position":"center center","bg_repeat":"no-repeat","bg_size":"auto","gradient":"linear-gradient(160deg, rgba(85,85,85,0.8477984943977591) 0%, rgba(0,0,0,0.8505996148459384) 100%)"},"close_button_icon_color":"#fff","close_button_icon_size":"16px","close_button_bg_color":"#000","close_button_size":"32px","close_button_border":"1px solid #000","close_button_border_radius":"0px","close_button_translate_x":"0px","close_button_translate_y":"0px","z_index":"999"},"_settings":{"jet_popup_type":"default","jet_popup_animation":"slide-in-up","jet_popup_animation_custom_duration":"no","jet_popup_animation_in_duration":0,"jet_popup_animation_out_duration":0,"jet_popup_open_trigger":"attach","jet_popup_on_close_event":"none","jet_popup_scroll_to_anchor":"","jet_popup_page_load_delay":1,"jet_popup_close_after_form_delay":"","jet_popup_user_inactivity_time":1,"jet_popup_scrolled_to_value":10,"jet_popup_on_date_value":"2026-06-13 16:28","jet_popup_on_time_start_value":"","jet_popup_weekdays":"","jet_popup_on_week_time_start_value":"","jet_popup_on_week_time_end_value":"","jet_popup_on_time_end_value":"","jet_popup_start_date_and_time":"2026-06-13 16:28","jet_popup_end_date_and_time":"2026-06-13 16:28","jet_popup_custom_selector":".custom","jet_popup_automatically_close":"","jet_popup_close_after_form_submit":"no","jet_popup_prevent_scrolling":"no","jet_popup_show_once":"no","jet_popup_show_again_delay":"none","jet_popup_use_ajax":"no","jet_popup_force_ajax":"no","jet_role_condition":[],"use_close_button":"yes","close_button_icon":{"value":"","library":""},"selected_close_button_icon":{"value":"","library":""},"use_overlay":"yes","close_on_overlay_click":"yes","use_content_cache":true}},"class_list":["post-43585","jet-popup","type-jet-popup","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Mobile EN - Europe-Hotels<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.europe-hotels.org\/en\/jet-popup\/mobile-en\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Mobile EN - Europe-Hotels\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.europe-hotels.org\/en\/jet-popup\/mobile-en\/\" \/>\n<meta property=\"og:site_name\" content=\"Europe-Hotels\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-13T14:28:17+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.europe-hotels.org\/wp-content\/uploads\/2019\/09\/LOGO_EUROPE_CORPORATE.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.europe-hotels.org\\\/jet-popup\\\/mobile-en\\\/\",\"url\":\"https:\\\/\\\/www.europe-hotels.org\\\/jet-popup\\\/mobile-en\\\/\",\"name\":\"Mobile EN - Europe-Hotels\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.europe-hotels.org\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.europe-hotels.org\\\/jet-popup\\\/mobile-en\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.europe-hotels.org\\\/jet-popup\\\/mobile-en\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.europe-hotels.org\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/LOGO_EUROPE_CORPORATE.png\",\"datePublished\":\"2025-10-07T09:45:06+00:00\",\"dateModified\":\"2026-05-13T14:28:17+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.europe-hotels.org\\\/jet-popup\\\/mobile-en\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.europe-hotels.org\\\/jet-popup\\\/mobile-en\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/www.europe-hotels.org\\\/jet-popup\\\/mobile-en\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.europe-hotels.org\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/LOGO_EUROPE_CORPORATE.png\",\"contentUrl\":\"https:\\\/\\\/www.europe-hotels.org\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/LOGO_EUROPE_CORPORATE.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.europe-hotels.org\\\/jet-popup\\\/mobile-en\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/www.europe-hotels.org\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mobile EN\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.europe-hotels.org\\\/#website\",\"url\":\"https:\\\/\\\/www.europe-hotels.org\\\/\",\"name\":\"Europe-Hotels\",\"description\":\"Europe Hotels\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.europe-hotels.org\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.europe-hotels.org\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.europe-hotels.org\\\/#organization\",\"name\":\"Europe-Hotels\",\"url\":\"https:\\\/\\\/www.europe-hotels.org\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/www.europe-hotels.org\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.europe-hotels.org\\\/wp-content\\\/uploads\\\/2023\\\/11\\\/LOGO_EUROPE_CORPORATE-300x65-1.png\",\"contentUrl\":\"https:\\\/\\\/www.europe-hotels.org\\\/wp-content\\\/uploads\\\/2023\\\/11\\\/LOGO_EUROPE_CORPORATE-300x65-1.png\",\"width\":300,\"height\":65,\"caption\":\"Europe-Hotels\"},\"image\":{\"@id\":\"https:\\\/\\\/www.europe-hotels.org\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Mobile EN - Europe-Hotels","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:\/\/www.europe-hotels.org\/en\/jet-popup\/mobile-en\/","og_locale":"en_GB","og_type":"article","og_title":"Mobile EN - Europe-Hotels","og_url":"https:\/\/www.europe-hotels.org\/en\/jet-popup\/mobile-en\/","og_site_name":"Europe-Hotels","article_modified_time":"2026-05-13T14:28:17+00:00","og_image":[{"url":"https:\/\/www.europe-hotels.org\/wp-content\/uploads\/2019\/09\/LOGO_EUROPE_CORPORATE.png","type":"","width":"","height":""}],"twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.europe-hotels.org\/jet-popup\/mobile-en\/","url":"https:\/\/www.europe-hotels.org\/jet-popup\/mobile-en\/","name":"Mobile EN - Europe-Hotels","isPartOf":{"@id":"https:\/\/www.europe-hotels.org\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.europe-hotels.org\/jet-popup\/mobile-en\/#primaryimage"},"image":{"@id":"https:\/\/www.europe-hotels.org\/jet-popup\/mobile-en\/#primaryimage"},"thumbnailUrl":"https:\/\/www.europe-hotels.org\/wp-content\/uploads\/2019\/09\/LOGO_EUROPE_CORPORATE.png","datePublished":"2025-10-07T09:45:06+00:00","dateModified":"2026-05-13T14:28:17+00:00","breadcrumb":{"@id":"https:\/\/www.europe-hotels.org\/jet-popup\/mobile-en\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.europe-hotels.org\/jet-popup\/mobile-en\/"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/www.europe-hotels.org\/jet-popup\/mobile-en\/#primaryimage","url":"https:\/\/www.europe-hotels.org\/wp-content\/uploads\/2019\/09\/LOGO_EUROPE_CORPORATE.png","contentUrl":"https:\/\/www.europe-hotels.org\/wp-content\/uploads\/2019\/09\/LOGO_EUROPE_CORPORATE.png"},{"@type":"BreadcrumbList","@id":"https:\/\/www.europe-hotels.org\/jet-popup\/mobile-en\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/www.europe-hotels.org\/"},{"@type":"ListItem","position":2,"name":"Mobile EN"}]},{"@type":"WebSite","@id":"https:\/\/www.europe-hotels.org\/#website","url":"https:\/\/www.europe-hotels.org\/","name":"Europe-Hotels","description":"Europe Hotels","publisher":{"@id":"https:\/\/www.europe-hotels.org\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.europe-hotels.org\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Organization","@id":"https:\/\/www.europe-hotels.org\/#organization","name":"Europe-Hotels","url":"https:\/\/www.europe-hotels.org\/","logo":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/www.europe-hotels.org\/#\/schema\/logo\/image\/","url":"https:\/\/www.europe-hotels.org\/wp-content\/uploads\/2023\/11\/LOGO_EUROPE_CORPORATE-300x65-1.png","contentUrl":"https:\/\/www.europe-hotels.org\/wp-content\/uploads\/2023\/11\/LOGO_EUROPE_CORPORATE-300x65-1.png","width":300,"height":65,"caption":"Europe-Hotels"},"image":{"@id":"https:\/\/www.europe-hotels.org\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.europe-hotels.org\/en\/wp-json\/wp\/v2\/jet-popup\/43585","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.europe-hotels.org\/en\/wp-json\/wp\/v2\/jet-popup"}],"about":[{"href":"https:\/\/www.europe-hotels.org\/en\/wp-json\/wp\/v2\/types\/jet-popup"}],"author":[{"embeddable":true,"href":"https:\/\/www.europe-hotels.org\/en\/wp-json\/wp\/v2\/users\/12"}],"version-history":[{"count":15,"href":"https:\/\/www.europe-hotels.org\/en\/wp-json\/wp\/v2\/jet-popup\/43585\/revisions"}],"predecessor-version":[{"id":45611,"href":"https:\/\/www.europe-hotels.org\/en\/wp-json\/wp\/v2\/jet-popup\/43585\/revisions\/45611"}],"wp:attachment":[{"href":"https:\/\/www.europe-hotels.org\/en\/wp-json\/wp\/v2\/media?parent=43585"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}