{"id":43628,"date":"2025-10-07T12:22:31","date_gmt":"2025-10-07T10:22:31","guid":{"rendered":"https:\/\/staging.europe-hotels.org\/jet-popup\/mobile-de\/"},"modified":"2026-04-23T14:21:38","modified_gmt":"2026-04-23T12:21:38","slug":"mobile-de","status":"publish","type":"jet-popup","link":"https:\/\/www.europe-hotels.org\/de\/jet-popup\/mobile-de\/","title":{"rendered":"Mobile DE"},"content":{"rendered":"\t\t<div data-elementor-type=\"jet-popup\" data-elementor-id=\"43628\" class=\"elementor elementor-43628\" data-elementor-post-type=\"jet-popup\">\n\t\t\t\t<div class=\"elementor-element elementor-element-741eea2 e-con-full elementor-hidden-desktop elementor-hidden-laptop e-flex e-con e-parent\" data-id=\"741eea2\" 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-8857c27 elementor-widget elementor-widget-image\" data-id=\"8857c27\" 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-aecb94a elementor-widget elementor-widget-html\" data-id=\"aecb94a\" 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    #beWidgetDERes,\n    #beWidgetDERes * {\n      box-sizing: border-box;\n      font-family: inherit;\n    }\n\n    \/* Reset seguro para botones\/inputs dentro del widget *\/\n    #beWidgetDERes button,\n    #beWidgetDERes input,\n    #beWidgetDERes select {\n      font: inherit;\n    }\n\n    #beWidgetDERes button {\n      -webkit-appearance: none;\n      appearance: none;\n    }\n\n    #beWidgetDERes {\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    #beWidgetDERes svg {\n      display: block;\n      color: var(--brand);\n    }\n\n    \/* Todo hijo que tenga fill\/stroke inline lo forzamos a currentColor *\/\n    #beWidgetDERes svg *,\n    #beWidgetDERes svg [fill],\n    #beWidgetDERes svg [stroke] {\n      fill: currentColor !important;\n      stroke: currentColor !important;\n    }\n\n    \/* ===== Barra ===== *\/\n    #beWidgetDERes .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    #beWidgetDERes .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    #beWidgetDERes .be-seg svg {\n      width: 22px;\n      height: 22px;\n      flex: 0 0 22px;\n      overflow: visible;\n    }\n\n    #beWidgetDERes .be-value {\n      font-weight: 500;\n      color: var(--brand);\n      line-height: 1.15;\n    }\n\n    #beWidgetDERes .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    #beWidgetDERes .be-cta:hover {\n      filter: brightness(.96);\n    }\n\n    #beWidgetDERes .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    #beWidgetDERes .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    #beWidgetDERes .be-modal-backdrop.open {\n      opacity: 1;\n      visibility: visible;\n      pointer-events: auto;\n    }\n\n    #beWidgetDERes .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    #beWidgetDERes .be-modal.open {\n      opacity: 1;\n      visibility: visible;\n    }\n\n    #beWidgetDERes .be-body {\n      padding: 18px 20px;\n      max-height: calc(90vh - 64px);\n      overflow: auto;\n    }\n\n    #beWidgetDERes .be-ft {\n      padding: 16px 20px;\n      display: flex;\n      justify-content: flex-end;\n      gap: 10px;\n    }\n\n    #beWidgetDERes .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    #beWidgetDERes .be-btn-primary {\n      background: var(--brand);\n      color: #fff;\n      border-color: var(--brand);\n    }\n\n    \/* Tama\u00f1os modales *\/\n    #beWidgetDERes #beModalHotelDERes {\n      width: min(420px, 94vw);\n    }\n\n    #beWidgetDERes #beModalFechasDERes {\n      width: min(540px, 96vw);\n    }\n\n    #beWidgetDERes #beModalPaxDERes {\n      width: min(560px, 94vw);\n    }\n\n    \/* ===== Calendario ===== *\/\n    #beWidgetDERes .cal-wrap {\n      display: grid;\n      grid-template-columns: 1fr !important;\n      gap: 12px;\n    }\n\n    #beWidgetDERes .cal-nav {\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n      margin-bottom: 14px;\n    }\n\n    #beWidgetDERes .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    #beWidgetDERes .cal-arrow:hover {\n      background: var(--border);\n    }\n\n    #beWidgetDERes .cal-month {\n      border-radius: 12px;\n      padding: 12px;\n    }\n\n    #beWidgetDERes .cal-title {\n      font-weight: 800;\n      color: var(--brand);\n      text-align: center;\n      margin: 6px 0 10px;\n    }\n\n    #beWidgetDERes .cal-grid {\n      display: grid;\n      grid-template-columns: repeat(7, 1fr);\n      gap: 6px;\n    }\n\n    #beWidgetDERes .cal-dow {\n      font-size: .8rem;\n      text-align: center;\n      color: #7a7f86;\n      padding: 6px 0;\n    }\n\n    #beWidgetDERes .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    #beWidgetDERes .cal-day:hover {\n      background: var(--brand);\n      color: #fff;\n    }\n\n    #beWidgetDERes .cal-day.muted {\n      color: #b9bfc8;\n      background: #fafafa;\n      cursor: default;\n    }\n\n    #beWidgetDERes .cal-day.disabled {\n      opacity: .45;\n      cursor: not-allowed;\n    }\n\n    #beWidgetDERes .cal-day.start,\n    #beWidgetDERes .cal-day.end {\n      background: var(--brand);\n      color: #fff;\n      border-color: var(--brand);\n      font-weight: 800;\n    }\n\n    #beWidgetDERes .cal-day.in-range {\n      background: var(--ring);\n      border-color: #dfe7ff;\n    }\n\n    \/* ===== Ocupaci\u00f3n ===== *\/\n    #beWidgetDERes .occ-room {\n      border-radius: 12px;\n      margin: 14px 0;\n      overflow: hidden;\n    }\n\n    #beWidgetDERes .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    #beWidgetDERes .occ-head svg {\n      width: 22px;\n      height: 22px;\n      flex: 0 0 22px;\n    }\n\n    #beWidgetDERes .occ-title {\n      font-weight: 700;\n      color: var(--brand);\n      font-size: 1.05rem;\n      text-align: left;\n    }\n\n    #beWidgetDERes .occ-body {\n      padding: 18px 16px;\n      background: #fff;\n    }\n\n    #beWidgetDERes .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    #beWidgetDERes .occ-label {\n      font-weight: 800;\n      color: var(--brand);\n      letter-spacing: .5px;\n      text-transform: uppercase;\n    }\n\n    \/* Stepper *\/\n    #beWidgetDERes .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    #beWidgetDERes .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    #beWidgetDERes .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    #beWidgetDERes .st-btn:disabled {\n      opacity: .45;\n      cursor: not-allowed;\n    }\n\n    \/* Pill edad (matching desktop) *\/\n    #beWidgetDERes .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    #beWidgetDERes .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    #beWidgetDERes .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    #beWidgetDERes .occ-del:hover {\n      color: #6d7179;\n    }\n\n    \/* Zimmer hinzuf\u00fcgen *\/\n    #beWidgetDERes #beAddRoomDERes {\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    #beWidgetDERes #beAddRoomDERes:hover {\n      background: #f7fbff !important;\n      border-color: #b9c6ea !important;\n    }\n\n    #beWidgetDERes #beAddRoomDERes:disabled {\n      opacity: .5;\n      cursor: not-allowed;\n    }\n\n    \/* ===== Lista de hoteles ===== *\/\n    #beWidgetDERes .be-list {\n      max-height: 380px;\n      overflow: auto;\n      padding: 4px 6px;\n    }\n\n    #beWidgetDERes .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    #beWidgetDERes .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    #beWidgetDERes .be-item:hover {\n      background: #f7faff;\n    }\n\n    \/* Iconos alineados y tama\u00f1o consistente en lista *\/\n    #beWidgetDERes .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      #beWidgetDERes {\n        font-size: 15px;\n      }\n\n      #beWidgetDERes #beModalPaxDERes {\n        width: 94vw;\n      }\n\n      #beWidgetDERes .occ-row {\n        grid-template-columns: 1fr;\n        gap: 10px;\n        padding: 10px 0;\n      }\n\n      #beWidgetDERes .stepper {\n        justify-self: start;\n      }\n    }\n\n    @media (max-width:768px) {\n      #beWidgetDERes #beModalPaxDERes {\n        width: 96vw;\n      }\n\n      #beWidgetDERes .be-body {\n        max-height: calc(92vh - 64px);\n      }\n    }\n  <\/style>\n\n  <div id=\"beWidgetDERes\">\n    <div id=\"beBarDERes\" class=\"be-floating-bar\" data-endpoint=\"https:\/\/booking.europe-hotels.org\/BookingEngine\/Landing\"\n      data-portal=\"1501\" data-language=\"3\">\n\n      <!-- Hotel -->\n      <button class=\"be-seg\" id=\"segHotelDERes\" 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=\"beHotelLabelDERes\" class=\"be-value\">Europe Hotels<\/span><\/div>\n      <\/button>\n\n      <!-- Fechas -->\n      <button class=\"be-seg\" id=\"segFechasDERes\" 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=\"beDatesLabelDERes\" class=\"be-value\">Daten ausw\u00e4hlen<\/span><\/div>\n      <\/button>\n\n      <!-- Ocupaci\u00f3n -->\n      <button class=\"be-seg\" id=\"segPaxDERes\" 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=\"bePaxLabelDERes\" class=\"be-value\">2 Erwachsene<\/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=\"bePromoDERes\" type=\"text\" class=\"be-promo\" placeholder=\"Promo code\">\n        <\/div>\n      <\/div>\n\n      <button id=\"beReservarDERes\" class=\"be-cta\" type=\"button\">BUCHEN<\/button>\n    <\/div>\n\n    <!-- Backdrop + Modales -->\n    <div id=\"beBackdropDERes\" class=\"be-modal-backdrop\"><\/div>\n\n    <!-- Hoteles -->\n    <div id=\"beModalHotelDERes\" class=\"be-modal\" role=\"dialog\" aria-modal=\"true\">\n      <div class=\"be-body\">\n        <div class=\"be-list\" id=\"beHotelListDERes\">\n          <div class=\"be-group\">TENERIFE | SPANIEN<\/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 | SPANIEN<\/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\">LISSABON | 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\u200b<\/span>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <!-- Fechas -->\n    <div id=\"beModalFechasDERes\" class=\"be-modal\" role=\"dialog\" aria-modal=\"true\">\n      <div class=\"be-body\">\n        <div class=\"cal-nav\">\n          <button id=\"calPrevDERes\" class=\"cal-arrow\" type=\"button\" aria-label=\"Mes anterior\">\u2039<\/button>\n          <button id=\"calNextDERes\" class=\"cal-arrow\" type=\"button\" aria-label=\"Mes siguiente\">\u203a<\/button>\n        <\/div>\n        <div id=\"calWrapDERes\" class=\"cal-wrap\"><\/div>\n        <input id=\"beCheckinDERes\" type=\"hidden\" \/>\n        <input id=\"beCheckoutDERes\" type=\"hidden\" \/>\n      <\/div>\n      <div class=\"be-ft\">\n        <button id=\"calClearDERes\" class=\"be-btn\" type=\"button\">Feld l\u00f6schen<\/button>\n        <button class=\"be-btn be-btn-primary\" data-close=\"beModalFechasDERes\" type=\"button\">OK<\/button>\n      <\/div>\n    <\/div>\n\n    <!-- Ocupaci\u00f3n -->\n    <div id=\"beModalPaxDERes\" class=\"be-modal\" role=\"dialog\" aria-modal=\"true\">\n      <div class=\"be-body\" id=\"beRoomsWrapDERes\"><\/div>\n      <div class=\"be-ft\">\n        <button id=\"beAddRoomDERes\" class=\"be-btn\" type=\"button\">+ Zimmer hinzuf\u00fcgen<\/button>\n        <button class=\"be-btn be-btn-primary\" data-close=\"beModalPaxDERes\" 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('beWidgetDERes'); 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 = $('#beBarDERes');\n        const endpoint = bar?.dataset.endpoint || '';\n        const portal = bar?.dataset.portal || '1501';\n        const language = bar?.dataset.language || '3';\n\n        const labels = {\n          hotel: $('#beHotelLabelDERes'),\n          dates: $('#beDatesLabelDERes'),\n          pax: $('#bePaxLabelDERes')\n        };\n\n        \/* === MODALES === *\/\n        const backdrop = $('#beBackdropDERes');\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        $('#segHotelDERes')?.addEventListener('click', () => openModal('beModalHotelDERes'));\n        $('#segFechasDERes')?.addEventListener('click', () => { centerOnCheckin(); openModal('beModalFechasDERes'); renderCalendar(); });\n        $('#segPaxDERes')?.addEventListener('click', () => openModal('beModalPaxDERes'));\n\n        backdrop.addEventListener('click', () => {\n          ['beModalHotelDERes', 'beModalFechasDERes', 'beModalPaxDERes'].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\u200b\", 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        $('#beHotelListDERes')?.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('beModalHotelDERes');\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 monthLabelDE = (y, m) =>\n          ['januar', 'februar', 'm\u00e4rz', 'april', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', 'november', 'dezember'][m] + ' ' + y;\n        const dowDE = ['mo', 'di', 'mi', 'do', 'fr', 'sa', 'so'];\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\u200b\n                minBookable: '2026-08-01',\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\n        const ciInput = $('#beCheckinDERes');\n        const coInput = $('#beCheckoutDERes');\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 = 'Daten ausw\u00e4hlen';\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 = $('#calWrapDERes'), calPrev = $('#calPrevDERes'), calNext = $('#calNextDERes');\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 = monthLabelDE(y, m).toUpperCase();\n          const grid = document.createElement('div'); grid.className = 'cal-grid';\n          dowDE.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        $('#calClearDERes')?.addEventListener('click', () => { if (ciInput) ciInput.value = ''; if (coInput) coInput.value = ''; updateDatesLabel(); renderCalendar(); });\n\n        centerOnCheckin(); renderCalendar(); updateDatesLabel();\n\n        \/* === OCUPACI\u00d3N === *\/\n        const roomsWrap = $('#beRoomsWrapDERes');\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} Erwachsene${ta !== 1 ? '' : ''}${tc ? ` \u00b7 ${tc} Kinder${tc !== 1 ? '' : ''}` : ''}`;\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} jahr` : `${a} jahre`;\n              opts += `<option value=\"${a}\" ${a === current ? 'selected' : ''}>${label}<\/option>`;\n            }\n            rows += `\n            <div class=\"occ-row\">\n              <div class=\"occ-label\">Alter kind ${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\">Zimmer ${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\">Erwachsene<\/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\">Kinder<\/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>L\u00f6schen<\/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 = $('#beAddRoomDERes');\n          if (addBtn) {\n            addBtn.disabled = rooms.length >= MAX_ROOMS;\n            addBtn.textContent = rooms.length >= MAX_ROOMS ? 'Maximal 5 Zimmer' : '+ Zimmer hinzuf\u00fcgen';\n          }\n        }\n\n        $('#beAddRoomDERes')?.addEventListener('click', () => addRoom(2, 0));\n        addRoom(2, 0);\n        autoSelectHotelFromURL();\n        \/* === RESERVAR === *\/\n        $('#beReservarDERes')?.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('beModalFechasDERes'); 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': ($('#bePromoDERes')?.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":"fade","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-05-23 14:21","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-05-23 14:21","jet_popup_end_date_and_time":"2026-05-23 14:21","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-43628","jet-popup","type-jet-popup","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Mobile DE - 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\/de\/jet-popup\/mobile-de\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Mobile DE - Europe-Hotels\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.europe-hotels.org\/de\/jet-popup\/mobile-de\/\" \/>\n<meta property=\"og:site_name\" content=\"Europe-Hotels\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-23T12:21:38+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-de\\\/\",\"url\":\"https:\\\/\\\/www.europe-hotels.org\\\/jet-popup\\\/mobile-de\\\/\",\"name\":\"Mobile DE - Europe-Hotels\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.europe-hotels.org\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.europe-hotels.org\\\/jet-popup\\\/mobile-de\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.europe-hotels.org\\\/jet-popup\\\/mobile-de\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.europe-hotels.org\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/LOGO_EUROPE_CORPORATE.png\",\"datePublished\":\"2025-10-07T10:22:31+00:00\",\"dateModified\":\"2026-04-23T12:21:38+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.europe-hotels.org\\\/jet-popup\\\/mobile-de\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.europe-hotels.org\\\/jet-popup\\\/mobile-de\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.europe-hotels.org\\\/jet-popup\\\/mobile-de\\\/#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-de\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/www.europe-hotels.org\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mobile DE\"}]},{\"@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\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.europe-hotels.org\\\/#organization\",\"name\":\"Europe-Hotels\",\"url\":\"https:\\\/\\\/www.europe-hotels.org\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@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 DE - 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\/de\/jet-popup\/mobile-de\/","og_locale":"de_DE","og_type":"article","og_title":"Mobile DE - Europe-Hotels","og_url":"https:\/\/www.europe-hotels.org\/de\/jet-popup\/mobile-de\/","og_site_name":"Europe-Hotels","article_modified_time":"2026-04-23T12:21:38+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-de\/","url":"https:\/\/www.europe-hotels.org\/jet-popup\/mobile-de\/","name":"Mobile DE - Europe-Hotels","isPartOf":{"@id":"https:\/\/www.europe-hotels.org\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.europe-hotels.org\/jet-popup\/mobile-de\/#primaryimage"},"image":{"@id":"https:\/\/www.europe-hotels.org\/jet-popup\/mobile-de\/#primaryimage"},"thumbnailUrl":"https:\/\/www.europe-hotels.org\/wp-content\/uploads\/2019\/09\/LOGO_EUROPE_CORPORATE.png","datePublished":"2025-10-07T10:22:31+00:00","dateModified":"2026-04-23T12:21:38+00:00","breadcrumb":{"@id":"https:\/\/www.europe-hotels.org\/jet-popup\/mobile-de\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.europe-hotels.org\/jet-popup\/mobile-de\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.europe-hotels.org\/jet-popup\/mobile-de\/#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-de\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/www.europe-hotels.org\/"},{"@type":"ListItem","position":2,"name":"Mobile DE"}]},{"@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":"de"},{"@type":"Organization","@id":"https:\/\/www.europe-hotels.org\/#organization","name":"Europe-Hotels","url":"https:\/\/www.europe-hotels.org\/","logo":{"@type":"ImageObject","inLanguage":"de","@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\/de\/wp-json\/wp\/v2\/jet-popup\/43628","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.europe-hotels.org\/de\/wp-json\/wp\/v2\/jet-popup"}],"about":[{"href":"https:\/\/www.europe-hotels.org\/de\/wp-json\/wp\/v2\/types\/jet-popup"}],"author":[{"embeddable":true,"href":"https:\/\/www.europe-hotels.org\/de\/wp-json\/wp\/v2\/users\/12"}],"version-history":[{"count":12,"href":"https:\/\/www.europe-hotels.org\/de\/wp-json\/wp\/v2\/jet-popup\/43628\/revisions"}],"predecessor-version":[{"id":45537,"href":"https:\/\/www.europe-hotels.org\/de\/wp-json\/wp\/v2\/jet-popup\/43628\/revisions\/45537"}],"wp:attachment":[{"href":"https:\/\/www.europe-hotels.org\/de\/wp-json\/wp\/v2\/media?parent=43628"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}