{"id":95458,"date":"2026-08-03T15:24:34","date_gmt":"2026-08-03T13:24:34","guid":{"rendered":"https:\/\/bno-travel.com\/overnatting-i-zell-am-see\/"},"modified":"2026-08-11T12:21:39","modified_gmt":"2026-08-11T10:21:39","slug":"overnatting-i-zell-am-see","status":"publish","type":"page","link":"https:\/\/bno-travel.com\/pl\/overnatting-i-zell-am-see\/","title":{"rendered":"Zakwaterowanie w Zell am See"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"95458\" class=\"elementor elementor-95458 elementor-93651\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-66ab43f8 e-flex e-con-boxed e-con e-parent\" data-id=\"66ab43f8\" 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-4541b581 elementor-widget elementor-widget-html\" data-id=\"4541b581\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<section class=\"bno-zell bno-area-hero bno-area-hero--premium\" style=\" background-color: #0c1a38; background-image: linear-gradient( rgba(7, 17, 31, 0.48), rgba(7, 17, 31, 0.68) ), url('https:\/\/bno-travel.com\/wp-content\/uploads\/2026\/08\/AdobeStock_40023408.jpeg'); background-position: center; background-size: cover; background-repeat: no-repeat; \">\r\n<div class=\"bno-shell\">\r\n<div class=\"bno-area-hero__content\">\r\n<span class=\"bno-eyebrow\">\r\n        Zell am See \u00b7 Austria\r\n      <\/span>\r\n<h1>\r\n        Zakwaterowanie w Zell am See: odkryj cztery hotele mi\u0119dzy g\u00f3rami a jeziorem\r\n      <\/h1>\r\n<p class=\"bno-lead\">\r\n        Znajd\u017a pokoje, apartamenty typu suite i apartamenty w The House Zell am See, The Gast House Zell am See, Nikolaus by AvenidA oraz Elements Resort Zell am See. Por\u00f3wnaj typy zakwaterowania i wybierz opcj\u0119 najlepiej dopasowan\u0105 do Twojej podr\u00f3\u017cy.\r\n      <\/p>\r\n<div class=\"bno-actions\">\r\n<a class=\"bno-btn bno-btn--primary\" href=\"#enheter\">\r\n          Zobacz pokoje i apartamenty\r\n        <\/a>\r\n<a class=\"bno-btn bno-btn--secondary\" href=\"#hotellene\">\r\n          Zobacz hotele\r\n        <\/a>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/section>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-3a3e0def e-flex e-con-boxed e-con e-parent\" data-id=\"3a3e0def\" 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-4ac6fc4c elementor-widget elementor-widget-html\" data-id=\"4ac6fc4c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<section class=\"bno-zell bno-section bno-section--light bno-area-intro\" id=\"hotellene\">\r\n<div class=\"bno-shell\">\r\n<div class=\"bno-section-heading bno-section-heading--center\">\r\n<span class=\"bno-eyebrow\">\r\n        Cztery hotele w Zell am See\r\n      <\/span>\r\n<h2>\r\n        Wybierz odpowiedni hotel i typ pokoju na sw\u00f3j pobyt\r\n      <\/h2>\r\n<p>\r\n        Oferta zakwaterowania w Zell am See obejmuje cztery r\u00f3\u017cne hotele Alpin Family. Poznaj hotele i przejd\u017a bezpo\u015brednio do pokoi, apartament\u00f3w typu suite oraz apartament\u00f3w w obiekcie, kt\u00f3ry Ci\u0119 interesuje.\r\n      <\/p>\r\n<\/div>\r\n<div class=\"bno-zell-hotel-grid\">\r\n<!-- THE HOUSE -->\r\n<article class=\"bno-zell-hotel-card\">\r\n<a class=\"bno-zell-hotel-card__link\" href=\"#rom-the-house\">\r\n<div class=\"bno-zell-hotel-card__media\">\r\n<img data-recalc-dims=\"1\" decoding=\"async\" alt=\"The House Zell am See\" loading=\"lazy\" src=\"https:\/\/i0.wp.com\/www.the-house.at\/assets\/images\/6\/The-House-Sommer-Aussenansicht-517d17fd.jpg?w=800&#038;ssl=1\"\/>\r\n<span class=\"bno-zell-hotel-card__number\">\r\n              01\r\n            <\/span>\r\n<span class=\"bno-zell-hotel-card__badge\">\r\n              Aparthotel\r\n            <\/span>\r\n<\/div>\r\n<div class=\"bno-zell-hotel-card__body\">\r\n<div>\r\n<h3>The House Zell am See<\/h3>\r\n<p>\r\n                Przestronne apartamenty i apartamenty typu suite w centralnej, a jednocze\u015bnie spokojnej cz\u0119\u015bci Zell am See, kilka krok\u00f3w od centrum i CityXpress.\r\n              <\/p>\r\n<\/div>\r\n<span class=\"bno-zell-hotel-card__action\">\r\n              Zobacz typy pokoi\r\n              <span aria-hidden=\"true\">\u2192<\/span>\r\n<\/span>\r\n<\/div>\r\n<\/a>\r\n<\/article>\r\n<!-- THE GAST HOUSE -->\r\n<article class=\"bno-zell-hotel-card\">\r\n<a class=\"bno-zell-hotel-card__link\" href=\"#rom-the-gast-house\">\r\n<div class=\"bno-zell-hotel-card__media\">\r\n<img data-recalc-dims=\"1\" decoding=\"async\" alt=\"The Gast House Zell am See\" loading=\"lazy\" src=\"https:\/\/i0.wp.com\/www.thegasthouse.at\/assets\/images\/6\/TGHZ_aussen_Sommer-f1116479.jpg?w=800&#038;ssl=1\"\/>\r\n<span class=\"bno-zell-hotel-card__number\">\r\n              02\r\n            <\/span>\r\n<span class=\"bno-zell-hotel-card__badge\">\r\n              Hotel i apartamenty typu suite\r\n            <\/span>\r\n<\/div>\r\n<div class=\"bno-zell-hotel-card__body\">\r\n<div>\r\n<h3>The Gast House Zell am See<\/h3>\r\n<p>\r\n                Nowoczesne pokoje, studia i apartamenty typu suite w centrum, blisko Zeller See, wyci\u0105g\u00f3w oraz hotelowej strefy spa.\r\n              <\/p>\r\n<\/div>\r\n<span class=\"bno-zell-hotel-card__action\">\r\n              Zobacz typy pokoi\r\n              <span aria-hidden=\"true\">\u2192<\/span>\r\n<\/span>\r\n<\/div>\r\n<\/a>\r\n<\/article>\r\n<!-- NIKOLAUS -->\r\n<article class=\"bno-zell-hotel-card\">\r\n<a class=\"bno-zell-hotel-card__link\" href=\"#rom-nikolaus\">\r\n<div class=\"bno-zell-hotel-card__media\">\r\n<img data-recalc-dims=\"1\" decoding=\"async\" alt=\"Nikolaus by AvenidA en Zell am See\" loading=\"lazy\" src=\"https:\/\/i0.wp.com\/www.nikolausbyavenida.at\/assets\/images\/d\/nikolaus-sommer-au%C3%9Fen-3d2087ab.jpg?w=800&#038;ssl=1\"\/>\r\n<span class=\"bno-zell-hotel-card__number\">\r\n              03\r\n            <\/span>\r\n<span class=\"bno-zell-hotel-card__badge\">\r\n              Apartamenty typu suite z widokiem\r\n            <\/span>\r\n<\/div>\r\n<div class=\"bno-zell-hotel-card__body\">\r\n<div>\r\n<h3>Nikolaus by AvenidA<\/h3>\r\n<p>\r\n                Pokoje i apartamenty typu suite w wy\u017cej po\u0142o\u017conej cz\u0119\u015bci Zell am See, z panoramicznym widokiem na miasto, jezioro i otaczaj\u0105ce g\u00f3ry.\r\n              <\/p>\r\n<\/div>\r\n<span class=\"bno-zell-hotel-card__action\">\r\n              Zobacz typy pokoi\r\n              <span aria-hidden=\"true\">\u2192<\/span>\r\n<\/span>\r\n<\/div>\r\n<\/a>\r\n<\/article>\r\n<!-- ELEMENTS RESORT -->\r\n<article class=\"bno-zell-hotel-card\">\r\n<a class=\"bno-zell-hotel-card__link\" href=\"#rom-elements-resort\">\r\n<div class=\"bno-zell-hotel-card__media\">\r\n<img data-recalc-dims=\"1\" decoding=\"async\" alt=\"Elements Resort Zell am See\" loading=\"lazy\" src=\"https:\/\/i0.wp.com\/www.elementsresort.at\/assets\/images\/1\/AR-Elements-Sommer-Aussen-022-min-550b73cc.jpg?w=800&#038;ssl=1\"\/>\r\n<span class=\"bno-zell-hotel-card__number\">\r\n              04\r\n            <\/span>\r\n<span class=\"bno-zell-hotel-card__badge\">\r\n              Resort\r\n            <\/span>\r\n<\/div>\r\n<div class=\"bno-zell-hotel-card__body\">\r\n<div>\r\n<h3>Elements Resort Zell am See<\/h3>\r\n<p>\r\n                Pobyt w resorcie oferuj\u0105cym pokoje, apartamenty typu suite, restauracj\u0119 i stref\u0119 wellness, po\u0142o\u017conym blisko AreitXpress.\r\n              <\/p>\r\n<\/div>\r\n<span class=\"bno-zell-hotel-card__action\">\r\n              Zobacz typy pokoi\r\n              <span aria-hidden=\"true\">\u2192<\/span>\r\n<\/span>\r\n<\/div>\r\n<\/a>\r\n<\/article>\r\n<\/div>\r\n<\/div>\r\n<\/section>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-95d43c3 e-flex e-con-boxed e-con e-parent\" data-id=\"95d43c3\" 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-713a14fb elementor-widget elementor-widget-html\" data-id=\"713a14fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- =========================================================\r\n     ZELL AM SEE \u2013 BULK 3\r\n     Fire separate BNO Direct-kataloger i samme bulk\r\n     ========================================================= -->\r\n<div class=\"bno-zell-catalogs\" id=\"enheter\">\r\n<!-- THE HOUSE ZELL AM SEE -->\r\n<section class=\"bno-section bno-section--soft bno-direct-catalog bno-zell-catalog-block bno-zell-catalog-block--soft\" data-api-base=\"https:\/\/bno-api-staging.onrender.com\" data-area-key=\"zell-am-see\" data-bno-direct-catalog=\"\" data-booking-base=\"https:\/\/booking.bno-travel.com\/booking\/complete\" data-booking-open-until=\"2027-05-01\" data-booking-partner-key=\"THE_HOUSE_ZELL_AM_SEE\" data-catalog-creds-key=\"THE_HOUSE_ZELL_AM_SEE\" data-destination-label=\"Zell am See\" data-initial-count=\"12\" data-location-label=\"The House Zell am See \u00b7 Zell am See\" data-minimum-stay-nights=\"1\" data-service-id=\"4c3496c1-52aa-435e-add3-afe100e77563\" id=\"rom-the-house\">\r\n<div class=\"bno-shell\">\r\n<div class=\"bno-zell-catalog-heading\">\r\n<span aria-hidden=\"true\" class=\"bno-zell-catalog-heading__number\">01<\/span>\r\n<div>\r\n<span class=\"bno-eyebrow\">Pokoje i apartamenty<\/span>\r\n<h2>The House Zell am See<\/h2>\r\n<p>\r\n            Odkryj dost\u0119pne apartamenty, apartamenty typu suite i penthouse\u2019y w The House Zell am See.\r\n          <\/p>\r\n<\/div>\r\n<\/div>\r\n<div aria-live=\"polite\" class=\"bno-direct-catalog__status\" data-bno-status=\"\" role=\"status\">\r\n        \u0141adowanie typ\u00f3w pokoi w The House\u2026\r\n      <\/div>\r\n<div aria-busy=\"true\" aria-live=\"polite\" class=\"bno-direct-catalog__grid\" data-bno-grid=\"\"><\/div>\r\n<div class=\"bno-direct-more-wrap\" data-bno-more-wrap=\"\" hidden=\"\">\r\n<button class=\"bno-direct-more\" data-bno-more=\"\" type=\"button\">\r\n          Poka\u017c wi\u0119cej typ\u00f3w pokoi\r\n        <\/button>\r\n<\/div>\r\n<\/div>\r\n<\/section>\r\n<!-- THE GAST HOUSE ZELL AM SEE -->\r\n<section class=\"bno-section bno-section--light bno-direct-catalog bno-zell-catalog-block bno-zell-catalog-block--light\" data-api-base=\"https:\/\/bno-api-staging.onrender.com\" data-area-key=\"zell-am-see\" data-bno-direct-catalog=\"\" data-booking-base=\"https:\/\/booking.bno-travel.com\/booking\/complete\" data-booking-open-until=\"2027-05-01\" data-booking-partner-key=\"THE_GAST_HOUSE_ZELL_AM_SEE\" data-catalog-creds-key=\"THE_GAST_HOUSE_ZELL_AM_SEE\" data-destination-label=\"Zell am See\" data-initial-count=\"12\" data-location-label=\"The Gast House Zell am See \u00b7 Zell am See\" data-minimum-stay-nights=\"1\" data-service-id=\"27468297-0350-40ca-9bf6-afb6008fb4e6\" id=\"rom-the-gast-house\">\r\n<div class=\"bno-shell\">\r\n<div class=\"bno-zell-catalog-heading\">\r\n<span aria-hidden=\"true\" class=\"bno-zell-catalog-heading__number\">02<\/span>\r\n<div>\r\n<span class=\"bno-eyebrow\">Pokoje, studia i apartamenty typu suite<\/span>\r\n<h2>The Gast House Zell am See<\/h2>\r\n<p>\r\n            Odkryj pokoje, studia i apartamenty typu suite w The Gast House \u2013 od pokoi dwuosobowych po przestronne apartamenty rodzinne i panoramiczne.\r\n          <\/p>\r\n<\/div>\r\n<\/div>\r\n<div aria-live=\"polite\" class=\"bno-direct-catalog__status\" data-bno-status=\"\" role=\"status\">\r\n        \u0141adowanie typ\u00f3w pokoi w The Gast House\u2026\r\n      <\/div>\r\n<div aria-busy=\"true\" aria-live=\"polite\" class=\"bno-direct-catalog__grid\" data-bno-grid=\"\"><\/div>\r\n<div class=\"bno-direct-more-wrap\" data-bno-more-wrap=\"\" hidden=\"\">\r\n<button class=\"bno-direct-more\" data-bno-more=\"\" type=\"button\">\r\n          Poka\u017c wi\u0119cej typ\u00f3w pokoi\r\n        <\/button>\r\n<\/div>\r\n<\/div>\r\n<\/section>\r\n<!-- NIKOLAUS BY AVENIDA -->\r\n<section class=\"bno-section bno-section--soft bno-direct-catalog bno-zell-catalog-block bno-zell-catalog-block--soft\" data-api-base=\"https:\/\/bno-api-staging.onrender.com\" data-area-key=\"zell-am-see\" data-bno-direct-catalog=\"\" data-booking-base=\"https:\/\/booking.bno-travel.com\/booking\/complete\" data-booking-open-until=\"2027-05-01\" data-booking-partner-key=\"NIKOLAUS_BY_AVENIDA\" data-catalog-creds-key=\"NIKOLAUS_BY_AVENIDA\" data-destination-label=\"Zell am See\" data-initial-count=\"12\" data-location-label=\"Nikolaus by AvenidA \u00b7 Zell am See\" data-minimum-stay-nights=\"1\" data-service-id=\"5b596a5a-26da-4381-a4fd-afdc00a26aa4\" id=\"rom-nikolaus\">\r\n<div class=\"bno-shell\">\r\n<div class=\"bno-zell-catalog-heading\">\r\n<span aria-hidden=\"true\" class=\"bno-zell-catalog-heading__number\">03<\/span>\r\n<div>\r\n<span class=\"bno-eyebrow\">Pokoje i apartamenty typu suite z panoramicznym widokiem<\/span>\r\n<h2>Nikolaus by AvenidA<\/h2>\r\n<p>\r\n            Odkryj pokoje i apartamenty typu suite w nowoczesnym alpejskim stylu, z panoramicznymi widokami i prywatnymi udogodnieniami wellness.\r\n          <\/p>\r\n<\/div>\r\n<\/div>\r\n<div aria-live=\"polite\" class=\"bno-direct-catalog__status\" data-bno-status=\"\" role=\"status\">\r\n        \u0141adowanie typ\u00f3w pokoi w Nikolaus by AvenidA\u2026\r\n      <\/div>\r\n<div aria-busy=\"true\" aria-live=\"polite\" class=\"bno-direct-catalog__grid\" data-bno-grid=\"\"><\/div>\r\n<div class=\"bno-direct-more-wrap\" data-bno-more-wrap=\"\" hidden=\"\">\r\n<button class=\"bno-direct-more\" data-bno-more=\"\" type=\"button\">\r\n          Poka\u017c wi\u0119cej typ\u00f3w pokoi\r\n        <\/button>\r\n<\/div>\r\n<\/div>\r\n<\/section>\r\n<!-- ELEMENTS RESORT ZELL AM SEE -->\r\n<section class=\"bno-section bno-section--light bno-direct-catalog bno-zell-catalog-block bno-zell-catalog-block--light\" data-api-base=\"https:\/\/bno-api-staging.onrender.com\" data-area-key=\"zell-am-see\" data-bno-direct-catalog=\"\" data-booking-base=\"https:\/\/booking.bno-travel.com\/booking\/complete\" data-booking-open-until=\"2027-05-01\" data-booking-partner-key=\"ELEMENTS_RESORT_ZELL_AM_SEE\" data-catalog-creds-key=\"ELEMENTS_RESORT_ZELL_AM_SEE\" data-destination-label=\"Zell am See\" data-initial-count=\"12\" data-location-label=\"Elements Resort Zell am See \u00b7 Zell am See\" data-minimum-stay-nights=\"1\" data-service-id=\"12c44d5b-1071-4513-a70f-afdc00d11939\" id=\"rom-elements-resort\">\r\n<div class=\"bno-shell\">\r\n<div class=\"bno-zell-catalog-heading\">\r\n<span aria-hidden=\"true\" class=\"bno-zell-catalog-heading__number\">04<\/span>\r\n<div>\r\n<span class=\"bno-eyebrow\">Pokoje, apartamenty typu suite i penthouse\u2019y<\/span>\r\n<h2>Elements Resort Zell am See<\/h2>\r\n<p>\r\n            Odkryj pokoje dwuosobowe, apartamenty typu suite i przestronne penthouse\u2019y w Elements Resort Zell am See.\r\n          <\/p>\r\n<\/div>\r\n<\/div>\r\n<div aria-live=\"polite\" class=\"bno-direct-catalog__status\" data-bno-status=\"\" role=\"status\">\r\n        \u0141adowanie typ\u00f3w pokoi w Elements Resort\u2026\r\n      <\/div>\r\n<div aria-busy=\"true\" aria-live=\"polite\" class=\"bno-direct-catalog__grid\" data-bno-grid=\"\"><\/div>\r\n<div class=\"bno-direct-more-wrap\" data-bno-more-wrap=\"\" hidden=\"\">\r\n<button class=\"bno-direct-more\" data-bno-more=\"\" type=\"button\">\r\n          Poka\u017c wi\u0119cej typ\u00f3w pokoi\r\n        <\/button>\r\n<\/div>\r\n<\/div>\r\n<\/section>\r\n<\/div>\r\n<!-- FELLES BNO DIRECT-MOTOR \u2013 SKAL KUN FINNES EN GANG P\u00c5 SIDEN -->\r\n<style>\r\n\/* =========================================================\r\n   BNO TRAVEL \u2013 FELLES BULK 3 \/ DESTINASJONSKATALOG V2\r\n   Samme kort, modal, mobilvisning og prissjekk p\u00e5 alle sider\r\n   ========================================================= *\/\r\n\r\n.bno-direct-catalog,\r\n.bno-direct-modal {\r\n  --bno-navy: #0c1a38;\r\n  --bno-navy-hover: #162b55;\r\n  --bno-text: #3f4a5e;\r\n  --bno-muted: #5b667b;\r\n  --bno-border: rgba(12, 26, 56, 0.14);\r\n  --bno-soft: #eef3f8;\r\n  --bno-white: #ffffff;\r\n  --bno-success-bg: #edf8f1;\r\n  --bno-success: #176b35;\r\n  --bno-error-bg: #fff1f1;\r\n  --bno-error: #8f1d1d;\r\n}\r\n\r\n.bno-direct-catalog,\r\n.bno-direct-catalog *,\r\n.bno-direct-modal,\r\n.bno-direct-modal * {\r\n  box-sizing: border-box;\r\n}\r\n\r\n.bno-direct-catalog__status {\r\n  margin: 28px 0 0;\r\n  padding: 15px 17px;\r\n  border: 1px solid var(--bno-border);\r\n  border-radius: 14px;\r\n  background: var(--bno-white) !important;\r\n  color: var(--bno-navy) !important;\r\n  font-size: 15px;\r\n  line-height: 1.5;\r\n}\r\n\r\n.bno-direct-catalog__status.is-error {\r\n  border-color: rgba(143, 29, 29, 0.24);\r\n  background: var(--bno-error-bg) !important;\r\n  color: var(--bno-error) !important;\r\n}\r\n\r\n.bno-direct-catalog__grid {\r\n  display: grid !important;\r\n  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;\r\n  gap: 24px !important;\r\n  align-items: stretch;\r\n  margin-top: 28px;\r\n}\r\n\r\n.bno-direct-card {\r\n  display: flex;\r\n  min-width: 0;\r\n  height: 100%;\r\n  overflow: hidden;\r\n  border: 1px solid var(--bno-border);\r\n  border-radius: 20px;\r\n  background: #ffffff !important;\r\n  box-shadow: 0 12px 34px rgba(12, 26, 56, 0.08);\r\n  transition: transform 0.2s ease, box-shadow 0.2s ease;\r\n}\r\n\r\n.bno-direct-card:hover {\r\n  transform: translateY(-4px);\r\n  box-shadow: 0 18px 42px rgba(12, 26, 56, 0.14);\r\n}\r\n\r\n.bno-direct-card__button,\r\n.bno-direct-card__button:hover,\r\n.bno-direct-card__button:focus,\r\n.bno-direct-card__button:focus-visible,\r\n.bno-direct-card__button:active {\r\n  display: flex !important;\r\n  flex: 1 1 auto;\r\n  flex-direction: column;\r\n  width: 100% !important;\r\n  min-width: 0 !important;\r\n  height: 100% !important;\r\n  margin: 0 !important;\r\n  padding: 0 !important;\r\n  overflow: hidden;\r\n  border: 0 !important;\r\n  border-radius: inherit !important;\r\n  background: transparent !important;\r\n  background-color: transparent !important;\r\n  background-image: none !important;\r\n  color: inherit !important;\r\n  box-shadow: none !important;\r\n  text-align: left !important;\r\n  text-decoration: none !important;\r\n  cursor: pointer;\r\n  appearance: none !important;\r\n  -webkit-appearance: none !important;\r\n}\r\n\r\n.bno-direct-card__media {\r\n  position: relative;\r\n  flex: 0 0 auto;\r\n  width: 100%;\r\n  min-width: 0;\r\n  aspect-ratio: 4 \/ 3;\r\n  overflow: hidden;\r\n  background: var(--bno-navy);\r\n}\r\n\r\n.bno-direct-card__media img {\r\n  display: block;\r\n  width: 100% !important;\r\n  height: 100% !important;\r\n  max-width: none !important;\r\n  margin: 0 !important;\r\n  padding: 0 !important;\r\n  object-fit: cover;\r\n  object-position: center;\r\n  border: 0;\r\n  border-radius: 0;\r\n  transition: transform 0.35s ease;\r\n}\r\n\r\n.bno-direct-card:hover .bno-direct-card__media img {\r\n  transform: scale(1.035);\r\n}\r\n\r\n.bno-direct-card__count {\r\n  position: absolute;\r\n  right: 12px;\r\n  bottom: 12px;\r\n  z-index: 2;\r\n  padding: 7px 10px;\r\n  border: 1px solid rgba(255, 255, 255, 0.2);\r\n  border-radius: 999px;\r\n  background: rgba(12, 26, 56, 0.92) !important;\r\n  color: #ffffff !important;\r\n  font-size: 12px;\r\n  font-weight: 800;\r\n  line-height: 1;\r\n  white-space: nowrap;\r\n}\r\n\r\n.bno-direct-card__body {\r\n  display: flex !important;\r\n  flex: 1 1 auto;\r\n  flex-direction: column;\r\n  width: 100%;\r\n  min-width: 0;\r\n  min-height: 238px;\r\n  padding: 20px;\r\n  overflow: hidden;\r\n  background: #ffffff !important;\r\n  color: var(--bno-navy) !important;\r\n}\r\n\r\n.bno-direct-card__body h3 {\r\n  display: -webkit-box;\r\n  width: 100%;\r\n  min-width: 0;\r\n  max-width: 100%;\r\n  margin: 0;\r\n  overflow: hidden;\r\n  color: var(--bno-navy) !important;\r\n  font-size: clamp(18px, 1.45vw, 22px);\r\n  font-weight: 800;\r\n  line-height: 1.2;\r\n  white-space: normal !important;\r\n  overflow-wrap: anywhere;\r\n  word-break: normal;\r\n  hyphens: auto;\r\n  -webkit-box-orient: vertical;\r\n  -webkit-line-clamp: 3;\r\n}\r\n\r\n.bno-direct-card__meta {\r\n  margin: 8px 0 0;\r\n  color: var(--bno-muted) !important;\r\n  font-size: 13px;\r\n  font-weight: 800;\r\n  line-height: 1.4;\r\n}\r\n\r\n.bno-direct-card__description {\r\n  display: -webkit-box;\r\n  width: 100%;\r\n  min-width: 0;\r\n  margin: 14px 0 0;\r\n  overflow: hidden;\r\n  color: var(--bno-text) !important;\r\n  font-size: 14px;\r\n  line-height: 1.6;\r\n  white-space: normal !important;\r\n  overflow-wrap: anywhere;\r\n  -webkit-box-orient: vertical;\r\n  -webkit-line-clamp: 4;\r\n}\r\n\r\n.bno-direct-card__link {\r\n  display: inline-flex;\r\n  align-items: center;\r\n  align-self: flex-start;\r\n  margin-top: auto;\r\n  padding-top: 18px;\r\n  color: var(--bno-navy) !important;\r\n  font-size: 14px;\r\n  font-weight: 800;\r\n}\r\n\r\n.bno-direct-more-wrap {\r\n  display: flex;\r\n  justify-content: center;\r\n  margin-top: 34px;\r\n}\r\n\r\n.bno-direct-more-wrap[hidden],\r\n.bno-direct-modal[hidden],\r\n.bno-direct-message[hidden],\r\n.bno-direct-price[hidden],\r\n.bno-direct-continue[hidden] {\r\n  display: none !important;\r\n}\r\n\r\n.bno-direct-more,\r\n.bno-direct-more:hover,\r\n.bno-direct-more:focus,\r\n.bno-direct-more:active,\r\n.bno-direct-check-button,\r\n.bno-direct-check-button:hover,\r\n.bno-direct-check-button:focus,\r\n.bno-direct-check-button:active,\r\n.bno-direct-book-button,\r\n.bno-direct-book-button:hover,\r\n.bno-direct-book-button:focus,\r\n.bno-direct-book-button:active {\r\n  display: inline-flex !important;\r\n  align-items: center;\r\n  justify-content: center;\r\n  min-height: 50px !important;\r\n  margin: 0 !important;\r\n  padding: 12px 20px !important;\r\n  border: 1px solid var(--bno-navy) !important;\r\n  border-radius: 11px !important;\r\n  background: var(--bno-navy) !important;\r\n  background-image: none !important;\r\n  color: #ffffff !important;\r\n  box-shadow: none !important;\r\n  font: inherit;\r\n  font-size: 14px !important;\r\n  font-weight: 800 !important;\r\n  line-height: 1.3;\r\n  text-align: center;\r\n  text-decoration: none !important;\r\n  cursor: pointer;\r\n  appearance: none !important;\r\n  -webkit-appearance: none !important;\r\n}\r\n\r\n.bno-direct-more:hover,\r\n.bno-direct-check-button:hover,\r\n.bno-direct-book-button:hover {\r\n  background: var(--bno-navy-hover) !important;\r\n}\r\n\r\n.bno-direct-check-button:disabled,\r\n.bno-direct-book-button:disabled {\r\n  border-color: #778195 !important;\r\n  background: #778195 !important;\r\n  cursor: wait;\r\n}\r\n\r\n.bno-direct-modal {\r\n  position: fixed;\r\n  z-index: 999999;\r\n  inset: 0;\r\n  display: grid;\r\n  place-items: center;\r\n  width: 100%;\r\n  max-width: 100%;\r\n  padding: 24px;\r\n  overflow: hidden;\r\n  -webkit-text-size-adjust: 100%;\r\n  text-size-adjust: 100%;\r\n}\r\n\r\n.bno-direct-modal__backdrop,\r\n.bno-direct-modal__backdrop:hover,\r\n.bno-direct-modal__backdrop:focus,\r\n.bno-direct-modal__backdrop:active {\r\n  position: absolute;\r\n  z-index: 0;\r\n  inset: 0;\r\n  width: 100%;\r\n  height: 100%;\r\n  margin: 0 !important;\r\n  padding: 0 !important;\r\n  border: 0 !important;\r\n  border-radius: 0 !important;\r\n  background: rgba(4, 12, 28, 0.82) !important;\r\n  box-shadow: none !important;\r\n  cursor: zoom-out;\r\n  backdrop-filter: blur(3px);\r\n  appearance: none !important;\r\n  -webkit-appearance: none !important;\r\n}\r\n\r\n.bno-direct-modal__dialog {\r\n  position: relative;\r\n  z-index: 1;\r\n  display: grid;\r\n  grid-template-columns: minmax(0, 1.16fr) minmax(390px, 0.84fr);\r\n  width: min(1180px, calc(100vw - 48px));\r\n  max-width: 100%;\r\n  height: min(760px, calc(100dvh - 48px));\r\n  max-height: calc(100dvh - 48px);\r\n  overflow: hidden;\r\n  border: 1px solid rgba(255, 255, 255, 0.18);\r\n  border-radius: 22px;\r\n  background: #ffffff;\r\n  box-shadow: 0 30px 90px rgba(0, 0, 0, 0.4);\r\n}\r\n\r\n.bno-direct-modal__gallery {\r\n  position: relative;\r\n  width: 100%;\r\n  height: 100%;\r\n  min-width: 0;\r\n  min-height: 0;\r\n  overflow: hidden;\r\n  background: var(--bno-navy);\r\n}\r\n\r\n.bno-direct-modal__image {\r\n  display: block;\r\n  width: 100% !important;\r\n  height: 100% !important;\r\n  min-width: 0 !important;\r\n  min-height: 0 !important;\r\n  max-width: none !important;\r\n  max-height: none !important;\r\n  margin: 0 !important;\r\n  padding: 0 !important;\r\n  object-fit: cover;\r\n  object-position: center;\r\n  border: 0;\r\n  border-radius: 0;\r\n}\r\n\r\n.bno-direct-modal__content {\r\n  width: 100%;\r\n  height: 100%;\r\n  min-width: 0;\r\n  min-height: 0;\r\n  padding: 40px 34px 36px;\r\n  overflow-x: hidden;\r\n  overflow-y: auto;\r\n  background: #ffffff !important;\r\n  color: var(--bno-text) !important;\r\n  scrollbar-color: rgba(12, 26, 56, 0.32) transparent;\r\n  scrollbar-width: thin;\r\n}\r\n\r\n.bno-direct-modal__content * {\r\n  min-width: 0;\r\n}\r\n\r\n.bno-direct-eyebrow {\r\n  display: inline-block;\r\n  color: var(--bno-muted) !important;\r\n  font-size: 12px;\r\n  font-weight: 800;\r\n  letter-spacing: 0.04em;\r\n  line-height: 1.4;\r\n  text-transform: uppercase;\r\n}\r\n\r\n.bno-direct-modal__content h3 {\r\n  width: 100%;\r\n  max-width: 100%;\r\n  margin: 10px 0 0;\r\n  color: var(--bno-navy) !important;\r\n  font-size: clamp(28px, 3vw, 40px);\r\n  font-weight: 800;\r\n  line-height: 1.08;\r\n  white-space: normal !important;\r\n  overflow-wrap: anywhere;\r\n  hyphens: auto;\r\n}\r\n\r\n.bno-direct-modal__capacity {\r\n  margin: 12px 0 0;\r\n  color: var(--bno-muted) !important;\r\n  font-size: 14px;\r\n  font-weight: 800;\r\n}\r\n\r\n.bno-direct-modal__description {\r\n  width: 100%;\r\n  max-height: 245px;\r\n  margin-top: 20px;\r\n  padding-right: 8px;\r\n  overflow-x: hidden;\r\n  overflow-y: auto;\r\n  color: var(--bno-text) !important;\r\n  font-size: 15px;\r\n  line-height: 1.72;\r\n  white-space: pre-line;\r\n  overflow-wrap: anywhere;\r\n}\r\n\r\n.bno-direct-modal__close,\r\n.bno-direct-modal__close:hover,\r\n.bno-direct-modal__close:focus,\r\n.bno-direct-modal__close:active {\r\n  position: absolute;\r\n  z-index: 12;\r\n  top: 14px;\r\n  right: 14px;\r\n  display: grid !important;\r\n  width: 44px !important;\r\n  min-width: 44px !important;\r\n  height: 44px !important;\r\n  min-height: 44px !important;\r\n  margin: 0 !important;\r\n  padding: 0 !important;\r\n  place-items: center !important;\r\n  border: 1px solid rgba(255, 255, 255, 0.25) !important;\r\n  border-radius: 999px !important;\r\n  background: var(--bno-navy) !important;\r\n  color: #ffffff !important;\r\n  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.24) !important;\r\n  font-family: Arial, sans-serif !important;\r\n  font-size: 28px !important;\r\n  font-weight: 400 !important;\r\n  line-height: 1 !important;\r\n  cursor: pointer;\r\n}\r\n\r\n.bno-direct-modal__arrow,\r\n.bno-direct-modal__arrow:hover,\r\n.bno-direct-modal__arrow:focus,\r\n.bno-direct-modal__arrow:active {\r\n  position: absolute;\r\n  z-index: 8;\r\n  top: 50%;\r\n  display: grid !important;\r\n  width: 48px !important;\r\n  min-width: 48px !important;\r\n  height: 48px !important;\r\n  min-height: 48px !important;\r\n  margin: 0 !important;\r\n  padding: 0 !important;\r\n  place-items: center !important;\r\n  border: 1px solid rgba(255, 255, 255, 0.25) !important;\r\n  border-radius: 999px !important;\r\n  background: rgba(12, 26, 56, 0.92) !important;\r\n  color: #ffffff !important;\r\n  box-shadow: 0 7px 22px rgba(0, 0, 0, 0.24) !important;\r\n  font-family: Arial, sans-serif !important;\r\n  font-size: 35px !important;\r\n  font-weight: 400 !important;\r\n  line-height: 1 !important;\r\n  cursor: pointer;\r\n  transform: translateY(-50%);\r\n}\r\n\r\n.bno-direct-modal__arrow--prev { left: 18px; }\r\n.bno-direct-modal__arrow--next { right: 18px; }\r\n.bno-direct-modal__arrow[hidden] { display: none !important; }\r\n\r\n.bno-direct-modal__counter {\r\n  position: absolute;\r\n  z-index: 8;\r\n  right: 18px;\r\n  bottom: 18px;\r\n  padding: 8px 12px;\r\n  border: 1px solid rgba(255, 255, 255, 0.2);\r\n  border-radius: 999px;\r\n  background: rgba(12, 26, 56, 0.92) !important;\r\n  color: #ffffff !important;\r\n  font-size: 13px;\r\n  font-weight: 800;\r\n  line-height: 1;\r\n  white-space: nowrap;\r\n}\r\n\r\n.bno-direct-booking {\r\n  margin-top: 30px;\r\n  padding-top: 28px;\r\n  border-top: 1px solid var(--bno-border);\r\n}\r\n\r\n.bno-direct-booking__heading h4 {\r\n  width: 100%;\r\n  margin: 6px 0 0;\r\n  color: var(--bno-navy) !important;\r\n  font-size: 22px;\r\n  font-weight: 800;\r\n  line-height: 1.25;\r\n  white-space: normal !important;\r\n  overflow-wrap: anywhere;\r\n}\r\n\r\n.bno-direct-form {\r\n  display: grid;\r\n  grid-template-columns: repeat(2, minmax(0, 1fr));\r\n  gap: 14px;\r\n  width: 100%;\r\n  margin-top: 20px;\r\n}\r\n\r\n.bno-direct-form label {\r\n  display: grid;\r\n  gap: 7px;\r\n  width: 100%;\r\n  min-width: 0;\r\n  color: var(--bno-navy) !important;\r\n  font-size: 13px;\r\n  font-weight: 800;\r\n}\r\n\r\n.bno-direct-form input {\r\n  display: block;\r\n  width: 100% !important;\r\n  max-width: 100% !important;\r\n  min-width: 0 !important;\r\n  min-height: 48px;\r\n  margin: 0 !important;\r\n  padding: 10px 12px !important;\r\n  border: 1px solid rgba(12, 26, 56, 0.22) !important;\r\n  border-radius: 10px !important;\r\n  background: #ffffff !important;\r\n  color: var(--bno-navy) !important;\r\n  box-shadow: none !important;\r\n  font: inherit;\r\n  font-size: 16px !important;\r\n}\r\n\r\n.bno-direct-form input:focus {\r\n  border-color: var(--bno-navy) !important;\r\n  outline: 2px solid rgba(12, 26, 56, 0.14) !important;\r\n  outline-offset: 1px;\r\n}\r\n\r\n.bno-direct-check-button {\r\n  grid-column: 1 \/ -1;\r\n  width: 100% !important;\r\n}\r\n\r\n.bno-direct-message {\r\n  width: 100%;\r\n  margin-top: 15px;\r\n  padding: 14px 15px;\r\n  border-radius: 11px;\r\n  background: var(--bno-soft) !important;\r\n  color: var(--bno-navy) !important;\r\n  font-size: 14px;\r\n  line-height: 1.5;\r\n  white-space: normal !important;\r\n  overflow-wrap: anywhere;\r\n}\r\n\r\n.bno-direct-message.is-success {\r\n  background: var(--bno-success-bg) !important;\r\n  color: var(--bno-success) !important;\r\n}\r\n\r\n.bno-direct-message.is-error {\r\n  background: var(--bno-error-bg) !important;\r\n  color: var(--bno-error) !important;\r\n}\r\n\r\n.bno-direct-price {\r\n  width: 100%;\r\n  margin-top: 18px;\r\n  overflow: hidden;\r\n  border: 1px solid var(--bno-border);\r\n  border-radius: 14px;\r\n  background: #ffffff !important;\r\n}\r\n\r\n.bno-direct-price__row {\r\n  display: flex;\r\n  align-items: center;\r\n  justify-content: space-between;\r\n  gap: 20px;\r\n  width: 100%;\r\n  padding: 13px 15px;\r\n  border-top: 1px solid rgba(12, 26, 56, 0.1);\r\n  background: #ffffff !important;\r\n  color: var(--bno-navy) !important;\r\n}\r\n\r\n.bno-direct-price__row:first-child { border-top: 0; }\r\n\r\n.bno-direct-price__row span,\r\n.bno-direct-price__row strong {\r\n  min-width: 0;\r\n  max-width: 100%;\r\n  color: inherit !important;\r\n  white-space: normal !important;\r\n  overflow-wrap: anywhere;\r\n}\r\n\r\n.bno-direct-price__row strong {\r\n  flex: 0 0 auto;\r\n  text-align: right;\r\n}\r\n\r\n.bno-direct-price__row--total {\r\n  background: var(--bno-navy) !important;\r\n  color: #ffffff !important;\r\n}\r\n\r\n.bno-direct-continue {\r\n  width: 100%;\r\n  margin-top: 18px;\r\n}\r\n\r\n.bno-direct-book-button {\r\n  width: 100% !important;\r\n  min-height: 54px !important;\r\n  font-size: 15px !important;\r\n}\r\n\r\n.bno-direct-continue p {\r\n  width: 100%;\r\n  margin: 10px 0 0;\r\n  color: var(--bno-muted) !important;\r\n  font-size: 12px;\r\n  line-height: 1.5;\r\n  text-align: center;\r\n  white-space: normal !important;\r\n  overflow-wrap: anywhere;\r\n}\r\n\r\n@media (max-width: 980px) {\r\n  .bno-direct-catalog__grid {\r\n    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;\r\n  }\r\n}\r\n\r\n@media (max-width: 900px) {\r\n  .bno-direct-modal {\r\n    display: block !important;\r\n    width: 100% !important;\r\n    max-width: 100% !important;\r\n    padding: 0 !important;\r\n    overflow-x: hidden !important;\r\n    overflow-y: auto !important;\r\n    background: #ffffff !important;\r\n    overscroll-behavior: contain;\r\n    -webkit-overflow-scrolling: touch;\r\n  }\r\n\r\n  .bno-direct-modal__backdrop {\r\n    position: fixed !important;\r\n  }\r\n\r\n  .bno-direct-modal__dialog {\r\n    display: block !important;\r\n    width: 100% !important;\r\n    max-width: 100% !important;\r\n    min-width: 0 !important;\r\n    height: auto !important;\r\n    min-height: 100vh !important;\r\n    min-height: 100dvh !important;\r\n    max-height: none !important;\r\n    margin: 0 !important;\r\n    overflow: visible !important;\r\n    border: 0 !important;\r\n    border-radius: 0 !important;\r\n    box-shadow: none !important;\r\n  }\r\n\r\n  .bno-direct-modal__gallery {\r\n    width: 100% !important;\r\n    max-width: 100% !important;\r\n    height: clamp(320px, 60vw, 520px) !important;\r\n    min-height: 320px !important;\r\n  }\r\n\r\n  .bno-direct-modal__content {\r\n    width: 100% !important;\r\n    max-width: 100% !important;\r\n    min-width: 0 !important;\r\n    height: auto !important;\r\n    max-height: none !important;\r\n    margin: 0 !important;\r\n    padding: 34px clamp(20px, 5vw, 44px) 52px !important;\r\n    overflow: visible !important;\r\n  }\r\n\r\n  .bno-direct-modal__description {\r\n    max-height: none !important;\r\n    padding-right: 0 !important;\r\n    overflow: visible !important;\r\n  }\r\n\r\n  .bno-direct-modal__close {\r\n    position: fixed !important;\r\n    top: max(12px, env(safe-area-inset-top)) !important;\r\n    right: max(12px, env(safe-area-inset-right)) !important;\r\n  }\r\n\r\n  .bno-direct-price__row {\r\n    display: grid !important;\r\n    grid-template-columns: minmax(0, 1fr) !important;\r\n    gap: 7px !important;\r\n    padding: 17px 18px !important;\r\n  }\r\n\r\n  .bno-direct-price__row strong {\r\n    text-align: left !important;\r\n    font-size: 20px;\r\n  }\r\n}\r\n\r\n@media (max-width: 620px) {\r\n  .bno-direct-catalog__grid {\r\n    grid-template-columns: 1fr !important;\r\n  }\r\n\r\n  .bno-direct-card__body {\r\n    min-height: 220px;\r\n  }\r\n\r\n  .bno-direct-modal__gallery {\r\n    height: 66vw !important;\r\n    min-height: 270px !important;\r\n    max-height: 370px !important;\r\n  }\r\n\r\n  .bno-direct-modal__content {\r\n    padding:\r\n      28px\r\n      max(18px, env(safe-area-inset-right))\r\n      calc(48px + env(safe-area-inset-bottom))\r\n      max(18px, env(safe-area-inset-left)) !important;\r\n  }\r\n\r\n  .bno-direct-modal__content h3 {\r\n    font-size: 28px !important;\r\n    line-height: 1.12 !important;\r\n  }\r\n\r\n  .bno-direct-booking__heading h4 {\r\n    font-size: 24px !important;\r\n    line-height: 1.18 !important;\r\n  }\r\n\r\n  .bno-direct-form {\r\n    grid-template-columns: minmax(0, 1fr) !important;\r\n  }\r\n\r\n  .bno-direct-check-button {\r\n    grid-column: 1 !important;\r\n  }\r\n\r\n  .bno-direct-modal__arrow {\r\n    width: 44px !important;\r\n    min-width: 44px !important;\r\n    height: 44px !important;\r\n    min-height: 44px !important;\r\n  }\r\n\r\n  .bno-direct-modal__arrow--prev { left: 12px; }\r\n  .bno-direct-modal__arrow--next { right: 12px; }\r\n  .bno-direct-modal__counter { right: 12px; bottom: 12px; }\r\n}\r\n\r\n<\/style>\r\n<script>\r\n(function () {\r\n  \"use strict\";\r\n\r\n  const ROOT_SELECTOR = \"[data-bno-direct-catalog]\";\r\n\r\n  function cleanBase(value) {\r\n    return String(value || \"\").trim().replace(\/\\\/+$\/, \"\");\r\n  }\r\n\r\n  function apiUrl(base, path) {\r\n    const clean = cleanBase(base);\r\n    const route = String(path || \"\");\r\n\r\n    if (clean.endsWith(\"\/api\") && route.startsWith(\"\/api\/\")) {\r\n      return clean + route.slice(4);\r\n    }\r\n\r\n    return clean + route;\r\n  }\r\n\r\n  function escapeHtml(value) {\r\n    return String(value == null ? \"\" : value)\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  function stripHtml(value) {\r\n    const node = document.createElement(\"div\");\r\n    node.innerHTML = String(value || \"\");\r\n    return String(node.textContent || node.innerText || \"\")\r\n      .replace(\/\\s+\/g, \" \")\r\n      .trim();\r\n  }\r\n\r\n  function firstValue(object, keys) {\r\n    for (const key of keys) {\r\n      if (object && object[key] != null && object[key] !== \"\") {\r\n        return object[key];\r\n      }\r\n    }\r\n\r\n    return \"\";\r\n  }\r\n\r\n  function parseIdSet(value) {\r\n    return new Set(\r\n      String(value || \"\")\r\n        .split(\",\")\r\n        .map(function (item) {\r\n          return item.trim();\r\n        })\r\n        .filter(Boolean)\r\n    );\r\n  }\r\n\r\n  function languageCode() { return \"pl\"; }\r\n\r\n  function localYmd(date) {\r\n    const year = date.getFullYear();\r\n    const month = String(date.getMonth() + 1).padStart(2, \"0\");\r\n    const day = String(date.getDate()).padStart(2, \"0\");\r\n    return year + \"-\" + month + \"-\" + day;\r\n  }\r\n\r\n  function addDays(date, days) {\r\n    const next = new Date(date.getTime());\r\n    next.setDate(next.getDate() + Number(days || 0));\r\n    return next;\r\n  }\r\n\r\n  function nightsBetween(from, to) {\r\n    const start = new Date(from + \"T12:00:00\");\r\n    const end = new Date(to + \"T12:00:00\");\r\n    return Math.round((end.getTime() - start.getTime()) \/ 86400000);\r\n  }\r\n\r\n  function formatDate(value) {\r\n    try {\r\n      return new Intl.DateTimeFormat(\"pl-PL\", {\r\n        day: \"numeric\",\r\n        month: \"short\",\r\n        year: \"numeric\"\r\n      }).format(new Date(value + \"T12:00:00\"));\r\n    } catch (_error) {\r\n      return value;\r\n    }\r\n  }\r\n\r\n  function formatMoney(amount, currency) {\r\n    try {\r\n      return new Intl.NumberFormat(\"pl-PL\", {\r\n        style: \"currency\",\r\n        currency: String(currency || \"EUR\").toUpperCase(),\r\n        minimumFractionDigits: 2,\r\n        maximumFractionDigits: 2\r\n      }).format(Number(amount || 0));\r\n    } catch (_error) {\r\n      return Number(amount || 0).toFixed(2) + \" \" + String(currency || \"EUR\");\r\n    }\r\n  }\r\n\r\n  function uniqueImages(row) {\r\n    const images = [];\r\n\r\n    function add(value) {\r\n      if (!value) return;\r\n\r\n      if (typeof value === \"string\") {\r\n        const url = value.trim();\r\n        if (\/^https?:\\\/\\\/\/i.test(url)) images.push(url);\r\n        return;\r\n      }\r\n\r\n      if (typeof value === \"object\") {\r\n        add(\r\n          value.url ||\r\n          value.Url ||\r\n          value.imageUrl ||\r\n          value.ImageUrl ||\r\n          value.source ||\r\n          value.Source ||\r\n          value.original ||\r\n          value.Original\r\n        );\r\n      }\r\n    }\r\n\r\n    [\r\n      row.images,\r\n      row.Images,\r\n      row.gallery,\r\n      row.Gallery,\r\n      row.imageUrls,\r\n      row.ImageUrls,\r\n      row.photos,\r\n      row.Photos\r\n    ].forEach(function (items) {\r\n      if (Array.isArray(items)) items.forEach(add);\r\n    });\r\n\r\n    [\r\n      row.image,\r\n      row.Image,\r\n      row.coverImageUrl,\r\n      row.CoverImageUrl,\r\n      row.imageUrl,\r\n      row.ImageUrl,\r\n      row.thumbnailUrl,\r\n      row.ThumbnailUrl\r\n    ].forEach(add);\r\n\r\n    return Array.from(new Set(images));\r\n  }\r\n\r\n  function extractRows(payload) {\r\n    const candidates = [\r\n      payload && payload.data && payload.data.resourceCategories,\r\n      payload && payload.data && payload.data.categories,\r\n      payload && payload.data && payload.data.items,\r\n      payload && payload.data,\r\n      payload && payload.resourceCategories,\r\n      payload && payload.categories,\r\n      payload && payload.items\r\n    ];\r\n\r\n    for (const candidate of candidates) {\r\n      if (Array.isArray(candidate)) return candidate;\r\n    }\r\n\r\n    return [];\r\n  }\r\n\r\n  function normaliseUnit(row) {\r\n    const categoryId = String(\r\n      firstValue(row, [\r\n        \"resourceCategoryId\",\r\n        \"ResourceCategoryId\",\r\n        \"categoryId\",\r\n        \"CategoryId\",\r\n        \"id\",\r\n        \"Id\"\r\n      ])\r\n    ).trim();\r\n\r\n    return {\r\n      categoryId: categoryId,\r\n      name: String(\r\n        firstValue(row, [\r\n          \"localizedName\",\r\n          \"LocalizedName\",\r\n          \"categoryName\",\r\n          \"CategoryName\",\r\n          \"name\",\r\n          \"Name\",\r\n          \"title\",\r\n          \"Title\"\r\n        ]) || \"Zakwaterowanie\"\r\n      ).trim(),\r\n      description: stripHtml(\r\n        firstValue(row, [\r\n          \"localizedDescription\",\r\n          \"LocalizedDescription\",\r\n          \"description\",\r\n          \"Description\",\r\n          \"longDescription\",\r\n          \"LongDescription\",\r\n          \"shortDescription\",\r\n          \"ShortDescription\"\r\n        ])\r\n      ),\r\n      capacity: Number(\r\n        firstValue(row, [\r\n          \"capacity\",\r\n          \"Capacity\",\r\n          \"maxOccupancy\",\r\n          \"MaxOccupancy\",\r\n          \"maximumOccupancy\",\r\n          \"MaximumOccupancy\"\r\n        ])\r\n      ) || 0,\r\n      images: uniqueImages(row),\r\n      published: firstValue(row, [\r\n        \"isPublished\",\r\n        \"IsPublished\",\r\n        \"is_published\",\r\n        \"publishStatus\",\r\n        \"PublishStatus\",\r\n        \"publish_status\",\r\n        \"status\",\r\n        \"Status\"\r\n      ])\r\n    };\r\n  }\r\n\r\n  function isPublished(unit, hasPublicationFields) {\r\n    if (!hasPublicationFields) return true;\r\n    if (typeof unit.published === \"boolean\") return unit.published;\r\n\r\n    return [\r\n      \"published\",\r\n      \"approved\",\r\n      \"reviewed\",\r\n      \"active\",\r\n      \"true\",\r\n      \"1\"\r\n    ].includes(String(unit.published || \"\").trim().toLowerCase());\r\n  }\r\n\r\n  function buildModal(destinationLabel, locationLabel) {\r\n    const modal = document.createElement(\"div\");\r\n    modal.className = \"bno-direct-modal\";\r\n    modal.hidden = true;\r\n    modal.setAttribute(\"role\", \"dialog\");\r\n    modal.setAttribute(\"aria-modal\", \"true\");\r\n    modal.setAttribute(\"aria-label\", \"Zakwaterowanie w \" + destinationLabel);\r\n\r\n    modal.innerHTML = `\r\n      <button type=\"button\" class=\"bno-direct-modal__backdrop\" data-bno-close aria-label=\"Zamknij\"><\/button>\r\n      <div class=\"bno-direct-modal__dialog\">\r\n        <button type=\"button\" class=\"bno-direct-modal__close\" data-bno-close aria-label=\"Zamknij\">\u00d7<\/button>\r\n        <div class=\"bno-direct-modal__gallery\">\r\n          <button type=\"button\" class=\"bno-direct-modal__arrow bno-direct-modal__arrow--prev\" data-bno-prev aria-label=\"Poprzednie zdj\u0119cie\">\u2039<\/button>\r\n          <img decoding=\"async\" class=\"bno-direct-modal__image\" data-bno-modal-image src=\"\" alt=\"\" \/>\r\n          <button type=\"button\" class=\"bno-direct-modal__arrow bno-direct-modal__arrow--next\" data-bno-next aria-label=\"Nast\u0119pne zdj\u0119cie\">\u203a<\/button>\r\n          <span class=\"bno-direct-modal__counter\" data-bno-counter><\/span>\r\n        <\/div>\r\n        <div class=\"bno-direct-modal__content\">\r\n          <span class=\"bno-direct-eyebrow\">${escapeHtml(locationLabel || destinationLabel)}<\/span>\r\n          <h3 data-bno-modal-title><\/h3>\r\n          <p class=\"bno-direct-modal__capacity\" data-bno-modal-capacity><\/p>\r\n          <div class=\"bno-direct-modal__description\" data-bno-modal-description><\/div>\r\n          <div class=\"bno-direct-booking\">\r\n            <div class=\"bno-direct-booking__heading\">\r\n              <span class=\"bno-direct-eyebrow\">Sprawd\u017a sw\u00f3j pobyt<\/span>\r\n              <h4>Sprawd\u017a, czy obiekt jest dost\u0119pny<\/h4>\r\n            <\/div>\r\n            <form class=\"bno-direct-form\" data-bno-availability-form novalidate>\r\n              <label>\r\n                <span>Przyjazd<\/span>\r\n                <input type=\"date\" data-bno-checkin required \/>\r\n              <\/label>\r\n              <label>\r\n                <span>Wyjazd<\/span>\r\n                <input type=\"date\" data-bno-checkout required \/>\r\n              <\/label>\r\n              <label>\r\n                <span>Go\u015bcie<\/span>\r\n                <input type=\"number\" data-bno-guests min=\"1\" step=\"1\" value=\"2\" required \/>\r\n              <\/label>\r\n              <button type=\"submit\" class=\"bno-direct-check-button\" data-bno-check-button>Sprawd\u017a dost\u0119pno\u015b\u0107<\/button>\r\n            <\/form>\r\n            <div class=\"bno-direct-message\" data-bno-message role=\"status\" aria-live=\"polite\" hidden><\/div>\r\n            <div class=\"bno-direct-price\" data-bno-price hidden>\r\n              <div class=\"bno-direct-price__row bno-direct-price__row--total\">\r\n                <span>\u0141\u0105czna cena pobytu<\/span>\r\n                <strong data-bno-total><\/strong>\r\n              <\/div>\r\n              <div class=\"bno-direct-price__row\">\r\n                <span>Do zap\u0142aty teraz na rzecz BNO Travel<\/span>\r\n                <strong data-bno-pay-now><\/strong>\r\n              <\/div>\r\n              <div class=\"bno-direct-price__row\">\r\n                <span>Pozosta\u0142a kwota do zap\u0142aty obiektowi<\/span>\r\n                <strong data-bno-pay-later><\/strong>\r\n              <\/div>\r\n            <\/div>\r\n            <div class=\"bno-direct-continue\" data-bno-continue-wrap hidden>\r\n              <button type=\"button\" class=\"bno-direct-book-button\" data-bno-continue>Przejd\u017a do rezerwacji<\/button>\r\n              <p>Dane go\u015bci, warunki i p\u0142atno\u015b\u0107 s\u0105 finalizowane w bezpiecznym systemie rezerwacyjnym BNO Travel.<\/p>\r\n            <\/div>\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n    `;\r\n\r\n    document.body.appendChild(modal);\r\n    return modal;\r\n  }\r\n\r\n  async function fetchJson(url, options) {\r\n    const controller = new AbortController();\r\n    const timeout = window.setTimeout(function () {\r\n      controller.abort();\r\n    }, 60000);\r\n\r\n    try {\r\n      const response = await fetch(\r\n        url,\r\n        Object.assign(\r\n          {\r\n            cache: \"no-store\",\r\n            signal: controller.signal,\r\n            headers: {\r\n              Accept: \"application\/json\"\r\n            }\r\n          },\r\n          options || {}\r\n        )\r\n      );\r\n\r\n      const payload = await response.json().catch(function () {\r\n        return null;\r\n      });\r\n\r\n      if (!response.ok || !payload || payload.ok === false) {\r\n        const error = new Error(\r\n          payload && (payload.detail || payload.message || payload.error)\r\n            ? payload.detail || payload.message || payload.error\r\n            : \"Nie uda\u0142o si\u0119 zrealizowa\u0107 \u017c\u0105dania.\"\r\n        );\r\n        error.code = payload && payload.error ? String(payload.error) : \"\";\r\n        throw error;\r\n      }\r\n\r\n      return payload;\r\n    } finally {\r\n      window.clearTimeout(timeout);\r\n    }\r\n  }\r\n\r\n  function init(root) {\r\n    if (!root || root.dataset.bnoInitialised === \"1\") return;\r\n    root.dataset.bnoInitialised = \"1\";\r\n\r\n    const apiBase = cleanBase(root.dataset.apiBase);\r\n    const bookingBase = String(\r\n      root.dataset.bookingBase ||\r\n      \"https:\/\/booking.bno-travel.com\/booking\/complete\"\r\n    ).trim();\r\n    const catalogCredsKey = String(root.dataset.catalogCredsKey || \"\").trim();\r\n    const bookingPartnerKey = String(\r\n      root.dataset.bookingPartnerKey || catalogCredsKey\r\n    ).trim();\r\n    const serviceId = String(root.dataset.serviceId || \"\").trim();\r\n    const areaKey = String(root.dataset.areaKey || \"\").trim();\r\n    const destinationLabel = String(\r\n      root.dataset.destinationLabel || \"destino\"\r\n    ).trim();\r\n    const locationLabel = String(\r\n      root.dataset.locationLabel || destinationLabel\r\n    ).trim();\r\n    const bookingOpenUntil = String(\r\n      root.dataset.bookingOpenUntil || \"2027-05-01\"\r\n    ).trim();\r\n    const minimumStayNights = Math.max(\r\n      1,\r\n      Number(root.dataset.minimumStayNights || 1) || 1\r\n    );\r\n    const initialCount = Math.max(\r\n      1,\r\n      Number(root.dataset.initialCount || 12) || 12\r\n    );\r\n    const allowedIds = parseIdSet(root.dataset.allowedUnitIds);\r\n    const excludedIds = parseIdSet(root.dataset.excludedUnitIds);\r\n\r\n    const status = root.querySelector(\"[data-bno-status]\");\r\n    const grid = root.querySelector(\"[data-bno-grid]\");\r\n    const moreWrap = root.querySelector(\"[data-bno-more-wrap]\");\r\n    const moreButton = root.querySelector(\"[data-bno-more]\");\r\n\r\n    if (!apiBase || !catalogCredsKey || !serviceId || !areaKey) {\r\n      if (status) {\r\n        status.textContent = \"Brakuje wymaganej konfiguracji dla Bulk 3.\";\r\n        status.classList.add(\"is-error\");\r\n      }\r\n      return;\r\n    }\r\n\r\n    if (!status || !grid || !moreWrap || !moreButton) return;\r\n\r\n    const modal = buildModal(destinationLabel, locationLabel);\r\n    const modalImage = modal.querySelector(\"[data-bno-modal-image]\");\r\n    const modalTitle = modal.querySelector(\"[data-bno-modal-title]\");\r\n    const modalCapacity = modal.querySelector(\"[data-bno-modal-capacity]\");\r\n    const modalDescription = modal.querySelector(\"[data-bno-modal-description]\");\r\n    const modalCounter = modal.querySelector(\"[data-bno-counter]\");\r\n    const prevButton = modal.querySelector(\"[data-bno-prev]\");\r\n    const nextButton = modal.querySelector(\"[data-bno-next]\");\r\n    const closeButtons = modal.querySelectorAll(\"[data-bno-close]\");\r\n    const availabilityForm = modal.querySelector(\"[data-bno-availability-form]\");\r\n    const checkinInput = modal.querySelector(\"[data-bno-checkin]\");\r\n    const checkoutInput = modal.querySelector(\"[data-bno-checkout]\");\r\n    const guestsInput = modal.querySelector(\"[data-bno-guests]\");\r\n    const checkButton = modal.querySelector(\"[data-bno-check-button]\");\r\n    const messageNode = modal.querySelector(\"[data-bno-message]\");\r\n    const priceBox = modal.querySelector(\"[data-bno-price]\");\r\n    const totalNode = modal.querySelector(\"[data-bno-total]\");\r\n    const payNowNode = modal.querySelector(\"[data-bno-pay-now]\");\r\n    const payLaterNode = modal.querySelector(\"[data-bno-pay-later]\");\r\n    const continueWrap = modal.querySelector(\"[data-bno-continue-wrap]\");\r\n    const continueButton = modal.querySelector(\"[data-bno-continue]\");\r\n\r\n    let units = [];\r\n    let visibleCount = initialCount;\r\n    let currentUnit = null;\r\n    let currentImageIndex = 0;\r\n    let currentQuote = null;\r\n    let previousBodyOverflow = \"\";\r\n\r\n    function setStatus(message, isError) {\r\n      status.textContent = message || \"\";\r\n      status.hidden = !message;\r\n      status.classList.toggle(\"is-error\", Boolean(isError));\r\n    }\r\n\r\n    function setMessage(message, type) {\r\n      messageNode.textContent = message || \"\";\r\n      messageNode.hidden = !message;\r\n      messageNode.classList.remove(\"is-error\", \"is-success\");\r\n      if (type) messageNode.classList.add(\"is-\" + type);\r\n    }\r\n\r\n    function resetQuote() {\r\n      currentQuote = null;\r\n      priceBox.hidden = true;\r\n      continueWrap.hidden = true;\r\n      setMessage(\"\", \"\");\r\n    }\r\n\r\n    function cardHtml(unit, index) {\r\n      const image = unit.images[0];\r\n      const capacity = unit.capacity > 0\r\n        ? \"Maksymalna liczba go\u015bci: \" + unit.capacity\r\n        : \"Zobacz szczeg\u00f3\u0142y i zdj\u0119cia\";\r\n      const description = unit.description ||\r\n        \"Zobacz zdj\u0119cia, pojemno\u015b\u0107 i dost\u0119pno\u015b\u0107 tego obiektu.\";\r\n\r\n      return `\r\n        <article class=\"bno-direct-card\">\r\n          <button type=\"button\" class=\"bno-direct-card__button\" data-bno-unit-index=\"${index}\">\r\n            <div class=\"bno-direct-card__media\">\r\n              <img decoding=\"async\" src=\"${escapeHtml(image)}\" alt=\"${escapeHtml(unit.name)}\" loading=\"lazy\" \/>\r\n              <span class=\"bno-direct-card__count\">${unit.images.length} ${unit.images.length === 1 ? \"zdj\u0119cie\" : ((unit.images.length % 10 >= 2 && unit.images.length % 10 <= 4 && !(unit.images.length % 100 >= 12 && unit.images.length % 100 <= 14)) ? \"zdj\u0119cia\" : \"zdj\u0119\u0107\")}<\/span>\r\n            <\/div>\r\n            <div class=\"bno-direct-card__body\">\r\n              <h3>${escapeHtml(unit.name)}<\/h3>\r\n              <p class=\"bno-direct-card__meta\">${escapeHtml(capacity)}<\/p>\r\n              <p class=\"bno-direct-card__description\">${escapeHtml(description)}<\/p>\r\n              <span class=\"bno-direct-card__link\">Zobacz obiekt \u2192<\/span>\r\n            <\/div>\r\n          <\/button>\r\n        <\/article>\r\n      `;\r\n    }\r\n\r\n    function renderUnits() {\r\n      const visible = units.slice(0, visibleCount);\r\n      grid.innerHTML = visible.map(cardHtml).join(\"\");\r\n      grid.setAttribute(\"aria-busy\", \"false\");\r\n\r\n      grid.querySelectorAll(\"[data-bno-unit-index]\").forEach(function (button) {\r\n        button.addEventListener(\"click\", function () {\r\n          openModal(units[Number(button.dataset.bnoUnitIndex)]);\r\n        });\r\n      });\r\n\r\n      moreWrap.hidden = visibleCount >= units.length;\r\n      setStatus(\r\n        \"Widoczne obiekty: \" + visible.length + \" z \" + units.length +\r\n        \" \u2014 \" + destinationLabel + \".\",\r\n        false\r\n      );\r\n    }\r\n\r\n    function updateModalImage() {\r\n      if (!currentUnit || !currentUnit.images.length) return;\r\n\r\n      currentImageIndex =\r\n        (currentImageIndex + currentUnit.images.length) % currentUnit.images.length;\r\n\r\n      modalImage.src = currentUnit.images[currentImageIndex];\r\n      modalImage.alt = currentUnit.name + \" \u2013 zdj\u0119cie \" + (currentImageIndex + 1);\r\n      modalCounter.textContent =\r\n        currentImageIndex + 1 + \" \/ \" + currentUnit.images.length;\r\n      prevButton.hidden = currentUnit.images.length < 2;\r\n      nextButton.hidden = currentUnit.images.length < 2;\r\n    }\r\n\r\n    function openModal(unit) {\r\n      if (!unit) return;\r\n\r\n      currentUnit = unit;\r\n      currentImageIndex = 0;\r\n      modalTitle.textContent = unit.name;\r\n      modalCapacity.textContent = unit.capacity > 0\r\n        ? \"Maksymalna liczba go\u015bci: \" + unit.capacity\r\n        : \"\";\r\n      modalDescription.textContent = unit.description ||\r\n        \"Sprawd\u017a dost\u0119pno\u015b\u0107 i cen\u0119 tego obiektu.\";\r\n\r\n      const today = new Date();\r\n      const checkin = addDays(today, 1);\r\n      const checkout = addDays(checkin, Math.max(7, minimumStayNights));\r\n\r\n      checkinInput.min = localYmd(today);\r\n      checkoutInput.min = localYmd(addDays(checkin, minimumStayNights));\r\n      checkinInput.value = localYmd(checkin);\r\n      checkoutInput.value = localYmd(checkout);\r\n\r\n      if (bookingOpenUntil) {\r\n        checkinInput.max = bookingOpenUntil;\r\n        checkoutInput.max = bookingOpenUntil;\r\n      }\r\n\r\n      guestsInput.max = String(unit.capacity > 0 ? unit.capacity : 20);\r\n      guestsInput.value = String(Math.min(2, unit.capacity > 0 ? unit.capacity : 2));\r\n\r\n      resetQuote();\r\n      updateModalImage();\r\n\r\n      previousBodyOverflow = document.body.style.overflow;\r\n      document.body.style.overflow = \"hidden\";\r\n      document.body.classList.add(\"bno-direct-modal-open\");\r\n      modal.hidden = false;\r\n      modal.scrollTop = 0;\r\n\r\n      const close = modal.querySelector(\".bno-direct-modal__close\");\r\n      if (close) close.focus();\r\n    }\r\n\r\n    function closeModal() {\r\n      modal.hidden = true;\r\n      document.body.style.overflow = previousBodyOverflow;\r\n      document.body.classList.remove(\"bno-direct-modal-open\");\r\n      currentUnit = null;\r\n      currentQuote = null;\r\n    }\r\n\r\n    async function loadCatalog() {\r\n      try {\r\n        const query = new URLSearchParams({\r\n          serviceId: serviceId,\r\n          credsKey: catalogCredsKey,\r\n          lang: languageCode()\r\n        });\r\n\r\n        const payload = await fetchJson(\r\n          apiUrl(apiBase, \"\/api\/mews\/catalog?\") + query.toString()\r\n        );\r\n        const rows = extractRows(payload);\r\n        const publicationKeys = [\r\n          \"isPublished\",\r\n          \"IsPublished\",\r\n          \"is_published\",\r\n          \"publishStatus\",\r\n          \"PublishStatus\",\r\n          \"publish_status\",\r\n          \"status\",\r\n          \"Status\"\r\n        ];\r\n        const hasPublicationFields = rows.some(function (row) {\r\n          return publicationKeys.some(function (key) {\r\n            return Object.prototype.hasOwnProperty.call(row || {}, key);\r\n          });\r\n        });\r\n        const seen = new Set();\r\n\r\n        units = rows\r\n          .map(normaliseUnit)\r\n          .filter(function (unit) {\r\n            if (!unit.categoryId || seen.has(unit.categoryId)) return false;\r\n            seen.add(unit.categoryId);\r\n            if (allowedIds.size && !allowedIds.has(unit.categoryId)) return false;\r\n            if (excludedIds.has(unit.categoryId)) return false;\r\n            if (!isPublished(unit, hasPublicationFields)) return false;\r\n            return unit.images.length > 0;\r\n          })\r\n          .sort(function (a, b) {\r\n            return a.name.localeCompare(b.name, \"pl\", { sensitivity: \"base\" });\r\n          });\r\n\r\n        if (!units.length) {\r\n          grid.innerHTML = \"\";\r\n          grid.setAttribute(\"aria-busy\", \"false\");\r\n          moreWrap.hidden = true;\r\n          setStatus(\r\n            \"Nie mo\u017cna teraz wczyta\u0107 opublikowanych obiekt\u00f3w.\",\r\n            true\r\n          );\r\n          return;\r\n        }\r\n\r\n        renderUnits();\r\n      } catch (error) {\r\n        console.error(\"BNO destination catalog failed:\", error);\r\n        grid.innerHTML = \"\";\r\n        grid.setAttribute(\"aria-busy\", \"false\");\r\n        moreWrap.hidden = true;\r\n        setStatus(\r\n          \"Nie mo\u017cna wczyta\u0107 obiekt\u00f3w. Od\u015bwie\u017c stron\u0119.\",\r\n          true\r\n        );\r\n      }\r\n    }\r\n\r\n    availabilityForm.addEventListener(\"submit\", async function (event) {\r\n      event.preventDefault();\r\n      if (!currentUnit) return;\r\n\r\n      const from = String(checkinInput.value || \"\").trim();\r\n      const to = String(checkoutInput.value || \"\").trim();\r\n      const adults = Number(guestsInput.value || 0);\r\n\r\n      resetQuote();\r\n\r\n      if (!from || !to || to <= from) {\r\n        setMessage(\"Wybierz prawid\u0142owe daty. Data wyjazdu musi przypada\u0107 po dacie przyjazdu.\", \"error\");\r\n        return;\r\n      }\r\n\r\n      const nights = nightsBetween(from, to);\r\n      if (nights < minimumStayNights) {\r\n        setMessage(\r\n          \"Minimalna d\u0142ugo\u015b\u0107 pobytu to \" + minimumStayNights +\r\n          (minimumStayNights === 1 ? \" noc.\" : (((minimumStayNights % 10 >= 2 && minimumStayNights % 10 <= 4 && !(minimumStayNights % 100 >= 12 && minimumStayNights % 100 <= 14))) ? \" noce.\" : \" nocy.\")),\r\n          \"error\"\r\n        );\r\n        return;\r\n      }\r\n\r\n      if (!Number.isInteger(adults) || adults < 1) {\r\n        setMessage(\"Wybierz prawid\u0142ow\u0105 liczb\u0119 go\u015bci.\", \"error\");\r\n        return;\r\n      }\r\n\r\n      if (currentUnit.capacity > 0 && adults > currentUnit.capacity) {\r\n        setMessage(\r\n          \"Ten obiekt mo\u017ce pomie\u015bci\u0107 maksymalnie \" +\r\n          currentUnit.capacity + \" go\u015bci.\",\r\n          \"error\"\r\n        );\r\n        return;\r\n      }\r\n\r\n      checkButton.disabled = true;\r\n      checkButton.textContent = \"Sprawdzanie\u2026\";\r\n      setMessage(\"Sprawdzanie dost\u0119pno\u015bci i ceny\u2026\", \"\");\r\n\r\n      try {\r\n        const payload = await fetchJson(\r\n          apiUrl(apiBase, \"\/api\/bno-direct\/quote\"),\r\n          {\r\n            method: \"POST\",\r\n            headers: {\r\n              Accept: \"application\/json\",\r\n              \"Content-Type\": \"application\/json\"\r\n            },\r\n            body: JSON.stringify({\r\n              partnerKey: bookingPartnerKey,\r\n              areaKey: areaKey,\r\n              resourceCategoryId: currentUnit.categoryId,\r\n              from: from,\r\n              to: to,\r\n              adults: adults\r\n            })\r\n          }\r\n        );\r\n\r\n        const quote = payload.data || payload;\r\n        const pricing = quote.pricing || {};\r\n        const currency = String(quote.currency || \"EUR\").toUpperCase();\r\n        const total = Number(pricing.guestTotalGross);\r\n        const payNow = Number(pricing.bnoPrepaidGross);\r\n        const payLater = Number(pricing.remainingGross);\r\n\r\n        if (!Number.isFinite(total) || total <= 0) {\r\n          throw new Error(\"Nie uda\u0142o si\u0119 pobra\u0107 ceny ca\u0142kowitej.\");\r\n        }\r\n\r\n        currentQuote = {\r\n          from: from,\r\n          to: to,\r\n          adults: adults,\r\n          currency: currency,\r\n          total: total,\r\n          payNow: Number.isFinite(payNow) ? payNow : 0,\r\n          payLater: Number.isFinite(payLater)\r\n            ? payLater\r\n            : Math.max(0, total - (Number.isFinite(payNow) ? payNow : 0))\r\n        };\r\n\r\n        totalNode.textContent = formatMoney(currentQuote.total, currency);\r\n        payNowNode.textContent = formatMoney(currentQuote.payNow, currency);\r\n        payLaterNode.textContent = formatMoney(currentQuote.payLater, currency);\r\n        priceBox.hidden = false;\r\n        continueWrap.hidden = false;\r\n\r\n        setMessage(\r\n          \"Obiekt jest dost\u0119pny od \" + formatDate(from) +\r\n          \" do \" + formatDate(to) + \".\",\r\n          \"success\"\r\n        );\r\n      } catch (error) {\r\n        console.error(\"BNO destination quote failed:\", error);\r\n        const code = String(error && error.code || \"\");\r\n        let message = error && error.message\r\n          ? error.message\r\n          : \"Nie uda\u0142o si\u0119 sprawdzi\u0107 dost\u0119pno\u015bci. Spr\u00f3buj ponownie.\";\r\n\r\n        if (code === \"booking_not_open\") {\r\n          message = \"Rezerwacje dla tej destynacji nie s\u0105 jeszcze otwarte.\";\r\n        } else if (code === \"not_available\") {\r\n          message = \"Obiekt nie jest dost\u0119pny w wybranym terminie.\";\r\n        }\r\n\r\n        setMessage(message, \"error\");\r\n      } finally {\r\n        checkButton.disabled = false;\r\n        checkButton.textContent = \"Sprawd\u017a dost\u0119pno\u015b\u0107\";\r\n      }\r\n    });\r\n\r\n    function invalidateQuote() {\r\n      resetQuote();\r\n    }\r\n\r\n    checkinInput.addEventListener(\"change\", function () {\r\n      if (checkinInput.value) {\r\n        const minCheckout = localYmd(\r\n          addDays(new Date(checkinInput.value + \"T12:00:00\"), minimumStayNights)\r\n        );\r\n        checkoutInput.min = minCheckout;\r\n        if (!checkoutInput.value || checkoutInput.value < minCheckout) {\r\n          checkoutInput.value = minCheckout;\r\n        }\r\n      }\r\n      invalidateQuote();\r\n    });\r\n\r\n    checkoutInput.addEventListener(\"change\", invalidateQuote);\r\n    guestsInput.addEventListener(\"change\", invalidateQuote);\r\n\r\n    continueButton.addEventListener(\"click\", function () {\r\n      if (!currentUnit || !currentQuote) return;\r\n\r\n      const url = new URL(bookingBase, window.location.origin);\r\n      url.searchParams.set(\"partnerKey\", bookingPartnerKey);\r\n      url.searchParams.set(\"areaKey\", areaKey);\r\n      url.searchParams.set(\"resourceCategoryId\", currentUnit.categoryId);\r\n      url.searchParams.set(\"from\", currentQuote.from);\r\n      url.searchParams.set(\"to\", currentQuote.to);\r\n      url.searchParams.set(\"adults\", String(currentQuote.adults));\r\n      url.searchParams.set(\"propertyName\", currentUnit.name);\r\n      url.searchParams.set(\"lang\", languageCode());\r\n\r\n      if (currentUnit.images[0]) {\r\n        url.searchParams.set(\"imageUrl\", currentUnit.images[0]);\r\n      }\r\n\r\n      window.location.assign(url.toString());\r\n    });\r\n\r\n    prevButton.addEventListener(\"click\", function () {\r\n      currentImageIndex -= 1;\r\n      updateModalImage();\r\n    });\r\n\r\n    nextButton.addEventListener(\"click\", function () {\r\n      currentImageIndex += 1;\r\n      updateModalImage();\r\n    });\r\n\r\n    closeButtons.forEach(function (button) {\r\n      button.addEventListener(\"click\", closeModal);\r\n    });\r\n\r\n    modal.addEventListener(\"keydown\", function (event) {\r\n      if (event.key === \"Escape\") closeModal();\r\n      if (event.key === \"ArrowLeft\") {\r\n        currentImageIndex -= 1;\r\n        updateModalImage();\r\n      }\r\n      if (event.key === \"ArrowRight\") {\r\n        currentImageIndex += 1;\r\n        updateModalImage();\r\n      }\r\n    });\r\n\r\n    moreButton.addEventListener(\"click\", function () {\r\n      visibleCount = Math.min(visibleCount + initialCount, units.length);\r\n      renderUnits();\r\n    });\r\n\r\n    loadCatalog();\r\n  }\r\n\r\n  function mountAll(scope) {\r\n    const context = scope && scope.querySelectorAll ? scope : document;\r\n    context.querySelectorAll(ROOT_SELECTOR).forEach(init);\r\n  }\r\n\r\n  window.BNODirectDestinationCatalog = {\r\n    mountAll: mountAll\r\n  };\r\n\r\n  if (document.readyState === \"loading\") {\r\n    document.addEventListener(\"DOMContentLoaded\", function () {\r\n      mountAll(document);\r\n    }, { once: true });\r\n  } else {\r\n    mountAll(document);\r\n  }\r\n\r\n  window.addEventListener(\"load\", function () {\r\n    mountAll(document);\r\n  }, { once: true });\r\n})();\r\n\r\n<\/script>\r\n<style>\r\n\/* =========================================================\r\n   ZELL AM SEE \u2013 BULK 3 \/ FIRE BNO DIRECT-KATALOGER\r\n   Legges etter den globale BNO Direct-CSS-en\r\n   ========================================================= *\/\r\n\r\nhtml,\r\nbody {\r\n  max-width: 100%;\r\n  overflow-x: clip;\r\n}\r\n\r\n#enheter.bno-zell-catalogs,\r\n#enheter.bno-zell-catalogs * {\r\n  box-sizing: border-box;\r\n}\r\n\r\n#enheter.bno-zell-catalogs {\r\n  width: 100%;\r\n  max-width: 100%;\r\n  overflow-x: clip;\r\n  scroll-margin-top: 90px;\r\n}\r\n\r\n#enheter .bno-zell-catalog-block {\r\n  position: relative;\r\n  width: 100%;\r\n  max-width: 100%;\r\n  margin: 0;\r\n  padding: 88px 0;\r\n  overflow-x: clip;\r\n  scroll-margin-top: 90px;\r\n}\r\n\r\n#enheter .bno-zell-catalog-block--soft {\r\n  background: linear-gradient(180deg, #f5f8fa 0%, #edf3f6 100%) !important;\r\n}\r\n\r\n#enheter .bno-zell-catalog-block--light {\r\n  background: #ffffff !important;\r\n}\r\n\r\n#enheter .bno-zell-catalog-block > .bno-shell {\r\n  width: min(1180px, calc(100% - 48px));\r\n  max-width: 1180px;\r\n  margin-right: auto;\r\n  margin-left: auto;\r\n}\r\n\r\n\/* Overskrift per hotell *\/\r\n#enheter .bno-zell-catalog-heading {\r\n  display: grid;\r\n  max-width: 900px;\r\n  grid-template-columns: 58px minmax(0, 1fr);\r\n  gap: 22px;\r\n  align-items: start;\r\n  margin: 0 0 38px;\r\n}\r\n\r\n#enheter .bno-zell-catalog-heading__number {\r\n  display: inline-flex;\r\n  width: 58px;\r\n  height: 58px;\r\n  align-items: center;\r\n  justify-content: center;\r\n  border-radius: 17px;\r\n  background: #0c1a38;\r\n  color: #ffffff;\r\n  font-size: 16px;\r\n  font-weight: 850;\r\n  line-height: 1;\r\n  box-shadow: 0 12px 28px rgba(12, 26, 56, 0.20);\r\n}\r\n\r\n#enheter .bno-zell-catalog-heading .bno-eyebrow {\r\n  display: inline-flex;\r\n  margin: 0 0 9px;\r\n  color: #123b5d;\r\n  font-size: 12px;\r\n  font-weight: 800;\r\n  line-height: 1.3;\r\n  letter-spacing: 0.085em;\r\n  text-transform: uppercase;\r\n}\r\n\r\n#enheter .bno-zell-catalog-heading h2 {\r\n  margin: 0 0 13px;\r\n  color: #0c1a38;\r\n  font-size: clamp(32px, 4vw, 48px);\r\n  font-weight: 700;\r\n  line-height: 1.1;\r\n  letter-spacing: -0.03em;\r\n}\r\n\r\n#enheter .bno-zell-catalog-heading p {\r\n  max-width: 760px;\r\n  margin: 0;\r\n  color: #586676;\r\n  font-size: 17px;\r\n  line-height: 1.7;\r\n}\r\n\r\n\/* Status *\/\r\n#enheter .bno-direct-catalog__status {\r\n  width: 100%;\r\n  max-width: 100%;\r\n  margin: 0 0 28px !important;\r\n  padding: 15px 17px !important;\r\n  border: 1px solid rgba(12, 26, 56, 0.14) !important;\r\n  border-radius: 14px !important;\r\n  background: rgba(255, 255, 255, 0.92) !important;\r\n  color: #0c1a38 !important;\r\n  font-size: 15px !important;\r\n  line-height: 1.5 !important;\r\n  overflow-wrap: anywhere;\r\n}\r\n\r\n\/* Grid \u2013 lik Chamonix *\/\r\n#enheter .bno-direct-catalog__grid {\r\n  display: grid !important;\r\n  width: 100% !important;\r\n  max-width: 100% !important;\r\n  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;\r\n  gap: 24px !important;\r\n  align-items: stretch !important;\r\n  margin: 0 !important;\r\n  padding: 0 !important;\r\n}\r\n\r\n#enheter .bno-direct-card {\r\n  position: relative;\r\n  min-width: 0;\r\n}\r\n\r\n\/* Tydelig hotellmerke p\u00e5 hvert genererte romkort *\/\r\n#enheter .bno-direct-card::before {\r\n  position: absolute;\r\n  top: 14px;\r\n  left: 14px;\r\n  z-index: 8;\r\n  display: inline-flex;\r\n  max-width: calc(100% - 28px);\r\n  padding: 7px 11px;\r\n  overflow: hidden;\r\n  border-radius: 999px;\r\n  background: rgba(12, 26, 56, 0.92);\r\n  color: #ffffff;\r\n  font-size: 9.5px;\r\n  font-weight: 800;\r\n  line-height: 1.2;\r\n  letter-spacing: 0.055em;\r\n  text-overflow: ellipsis;\r\n  text-transform: uppercase;\r\n  white-space: nowrap;\r\n  pointer-events: none;\r\n  backdrop-filter: blur(7px);\r\n  -webkit-backdrop-filter: blur(7px);\r\n}\r\n\r\n#rom-the-house .bno-direct-card::before {\r\n  content: \"The House Zell am See\";\r\n}\r\n\r\n#rom-the-gast-house .bno-direct-card::before {\r\n  content: \"The Gast House Zell am See\";\r\n}\r\n\r\n#rom-nikolaus .bno-direct-card::before {\r\n  content: \"Nikolaus by AvenidA\";\r\n}\r\n\r\n#rom-elements-resort .bno-direct-card::before {\r\n  content: \"Elements Resort Zell am See\";\r\n}\r\n\r\n\/* Kortene skal ikke arve bredder eller bildepadding fra \u00f8vrig side-CSS *\/\r\n#enheter .bno-direct-card,\r\n#enheter .bno-direct-card__button,\r\n#enheter .bno-direct-card__media,\r\n#enheter .bno-direct-card__body {\r\n  max-width: 100% !important;\r\n}\r\n\r\n#enheter .bno-direct-card__media {\r\n  padding: 0 !important;\r\n}\r\n\r\n#enheter .bno-direct-card__media img {\r\n  position: static !important;\r\n  inset: auto !important;\r\n  display: block !important;\r\n  width: 100% !important;\r\n  height: 100% !important;\r\n  max-width: none !important;\r\n  margin: 0 !important;\r\n  padding: 0 !important;\r\n  object-fit: cover !important;\r\n}\r\n\r\n#enheter .bno-direct-more-wrap {\r\n  display: flex;\r\n  justify-content: center;\r\n  margin-top: 34px;\r\n}\r\n\r\n#enheter .bno-direct-more-wrap[hidden] {\r\n  display: none !important;\r\n}\r\n\r\n#enheter .bno-direct-more {\r\n  display: inline-flex;\r\n  min-height: 50px;\r\n  align-items: center;\r\n  justify-content: center;\r\n  padding: 13px 22px;\r\n  border: 1px solid #0c1a38;\r\n  border-radius: 12px;\r\n  background: #0c1a38;\r\n  color: #ffffff;\r\n  cursor: pointer;\r\n  font: inherit;\r\n  font-size: 14px;\r\n  font-weight: 800;\r\n  transition: transform 0.2s ease, background-color 0.2s ease, box-shadow 0.2s ease;\r\n}\r\n\r\n#enheter .bno-direct-more:hover,\r\n#enheter .bno-direct-more:focus {\r\n  background: #123b5d;\r\n  box-shadow: 0 12px 26px rgba(12, 26, 56, 0.20);\r\n  transform: translateY(-2px);\r\n}\r\n\r\n\/* Nettbrett *\/\r\n@media (max-width: 1024px) {\r\n  #enheter .bno-direct-catalog__grid {\r\n    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;\r\n  }\r\n}\r\n\r\n\/* Mobil *\/\r\n@media (max-width: 767px) {\r\n  #enheter .bno-zell-catalog-block {\r\n    padding: 62px 0;\r\n  }\r\n\r\n  #enheter .bno-zell-catalog-block > .bno-shell {\r\n    width: min(100% - 32px, 1180px);\r\n  }\r\n\r\n  #enheter .bno-zell-catalog-heading {\r\n    grid-template-columns: 1fr;\r\n    gap: 17px;\r\n    margin-bottom: 31px;\r\n  }\r\n\r\n  #enheter .bno-zell-catalog-heading__number {\r\n    width: 50px;\r\n    height: 50px;\r\n    border-radius: 15px;\r\n  }\r\n\r\n  #enheter .bno-zell-catalog-heading h2 {\r\n    font-size: clamp(29px, 9vw, 39px);\r\n  }\r\n\r\n  #enheter .bno-zell-catalog-heading p {\r\n    font-size: 16px;\r\n    line-height: 1.65;\r\n  }\r\n\r\n  #enheter .bno-direct-catalog__grid {\r\n    grid-template-columns: 1fr !important;\r\n    gap: 21px !important;\r\n  }\r\n\r\n  #enheter .bno-direct-card::before {\r\n    top: 12px;\r\n    left: 12px;\r\n    max-width: calc(100% - 24px);\r\n    font-size: 9px;\r\n  }\r\n}\r\n\r\n@media (prefers-reduced-motion: reduce) {\r\n  #enheter *,\r\n  .bno-direct-modal * {\r\n    animation-duration: 0.01ms !important;\r\n    animation-iteration-count: 1 !important;\r\n    transition-duration: 0.01ms !important;\r\n  }\r\n}\r\n\r\n<\/style>\r\n<script>\r\n(function () {\r\n  \"use strict\";\r\n\r\n  function remountZellCatalogs() {\r\n    if (\r\n      window.BNODirectDestinationCatalog &&\r\n      typeof window.BNODirectDestinationCatalog.mountAll === \"function\"\r\n    ) {\r\n      window.BNODirectDestinationCatalog.mountAll(document);\r\n    }\r\n  }\r\n\r\n  remountZellCatalogs();\r\n  window.setTimeout(remountZellCatalogs, 150);\r\n  window.setTimeout(remountZellCatalogs, 600);\r\n  window.setTimeout(remountZellCatalogs, 1500);\r\n\r\n  document.addEventListener(\"elementor\/frontend\/init\", function () {\r\n    window.setTimeout(remountZellCatalogs, 100);\r\n  });\r\n})();\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-e6dc9e6 e-flex e-con-boxed e-con e-parent\" data-id=\"e6dc9e6\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-1bdce1cb e-flex e-con-boxed e-con e-parent\" data-id=\"1bdce1cb\" 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-1c026e1c elementor-widget elementor-widget-html\" data-id=\"1c026e1c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<section class=\"bno-zell bno-section bno-section--light\">\r\n<div class=\"bno-shell\">\r\n<div class=\"bno-editorial-split\">\r\n<div class=\"bno-editorial-split__content\">\r\n<span class=\"bno-eyebrow\">\r\n          Atrakcje w Zell am See\r\n        <\/span>\r\n<h2>\r\n          G\u00f3ry, jezioro i aktywny wypoczynek przez ca\u0142y rok\r\n        <\/h2>\r\n<p>\r\n          Zell am See \u0142\u0105czy \u017cyw\u0105 atmosfer\u0119 miasta z blisko\u015bci\u0105 jeziora, g\u00f3r oraz szerok\u0105 ofert\u0105 aktywno\u015bci. To znakomita baza zar\u00f3wno na aktywne wakacje, jak i spokojniejszy pobyt.\r\n        <\/p>\r\n<p>\r\n          Zim\u0105 region zach\u0119ca do jazdy na nartach i innych aktywno\u015bci na \u015bniegu, natomiast latem oferuje w\u0119dr\u00f3wki piesze, jazd\u0119 na rowerze, k\u0105piele i atrakcje nad jeziorem. Restauracje, sklepy i us\u0142ugi u\u0142atwiaj\u0105 po\u0142\u0105czenie aktywnego wypoczynku z komfortowymi dniami w mie\u015bcie.\r\n        <\/p>\r\n<div class=\"bno-actions\">\r\n<a class=\"bno-btn bno-btn--primary\" href=\"#fakta\">\r\n            Zobacz informacje praktyczne\r\n          <\/a>\r\n<\/div>\r\n<\/div>\r\n<div class=\"bno-editorial-split__media\">\r\n<img data-recalc-dims=\"1\" decoding=\"async\" alt=\"Monta\u00f1a, lago y experiencias de vacaciones en Zell am See\" loading=\"lazy\" src=\"https:\/\/i0.wp.com\/bno-travel.com\/wp-content\/uploads\/2026\/08\/AdobeStock_40023408.jpeg?w=800&#038;ssl=1\"\/>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/section>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7087d327 e-flex e-con-boxed e-con e-parent\" data-id=\"7087d327\" 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-72cc6985 elementor-widget elementor-widget-html\" data-id=\"72cc6985\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<section class=\"bno-zell bno-section bno-section--soft\" id=\"fakta\">\r\n<div class=\"bno-shell\">\r\n<div class=\"bno-section-heading\">\r\n<span class=\"bno-eyebrow\">\r\n        Informacje praktyczne\r\n      <\/span>\r\n<h2>\r\n        Atrakcje, transport i przydatne informacje w Zell am See\r\n      <\/h2>\r\n<p>\r\n        Poni\u017cej znajdziesz podsumowanie mo\u017cliwo\u015bci, dzi\u0119ki kt\u00f3rym Zell am See jest atrakcyjnym miejscem o r\u00f3\u017cnych porach roku.\r\n      <\/p>\r\n<\/div>\r\n<div class=\"bno-info-grid\">\r\n<article class=\"bno-value-card\">\r\n<span class=\"bno-value-card__number\">01<\/span>\r\n<h3>Atrakcje zimowe<\/h3>\r\n<p>\r\n          Zim\u0105 Zell am See jest \u015bwietnym punktem wyj\u015bcia do jazdy na nartach, aktywno\u015bci zimowych i odkrywania okolicznych g\u00f3r. Zakres oferty i godziny otwarcia zmieniaj\u0105 si\u0119 w trakcie sezonu.\r\n        <\/p>\r\n<\/article>\r\n<article class=\"bno-value-card\">\r\n<span class=\"bno-value-card__number\">02<\/span>\r\n<h3>Aktywno\u015bci letnie<\/h3>\r\n<p>\r\n          Latem mo\u017cna korzysta\u0107 z licznych tras pieszych i rowerowych, k\u0105pieli, \u017ceglowania oraz spokojnych dni nad jeziorem lub w g\u00f3rach.\r\n        <\/p>\r\n<\/article>\r\n<article class=\"bno-value-card\">\r\n<span class=\"bno-value-card__number\">03<\/span>\r\n<h3>Transport<\/h3>\r\n<p>\r\n          Zell am See ma dobre po\u0142\u0105czenia w regionie i kompaktowe centrum. Przed wyjazdem zawsze sprawd\u017a aktualne rozk\u0142ady oraz dost\u0119pno\u015b\u0107 us\u0142ug sezonowych.\r\n        <\/p>\r\n<\/article>\r\n<article class=\"bno-value-card\">\r\n<span class=\"bno-value-card__number\">04<\/span>\r\n<h3>Sklepy i us\u0142ugi<\/h3>\r\n<p>\r\n          W centrum i w jego okolicy znajdziesz supermarkety, sklepy sportowe, apteki oraz inne przydatne us\u0142ugi na czas pobytu.\r\n        <\/p>\r\n<\/article>\r\n<article class=\"bno-value-card\">\r\n<span class=\"bno-value-card__number\">05<\/span>\r\n<h3>Restauracje<\/h3>\r\n<p>\r\n          Miasto oferuje restauracje, kawiarnie i inne lokale gastronomiczne, dzi\u0119ki kt\u00f3rym aktywne dni mo\u017cna \u0142atwo po\u0142\u0105czy\u0107 z przyjemnymi posi\u0142kami.\r\n        <\/p>\r\n<\/article>\r\n<article class=\"bno-value-card\">\r\n<span class=\"bno-value-card__number\">06<\/span>\r\n<h3>Pobyty przez ca\u0142y rok<\/h3>\r\n<p>\r\n          Po\u0142\u0105czenie g\u00f3r, jeziora, miejskiego centrum i r\u00f3\u017cnych koncepcji hotelowych sprawia, \u017ce Zell am See jest dobrym wyborem zar\u00f3wno na kr\u00f3tkie wypady, jak i d\u0142u\u017csze wakacje.\r\n        <\/p>\r\n<\/article>\r\n<\/div>\r\n<\/div>\r\n<\/section>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4af3cc1b elementor-widget elementor-widget-html\" data-id=\"4af3cc1b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<section class=\"bno-zell bno-section bno-destination-cta\">\r\n<div class=\"bno-shell\">\r\n<div class=\"bno-cta-box\">\r\n<div class=\"bno-cta-box__content\">\r\n<span class=\"bno-eyebrow\">\r\n          Nast\u0119pny krok\r\n        <\/span>\r\n<h2>\r\n          Znajd\u017a odpowiedni hotel i typ pokoju w Zell am See\r\n        <\/h2>\r\n<p>\r\n          Por\u00f3wnaj pokoje, apartamenty typu suite i apartamenty w The House, The Gast House, Nikolaus by AvenidA oraz Elements Resort Zell am See.\r\n        <\/p>\r\n<\/div>\r\n<div class=\"bno-cta-box__action\">\r\n<a class=\"bno-btn bno-btn--primary bno-cta-button\" href=\"#enheter\">\r\n<span>Zobacz pokoje i apartamenty<\/span>\r\n<span aria-hidden=\"true\">\u2192<\/span>\r\n<\/a>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/section>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-ee08c8a e-flex e-con-boxed e-con e-parent\" data-id=\"ee08c8a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Zell am See \u00b7 Austria Zakwaterowanie w Zell am See: odkryj cztery hotele mi\u0119dzy g\u00f3rami a jeziorem Znajd\u017a pokoje, apartamenty typu suite i apartamenty w The House Zell am See, The Gast House Zell am See, Nikolaus by AvenidA oraz Elements Resort Zell am See. Por\u00f3wnaj typy zakwaterowania i wybierz opcj\u0119 najlepiej dopasowan\u0105 do Twojej [&hellip;]<\/p>\n","protected":false},"author":260013438,"featured_media":0,"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":""},"class_list":["post-95458","page","type-page","status-publish","hentry"],"jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/PgDuwj-oPE","jetpack-related-posts":[{"id":95489,"url":"https:\/\/bno-travel.com\/pl\/overnatting-i-de-osterrikske-alper\/","url_meta":{"origin":95458,"position":0},"title":"Alpy Austriackie","author":"Jan Terje \u00c5s","date":"2026-07-29","format":false,"excerpt":"Miejsca docelowe \u00b7 Alpy Austriackie Zakwaterowanie w Alpach Austriackich: znajd\u017a odpowiednie miejsce na swoj\u0105 podr\u00f3\u017c Pobyt w Alpach Austriackich przybli\u017ca Ci\u0119 do alpejskich miejscowo\u015bci, teren\u00f3w narciarskich, jezior i spektakularnych g\u00f3rskich krajobraz\u00f3w. Odkryj Kaprun i nasze pozosta\u0142e kierunki oraz znajd\u017a pobyt odpowiedni zar\u00f3wno na zimowe wakacje, jak i aktywne letnie dni.\u2026","rel":"","context":"Podobny wpis","block_context":{"text":"Podobny wpis","link":""},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":94361,"url":"https:\/\/bno-travel.com\/en\/overnatting-i-zell-am-see\/","url_meta":{"origin":95458,"position":1},"title":"Accommodation in Zell am See","author":"Jan Terje \u00c5s","date":"2026-08-03","format":false,"excerpt":"Zell am See \u00b7 Austria Accommodation in Zell am See \u2013 explore four hotels by the mountains and lake Find rooms, suites and apartments at The House Zell am See, The Gast House Zell am See, Nikolaus by AvenidA and Elements Resort Zell am See. Compare the room types and\u2026","rel":"","context":"Podobny wpis","block_context":{"text":"Podobny wpis","link":""},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":94942,"url":"https:\/\/bno-travel.com\/es\/overnatting-i-zell-am-see\/","url_meta":{"origin":95458,"position":2},"title":"Alojamiento en Zell am See","author":"Jan Terje \u00c5s","date":"2026-08-03","format":false,"excerpt":"Zell am See \u00b7 Austria Alojamiento en Zell am See: descubre cuatro hoteles entre la monta\u00f1a y el lago Encuentra habitaciones, suites y apartamentos en The House Zell am See, The Gast House Zell am See, Nikolaus by AvenidA y Elements Resort Zell am See. Compara los tipos de alojamiento\u2026","rel":"","context":"Podobny wpis","block_context":{"text":"Podobny wpis","link":""},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":94514,"url":"https:\/\/bno-travel.com\/nl\/overnatting-i-zell-am-see\/","url_meta":{"origin":95458,"position":3},"title":"Accommodatie in Zell am See","author":"Jan Terje \u00c5s","date":"2026-08-03","format":false,"excerpt":"Zell am See \u00b7 Oostenrijk Accommodatie in Zell am See \u2013 ontdek vier hotels bij bergen en meer Vind kamers, suites en appartementen bij The House Zell am See, The Gast House Zell am See, Nikolaus by AvenidA en Elements Resort Zell am See. Vergelijk de kamertypes en vind de\u2026","rel":"","context":"Podobny wpis","block_context":{"text":"Podobny wpis","link":""},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":94664,"url":"https:\/\/bno-travel.com\/fr\/overnatting-i-zell-am-see\/","url_meta":{"origin":95458,"position":4},"title":"H\u00e9bergement \u00e0 Zell am See","author":"Jan Terje \u00c5s","date":"2026-08-03","format":false,"excerpt":"Zell am See \u00b7 Autriche H\u00e9bergement \u00e0 Zell am See \u2013 d\u00e9couvrez quatre h\u00f4tels entre montagne et lac Trouvez des chambres, suites et appartements \u00e0 The House Zell am See, The Gast House Zell am See, Nikolaus by AvenidA et Elements Resort Zell am See. Comparez les types d\u2019h\u00e9bergement et\u2026","rel":"","context":"Podobny wpis","block_context":{"text":"Podobny wpis","link":""},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":94418,"url":"https:\/\/bno-travel.com\/da\/overnatting-i-zell-am-see\/","url_meta":{"origin":95458,"position":5},"title":"Overnatning i Zell am See","author":"Jan Terje \u00c5s","date":"2026-08-03","format":false,"excerpt":"Zell am See \u00b7 \u00d8strig Overnatning i Zell am See \u2013 udforsk fire hoteller ved bjerge og s\u00f8 Find v\u00e6relser, suiter og lejligheder hos The House Zell am See, The Gast House Zell am See, Nikolaus by AvenidA og Elements Resort Zell am See. Sammenlign v\u00e6relsestyperne og find overnatningen der\u2026","rel":"","context":"Podobny wpis","block_context":{"text":"Podobny wpis","link":""},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/bno-travel.com\/pl\/wp-json\/wp\/v2\/pages\/95458","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bno-travel.com\/pl\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/bno-travel.com\/pl\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/bno-travel.com\/pl\/wp-json\/wp\/v2\/users\/260013438"}],"replies":[{"embeddable":true,"href":"https:\/\/bno-travel.com\/pl\/wp-json\/wp\/v2\/comments?post=95458"}],"version-history":[{"count":1,"href":"https:\/\/bno-travel.com\/pl\/wp-json\/wp\/v2\/pages\/95458\/revisions"}],"predecessor-version":[{"id":95459,"href":"https:\/\/bno-travel.com\/pl\/wp-json\/wp\/v2\/pages\/95458\/revisions\/95459"}],"wp:attachment":[{"href":"https:\/\/bno-travel.com\/pl\/wp-json\/wp\/v2\/media?parent=95458"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}