{"id":114,"date":"2026-03-04T14:06:52","date_gmt":"2026-03-04T13:06:52","guid":{"rendered":"https:\/\/kacper.previo.info.pl\/apartamenty\/"},"modified":"2026-03-12T10:18:49","modified_gmt":"2026-03-12T09:18:49","slug":"apartamenty","status":"publish","type":"page","link":"https:\/\/dev.apartamentymariza.pl\/en\/apartamenty\/","title":{"rendered":"Apartments"},"content":{"rendered":"\n    \n    <section class=\"u-clearfix u-image u-shading u-section-2\" id=\"sec-08d2\" data-image-width=\"1920\" data-image-height=\"1280\" style=\"background-image: linear-gradient(0deg, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)), url(&quot;https:\/\/dev.apartamentymariza.pl\/wp-content\/uploads\/2026\/03\/Ap.Delux_1-4.jpg&quot;);\">\n      <div class=\"u-clearfix u-sheet u-sheet-1\">\n        <span class=\"u-align-center u-file-icon u-icon u-icon-circle u-palette-1-base u-text-white u-icon-1\"><img decoding=\"async\" src=\"https:\/\/dev.apartamentymariza.pl\/wp-content\/uploads\/2026\/03\/212e668a-2.png\" alt=\"\"><\/span>\n        <h1 class=\"animacjaboulevard-text u-align-center u-custom-font u-heading-font u-text u-text-1\" data-animation-out=\"0\">APARTAMENTY<\/h1>\n        <a href=\"\/rezerwacja\/\" class=\"u-align-center u-btn u-button-style u-hover-feature u-hover-grey-90 u-text-white u-border-none u-palette-1-base u-btn-1\" target=\"_blank\">Zarezerwuj sw\u00f3j pobyt <\/a>\n      <\/div>\n      \n    <\/section>\n    <section class=\"u-clearfix u-section-3\" id=\"sec-a22a\">\n      <div class=\"u-clearfix u-sheet u-valign-middle u-sheet-1\">\n        <div class=\"u-expanded-width u-shortcode u-shortcode-1\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Libre+Caslon+Display&family=Manrope:wght@200..800&display=swap\" rel=\"stylesheet\">\n\n<style>\n:root{\n    --black: #171717;\n    --primary: #bca37e;\n    --text: #bca37e;\n    --primary-dark: #bca37e;\n    --gray: #333333;\n}\n.pase-grid-wrapper {\n    margin: 20px 0;\n}\n.pase-apartments-grid {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n}\n.pase-apartment-item {\n    font-family: 'Plus Jakarta Sans';\n    flex: 1;\n    padding: 10px;\n    display: flex;\n    flex-direction: column;\n    justify-content: flex-start;\n    gap: 12px;\n    opacity: 0;\n    transform: translateY(20px);\n    animation: fade-in-up 0.5s ease forwards;\n}\n.pase-apartment-item img {\n    width: 100%;\n    height: 500px;\n    object-fit: cover;\n}\n.pase-apartment-header{\n    font-size: 28px;\n    color: var(--text);\n    font-family: 'Libre Caslon Display', serif !important;\n}\n\n.apt-meta-item{ display: flex; gap: 12px; }\n.pase-apartment-item .apt-description { font-size: 14px; color: var(--gray); height: 160px; overflow: hidden; text-overflow: ellipsis; font-family: \"Manrope\", sans-serif; line-height: 1.9}\n.pase-apartment-item a.btn-details {\nfont-size: 16px;\n     font-family: \"Manrope\", sans-serif !important;\n     margin-top: auto;\n     display: inline-block;\n     padding-block: 14px;\n     border-radius: 0;\n     background-color: #1a1a1a;\n     color: #fff;\n     text-decoration: none;\n     text-align: center;\n     border: 1px solid #1a1a1a;\n     transition: 0.12s ease-in-out;\n     box-shadow: none;\n }\n .pase-apartment-item a.btn-reservation {\n font-size: 16px;\n      font-family: \"Manrope\", sans-serif !important;\n      margin-top: auto;\n      display: inline-block;\n      padding-block: 14px;\n      border-radius: 0;\n      background-color: #bda47e;\n      color: #fff;\n      text-decoration: none;\n      text-align: center;\n     border: 1px solid #bda47e;\n     transition: 0.12s ease-in-out;\n     box-shadow: none;\n  }\n  .pase-filters{ display: flex; justify-content: center; gap: 10px; }\n  .pase-filters button { background: transparent; border: none; outline: none; font-size: 16px; color: var(--primary-dark); }\n  .pase-filters button:hover { text-decoration: underline; cursor: pointer; }\n  .pase-filters button.active { color: var(--primary); }\n.pase-apartment-item a.btn-details:hover { background-color: #000; border-color: #000; transition: 0.12s ease-in-out;}\n.pase-apartment-item a.btn-reservation:hover { background-color: #a8926a; border-color: #a8926a; transition: 0.12s ease-in-out;}\n@keyframes fade-in-up { 0% { opacity: 0; transform: translateY(20px);} 100% { opacity: 1; transform: translateY(0);} }\n.pase-pagination { display: flex; justify-content: center; align-items: center; gap: 8px; margin-top: 20px; }\n.pase-pagination button { padding: 6px 10px; border: 1px solid #ccc; cursor: pointer; transition: 0.12s ease-in-out; border-radius: 0;}\n.pase-pagination button.active { background-color: var(--primary); color: #fff; }\n.pase-pagination button:hover { background-color: var(--primary-dark); transition: 0.12s ease-in-out; color: #fff; }\n@media (max-width: 768px) { .pase-apartments-grid { display: flex; flex-direction: column; }\n\n  .pase-filters{ flex-direction: column; gap: 10px; }\n\n.pase-apartment-item img { height: auto; max-height: 350px; } .pase-apartment-item { padding: 8px; } }\n<\/style>\n\n\n<!-- <div class=\"pase-filters\" id=\"paseFilters\">\n  <button data-cat=\"Wszystkie\" class=\"active\">Wszystkie<\/button>\n  <button data-cat=\"Rodzinne\">Rodzinne<\/button>\n  <button data-cat=\"Dla dwojga\">Dla dwojga<\/button>\n  <button data-cat=\"Z jacuzzi\">Z jacuzzi<\/button>\n  <button data-cat=\"Premium\">Premium<\/button>\n  <button data-cat=\"Widok na Odr\u0119\">Widok na Odr\u0119<\/button>\n<\/div> -->\n\n<div class=\"pase-grid-wrapper\">\n    <div class=\"pase-apartments-grid\" id=\"paseApartmentsGrid\"><\/div>\n    <div class=\"pase-pagination\" id=\"pasePagination\"><\/div>\n<\/div>\n\n<script>\nconst paseApartmentsData = [{\"obkId\":\"991985\",\"name\":\"Studio Standrad\",\"description\":\"<b>Studio Standard <\\\/b>Stylowy i komfortowy apartament typu studio o powierzchni 25m\u00b2 to idealna propozycja dla pary szukaj\u0105cej wypoczynku w przytulnym i nowoczesnym wn\u0119trzu. Przestrze\u0144 zosta\u0142a zaprojektowana z my\u015bl\u0105 o wygodzie i funkcjonalno\u015bci, \u0142\u0105cz\u0105c salon z w pe\u0142ni wyposa\u017conym aneksem kuchennym oraz komfortowym, podw\u00f3jnym \u0142\u00f3\u017ckiem. Do dyspozycji Go\u015bci jest r\u00f3wnie\u017c prywatna \u0142azienka oraz balkon ze stolikiem i krzes\u0142ami, z kt\u00f3rego rozci\u0105ga si\u0119 widok na pi\u0119kny ogr\u00f3d. Ca\u0142o\u015b\u0107 wyko\u0144czona zosta\u0142a w wysokim standardzie, z dba\u0142o\u015bci\u0105 o detale, aby zapewni\u0107 maksymalny komfort pobytu.<br \\\/><br \\\/><b>Udogodnienia w apartamencie:<\\\/b><ul> <li>telewizor z p\u0142askim ekranem<\\\/li> <li>wygodne podw\u00f3jne \u0142\u00f3\u017cko<\\\/li> <li>bezp\u0142atne Wi-Fi<\\\/li> <li>elektroniczna karta dost\u0119pu<\\\/li> <li>prywatna \u0142azienka z r\u0119cznikami<\\\/li> <li>aneks kuchenny<\\\/li> <li>czajnik elektryczny<\\\/li> <li>zmywarka do naczy\u0144<\\\/li> <li>kawiarka<\\\/li> <li>balkon ze stolikiem i krzes\u0142ami<\\\/li><\\\/ul>\",\"thumbnail\":\"https:\\\/\\\/files.previo.cz\\\/789907\\\/www\\\/img\\\/photos\\\/20260128151950_eoWMlT.jpg\",\"area\":25,\"num_bedrooms\":1,\"max_persons\":\"2\",\"facilities\":[{\"okpId\":6,\"value\":\"\",\"attributes\":[{\"praId\":31,\"value\":\"1\"}]},{\"okpId\":10,\"value\":\"\"},{\"okpId\":12,\"value\":\"\"},{\"okpId\":13,\"value\":\"\"},{\"okpId\":16,\"value\":\"\"},{\"okpId\":17,\"value\":\"\"},{\"okpId\":19,\"value\":\"\",\"attributes\":[{\"praId\":26,\"value\":\"1\"}]},{\"okpId\":20,\"value\":\"\"},{\"okpId\":21,\"value\":\"\"},{\"okpId\":22,\"value\":\"\"},{\"okpId\":26,\"value\":\"\"},{\"okpId\":59,\"value\":\"\"},{\"okpId\":60,\"value\":\"\"},{\"okpId\":72,\"value\":\"\"},{\"okpId\":75,\"value\":\"\"},{\"okpId\":94,\"value\":\"25\"},{\"okpId\":95,\"value\":\"[{\\\"key\\\":0,\\\"value\\\":1}]\"},{\"okpId\":97,\"value\":\"1\"},{\"okpId\":98,\"value\":\"1\"},{\"okpId\":100,\"value\":\"\"},{\"okpId\":102,\"value\":\"\"}],\"category\":\"\"},{\"obkId\":\"991989\",\"name\":\"Apartament Deluxe\",\"description\":\"<b>Apartament Deluxe <\\\/b>Przestronny i komfortowy Apartament Deluxe o powierzchni 42 m\u00b2 to idealna propozycja dla rodzin z dzie\u0107mi lub dw\u00f3ch par. Funkcjonalny uk\u0142ad z osobn\u0105 sypialni\u0105 zapewnia wygod\u0119, prywatno\u015b\u0107 oraz swobod\u0119 wypoczynku. Apartament Deluxe sk\u0142ada si\u0119 z jasnego salonu z aneksem kuchennym, rozk\u0142adanej kanapy, oddzielnej sypialni, wygodnego podw\u00f3jnego \u0142\u00f3\u017cka, prywatnej \u0142azienki, du\u017cego balkonu ze stolikiem i krzes\u0142ami. Z Apartamentu roztacza si\u0119 widok na ca\u0142y ogr\u00f3d. Wn\u0119trza zosta\u0142y wyko\u0144czone w wysokim standardzie, z dba\u0142o\u015bci\u0105 o detale i komfort Go\u015bci.<b> <\\\/b><br \\\/><b>Udogodnienia w apartamencie:<\\\/b><ul> <li>telewizor z p\u0142askim ekranem<\\\/li> <li>podw\u00f3jne \u0142\u00f3\u017cko w osobnej sypialni<\\\/li> <li>rozk\u0142adana kanapa<\\\/li> <li>mo\u017cliwo\u015b\u0107 dostawienia \u0142\u00f3\u017ceczka dla dziecka<\\\/li> <li>bezp\u0142atne Wi-Fi<\\\/li> <li>elektroniczna karta dost\u0119pu<\\\/li> <li>prywatna \u0142azienka z r\u0119cznikami<\\\/li> <li>aneks kuchenny z pe\u0142nym wyposa\u017ceniem<\\\/li> <li>czajnik elektryczny<\\\/li> <li>zmywarka do naczy\u0144<\\\/li> <li>kawiarka<\\\/li> <li>du\u017cy balkon ze stolikiem i krzes\u0142ami<\\\/li><\\\/ul>\",\"thumbnail\":\"https:\\\/\\\/files.previo.cz\\\/789907\\\/www\\\/img\\\/photos\\\/20260128151508_QTAXiT.jpg\",\"area\":42,\"num_bedrooms\":1,\"max_persons\":\"2\",\"facilities\":[{\"okpId\":3,\"value\":\"\"},{\"okpId\":6,\"value\":\"\",\"attributes\":[{\"praId\":31,\"value\":\"1\"}]},{\"okpId\":10,\"value\":\"\"},{\"okpId\":12,\"value\":\"\"},{\"okpId\":13,\"value\":\"\"},{\"okpId\":16,\"value\":\"\"},{\"okpId\":17,\"value\":\"\"},{\"okpId\":19,\"value\":\"\",\"attributes\":[{\"praId\":26,\"value\":\"1\"}]},{\"okpId\":20,\"value\":\"\"},{\"okpId\":21,\"value\":\"\"},{\"okpId\":22,\"value\":\"\"},{\"okpId\":26,\"value\":\"\"},{\"okpId\":55,\"value\":\"[0,2,3,5]\"},{\"okpId\":56,\"value\":\"1\"},{\"okpId\":59,\"value\":\"\"},{\"okpId\":60,\"value\":\"\"},{\"okpId\":72,\"value\":\"\"},{\"okpId\":75,\"value\":\"\"},{\"okpId\":94,\"value\":\"42\"},{\"okpId\":95,\"value\":\"[{\\\"key\\\":0,\\\"value\\\":1},{\\\"key\\\":5,\\\"value\\\":1}]\"},{\"okpId\":97,\"value\":\"1\"},{\"okpId\":98,\"value\":\"2\"},{\"okpId\":100,\"value\":\"\"},{\"okpId\":102,\"value\":\"\"}],\"category\":\"\"},{\"obkId\":\"991987\",\"name\":\"Studio Deluxe\",\"description\":\"<b> Studio Deluxe to <\\\/b> przestronny i komfortowy apartament  o powierzchni 38 m\u00b2. To doskona\u0142y wyb\u00f3r dla pary z dzie\u0107mi. Wn\u0119trze zosta\u0142o zaprojektowane z my\u015bl\u0105 o wygodzie ca\u0142ej rodziny, oferuj\u0105c funkcjonaln\u0105 i jasn\u0105 przestrze\u0144 do wypoczynku. Apartament obejmuje salon z aneksem kuchennym, w kt\u00f3rym znajduje si\u0119 wygodne podw\u00f3jne \u0142\u00f3\u017cko oraz rozk\u0142adana kanapa, prywatn\u0105 \u0142azienk\u0119, a tak\u017ce balkonem ze stolikiem i krzes\u0142ami, z kt\u00f3rego rozpo\u015bciera si\u0119 widok na ca\u0142y ogr\u00f3d. Ca\u0142o\u015b\u0107 wyko\u0144czona jest w wysokim standardzie, z dba\u0142o\u015bci\u0105 o detale i komfort Go\u015bci.<br \\\/><br \\\/><b>Udogodnienia w apartamencie:<\\\/b><ul> <li>telewizor z p\u0142askim ekranem<\\\/li> <li>komfortowe podw\u00f3jne \u0142\u00f3\u017cko<\\\/li> <li>rozk\u0142adana sofa<\\\/li> <li>mo\u017cliwo\u015b\u0107 dostawienia \u0142\u00f3\u017ceczka dla dziecka<\\\/li> <li>bezp\u0142atne Wi-Fi<\\\/li> <li>elektroniczna karta dost\u0119pu<\\\/li> <li>prywatna \u0142azienka z r\u0119cznikami<\\\/li> <li>w pe\u0142ni wyposa\u017cony aneks kuchenny<\\\/li> <li>czajnik elektryczny<\\\/li> <li>zmywarka do naczy\u0144<\\\/li> <li>kawiarka<\\\/li><\\\/ul>balkon ze stolikiem i krzes\u0142ami\",\"thumbnail\":\"https:\\\/\\\/files.previo.cz\\\/789907\\\/www\\\/img\\\/photos\\\/20260128152048_869UIG.jpg\",\"area\":38,\"num_bedrooms\":1,\"max_persons\":\"2\",\"facilities\":[{\"okpId\":6,\"value\":\"\",\"attributes\":[{\"praId\":31,\"value\":\"1\"}]},{\"okpId\":10,\"value\":\"\"},{\"okpId\":12,\"value\":\"\"},{\"okpId\":13,\"value\":\"\"},{\"okpId\":16,\"value\":\"\"},{\"okpId\":17,\"value\":\"\"},{\"okpId\":19,\"value\":\"\",\"attributes\":[{\"praId\":26,\"value\":\"1\"}]},{\"okpId\":20,\"value\":\"\"},{\"okpId\":21,\"value\":\"\"},{\"okpId\":22,\"value\":\"\"},{\"okpId\":26,\"value\":\"\"},{\"okpId\":59,\"value\":\"\"},{\"okpId\":60,\"value\":\"\"},{\"okpId\":72,\"value\":\"\"},{\"okpId\":75,\"value\":\"\"},{\"okpId\":94,\"value\":\"38\"},{\"okpId\":95,\"value\":\"[{\\\"key\\\":0,\\\"value\\\":1},{\\\"key\\\":5,\\\"value\\\":1}]\"},{\"okpId\":97,\"value\":\"1\"},{\"okpId\":98,\"value\":\"1\"},{\"okpId\":100,\"value\":\"\"},{\"okpId\":102,\"value\":\"\"}],\"category\":\"\"}];\nconst facilityIcons      = {\"94\":{\"name\":null,\"icon\":\"fa-expand\"},\"97\":{\"name\":\"Liczba sypialni\",\"icon\":\"fa-door-open\"},\"104\":{\"name\":null,\"icon\":\"fa-info\"},\"98\":{\"name\":\"Liczba pokoi\",\"icon\":\"fa-info\"},\"10\":{\"name\":\"WiFi\",\"icon\":\"fa-wifi\"},\"102\":{\"name\":\"Parking\",\"icon\":\"fa-parking\"},\"6\":{\"name\":\"Telewizor\",\"icon\":\"fa-circle-check\"},\"25\":{\"name\":\"Zwierz\u0119ta\",\"icon\":\"fa-circle-check\"},\"19\":{\"name\":\"Suszarka\",\"icon\":\"fa-circle-check\"},\"24\":{\"name\":\"Dost\u0119p dla w\u00f3zk\u00f3w\",\"icon\":\"fa-circle-check\"},\"3\":{\"name\":\"\u0141\u00f3\u017cko dla dziecka\",\"icon\":\"fa-circle-check\"},\"4\":{\"name\":\"Telefon\",\"icon\":\"fa-circle-check\"},\"5\":{\"name\":\"Odtwarzacz DVD\",\"icon\":\"fa-circle-check\"},\"8\":{\"name\":\"Sejf\",\"icon\":\"fa-circle-check\"},\"9\":{\"name\":\"Klimatyzacja\",\"icon\":\"fa-circle-check\"},\"12\":{\"name\":\"Po\u015bciel\",\"icon\":\"fa-circle-check\"},\"13\":{\"name\":\"Prysznic\",\"icon\":\"fa-circle-check\"},\"14\":{\"name\":\"Wanna\",\"icon\":\"fa-circle-check\"},\"15\":{\"name\":\"Jacuzzi\",\"icon\":\"fa-circle-check\"},\"16\":{\"name\":\"WC\",\"icon\":\"fa-circle-check\"},\"17\":{\"name\":\"Lod\u00f3wka\",\"icon\":\"fa-circle-check\"},\"18\":{\"name\":\"Mini Bar\",\"icon\":\"fa-circle-check\"},\"20\":{\"name\":\"Ekspres do kawy\",\"icon\":\"fa-circle-check\"},\"21\":{\"name\":\"Centralne ogrzewanie\",\"icon\":\"fa-circle-check\"},\"22\":{\"name\":\"Aneks kuchenny\",\"icon\":\"fa-circle-check\"},\"23\":{\"name\":\"Pralka\",\"icon\":\"fa-circle-check\"},\"26\":{\"name\":\"Balkon\",\"icon\":\"fa-circle-check\"},\"27\":{\"name\":\"Taras\",\"icon\":\"fa-circle-check\"},\"28\":{\"name\":\"Kuchenka mikrofalowa\",\"icon\":\"fa-circle-check\"},\"54\":{\"name\":\"Niepal\u0105ce\",\"icon\":\"fa-circle-check\"},\"57\":{\"name\":\"Wentylator\",\"icon\":\"fa-circle-check\"},\"58\":{\"name\":\"Wentylator przeno\u015bny\",\"icon\":\"fa-circle-check\"},\"59\":{\"name\":\"Wieszaki\",\"icon\":\"fa-circle-check\"},\"60\":{\"name\":\"R\u0119czniki\",\"icon\":\"fa-circle-check\"},\"61\":{\"name\":\"Dodatkowe \u0142\u00f3\u017cko\",\"icon\":\"fa-circle-check\"},\"62\":{\"name\":\"Gry video\",\"icon\":\"fa-circle-check\"},\"63\":{\"name\":\"Codzienne sprz\u0105tanie\",\"icon\":\"fa-circle-check\"},\"64\":{\"name\":\"Darmowe rozmowy lokalne\",\"icon\":\"fa-circle-check\"},\"65\":{\"name\":\"Zestaw kosmetyk\u00f3w\",\"icon\":\"fa-circle-check\"},\"66\":{\"name\":\"Suszarka wolnostoj\u0105ca\",\"icon\":\"fa-circle-check\"},\"67\":{\"name\":\"Komputer\",\"icon\":\"fa-circle-check\"},\"68\":{\"name\":\"Tablet\",\"icon\":\"fa-circle-check\"},\"69\":{\"name\":\"Jadalnia\",\"icon\":\"fa-circle-check\"},\"70\":{\"name\":\"Kuchnia\",\"icon\":\"fa-circle-check\"},\"71\":{\"name\":\"Kuchnia wsp\u00f3lna\",\"icon\":\"fa-circle-check\"},\"72\":{\"name\":\"Zamra\u017calnik\",\"icon\":\"fa-circle-check\"},\"73\":{\"name\":\"Mini lod\u00f3wka\",\"icon\":\"fa-circle-check\"},\"75\":{\"name\":\"Zmywarka\",\"icon\":\"fa-circle-check\"},\"77\":{\"name\":\"Kominek\",\"icon\":\"fa-circle-check\"},\"100\":{\"name\":\"Czajnik elektryczny\",\"icon\":\"fa-circle-check\"},\"101\":{\"name\":\"Zestaw do parzenia\",\"icon\":\"fa-circle-check\"},\"103\":{\"name\":\"Rekuperator\",\"icon\":\"fa-circle-check\"}};\nconst defaultImage       = \"\";\n\nlet currentPage        = 1;\nconst pageSize         = 18;\nlet filteredApartments;\nconst activeFilterBtn  = document.querySelector('#paseFilters button.active');\nlet selectedCategory  = (activeFilterBtn && activeFilterBtn.getAttribute('data-cat'))\n  ? activeFilterBtn.getAttribute('data-cat').toLowerCase().normalize('NFD').replace(\/[\\u0300-\\u036f]\/g, '')\n  : 'wszystkie';\n\nconst paseGridContainer = document.getElementById('paseApartmentsGrid');\nconst pasePagination    = document.getElementById('pasePagination');\nconst filterButtons     = document.querySelectorAll('#paseFilters button[data-cat]');\n\n\nfunction getCategories(ap) {\n  if (!ap.category || typeof ap.category !== 'string') return [];\n  return ap.category\n    .split(',')\n    .map(s =>\n      s\n        .trim()\n        .toLowerCase()\n        .normalize('NFD')\n        .replace(\/[\\u0300-\\u036f]\/g, '')\n    )\n    .filter(Boolean);\n}\n\n\n\/\/ Obs\u0142uga przycisk\u00f3w kategorii\nfilterButtons.forEach(btn => {\n    btn.addEventListener('click', () => {\n      filterButtons.forEach(b => b.classList.remove('active'));\n      btn.classList.add('active');\n      \/\/ normalize wybranej kategorii\n      selectedCategory = btn\n        .getAttribute('data-cat')\n        .toLowerCase()\n        .normalize('NFD')\n        .replace(\/[\\u0300-\\u036f]\/g, '');\n      filterApartments(1);\n    });\n  });\n\n\n\nfunction generateSlugFromName(name) {\n  return name\n    .normalize(\"NFD\")\n    .replace(\/[\\u0300-\\u036f]\/g, '')\n    .toLowerCase()\n    .replace(\/ \/g, '-')\n    .replace(\/[^a-z0-9-]\/g, '');\n}\n\nfunction getCurrentLang() {\n  const [, lang] = window.location.pathname.split('\/');\n  const available = ['pl', 'en', 'de', 'cz'];\n  return available.includes(lang) ? lang : 'pl';\n}\n\n\nfunction renderApartmentCard(apartment) {\n  const lang = getCurrentLang();\n  const prefix = `\/${lang}`;\n\n  \/\/ link do detali apartamentu\n  const detailsUrl = `${prefix}\/apart-${generateSlugFromName(apartment.name)}\/`;\n\n  \/\/ miniaturka\n  const thumb = apartment.thumbnail\n    ? `<a href=\"${detailsUrl}\"><img decoding=\"async\" src=\"${apartment.thumbnail}\" alt=\"${apartment.name}\" \/><\/a>`\n    : `<a href=\"${detailsUrl}\"><img decoding=\"async\" src=\"${defaultImage}\" alt=\"${apartment.name}\" \/><\/a>`;\n\n  \/\/ link do rezerwacji\n  const reservationUrl = `${prefix}\/rezerwacja\/?highlightRoomType=${apartment.obkId}\/`;\n\n  \/\/ skr\u00f3cony opis\n  const shortDesc = apartment.description.length > 250\n    ? apartment.description.substring(0, 250) + '\u2026'\n    : apartment.description;\n\n  \/\/ ikony udogodnie\u0144\n  let amenitiesHTML = '';\n  if (Array.isArray(apartment.facilities)) {\n    apartment.facilities.forEach(fac => {\n      if (facilityIcons[fac.okpId]) {\n        const { icon, name } = facilityIcons[fac.okpId];\n        const val  = fac.value || '';\n        const text = name ? `${name}: ${val}` : val;\n        amenitiesHTML += `<span class=\"amenity\"><i class=\"fas ${icon}\"><\/i>${text}<\/span>`;\n      }\n    });\n  }\n\n  return `\n    <div class=\"pase-apartment-item\">\n      ${thumb}\n      <div class=\"pase-apartment-header\">${apartment.name}<\/div>\n      <div class=\"apt-description\">${shortDesc}<\/div>\n      <a class=\"btn-details\" href=\"${detailsUrl}\">Zobacz apartament<\/a>\n      <a class=\"btn-reservation\" href=\"${reservationUrl}\">Zarezerwuj sw\u00f3j pobyt<\/a>\n    <\/div>\n  `;\n}\n\nfunction renderGrid(apartments, page = 1) {\n  if (!apartments.length) {\n    paseGridContainer.innerHTML = '<p>Brak wynik\u00f3w dla wybranych filtr\u00f3w.<\/p>';\n    pasePagination.innerHTML    = '';\n    return;\n  }\n  const totalPages = Math.ceil(apartments.length \/ pageSize);\n  currentPage = Math.min(Math.max(page, 1), totalPages);\n  const start = (currentPage - 1) * pageSize;\n  const slice = apartments.slice(start, start + pageSize);\n  paseGridContainer.innerHTML = slice.map(renderApartmentCard).join('');\n  renderPagination(apartments);\n}\n\nfunction renderPagination(apartments) {\n  const totalPages = Math.ceil(apartments.length \/ pageSize);\n  if (totalPages <= 1) {\n    pasePagination.innerHTML = '';\n    return;\n  }\n  let html = `<button onclick=\"goToPage(${currentPage - 1})\" ${currentPage === 1 ? 'disabled' : ''}>Poprzednia<\/button>`;\n  for (let i = 1; i <= totalPages; i++) {\n    html += `<button onclick=\"goToPage(${i})\" class=\"${i === currentPage ? 'active' : ''}\">${i}<\/button>`;\n  }\n  html += `<button onclick=\"goToPage(${currentPage + 1})\" ${currentPage === totalPages ? 'disabled' : ''}>Nast\u0119pna<\/button>`;\n  pasePagination.innerHTML = html;\n}\n\nwindow.goToPage = function(page) {\n  renderGrid(filteredApartments, page);\n};\n\n\nfunction filterApartments(page = 1) {\n  filteredApartments = paseApartmentsData.filter(ap => {\n    \/\/ dowolna posta\u0107 \u201ewszystkie\u201d od razu odpuszcza filtr\n    if (selectedCategory === 'wszystkie'\n     || selectedCategory === 'wszystkie'.toUpperCase()\n     || selectedCategory === '') {\n      return true;\n    }\n    const cats = getCategories(ap);\n    return cats.includes(selectedCategory);\n  });\n  renderGrid(filteredApartments, page);\n}\n\n\/\/ Wywo\u0142anie pocz\u0105tkowe\nfilterApartments(1);\n<\/script>\n<\/div>\n      <\/div>\n    <\/section>\n    \n    \n    \n  \n","protected":false},"excerpt":{"rendered":"<p>APARTAMENTY Zarezerwuj sw\u00f3j pobyt<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":10,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-114","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/dev.apartamentymariza.pl\/en\/wp-json\/wp\/v2\/pages\/114","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dev.apartamentymariza.pl\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/dev.apartamentymariza.pl\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/dev.apartamentymariza.pl\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dev.apartamentymariza.pl\/en\/wp-json\/wp\/v2\/comments?post=114"}],"version-history":[{"count":1,"href":"https:\/\/dev.apartamentymariza.pl\/en\/wp-json\/wp\/v2\/pages\/114\/revisions"}],"predecessor-version":[{"id":124,"href":"https:\/\/dev.apartamentymariza.pl\/en\/wp-json\/wp\/v2\/pages\/114\/revisions\/124"}],"wp:attachment":[{"href":"https:\/\/dev.apartamentymariza.pl\/en\/wp-json\/wp\/v2\/media?parent=114"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}