{"id":52037,"date":"2026-04-09T15:02:40","date_gmt":"2026-04-09T13:02:40","guid":{"rendered":"https:\/\/nilen.pl\/visualizations\/"},"modified":"2026-05-25T10:02:44","modified_gmt":"2026-05-25T08:02:44","slug":"visualizations","status":"publish","type":"page","link":"https:\/\/nilen.pl\/en\/visualizations\/","title":{"rendered":"visualizations"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"52037\" class=\"elementor elementor-52037 elementor-48531\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-422933f e-flex e-con-boxed e-con e-parent\" data-id=\"422933f\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-8d1ed0f e-con-full e-flex e-con e-child\" data-id=\"8d1ed0f\" data-element_type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-d5fab03 e-con-full move-for-mobile e-flex e-con e-child\" data-id=\"d5fab03\" data-element_type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-08b3aea e-con-full e-flex e-con e-child\" data-id=\"08b3aea\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0c389fa elementor-widget elementor-widget-heading\" data-id=\"0c389fa\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">3D interior visualizations in Krakow<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1e08fc3 elementor-widget elementor-widget-heading\" data-id=\"1e08fc3\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">\nSee photorealistic<br \/>visualizations of apartment interiors<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-339a878 elementor-hidden-mobile elementor-hidden-tablet elementor-widget elementor-widget-html\" data-id=\"339a878\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"circle\">\n    <a href=\"https:\/\/nilen.pl\/en\/inspirations\/#wizualizacje\">See the visualizations<\/a>\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-e42baf2 e-con-full empty-for-mobile e-flex e-con e-parent\" data-id=\"e42baf2\" data-element_type=\"container\">\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-9d9eb43 e-flex e-con-boxed e-con e-parent\" data-id=\"9d9eb43\" data-element_type=\"container\" id=\"wizualizacje\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-65db36f e-con-full e-flex e-con e-child\" data-id=\"65db36f\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3c42953 elementor-widget elementor-widget-html\" data-id=\"3c42953\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- GALERIA WIZUALIZACJI - Wersja 2.1 (Vanilla JS + SEO) -->\n<!-- Wklej ten kod do widgetu HTML w Elementorze -->\n<div id=\"apartments-gallery-vanilla\"><\/div>\n<style>\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@300;400;500;600;700&display=swap');\n.apartments-gallery-wrapper {\n  font-family: var(--e-global-typography-2dbc8fa-font-family), Sans-serif !important;\n  max-width: 100% !important;\n  margin: 0 !important;\n  margin-bottom: 40px !important;\n  padding: 0 !important;\n  background: transparent !important;\n}\n.apartment-badge {\n  max-width: calc(100% - 32px);\n  box-sizing: border-box;\n}\n.apartments-gallery-wrapper,\n.apartments-grid,\n.apartment-card {\n  box-sizing: border-box;\n  min-width: 0;\n}\n.apartments-grid {\n  display: grid;\n  grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));\n  gap: 20px;\n  margin: 0;\n  background: transparent;\n}\n@media (max-width: 768px) {\n  .apartments-grid {\n    grid-template-columns: 1fr !important;\n    gap: 15px !important;\n  }\n}\n.apartment-card {\n  position: relative;\n  aspect-ratio: 1;\n  background: #f5f5f5;\n  border-radius: 2px;\n  overflow: hidden;\n  cursor: pointer;\n  transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n}\n.apartment-card:hover {\n  transform: translateY(-4px) scale(1.02);\n  box-shadow: 0 12px 32px rgba(0, 0, 0, 0.15);\n}\n\/*\n * SEO: Zamiast background-image u\u017cywamy <img> z position:absolute.\n * Google indeksuje <img> + alt text, a background-image ignoruje.\n *\n * WA\u017bNE: !important wymagane \u2013 Elementor\/WP dodaje globalnie\n * \"img { max-width: 100%; height: auto; }\" co nadpisuje height: 100%.\n *\/\n.apartment-bg-img {\n  position: absolute !important;\n  top: 0 !important;\n  left: 0 !important;\n  width: 100% !important;\n  height: 100% !important;\n  object-fit: cover !important;\n  object-position: center !important;\n  z-index: 0;\n  transition: transform 0.6s cubic-bezier(0.4, 0, 0.2, 1);\n  display: block !important;\n  max-width: none !important;\n}\n.apartment-card:hover .apartment-bg-img {\n  transform: scale(1.05);\n}\n.apartment-card::before {\n  content: '';\n  position: absolute;\n  inset: 0;\n  background: linear-gradient(180deg, transparent 0%, transparent 50%, rgba(0, 0, 0, 0.8) 100%);\n  opacity: 0;\n  transition: opacity 0.4s ease;\n  z-index: 1;\n  pointer-events: none;\n}\n.apartment-card:hover::before {\n  opacity: 1;\n}\n.apartment-info {\n  position: absolute;\n  bottom: 0;\n  left: 0;\n  right: 0;\n  padding: 24px;\n  z-index: 2;\n  transform: translateY(20px);\n  opacity: 0;\n  transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);\n  pointer-events: none;\n}\n.apartment-card:hover .apartment-info {\n  transform: translateY(0);\n  opacity: 1;\n}\n.apartment-name {\n  font-family: var(--e-global-typography-2dbc8fa-font-family), Sans-serif;\n  font-size: 20px;\n  font-weight: 600;\n  color: #E8D5C4 !important;\n  margin: 0 0 8px 0;\n  letter-spacing: -0.02em;\n}\n.apartment-count {\n  font-size: 13px;\n  color: rgba(255, 255, 255, 0.8);\n  font-weight: 300;\n  letter-spacing: 0.05em;\n  text-transform: uppercase;\n  margin: 0;\n}\n.apartment-badge {\n  position: absolute;\n  top: 16px;\n  right: 16px;\n  background: #B56B29;\n  color: white;\n  padding: 6px 14px;\n  border-radius: 20px;\n  font-size: 11px;\n  font-weight: 600;\n  letter-spacing: 0.08em;\n  text-transform: uppercase;\n  z-index: 2;\n  box-shadow: 0 4px 12px rgba(212, 175, 55, 0.3);\n}\n.apartments-modal-overlay {\n  position: fixed;\n  inset: 0;\n  background: rgba(0, 0, 0, 0.92);\n  backdrop-filter: blur(10px);\n  z-index: 9999;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  padding: 20px;\n  opacity: 0;\n  animation: fadeIn 0.3s ease forwards;\n}\n@keyframes fadeIn {\n  to { opacity: 1; }\n}\n.apartments-modal-overlay.closing {\n  animation: fadeOut 0.3s ease forwards;\n}\n@keyframes fadeOut {\n  to { opacity: 0; }\n}\n.apartments-modal-content {\n  position: relative;\n  max-width: 1200px;\n  width: 100%;\n  max-height: 90vh;\n  display: flex;\n  flex-direction: column;\n  animation: slideUp 0.4s cubic-bezier(0.4, 0, 0.2, 1);\n}\n@keyframes slideUp {\n  from { opacity: 0; transform: translateY(30px); }\n  to   { opacity: 1; transform: translateY(0); }\n}\n.modal-header {\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  margin-bottom: 24px;\n  padding: 0 8px;\n}\n.modal-title {\n  font-family: var(--e-global-typography-2dbc8fa-font-family), Sans-serif;\n  font-size: 32px;\n  font-weight: 300;\n  color: #E8D5C4 !important;\n  margin: 0;\n  letter-spacing: 0.02em;\n}\n.modal-close {\n  background: rgba(255, 255, 255, 0.1);\n  border: none;\n  color: white;\n  width: 48px;\n  height: 48px;\n  border-radius: 50%;\n  cursor: pointer;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  transition: all 0.3s ease;\n  backdrop-filter: blur(10px);\n  font-size: 32px;\n  line-height: 1;\n}\n.modal-close:hover {\n  background: rgba(255, 255, 255, 0.2);\n  transform: rotate(90deg);\n}\n.modal-image-container {\n  position: relative;\n  flex: 1;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  min-height: 400px;\n  background: rgba(0, 0, 0, 0.3);\n  border-radius: 4px;\n  overflow: hidden;\n}\n.modal-image {\n  max-width: 100%;\n  max-height: calc(90vh - 200px);\n  width: auto;\n  height: auto;\n  object-fit: contain;\n  opacity: 0;\n  transition: opacity 0.4s ease;\n}\n.modal-image.loaded {\n  opacity: 1;\n}\n.modal-image-loader {\n  position: absolute;\n  width: 48px;\n  height: 48px;\n  border: 3px solid rgba(255, 255, 255, 0.2);\n  border-top-color: #d4af37;\n  border-radius: 50%;\n  animation: spin 1s linear infinite;\n}\n@keyframes spin {\n  to { transform: rotate(360deg); }\n}\n.modal-nav-button {\n  position: absolute;\n  top: 50%;\n  transform: translateY(-50%);\n  background: transparent !important;\n  border: none;\n  color: #E8D5C4;\n  width: 80px;\n  height: 80px;\n  cursor: pointer;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  transition: all 0.3s ease;\n  z-index: 10;\n  font-size: 90px;\n  line-height: 1;\n  text-shadow: 0 2px 8px rgba(0, 0, 0, 0.5);\n}\n.modal-nav-button:hover {\n  color: #F5E6D3;\n  transform: translateY(-50%) scale(1.15);\n  text-shadow: 0 4px 16px rgba(0, 0, 0, 0.7);\n}\n.modal-nav-button:active {\n  transform: translateY(-50%) scale(0.95);\n}\n.modal-nav-button.prev { left: 20px; }\n.modal-nav-button.next { right: 20px; }\n@media (max-width: 768px) {\n  .modal-nav-button { width: 60px; height: 60px; font-size: 48px; }\n  .modal-nav-button.prev { left: 10px; }\n  .modal-nav-button.next { right: 10px; }\n}\n.modal-footer {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  gap: 5px;\n  margin-top: 24px;\n  padding: 0 8px;\n}\n.modal-counter {\n  font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;\n  font-size: 12px;\n  color: #E8D5C4;\n  font-weight: 400;\n  letter-spacing: 0.05em;\n  order: -1;\n}\n.modal-counter-current {\n  color: #d4af37;\n  font-weight: 600;\n  font-size: 16px;\n}\n.modal-thumbnails {\n  display: flex;\n  gap: 5px;\n  overflow-x: auto;\n  padding: 4px;\n  scrollbar-width: thin;\n  scrollbar-color: rgba(255, 255, 255, 0.3) transparent;\n  justify-content: center;\n}\n.modal-thumbnails::-webkit-scrollbar { height: 6px; }\n.modal-thumbnails::-webkit-scrollbar-thumb {\n  background: rgba(255, 255, 255, 0.3);\n  border-radius: 3px;\n}\n.modal-thumbnail {\n  flex-shrink: 0;\n  width: 80px;\n  height: 80px;\n  border-radius: 4px;\n  overflow: hidden;\n  cursor: pointer;\n  opacity: 0.5;\n  transition: all 0.3s ease;\n  border: 2px solid transparent;\n}\n.modal-thumbnail:hover { opacity: 0.8; }\n.modal-thumbnail.active {\n  opacity: 1;\n  border-color: #d4af37;\n  box-shadow: 0 4px 12px rgba(212, 175, 55, 0.4);\n}\n.modal-thumbnail img { width: 100%; height: 100%; object-fit: cover; }\n.no-apartments {\n  text-align: center;\n  padding: 80px 20px;\n  color: #6b6b6b;\n}\n.no-apartments-title {\n  font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;\n  font-size: 28px;\n  margin-bottom: 12px;\n  color: #2c2c2c;\n}\n@media (max-width: 768px) {\n  .modal-title { font-size: 24px; }\n  .modal-thumbnails { gap: 8px; }\n  .modal-thumbnail { width: 60px; height: 60px; }\n}\n\/* Mobilna wersja - tekst zawsze widoczny *\/\n@media (max-width: 768px) {\n  .apartment-card::before { opacity: 1 !important; }\n  .apartment-info { transform: translateY(0) !important; opacity: 1 !important; }\n}\n<\/style>\n<script>\n(function() {\n  'use strict';\n\n  let currentApartment = null;\n  let currentImageIndex = 0;\n  let modalElement = null;\n\n  \/\/ Wykrywanie j\u0119zyka na podstawie URL (WPML)\n  const segments = window.location.pathname.toLowerCase().split('\/').filter(Boolean);\n  const firstSegment = segments[0];\n  const supported = ['pl', 'en', 'uk'];\n  const lang = supported.includes(firstSegment) ? firstSegment : 'pl';\n\n  \/\/ T\u0142umaczenia\n  const translations = {\n    pl: { view: '-Zobacz-', photos: 'zdj\u0119\u0107', noTitle: 'Brak wizualizacji', noDesc: 'Dodaj wizualizacje w panelu administracyjnym WordPress.', close: 'Zamknij', prev: 'Poprzednie', next: 'Nast\u0119pne', thumbnail: 'Miniatura' },\n    en: { view: '-View-', photos: 'photos', noTitle: 'No visualizations', noDesc: 'Add visualizations in the WordPress admin panel.', close: 'Close', prev: 'Previous', next: 'Next', thumbnail: 'Thumbnail' },\n    uk: { view: '-\u041f\u0435\u0440\u0435\u0433\u043b\u044f\u043d\u0443\u0442\u0438-', photos: '\u0444\u043e\u0442\u043e', noTitle: '\u041d\u0435\u043c\u0430\u0454 \u0432\u0456\u0437\u0443\u0430\u043b\u0456\u0437\u0430\u0446\u0456\u0439', noDesc: '\u0414\u043e\u0434\u0430\u0439\u0442\u0435 \u0432\u0456\u0437\u0443\u0430\u043b\u0456\u0437\u0430\u0446\u0456\u0457 \u0432 \u043f\u0430\u043d\u0435\u043b\u0456 \u0430\u0434\u043c\u0456\u043d\u0456\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 WordPress.', close: '\u0417\u0430\u043a\u0440\u0438\u0442\u0438', prev: '\u041f\u043e\u043f\u0435\u0440\u0435\u0434\u043d\u0454', next: '\u041d\u0430\u0441\u0442\u0443\u043f\u043d\u0435', thumbnail: '\u041c\u0456\u043d\u0456\u0430\u0442\u044e\u0440\u0430' }\n  };\n\n  const t = translations[lang];\n\n  \/\/ ------------------------------------------------------------------\n  \/\/ \u0141ADOWANIE DANYCH\n  \/\/ Krok 1: Sprawd\u017a window.apartmentsData (wstrzykiwane przez PHP inline\n  \/\/         w <head> \u2013 dane dost\u0119pne NATYCHMIAST, bez fetch).\n  \/\/ Krok 2: Fallback do REST API je\u015bli inline data niedost\u0119pna.\n  \/\/ ------------------------------------------------------------------\n  function initGallery() {\n    if (window.apartmentsData && Array.isArray(window.apartmentsData) && window.apartmentsData.length > 0) {\n      \/\/ Dane ju\u017c dost\u0119pne (wstrzykni\u0119te przez PHP) \u2013 renderuj od razu\n      renderGallery(window.apartmentsData);\n      return;\n    }\n\n    \/\/ Fallback: pobierz z REST API (stare zachowanie)\n    fetch('\/wp-json\/apartments\/v1\/list')\n      .then(function(response) { return response.json(); })\n      .then(function(apartments) {\n        if (!apartments || apartments.length === 0) {\n          renderNoApartments();\n          return;\n        }\n        \/\/ Odwr\u00f3\u0107 kolejno\u015b\u0107 \u2013 najnowsze pierwsze (inline data ju\u017c odwr\u00f3cona przez PHP)\n        renderGallery([...apartments].reverse());\n      })\n      .catch(function(error) {\n        console.error('Error loading gallery:', error);\n        renderNoApartments();\n      });\n  }\n\n  function renderNoApartments() {\n    const container = document.getElementById('apartments-gallery-vanilla');\n    if (!container) return;\n    container.innerHTML = '<div class=\"apartments-gallery-wrapper\"><div class=\"no-apartments\"><h2 class=\"no-apartments-title\">' + t.noTitle + '<\/h2><p>' + t.noDesc + '<\/p><\/div><\/div>';\n  }\n\n  function renderGallery(apartments) {\n    const container = document.getElementById('apartments-gallery-vanilla');\n    if (!container) return;\n\n    let html = '<div class=\"apartments-gallery-wrapper\"><div class=\"apartments-grid\">';\n\n    apartments.forEach(function(apartment, index) {\n      const thumbnail  = apartment.thumbnail || (apartment.images && apartment.images[0] && apartment.images[0].url) || '';\n      const imageCount = apartment.images ? apartment.images.length : 0;\n      \/\/ U\u017cyj alt z biblioteki medi\u00f3w WP (pole \"Tekst alternatywny\"),\n      \/\/ fallback na tytu\u0142 wizualizacji + mark\u0119\n      const altText    = apartment.thumbnailAlt || (apartment.name + ' \u2013 wizualizacja wn\u0119trza Nilen Concept');\n\n      \/*\n       * SEO: u\u017cywamy <img> zamiast background-image.\n       * - loading=\"eager\"        \u2192 pierwsze 6 bez op\u00f3\u017anienia\n       * - fetchpriority=\"high\"   \u2192 pierwsze 2 pobierane priorytetowo (LCP)\n       * - loading=\"lazy\"         \u2192 reszta \u0142adowana w momencie przewijania\n       * - alt                    \u2192 tekst alternatywny indeksowany przez Google\n       * - width\/height           \u2192 zapobiega CLS (przesuni\u0119ciom tre\u015bci)\n       *\/\n      const loadingAttr   = index < 6  ? 'eager'  : 'lazy';\n      const priorityAttr  = index < 2  ? 'high'   : 'auto';\n      const decodingAttr  = index < 2  ? 'sync'   : 'async';\n\n      html += '<div class=\"apartment-card\" data-index=\"' + index + '\">';\n      html += '<img' + ' class=\"apartment-bg-img\"' + ' src=\"' + thumbnail + '\"' + ' alt=\"' + altText + '\"' + ' loading=\"' + loadingAttr + '\"' + ' fetchpriority=\"' + priorityAttr + '\"' + ' decoding=\"' + decodingAttr + '\"' + ' width=\"600\" height=\"600\"' + '>';\n      if (imageCount > 1) {\n        html += '<div class=\"apartment-badge\">' + imageCount + ' ' + t.photos + '<\/div>';\n      }\n      html += '<div class=\"apartment-info\">';\n      html += '<h3 class=\"apartment-name\">' + apartment.name + '<\/h3>';\n      html += '<p class=\"apartment-count\">' + t.view + '<\/p>';\n      html += '<\/div><\/div>';\n    });\n\n    html += '<\/div><\/div>';\n    container.innerHTML = html;\n\n    \/\/ Dodaj event listenery do kart\n    container.querySelectorAll('.apartment-card').forEach(function(card) {\n      const idx = parseInt(card.dataset.index);\n      card.addEventListener('click', function() { openModal(apartments[idx]); });\n    });\n\n    adjustContainerHeight();\n  }\n\n  \/\/ ------------------------------------------------------------------\n  \/\/ MODAL\n  \/\/ ------------------------------------------------------------------\n  function openModal(apartment) {\n    currentApartment   = apartment;\n    currentImageIndex  = 0;\n\n    document.body.style.overflow = 'hidden';\n\n    const firstImg    = apartment.images && apartment.images[0] ? apartment.images[0].url : '';\n    const firstAlt    = apartment.images && apartment.images[0]\n                          ? (apartment.images[0].alt || apartment.name)\n                          : apartment.name;\n    const imgCount    = apartment.images ? apartment.images.length : 0;\n\n    const modal = document.createElement('div');\n    modal.className = 'apartments-modal-overlay';\n    modal.setAttribute('role', 'dialog');\n    modal.setAttribute('aria-modal', 'true');\n    modal.setAttribute('aria-label', apartment.name);\n\n    let thumbsHTML = '';\n    if (imgCount > 1 && apartment.images) {\n      thumbsHTML = '<div class=\"modal-thumbnails\">';\n      apartment.images.forEach(function(img, i) {\n        \/\/ alt miniatury: u\u017cyj caption je\u015bli jest, potem alt, potem numer\n      const thumbAlt = img.caption || img.alt || (t.thumbnail + ' ' + (i + 1));\n      thumbsHTML += '<div class=\"modal-thumbnail' + (i === 0 ? ' active' : '') + '\" data-index=\"' + i + '\">'\n                    + '<img decoding=\"async\" src=\"' + img.url + '\" alt=\"' + thumbAlt + '\" loading=\"lazy\">'\n                    + '<\/div>';\n      });\n      thumbsHTML += '<\/div>';\n    }\n\n    modal.innerHTML =\n      '<div class=\"apartments-modal-content\">'\n      + '<div class=\"modal-header\">'\n      +   '<h2 class=\"modal-title\">' + apartment.name + '<\/h2>'\n      +   '<button class=\"modal-close\" aria-label=\"' + t.close + '\">\u00d7<\/button>'\n      + '<\/div>'\n      + '<div class=\"modal-image-container\">'\n      +   '<div class=\"modal-image-loader\"><\/div>'\n      +   '<img decoding=\"async\" src=\"' + firstImg + '\" alt=\"' + firstAlt + '\" class=\"modal-image\">'\n      +   (imgCount > 1\n            ? '<button class=\"modal-nav-button prev\" aria-label=\"' + t.prev + '\">\u2039<\/button>'\n            + '<button class=\"modal-nav-button next\" aria-label=\"' + t.next + '\">\u203a<\/button>'\n            : '')\n      + '<\/div>'\n      + '<div class=\"modal-footer\">'\n      +   '<div class=\"modal-counter\"><span class=\"modal-counter-current\">1<\/span> \/ ' + imgCount + '<\/div>'\n      +   thumbsHTML\n      + '<\/div>'\n      + '<\/div>';\n\n    document.body.appendChild(modal);\n    modalElement = modal;\n\n    \/\/ Obs\u0142uga za\u0142adowania zdj\u0119cia\n    const mainImage = modal.querySelector('.modal-image');\n    mainImage.addEventListener('load', function() {\n      mainImage.classList.add('loaded');\n      const loader = modal.querySelector('.modal-image-loader');\n      if (loader) loader.style.display = 'none';\n    });\n\n    modal.querySelector('.modal-close').addEventListener('click', closeModal);\n    modal.addEventListener('click', function(e) { if (e.target === modal) closeModal(); });\n\n    if (imgCount > 1) {\n      modal.querySelector('.prev').addEventListener('click', goToPrev);\n      modal.querySelector('.next').addEventListener('click', goToNext);\n      modal.querySelectorAll('.modal-thumbnail').forEach(function(thumb) {\n        thumb.addEventListener('click', function() { goToImage(parseInt(thumb.dataset.index)); });\n      });\n    }\n\n    document.addEventListener('keydown', handleKeyDown);\n  }\n\n  function closeModal() {\n    if (!modalElement) return;\n    document.body.style.overflow = '';\n    modalElement.classList.add('closing');\n    setTimeout(function() {\n      if (modalElement) { modalElement.remove(); modalElement = null; }\n    }, 300);\n    document.removeEventListener('keydown', handleKeyDown);\n  }\n\n  function goToPrev() {\n    if (!currentApartment) return;\n    currentImageIndex = currentImageIndex === 0 ? currentApartment.images.length - 1 : currentImageIndex - 1;\n    updateModalImage();\n  }\n\n  function goToNext() {\n    if (!currentApartment) return;\n    currentImageIndex = currentImageIndex === currentApartment.images.length - 1 ? 0 : currentImageIndex + 1;\n    updateModalImage();\n  }\n\n  function goToImage(index) {\n    currentImageIndex = index;\n    updateModalImage();\n  }\n\n  function updateModalImage() {\n    if (!modalElement || !currentApartment) return;\n    const img     = modalElement.querySelector('.modal-image');\n    const loader  = modalElement.querySelector('.modal-image-loader');\n    const counter = modalElement.querySelector('.modal-counter-current');\n\n    img.classList.remove('loaded');\n    if (loader) loader.style.display = 'block';\n\n    const currentImg = currentApartment.images[currentImageIndex];\n    img.src = currentImg.url;\n    \/\/ U\u017cyj alt z biblioteki medi\u00f3w, fallback na tytu\u0142 wizualizacji\n    img.alt = currentImg.alt || currentImg.caption || currentApartment.name;\n    if (counter) counter.textContent = currentImageIndex + 1;\n\n    modalElement.querySelectorAll('.modal-thumbnail').forEach(function(thumb, i) {\n      thumb.classList.toggle('active', i === currentImageIndex);\n    });\n  }\n\n  function handleKeyDown(e) {\n    if (e.key === 'Escape')      closeModal();\n    else if (e.key === 'ArrowLeft')  goToPrev();\n    else if (e.key === 'ArrowRight') goToNext();\n  }\n\n  \/\/ ------------------------------------------------------------------\n  \/\/ Dynamiczne dostosowanie wysoko\u015bci kontenera Elementor\n  \/\/ ------------------------------------------------------------------\n  function adjustContainerHeight() {\n    const gallery   = document.querySelector('#apartments-gallery-vanilla');\n    const container = document.querySelector('.elementor-element-9d9eb43');\n    if (!gallery || !container) return;\n\n    const galleryHeight = gallery.scrollHeight;\n    container.style.minHeight = (galleryHeight + 120) + 'px';\n    container.style.height    = 'auto';\n\n    const inner = container.querySelector('.e-con-inner');\n    if (inner) {\n      inner.style.minHeight = (galleryHeight + 120) + 'px';\n      inner.style.height    = 'auto';\n    }\n  }\n\n  \/\/ Start\n  initGallery();\n\n  \/\/ Koryguj wysoko\u015b\u0107 kontenera po renderowaniu\n  setTimeout(adjustContainerHeight, 100);\n  setTimeout(adjustContainerHeight, 500);\n  setTimeout(adjustContainerHeight, 1000);\n  setTimeout(adjustContainerHeight, 1500);\n  window.addEventListener('load', adjustContainerHeight);\n  window.addEventListener('resize', function() { setTimeout(adjustContainerHeight, 100); });\n\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<!-- dce invisible element 12f6874 --><style>\n\/* Zewn\u0119trzny kontener \u2014 zwija si\u0119 do zera PO tym jak zawarto\u015b\u0107 zniknie *\/\n.nilen-loader {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  gap: 20px;\n  overflow: hidden;\n  animation: nilen-collapse 3s ease-in-out forwards;\n}\n@keyframes nilen-collapse {\n  0%   { max-height: 300px; }\n  80%  { max-height: 300px; }\n  100% { max-height: 0; }\n}\n\/* SVG \u2014 obr\u00f3t na GPU, znika przez opacity bez zmiany pozycji *\/\n.nilen-loader-svg {\n  width: 120px;\n  height: 120px;\n  flex-shrink: 0;\n  will-change: transform, opacity;\n  animation: nilen-spin 3s ease-in-out forwards;\n}\n@keyframes nilen-spin {\n  0%   { transform: translateZ(0) rotate(0deg);   opacity: 1; }\n  75%  { transform: translateZ(0) rotate(360deg); opacity: 1; }\n  90%  { transform: translateZ(0) rotate(360deg); opacity: 0; }\n  100% { transform: translateZ(0) rotate(360deg); opacity: 0; }\n}\n\/* Tekst \u2014 znika przez opacity, pozycja stabilna *\/\n.nilen-loader-text {\n  font-family: var(--e-global-typography-2dbc8fa-font-family), sans-serif;\n  font-size: 13px;\n  letter-spacing: 3px;\n  text-transform: uppercase;\n  color: rgb(181, 107, 41);\n  margin: 0;\n  will-change: opacity;\n  animation: nilen-text-fade 3s ease-in-out forwards;\n}\n@keyframes nilen-text-fade {\n  0%   { opacity: 1; }\n  75%  { opacity: 1; }\n  90%  { opacity: 0; }\n  100% { opacity: 0; }\n}\n<\/style>\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-92da218 e-flex e-con-boxed e-con e-parent\" data-id=\"92da218\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-6e99a6a e-flex e-con-boxed e-con e-child\" data-id=\"6e99a6a\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-c0e75c7 e-flex e-con-boxed e-con e-child\" data-id=\"c0e75c7\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-d54f5cf e-con-full e-flex e-con e-child\" data-id=\"d54f5cf\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-041bee2 elementor-widget__width-inherit elementor-widget-mobile__width-inherit elementor-widget elementor-widget-heading\" data-id=\"041bee2\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">About our<br \/> interior visualizations<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-75aeed4 elementor-widget elementor-widget-text-editor\" data-id=\"75aeed4\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\"><strong>Interior visualization<\/strong> is the first step to creating your dream home. <strong>The 3D visualizations<\/strong> presented here will help you see what your interior will look like before work begins. <strong>Interior design with visualization<\/strong> allows you to avoid costly mistakes and make informed decisions about the interior design. <\/p><p class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\">On this page, you&#8217;ll find <strong>interior visualizations<\/strong> of living rooms, bedrooms, kitchens, bathrooms, and other rooms in a variety of styles. Each <strong>interior visualization<\/strong> was created with attention to detail and realistic rendering of materials, colors, and lighting. View <strong>photorealistic visualizations<\/strong> of apartments completed by Nilen \u2013 it&#8217;s the best way to see what your home will look like after renovation.  <\/p><p class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\">Our <strong>interior design visualizations<\/strong> encompass a variety of styles: from Scandinavian minimalism, through modern elegance, to warm boho interiors. Each <strong>interior design visualization<\/strong> will help you envision a space tailored to your needs and lifestyle. <strong>A 3D interior visualization<\/strong> is the perfect starting point for planning a turnkey apartment. <\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6261de2 elementor-align-justify elementor-widget elementor-widget-global elementor-global-42663 elementor-global-31334 elementor-widget-button\" data-id=\"6261de2\" data-element_type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"#contact-form\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"30\" height=\"30\" viewBox=\"0 0 30 30\" fill=\"none\"><path d=\"M15.0002 14.9998V14.9999L15.0003 14.9998L15.0002 15H15.0003L15.0002 15V15.0001L15.0002 15L15.0001 15.0002L15.0002 15L15 15.0001L15.0002 15L15.0001 14.9999L15.0002 14.9999L15.0002 14.9998Z\" fill=\"#F9F9F9\"><\/path><path d=\"M15.0002 0V15M15.0002 15V30M15.0002 15L23.817 27.1353M15.0002 15L6.18344 2.86475M15.0002 15L0.734375 10.3647M15.0002 15L29.2661 19.6353M15.0002 15L29.2661 10.3647M15.0002 15L0.734375 19.6353M15.0002 15L6.18344 27.1353M15.0002 15L23.817 2.86475M18.6157 3.53301L15.0002 15M15.0002 15L11.3847 26.4669M15.0002 15L18.8153 26.4021M15.0002 15L11.1851 3.59786M15.0002 15L5.2117 8.01792M15.0002 15L24.7886 21.982M15.0002 15L27.0231 14.895M15.0002 15L2.97719 15.1049M15.0002 15L5.33505 22.1518M15.0002 15L24.6653 7.84816\" stroke=\"#EEE7D5\" stroke-linejoin=\"round\"><\/path><\/svg>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Make an appointment for a free consultation<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-c881f5b e-con-full e-flex e-con e-child\" data-id=\"c881f5b\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<!-- dce invisible element ab701e0 -->\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<!-- dce invisible element e7bb81f --><style id=\"loop-37153\">.elementor-37153 .elementor-element.elementor-element-5ca55440{--display:flex;--flex-direction:column;--container-widget-width:100%;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--flex-wrap-mobile:wrap;}.elementor-37153 .elementor-element.elementor-element-4602c422 .elementor-wrapper{--video-aspect-ratio:1.77777;}.elementor-37153 .elementor-element.elementor-element-4602c422 .elementor-custom-embed-play i{font-size:50px;}.elementor-37153 .elementor-element.elementor-element-4602c422 .elementor-custom-embed-play svg{width:50px;height:50px;}<\/style><div class=\"elementor-element elementor-element-53b1aac e-flex e-con-boxed e-con e-parent\" data-id=\"53b1aac\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-db2cc2d e-flex e-con-boxed e-con e-child\" data-id=\"db2cc2d\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-bbbeccf e-flex e-con-boxed e-con e-child\" data-id=\"bbbeccf\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-163954e e-con-full e-flex e-con e-child\" data-id=\"163954e\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b2d849f elementor-widget__width-initial elementor-widget elementor-widget-image\" data-id=\"b2d849f\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"800\" height=\"800\" src=\"https:\/\/nilen.pl\/wp-content\/uploads\/2024\/07\/124.svg\" class=\"attachment-large size-large wp-image-41144\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-5853b9f e-con-full e-flex e-con e-child\" data-id=\"5853b9f\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-681f557 elementor-widget elementor-widget-heading\" data-id=\"681f557\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Let's plan your interior design \nand finish your apartment<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ea1d6ac elementor-widget elementor-widget-heading\" data-id=\"ea1d6ac\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">At our first conversation we will get to know your expectations regarding the style, arrangement and functionality of your apartment. Then we will share our experience with you and advise you on solutions to fit your vision and budget. Finally, we will give you a preliminary quote for all finishing works, the schedule, deadlines and budget in which the works should be closed.  <\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-ec619c3 e-flex e-con-boxed e-con e-child\" data-id=\"ec619c3\" data-element_type=\"container\" id=\"brown-container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-db5c79c elementor-align-justify elementor-widget elementor-widget-global elementor-global-31487 elementor-widget-button\" data-id=\"db5c79c\" data-element_type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"#contact-form\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"29\" height=\"30\" viewBox=\"0 0 29 30\" fill=\"none\"><path d=\"M14.5002 14.9998V14.9999L14.5003 14.9998L14.5002 15H14.5003L14.5002 15V15.0001L14.5002 15L14.5001 15.0002L14.5002 15L14.5 15.0001L14.5002 15L14.5001 14.9999L14.5002 14.9999L14.5002 14.9998Z\" fill=\"#F9F9F9\"><\/path><path d=\"M14.5002 0V15M14.5002 15V30M14.5002 15L23.317 27.1353M14.5002 15L5.68344 2.86475M14.5002 15L0.234375 10.3647M14.5002 15L28.7661 19.6353M14.5002 15L28.7661 10.3647M14.5002 15L0.234375 19.6353M14.5002 15L5.68344 27.1353M14.5002 15L23.317 2.86475M18.1157 3.53301L14.5002 15M14.5002 15L10.8847 26.4669M14.5002 15L18.3153 26.4021M14.5002 15L10.6851 3.59786M14.5002 15L4.7117 8.01792M14.5002 15L24.2886 21.982M14.5002 15L26.5231 14.895M14.5002 15L2.47719 15.1049M14.5002 15L4.83505 22.1518M14.5002 15L24.1653 7.84816\" stroke=\"#EEE7D5\" stroke-linejoin=\"round\"><\/path><\/svg>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Wype\u0142nij formularz<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\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-0b0cc39 e-flex e-con-boxed e-con e-child\" data-id=\"0b0cc39\" data-element_type=\"container\" id=\"contact-form\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-43cc423 elementor-widget elementor-widget-template\" data-id=\"43cc423\" data-element_type=\"widget\" data-widget_type=\"template.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-template\">\n\t\t\t\t\t<div data-elementor-type=\"container\" data-elementor-id=\"42718\" class=\"elementor elementor-42718 elementor-29501 elementor-29501\" data-elementor-post-type=\"elementor_library\">\n\t\t\t\t<div class=\"elementor-element elementor-element-20dd313a e-flex e-con-boxed e-con e-child\" data-id=\"20dd313a\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-4361d98 full-heigh-100 e-flex e-con-boxed e-con e-child\" data-id=\"4361d98\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7527b094 elementor-widget elementor-widget-html\" data-id=\"7527b094\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\n    .title{\n        max-width: calc(100% - 90px);\n    }\n<\/style>\n<div class=\"container-contact\">\n    \n    <div class=\"top\">\n        <h6 class=\"number\">1<\/h6>\n        <h6 class=\"title\">Leave a contact for yourself<\/h6>\n    <\/div>\n    \n    <div class=\"bottom\">\n        <p>If you have a floor plan of the apartment, please attach it to your message. Leave a contact number and we will call you within 24 hours.  <\/p>\n    <\/div>\n    \n        <div class=\"top top-border\">\n        <h6 class=\"number\">2<\/h6>\n        <h6 class=\"title\">Let's meet<\/h6>\n    <\/div>\n    \n    <div class=\"bottom\">\n        <p>\n If the apartment is not yet ready, that's even better. Based on the floor plan, we can prepare a preliminary estimate and begin the project, allowing you to move in faster. We invite you to our Krakow showroom for a meeting over aromatic coffee. \n            <\/p>\n    <\/div>\n    \n    \n        <div class=\"top top-border\">\n        <h6 class=\"number\" id=\"nr3\">3<\/h6>\n        <h6 class=\"title\">Partnership proposal<\/h6>\n    <\/div>\n    \n    <div class=\"bottom\">\n        <p>\n  Based on your needs, we will prepare an action plan to perfectly realize your vision.<\/p>\n    <\/div>\n    \n    \n        <div class=\"top top-border\">\n        <h6 class=\"number\">4<\/h6>\n        <h6 class=\"title\">Let's act<\/h6>\n    <\/div>\n    \n    <div class=\"bottom\">\n        <p>Once our vision for your apartment appeals to you, we will start working together. Get ready for the WOW effect when the work is completed. <\/p>\n    <\/div>\n    \n<\/div>\t\t\t\t<\/div>\n\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-70c223b4 e-flex e-con-boxed e-con e-child\" data-id=\"70c223b4\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-3ba6b67 e-con-full e-flex e-con e-child\" data-id=\"3ba6b67\" data-element_type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-f403fb2 e-con-full e-flex e-con e-child\" data-id=\"f403fb2\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-11bace2 elementor-widget__width-initial elementor-widget-mobile__width-initial elementor-widget elementor-widget-image\" data-id=\"11bace2\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/nilen.pl\/wp-content\/uploads\/elementor\/thumbs\/profilowe-nilen-r0rsov2fcewm4vwwxbj29lp4lwbbn8w7ueos27vh3w.png\" title=\"profilowe nilen\" alt=\"profilowe nilen\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-61e4168 elementor-widget-mobile__width-initial elementor-widget__width-initial elementor-widget-tablet__width-initial elementor-widget elementor-widget-heading\" data-id=\"61e4168\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Fill out the form,<br> and request a free consultation\n<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-16b9afa elementor-mobile-button-align-stretch elementor-widget-mobile__width-inherit elementor-widget__width-initial elementor-button-align-stretch elementor-widget elementor-widget-form\" data-id=\"16b9afa\" data-element_type=\"widget\" data-settings=\"{&quot;step_next_label&quot;:&quot;Next&quot;,&quot;step_previous_label&quot;:&quot;Previous&quot;,&quot;button_width&quot;:&quot;100&quot;,&quot;step_type&quot;:&quot;number_text&quot;,&quot;step_icon_shape&quot;:&quot;circle&quot;}\" data-widget_type=\"form.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<form class=\"elementor-form\" method=\"post\" name=\"New form\" aria-label=\"New form\">\n\t\t\t<input type=\"hidden\" name=\"post_id\" value=\"42718\"\/>\n\t\t\t<input type=\"hidden\" name=\"form_id\" value=\"16b9afa\"\/>\n\t\t\t<input type=\"hidden\" name=\"referer_title\" value=\"The best functional layouts for an apartment or house - Nilen\" \/>\n\n\t\t\t\t\t\t\t<input type=\"hidden\" name=\"queried_id\" value=\"42917\"\/>\n\t\t\t\n\t\t\t<div class=\"elementor-form-fields-wrapper elementor-labels-\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-text elementor-field-group elementor-column elementor-field-group-imie_nazwisko elementor-col-100 elementor-field-required\">\n\t\t\t\t\t\t\t\t\t\t\t\t<label for=\"form-field-imie_nazwisko\" class=\"elementor-field-label elementor-screen-only\">\n\t\t\t\t\t\t\t\tName\t\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<input size=\"1\" type=\"text\" name=\"form_fields[imie_nazwisko]\" id=\"form-field-imie_nazwisko\" class=\"elementor-field elementor-size-sm  elementor-field-textual\" placeholder=\"Name*\" required=\"required\">\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-text elementor-field-group elementor-column elementor-field-group-numer_telefonu elementor-col-100 elementor-field-required\">\n\t\t\t\t\t\t\t\t\t\t\t\t<label for=\"form-field-numer_telefonu\" class=\"elementor-field-label elementor-screen-only\">\n\t\t\t\t\t\t\t\tPhone number\t\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<input size=\"1\" type=\"text\" name=\"form_fields[numer_telefonu]\" id=\"form-field-numer_telefonu\" class=\"elementor-field elementor-size-sm  elementor-field-textual\" placeholder=\"Phone number*\" required=\"required\">\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-upload elementor-field-group elementor-column elementor-field-group-plik elementor-col-100\">\n\t\t\t\t\t\t\t\t\t\t\t\t<label for=\"form-field-plik\" class=\"elementor-field-label elementor-screen-only\">\n\t\t\t\t\t\t\t\tFile\t\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t<input type=\"file\" name=\"form_fields[plik][]\" id=\"form-field-plik\" class=\"elementor-field elementor-size-sm  elementor-upload-field\" multiple=\"multiple\" data-maxsize=\"64\" data-maxsize-message=\"This file exceeds the maximum allowed size.\">\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-acceptance elementor-field-group elementor-column elementor-field-group-field_843124b elementor-col-100 elementor-field-required\">\n\t\t\t\t\t\t\t\t\t\t\t\t<label for=\"form-field-field_843124b\" class=\"elementor-field-label elementor-screen-only\">\n\t\t\t\t\t\t\t\tAcceptance\t\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-subgroup\">\n\t\t\t<span class=\"elementor-field-option\">\n\t\t\t\t<input type=\"checkbox\" name=\"form_fields[field_843124b]\" id=\"form-field-field_843124b\" class=\"elementor-field elementor-size-sm  elementor-acceptance-field\" required=\"required\">\n\t\t\t\t<label for=\"form-field-field_843124b\">I agree to be contacted by phone to handle this application.<br>I agree to receive commercial information<a rel=\"nofollow\" href=\"https:\/\/nilen.pl\/en\/privacy-policy\/\">(Privacy Policy<\/a>).<\/label>\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-group elementor-column elementor-field-type-submit elementor-col-100 e-form__buttons\">\n\t\t\t\t\t<button class=\"elementor-button elementor-size-sm\" type=\"submit\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t\t\t\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"30\" height=\"30\" viewBox=\"0 0 30 30\" fill=\"none\"><path d=\"M15.0002 14.9998V14.9999L15.0003 14.9998L15.0002 15H15.0003L15.0002 15V15.0001L15.0002 15L15.0001 15.0002L15.0002 15L15 15.0001L15.0002 15L15.0001 14.9999L15.0002 14.9999L15.0002 14.9998Z\" fill=\"#F9F9F9\"><\/path><path d=\"M15.0002 0V15M15.0002 15V30M15.0002 15L23.817 27.1353M15.0002 15L6.18344 2.86475M15.0002 15L0.734375 10.3647M15.0002 15L29.2661 19.6353M15.0002 15L29.2661 10.3647M15.0002 15L0.734375 19.6353M15.0002 15L6.18344 27.1353M15.0002 15L23.817 2.86475M18.6157 3.53301L15.0002 15M15.0002 15L11.3847 26.4669M15.0002 15L18.8153 26.4021M15.0002 15L11.1851 3.59786M15.0002 15L5.2117 8.01792M15.0002 15L24.7886 21.982M15.0002 15L27.0231 14.895M15.0002 15L2.97719 15.1049M15.0002 15L5.33505 22.1518M15.0002 15L24.6653 7.84816\" stroke=\"#EEE7D5\" stroke-linejoin=\"round\"><\/path><\/svg>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Order a free consultation<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/button>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/form>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a0428c9 elementor-widget elementor-widget-html\" data-id=\"a0428c9\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<script>document.addEventListener('DOMContentLoaded', function() {\n    const fileInput = document.querySelector('.elementor-upload-field');\n    if (!fileInput || !fileInput.parentNode) return;\n\n    \/\/ Wykrywanie j\u0119zyka na podstawie URL (WPML)\n    const segments = window.location.pathname.toLowerCase().split('\/').filter(Boolean);\n    const firstSegment = segments[0];\n    const supported = ['pl', 'en', 'uk'];\n    const lang = supported.includes(firstSegment) ? firstSegment : 'pl';\n\n    \/\/ T\u0142umaczenia\n    const translations = {\n        pl: {\n            uploadText: 'Do\u0142\u0105cz rzuty (opcjonalnie)',\n            remove: 'Usu\u0144',\n            filesCount: 'Liczba plik\u00f3w:',\n            noFiles: 'Brak plik\u00f3w',\n            invalid: 'Niedozwolony typ pliku. Dozwolone rozszerzenia to: PDF, JPG, JPEG, GIF, PNG, BMP. Prosz\u0119 za\u0142adowa\u0107 plik ponownie.'\n        },\n        en: {\n            uploadText: 'Attach floor plans (optional)',\n            remove: 'Remove',\n            filesCount: 'Number of files:',\n            noFiles: 'No files',\n            invalid: 'Invalid file type. Allowed extensions are: PDF, JPG, JPEG, GIF, PNG, BMP. Please upload the file again.'\n        },\n        uk: {\n            uploadText: '\u0414\u043e\u0434\u0430\u0439\u0442\u0435 \u043f\u043b\u0430\u043d \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u0438 (\u043d\u0435\u043e\u0431\u043e\u0432\u2019\u044f\u0437\u043a\u043e\u0432\u043e)',\n            remove: '\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438',\n            filesCount: '\u041a\u0456\u043b\u044c\u043a\u0456\u0441\u0442\u044c \u0444\u0430\u0439\u043b\u0456\u0432:',\n            noFiles: '\u041d\u0435\u043c\u0430\u0454 \u0444\u0430\u0439\u043b\u0456\u0432',\n            invalid: '\u041d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u0438\u0439 \u0442\u0438\u043f \u0444\u0430\u0439\u043b\u0443. \u0414\u043e\u0437\u0432\u043e\u043b\u0435\u043d\u0456 \u0440\u043e\u0437\u0448\u0438\u0440\u0435\u043d\u043d\u044f: PDF, JPG, JPEG, GIF, PNG, BMP. \u0411\u0443\u0434\u044c \u043b\u0430\u0441\u043a\u0430, \u0437\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0442\u0435 \u0444\u0430\u0439\u043b \u0449\u0435 \u0440\u0430\u0437.'\n        }\n    };\n\n    const t = translations[lang];\n    const allowedExtensions = ['pdf', 'jpg', 'jpeg', 'gif', 'png', 'bmp'];\n\n    const uploadButton = fileInput.parentNode;\n    const fileLabel = document.createElement('span');\n    const uploadTextElement = document.createElement('span');\n    const resetButton = document.createElement('button');\n\n    \/\/ Tekst g\u0142\u00f3wny\n    uploadTextElement.textContent = t.uploadText;\n    uploadTextElement.style.color = '#EEE7D5';\n    uploadTextElement.style.fontSize = '16px';\n    uploadTextElement.style.fontWeight = '300';\n    uploadTextElement.style.marginRight = '10px';\n    uploadButton.appendChild(uploadTextElement);\n\n    \/\/ Label z liczb\u0105 plik\u00f3w\n    fileLabel.style.color = '#EEE7D5';\n    fileLabel.style.marginLeft = '10px';\n    fileLabel.style.fontSize = '16px';\n    uploadButton.appendChild(fileLabel);\n\n    \/\/ Przycisk reset\n    resetButton.textContent = t.remove;\n    resetButton.type = 'button';\n    resetButton.style.marginLeft = '15px';\n    resetButton.style.fontSize = '14px';\n    resetButton.style.padding = '5px 10px';\n    resetButton.style.backgroundColor = '#EEE7D5';\n    resetButton.style.color = '#333';\n    resetButton.style.border = 'none';\n    resetButton.style.cursor = 'pointer';\n    resetButton.style.display = 'none';\n\n    fileInput.addEventListener('change', function() {\n        const numFiles = this.files.length;\n\n        if (numFiles > 0) {\n            for (let i = 0; i < numFiles; i++) {\n                const fileName = this.files[i].name;\n                const fileExtension = fileName.split('.').pop().toLowerCase();\n\n                if (!allowedExtensions.includes(fileExtension)) {\n                    alert(t.invalid);\n                    fileInput.value = '';\n                    fileLabel.textContent = '';\n                    uploadTextElement.style.display = 'inline-block';\n                    resetButton.style.display = 'none';\n                    if (uploadButton.contains(resetButton)) {\n                        uploadButton.removeChild(resetButton);\n                    }\n                    return;\n                }\n            }\n\n            fileLabel.textContent = `${t.filesCount} ${numFiles}`;\n            uploadTextElement.style.display = 'none';\n\n            if (!uploadButton.contains(resetButton)) {\n                uploadButton.appendChild(resetButton);\n            }\n            resetButton.style.display = 'inline-block';\n        } else {\n            fileLabel.textContent = t.noFiles;\n            uploadTextElement.style.display = 'inline-block';\n            resetButton.style.display = 'none';\n\n            if (uploadButton.contains(resetButton)) {\n                uploadButton.removeChild(resetButton);\n            }\n        }\n    });\n\n    resetButton.addEventListener('click', function() {\n        fileInput.value = '';\n        fileLabel.textContent = '';\n        uploadTextElement.style.display = 'inline-block';\n        resetButton.style.display = 'none';\n\n        if (uploadButton.contains(resetButton)) {\n            uploadButton.removeChild(resetButton);\n        }\n    });\n\n    \/\/ Autocomplete p\u00f3l formularza\n    const nameField = document.querySelector('#form-field-imie_nazwisko');\n    if (nameField) {\n        nameField.setAttribute('autocomplete', 'name');\n        nameField.setAttribute('autocapitalize', 'words');\n        nameField.setAttribute('spellcheck', 'false');\n    }\n\n    const emailField = document.querySelector('#form-field-email');\n    if (emailField) {\n        emailField.setAttribute('autocomplete', 'email');\n    }\n\n    const phoneField = document.querySelector('#form-field-numer_telefonu');\n    if (phoneField) {\n        phoneField.setAttribute('autocomplete', 'tel');\n        phoneField.setAttribute('inputmode', 'tel');\n        phoneField.setAttribute('pattern', '[0-9+ ]*');\n    }\n});\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>3D interior visualizations in Krakow See photorealisticvisualizations of apartment interiors See the visualizations Loading visualizations About our interior visualizations Interior visualization is the first step to creating your dream home. The 3D visualizations presented here will help you see what your interior will look like before work begins. Interior design with visualization allows you to [&hellip;]<\/p>\n","protected":false},"author":11,"featured_media":51542,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"class_list":["post-52037","page","type-page","status-publish","has-post-thumbnail","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Interior visualizations for your dream apartment<\/title>\n<meta name=\"description\" content=\"See interior visualizations in various styles and see how visualizations can make designing your apartment easier.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/nilen.pl\/en\/visualizations\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Interior visualizations for your dream apartment\" \/>\n<meta property=\"og:description\" content=\"See interior visualizations in various styles and see how visualizations can make designing your apartment easier.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/nilen.pl\/en\/visualizations\/\" \/>\n<meta property=\"og:site_name\" content=\"Nilen\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/nilenconcept\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-25T08:02:44+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/nilen.pl\/wp-content\/uploads\/2026\/04\/salon-z-bezowa-sofa-i-projektorem-1024x1024.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"1024\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/nilen.pl\\\/en\\\/visualizations\\\/\",\"url\":\"https:\\\/\\\/nilen.pl\\\/en\\\/visualizations\\\/\",\"name\":\"Interior visualizations for your dream apartment\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/nilen.pl\\\/en\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/nilen.pl\\\/en\\\/visualizations\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/nilen.pl\\\/en\\\/visualizations\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/nilen.pl\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/salon-z-bezowa-sofa-i-projektorem.jpg\",\"datePublished\":\"2026-04-09T13:02:40+00:00\",\"dateModified\":\"2026-05-25T08:02:44+00:00\",\"description\":\"See interior visualizations in various styles and see how visualizations can make designing your apartment easier.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/nilen.pl\\\/en\\\/visualizations\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/nilen.pl\\\/en\\\/visualizations\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/nilen.pl\\\/en\\\/visualizations\\\/#primaryimage\",\"url\":\"https:\\\/\\\/nilen.pl\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/salon-z-bezowa-sofa-i-projektorem.jpg\",\"contentUrl\":\"https:\\\/\\\/nilen.pl\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/salon-z-bezowa-sofa-i-projektorem.jpg\",\"width\":1750,\"height\":1750},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/nilen.pl\\\/en\\\/visualizations\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\\\/\\\/nilen.pl\\\/en\\\/home-page\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"visualizations\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/nilen.pl\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/nilen.pl\\\/en\\\/\",\"name\":\"Nilen Concept\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/nilen.pl\\\/en\\\/#organization\"},\"alternateName\":\"Nilen\",\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/nilen.pl\\\/en\\\/#organization\",\"name\":\"Nilen Concept\",\"alternateName\":\"Nilen\",\"url\":\"https:\\\/\\\/nilen.pl\\\/en\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/nilen.pl\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/nilen.pl\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/Stopki-NILEN-6.png\",\"contentUrl\":\"https:\\\/\\\/nilen.pl\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/Stopki-NILEN-6.png\",\"width\":2048,\"height\":2048,\"caption\":\"Nilen Concept\"},\"image\":{\"@id\":\"https:\\\/\\\/nilen.pl\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/nilenconcept\",\"https:\\\/\\\/www.instagram.com\\\/nilen_concept\\\/\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCyslp6cP9_ULJSGCe9Gqu2w\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Interior visualizations for your dream apartment","description":"See interior visualizations in various styles and see how visualizations can make designing your apartment easier.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/nilen.pl\/en\/visualizations\/","og_locale":"en_US","og_type":"article","og_title":"Interior visualizations for your dream apartment","og_description":"See interior visualizations in various styles and see how visualizations can make designing your apartment easier.","og_url":"https:\/\/nilen.pl\/en\/visualizations\/","og_site_name":"Nilen","article_publisher":"https:\/\/www.facebook.com\/nilenconcept","article_modified_time":"2026-05-25T08:02:44+00:00","og_image":[{"width":1024,"height":1024,"url":"https:\/\/nilen.pl\/wp-content\/uploads\/2026\/04\/salon-z-bezowa-sofa-i-projektorem-1024x1024.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/nilen.pl\/en\/visualizations\/","url":"https:\/\/nilen.pl\/en\/visualizations\/","name":"Interior visualizations for your dream apartment","isPartOf":{"@id":"https:\/\/nilen.pl\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/nilen.pl\/en\/visualizations\/#primaryimage"},"image":{"@id":"https:\/\/nilen.pl\/en\/visualizations\/#primaryimage"},"thumbnailUrl":"https:\/\/nilen.pl\/wp-content\/uploads\/2026\/04\/salon-z-bezowa-sofa-i-projektorem.jpg","datePublished":"2026-04-09T13:02:40+00:00","dateModified":"2026-05-25T08:02:44+00:00","description":"See interior visualizations in various styles and see how visualizations can make designing your apartment easier.","breadcrumb":{"@id":"https:\/\/nilen.pl\/en\/visualizations\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/nilen.pl\/en\/visualizations\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/nilen.pl\/en\/visualizations\/#primaryimage","url":"https:\/\/nilen.pl\/wp-content\/uploads\/2026\/04\/salon-z-bezowa-sofa-i-projektorem.jpg","contentUrl":"https:\/\/nilen.pl\/wp-content\/uploads\/2026\/04\/salon-z-bezowa-sofa-i-projektorem.jpg","width":1750,"height":1750},{"@type":"BreadcrumbList","@id":"https:\/\/nilen.pl\/en\/visualizations\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/nilen.pl\/en\/home-page\/"},{"@type":"ListItem","position":2,"name":"visualizations"}]},{"@type":"WebSite","@id":"https:\/\/nilen.pl\/en\/#website","url":"https:\/\/nilen.pl\/en\/","name":"Nilen Concept","description":"","publisher":{"@id":"https:\/\/nilen.pl\/en\/#organization"},"alternateName":"Nilen","inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/nilen.pl\/en\/#organization","name":"Nilen Concept","alternateName":"Nilen","url":"https:\/\/nilen.pl\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/nilen.pl\/en\/#\/schema\/logo\/image\/","url":"https:\/\/nilen.pl\/wp-content\/uploads\/2025\/07\/Stopki-NILEN-6.png","contentUrl":"https:\/\/nilen.pl\/wp-content\/uploads\/2025\/07\/Stopki-NILEN-6.png","width":2048,"height":2048,"caption":"Nilen Concept"},"image":{"@id":"https:\/\/nilen.pl\/en\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/nilenconcept","https:\/\/www.instagram.com\/nilen_concept\/","https:\/\/www.youtube.com\/channel\/UCyslp6cP9_ULJSGCe9Gqu2w"]}]}},"_links":{"self":[{"href":"https:\/\/nilen.pl\/en\/wp-json\/wp\/v2\/pages\/52037","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nilen.pl\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/nilen.pl\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/nilen.pl\/en\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/nilen.pl\/en\/wp-json\/wp\/v2\/comments?post=52037"}],"version-history":[{"count":13,"href":"https:\/\/nilen.pl\/en\/wp-json\/wp\/v2\/pages\/52037\/revisions"}],"predecessor-version":[{"id":53349,"href":"https:\/\/nilen.pl\/en\/wp-json\/wp\/v2\/pages\/52037\/revisions\/53349"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nilen.pl\/en\/wp-json\/wp\/v2\/media\/51542"}],"wp:attachment":[{"href":"https:\/\/nilen.pl\/en\/wp-json\/wp\/v2\/media?parent=52037"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}