{"id":576,"date":"2026-04-28T09:17:43","date_gmt":"2026-04-28T09:17:43","guid":{"rendered":"https:\/\/greenqual.eu\/?p=576"},"modified":"2026-04-28T13:53:36","modified_gmt":"2026-04-28T13:53:36","slug":"greenqual-workshop-osaka","status":"publish","type":"post","link":"https:\/\/greenqual.eu\/?p=576","title":{"rendered":"GreenQual Workshop &#8211; Osaka"},"content":{"rendered":"\n<div class=\"wp-block-cover is-light\"><img loading=\"lazy\" decoding=\"async\" width=\"2560\" height=\"1920\" class=\"wp-block-cover__image-background wp-image-579 size-full\" alt=\"\" src=\"https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/04\/Osaka_WP_1-scaled.jpg\" data-object-fit=\"cover\" srcset=\"https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/04\/Osaka_WP_1-scaled.jpg 2560w, https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/04\/Osaka_WP_1-300x225.jpg 300w, https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/04\/Osaka_WP_1-1024x768.jpg 1024w, https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/04\/Osaka_WP_1-768x576.jpg 768w, https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/04\/Osaka_WP_1-1536x1152.jpg 1536w, https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/04\/Osaka_WP_1-2048x1536.jpg 2048w\" sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><span aria-hidden=\"true\" class=\"wp-block-cover__background has-background-dim\" style=\"background-color:#948f88\"><\/span><div class=\"wp-block-cover__inner-container is-layout-constrained wp-block-cover-is-layout-constrained\">\n<p class=\"wp-block-paragraph\"><\/p>\n<\/div><\/div>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:20px\">The primary objective of the workshop was to review the project\u2019s progress, coordinate ongoing research activities, and define the professional tasks for the upcoming period.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>Professional Programme and Contributions<br><\/strong><br>On the first day of the workshop, participating universities presented their research results and progress. The team of \u00d3buda University delivered an individual presentation outlining their key achievements, with particular emphasis on outputs supporting project integration as well as resilience and carbon neutrality objectives.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Following the presentations, an interactive workshop session was held, during which participants jointly mapped the relationships between work packages, identified key dependencies, and defined directions for further development.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">As part of the day\u2019s programme, a site visit in Osaka was also organized, where participants were introduced to the planned locations of the measurement campaign to be carried out in the following days. The site visit also provided insight into contemporary green infrastructure solutions and modern parks, with special attention to material use and design principles. Participants gained an understanding of how the private sector is involved in the development and maintenance of urban green spaces. A notable example is Umekita Park, where commercial units and shopping mall operators in the surrounding area actively contribute to the park\u2019s operation and maintenance.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">The second day focused on technical integration and the joint design process. Participants addressed in detail:<br>\u2022 the harmonization of data, indicators, and scales,<br>\u2022 the development of information flow and interconnections between work packages,<br>\u2022 and the methodology for the joint design of optimized urban green spaces.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>Results and Significance<br><\/strong><br>As a result of the workshop, the relationships between individual project components were clarified, and a joint action plan for the next phase was established. The collaborative work contributed to ensuring that project outcomes more effectively support the development of sustainable, resilient, and carbon-neutral urban environments.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>Partners<\/strong><\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">The project is implemented in cooperation with the following partners:<br>\u2022 \u00d3buda University<br>\u2022 University of Agriculture in Krakow<br>\u2022 Osaka University<br>\u2022 F4STER<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><em>Original article available at: <a href=\"https:\/\/ybl.uni-obuda.hu\/en\/eig-concert-japan-greenqual-2024-2027-2\/\">https:\/\/ybl.uni-obuda.hu\/en\/eig-concert-japan-greenqual-2024-2027-2\/<\/a><\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<!DOCTYPE html>\n<html lang=\"hu\">\n<head>\n  <meta charset=\"UTF-8\" \/>\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/>\n  <title>GreenQual gal\u00e9ria<\/title>\n  <style>\n    * {\n      box-sizing: border-box;\n    }\n\n    :root {\n      --accent: #95527c;\n      --accent-soft: #e9dbe3;\n      --text: #2a2a2a;\n      --muted: #d9dfe6;\n      --surface: #ffffff;\n      --surface-soft: #f7f7f8;\n      --shadow: 0 10px 28px rgba(28, 22, 26, 0.10);\n      --radius: 18px;\n    }\n\n    body {\n      margin: 0;\n      background: #ffffff;\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, #fff 0%, #faf8fa 100%);\n      border: 1px solid #eee6eb;\n      border-radius: 28px;\n      padding: 26px 28px 22px;\n      box-shadow: 0 16px 40px 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      border-radius: var(--radius);\n      overflow: hidden;\n      background: var(--surface);\n      box-shadow: var(--shadow);\n      cursor: pointer;\n      position: relative;\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      pointer-events: none;\n      opacity: 0;\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    }\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<\/head>\n<body>\n\n  <section class=\"gallery-section\">\n    <div class=\"gallery-shell\">\n      <div class=\"gallery-head\">\n        <div>\n          <h2>Osaka Workshop gallery<\/h2>\n        <\/div>\n      <\/div>\n\n      <div class=\"carousel\">\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            <div class=\"slide\" data-full=\"https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/04\/Osaka_WP_pic_2-1024x768.jpg\">\n              <img decoding=\"async\" src=\"https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/04\/Osaka_WP_pic_2-1024x768.jpg\" alt=\"Osaka k\u00e9p 1\">\n            <\/div>\n            <div class=\"slide\" data-full=\"https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/04\/Osaka_WP_pic_3-768x1024.jpeg\">\n              <img decoding=\"async\" src=\"https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/04\/Osaka_WP_pic_3-768x1024.jpeg\" alt=\"Osaka k\u00e9p 2\">\n            <\/div>\n            <div class=\"slide\" data-full=\"https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/04\/Osaka_WP_pic_4-1024x768.jpeg\">\n              <img decoding=\"async\" src=\"https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/04\/Osaka_WP_pic_4-1024x768.jpeg\" alt=\"Osaka k\u00e9p 3\">\n            <\/div>\n            <div class=\"slide\" data-full=\"https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/04\/Osaka_WP_pic_5-1024x768.jpeg\">\n              <img decoding=\"async\" src=\"https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/04\/Osaka_WP_pic_5-1024x768.jpeg\" alt=\"Osaka k\u00e9p 4\">\n            <\/div>\n            <div class=\"slide\" data-full=\"https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/04\/Osaka_WP_pic_6-1024x768.jpeg\">\n              <img decoding=\"async\" src=\"https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/04\/Osaka_WP_pic_6-1024x768.jpeg\" alt=\"Osaka k\u00e9p 5\">\n            <\/div>\n          <\/div>\n        <\/div>\n\n        <button class=\"nav next\" aria-label=\"K\u00f6vetkez\u0151 k\u00e9p\"><\/button>\n        <div class=\"indicators\" id=\"indicators\"><\/div>\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\">&times;<\/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 ? 'transform 0.45s ease' : 'none';\n      track.style.transform = `translateX(-${offset}px)`;\n      currentIndex = index;\n    }\n\n    function updateIndicators() {\n      indicators.innerHTML = '';\n      for (let i = 0; i < originalSlides.length; i++) {\n        const item = document.createElement('button');\n        item.type = 'button';\n        item.className = 'indicator' + (i === visibleIndex ? ' active' : '');\n        item.setAttribute('aria-label', `Ugr\u00e1s a(z) ${i + 1}. k\u00e9pre`);\n        item.addEventListener('click', () => {\n          if (isTransitioning) return;\n          isTransitioning = true;\n          visibleIndex = i;\n          moveTo(i + 1, true);\n          syncIndicators();\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      isTransitioning = true;\n      visibleIndex = (visibleIndex + 1) % originalSlides.length;\n      moveTo(currentIndex + 1, true);\n      syncIndicators();\n    }\n\n    function prevSlide() {\n      if (isTransitioning) return;\n      isTransitioning = true;\n      visibleIndex = (visibleIndex - 1 + originalSlides.length) % originalSlides.length;\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      const currentImg = originalSlides[lightboxIndex].querySelector('img');\n      lightboxImg.src = originalSlides[lightboxIndex].dataset.full;\n      lightboxImg.alt = currentImg.alt;\n      lightboxCounter.textContent = `${lightboxIndex + 1} \/ ${originalSlides.length}`;\n      lightbox.classList.add('open');\n      lightbox.setAttribute('aria-hidden', 'false');\n      document.body.style.overflow = 'hidden';\n    }\n\n    function closeLightbox() {\n      lightbox.classList.remove('open');\n      lightbox.setAttribute('aria-hidden', 'true');\n      document.body.style.overflow = '';\n    }\n\n    function showPrevLightboxImage() {\n      lightboxIndex = (lightboxIndex - 1 + originalSlides.length) % originalSlides.length;\n      openLightbox(lightboxIndex);\n    }\n\n    function showNextLightboxImage() {\n      lightboxIndex = (lightboxIndex + 1) % originalSlides.length;\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) closeLightbox();\n    });\n\n    document.addEventListener('keydown', (e) => {\n      if (lightbox.classList.contains('open')) {\n        if (e.key === 'Escape') closeLightbox();\n        if (e.key === 'ArrowLeft') showPrevLightboxImage();\n        if (e.key === 'ArrowRight') showNextLightboxImage();\n      } else {\n        if (e.key === 'ArrowLeft') prevSlide();\n        if (e.key === 'ArrowRight') nextSlide();\n      }\n    });\n\n    window.addEventListener('resize', () => {\n      moveTo(currentIndex, false);\n    });\n\n    updateIndicators();\n    moveTo(1, false);\n    syncIndicators();\n  <\/script>\n<\/body>\n<\/html>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The primary objective of the workshop was to review the project\u2019s progress, coordinate ongoing research activities, and define the professional tasks for the upcoming period. Professional Programme and ContributionsOn the first day of the workshop, participating universities presented their research results and progress. The team of \u00d3buda University delivered an individual presentation outlining their key [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[],"class_list":["post-576","post","type-post","status-publish","format-standard","hentry","category-kategoria-nelkuli-en"],"_links":{"self":[{"href":"https:\/\/greenqual.eu\/index.php?rest_route=\/wp\/v2\/posts\/576","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/greenqual.eu\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/greenqual.eu\/index.php?rest_route=\/wp\/v2\/types\/post"}],"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=576"}],"version-history":[{"count":15,"href":"https:\/\/greenqual.eu\/index.php?rest_route=\/wp\/v2\/posts\/576\/revisions"}],"predecessor-version":[{"id":675,"href":"https:\/\/greenqual.eu\/index.php?rest_route=\/wp\/v2\/posts\/576\/revisions\/675"}],"wp:attachment":[{"href":"https:\/\/greenqual.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=576"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/greenqual.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=576"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/greenqual.eu\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=576"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}