{"id":1532,"date":"2026-07-24T05:47:30","date_gmt":"2026-07-24T05:47:30","guid":{"rendered":"https:\/\/asunto-osakeyhtio.fi\/Asoy\/?p=1532"},"modified":"2026-07-24T06:03:15","modified_gmt":"2026-07-24T06:03:15","slug":"nain-lasket-oikean-ostotarjouksen","status":"publish","type":"post","link":"https:\/\/asunto-osakeyhtio.fi\/Asoy\/?p=1532","title":{"rendered":"N\u00e4in lasket oikean ostotarjouksen"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"1532\" class=\"elementor elementor-1532\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f3e8c50 e-flex e-con-boxed e-con e-parent\" data-id=\"f3e8c50\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-98daf0d elementor-widget elementor-widget-html\" data-id=\"98daf0d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!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>Hervannan Rivitalokolmiot - Korjausvelan realisoituminen<\/title>\n    \n    <!-- Tailwind CSS -->\n    <script src=\"https:\/\/cdn.tailwindcss.com\"><\/script>\n    \n    <!-- Chart.js for graphs -->\n    <script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js\"><\/script>\n    \n    <!-- Google Fonts -->\n    <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@300;400;600;700&display=swap\" rel=\"stylesheet\">\n    \n    <style>\n        body {\n            font-family: 'Inter', sans-serif;\n            background-color: #f3f4f6;\n        }\n    <\/style>\n<\/head>\n<body class=\"text-gray-800 antialiased p-4 md:p-8\">\n\n    <!-- Muutettu max-w-5xl -> w-full, jotta asettuu t\u00e4yteen leveyteen upotuksessa -->\n    <div class=\"w-full mx-auto\">\n        <header class=\"mb-10 text-center\">\n            <span class=\"text-blue-600 font-semibold tracking-wider uppercase text-sm\">Data-analyysi - Rivitalo kolmiot \/ Hervanta n. 80m2 \/ 22.7.2026<\/span>\n            <h1 class=\"text-3xl md:text-5xl font-bold mt-2 mb-4 text-gray-900\">Velattoman hinnan ansa: N\u00e4in lasket oikean ostotarjouksen<\/h1>\n            <p class=\"text-lg text-gray-600 max-w-3xl mx-auto\">\n                Mit\u00e4 tapahtuu asunnon arvolle ja asumiskuluille, kun piilev\u00e4 korjausvelka realisoituu? \n                N\u00e4m\u00e4 graafit paljastavat karun totuuden asunnon todellisesta arvosta ja antavat sinulle matemaattisen mallin oikean ostotarjouksen tekemiseen.\n            <\/p>\n        <\/header>\n\n        <!-- Graafi 1: Asunnon arvon sulaminen -->\n        <div class=\"bg-white rounded-2xl shadow-sm border border-gray-100 p-6 md:p-8 mb-8\">\n            <div class=\"mb-6\">\n                <h2 class=\"text-2xl font-bold text-gray-800 mb-2\">1. Myyntihinnan romahdus (Arvon sulaminen)<\/h2>\n                <p class=\"text-gray-600\">\n                    Kuvittele paperilla t\u00e4ysin velaton asunto, jonka pyyntihinta on 148 000 \u20ac. Data osoittaa karun totuuden: kun 70 000 euron putkiremontti toteutetaan, <strong>asunnon velaton hinta (kokonaisarvo) ei nouse lainkaan<\/strong>. Markkina ei maksa remontista preemiota. \n                    Koska asunnon p\u00e4\u00e4lle tulee 70 000 \u20ac yhti\u00f6laina ja velaton hinta pysyy 148 000 eurossa, <strong>omistajan osuus eli asunnon myyntihinta romahtaa suoraan 78 000 euroon sill\u00e4 sekunnilla, kun yhti\u00f6kokous tekee remonttip\u00e4\u00e4t\u00f6ksen.<\/strong>\n                <\/p>\n            <\/div>\n            \n            <!-- Lis\u00e4tty inline-tyylit (style=\"...\") upotuksen varmistamiseksi blogeissa -->\n            <div style=\"position: relative; height: 400px; width: 100%;\" class=\"relative h-[400px] w-full\">\n                <canvas id=\"priceChart\"><\/canvas>\n            <\/div>\n        <\/div>\n\n        <!-- Graafi 2: Asumisen todelliset kokonaiskustannukset -->\n        <div class=\"bg-white rounded-2xl shadow-sm border border-gray-100 p-6 md:p-8 mb-12\">\n            <div class=\"mb-6\">\n                <h2 class=\"text-2xl font-bold text-gray-800 mb-2\">2. Asumisen todelliset absoluuttiset kulut (\u20ac\/kk)<\/h2>\n                <p class=\"text-gray-600\">\n                    T\u00e4m\u00e4 graafi paljastaa totuuden kuukausikuluista. Mukana on hoitovastike, <strong>p\u00e4\u00e4oman korkokulu (4 %)<\/strong> riippumatta onko kyseess\u00e4 pankin vai oma raha, \n                    sek\u00e4 n\u00e4kym\u00e4t\u00f6n korjausvelan kertym\u00e4 (n. 140 \u20ac\/kk). <br><br>\n                    <strong>Markkinareaktio yhti\u00f6kokouksen p\u00e4\u00e4t\u00f6shetkell\u00e4:<\/strong> Omaan p\u00e4\u00e4omaan kohdistuva laskennallinen korkokulu (violetti alue) laskee voimakkaasti, sill\u00e4 asunnon myyntihinnasta sulaa v\u00e4litt\u00f6m\u00e4sti uuden yhti\u00f6lainan osuus (t\u00e4ss\u00e4 skenaariossa 70 000 euroa). Samanaikaisesti taseessa lep\u00e4\u00e4v\u00e4 piilev\u00e4 korjausvelka (harmaa alue) realisoituu maksuvelvoitteeksi: se muuttuu rahoitusvastikkeeksi (punainen alue), mik\u00e4 kasvattaa osakkaan kuukausittaista kassavirtarasitetta merkitt\u00e4v\u00e4sti ja v\u00e4litt\u00f6m\u00e4sti.\n                <\/p>\n            <\/div>\n            \n            <!-- Lis\u00e4tty inline-tyylit (style=\"...\") upotuksen varmistamiseksi blogeissa -->\n            <div style=\"position: relative; height: 500px; width: 100%;\" class=\"relative h-[500px] w-full\">\n                <canvas id=\"costChart\"><\/canvas>\n            <\/div>\n        <\/div>\n\n        <!-- UUSI KOHTA 3: Ostotarjouksen laskeminen -->\n        <div class=\"bg-white rounded-2xl shadow-sm border border-gray-100 p-6 md:p-8 mb-12\">\n            <div class=\"mb-6\">\n                <h2 class=\"text-2xl font-bold text-gray-800 mb-2\">3. Oikean ostotarjouksen m\u00e4\u00e4ritt\u00e4minen (Tarjousstrategia)<\/h2>\n                <p class=\"text-gray-600 mb-4\">\n                    Kun alueen hintakatto ja remonttien kustannukset ovat tiedossa, miten ostajan tulisi toimia neuvottelup\u00f6yd\u00e4ss\u00e4? Jos kiikarissa on kohde, jossa raskas LVIS- tai m\u00e4rk\u00e4tilaremontti on viel\u00e4 edess\u00e4, rationaalinen ostotarjous lasketaan takaperin alueen toteutuneista, <em>jo remontoiduista<\/em> kauppahinnoista (kuten esimerkkimme 148 000 \u20ac).\n                <\/p>\n                <p class=\"text-gray-600\">\n                    Ainoa tapa v\u00e4ltt\u00e4\u00e4 asunnon ylikapitalisoituminen (maksat asunnosta enemm\u00e4n kuin sen markkina-arvo on remontin j\u00e4lkeen), on v\u00e4hent\u00e4\u00e4 tulevan remontin kustannus eli korjausvelka suoraan asunnon velattomasta tavoitearvosta.\n                <\/p>\n            <\/div>\n            \n            <div class=\"bg-blue-50 rounded-xl p-6 border border-blue-100\">\n                <h3 class=\"font-semibold text-blue-900 mb-4 text-lg\">Matemaattinen malli tarjouksen laskentaan:<\/h3>\n                \n                <div class=\"space-y-3 font-mono text-sm md:text-base\">\n                    <div class=\"flex justify-between items-center text-gray-700\">\n                        <span>Tavoiteltu velaton markkina-arvo (remontin j\u00e4lkeen)<\/span>\n                        <span class=\"font-semibold\">148 000 \u20ac<\/span>\n                    <\/div>\n                    <div class=\"flex justify-between items-center text-gray-600\">\n                        <span>- Nykyinen yhti\u00f6laina<\/span>\n                        <span>0 \u20ac<\/span>\n                    <\/div>\n                    <div class=\"flex justify-between items-center text-red-600 border-b border-blue-200 pb-3\">\n                        <span>- Tulevan remontin kustannusarvio (LVIS)<\/span>\n                        <span>- 70 000 \u20ac<\/span>\n                    <\/div>\n                    <div class=\"flex justify-between items-center text-gray-900 font-bold pt-1 text-lg\">\n                        <span>= Oikea ostotarjous (Myyntihinta)<\/span>\n                        <span>78 000 \u20ac<\/span>\n                    <\/div>\n                <\/div>\n\n                <div class=\"mt-6 text-sm text-blue-800 bg-blue-100\/50 p-4 rounded-lg\">\n                    <strong>Johtop\u00e4\u00e4t\u00f6s:<\/strong> Jos maksat remontoimattomasta asunnosta pyydetyt 148 000 euroa, olet remontin valmistuttua sitonut kohteeseen 218 000 euroa (alkuper\u00e4inen hinta + uusi yhti\u00f6laina). Olet siis maksanut 70 000 euroa yli markkinahinnan, eik\u00e4 t\u00e4t\u00e4 summaa saa myydess\u00e4 takaisin.\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <script>\n        \/\/ K\u00e4\u00e4rit\u00e4\u00e4n graafien piirto funktioon. T\u00e4m\u00e4 on KRIITTIST\u00c4 blogiupotuksissa, \n        \/\/ koska CMS-alustat lataavat skriptit usein viiveell\u00e4.\n        function renderChartsWhenReady() {\n            if (typeof Chart === 'undefined') {\n                console.log(\"Odotetaan Chart.js -kirjaston latautumista...\");\n                setTimeout(renderChartsWhenReady, 100); \/\/ Yritet\u00e4\u00e4n 100ms p\u00e4\u00e4st\u00e4 uudelleen\n                return;\n            }\n\n            \/\/ M\u00e4\u00e4ritell\u00e4\u00e4n yhteiset Chart.js fontti- ja tyyliasetukset\n            Chart.defaults.font.family = \"'Inter', sans-serif\";\n\n            const priceCtx = document.getElementById('priceChart').getContext('2d');\n\n            const priceData = {\n                labels: ['Nykytila (0 v)', 'LVIS PTS:ss\u00e4 (1-2 v)', 'P\u00e4\u00e4t\u00f6s & Laina nostetaan (3 v)', 'Remontti valmis (4 v)'],\n                datasets: [\n                    {\n                        label: 'Myyntihinta (\u20ac) - Omistajan osuus',\n                        data: [148000, 148000, 78000, 78000],\n                        borderColor: '#ef4444', \/\/ Red\n                        backgroundColor: 'rgba(239, 68, 68, 0.1)',\n                        borderWidth: 3,\n                        stepped: 'before', \/\/ T\u00c4M\u00c4 PALAUTETTU: Tekee romahduksesta pystysuoran sein\u00e4n\n                        tension: 0,        \/\/ T\u00c4M\u00c4 PALAUTETTU: Poistaa viivan py\u00f6reyden\n                        pointBackgroundColor: '#ef4444',\n                        pointRadius: 4\n                },\n                {\n                    label: 'Velaton hinta (\u20ac) - Kokonaisarvo',\n                    data: [148000, 148000, 148000, 148000],\n                    borderColor: '#3b82f6', \/\/ Blue\n                    borderWidth: 3,\n                    borderDash: [5, 5], \/\/ Dashed line\n                    stepped: 'before',\n                    tension: 0,\n                    pointBackgroundColor: '#3b82f6',\n                    pointRadius: 4\n                },\n                {\n                    label: 'Yhti\u00f6lainaosuus (\u20ac) - Uusi velka',\n                    data: [0, 0, 70000, 70000],\n                    borderColor: '#f59e0b', \/\/ Amber\/Orange\n                    backgroundColor: 'rgba(245, 158, 11, 0.1)',\n                    borderWidth: 4,\n                    stepped: 'before', \/\/ Pystysuora nousu\n                    tension: 0,\n                    fill: true,\n                    pointBackgroundColor: '#f59e0b',\n                    pointRadius: 6\n                }\n            ]\n        };\n\n        \/\/ Kustomoitu Chart.js plugin piirt\u00e4m\u00e4\u00e4n turvallinen ostoalue graafiin 1\n        const safeBuyZonePlugin = {\n            id: 'safeBuyZone',\n            beforeDraw: (chart) => {\n                if (chart.canvas.id !== 'priceChart') return;\n                \n                const ctx = chart.ctx;\n                const xAxis = chart.scales.x;\n                const yAxis = chart.scales.y;\n                \n                \/\/ M\u00e4\u00e4ritell\u00e4\u00e4n alue y-akselilla (esim. 70 000 - 85 000 euroa)\n                const topY = yAxis.getPixelForValue(85000);\n                const bottomY = yAxis.getPixelForValue(70000);\n                const leftX = xAxis.left;\n                const rightX = xAxis.right;\n\n                ctx.save();\n                \n                \/\/ Piirret\u00e4\u00e4n vihre\u00e4 taustalaatikko\n                ctx.fillStyle = 'rgba(16, 185, 129, 0.15)'; \/\/ Vihre\u00e4, l\u00e4pin\u00e4kyv\u00e4\n                ctx.fillRect(leftX, topY, rightX - leftX, bottomY - topY);\n\n                \/\/ Piirret\u00e4\u00e4n katkoviivat alueen yl\u00e4- ja alareunaan\n                ctx.beginPath();\n                ctx.moveTo(leftX, topY);\n                ctx.lineTo(rightX, topY);\n                ctx.moveTo(leftX, bottomY);\n                ctx.lineTo(rightX, bottomY);\n                ctx.lineWidth = 1;\n                ctx.strokeStyle = 'rgba(16, 185, 129, 0.5)';\n                ctx.setLineDash([4, 4]);\n                ctx.stroke();\n\n                \/\/ Lis\u00e4t\u00e4\u00e4n teksti alueen sis\u00e4lle\n                ctx.fillStyle = 'rgba(6, 95, 70, 0.8)'; \/\/ Tummanvihre\u00e4 teksti\n                ctx.font = 'bold 12px Inter';\n                ctx.textAlign = 'left';\n                ctx.fillText('DATAN OSOITTAMA MATEMAATTINEN OSTOALUE (N. 70 000 - 85 000 \u20ac)', leftX + 15, topY + 15);\n                ctx.font = 'italic 11px Inter';\n                ctx.fillText('Vain t\u00e4ll\u00e4 hintatasolla v\u00e4lt\u00e4t asunnon ylikapitalisoitumisen suhteessa todelliseen markkina-arvoon.', leftX + 15, topY + 30);\n\n                ctx.restore();\n            }\n        };\n\n        const priceConfig = {\n            type: 'line',\n            data: priceData,\n            options: {\n                responsive: true,\n                maintainAspectRatio: false,\n                interaction: {\n                    mode: 'index',\n                    intersect: false,\n                },\n                plugins: {\n                    tooltip: {\n                        callbacks: {\n                            label: function(context) {\n                                let label = context.dataset.label || '';\n                                if (label) {\n                                    label += ': ';\n                                }\n                                if (context.parsed.y !== null) {\n                                    label += new Intl.NumberFormat('fi-FI', { style: 'currency', currency: 'EUR', maximumFractionDigits: 0 }).format(context.parsed.y);\n                                }\n                                return label;\n                            }\n                        },\n                        padding: 12,\n                        backgroundColor: 'rgba(17, 24, 39, 0.9)'\n                    },\n                    legend: {\n                        position: 'top',\n                        labels: {\n                            usePointStyle: true,\n                            padding: 20,\n                            font: { size: 13, weight: '600' }\n                        }\n                    }\n                },\n                scales: {\n                    y: {\n                        beginAtZero: true,\n                        ticks: {\n                            callback: function(value) {\n                                return value.toLocaleString('fi-FI') + ' \u20ac';\n                            },\n                            font: { size: 12 }\n                        }\n                    },\n                    x: {\n                        ticks: { font: { size: 12 } }\n                    }\n                }\n            },\n            plugins: [safeBuyZonePlugin] \/\/ Lis\u00e4t\u00e4\u00e4n ostoalue plugin graafiin 1\n        };\n\n        new Chart(priceCtx, priceConfig);\n\n        \/\/ --- GRAAFI 2: ASUMISEN KULUT ---\n        const costCtx = document.getElementById('costChart').getContext('2d');\n        \n        \/\/ Laskentalogiikka selitykseksi:\n        \/\/ Aika 0: Hoito 337, Korko (148k*4%\/12=493), Korjausvelka 140. Yht: 970\n        \/\/ Aika 1: Hoito 337, Korko (148k*4%\/12=493), Korjausvelka 140. Yht: 970\n        \/\/ Aika 2: Hoito 337, Korko (78k*4%\/12=260), Rahoitusvastike (laina nostetaan) 400. Yht: 997\n        \/\/ Aika 3: Hoito 337, Korko (78k*4%\/12=260), Rahoitusvastike (t\u00e4ysi) 400. Yht: 997\n        \n        const costData = {\n            labels: ['Nykytila (0 v)', 'LVIS PTS:ss\u00e4 (1-2 v)', 'P\u00e4\u00e4t\u00f6s & Laina nostetaan (3 v)', 'Remontti valmis (4 v)'],\n            datasets: [\n                {\n                    label: 'Hoitovastike',\n                    data: [337, 337, 337, 337],\n                    borderColor: '#10b981', \/\/ Emerald\n                    backgroundColor: 'rgba(16, 185, 129, 0.7)',\n                    fill: true,\n                    stepped: 'before',\n                    tension: 0\n                },\n                {\n                    label: 'P\u00e4\u00e4oman korkokulu (Oma\/Pankki 4%)',\n                    data: [493, 493, 260, 260], \/\/ Laskee asunnon myyntihinnan mukana\n                    borderColor: '#8b5cf6', \/\/ Violet\n                    backgroundColor: 'rgba(139, 92, 246, 0.7)',\n                    fill: '-1', \/\/ T\u00e4ytt\u00e4\u00e4 edelliseen viivaan asti (stacked)\n                    stepped: 'before', \/\/ Pystysuora pudotus\n                    tension: 0\n                },\n                {\n                    label: 'N\u00e4kym\u00e4t\u00f6n korjausvelan kertym\u00e4',\n                    data: [140, 140, 0, 0], \/\/ Poistuu kun p\u00e4\u00e4t\u00f6s tehd\u00e4\u00e4n\n                    borderColor: '#9ca3af', \/\/ Gray\n                    backgroundColor: 'rgba(156, 163, 175, 0.7)',\n                    fill: '-1',\n                    stepped: 'before', \/\/ Pystysuora pudotus nollaan\n                    tension: 0\n                },\n                {\n                    label: 'Rahoitusvastike (Uusi yhti\u00f6laina)',\n                    data: [0, 0, 400, 400], \/\/ Astuu voimaan t\u00e4yten\u00e4 heti kun laina nostetaan\n                    borderColor: '#f43f5e', \/\/ Rose\n                    backgroundColor: 'rgba(244, 63, 94, 0.7)',\n                    fill: '-1',\n                    stepped: 'before', \/\/ Pystysuora nousu sein\u00e4n\u00e4\n                    tension: 0\n                }\n            ]\n        };\n\n        \/\/ Kustomoitu Chart.js plugin piirt\u00e4m\u00e4\u00e4n \"Kertarys\u00e4ys\" indikaattori\n        const crashIndicatorPlugin = {\n            id: 'crashIndicator',\n            afterDraw: (chart, args, options) => {\n                const ctx = chart.ctx;\n                const xAxis = chart.scales.x;\n                const yAxis = chart.scales.y;\n                \n                \/\/ P\u00e4\u00e4t\u00f6s-piste on indeksiss\u00e4 2\n                const xPos = xAxis.getPixelForValue(2);\n                const topY = yAxis.top;\n                const bottomY = yAxis.bottom;\n\n                ctx.save();\n                \/\/ Piirr\u00e4 pystysuora katkoviiva\n                ctx.beginPath();\n                ctx.moveTo(xPos, topY);\n                ctx.lineTo(xPos, bottomY);\n                ctx.lineWidth = 2;\n                ctx.strokeStyle = 'rgba(239, 68, 68, 0.9)'; \/\/ Punainen v\u00e4ri\n                ctx.setLineDash([6, 6]);\n                ctx.stroke();\n\n                \/\/ Piirr\u00e4 seliteteksti viivan yl\u00e4osaan\n                ctx.fillStyle = 'rgba(239, 68, 68, 1)';\n                ctx.font = 'bold 13px Inter';\n                ctx.textAlign = 'center';\n                \n                \/\/ Taustalaatikko tekstille luettavuuden parantamiseksi\n                ctx.fillStyle = 'rgba(255, 255, 255, 0.9)';\n                ctx.fillRect(xPos - 110, topY - 10, 220, 70);\n                \n                ctx.fillStyle = 'rgba(239, 68, 68, 1)';\n                ctx.fillText('P\u00c4\u00c4T\u00d6SHETKI', xPos, topY + 10);\n                ctx.fillStyle = '#1f2937';\n                ctx.font = '12px Inter';\n                ctx.fillText('Myyntihinta laskee -70 000 \u20ac', xPos, topY + 30);\n                ctx.fillText('Piilev\u00e4 velka realisoituu', xPos, topY + 48);\n                ctx.fillStyle = '#e11d48';\n                ctx.font = 'bold 12px Inter';\n                ctx.fillText('rahoitusvastikkeeksi', xPos, topY + 65);\n\n                ctx.restore();\n            }\n        };\n\n        const costConfig = {\n            type: 'line',\n            data: costData,\n            options: {\n                layout: {\n                    padding: {\n                        top: 80 \/\/ Tehd\u00e4\u00e4n tilaa kertarys\u00e4ys-tekstille\n                    }\n                },\n                responsive: true,\n                maintainAspectRatio: false,\n                interaction: {\n                    mode: 'index',\n                    intersect: false,\n                },\n                plugins: {\n                    tooltip: {\n                        callbacks: {\n                            label: function(context) {\n                                let label = context.dataset.label || '';\n                                if (label) {\n                                    label += ': ';\n                                }\n                                if (context.parsed.y !== null) {\n                                    label += new Intl.NumberFormat('fi-FI', { style: 'currency', currency: 'EUR', maximumFractionDigits: 0 }).format(context.parsed.y) + ' \/ kk';\n                                }\n                                return label;\n                            },\n                            footer: function(tooltipItems) {\n                                let total = 0;\n                                tooltipItems.forEach(function(tooltipItem) {\n                                    total += tooltipItem.parsed.y;\n                                });\n                                return '\\nKOKONAISKULU: ' + new Intl.NumberFormat('fi-FI', { style: 'currency', currency: 'EUR', maximumFractionDigits: 0 }).format(total) + ' \/ kk';\n                            }\n                        },\n                        padding: 12,\n                        backgroundColor: 'rgba(17, 24, 39, 0.9)',\n                        footerFont: { weight: 'bold', size: 14 }\n                    },\n                    legend: {\n                        position: 'bottom',\n                        labels: {\n                            usePointStyle: true,\n                            padding: 20,\n                            font: { size: 13, weight: '500' }\n                        }\n                    }\n                },\n                scales: {\n                    y: {\n                        stacked: true, \/\/ Pinoaa arvot p\u00e4\u00e4llekk\u00e4in\n                        beginAtZero: true,\n                        title: {\n                            display: true,\n                            text: 'Kulut euroa \/ kuukausi',\n                            font: { weight: 'bold' }\n                        },\n                        ticks: {\n                            callback: function(value) {\n                                return value + ' \u20ac';\n                            },\n                            font: { size: 12 }\n                        }\n                    },\n                    x: {\n                        ticks: { font: { size: 12 } }\n                    }\n                }\n            },\n            plugins: [crashIndicatorPlugin] \/\/ Lis\u00e4t\u00e4\u00e4n uusi plugin\n        };\n\n        new Chart(costCtx, costConfig);\n        \n        } \/\/ Suljetaan renderChartsWhenReady -funktio\n        \n        \/\/ K\u00e4ynnistet\u00e4\u00e4n graafien piirto\n        renderChartsWhenReady();\n    <\/script>\n<\/body>\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-980df6f e-grid e-con-boxed e-con e-parent\" data-id=\"980df6f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c3722bb elementor-widget elementor-widget-html\" data-id=\"c3722bb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>\n    \/* Suojattu nimiavaruus, jotta t\u00e4m\u00e4 ei riko WordPressin muita tyylej\u00e4 *\/\n    .loorulyzer-promo-elementor {\n        margin-top: 30px; \/* Enemm\u00e4n v\u00e4li\u00e4 yll\u00e4 olevaan tekstiin *\/\n        margin-bottom: 20px;\n        font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\n        text-align: center; \/* MUUTETTU: Keskitt\u00e4\u00e4 sis\u00e4ll\u00f6n (tekstit ja napin) *\/\n        \n        \/* Tumma l\u00e4pin\u00e4kyv\u00e4 lasiefekti-tausta *\/\n        background: rgba(225, 225, 240, 0.85); \n        backdrop-filter: blur(8px); \n        -webkit-backdrop-filter: blur(8px); \n        padding: 32px 20px; \/* MUUTETTU: Pystysuunnassa ilmava, sivusuunnassa joustava *\/\n        border-radius: 20px; \/* Pehme\u00e4mm\u00e4t, modernit kulmat *\/\n        border: 1px solid rgba(43, 90, 255, 0.25); \/* Hieman vahvempi s\u00e4hk\u00f6nsininen reunus *\/\n        \n        \/* MUUTETTU: Levennys ja laatikon keskitys *\/\n        display: block; \n        width: 100%; \/* T\u00e4ytt\u00e4\u00e4 koko Elementor-sarakkeen leveyssuunnassa *\/\n        max-width: 480px; \/* Est\u00e4\u00e4 kasvamasta liian massiiviseksi isoilla n\u00e4yt\u00f6ill\u00e4 *\/\n        margin-left: auto; \/* Keskitt\u00e4\u00e4 itse laatikon *\/\n        margin-right: auto; \/* Keskitt\u00e4\u00e4 itse laatikon *\/\n        \n        box-shadow: 0 15px 35px rgba(0, 0, 0, 0.7); \/* Vahvempi varjo, jotta leijuu paremmin *\/\n    }\n    .loorulyzer-title-el {\n        font-size: clamp(2.2rem, 6vw, 3.5rem); \/* MUUTETTU: Huomattavasti isompi otsikko *\/\n        letter-spacing: 0.15em;\n        text-transform: uppercase;\n        font-weight: 300;\n        margin-bottom: 8px; \/* Hieman enemm\u00e4n tilaa otsikon alla *\/\n        white-space: nowrap;\n        line-height: 1.2;\n    }\n    .text-looru-el { color: #0022cc; }\n    .text-lyzer-el { color: #2b5aff; }\n    \n    .loorulyzer-title-el span {\n        text-shadow: 0 0 10px currentColor;\n        animation: electricGlowEl 4s infinite alternate ease-in-out;\n    }\n    \n    .loorulyzer-subtitle-el {\n        font-size: 1.05rem; \/* Isompi ja selke\u00e4mpi *\/\n        letter-spacing: 0.25em; \/* Tyylikk\u00e4\u00e4mpi, leve\u00e4mpi v\u00e4listys *\/\n        text-transform: uppercase;\n        color: #05070b; \/* Vaaleampi harmaa, erottuu paremmin mustalta *\/\n        margin-bottom: 26px;\n        margin-left: 0; \/* MUUTETTU: Nollattu, jotta teksti asettuu tismalleen keskelle *\/\n    }\n    \n    .app-store-btn-el {\n        display: inline-flex;\n        align-items: center;\n        justify-content: center;\n        padding: 10px 24px;\n        background-color: rgba(0, 0, 0, 0.85); \/* Tumma tausta napille *\/\n        border: 1px solid rgba(255, 255, 255, 0.2);\n        border-radius: 16px;\n        text-decoration: none;\n        color: white !important;\n        transition: all 0.3s ease;\n        backdrop-filter: blur(4px);\n    }\n    \n    .app-store-btn-el:hover {\n        border-color: #0066ff;\n        box-shadow: 0 0 20px rgba(0, 102, 255, 0.4);\n        transform: scale(1.05);\n        color: white !important;\n    }\n    \n    .app-store-svg-el {\n        width: 32px;\n        height: 32px;\n        margin-right: 15px;\n        fill: white;\n        transition: fill 0.3s ease;\n    }\n    \n    .app-store-btn-el:hover .app-store-svg-el {\n        fill: white;\n    }\n    \n    .app-store-text-small-el {\n        font-size: 11px;\n        line-height: 1;\n        margin-bottom: 3px;\n        color: #a3a3a3;\n        text-transform: none;\n        letter-spacing: normal;\n        text-align: left;\n    }\n    \n    .app-store-text-large-el {\n        font-size: 18px;\n        font-weight: 500;\n        line-height: 1;\n        letter-spacing: normal;\n        text-align: left;\n    }\n\n    @keyframes electricGlowEl {\n        0%, 100% { text-shadow: 0 0 5px currentColor, 0 0 10px currentColor; }\n        50% { text-shadow: 0 0 10px currentColor, 0 0 20px currentColor; }\n    }\n<\/style>\n\n<div class=\"loorulyzer-promo-elementor\">\n    <!-- Otsikko -->\n    <div class=\"loorulyzer-title-el\">\n        <span class=\"text-looru-el\">Taloyhti\u00f6<\/span><span class=\"text-lyzer-el\">Tieto<\/span>\n    <\/div>\n    \n    <!-- Alaotsikko -->\n    <div class=\"loorulyzer-subtitle-el\">V\u00e4lt\u00e4 hutiostos.<\/div>\n    \n    <!-- Latauspainike -->\n    <a href=\"https:\/\/apps.apple.com\/fi\/app\/taloyhti%C3%B6tieto\/id6780215949\"  target=\"_blank\" rel=\"noopener noreferrer\" class=\"app-store-btn-el\">\n        <!-- Omenalogo -->\n        <svg class=\"app-store-svg-el\" viewBox=\"0 0 384 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n            <path d=\"M318.7 268.7c-.2-36.7 16.4-64.4 50-84.8-18.8-26.9-47.2-41.7-84.7-44.6-35.5-2.8-74.3 20.7-88.5 20.7-15 0-49.4-19.7-76.4-19.7C63.3 141.2 4 184.8 4 273.5q0 39.3 14.4 81.2c12.8 36.7 59 126.7 107.2 125.2 25.2-.6 43-17.9 75.8-17.9 31.8 0 48.3 17.9 76.4 17.9 48.6-.7 90.4-82.5 102.6-119.3-65.2-30.7-61.7-90-61.7-91.9zm-56.6-164.2c27.3-32.4 24.8-61.9 24-72.5-24.1 1.4-52 16.4-67.9 34.9-17.5 19.8-27.8 44.3-25.6 71.9 26.1 2 49.9-11.4 69.5-34.3z\"><\/path>\n        <\/svg>\n        <div>\n            <div class=\"app-store-text-small-el\">Lataa Taloyhti\u00f6Tieto<\/div>\n            <div class=\"app-store-text-large-el\">App Storesta<\/div>\n        <\/div>\n    <\/a>\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e824241 elementor-widget elementor-widget-html\" data-id=\"e824241\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>\n    \/* Vaalea teema - suojattu nimiavaruus (light) *\/\n    .loorulyzer-promo-light {\n        margin-top: 30px; \n        margin-bottom: 20px;\n        font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\n        text-align: center;\n        \n        \/* Vaalea lasiefekti-tausta *\/\n        background: rgba(255, 255, 255, 0.65); \n        backdrop-filter: blur(12px); \n        -webkit-backdrop-filter: blur(12px); \n        padding: 32px 20px; \n        border-radius: 20px; \n        border: 1px solid rgba(255, 255, 255, 1); \/* Puhdas valkoinen reunus *\/\n        \n        display: block; \n        width: 100%; \n        max-width: 480px; \n        margin-left: auto; \n        margin-right: auto; \n        \n        box-shadow: 0 15px 35px rgba(0, 0, 0, 0.08); \/* Pehme\u00e4, huomaamaton varjo *\/\n    }\n    .loorulyzer-title-light {\n        font-size: clamp(2.2rem, 6vw, 3.5rem); \n        letter-spacing: 0.15em;\n        text-transform: uppercase;\n        font-weight: 300;\n        margin-bottom: 8px; \n        white-space: nowrap;\n        line-height: 1.2;\n    }\n    .text-looru-light { color: #0022cc; }\n    .text-lyzer-light { color: #2b5aff; }\n    \n    .loorulyzer-title-light span {\n        \/* Pehme\u00e4mpi hehku vaalealle taustalle *\/\n        animation: electricGlowLight 4s infinite alternate ease-in-out;\n    }\n    \n    .loorulyzer-subtitle-light {\n        font-size: 1.05rem; \n        letter-spacing: 0.25em; \n        text-transform: uppercase;\n        color: #475569; \/* Tummanharmaa teksti, jotta erottuu vaaleasta taustasta *\/\n        font-weight: 500; \/* Hieman paksumpi luettavuuden vuoksi *\/\n        margin-bottom: 26px;\n    }\n    \n    .app-store-btn-light {\n        display: inline-flex;\n        align-items: center;\n        justify-content: center;\n        padding: 10px 24px;\n        background-color: #000000; \/* Puhdas musta nappi luo upean kontrastin *\/\n        border: 1px solid #000000;\n        border-radius: 16px;\n        text-decoration: none;\n        color: white !important;\n        transition: all 0.3s ease;\n    }\n    \n    .app-store-btn-light:hover {\n        border-color: #2b5aff;\n        box-shadow: 0 0 20px rgba(43, 90, 255, 0.3);\n        transform: scale(1.05);\n        color: white !important;\n    }\n    \n    .app-store-svg-light {\n        width: 32px;\n        height: 32px;\n        margin-right: 15px;\n        fill: white;\n        transition: fill 0.3s ease;\n    }\n    \n    .app-store-text-small-light {\n        font-size: 11px;\n        line-height: 1;\n        margin-bottom: 3px;\n        color: #a3a3a3;\n        text-transform: none;\n        letter-spacing: normal;\n        text-align: left;\n    }\n    \n    .app-store-text-large-light {\n        font-size: 18px;\n        font-weight: 500;\n        line-height: 1;\n        letter-spacing: normal;\n        text-align: left;\n    }\n\n    @keyframes electricGlowLight {\n        0%, 100% { text-shadow: 0 0 2px rgba(43, 90, 255, 0.1); }\n        50% { text-shadow: 0 0 10px rgba(43, 90, 255, 0.4); }\n    }\n<\/style>\n\n<div class=\"loorulyzer-promo-light\">\n    <!-- Otsikko -->\n    <div class=\"loorulyzer-title-light\">\n        <span class=\"text-looru-light\">Looru<\/span><span class=\"text-lyzer-light\">lyzer<\/span>\n    <\/div>\n    \n    <!-- Alaotsikko -->\n    <div class=\"loorulyzer-subtitle-light\">V\u00e4lt\u00e4 hutiostos.<\/div>\n    \n    <!-- Latauspainike -->\n    <a href=\"https:\/\/apps.apple.com\/fi\/app\/loorulyzer\/id6771708968?l=fi#information\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"app-store-btn-light\">\n        <!-- Omenalogo -->\n        <svg class=\"app-store-svg-light\" viewBox=\"0 0 384 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n            <path d=\"M318.7 268.7c-.2-36.7 16.4-64.4 50-84.8-18.8-26.9-47.2-41.7-84.7-44.6-35.5-2.8-74.3 20.7-88.5 20.7-15 0-49.4-19.7-76.4-19.7C63.3 141.2 4 184.8 4 273.5q0 39.3 14.4 81.2c12.8 36.7 59 126.7 107.2 125.2 25.2-.6 43-17.9 75.8-17.9 31.8 0 48.3 17.9 76.4 17.9 48.6-.7 90.4-82.5 102.6-119.3-65.2-30.7-61.7-90-61.7-91.9zm-56.6-164.2c27.3-32.4 24.8-61.9 24-72.5-24.1 1.4-52 16.4-67.9 34.9-17.5 19.8-27.8 44.3-25.6 71.9 26.1 2 49.9-11.4 69.5-34.3z\"><\/path>\n        <\/svg>\n        <div>\n            <div class=\"app-store-text-small-light\">Lataa<\/div>\n            <div class=\"app-store-text-large-light\">App Storesta<\/div>\n        <\/div>\n    <\/a>\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-80c8d26 e-flex e-con-boxed e-con e-parent\" data-id=\"80c8d26\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2b5913d elementor-arrows-position-inside elementor-pagination-position-outside elementor-widget elementor-widget-image-carousel\" data-id=\"2b5913d\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;slides_to_show&quot;:&quot;1&quot;,&quot;navigation&quot;:&quot;both&quot;,&quot;autoplay&quot;:&quot;yes&quot;,&quot;pause_on_hover&quot;:&quot;yes&quot;,&quot;pause_on_interaction&quot;:&quot;yes&quot;,&quot;autoplay_speed&quot;:5000,&quot;infinite&quot;:&quot;yes&quot;,&quot;effect&quot;:&quot;slide&quot;,&quot;speed&quot;:500}\" data-widget_type=\"image-carousel.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-image-carousel-wrapper swiper\" role=\"region\" aria-roledescription=\"carousel\" aria-label=\"Kuvakaruselli\" dir=\"ltr\">\n\t\t\t<div class=\"elementor-image-carousel swiper-wrapper\" aria-live=\"off\">\n\t\t\t\t\t\t\t\t<div class=\"swiper-slide\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"1 of 4\"><figure class=\"swiper-slide-inner\"><img decoding=\"async\" class=\"swiper-slide-image\" src=\"https:\/\/asunto-osakeyhtio.fi\/Asoy\/wp-content\/uploads\/2026\/07\/Screenshot-2026-07-22-at-13.08.39.png\" alt=\"Hervanta Rivitalot 7\/2026\" \/><\/figure><\/div><div class=\"swiper-slide\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"2 of 4\"><figure class=\"swiper-slide-inner\"><img decoding=\"async\" class=\"swiper-slide-image\" src=\"https:\/\/asunto-osakeyhtio.fi\/Asoy\/wp-content\/uploads\/2026\/07\/Screenshot-2026-07-22-at-13.06.41.png\" alt=\"Screenshot 2026-07-22 at 13.06.41\" \/><\/figure><\/div><div class=\"swiper-slide\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"3 of 4\"><figure class=\"swiper-slide-inner\"><img decoding=\"async\" class=\"swiper-slide-image\" src=\"https:\/\/asunto-osakeyhtio.fi\/Asoy\/wp-content\/uploads\/2026\/07\/Screenshot-2026-07-22-at-13.05.37.png\" alt=\"Screenshot 2026-07-22 at 13.05.37\" \/><\/figure><\/div><div class=\"swiper-slide\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"4 of 4\"><figure class=\"swiper-slide-inner\"><img decoding=\"async\" class=\"swiper-slide-image\" src=\"https:\/\/asunto-osakeyhtio.fi\/Asoy\/wp-content\/uploads\/2026\/07\/Screenshot-2026-07-22-at-13.03.08.png\" alt=\"Screenshot 2026-07-22 at 13.03.08\" \/><\/figure><\/div>\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"elementor-swiper-button elementor-swiper-button-prev\" role=\"button\" tabindex=\"0\">\n\t\t\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-eicon-chevron-left\" viewBox=\"0 0 1000 1000\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M646 125C629 125 613 133 604 142L308 442C296 454 292 471 292 487 292 504 296 521 308 533L604 854C617 867 629 875 646 875 663 875 679 871 692 858 704 846 713 829 713 812 713 796 708 779 692 767L438 487 692 225C700 217 708 204 708 187 708 171 704 154 692 142 675 129 663 125 646 125Z\"><\/path><\/svg>\t\t\t\t\t<\/div>\n\t\t\t\t\t<div class=\"elementor-swiper-button elementor-swiper-button-next\" role=\"button\" tabindex=\"0\">\n\t\t\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-eicon-chevron-right\" viewBox=\"0 0 1000 1000\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M696 533C708 521 713 504 713 487 713 471 708 454 696 446L400 146C388 133 375 125 354 125 338 125 325 129 313 142 300 154 292 171 292 187 292 204 296 221 308 233L563 492 304 771C292 783 288 800 288 817 288 833 296 850 308 863 321 871 338 875 354 875 371 875 388 867 400 854L696 533Z\"><\/path><\/svg>\t\t\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<div class=\"swiper-pagination\"><\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Hervannan Rivitalokolmiot &#8211; Korjausvelan realisoituminen Data-analyysi &#8211; Rivitalo kolmiot \/ Hervanta n. 80m2 \/ 22.7.2026 Velattoman hinnan ansa: N\u00e4in lasket oikean ostotarjouksen Mit\u00e4 tapahtuu asunnon arvolle ja asumiskuluille, kun piilev\u00e4 korjausvelka realisoituu? N\u00e4m\u00e4 graafit paljastavat&hellip;<\/p>\n","protected":false},"author":1,"featured_media":1538,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[96,50,51,52,53],"tags":[94,95,85,91,98,57,40,80,88,44,93,87,89,97,90,86,73,92,66],"class_list":["post-1532","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ensiasunto","category-markkina","category-markkina-analyysit","category-tietoa-osakkaille","category-sijoittajille","tag-asunnon-ostaminen","tag-asunto-oy-hannenkoti","tag-asunto-osakeyhtio","tag-asuntokaupan-sudenkuopat","tag-asuntokauppa","tag-asuntosijoittaminen","tag-hutiostos","tag-loorulyzer","tag-lvis-saneeraus","tag-mikrobivaurio","tag-piilokulut-asuntokaupassa","tag-putkiremontti","tag-sadesieni","tag-sijoitusasunto","tag-taloyhtion-piilevat-viat","tag-taloyhtion-riskit","tag-taloyhtiotieto","tag-tampere-hervanta-asunnot","tag-yhtiolaina"],"_links":{"self":[{"href":"https:\/\/asunto-osakeyhtio.fi\/Asoy\/index.php?rest_route=\/wp\/v2\/posts\/1532","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/asunto-osakeyhtio.fi\/Asoy\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/asunto-osakeyhtio.fi\/Asoy\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/asunto-osakeyhtio.fi\/Asoy\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/asunto-osakeyhtio.fi\/Asoy\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1532"}],"version-history":[{"count":14,"href":"https:\/\/asunto-osakeyhtio.fi\/Asoy\/index.php?rest_route=\/wp\/v2\/posts\/1532\/revisions"}],"predecessor-version":[{"id":1552,"href":"https:\/\/asunto-osakeyhtio.fi\/Asoy\/index.php?rest_route=\/wp\/v2\/posts\/1532\/revisions\/1552"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/asunto-osakeyhtio.fi\/Asoy\/index.php?rest_route=\/wp\/v2\/media\/1538"}],"wp:attachment":[{"href":"https:\/\/asunto-osakeyhtio.fi\/Asoy\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1532"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/asunto-osakeyhtio.fi\/Asoy\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1532"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/asunto-osakeyhtio.fi\/Asoy\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1532"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}