{"id":7156,"date":"2026-08-21T13:01:31","date_gmt":"2026-08-21T10:01:31","guid":{"rendered":"https:\/\/digiverkosto.fi\/?page_id=7156"},"modified":"2026-08-21T13:12:53","modified_gmt":"2026-08-21T10:12:53","slug":"pelit","status":"publish","type":"page","link":"https:\/\/digiverkosto.fi\/en\/pelit\/","title":{"rendered":"Pelit"},"content":{"rendered":"\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Reaktio peli<\/h2>\n\n\n\n<!DOCTYPE html>\n<html lang=\"fi\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Reaktiotesti | Digiverkosto<\/title>\n    <style>\n        :root {\n            --bg-color: #080e1a;\n            --panel-bg: rgba(15, 23, 42, 0.85);\n            --border-color: #1e293b;\n            --accent: #38bdf8;\n            --text-color: #f8fafc;\n            --muted: #94a3b8;\n            --red: #ef4444;\n            --green: #22c55e;\n        }\n\n        * {\n            box-sizing: border-box;\n            user-select: none;\n        }\n\n        body {\n            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n            background-color: var(--bg-color);\n            \/* Hieno taustaruudukko ja cyberpunk-vivahteinen tunnelma *\/\n            background-image: \n                linear-gradient(rgba(56, 189, 248, 0.03) 1px, transparent 1px),\n                linear-gradient(90deg, rgba(56, 189, 248, 0.03) 1px, transparent 1px);\n            background-size: 30px 30px;\n            color: var(--text-color);\n            display: flex;\n            flex-direction: column;\n            align-items: center;\n            justify-content: center;\n            min-height: 100vh;\n            margin: 0;\n            padding: 20px;\n        }\n\n        .game-wrapper {\n            width: 100%;\n            max-width: 480px;\n            background: var(--panel-bg);\n            border: 1px solid var(--border-color);\n            border-radius: 12px;\n            padding: 30px;\n            box-shadow: 0 20px 40px -15px rgba(0, 0, 0, 0.5);\n            backdrop-filter: blur(10px);\n            position: relative;\n            overflow: hidden;\n        }\n\n        \/* HUD-skannausviiva koristeena *\/\n        .game-wrapper::before {\n            content: '';\n            position: absolute;\n            top: 0;\n            left: 0;\n            width: 100%;\n            height: 2px;\n            background: linear-gradient(90deg, transparent, var(--accent), transparent);\n            animation: scan 4s linear infinite;\n        }\n\n        @keyframes scan {\n            0% { transform: translateX(-100%); }\n            100% { transform: translateX(100%); }\n        }\n\n        .header-area {\n            text-align: center;\n            margin-bottom: 25px;\n        }\n\n        h1 {\n            color: var(--accent);\n            margin: 0 0 8px 0;\n            font-size: 1.8rem;\n            letter-spacing: 1px;\n            text-transform: uppercase;\n        }\n\n        p.instructions {\n            color: var(--muted);\n            margin: 0;\n            font-size: 0.95rem;\n            line-height: 1.5;\n        }\n\n        \/* Testilaatikko *\/\n        #reaction-box {\n            width: 100%;\n            height: 220px;\n            background-color: #111827;\n            border: 2px solid #334155;\n            border-radius: 8px;\n            display: flex;\n            flex-direction: column;\n            align-items: center;\n            justify-content: center;\n            cursor: pointer;\n            transition: all 0.25s ease;\n            position: relative;\n            margin-bottom: 20px;\n        }\n\n        #status-text {\n            font-size: 1.4rem;\n            font-weight: 600;\n            margin-bottom: 10px;\n            text-align: center;\n            padding: 0 15px;\n        }\n\n        #time-display {\n            font-size: 2.8rem;\n            font-weight: 800;\n            color: var(--accent);\n            font-family: monospace;\n            letter-spacing: 2px;\n        }\n\n        \/* Painike *\/\n        #start-btn {\n            width: 100%;\n            background-color: #0284c7;\n            color: white;\n            border: none;\n            padding: 14px;\n            font-size: 1rem;\n            font-weight: bold;\n            border-radius: 8px;\n            cursor: pointer;\n            text-transform: uppercase;\n            letter-spacing: 1px;\n            transition: background-color 0.2s, transform 0.1s;\n            box-shadow: 0 4px 12px rgba(2, 132, 199, 0.3);\n        }\n\n        #start-btn:hover {\n            background-color: #0369a1;\n        }\n\n        #start-btn:active {\n            transform: scale(0.99);\n        }\n\n        \/* Pelitilat valoille *\/\n        .state-waiting {\n            background-color: #7f1d1d !important;\n            border-color: var(--red) !important;\n            box-shadow: inset 0 0 30px rgba(239, 68, 68, 0.4);\n        }\n\n        .state-ready {\n            background-color: #14532d !important;\n            border-color: var(--green) !important;\n            box-shadow: inset 0 0 30px rgba(34, 197, 94, 0.4);\n        }\n\n        .state-ready #time-display {\n            color: #ffffff;\n        }\n    <\/style>\n<\/head>\n<body>\n\n    <div class=\"game-wrapper\">\n        <div class=\"header-area\">\n            <h1>Digi-Reaktiotesti<\/h1>\n            <p class=\"instructions\">Paina aloita, odota vihre\u00e4\u00e4 valoa ja klikkaa laatikkoa tai n\u00e4ytt\u00f6\u00e4 mahdollisimman nopeasti!<\/p>\n        <\/div>\n\n        <div id=\"reaction-box\">\n            <div id=\"status-text\">Valmiina testiin?<\/div>\n            <div id=\"time-display\">0 ms<\/div>\n        <\/div>\n\n        <button id=\"start-btn\">Aloita testi<\/button>\n    <\/div>\n\n    <script>\n        const box = document.getElementById(\"reaction-box\");\n        const statusText = document.getElementById(\"status-text\");\n        const timeDisplay = document.getElementById(\"time-display\");\n        const startBtn = document.getElementById(\"start-btn\");\n\n        let timerTimeout = null;\n        let startTime = 0;\n        let timerInterval = null;\n        let gameState = \"idle\"; \/\/ \"idle\", \"waiting\", \"ready\", \"finished\"\n\n        startBtn.addEventListener(\"click\", (e) => {\n            e.stopPropagation();\n            startTest();\n        });\n\n        function startTest() {\n            clearTimeout(timerTimeout);\n            clearInterval(timerInterval);\n\n            gameState = \"waiting\";\n            box.className = \"state-waiting\";\n            statusText.textContent = \"Odota merkki\u00e4...\";\n            timeDisplay.textContent = \"0 ms\";\n            startBtn.style.display = \"none\";\n\n            const randomDelay = Math.floor(Math.random() * 3000) + 1500;\n\n            timerTimeout = setTimeout(() => {\n                gameState = \"ready\";\n                box.className = \"state-ready\";\n                statusText.textContent = \"PAINA NYT!\";\n                \n                startTime = Date.now();\n\n                timerInterval = setInterval(() => {\n                    const elapsedTime = Date.now() - startTime;\n                    timeDisplay.textContent = elapsedTime + \" ms\";\n                }, 10);\n\n            }, randomDelay);\n        }\n\n        box.addEventListener(\"pointerdown\", handleReaction);\n\n        function handleReaction() {\n            if (gameState === \"waiting\") {\n                clearTimeout(timerTimeout);\n                gameState = \"idle\";\n                box.className = \"\";\n                statusText.textContent = \"Liian h\u00e4t\u00e4inen!\";\n                timeDisplay.textContent = \"---\";\n                startBtn.style.display = \"block\";\n                startBtn.textContent = \"Yrit\u00e4 uudelleen\";\n            } \n            else if (gameState === \"ready\") {\n                const finalTime = Date.now() - startTime;\n                clearInterval(timerInterval);\n                \n                gameState = \"finished\";\n                box.className = \"\";\n                \n                statusText.textContent = \"Reaktioaikasi:\";\n                timeDisplay.textContent = finalTime + \" ms\";\n                \n                startBtn.style.display = \"block\";\n                startBtn.textContent = \"Testaa uudelleen\";\n            }\n        }\n    <\/script>\n<\/body>\n<\/html>\n\n\n\n<p class=\"wp-block-paragraph\">Numero generointi<\/p>\n\n\n\n<!DOCTYPE html>\n<html lang=\"fi\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Satunnaislukugeneraattori | Digiverkosto<\/title>\n    <style>\n        :root {\n            --bg-color: #080e1a;\n            --panel-bg: rgba(15, 23, 42, 0.85);\n            --border-color: #1e293b;\n            --accent: #38bdf8;\n            --text-color: #f8fafc;\n            --muted: #94a3b8;\n            --error: #ef4444;\n        }\n\n        * {\n            box-sizing: border-box;\n            user-select: none;\n        }\n\n        body {\n            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n            background-color: var(--bg-color);\n            background-image: \n                linear-gradient(rgba(56, 189, 248, 0.03) 1px, transparent 1px),\n                linear-gradient(90deg, rgba(56, 189, 248, 0.03) 1px, transparent 1px);\n            background-size: 30px 30px;\n            color: var(--text-color);\n            display: flex;\n            flex-direction: column;\n            align-items: center;\n            justify-content: center;\n            min-height: 100vh;\n            margin: 0;\n            padding: 20px;\n        }\n\n        .game-wrapper {\n            width: 100%;\n            max-width: 480px;\n            background: var(--panel-bg);\n            border: 1px solid var(--border-color);\n            border-radius: 12px;\n            padding: 30px;\n            box-shadow: 0 20px 40px -15px rgba(0, 0, 0, 0.5);\n            backdrop-filter: blur(10px);\n            position: relative;\n            overflow: hidden;\n        }\n\n        .game-wrapper::before {\n            content: '';\n            position: absolute;\n            top: 0;\n            left: 0;\n            width: 100%;\n            height: 2px;\n            background: linear-gradient(90deg, transparent, var(--accent), transparent);\n            animation: scan 4s linear infinite;\n        }\n\n        @keyframes scan {\n            0% { transform: translateX(-100%); }\n            100% { transform: translateX(100%); }\n        }\n\n        .header-area {\n            text-align: center;\n            margin-bottom: 25px;\n        }\n\n        h1 {\n            color: var(--accent);\n            margin: 0 0 8px 0;\n            font-size: 1.8rem;\n            letter-spacing: 1px;\n            text-transform: uppercase;\n        }\n\n        p.instructions {\n            color: var(--muted);\n            margin: 0;\n            font-size: 0.95rem;\n            line-height: 1.5;\n        }\n\n        .inputs-container {\n            display: flex;\n            gap: 15px;\n            margin-bottom: 10px;\n        }\n\n        .input-group {\n            flex: 1;\n            display: flex;\n            flex-direction: column;\n            gap: 6px;\n        }\n\n        label {\n            font-size: 0.85rem;\n            color: var(--muted);\n            font-weight: 600;\n            text-transform: uppercase;\n        }\n\n        input[type=\"number\"] {\n            width: 100%;\n            background-color: #111827;\n            border: 2px solid #334155;\n            border-radius: 8px;\n            color: var(--text-color);\n            font-size: 1.2rem;\n            font-weight: bold;\n            padding: 12px;\n            text-align: center;\n            outline: none;\n            transition: border-color 0.2s;\n        }\n\n        input[type=\"number\"]:focus {\n            border-color: var(--accent);\n        }\n\n        #error-msg {\n            color: var(--error);\n            font-size: 0.85rem;\n            font-weight: 600;\n            height: 20px;\n            text-align: center;\n            margin-bottom: 15px;\n        }\n\n        #result-box {\n            width: 100%;\n            height: 140px;\n            background-color: #111827;\n            border: 2px solid #334155;\n            border-radius: 8px;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            margin-bottom: 20px;\n        }\n\n        #result-display {\n            font-size: 3.5rem;\n            font-weight: 800;\n            color: var(--accent);\n            font-family: monospace;\n            letter-spacing: 2px;\n        }\n\n        #generate-btn {\n            width: 100%;\n            background-color: #0284c7;\n            color: white;\n            border: none;\n            padding: 14px;\n            font-size: 1rem;\n            font-weight: bold;\n            border-radius: 8px;\n            cursor: pointer;\n            text-transform: uppercase;\n            letter-spacing: 1px;\n            transition: background-color 0.2s, transform 0.1s;\n            box-shadow: 0 4px 12px rgba(2, 132, 199, 0.3);\n        }\n\n        #generate-btn:hover {\n            background-color: #0369a1;\n        }\n\n        #generate-btn:active {\n            transform: scale(0.99);\n        }\n    <\/style>\n<\/head>\n<body>\n\n    <div class=\"game-wrapper\">\n        <div class=\"header-area\">\n            <h1>Satunnaisluku<\/h1>\n            <p class=\"instructions\">M\u00e4\u00e4rit\u00e4 lukuv\u00e4li (alk. 1) ja arvo satunnainen numero yhdell\u00e4 klikkauksella!<\/p>\n        <\/div>\n\n        <div class=\"inputs-container\">\n            <div class=\"input-group\">\n                <label for=\"min-val\">Minimi<\/label>\n                <input type=\"number\" id=\"min-val\" value=\"1\" min=\"1\">\n            <\/div>\n            <div class=\"input-group\">\n                <label for=\"max-val\">Maksimi<\/label>\n                <input type=\"number\" id=\"max-val\" value=\"100\" min=\"1\">\n            <\/div>\n        <\/div>\n        \n        <div id=\"error-msg\"><\/div>\n\n        <div id=\"result-box\">\n            <div id=\"result-display\">&#8211;<\/div>\n        <\/div>\n\n        <button id=\"generate-btn\" onclick=\"generateNumber()\">Generoi numero<\/button>\n    <\/div>\n\n    <script>\n        function generateNumber() {\n            const minInput = document.getElementById(\"min-val\");\n            const maxInput = document.getElementById(\"max-val\");\n            const resultDisplay = document.getElementById(\"result-display\");\n            const errorMsg = document.getElementById(\"error-msg\");\n\n            errorMsg.textContent = \"\";\n\n            let min = parseInt(minInput.value);\n            let max = parseInt(maxInput.value);\n\n            \/\/ Varmistetaan ett\u00e4 arvot ovat v\u00e4hint\u00e4\u00e4n 1\n            if (isNaN(min) || min < 1) {\n                min = 1;\n                minInput.value = 1;\n            }\n            if (isNaN(max) || max < 1) {\n                max = 1;\n                maxInput.value = 1;\n            }\n\n            if (min > max) {\n                errorMsg.textContent = \"Minimi ei voi olla suurempi kuin maksimi!\";\n                return;\n            }\n\n            \/\/ Arvotaan satunnaisluku\n            const randomNum = Math.floor(Math.random() * (max - min + 1)) + min;\n            resultDisplay.textContent = randomNum;\n        }\n    <\/script>\n<\/body>\n<\/html>\n\n\n\n<p class=\"wp-block-paragraph\">Klikkaa, osu, muista<\/p>\n\n\n\n<!DOCTYPE html>\n<html lang=\"fi\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Valonetsij\u00e4 | Digiverkosto<\/title>\n    <style>\n        :root {\n            --bg-color: #080e1a;\n            --panel-bg: #0f172a;\n            --border-color: #1e293b;\n            --accent: #38bdf8;\n            --text-color: #f8fafc;\n            --muted: #94a3b8;\n            --red: #ef4444;\n            --ball-default: #1e293b;\n            --ball-active: #38bdf8;\n        }\n\n        * {\n            box-sizing: border-box;\n            user-select: none;\n        }\n\n        body {\n            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n            background-color: var(--bg-color);\n            background-image: \n                linear-gradient(rgba(56, 189, 248, 0.03) 1px, transparent 1px),\n                linear-gradient(90deg, rgba(56, 189, 248, 0.03) 1px, transparent 1px);\n            background-size: 25px 25px;\n            color: var(--text-color);\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            min-height: 100vh;\n            margin: 0;\n            padding: 15px;\n        }\n\n        .game-wrapper {\n            width: 100%;\n            max-width: 360px;\n            background: var(--panel-bg);\n            border: 1px solid var(--border-color);\n            border-radius: 12px;\n            padding: 20px;\n            box-shadow: 0 20px 40px -15px rgba(0, 0, 0, 0.6);\n            position: relative;\n            text-align: center;\n        }\n\n        .game-wrapper::before {\n            content: '';\n            position: absolute;\n            top: 0;\n            left: 0;\n            width: 100%;\n            height: 2px;\n            background: linear-gradient(90deg, transparent, var(--accent), transparent);\n        }\n\n        h1 {\n            color: var(--accent);\n            margin: 0 0 6px 0;\n            font-size: 1.4rem;\n            letter-spacing: 1px;\n            text-transform: uppercase;\n        }\n\n        p.instructions {\n            color: var(--muted);\n            margin: 0 0 15px 0;\n            font-size: 0.85rem;\n            line-height: 1.4;\n        }\n\n        .score-board {\n            font-size: 1rem;\n            font-weight: bold;\n            margin-bottom: 15px;\n            color: var(--accent);\n        }\n\n        .grid-container {\n            display: grid;\n            grid-template-columns: repeat(3, 1fr);\n            gap: 12px;\n            margin-bottom: 20px;\n        }\n\n        .ball {\n            aspect-ratio: 1;\n            background-color: var(--ball-default);\n            border: 2px solid #334155;\n            border-radius: 10px;\n            cursor: pointer;\n            transition: transform 0.1s, background-color 0.15s;\n        }\n\n        .ball:active {\n            transform: scale(0.95);\n        }\n\n        .ball.active {\n            background-color: var(--ball-active);\n            border-color: #ffffff;\n            box-shadow: 0 0 15px var(--accent);\n        }\n\n        .ball.error {\n            background-color: var(--red) !important;\n            border-color: #ffffff !important;\n        }\n\n        #message {\n            font-weight: bold;\n            font-size: 0.9rem;\n            min-height: 22px;\n            margin-bottom: 15px;\n            color: var(--text-color);\n        }\n\n        #action-btn {\n            width: 100%;\n            background-color: #0284c7;\n            color: white;\n            border: none;\n            padding: 12px;\n            font-size: 0.95rem;\n            font-weight: bold;\n            border-radius: 8px;\n            cursor: pointer;\n            text-transform: uppercase;\n            letter-spacing: 1px;\n            transition: background-color 0.2s;\n            box-shadow: 0 4px 12px rgba(2, 132, 199, 0.3);\n        }\n\n        #action-btn:hover {\n            background-color: #0369a1;\n        }\n    <\/style>\n<\/head>\n<body>\n\n    <div class=\"game-wrapper\">\n        <h1>Valonetsij\u00e4<\/h1>\n        <p class=\"instructions\">Palloihin syttyy valoja j\u00e4rjestyksess\u00e4. Klikkaa niit\u00e4 tarkalleen <b>samassa j\u00e4rjestyksess\u00e4<\/b>. Peli nopeutuu tasaisesti!<\/p>\n\n        <div class=\"score-board\">Pisteet: <span id=\"score\">0<\/span><\/div>\n\n        <div class=\"grid-container\" id=\"ball-grid\"><\/div>\n\n        <div id=\"message\">Paina aloita-painiketta.<\/div>\n        <button id=\"action-btn\" onclick=\"startGame()\">Aloita peli<\/button>\n    <\/div>\n\n    <script>\n        const gridEl = document.getElementById(\"ball-grid\");\n        const scoreEl = document.getElementById(\"score\");\n        const messageEl = document.getElementById(\"message\");\n        const actionBtn = document.getElementById(\"action-btn\");\n\n        const totalBalls = 9;\n        let balls = [];\n        let activeQueue = []; \n        let score = 0;\n        let isPlaying = false;\n        let gameTimeout = null;\n\n        function initGrid() {\n            gridEl.innerHTML = \"\";\n            balls = [];\n            for (let i = 0; i < totalBalls; i++) {\n                const ball = document.createElement(\"div\");\n                ball.classList.add(\"ball\");\n                ball.addEventListener(\"click\", () => handleBallClick(i));\n                gridEl.appendChild(ball);\n                balls.push(ball);\n            }\n        }\n\n        function startGame() {\n            initGrid();\n            score = 0;\n            activeQueue = [];\n            scoreEl.textContent = score;\n            messageEl.textContent = \"Seuraa j\u00e4rjestyst\u00e4!\";\n            actionBtn.style.display = \"none\";\n            isPlaying = true;\n\n            scheduleNextSpawn();\n        }\n\n        function getCurrentSpawnRate() {\n            const initialRate = 1400;\n            const minRate = 400;\n            let calculated = initialRate - (score * 25);\n            return Math.max(minRate, calculated);\n        }\n\n        function scheduleNextSpawn() {\n            if (!isPlaying) return;\n\n            const currentRate = getCurrentSpawnRate();\n\n            gameTimeout = setTimeout(() => {\n                spawnRandomBall();\n                if (isPlaying) {\n                    scheduleNextSpawn();\n                }\n            }, currentRate);\n        }\n\n        function spawnRandomBall() {\n            let turnedOff = [];\n            for (let i = 0; i < totalBalls; i++) {\n                if (!activeQueue.includes(i)) {\n                    turnedOff.push(i);\n                }\n            }\n\n            if (turnedOff.length === 0) {\n                gameOver(\"Kaikki pallot syttyiv\u00e4t!\");\n                return;\n            }\n\n            const randomIndex = turnedOff[Math.floor(Math.random() * turnedOff.length)];\n            activeQueue.push(randomIndex);\n            balls[randomIndex].classList.add(\"active\");\n        }\n\n        function handleBallClick(index) {\n            if (!isPlaying) return;\n\n            const queueIndex = activeQueue.indexOf(index);\n            if (queueIndex !== -1) {\n                if (queueIndex === 0) {\n                    activeQueue.shift();\n                    balls[index].classList.remove(\"active\");\n                    score++;\n                    scoreEl.textContent = score;\n                } else {\n                    balls[index].classList.add(\"error\");\n                    gameOver(\"V\u00e4\u00e4r\u00e4 j\u00e4rjestys! Peli ohi.\");\n                }\n            }\n        }\n\n        function gameOver(reason) {\n            isPlaying = false;\n            clearTimeout(gameTimeout);\n\n            activeQueue.forEach(idx => balls[idx].classList.add(\"error\"));\n\n            messageEl.textContent = `${reason} Sait ${score} pistett\u00e4.`;\n            actionBtn.style.display = \"block\";\n            actionBtn.textContent = \"Pelaa uudelleen\";\n        }\n\n        initGrid();\n    <\/script>\n<\/body>\n<\/html>\n\n\n\n<h4 class=\"wp-block-heading\">ServuBird<\/h4>\n\n\n<p>[flying_digi_pc]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Reaktio peli Reaktiotesti | Digiverkosto Digi-Reaktiotesti Paina aloita, odota vihre\u00e4\u00e4 valoa ja klikkaa laatikkoa tai n\u00e4ytt\u00f6\u00e4 mahdollisimman nopeasti! Valmiina testiin? [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-7156","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/digiverkosto.fi\/en\/wp-json\/wp\/v2\/pages\/7156","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/digiverkosto.fi\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/digiverkosto.fi\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/digiverkosto.fi\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/digiverkosto.fi\/en\/wp-json\/wp\/v2\/comments?post=7156"}],"version-history":[{"count":31,"href":"https:\/\/digiverkosto.fi\/en\/wp-json\/wp\/v2\/pages\/7156\/revisions"}],"predecessor-version":[{"id":7188,"href":"https:\/\/digiverkosto.fi\/en\/wp-json\/wp\/v2\/pages\/7156\/revisions\/7188"}],"wp:attachment":[{"href":"https:\/\/digiverkosto.fi\/en\/wp-json\/wp\/v2\/media?parent=7156"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}