{"id":98395,"date":"2026-09-11T17:57:06","date_gmt":"2026-09-11T15:57:06","guid":{"rendered":"https:\/\/bno-travel.com\/hotels-in-dubai\/"},"modified":"2026-09-15T19:27:35","modified_gmt":"2026-09-15T17:27:35","slug":"hotels-in-dubai","status":"publish","type":"page","link":"https:\/\/bno-travel.com\/de\/hotels-in-dubai\/","title":{"rendered":"Hotels in Dubai \u2013 Hotels und Stadtteile finden | BNO Travel"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"98395\" class=\"elementor elementor-98395 elementor-97229\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-fdce33a e-flex e-con-boxed e-con e-parent\" data-id=\"fdce33a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c61e35b elementor-widget elementor-widget-html\" data-id=\"c61e35b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>\r\n  .bno-dubai-page,\r\n  .bno-dubai-page * {\r\n    box-sizing: border-box;\r\n  }\r\n\r\n  .bno-dubai-page {\r\n    --bno-navy: #0C1A38;\r\n    --bno-blue: #1769aa;\r\n    --bno-soft: #f4f7fb;\r\n    --bno-border: #dfe5ed;\r\n    --bno-text: #202938;\r\n    --bno-muted: #5c687b;\r\n    --bno-radius: 22px;\r\n  }\r\n\r\n  .bno-dubai-page .bno-shell {\r\n    width: min(1180px, calc(100% - 36px));\r\n    margin: 0 auto;\r\n  }\r\n\r\n  .bno-dubai-page .bno-section {\r\n    padding: 76px 0;\r\n  }\r\n\r\n  .bno-dubai-page .bno-section--soft {\r\n    background: #f5f7fa;\r\n  }\r\n\r\n  .bno-dubai-page .bno-section--light {\r\n    background: #fff;\r\n  }\r\n\r\n  .bno-dubai-page .bno-eyebrow {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    gap: 8px;\r\n    margin-bottom: 14px;\r\n    font-size: 13px;\r\n    line-height: 1.2;\r\n    font-weight: 700;\r\n    letter-spacing: .04em;\r\n    text-transform: uppercase;\r\n    color: #1769aa;\r\n  }\r\n\r\n  .bno-dubai-page .bno-section-heading {\r\n    max-width: 760px;\r\n    margin-bottom: 38px;\r\n  }\r\n\r\n  .bno-dubai-page .bno-section-heading h2 {\r\n    margin: 0 0 15px;\r\n    font-size: clamp(30px, 4vw, 46px);\r\n    line-height: 1.08;\r\n    color: #182238;\r\n  }\r\n\r\n  .bno-dubai-page .bno-section-heading p {\r\n    margin: 0;\r\n    font-size: 17px;\r\n    line-height: 1.7;\r\n    color: var(--bno-muted);\r\n  }\r\n\r\n  .bno-dubai-page .bno-actions {\r\n    display: flex;\r\n    flex-wrap: wrap;\r\n    gap: 12px;\r\n    margin-top: 26px;\r\n  }\r\n\r\n  .bno-dubai-page .bno-btn {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n    min-height: 52px;\r\n    padding: 0 22px;\r\n    border-radius: 12px;\r\n    text-decoration: none;\r\n    font-weight: 700;\r\n    transition: .2s ease;\r\n  }\r\n\r\n  .bno-dubai-page .bno-btn--primary {\r\n    color: #fff;\r\n    background: var(--bno-navy);\r\n    border: 1px solid var(--bno-navy);\r\n  }\r\n\r\n  .bno-dubai-page .bno-btn--primary:hover {\r\n    transform: translateY(-1px);\r\n    opacity: .94;\r\n  }\r\n\r\n  .bno-dubai-page .bno-btn--secondary {\r\n    color: var(--bno-navy);\r\n    background: rgba(255,255,255,.96);\r\n    border: 1px solid rgba(12,26,56,.22);\r\n  }\r\n\r\n  \/* HERO *\/\r\n  .bno-dubai-hero {\r\n    position: relative;\r\n    min-height: 590px;\r\n    display: flex;\r\n    align-items: flex-end;\r\n    overflow: hidden;\r\n    color: #fff;\r\n    background:\r\n      radial-gradient(circle at 78% 25%, rgba(29,181,220,.55), transparent 34%),\r\n      radial-gradient(circle at 65% 80%, rgba(237,166,77,.25), transparent 36%),\r\n      linear-gradient(135deg, #0b2c52 0%, #0C1A38 54%, #10294d 100%);\r\n  }\r\n\r\n  \/*\r\n    N\u00e5r du har URL-en til Dubai-bildet du allerede bruker,\r\n    legg den inn som et ekstra background-image her.\r\n  *\/\r\n\r\n  .bno-dubai-hero::after {\r\n    content: \"\";\r\n    position: absolute;\r\n    inset: 0;\r\n    background:\r\n      linear-gradient(90deg, rgba(5,14,31,.70) 0%, rgba(5,14,31,.37) 55%, rgba(5,14,31,.12) 100%);\r\n    pointer-events: none;\r\n  }\r\n\r\n  .bno-dubai-hero .bno-shell {\r\n    position: relative;\r\n    z-index: 2;\r\n  }\r\n\r\n  .bno-dubai-hero__content {\r\n    max-width: 800px;\r\n    padding: 110px 0 76px;\r\n  }\r\n\r\n  .bno-dubai-hero .bno-eyebrow {\r\n    color: #fff;\r\n    background: rgba(255,255,255,.14);\r\n    border: 1px solid rgba(255,255,255,.25);\r\n    backdrop-filter: blur(8px);\r\n    padding: 9px 13px;\r\n    border-radius: 999px;\r\n  }\r\n\r\n  .bno-dubai-hero h1 {\r\n    margin: 7px 0 20px;\r\n    max-width: 830px;\r\n    font-size: clamp(42px, 6vw, 72px);\r\n    line-height: .99;\r\n    letter-spacing: -.025em;\r\n    color: #fff;\r\n  }\r\n\r\n  .bno-dubai-hero .bno-lead {\r\n    margin: 0;\r\n    max-width: 690px;\r\n    font-size: clamp(18px, 2vw, 21px);\r\n    line-height: 1.6;\r\n    color: rgba(255,255,255,.92);\r\n  }\r\n\r\n  .bno-dubai-hero .bno-btn--primary {\r\n    background: #fff;\r\n    color: var(--bno-navy);\r\n    border-color: #fff;\r\n  }\r\n\r\n  .bno-dubai-hero .bno-btn--secondary {\r\n    background: rgba(12,26,56,.35);\r\n    color: #fff;\r\n    border-color: rgba(255,255,255,.42);\r\n    backdrop-filter: blur(8px);\r\n  }\r\n\r\n  \/* INTRO *\/\r\n  .bno-dubai-intro__grid {\r\n    display: grid;\r\n    grid-template-columns: 1.35fr .65fr;\r\n    gap: 54px;\r\n    align-items: start;\r\n  }\r\n\r\n  .bno-dubai-intro__text p {\r\n    margin: 0 0 18px;\r\n    font-size: 17px;\r\n    line-height: 1.75;\r\n    color: var(--bno-muted);\r\n  }\r\n\r\n  .bno-dubai-highlights {\r\n    display: grid;\r\n    gap: 12px;\r\n  }\r\n\r\n  .bno-dubai-highlight {\r\n    padding: 20px;\r\n    background: var(--bno-soft);\r\n    border: 1px solid var(--bno-border);\r\n    border-radius: 16px;\r\n  }\r\n\r\n  .bno-dubai-highlight strong {\r\n    display: block;\r\n    color: var(--bno-navy);\r\n    margin-bottom: 5px;\r\n    font-size: 16px;\r\n  }\r\n\r\n  .bno-dubai-highlight span {\r\n    color: var(--bno-muted);\r\n    line-height: 1.5;\r\n  }\r\n\r\n  \/* GENERELLE KORT *\/\r\n  .bno-dubai-info-grid {\r\n    display: grid;\r\n    grid-template-columns: repeat(3, 1fr);\r\n    gap: 18px;\r\n  }\r\n\r\n  .bno-dubai-info-card {\r\n    padding: 26px;\r\n    border: 1px solid var(--bno-border);\r\n    border-radius: 18px;\r\n    background: #fff;\r\n  }\r\n\r\n  .bno-dubai-info-card h3 {\r\n    margin: 0 0 11px;\r\n    font-size: 20px;\r\n    color: var(--bno-navy);\r\n  }\r\n\r\n  .bno-dubai-info-card p {\r\n    margin: 0;\r\n    color: var(--bno-muted);\r\n    line-height: 1.65;\r\n  }\r\n\r\n  \/* EDITORIAL *\/\r\n  .bno-dubai-editorial {\r\n    display: grid;\r\n    grid-template-columns: 1fr 1fr;\r\n    gap: 50px;\r\n    align-items: center;\r\n  }\r\n\r\n  .bno-dubai-editorial__content p {\r\n    color: var(--bno-muted);\r\n    font-size: 17px;\r\n    line-height: 1.72;\r\n  }\r\n\r\n  .bno-dubai-editorial__media {\r\n    min-height: 460px;\r\n    border-radius: 24px;\r\n    overflow: hidden;\r\n    background:\r\n      radial-gradient(circle at 70% 25%, #33b8d8 0%, transparent 38%),\r\n      linear-gradient(145deg, #0f4774, #0C1A38);\r\n    display: flex;\r\n    align-items: flex-end;\r\n    padding: 28px;\r\n  }\r\n\r\n  .bno-dubai-editorial__media span {\r\n    color: #fff;\r\n    font-size: 28px;\r\n    font-weight: 750;\r\n  }\r\n\r\n  \/* CTA *\/\r\n  .bno-dubai-cta-box {\r\n    display: grid;\r\n    grid-template-columns: 1fr auto;\r\n    gap: 30px;\r\n    align-items: center;\r\n    padding: 40px;\r\n    background: var(--bno-navy);\r\n    border-radius: 24px;\r\n    color: #fff;\r\n  }\r\n\r\n  .bno-dubai-cta-box h2 {\r\n    margin: 4px 0 12px;\r\n    color: #fff;\r\n    font-size: clamp(28px, 4vw, 42px);\r\n  }\r\n\r\n  .bno-dubai-cta-box p {\r\n    margin: 0;\r\n    max-width: 720px;\r\n    color: rgba(255,255,255,.78);\r\n    line-height: 1.6;\r\n  }\r\n\r\n  .bno-dubai-cta-box .bno-eyebrow {\r\n    color: #8bd8ef;\r\n  }\r\n\r\n  .bno-dubai-cta-box .bno-btn--primary {\r\n    background: #fff;\r\n    color: var(--bno-navy);\r\n    border-color: #fff;\r\n    white-space: nowrap;\r\n  }\r\n\r\n  @media (max-width: 900px) {\r\n    .bno-dubai-page .bno-section {\r\n      padding: 58px 0;\r\n    }\r\n\r\n    .bno-dubai-intro__grid,\r\n    .bno-dubai-editorial,\r\n    .bno-dubai-cta-box {\r\n      grid-template-columns: 1fr;\r\n    }\r\n\r\n    .bno-dubai-info-grid {\r\n      grid-template-columns: repeat(2, 1fr);\r\n    }\r\n\r\n    .bno-dubai-hero {\r\n      min-height: 520px;\r\n    }\r\n  }\r\n\r\n  @media (max-width: 620px) {\r\n    .bno-dubai-page .bno-shell {\r\n      width: min(100% - 24px, 1180px);\r\n    }\r\n\r\n    .bno-dubai-info-grid {\r\n      grid-template-columns: 1fr;\r\n    }\r\n\r\n    .bno-dubai-hero__content {\r\n      padding: 90px 0 52px;\r\n    }\r\n\r\n    .bno-dubai-cta-box {\r\n      padding: 28px 22px;\r\n    }\r\n  }\r\n<\/style>\r\n\r\n<div class=\"bno-dubai-page\">\r\n\r\n<section class=\"bno-dubai-hero\">\r\n  <div class=\"bno-shell\">\r\n\r\n    <div class=\"bno-dubai-hero__content\">\r\n\r\n      <span class=\"bno-eyebrow\">\r\n        Dubai \u00b7 Vereinigte Arabische Emirate\r\n      <\/span>\r\n\r\n      <h1>\r\n        Hotels in Dubai \u2013 finden Sie die passende Unterkunft f\u00fcr Ihre Reise\r\n      <\/h1>\r\n\r\n      <p class=\"bno-lead\">\r\n        Entdecken Sie Hotels von Downtown Dubai und Business Bay bis Dubai Marina, Jumeirah und die Gebiete rund um Dubai Creek. Sehen Sie sich Hotels, Zimmertypen und Lagen an, bevor die Buchung bei BNO Travel freigeschaltet wird.\r\n      <\/p>\r\n\r\n      <div class=\"bno-actions\">\r\n        <a href=\"#hoteller\" class=\"bno-btn bno-btn--primary\">\r\n          Hotels ansehen\r\n        <\/a>\r\n\r\n        <a href=\"#omrader\" class=\"bno-btn bno-btn--secondary\">\r\n          Dubai entdecken\r\n        <\/a>\r\n      <\/div>\r\n\r\n    <\/div>\r\n\r\n  <\/div>\r\n<\/section>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fdf128e elementor-widget elementor-widget-html\" data-id=\"fdf128e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<section class=\"bno-section bno-section--light bno-dubai-intro\">\r\n  <div class=\"bno-shell\">\r\n\r\n    <div class=\"bno-dubai-intro__grid\">\r\n\r\n      <div class=\"bno-dubai-intro__text\">\r\n\r\n        <span class=\"bno-eyebrow\">\r\n          Unterk\u00fcnfte in Dubai\r\n        <\/span>\r\n\r\n        <div class=\"bno-section-heading\">\r\n          <h2>\r\n            Von Gro\u00dfstadt und Shopping bis Strand und Resorturlaub\r\n          <\/h2>\r\n        <\/div>\r\n\r\n        <p>\r\n          Dubai besteht aus mehreren deutlich unterschiedlichen Vierteln, und die Wahl der Lage pr\u00e4gt den Aufenthalt entscheidend. Downtown Dubai und Business Bay eignen sich besonders f\u00fcr alle, die modernes Stadtleben, Restaurants und bekannte Sehensw\u00fcrdigkeiten in der N\u00e4he suchen, w\u00e4hrend Dubai Marina und Jumeirah k\u00fcrzere Wege zu Strand, Promenade und K\u00fcste bieten.\r\n        <\/p>\r\n\r\n        <p>\r\n          BNO Travel b\u00fcndelt eine gro\u00dfe Auswahl an Hotels und Aparthotels in Dubai. Sie k\u00f6nnen die Optionen entdecken, Lage und Hotelinformationen vergleichen und verf\u00fcgbare Zimmertypen ansehen, bevor die vollst\u00e4ndige Buchungsl\u00f6sung freigeschaltet wird.\r\n        <\/p>\r\n\r\n      <\/div>\r\n\r\n      <div class=\"bno-dubai-highlights\">\r\n\r\n        <div class=\"bno-dubai-highlight\">\r\n          <strong>Gro\u00dfstadt und Strand<\/strong>\r\n          <span>\r\n            Kombinieren Sie Shopping, Restaurants und Sehensw\u00fcrdigkeiten mit Strandurlaub und entspannten Tagen an der K\u00fcste.\r\n          <\/span>\r\n        <\/div>\r\n\r\n        <div class=\"bno-dubai-highlight\">\r\n          <strong>Viele unterschiedliche Viertel<\/strong>\r\n          <span>\r\n            W\u00e4hlen Sie unter anderem zwischen Downtown, Business Bay, Dubai Marina, Jumeirah und Dubai Creek.\r\n          <\/span>\r\n        <\/div>\r\n\r\n        <div class=\"bno-dubai-highlight\">\r\n          <strong>Hotels f\u00fcr unterschiedliche Reisen<\/strong>\r\n          <span>\r\n            Finden Sie passende Optionen f\u00fcr Paare, Familien, Gesch\u00e4ftsreisen und l\u00e4ngere Aufenthalte.\r\n          <\/span>\r\n        <\/div>\r\n\r\n      <\/div>\r\n\r\n    <\/div>\r\n\r\n  <\/div>\r\n<\/section>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6d483d7 elementor-widget elementor-widget-html\" data-id=\"6d483d7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<section id=\"hoteller\" class=\"bno-section bno-section--soft bno-stays-preview\" data-bno-stays-preview data-api-base=\"https:\/\/bno-api-duffel-staging.onrender.com\" data-destination=\"dubai\" data-lang=\"de\" data-initial-count=\"12\" data-page-size=\"200\">\r\n  <div class=\"bno-shell\">\r\n\r\n    <div class=\"bno-section-heading\">\r\n      <span class=\"bno-eyebrow\">\r\n        Hotels in Dubai\r\n      <\/span>\r\n\r\n      <h2>\r\n        Finden Sie das Hotel, das zu Ihrem Aufenthalt passt\r\n      <\/h2>\r\n\r\n      <p>\r\n        Entdecken Sie Hotels in Dubai und sehen Sie Bilder, Lage, Hotelinformationen und G\u00e4stebewertungen. Weitere Details und Buchungsm\u00f6glichkeiten folgen in K\u00fcrze.\r\n      <\/p>\r\n    <\/div>\r\n\r\n\r\n    <!-- FILTERS -->\r\n\r\n    <div class=\"bno-stays-toolbar\">\r\n\r\n      <div class=\"bno-stays-count\" data-result-count aria-live=\"polite\">\r\n        Hotels werden geladen \u2026\r\n      <\/div>\r\n\r\n\r\n      <div class=\"bno-stays-filters\">\r\n\r\n        <label class=\"bno-stays-field\">\r\n          <span>Hotel suchen<\/span>\r\n\r\n          <input\r\n            type=\"search\"\r\n            placeholder=\"Hotelname oder Stadtteil\"\r\n            autocomplete=\"off\"\r\n            data-hotel-search\r\n          >\r\n        <\/label>\r\n\r\n\r\n        <label class=\"bno-stays-field\" data-area-field>\r\n          <span>Stadtteil<\/span>\r\n\r\n          <select data-area-filter>\r\n            <option value=\"\">\r\n              Alle Stadtteile\r\n            <\/option>\r\n          <\/select>\r\n        <\/label>\r\n\r\n\r\n        <label class=\"bno-stays-field\">\r\n          <span>Sterne<\/span>\r\n\r\n          <select data-star-filter>\r\n            <option value=\"\">\r\n              Alle\r\n            <\/option>\r\n\r\n            <option value=\"5\">\r\n              5 Sterne\r\n            <\/option>\r\n\r\n            <option value=\"4\">\r\n              4 Sterne oder mehr\r\n            <\/option>\r\n\r\n            <option value=\"3\">\r\n              3 Sterne oder mehr\r\n            <\/option>\r\n          <\/select>\r\n        <\/label>\r\n\r\n      <\/div>\r\n\r\n\r\n      <!-- MOBILE LIST \/ MAP -->\r\n\r\n      <div class=\"bno-stays-mobile-switch\">\r\n\r\n        <button type=\"button\" class=\"is-active\" data-show-list>\r\n          Liste\r\n        <\/button>\r\n\r\n        <button type=\"button\" data-show-map>\r\n          Karte\r\n        <\/button>\r\n\r\n      <\/div>\r\n\r\n    <\/div>\r\n\r\n\r\n    <!-- LIST + MAP -->\r\n\r\n    <div class=\"bno-stays-layout\">\r\n\r\n      <div class=\"bno-stays-list-column\" data-list-column>\r\n\r\n        <div class=\"bno-stays-status\" data-status role=\"status\" aria-live=\"polite\">\r\n          Hotels werden geladen \u2026\r\n        <\/div>\r\n\r\n\r\n        <div class=\"bno-stays-list\" data-hotel-list><\/div>\r\n\r\n\r\n        <div class=\"bno-stays-more-wrap\" data-more-wrap hidden>\r\n\r\n          <button type=\"button\" class=\"bno-stays-more\" data-more>\r\n            Mehr Hotels anzeigen\r\n          <\/button>\r\n\r\n        <\/div>\r\n\r\n      <\/div>\r\n\r\n\r\n      <div class=\"bno-stays-map-column\" data-map-column>\r\n\r\n        <div class=\"bno-stays-map-card\">\r\n\r\n          <div id=\"bno-dubai-map\" class=\"bno-stays-map\"><\/div>\r\n\r\n\r\n          <div class=\"bno-stays-map-note\" data-map-note>\r\n            Hotelstandorte werden geladen \u2026\r\n          <\/div>\r\n\r\n        <\/div>\r\n\r\n      <\/div>\r\n\r\n    <\/div>\r\n\r\n  <\/div>\r\n\r\n\r\n  <!-- HOTEL MODAL -->\r\n\r\n  <div class=\"bno-stays-modal\" data-hotel-modal hidden>\r\n\r\n    <div class=\"bno-stays-modal__backdrop\" data-modal-close><\/div>\r\n\r\n\r\n    <div class=\"bno-stays-modal__dialog\" role=\"dialog\" aria-modal=\"true\" aria-label=\"Hotelinformationen\">\r\n\r\n      <button type=\"button\" class=\"bno-stays-modal__close\" data-modal-close aria-label=\"Schlie\u00dfen\">\r\n        \u00d7\r\n      <\/button>\r\n\r\n\r\n      <div data-modal-content><\/div>\r\n\r\n    <\/div>\r\n\r\n  <\/div>\r\n\r\n<\/section>\r\n\r\n\r\n<style>\r\n\r\n\/* =========================================================\r\n   BNO STAYS PREVIEW\r\n   ========================================================= *\/\r\n\r\n.bno-stays-preview {\r\n  --bno-navy: #0C1A38;\r\n  --bno-blue: #1769aa;\r\n  --bno-border: #dce3ec;\r\n  --bno-muted: #627087;\r\n}\r\n\r\n.bno-stays-preview *,\r\n.bno-stays-preview *::before,\r\n.bno-stays-preview *::after {\r\n  box-sizing: border-box;\r\n}\r\n\r\n.bno-stays-preview [hidden] {\r\n  display: none !important;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   TOOLBAR\r\n   ========================================================= *\/\r\n\r\n.bno-stays-toolbar {\r\n  margin-bottom: 26px;\r\n}\r\n\r\n.bno-stays-count {\r\n  margin-bottom: 17px;\r\n\r\n  color: #172238;\r\n\r\n  font-size: 15px;\r\n  font-weight: 750;\r\n}\r\n\r\n.bno-stays-filters {\r\n  display: grid;\r\n\r\n  grid-template-columns:\r\n    1.35fr\r\n    .95fr\r\n    .75fr;\r\n\r\n  gap: 12px;\r\n}\r\n\r\n.bno-stays-field {\r\n  display: flex;\r\n  flex-direction: column;\r\n\r\n  gap: 7px;\r\n}\r\n\r\n.bno-stays-field span {\r\n  color: #59667a;\r\n\r\n  font-size: 12px;\r\n  font-weight: 750;\r\n}\r\n\r\n.bno-stays-field input,\r\n.bno-stays-field select {\r\n  width: 100%;\r\n  height: 49px;\r\n\r\n  padding: 0 14px;\r\n\r\n  border: 1px solid #d3dce7;\r\n  border-radius: 11px;\r\n\r\n  background: #fff;\r\n\r\n  color: #182238;\r\n\r\n  font: inherit;\r\n\r\n  outline: none;\r\n}\r\n\r\n.bno-stays-field input:focus,\r\n.bno-stays-field select:focus {\r\n  border-color: #587ba9;\r\n\r\n  box-shadow:\r\n    0 0 0 3px rgba(23,105,170,.08);\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   LAYOUT\r\n   ========================================================= *\/\r\n\r\n.bno-stays-layout {\r\n  display: grid;\r\n\r\n  grid-template-columns:\r\n    minmax(0,1.05fr)\r\n    minmax(400px,.95fr);\r\n\r\n  gap: 24px;\r\n\r\n  align-items: start;\r\n}\r\n\r\n.bno-stays-list {\r\n  display: grid;\r\n\r\n  gap: 15px;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   HOTEL CARD\r\n   ========================================================= *\/\r\n\r\n.bno-stays-hotel {\r\n  display: grid;\r\n\r\n  grid-template-columns:\r\n    215px\r\n    minmax(0,1fr);\r\n\r\n  min-height: 225px;\r\n\r\n  overflow: hidden;\r\n\r\n  background: #fff;\r\n\r\n  border: 1px solid #dce3ec;\r\n  border-radius: 17px;\r\n\r\n  transition:\r\n    transform .2s ease,\r\n    box-shadow .2s ease,\r\n    border-color .2s ease;\r\n}\r\n\r\n.bno-stays-hotel:hover {\r\n  transform: translateY(-2px);\r\n\r\n  box-shadow:\r\n    0 12px 30px rgba(12,26,56,.08);\r\n}\r\n\r\n.bno-stays-hotel.is-map-active {\r\n  border-color: #1769aa;\r\n\r\n  box-shadow:\r\n    0 0 0 2px rgba(23,105,170,.13);\r\n}\r\n\r\n\r\n\/* IMAGE *\/\r\n\r\n.bno-stays-hotel__image {\r\n  position: relative;\r\n\r\n  min-height: 225px;\r\n\r\n  overflow: hidden;\r\n\r\n  background:\r\n    linear-gradient(\r\n      145deg,\r\n      #d9e4ed,\r\n      #c4d2de\r\n    );\r\n}\r\n\r\n.bno-stays-hotel__image img {\r\n  position: absolute;\r\n  inset: 0;\r\n\r\n  width: 100%;\r\n  height: 100%;\r\n\r\n  object-fit: cover;\r\n}\r\n\r\n.bno-stays-image-placeholder {\r\n  position: absolute;\r\n  inset: 0;\r\n\r\n  display: flex;\r\n\r\n  align-items: center;\r\n  justify-content: center;\r\n\r\n  padding: 25px;\r\n\r\n  color: #647289;\r\n\r\n  text-align: center;\r\n\r\n  font-size: 13px;\r\n  font-weight: 700;\r\n}\r\n\r\n.bno-stays-badge {\r\n  position: absolute;\r\n\r\n  z-index: 3;\r\n\r\n  top: 12px;\r\n  left: 12px;\r\n\r\n  padding: 7px 10px;\r\n\r\n  border-radius: 999px;\r\n\r\n  background: rgba(255,255,255,.96);\r\n\r\n  color: #344158;\r\n\r\n  font-size: 11px;\r\n  font-weight: 800;\r\n\r\n  box-shadow:\r\n    0 2px 10px rgba(12,26,56,.08);\r\n}\r\n\r\n\r\n\/* BODY *\/\r\n\r\n.bno-stays-hotel__body {\r\n  display: flex;\r\n  flex-direction: column;\r\n\r\n  min-width: 0;\r\n\r\n  padding: 20px 21px;\r\n}\r\n\r\n.bno-stays-stars {\r\n  min-height: 19px;\r\n\r\n  color: #c98513;\r\n\r\n  font-size: 14px;\r\n\r\n  letter-spacing: 1px;\r\n}\r\n\r\n.bno-stays-hotel h3 {\r\n  margin: 5px 0 7px;\r\n\r\n  color: #172238;\r\n\r\n  font-size: 21px;\r\n  line-height: 1.26;\r\n}\r\n\r\n.bno-stays-location {\r\n  margin-bottom: 10px;\r\n\r\n  color: #667288;\r\n\r\n  font-size: 13px;\r\n}\r\n\r\n.bno-stays-rating {\r\n  display: flex;\r\n  flex-wrap: wrap;\r\n\r\n  align-items: center;\r\n\r\n  gap: 8px;\r\n\r\n  margin-bottom: 10px;\r\n}\r\n\r\n.bno-stays-score {\r\n  display: inline-flex;\r\n\r\n  align-items: center;\r\n  justify-content: center;\r\n\r\n  min-width: 38px;\r\n  height: 29px;\r\n\r\n  padding: 0 8px;\r\n\r\n  border-radius: 8px;\r\n\r\n  background: #0C1A38;\r\n\r\n  color: #fff;\r\n\r\n  font-size: 12px;\r\n  font-weight: 800;\r\n}\r\n\r\n.bno-stays-review-count {\r\n  color: #697589;\r\n\r\n  font-size: 12px;\r\n}\r\n\r\n.bno-stays-description {\r\n  display: -webkit-box;\r\n\r\n  overflow: hidden;\r\n\r\n  margin: 0 0 16px;\r\n\r\n  color: #58667b;\r\n\r\n  font-size: 14px;\r\n  line-height: 1.55;\r\n\r\n  -webkit-box-orient: vertical;\r\n  -webkit-line-clamp: 3;\r\n}\r\n\r\n.bno-stays-hotel__actions {\r\n  display: flex;\r\n\r\n  align-items: center;\r\n  justify-content: space-between;\r\n\r\n  gap: 14px;\r\n\r\n  margin-top: auto;\r\n}\r\n\r\n.bno-stays-small-status {\r\n  color: #687589;\r\n\r\n  font-size: 12px;\r\n}\r\n\r\n.bno-stays-open {\r\n  min-height: 43px;\r\n\r\n  padding: 0 16px;\r\n\r\n  border: 0;\r\n  border-radius: 10px;\r\n\r\n  background: #0C1A38;\r\n\r\n  color: #fff;\r\n\r\n  font: inherit;\r\n  font-size: 13px;\r\n  font-weight: 750;\r\n\r\n  cursor: pointer;\r\n}\r\n\r\n.bno-stays-open:hover {\r\n  opacity: .93;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   STATUS\r\n   ========================================================= *\/\r\n\r\n.bno-stays-status {\r\n  margin-bottom: 15px;\r\n\r\n  padding: 16px 17px;\r\n\r\n  border: 1px solid #dce3ec;\r\n  border-radius: 12px;\r\n\r\n  background: #fff;\r\n\r\n  color: #607087;\r\n\r\n  line-height: 1.55;\r\n}\r\n\r\n.bno-stays-status:empty {\r\n  display: none;\r\n}\r\n\r\n.bno-stays-status.is-error {\r\n  border-color: #efc7c7;\r\n\r\n  background: #fff7f7;\r\n\r\n  color: #933b3b;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   MAP\r\n   ========================================================= *\/\r\n\r\n.bno-stays-map-column {\r\n  position: sticky;\r\n\r\n  top: 100px;\r\n}\r\n\r\n.bno-stays-map-card {\r\n  position: relative;\r\n\r\n  height: min(72vh,720px);\r\n  min-height: 520px;\r\n\r\n  overflow: hidden;\r\n\r\n  border: 1px solid #dce3ec;\r\n  border-radius: 18px;\r\n\r\n  background: #e5ebf0;\r\n}\r\n\r\n.bno-stays-map {\r\n  position: absolute;\r\n\r\n  inset: 0;\r\n\r\n  z-index: 1;\r\n}\r\n\r\n.bno-stays-map-note {\r\n  position: absolute;\r\n\r\n  z-index: 500;\r\n\r\n  right: 14px;\r\n  bottom: 14px;\r\n  left: 14px;\r\n\r\n  padding: 11px 13px;\r\n\r\n  border-radius: 10px;\r\n\r\n  background: rgba(255,255,255,.95);\r\n\r\n  color: #526176;\r\n\r\n  font-size: 12px;\r\n\r\n  box-shadow:\r\n    0 5px 18px rgba(12,26,56,.10);\r\n}\r\n\r\n\r\n\/* NORMAL MAP MARKER *\/\r\n\r\n.bno-stays-map-marker {\r\n  display: flex;\r\n\r\n  align-items: center;\r\n  justify-content: center;\r\n\r\n  width: 34px;\r\n  height: 34px;\r\n\r\n  border: 3px solid #fff;\r\n  border-radius: 50%;\r\n\r\n  background: #0C1A38;\r\n\r\n  color: #fff;\r\n\r\n  font-size: 12px;\r\n  font-weight: 800;\r\n\r\n  box-shadow:\r\n    0 3px 13px rgba(12,26,56,.30);\r\n}\r\n\r\n\r\n\/* PRICE MARKER - READY FOR LATER *\/\r\n\r\n.bno-stays-price-marker {\r\n  display: inline-flex;\r\n\r\n  align-items: center;\r\n  justify-content: center;\r\n\r\n  min-width: 78px;\r\n  height: 34px;\r\n\r\n  padding: 0 10px;\r\n\r\n  border: 2px solid #fff;\r\n  border-radius: 999px;\r\n\r\n  background: #0C1A38;\r\n\r\n  color: #fff;\r\n\r\n  white-space: nowrap;\r\n\r\n  font-size: 11px;\r\n  font-weight: 800;\r\n\r\n  box-shadow:\r\n    0 3px 13px rgba(12,26,56,.28);\r\n}\r\n\r\n\r\n\/* POPUP *\/\r\n\r\n.bno-stays-map-popup {\r\n  min-width: 190px;\r\n}\r\n\r\n.bno-stays-map-popup strong {\r\n  display: block;\r\n\r\n  margin-bottom: 5px;\r\n\r\n  color: #172238;\r\n\r\n  font-size: 13px;\r\n  line-height: 1.35;\r\n}\r\n\r\n.bno-stays-map-popup span {\r\n  display: block;\r\n\r\n  color: #657287;\r\n\r\n  font-size: 12px;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   SHOW MORE\r\n   ========================================================= *\/\r\n\r\n.bno-stays-more-wrap {\r\n  display: flex;\r\n\r\n  justify-content: center;\r\n\r\n  padding-top: 25px;\r\n}\r\n\r\n.bno-stays-more {\r\n  min-width: 210px;\r\n  min-height: 49px;\r\n\r\n  padding: 0 20px;\r\n\r\n  border: 1px solid #0C1A38;\r\n  border-radius: 11px;\r\n\r\n  background: #fff;\r\n\r\n  color: #0C1A38;\r\n\r\n  font: inherit;\r\n  font-weight: 750;\r\n\r\n  cursor: pointer;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   MOBILE SWITCH\r\n   ========================================================= *\/\r\n\r\n.bno-stays-mobile-switch {\r\n  display: none;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   MODAL\r\n   ========================================================= *\/\r\n\r\n.bno-stays-modal {\r\n  position: fixed;\r\n\r\n  inset: 0;\r\n\r\n  z-index: 999999;\r\n}\r\n\r\n.bno-stays-modal__backdrop {\r\n  position: absolute;\r\n\r\n  inset: 0;\r\n\r\n  background: rgba(5,14,31,.64);\r\n\r\n  backdrop-filter: blur(3px);\r\n}\r\n\r\n.bno-stays-modal__dialog {\r\n  position: absolute;\r\n\r\n  z-index: 2;\r\n\r\n  top: 3vh;\r\n  bottom: 3vh;\r\n  left: 50%;\r\n\r\n  width: min(\r\n    1060px,\r\n    calc(100% - 28px)\r\n  );\r\n\r\n  overflow-y: auto;\r\n\r\n  padding: 28px;\r\n\r\n  transform: translateX(-50%);\r\n\r\n  border-radius: 22px;\r\n\r\n  background: #fff;\r\n\r\n  box-shadow:\r\n    0 30px 90px rgba(0,0,0,.25);\r\n}\r\n\r\n.bno-stays-modal__close {\r\n  position: sticky;\r\n\r\n  z-index: 20;\r\n\r\n  top: 0;\r\n\r\n  float: right;\r\n\r\n  width: 44px;\r\n  height: 44px;\r\n\r\n  margin: 0 0 -44px;\r\n\r\n  border: 0;\r\n  border-radius: 50%;\r\n\r\n  background: #0C1A38;\r\n\r\n  color: #fff;\r\n\r\n  font-size: 27px;\r\n  line-height: 1;\r\n\r\n  cursor: pointer;\r\n}\r\n\r\n\r\n\/* MODAL HEADER *\/\r\n\r\n.bno-stays-modal-title h2 {\r\n  max-width: 850px;\r\n\r\n  margin: 6px 60px 9px 0;\r\n\r\n  color: #172238;\r\n\r\n  font-size: clamp(\r\n    29px,\r\n    4vw,\r\n    43px\r\n  );\r\n\r\n  line-height: 1.12;\r\n}\r\n\r\n.bno-stays-modal-meta {\r\n  display: flex;\r\n  flex-wrap: wrap;\r\n\r\n  align-items: center;\r\n\r\n  gap: 10px;\r\n\r\n  margin-bottom: 24px;\r\n\r\n  color: #667288;\r\n}\r\n\r\n.bno-stays-modal-stars {\r\n  color: #c98513;\r\n\r\n  letter-spacing: 1px;\r\n}\r\n\r\n\r\n\/* GALLERY *\/\r\n\r\n.bno-stays-gallery {\r\n  display: grid;\r\n\r\n  grid-template-columns:\r\n    2fr\r\n    1fr\r\n    1fr;\r\n\r\n  grid-template-rows:\r\n    190px\r\n    190px;\r\n\r\n  gap: 7px;\r\n\r\n  margin-bottom: 30px;\r\n\r\n  overflow: hidden;\r\n\r\n  border-radius: 17px;\r\n\r\n  background: #e8edf2;\r\n}\r\n\r\n.bno-stays-gallery figure {\r\n  position: relative;\r\n\r\n  min-width: 0;\r\n\r\n  margin: 0;\r\n\r\n  overflow: hidden;\r\n\r\n  background: #e7ebf0;\r\n}\r\n\r\n.bno-stays-gallery figure:first-child {\r\n  grid-row:\r\n    1 \/ 3;\r\n}\r\n\r\n.bno-stays-gallery img {\r\n  width: 100%;\r\n  height: 100%;\r\n\r\n  object-fit: cover;\r\n}\r\n\r\n\r\n\/* MODAL BODY *\/\r\n\r\n.bno-stays-modal-grid {\r\n  display: grid;\r\n\r\n  grid-template-columns:\r\n    minmax(0,1fr)\r\n    285px;\r\n\r\n  gap: 38px;\r\n\r\n  align-items: start;\r\n}\r\n\r\n.bno-stays-modal-copy h3 {\r\n  margin: 0 0 12px;\r\n\r\n  color: #172238;\r\n\r\n  font-size: 23px;\r\n}\r\n\r\n.bno-stays-modal-copy p {\r\n  margin: 0;\r\n\r\n  color: #58667a;\r\n\r\n  line-height: 1.72;\r\n\r\n  white-space: pre-line;\r\n}\r\n\r\n.bno-stays-modal-side {\r\n  padding: 20px;\r\n\r\n  border-radius: 15px;\r\n\r\n  background: #f3f6f9;\r\n}\r\n\r\n.bno-stays-modal-side strong {\r\n  display: block;\r\n\r\n  margin-bottom: 8px;\r\n\r\n  color: #172238;\r\n}\r\n\r\n.bno-stays-modal-address {\r\n  color: #5d6a7d;\r\n\r\n  font-size: 13px;\r\n  line-height: 1.6;\r\n}\r\n\r\n\r\n\/* ROOMS COMING *\/\r\n\r\n.bno-stays-room-coming {\r\n  margin-top: 38px;\r\n\r\n  padding-top: 28px;\r\n\r\n  border-top:\r\n    1px solid #dfe5ec;\r\n}\r\n\r\n.bno-stays-room-coming h3 {\r\n  margin: 5px 0 12px;\r\n\r\n  color: #172238;\r\n\r\n  font-size: 23px;\r\n}\r\n\r\n.bno-stays-room-coming-box {\r\n  padding: 18px;\r\n\r\n  border-radius: 12px;\r\n\r\n  background: #f3f6f9;\r\n\r\n  color: #5e6c80;\r\n\r\n  line-height: 1.6;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   RESPONSIVE\r\n   ========================================================= *\/\r\n\r\n@media (max-width: 900px) {\r\n\r\n  .bno-stays-filters {\r\n    grid-template-columns:\r\n      1fr\r\n      1fr;\r\n  }\r\n\r\n  .bno-stays-field:first-child {\r\n    grid-column:\r\n      1 \/ 3;\r\n  }\r\n\r\n  .bno-stays-layout {\r\n    grid-template-columns:\r\n      1fr;\r\n  }\r\n\r\n  .bno-stays-map-column {\r\n    display: none;\r\n\r\n    position: static;\r\n  }\r\n\r\n  .bno-stays-map-column.is-mobile-active {\r\n    display: block;\r\n  }\r\n\r\n  .bno-stays-list-column.is-mobile-hidden {\r\n    display: none;\r\n  }\r\n\r\n  .bno-stays-mobile-switch {\r\n    display: flex;\r\n\r\n    gap: 7px;\r\n\r\n    margin-top: 15px;\r\n  }\r\n\r\n  .bno-stays-mobile-switch button {\r\n    flex: 1;\r\n\r\n    min-height: 43px;\r\n\r\n    border: 1px solid #ccd6e2;\r\n    border-radius: 9px;\r\n\r\n    background: #fff;\r\n\r\n    color: #526176;\r\n\r\n    font-weight: 700;\r\n\r\n    cursor: pointer;\r\n  }\r\n\r\n  .bno-stays-mobile-switch button.is-active {\r\n    border-color: #0C1A38;\r\n\r\n    background: #0C1A38;\r\n\r\n    color: #fff;\r\n  }\r\n\r\n  .bno-stays-map-card {\r\n    height: 65vh;\r\n\r\n    min-height: 450px;\r\n  }\r\n\r\n}\r\n\r\n\r\n@media (max-width: 650px) {\r\n\r\n  .bno-stays-filters {\r\n    grid-template-columns:\r\n      1fr;\r\n  }\r\n\r\n  .bno-stays-field:first-child {\r\n    grid-column: auto;\r\n  }\r\n\r\n  .bno-stays-hotel {\r\n    grid-template-columns:\r\n      1fr;\r\n  }\r\n\r\n  .bno-stays-hotel__image {\r\n    min-height: 240px;\r\n  }\r\n\r\n  .bno-stays-hotel__actions {\r\n    align-items: stretch;\r\n    flex-direction: column;\r\n  }\r\n\r\n  .bno-stays-open {\r\n    width: 100%;\r\n  }\r\n\r\n  .bno-stays-modal__dialog {\r\n    top: 8px;\r\n    bottom: 8px;\r\n\r\n    padding: 19px;\r\n\r\n    border-radius: 16px;\r\n  }\r\n\r\n  .bno-stays-gallery {\r\n    grid-template-columns:\r\n      1fr\r\n      1fr;\r\n\r\n    grid-template-rows:\r\n      235px\r\n      130px;\r\n  }\r\n\r\n  .bno-stays-gallery figure:first-child {\r\n    grid-column:\r\n      1 \/ 3;\r\n\r\n    grid-row: auto;\r\n  }\r\n\r\n  .bno-stays-gallery figure:nth-child(n+4) {\r\n    display: none;\r\n  }\r\n\r\n  .bno-stays-modal-grid {\r\n    grid-template-columns:\r\n      1fr;\r\n  }\r\n\r\n}\r\n\r\n<\/style>\r\n\r\n\r\n<script>\r\n(function () {\r\n\r\n  const section =\r\n    document.querySelector(\r\n      '[data-bno-stays-preview]'\r\n    );\r\n\r\n  if (\r\n    !section ||\r\n    section.dataset.initialized === '1'\r\n  ) {\r\n    return;\r\n  }\r\n\r\n  section.dataset.initialized = '1';\r\n\r\n\r\n  \/* =======================================================\r\n     CONFIG\r\n     ======================================================= *\/\r\n\r\n  const apiBase =\r\n    String(\r\n      section.dataset.apiBase || ''\r\n    ).replace(\/\\\/+$\/, '');\r\n\r\n  const destination =\r\n    String(\r\n      section.dataset.destination || 'dubai'\r\n    )\r\n      .trim()\r\n      .toLowerCase();\r\n\r\n  const lang =\r\n    String(\r\n      section.dataset.lang || 'de'\r\n    ).trim();\r\n\r\n  const initialCount =\r\n    Number(\r\n      section.dataset.initialCount || 12\r\n    );\r\n\r\n  const pageSize =\r\n    Number(\r\n      section.dataset.pageSize || 200\r\n    );\r\n\r\n\r\n  \/* =======================================================\r\n     ELEMENTS\r\n     ======================================================= *\/\r\n\r\n  const listEl =\r\n    section.querySelector(\r\n      '[data-hotel-list]'\r\n    );\r\n\r\n  const statusEl =\r\n    section.querySelector(\r\n      '[data-status]'\r\n    );\r\n\r\n  const countEl =\r\n    section.querySelector(\r\n      '[data-result-count]'\r\n    );\r\n\r\n  const searchInput =\r\n    section.querySelector(\r\n      '[data-hotel-search]'\r\n    );\r\n\r\n  const areaFilter =\r\n    section.querySelector(\r\n      '[data-area-filter]'\r\n    );\r\n\r\n  const areaField =\r\n    section.querySelector(\r\n      '[data-area-field]'\r\n    );\r\n\r\n  const starFilter =\r\n    section.querySelector(\r\n      '[data-star-filter]'\r\n    );\r\n\r\n  const moreWrap =\r\n    section.querySelector(\r\n      '[data-more-wrap]'\r\n    );\r\n\r\n  const moreButton =\r\n    section.querySelector(\r\n      '[data-more]'\r\n    );\r\n\r\n  const mapColumn =\r\n    section.querySelector(\r\n      '[data-map-column]'\r\n    );\r\n\r\n  const listColumn =\r\n    section.querySelector(\r\n      '[data-list-column]'\r\n    );\r\n\r\n  const showMapButton =\r\n    section.querySelector(\r\n      '[data-show-map]'\r\n    );\r\n\r\n  const showListButton =\r\n    section.querySelector(\r\n      '[data-show-list]'\r\n    );\r\n\r\n  const mapNote =\r\n    section.querySelector(\r\n      '[data-map-note]'\r\n    );\r\n\r\n  const modal =\r\n    section.querySelector(\r\n      '[data-hotel-modal]'\r\n    );\r\n\r\n  const modalContent =\r\n    section.querySelector(\r\n      '[data-modal-content]'\r\n    );\r\n\r\n\r\n  \/* =======================================================\r\n     STATE\r\n     ======================================================= *\/\r\n\r\n  let allHotels = [];\r\n\r\n  let visibleCount =\r\n    initialCount;\r\n\r\n  let map = null;\r\n\r\n  let markerRecords = [];\r\n\r\n  let leafletPromise = null;\r\n\r\n  let oldOverflow = '';\r\n\r\n\r\n  \/* =======================================================\r\n     HELPERS\r\n     ======================================================= *\/\r\n\r\n  function esc(value) {\r\n\r\n    return String(\r\n      value == null ? '' : value\r\n    )\r\n      .replace(\/&\/g, '&amp;')\r\n      .replace(\/<\/g, '&lt;')\r\n      .replace(\/>\/g, '&gt;')\r\n      .replace(\/\"\/g, '&quot;')\r\n      .replace(\/'\/g, '&#039;');\r\n\r\n  }\r\n\r\n\r\n  function clean(value) {\r\n\r\n    return String(\r\n      value == null ? '' : value\r\n    ).trim();\r\n\r\n  }\r\n\r\n\r\n  function numberOrNull(value) {\r\n\r\n    if (\r\n      value === null ||\r\n      value === undefined ||\r\n      value === ''\r\n    ) {\r\n      return null;\r\n    }\r\n\r\n    const parsed =\r\n      Number(value);\r\n\r\n    return Number.isFinite(parsed)\r\n      ? parsed\r\n      : null;\r\n\r\n  }\r\n\r\n\r\n  function normalizePhoto(photo) {\r\n\r\n    if (!photo) {\r\n      return '';\r\n    }\r\n\r\n    if (\r\n      typeof photo === 'string'\r\n    ) {\r\n      return clean(photo);\r\n    }\r\n\r\n    return clean(\r\n      photo.url ||\r\n      photo.src ||\r\n      photo.href ||\r\n      photo.image_url ||\r\n      photo.imageUrl ||\r\n      ''\r\n    );\r\n\r\n  }\r\n\r\n\r\n  function normalizePhotos(value) {\r\n\r\n    if (\r\n      !Array.isArray(value)\r\n    ) {\r\n      return [];\r\n    }\r\n\r\n    return value\r\n      .map(normalizePhoto)\r\n      .filter(Boolean);\r\n\r\n  }\r\n\r\n\r\n  function addressPart(\r\n    address,\r\n    keys\r\n  ) {\r\n\r\n    if (\r\n      !address ||\r\n      typeof address !== 'object'\r\n    ) {\r\n      return '';\r\n    }\r\n\r\n    for (\r\n      const key of keys\r\n    ) {\r\n\r\n      const value =\r\n        clean(\r\n          address[key]\r\n        );\r\n\r\n      if (value) {\r\n        return value;\r\n      }\r\n\r\n    }\r\n\r\n    return '';\r\n\r\n  }\r\n\r\n\r\n  function formatAddress(address) {\r\n\r\n    if (!address) {\r\n      return '';\r\n    }\r\n\r\n    if (\r\n      typeof address === 'string'\r\n    ) {\r\n      return clean(address);\r\n    }\r\n\r\n    const parts = [\r\n\r\n      addressPart(\r\n        address,\r\n        [\r\n          'line_one',\r\n          'line1',\r\n          'address_line_1'\r\n        ]\r\n      ),\r\n\r\n      addressPart(\r\n        address,\r\n        [\r\n          'line_two',\r\n          'line2',\r\n          'address_line_2'\r\n        ]\r\n      ),\r\n\r\n      addressPart(\r\n        address,\r\n        [\r\n          'postal_code',\r\n          'postalCode'\r\n        ]\r\n      ),\r\n\r\n      addressPart(\r\n        address,\r\n        [\r\n          'city_name',\r\n          'city'\r\n        ]\r\n      ),\r\n\r\n      addressPart(\r\n        address,\r\n        [\r\n          'region',\r\n          'state'\r\n        ]\r\n      )\r\n\r\n    ]\r\n      .filter(Boolean);\r\n\r\n    return Array.from(\r\n      new Set(parts)\r\n    ).join(', ');\r\n\r\n  }\r\n\r\n\r\n  function getArea(address) {\r\n\r\n    if (\r\n      !address ||\r\n      typeof address !== 'object'\r\n    ) {\r\n      return '';\r\n    }\r\n\r\n    return clean(\r\n      address.neighbourhood ||\r\n      address.neighborhood ||\r\n      address.district ||\r\n      address.area ||\r\n      address.line_two ||\r\n      address.line2 ||\r\n      ''\r\n    );\r\n\r\n  }\r\n\r\n\r\n  function normalizeHotel(raw) {\r\n\r\n    const photos =\r\n      normalizePhotos(\r\n        raw.photos\r\n      );\r\n\r\n    \/*\r\n      priceText er med allerede n\u00e5, men inventory-endepunktet\r\n      returnerer ikke pris per i dag.\r\n\r\n      N\u00e5r vi senere kobler resultatet mot et faktisk priss\u00f8k,\r\n      kan backend returnere eksempelvis:\r\n      priceText: \"1 895 kr\"\r\n\r\n      Da g\u00e5r kartet automatisk over til prisbobler ved zoom >= 12.\r\n    *\/\r\n\r\n    const priceText =\r\n      clean(\r\n        raw.priceText ||\r\n        raw.fromPriceText ||\r\n        raw.lowestPriceText ||\r\n        ''\r\n      );\r\n\r\n    return {\r\n\r\n      id:\r\n        clean(\r\n          raw.id\r\n        ),\r\n\r\n      name:\r\n        clean(\r\n          raw.name\r\n        ) || 'Hotel',\r\n\r\n      description:\r\n        clean(\r\n          raw.description\r\n        ),\r\n\r\n      rating:\r\n        numberOrNull(\r\n          raw.rating\r\n        ),\r\n\r\n      reviewScore:\r\n        numberOrNull(\r\n          raw.reviewScore\r\n        ),\r\n\r\n      reviewCount:\r\n        numberOrNull(\r\n          raw.reviewCount\r\n        ),\r\n\r\n      photos,\r\n\r\n      coverImage:\r\n        photos[0] || '',\r\n\r\n      latitude:\r\n        numberOrNull(\r\n          raw.latitude\r\n        ),\r\n\r\n      longitude:\r\n        numberOrNull(\r\n          raw.longitude\r\n        ),\r\n\r\n      addressRaw:\r\n        raw.address || null,\r\n\r\n      address:\r\n        formatAddress(\r\n          raw.address\r\n        ),\r\n\r\n      area:\r\n        getArea(\r\n          raw.address\r\n        ),\r\n\r\n      priceText\r\n\r\n    };\r\n\r\n  }\r\n\r\n\r\n  function renderStars(value) {\r\n\r\n    if (!value) {\r\n      return '';\r\n    }\r\n\r\n    const count =\r\n      Math.max(\r\n        1,\r\n        Math.min(\r\n          5,\r\n          Math.round(value)\r\n        )\r\n      );\r\n\r\n    return '\u2605'.repeat(count);\r\n\r\n  }\r\n\r\n\r\n  function setStatus(\r\n    text,\r\n    isError\r\n  ) {\r\n\r\n    statusEl.textContent =\r\n      text || '';\r\n\r\n    statusEl.classList.toggle(\r\n      'is-error',\r\n      Boolean(isError)\r\n    );\r\n\r\n  }\r\n\r\n\r\n  \/* =======================================================\r\n     API\r\n     ======================================================= *\/\r\n\r\n  async function fetchInventoryPage(\r\n    after\r\n  ) {\r\n\r\n    const url =\r\n      new URL(\r\n        apiBase +\r\n        '\/api\/stays\/inventory-page\/' +\r\n        encodeURIComponent(destination)\r\n      );\r\n\r\n\r\n    url.searchParams.set(\r\n      'limit',\r\n      String(pageSize)\r\n    );\r\n\r\n\r\n    \/*\r\n      Viktig:\r\n      send spr\u00e5k til BNO API.\r\n    *\/\r\n\r\n    url.searchParams.set(\r\n      'lang',\r\n      lang\r\n    );\r\n\r\n\r\n    if (after) {\r\n\r\n      url.searchParams.set(\r\n        'after',\r\n        after\r\n      );\r\n\r\n    }\r\n\r\n\r\n    const response =\r\n      await fetch(\r\n        url.toString(),\r\n        {\r\n          method: 'GET',\r\n\r\n          headers: {\r\n            Accept:\r\n              'application\/json'\r\n          }\r\n        }\r\n      );\r\n\r\n\r\n    let json;\r\n\r\n\r\n    try {\r\n\r\n      json =\r\n        await response.json();\r\n\r\n    } catch (error) {\r\n\r\n      throw new Error(\r\n        'Ung\u00fcltige Antwort vom Server.'\r\n      );\r\n\r\n    }\r\n\r\n\r\n    if (!response.ok) {\r\n\r\n      throw new Error(\r\n        json?.detail ||\r\n        json?.error ||\r\n        (\r\n          'HTTP ' +\r\n          response.status\r\n        )\r\n      );\r\n\r\n    }\r\n\r\n\r\n    if (\r\n      !json ||\r\n      json.ok !== true ||\r\n      !Array.isArray(json.data)\r\n    ) {\r\n\r\n      throw new Error(\r\n        'Unerwartete Antwort vom Server.'\r\n      );\r\n\r\n    }\r\n\r\n\r\n    return json;\r\n\r\n  }\r\n\r\n\r\n  async function loadInventory() {\r\n\r\n    try {\r\n\r\n      setStatus(\r\n        'Hotels in Dubai werden geladen \u2026',\r\n        false\r\n      );\r\n\r\n\r\n      const byId =\r\n        new Map();\r\n\r\n      let after = '';\r\n\r\n      let pages = 0;\r\n\r\n\r\n      do {\r\n\r\n        pages += 1;\r\n\r\n\r\n        if (pages > 1) {\r\n\r\n          setStatus(\r\n            'Weitere Hotels werden geladen \u2026',\r\n            false\r\n          );\r\n\r\n        }\r\n\r\n\r\n        const response =\r\n          await fetchInventoryPage(\r\n            after\r\n          );\r\n\r\n\r\n        response.data\r\n          .map(normalizeHotel)\r\n          .filter(\r\n            hotel =>\r\n              hotel.id &&\r\n              hotel.name\r\n          )\r\n          .forEach(\r\n            hotel => {\r\n\r\n              byId.set(\r\n                hotel.id,\r\n                hotel\r\n              );\r\n\r\n            }\r\n          );\r\n\r\n\r\n        allHotels =\r\n          Array.from(\r\n            byId.values()\r\n          );\r\n\r\n\r\n        updateAreaFilter();\r\n\r\n        render();\r\n\r\n\r\n        after =\r\n          clean(\r\n            response\r\n              ?.pagination\r\n              ?.nextAfter\r\n          );\r\n\r\n\r\n        \/*\r\n          Safety.\r\n          Dubai skal normalt ikke trenge mange sider\r\n          n\u00e5r limit=200.\r\n        *\/\r\n\r\n        if (pages >= 10) {\r\n          break;\r\n        }\r\n\r\n\r\n      } while (after);\r\n\r\n\r\n      setStatus(\r\n        '',\r\n        false\r\n      );\r\n\r\n\r\n      updateAreaFilter();\r\n\r\n      render();\r\n\r\n\r\n    } catch (error) {\r\n\r\n      console.error(\r\n        '[BNO STAYS]',\r\n        error\r\n      );\r\n\r\n\r\n      setStatus(\r\n        'Die Hotels konnten derzeit nicht geladen werden. Bitte versuchen Sie es gleich noch einmal.',\r\n        true\r\n      );\r\n\r\n\r\n      countEl.textContent =\r\n        'Hotels konnten nicht geladen werden';\r\n\r\n    }\r\n\r\n  }\r\n\r\n\r\n  \/* =======================================================\r\n     FILTERS\r\n     ======================================================= *\/\r\n\r\n  function updateAreaFilter() {\r\n\r\n    const selected =\r\n      areaFilter.value;\r\n\r\n\r\n    const areas =\r\n      Array.from(\r\n        new Set(\r\n          allHotels\r\n            .map(\r\n              hotel =>\r\n                hotel.area\r\n            )\r\n            .filter(\r\n              area =>\r\n                area &&\r\n                area.toLowerCase() !== 'dubai'\r\n            )\r\n        )\r\n      )\r\n        .sort(\r\n          (a,b) =>\r\n            a.localeCompare(\r\n              b,\r\n              'de'\r\n            )\r\n        );\r\n\r\n\r\n    areaFilter.innerHTML =\r\n      '<option value=\"\">Alle Stadtteile<\/option>' +\r\n\r\n      areas\r\n        .map(\r\n          area => (\r\n            '<option value=\"' +\r\n            esc(area) +\r\n            '\">' +\r\n            esc(area) +\r\n            '<\/option>'\r\n          )\r\n        )\r\n        .join('');\r\n\r\n\r\n    if (\r\n      areas.includes(selected)\r\n    ) {\r\n      areaFilter.value =\r\n        selected;\r\n    }\r\n\r\n\r\n    \/*\r\n      Hvis vi ikke f\u00e5r gode omr\u00e5defelter fra kilden,\r\n      skjuler vi omr\u00e5de-filteret fremfor \u00e5 vise\r\n      et filter som ikke gj\u00f8r noe.\r\n    *\/\r\n\r\n    areaField.hidden =\r\n      areas.length < 2;\r\n\r\n  }\r\n\r\n\r\n  function getFilteredHotels() {\r\n\r\n    const query =\r\n      clean(\r\n        searchInput.value\r\n      ).toLowerCase();\r\n\r\n\r\n    const selectedArea =\r\n      clean(\r\n        areaFilter.value\r\n      );\r\n\r\n\r\n    const minimumStars =\r\n      Number(\r\n        starFilter.value || 0\r\n      );\r\n\r\n\r\n    return allHotels.filter(\r\n      hotel => {\r\n\r\n\r\n        if (query) {\r\n\r\n          const haystack =\r\n            [\r\n              hotel.name,\r\n              hotel.description,\r\n              hotel.area,\r\n              hotel.address\r\n            ]\r\n              .join(' ')\r\n              .toLowerCase();\r\n\r\n\r\n          if (\r\n            !haystack.includes(\r\n              query\r\n            )\r\n          ) {\r\n            return false;\r\n          }\r\n\r\n        }\r\n\r\n\r\n        if (\r\n          selectedArea &&\r\n          hotel.area !== selectedArea\r\n        ) {\r\n          return false;\r\n        }\r\n\r\n\r\n        if (\r\n          minimumStars &&\r\n          (\r\n            !hotel.rating ||\r\n            hotel.rating < minimumStars\r\n          )\r\n        ) {\r\n          return false;\r\n        }\r\n\r\n\r\n        return true;\r\n\r\n      }\r\n    );\r\n\r\n  }\r\n\r\n\r\n  \/* =======================================================\r\n     HOTEL CARD\r\n     ======================================================= *\/\r\n\r\n  function hotelCard(\r\n    hotel\r\n  ) {\r\n\r\n    const stars =\r\n      renderStars(\r\n        hotel.rating\r\n      );\r\n\r\n\r\n    const imageHtml =\r\n\r\n      hotel.coverImage\r\n\r\n        ? (\r\n          '<img ' + 'src=\"' + esc(hotel.coverImage) + '\" ' + 'alt=\"' + esc(hotel.name) + '\" ' + 'loading=\"lazy\"' + '>'\r\n        )\r\n\r\n        : (\r\n          '<div class=\"bno-stays-image-placeholder\">' +\r\n            'Bild folgt in K\u00fcrze' +\r\n          '<\/div>'\r\n        );\r\n\r\n\r\n    const reviewHtml =\r\n\r\n      hotel.reviewScore !== null\r\n\r\n        ? (\r\n          '<div class=\"bno-stays-rating\">' +\r\n\r\n            '<span class=\"bno-stays-score\">' +\r\n              esc(\r\n                hotel.reviewScore.toFixed(1)\r\n              ) +\r\n            '<\/span>' +\r\n\r\n            (\r\n              hotel.reviewCount !== null\r\n\r\n                ? (\r\n                  '<span class=\"bno-stays-review-count\">' +\r\n                    esc(\r\n                      hotel.reviewCount\r\n                    ) +\r\n                    ' Bewertungen' +\r\n                  '<\/span>'\r\n                )\r\n\r\n                : ''\r\n            ) +\r\n\r\n          '<\/div>'\r\n        )\r\n\r\n        : '';\r\n\r\n\r\n    return (\r\n\r\n      '<article ' + 'class=\"bno-stays-hotel\" ' + 'data-hotel-id=\"' + esc(hotel.id) + '\">' +\r\n\r\n\r\n        '<div class=\"bno-stays-hotel__image\">' +\r\n\r\n          '<span class=\"bno-stays-badge\">' +\r\n            'Demn\u00e4chst verf\u00fcgbar' +\r\n          '<\/span>' +\r\n\r\n          imageHtml +\r\n\r\n        '<\/div>' +\r\n\r\n\r\n        '<div class=\"bno-stays-hotel__body\">' +\r\n\r\n\r\n          '<div class=\"bno-stays-stars\">' +\r\n            esc(stars) +\r\n          '<\/div>' +\r\n\r\n\r\n          '<h3>' +\r\n            esc(hotel.name) +\r\n          '<\/h3>' +\r\n\r\n\r\n          (\r\n            hotel.area ||\r\n            hotel.address\r\n\r\n              ? (\r\n                '<div class=\"bno-stays-location\">' +\r\n                  esc(\r\n                    hotel.area ||\r\n                    hotel.address\r\n                  ) +\r\n                '<\/div>'\r\n              )\r\n\r\n              : ''\r\n          ) +\r\n\r\n\r\n          reviewHtml +\r\n\r\n\r\n          (\r\n            hotel.description\r\n\r\n              ? (\r\n                '<p class=\"bno-stays-description\">' +\r\n                  esc(hotel.description) +\r\n                '<\/p>'\r\n              )\r\n\r\n              : ''\r\n          ) +\r\n\r\n\r\n          '<div class=\"bno-stays-hotel__actions\">' +\r\n\r\n            '<span class=\"bno-stays-small-status\">' +\r\n              'Hotelinformationen' +\r\n            '<\/span>' +\r\n\r\n            '<button ' + 'type=\"button\" ' + 'class=\"bno-stays-open\" ' + 'data-open-hotel=\"' + esc(hotel.id) + '\">' +\r\n              'Hotel ansehen' +\r\n            '<\/button>' +\r\n\r\n          '<\/div>' +\r\n\r\n\r\n        '<\/div>' +\r\n\r\n\r\n      '<\/article>'\r\n\r\n    );\r\n\r\n  }\r\n\r\n\r\n  \/* =======================================================\r\n     RENDER\r\n     ======================================================= *\/\r\n\r\n  function render() {\r\n\r\n    const filtered =\r\n      getFilteredHotels();\r\n\r\n\r\n    const visible =\r\n      filtered.slice(\r\n        0,\r\n        visibleCount\r\n      );\r\n\r\n\r\n    countEl.textContent =\r\n\r\n      filtered.length === 1\r\n\r\n        ? '1 Hotel'\r\n\r\n        : (\r\n          filtered.length +\r\n          ' Hotels'\r\n        );\r\n\r\n\r\n    listEl.innerHTML =\r\n\r\n      visible.length\r\n\r\n        ? visible\r\n            .map(hotelCard)\r\n            .join('')\r\n\r\n        : (\r\n          '<div class=\"bno-stays-status\">' +\r\n            'Keine Hotels entsprechen Ihrer Suche.' +\r\n          '<\/div>'\r\n        );\r\n\r\n\r\n    moreWrap.hidden =\r\n      visible.length >=\r\n      filtered.length;\r\n\r\n\r\n    updateMapMarkers(\r\n      visible\r\n    );\r\n\r\n  }\r\n\r\n\r\n  \/* =======================================================\r\n     LEAFLET\r\n     ======================================================= *\/\r\n\r\n  function ensureLeaflet() {\r\n\r\n    if (\r\n      window.L &&\r\n      window.L.map\r\n    ) {\r\n      return Promise.resolve();\r\n    }\r\n\r\n\r\n    if (leafletPromise) {\r\n      return leafletPromise;\r\n    }\r\n\r\n\r\n    leafletPromise =\r\n      new Promise(\r\n        function(\r\n          resolve,\r\n          reject\r\n        ) {\r\n\r\n\r\n          if (\r\n            !document.querySelector(\r\n              'link[data-bno-leaflet]'\r\n            )\r\n          ) {\r\n\r\n            const link =\r\n              document.createElement(\r\n                'link'\r\n              );\r\n\r\n            link.rel =\r\n              'stylesheet';\r\n\r\n            link.href =\r\n              'https:\/\/unpkg.com\/leaflet@1.9.4\/dist\/leaflet.css';\r\n\r\n            link.dataset.bnoLeaflet =\r\n              '1';\r\n\r\n            document.head.appendChild(\r\n              link\r\n            );\r\n\r\n          }\r\n\r\n\r\n          if (\r\n            window.L &&\r\n            window.L.map\r\n          ) {\r\n\r\n            resolve();\r\n\r\n            return;\r\n\r\n          }\r\n\r\n\r\n          let script =\r\n            document.querySelector(\r\n              'script[data-bno-leaflet]'\r\n            );\r\n\r\n\r\n          if (script) {\r\n\r\n            script.addEventListener(\r\n              'load',\r\n              resolve,\r\n              { once: true }\r\n            );\r\n\r\n            script.addEventListener(\r\n              'error',\r\n              reject,\r\n              { once: true }\r\n            );\r\n\r\n            return;\r\n\r\n          }\r\n\r\n\r\n          script =\r\n            document.createElement(\r\n              'script'\r\n            );\r\n\r\n          script.src =\r\n            'https:\/\/unpkg.com\/leaflet@1.9.4\/dist\/leaflet.js';\r\n\r\n          script.dataset.bnoLeaflet =\r\n            '1';\r\n\r\n          script.onload =\r\n            resolve;\r\n\r\n          script.onerror =\r\n            reject;\r\n\r\n          document.head.appendChild(\r\n            script\r\n          );\r\n\r\n        }\r\n      );\r\n\r\n\r\n    return leafletPromise;\r\n\r\n  }\r\n\r\n\r\n  async function ensureMap() {\r\n\r\n    if (map) {\r\n      return map;\r\n    }\r\n\r\n\r\n    try {\r\n\r\n      await ensureLeaflet();\r\n\r\n\r\n      map =\r\n        window.L.map(\r\n          'bno-dubai-map',\r\n          {\r\n            scrollWheelZoom:\r\n              false\r\n          }\r\n        );\r\n\r\n\r\n      map.setView(\r\n        [\r\n          25.2048,\r\n          55.2708\r\n        ],\r\n        10\r\n      );\r\n\r\n\r\n      window.L\r\n        .tileLayer(\r\n          'https:\/\/{s}.tile.openstreetmap.org\/{z}\/{x}\/{y}.png',\r\n          {\r\n            maxZoom: 19,\r\n\r\n            attribution:\r\n              '&copy; OpenStreetMap contributors'\r\n          }\r\n        )\r\n        .addTo(map);\r\n\r\n\r\n      \/*\r\n        N\u00e5r priser senere finnes p\u00e5 hotellobjektene,\r\n        oppdaterer vi mark\u00f8rene automatisk ved zoom.\r\n      *\/\r\n\r\n      map.on(\r\n        'zoomend',\r\n        refreshMarkerIcons\r\n      );\r\n\r\n\r\n      return map;\r\n\r\n\r\n    } catch (error) {\r\n\r\n      console.error(\r\n        '[BNO MAP]',\r\n        error\r\n      );\r\n\r\n\r\n      mapNote.textContent =\r\n        'Karteet kunne ikke lastes.';\r\n\r\n\r\n      return null;\r\n\r\n    }\r\n\r\n  }\r\n\r\n\r\n  function markerHtml(\r\n    hotel,\r\n    index\r\n  ) {\r\n\r\n    const zoom =\r\n      map\r\n        ? map.getZoom()\r\n        : 10;\r\n\r\n\r\n    if (\r\n      zoom >= 12 &&\r\n      hotel.priceText\r\n    ) {\r\n\r\n      return (\r\n        '<div class=\"bno-stays-price-marker\">' +\r\n          esc(\r\n            hotel.priceText\r\n          ) +\r\n        '<\/div>'\r\n      );\r\n\r\n    }\r\n\r\n\r\n    return (\r\n      '<div class=\"bno-stays-map-marker\">' +\r\n        (index + 1) +\r\n      '<\/div>'\r\n    );\r\n\r\n  }\r\n\r\n\r\n  function markerIcon(\r\n    hotel,\r\n    index\r\n  ) {\r\n\r\n    const usePrice =\r\n      map &&\r\n      map.getZoom() >= 12 &&\r\n      hotel.priceText;\r\n\r\n\r\n    return window.L.divIcon(\r\n      {\r\n\r\n        className: '',\r\n\r\n        html:\r\n          markerHtml(\r\n            hotel,\r\n            index\r\n          ),\r\n\r\n        iconSize:\r\n          usePrice\r\n            ? [82,34]\r\n            : [34,34],\r\n\r\n        iconAnchor:\r\n          usePrice\r\n            ? [41,17]\r\n            : [17,17],\r\n\r\n        popupAnchor:\r\n          [0,-19]\r\n\r\n      }\r\n    );\r\n\r\n  }\r\n\r\n\r\n  function refreshMarkerIcons() {\r\n\r\n    markerRecords.forEach(\r\n      function(record) {\r\n\r\n        record.marker.setIcon(\r\n          markerIcon(\r\n            record.hotel,\r\n            record.index\r\n          )\r\n        );\r\n\r\n      }\r\n    );\r\n\r\n  }\r\n\r\n\r\n  function clearMarkers() {\r\n\r\n    if (!map) {\r\n      return;\r\n    }\r\n\r\n\r\n    markerRecords.forEach(\r\n      function(record) {\r\n\r\n        map.removeLayer(\r\n          record.marker\r\n        );\r\n\r\n      }\r\n    );\r\n\r\n\r\n    markerRecords = [];\r\n\r\n  }\r\n\r\n\r\n  async function updateMapMarkers(\r\n    hotels\r\n  ) {\r\n\r\n    const hotelMap =\r\n      await ensureMap();\r\n\r\n\r\n    if (!hotelMap) {\r\n      return;\r\n    }\r\n\r\n\r\n    clearMarkers();\r\n\r\n\r\n    const withCoordinates =\r\n      hotels.filter(\r\n        hotel =>\r\n          hotel.latitude !== null &&\r\n          hotel.longitude !== null\r\n      );\r\n\r\n\r\n    if (\r\n      withCoordinates.length === 0\r\n    ) {\r\n\r\n      mapNote.style.display =\r\n        'block';\r\n\r\n      mapNote.textContent =\r\n        allHotels.length\r\n          ? 'F\u00fcr die angezeigten Hotels sind keine Karteenpositionen verf\u00fcgbar.'\r\n          : 'Die Hotelstandorte werden hier angezeigt, sobald die Hotels geladen sind.';\r\n\r\n\r\n      hotelMap.setView(\r\n        [\r\n          25.2048,\r\n          55.2708\r\n        ],\r\n        10\r\n      );\r\n\r\n\r\n      return;\r\n\r\n    }\r\n\r\n\r\n    mapNote.style.display =\r\n      'none';\r\n\r\n\r\n    const bounds = [];\r\n\r\n\r\n    withCoordinates.forEach(\r\n      function(\r\n        hotel,\r\n        index\r\n      ) {\r\n\r\n\r\n        const marker =\r\n          window.L.marker(\r\n            [\r\n              hotel.latitude,\r\n              hotel.longitude\r\n            ],\r\n            {\r\n              icon:\r\n                markerIcon(\r\n                  hotel,\r\n                  index\r\n                )\r\n            }\r\n          );\r\n\r\n\r\n        marker.addTo(\r\n          hotelMap\r\n        );\r\n\r\n\r\n        marker.bindPopup(\r\n\r\n          '<div class=\"bno-stays-map-popup\">' +\r\n\r\n            '<strong>' +\r\n              esc(\r\n                hotel.name\r\n              ) +\r\n            '<\/strong>' +\r\n\r\n            '<span>' +\r\n              esc(\r\n                hotel.area ||\r\n                hotel.address ||\r\n                'Dubai'\r\n              ) +\r\n            '<\/span>' +\r\n\r\n            (\r\n              hotel.priceText\r\n\r\n                ? (\r\n                  '<span style=\"margin-top:6px;font-weight:800;color:#0C1A38;\">' +\r\n                    esc(\r\n                      hotel.priceText\r\n                    ) +\r\n                  '<\/span>'\r\n                )\r\n\r\n                : ''\r\n            ) +\r\n\r\n          '<\/div>'\r\n\r\n        );\r\n\r\n\r\n        marker.on(\r\n          'click',\r\n          function () {\r\n\r\n\r\n            section\r\n              .querySelectorAll(\r\n                '.bno-stays-hotel'\r\n              )\r\n              .forEach(\r\n                function(card) {\r\n\r\n                  card.classList.remove(\r\n                    'is-map-active'\r\n                  );\r\n\r\n                }\r\n              );\r\n\r\n\r\n            section\r\n              .querySelectorAll(\r\n                '.bno-stays-hotel'\r\n              )\r\n              .forEach(\r\n                function(card) {\r\n\r\n                  if (\r\n                    card.dataset.hotelId ===\r\n                    hotel.id\r\n                  ) {\r\n\r\n                    card.classList.add(\r\n                      'is-map-active'\r\n                    );\r\n\r\n                  }\r\n\r\n                }\r\n              );\r\n\r\n          }\r\n        );\r\n\r\n\r\n        markerRecords.push(\r\n          {\r\n            marker,\r\n            hotel,\r\n            index\r\n          }\r\n        );\r\n\r\n\r\n        bounds.push(\r\n          [\r\n            hotel.latitude,\r\n            hotel.longitude\r\n          ]\r\n        );\r\n\r\n      }\r\n    );\r\n\r\n\r\n    if (\r\n      bounds.length === 1\r\n    ) {\r\n\r\n      hotelMap.setView(\r\n        bounds[0],\r\n        14\r\n      );\r\n\r\n    } else {\r\n\r\n      hotelMap.fitBounds(\r\n        bounds,\r\n        {\r\n          padding:\r\n            [35,35],\r\n\r\n          maxZoom:\r\n            14\r\n        }\r\n      );\r\n\r\n    }\r\n\r\n  }\r\n\r\n\r\n  \/* =======================================================\r\n     MODAL\r\n     ======================================================= *\/\r\n\r\n  function renderGallery(\r\n    hotel\r\n  ) {\r\n\r\n    const images =\r\n      hotel.photos\r\n        .slice(\r\n          0,\r\n          5\r\n        );\r\n\r\n\r\n    if (\r\n      !images.length\r\n    ) {\r\n      return '';\r\n    }\r\n\r\n\r\n    return (\r\n\r\n      '<div class=\"bno-stays-gallery\">' +\r\n\r\n        images\r\n          .map(\r\n            function(image) {\r\n\r\n              return (\r\n\r\n                '<figure>' +\r\n\r\n                  '<img ' + 'src=\"' + esc(image) + '\" ' + 'alt=\"' + esc(hotel.name) + '\">' +\r\n\r\n                '<\/figure>'\r\n\r\n              );\r\n\r\n            }\r\n          )\r\n          .join('') +\r\n\r\n      '<\/div>'\r\n\r\n    );\r\n\r\n  }\r\n\r\n\r\n  function openHotel(\r\n    hotel\r\n  ) {\r\n\r\n    const stars =\r\n      renderStars(\r\n        hotel.rating\r\n      );\r\n\r\n\r\n    const scoreHtml =\r\n\r\n      hotel.reviewScore !== null\r\n\r\n        ? (\r\n          '<span class=\"bno-stays-score\">' +\r\n            esc(\r\n              hotel.reviewScore.toFixed(1)\r\n            ) +\r\n          '<\/span>'\r\n        )\r\n\r\n        : '';\r\n\r\n\r\n    const reviewCountHtml =\r\n\r\n      hotel.reviewCount !== null\r\n\r\n        ? (\r\n          '<span>' +\r\n            esc(\r\n              hotel.reviewCount\r\n            ) +\r\n            ' Bewertungen' +\r\n          '<\/span>'\r\n        )\r\n\r\n        : '';\r\n\r\n\r\n    const sideHtml =\r\n\r\n      hotel.address\r\n\r\n        ? (\r\n          '<aside class=\"bno-stays-modal-side\">' +\r\n\r\n            '<strong>Adresse<\/strong>' +\r\n\r\n            '<div class=\"bno-stays-modal-address\">' +\r\n              esc(\r\n                hotel.address\r\n              ) +\r\n            '<\/div>' +\r\n\r\n          '<\/aside>'\r\n        )\r\n\r\n        : '';\r\n\r\n\r\n    modalContent.innerHTML =\r\n\r\n      '<div class=\"bno-stays-modal-title\">' +\r\n\r\n        '<span class=\"bno-eyebrow\">' +\r\n          esc(\r\n            hotel.area ||\r\n            'Dubai'\r\n          ) +\r\n        '<\/span>' +\r\n\r\n        '<h2>' +\r\n          esc(\r\n            hotel.name\r\n          ) +\r\n        '<\/h2>' +\r\n\r\n        '<div class=\"bno-stays-modal-meta\">' +\r\n\r\n          (\r\n            stars\r\n\r\n              ? (\r\n                '<span class=\"bno-stays-modal-stars\">' +\r\n                  esc(stars) +\r\n                '<\/span>'\r\n              )\r\n\r\n              : ''\r\n          ) +\r\n\r\n          scoreHtml +\r\n\r\n          reviewCountHtml +\r\n\r\n        '<\/div>' +\r\n\r\n      '<\/div>' +\r\n\r\n\r\n      renderGallery(\r\n        hotel\r\n      ) +\r\n\r\n\r\n      '<div class=\"bno-stays-modal-grid\">' +\r\n\r\n        '<div class=\"bno-stays-modal-copy\">' +\r\n\r\n          '<h3>\u00dcber das Hotel<\/h3>' +\r\n\r\n          '<p>' +\r\n            esc(\r\n              hotel.description ||\r\n              'Weitere Informationen zum Hotel folgen in K\u00fcrze.'\r\n            ) +\r\n          '<\/p>' +\r\n\r\n        '<\/div>' +\r\n\r\n        sideHtml +\r\n\r\n      '<\/div>' +\r\n\r\n\r\n      '<div class=\"bno-stays-room-coming\">' +\r\n\r\n        '<span class=\"bno-eyebrow\">' +\r\n          'Zimmer und Aufenthalt' +\r\n        '<\/span>' +\r\n\r\n        '<h3>Zimmertypen<\/h3>' +\r\n\r\n        '<div class=\"bno-stays-room-coming-box\">' +\r\n          'Zimmertypen, Preise und Verf\u00fcgbarkeit folgen in K\u00fcrze.' +\r\n        '<\/div>' +\r\n\r\n      '<\/div>';\r\n\r\n\r\n    oldOverflow =\r\n      document.documentElement.style.overflow;\r\n\r\n\r\n    document.documentElement.style.overflow =\r\n      'hidden';\r\n\r\n\r\n    modal.hidden =\r\n      false;\r\n\r\n  }\r\n\r\n\r\n  function closeModal() {\r\n\r\n    modal.hidden =\r\n      true;\r\n\r\n\r\n    document.documentElement.style.overflow =\r\n      oldOverflow;\r\n\r\n  }\r\n\r\n\r\n  \/* =======================================================\r\n     EVENTS\r\n     ======================================================= *\/\r\n\r\n  listEl.addEventListener(\r\n    'click',\r\n    function(event) {\r\n\r\n      const button =\r\n        event.target.closest(\r\n          '[data-open-hotel]'\r\n        );\r\n\r\n\r\n      if (!button) {\r\n        return;\r\n      }\r\n\r\n\r\n      const hotel =\r\n        allHotels.find(\r\n          hotel =>\r\n            hotel.id ===\r\n            button.dataset.openHotel\r\n        );\r\n\r\n\r\n      if (hotel) {\r\n\r\n        openHotel(\r\n          hotel\r\n        );\r\n\r\n      }\r\n\r\n    }\r\n  );\r\n\r\n\r\n  section\r\n    .querySelectorAll(\r\n      '[data-modal-close]'\r\n    )\r\n    .forEach(\r\n      function(element) {\r\n\r\n        element.addEventListener(\r\n          'click',\r\n          closeModal\r\n        );\r\n\r\n      }\r\n    );\r\n\r\n\r\n  document.addEventListener(\r\n    'keydown',\r\n    function(event) {\r\n\r\n      if (\r\n        event.key === 'Escape' &&\r\n        !modal.hidden\r\n      ) {\r\n\r\n        closeModal();\r\n\r\n      }\r\n\r\n    }\r\n  );\r\n\r\n\r\n  searchInput.addEventListener(\r\n    'input',\r\n    function() {\r\n\r\n      visibleCount =\r\n        initialCount;\r\n\r\n      render();\r\n\r\n    }\r\n  );\r\n\r\n\r\n  areaFilter.addEventListener(\r\n    'change',\r\n    function() {\r\n\r\n      visibleCount =\r\n        initialCount;\r\n\r\n      render();\r\n\r\n    }\r\n  );\r\n\r\n\r\n  starFilter.addEventListener(\r\n    'change',\r\n    function() {\r\n\r\n      visibleCount =\r\n        initialCount;\r\n\r\n      render();\r\n\r\n    }\r\n  );\r\n\r\n\r\n  moreButton.addEventListener(\r\n    'click',\r\n    function() {\r\n\r\n      visibleCount +=\r\n        initialCount;\r\n\r\n      render();\r\n\r\n    }\r\n  );\r\n\r\n\r\n  showListButton.addEventListener(\r\n    'click',\r\n    function() {\r\n\r\n      listColumn.classList.remove(\r\n        'is-mobile-hidden'\r\n      );\r\n\r\n      mapColumn.classList.remove(\r\n        'is-mobile-active'\r\n      );\r\n\r\n      showListButton.classList.add(\r\n        'is-active'\r\n      );\r\n\r\n      showMapButton.classList.remove(\r\n        'is-active'\r\n      );\r\n\r\n    }\r\n  );\r\n\r\n\r\n  showMapButton.addEventListener(\r\n    'click',\r\n    async function() {\r\n\r\n      listColumn.classList.add(\r\n        'is-mobile-hidden'\r\n      );\r\n\r\n      mapColumn.classList.add(\r\n        'is-mobile-active'\r\n      );\r\n\r\n      showMapButton.classList.add(\r\n        'is-active'\r\n      );\r\n\r\n      showListButton.classList.remove(\r\n        'is-active'\r\n      );\r\n\r\n\r\n      const hotelMap =\r\n        await ensureMap();\r\n\r\n\r\n      setTimeout(\r\n        function() {\r\n\r\n          if (hotelMap) {\r\n\r\n            hotelMap.invalidateSize();\r\n\r\n          }\r\n\r\n        },\r\n        120\r\n      );\r\n\r\n    }\r\n  );\r\n\r\n\r\n  \/* =======================================================\r\n     START\r\n     ======================================================= *\/\r\n\r\n  ensureMap();\r\n\r\n  loadInventory();\r\n\r\n})();\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-58ba70a elementor-widget elementor-widget-html\" data-id=\"58ba70a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<section id=\"omrader\" class=\"bno-section bno-section--light\">\r\n  <div class=\"bno-shell\">\r\n\r\n    <div class=\"bno-section-heading\">\r\n\r\n      <span class=\"bno-eyebrow\">\r\n        Wo m\u00f6chten Sie \u00fcbernachten?\r\n      <\/span>\r\n\r\n      <h2>\r\n        Entdecken Sie einige der beliebtesten Viertel Dubais\r\n      <\/h2>\r\n\r\n      <p>\r\n        Dubai bietet sehr unterschiedliche Stadt- und Ferienviertel. W\u00e4hlen Sie die Lage danach, ob Sie vor allem Stadtleben, Shopping, Strand, Restaurants oder eine ruhigere Ausgangsbasis suchen.\r\n      <\/p>\r\n\r\n    <\/div>\r\n\r\n    <div class=\"bno-dubai-info-grid\">\r\n\r\n      <div class=\"bno-dubai-info-card\">\r\n        <h3>Downtown Dubai<\/h3>\r\n        <p>\r\n          Eine zentrale Wahl f\u00fcr alle, die unter anderem Burj Khalifa, Dubai Mall, Restaurants und modernes Stadtleben in unmittelbarer N\u00e4he w\u00fcnschen.\r\n        <\/p>\r\n      <\/div>\r\n\r\n      <div class=\"bno-dubai-info-card\">\r\n        <h3>Business Bay<\/h3>\r\n        <p>\r\n          Ein modernes Viertel nahe Downtown mit Hotels, Restaurants, Hochh\u00e4usern und guten Verbindungen in andere Teile der Stadt.\r\n        <\/p>\r\n      <\/div>\r\n\r\n      <div class=\"bno-dubai-info-card\">\r\n        <h3>Dubai Marina & JBR<\/h3>\r\n        <p>\r\n          Eine gute Wahl f\u00fcr Reisende, die Promenade, Strand, Restaurants und auch am Abend ein lebendiges Viertel suchen.\r\n        <\/p>\r\n      <\/div>\r\n\r\n      <div class=\"bno-dubai-info-card\">\r\n        <h3>Jumeirah<\/h3>\r\n        <p>\r\n          Die K\u00fcstengebiete von Jumeirah verbinden Strand, Hotels und Restaurants mit einfachem Zugang zu vielen der bekanntesten Erlebnisse Dubais.\r\n        <\/p>\r\n      <\/div>\r\n\r\n      <div class=\"bno-dubai-info-card\">\r\n        <h3>Dubai Creek & Deira<\/h3>\r\n        <p>\r\n          Hier trifft das moderne Dubai auf einige der \u00e4lteren Handelsviertel, M\u00e4rkte und das besondere Umfeld rund um Dubai Creek.\r\n        <\/p>\r\n      <\/div>\r\n\r\n      <div class=\"bno-dubai-info-card\">\r\n        <h3>Palm Jumeirah<\/h3>\r\n        <p>\r\n          Palm Jumeirah ist besonders f\u00fcr Resorts, Strandhotels und Urlaubsaufenthalte bekannt, bei denen das Hotel selbst ein wichtiger Teil der Reise ist.\r\n        <\/p>\r\n      <\/div>\r\n\r\n    <\/div>\r\n\r\n  <\/div>\r\n<\/section>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3242af7 elementor-widget elementor-widget-html\" data-id=\"3242af7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<section class=\"bno-section bno-section--soft\">\r\n  <div class=\"bno-shell\">\r\n\r\n    <div class=\"bno-dubai-editorial\">\r\n\r\n      <div class=\"bno-dubai-editorial__content\">\r\n\r\n        <span class=\"bno-eyebrow\">\r\n          Dubai erleben\r\n        <\/span>\r\n\r\n        <div class=\"bno-section-heading\">\r\n          <h2>\r\n            Mehr als nur ein Hotelaufenthalt\r\n          <\/h2>\r\n        <\/div>\r\n\r\n        <p>\r\n          Dubai erm\u00f6glicht es, sehr unterschiedliche Urlaubserlebnisse auf einer Reise zu verbinden. Beginnen Sie den Tag am Strand, verbringen Sie den Nachmittag beim Shopping oder Sightseeing und lassen Sie den Abend in einem Restaurant mit Blick \u00fcber die Stadt ausklingen.\r\n        <\/p>\r\n\r\n        <p>\r\n          F\u00fcr Familien gibt es Str\u00e4nde, Parks und zahlreiche Aktivit\u00e4ten, w\u00e4hrend Paare und Freundesgruppen den Hotelaufenthalt mit Restaurants, Shopping, Beachclubs, Bootstouren sowie Erlebnissen in und au\u00dferhalb der Stadt kombinieren k\u00f6nnen.\r\n        <\/p>\r\n\r\n        <div class=\"bno-actions\">\r\n          <a href=\"#praktisk\" class=\"bno-btn bno-btn--primary\">\r\n            Praktische Informationen ansehen\r\n          <\/a>\r\n        <\/div>\r\n\r\n      <\/div>\r\n\r\n      <div class=\"bno-dubai-editorial__media\">\r\n        <span>\r\n          Dubai\r\n        <\/span>\r\n      <\/div>\r\n\r\n    <\/div>\r\n\r\n  <\/div>\r\n<\/section>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c2c24b1 elementor-widget elementor-widget-html\" data-id=\"c2c24b1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<section id=\"praktisk\" class=\"bno-section bno-section--light\">\r\n  <div class=\"bno-shell\">\r\n\r\n    <div class=\"bno-section-heading\">\r\n\r\n      <span class=\"bno-eyebrow\">\r\n        Praktische Informationen\r\n      <\/span>\r\n\r\n      <h2>\r\n        Wissenswertes vor Ihrem Aufenthalt in Dubai\r\n      <\/h2>\r\n\r\n      <p>\r\n        Die Wahl des Viertels, der Verkehrsmittel und der Reisezeit beeinflusst ma\u00dfgeblich, wie Sie Dubai erleben.\r\n      <\/p>\r\n\r\n    <\/div>\r\n\r\n    <div class=\"bno-dubai-info-grid\">\r\n\r\n      <div class=\"bno-dubai-info-card\">\r\n        <h3>Flughafen<\/h3>\r\n        <p>\r\n          Der Dubai International Airport ist der wichtigste Flughafen f\u00fcr internationale Reisende. Die Entfernung zum Hotel variiert deutlich je nachdem, in welchem Viertel Sie \u00fcbernachten.\r\n        <\/p>\r\n      <\/div>\r\n\r\n      <div class=\"bno-dubai-info-card\">\r\n        <h3>Verkehr<\/h3>\r\n        <p>\r\n          Metro, Taxi und Mietwagen erm\u00f6glichen eine unkomplizierte Fahrt zwischen den Vierteln. In einigen Teilen Dubais liegen Sehensw\u00fcrdigkeiten und Restaurants in Gehweite des Hotels.\r\n        <\/p>\r\n      <\/div>\r\n\r\n      <div class=\"bno-dubai-info-card\">\r\n        <h3>Klima<\/h3>\r\n        <p>\r\n          Dubai hat \u00fcber weite Teile des Jahres ein warmes Klima. Die Sommermonate k\u00f6nnen sehr hei\u00df sein, w\u00e4hrend andere Jahreszeiten besser f\u00fcr Aktivit\u00e4ten im Freien und Strandtage geeignet sind.\r\n        <\/p>\r\n      <\/div>\r\n\r\n      <div class=\"bno-dubai-info-card\">\r\n        <h3>W\u00e4hrung<\/h3>\r\n        <p>\r\n          Die lokale W\u00e4hrung ist der VAE-Dirham (AED). Karteenzahlung ist in Hotels, Restaurants, Einkaufszentren und an vielen weiteren Orten weit verbreitet.\r\n        <\/p>\r\n      <\/div>\r\n\r\n      <div class=\"bno-dubai-info-card\">\r\n        <h3>Stadt oder Strand?<\/h3>\r\n        <p>\r\n          Downtown und Business Bay eignen sich gut f\u00fcr einen Stadtaufenthalt, w\u00e4hrend Dubai Marina, JBR, Jumeirah und Palm Jumeirah einen einfacheren Zugang zur K\u00fcste und zum Strandleben bieten.\r\n        <\/p>\r\n      <\/div>\r\n\r\n      <div class=\"bno-dubai-info-card\">\r\n        <h3>Planen Sie zuerst das Viertel<\/h3>\r\n        <p>\r\n          Dubai ist geografisch weitl\u00e4ufig. \u00dcberlegen Sie daher zuerst, welche Erlebnisse Ihnen am wichtigsten sind, bevor Sie sich f\u00fcr das Hotel und Viertel entscheiden, das am besten zu Ihrer Reise passt.\r\n        <\/p>\r\n      <\/div>\r\n\r\n    <\/div>\r\n\r\n  <\/div>\r\n<\/section>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-20e8cfe elementor-widget elementor-widget-html\" data-id=\"20e8cfe\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<section class=\"bno-section bno-section--soft\">\r\n  <div class=\"bno-shell\">\r\n\r\n    <div class=\"bno-dubai-cta-box\">\r\n\r\n      <div>\r\n\r\n        <span class=\"bno-eyebrow\">\r\n          Hotels in Dubai\r\n        <\/span>\r\n\r\n        <h2>\r\n          Finden Sie das Viertel und Hotel, das zu Ihrer Reise passt\r\n        <\/h2>\r\n\r\n        <p>\r\n          Entdecken Sie die Hotels, vergleichen Sie die Lage und \u00f6ffnen Sie jedes Hotel f\u00fcr weitere Informationen. Preise und Verf\u00fcgbarkeiten werden angezeigt, sobald die Buchung der Dubai-Hotels bei BNO Travel freigeschaltet wird.\r\n        <\/p>\r\n\r\n      <\/div>\r\n\r\n      <div class=\"bno-actions\">\r\n        <a href=\"#hoteller\" class=\"bno-btn bno-btn--primary\">\r\n          Hotels ansehen\r\n        <\/a>\r\n      <\/div>\r\n\r\n    <\/div>\r\n\r\n  <\/div>\r\n<\/section>\r\n\r\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Finden Sie Hotels in Dubai mit Bildern, Karten, G\u00e4stebewertungen und Zimmertypen. Entdecken Sie Downtown, Marina, Jumeirah, Business Bay und weitere Viertel mit BNO Travel.<\/p>\n","protected":false},"author":260013438,"featured_media":97075,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_wpcom_ai_launchpad_about_page":false,"_wpcom_ai_launchpad_gallery_page":false,"_wpcom_ai_launchpad_contact_page":false,"_wpcom_ai_launchpad_events_page":false,"_wpcom_ai_launchpad_video_page":false,"_wpcom_ai_launchpad_portfolio_piece":false,"footnotes":"","_yoast_wpseo_title":"","_yoast_wpseo_metadesc":"","_yoast_wpseo_focuskw":"","rank_math_title":"Hotels in Dubai | Hotels vergleichen | BNO Travel","rank_math_description":"Hotels in Dubai: Vergleiche Lage, Zimmertypen, Ausstattung und Hotelinformationen. Entdecke Unterk\u00fcnfte und plane deinen Aufenthalt mit BNO Travel.","rank_math_focus_keyword":"Hotels in Dubai","_dpc-meta-title":"","_dpc-meta-description":"","_dpc-keyword":""},"class_list":["post-98395","page","type-page","status-publish","has-post-thumbnail","hentry"],"jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/PgDuwj-pB1","jetpack-related-posts":[{"id":97726,"url":"https:\/\/bno-travel.com\/en\/hotels-in-dubai\/","url_meta":{"origin":98395,"position":0},"title":"Hotels in Dubai \u2013 find hotels and areas | BNO Travel","author":"Jan Terje \u00c5s","date":"11. September 2026","format":false,"excerpt":"Find hotels in Dubai with photos, maps, guest reviews and room types. Explore Downtown, Marina, Jumeirah, Business Bay and more areas with BNO Travel.","rel":"","context":"\u00c4hnlicher Beitrag","block_context":{"text":"\u00c4hnlicher Beitrag","link":""},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/bno-travel.com\/wp-content\/uploads\/2026\/09\/AdobeStock_624418872.jpeg?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/bno-travel.com\/wp-content\/uploads\/2026\/09\/AdobeStock_624418872.jpeg?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/bno-travel.com\/wp-content\/uploads\/2026\/09\/AdobeStock_624418872.jpeg?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/bno-travel.com\/wp-content\/uploads\/2026\/09\/AdobeStock_624418872.jpeg?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/bno-travel.com\/wp-content\/uploads\/2026\/09\/AdobeStock_624418872.jpeg?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":98089,"url":"https:\/\/bno-travel.com\/nl\/hoteller-i-dubai\/","url_meta":{"origin":98395,"position":1},"title":"Hotels in Dubai \u2013 vind hotels en gebieden | BNO Travel","author":"Jan Terje \u00c5s","date":"11. September 2026","format":false,"excerpt":"Vind hotels in Dubai met foto's, kaarten, gastenbeoordelingen en kamertypes. Ontdek Downtown, Marina, Jumeirah, Business Bay en meer gebieden met BNO Travel.","rel":"","context":"\u00c4hnlicher Beitrag","block_context":{"text":"\u00c4hnlicher Beitrag","link":""},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/bno-travel.com\/wp-content\/uploads\/2026\/09\/AdobeStock_624418872.jpeg?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/bno-travel.com\/wp-content\/uploads\/2026\/09\/AdobeStock_624418872.jpeg?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/bno-travel.com\/wp-content\/uploads\/2026\/09\/AdobeStock_624418872.jpeg?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/bno-travel.com\/wp-content\/uploads\/2026\/09\/AdobeStock_624418872.jpeg?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/bno-travel.com\/wp-content\/uploads\/2026\/09\/AdobeStock_624418872.jpeg?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":97936,"url":"https:\/\/bno-travel.com\/fr\/hotels-a-dubai\/","url_meta":{"origin":98395,"position":2},"title":"H\u00f4tels \u00e0 Duba\u00ef \u2013 trouvez un h\u00f4tel et explorez les quartiers | BNO Travel","author":"Jan Terje \u00c5s","date":"11. September 2026","format":false,"excerpt":"Trouvez des h\u00f4tels \u00e0 Duba\u00ef avec photos, cartes, avis clients et types de chambres. D\u00e9couvrez Downtown, Marina, Jumeirah, Business Bay et d\u2019autres quartiers sur BNO Travel.","rel":"","context":"\u00c4hnlicher Beitrag","block_context":{"text":"\u00c4hnlicher Beitrag","link":""},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/bno-travel.com\/wp-content\/uploads\/2026\/09\/AdobeStock_624418872.jpeg?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/bno-travel.com\/wp-content\/uploads\/2026\/09\/AdobeStock_624418872.jpeg?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/bno-travel.com\/wp-content\/uploads\/2026\/09\/AdobeStock_624418872.jpeg?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/bno-travel.com\/wp-content\/uploads\/2026\/09\/AdobeStock_624418872.jpeg?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/bno-travel.com\/wp-content\/uploads\/2026\/09\/AdobeStock_624418872.jpeg?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":97987,"url":"https:\/\/bno-travel.com\/is\/hotel-i-dubai\/","url_meta":{"origin":98395,"position":3},"title":"H\u00f3tel \u00ed D\u00faba\u00ed \u2013 finndu h\u00f3tel og sv\u00e6\u00f0i | BNO Travel","author":"Jan Terje \u00c5s","date":"11. September 2026","format":false,"excerpt":"Finndu h\u00f3tel \u00ed D\u00faba\u00ed me\u00f0 myndum, kortum, ums\u00f6gnum gesta og herbergistegundum. Sko\u00f0a\u00f0u Downtown, Marina, Jumeirah, Business Bay og fleiri sv\u00e6\u00f0i me\u00f0 BNO Travel.","rel":"","context":"\u00c4hnlicher Beitrag","block_context":{"text":"\u00c4hnlicher Beitrag","link":""},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/bno-travel.com\/wp-content\/uploads\/2026\/09\/AdobeStock_624418872.jpeg?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/bno-travel.com\/wp-content\/uploads\/2026\/09\/AdobeStock_624418872.jpeg?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/bno-travel.com\/wp-content\/uploads\/2026\/09\/AdobeStock_624418872.jpeg?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/bno-travel.com\/wp-content\/uploads\/2026\/09\/AdobeStock_624418872.jpeg?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/bno-travel.com\/wp-content\/uploads\/2026\/09\/AdobeStock_624418872.jpeg?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":97229,"url":"https:\/\/bno-travel.com\/hoteller-i-dubai\/","url_meta":{"origin":98395,"position":4},"title":"Hoteller i Dubai \u2013 finn hotell og omr\u00e5der | BNO Travel","author":"Jan Terje \u00c5s","date":"11. September 2026","format":false,"excerpt":"Finn hoteller i Dubai med bilder, kart, gjestevurderinger og romtyper. Utforsk Downtown, Marina, Jumeirah, Business Bay og flere omr\u00e5der med BNO Travel.","rel":"","context":"\u00c4hnlicher Beitrag","block_context":{"text":"\u00c4hnlicher Beitrag","link":""},"img":{"alt_text":"Hoteller i Dubai \u2013 Jumeirah Beach og Dubais skyline ved solnedgang","src":"https:\/\/i0.wp.com\/bno-travel.com\/wp-content\/uploads\/2026\/09\/AdobeStock_624418872.jpeg?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/bno-travel.com\/wp-content\/uploads\/2026\/09\/AdobeStock_624418872.jpeg?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/bno-travel.com\/wp-content\/uploads\/2026\/09\/AdobeStock_624418872.jpeg?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/bno-travel.com\/wp-content\/uploads\/2026\/09\/AdobeStock_624418872.jpeg?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/bno-travel.com\/wp-content\/uploads\/2026\/09\/AdobeStock_624418872.jpeg?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":97834,"url":"https:\/\/bno-travel.com\/da\/hoteller-i-dubai\/","url_meta":{"origin":98395,"position":5},"title":"Hoteller i Dubai \u2013 find hoteller og omr\u00e5der | BNO Travel","author":"Jan Terje \u00c5s","date":"11. September 2026","format":false,"excerpt":"Find hoteller i Dubai med billeder, kort, g\u00e6steanmeldelser og v\u00e6relsestyper. Udforsk Downtown, Marina, Jumeirah, Business Bay og flere omr\u00e5der hos BNO Travel.","rel":"","context":"\u00c4hnlicher Beitrag","block_context":{"text":"\u00c4hnlicher Beitrag","link":""},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/bno-travel.com\/wp-content\/uploads\/2026\/09\/AdobeStock_624418872.jpeg?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/bno-travel.com\/wp-content\/uploads\/2026\/09\/AdobeStock_624418872.jpeg?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/bno-travel.com\/wp-content\/uploads\/2026\/09\/AdobeStock_624418872.jpeg?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/bno-travel.com\/wp-content\/uploads\/2026\/09\/AdobeStock_624418872.jpeg?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/bno-travel.com\/wp-content\/uploads\/2026\/09\/AdobeStock_624418872.jpeg?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]}],"_links":{"self":[{"href":"https:\/\/bno-travel.com\/de\/wp-json\/wp\/v2\/pages\/98395","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bno-travel.com\/de\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/bno-travel.com\/de\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/bno-travel.com\/de\/wp-json\/wp\/v2\/users\/260013438"}],"replies":[{"embeddable":true,"href":"https:\/\/bno-travel.com\/de\/wp-json\/wp\/v2\/comments?post=98395"}],"version-history":[{"count":1,"href":"https:\/\/bno-travel.com\/de\/wp-json\/wp\/v2\/pages\/98395\/revisions"}],"predecessor-version":[{"id":98396,"href":"https:\/\/bno-travel.com\/de\/wp-json\/wp\/v2\/pages\/98395\/revisions\/98396"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/bno-travel.com\/de\/wp-json\/wp\/v2\/media\/97075"}],"wp:attachment":[{"href":"https:\/\/bno-travel.com\/de\/wp-json\/wp\/v2\/media?parent=98395"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}