{"id":997,"date":"2025-10-26T10:52:21","date_gmt":"2025-10-26T10:52:21","guid":{"rendered":"https:\/\/lamimosa-malaga.com\/?page_id=997"},"modified":"2026-04-06T07:37:43","modified_gmt":"2026-04-06T07:37:43","slug":"book-now","status":"publish","type":"page","link":"https:\/\/lamimosa-malaga.com\/nl\/book-now\/","title":{"rendered":"Boek nu"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"997\" class=\"elementor elementor-997\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b3c070e e-flex e-con-boxed elementor-invisible e-con e-parent\" data-id=\"b3c070e\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;animation&quot;:&quot;fadeInUp&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-74028a1 elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"74028a1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h2>Rates<\/h2><h4>15% discount for spring and fall bookings!<\/h4><p>Our prices vary per season:<\/p><ul><li>La Mimosa opens on March 28, 2026<\/li><li>March &#8211; June: <s>\u20ac190<\/s> <b style=\"color: red;\">\u20ac161<\/b> per night. Price per 5 nights (minimum stay): <s>\u20ac950<\/s> <b style=\"color: red;\">\u20ac805<\/b><\/li><li>July &#8211; August: \u20ac225 per night. Price per 7 nights (minimum stay): \u20ac1575\u00a0<\/li><li>September &#8211; October: <s>\u20ac190<\/s> <b style=\"color: red;\">\u20ac161<\/b> per night. Price per 5 nights (minimum stay): <s>\u20ac950<\/s> <b style=\"color: red;\">\u20ac805<\/b><\/li><\/ul><p>Prices include utilities, Wi-Fi, bedlinen, and towels. Prices do not include:<\/p><ul><li>Cleaning fee:\u00a0\u20ac100 per stay<\/li><li>Refundable damage deposit:\u00a0\u20ac300<\/li><\/ul><p>For stays over 3 weeks, please contact us for a special rate.<\/p><p>Cancellation policy:<\/p><ul><li>Free cancellation up to 30 days before arrival<\/li><li>50% refund for cancellations between 14 and 30 days before arrival<\/li><li>No refund for cancellations within 14 days of arrival<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-14cb457 e-flex e-con-boxed elementor-invisible e-con e-parent\" data-id=\"14cb457\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;animation&quot;:&quot;fadeInUp&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-1de0f87 e-con-full e-flex e-con e-child\" data-id=\"1de0f87\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e2aa71d elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"e2aa71d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h2>Availability and reservations<\/h2>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-f5d790a e-con-full e-flex e-con e-child\" data-id=\"f5d790a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-76a5ed6 e-con-full e-flex e-con e-child\" data-id=\"76a5ed6\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-afc4176 e-con-full e-flex e-con e-child\" data-id=\"afc4176\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ef04e1e elementor-widget elementor-widget-text-editor\" data-id=\"ef04e1e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>For availability, bookings, or inquiries, please get in touch directly:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-3ec644e e-con-full e-flex e-con e-child\" data-id=\"3ec644e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c9d2c4b elementor-view-default elementor-widget elementor-widget-icon\" data-id=\"c9d2c4b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-wrapper\">\n\t\t\t<a class=\"elementor-icon\" href=\"mailto:lamimosamalaga@gmail.com\" target=\"_blank\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"800px\" height=\"800px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M4 9.00005L10.2 13.65C11.2667 14.45 12.7333 14.45 13.8 13.65L20 9\" stroke=\"#000000\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><path d=\"M3 9.17681C3 8.45047 3.39378 7.78123 4.02871 7.42849L11.0287 3.5396C11.6328 3.20402 12.3672 3.20402 12.9713 3.5396L19.9713 7.42849C20.6062 7.78123 21 8.45047 21 9.17681V17C21 18.1046 20.1046 19 19 19H5C3.89543 19 3 18.1046 3 17V9.17681Z\" stroke=\"#000000\" stroke-width=\"2\" stroke-linecap=\"round\"><\/path><\/svg>\t\t\t<\/a>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4b86bd7 elementor-widget elementor-widget-text-editor\" data-id=\"4b86bd7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p class=\"html-h1 xdj266r x14z9mp xat24cr x1lziwak xexx8yu xyri2b x18d9i69 x1c1uobl x1vvkbs x1heor9g x1qlqyl8 x1pd3egz x1a2a7pz\"><a href=\"mailto:lamimosamalaga@gmail.com\" target=\"_blank\" rel=\"noopener\">lamimosamalaga@gmail.com<\/a><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-b203ca6 e-con-full e-flex e-con e-child\" data-id=\"b203ca6\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-55dafb5 elementor-view-default elementor-widget elementor-widget-icon\" data-id=\"55dafb5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-wrapper\">\n\t\t\t<div class=\"elementor-icon\">\n\t\t\t<i aria-hidden=\"true\" class=\"fab fa-whatsapp\"><\/i>\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-15b96fe elementor-widget elementor-widget-text-editor\" data-id=\"15b96fe\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><a href=\"tel:+31612383501\">+31 612383501<\/a> (Ralph)\u00a0 \u00a0<img decoding=\"async\" style=\"margin-right: 2px;\" title=\"English\" src=\"https:\/\/flagcdn.com\/24x18\/gb.png\" alt=\"UK\" \/> <img decoding=\"async\" style=\"margin-right: 2px;\" title=\"Dutch\" src=\"https:\/\/flagcdn.com\/24x18\/nl.png\" alt=\"Netherlands\" \/> <img decoding=\"async\" style=\"margin-right: 2px;\" title=\"German\" src=\"https:\/\/flagcdn.com\/24x18\/de.png\" alt=\"Germany\" \/> <img decoding=\"async\" style=\"margin-right: 2px;\" title=\"French\" src=\"https:\/\/flagcdn.com\/24x18\/fr.png\" alt=\"France\" \/><\/p><p><a href=\"tel:+31614524727\">+31 614524727<\/a> (Ale)\u00a0 \u00a0 \u00a0 \u00a0 <img decoding=\"async\" style=\"margin-right: 2px;\" title=\"English\" src=\"https:\/\/flagcdn.com\/24x18\/gb.png\" alt=\"UK\" \/> <img decoding=\"async\" style=\"margin-right: 2px;\" title=\"Dutch\" src=\"https:\/\/flagcdn.com\/24x18\/nl.png\" alt=\"Netherlands\" \/> <img decoding=\"async\" style=\"margin-right: 2px;\" title=\"Italian\" src=\"https:\/\/flagcdn.com\/24x18\/it.png\" alt=\"Italy\" \/><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7cad814 e-con-full e-flex e-con e-child\" data-id=\"7cad814\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0cb4da5 elementor-view-default elementor-widget elementor-widget-icon\" data-id=\"0cb4da5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-wrapper\">\n\t\t\t<a class=\"elementor-icon\" href=\"https:\/\/www.instagram.com\/lamimosa_malaga\/\" target=\"_blank\">\n\t\t\t<i aria-hidden=\"true\" class=\"fab fa-instagram\"><\/i>\t\t\t<\/a>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b353898 elementor-widget elementor-widget-text-editor\" data-id=\"b353898\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><a href=\"https:\/\/www.instagram.com\/lamimosa_malaga\/\" target=\"_blank\" rel=\"noopener\">@lamimosa_malaga<\/a><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-fc29948 e-con-full e-flex e-con e-child\" data-id=\"fc29948\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2b635ac elementor-view-default elementor-widget elementor-widget-icon\" data-id=\"2b635ac\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-wrapper\">\n\t\t\t<a class=\"elementor-icon\" href=\"https:\/\/www.facebook.com\/finca.la.mimosa\" target=\"_blank\">\n\t\t\t<i aria-hidden=\"true\" class=\"fab fa-facebook\"><\/i>\t\t\t<\/a>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ee714e7 elementor-widget elementor-widget-text-editor\" data-id=\"ee714e7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p class=\"html-h1 xdj266r x14z9mp xat24cr x1lziwak xexx8yu xyri2b x18d9i69 x1c1uobl x1vvkbs x1heor9g x1qlqyl8 x1pd3egz x1a2a7pz\"><a href=\"https:\/\/www.facebook.com\/people\/Finca-La-Mimosa-M%C3%A1laga\/61582910175215\/\" target=\"_blank\" rel=\"noopener\">Finca La Mimosa &#8211; M\u00e1laga<\/a><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-5efe31c e-con-full e-flex e-con e-child\" data-id=\"5efe31c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2461aa6 elementor-widget elementor-widget-html\" data-id=\"2461aa6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\r\n<div class=\"calendar-header\"> \r\n  <button id=\"prevMonth\">\u2039<\/button>\r\n  <span id=\"monthLabel\"><\/span>\r\n  <button id=\"nextMonth\">\u203a<\/button>\r\n<\/div>\r\n\r\n<div id=\"weekdayHead\" class=\"weekday-head\"><\/div>\r\n<div id=\"calendar\"><\/div>\r\n\r\n<style>\r\n  .calendar-header {\r\n    display: flex;\r\n    justify-content: space-between;\r\n    align-items: center;\r\n    max-width: 350px;\r\n    margin-bottom: 10px;\r\n    font-weight: bold;\r\n    font-family: 'IBM Plex Sans', sans-serif;\r\n    font-size: 16px;\r\n  }\r\n\r\n  .calendar-header button {\r\n    background: none;\r\n    border: 1px solid #ccc;\r\n    padding: 5px 10px;\r\n    cursor: pointer;\r\n    color: black;\r\n  }\r\n\r\n  \/* Weekday header row (above the calendar grid) *\/\r\n  .calendar-head {\r\n    display: grid;\r\n    grid-template-columns: repeat(7, 1fr);\r\n    gap: 5px;\r\n    max-width: 350px;\r\n    margin-bottom: 6px;\r\n  }\r\n\r\n  .calendar-head span {\r\n    text-align: center;\r\n    font-family: 'IBM Plex Sans', sans-serif;\r\n    font-weight: 600;\r\n    font-size: 12px;\r\n    letter-spacing: 0.02em;\r\n    color: #556;\r\n    text-transform: uppercase;\r\n    padding: 4px 0;\r\n  }\r\n\r\n  .calendar {\r\n    display: grid;\r\n    grid-template-columns: repeat(7, 1fr);\r\n    gap: 5px;\r\n    max-width: 350px;\r\n  }\r\n\r\n  .day {\r\n    position: relative;            \/* enable overlay triangles *\/\r\n    padding: 10px;\r\n    text-align: center;\r\n    border: 1px solid #ddd;\r\n    background: #DAFFDF;           \/* available color *\/\r\n    overflow: hidden;              \/* clip triangles to cell *\/\r\n    font-family: 'IBM Plex Sans', sans-serif;\r\n  }\r\n\r\n  \/* Ensure day number is above overlays *\/\r\n  .day .date-num {\r\n    position: relative;\r\n    z-index: 2;\r\n  }\r\n\r\n  \/* Fully busy (mid-stay or both check-in & check-out same day) *\/\r\n  .busy {\r\n    background: #D09A40;\r\n    color: #fff;\r\n  }\r\n\r\n  .past {\r\n    background: #F0E6C5;\r\n    color: #FDF9ED;\r\n  }\r\n\r\n  \/* Triangular overlays (under the day number) *\/\r\n  .check-in::after,\r\n  .check-out::after {\r\n    content: \"\";\r\n    position: absolute;\r\n    inset: 0;                      \/* cover the whole cell *\/\r\n    background: #D09A40;           \/* busy color *\/\r\n    pointer-events: none;          \/* don't block clicks *\/\r\n    z-index: 1;                    \/* stay under the .date-num *\/\r\n  }\r\n\r\n  \/* \u2705 Check-in: bottom-right triangle *\/\r\n  .check-in::after {\r\n    \/* triangle below the TL\u2198BR diagonal in the bottom-right half *\/\r\n    clip-path: polygon(100% 0, 100% 100%, 0 100%);\r\n  }\r\n\r\n  \/* Check-out: bottom-left triangle *\/\r\n  .check-out::after {\r\n    clip-path: polygon(0 0, 0 100%, 100% 100%);\r\n  }\r\n\r\n  \/* spacer cells for leading blanks *\/\r\n  .spacer {\r\n    visibility: hidden;   \/* keep layout spacing but hide content *\/\r\n    border: none;\r\n    padding: 10px;        \/* match height with .day *\/\r\n  }\r\n<\/style>\r\n\r\n<script>\r\nconst calendarId = \"6dba1a037dbb9238e7e29dfd4438292b9139736883a8efbe4e6aaf0472a9a2ca@group.calendar.google.com\";\r\nconst apiKey = \"AIzaSyAroCxsYKzP1cOQHtFXJZgu0GNedOWITOU\";\r\n\r\nlet currentDate = new Date();\r\nconst today = new Date();\r\ntoday.setHours(0,0,0,0);\r\n\r\nconst monthLabel = document.getElementById(\"monthLabel\");\r\nconst calendarEl = document.getElementById(\"calendar\");\r\nconst weekdayHeadEl = document.getElementById(\"weekdayHead\");\r\n\r\ndocument.getElementById(\"prevMonth\").onclick = () => {\r\n  const now = new Date();\r\n  \/\/ Only go back if the displayed month is after the real current month\r\n  if (\r\n    currentDate.getFullYear() > now.getFullYear() ||\r\n    (currentDate.getFullYear() === now.getFullYear() && currentDate.getMonth() > now.getMonth())\r\n  ) {\r\n    currentDate.setMonth(currentDate.getMonth() - 1);\r\n    renderCalendar();\r\n  }\r\n};\r\n\r\ndocument.getElementById(\"nextMonth\").onclick = () => {\r\n  const now = new Date();\r\n  const limit = new Date(now.getFullYear(), now.getMonth() + 12, 1); \/\/ 1 year ahead (12 months)\r\n  const target = new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 1);\r\n\r\n  if (target <= limit) {\r\n    currentDate = target;\r\n    renderCalendar();\r\n  }\r\n};\r\n\r\n\/\/ Helper to parse date-only strings or date-time into a Date at local midnight\r\nfunction parseDateOnly(value) {\r\n  const [y, m, d] = value.split(\"T\")[0].split(\"-\");\r\n  return new Date(y, m - 1, d);\r\n}\r\n\r\nfunction renderWeekdayHeader() {\r\n  weekdayHeadEl.innerHTML = \"\";\r\n  const FIRST_DAY = 1; \/\/ 0 = Sunday-first, 1 = Monday-first\r\n  const head = document.createElement(\"div\");\r\n  head.className = \"calendar-head\";\r\n\r\n  \/\/ Locale-aware initials\r\n  const locale = navigator.language || \"en-US\";\r\n  const formatter = new Intl.DateTimeFormat(locale, { weekday: \"short\" });\r\n  const ref = new Date(Date.UTC(2024, 0, 7)); \/\/ Sunday reference (UTC avoids DST issues)\r\n  const names = [...Array(7)].map((_, i) => {\r\n    const d = new Date(ref);\r\n    d.setUTCDate(ref.getUTCDate() + i);\r\n    const short = formatter.format(d);\r\n    const first = [...short][0]; \/\/ first visible character\r\n    return first.toUpperCase();\r\n  });\r\n  const letters = names.slice(FIRST_DAY).concat(names.slice(0, FIRST_DAY));\r\n\r\n  letters.forEach(ch => {\r\n    const span = document.createElement(\"span\");\r\n    span.textContent = ch;\r\n    head.appendChild(span);\r\n  });\r\n  weekdayHeadEl.appendChild(head);\r\n}\r\n\r\nfunction renderCalendar() {\r\n  calendarEl.innerHTML = \"\";\r\n\r\n  const year = currentDate.getFullYear();\r\n  const month = currentDate.getMonth();\r\n\r\n  monthLabel.textContent = currentDate.toLocaleString(\"default\", {\r\n    month: \"long\",\r\n    year: \"numeric\"\r\n  });\r\n\r\n  \/\/ Render the weekday header ABOVE the grid\r\n  renderWeekdayHeader();\r\n\r\n  const startISO = new Date(year, month, 1).toISOString();\r\n  const endISO   = new Date(year, month + 1, 0, 23, 59, 59).toISOString();\r\n\r\n  fetch(\r\n    `https:\/\/www.googleapis.com\/calendar\/v3\/calendars\/${calendarId}\/events?key=${apiKey}&timeMin=${startISO}&timeMax=${endISO}&singleEvents=true&orderBy=startTime`\r\n  )\r\n    .then(res => res.json())\r\n    .then(data => {\r\n      \/\/ Track day states within the current month\r\n      const checkIns = new Set();   \/\/ start dates\r\n      const checkOuts = new Set();  \/\/ end (exclusive) dates\r\n      const midBusy = new Set();    \/\/ mid-stay nights (fully busy)\r\n\r\n      (data.items || []).forEach(e => {\r\n        const startDate = parseDateOnly(e.start.date || e.start.dateTime);\r\n        const endDate   = parseDateOnly(e.end.date || e.end.dateTime); \/\/ exclusive\r\n\r\n        \/\/ Record check-in (start) if it falls in this month\r\n        if (startDate.getFullYear() === year && startDate.getMonth() === month) {\r\n          checkIns.add(startDate.getDate());\r\n        }\r\n\r\n        \/\/ Record check-out (end, exclusive) if it falls in this month\r\n        if (endDate.getFullYear() === year && endDate.getMonth() === month) {\r\n          checkOuts.add(endDate.getDate());\r\n        }\r\n\r\n        \/\/ Mid-stay: days strictly between start and end (exclusive of both)\r\n        const d = new Date(startDate);\r\n        d.setDate(d.getDate() + 1);\r\n        while (d < endDate) {\r\n          if (d.getFullYear() === year && d.getMonth() === month) {\r\n            midBusy.add(d.getDate());\r\n          }\r\n          d.setDate(d.getDate() + 1);\r\n        }\r\n      });\r\n\r\n      const grid = document.createElement(\"div\");\r\n      grid.className = \"calendar\";\r\n\r\n      const daysInMonth = new Date(year, month + 1, 0).getDate();\r\n\r\n      \/\/ Align the first day under the correct weekday column\r\n      const FIRST_DAY = 1; \/\/ must match header\r\n      const jsWeekday = new Date(year, month, 1).getDay(); \/\/ 0=Sun..6=Sat\r\n      const offset = (jsWeekday - FIRST_DAY + 7) % 7;\r\n\r\n      for (let i = 0; i < offset; i++) {\r\n        const spacer = document.createElement(\"div\");\r\n        spacer.className = \"spacer\";\r\n        grid.appendChild(spacer);\r\n      }\r\n\r\n      for (let d = 1; d <= daysInMonth; d++) {\r\n        const dayDate = new Date(year, month, d);\r\n        dayDate.setHours(0,0,0,0);\r\n\r\n        const cell = document.createElement(\"div\");\r\n        cell.className = \"day\";\r\n\r\n        \/\/ Put the number in a span that sits above overlays\r\n        const num = document.createElement(\"span\");\r\n        num.className = \"date-num\";\r\n        num.textContent = d;\r\n        cell.appendChild(num);\r\n\r\n        if (dayDate < today) {\r\n          cell.classList.add(\"past\");\r\n        } else {\r\n          if (midBusy.has(d)) {\r\n            cell.classList.add(\"busy\");\r\n          } else if (checkIns.has(d) && checkOuts.has(d)) {\r\n            cell.classList.add(\"busy\");\r\n          } else if (checkIns.has(d)) {\r\n            cell.classList.add(\"check-in\");  \/\/ now bottom-right triangle\r\n          } else if (checkOuts.has(d)) {\r\n            cell.classList.add(\"check-out\"); \/\/ bottom-left triangle\r\n          }\r\n        }\r\n\r\n        grid.appendChild(cell);\r\n      }\r\n\r\n      calendarEl.appendChild(grid);\r\n    })\r\n    .catch(err => {\r\n      calendarEl.innerHTML = \"Failed to load calendar.\";\r\n      console.error(err);\r\n    });\r\n}\r\n\r\nrenderCalendar();\r\n<\/script>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3938f7b elementor-widget elementor-widget-html\" data-id=\"3938f7b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"legend\">\r\n  <div class=\"legend-item\">\r\n    <span class=\"legend-swatch\" style=\"background:#DAFFDF\"><\/span>\r\n    <span class=\"legend-label\">Available<\/span>\r\n  <\/div>\r\n  <div class=\"legend-item\">\r\n    <span class=\"legend-swatch\" style=\"background:#D09A40\"><\/span>\r\n    <span class=\"legend-label\">Reserved<\/span>\r\n  <\/div>\r\n<\/div>\r\n\r\n<style>\r\n  .legend {\r\n    \r\ndisplay: flex;\r\n    flex-wrap: wrap;\r\n    gap: 8px 16px;\r\n    align-items: center;\r\n    font-family: 'IBM Plex Sans', sans-serif;\r\n    font-size: 16px;\r\n    line-height: 1.4;\r\n  }\r\n\r\n  .legend-item {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    gap: 8px;\r\n  }\r\n\r\n  .legend-swatch {\r\n    width: 14px;\r\n    height: 14px;\r\n    border: 1px solid #bdbdbd; \/* gray border *\/\r\n    background: #eee;          \/* solid background (overridden inline) *\/\r\n    box-sizing: border-box;\r\n    border-radius: 2px;         \/* optional *\/\r\n    display: inline-block;\r\n  }\r\n\r\n  .legend-label {\r\n    white-space: nowrap;\r\n  }\r\n<\/style>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-c928de7 e-flex e-con-boxed elementor-invisible e-con e-parent\" data-id=\"c928de7\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;animation&quot;:&quot;fadeInUp&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-962d2db elementor-widget elementor-widget-text-editor\" data-id=\"962d2db\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h2>House rules<\/h2><p>We want every guest to feel at home and to keep the villa in perfect condition for everyone.<\/p><ul><li>Check-in: from 16:00h | Check-out:\u00a0before 10:00h<\/li><li>No smoking inside the house<\/li><li>Pets are not allowed<\/li><li>No loud parties or events<\/li><li>Please respect our neighbors and the peaceful surroundings<\/li><li>It is not permitted to allow anyone who is not registered as a guest with the owner to stay and\/or overnight at the villa<\/li><li>The pool is fully gated but unsupervised \u2014 use at your own responsibility<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-c8290b9 e-flex e-con-boxed elementor-invisible e-con e-parent\" data-id=\"c8290b9\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;animation&quot;:&quot;fadeInUp&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-fc0456a e-con-full e-flex e-con e-child\" data-id=\"fc0456a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-655fcd7 elementor-widget elementor-widget-text-editor\" data-id=\"655fcd7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h2>How to get here<\/h2><p>La Mimosa is located in the hills just outside Casabermeja (M\u00e1laga province) \u2014 about:<\/p><ul><li>35 min from M\u00e1laga Airport (AGP)<\/li><li>35 min\u00a0from M\u00e1laga city<\/li><li>1 hour from Granada Airport (GRX)<\/li><\/ul><p>After booking, a week before arrival you will receive the exact location and (easy) driving directions.<br \/>The last 300m is a sandy road, and can be easily used by any type of car.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-ad762ba e-con-full e-flex e-con e-child\" data-id=\"ad762ba\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-525efc8 elementor-widget elementor-widget-google_maps\" data-id=\"525efc8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"google_maps.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-custom-embed\">\n\t\t\t<iframe loading=\"lazy\"\n\t\t\t\t\tsrc=\"https:\/\/maps.google.com\/maps?q=casabermeja&#038;t=m&#038;z=9&#038;output=embed&#038;iwloc=near\"\n\t\t\t\t\ttitle=\"casabermeja\"\n\t\t\t\t\taria-label=\"casabermeja\"\n\t\t\t><\/iframe>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-972f9e1 e-flex e-con-boxed e-con e-parent\" data-id=\"972f9e1\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-234cae3 e-con-full e-flex elementor-invisible e-con e-child\" data-id=\"234cae3\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;animation&quot;:&quot;fadeInUp&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0cda6b7 elementor-widget elementor-widget-heading\" data-id=\"0cda6b7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Stay at La Mimosa, explore all of Andaluc\u00eda\n<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Rates 15% discount for spring and fall bookings! Our prices vary per season: La Mimosa opens on March 28, 2026 March &#8211; June: \u20ac190 \u20ac161 per night. Price per 5 nights (minimum stay): \u20ac950 \u20ac805 July &#8211; August: \u20ac225 per night. Price per 7 nights (minimum stay): \u20ac1575\u00a0 September &#8211; October: \u20ac190 \u20ac161 per night. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"page-builder","ast-site-content-layout":"full-width-container","site-content-style":"unboxed","site-sidebar-style":"unboxed","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-997","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/lamimosa-malaga.com\/nl\/wp-json\/wp\/v2\/pages\/997","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lamimosa-malaga.com\/nl\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/lamimosa-malaga.com\/nl\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/lamimosa-malaga.com\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/lamimosa-malaga.com\/nl\/wp-json\/wp\/v2\/comments?post=997"}],"version-history":[{"count":509,"href":"https:\/\/lamimosa-malaga.com\/nl\/wp-json\/wp\/v2\/pages\/997\/revisions"}],"predecessor-version":[{"id":4643,"href":"https:\/\/lamimosa-malaga.com\/nl\/wp-json\/wp\/v2\/pages\/997\/revisions\/4643"}],"wp:attachment":[{"href":"https:\/\/lamimosa-malaga.com\/nl\/wp-json\/wp\/v2\/media?parent=997"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}