{"id":1009,"date":"2026-10-21T09:41:05","date_gmt":"2026-10-21T09:41:05","guid":{"rendered":"https:\/\/greenqual.eu\/?page_id=1009"},"modified":"2026-10-21T09:52:37","modified_gmt":"2026-10-21T09:52:37","slug":"greenqual-findings-presented-at-gdansk-tech-research-seminar","status":"publish","type":"page","link":"https:\/\/greenqual.eu\/?page_id=1009","title":{"rendered":"GreenQual Findings Presented at Gda\u0144sk Tech Research Seminar"},"content":{"rendered":"\n<div class=\"wp-block-cover is-light\" style=\"min-height:100vh;aspect-ratio:unset;\"><img loading=\"lazy\" decoding=\"async\" width=\"1245\" height=\"907\" class=\"wp-block-cover__image-background wp-image-1017 size-full\" alt=\"\" src=\"https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/10\/gdansk1-edited-2.jpeg\" data-object-fit=\"cover\" srcset=\"https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/10\/gdansk1-edited-2.jpeg 1245w, https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/10\/gdansk1-edited-2-300x219.jpeg 300w, https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/10\/gdansk1-edited-2-1024x746.jpeg 1024w, https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/10\/gdansk1-edited-2-768x559.jpeg 768w\" sizes=\"auto, (max-width: 1245px) 100vw, 1245px\" \/><span aria-hidden=\"true\" class=\"wp-block-cover__background has-background-dim\" style=\"background-color:#d4cdc8\"><\/span><div class=\"wp-block-cover__inner-container is-layout-flow wp-block-cover-is-layout-flow\">\n<p class=\"has-text-align-center has-large-font-size wp-block-paragraph\"><\/p>\n<\/div><\/div>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:20px\">Members of the Polish team of the GreenQual project participated in the international research seminar \u201cUrban Environment, Health and Quality of Life: Interdisciplinary Research and Collaboration\u201d, hosted on <strong>October 6, 2026<\/strong> by the Faculty of Architecture at Gda\u0144sk University of Technology (Poland).\u00a0\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:20px\">The event brought together researchers, spatial planners, and municipal experts to discuss critical challenges facing contemporary cities, including climate change adaptation, public health enhancement, and the application of advanced digital tools in urban management.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:20px\">During the seminar, our team delivered presentations highlighting key findings and insights from the ongoing research within the GreenQual project:<\/p>\n\n\n\n<ul style=\"font-size:20px\" class=\"wp-block-list\">\n<li>Urban Greenery Accessibility: Insights and practical lessons on the distribution and accessibility of green spaces in urban environments.<\/li>\n\n\n\n<li>Lowering temperatures in dense historical city-core streets: Creative design strategies and nature-based solutions to introduce greenery and enhance microclimate conditions within dense, highly constrained historic city spaces.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:20px\">Beyond the thematic presentations, the event provided a valuable platform for interdisciplinary dialogue. Participants also engaged in interactive workshops on GIS-supported spatial modeling and 3D visualization, as well as visits to Gda\u0144sk Tech&#8217;s cutting-edge immersive and analytical laboratories.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:20px\"><em>Original article available at:&nbsp;<a href=\"https:\/\/kgpiak.urk.edu.pl\/aktualnosci-kgpiak\/kgpiak-politechnika-gdanska-103.html\">https:\/\/kgpiak.urk.edu.pl\/aktualnosci-kgpiak\/kgpiak-politechnika-gdanska-103.html<\/a>&nbsp;<\/em><\/p>\n\n\n\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>Gda\u0144sk gal\u00e9ria<\/title>\n\n<style>\n  * {\n    box-sizing: border-box;\n  }\n\n  :root {\n    --accent: #95527c;\n    --accent-soft: #eadde6;\n    --surface: #ffffff;\n    --surface-soft: #faf8fa;\n    --text: #2a2a2a;\n    --muted: #d9e1e7;\n    --shadow: 0 12px 30px rgba(30, 22, 28, 0.10);\n    --radius: 18px;\n  }\n\n  body {\n    margin: 0;\n    background: #fff;\n    font-family: Arial, sans-serif;\n    color: var(--text);\n  }\n\n  .gallery-section {\n    max-width: 1560px;\n    margin: 0 auto;\n    padding: 40px 32px 56px;\n  }\n\n  .gallery-shell {\n    position: relative;\n    background: linear-gradient(180deg, #ffffff 0%, #faf8fa 100%);\n    border: 1px solid #eee5eb;\n    border-radius: 28px;\n    padding: 26px 28px 22px;\n    box-shadow: 0 18px 42px rgba(0,0,0,0.05);\n  }\n\n  .gallery-head {\n    display: flex;\n    align-items: end;\n    justify-content: space-between;\n    gap: 16px;\n    margin-bottom: 20px;\n  }\n\n  .gallery-head h2 {\n    margin: 0;\n    font-size: 24px;\n    line-height: 1.2;\n    color: var(--accent);\n  }\n\n  .gallery-head p {\n    margin: 6px 0 0;\n    color: #666;\n    font-size: 15px;\n    max-width: 720px;\n  }\n\n  .carousel {\n    position: relative;\n    padding: 0 46px;\n  }\n\n  .carousel-viewport {\n    overflow: hidden;\n    width: 100%;\n  }\n\n  .track {\n    display: flex;\n    gap: 18px;\n    will-change: transform;\n  }\n\n  .slide {\n    flex: 0 0 calc((100% - 36px) \/ 3);\n    min-width: 0;\n    background: var(--surface);\n    border-radius: var(--radius);\n    overflow: hidden;\n    cursor: pointer;\n    position: relative;\n    box-shadow: var(--shadow);\n  }\n\n  .slide img {\n    display: block;\n    width: 100%;\n    height: 320px;\n    object-fit: cover;\n    transition: transform 0.35s ease, filter 0.35s ease;\n  }\n\n  .slide:hover img {\n    transform: scale(1.03);\n    filter: saturate(1.02);\n  }\n\n  .slide::after {\n    content: \"\";\n    position: absolute;\n    inset: auto 0 0 0;\n    height: 72px;\n    background: linear-gradient(to top, rgba(0,0,0,0.22), transparent);\n    opacity: 0;\n    pointer-events: none;\n    transition: opacity 0.25s ease;\n  }\n\n  .slide:hover::after {\n    opacity: 1;\n  }\n\n  .nav {\n    position: absolute;\n    top: 50%;\n    transform: translateY(-50%);\n    width: 38px;\n    height: 38px;\n    padding: 0;\n    border: none;\n    outline: none;\n    background: transparent;\n    box-shadow: none;\n    cursor: pointer;\n    z-index: 5;\n    appearance: none;\n    -webkit-appearance: none;\n    overflow: visible;\n  }\n\n  .nav::before {\n    content: \"\";\n    display: block;\n    width: 22px;\n    height: 22px;\n    border-top: 4px solid var(--accent);\n    border-right: 4px solid var(--accent);\n    margin: auto;\n    background: transparent;\n    box-shadow: none;\n  }\n\n  .prev {\n    left: 0;\n  }\n\n  .prev::before {\n    transform: rotate(-135deg);\n  }\n\n  .next {\n    right: 0;\n  }\n\n  .next::before {\n    transform: rotate(45deg);\n  }\n\n  .indicators {\n    display: flex;\n    gap: 12px;\n    margin-top: 18px;\n    padding-left: 2px;\n    flex-wrap: wrap;\n  }\n\n  .indicator {\n    width: 40px;\n    height: 4px;\n    background: #dce4ec;\n    border-radius: 999px;\n    cursor: pointer;\n    border: 0;\n    padding: 0;\n    transition: background 0.25s ease, transform 0.25s ease;\n  }\n\n  .indicator.active {\n    background: var(--accent);\n    transform: scaleX(1.08);\n  }\n\n  .lightbox {\n    position: fixed;\n    inset: 0;\n    background: rgba(10, 10, 12, 0.86);\n    display: none;\n    align-items: center;\n    justify-content: center;\n    z-index: 9999;\n    padding: 40px 90px;\n  }\n\n  .lightbox.open {\n    display: flex;\n  }\n\n  .lightbox-img {\n    max-width: min(1180px, 90vw);\n    max-height: 86vh;\n    width: auto;\n    height: auto;\n    object-fit: contain;\n    border-radius: 14px;\n    box-shadow: 0 18px 50px rgba(0,0,0,0.35);\n    background: #111;\n  }\n\n  .lightbox-close,\n  .lightbox-prev,\n  .lightbox-next {\n    position: absolute;\n    border: none;\n    background: transparent;\n    color: #fff;\n    cursor: pointer;\n    z-index: 10000;\n  }\n\n  .lightbox-close {\n    top: 16px;\n    right: 22px;\n    font-size: 38px;\n    line-height: 1;\n  }\n\n  .lightbox-prev,\n  .lightbox-next {\n    top: 50%;\n    transform: translateY(-50%);\n    width: 56px;\n    height: 56px;\n  }\n\n  .lightbox-prev {\n    left: 20px;\n  }\n\n  .lightbox-next {\n    right: 20px;\n  }\n\n  .lightbox-prev::before,\n  .lightbox-next::before {\n    content: \"\";\n    display: block;\n    width: 22px;\n    height: 22px;\n    border-top: 3px solid var(--accent);\n    border-right: 3px solid var(--accent);\n    margin: auto;\n  }\n\n  .lightbox-prev::before {\n    transform: rotate(-135deg);\n  }\n\n  .lightbox-next::before {\n    transform: rotate(45deg);\n  }\n\n  .lightbox-counter {\n    position: absolute;\n    top: 18px;\n    left: 22px;\n    color: #fff;\n    font-size: 15px;\n  }\n\n  @media (max-width: 980px) {\n    .gallery-section {\n      padding: 28px 20px 40px;\n    }\n\n    .gallery-shell {\n      padding: 20px 18px 18px;\n      border-radius: 22px;\n    }\n\n    .carousel {\n      padding: 0 38px;\n    }\n\n    .track {\n      gap: 16px;\n    }\n\n    .slide {\n      flex: 0 0 calc((100% - 16px) \/ 2);\n    }\n\n    .slide img {\n      height: 280px;\n    }\n  }\n\n  @media (max-width: 640px) {\n    .gallery-head {\n      display: block;\n    }\n\n    .carousel {\n      padding: 0 30px;\n    }\n\n    .track {\n      gap: 14px;\n    }\n\n    .slide {\n      flex: 0 0 100%;\n    }\n\n    .slide img {\n      height: auto;\n      aspect-ratio: 4 \/ 3;\n    }\n\n    .indicator {\n      width: 30px;\n    }\n\n    .lightbox {\n      padding: 20px 56px;\n    }\n\n    .lightbox-prev {\n      left: 8px;\n    }\n\n    .lightbox-next {\n      right: 8px;\n    }\n\n    .lightbox-close {\n      top: 10px;\n      right: 14px;\n    }\n  }\n<\/style>\n\n<section class=\"gallery-section\">\n  <div class=\"gallery-shell\">\n\n    <div class=\"gallery-head\">\n      <div>\n        <h2>Gda\u0144sk Tech Research Seminar<\/h2>\n      <\/div>\n    <\/div>\n\n    <div class=\"carousel\">\n\n      <button class=\"nav prev\" aria-label=\"El\u0151z\u0151 k\u00e9p\"><\/button>\n\n      <div class=\"carousel-viewport\">\n        <div class=\"track\" id=\"track\">\n\n          <div class=\"slide\" data-full=\"https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/10\/gdansk1.jpeg\">\n            <img decoding=\"async\" src=\"https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/10\/gdansk1.jpeg\" alt=\"Gda\u0144sk Tech Research Seminar 1\">\n          <\/div>\n\n          <div class=\"slide\" data-full=\"https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/10\/gdansk2.jpg\">\n            <img decoding=\"async\" src=\"https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/10\/gdansk2.jpg\" alt=\"Gda\u0144sk Tech Research Seminar 2\">\n          <\/div>\n\n          <div class=\"slide\" data-full=\"https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/10\/gdansk3-scaled.jpg\">\n            <img decoding=\"async\" src=\"https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/10\/gdansk3-scaled.jpg\" alt=\"Gda\u0144sk Tech Research Seminar 3\">\n          <\/div>\n\n          <div class=\"slide\" data-full=\"https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/10\/gdansk4-scaled.jpg\">\n            <img decoding=\"async\" src=\"https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/10\/gdansk4-scaled.jpg\" alt=\"Gda\u0144sk Tech Research Seminar 4\">\n          <\/div>\n\n          <div class=\"slide\" data-full=\"https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/10\/gdansk5.png\">\n            <img decoding=\"async\" src=\"https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/10\/gdansk5.png\" alt=\"Gda\u0144sk Tech Research Seminar 5\">\n          <\/div>\n\n        <\/div>\n      <\/div>\n\n      <button class=\"nav next\" aria-label=\"K\u00f6vetkez\u0151 k\u00e9p\"><\/button>\n\n      <div class=\"indicators\" id=\"indicators\"><\/div>\n\n    <\/div>\n  <\/div>\n<\/section>\n\n<div class=\"lightbox\" id=\"lightbox\" aria-hidden=\"true\">\n  <button class=\"lightbox-close\" aria-label=\"Bez\u00e1r\u00e1s\">\u00d7<\/button>\n  <button class=\"lightbox-prev\" aria-label=\"El\u0151z\u0151 nagy k\u00e9p\"><\/button>\n  <img decoding=\"async\" class=\"lightbox-img\" id=\"lightboxImg\" src=\"\" alt=\"\">\n  <button class=\"lightbox-next\" aria-label=\"K\u00f6vetkez\u0151 nagy k\u00e9p\"><\/button>\n  <div class=\"lightbox-counter\" id=\"lightboxCounter\"><\/div>\n<\/div>\n\n<script>\n  const track = document.getElementById('track');\n  const originalSlides = [...track.querySelectorAll('.slide')];\n  const prevBtn = document.querySelector('.prev');\n  const nextBtn = document.querySelector('.next');\n  const indicators = document.getElementById('indicators');\n\n  const lightbox = document.getElementById('lightbox');\n  const lightboxImg = document.getElementById('lightboxImg');\n  const lightboxCounter = document.getElementById('lightboxCounter');\n  const lightboxClose = document.querySelector('.lightbox-close');\n  const lightboxPrev = document.querySelector('.lightbox-prev');\n  const lightboxNext = document.querySelector('.lightbox-next');\n\n  let visibleIndex = 0;\n  let lightboxIndex = 0;\n  let currentIndex = 1;\n  let isTransitioning = false;\n\n  const firstClone = originalSlides[0].cloneNode(true);\n  const lastClone = originalSlides[originalSlides.length - 1].cloneNode(true);\n\n  firstClone.classList.add('clone');\n  lastClone.classList.add('clone');\n\n  track.prepend(lastClone);\n  track.append(firstClone);\n\n  function allSlides() {\n    return [...track.querySelectorAll('.slide')];\n  }\n\n  function getGap() {\n    return parseFloat(getComputedStyle(track).gap) || 0;\n  }\n\n  function moveTo(index, animated = true) {\n    const slides = allSlides();\n    const slideWidth = slides[0].getBoundingClientRect().width;\n    const offset = index * (slideWidth + getGap());\n\n    track.style.transition = animated\n      ? 'transform 0.45s ease'\n      : 'none';\n\n    track.style.transform = `translateX(-${offset}px)`;\n    currentIndex = index;\n  }\n\n  function updateIndicators() {\n    indicators.innerHTML = '';\n\n    for (let i = 0; i < originalSlides.length; i++) {\n      const item = document.createElement('button');\n\n      item.type = 'button';\n      item.className = 'indicator' + (i === visibleIndex ? ' active' : '');\n\n      item.setAttribute(\n        'aria-label',\n        `Ugr\u00e1s a(z) ${i + 1}. k\u00e9pre`\n      );\n\n      item.addEventListener('click', () => {\n        if (isTransitioning) return;\n\n        isTransitioning = true;\n        visibleIndex = i;\n\n        moveTo(i + 1, true);\n        syncIndicators();\n      });\n\n      indicators.appendChild(item);\n    }\n  }\n\n  function syncIndicators() {\n    [...indicators.children].forEach((dot, i) => {\n      dot.classList.toggle('active', i === visibleIndex);\n    });\n  }\n\n  function nextSlide() {\n    if (isTransitioning) return;\n\n    isTransitioning = true;\n\n    visibleIndex =\n      (visibleIndex + 1) % originalSlides.length;\n\n    moveTo(currentIndex + 1, true);\n    syncIndicators();\n  }\n\n  function prevSlide() {\n    if (isTransitioning) return;\n\n    isTransitioning = true;\n\n    visibleIndex =\n      (visibleIndex - 1 + originalSlides.length) %\n      originalSlides.length;\n\n    moveTo(currentIndex - 1, true);\n    syncIndicators();\n  }\n\n  track.addEventListener('transitionend', () => {\n    const slides = allSlides();\n\n    if (slides[currentIndex] === firstClone) {\n      moveTo(1, false);\n    }\n\n    if (slides[currentIndex] === lastClone) {\n      moveTo(originalSlides.length, false);\n    }\n\n    isTransitioning = false;\n  });\n\n  prevBtn.addEventListener('click', prevSlide);\n  nextBtn.addEventListener('click', nextSlide);\n\n  function openLightbox(i) {\n    lightboxIndex = i;\n\n    const currentImg =\n      originalSlides[lightboxIndex].querySelector('img');\n\n    lightboxImg.src =\n      originalSlides[lightboxIndex].dataset.full;\n\n    lightboxImg.alt = currentImg.alt;\n\n    lightboxCounter.textContent =\n      `${lightboxIndex + 1} \/ ${originalSlides.length}`;\n\n    lightbox.classList.add('open');\n    lightbox.setAttribute('aria-hidden', 'false');\n\n    document.body.style.overflow = 'hidden';\n  }\n\n  function closeLightbox() {\n    lightbox.classList.remove('open');\n    lightbox.setAttribute('aria-hidden', 'true');\n\n    document.body.style.overflow = '';\n  }\n\n  function showPrevLightboxImage() {\n    lightboxIndex =\n      (lightboxIndex - 1 + originalSlides.length) %\n      originalSlides.length;\n\n    openLightbox(lightboxIndex);\n  }\n\n  function showNextLightboxImage() {\n    lightboxIndex =\n      (lightboxIndex + 1) % originalSlides.length;\n\n    openLightbox(lightboxIndex);\n  }\n\n  originalSlides.forEach((slide, i) => {\n    slide.addEventListener('click', () => openLightbox(i));\n  });\n\n  lightboxClose.addEventListener('click', closeLightbox);\n  lightboxPrev.addEventListener('click', showPrevLightboxImage);\n  lightboxNext.addEventListener('click', showNextLightboxImage);\n\n  lightbox.addEventListener('click', (e) => {\n    if (e.target === lightbox) {\n      closeLightbox();\n    }\n  });\n\n  document.addEventListener('keydown', (e) => {\n\n    if (lightbox.classList.contains('open')) {\n\n      if (e.key === 'Escape') {\n        closeLightbox();\n      }\n\n      if (e.key === 'ArrowLeft') {\n        showPrevLightboxImage();\n      }\n\n      if (e.key === 'ArrowRight') {\n        showNextLightboxImage();\n      }\n\n    } else {\n\n      if (e.key === 'ArrowLeft') {\n        prevSlide();\n      }\n\n      if (e.key === 'ArrowRight') {\n        nextSlide();\n      }\n\n    }\n  });\n\n  window.addEventListener('resize', () => {\n    moveTo(currentIndex, false);\n  });\n\n  updateIndicators();\n  moveTo(1, false);\n  syncIndicators();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Members of the Polish team of the GreenQual project participated in the international research seminar \u201cUrban Environment, Health and Quality of Life: Interdisciplinary Research and Collaboration\u201d, hosted on October 6, 2026 by the Faculty of Architecture at Gda\u0144sk University of Technology (Poland).\u00a0\u00a0 The event brought together researchers, spatial planners, and municipal experts to discuss critical [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1009","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/greenqual.eu\/index.php?rest_route=\/wp\/v2\/pages\/1009","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/greenqual.eu\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/greenqual.eu\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/greenqual.eu\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/greenqual.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1009"}],"version-history":[{"count":1,"href":"https:\/\/greenqual.eu\/index.php?rest_route=\/wp\/v2\/pages\/1009\/revisions"}],"predecessor-version":[{"id":1018,"href":"https:\/\/greenqual.eu\/index.php?rest_route=\/wp\/v2\/pages\/1009\/revisions\/1018"}],"wp:attachment":[{"href":"https:\/\/greenqual.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1009"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}