{"id":877,"date":"2026-10-05T09:20:39","date_gmt":"2026-10-05T09:20:39","guid":{"rendered":"https:\/\/greenqual.eu\/?page_id=877"},"modified":"2026-10-15T07:20:05","modified_gmt":"2026-10-15T07:20:05","slug":"greenqual-meresi-kampany-oszakaban","status":"publish","type":"page","link":"https:\/\/greenqual.eu\/?page_id=877&lang=hu","title":{"rendered":"GreenQual m\u00e9r\u00e9s Oszak\u00e1ban"},"content":{"rendered":"\n<div class=\"wp-block-cover\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"768\" class=\"wp-block-cover__image-background wp-image-625 size-large\" alt=\"\" src=\"https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/04\/Osaka_MC_pic_1-1024x768.jpeg\" data-object-fit=\"cover\" srcset=\"https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/04\/Osaka_MC_pic_1-1024x768.jpeg 1024w, https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/04\/Osaka_MC_pic_1-300x225.jpeg 300w, https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/04\/Osaka_MC_pic_1-768x576.jpeg 768w, https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/04\/Osaka_MC_pic_1-1536x1152.jpeg 1536w, https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/04\/Osaka_MC_pic_1-2048x1536.jpeg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><span aria-hidden=\"true\" class=\"wp-block-cover__background has-background-dim\" style=\"background-color:#7e7e82\"><\/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\">Az \u00d3budai Egyetem csapata a GreenQual projekt keret\u00e9ben terepi m\u00e9r\u00e9si kamp\u00e1nyban vett r\u00e9szt Oszak\u00e1ban, szorosan kapcsol\u00f3dva a workshop szakmai programj\u00e1hoz. A m\u00e9r\u00e9si tev\u00e9kenys\u00e9g c\u00e9lja k\u00fcl\u00f6nb\u00f6z\u0151 v\u00e1rosi t\u00e9rtipol\u00f3gi\u00e1k mikroklimatikus jellemz\u0151inek \u00f6sszehasonl\u00edt\u00f3 elemz\u00e9se volt, k\u00fcl\u00f6n\u00f6s tekintettel a t\u00e9rhaszn\u00e1lat, a be\u00e9p\u00edt\u00e9si s\u0171r\u0171s\u00e9g \u00e9s a z\u00f6ld infrastrukt\u00fara hat\u00e1saira.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:20px\">A kamp\u00e1ny sor\u00e1n h\u00e1rom, egym\u00e1st\u00f3l elt\u00e9r\u0151 karakter\u0171 helysz\u00ednt vizsg\u00e1ltak: egy v\u00e1rosi teret, egy s\u0171r\u0171n be\u00e9p\u00edtett, keskeny utc\u00e1t \u00e9s egy nagyobb parkter\u00fcletet. A m\u00e9r\u00e9seket az els\u0151 napon a t\u00e9ren, a m\u00e1sodik napon pedig a keskeny utc\u00e1ban \u00e9s a parkban v\u00e9gezt\u00e9k. Minden helysz\u00ednen h\u00e1rom ism\u00e9telt m\u00e9r\u00e9si ciklust hajtottak v\u00e9gre, egyenk\u00e9nt 30 perces id\u0151tartamban, ami lehet\u0151v\u00e9 tette az adott k\u00f6rnyezet r\u00f6vid t\u00e1v\u00fa mikroklimatikus dinamik\u00e1j\u00e1nak pontosabb felt\u00e1r\u00e1s\u00e1t.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:20px\">Az \u00d3budai Egyetem r\u00e9sz\u00e9r\u0151l a terepi munk\u00e1ban Dr. habil. Sug\u00e1r Vikt\u00f3ria, Dr. F\u00e1cz\u00e1nyi Zsuzsanna, Dr. Kistelegdi Istv\u00e1n, Dr. Kerekes Attila, Dr. Ben\u00e1rd Aur\u00e9l, Kiss P\u00e9ter, N\u00e1n\u00e1si Marcell \u00e9s Kolman Martin vett r\u00e9szt kutat\u00f3k\u00e9nt \u00e9s oktat\u00f3k\u00e9nt. A munka szoros egy\u00fcttm\u0171k\u00f6d\u00e9sben zajlott az oszakai koll\u00e9g\u00e1kkal, akik nemcsak szakmai t\u00e1mogat\u00e1st ny\u00fajtottak, hanem jelent\u0151s seg\u00edts\u00e9get adtak a m\u00e9r\u0151eszk\u00f6z\u00f6k helysz\u00ednek k\u00f6z\u00f6tti sz\u00e1ll\u00edt\u00e1s\u00e1ban \u00e9s a helyi k\u00f6r\u00fclm\u00e9nyekhez val\u00f3 alkalmazkod\u00e1sban is. Ez az egy\u00fcttm\u0171k\u00f6d\u00e9s alapvet\u0151 fontoss\u00e1g\u00fa volt a hat\u00e9kony adatgy\u0171jt\u00e9s \u00e9s a m\u00e9r\u00e9si protokollok pontos v\u00e9grehajt\u00e1sa szempontj\u00e1b\u00f3l.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:20px\">A kamp\u00e1ny sor\u00e1n szerzett tapasztalatok hozz\u00e1j\u00e1rulnak a k\u00fcl\u00f6nb\u00f6z\u0151 v\u00e1rosi helyzetek \u00f6sszehasonl\u00edt\u00f3 elemz\u00e9s\u00e9hez, valamint a z\u00f6ldter\u00fcletek \u00e9s a t\u00e9ralak\u00edt\u00e1si megold\u00e1sok h\u0171t\u0151hat\u00e1s\u00e1nak pontosabb meg\u00e9rt\u00e9s\u00e9hez. A helysz\u00ednek k\u00f6z\u00f6tti k\u00fcl\u00f6nbs\u00e9gek m\u00e1r a terepi munka sor\u00e1n is egy\u00e9rtelm\u0171en \u00e9rz\u00e9kelhet\u0151k voltak, \u00e9s ezek k\u00e9s\u0151bb az adatok feldolgoz\u00e1s\u00e1val \u00e9s elemz\u00e9s\u00e9vel sz\u00e1mszer\u0171en is igazolhat\u00f3k.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:20px\">A kamp\u00e1ny jelent\u0151s\u00e9g\u00e9t tov\u00e1bb n\u00f6veli, hogy lehet\u0151s\u00e9get biztos\u00edt a m\u00e9r\u00e9si m\u00f3dszertanok nemzetk\u00f6zi k\u00f6rnyezetben, elt\u00e9r\u0151 klimatikus \u00e9s v\u00e1rosszerkezeti felt\u00e9telek mellett t\u00f6rt\u00e9n\u0151 valid\u00e1l\u00e1s\u00e1ra \u00e9s tov\u00e1bbfejleszt\u00e9s\u00e9re, ez\u00e1ltal er\u0151s\u00edtve a GreenQual projekt kutat\u00e1si eredm\u00e9nyeinek \u00e1ltal\u00e1nos\u00edthat\u00f3s\u00e1g\u00e1t \u00e9s gyakorlati alkalmazhat\u00f3s\u00e1g\u00e1t.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:20px\">A konzorcium vezet\u0151 kutat\u00f3i:<br>Dr. Sug\u00e1r Vikt\u00f3ria az \u00d3budai Egyetem r\u00e9sz\u00e9r\u0151l (eur\u00f3pai projektvezet\u0151), Prof. Michihiro Kita az Osaka University r\u00e9sz\u00e9r\u0151l (jap\u00e1n projektvezet\u0151), Dr. Hartmann B\u00e1lint \u00e9s Dr. Iv\u00e1ncsics Vera a F4STER r\u00e9sz\u00e9r\u0151l, valamint Dr. Barbara Czesak \u00e9s Dr. Renata R\u00f3\u017cycka-Czas a University of Agriculture in Krak\u00f3w r\u00e9sz\u00e9r\u0151l.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:20px\">A GreenQual projekt \u2013 \u201eA z\u00f6ld infrastrukt\u00fara szerep\u00e9nek vizsg\u00e1lata a kl\u00edmareziliencia er\u0151s\u00edt\u00e9s\u00e9ben, valamint a v\u00edz-, talaj- \u00e9s leveg\u0151min\u0151s\u00e9g jav\u00edt\u00e1s\u00e1ban s\u0171r\u0171 v\u00e1rosi k\u00f6rnyezetben\u201d \u2013 az European Interest Group (EIG) Concert-Japan programja \u00e9s a Nemzeti Kutat\u00e1si, Fejleszt\u00e9si \u00e9s Innov\u00e1ci\u00f3s Hivatal (NKFI) k\u00f6z\u00f6s finansz\u00edroz\u00e1s\u00e1ban val\u00f3sul meg, a 2024-1.2.2-ERA_NET-2024-00006 t\u00e1mogat\u00e1si szerz\u0151d\u00e9s keret\u00e9ben.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:20px\">Eredeti cikk:<br><a href=\"https:\/\/ybl.uni-obuda.hu\/en\/greenqual-measurement-campaign-in-osaka\/\">https:\/\/ybl.uni-obuda.hu\/en\/greenqual-measurement-campaign-in-osaka\/<\/a><\/p>\n\n\n\n<meta charset=\"UTF-8\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  <title>Osaka gal\u00e9ria<\/title>\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) \/ 2);\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\n\n  <section class=\"gallery-section\">\n    <div class=\"gallery-shell\">\n      <div class=\"gallery-head\">\n        <div>\n          <h2>GreenQual m\u00e9r\u00e9s Oszak\u00e1ban<\/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_MC_pic_1-1-1024x768.jpeg\">\n              <img decoding=\"async\" src=\"https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/04\/Osaka_MC_pic_1-1-1024x768.jpeg\" alt=\"Osaka measurement campaign 1\">\n            <\/div>\n            <div class=\"slide\" data-full=\"https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/04\/Osaka_MC_pic_2-768x1024.jpg\">\n              <img decoding=\"async\" src=\"https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/04\/Osaka_MC_pic_2-768x1024.jpg\" alt=\"Osaka measurement campaign 2\">\n            <\/div>\n            <div class=\"slide\" data-full=\"https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/04\/Osaka_MC_pic_3-768x1024.jpg\">\n              <img decoding=\"async\" src=\"https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/04\/Osaka_MC_pic_3-768x1024.jpg\" alt=\"Osaka measurement campaign 3\">\n            <\/div>\n            <div class=\"slide\" data-full=\"https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/04\/Osaka_MC_pic_4-768x1024.jpg\">\n              <img decoding=\"async\" src=\"https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/04\/Osaka_MC_pic_4-768x1024.jpg\" alt=\"Osaka measurement campaign 4\">\n            <\/div>\n            <div class=\"slide\" data-full=\"https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/04\/Osaka_MC_pic_5-768x1024.jpg\">\n              <img decoding=\"async\" src=\"https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/04\/Osaka_MC_pic_5-768x1024.jpg\" alt=\"Osaka measurement campaign 5\">\n            <\/div>\n            <div class=\"slide\" data-full=\"https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/04\/Osaka_MC_pic_6-1024x768.jpg\">\n              <img decoding=\"async\" src=\"https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/04\/Osaka_MC_pic_6-1024x768.jpg\" alt=\"Osaka measurement campaign 6\">\n            <\/div>\n            <div class=\"slide\" data-full=\"https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/04\/Osaka_MC_pic_7-1024x768.jpg\">\n              <img decoding=\"async\" src=\"https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/04\/Osaka_MC_pic_7-1024x768.jpg\" alt=\"Osaka measurement campaign 7\">\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\">\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 ? '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","protected":false},"excerpt":{"rendered":"<p>Az \u00d3budai Egyetem csapata a GreenQual projekt keret\u00e9ben terepi m\u00e9r\u00e9si kamp\u00e1nyban vett r\u00e9szt Oszak\u00e1ban, szorosan kapcsol\u00f3dva a workshop szakmai programj\u00e1hoz. A m\u00e9r\u00e9si tev\u00e9kenys\u00e9g c\u00e9lja k\u00fcl\u00f6nb\u00f6z\u0151 v\u00e1rosi t\u00e9rtipol\u00f3gi\u00e1k mikroklimatikus jellemz\u0151inek \u00f6sszehasonl\u00edt\u00f3 elemz\u00e9se volt, k\u00fcl\u00f6n\u00f6s tekintettel a t\u00e9rhaszn\u00e1lat, a be\u00e9p\u00edt\u00e9si s\u0171r\u0171s\u00e9g \u00e9s a z\u00f6ld infrastrukt\u00fara hat\u00e1saira. A kamp\u00e1ny sor\u00e1n h\u00e1rom, egym\u00e1st\u00f3l elt\u00e9r\u0151 karakter\u0171 helysz\u00ednt vizsg\u00e1ltak: egy v\u00e1rosi [&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-877","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/greenqual.eu\/index.php?rest_route=\/wp\/v2\/pages\/877","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=877"}],"version-history":[{"count":9,"href":"https:\/\/greenqual.eu\/index.php?rest_route=\/wp\/v2\/pages\/877\/revisions"}],"predecessor-version":[{"id":989,"href":"https:\/\/greenqual.eu\/index.php?rest_route=\/wp\/v2\/pages\/877\/revisions\/989"}],"wp:attachment":[{"href":"https:\/\/greenqual.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=877"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}