{"id":2856,"date":"2024-10-09T07:07:03","date_gmt":"2024-10-09T07:07:03","guid":{"rendered":"https:\/\/www.kassiopeia.fi\/hotel-matts\/?page_id=2856"},"modified":"2026-01-16T06:08:04","modified_gmt":"2026-01-16T06:08:04","slug":"tarjoukset","status":"publish","type":"page","link":"https:\/\/www.kassiopeia.fi\/hotel-matts\/tarjoukset\/","title":{"rendered":"Tarjoukset"},"content":{"rendered":"\n<div class=\"wp-block-cover alignfull is-light cover-hero wp-duotone-unset-1\" style=\"margin-top:0px;margin-bottom:0px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;min-height:30vw;aspect-ratio:unset;\"><img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"1281\" class=\"wp-block-cover__image-background wp-image-2878\" alt=\"Pariskunta Hotel Mattsin huoneessa ja kilistelee kuohuvaa.\" src=\"https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/10\/hote-matts-pariskunta.jpeg\" style=\"object-position:52% 51%\" data-object-fit=\"cover\" data-object-position=\"52% 51%\" srcset=\"https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/10\/hote-matts-pariskunta.jpeg 1920w, https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/10\/hote-matts-pariskunta-300x200.jpeg 300w, https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/10\/hote-matts-pariskunta-1024x683.jpeg 1024w, https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/10\/hote-matts-pariskunta-768x512.jpeg 768w, https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/10\/hote-matts-pariskunta-1536x1025.jpeg 1536w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><span aria-hidden=\"true\" class=\"wp-block-cover__background has-black-background-color has-background-dim-0 has-background-dim\"><\/span><div class=\"wp-block-cover__inner-container is-layout-flow wp-container-core-cover-is-layout-6e17fc20 wp-block-cover-is-layout-flow\">\n<h1 class=\"wp-block-heading has-text-align-center\" id=\"h-\" style=\"font-size:70px\"><\/h1>\n\n\n\n<p><\/p>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-group hiddenx is-layout-constrained wp-container-core-group-is-layout-72190d31 wp-block-group-is-layout-constrained\" style=\"margin-top:0;margin-bottom:0;padding-top:0;padding-right:0;padding-bottom:0;padding-left:0\">\n<div class=\"mews-booking-engine2-bg\" onclick=\"mewsCalendar.clickMewsCloseCalendar()\"><\/div>\n\n<div class=\"mews-booking-engine2-hero\" style=\"background-image: url('https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/09\/lahjakortti_tausta.jpg');\">\n\t<div class=\"mews-booking-panel\">\n        <div class=\"mews-calendar-item\">\n            <div class=\"mews-calendar-label\">\n                <img decoding=\"async\" src=\"https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2025\/11\/varauskalenteri_matts.svg\">\n                <div>Book accommodation:<\/div>            <\/div>\n            <div class=\"mews-calendar-input\">\n                <!--<input type=\"text\" id=\"mews-calendar-start\" disabled value=\"21.10.2025\"\/>-->\n                <div class=\"mews-calendar-input-field\" id=\"mews-calendar-start\" onclick=\"mewsCalendar.clickMewsOpenCalendar()\">\n                    <div class=\"mews-date-label\"><span id=\"mews-date-label-start\"><\/span> &#8211; <span id=\"mews-date-label-end\"><\/span><\/div>\n                    <div class=\"grid\">\n                        <div class=\"cell\"><\/div><div class=\"cell\"><\/div><div class=\"cell\"><\/div>\n                        <div class=\"cell\"><\/div><div class=\"cell\"><\/div><div class=\"cell\"><\/div>\n                        <div class=\"cell\"><\/div><div class=\"cell\"><\/div><div class=\"cell\"><\/div>\n                    <\/div>\n                <\/div>\n                <div class=\"mews-calendar-widget-container\">\n    <div id=\"mews-calendar-widget\">\n        <div class=\"mews-calendar-widget-close\" id=\"mews-calendar-close\" onclick=\"mewsCalendar.clickMewsCloseCalendar()\">\n            <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" width=\"65\" height=\"65\" role=\"img\" aria-label=\"Close\">\n                <circle cx=\"12\" cy=\"12\" r=\"11\" fill=\"none\"\/>\n                <path d=\"M8.5 8.5L15.5 15.5M15.5 8.5L8.5 15.5\" stroke=\"currentColor\" stroke-width=\"1.0\" stroke-linecap=\"round\" stroke-linejoin=\"round\" fill=\"none\"\/>\n            <\/svg>\n        <\/div>\n        <div class=\"mcw-inner\">\n            <div class=\"mcw-table-container\">\n                <div class=\"mcw-table mcw-table-l\">\n                    <div class=\"calendar-arrow calendar-arrow-l\" onclick=\"mewsCalendar.clickArrow(1)\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" aria-hidden=\"true\" focusable=\"false\">\n                            <path d=\"M15 5l-7 7 7 7\" fill=\"none\" stroke=\"white\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                        <\/svg>\n                    <\/div>\n                    <div class=\"calendar-title\" id=\"calendar-title-1\"><\/div>\n                    <div id=\"calendar-weekdays1\"><\/div>\n                    <div class=\"calendar-days\" id=\"calendar-days1\"><\/div>\n                <\/div>\n                <div class=\"mcw-table mcw-table-r\">\n                    <div class=\"calendar-arrow calendar-arrow-r\" onclick=\"mewsCalendar.clickArrow(2)\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" aria-hidden=\"true\" focusable=\"false\">\n                            <path d=\"M9 5l7 7-7 7\" fill=\"none\" stroke=\"white\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                        <\/svg>\n                    <\/div>\n                    <div class=\"calendar-title\" id=\"calendar-title-2\"><\/div>\n                    <div id=\"calendar-weekdays2\"><\/div>\n                    <div class=\"calendar-days\" id=\"calendar-days2\"><\/div>\n                <\/div>\n            <\/div>\n            <div class=\"mcw-button\">\n                <button class=\"btn-secondary\" id=\"mews-submit-button-calendar-desktop\" onclick=\"mewsCalendar.clickMewsCloseCalendar()\">\n                    Select dates                <\/button>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/div>                <div class=\"mews-calendar-widget-container-mobile\">\n    <div id=\"mews-calendar-widget-mobile\">\n        <div class=\"mcw-top\">\n            <div>\n                Date            <\/div>\n            <div class=\"mews-calendar-widget-close\" onclick=\"mewsCalendar.clickMewsCloseCalendar()\">\n                <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" width=\"50\" height=\"50\" role=\"img\" aria-label=\"Close\">\n                    <circle cx=\"12\" cy=\"12\" r=\"11\" fill=\"none\"\/>\n                    <path d=\"M8.5 8.5L15.5 15.5M15.5 8.5L8.5 15.5\" stroke=\"currentColor\" stroke-width=\"1.0\" stroke-linecap=\"round\" stroke-linejoin=\"round\" fill=\"none\"\/>\n                <\/svg>\n            <\/div>\n        <\/div>\n        <div class=\"mcw-content\" id=\"mcw-content-mobile\"><\/div>\n        <div class=\"mcw-bottom\">\n            <button class=\"btn-secondary\" id=\"mews-submit-button-calendar-mobile\" onclick=\"mewsCalendar.clickMewsCloseCalendar()\">\n                Select dates            <\/button>\n        <\/div>\n    <\/div>\n<\/div>            <\/div>\n        <\/div>\n        <input type=\"hidden\" id=\"mews-selected-start-year\" value=\"\">\n        <input type=\"hidden\" id=\"mews-selected-start-month\" value=\"\">\n        <input type=\"hidden\" id=\"mews-selected-start-day\" value=\"\">\n        <input type=\"hidden\" id=\"mews-selected-end-year\" value=\"\">\n        <input type=\"hidden\" id=\"mews-selected-end-month\" value=\"\">\n        <input type=\"hidden\" id=\"mews-selected-end-day\" value=\"\">\n        <button class=\"distributor-open\" id=\"mews-submit-button\">&#8230;<\/button>\n        <div id=\"mews-test\"><\/div>\n    <\/div>\n    <div>\n        \n<p class=\"has-small-font-size\">Miksi varata suoraan meilt\u00e4? <a href=\"https:\/\/www.kassiopeia.fi\/hotel-matts\/miksi-varata-suoraan\/\">Katso kaikki hy\u00f6dyt \u2192<\/a><\/p>\n    <\/div>\n<\/div>\n\n<script>\n\n    class MewsCalendar {\n        constructor() {\n            this.now = new Date(); \/\/Production\n            \/\/this.now = new Date('2027-12-28T10:00:00'); \/\/Testing\n            this.dayNow = this.now.getDate();\n            this.monthNow = this.now.getMonth() + 1;\n            this.yearNow = this.now.getFullYear();\n            this.monthNext = this.now.getMonth() + 2;\n            this.yearNext = this.now.getFullYear();\n            if (this.monthNow == 12) this.yearNext++;\n            this.monthNowSelected = this.monthNow;\n            this.yearNowSelected = this.yearNow;\n            this.monthNextSelected = this.monthNext;\n            this.yearNextSelected = this.yearNext;\n            if (this.monthNextSelected <= 0) this.monthNextSelected = 12;\n            if (this.monthNextSelected > 12) this.monthNextSelected = 1;\n            this.weekdayNames = ['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun'];this.monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];            this.generateCalendar(1);\n            this.generateCalendar(2);\n            this.generateMonthDays(1, this.monthNowSelected, this.yearNowSelected);\n            this.generateMonthDays(2, this.monthNextSelected, this.yearNextSelected);\n            let tomorrow = new Date();\n            tomorrow.setDate(tomorrow.getDate() + 1);\n            this.setDateLabels(this.dateToString(this.now), this.dateToString(tomorrow));\n            this.arrayDates = [];\n            this.arrayDatesSorted = [];\n            this.clickDayCount = 0;\n        }\n\n        setDateLabels(start, end) {\n            jQuery('#mews-date-label-start').html(start);\n            jQuery('#mews-date-label-end').html(end);\n        }\n\n        clickMewsOpenCalendar() {\n            jQuery('.mews-booking-engine2-bg').fadeIn(50);\n            jQuery('#mews-calendar-widget').fadeIn(50);\n            jQuery('#mews-calendar-widget-mobile').fadeIn(50);\n        }\n\n        clickMewsCloseCalendar() {\n\t\t\tjQuery('.mews-booking-engine2-bg').fadeOut(50);\n            jQuery('#mews-calendar-widget').fadeOut(50);\n            jQuery('#mews-calendar-widget-mobile').fadeOut(50);\n        }\n\n        generateCalendar(id) {\n            this.generateWeekdays(id);\n            let html = '';\n            for (let y=0; y<6; y++) {\n                html += '<div class=\"row\">';\n                    for (let x=0; x<7; x++) {\n                        let day = y*7+x+1;\n                        html += '<div class=\"day-square day-square-' + id + '\" id=\"' + id + '-day-' + day + '\" data-day=\"0\" onclick=\"mewsCalendar.clickDay(this)\">';\n                        html += '<div class=\"day-square-inner\">';\n                        html += '<div class=\"day-square-circle\"><\/div>';\n                        html += '<\/div>';\n                        html += '<\/div>';\n                    }\n                html += '<\/div>';\n            }\n            jQuery('#calendar-days' + id).html(html);\n        }\n\n        generateWeekdays(id) {\n            let html = '<div class=\"calendar-weekdays\">';\n            html += '<div>' + this.weekdayNames[0] + '<\/div>';\n            html += '<div>' + this.weekdayNames[1] + '<\/div>';\n            html += '<div>' + this.weekdayNames[2] + '<\/div>';\n            html += '<div>' + this.weekdayNames[3] + '<\/div>';\n            html += '<div>' + this.weekdayNames[4] + '<\/div>';\n            html += '<div>' + this.weekdayNames[5] + '<\/div>';\n            html += '<div>' + this.weekdayNames[6] + '<\/div>';\n            html += '<\/div>';\n            jQuery('#calendar-weekdays' + id).html(html);\n        }\n\n        clickArrow(dir) {\n            if (dir == 1) {\n                if (this.monthNow == this.monthNowSelected && this.yearNow == this.yearNowSelected) {\n                    \/\/Do nothing\n                } else {\n                    this.monthNowSelected--;\n                    if (this.monthNowSelected <= 0) {\n                        this.monthNowSelected = 12;\n                        this.yearNowSelected--;\n                    }\n                    this.monthNextSelected--;\n                    if (this.monthNextSelected <= 0) {\n                        this.monthNextSelected = 12;\n                        this.yearNextSelected--;\n                    }\n                }\n            }\n            if (dir == 2) {\n                this.monthNowSelected++;\n                if (this.monthNowSelected > 12) {\n                    this.monthNowSelected = 1;\n                    this.yearNowSelected++;\n                }\n                this.monthNextSelected++;\n                if (this.monthNextSelected > 12) {\n                    this.monthNextSelected = 1;\n                    this.yearNextSelected++;\n                }\n            }\n            this.generateCalendar(1);\n            this.generateCalendar(2);\n            this.generateMonthDays(1, this.monthNowSelected, this.yearNowSelected);\n            this.generateMonthDays(2, this.monthNextSelected, this.yearNextSelected);\n            this.markSelectedDates();\n        }\n\n        generateMonthDays(id, month, year) {\n            \/\/console.log('generateMonthDays', id, month, year);\n            const firstDay = new Date(year, month-1, 1);\n            const firstDayId = (firstDay.getDay() + 6) % 7 + 1;\n            const daysInMonth = new Date(year, month, 0).getDate();\n            let html = '';\n            \/\/jQuery('.day-square-' + id).html('');\n            jQuery('.day-square-' + id).data('day', 0);\n            jQuery('.day-square-' + id).removeClass('disabled');\n            jQuery('.day-square-' + id).removeClass('current');\n            for (let i=firstDayId; i<daysInMonth+firstDayId; i++) {\n                const day = i-firstDayId+1;\n                const dateStr = day + '.' + month + '.' + year;\n                \/\/console.log(dateStr);\n                \/\/jQuery('#' + id + '-day-' + i).html(day);\n                jQuery('#' + id + '-day-' + i + ' .day-square-circle').html(day);\n                jQuery('#' + id + '-day-' + i).data('day', day + '.' + month + '.' + year);\n                if (this.stringToDate(dateStr) < this.now) {\n                    jQuery('#' + id + '-day-' + i).addClass('disabled');\n                    \/\/console.log('disabled', this.now);\n                }\n                if (dateStr == this.dateToString(this.now)) jQuery('#' + id + '-day-' + i).addClass('current');\n            }\n            const monthName = this.monthNames[month-1];\n            jQuery('#calendar-title-' + id).html(monthName + ' ' + year);\n            this.removeEmptyRows(id);\n        }\n\n        removeEmptyRows(id) {\n            let count = 0;\n            let rowCount = 0;\n            let html = '';\n            jQuery('.day-square-' + id).each(function() {\n                count++;\n                html += jQuery(this).html();\n                if (count % 7 == 0) {\n                    rowCount++;\n                    if (html == '') {\n                        const first = (rowCount-1)*7+1;\n                        for (let i=first; i<first+7; i++) {\n                            jQuery('#' + id + '-day-' + i).remove();\n                        }\n                    }\n                    html = '';\n                }\n            });\n        }\n\n        clickDay = (event) => {\n            const id = jQuery(event).attr('id');\n            const str = jQuery(event).data('day');\n            \/\/console.log(id, str);\n            if (this.arrayDates[0] != undefined && this.arrayDates[1] != undefined) {\n                this.arrayDates = [];\n                this.arrayDatesSorted = [...this.arrayDates].sort((a, b) => a - b);\n                this.markSelectedDates();\n            }\n            if (this.arrayDates[0] != undefined && this.arrayDates[1] == undefined) {\n                this.arrayDates[1] = this.stringToDate(str);\n                this.arrayDatesSorted = [...this.arrayDates].sort((a, b) => a - b);\n                this.markSelectedDates();\n            }\n            if (this.arrayDates[0] == undefined && this.arrayDates[1] == undefined) {\n                this.arrayDates[0] = this.stringToDate(str);\n                this.arrayDatesSorted = [...this.arrayDates].sort((a, b) => a - b);\n                this.markSelectedDates();\n            }\n        }\n\n        markSelectedDates() {\n            const date1 = this.arrayDatesSorted[0];\n            const date2 = this.arrayDatesSorted[1];\n            const str1 = this.dateToString(date1);\n            const str2 = this.dateToString(date2);\n            jQuery('.day-square-1').removeClass('selected');\n            jQuery('.day-square-1').removeClass('selected-strong1');\n            jQuery('.day-square-1').removeClass('selected-strong2');\n            jQuery('.day-square-2').removeClass('selected');\n            jQuery('.day-square-2').removeClass('selected-strong1');\n            jQuery('.day-square-2').removeClass('selected-strong2');\n            if (str1.length > 1) {\n                this.setDateLabels(str1, str2);\n                jQuery('.day-square-1').each(function() {\n                    const dataDay = jQuery(this).data('day');\n                    if (dataDay.length > 1) {\n                        const [day, month, year] = dataDay.split('.').map(Number);\n                        const dataDayDate = new Date(year, month - 1, day);\n                        if (dataDayDate > date1 && dataDayDate < date2) {\n                            jQuery(this).addClass('selected');\n                        }\n                        if (dataDay == str1) jQuery(this).addClass('selected-strong1');\n                        if (dataDay == str2) jQuery(this).addClass('selected-strong2');\n                    }\n                });\n                jQuery('.day-square-2').each(function() {\n                    const dataDay = jQuery(this).data('day');\n                    if (dataDay.length > 1) {\n                        const [day, month, year] = dataDay.split('.').map(Number);\n                        const dataDayDate = new Date(year, month - 1, day);\n                        if (dataDayDate > date1 && dataDayDate < date2) {\n                            jQuery(this).addClass('selected');\n                        }\n                        if (dataDay == str1) jQuery(this).addClass('selected-strong1');\n                        if (dataDay == str2) jQuery(this).addClass('selected-strong2');\n                    }\n                });\n            } else {\n                jQuery('.day-square-1').removeClass('selected');\n                jQuery('.day-square-2').removeClass('selected');\n            }\n            if (str1.length > 1 && str2.length > 1) {\n                jQuery('#mews-selected-start-year').val(date1.getFullYear());\n                jQuery('#mews-selected-start-month').val(date1.getMonth());\n                jQuery('#mews-selected-start-day').val(date1.getDate());\n                jQuery('#mews-selected-end-year').val(date2.getFullYear());\n                jQuery('#mews-selected-end-month').val(date2.getMonth());\n                jQuery('#mews-selected-end-day').val(date2.getDate());\n            }\n            \/* Testing:\n            let startYear = jQuery('#mews-selected-start-year').val();\n            let startMonth = jQuery('#mews-selected-start-month').val(); \/\/0-11\n            let startDay = jQuery('#mews-selected-start-day').val();\n            let endYear = jQuery('#mews-selected-end-year').val();\n            let endMonth = jQuery('#mews-selected-end-month').val(); \/\/0-11\n            let endDay = jQuery('#mews-selected-end-day').val();\n            console.log('mews start1', startYear, startMonth, startDay);\n            console.log('mews end1', endYear, endMonth, endDay);*\/\n        }\n\n        stringToDate(str) {\n            if (str.length > 1) {\n                const [day, month, year] = str.split('.').map(Number);\n                return new Date(year, month - 1, day);\n            }\n            return '';\n        }\n\n        dateToString(date) {\n            if (!date) return ''; \/\/ null\/undefined -> empty string\n            \/\/ If input is a string in dd.mm.yyyy (or d.m.yyyy) format, parse manually\n            if (typeof date === 'string' && \/^\\d{1,2}\\.\\d{1,2}\\.\\d{4}$\/.test(date.trim())) {\n                const [d, m, y] = date.trim().split('.').map(Number);\n                \/\/ basic validation\n                if (!d || !m || !y) return '';\n                const dt = new Date(y, m - 1, d);\n                if (Number.isNaN(dt.getTime())) return '';\n                date = dt;\n            } else {\n                \/\/ try to coerce other inputs (Date object, ISO string, timestamp)\n                date = new Date(date);\n                if (Number.isNaN(date.getTime())) return '';\n            }\n            \/\/const day = String(date.getDate()).padStart(2, '0');\n            const day = String(date.getDate());\n            const month = String(date.getMonth() + 1);\n            const year = date.getFullYear();\n            return `${day}.${month}.${year}`;\n        }\n    }\n    const mewsCalendar = new MewsCalendar();\n<\/script><script>\n    class MewsCalendarMobile {\n        constructor() {\n            this.now = new Date();\n            this.dayNow = this.now.getDate();\n            this.monthNow = this.now.getMonth() + 1;\n            this.yearNow = this.now.getFullYear();\n            this.monthNext = this.now.getMonth() + 2;\n            this.yearNext = this.now.getFullYear();\n            this.weekdayNames = ['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun'];this.monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];            this.arrayDates = [];\n            this.arrayDatesSorted = [];\n            this.generateAllCalendars();\n        }\n\n        generateAllCalendars() {\n            const date = new Date();\n            for (let i = 0; i < 13; i++) {\n                const year = date.getFullYear();\n                const month = date.getMonth() + 1; \/\/ getMonth() is 0-based\n                \/\/console.log(`${year}, ${month}`);\n                if (i < 12) {\n                    this.generateCalendar(i+1, year, month, false);\n                } else {\n                    this.generateCalendar(i+1, year, month, true);\n                }\n                this.generateMonthDays(i+1, year, month);\n                this.removeEmptyRows(i+1);\n                \/\/ Move to next month\n                date.setMonth(date.getMonth() + 1);\n            }\n        }\n\n        generateCalendar(id, year, month, addSpacer) {\n            let html = '';\n            html += '<div class=\"mcw-content-monthname\">' + this.monthNames[month-1] + ' ' + year + '<\/div>';\n            html += '<div class=\"m-calendar-weekdays\">';\n            html += '<div>' + this.weekdayNames[0] + '<\/div>';\n            html += '<div>' + this.weekdayNames[1] + '<\/div>';\n            html += '<div>' + this.weekdayNames[2] + '<\/div>';\n            html += '<div>' + this.weekdayNames[3] + '<\/div>';\n            html += '<div>' + this.weekdayNames[4] + '<\/div>';\n            html += '<div>' + this.weekdayNames[5] + '<\/div>';\n            html += '<div>' + this.weekdayNames[6] + '<\/div>';\n            html += '<\/div>';\n            html += '<div style=\"height: 10px;\"><\/div>';\n            for (let y=0; y<6; y++) {\n                html += '<div class=\"m-row\">';\n                    for (let x=0; x<7; x++) {\n                        let day = y*7+x+1;\n                        \/\/html += '<div class=\"m-day-square m-day-square-' + id + '\" id=\"' + id + '-m-day-' + day + '\" data-day=\"0\" onclick=\"mewsCalendarMobile.clickDay(this)\">' + day + '<\/div>';\n                        html += '<div class=\"m-day-square m-day-square-' + id + '\" id=\"' + id + '-m-day-' + day + '\" data-day=\"0\" onclick=\"mewsCalendarMobile.clickDay(this)\">';\n                        html += '<div class=\"m-day-square-inner\">';\n                        html += '<div class=\"m-day-square-circle\"><\/div>';\n                        html += '<\/div>';\n                        html += '<\/div>';\n                    }\n                html += '<\/div>';\n            }\n            html += '<div style=\"height: 30px;\"><\/div>';\n            if (addSpacer) html += '<div style=\"height: 150px;\"><\/div>';\n            jQuery('#mcw-content-mobile').append(html);\n        }\n\n        generateMonthDays(id, year, month) {\n            \/\/console.log('generateMonthDays', id, month, year);\n            const firstDay = new Date(year, month-1, 1);\n            const firstDayId = (firstDay.getDay() + 6) % 7 + 1;\n            const daysInMonth = new Date(year, month, 0).getDate();\n            let html = '';\n            \/\/jQuery('.m-day-square-' + id).html('');\n            jQuery('.m-day-square-' + id).data('day', 0);\n            jQuery('.m-day-square-' + id).removeClass('disabled');\n            jQuery('.m-day-square-' + id).removeClass('current');\n            for (let i=firstDayId; i<daysInMonth+firstDayId; i++) {\n                const day = i-firstDayId+1;\n                const dateStr = day + '.' + month + '.' + year;\n                \/\/jQuery('#' + id + '-m-day-' + i).html(day);\n                jQuery('#' + id + '-m-day-' + i + ' .m-day-square-circle').html(day);\n                jQuery('#' + id + '-m-day-' + i).data('day', day + '.' + month + '.' + year);\n                if (this.stringToDate(dateStr) < this.now) jQuery('#' + id + '-m-day-' + i).addClass('disabled');\n                if (dateStr == this.dateToString(this.now)) jQuery('#' + id + '-m-day-' + i).addClass('current');\n            }\n        }\n\n        removeEmptyRows(id) {\n            let count = 0;\n            let rowCount = 0;\n            let html = '';\n            jQuery('.m-day-square-' + id).each(function() {\n                count++;\n                html += jQuery(this).html();\n                if (count % 7 == 0) {\n                    rowCount++;\n                    if (html == '') {\n                        const first = (rowCount-1)*7+1;\n                        for (let i=first; i<first+7; i++) {\n                            jQuery('#' + id + '-m-day-' + i).remove();\n                        }\n                    }\n                    html = '';\n                }\n            });\n        }\n\n        clickDay = (event) => {\n            const id = jQuery(event).attr('id');\n            const str = jQuery(event).data('day');\n            if (this.arrayDates[0] != undefined && this.arrayDates[1] != undefined) {\n                this.arrayDates = [];\n                this.arrayDatesSorted = [...this.arrayDates].sort((a, b) => a - b);\n                this.markAllSelectedDates();\n            }\n            if (this.arrayDates[0] != undefined && this.arrayDates[1] == undefined) {\n                this.arrayDates[1] = this.stringToDate(str);\n                this.arrayDatesSorted = [...this.arrayDates].sort((a, b) => a - b);\n                this.markAllSelectedDates();\n            }\n            if (this.arrayDates[0] == undefined && this.arrayDates[1] == undefined) {\n                this.arrayDates[0] = this.stringToDate(str);\n                this.arrayDatesSorted = [...this.arrayDates].sort((a, b) => a - b);\n                this.markAllSelectedDates();\n            }\n        }\n\n        markAllSelectedDates() {\n            for (let i=1; i<=13; i++) {\n                this.markSelectedDates(i);\n            }\n        }\n\n        markSelectedDates(id) {\n            const date1 = this.arrayDatesSorted[0];\n            const date2 = this.arrayDatesSorted[1];\n            const str1 = this.dateToString(date1);\n            const str2 = this.dateToString(date2);\n            \/\/console.log(str1, str2);\n            jQuery('.m-day-square-' + id).removeClass('selected');\n            jQuery('.m-day-square-' + id).removeClass('selected-strong1');\n            jQuery('.m-day-square-' + id).removeClass('selected-strong2');\n            if (str1.length > 1) {\n                this.setDateLabels(str1, str2);\n                jQuery('.m-day-square-' + id).each(function() {\n                    const dataDay = jQuery(this).data('day');\n                    if (dataDay.length > 1) {\n                        const [day, month, year] = dataDay.split('.').map(Number);\n                        const dataDayDate = new Date(year, month - 1, day);\n                        if (dataDayDate > date1 && dataDayDate < date2) {\n                            jQuery(this).addClass('selected');\n                        }\n                        if (dataDay == str1) jQuery(this).addClass('selected-strong1');\n                        if (dataDay == str2) jQuery(this).addClass('selected-strong2');\n                    }\n                });\n            } else {\n                jQuery('.m-day-square-' + id).removeClass('selected');\n            }\n            if (str1.length > 1 && str2.length > 1) {\n                jQuery('#mews-selected-start-year').val(date1.getFullYear());\n                jQuery('#mews-selected-start-month').val(date1.getMonth());\n                jQuery('#mews-selected-start-day').val(date1.getDate());\n                jQuery('#mews-selected-end-year').val(date2.getFullYear());\n                jQuery('#mews-selected-end-month').val(date2.getMonth());\n                jQuery('#mews-selected-end-day').val(date2.getDate());\n            }\n            \/* Testing:\n            let startYear = jQuery('#mews-selected-start-year').val();\n            let startMonth = jQuery('#mews-selected-start-month').val(); \/\/0-11\n            let startDay = jQuery('#mews-selected-start-day').val();\n            let endYear = jQuery('#mews-selected-end-year').val();\n            let endMonth = jQuery('#mews-selected-end-month').val(); \/\/0-11\n            let endDay = jQuery('#mews-selected-end-day').val();\n            console.log('mews start1', startYear, startMonth, startDay);\n            console.log('mews end1', endYear, endMonth, endDay);*\/\n        }\n\n        setDateLabels(start, end) {\n            jQuery('#mews-date-label-start').html(start);\n            jQuery('#mews-date-label-end').html(end);\n        }\n\n        stringToDate(str) {\n            if (str.length > 1) {\n                const [day, month, year] = str.split('.').map(Number);\n                return new Date(year, month - 1, day);\n            }\n            return '';\n        }\n\n        dateToString(date) {\n            if (!date) return ''; \/\/ null\/undefined -> empty string\n            \/\/ If input is a string in dd.mm.yyyy (or d.m.yyyy) format, parse manually\n            if (typeof date === 'string' && \/^\\d{1,2}\\.\\d{1,2}\\.\\d{4}$\/.test(date.trim())) {\n                const [d, m, y] = date.trim().split('.').map(Number);\n                \/\/ basic validation\n                if (!d || !m || !y) return '';\n                const dt = new Date(y, m - 1, d);\n                if (Number.isNaN(dt.getTime())) return '';\n                date = dt;\n            } else {\n                \/\/ try to coerce other inputs (Date object, ISO string, timestamp)\n                date = new Date(date);\n                if (Number.isNaN(date.getTime())) return '';\n            }\n            \/\/const day = String(date.getDate()).padStart(2, '0');\n            const day = String(date.getDate());\n            const month = String(date.getMonth() + 1);\n            const year = date.getFullYear();\n            return `${day}.${month}.${year}`;\n        }\n    }\n    const mewsCalendarMobile = new MewsCalendarMobile();\n<\/script><script>\n    window.addEventListener('DOMContentLoaded', function() {\n        if (typeof Mews !== 'undefined') {\n            Mews.Distributor(\n                {\n                    configurationIds: ['02b1f998-a56e-41b7-a09c-b35d00b06c19'],\n                    \/\/openElements: '.distributor-open',\n                },\n                \n                function(api) {\n                    \/\/ you can call API functions on a booking engine instance here\n                    \/\/ set different start and end date\n\n                    const mewsSubmit = () => {\n                        const startYear = jQuery('#mews-selected-start-year').val();\n                        const startMonth = jQuery('#mews-selected-start-month').val(); \/\/0-11\n                        const startDay = jQuery('#mews-selected-start-day').val();\n                        const endYear = jQuery('#mews-selected-end-year').val();\n                        const endMonth = jQuery('#mews-selected-end-month').val(); \/\/0-11\n                        const endDay = jQuery('#mews-selected-end-day').val();\n                        \/\/console.log('mews start2', startYear, startMonth, startDay);\n                        \/\/console.log('mews end2', endYear, endMonth, endDay);\n                        api.setStartDate(new Date(startYear, startMonth, startDay));\n                        api.setEndDate(new Date(endYear, endMonth, endDay));\n                        api.open();\n                    }\n\n                    const enableSubmit = () => {\n                        \/\/console.log('enableSubmit');\n                        const submitButton = document.getElementById('mews-submit-button');\n                        const submitButtonCalendarDesktop = document.getElementById('mews-submit-button-calendar-desktop');\n                        const submitButtonCalendarMobile = document.getElementById('mews-submit-button-calendar-mobile');\n                        submitButton.innerHTML = 'Tarkista saatavuus';\n                        \/\/submitButton.disabled = false;\n                        submitButton.addEventListener('click', function() {\n                            mewsSubmit();\n                        });\n                        submitButtonCalendarDesktop.addEventListener('click', function() {\n                            mewsSubmit();\n                        });\n                        submitButtonCalendarMobile.addEventListener('click', function() {\n                            mewsSubmit();\n                        });\n                    };\n                    enableSubmit();\n                }\n            );\n        }\n    });\n<\/script><\/div>\n\n\n\n<div class=\"breadcrumb-container\"><ul id=\"breadcrumbs\" class=\"breadcrumbs\"><li class=\"item-home\"><a class=\"bread-link bread-home\" href=\"https:\/\/www.kassiopeia.fi\/hotel-matts\" title=\"Hotel Matts\">Hotel Matts<\/a><\/li><li class=\"separator separator-home\"> \/ <\/li><\/ul><\/div>\n<style>\n    \n<\/style>\n\n\n<div class=\"wp-block-group alignfull is-layout-constrained wp-container-core-group-is-layout-8e3b0982 wp-block-group-is-layout-constrained\" style=\"padding-top:var(--wp--preset--spacing--50);padding-right:var(--wp--preset--spacing--40);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--40)\">\n<div class=\"wp-block-group alignwide is-layout-constrained wp-container-core-group-is-layout-9517baca wp-block-group-is-layout-constrained\">\n<h1 class=\"wp-block-heading has-text-align-center\" style=\"margin-bottom:var(--wp--preset--spacing--60)\">Tarjoukset<\/h1>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull is-layout-constrained wp-container-core-group-is-layout-ccf6ddda wp-block-group-is-layout-constrained\" style=\"padding-top:var(--wp--preset--spacing--30);padding-right:var(--wp--preset--spacing--40);padding-bottom:var(--wp--preset--spacing--70);padding-left:var(--wp--preset--spacing--40)\">\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-vertically-aligned-bottom is-layout-flow wp-block-column-is-layout-flow\"><\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-bottom is-layout-flow wp-block-column-is-layout-flow\"><\/div>\n<\/div>\n\n\n<script>\n\/\/---------------------------------\n\/\/ Initialize the OffersImagesScroller if not present\n\/\/---------------------------------\nif (typeof offers_images_scroller === 'undefined') {\n    var offers_images_scroller = new OffersImagesScroller();\n    offers_images_scroller.init();\n}\n\n\/\/---------------------------------\n\/\/ Show more button on mobile\n\/\/---------------------------------\ndocument.addEventListener('DOMContentLoaded', function() {\n    if (typeof offers_images_scroller === 'undefined') {\n        var offers_images_scroller = new OffersImagesScroller();\n        offers_images_scroller.init();\n    }\n    document.querySelectorAll('.mobile-show-all-button').forEach(function(button) {\n        button.addEventListener('click', function(e) {\n            e.preventDefault();\n            const parent = button.closest('.kassiopeia-offer-items');\n            if (parent) parent.classList.add('show-all-on-mobile');\n        });\n    });\n});\n<\/script>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull is-layout-constrained wp-container-core-group-is-layout-0f068800 wp-block-group-is-layout-constrained\" style=\"margin-top:0;margin-bottom:0;padding-top:var(--wp--preset--spacing--40);padding-right:var(--wp--preset--spacing--40);padding-bottom:var(--wp--preset--spacing--70);padding-left:var(--wp--preset--spacing--40)\">\n<div class=\"wp-block-media-text has-media-on-the-right is-stacked-on-mobile is-image-fill-element has-hotel-matts-10-background-color has-background\" style=\"margin-bottom:var(--wp--preset--spacing--70);padding-top:0;padding-bottom:0\"><div class=\"wp-block-media-text__content\">\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\" style=\"padding-top:var(--wp--preset--spacing--60);padding-bottom:var(--wp--preset--spacing--80)\">\n<h3 class=\"wp-block-heading\" id=\"huonelapsille\">Oma huone lapsille<\/h3>\n\n\n\n<p>V\u00e4liovella yhdistett\u00e4v\u00e4t&nbsp;Standard-huoneemme&nbsp;sopivat erinomaisesti perheen majoitukseen.<\/p>\n\n\n\n<ul class=\"wp-block-list styled\">\n<li><strong>Oma huone lapsille (7-16 v.) vanhempien huoneen yhteydess\u00e4 alk. 65 \u20ac \/ y\u00f6<\/strong><\/li>\n<\/ul>\n\n\n\n<p>Kaksi Standard-huonetta on mahdollista yhdist\u00e4\u00e4 toisiinsa, jolloin vanhemmille ja lapsille saadaan kummallekin omat huoneet, joissa on oma kylpyhuone ja sis\u00e4\u00e4nk\u00e4ynti k\u00e4yt\u00e4v\u00e4lt\u00e4 huoneeseen. Kun v\u00e4liovi on auki, voi viett\u00e4\u00e4 yhteist\u00e4 aikaa kahden huoneen tilavuudella tai sulkea ovi ja jakaa tila eri huoneisiin.<\/p>\n\n\n\n<p><strong>Varaa yhdistett\u00e4v\u00e4t Standard-huoneet:<\/strong><br>Puh. 029 308 0440<strong>&nbsp;<\/strong>|&nbsp;&nbsp;<a href=\"mailto:matts@kassiopeia.fi\"><strong>matts@kassiopeia.fi<\/strong><\/a><\/p>\n<\/div>\n<\/div><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"683\" src=\"https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/10\/hotel-matts-lapset-1024x683.jpg\" alt=\"Lapset Hotel Mattsin s\u00e4ngyll\u00e4.\" class=\"wp-image-2869 size-full\" style=\"object-position:49% 71%\" srcset=\"https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/10\/hotel-matts-lapset-1024x683.jpg 1024w, https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/10\/hotel-matts-lapset-300x200.jpg 300w, https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/10\/hotel-matts-lapset-768x512.jpg 768w, https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/10\/hotel-matts-lapset.jpg 1500w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n\n<div class=\"wp-block-media-text is-stacked-on-mobile is-image-fill-element has-hotel-matts-10-background-color has-background\" style=\"padding-top:0;padding-bottom:0\"><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"682\" src=\"https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/09\/seniorit-hotellissa-matts-1024x682.jpg\" alt=\"Seniorit majoittumassa Hotel Mattissa.\" class=\"wp-image-996 size-full\" style=\"object-position:50% 50%\" srcset=\"https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/09\/seniorit-hotellissa-matts-1024x682.jpg 1024w, https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/09\/seniorit-hotellissa-matts-300x200.jpg 300w, https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/09\/seniorit-hotellissa-matts-768x512.jpg 768w, https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/09\/seniorit-hotellissa-matts-1536x1024.jpg 1536w, https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/09\/seniorit-hotellissa-matts.jpg 2000w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><div class=\"wp-block-media-text__content\">\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\" style=\"padding-top:var(--wp--preset--spacing--60);padding-bottom:var(--wp--preset--spacing--80)\">\n<h3 class=\"wp-block-heading\" id=\"seniorialennus\">Seniorialennus hotellihuoneista<\/h3>\n\n\n\n<p>Viet\u00e4 p\u00e4iv\u00e4 tyylikk\u00e4\u00e4ss\u00e4 hotellissa Espooseen tai Helsinkiin tutustuen! L\u00e4nsimetrolla p\u00e4\u00e4set suoraan hotellille, joten liikkuminen onnistuu helposti Helsingin n\u00e4ht\u00e4vyyksien \u00e4\u00e4reen.<\/p>\n\n\n\n<ul class=\"wp-block-list styled\">\n<li><strong>Majoitukset hotellihuoneissa seniorihintaan -20 % p\u00e4iv\u00e4n hinnasta<\/strong><\/li>\n<\/ul>\n\n\n\n<p>Alennushinta on voimassa 65-vuotta t\u00e4ytt\u00e4neille tai el\u00e4kel\u00e4iskortilla. Seniorihinnan saat, kun sy\u00f6t\u00e4t verkkokauppaan tarjouskoodin:&nbsp;<strong>PROSEN<\/strong><\/p>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/app.mews.com\/distributor\/02b1f998-a56e-41b7-a09c-b35d00b06c19?mewsRoute=rates&amp;language=fi-FI\" target=\"_blank\" rel=\"noreferrer noopener\">Varaa nyt<\/a><\/div>\n<\/div>\n<\/div>\n<\/div><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull has-hotel-matts-9-background-color has-background is-layout-constrained wp-container-core-group-is-layout-0c9c989a wp-block-group-is-layout-constrained\" style=\"margin-top:0;margin-bottom:0;padding-top:var(--wp--preset--spacing--70);padding-right:var(--wp--preset--spacing--40);padding-bottom:var(--wp--preset--spacing--70);padding-left:var(--wp--preset--spacing--40)\">\n<h2 class=\"wp-block-heading\" id=\"h-oletko-jo-kassiopeian-star-member\">Oletko jo Kassiopeian Star Member?<\/h2>\n\n\n\n<p><br>Kassiopeian Star Member -kanta-asiakkaana saat k\u00e4ytt\u00f6\u00f6si sek\u00e4 pysyvi\u00e4 ett\u00e4 kausittain vaihtuvia etuja Hotel Mattsissa sek\u00e4 Ravintola Frejassa.<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-medium-font-size\" id=\"h-star-member-hotellitarjoukset\" style=\"padding-top:var(--wp--preset--spacing--60);padding-bottom:var(--wp--preset--spacing--40)\">Star Member -hotellitarjoukset<\/h2>\n\n\n<div class='kassiopeia-offer-items item-count-2' data-count='2'>\n            <div class='scroller-container'><a href='https:\/\/www.kassiopeia.fi\/star-member\/' target='_blank' class='kassiopeia-offer-item'>\n<section class=\"wp-block-group kassiopeia-offer-item-content is-layout-flow wp-block-group-is-layout-flow\">\n<div class=\"wp-block-cover alignfull is-light kassiopeia-offer-cover\" style=\"min-height:300px;aspect-ratio:unset;\"><img decoding=\"async\" class=\"wp-block-cover__image-background wp-image-7709 size-large\" alt=\"\" src=\"https:\/\/www.kassiopeia.fi\/wp-content\/uploads\/2026\/03\/nostokuva_logolla_huoneistot-10-v2-1600x1209.jpg\" style=\"object-position:49% 0%\" data-object-fit=\"cover\" data-object-position=\"49% 0%\"\/><span aria-hidden=\"true\" class=\"wp-block-cover__background has-background-dim-0 has-background-dim\" style=\"background-color:#afa5a6\"><\/span><div class=\"wp-block-cover__inner-container is-layout-flow wp-block-cover-is-layout-flow\">\n<div class=\"wp-block-group kassiopeia-offer-tag is-layout-flow wp-block-group-is-layout-flow\">\n<p class=\"kassiopeia-offer-title\">Huoneistot<\/p>\n\n\n\n<h2 class=\"wp-block-heading kassiopeia-offer-price\" id=\"h-10\">-10 %<\/h2>\n\n\n\n<p class=\"kassiopeia-offer-description\">p\u00e4iv\u00e4n hinnasta<\/p>\n<\/div>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-group kassiopeia-offer-textcontent is-layout-flow wp-block-group-is-layout-flow\">\n<h3 class=\"wp-block-heading kassiopeia-offer-textcontent-title\" id=\"h-star-member-kanta-asiakkaille-10-alennus-huoneistojen-paivan-hinnasta\">Star Member -kanta-asiakkaille 10 % alennus huoneistojen p\u00e4iv\u00e4n hinnasta<\/h3>\n\n\n\n<p class=\"kassiopeia-offer-textcontent-description\">Liity maksutta, niin saat edun k\u00e4ytt\u00f6\u00f6si<\/p>\n<\/div>\n<\/section>\n<\/a><a href='https:\/\/www.kassiopeia.fi\/star-member\/' target='_blank' class='kassiopeia-offer-item'>\n<section class=\"wp-block-group kassiopeia-offer-item-content is-layout-flow wp-block-group-is-layout-flow\">\n<div class=\"wp-block-cover alignfull is-light kassiopeia-offer-cover\" style=\"min-height:300px;aspect-ratio:unset;\"><span aria-hidden=\"true\" class=\"wp-block-cover__background has-background-dim-0 has-background-dim\" style=\"background-color:#afa5a6\"><\/span><img decoding=\"async\" class=\"wp-block-cover__image-background wp-image-4899\" alt=\"\" src=\"https:\/\/www.kassiopeia.fi\/wp-content\/uploads\/2024\/12\/star-member_logolla_-10pros.jpg\" style=\"object-position:49% 0%\" data-object-fit=\"cover\" data-object-position=\"49% 0%\"\/><div class=\"wp-block-cover__inner-container is-layout-flow wp-block-cover-is-layout-flow\">\n<div class=\"wp-block-group kassiopeia-offer-tag is-layout-flow wp-block-group-is-layout-flow\">\n<p class=\"kassiopeia-offer-title\">Hotelliy\u00f6t<\/p>\n\n\n\n<h2 class=\"wp-block-heading kassiopeia-offer-price\" id=\"h-10\">-10 %<\/h2>\n\n\n\n<p class=\"kassiopeia-offer-description\">p\u00e4iv\u00e4n huonehinnasta<\/p>\n<\/div>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-group kassiopeia-offer-textcontent is-layout-flow wp-block-group-is-layout-flow\">\n<h3 class=\"wp-block-heading kassiopeia-offer-textcontent-title\" id=\"h-star-member-kanta-asiakkaille-10-alennus-paivan-huonehinnasta\">Star Member -kanta-asiakkaille 10 % alennus p\u00e4iv\u00e4n huonehinnasta<\/h3>\n\n\n\n<p class=\"kassiopeia-offer-textcontent-description\">Liity maksutta, niin saat edun k\u00e4ytt\u00f6\u00f6si<\/p>\n<\/div>\n<\/section>\n<\/a><\/div>\n            <img class='slider-arrow slider-arrow-left' alt='Slide to right arrow' src='https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/plugins\/kassiopeia-custom-blocks\/assets\/kassiopeia_slider_arrow_left.svg' aria-hidden='true' tabindex='-1'>\n            <img class='slider-arrow slider-arrow-right' alt='Slide to left arrow' src='https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/plugins\/kassiopeia-custom-blocks\/assets\/kassiopeia_slider_arrow_left.svg' aria-hidden='true' tabindex='-1'>\n            <a class='wp-block-button__link wp-element-button mobile-show-all-button'>Load more<\/a>\n          <\/div><script>\n\/\/---------------------------------\n\/\/ Initialize the OffersImagesScroller if not present\n\/\/---------------------------------\nif (typeof offers_images_scroller === 'undefined') {\n    var offers_images_scroller = new OffersImagesScroller();\n    offers_images_scroller.init();\n}\n\n\/\/---------------------------------\n\/\/ Show more button on mobile\n\/\/---------------------------------\ndocument.addEventListener('DOMContentLoaded', function() {\n    if (typeof offers_images_scroller === 'undefined') {\n        var offers_images_scroller = new OffersImagesScroller();\n        offers_images_scroller.init();\n    }\n    document.querySelectorAll('.mobile-show-all-button').forEach(function(button) {\n        button.addEventListener('click', function(e) {\n            e.preventDefault();\n            const parent = button.closest('.kassiopeia-offer-items');\n            if (parent) parent.classList.add('show-all-on-mobile');\n        });\n    });\n});\n<\/script>\n\n\n\n<h2 class=\"wp-block-heading has-medium-font-size\" id=\"h-star-member-ravintolatarjoukset\" style=\"padding-top:var(--wp--preset--spacing--60);padding-bottom:var(--wp--preset--spacing--40)\">Star Member -ravintolatarjoukset<\/h2>\n\n\n<div class='kassiopeia-offer-items item-count-2' data-count='2'>\n            <div class='scroller-container'><a href='https:\/\/www.kassiopeia.fi\/star-member\/' target='_blank' class='kassiopeia-offer-item'>\n<section class=\"wp-block-group kassiopeia-offer-item-content is-layout-flow wp-block-group-is-layout-flow\">\n<div class=\"wp-block-cover alignfull is-light kassiopeia-offer-cover\" style=\"min-height:300px;aspect-ratio:unset;\"><img decoding=\"async\" class=\"wp-block-cover__image-background wp-image-6784 size-full\" alt=\"Ravintola Feejan alkuruoka-annos.\" src=\"https:\/\/www.kassiopeia.fi\/wp-content\/uploads\/2024\/12\/ravintola-freja-alkuruoka-annos-kesa-2.jpg\" data-object-fit=\"cover\"\/><span aria-hidden=\"true\" class=\"wp-block-cover__background has-background-dim-0 has-background-dim\" style=\"background-color:#afa5a6\"><\/span><div class=\"wp-block-cover__inner-container is-layout-flow wp-block-cover-is-layout-flow\">\n<div class=\"wp-block-group kassiopeia-offer-tag is-layout-flow wp-block-group-is-layout-flow\">\n<p class=\"kassiopeia-offer-title\">\u00c0 la carte-annokset<\/p>\n\n\n\n<h2 class=\"wp-block-heading kassiopeia-offer-price\" id=\"h-10\">-10 %<\/h2>\n\n\n\n<p class=\"kassiopeia-offer-description\"><\/p>\n<\/div>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-group kassiopeia-offer-textcontent is-layout-flow wp-block-group-is-layout-flow\">\n<h3 class=\"wp-block-heading kassiopeia-offer-textcontent-title\" id=\"h-star-membereille-10-alennus-a-la-carte-annoksista\">Star Membereille 10 % alennus \u00e0 la carte-annoksista<\/h3>\n\n\n\n<p class=\"kassiopeia-offer-textcontent-description\">Kun maksaja on Star Member -kanta-asiakas, koskee etu koko ryhm\u00e4\u00e4. Liity Star Memberiksi!<\/p>\n<\/div>\n<\/section>\n<\/a><a href='https:\/\/www.kassiopeia.fi\/star-member\/' target='_blank' class='kassiopeia-offer-item'>\n<section class=\"wp-block-group kassiopeia-offer-item-content is-layout-flow wp-block-group-is-layout-flow\">\n<div class=\"wp-block-cover alignfull kassiopeia-offer-cover\" style=\"min-height:300px;aspect-ratio:unset;\"><img decoding=\"async\" class=\"wp-block-cover__image-background wp-image-6791 size-full\" alt=\"Kilistely\u00e4 viinilaseilla.\" src=\"https:\/\/www.kassiopeia.fi\/wp-content\/uploads\/2024\/12\/kilistely-viinilaseilla.jpg\" data-object-fit=\"cover\"\/><span aria-hidden=\"true\" class=\"wp-block-cover__background has-background-dim-0 has-background-dim\" style=\"background-color:#afa5a6\"><\/span><div class=\"wp-block-cover__inner-container is-layout-flow wp-block-cover-is-layout-flow\">\n<div class=\"wp-block-group kassiopeia-offer-tag is-layout-flow wp-block-group-is-layout-flow\">\n<p class=\"kassiopeia-offer-title\">Talon viini<\/p>\n\n\n\n<h2 class=\"wp-block-heading kassiopeia-offer-price\" id=\"h-29-plo\">29 \u20ac\/plo<\/h2>\n\n\n\n<p class=\"kassiopeia-offer-description\">(norm. 44\u20ac\/ plo)<\/p>\n<\/div>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-group kassiopeia-offer-textcontent is-layout-flow wp-block-group-is-layout-flow\">\n<h3 class=\"wp-block-heading kassiopeia-offer-textcontent-title\" id=\"h-star-membereille-talon-viini-29-pullo-puna-tai-valkoviini\">Star Membereille talon viini 29 \u20ac\/pullo (puna- tai valkoviini)<\/h3>\n\n\n\n<p class=\"kassiopeia-offer-textcontent-description\">Etu on henkil\u00f6kohtainen eik\u00e4 sit\u00e4 voi hy\u00f6dynt\u00e4\u00e4 yksityistilaisuuksien ja ryhm\u00e4menujen yhteydess\u00e4.<\/p>\n<\/div>\n<\/section>\n<\/a><\/div>\n            <img class='slider-arrow slider-arrow-left' alt='Slide to right arrow' src='https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/plugins\/kassiopeia-custom-blocks\/assets\/kassiopeia_slider_arrow_left.svg' aria-hidden='true' tabindex='-1'>\n            <img class='slider-arrow slider-arrow-right' alt='Slide to left arrow' src='https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/plugins\/kassiopeia-custom-blocks\/assets\/kassiopeia_slider_arrow_left.svg' aria-hidden='true' tabindex='-1'>\n            <a class='wp-block-button__link wp-element-button mobile-show-all-button'>Load more<\/a>\n          <\/div><script>\n\/\/---------------------------------\n\/\/ Initialize the OffersImagesScroller if not present\n\/\/---------------------------------\nif (typeof offers_images_scroller === 'undefined') {\n    var offers_images_scroller = new OffersImagesScroller();\n    offers_images_scroller.init();\n}\n\n\/\/---------------------------------\n\/\/ Show more button on mobile\n\/\/---------------------------------\ndocument.addEventListener('DOMContentLoaded', function() {\n    if (typeof offers_images_scroller === 'undefined') {\n        var offers_images_scroller = new OffersImagesScroller();\n        offers_images_scroller.init();\n    }\n    document.querySelectorAll('.mobile-show-all-button').forEach(function(button) {\n        button.addEventListener('click', function(e) {\n            e.preventDefault();\n            const parent = button.closest('.kassiopeia-offer-items');\n            if (parent) parent.classList.add('show-all-on-mobile');\n        });\n    });\n});\n<\/script>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Tarjoukset Oma huone lapsille V\u00e4liovella yhdistett\u00e4v\u00e4t&nbsp;Standard-huoneemme&nbsp;sopivat erinomaisesti perheen majoitukseen. Kaksi Standard-huonetta on mahdollista yhdist\u00e4\u00e4 toisiinsa, jolloin vanhemmille ja lapsille saadaan kummallekin omat huoneet, joissa on oma kylpyhuone ja sis\u00e4\u00e4nk\u00e4ynti k\u00e4yt\u00e4v\u00e4lt\u00e4 huoneeseen. Kun v\u00e4liovi on auki, voi viett\u00e4\u00e4 yhteist\u00e4 aikaa kahden huoneen tilavuudella tai sulkea ovi ja jakaa tila eri huoneisiin. Varaa yhdistett\u00e4v\u00e4t Standard-huoneet:Puh. 029 308 [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":0,"parent":0,"menu_order":3,"comment_status":"closed","ping_status":"closed","template":"wp-custom-template-pages-hotel-matts","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-2856","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Tarjoukset - Hotel Matts | Espoo, Matinkyl\u00e4<\/title>\n<meta name=\"description\" content=\"Varaa huone tai huoneisto Hotel Mattsiin Espooseen edulliseen hintaan. Katso kaikki Hotel Mattsin tarjoukset!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.kassiopeia.fi\/hotel-matts\/tarjoukset\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tarjoukset\" \/>\n<meta property=\"og:description\" content=\"Varaa huone tai huoneisto Hotel Mattsiin Espooseen edulliseen hintaan. Katso kaikki Hotel Mattsin tarjoukset!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.kassiopeia.fi\/hotel-matts\/tarjoukset\/\" \/>\n<meta property=\"og:site_name\" content=\"Hotel Matts\" \/>\n<meta property=\"article:modified_time\" content=\"2026-01-16T06:08:04+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/10\/hote-matts-pariskunta.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1281\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.kassiopeia.fi\/hotel-matts\/tarjoukset\/\",\"url\":\"https:\/\/www.kassiopeia.fi\/hotel-matts\/tarjoukset\/\",\"name\":\"Tarjoukset - Hotel Matts | Espoo, Matinkyl\u00e4\",\"isPartOf\":{\"@id\":\"https:\/\/www.kassiopeia.fi\/hotel-matts\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.kassiopeia.fi\/hotel-matts\/tarjoukset\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.kassiopeia.fi\/hotel-matts\/tarjoukset\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/10\/hote-matts-pariskunta.jpeg\",\"datePublished\":\"2024-10-09T07:07:03+00:00\",\"dateModified\":\"2026-01-16T06:08:04+00:00\",\"description\":\"Varaa huone tai huoneisto Hotel Mattsiin Espooseen edulliseen hintaan. Katso kaikki Hotel Mattsin tarjoukset!\",\"breadcrumb\":{\"@id\":\"https:\/\/www.kassiopeia.fi\/hotel-matts\/tarjoukset\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.kassiopeia.fi\/hotel-matts\/tarjoukset\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.kassiopeia.fi\/hotel-matts\/tarjoukset\/#primaryimage\",\"url\":\"https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/10\/hote-matts-pariskunta.jpeg\",\"contentUrl\":\"https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/10\/hote-matts-pariskunta.jpeg\",\"width\":1920,\"height\":1281,\"caption\":\"Pariskunta Hotel Mattsin huoneessa ja kilistelee kuohuvaa.\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.kassiopeia.fi\/hotel-matts\/tarjoukset\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.kassiopeia.fi\/hotel-matts\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tarjoukset\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.kassiopeia.fi\/hotel-matts\/#website\",\"url\":\"https:\/\/www.kassiopeia.fi\/hotel-matts\/\",\"name\":\"Hotel Matts\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.kassiopeia.fi\/hotel-matts\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Tarjoukset - Hotel Matts | Espoo, Matinkyl\u00e4","description":"Varaa huone tai huoneisto Hotel Mattsiin Espooseen edulliseen hintaan. Katso kaikki Hotel Mattsin tarjoukset!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.kassiopeia.fi\/hotel-matts\/tarjoukset\/","og_locale":"en_US","og_type":"article","og_title":"Tarjoukset","og_description":"Varaa huone tai huoneisto Hotel Mattsiin Espooseen edulliseen hintaan. Katso kaikki Hotel Mattsin tarjoukset!","og_url":"https:\/\/www.kassiopeia.fi\/hotel-matts\/tarjoukset\/","og_site_name":"Hotel Matts","article_modified_time":"2026-01-16T06:08:04+00:00","og_image":[{"width":1920,"height":1281,"url":"https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/10\/hote-matts-pariskunta.jpeg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.kassiopeia.fi\/hotel-matts\/tarjoukset\/","url":"https:\/\/www.kassiopeia.fi\/hotel-matts\/tarjoukset\/","name":"Tarjoukset - Hotel Matts | Espoo, Matinkyl\u00e4","isPartOf":{"@id":"https:\/\/www.kassiopeia.fi\/hotel-matts\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.kassiopeia.fi\/hotel-matts\/tarjoukset\/#primaryimage"},"image":{"@id":"https:\/\/www.kassiopeia.fi\/hotel-matts\/tarjoukset\/#primaryimage"},"thumbnailUrl":"https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/10\/hote-matts-pariskunta.jpeg","datePublished":"2024-10-09T07:07:03+00:00","dateModified":"2026-01-16T06:08:04+00:00","description":"Varaa huone tai huoneisto Hotel Mattsiin Espooseen edulliseen hintaan. Katso kaikki Hotel Mattsin tarjoukset!","breadcrumb":{"@id":"https:\/\/www.kassiopeia.fi\/hotel-matts\/tarjoukset\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.kassiopeia.fi\/hotel-matts\/tarjoukset\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.kassiopeia.fi\/hotel-matts\/tarjoukset\/#primaryimage","url":"https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/10\/hote-matts-pariskunta.jpeg","contentUrl":"https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-content\/uploads\/sites\/2\/2024\/10\/hote-matts-pariskunta.jpeg","width":1920,"height":1281,"caption":"Pariskunta Hotel Mattsin huoneessa ja kilistelee kuohuvaa."},{"@type":"BreadcrumbList","@id":"https:\/\/www.kassiopeia.fi\/hotel-matts\/tarjoukset\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.kassiopeia.fi\/hotel-matts\/"},{"@type":"ListItem","position":2,"name":"Tarjoukset"}]},{"@type":"WebSite","@id":"https:\/\/www.kassiopeia.fi\/hotel-matts\/#website","url":"https:\/\/www.kassiopeia.fi\/hotel-matts\/","name":"Hotel Matts","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.kassiopeia.fi\/hotel-matts\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"lang":"fi","translations":{"fi":2856,"en":6154},"pll_sync_post":[],"_links":{"self":[{"href":"https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-json\/wp\/v2\/pages\/2856","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-json\/wp\/v2\/comments?post=2856"}],"version-history":[{"count":62,"href":"https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-json\/wp\/v2\/pages\/2856\/revisions"}],"predecessor-version":[{"id":7390,"href":"https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-json\/wp\/v2\/pages\/2856\/revisions\/7390"}],"wp:attachment":[{"href":"https:\/\/www.kassiopeia.fi\/hotel-matts\/wp-json\/wp\/v2\/media?parent=2856"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}