{"id":41290,"date":"2025-04-08T13:26:02","date_gmt":"2025-04-08T10:26:02","guid":{"rendered":"https:\/\/www.saaristonpuoti.fi\/?page_id=41290"},"modified":"2026-07-07T00:36:40","modified_gmt":"2026-07-06T21:36:40","slug":"elamyspuoti","status":"publish","type":"page","link":"https:\/\/www.saaristonpuoti.fi\/en\/elamy-shop\/","title":{"rendered":"Experience shop"},"content":{"rendered":"<div data-elementor-type=\"wp-page\" data-elementor-id=\"41290\" class=\"elementor elementor-41290\">\n\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-dfd69a8 e-container--column e-container\" data-id=\"dfd69a8\" data-element_type=\"container\">\t\t\t\t<div class=\"elementor-element elementor-element-5a53f5f elementor-widget__width-inherit elementor-widget elementor-widget-html\" data-id=\"5a53f5f\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<!-- Saariston Puoti \/ El\u00e4myspuoti v1 block \u2014 generated 2026-07-06T18:58:17.465Z -->\n<!-- Source: serve\/elamyspuoti-v1\/build-wp-block.mjs                    -->\n<!-- Data baked as fallback, then live-fetched from data.puoti.link.      -->\n<!-- Cancelled\/sold-out departures self-heal on the next API refresh.     -->\n\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link rel=\"stylesheet\" href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700&family=League+Spartan:wght@500;600;700;800;900&display=swap\">\n\n<script type=\"text\/javascript\" src=\"https:\/\/widgets.bokun.io\/assets\/javascripts\/apps\/build\/BokunWidgetsLoader.js?bookingChannelUUID=16636f67-7269-4387-bf31-3af308292416\" async><\/script>\n\n<style>\n:root {\n  --ep26-red:#f04d4c; --ep26-red-hover:#d83e3d;\n  --ep26-ink:#1a1a1a; --ep26-ink-soft:#555;\n  --ep26-line:rgba(12,12,12,.08); --ep26-line-strong:rgba(12,12,12,.16);\n  --ep26-bg:#faf7f3; --ep26-bg-card:#fff;\n  --ep26-amber:#f0a83d; --ep26-green:#2d8a4b; --ep26-grey:#9a9a9a;\n  --ep26-shadow:0 10px 26px rgba(12,12,12,.08);\n}\nbody{margin:0;background:var(--ep26-bg);font-family:'Inter',system-ui,sans-serif;color:var(--ep26-ink)}\n.ep26-page{max-width:1180px;margin:0 auto;padding:24px 18px 80px}\n.ep26-page *{box-sizing:border-box}\n.ep26-hero{padding:40px 8px 28px;text-align:center}\n.ep26-hero-kicker{font-family:'League Spartan',sans-serif;font-weight:800;font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--ep26-red);margin:0 0 8px}\n.ep26-hero h1{font-family:'League Spartan',sans-serif;font-weight:800;font-size:clamp(34px,5vw,54px);line-height:1.02;letter-spacing:-.01em;margin:0 0 14px}\n.ep26-hero p{max-width:720px;margin:0 auto;color:var(--ep26-ink-soft);font-size:16px;line-height:1.55}\n.ep26-upcoming{background:var(--ep26-bg-card);border:1px solid var(--ep26-line);border-radius:18px;padding:18px;margin:8px 0 26px;box-shadow:var(--ep26-shadow)}\n.ep26-upcoming-head{display:flex;justify-content:space-between;align-items:flex-end;gap:14px;flex-wrap:wrap;margin:0 0 14px}\n.ep26-upcoming-kicker{font-family:'League Spartan',sans-serif;font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--ep26-red);margin:0 0 5px}\n.ep26-upcoming h2{font-family:'League Spartan',sans-serif;font-size:28px;line-height:1.05;font-weight:800;margin:0}\n.ep26-upcoming-note{font-size:13px;color:var(--ep26-ink-soft);margin:0;line-height:1.45;max-width:440px}\n.ep26-upcoming-list{display:grid;gap:8px}\n.ep26-departure{display:grid;grid-template-columns:88px minmax(0,1fr) auto;gap:12px;align-items:center;padding:12px;border:1px solid var(--ep26-line);border-radius:12px;background:#fff}\n.ep26-departure-date{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:58px;border-radius:10px;background:rgba(240,77,76,.08);color:var(--ep26-red);font-family:'League Spartan',sans-serif;text-transform:uppercase;line-height:1}\n.ep26-departure-date strong{font-size:13px;font-weight:800;letter-spacing:.08em}\n.ep26-departure-date span{font-size:22px;font-weight:800;margin-top:3px}\n.ep26-departure-main{min-width:0}\n.ep26-departure-time{font-family:'League Spartan',sans-serif;font-size:12px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--ep26-ink-soft);margin:0 0 4px}\n.ep26-departure-title{font-family:'League Spartan',sans-serif;font-size:18px;font-weight:700;line-height:1.16;margin:0;color:var(--ep26-ink)}\n.ep26-departure-label{font-size:12px;color:var(--ep26-ink-soft);line-height:1.35;margin:4px 0 0}\n.ep26-departure-price{font-family:'League Spartan',sans-serif;font-weight:700;font-size:13px;color:var(--ep26-ink);margin:5px 0 0}\n.ep26-departure-price em{font-style:normal;font-weight:500;color:var(--ep26-ink-soft);font-size:10px;text-transform:uppercase;letter-spacing:.08em;margin-right:4px}\n.ep26-departure-side{display:flex;align-items:center;gap:10px}\n.ep26-departure-stock{font-family:'League Spartan',sans-serif;font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--ep26-green);white-space:nowrap}\n.ep26-departure-stock.is-low{color:var(--ep26-amber)}\n.ep26-mini-btn{display:inline-flex;align-items:center;justify-content:center;min-height:38px;padding:10px 13px;border-radius:9px;border:1.5px solid var(--ep26-red);background:var(--ep26-red);color:#fff;font-family:'League Spartan',sans-serif;font-size:12px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;cursor:pointer}\n.ep26-upcoming-empty{padding:16px;text-align:center;color:var(--ep26-ink-soft);font-size:14px;border:1px dashed var(--ep26-line-strong);border-radius:12px}\n.ep26-loadmore{display:block;width:100%;margin:10px 0 2px;padding:11px 16px;background:transparent;border:1px solid var(--ep26-line-strong);border-radius:12px;color:var(--ep26-ink);font-family:'League Spartan',sans-serif;font-weight:700;font-size:14px;letter-spacing:.02em;cursor:pointer;transition:background .15s,border-color .15s,color .15s}\n.ep26-loadmore:hover{background:var(--ep26-red);border-color:var(--ep26-red);color:#fff}\n.ep26-controls{background:var(--ep26-bg-card);border:1px solid var(--ep26-line);border-radius:18px;padding:18px 18px 8px;margin:0 0 28px;box-shadow:var(--ep26-shadow)}\n.ep26-controls-top{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap;margin-bottom:8px}\n.ep26-count{font-family:'League Spartan',sans-serif;font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--ep26-ink)}\n.ep26-reset{font-family:'League Spartan',sans-serif;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--ep26-red);background:transparent;border:0;cursor:pointer;padding:6px 8px;border-radius:6px}\n.ep26-reset:hover{background:rgba(240,77,76,.08)}\n.ep26-filter-block{padding:10px 0;border-top:1px solid var(--ep26-line)}\n.ep26-filter-block:first-of-type{border-top:0}\n.ep26-filter-label{font-family:'League Spartan',sans-serif;font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--ep26-ink-soft);display:block;margin:0 0 8px}\n.ep26-filter-row{display:flex;flex-wrap:wrap;gap:8px}\n.ep26-filter{display:inline-flex;align-items:center;gap:6px;font-family:'League Spartan',sans-serif;font-size:13px;font-weight:600;letter-spacing:.03em;text-transform:uppercase;padding:8px 12px;border:1px solid var(--ep26-line-strong);background:#fff;color:var(--ep26-ink);border-radius:999px;cursor:pointer;transition:all .15s ease}\n.ep26-filter:hover{border-color:var(--ep26-red);color:var(--ep26-red)}\n.ep26-filter[aria-pressed=\"true\"]{background:var(--ep26-red);color:#fff;border-color:var(--ep26-red)}\n.ep26-section{margin:28px 0 12px}\n.ep26-section.is-empty{display:none}\n.ep26-section-head{display:flex;justify-content:space-between;align-items:flex-end;flex-wrap:wrap;gap:12px;margin:0 4px 16px}\n.ep26-section-title{font-family:'League Spartan',sans-serif;font-weight:800;font-size:28px;line-height:1.05;margin:0;display:flex;align-items:center;gap:10px}\n.ep26-section-icon{font-size:26px;line-height:1}\n.ep26-section-desc{color:var(--ep26-ink-soft);max-width:560px;font-size:14px;line-height:1.5;margin:0}\n.ep26-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,380px));gap:18px;justify-content:start}\n.ep26-card{background:var(--ep26-bg-card);border:1px solid var(--ep26-line);border-radius:18px;overflow:hidden;display:flex;flex-direction:column;box-shadow:var(--ep26-shadow);transition:transform .18s ease,box-shadow .18s ease}\n.ep26-card:hover{transform:translateY(-2px);box-shadow:0 22px 44px -22px rgba(192,40,38,.4),0 4px 10px rgba(0,0,0,.10)}\n.ep26-card[hidden]{display:none !important}\n.ep26-card-img{position:relative;aspect-ratio:16\/10;background:#eaeaea linear-gradient(135deg,#ddd,#f3f3f3);overflow:hidden}\n.ep26-card-img img{width:100%;height:100%;object-fit:cover;display:block}\n.ep26-card-img::after{content:\"\";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,0) 50%,rgba(0,0,0,.18) 100%);pointer-events:none}\n.ep26-tags{position:absolute;top:12px;left:12px;display:flex;gap:6px;flex-wrap:wrap;max-width:calc(100% - 24px)}\n.ep26-tag{font-family:'League Spartan',sans-serif;font-size:10px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;padding:5px 9px;border-radius:999px;background:rgba(255,255,255,.92);color:var(--ep26-ink)}\n.ep26-tag.is-live{background:var(--ep26-red);color:#fff}\n.ep26-tag.is-partner{background:#2d3a4b;color:#fff}\n.ep26-status{position:absolute;top:12px;right:12px;font-family:'League Spartan',sans-serif;font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;padding:5px 9px;border-radius:999px;background:rgba(255,255,255,.92);color:var(--ep26-green)}\n.ep26-status.is-low{color:var(--ep26-amber)}\n.ep26-status.is-out{color:var(--ep26-grey);background:rgba(220,220,220,.96)}\n.ep26-card-body{padding:18px 18px 16px;display:flex;flex-direction:column;gap:10px;flex:1}\n.ep26-card-title{font-family:'League Spartan',sans-serif;font-weight:700;font-size:18px;line-height:1.2;margin:0}\n.ep26-card-meta{display:flex;flex-wrap:wrap;gap:12px;font-size:12px;color:var(--ep26-ink-soft)}\n.ep26-meta-item{display:inline-flex;align-items:center;gap:4px}\n.ep26-card-excerpt{color:var(--ep26-ink-soft);font-size:13px;line-height:1.5;margin:0}\n.ep26-card-departures{font-size:12px;color:var(--ep26-ink);padding:8px 10px;background:rgba(240,77,76,.05);border-radius:8px;border:1px solid rgba(240,77,76,.12);display:none}\n.ep26-card-departures.has-data{display:block}\n.ep26-departures-label{font-family:'League Spartan',sans-serif;font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--ep26-red);margin:0 0 4px}\n.ep26-departures-list{margin:0;padding:0;list-style:none;font-size:12px;color:var(--ep26-ink-soft)}\n.ep26-card-price{font-family:'League Spartan',sans-serif;font-weight:700;font-size:14px;color:var(--ep26-ink);margin-top:auto}\n.ep26-card-price em{font-style:normal;font-weight:500;color:var(--ep26-ink-soft);font-size:11px;text-transform:uppercase;letter-spacing:.08em;margin-right:4px}\n.ep26-card-cta{margin-top:8px}\n.ep26-btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:48px;font-family:'League Spartan',sans-serif;font-size:13px;font-weight:800;padding:13px 16px;border-radius:10px;letter-spacing:.06em;text-transform:uppercase;line-height:1;cursor:pointer;transition:all .15s ease;border:1.5px solid var(--ep26-red);background:var(--ep26-red);color:#fff}\n.ep26-btn:hover{background:var(--ep26-red-hover);border-color:var(--ep26-red-hover);transform:translateY(-1px);box-shadow:0 6px 16px rgba(216,62,61,.28)}\n.ep26-btn span{text-align:center}\n.ep26-btn b{font-size:16px;font-weight:700}\n.ep26-btn[disabled]{background:#eee;color:var(--ep26-grey);border-color:#eee;cursor:not-allowed}\n.ep26-gift{background:linear-gradient(135deg,#f9e8c8 0%,#fde4c2 100%);border-radius:18px;padding:28px 22px;margin:40px 0 0;box-shadow:var(--ep26-shadow)}\n.ep26-gift-head{display:flex;align-items:center;gap:12px;margin:0 0 16px}\n.ep26-gift-head h2{font-family:'League Spartan',sans-serif;font-weight:800;font-size:24px;margin:0}\n.ep26-gift .bokunWidget{background:rgba(255,255,255,.6);border-radius:12px;padding:6px}\n.ep26-empty{padding:40px 20px;text-align:center;color:var(--ep26-ink-soft);font-size:14px;border:1px dashed var(--ep26-line-strong);border-radius:16px}\n.ep26-preview-tag{position:fixed;bottom:14px;right:14px;background:var(--ep26-red);color:#fff;font-family:'League Spartan',sans-serif;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;padding:8px 12px;border-radius:999px;box-shadow:0 6px 16px rgba(216,62,61,.4);pointer-events:none;z-index:9999}\n@media (max-width:560px){\n  .ep26-page{padding:16px 10px 80px}\n  .ep26-hero{padding:24px 4px 18px}\n  .ep26-section-title{font-size:22px}\n  .ep26-controls{padding:14px 14px 4px;position:static}\n  .ep26-filter-row{gap:6px}\n  .ep26-filter{padding:7px 11px;font-size:12px}\n  .ep26-departure{grid-template-columns:74px minmax(0,1fr);align-items:start}\n  .ep26-departure-side{grid-column:1 \/ -1;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px;min-width:0}\n  .ep26-departure-side .ep26-mini-btn{flex:0 1 auto;min-width:0}\n  .ep26-departure-title{font-size:16px}\n  .ep26-mini-btn{min-height:36px;padding:9px 12px}\n  .ep26-preview-tag{display:none}\n}\n\n\/* === THEME OVERRIDE WEDGE ===\n   Bermuda\/Puoti theme injects its own \"Spartan\" font + global font-size:16px \/\n   letter-spacing \/ text-transform resets that out-specify our base rules.\n   These !important rules clamp typography back to our design system. *\/\n.ep26-page, .ep26-page * { letter-spacing: normal !important; text-transform: none !important; }\n.ep26-page, .ep26-page p, .ep26-page span, .ep26-page article, .ep26-page section, .ep26-page div, .ep26-page button, .ep26-page a, .ep26-page ul, .ep26-page li { font-family: 'Inter', system-ui, -apple-system, sans-serif !important; }\n.ep26-page h1, .ep26-page h2, .ep26-page h3, .ep26-page h4,\n.ep26-page .ep26-btn, .ep26-page .ep26-mini-btn, .ep26-page .ep26-filter,\n.ep26-page .ep26-tag, .ep26-page .ep26-status,\n.ep26-page .ep26-section-title, .ep26-page .ep26-card-title,\n.ep26-page .ep26-departure-title, .ep26-page .ep26-departure-time, .ep26-page .ep26-departure-label, .ep26-page .ep26-departure-stock,\n.ep26-page .ep26-upcoming-kicker, .ep26-page .ep26-upcoming-title,\n.ep26-page .ep26-card-price, .ep26-page .ep26-hero h1, .ep26-page .ep26-hero-kicker,\n.ep26-page .ep26-filter-label, .ep26-page .ep26-count, .ep26-page .ep26-reset,\n.ep26-page .ep26-departures-label, .ep26-page .ep26-up-day, .ep26-page .ep26-up-mon, .ep26-page .ep26-up-wd, .ep26-page .ep26-up-time, .ep26-page .ep26-up-cat, .ep26-page .ep26-up-low, .ep26-page .ep26-up-cta,\n.ep26-page .ep26-seen-label, .ep26-page .ep26-seen-item, .ep26-page .ep26-gift-head h2 {\n  font-family: 'League Spartan', system-ui, -apple-system, sans-serif !important;\n}\n.ep26-page .ep26-hero h1 { font-size: clamp(34px, 5vw, 54px) !important; font-weight: 800 !important; line-height: 1.02 !important; }\n.ep26-page .ep26-hero-kicker { font-size: 12px !important; font-weight: 800 !important; letter-spacing: .12em !important; text-transform: uppercase !important; }\n.ep26-page .ep26-hero p { font-family: 'Inter', sans-serif !important; font-size: 16px !important; font-weight: 400 !important; line-height: 1.55 !important; }\n.ep26-page .ep26-section-title { font-size: 28px !important; font-weight: 800 !important; line-height: 1.05 !important; }\n.ep26-page .ep26-upcoming-title { font-size: 22px !important; font-weight: 800 !important; line-height: 1.05 !important; }\n.ep26-page .ep26-upcoming-kicker { font-size: 11px !important; font-weight: 800 !important; letter-spacing: .12em !important; text-transform: uppercase !important; }\n.ep26-page .ep26-upcoming-note { font-family: 'Inter', sans-serif !important; font-size: 13px !important; font-weight: 400 !important; line-height: 1.45 !important; }\n.ep26-page .ep26-section-desc, .ep26-page .ep26-card-excerpt { font-family: 'Inter', sans-serif !important; font-size: 13px !important; font-weight: 400 !important; line-height: 1.5 !important; }\n.ep26-page .ep26-card-title { font-size: 18px !important; font-weight: 700 !important; line-height: 1.2 !important; }\n.ep26-page .ep26-card-meta, .ep26-page .ep26-meta-item { font-family: 'Inter', sans-serif !important; font-size: 12px !important; font-weight: 400 !important; }\n.ep26-page .ep26-departure-title { font-size: 18px !important; font-weight: 700 !important; line-height: 1.18 !important; }\n.ep26-page .ep26-departure-price { font-family: 'League Spartan', sans-serif !important; font-size: 13px !important; font-weight: 700 !important; }\n.ep26-page .ep26-departure-price em { font-style: normal !important; font-weight: 500 !important; font-size: 10px !important; letter-spacing: .08em !important; text-transform: uppercase !important; }\n.ep26-page .ep26-departure-time { font-family: 'League Spartan', sans-serif !important; font-size: 12px !important; font-weight: 600 !important; }\n.ep26-page .ep26-departure-label { font-family: 'Inter', sans-serif !important; font-size: 11px !important; font-weight: 500 !important; line-height: 1.4 !important; }\n.ep26-page .ep26-departure-stock { font-size: 10px !important; font-weight: 800 !important; letter-spacing: .08em !important; text-transform: uppercase !important; }\n.ep26-page .ep26-btn { font-size: 13px !important; font-weight: 800 !important; letter-spacing: .06em !important; text-transform: uppercase !important; line-height: 1 !important; background: var(--ep26-red) !important; color: #fff !important; }\n.ep26-page .ep26-btn:hover { background: var(--ep26-red-hover) !important; }\n.ep26-page .ep26-mini-btn { font-size: 11px !important; font-weight: 800 !important; letter-spacing: .06em !important; text-transform: uppercase !important; }\n.ep26-page .ep26-filter { font-size: 13px !important; font-weight: 600 !important; letter-spacing: .03em !important; text-transform: uppercase !important; }\n.ep26-page .ep26-filter[aria-pressed=\"true\"] { background: var(--ep26-red) !important; color: #fff !important; }\n.ep26-page .ep26-filter-label { font-size: 11px !important; font-weight: 700 !important; letter-spacing: .1em !important; text-transform: uppercase !important; }\n.ep26-page .ep26-count, .ep26-page .ep26-reset { font-size: 13px !important; font-weight: 700 !important; letter-spacing: .06em !important; text-transform: uppercase !important; }\n.ep26-page .ep26-tag { font-size: 10px !important; font-weight: 800 !important; letter-spacing: .1em !important; text-transform: uppercase !important; }\n.ep26-page .ep26-status { font-size: 10px !important; font-weight: 800 !important; letter-spacing: .08em !important; text-transform: uppercase !important; }\n.ep26-page .ep26-card-price { font-size: 14px !important; font-weight: 700 !important; }\n.ep26-page .ep26-card-price em { font-style: normal !important; font-weight: 500 !important; font-size: 11px !important; letter-spacing: .08em !important; text-transform: uppercase !important; }\n.ep26-page .ep26-departures-label { font-size: 10px !important; font-weight: 700 !important; letter-spacing: .1em !important; text-transform: uppercase !important; }\n.ep26-page .ep26-departures-list { font-family: 'Inter', sans-serif !important; font-size: 12px !important; font-weight: 400 !important; line-height: 1.4 !important; }\n.ep26-page .ep26-gift-head h2 { font-size: 24px !important; font-weight: 800 !important; line-height: 1.1 !important; }\n.ep26-page .ep26-up-day { font-size: 24px !important; font-weight: 800 !important; line-height: 1 !important; }\n.ep26-page .ep26-up-mon, .ep26-page .ep26-up-wd { font-size: 11px !important; font-weight: 700 !important; letter-spacing: .1em !important; text-transform: uppercase !important; }\n.ep26-page .ep26-seen-label { font-size: 11px !important; font-weight: 700 !important; letter-spacing: .12em !important; text-transform: uppercase !important; }\n.ep26-page .ep26-seen-item { font-size: 13px !important; font-weight: 700 !important; }\n@media (max-width:560px) {\n  .ep26-page .ep26-section-title { font-size: 22px !important; }\n  .ep26-page .ep26-filter { font-size: 12px !important; }\n  .ep26-page .ep26-departure-title { font-size: 16px !important; }\n}\n\/* === \/THEME OVERRIDE WEDGE === *\/\n\/* === HERO PHOTO STRIP === *\/\n.ep26-herostrip{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:6px 0 30px}\n.ep26-herostrip-tile{position:relative;display:block;border-radius:18px;overflow:hidden;border:1px solid var(--ep26-line);box-shadow:var(--ep26-shadow);aspect-ratio:4\/3;background:#eceae6}\n.ep26-herostrip-tile img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .45s ease}\n.ep26-herostrip-tile:hover img{transform:scale(1.06)}\n.ep26-herostrip-tile::after{content:\"\";position:absolute;inset:0;background:linear-gradient(to top,rgba(12,12,12,.66) 0%,rgba(12,12,12,.14) 42%,rgba(12,12,12,0) 66%);z-index:1}\n.ep26-herostrip-cap{position:absolute;left:14px;right:14px;bottom:12px;z-index:2}\n.ep26-page .ep26-herostrip-kicker{display:block;font-family:'League Spartan',sans-serif !important;font-size:10px !important;font-weight:800 !important;letter-spacing:.14em !important;text-transform:uppercase !important;color:#ffd9d8 !important;margin:0 0 2px !important;line-height:1.1 !important}\n.ep26-page .ep26-herostrip-name{display:block;font-family:'League Spartan',sans-serif !important;font-size:18px !important;font-weight:800 !important;letter-spacing:.01em !important;text-transform:none !important;color:#fff !important;margin:0 !important;line-height:1.05 !important;text-shadow:0 1px 10px rgba(0,0,0,.55)}\n@media (max-width:600px){\n  .ep26-herostrip{grid-template-columns:1fr;gap:10px}\n  .ep26-herostrip-tile{aspect-ratio:16\/7}\n  .ep26-page .ep26-herostrip-name{font-size:20px !important}\n}\n\/* === \/HERO PHOTO STRIP === *\/\n<\/style>\n\n<main class=\"ep26-page\" id=\"ep26-page\">\n  <header class=\"ep26-hero\">\n    <p class=\"ep26-hero-kicker\">Saariston Puoti - Liperi - Summer 2026<\/p>\n    <h1>Experience shop<\/h1>\n    <p>Cruises, Puoti LIVE! concerts, gig buses and partner experiences in the most beautiful lakes of North Karelia. Book now - places are filling up fast.<\/p>\n  <\/header>\n  <div class=\"ep26-herostrip\" aria-label=\"Highlights of the Experience Shop\">\n    <span class=\"ep26-herostrip-tile\">\n      <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/data.puoti.link\/hero\/cruise.jpg\" alt=\"The M\/S Suvi-Tuuli on a cruise through the lake landscapes of North Karelia\" width=\"1200\" height=\"900\">\n      <span class=\"ep26-herostrip-cap\"><span class=\"ep26-herostrip-kicker\">M\/S Suvi-Tuuli<\/span><span class=\"ep26-herostrip-name\">Cruises<\/span><\/span>\n    <\/span>\n    <span class=\"ep26-herostrip-tile\">\n      <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/data.puoti.link\/hero\/pizza.jpg\" alt=\"Fresh stone-baked pizza against the backdrop of the lake at Saariston Puoti\" width=\"720\" height=\"480\">\n      <span class=\"ep26-herostrip-cap\"><span class=\"ep26-herostrip-kicker\">Archipelago Shop<\/span><span class=\"ep26-herostrip-name\">Pizza Tasting<\/span><\/span>\n    <\/span>\n    <span class=\"ep26-herostrip-tile\">\n      <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/data.puoti.link\/hero\/ebike.jpg\" alt=\"Electric fatbike ride along the forest trails of North Karelia\" width=\"1200\" height=\"800\">\n      <span class=\"ep26-herostrip-cap\"><span class=\"ep26-herostrip-kicker\">North Karelia<\/span><span class=\"ep26-herostrip-name\">Electric bikes<\/span><\/span>\n    <\/span>\n  <\/div>\n  <section class=\"ep26-upcoming\" aria-label=\"Next cruise departures\">\n    <div class=\"ep26-upcoming-head\">\n      <div>\n        <p class=\"ep26-upcoming-kicker\">The next 7 days \u00b7 M\/S Suvi-Tuuli<\/p>\n        <h2>\ud83d\udea2 Upcoming cruise departures<\/h2>\n      <\/div>\n      <p class=\"ep26-upcoming-note\">Cruises and Puoti LIVE! cruises from Joensuu on Saaristo Puodi, and scenic cruises from Saaristo Puodi.<\/p>\n    <\/div>\n    <div class=\"ep26-upcoming-list\" id=\"ep26-upcoming-list\">\n      <div class=\"ep26-upcoming-empty\">Loading the following departures...<\/div>\n    <\/div>\n  <\/section>\n\n  <section class=\"ep26-upcoming\" aria-label=\"The following buses\">\n    <div class=\"ep26-upcoming-head\">\n      <div>\n        <p class=\"ep26-upcoming-kicker\">The next 7 days \u00b7 Joensuu<\/p>\n        <h2>\ud83d\ude8c Upcoming tour buses<\/h2>\n      <\/div>\n      <p class=\"ep26-upcoming-note\">Bus seats for Puoti LIVE! concerts - pick up on three routes, return at night.<\/p>\n    <\/div>\n    <div class=\"ep26-upcoming-list\" id=\"ep26-upcoming-bus-list\">\n      <div class=\"ep26-upcoming-empty\">Loading the following bus trips...<\/div>\n    <\/div>\n  <\/section>\n  <section class=\"ep26-controls\" aria-label=\"Filters\">\n    <div class=\"ep26-controls-top\">\n      <div class=\"ep26-count\" data-ep26-count>All experiences<\/div>\n      <button class=\"ep26-reset\" type=\"button\" data-ep26-reset>\u21bb Zero<\/button>\n    <\/div>\n    <div class=\"ep26-filter-block\">\n      <span class=\"ep26-filter-label\">Category<\/span>\n      <div class=\"ep26-filter-row\" role=\"group\" aria-label=\"Category\">\n        <button class=\"ep26-filter\" type=\"button\" data-ep26-category=\"all\" aria-pressed=\"true\">All from<\/button>\n        <button class=\"ep26-filter\" type=\"button\" data-ep26-category=\"risteily\" aria-pressed=\"false\">\ud83d\udea2 Cruises<\/button>\n        <button class=\"ep26-filter\" type=\"button\" data-ep26-category=\"puoti_live\" aria-pressed=\"false\">\ud83c\udfb8 Shop LIVE!<\/button>\n        <button class=\"ep26-filter\" type=\"button\" data-ep26-category=\"keikkabussi\" aria-pressed=\"false\">\ud83d\ude8c Tour buses<\/button>\n        <button class=\"ep26-filter\" type=\"button\" data-ep26-category=\"muu\" aria-pressed=\"false\">\u2728 Other experiences<\/button>\n        <button class=\"ep26-filter\" type=\"button\" data-ep26-category=\"kumppani\" aria-pressed=\"false\">\ud83e\udd1d Partners<\/button>\n      <\/div>\n    <\/div>\n    <div class=\"ep26-filter-block\">\n      <span class=\"ep26-filter-label\">Starting point<\/span>\n      <div class=\"ep26-filter-row\" role=\"group\" aria-label=\"Starting point\">\n        <button class=\"ep26-filter\" type=\"button\" data-ep26-location=\"all\" aria-pressed=\"true\">All from<\/button>\n        <button class=\"ep26-filter\" type=\"button\" data-ep26-location=\"joensuu\" aria-pressed=\"false\">Joensuu<\/button>\n        <button class=\"ep26-filter\" type=\"button\" data-ep26-location=\"liperi\" aria-pressed=\"false\">Liperi (Shop)<\/button>\n        <button class=\"ep26-filter\" type=\"button\" data-ep26-location=\"tohmajarvi\" aria-pressed=\"false\">Tohmaj\u00e4rvi<\/button>\n        <button class=\"ep26-filter\" type=\"button\" data-ep26-location=\"tuusniemi\" aria-pressed=\"false\">Tuusniemi<\/button>\n        <button class=\"ep26-filter\" type=\"button\" data-ep26-location=\"punkaharju\" aria-pressed=\"false\">Punkaharju \/ Savonlinna<\/button>\n      <\/div>\n    <\/div>\n    <div class=\"ep26-filter-block\">\n      <span class=\"ep26-filter-label\">Situation<\/span>\n      <div class=\"ep26-filter-row\" role=\"group\" aria-label=\"Situation\">\n        <button class=\"ep26-filter\" type=\"button\" data-ep26-status=\"all\" aria-pressed=\"true\">All from<\/button>\n        <button class=\"ep26-filter\" type=\"button\" data-ep26-status=\"available\" aria-pressed=\"false\">Available from<\/button>\n        <button class=\"ep26-filter\" type=\"button\" data-ep26-status=\"low\" aria-pressed=\"false\">Only a few left<\/button>\n      <\/div>\n    <\/div>\n  <\/section>\n  <div id=\"ep26-sections\"><\/div>\n  <section class=\"ep26-gift\">\n    <div class=\"ep26-gift-head\"><span style=\"font-size:30px;\">\ud83c\udf81<\/span><h2>Gift vouchers<\/h2><\/div>\n    <p style=\"margin:0 0 14px;color:var(--ep26-ink-soft);font-size:14px;line-height:1.5;\">A lovely gift for anniversaries or just to brighten up a grey day. The gift voucher can be used for any Experience Shop cruise or experience.<\/p>\n    <div class=\"bokunWidget\" data-src=\"https:\/\/widgets.bokun.io\/online-sales\/16636f67-7269-4387-bf31-3af308292416\/gift-card\/3177\"><\/div>\n  <\/section>\n<\/main>\n\n<script>\n(async function () {\n  const root = document.getElementById('ep26-sections');\n  const countEl = document.querySelector('[data-ep26-count]');\n  const resetBtn = document.querySelector('[data-ep26-reset]');\n  let data = {\"generatedAt\":\"2026-07-06T18:45:22.860Z\",\"channelUUID\":\"16636f67-7269-4387-bf31-3af308292416\",\"rootListId\":88646,\"giftCardListId\":3177,\"categories\":{\"risteily\":{\"label\":\"Risteilyt\",\"icon\":\"\ud83d\udea2\",\"description\":\"M\/S Suvi-Tuulella Joensuusta Saariston Puodille \u2014 lounas, ilallis ja maisemaristeilyt.\"},\"puoti_live\":{\"label\":\"Puoti LIVE! -risteilyt\",\"icon\":\"\ud83c\udfb8\",\"description\":\"Risteily + keikkalippu. Menomatka M\/S Suvi-Tuulella, paluu y\u00f6ll\u00e4 bussilla.\"},\"keikkabussi\":{\"label\":\"Keikkabussit\",\"icon\":\"\ud83d\ude8c\",\"description\":\"Bussilla keikalle ja takaisin \u2014 l\u00e4ht\u00f6 Joensuusta.\"},\"muu\":{\"label\":\"Muut el\u00e4mykset\",\"icon\":\"\u2728\",\"description\":\"Pizza Tasting, s\u00e4hk\u00f6py\u00f6r\u00e4vuokraukset ja muut el\u00e4mykset.\"},\"kumppani\":{\"label\":\"Kumppanit\",\"icon\":\"\ud83e\udd1d\",\"description\":\"Kumppanituotteet \u2014 Blue Lake Cruises sek\u00e4 muut kumppanit.\"}},\"products\":[{\"id\":1224841,\"title\":\"Keikkabussi \u2014 Jukka Poika 13.6.2026\",\"displayName\":\"Keikkabussi \u2014 Jukka Poika\",\"excerpt\":\"Gig bus + admission ticket to Jukka Poika on Sat 13 June 2026. Pickups: Joensuu, Yl\u00e4mylly, Liperi. Return at night.\",\"duration\":\"\",\"hero\":\"https:\/\/bokun.s3.amazonaws.com\/4f53cb73-7939-4eae-a6d0-9a9ce6874589.jpg\",\"vendorId\":93203,\"vendorTitle\":\"Saariston Puoti\",\"category\":\"keikkabussi\",\"locations\":[\"joensuu\",\"liperi\"],\"eventDate\":\"2026-06-13\"},{\"id\":1224819,\"title\":\"Puoti LIVE-risteily \u2014 Jukka Poika 13.6.2026\",\"displayName\":\"Puoti LIVE-risteily \u2014 Jukka Poika\",\"excerpt\":\"Risteily Joensuusta Saariston Puodille + p\u00e4\u00e4sylippu Jukka Poika -keikalle la 13.6.2026. Menomatka M\/S Suvi-Tuulella, paluu y\u00f6ll\u00e4 bussilla.\",\"duration\":\"\",\"hero\":\"https:\/\/bokun.s3.amazonaws.com\/1fa2beab-dd50-4db9-a03c-cff42f06c5ee.jpg\",\"vendorId\":93203,\"vendorTitle\":\"Saariston Puoti\",\"category\":\"puoti_live\",\"locations\":[\"joensuu\"],\"eventDate\":\"2026-06-13\"},{\"id\":1224846,\"title\":\"Keikkabussi \u2014 J&LO \u2013 Jouni Laasonen & Oscu 19.6.2026\",\"displayName\":\"Keikkabussi \u2014 J&LO \u2013 Jouni Laasonen & Oscu\",\"excerpt\":\"Gig bus + admission ticket to J&LO \u2013 Jouni Laasonen & Oscu on Fri 19 June 2026 (Midsummer Eve). Pickups: Joensuu, Yl\u00e4mylly, Liperi. Earlier schedule; return at night.\",\"duration\":\"\",\"hero\":\"https:\/\/bokun.s3.amazonaws.com\/57438404-6e18-4320-8dc5-74862da54297.jpg\",\"vendorId\":93203,\"vendorTitle\":\"Saariston Puoti\",\"category\":\"keikkabussi\",\"locations\":[\"joensuu\",\"liperi\"],\"eventDate\":\"2026-06-19\"},{\"id\":1224845,\"title\":\"Juhannusristeily \u2014 J&LO \u2013 Jouni Laasonen & Oscu 19.6.2026\",\"displayName\":\"Juhannusristeily \u2014 J&LO \u2013 Jouni Laasonen & Oscu\",\"excerpt\":\"Juhannusristeily Joensuusta Saariston Puodille pe 19.6.2026 (juhannusaatto). Menomatka M\/S Suvi-Tuulella, paluu y\u00f6ll\u00e4 bussilla. Sis\u00e4\u00e4np\u00e4\u00e4sy ilmainen kanta-asiakkaille.\",\"duration\":\"\",\"hero\":\"https:\/\/bokun.s3.amazonaws.com\/4dcd622e-7494-45fc-b32f-a1d0f5238fb0.jpg\",\"vendorId\":93203,\"vendorTitle\":\"Saariston Puoti\",\"category\":\"puoti_live\",\"locations\":[\"joensuu\"],\"eventDate\":\"2026-06-19\"},{\"id\":1224847,\"title\":\"Keikkabussi \u2014 Laura Voutilainen 20.6.2026\",\"displayName\":\"Keikkabussi \u2014 Laura Voutilainen\",\"excerpt\":\"Gig bus + admission ticket to Laura Voutilainen on Sat 20 June 2026. Pickups: Joensuu, Yl\u00e4mylly, Liperi. Return at night.\",\"duration\":\"6 tuntia\",\"hero\":\"https:\/\/bokun.s3.amazonaws.com\/5bbb1a10-e561-4ba4-ae59-f162a22597e1.jpg\",\"vendorId\":93203,\"vendorTitle\":\"Saariston Puoti\",\"category\":\"keikkabussi\",\"locations\":[\"joensuu\",\"liperi\"],\"eventDate\":\"2026-06-20\"},{\"id\":838184,\"title\":\"Juhannuksen maisemaristeilyt Punkaharjulla harjumaisemissa 19.6.-20.6.2026\",\"displayName\":\"Juhannuksen maisemaristeily Punkaharjulla\",\"excerpt\":\"Tule nauttimaan Punkaharjun harjumaisemista ja keskikes\u00e4n Saimaasta risteilyll\u00e4 Punkaharjulla!\",\"duration\":\"1 tunti ja 30 minuuttia\",\"hero\":\"https:\/\/bokun.s3.amazonaws.com\/8321f653-9a12-414c-988e-7221e112bc91.jpeg\",\"vendorId\":32720,\"vendorTitle\":\"Blue Lake Cruises\",\"category\":\"kumppani\",\"locations\":[\"punkaharju\"],\"eventDate\":\"2026-06-20\"},{\"id\":1224843,\"title\":\"Puoti LIVE-risteily \u2014 Laura Voutilainen 20.6.2026\",\"displayName\":\"Puoti LIVE-risteily \u2014 Laura Voutilainen\",\"excerpt\":\"Risteily Joensuusta Saariston Puodille + p\u00e4\u00e4sylippu Laura Voutilainen -keikalle la 20.6.2026 (juhannusp\u00e4iv\u00e4). Menomatka M\/S Suvi-Tuulella, paluu y\u00f6ll\u00e4 bussilla.\",\"duration\":\"\",\"hero\":\"https:\/\/bokun.s3.amazonaws.com\/c2a8fabf-385a-4d94-95fd-71de99453ea8.jpg\",\"vendorId\":93203,\"vendorTitle\":\"Saariston Puoti\",\"category\":\"puoti_live\",\"locations\":[\"joensuu\"],\"eventDate\":\"2026-06-20\"},{\"id\":1224849,\"title\":\"Keikkabussi \u2014 Movetron 11.7.2026\",\"displayName\":\"Keikkabussi \u2014 Movetron\",\"excerpt\":\"Gig bus + admission ticket to Movetron on Sat 11 July 2026. Pickups: Joensuu, Yl\u00e4mylly, Liperi. Return at night.\",\"duration\":\"\",\"hero\":\"https:\/\/bokun.s3.amazonaws.com\/10c0ef6d-a4ea-403e-8c39-a1422a303fe4.jpg\",\"vendorId\":93203,\"vendorTitle\":\"Saariston Puoti\",\"category\":\"keikkabussi\",\"locations\":[\"joensuu\",\"liperi\"],\"eventDate\":\"2026-07-11\"},{\"id\":1224848,\"title\":\"Puoti LIVE-risteily \u2014 Movetron 11.7.2026\",\"displayName\":\"Puoti LIVE-risteily \u2014 Movetron\",\"excerpt\":\"Risteily Joensuusta Saariston Puodille + p\u00e4\u00e4sylippu Movetron -keikalle la 11.7.2026. Menomatka M\/S Suvi-Tuulella, paluu y\u00f6ll\u00e4 bussilla.\",\"duration\":\"\",\"hero\":\"https:\/\/bokun.s3.amazonaws.com\/ef92ff06-36f4-48d0-8c63-d69c872e0dca.jpg\",\"vendorId\":93203,\"vendorTitle\":\"Saariston Puoti\",\"category\":\"puoti_live\",\"locations\":[\"joensuu\"],\"eventDate\":\"2026-07-11\"},{\"id\":1224851,\"title\":\"Keikkabussi \u2014 Tuure Kilpel\u00e4inen 25.7.2026\",\"displayName\":\"Keikkabussi \u2014 Tuure Kilpel\u00e4inen\",\"excerpt\":\"Gig bus + admission ticket to Tuure Kilpel\u00e4inen on Sat 25 July 2026. Pickups: Joensuu, Yl\u00e4mylly, Liperi. Return at night.\",\"duration\":\"\",\"hero\":\"https:\/\/bokun.s3.amazonaws.com\/871dde7e-95e1-4675-b453-f756f3b8ee96.jpg\",\"vendorId\":93203,\"vendorTitle\":\"Saariston Puoti\",\"category\":\"keikkabussi\",\"locations\":[\"joensuu\",\"liperi\"],\"eventDate\":\"2026-07-25\"},{\"id\":1224850,\"title\":\"Puoti LIVE-risteily \u2014 Tuure Kilpel\u00e4inen 25.7.2026\",\"displayName\":\"Puoti LIVE-risteily \u2014 Tuure Kilpel\u00e4inen\",\"excerpt\":\"Risteily Joensuusta Saariston Puodille + p\u00e4\u00e4sylippu Tuure Kilpel\u00e4inen -keikalle la 25.7.2026. Menomatka M\/S Suvi-Tuulella, paluu y\u00f6ll\u00e4 bussilla.\",\"duration\":\"\",\"hero\":\"https:\/\/bokun.s3.amazonaws.com\/9415b493-656e-4049-a3c1-dbbcfe1bc5c9.jpg\",\"vendorId\":93203,\"vendorTitle\":\"Saariston Puoti\",\"category\":\"puoti_live\",\"locations\":[\"joensuu\"],\"eventDate\":\"2026-07-25\"},{\"id\":1224853,\"title\":\"Keikkabussi \u2014 HUGO 8.8.2026\",\"displayName\":\"Keikkabussi \u2014 HUGO\",\"excerpt\":\"Gig bus + admission ticket to HUGO on Sat 8 August 2026. Pickups: Joensuu, Yl\u00e4mylly, Liperi. Return at night.\",\"duration\":\"\",\"hero\":\"https:\/\/bokun.s3.amazonaws.com\/4dd00752-a501-48e8-b47b-fe887d7b1019.jpg\",\"vendorId\":93203,\"vendorTitle\":\"Saariston Puoti\",\"category\":\"keikkabussi\",\"locations\":[\"joensuu\",\"liperi\"],\"eventDate\":\"2026-08-08\"},{\"id\":1224852,\"title\":\"Puoti LIVE-risteily \u2014 HUGO 8.8.2026\",\"displayName\":\"Puoti LIVE-risteily \u2014 HUGO\",\"excerpt\":\"Risteily Joensuusta Saariston Puodille + p\u00e4\u00e4sylippu HUGO -keikalle la 8.8.2026. Menomatka M\/S Suvi-Tuulella, paluu y\u00f6ll\u00e4 bussilla.\",\"duration\":\"\",\"hero\":\"https:\/\/bokun.s3.amazonaws.com\/0475039f-2463-4b32-ab02-e38cf263ee21.jpg\",\"vendorId\":93203,\"vendorTitle\":\"Saariston Puoti\",\"category\":\"puoti_live\",\"locations\":[\"joensuu\"],\"eventDate\":\"2026-08-08\"},{\"id\":829674,\"title\":\"Maisemaristeily Punkaharjulla harjumaisemissa 16.6.-25.8.2026\",\"displayName\":\"Maisemaristeily Punkaharjulla\",\"excerpt\":\"Tule nauttimaan Punkaharjun harjumaisemista maisemista ja kes\u00e4isest\u00e4 Saimaasta risteilyll\u00e4 Punkaharjulla!\",\"duration\":\"2 tuntia\",\"hero\":\"https:\/\/bokun.s3.amazonaws.com\/8321f653-9a12-414c-988e-7221e112bc91.jpeg\",\"vendorId\":32720,\"vendorTitle\":\"Blue Lake Cruises\",\"category\":\"kumppani\",\"locations\":[\"punkaharju\"],\"eventDate\":\"2026-08-25\"},{\"id\":829681,\"title\":\"L\u00e4hde risteillen Punkaharjulle! Risteilyt Savonlinnasta Punkaharjulle tiistaisin 16.6. - 25.8.2026\",\"displayName\":\"Risteily Savonlinna\u2013Punkaharju (tiistaisin)\",\"excerpt\":\"Nauti upeista Saimaan j\u00e4rvimaisemista ja rentoudu matkalla kohti kaunista Punkaharjua. Reitti kulkee Virtasalmen kapeikkojen ja Bobrikovin salmen kautta Punkaharjulle.\",\"duration\":\"2 tuntia ja 30 minuuttia\",\"hero\":\"https:\/\/bokun.s3.amazonaws.com\/7c9bd255-12db-42a3-a1f4-78ddec65eba0.png\",\"vendorId\":32720,\"vendorTitle\":\"Blue Lake Cruises\",\"category\":\"kumppani\",\"locations\":[\"punkaharju\",\"savonlinna\"],\"eventDate\":\"2026-08-25\"},{\"id\":838109,\"title\":\"L\u00e4hde viett\u00e4m\u00e4\u00e4n kes\u00e4p\u00e4iv\u00e4\u00e4 Punkaharjulle! Risteilyt Savonlinnasta Punkaharjulle ja takaisin, tiistaisin 16.6. - 25.8.2026\",\"displayName\":\"P\u00e4iv\u00e4risteily Savonlinna\u2013Punkaharju\",\"excerpt\":\"Risteile m\/s Katrillilla Punkaharjun maisemiin\u2013 yhdist\u00e4 matkaan k\u00e4ynti Lustossa, herkullinen lounas Mets\u00e4ss\u00e4, Harjunportissa tai hemmotteluhetki Kruunupuiston kylpyl\u00e4ss\u00e4!\",\"duration\":\"7 tuntia ja 30 minuuttia\",\"hero\":\"https:\/\/bokun.s3.amazonaws.com\/4095cfae-6b39-470e-9d55-16652b652bde.jpeg\",\"vendorId\":32720,\"vendorTitle\":\"Blue Lake Cruises\",\"category\":\"kumppani\",\"locations\":[\"punkaharju\",\"savonlinna\"],\"eventDate\":\"2026-08-25\"},{\"id\":838178,\"title\":\"L\u00e4hde risteillen Punkaharjulta Savonlinnaan! Risteilyt Punkaharjulta Savonlinnaan tiistaisin 16.6. - 25.8.2026\",\"displayName\":\"Risteily Punkaharju\u2013Savonlinna (tiistaisin)\",\"excerpt\":\"Nauti upeista Saimaan j\u00e4rvimaisemista ja rentoudu matkalla kohti kaunista Savonlinnaa. Reitti kulkee Virtasalmen kapeikkojen ja Bobrikovin salmen kautta Punkaharjulle.\",\"duration\":\"2 tuntia ja 30 minuuttia\",\"hero\":\"https:\/\/bokun.s3.amazonaws.com\/6e247142-ddc3-47a3-82af-8fd7c0f7ffba.jpeg\",\"vendorId\":32720,\"vendorTitle\":\"Blue Lake Cruises\",\"category\":\"kumppani\",\"locations\":[\"punkaharju\",\"savonlinna\"],\"eventDate\":\"2026-08-25\"},{\"id\":1224855,\"title\":\"Keikkabussi \u2014 Hurma 28.8.2026\",\"displayName\":\"Keikkabussi \u2014 Hurma\",\"excerpt\":\"Gig bus + admission ticket to Hurma on Fri 28 August 2026. Pickups: Joensuu, Yl\u00e4mylly, Liperi. Return at night.\",\"duration\":\"\",\"hero\":\"https:\/\/bokun.s3.amazonaws.com\/6575ec7e-87c9-4a60-8cc5-7f51b97668e7.jpg\",\"vendorId\":93203,\"vendorTitle\":\"Saariston Puoti\",\"category\":\"keikkabussi\",\"locations\":[\"joensuu\",\"liperi\"],\"eventDate\":\"2026-08-28\"},{\"id\":1224854,\"title\":\"Puoti LIVE-risteily \u2014 Hurma 28.8.2026\",\"displayName\":\"Puoti LIVE-risteily \u2014 Hurma\",\"excerpt\":\"Risteily Joensuusta Saariston Puodille + p\u00e4\u00e4sylippu Hurma -keikalle pe 28.8.2026. Menomatka M\/S Suvi-Tuulella, paluu y\u00f6ll\u00e4 bussilla.\",\"duration\":\"\",\"hero\":\"https:\/\/bokun.s3.amazonaws.com\/77c983ca-1311-47c1-abfb-18ea5b90d344.jpg\",\"vendorId\":93203,\"vendorTitle\":\"Saariston Puoti\",\"category\":\"puoti_live\",\"locations\":[\"joensuu\"],\"eventDate\":\"2026-08-28\"},{\"id\":1224857,\"title\":\"Keikkabussi \u2014 Olli Halonen 29.8.2026\",\"displayName\":\"Keikkabussi \u2014 Olli Halonen\",\"excerpt\":\"Gig bus + admission ticket to Olli Halonen on Sat 29 August 2026. Pickups: Joensuu, Yl\u00e4mylly, Liperi. Return at night.\",\"duration\":\"\",\"hero\":\"https:\/\/bokun.s3.amazonaws.com\/46f7829d-369e-4cfc-b871-34b33e27e4d5.jpg\",\"vendorId\":93203,\"vendorTitle\":\"Saariston Puoti\",\"category\":\"keikkabussi\",\"locations\":[\"joensuu\",\"liperi\"],\"eventDate\":\"2026-08-29\"},{\"id\":1224856,\"title\":\"Puoti LIVE-risteily \u2014 Olli Halonen 29.8.2026\",\"displayName\":\"Puoti LIVE-risteily \u2014 Olli Halonen\",\"excerpt\":\"Risteily Joensuusta Saariston Puodille + p\u00e4\u00e4sylippu Olli Halonen -keikalle la 29.8.2026. Menomatka M\/S Suvi-Tuulella, paluu y\u00f6ll\u00e4 bussilla.\",\"duration\":\"\",\"hero\":\"https:\/\/bokun.s3.amazonaws.com\/ec796251-621b-4930-9d06-5c6de030afed.jpg\",\"vendorId\":93203,\"vendorTitle\":\"Saariston Puoti\",\"category\":\"puoti_live\",\"locations\":[\"joensuu\"],\"eventDate\":\"2026-08-29\"},{\"id\":677517,\"title\":\"Kanavaristeily Savonlinna-Hein\u00e4vesi-Kuopio, torstaisin kausi 2026\",\"displayName\":\"Risteily Punkaharju\u2013Kruunupuisto \/ Vaahersalo\",\"excerpt\":\"Koe historiallinen Hein\u00e4veden reitti Savonlinnasta Kuopioon historiallisella h\u00f6yrylaiva s\/s Hein\u00e4vedell\u00e4. Kokonaisuudessaan Hein\u00e4veden reitti on maamme edustavimpia sis\u00e4vesiliikenteen muovaamia maisemia.\",\"duration\":\"12 tuntia\",\"hero\":\"https:\/\/bokun.s3.amazonaws.com\/f83ff684-1cf6-4d89-8825-cfdc004f60da.jpeg\",\"vendorId\":32720,\"vendorTitle\":\"Blue Lake Cruises\",\"category\":\"kumppani\",\"locations\":[\"savonlinna\",\"kuopio\"],\"eventDate\":null},{\"id\":677536,\"title\":\"Kanavaristeily Kuopio-Hein\u00e4vesi- Savonlinna s\/s Hein\u00e4vesi kausi 2026\",\"displayName\":\"Kanavaristeily Kuopio\u2013Savonlinna (s\/s Hein\u00e4vesi)\",\"excerpt\":\"Koe historiallinen Hein\u00e4veden reitti Savonlinnasta Kuopioon historiallisella h\u00f6yrylaiva s\/s Hein\u00e4vedell\u00e4. Kokonaisuudessaan Hein\u00e4veden reitti on maamme edustavimpia sis\u00e4vesiliikenteen muovaamia maisemia.\",\"duration\":\"12 tuntia\",\"hero\":\"https:\/\/bokun.s3.amazonaws.com\/b57b1a7b-ccac-4003-abc0-c45d73a35753.jpeg\",\"vendorId\":32720,\"vendorTitle\":\"Blue Lake Cruises\",\"category\":\"kumppani\",\"locations\":[\"savonlinna\",\"kuopio\"],\"eventDate\":null},{\"id\":768032,\"title\":\"Pizza Tasting @Saariston Puoti\",\"displayName\":\"Pizza Tasting @ Saariston Puoti\",\"excerpt\":\"Koe autenttinen artesaanipizzael\u00e4mys j\u00e4rven rannalla!\",\"duration\":\"2 tuntia\",\"hero\":\"https:\/\/bokun.s3.amazonaws.com\/70bd058d-c3cd-4eb9-85ab-a9a1f8e8c1d5.jpg\",\"vendorId\":93203,\"vendorTitle\":\"Saariston Puoti\",\"category\":\"muu\",\"locations\":[\"liperi\"],\"eventDate\":null},{\"id\":1028489,\"title\":\"S\u00e4hk\u00f6py\u00f6r\u00e4vuokraus - Koe Pohjoisen Saimaan py\u00f6r\u00e4reitit\",\"displayName\":\"S\u00e4hk\u00f6py\u00f6r\u00e4vuokraus \u2013 Pohjois-Karjala\",\"excerpt\":\"Koe vapaus tutustua Pohjois-Karjalan kauneimpiin kohteisiin premium-s\u00e4hk\u00f6isill\u00e4 fatbikeill\u00e4! Mukavat 4 tunnin vuokraukset sis\u00e4lt\u00e4v\u00e4t kyp\u00e4r\u00e4t, kartat, ja kaikki turvavarusteet. Valitse upeista reiteist\u00e4...\",\"duration\":\"4 tuntia\",\"hero\":\"https:\/\/bokun.s3.amazonaws.com\/f9c3212c-dcd4-4ea5-aaee-c2127712374c.jpeg\",\"vendorId\":93203,\"vendorTitle\":\"Saariston Puoti\",\"category\":\"muu\",\"locations\":[],\"eventDate\":null},{\"id\":1037129,\"title\":\"M\/S Suvi-Tuuli \u2014 Risteilyt Pohjoisella Saimaalla & Pyh\u00e4sel\u00e4ll\u00e4 (Joensuu \u2194 Saariston Puoti)\",\"displayName\":\"M\/S Suvi-Tuuli \u2013 Pohjoisen Saimaan risteily\",\"excerpt\":\"M\/S Suvi-Tuulen risteilyt Pohjoisella Saimaalla ja Pyh\u00e4sel\u00e4ll\u00e4 \u2014 virvokkeet aluksella ja huikeat n\u00e4kym\u00e4t Joensuun ja Saariston Puodin (Tutjunniemi, Liperi) v\u00e4lill\u00e4.\",\"duration\":\"6 tuntia\",\"hero\":\"https:\/\/bokun.s3.amazonaws.com\/bca6a6ad-1ba7-4e77-a785-f29bc324504a.jpeg\",\"vendorId\":93203,\"vendorTitle\":\"Saariston Puoti\",\"category\":\"risteily\",\"locations\":[\"joensuu\",\"liperi\"],\"eventDate\":null},{\"id\":1052254,\"title\":\"M\/S Suvi-Tuuli \u2014 Maisemaristeilyt Liperin saaristossa (Saariston Puodista, Tutjunniemi)\",\"displayName\":\"M\/S Suvi-Tuuli \u2014 Maisemaristeilyt Liperin saaristossa (Saariston Puodista, Tutjunniemi)\",\"excerpt\":\"Tutustu Liperin saaristoon M\/S Suvi-Tuulella \u2014 l\u00e4ht\u00f6 Saariston Puodista, reitti Tutjunniemen kautta. Mukavat istumapaikat, laivalla virvokkeita ja henke\u00e4salpaavat n\u00e4kym\u00e4t Pohjoisen Saimaan saaristoon.\",\"duration\":\"1 tunti\",\"hero\":\"https:\/\/bokun.s3.amazonaws.com\/7fb9d516-3991-4401-9328-cd84a03fa1ca.jpeg\",\"vendorId\":93203,\"vendorTitle\":\"Saariston Puoti\",\"category\":\"risteily\",\"locations\":[\"liperi\"],\"eventDate\":null}]};\n  try { const r = await fetch('https:\/\/data.puoti.link\/products.json',{cache:'no-store'}); if(r.ok){ const j = await r.json(); if(j && Array.isArray(j.products) && j.products.length) data = j; } } catch(e){}\n  let availability = {\"generatedAt\":\"2026-07-06T18:45:22.860Z\",\"rangeStart\":\"2026-07-06\",\"rangeEnd\":\"2026-11-03\",\"products\":{\"677517\":{\"slots\":7,\"openSlots\":7,\"soldOut\":false,\"lowStock\":true,\"fromPrice\":159,\"fromPriceText\":\"159 \u20ac\",\"nextDepartures\":[\"to 9.7.2026 klo 09:00\",\"to 16.7.2026 klo 09:00\",\"to 23.7.2026 klo 09:00\",\"to 30.7.2026 klo 09:00\",\"to 6.8.2026 klo 09:00\"],\"allDepartures\":[{\"date\":\"2026-07-09\",\"time\":\"09:00\",\"label\":\"\",\"availabilityCount\":39,\"bookedParticipants\":21,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-16\",\"time\":\"09:00\",\"label\":\"\",\"availabilityCount\":29,\"bookedParticipants\":31,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-23\",\"time\":\"09:00\",\"label\":\"\",\"availabilityCount\":51,\"bookedParticipants\":9,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-30\",\"time\":\"09:00\",\"label\":\"\",\"availabilityCount\":47,\"bookedParticipants\":13,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-06\",\"time\":\"09:00\",\"label\":\"\",\"availabilityCount\":8,\"bookedParticipants\":7,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-13\",\"time\":\"09:00\",\"label\":\"\",\"availabilityCount\":9,\"bookedParticipants\":6,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-20\",\"time\":\"09:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":11,\"soldOut\":false,\"unavailable\":false}]},\"677536\":{\"slots\":7,\"openSlots\":7,\"soldOut\":false,\"lowStock\":false,\"fromPrice\":159,\"fromPriceText\":\"159 \u20ac\",\"nextDepartures\":[\"ti 7.7.2026 klo 09:00\",\"ti 14.7.2026 klo 09:00\",\"ti 21.7.2026 klo 09:00\",\"ti 28.7.2026 klo 09:00\",\"ti 4.8.2026 klo 09:00\"],\"allDepartures\":[{\"date\":\"2026-07-07\",\"time\":\"09:00\",\"label\":\"\",\"availabilityCount\":40,\"bookedParticipants\":20,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-14\",\"time\":\"09:00\",\"label\":\"\",\"availabilityCount\":30,\"bookedParticipants\":30,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-21\",\"time\":\"09:00\",\"label\":\"\",\"availabilityCount\":50,\"bookedParticipants\":10,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-28\",\"time\":\"09:00\",\"label\":\"\",\"availabilityCount\":47,\"bookedParticipants\":13,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-04\",\"time\":\"09:00\",\"label\":\"\",\"availabilityCount\":32,\"bookedParticipants\":28,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-11\",\"time\":\"09:00\",\"label\":\"\",\"availabilityCount\":44,\"bookedParticipants\":16,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-18\",\"time\":\"09:00\",\"label\":\"\",\"availabilityCount\":57,\"bookedParticipants\":3,\"soldOut\":false,\"unavailable\":false}]},\"768032\":{\"slots\":8,\"openSlots\":8,\"soldOut\":false,\"lowStock\":false,\"fromPrice\":39,\"fromPriceText\":\"39 \u20ac\",\"nextDepartures\":[\"to 9.7.2026 klo 19:00 \u00b7 Illallinen\",\"to 16.7.2026 klo 19:00 \u00b7 Illallinen\",\"to 23.7.2026 klo 19:00 \u00b7 Illallinen\",\"to 30.7.2026 klo 19:00 \u00b7 Illallinen\",\"to 6.8.2026 klo 19:00 \u00b7 Illallinen\"],\"allDepartures\":[{\"date\":\"2026-07-09\",\"time\":\"19:00\",\"label\":\"Illallinen\",\"availabilityCount\":98,\"bookedParticipants\":2,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-16\",\"time\":\"19:00\",\"label\":\"Illallinen\",\"availabilityCount\":100,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-23\",\"time\":\"19:00\",\"label\":\"Illallinen\",\"availabilityCount\":100,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-30\",\"time\":\"19:00\",\"label\":\"Illallinen\",\"availabilityCount\":100,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-06\",\"time\":\"19:00\",\"label\":\"Illallinen\",\"availabilityCount\":100,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-13\",\"time\":\"19:00\",\"label\":\"Illallinen\",\"availabilityCount\":100,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-20\",\"time\":\"19:00\",\"label\":\"Illallinen\",\"availabilityCount\":100,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-27\",\"time\":\"19:00\",\"label\":\"Illallinen\",\"availabilityCount\":100,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false}]},\"829674\":{\"slots\":7,\"openSlots\":7,\"soldOut\":false,\"lowStock\":false,\"fromPrice\":29,\"fromPriceText\":\"29 \u20ac\",\"nextDepartures\":[\"ti 7.7.2026 klo 13:30\",\"ti 14.7.2026 klo 13:30\",\"ti 28.7.2026 klo 13:30\",\"ti 4.8.2026 klo 13:30\",\"ti 11.8.2026 klo 13:30\"],\"allDepartures\":[{\"date\":\"2026-07-07\",\"time\":\"13:30\",\"label\":\"\",\"availabilityCount\":20,\"bookedParticipants\":10,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-14\",\"time\":\"13:30\",\"label\":\"\",\"availabilityCount\":27,\"bookedParticipants\":3,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-28\",\"time\":\"13:30\",\"label\":\"\",\"availabilityCount\":30,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-04\",\"time\":\"13:30\",\"label\":\"\",\"availabilityCount\":30,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-11\",\"time\":\"13:30\",\"label\":\"\",\"availabilityCount\":30,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-18\",\"time\":\"13:30\",\"label\":\"\",\"availabilityCount\":30,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-25\",\"time\":\"13:30\",\"label\":\"\",\"availabilityCount\":30,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false}]},\"829681\":{\"slots\":7,\"openSlots\":7,\"soldOut\":false,\"lowStock\":false,\"fromPrice\":38.5,\"fromPriceText\":\"38,50 \u20ac\",\"nextDepartures\":[\"ti 7.7.2026 klo 11:00\",\"ti 14.7.2026 klo 11:00\",\"ti 28.7.2026 klo 11:00\",\"ti 4.8.2026 klo 11:00\",\"ti 11.8.2026 klo 11:00\"],\"allDepartures\":[{\"date\":\"2026-07-07\",\"time\":\"11:00\",\"label\":\"\",\"availabilityCount\":29,\"bookedParticipants\":1,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-14\",\"time\":\"11:00\",\"label\":\"\",\"availabilityCount\":30,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-28\",\"time\":\"11:00\",\"label\":\"\",\"availabilityCount\":30,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-04\",\"time\":\"11:00\",\"label\":\"\",\"availabilityCount\":28,\"bookedParticipants\":2,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-11\",\"time\":\"11:00\",\"label\":\"\",\"availabilityCount\":30,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-18\",\"time\":\"11:00\",\"label\":\"\",\"availabilityCount\":30,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-25\",\"time\":\"11:00\",\"label\":\"\",\"availabilityCount\":30,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false}]},\"838109\":{\"slots\":7,\"openSlots\":7,\"soldOut\":false,\"lowStock\":false,\"fromPrice\":69,\"fromPriceText\":\"69 \u20ac\",\"nextDepartures\":[\"ti 7.7.2026 klo 11:00\",\"ti 14.7.2026 klo 11:00\",\"ti 28.7.2026 klo 11:00\",\"ti 4.8.2026 klo 11:00\",\"ti 11.8.2026 klo 11:00\"],\"allDepartures\":[{\"date\":\"2026-07-07\",\"time\":\"11:00\",\"label\":\"\",\"availabilityCount\":46,\"bookedParticipants\":4,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-14\",\"time\":\"11:00\",\"label\":\"\",\"availabilityCount\":50,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-28\",\"time\":\"11:00\",\"label\":\"\",\"availabilityCount\":46,\"bookedParticipants\":4,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-04\",\"time\":\"11:00\",\"label\":\"\",\"availabilityCount\":50,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-11\",\"time\":\"11:00\",\"label\":\"\",\"availabilityCount\":50,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-18\",\"time\":\"11:00\",\"label\":\"\",\"availabilityCount\":50,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-25\",\"time\":\"11:00\",\"label\":\"\",\"availabilityCount\":50,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false}]},\"838178\":{\"slots\":7,\"openSlots\":7,\"soldOut\":false,\"lowStock\":false,\"fromPrice\":37.5,\"fromPriceText\":\"37,50 \u20ac\",\"nextDepartures\":[\"ti 7.7.2026 klo 15:30\",\"ti 14.7.2026 klo 15:30\",\"ti 28.7.2026 klo 15:30\",\"ti 4.8.2026 klo 15:30\",\"ti 11.8.2026 klo 15:30\"],\"allDepartures\":[{\"date\":\"2026-07-07\",\"time\":\"15:30\",\"label\":\"\",\"availabilityCount\":30,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-14\",\"time\":\"15:30\",\"label\":\"\",\"availabilityCount\":30,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-28\",\"time\":\"15:30\",\"label\":\"\",\"availabilityCount\":30,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-04\",\"time\":\"15:30\",\"label\":\"\",\"availabilityCount\":30,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-11\",\"time\":\"15:30\",\"label\":\"\",\"availabilityCount\":30,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-18\",\"time\":\"15:30\",\"label\":\"\",\"availabilityCount\":30,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-25\",\"time\":\"15:30\",\"label\":\"\",\"availabilityCount\":30,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false}]},\"838184\":{\"slots\":0,\"openSlots\":0,\"soldOut\":false,\"lowStock\":false,\"fromPrice\":29,\"fromPriceText\":\"29 \u20ac\",\"nextDepartures\":[],\"allDepartures\":[]},\"1028489\":{\"slots\":168,\"openSlots\":168,\"soldOut\":false,\"lowStock\":true,\"fromPrice\":39,\"fromPriceText\":\"39 \u20ac\",\"nextDepartures\":[\"ti 7.7.2026 klo 10:00\",\"ti 7.7.2026 klo 14:00\",\"ti 7.7.2026 klo 18:00\",\"ke 8.7.2026 klo 10:00\",\"ke 8.7.2026 klo 14:00\"],\"allDepartures\":[{\"date\":\"2026-07-07\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-07\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-07\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-08\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-08\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-08\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-09\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-09\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-09\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-10\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-10\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-10\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-11\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-11\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-11\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-12\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-12\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-12\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-13\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-13\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-13\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-14\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-14\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-14\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-15\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-15\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-15\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-16\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-16\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-16\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-17\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-17\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-17\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-18\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-18\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-18\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-19\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-19\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-19\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-20\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-20\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-20\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-21\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-21\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-21\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-22\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-22\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-22\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-23\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-23\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-23\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-24\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-24\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-24\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-25\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-25\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-25\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-26\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-26\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-26\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-27\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-27\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-27\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-28\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-28\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-28\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-29\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-29\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-29\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-30\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-30\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-30\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-31\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-31\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-31\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-01\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-01\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-01\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-02\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-02\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-02\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-03\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-03\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-03\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-04\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-04\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-04\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-05\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-05\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-05\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-06\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-06\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-06\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-07\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-07\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-07\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-08\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-08\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-08\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-09\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-09\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-09\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-10\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-10\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-10\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-11\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-11\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-11\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-12\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-12\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-12\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-13\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-13\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-13\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-14\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-14\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-14\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-15\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-15\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-15\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-16\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-16\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-16\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-17\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-17\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-17\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-18\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-18\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-18\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-19\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-19\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-19\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-20\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-20\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-20\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-21\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-21\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-21\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-22\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-22\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-22\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-23\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-23\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-23\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-24\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-24\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-24\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-25\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-25\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-25\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-26\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-26\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-26\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-27\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-27\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-27\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-28\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-28\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-28\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-29\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-29\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-29\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-30\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-30\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-30\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-31\",\"time\":\"10:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-31\",\"time\":\"14:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-31\",\"time\":\"18:00\",\"label\":\"\",\"availabilityCount\":4,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false}]},\"1037129\":{\"slots\":14,\"openSlots\":14,\"soldOut\":false,\"lowStock\":false,\"fromPrice\":39,\"fromPriceText\":\"39 \u20ac\",\"nextDepartures\":[\"ke 8.7.2026 klo 17:00 \u00b7 Sunset & Dine \u2014 illallisristeily, l\u00e4ht\u00f6 Joensuun matkustajasatamasta\",\"pe 10.7.2026 klo 17:00 \u00b7 Sunset & Dine \u2014 illallisristeily, l\u00e4ht\u00f6 Joensuun matkustajasatamasta\",\"la 11.7.2026 klo 10:00 \u00b7 Lounasristeily, l\u00e4ht\u00f6 Joensuun matkustajasatamasta\",\"pe 17.7.2026 klo 17:00 \u00b7 Sunset & Dine \u2014 illallisristeily, l\u00e4ht\u00f6 Joensuun matkustajasatamasta\",\"la 18.7.2026 klo 10:00 \u00b7 Lounasristeily, l\u00e4ht\u00f6 Joensuun matkustajasatamasta\"],\"allDepartures\":[{\"date\":\"2026-07-08\",\"time\":\"17:00\",\"label\":\"Sunset & Dine \u2014 illallisristeily, l\u00e4ht\u00f6 Joensuun matkustajasatamasta\",\"availabilityCount\":45,\"bookedParticipants\":15,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-10\",\"time\":\"17:00\",\"label\":\"Sunset & Dine \u2014 illallisristeily, l\u00e4ht\u00f6 Joensuun matkustajasatamasta\",\"availabilityCount\":54,\"bookedParticipants\":6,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-11\",\"time\":\"10:00\",\"label\":\"Lounasristeily, l\u00e4ht\u00f6 Joensuun matkustajasatamasta\",\"availabilityCount\":37,\"bookedParticipants\":23,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-17\",\"time\":\"17:00\",\"label\":\"Sunset & Dine \u2014 illallisristeily, l\u00e4ht\u00f6 Joensuun matkustajasatamasta\",\"availabilityCount\":56,\"bookedParticipants\":4,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-18\",\"time\":\"10:00\",\"label\":\"Lounasristeily, l\u00e4ht\u00f6 Joensuun matkustajasatamasta\",\"availabilityCount\":52,\"bookedParticipants\":8,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-22\",\"time\":\"17:00\",\"label\":\"Sunset & Dine \u2014 illallisristeily, l\u00e4ht\u00f6 Joensuun matkustajasatamasta\",\"availabilityCount\":52,\"bookedParticipants\":8,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-24\",\"time\":\"17:00\",\"label\":\"Sunset & Dine \u2014 illallisristeily, l\u00e4ht\u00f6 Joensuun matkustajasatamasta\",\"availabilityCount\":17,\"bookedParticipants\":43,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-29\",\"time\":\"17:00\",\"label\":\"Sunset & Dine \u2014 illallisristeily, l\u00e4ht\u00f6 Joensuun matkustajasatamasta\",\"availabilityCount\":60,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-31\",\"time\":\"17:00\",\"label\":\"Sunset & Dine \u2014 illallisristeily, l\u00e4ht\u00f6 Joensuun matkustajasatamasta\",\"availabilityCount\":58,\"bookedParticipants\":2,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-01\",\"time\":\"17:00\",\"label\":\"Sunset & Dine \u2014 illallisristeily, l\u00e4ht\u00f6 Joensuun matkustajasatamasta\",\"availabilityCount\":44,\"bookedParticipants\":16,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-05\",\"time\":\"17:00\",\"label\":\"Sunset & Dine \u2014 illallisristeily, l\u00e4ht\u00f6 Joensuun matkustajasatamasta\",\"availabilityCount\":60,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-12\",\"time\":\"17:00\",\"label\":\"Sunset & Dine \u2014 illallisristeily, l\u00e4ht\u00f6 Joensuun matkustajasatamasta\",\"availabilityCount\":44,\"bookedParticipants\":16,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-15\",\"time\":\"10:00\",\"label\":\"Lounasristeily, l\u00e4ht\u00f6 Joensuun matkustajasatamasta\",\"availabilityCount\":60,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-21\",\"time\":\"17:00\",\"label\":\"Sunset & Dine \u2014 illallisristeily, l\u00e4ht\u00f6 Joensuun matkustajasatamasta\",\"availabilityCount\":44,\"bookedParticipants\":16,\"soldOut\":false,\"unavailable\":false}]},\"1052254\":{\"slots\":11,\"openSlots\":11,\"soldOut\":false,\"lowStock\":false,\"fromPrice\":19,\"fromPriceText\":\"19 \u20ac\",\"nextDepartures\":[\"ke 8.7.2026 klo 19:30\",\"pe 17.7.2026 klo 19:30\",\"la 18.7.2026 klo 12:30\",\"ke 22.7.2026 klo 19:30\",\"pe 24.7.2026 klo 19:30\"],\"allDepartures\":[{\"date\":\"2026-07-08\",\"time\":\"19:30\",\"label\":\"\",\"availabilityCount\":60,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-17\",\"time\":\"19:30\",\"label\":\"\",\"availabilityCount\":60,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-18\",\"time\":\"12:30\",\"label\":\"\",\"availabilityCount\":60,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-22\",\"time\":\"19:30\",\"label\":\"\",\"availabilityCount\":60,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-24\",\"time\":\"19:30\",\"label\":\"\",\"availabilityCount\":56,\"bookedParticipants\":4,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-29\",\"time\":\"19:30\",\"label\":\"\",\"availabilityCount\":60,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-31\",\"time\":\"19:30\",\"label\":\"\",\"availabilityCount\":60,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-05\",\"time\":\"19:30\",\"label\":\"\",\"availabilityCount\":60,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-12\",\"time\":\"19:30\",\"label\":\"\",\"availabilityCount\":60,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-15\",\"time\":\"12:30\",\"label\":\"\",\"availabilityCount\":53,\"bookedParticipants\":7,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-21\",\"time\":\"19:30\",\"label\":\"\",\"availabilityCount\":60,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false}]},\"1224819\":{\"slots\":0,\"openSlots\":0,\"soldOut\":false,\"lowStock\":false,\"fromPrice\":48,\"fromPriceText\":\"48 \u20ac\",\"nextDepartures\":[],\"allDepartures\":[]},\"1224841\":{\"slots\":0,\"openSlots\":0,\"soldOut\":false,\"lowStock\":false,\"fromPrice\":38,\"fromPriceText\":\"38 \u20ac\",\"nextDepartures\":[],\"allDepartures\":[]},\"1224843\":{\"slots\":0,\"openSlots\":0,\"soldOut\":false,\"lowStock\":false,\"fromPrice\":58,\"fromPriceText\":\"58 \u20ac\",\"nextDepartures\":[],\"allDepartures\":[]},\"1224845\":{\"slots\":0,\"openSlots\":0,\"soldOut\":false,\"lowStock\":false,\"fromPrice\":39,\"fromPriceText\":\"39 \u20ac\",\"nextDepartures\":[],\"allDepartures\":[]},\"1224846\":{\"slots\":0,\"openSlots\":0,\"soldOut\":false,\"lowStock\":false,\"fromPrice\":25,\"fromPriceText\":\"25 \u20ac\",\"nextDepartures\":[],\"allDepartures\":[]},\"1224847\":{\"slots\":0,\"openSlots\":0,\"soldOut\":false,\"lowStock\":false,\"fromPrice\":48,\"fromPriceText\":\"48 \u20ac\",\"nextDepartures\":[],\"allDepartures\":[]},\"1224848\":{\"slots\":1,\"openSlots\":1,\"soldOut\":false,\"lowStock\":false,\"fromPrice\":54,\"fromPriceText\":\"54 \u20ac\",\"nextDepartures\":[\"la 11.7.2026 klo 18:00 \u00b7 L\u00e4ht\u00f6 Joensuun matkustajasatamasta\"],\"allDepartures\":[{\"date\":\"2026-07-11\",\"time\":\"18:00\",\"label\":\"L\u00e4ht\u00f6 Joensuun matkustajasatamasta\",\"availabilityCount\":53,\"bookedParticipants\":17,\"soldOut\":false,\"unavailable\":false}]},\"1224849\":{\"slots\":3,\"openSlots\":3,\"soldOut\":false,\"lowStock\":false,\"fromPrice\":44,\"fromPriceText\":\"44 \u20ac\",\"nextDepartures\":[\"la 11.7.2026 klo 17:15 \u00b7 Reitti 3: Tohmaj\u00e4rvelt\u00e4\",\"la 11.7.2026 klo 17:30 \u00b7 Reitti 2: Tuusniemelt\u00e4\",\"la 11.7.2026 klo 18:00 \u00b7 Reitti 1: Joensuusta\"],\"allDepartures\":[{\"date\":\"2026-07-11\",\"time\":\"17:15\",\"label\":\"Reitti 3: Tohmaj\u00e4rvelt\u00e4\",\"availabilityCount\":60,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-11\",\"time\":\"17:30\",\"label\":\"Reitti 2: Tuusniemelt\u00e4\",\"availabilityCount\":60,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-11\",\"time\":\"18:00\",\"label\":\"Reitti 1: Joensuusta\",\"availabilityCount\":60,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false}]},\"1224850\":{\"slots\":1,\"openSlots\":1,\"soldOut\":false,\"lowStock\":false,\"fromPrice\":58,\"fromPriceText\":\"58 \u20ac\",\"nextDepartures\":[\"la 25.7.2026 klo 18:00 \u00b7 L\u00e4ht\u00f6 Joensuun matkustajasatamasta\"],\"allDepartures\":[{\"date\":\"2026-07-25\",\"time\":\"18:00\",\"label\":\"L\u00e4ht\u00f6 Joensuun matkustajasatamasta\",\"availabilityCount\":53,\"bookedParticipants\":17,\"soldOut\":false,\"unavailable\":false}]},\"1224851\":{\"slots\":3,\"openSlots\":3,\"soldOut\":false,\"lowStock\":false,\"fromPrice\":48,\"fromPriceText\":\"48 \u20ac\",\"nextDepartures\":[\"la 25.7.2026 klo 17:15 \u00b7 Reitti 3: Tohmaj\u00e4rvelt\u00e4\",\"la 25.7.2026 klo 17:30 \u00b7 Reitti 2: Tuusniemelt\u00e4\",\"la 25.7.2026 klo 18:00 \u00b7 Reitti 1: Joensuusta\"],\"allDepartures\":[{\"date\":\"2026-07-25\",\"time\":\"17:15\",\"label\":\"Reitti 3: Tohmaj\u00e4rvelt\u00e4\",\"availabilityCount\":60,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-25\",\"time\":\"17:30\",\"label\":\"Reitti 2: Tuusniemelt\u00e4\",\"availabilityCount\":60,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-07-25\",\"time\":\"18:00\",\"label\":\"Reitti 1: Joensuusta\",\"availabilityCount\":60,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false}]},\"1224852\":{\"slots\":1,\"openSlots\":1,\"soldOut\":false,\"lowStock\":false,\"fromPrice\":48,\"fromPriceText\":\"48 \u20ac\",\"nextDepartures\":[\"la 8.8.2026 klo 18:00 \u00b7 L\u00e4ht\u00f6 Joensuun matkustajasatamasta\"],\"allDepartures\":[{\"date\":\"2026-08-08\",\"time\":\"18:00\",\"label\":\"L\u00e4ht\u00f6 Joensuun matkustajasatamasta\",\"availabilityCount\":70,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false}]},\"1224853\":{\"slots\":3,\"openSlots\":3,\"soldOut\":false,\"lowStock\":false,\"fromPrice\":38,\"fromPriceText\":\"38 \u20ac\",\"nextDepartures\":[\"la 8.8.2026 klo 17:15 \u00b7 Reitti 3: Tohmaj\u00e4rvelt\u00e4\",\"la 8.8.2026 klo 17:30 \u00b7 Reitti 2: Tuusniemelt\u00e4\",\"la 8.8.2026 klo 18:00 \u00b7 Reitti 1: Joensuusta\"],\"allDepartures\":[{\"date\":\"2026-08-08\",\"time\":\"17:15\",\"label\":\"Reitti 3: Tohmaj\u00e4rvelt\u00e4\",\"availabilityCount\":60,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-08\",\"time\":\"17:30\",\"label\":\"Reitti 2: Tuusniemelt\u00e4\",\"availabilityCount\":60,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-08\",\"time\":\"18:00\",\"label\":\"Reitti 1: Joensuusta\",\"availabilityCount\":60,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false}]},\"1224854\":{\"slots\":1,\"openSlots\":1,\"soldOut\":false,\"lowStock\":false,\"fromPrice\":48,\"fromPriceText\":\"48 \u20ac\",\"nextDepartures\":[\"pe 28.8.2026 klo 18:00 \u00b7 L\u00e4ht\u00f6 Joensuun matkustajasatamasta\"],\"allDepartures\":[{\"date\":\"2026-08-28\",\"time\":\"18:00\",\"label\":\"L\u00e4ht\u00f6 Joensuun matkustajasatamasta\",\"availabilityCount\":70,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false}]},\"1224855\":{\"slots\":3,\"openSlots\":3,\"soldOut\":false,\"lowStock\":false,\"fromPrice\":38,\"fromPriceText\":\"38 \u20ac\",\"nextDepartures\":[\"pe 28.8.2026 klo 17:15 \u00b7 Reitti 3: Tohmaj\u00e4rvelt\u00e4\",\"pe 28.8.2026 klo 17:30 \u00b7 Reitti 2: Tuusniemelt\u00e4\",\"pe 28.8.2026 klo 18:00 \u00b7 Reitti 1: Joensuusta\"],\"allDepartures\":[{\"date\":\"2026-08-28\",\"time\":\"17:15\",\"label\":\"Reitti 3: Tohmaj\u00e4rvelt\u00e4\",\"availabilityCount\":60,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-28\",\"time\":\"17:30\",\"label\":\"Reitti 2: Tuusniemelt\u00e4\",\"availabilityCount\":60,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-28\",\"time\":\"18:00\",\"label\":\"Reitti 1: Joensuusta\",\"availabilityCount\":60,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false}]},\"1224856\":{\"slots\":1,\"openSlots\":1,\"soldOut\":false,\"lowStock\":false,\"fromPrice\":58,\"fromPriceText\":\"58 \u20ac\",\"nextDepartures\":[\"la 29.8.2026 klo 18:00 \u00b7 L\u00e4ht\u00f6 Joensuun matkustajasatamasta\"],\"allDepartures\":[{\"date\":\"2026-08-29\",\"time\":\"18:00\",\"label\":\"L\u00e4ht\u00f6 Joensuun matkustajasatamasta\",\"availabilityCount\":70,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false}]},\"1224857\":{\"slots\":3,\"openSlots\":3,\"soldOut\":false,\"lowStock\":false,\"fromPrice\":48,\"fromPriceText\":\"48 \u20ac\",\"nextDepartures\":[\"la 29.8.2026 klo 17:15 \u00b7 Reitti 3: Tohmaj\u00e4rvelt\u00e4\",\"la 29.8.2026 klo 17:30 \u00b7 Reitti 2: Tuusniemelt\u00e4\",\"la 29.8.2026 klo 18:00 \u00b7 Reitti 1: Joensuusta\"],\"allDepartures\":[{\"date\":\"2026-08-29\",\"time\":\"17:15\",\"label\":\"Reitti 3: Tohmaj\u00e4rvelt\u00e4\",\"availabilityCount\":60,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-29\",\"time\":\"17:30\",\"label\":\"Reitti 2: Tuusniemelt\u00e4\",\"availabilityCount\":60,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false},{\"date\":\"2026-08-29\",\"time\":\"18:00\",\"label\":\"Reitti 1: Joensuusta\",\"availabilityCount\":60,\"bookedParticipants\":0,\"soldOut\":false,\"unavailable\":false}]}}};\n  try { const r = await fetch('https:\/\/data.puoti.link\/availability.json',{cache:'no-store'}); if(r.ok){ const j = await r.json(); if(j && j.products) availability = j; } } catch(e){}\n  const upcomingRoot = document.getElementById('ep26-upcoming-list');\n  const upcomingBusRoot = document.getElementById('ep26-upcoming-bus-list');\n  const CAT_ORDER = ['risteily','puoti_live','keikkabussi','muu','kumppani'];\n  const esc = s => String(s==null?'':s).replace(\/[&<>\"']\/g,c=>({'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;',\"'\":'&#39;'}[c]));\n  const bokunUrl = id => 'https:\/\/widgets.bokun.io\/online-sales\/'+data.channelUUID+'\/experience\/'+id+'?partialView=1';\n  const productById = new Map(data.products.map(p => [String(p.id), p]));\n  function statusOf(p){\n    if(!availability) return {tone:'available',label:'Saatavilla'};\n    const a = availability.products && availability.products[p.id];\n    if(!a) return {tone:'available',label:'Saatavilla'};\n    if(a.soldOut) return {tone:'out',label:'Loppuunmyyty'};\n    if(a.lowStock) return {tone:'low',label:'Vain muutamia j\u00e4ljell\u00e4'};\n    return {tone:'available',label:'Saatavilla'};\n  }\n  function metaIcons(p){\n    const bits=[];\n    if(p.duration) bits.push('<span class=\"ep26-meta-item\">\u23f1 '+esc(p.duration)+'<\/span>');\n    if(p.locations && p.locations.length){\n      const map={joensuu:'Joensuu',liperi:'Liperi',tohmajarvi:'Tohmaj\u00e4rvi',tuusniemi:'Tuusniemi',punkaharju:'Punkaharju',savonlinna:'Savonlinna',kuopio:'Kuopio'};\n      bits.push('<span class=\"ep26-meta-item\">\ud83d\udccd '+esc(p.locations.map(l=>map[l]||l).slice(0,2).join(' \u00b7 '))+'<\/span>');\n    }\n    if(p.eventDate){\n      const d=new Date(p.eventDate);\n      const wd=['su','ma','ti','ke','to','pe','la'][d.getDay()];\n      bits.push('<span class=\"ep26-meta-item\">\ud83d\udcc5 '+wd+' '+d.getDate()+'.'+(d.getMonth()+1)+'.'+d.getFullYear()+'<\/span>');\n    }\n    return bits.join('');\n  }\n  function priceOf(p){\n    if(availability && availability.products && availability.products[p.id]){\n      const a=availability.products[p.id]; if(a.fromPriceText) return a.fromPriceText;\n    }\n    return null;\n  }\n  \/\/ A product with availability data but zero future departures is cancelled \/\n  \/\/ ended in B\u00f3kun \u2014 hide its card so it can't show \"Saatavilla\" with a dead\n  \/\/ VARAA button. Only hide when we positively know slots===0; never hide on\n  \/\/ missing data (fetch failure should not blank the listing).\n  function isBookable(p){\n    if(!availability || !availability.products) return true;\n    const a = availability.products[p.id];\n    if(!a) return true;\n    return (a.slots || 0) > 0;\n  }\n  function nextDeparturesHtml(p){\n    if(!availability) return '';\n    const a=availability.products && availability.products[p.id];\n    if(!a || !a.nextDepartures || !a.nextDepartures.length) return '';\n    const lines=a.nextDepartures.slice(0,3).map(d=>'<li>'+esc(d)+'<\/li>').join('');\n    return '<div class=\"ep26-card-departures has-data\"><div class=\"ep26-departures-label\">Seuraavat l\u00e4hd\u00f6t<\/div><ul class=\"ep26-departures-list\">'+lines+'<\/ul><\/div>';\n  }\n  function dateParts(iso){\n    const d = new Date(iso + 'T12:00:00');\n    return {\n      weekday: ['su','ma','ti','ke','to','pe','la'][d.getDay()],\n      date: d.getDate()+'.'+(d.getMonth()+1)+'.',\n      full: d.getDate()+'.'+(d.getMonth()+1)+'.'+d.getFullYear()\n    };\n  }\n  const UPCOMING_WINDOW_DAYS = 7;   \/\/ initial cap; \"load more\" extends in 7-day steps\n  function localToday(){\n    const d = new Date();\n    return new Date(d.getFullYear(), d.getMonth(), d.getDate());\n  }\n  function depArticle(r, ctaText, hideSlotLabel, dedupePerProduct){\n    const p = r.product, dep = r.dep;\n    const d = dateParts(dep.date);\n    const low = dep.availabilityCount && dep.availabilityCount <= 5;\n    const stock = low ? 'Vain muutama paikka j\u00e4ljell\u00e4' : 'Saatavilla';\n    const timeLine = dedupePerProduct ? d.full : ('klo '+esc(dep.time || '')+' \u00b7 '+esc(d.full));\n    const price = priceOf(p);\n    const action = dedupePerProduct\n      ? '<button class=\"ep26-mini-btn\" type=\"button\" data-ep26-show-product=\"'+esc(p.id)+'\">'+esc(ctaText)+'<\/button>'\n      : '<button class=\"ep26-mini-btn bokunButton\" id=\"bokun_dep_'+esc(p.id)+'_'+esc(dep.date.replaceAll('-',''))+'_'+esc((dep.time||'').replace(':',''))+'\" data-src=\"'+bokunUrl(p.id)+'\" data-testid=\"widget-book-button\">'+esc(ctaText)+'<\/button>';\n    return '<article class=\"ep26-departure\">' +\n      '<div class=\"ep26-departure-date\"><strong>'+esc(d.weekday)+'<\/strong><span>'+esc(d.date)+'<\/span><\/div>' +\n      '<div class=\"ep26-departure-main\">' +\n        '<p class=\"ep26-departure-time\">'+timeLine+'<\/p>' +\n        '<h3 class=\"ep26-departure-title\">'+esc(p.displayName || p.title)+'<\/h3>' +\n        (!hideSlotLabel && dep.label ? '<p class=\"ep26-departure-label\">'+esc(dep.label)+'<\/p>' : '') +\n        (price ? '<p class=\"ep26-departure-price\"><em>Alkaen<\/em>'+esc(price)+'<\/p>' : '') +\n      '<\/div>' +\n      '<div class=\"ep26-departure-side\">' +\n        '<span class=\"ep26-departure-stock'+(low?' is-low':'')+'\">'+esc(stock)+'<\/span>' +\n        action +\n      '<\/div>' +\n    '<\/article>';\n  }\n  function renderUpcomingInto(targetRoot, allowedCategories, opts){\n    if(!targetRoot) return;\n    opts = opts || {};\n    const emptyMsg = opts.emptyMsg || 'T\u00e4ll\u00e4 hetkell\u00e4 ei ole tulevia l\u00e4ht\u00f6j\u00e4.';\n    const ctaText = opts.ctaText || 'Varaa';\n    const hideSlotLabel = !!opts.hideSlotLabel;\n    const dedupePerProduct = !!opts.dedupePerProduct;\n    if(!availability || !availability.products){\n      targetRoot.innerHTML = '<div class=\"ep26-upcoming-empty\">L\u00e4ht\u00f6data ei ole viel\u00e4 saatavilla.<\/div>';\n      return;\n    }\n    const today = localToday();\n    const allowed = new Set(allowedCategories);\n    const rows = [];\n    Object.entries(availability.products).forEach(([id, a]) => {\n      const p = productById.get(String(id));\n      if(!p) return;\n      if(!allowed.has(p.category)) return;\n      (a.allDepartures || []).forEach(dep => {\n        if(dep.unavailable || dep.soldOut) return;\n        const dt = new Date(dep.date + 'T00:00:00');\n        if(dt < today) return;            \/\/ floor at today: past departures drop off automatically\n        rows.push({product:p, dep, dt});\n      });\n    });\n    rows.sort((a,b) => (a.dep.date+' '+a.dep.time+' '+a.product.title).localeCompare(b.dep.date+' '+b.dep.time+' '+b.product.title));\n    let all = rows;\n    if(dedupePerProduct){\n      const seen = new Set();\n      all = rows.filter(r => { if(seen.has(r.product.id)) return false; seen.add(r.product.id); return true; });\n    }\n    if(!all.length){\n      targetRoot.innerHTML = '<div class=\"ep26-upcoming-empty\">'+esc(emptyMsg)+'<\/div>';\n      return;\n    }\n    let windowDays = UPCOMING_WINDOW_DAYS;\n    function paint(){\n      const cutoff = new Date(today); cutoff.setDate(cutoff.getDate() + windowDays);\n      let list = all.filter(r => r.dt < cutoff);\n      if(!list.length) list = all.slice(0, 1);   \/\/ always show at least the next departure\n      const remaining = all.length - list.length;\n      const cards = list.map(r => depArticle(r, ctaText, hideSlotLabel, dedupePerProduct)).join('');\n      const more = remaining > 0\n        ? '<button type=\"button\" class=\"ep26-loadmore\" data-ep26-more>N\u00e4yt\u00e4 lis\u00e4\u00e4 l\u00e4ht\u00f6j\u00e4 ('+remaining+') \u2193<\/button>'\n        : '';\n      targetRoot.innerHTML = cards + more;\n      targetRoot.querySelectorAll('[data-ep26-show-product]').forEach(showBtn => {\n        showBtn.addEventListener('click', () => {\n          const productId = showBtn.getAttribute('data-ep26-show-product');\n          const productRows = rows.filter(r => String(r.product.id) === String(productId));\n          const expandedCards = productRows.map(r => depArticle(r, 'Varaa', false, false)).join('');\n          const back = '<button type=\"button\" class=\"ep26-loadmore\" data-ep26-back>Takaisin keikkabusseihin \u2191<\/button>';\n          targetRoot.innerHTML = expandedCards + back;\n          const backBtn = targetRoot.querySelector('[data-ep26-back]');\n          if(backBtn) backBtn.addEventListener('click', () => { paint(); scanBokun(0); });\n          scanBokun(0);\n        });\n      });\n      const btn = targetRoot.querySelector('[data-ep26-more]');\n      if(btn) btn.addEventListener('click', () => {\n        windowDays += UPCOMING_WINDOW_DAYS;\n        const c2 = new Date(today); c2.setDate(c2.getDate() + windowDays);\n        \/\/ sparse schedule: if the next step reveals nothing, snap to the next departure\n        if(all.filter(r => r.dt < c2).length === list.length){\n          const next = all[list.length];\n          if(next){ windowDays = Math.ceil((next.dt - today) \/ 86400000) + 1; }\n        }\n        paint();\n        scanBokun(0);\n      });\n    }\n    paint();\n  }\n  function renderUpcoming(){\n    renderUpcomingInto(upcomingRoot, ['risteily','puoti_live'], { emptyMsg: 'Ei tulevia risteilyl\u00e4ht\u00f6j\u00e4 juuri nyt.' });\n    renderUpcomingInto(upcomingBusRoot, ['keikkabussi'], {\n      emptyMsg: 'Ei tulevia keikkabussil\u00e4ht\u00f6j\u00e4 juuri nyt.',\n      dedupePerProduct: true,\n      hideSlotLabel: true,\n      ctaText: 'N\u00e4yt\u00e4 l\u00e4hd\u00f6t \u2192',\n    });\n  }\n  function renderCard(p){\n    const st=statusOf(p); const tags=[];\n    if(p.category==='puoti_live') tags.push('<span class=\"ep26-tag is-live\">Puoti LIVE!<\/span>');\n    else if(p.category==='kumppani') tags.push('<span class=\"ep26-tag is-partner\">'+esc(p.vendorTitle||'Kumppani')+'<\/span>');\n    else tags.push('<span class=\"ep26-tag\">'+esc((data.categories[p.category]||{}).label||p.category)+'<\/span>');\n    const ctaLabel = p.category==='keikkabussi'?'\ud83d\ude8c Varaa bussipaikka':(p.category==='puoti_live'?'\ud83d\udea2 Varaa risteily + lippu':'\ud83c\udf9f Varaa');\n    const price = priceOf(p);\n    const priceHtml = price ? '<div class=\"ep26-card-price\"><em>Alkaen<\/em>'+esc(price)+'<\/div>' : '';\n    return '<article class=\"ep26-card\" data-ep26-card data-category=\"'+esc(p.category)+'\" data-locations=\"'+esc((p.locations||[]).join(' '))+'\" data-status=\"'+st.tone+'\">'+\n      '<div class=\"ep26-card-img\">'+\n        (p.hero?'<img decoding=\"async\" loading=\"lazy\" src=\"'+esc(p.hero)+'\" alt=\"\">':'')+\n        '<div class=\"ep26-tags\">'+tags.join('')+'<\/div>'+\n        '<div class=\"ep26-status is-'+st.tone+'\">'+st.label+'<\/div>'+\n      '<\/div>'+\n      '<div class=\"ep26-card-body\">'+\n        '<h3 class=\"ep26-card-title\">'+esc(p.displayName || p.title)+'<\/h3>'+\n        '<div class=\"ep26-card-meta\">'+metaIcons(p)+'<\/div>'+\n        (p.excerpt?'<p class=\"ep26-card-excerpt\">'+esc(p.excerpt)+'<\/p>':'')+\n        nextDeparturesHtml(p)+\n        priceHtml+\n        '<div class=\"ep26-card-cta\"><button class=\"ep26-btn bokunButton\" id=\"bokun_exp_'+p.id+'\" data-src=\"'+bokunUrl(p.id)+'\" data-testid=\"widget-book-button\"'+(st.tone==='out'?' disabled':'')+'><span>'+esc(ctaLabel)+'<\/span><b>\u2192<\/b><\/button><\/div>'+\n      '<\/div>'+\n    '<\/article>';\n  }\n  const html = CAT_ORDER.map(cat=>{\n    const products = data.products.filter(p=>p.category===cat && isBookable(p));\n    if(!products.length) return '';\n    const meta = data.categories[cat]||{label:cat,icon:'',description:''};\n    return '<section class=\"ep26-section\" data-ep26-section=\"'+cat+'\">'+\n      '<div class=\"ep26-section-head\"><h2 class=\"ep26-section-title\"><span class=\"ep26-section-icon\">'+meta.icon+'<\/span>'+esc(meta.label)+'<\/h2><p class=\"ep26-section-desc\">'+esc(meta.description)+'<\/p><\/div>'+\n      '<div class=\"ep26-grid\">'+products.map(renderCard).join('')+'<\/div>'+\n    '<\/section>';\n  }).filter(Boolean).join('');\n  root.innerHTML = html || '<div class=\"ep26-empty\">Ei tuotteita.<\/div>';\n  renderUpcoming();\n  const state = {category:'all',location:'all',status:'all'};\n  function applyFilters(){\n    const cards = root.querySelectorAll('[data-ep26-card]');\n    let visible=0;\n    cards.forEach(card=>{\n      const c=card.dataset.category;\n      const locs=(card.dataset.locations||'').split(\/\\s+\/).filter(Boolean);\n      const s=card.dataset.status;\n      let ok=true;\n      if(state.category!=='all' && c!==state.category) ok=false;\n      if(state.location!=='all' && !locs.includes(state.location)) ok=false;\n      if(state.status==='available' && s==='out') ok=false;\n      if(state.status==='low' && s!=='low') ok=false;\n      card.hidden=!ok; if(ok) visible++;\n    });\n    root.querySelectorAll('.ep26-section').forEach(sec=>{\n      const any=sec.querySelectorAll('[data-ep26-card]:not([hidden])').length;\n      sec.classList.toggle('is-empty',any===0);\n    });\n    countEl.textContent = (visible===cards.length) ? ('Kaikki el\u00e4mykset ('+visible+')') : (visible+' \/ '+cards.length+' el\u00e4myst\u00e4');\n  }\n  function wireFilterGroup(attr,key){\n    const cap=attr.charAt(0).toUpperCase()+attr.slice(1);\n    document.querySelectorAll('[data-ep26-'+attr+']').forEach(btn=>{\n      btn.addEventListener('click',()=>{\n        const val=btn.dataset['ep26'+cap];\n        state[key]=val;\n        document.querySelectorAll('[data-ep26-'+attr+']').forEach(b=>{\n          b.setAttribute('aria-pressed', b.dataset['ep26'+cap]===val?'true':'false');\n        });\n        applyFilters();\n      });\n    });\n  }\n  wireFilterGroup('category','category');\n  wireFilterGroup('location','location');\n  wireFilterGroup('status','status');\n  resetBtn.addEventListener('click',()=>{\n    state.category='all'; state.location='all'; state.status='all';\n    document.querySelectorAll('.ep26-filter').forEach(b=>{\n      const isAll = b.dataset.ep26Category==='all' || b.dataset.ep26Location==='all' || b.dataset.ep26Status==='all';\n      b.setAttribute('aria-pressed', isAll?'true':'false');\n    });\n    applyFilters();\n  });\n  applyFilters();\n  \/\/ B\u00f3kun's widget loader is async \u2014 a one-shot scan fires before the embedder\n  \/\/ exists, leaving cards injected by this script with dead booking buttons.\n  \/\/ Retry until the embedder is ready (~10s), then scan once.\n  function scanBokun(attempt){\n    attempt = attempt || 0;\n    if(window.BokunWidgetEmbedder && typeof window.BokunWidgetEmbedder.scan==='function'){\n      try{ window.BokunWidgetEmbedder.scan(); }catch(e){}\n      return;\n    }\n    if(attempt>=40) return;\n    setTimeout(function(){ scanBokun(attempt+1); }, 250);\n  }\n  scanBokun(0);\n})();\n<\/script>\n\n<!-- \/El\u00e4myspuoti block -->\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3e28ab3 elementor-widget__width-inherit elementor-widget elementor-widget-html\" data-id=\"3e28ab3\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t    <div class=\"bokunWidget\" data-src=\"https:\/\/widgets.bokun.io\/online-sales\/16636f67-7269-4387-bf31-3af308292416\/product-list\/88646\"><\/div>\r\n    <noscript>Please enable javascript in your browser to book<\/noscript>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e91fcff elementor-widget elementor-widget-heading\" data-id=\"e91fcff\" data-element_type=\"widget\" id=\"lahjakortit\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.6.4 - 13-04-2022 *\/\n.elementor-heading-title{padding:0;margin:0;line-height:1}.elementor-widget-heading .elementor-heading-title[class*=elementor-size-]>a{color:inherit;font-size:inherit;line-height:inherit}.elementor-widget-heading .elementor-heading-title.elementor-size-small{font-size:15px}.elementor-widget-heading .elementor-heading-title.elementor-size-medium{font-size:19px}.elementor-widget-heading .elementor-heading-title.elementor-size-large{font-size:29px}.elementor-widget-heading .elementor-heading-title.elementor-size-xl{font-size:39px}.elementor-widget-heading .elementor-heading-title.elementor-size-xxl{font-size:59px}<\/style><h1 class=\"elementor-heading-title elementor-size-default\">GIFT VOUCHERS FROM THE EXPERIENCE SHOP<\/h1>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6dbfb22 elementor-widget__width-inherit elementor-widget elementor-widget-html\" data-id=\"6dbfb22\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<div class=\"bokunWidget\" data-src=\"https:\/\/widgets.bokun.io\/online-sales\/16636f67-7269-4387-bf31-3af308292416\/gift-card\/3177\"><\/div>\r\n    <noscript>Please enable javascript in your browser to book<\/noscript>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d8036a2 elementor-widget__width-inherit elementor-widget elementor-widget-html\" data-id=\"d8036a2\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<div class=\"bokunWidget\" data-src=\"https:\/\/widgets.bokun.io\/online-sales\/16636f67-7269-4387-bf31-3af308292416\/gift-card\/3175\"><\/div>\r\n    <noscript>Please enable javascript in your browser to book<\/noscript>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<\/div>\t\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>Saariston Puoti \u00b7 Liperi \u00b7 Summer 2026 Experience Shop: Cruises, Puoti LIVE! gigs, gig buses and partner experiences amidst North Karelia\u2019s most beautiful lake scenery. Book now \u2014 places are filling up fast. M\/S Suvi-Tuuli Cruises Saariston Puoti Pizza Tasting North Karelia E-bikes Next 7 days \u00b7 M\/S Suvi-Tuuli \ud83d\udea2 Upcoming cruise departures Cruises and Puoti LIVE! cruises from Joensuu with Saariston Puoti, as well as scenic cruises from Saariston Puoti. Loading upcoming departures\u2026 Next [\u2026]<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-41290","page","type-page","status-publish","hentry"],"acf":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.saaristonpuoti.fi\/en\/wp-json\/wp\/v2\/pages\/41290","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.saaristonpuoti.fi\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.saaristonpuoti.fi\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.saaristonpuoti.fi\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.saaristonpuoti.fi\/en\/wp-json\/wp\/v2\/comments?post=41290"}],"version-history":[{"count":95,"href":"https:\/\/www.saaristonpuoti.fi\/en\/wp-json\/wp\/v2\/pages\/41290\/revisions"}],"predecessor-version":[{"id":42855,"href":"https:\/\/www.saaristonpuoti.fi\/en\/wp-json\/wp\/v2\/pages\/41290\/revisions\/42855"}],"wp:attachment":[{"href":"https:\/\/www.saaristonpuoti.fi\/en\/wp-json\/wp\/v2\/media?parent=41290"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}