{"id":1693,"date":"2026-05-16T16:54:08","date_gmt":"2026-05-16T13:54:08","guid":{"rendered":"https:\/\/paivitys.rauhanyhdistys.fi\/jyvaskyla\/?p=1693"},"modified":"2026-09-20T18:15:56","modified_gmt":"2026-09-20T15:15:56","slug":"jyva-tiedotuslehti-1-2026","status":"publish","type":"post","link":"https:\/\/paivitys.rauhanyhdistys.fi\/jyvaskyla\/2026\/05\/16\/jyva-tiedotuslehti-1-2026\/","title":{"rendered":"Jyv\u00e4 tiedotuslehti 1\/2026"},"content":{"rendered":"<p>Jyv\u00e4 tiedotuslehti 1\/2026 l\u00f6ytyy pdf-tiedostona <a href=\"https:\/\/paivitys.rauhanyhdistys.fi\/jyvaskyla\/wp-content\/uploads\/sites\/85\/2026\/05\/Tiedotuslehti-kevat-2026.pdf\" target=\"_blank\" rel=\"noopener\">t\u00e4m\u00e4n linkin takaa.<\/a><\/p>\n<style id=\"tiedotuslehti-css\">\n.tl-wrapper{position:relative;display:flex;flex-direction:column;box-sizing:border-box;width:100%;height:85vh;min-height:420px;margin:30px 0;background:#1a1a1a;border-radius:10px;box-shadow:0 10px 30px rgba(0,0,0,.5);overflow:hidden;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;-webkit-tap-highlight-color:transparent}\n.tl-wrapper *,.tl-wrapper *::before,.tl-wrapper *::after{box-sizing:border-box}\n.tl-wrapper:focus{outline:none}\n.tl-wrapper:focus-visible{outline:2px solid #fff;outline-offset:-2px}\n\n\/* Koko n\u00e4ytt\u00f6 *\/\n.tl-wrapper:fullscreen{width:100vw;height:100vh;min-height:0;margin:0;border-radius:0;background:#111}\n.tl-wrapper:-webkit-full-screen{width:100vw;height:100vh;min-height:0;margin:0;border-radius:0;background:#111}\n.tl-wrapper:-moz-full-screen{width:100vw;height:100vh;min-height:0;margin:0;border-radius:0;background:#111}\n.tl-wrapper:-ms-fullscreen{width:100vw;height:100vh;min-height:0;margin:0;border-radius:0;background:#111}\n.tl-wrapper.tl-faux-fullscreen{position:fixed;top:0;left:0;right:0;bottom:0;width:100%;height:100%;min-height:0;margin:0;border-radius:0;background:#111;z-index:2147483000}\nhtml.tl-no-scroll,html.tl-no-scroll body{overflow:hidden!important}\n\n\/* Yl\u00e4palkki *\/\n.tl-ui-top{position:relative;z-index:10;flex:0 0 auto;display:flex;justify-content:space-between;align-items:center;gap:10px;padding:14px 18px 6px;visibility:hidden}\n.tl-wrapper.tl-ready .tl-ui-top{visibility:visible}\n.tl-zoom-group{display:inline-flex;align-items:center;gap:2px;padding:3px;border-radius:30px;background:rgba(255,255,255,.12);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}\n.tl-zoom-group button{display:inline-flex;align-items:center;justify-content:center;height:32px;margin:0;padding:0;border:0;border-radius:30px;background:transparent;color:#fff;font-family:inherit;font-size:16px;font-weight:600;line-height:1;cursor:pointer;transition:background .2s ease}\n.tl-zoom-group button:hover:not([disabled]){background:rgba(255,255,255,.22)}\n.tl-zoom-group button[disabled]{opacity:.35;cursor:default}\n.tl-zoom-btn{width:32px}\n.tl-zoom-level{min-width:58px;padding:0 8px!important;font-size:12px!important;letter-spacing:.5px}\n.tl-btn-fullscreen{display:inline-flex;align-items:center;gap:8px;margin:0;padding:9px 18px;border:0;border-radius:30px;background:#fff;color:#333;font-family:inherit;font-size:13px;font-weight:600;line-height:1;letter-spacing:.5px;text-transform:uppercase;cursor:pointer;box-shadow:0 4px 12px rgba(0,0,0,.3);transition:background .2s ease,transform .2s ease}\n.tl-btn-fullscreen:hover{background:#f0f0f0;transform:translateY(-1px)}\n\n\/* Lehtialue *\/\n.tl-stage{position:relative;flex:1 1 auto;min-height:0;display:flex;align-items:center;justify-content:center;padding:8px 10px;overflow:hidden;touch-action:pan-y}\n.tl-wrapper.tl-zoomed .tl-stage{touch-action:none}\n.tl-book{position:relative;margin:0 auto;opacity:0;transform-origin:50% 50%;transition:opacity .35s ease}\n.tl-wrapper.tl-ready .tl-book{opacity:1}\n.tl-book-inner{position:relative;margin:0 auto}\n.tl-book .stf__wrapper{height:100%}\n.tl-wrapper.tl-zoomed .tl-book{cursor:grab}\n.tl-wrapper.tl-grabbing .tl-book{cursor:grabbing}\n\/* HUOM: .tl-page ei saa asettaa position-arvoa. page-flip asemoi sivut\n   luokalla .stf__item (position:absolute), ja sama pistem\u00e4\u00e4r\u00e4 + my\u00f6hempi\n   sijainti tyylitiedostossa ohittaisi sen -> sivut j\u00e4isiv\u00e4t normaaliin\n   tekstivirtaan ja k\u00e4\u00e4nt\u00f6 menisi rikki. Sivut ovat jo absoluuttisia, joten\n   ::after-varjo asemoituu niiden suhteen ilman erillist\u00e4 s\u00e4\u00e4nt\u00f6\u00e4. *\/\n.tl-page{background:#fff;overflow:hidden}\n.tl-page canvas{display:block;width:100%;height:100%;max-width:none;object-fit:contain}\n\/* Taitteen varjo on kiinni sivussa, joten se k\u00e4\u00e4ntyy sivun mukana. *\/\n.tl-page.tl-left::after,.tl-page.tl-right::after{content:\"\";position:absolute;top:0;bottom:0;width:6%;max-width:46px;pointer-events:none;z-index:2}\n.tl-page.tl-left::after{right:0;background:linear-gradient(to left,rgba(0,0,0,.11),rgba(0,0,0,.035) 45%,rgba(0,0,0,0))}\n.tl-page.tl-right::after{left:0;background:linear-gradient(to right,rgba(0,0,0,.11),rgba(0,0,0,.035) 45%,rgba(0,0,0,0))}\n.tl-loading{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:20;padding:0 20px;color:#fff;font-size:16px;font-weight:300;letter-spacing:1px;text-align:center}\n\n\/* Nuolet *\/\n.tl-nav-arrow{position:static;z-index:15;display:flex;align-items:center;justify-content:center;flex:0 0 auto;width:44px;height:44px;margin:0;padding:0;border:0;border-radius:50%;background:rgba(255,255,255,.12);color:#fff;font-size:20px;line-height:1;cursor:pointer;visibility:hidden;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);transition:background .2s ease,opacity .2s ease}\n.tl-wrapper.tl-ready .tl-nav-arrow{visibility:visible}\n.tl-nav-arrow:hover{background:rgba(255,255,255,.3)}\n.tl-nav-arrow[disabled]{opacity:.2;cursor:default;background:rgba(255,255,255,.12)}\n.tl-wrapper.tl-arrows-side .tl-nav-arrow{position:absolute;top:50%;transform:translateY(-50%);width:48px;height:48px;font-size:22px}\n.tl-wrapper.tl-arrows-side .tl-nav-arrow.prev{left:12px}\n.tl-wrapper.tl-arrows-side .tl-nav-arrow.next{right:12px}\n\n\/* Alapalkki *\/\n.tl-ui-bottom{position:relative;z-index:10;flex:0 0 auto;display:flex;flex-direction:column;align-items:center;gap:10px;padding:8px 20px 18px;visibility:hidden}\n.tl-wrapper.tl-ready .tl-ui-bottom{visibility:visible}\n.tl-controls{display:flex;align-items:center;justify-content:center;gap:16px}\n.tl-page-counter{min-width:120px;padding:4px 12px;border-radius:15px;background:rgba(0,0,0,.45);color:#fff;font-size:13px;font-weight:500;letter-spacing:1px;text-align:center}\n.tl-slider-container{width:100%;max-width:420px;padding:0 10px}\n.tl-slider{-webkit-appearance:none;appearance:none;display:block;width:100%;height:6px;margin:0;border-radius:3px;background:rgba(255,255,255,.22);outline:none;cursor:pointer}\n.tl-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:18px;height:18px;border:0;border-radius:50%;background:#fff;cursor:pointer;box-shadow:0 0 8px rgba(0,0,0,.5)}\n.tl-slider::-moz-range-thumb{width:18px;height:18px;border:0;border-radius:50%;background:#fff;cursor:pointer}\n.tl-slider::-moz-range-track{height:6px;border-radius:3px;background:rgba(255,255,255,.22)}\n\n@media (max-width:700px){\n\t.tl-stage{padding:6px 6px}\n\t.tl-ui-top{padding:10px 12px 4px}\n\t.tl-ui-bottom{padding:6px 12px 14px;gap:8px}\n\t.tl-btn-fullscreen{padding:8px 14px;font-size:12px}\n}\n@media (prefers-reduced-motion:reduce){\n\t.tl-book,.tl-btn-fullscreen,.tl-nav-arrow{transition:none}\n}\n<\/style>\n\n<script id=\"tiedotuslehti-js\">\n(function () {\n\tif (window.TiedotusLehti) { return; }\n\n\tvar PDF_WORKER = 'https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/pdf.js\/2.16.105\/pdf.worker.min.js';\n\tvar TL = {};\n\twindow.TiedotusLehti = TL;\n\n\tfunction libsReady() {\n\t\treturn (typeof pdfjsLib !== 'undefined') && (typeof St !== 'undefined') && St.PageFlip;\n\t}\n\n\tfunction waitForLibs(cb, tries) {\n\t\ttries = tries || 0;\n\t\tif (libsReady()) { cb(); return; }\n\t\tif (tries > 200) { console.error('Tiedotuslehti: pdf.js tai page-flip ei latautunut.'); return; }\n\t\tsetTimeout(function () { waitForLibs(cb, tries + 1); }, 100);\n\t}\n\n\tTL.boot = function () {\n\t\tvar nodes = document.querySelectorAll('.tl-wrapper[data-pdf]');\n\t\tArray.prototype.forEach.call(nodes, function (el) {\n\t\t\tif (el.getAttribute('data-tl-init') === '1') { return; }\n\t\t\tel.setAttribute('data-tl-init', '1');\n\t\t\twaitForLibs(function () { init(el); });\n\t\t});\n\t};\n\n\tfunction init(wrapper) {\n\t\tvar url      = wrapper.getAttribute('data-pdf');\n\t\tvar stage    = wrapper.querySelector('.tl-stage');\n\t\tvar host     = wrapper.querySelector('.tl-book');\n\t\tvar loading  = wrapper.querySelector('.tl-loading');\n\t\tvar counter  = wrapper.querySelector('.tl-page-counter');\n\t\tvar controls = wrapper.querySelector('.tl-controls');\n\t\tvar slider   = wrapper.querySelector('.tl-slider');\n\t\tvar btnPrev  = wrapper.querySelector('.tl-nav-arrow.prev');\n\t\tvar btnNext  = wrapper.querySelector('.tl-nav-arrow.next');\n\t\tvar btnFs    = wrapper.querySelector('.tl-btn-fullscreen');\n\t\tvar fsLabel  = wrapper.querySelector('.tl-fs-label');\n\t\tvar btnZoomIn  = wrapper.querySelector('.tl-zoom-btn[data-zoom=\"in\"]');\n\t\tvar btnZoomOut = wrapper.querySelector('.tl-zoom-btn[data-zoom=\"out\"]');\n\t\tvar zoomLevel  = wrapper.querySelector('.tl-zoom-level');\n\n\t\tvar canvases      = [];\n\t\tvar numPages      = 0;\n\t\tvar ratio         = 1 \/ Math.SQRT2;   \/\/ A4 oletus, korvataan PDF:n mukaan\n\t\tvar flip          = null;\n\t\tvar currentIndex  = 0;\n\t\tvar isLandscape   = false;\n\t\tvar sliderDrag    = false;\n\t\tvar rebuildTimer  = null;\n\t\tvar rafId         = null;\n\t\tvar sizeKey       = '';\n\n\t\tvar MAX_ZOOM      = 4;\n\t\tvar zoom          = { scale: 1, tx: 0, ty: 0 };\n\t\tvar gesture       = null;   \/\/ {mode:'swipe'|'pan'|'pinch'|'dead', ...}\n\t\tvar mousePan      = null;\n\t\tvar lastTap       = 0;\n\t\tvar lastTapPos    = null;\n\t\tvar hovered       = false;\n\n\t\tpdfjsLib.GlobalWorkerOptions.workerSrc = PDF_WORKER;\n\n\t\t\/* ---------- PDF:n lataus ---------- *\/\n\n\t\tpdfjsLib.getDocument(url).promise.then(function (pdf) {\n\t\t\tnumPages = pdf.numPages;\n\t\t\tvar chain = Promise.resolve();\n\t\t\tfor (var i = 1; i <= numPages; i++) {\n\t\t\t\tchain = chain.then(renderer(pdf, i));\n\t\t\t}\n\t\t\treturn chain;\n\t\t}).then(function () {\n\t\t\tslider.min = 1;\n\t\t\tslider.max = numPages;\n\t\t\tslider.value = 1;\n\t\t\tloading.style.display = 'none';\n\t\t\twrapper.classList.add('tl-ready');\n\t\t\tbuild();\n\t\t\tbind();\n\t\t}).catch(function (err) {\n\t\t\tloading.textContent = 'Lehte\u00e4 ei voitu ladata. Tarkista PDF-osoite.';\n\t\t\tconsole.error('Tiedotuslehti \/ PDF.js:', err);\n\t\t});\n\n\t\tfunction renderer(pdf, num) {\n\t\t\treturn function () {\n\t\t\t\treturn pdf.getPage(num).then(function (page) {\n\t\t\t\t\tvar base = page.getViewport({ scale: 1 });\n\t\t\t\t\tif (num === 1) { ratio = base.width \/ base.height; }\n\t\t\t\t\tvar scale  = Math.min(3, Math.max(1, 1400 \/ base.width));\n\t\t\t\t\tvar vp     = page.getViewport({ scale: scale });\n\t\t\t\t\tvar canvas = document.createElement('canvas');\n\t\t\t\t\tcanvas.width  = Math.round(vp.width);\n\t\t\t\t\tcanvas.height = Math.round(vp.height);\n\t\t\t\t\treturn page.render({\n\t\t\t\t\t\tcanvasContext: canvas.getContext('2d'),\n\t\t\t\t\t\tviewport: vp\n\t\t\t\t\t}).promise.then(function () {\n\t\t\t\t\t\tcanvases.push(canvas);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t};\n\t\t}\n\n\t\t\/* ---------- Koon laskenta ja kirjan rakennus ---------- *\/\n\n\t\tfunction available() {\n\t\t\tvar cs = window.getComputedStyle(stage);\n\t\t\tvar w = stage.clientWidth  - (parseFloat(cs.paddingLeft) || 0) - (parseFloat(cs.paddingRight) || 0);\n\t\t\tvar h = stage.clientHeight - (parseFloat(cs.paddingTop) || 0)  - (parseFloat(cs.paddingBottom) || 0);\n\t\t\treturn { w: Math.max(120, w), h: Math.max(160, h) };\n\t\t}\n\n\t\t\/\/ Nuolet siirtyv\u00e4t lehden viereen vain jos sivujen viereen j\u00e4\u00e4 oikeasti\n\t\t\/\/ tyhj\u00e4\u00e4 tilaa. Muuten ne menev\u00e4t alapalkkiin, jolloin lehti saa koko leveyden.\n\t\tfunction setArrowMode(side, gutter) {\n\t\t\tif (side) {\n\t\t\t\twrapper.classList.add('tl-arrows-side');\n\t\t\t\tif (btnPrev.parentNode !== stage) {\n\t\t\t\t\tstage.appendChild(btnPrev);\n\t\t\t\t\tstage.appendChild(btnNext);\n\t\t\t\t}\n\t\t\t\tvar off = Math.max(6, Math.round(gutter \/ 2 - 24));\n\t\t\t\tbtnPrev.style.left  = off + 'px';\n\t\t\t\tbtnNext.style.right = off + 'px';\n\t\t\t} else {\n\t\t\t\twrapper.classList.remove('tl-arrows-side');\n\t\t\t\tbtnPrev.style.left  = '';\n\t\t\t\tbtnNext.style.right = '';\n\t\t\t\tif (btnPrev.parentNode !== controls) {\n\t\t\t\t\tcontrols.insertBefore(btnPrev, counter);\n\t\t\t\t\tcontrols.appendChild(btnNext);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction build(force) {\n\t\t\tif (!canvases.length) { return; }\n\n\t\t\t\/\/ Aukeama vain kun tilaa riitt\u00e4\u00e4.\n\t\t\tvar landscape = stage.clientWidth >= 700;\n\t\t\tresetZoom(false);\n\n\t\t\tvar a = available();\n\t\t\tvar pw = landscape ? Math.min(a.w \/ 2, a.h * ratio) : Math.min(a.w, a.h * ratio);\n\t\t\tvar ph = pw \/ ratio;\n\t\t\tpw = Math.floor(pw);\n\t\t\tph = Math.floor(ph);\n\t\t\tif (pw < 40 || ph < 40) { return; }\n\n\t\t\tvar bookWidth = (landscape ? pw * 2 : pw);\n\n\t\t\t\/\/ Nuolet lehden viereen vain jos sivujen viereen j\u00e4\u00e4 tilaa nuolelle\n\t\t\t\/\/ (48 px + v\u00e4ljyys), muuten alapalkkiin.\n\t\t\tvar gutter = (stage.clientWidth - bookWidth) \/ 2;\n\t\t\tsetArrowMode(gutter >= 64, gutter);\n\n\t\t\tvar key = pw + 'x' + ph + (landscape ? 'L' : 'P');\n\t\t\tif (!force && flip && key === sizeKey) { return; }\n\t\t\tsizeKey = key;\n\t\t\tisLandscape = landscape;\n\n\t\t\tif (flip) {\n\t\t\t\ttry { currentIndex = flip.getCurrentPageIndex(); } catch (e) {}\n\t\t\t\t\/\/ HUOM: PageFlip.destroy() poistaa sille annetun elementin DOM:sta,\n\t\t\t\t\/\/ siksi kirja rakennetaan aina kertak\u00e4ytt\u00f6iseen sis\u00e4elementtiin.\n\t\t\t\tif (typeof flip.destroy === 'function') { try { flip.destroy(); } catch (e) {} }\n\t\t\t\tflip = null;\n\t\t\t}\n\n\t\t\t\/\/ Varmistetaan, ettei is\u00e4nt\u00e4elementti ole irronnut DOM:sta.\n\t\t\tif (!host.parentNode) { stage.appendChild(host); }\n\t\t\twhile (host.firstChild) { host.removeChild(host.firstChild); }\n\n\t\t\thost.style.width  = bookWidth + 'px';\n\t\t\thost.style.height = ph + 'px';\n\n\t\t\tvar block = document.createElement('div');\n\t\t\tblock.className = 'tl-book-inner';\n\t\t\tblock.style.width  = bookWidth + 'px';\n\t\t\tblock.style.height = ph + 'px';\n\t\t\thost.appendChild(block);\n\n\t\t\tvar pages = [];\n\t\t\tfor (var i = 0; i < canvases.length; i++) {\n\t\t\t\tvar d = document.createElement('div');\n\t\t\t\td.className = 'tl-page';\n\t\t\t\t\/\/ Aukeaman\u00e4kym\u00e4ss\u00e4 sis\u00e4reunaan varjo: parillinen sivu on oikealla,\n\t\t\t\t\/\/ pariton vasemmalla (kansi mukana). Varjo k\u00e4\u00e4ntyy sivun mukana.\n\t\t\t\tif (landscape) { d.className += (i % 2 === 1) ? ' tl-left' : ' tl-right'; }\n\t\t\t\td.appendChild(canvases[i]);\n\t\t\t\tblock.appendChild(d);\n\t\t\t\tpages.push(d);\n\t\t\t}\n\n\t\t\tflip = new St.PageFlip(block, {\n\t\t\t\twidth: pw,\n\t\t\t\theight: ph,\n\t\t\t\tsize: 'fixed',\n\t\t\t\tminWidth: 100,\n\t\t\t\tmaxWidth: 3000,\n\t\t\t\tminHeight: 100,\n\t\t\t\tmaxHeight: 4000,\n\t\t\t\tshowCover: true,\n\t\t\t\tusePortrait: !landscape,\n\t\t\t\tuseMouseEvents: true,\n\t\t\t\tmobileScrollSupport: true,\n\t\t\t\tmaxShadowOpacity: 0.5,\n\t\t\t\tflippingTime: 700,\n\t\t\t\tswipeDistance: 30\n\t\t\t});\n\n\t\t\tflip.loadFromHTML(pages);\n\n\t\t\tif (currentIndex > 0) {\n\t\t\t\ttry { flip.turnToPage(Math.min(currentIndex, numPages - 1)); } catch (e) {}\n\t\t\t}\n\n\t\t\tflip.on('flip', syncUI);\n\t\t\tflip.on('changeOrientation', syncUI);\n\t\t\tsyncUI();\n\t\t}\n\n\t\tfunction scheduleRebuild(delay) {\n\t\t\tclearTimeout(rebuildTimer);\n\t\t\trebuildTimer = setTimeout(function () { build(); }, delay || 150);\n\t\t}\n\n\t\t\/* ---------- Pinch zoom ---------- *\/\n\n\t\tfunction applyZoom() {\n\t\t\thost.style.transform = 'translate3d(' + zoom.tx + 'px,' + zoom.ty + 'px,0) scale(' + zoom.scale + ')';\n\t\t\twrapper.classList.toggle('tl-zoomed', zoom.scale > 1.01);\n\t\t\tupdateZoomUI();\n\t\t}\n\n\t\tfunction updateZoomUI() {\n\t\t\tzoomLevel.textContent = Math.round(zoom.scale * 100) + ' %';\n\t\t\tbtnZoomIn.disabled  = zoom.scale >= MAX_ZOOM - 0.01;\n\t\t\tbtnZoomOut.disabled = zoom.scale <= 1.01;\n\t\t\tzoomLevel.disabled  = zoom.scale <= 1.01;\n\t\t}\n\n\t\tfunction stepZoom(factor) {\n\t\t\tvar r = stage.getBoundingClientRect();\n\t\t\tzoomTo(zoom.scale * factor, r.left + r.width \/ 2, r.top + r.height \/ 2, true);\n\t\t}\n\n\t\tfunction animateZoom() {\n\t\t\thost.style.transition = 'transform .2s ease, opacity .35s ease';\n\t\t\tsetTimeout(function () { host.style.transition = ''; }, 240);\n\t\t}\n\n\t\tfunction clampPan() {\n\t\t\tvar maxX = Math.max(0, (host.offsetWidth  * zoom.scale - stage.clientWidth)  \/ 2);\n\t\t\tvar maxY = Math.max(0, (host.offsetHeight * zoom.scale - stage.clientHeight) \/ 2);\n\t\t\tzoom.tx = Math.max(-maxX, Math.min(maxX, zoom.tx));\n\t\t\tzoom.ty = Math.max(-maxY, Math.min(maxY, zoom.ty));\n\t\t}\n\n\t\tfunction resetZoom(animate) {\n\t\t\tif (gesture && (gesture.mode === 'pinch' || gesture.mode === 'pan')) { gesture = { mode: 'dead' }; }\n\t\t\tif (zoom.scale === 1 && zoom.tx === 0 && zoom.ty === 0) {\n\t\t\t\twrapper.classList.remove('tl-zoomed');\n\t\t\t\tupdateZoomUI();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tzoom.scale = 1; zoom.tx = 0; zoom.ty = 0;\n\t\t\tif (animate) { animateZoom(); }\n\t\t\tapplyZoom();\n\t\t}\n\n\t\t\/\/ Muunnetun elementin keskipiste ilman siirtoa (ruutukoordinaatteina).\n\t\tfunction baseCenter() {\n\t\t\tvar r = host.getBoundingClientRect();\n\t\t\treturn { x: r.left + r.width \/ 2 - zoom.tx, y: r.top + r.height \/ 2 - zoom.ty };\n\t\t}\n\n\t\tfunction touchMid(t1, t2) {\n\t\t\treturn { x: (t1.clientX + t2.clientX) \/ 2, y: (t1.clientY + t2.clientY) \/ 2 };\n\t\t}\n\n\t\tfunction touchDist(t1, t2) {\n\t\t\tvar dx = t1.clientX - t2.clientX, dy = t1.clientY - t2.clientY;\n\t\t\treturn Math.sqrt(dx * dx + dy * dy) || 1;\n\t\t}\n\n\t\tfunction zoomTo(scale, screenX, screenY, animate) {\n\t\t\tscale = Math.max(1, Math.min(MAX_ZOOM, scale));\n\t\t\tvar c = baseCenter();\n\t\t\tvar p = { x: (screenX - c.x - zoom.tx) \/ zoom.scale, y: (screenY - c.y - zoom.ty) \/ zoom.scale };\n\t\t\tzoom.scale = scale;\n\t\t\tzoom.tx = screenX - c.x - scale * p.x;\n\t\t\tzoom.ty = screenY - c.y - scale * p.y;\n\t\t\tif (scale === 1) { zoom.tx = 0; zoom.ty = 0; }\n\t\t\tclampPan();\n\t\t\tif (animate) { animateZoom(); }\n\t\t\tapplyZoom();\n\t\t}\n\n\t\t\/* ---------- Kosketuseleet ----------\n\t\t * Lehtialueen kosketukset k\u00e4sitell\u00e4\u00e4n kokonaan t\u00e4\u00e4ll\u00e4, kaappausvaiheessa:\n\t\t * page-flip ei saa kosketustapahtumia lainkaan, joten sivunk\u00e4\u00e4nt\u00f6 ei voi\n\t\t * k\u00e4ynnisty\u00e4 kesken nipistyksen eik\u00e4 nipistys j\u00e4tt\u00e4\u00e4 k\u00e4\u00e4nt\u00f6\u00e4 puolitiehen.\n\t\t *   1 sormi, ei zoomia -> pyyhk\u00e4isy k\u00e4\u00e4nt\u00e4\u00e4 sivun (pystysuunta j\u00e4\u00e4 selaimen\n\t\t *     vieritykselle), kaksoisnapautus zoomaa\n\t\t *   1 sormi, zoomattu  -> panorointi\n\t\t *   2 sormea           -> nipistyszoom\n\t\t *\/\n\n\t\tfunction startPinch(t1, t2) {\n\t\t\tvar c = baseCenter();\n\t\t\tvar m = touchMid(t1, t2);\n\t\t\tgesture = {\n\t\t\t\tmode: 'pinch',\n\t\t\t\tdist: touchDist(t1, t2),\n\t\t\t\tscale: zoom.scale,\n\t\t\t\tcenter: c,\n\t\t\t\tpoint: { x: (m.x - c.x - zoom.tx) \/ zoom.scale, y: (m.y - c.y - zoom.ty) \/ zoom.scale }\n\t\t\t};\n\t\t}\n\n\t\tfunction onTouchStart(e) {\n\t\t\tif (e.target && e.target.closest && e.target.closest('button')) { return; }\n\n\t\t\te.stopPropagation();\n\n\t\t\tif (e.touches.length >= 2) {\n\t\t\t\t\/\/ Mahdollinen kesken oleva pyyhk\u00e4isy hyl\u00e4t\u00e4\u00e4n, ele on nipistys.\n\t\t\t\tstartPinch(e.touches[0], e.touches[1]);\n\t\t\t\tif (e.cancelable) { e.preventDefault(); }\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (gesture && gesture.mode === 'dead') { return; }\n\n\t\t\tvar t = e.touches[0];\n\t\t\tif (zoom.scale > 1.01) {\n\t\t\t\tgesture = { mode: 'pan', x: t.clientX, y: t.clientY, tx: zoom.tx, ty: zoom.ty };\n\t\t\t\tif (e.cancelable) { e.preventDefault(); }\n\t\t\t} else {\n\t\t\t\tgesture = { mode: 'swipe', x: t.clientX, y: t.clientY, dx: 0, dy: 0, time: Date.now() };\n\t\t\t}\n\t\t}\n\n\t\tfunction onTouchMove(e) {\n\t\t\tif (!gesture) { return; }\n\t\t\te.stopPropagation();\n\n\t\t\tif (gesture.mode === 'pinch') {\n\t\t\t\tif (e.touches.length < 2) { return; }\n\t\t\t\tvar t1 = e.touches[0], t2 = e.touches[1];\n\t\t\t\tvar m = touchMid(t1, t2);\n\t\t\t\tvar s = Math.max(1, Math.min(MAX_ZOOM, gesture.scale * (touchDist(t1, t2) \/ gesture.dist)));\n\t\t\t\tzoom.scale = s;\n\t\t\t\tzoom.tx = m.x - gesture.center.x - s * gesture.point.x;\n\t\t\t\tzoom.ty = m.y - gesture.center.y - s * gesture.point.y;\n\t\t\t\tclampPan();\n\t\t\t\tapplyZoom();\n\t\t\t\tif (e.cancelable) { e.preventDefault(); }\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (gesture.mode === 'pan') {\n\t\t\t\tif (e.touches.length !== 1) { return; }\n\t\t\t\tzoom.tx = gesture.tx + (e.touches[0].clientX - gesture.x);\n\t\t\t\tzoom.ty = gesture.ty + (e.touches[0].clientY - gesture.y);\n\t\t\t\tclampPan();\n\t\t\t\tapplyZoom();\n\t\t\t\tif (e.cancelable) { e.preventDefault(); }\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (gesture.mode === 'swipe' && e.touches.length === 1) {\n\t\t\t\tgesture.dx = e.touches[0].clientX - gesture.x;\n\t\t\t\tgesture.dy = e.touches[0].clientY - gesture.y;\n\t\t\t\t\/\/ Vaakaele kuuluu lehdelle, pystyele selaimen vieritykselle.\n\t\t\t\tif (Math.abs(gesture.dx) > 10 && Math.abs(gesture.dx) > Math.abs(gesture.dy) && e.cancelable) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction onTouchEnd(e) {\n\t\t\tif (!gesture) { return; }\n\t\t\te.stopPropagation();\n\n\t\t\tvar mode = gesture.mode;\n\n\t\t\tif (mode === 'pinch') {\n\t\t\t\tif (e.touches.length >= 2) { return; }\n\t\t\t\tif (zoom.scale < 1.08) { resetZoom(true); }\n\t\t\t\telse { clampPan(); applyZoom(); }\n\t\t\t\t\/\/ N\u00e4yt\u00f6lle j\u00e4\u00e4v\u00e4 sormi ei saa aloittaa uutta elett\u00e4.\n\t\t\t\tgesture = e.touches.length ? { mode: 'dead' } : null;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (mode === 'pan' || mode === 'dead') {\n\t\t\t\tif (!e.touches.length) { gesture = null; }\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t\/\/ Pyyhk\u00e4isy tai napautus\n\t\t\tif (e.touches.length) { gesture = { mode: 'dead' }; return; }\n\n\t\t\tvar dx = gesture.dx, dy = gesture.dy, dt = Date.now() - gesture.time;\n\t\t\tvar t  = e.changedTouches[0];\n\t\t\tgesture = null;\n\n\t\t\tvar absX = Math.abs(dx), absY = Math.abs(dy);\n\n\t\t\tif (absX >= 45 && absX > absY * 1.4 && dt < 900) {\n\t\t\t\tif (flip) { (dx < 0 ? flip.flipNext() : flip.flipPrev()); }\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (absX < 12 && absY < 12 && dt < 300) {\n\t\t\t\tvar now = Date.now();\n\t\t\t\tif (now - lastTap < 320 && lastTapPos &&\n\t\t\t\t\tMath.abs(t.clientX - lastTapPos.x) < 30 && Math.abs(t.clientY - lastTapPos.y) < 30) {\n\t\t\t\t\tif (zoom.scale > 1.01) { resetZoom(true); }\n\t\t\t\t\telse { zoomTo(2.4, t.clientX, t.clientY, true); }\n\t\t\t\t\tlastTap = 0;\n\t\t\t\t\tlastTapPos = null;\n\t\t\t\t\tif (e.cancelable) { e.preventDefault(); }\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlastTap = now;\n\t\t\t\tlastTapPos = { x: t.clientX, y: t.clientY };\n\t\t\t}\n\t\t}\n\n\t\t\/* ---------- Hiiri: rullazoom ja raahaus ---------- *\/\n\n\t\tfunction onWheel(e) {\n\t\t\tvar zoomKey = e.ctrlKey || e.metaKey;\n\t\t\t\/\/ Ilman Ctrl\/Cmd:i\u00e4 rulla vieritt\u00e4\u00e4 sivua normaalisti,\n\t\t\t\/\/ paitsi jos lehte\u00e4 on jo zoomattu -> silloin rulla zoomaa.\n\t\t\tif (!zoomKey && zoom.scale <= 1.01) { return; }\n\t\t\tif (e.cancelable) { e.preventDefault(); }\n\t\t\te.stopPropagation();\n\t\t\tvar step = e.deltaMode === 1 ? e.deltaY * 16 : e.deltaY;\n\t\t\tzoomTo(zoom.scale * Math.exp(-step * 0.0022), e.clientX, e.clientY, false);\n\t\t}\n\n\t\tfunction onMouseDown(e) {\n\t\t\tif (e.button !== 0 || zoom.scale <= 1.01) { return; }\n\t\t\tif (e.target && e.target.closest && e.target.closest('button')) { return; }\n\t\t\tmousePan = { x: e.clientX, y: e.clientY, tx: zoom.tx, ty: zoom.ty };\n\t\t\twrapper.classList.add('tl-grabbing');\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t}\n\n\t\tfunction onMouseMove(e) {\n\t\t\tif (!mousePan) { return; }\n\t\t\tzoom.tx = mousePan.tx + (e.clientX - mousePan.x);\n\t\t\tzoom.ty = mousePan.ty + (e.clientY - mousePan.y);\n\t\t\tclampPan();\n\t\t\tapplyZoom();\n\t\t\te.preventDefault();\n\t\t}\n\n\t\tfunction onMouseUp() {\n\t\t\tif (!mousePan) { return; }\n\t\t\tmousePan = null;\n\t\t\twrapper.classList.remove('tl-grabbing');\n\t\t}\n\n\t\tfunction isActiveInstance() {\n\t\t\tif (fsElement() === wrapper) { return true; }\n\t\t\tif (wrapper.classList.contains('tl-faux-fullscreen')) { return true; }\n\t\t\tif (hovered) { return true; }\n\t\t\tif (document.activeElement && wrapper.contains(document.activeElement)) { return true; }\n\t\t\tif (fsElement()) { return false; }\n\t\t\tvar r = wrapper.getBoundingClientRect();\n\t\t\tvar vh = window.innerHeight || document.documentElement.clientHeight;\n\t\t\tvar visible = Math.min(r.bottom, vh) - Math.max(r.top, 0);\n\t\t\treturn r.height > 0 && (visible \/ r.height) > 0.6;\n\t\t}\n\n\t\t\/* ---------- K\u00e4ytt\u00f6liittym\u00e4n tila ---------- *\/\n\n\t\tfunction landscapeNow() {\n\t\t\ttry { return flip.getOrientation() === 'landscape'; } catch (e) { return isLandscape; }\n\t\t}\n\n\t\tfunction setCounter(idx, land) {\n\t\t\tvar label = (land && idx > 0 && (idx + 1) < numPages)\n\t\t\t\t? (idx + 1) + '\\u2013' + (idx + 2)\n\t\t\t\t: String(idx + 1);\n\t\t\tcounter.textContent = 'Sivu ' + label + ' \/ ' + numPages;\n\t\t}\n\n\t\tfunction syncUI() {\n\t\t\tif (!flip) { return; }\n\t\t\tvar idx = 0;\n\t\t\ttry { idx = flip.getCurrentPageIndex(); } catch (e) {}\n\t\t\tcurrentIndex = idx;\n\t\t\tvar land = landscapeNow();\n\t\t\tsetCounter(idx, land);\n\t\t\tif (!sliderDrag) { slider.value = idx + 1; }\n\t\t\tbtnPrev.disabled = idx <= 0;\n\t\t\tbtnNext.disabled = idx + ((land && idx > 0) ? 2 : 1) >= numPages;\n\t\t}\n\n\t\t\/* ---------- Slider ---------- *\/\n\n\t\tfunction sliderTarget() {\n\t\t\tvar v = parseInt(slider.value, 10);\n\t\t\tif (isNaN(v)) { v = 1; }\n\t\t\treturn Math.max(0, Math.min(numPages - 1, v - 1));\n\t\t}\n\n\t\tfunction onSliderInput() {\n\t\t\tsliderDrag = true;\n\t\t\tresetZoom(false);\n\t\t\tsetCounter(sliderTarget(), landscapeNow());\n\t\t\tif (rafId) { return; }\n\t\t\trafId = window.requestAnimationFrame(function () {\n\t\t\t\trafId = null;\n\t\t\t\tif (flip) { try { flip.turnToPage(sliderTarget()); } catch (e) {} }\n\t\t\t});\n\t\t}\n\n\t\tfunction endSliderDrag() {\n\t\t\tif (!sliderDrag) { return; }\n\t\t\tsliderDrag = false;\n\t\t\tif (flip) { try { flip.turnToPage(sliderTarget()); } catch (e) {} }\n\t\t\tsyncUI();\n\t\t}\n\n\t\t\/* ---------- Koko n\u00e4ytt\u00f6 ---------- *\/\n\n\t\tfunction fsElement() {\n\t\t\treturn document.fullscreenElement || document.webkitFullscreenElement ||\n\t\t\t       document.mozFullScreenElement || document.msFullscreenElement || null;\n\t\t}\n\n\t\tfunction setFsLabel(on) {\n\t\t\tif (fsLabel) { fsLabel.textContent = on ? 'Sulje' : 'Koko n\u00e4ytt\u00f6'; }\n\t\t}\n\n\t\tfunction requestFs() {\n\t\t\tvar fn = wrapper.requestFullscreen || wrapper.webkitRequestFullscreen ||\n\t\t\t         wrapper.mozRequestFullScreen || wrapper.msRequestFullscreen;\n\t\t\tif (fn) { try { fn.call(wrapper); return true; } catch (e) {} }\n\t\t\treturn false;\n\t\t}\n\n\t\tfunction exitFs() {\n\t\t\tvar fn = document.exitFullscreen || document.webkitExitFullscreen ||\n\t\t\t         document.mozCancelFullScreen || document.msExitFullscreen;\n\t\t\tif (fn) { try { fn.call(document); } catch (e) {} }\n\t\t}\n\n\t\tfunction enterFaux() {\n\t\t\twrapper.classList.add('tl-faux-fullscreen');\n\t\t\tdocument.documentElement.classList.add('tl-no-scroll');\n\t\t\tsetFsLabel(true);\n\t\t\tscheduleRebuild(60);\n\t\t}\n\n\t\tfunction exitFaux() {\n\t\t\twrapper.classList.remove('tl-faux-fullscreen');\n\t\t\tdocument.documentElement.classList.remove('tl-no-scroll');\n\t\t\tsetFsLabel(false);\n\t\t\tscheduleRebuild(60);\n\t\t}\n\n\t\tfunction toggleFs() {\n\t\t\tif (wrapper.classList.contains('tl-faux-fullscreen')) { exitFaux(); return; }\n\t\t\tif (fsElement() === wrapper) { exitFs(); return; }\n\t\t\tif (!requestFs()) { enterFaux(); }\n\t\t\twrapper.focus();\n\t\t}\n\n\t\t\/* ---------- Tapahtumat ---------- *\/\n\n\t\tfunction bind() {\n\t\t\tbtnPrev.addEventListener('click', function () { resetZoom(false); if (flip) { flip.flipPrev(); } });\n\t\t\tbtnNext.addEventListener('click', function () { resetZoom(false); if (flip) { flip.flipNext(); } });\n\t\t\tbtnFs.addEventListener('click', toggleFs);\n\t\t\tbtnZoomIn.addEventListener('click', function () { stepZoom(1.4); });\n\t\t\tbtnZoomOut.addEventListener('click', function () { stepZoom(1 \/ 1.4); });\n\t\t\tzoomLevel.addEventListener('click', function () { resetZoom(true); });\n\t\t\tupdateZoomUI();\n\n\t\t\t\/\/ Pinch zoom ja raahaus. Kuunnellaan kaappausvaiheessa, jotta\n\t\t\t\/\/ page-flip ei aloita sivunk\u00e4\u00e4nt\u00f6\u00e4 kesken eleen.\n\t\t\tstage.addEventListener('touchstart', onTouchStart, { passive: false, capture: true });\n\t\t\tstage.addEventListener('touchmove', onTouchMove, { passive: false, capture: true });\n\t\t\tstage.addEventListener('touchend', onTouchEnd, { passive: false, capture: true });\n\t\t\tstage.addEventListener('touchcancel', onTouchEnd, { passive: false, capture: true });\n\n\t\t\tslider.addEventListener('input', onSliderInput);\n\t\t\tslider.addEventListener('change', endSliderDrag);\n\t\t\t['pointerdown', 'mousedown', 'touchstart', 'keydown'].forEach(function (ev) {\n\t\t\t\tslider.addEventListener(ev, function () { sliderDrag = true; });\n\t\t\t});\n\t\t\t['pointerup', 'mouseup', 'touchend', 'touchcancel'].forEach(function (ev) {\n\t\t\t\tdocument.addEventListener(ev, endSliderDrag);\n\t\t\t});\n\t\t\tslider.addEventListener('blur', endSliderDrag);\n\n\t\t\tstage.addEventListener('wheel', onWheel, { passive: false });\n\t\t\tstage.addEventListener('mousedown', onMouseDown, true);\n\t\t\tdocument.addEventListener('mousemove', onMouseMove);\n\t\t\tdocument.addEventListener('mouseup', onMouseUp);\n\n\t\t\twrapper.addEventListener('mouseenter', function () { hovered = true; });\n\t\t\twrapper.addEventListener('mouseleave', function () { hovered = false; });\n\n\t\t\t\/\/ Nuolin\u00e4pp\u00e4imet toimivat kun lehti on aktiivinen: hiiri sen p\u00e4\u00e4ll\u00e4,\n\t\t\t\/\/ kohdistus siin\u00e4, koko n\u00e4ytt\u00f6 -tila tai lehti n\u00e4kyviss\u00e4 ruudulla.\n\t\t\tdocument.addEventListener('keydown', function (e) {\n\t\t\t\tif (e.key !== 'ArrowLeft' && e.key !== 'ArrowRight' && e.key !== 'Escape') { return; }\n\n\t\t\t\tvar t = e.target;\n\t\t\t\tvar tag = (t && t.tagName) ? t.tagName.toLowerCase() : '';\n\t\t\t\tif (tag === 'input' || tag === 'textarea' || tag === 'select' || (t && t.isContentEditable)) { return; }\n\t\t\t\tif (!isActiveInstance()) { return; }\n\n\t\t\t\tif (e.key === 'ArrowLeft')  { e.preventDefault(); resetZoom(false); if (flip) { flip.flipPrev(); } }\n\t\t\t\tif (e.key === 'ArrowRight') { e.preventDefault(); resetZoom(false); if (flip) { flip.flipNext(); } }\n\t\t\t\tif (e.key === 'Escape') {\n\t\t\t\t\tif (zoom.scale > 1.01) { resetZoom(true); }\n\t\t\t\t\telse if (wrapper.classList.contains('tl-faux-fullscreen')) { exitFaux(); }\n\t\t\t\t}\n\t\t\t});\n\n\t\t\twindow.addEventListener('resize', function () { scheduleRebuild(180); });\n\t\t\twindow.addEventListener('orientationchange', function () { scheduleRebuild(350); });\n\n\t\t\tif (window.ResizeObserver) {\n\t\t\t\tnew ResizeObserver(function () { scheduleRebuild(150); }).observe(stage);\n\t\t\t}\n\n\t\t\t['fullscreenchange', 'webkitfullscreenchange', 'mozfullscreenchange', 'MSFullscreenChange'].forEach(function (ev) {\n\t\t\t\tdocument.addEventListener(ev, function () {\n\t\t\t\t\tsetFsLabel(fsElement() === wrapper);\n\t\t\t\t\tscheduleRebuild(80);\n\t\t\t\t\tsetTimeout(function () { build(); }, 400);\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t}\n\n\tif (document.readyState === 'loading') {\n\t\tdocument.addEventListener('DOMContentLoaded', TL.boot);\n\t} else {\n\t\tTL.boot();\n\t}\n})();\n<\/script>\n\t\t<div class=\"tl-wrapper\" data-pdf=\"https:\/\/paivitys.rauhanyhdistys.fi\/jyvaskyla\/wp-content\/uploads\/sites\/85\/2026\/05\/Tiedotuslehti-kevat-2026.pdf\" style=\"height:85vh\" tabindex=\"0\">\n\n\t\t<div class=\"tl-ui-top\">\n\t\t\t<div class=\"tl-zoom-group\">\n\t\t\t\t<button type=\"button\" class=\"tl-zoom-btn\" data-zoom=\"out\" aria-label=\"Loitonna\" title=\"Loitonna\">&minus;<\/button>\n\t\t\t\t<button type=\"button\" class=\"tl-zoom-level\" aria-label=\"Palauta 100 %\" title=\"Palauta 100 %\">100 %<\/button>\n\t\t\t\t<button type=\"button\" class=\"tl-zoom-btn\" data-zoom=\"in\" aria-label=\"L\u00e4henn\u00e4\" title=\"L\u00e4henn\u00e4\">+<\/button>\n\t\t\t<\/div>\n\t\t\t<button type=\"button\" class=\"tl-btn-fullscreen\">\n\t\t\t\t<svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M8 3H5a2 2 0 0 0-2 2v3m18 0V5a2 2 0 0 0-2-2h-3m0 18h3a2 2 0 0 0 2-2v-3M3 16v3a2 2 0 0 0 2 2h3\"><\/path><\/svg>\n\t\t\t\t<span class=\"tl-fs-label\">Koko n\u00e4ytt\u00f6<\/span>\n\t\t\t<\/button>\n\t\t<\/div>\n\n\t\t<div class=\"tl-stage\">\n\t\t\t<div class=\"tl-loading\">Ladataan lehte\u00e4\u2026<\/div>\n\t\t\t<div class=\"tl-book\"><\/div>\n\t\t<\/div>\n\n\t\t<div class=\"tl-ui-bottom\">\n\t\t\t<div class=\"tl-controls\">\n\t\t\t\t<button type=\"button\" class=\"tl-nav-arrow prev\" aria-label=\"Edellinen sivu\">&#10094;<\/button>\n\t\t\t\t<div class=\"tl-page-counter\">Sivu 1 \/ -<\/div>\n\t\t\t\t<button type=\"button\" class=\"tl-nav-arrow next\" aria-label=\"Seuraava sivu\">&#10095;<\/button>\n\t\t\t<\/div>\n\t\t\t<div class=\"tl-slider-container\">\n\t\t\t\t<input type=\"range\" min=\"1\" max=\"1\" value=\"1\" step=\"1\" class=\"tl-slider\" aria-label=\"Siirry sivulle\">\n\t\t\t<\/div>\n\t\t<\/div>\n\n\t<\/div>\n\t<script>window.TiedotusLehti && window.TiedotusLehti.boot();<\/script>\n\t\n","protected":false},"excerpt":{"rendered":"<p>Jyv\u00e4 tiedotuslehti 1\/2026 l\u00f6ytyy pdf-tiedostona t\u00e4m\u00e4n linkin takaa.<\/p>\n","protected":false},"author":118,"featured_media":1106,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,12],"tags":[],"class_list":["post-1693","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ajankohtaista","category-tiedotuslehti"],"_links":{"self":[{"href":"https:\/\/paivitys.rauhanyhdistys.fi\/jyvaskyla\/wp-json\/wp\/v2\/posts\/1693","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/paivitys.rauhanyhdistys.fi\/jyvaskyla\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/paivitys.rauhanyhdistys.fi\/jyvaskyla\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/paivitys.rauhanyhdistys.fi\/jyvaskyla\/wp-json\/wp\/v2\/users\/118"}],"replies":[{"embeddable":true,"href":"https:\/\/paivitys.rauhanyhdistys.fi\/jyvaskyla\/wp-json\/wp\/v2\/comments?post=1693"}],"version-history":[{"count":3,"href":"https:\/\/paivitys.rauhanyhdistys.fi\/jyvaskyla\/wp-json\/wp\/v2\/posts\/1693\/revisions"}],"predecessor-version":[{"id":1703,"href":"https:\/\/paivitys.rauhanyhdistys.fi\/jyvaskyla\/wp-json\/wp\/v2\/posts\/1693\/revisions\/1703"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/paivitys.rauhanyhdistys.fi\/jyvaskyla\/wp-json\/wp\/v2\/media\/1106"}],"wp:attachment":[{"href":"https:\/\/paivitys.rauhanyhdistys.fi\/jyvaskyla\/wp-json\/wp\/v2\/media?parent=1693"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/paivitys.rauhanyhdistys.fi\/jyvaskyla\/wp-json\/wp\/v2\/categories?post=1693"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/paivitys.rauhanyhdistys.fi\/jyvaskyla\/wp-json\/wp\/v2\/tags?post=1693"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}