{"id":22662,"date":"2026-06-29T16:38:50","date_gmt":"2026-06-29T13:38:50","guid":{"rendered":"https:\/\/www.ehta.fi\/?page_id=22662"},"modified":"2026-06-29T16:57:38","modified_gmt":"2026-06-29T13:57:38","slug":"kysely","status":"publish","type":"page","link":"https:\/\/www.ehta.fi\/sv\/kysely\/","title":{"rendered":"Kysely"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"22662\" class=\"elementor elementor-22662\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-698b1b2 e-flex e-con-boxed e-con e-parent\" data-id=\"698b1b2\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-1bb62c2 e-con-full e-flex e-con e-child\" data-id=\"1bb62c2\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-62078c7 elementor-widget elementor-widget-heading\" data-id=\"62078c7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Selvit\u00e4 unelmiesi hirsirakennus<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7096793 elementor-widget elementor-widget-text-editor\" data-id=\"7096793\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Vastaa kolmeen lyhyeen kysymykseen, niin ehdotamme mist\u00e4 rakennuksesta l\u00e4hte\u00e4 \u2014 omaan tahtiisi, ilman ostopakkoa.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\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-f7cd0df e-flex e-con-boxed e-con e-parent\" data-id=\"f7cd0df\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2751582 elementor-widget-laptop__width-initial elementor-widget elementor-widget-html\" data-id=\"2751582\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- ===================================================================\n     EHTA \u2014 Kyselyosio, versio C (\"Mist\u00e4 l\u00e4hte\u00e4 liikkeelle\")\n     Liit\u00e4 KOKONAISUUDESSAAN Elementorin HTML-widgettiin \/ containeriin.\n     Keskitetty osio (max 940 px), hero + kysymykset + tulos.\n     Tyylit rajattu #ehta-kysely-juuren sis\u00e4\u00e4n (ei vaikuta muuhun sivuun).\n\n     S\u00c4\u00c4D\u00c4 alla CONFIG-osassa:\n       \u2022 maxWidth     \u2013 osion leveys (oletus 940px); laita '100%' jos haluat t\u00e4ysleve\u00e4n\n       \u2022 mallistoUrl  \u2013 \"Katso koko mallisto\" -linkki\n       \u2022 tarjousUrl \/ etaUrl \u2013 lomakesivujen osoitteet (valinnainen)\n       \u2022 PHOTOS       \u2013 mallikohtaiset kuvaosoitteet (ehta.fi median URL:t)\n     ==================================================================== -->\n\n<div id=\"ehta-kysely\">\n  <div class=\"ek-wrap\">\n\n    <div class=\"ek-hero\">\n      <p class=\"ek-eyebrow\">Mist\u00e4 l\u00e4hte\u00e4 liikkeelle<\/p>\n      <h1 class=\"ek-h1\" data-ek-herotitle>Etsit\u00e4\u00e4n suuntasi muutamalla kysymyksell\u00e4.<\/h1>\n      <p class=\"ek-sub\" data-ek-herosub>Vastaa kolmeen lyhyeen kysymykseen, niin ehdotamme mist\u00e4 rakennuksesta l\u00e4hte\u00e4.<\/p>\n    <\/div>\n\n    <div class=\"ek-topbar\" data-ek-topbar>\n      <button type=\"button\" class=\"ek-back\" data-ek-back hidden>\n        <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.9\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"m15 18-6-6 6-6\"><\/path><\/svg>\n        Takaisin\n      <\/button>\n      <div class=\"ek-prog\" data-ek-prog>\n        <div class=\"ek-prog-track\"><div class=\"ek-prog-fill\" data-ek-progfill><\/div><\/div>\n        <span class=\"ek-prog-label\" data-ek-proglabel>1 \/ 3<\/span>\n      <\/div>\n    <\/div>\n\n    <div data-ek-body aria-live=\"polite\"><\/div>\n\n  <\/div>\n<\/div>\n\n<style>\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Fira+Sans:ital,wght@0,400;0,500;0,600;0,700&display=swap');\n\n#ehta-kysely{\n  width:100%;\n  --maxw:940px;\n  --metsa:#004130; --kuusi:#0A674F; --varjo:#00221E;\n  --hiekka:#E8D8CC; --hiekka-80:#F5ECE4; --hiekka-95:#FAF6F2;\n  --tuli:#F15E49; --tuli-press:#D94B37;\n  --line:rgba(0,65,48,.14); --line-strong:rgba(0,65,48,.28);\n  --text-muted:rgba(0,34,30,.64);\n  --ease:cubic-bezier(.22,.61,.36,1);\n  --radius:14px; --radius-lg:20px; --radius-pill:999px;\n  --shadow:0 14px 44px rgba(0,34,30,.16);\n  --font-body:\"Fira Sans\",system-ui,-apple-system,sans-serif;\n  --font-display:\"Rebond Grotesque\",\"Fira Sans\",system-ui,sans-serif;\n  font-family:var(--font-body);\n  color:var(--varjo);\n  -webkit-font-smoothing:antialiased;\n  box-sizing:border-box;\n}\n#ehta-kysely *,#ehta-kysely *::before,#ehta-kysely *::after{box-sizing:border-box;}\n#ehta-kysely p,#ehta-kysely h1,#ehta-kysely h2,#ehta-kysely h3{margin:0;}\n#ehta-kysely button{font-family:var(--font-body);}\n\n#ehta-kysely .ek-wrap{width:min(100%,var(--maxw));margin-inline:auto;padding:clamp(1rem,3vw,2rem) 0;}\n\n\/* Hero *\/\n#ehta-kysely .ek-hero{text-align:center;max-width:640px;margin:0 auto clamp(1.6rem,4vw,2.6rem);}\n#ehta-kysely .ek-eyebrow{font-weight:600;font-size:.95rem;color:var(--tuli);margin-bottom:12px;}\n#ehta-kysely .ek-h1{font-family:var(--font-display);font-weight:700;letter-spacing:-.025em;line-height:1.04;font-size:clamp(2rem,4.4vw,3rem);color:var(--metsa);margin-bottom:14px;}\n#ehta-kysely .ek-sub{font-size:clamp(1.05rem,1.5vw,1.2rem);color:var(--text-muted);line-height:1.55;}\n\n\/* Yl\u00e4palkki: takaisin + edistyminen *\/\n#ehta-kysely .ek-topbar{position:relative;display:flex;align-items:center;justify-content:center;min-height:32px;margin-bottom:clamp(1.4rem,3vw,2.2rem);}\n#ehta-kysely .ek-back{position:absolute;left:0;background:none;border:none;cursor:pointer;font-size:.92rem;font-weight:500;color:var(--text-muted);padding:4px 2px;display:inline-flex;align-items:center;gap:6px;transition:color 160ms var(--ease);}\n#ehta-kysely .ek-back:hover{color:var(--tuli);}\n#ehta-kysely .ek-prog{display:flex;align-items:center;gap:12px;}\n#ehta-kysely .ek-prog-track{width:150px;height:8px;border-radius:999px;background:var(--line);overflow:hidden;}\n#ehta-kysely .ek-prog-fill{height:100%;border-radius:999px;background:var(--tuli);width:33%;transition:width 360ms var(--ease);}\n#ehta-kysely .ek-prog-label{font-size:.85rem;font-weight:600;color:var(--text-muted);white-space:nowrap;}\n\n\/* Kysymys *\/\n#ehta-kysely .ek-qtitle{text-align:center;font-family:var(--font-display);font-weight:700;letter-spacing:-.02em;line-height:1.1;font-size:clamp(1.7rem,3.4vw,2.4rem);color:var(--metsa);margin-bottom:clamp(1.4rem,3vw,2.2rem);}\n#ehta-kysely .ek-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr));gap:clamp(12px,1.6vw,16px);}\n#ehta-kysely .ek-tile{position:relative;display:flex;align-items:center;justify-content:space-between;gap:10px;cursor:pointer;background:#fff;border:1.5px solid var(--line);border-radius:var(--radius-lg);text-align:left;padding:clamp(14px,2vw,18px);transition:border-color 180ms var(--ease),box-shadow 180ms var(--ease),transform 180ms var(--ease);min-height:72px;}\n#ehta-kysely .ek-tile:hover{border-color:var(--metsa);transform:translateY(-2px);}\n#ehta-kysely .ek-tile.sel{border-color:var(--tuli);box-shadow:0 0 0 3px rgba(241,94,73,.16);}\n#ehta-kysely .ek-tile-txt{display:flex;flex-direction:column;gap:3px;}\n#ehta-kysely .ek-tile-label{font-family:var(--font-display);font-weight:600;font-size:clamp(1.05rem,1.8vw,1.2rem);color:var(--metsa);line-height:1.2;}\n#ehta-kysely .ek-tile-hint{font-size:.9rem;color:var(--text-muted);line-height:1.3;}\n#ehta-kysely .ek-tile-mark{flex-shrink:0;display:flex;color:transparent;transition:color 180ms var(--ease);}\n#ehta-kysely .ek-tile.sel .ek-tile-mark{color:var(--tuli);}\n\n\/* Tulos *\/\n#ehta-kysely .ek-result{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:clamp(1.8rem,4vw,3.4rem);align-items:start;text-align:left;}\n#ehta-kysely .ek-r-photo{position:relative;border-radius:var(--radius-lg);overflow:hidden;aspect-ratio:4\/5;background:var(--hiekka-80) center\/cover no-repeat;box-shadow:var(--shadow);display:flex;align-items:flex-end;}\n#ehta-kysely .ek-r-badge{position:absolute;top:16px;left:16px;background:var(--tuli);color:#fff;font-weight:600;font-size:.8rem;padding:6px 14px;border-radius:999px;}\n#ehta-kysely .ek-r-phlabel{font-family:var(--font-display);font-weight:600;color:var(--metsa);background:rgba(251,244,239,.85);padding:8px 14px;border-radius:10px;margin:14px;font-size:.95rem;}\n#ehta-kysely .ek-r-name{font-family:var(--font-display);font-weight:700;letter-spacing:-.025em;line-height:1.02;font-size:clamp(2.2rem,4.6vw,3.2rem);color:var(--metsa);margin-bottom:6px;}\n#ehta-kysely .ek-r-meta{font-size:1.1rem;color:var(--kuusi);font-weight:500;margin-bottom:18px;}\n#ehta-kysely .ek-r-mood{font-size:1.1rem;line-height:1.6;color:var(--varjo);margin-bottom:22px;}\n#ehta-kysely .ek-alt{display:flex;align-items:center;gap:14px;padding:14px 0;margin-bottom:22px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);}\n#ehta-kysely .ek-alt-thumb{width:56px;height:56px;border-radius:10px;flex-shrink:0;background:var(--hiekka-80) center\/cover no-repeat;}\n#ehta-kysely .ek-alt-body{flex:1;min-width:0;}\n#ehta-kysely .ek-alt-kicker{font-size:.85rem;color:var(--text-muted);margin-bottom:2px;}\n#ehta-kysely .ek-alt-name{font-family:var(--font-display);font-weight:600;font-size:1.05rem;color:var(--metsa);}\n\n\/* Painikkeet *\/\n#ehta-kysely .ek-ctas{display:flex;flex-direction:column;gap:11px;}\n#ehta-kysely .ek-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;width:100%;cursor:pointer;font-family:var(--font-display);font-weight:600;font-size:1.0625rem;padding:16px 26px;border-radius:var(--radius-pill);border:1.5px solid transparent;transition:background 180ms var(--ease),border-color 180ms var(--ease);text-decoration:none;}\n#ehta-kysely .ek-btn-cta{background:var(--tuli);color:#fff;}\n#ehta-kysely .ek-btn-cta:hover{background:var(--tuli-press);}\n#ehta-kysely .ek-btn-outline{background:transparent;color:var(--metsa);border-color:var(--line-strong);}\n#ehta-kysely .ek-btn-outline:hover{background:rgba(0,65,48,.05);}\n\n\/* Polku \/ lomake *\/\n#ehta-kysely .ek-path{margin-bottom:16px;}\n#ehta-kysely .ek-path-title{font-family:var(--font-display);font-weight:700;font-size:1.3rem;color:var(--metsa);margin-bottom:6px;}\n#ehta-kysely .ek-path-blurb{font-size:.98rem;line-height:1.55;color:var(--text-muted);margin-bottom:16px;}\n#ehta-kysely .ek-fields{display:flex;flex-direction:column;gap:10px;margin-bottom:14px;}\n#ehta-kysely .ek-input{width:100%;padding:14px 16px;border:1px solid var(--line-strong);border-radius:12px;font-family:var(--font-body);font-size:1rem;color:var(--varjo);background:var(--hiekka-95);outline:none;transition:border-color 160ms var(--ease);}\n#ehta-kysely .ek-input:focus{border-color:var(--metsa);}\n#ehta-kysely .ek-input.ek-err{border-color:var(--tuli);}\n#ehta-kysely .ek-path-back{display:block;margin:10px auto 0;background:none;border:none;cursor:pointer;color:var(--text-muted);font-size:.92rem;padding:4px;}\n#ehta-kysely .ek-thanks-title{font-family:var(--font-display);font-weight:700;font-size:1.4rem;color:var(--metsa);margin-bottom:8px;}\n#ehta-kysely .ek-thanks-text{font-size:1.02rem;line-height:1.6;color:var(--kuusi);margin-bottom:14px;}\n#ehta-kysely .ek-thanks-restart{background:none;border:none;cursor:pointer;color:var(--tuli);font-weight:600;font-size:.96rem;padding:0;}\n\n\/* Alalinkit *\/\n#ehta-kysely .ek-foot{margin-top:20px;display:flex;align-items:center;gap:20px;flex-wrap:wrap;}\n#ehta-kysely .ek-link{color:var(--metsa);font-weight:600;font-size:.96rem;text-decoration:none;transition:color 160ms var(--ease);}\n#ehta-kysely .ek-link:hover{color:var(--tuli);}\n#ehta-kysely .ek-restart{background:none;border:none;cursor:pointer;color:var(--text-muted);font-size:.92rem;padding:2px;}\n\n#ehta-kysely .ek-fade{animation:ek-fade 320ms var(--ease);}\n@keyframes ek-fade{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:none;}}\n@media (prefers-reduced-motion:reduce){#ehta-kysely .ek-fade{animation:none;}}\n\n\/* Mobiili: tulos yhteen sarakkeeseen *\/\n@media (max-width:760px){\n  #ehta-kysely .ek-result{grid-template-columns:1fr;}\n  #ehta-kysely .ek-back{position:static;margin-right:auto;}\n  #ehta-kysely .ek-topbar{justify-content:space-between;}\n}\n<\/style>\n\n<script>\n(function(){\n  var root = document.getElementById('ehta-kysely');\n  if(!root || root.dataset.ekInit) return;\n  root.dataset.ekInit = '1';\n\n  \/* ====================== S\u00c4\u00c4DETT\u00c4V\u00c4T ASETUKSET ====================== *\/\n  var CONFIG = {\n    maxWidth: '940px',                  \/\/ osion leveys; '100%' = t\u00e4ysleve\u00e4\n    mallistoUrl: '\/mallisto',\n    tarjousUrl: '',                     \/\/ esim. '\/pyyda-tarjous' \u2014 jos tyhj\u00e4, mini-lomake + Kiitos\n    etaUrl: '',                         \/\/ esim. '\/varaa-aika'   \u2014 jos tyhj\u00e4, mini-lomake + Kiitos\n    PHOTOS: {\n      \/\/ 'Pihasauna 13': 'https:\/\/ehta.fi\/wp-content\/uploads\/...\/pihasauna-13.jpg',\n      \/\/ 'Saunam\u00f6kki 25': '...', 'M\u00f6kki 25': '...', 'Villa 41': '...'\n    }\n  };\n  root.style.setProperty('--maxw', CONFIG.maxWidth);\n\n  \/* ====================== DATA (hinnat br\u00e4ndiohjeen mukaan) ====================== *\/\n  var CATS = {\n    sauna:    { label:'Pihasaunat', single:'Pihasauna', buckets:{'1-2':7,'3-4':13,'5+':16},\n                sizes:{7:12100,10:15300,13:19300,16:22000},\n                mood:'Pieni rakennus, iso hetki \u2014 l\u00f6yly l\u00e4hell\u00e4, omalla pihalla.' },\n    oleskelu: { label:'Saunam\u00f6kit', single:'Saunam\u00f6kki', buckets:{'1-2':20,'3-4':25,'5+':30},\n                sizes:{20:27300,25:31400,30:35300},\n                mood:'L\u00f6ylyt ja yhteinen oleskelutila saman katon alla. Ilta venyy luontevasti.' },\n    mokki:    { label:'M\u00f6kit', single:'M\u00f6kki', buckets:{'1-2':20,'3-4':25,'5+':30},\n                sizes:{20:22700,25:26600,30:30600},\n                mood:'Oma rauha mets\u00e4n tai veden \u00e4\u00e4rell\u00e4, k\u00e4ytt\u00f6valmiina.' },\n    villa:    { label:'Villat', single:'Villa', buckets:{'1-2':30,'3-4':41,'5+':46},\n                sizes:{30:44500,41:58700,46:65700},\n                mood:'Tilaa koko porukalle, ymp\u00e4ri vuoden. Vapaa-ajan koti, johon j\u00e4\u00e4.' }\n  };\n\n  var QUESTIONS = {\n    q1:{ key:'goal', next:'q2', title:'Mihin etsit ratkaisua?', opts:[\n      {value:'sauna',    label:'Sauna',                     hint:'Pelkk\u00e4 saunarakennus'},\n      {value:'oleskelu', label:'Sauna + oleskelutila',      hint:'L\u00f6ylyt ja yhteinen tila'},\n      {value:'mokki',    label:'M\u00f6kki',                     hint:'Pieni vapaa-ajan koti'},\n      {value:'villa',    label:'Isompi vapaa-ajan asunto',  hint:'Tilaa ymp\u00e4ri vuoden'} ]},\n    q2:{ key:'count', next:'q3', title:'Kuinka monelle?', opts:[\n      {value:'1-2', label:'1\u20132', hint:'Omaa rauhaa kahdelle'},\n      {value:'3-4', label:'3\u20134', hint:'Perheelle'},\n      {value:'5+',  label:'5+',  hint:'Isommalle porukalle'} ]},\n    q3:{ key:'stage', next:'result', title:'Miss\u00e4 vaiheessa olet?', opts:[\n      {value:'haaveilen',    label:'Haaveilen',                   hint:'Katselen ja ker\u00e4\u00e4n ajatuksia'},\n      {value:'suunnittelen', label:'Suunnittelen t\u00e4lle vuodelle', hint:'Aikataulu alkaa hahmottua'},\n      {value:'valmis',       label:'Valmis etenem\u00e4\u00e4n',            hint:'Haluan jotain konkreettista'} ]}\n  };\n\n  var ORDER = ['q1','q2','q3','result'];\n  var state = { step:'q1', goal:null, count:null, stage:null, path:null, sent:false, nimi:'', yhteys:'' };\n\n  var body      = root.querySelector('[data-ek-body]');\n  var heroTitle = root.querySelector('[data-ek-herotitle]');\n  var heroSub   = root.querySelector('[data-ek-herosub]');\n  var topbar    = root.querySelector('[data-ek-topbar]');\n  var backBtn   = root.querySelector('[data-ek-back]');\n  var prog      = root.querySelector('[data-ek-prog]');\n  var progFill  = root.querySelector('[data-ek-progfill]');\n  var progLabel = root.querySelector('[data-ek-proglabel]');\n\n  function fmt(n){ return n.toLocaleString('fi-FI').replace(\/\\s\/g,'\\u00a0') + '\\u00a0\u20ac'; }\n  function esc(s){ return String(s).replace(\/[&<>\"]\/g,function(c){return {'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;'}[c];}); }\n  function photoFor(name){ return CONFIG.PHOTOS[name] || ''; }\n  function toTop(){ try{ root.scrollIntoView({behavior:'smooth',block:'start'}); }catch(e){} }\n\n  function render(){\n    var isQ = state.step==='q1'||state.step==='q2'||state.step==='q3';\n    var isResult = state.step==='result';\n    var qNum = {q1:1,q2:2,q3:3}[state.step]||1;\n\n    heroTitle.textContent = isResult ? 'T\u00e4st\u00e4 voisi l\u00e4hte\u00e4 liikkeelle' : 'Etsit\u00e4\u00e4n suuntasi muutamalla kysymyksell\u00e4.';\n    heroSub.textContent   = isResult ? 'Ehdotuksemme valintojesi pohjalta \u2014 ilman ostopakkoa.' : 'Vastaa kolmeen lyhyeen kysymykseen, niin ehdotamme mist\u00e4 rakennuksesta l\u00e4hte\u00e4.';\n\n    backBtn.hidden = (state.step==='q1');\n    prog.style.display = isQ ? 'flex' : 'none';\n    topbar.style.display = (state.step==='q1' && false) ? 'none' : 'flex';\n    if(isQ){ progFill.style.width = Math.round((qNum\/3)*100)+'%'; progLabel.textContent = qNum+' \/ 3'; }\n\n    if(isQ){ renderQuestion(QUESTIONS[state.step]); } else { renderResult(); }\n  }\n\n  function renderQuestion(q){\n    var cur = state[q.key];\n    var html = '<div class=\"ek-fade\"><h2 class=\"ek-qtitle\">'+esc(q.title)+'<\/h2><div class=\"ek-grid\">';\n    q.opts.forEach(function(o){\n      var sel = cur===o.value;\n      html += '<button type=\"button\" class=\"ek-tile'+(sel?' sel':'')+'\" data-val=\"'+esc(o.value)+'\">'\n        +   '<span class=\"ek-tile-txt\"><span class=\"ek-tile-label\">'+esc(o.label)+'<\/span>'\n        +   '<span class=\"ek-tile-hint\">'+esc(o.hint)+'<\/span><\/span>'\n        +   '<span class=\"ek-tile-mark\"><svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M20 6 9 17l-5-5\"><\/path><\/svg><\/span>'\n        + '<\/button>';\n    });\n    html += '<\/div><\/div>';\n    body.innerHTML = html;\n    body.querySelectorAll('.ek-tile').forEach(function(btn){\n      btn.addEventListener('click', function(){ select(q, btn.getAttribute('data-val')); });\n    });\n  }\n\n  function select(q, val){ state[q.key]=val; state.step=q.next; render(); }\n\n  function resultModels(){\n    var cat = CATS[state.goal];\n    var size = cat.buckets[state.count];\n    var sizes = Object.keys(cat.sizes).map(Number).sort(function(a,b){return a-b;});\n    var pi = sizes.indexOf(size);\n    var altSize, altLabel;\n    if(pi>0){ altSize=sizes[pi-1]; altLabel='Tai hieman pienempi'; }\n    else { altSize=sizes[pi+1]; altLabel='Tai hieman isompi'; }\n    return {\n      cat:cat,\n      primary:{ name:cat.single+' '+size, area:size+'\\u00a0m\u00b2', price:'alk. '+fmt(cat.sizes[size]) },\n      alt:{ name:cat.single+' '+altSize, area:altSize+'\\u00a0m\u00b2', price:'alk. '+fmt(cat.sizes[altSize]) },\n      altLabel:altLabel\n    };\n  }\n\n  function renderResult(){\n    if(!state.goal || !state.count){ state.step='q1'; render(); return; }\n    var r = resultModels();\n    var pPhoto = photoFor(r.primary.name);\n    var aPhoto = photoFor(r.alt.name);\n\n    var html = '<div class=\"ek-fade ek-result\">';\n\n    \/\/ Vasen: kuva\n    html += '<div class=\"ek-r-photo\" role=\"img\" aria-label=\"'+esc(r.primary.name)+'\"'\n         +  (pPhoto?(' style=\"background-image:url('+esc(pPhoto)+')\"'):'')+'>'\n         +  '<span class=\"ek-r-badge\">'+esc(r.cat.label)+'<\/span>'\n         +  (pPhoto?'':'<span class=\"ek-r-phlabel\">'+esc(r.primary.name)+'<\/span>')+'<\/div>';\n\n    \/\/ Oikea: tiedot\n    html += '<div>';\n    html += '<h2 class=\"ek-r-name\">'+esc(r.primary.name)+'<\/h2>';\n    html += '<p class=\"ek-r-meta\">'+r.primary.area+' \u00b7 '+esc(r.primary.price)+'<\/p>';\n    html += '<p class=\"ek-r-mood\">'+esc(r.cat.mood)+'<\/p>';\n\n    html += '<div class=\"ek-alt\">'\n         +  '<div class=\"ek-alt-thumb\" role=\"img\" aria-label=\"'+esc(r.alt.name)+'\"'\n         +  (aPhoto?(' style=\"background-image:url('+esc(aPhoto)+')\"'):'')+'><\/div>'\n         +  '<div class=\"ek-alt-body\"><p class=\"ek-alt-kicker\">'+esc(r.altLabel)+'<\/p>'\n         +  '<p class=\"ek-alt-name\">'+esc(r.alt.name)+' \u00b7 '+esc(r.alt.price)+'<\/p><\/div><\/div>';\n\n    if(state.path){\n      if(state.sent){\n        html += '<div class=\"ek-path\"><h3 class=\"ek-thanks-title\">Kiitos.<\/h3>'\n             +  '<p class=\"ek-thanks-text\">Olemme sinuun yhteydess\u00e4 pian \u2014 ilman kiirett\u00e4 ja ilman ostopakkoa.<\/p>'\n             +  '<button type=\"button\" class=\"ek-thanks-restart\" data-ek-restart>Aloita alusta<\/button><\/div>';\n      } else {\n        var pt = state.path==='eta' ? 'Et\u00e4suunnittelu' : 'Alustava tarjous';\n        var pb = state.path==='eta'\n          ? 'K\u00e4ymme toiveesi l\u00e4pi rauhassa, et\u00e4yhteydell\u00e4. Sovitaan aika, joka sopii sinulle.'\n          : 'Kokoamme sinulle alustavan hinta-arvion valinnoistasi. Ei sitoumusta.';\n        html += '<div class=\"ek-path\"><h3 class=\"ek-path-title\">'+esc(pt)+'<\/h3>'\n             +  '<p class=\"ek-path-blurb\">'+esc(pb)+'<\/p>'\n             +  '<div class=\"ek-fields\">'\n             +  '<input class=\"ek-input\" type=\"text\" data-ek-nimi placeholder=\"Nimi\" value=\"'+esc(state.nimi)+'\" autocomplete=\"name\">'\n             +  '<input class=\"ek-input\" type=\"text\" data-ek-yhteys placeholder=\"Puhelin tai s\u00e4hk\u00f6posti\" value=\"'+esc(state.yhteys)+'\" autocomplete=\"email\">'\n             +  '<\/div>'\n             +  '<button type=\"button\" class=\"ek-btn ek-btn-cta\" data-ek-send>L\u00e4het\u00e4<\/button>'\n             +  '<button type=\"button\" class=\"ek-path-back\" data-ek-closepath>Takaisin<\/button><\/div>';\n      }\n    } else {\n      html += '<div class=\"ek-ctas\">'\n           +  '<button type=\"button\" class=\"ek-btn ek-btn-cta\" data-ek-path=\"eta\">Varaa et\u00e4suunnittelu<\/button>'\n           +  '<button type=\"button\" class=\"ek-btn ek-btn-outline\" data-ek-path=\"tarjous\">Pyyd\u00e4 alustava tarjous<\/button><\/div>';\n    }\n\n    html += '<div class=\"ek-foot\">'\n         +  '<a class=\"ek-link\" href=\"'+esc(CONFIG.mallistoUrl)+'\">Katso koko mallisto \u2192<\/a>'\n         +  '<button type=\"button\" class=\"ek-restart\" data-ek-restart>Aloita alusta<\/button><\/div>';\n\n    html += '<\/div><\/div>';\n    body.innerHTML = html;\n    bindResult();\n  }\n\n  function bindResult(){\n    body.querySelectorAll('[data-ek-path]').forEach(function(b){\n      b.addEventListener('click', function(){ openPath(b.getAttribute('data-ek-path')); });\n    });\n    var s=body.querySelector('[data-ek-send]'); if(s) s.addEventListener('click', send);\n    var cp=body.querySelector('[data-ek-closepath]'); if(cp) cp.addEventListener('click', function(){ state.path=null; render(); });\n    body.querySelectorAll('[data-ek-restart]').forEach(function(b){ b.addEventListener('click', restart); });\n    var ni=body.querySelector('[data-ek-nimi]'); if(ni) ni.addEventListener('input', function(e){ state.nimi=e.target.value; });\n    var yh=body.querySelector('[data-ek-yhteys]'); if(yh) yh.addEventListener('input', function(e){ state.yhteys=e.target.value; });\n  }\n\n  function openPath(which){\n    var url = which==='eta' ? CONFIG.etaUrl : CONFIG.tarjousUrl;\n    if(url){\n      var r = resultModels();\n      var q = 'malli='+encodeURIComponent(r.primary.name)\n            + '&kategoria='+encodeURIComponent(r.cat.label)\n            + '&vaihe='+encodeURIComponent(state.stage||'');\n      window.location.href = url + (url.indexOf('?')>-1?'&':'?') + q;\n      return;\n    }\n    state.path=which; state.sent=false; render();\n  }\n\n  function send(){\n    var ni=body.querySelector('[data-ek-nimi]');\n    var yh=body.querySelector('[data-ek-yhteys]');\n    var ok=true;\n    if(!state.nimi.trim()){ ni.classList.add('ek-err'); ok=false; }\n    if(!state.yhteys.trim()){ yh.classList.add('ek-err'); ok=false; }\n    if(!ok) return;\n    \/\/ T\u00e4h\u00e4n voi liitt\u00e4\u00e4 oman l\u00e4hetyksen (fetch POST \/ Elementor-lomake \/ dataLayer-tapahtuma).\n    state.sent=true; render();\n  }\n\n  function restart(){ state={ step:'q1', goal:null, count:null, stage:null, path:null, sent:false, nimi:'', yhteys:'' }; render(); toTop(); }\n\n  backBtn.addEventListener('click', function(){\n    var i=ORDER.indexOf(state.step);\n    if(i>0){ state.step=ORDER[i-1]; state.path=null; state.sent=false; render(); }\n  });\n\n  render();\n})();\n<\/script>\t\t\t\t<\/div>\n\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>Selvit\u00e4 unelmiesi hirsirakennus Vastaa kolmeen lyhyeen kysymykseen, niin ehdotamme mist\u00e4 rakennuksesta l\u00e4hte\u00e4 \u2014 omaan tahtiisi, ilman ostopakkoa. Mist\u00e4 l\u00e4hte\u00e4 liikkeelle Etsit\u00e4\u00e4n suuntasi muutamalla kysymyksell\u00e4. Vastaa kolmeen lyhyeen kysymykseen, niin ehdotamme mist\u00e4 rakennuksesta l\u00e4hte\u00e4. Takaisin 1 \/ 3<\/p>","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_jet_sm_ready_style":"","_jet_sm_style":"","_jet_sm_controls_values":"","_jet_sm_fonts_collection":"","_jet_sm_fonts_links":"","footnotes":""},"class_list":["post-22662","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.1 (Yoast SEO v28.1) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Kysely - Ehta<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.ehta.fi\/sv\/kysely\/\" \/>\n<meta property=\"og:locale\" content=\"sv_SE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kysely\" \/>\n<meta property=\"og:description\" content=\"Selvit\u00e4 unelmiesi hirsirakennus Vastaa kolmeen lyhyeen kysymykseen, niin ehdotamme mist\u00e4 rakennuksesta l\u00e4hte\u00e4 \u2014 omaan tahtiisi, ilman ostopakkoa. Mist\u00e4 l\u00e4hte\u00e4 liikkeelle Etsit\u00e4\u00e4n suuntasi muutamalla kysymyksell\u00e4. Vastaa kolmeen lyhyeen kysymykseen, niin ehdotamme mist\u00e4 rakennuksesta l\u00e4hte\u00e4. Takaisin 1 \/ 3\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.ehta.fi\/sv\/kysely\/\" \/>\n<meta property=\"og:site_name\" content=\"Ehta\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-29T13:57:38+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Ber\u00e4knad l\u00e4stid\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minut\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.ehta.fi\\\/kysely\\\/\",\"url\":\"https:\\\/\\\/www.ehta.fi\\\/kysely\\\/\",\"name\":\"Kysely - Ehta\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.ehta.fi\\\/#website\"},\"datePublished\":\"2026-06-29T13:38:50+00:00\",\"dateModified\":\"2026-06-29T13:57:38+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.ehta.fi\\\/kysely\\\/#breadcrumb\"},\"inLanguage\":\"sv-SE\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.ehta.fi\\\/kysely\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.ehta.fi\\\/kysely\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.ehta.fi\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kysely\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.ehta.fi\\\/#website\",\"url\":\"https:\\\/\\\/www.ehta.fi\\\/\",\"name\":\"Ehta\",\"description\":\"Pihasaunat, saunam\u00f6kit, m\u00f6kit ja aitat\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.ehta.fi\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"sv-SE\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Kysely - Ehta","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.ehta.fi\/sv\/kysely\/","og_locale":"sv_SE","og_type":"article","og_title":"Kysely","og_description":"Selvit\u00e4 unelmiesi hirsirakennus Vastaa kolmeen lyhyeen kysymykseen, niin ehdotamme mist\u00e4 rakennuksesta l\u00e4hte\u00e4 \u2014 omaan tahtiisi, ilman ostopakkoa. Mist\u00e4 l\u00e4hte\u00e4 liikkeelle Etsit\u00e4\u00e4n suuntasi muutamalla kysymyksell\u00e4. Vastaa kolmeen lyhyeen kysymykseen, niin ehdotamme mist\u00e4 rakennuksesta l\u00e4hte\u00e4. Takaisin 1 \/ 3","og_url":"https:\/\/www.ehta.fi\/sv\/kysely\/","og_site_name":"Ehta","article_modified_time":"2026-06-29T13:57:38+00:00","twitter_card":"summary_large_image","twitter_misc":{"Ber\u00e4knad l\u00e4stid":"1 minut"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.ehta.fi\/kysely\/","url":"https:\/\/www.ehta.fi\/kysely\/","name":"Kysely - Ehta","isPartOf":{"@id":"https:\/\/www.ehta.fi\/#website"},"datePublished":"2026-06-29T13:38:50+00:00","dateModified":"2026-06-29T13:57:38+00:00","breadcrumb":{"@id":"https:\/\/www.ehta.fi\/kysely\/#breadcrumb"},"inLanguage":"sv-SE","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.ehta.fi\/kysely\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.ehta.fi\/kysely\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.ehta.fi\/"},{"@type":"ListItem","position":2,"name":"Kysely"}]},{"@type":"WebSite","@id":"https:\/\/www.ehta.fi\/#website","url":"https:\/\/www.ehta.fi\/","name":"Ehta","description":"Tr\u00e4dg\u00e5rdsbastu, bastustugor, stugor och f\u00f6rr\u00e5d","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.ehta.fi\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"sv-SE"}]}},"_links":{"self":[{"href":"https:\/\/www.ehta.fi\/sv\/wp-json\/wp\/v2\/pages\/22662","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ehta.fi\/sv\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.ehta.fi\/sv\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.ehta.fi\/sv\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ehta.fi\/sv\/wp-json\/wp\/v2\/comments?post=22662"}],"version-history":[{"count":16,"href":"https:\/\/www.ehta.fi\/sv\/wp-json\/wp\/v2\/pages\/22662\/revisions"}],"predecessor-version":[{"id":22679,"href":"https:\/\/www.ehta.fi\/sv\/wp-json\/wp\/v2\/pages\/22662\/revisions\/22679"}],"wp:attachment":[{"href":"https:\/\/www.ehta.fi\/sv\/wp-json\/wp\/v2\/media?parent=22662"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}