{"title":"2-Bedroom Home Collection","description":"","products":[{"product_id":"taipei-rental-monthly-apartment-zx17","title":"Cozy Convenient En-Suite Rooms Apartment (ZX17)","description":"\u003cp\u003e\u003cspan style=\"font-weight: 400;\"\u003eThis bright, cozy home with two master bedrooms sits right next to MRT Taipei City Hall Station, a true retreat from the everyday hustle and bustle. A working desk provided gives tenants great convenience to work from home.\u003c\/span\u003e\u003c\/p\u003e\n\u003ch3\u003e\u003cstrong\u003eSize\u003c\/strong\u003e\u003c\/h3\u003e\n\u003cp\u003e\u003cspan style=\"font-weight: 400;\"\u003e20 ping \/ 66 ㎡ \/ 712 sqft\u003c\/span\u003e\u003c\/p\u003e\n\u003ch3\u003e\u003cstrong\u003eFeatures\u003c\/strong\u003e\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e2 bedrooms and 2 bathrooms\u003c\/li\u003e\n\u003cli\u003e1-minute walk to \u003cspan style=\"color: #4b7dfa;\"\u003eMRT Taipei City Hall Station \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003eBuilding Security Guard \u003c\/li\u003e\n\u003cli\u003eTV\u003c\/li\u003e\n\u003cli\u003eWifi\u003c\/li\u003e\n\u003cli\u003eMedia Streamer\u003c\/li\u003e\n\u003cli\u003eAir Conditioner \u003c\/li\u003e\n\u003cli\u003eBed (\u003cspan\u003e150 x 188cm)\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eWorking Desk\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003eCooking Stove\u003c\/li\u003e\n\u003cli\u003eDining Table\u003c\/li\u003e\n\u003cli\u003eMicrowave \u003c\/li\u003e\n\u003cli\u003eWasher\u003c\/li\u003e\n\u003cli\u003eDryer \u003cbr\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3 class=\"p3\"\u003e\u003cb\u003eInterested in Renting?\u003c\/b\u003e\u003c\/h3\u003e\n\u003cp class=\"p3\"\u003e\u003cmeta charset=\"utf-8\"\u003eContact us for more information via our official LINE account, by email, or through the contact form:\u003c\/p\u003e\n\u003cul class=\"ul1\"\u003e\n\u003cli class=\"li3\"\u003e\u003cspan class=\"s1\"\u003e\u003ca href=\"https:\/\/lin.ee\/Q7g9PtG\" target=\"_blank\" rel=\"noopener\"\u003e\u003cspan class=\"s2\"\u003e\u003cb\u003eLINE:\u003c\/b\u003e @kolette\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/li\u003e\n\u003cli class=\"li3\"\u003e\n\u003cspan class=\"s1\"\u003e\u003c\/span\u003e\u003cb\u003eEmail:\u003c\/b\u003e contact@kolettehome.com\u003c\/li\u003e\n\u003cli class=\"li3\"\u003e\u003cspan class=\"s1\"\u003e\u003ca href=\"https:\/\/kolettehome.com\/pages\/contact\"\u003e\u003cspan class=\"s2\"\u003e\u003cb\u003eContact form\u003c\/b\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\n\u003cdiv id=\"kc-cal\"\u003e\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  var WORKER = \"https:\/\/ical-proxy.aidantpe.workers.dev\";\n  var ICAL_URL = \"https:\/\/www.airbnb.com.tw\/calendar\/ical\/45336547.ics?t=7d3785ab461148e49ef4c4e637a74ac6\";\n\n  var bookedRanges=[];\n  var cy=new Date().getFullYear();\n  var cm=new Date().getMonth();\n  var MN=[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"];\n  var DN=[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"];\n\n  var wrap=document.getElementById(\"kc-cal\");\n  wrap.innerHTML=`\n  \u003cstyle\u003e\n  .kc-wrap{font-family:sans-serif;margin:40px 0;border-top:2px solid #e5e7eb;padding-top:30px}\n  .kc-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}\n  .kc-htitle{font-size:1.1rem;font-weight:700;color:#111}\n  .kc-nav button{background:#f3f4f6;border:none;border-radius:8px;padding:6px 14px;cursor:pointer;font-size:14px;margin-left:6px}\n  .kc-nav button:hover{background:#e5e7eb}\n  .kc-status{font-size:12px;color:#6b7280;margin-bottom:12px}\n  .kc-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:12px}\n  .kc-dow{font-size:11px;color:#9ca3af;text-align:center;padding:4px 0;font-weight:600}\n  .kc-day{aspect-ratio:1;display:flex;align-items:center;justify-content:center;border-radius:8px;font-size:13px;color:#111}\n  .kc-avail{background:#f9fafb;border:1px solid #e5e7eb}\n  .kc-booked{background:#e5e7eb;color:#6b7280;text-decoration:line-through}\n  .kc-past{color:#d1d5db}\n  .kc-today{border:2px solid #3b82f6!important;font-weight:700}\n  .kc-legend{display:flex;gap:14px;font-size:12px;color:#6b7280;margin-top:4px;margin-bottom:10px}\n  .kc-leg{display:flex;align-items:center;gap:5px}\n  .kc-dot{width:12px;height:12px;border-radius:3px;flex-shrink:0}\n  .kc-notice{font-size:12px;color:#6b7280;margin-top:10px}\n  \u003c\/style\u003e\n  \u003cdiv class=\"kc-wrap\"\u003e\n    \u003cdiv class=\"kc-head\"\u003e\n      \u003cdiv class=\"kc-htitle\" id=\"kc-monthlabel\"\u003e\u003c\/div\u003e\n      \u003cdiv class=\"kc-nav\"\u003e\n        \u003cbutton onclick=\"kcPrev()\"\u003e\u0026#8592;\u003c\/button\u003e\n        \u003cbutton onclick=\"kcNext()\"\u003e\u0026#8594;\u003c\/button\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"kc-status\" id=\"kc-status\"\u003eLoading...\u003c\/div\u003e\n    \u003cdiv class=\"kc-grid\" id=\"kc-grid\"\u003e\u003c\/div\u003e\n    \u003cdiv class=\"kc-legend\"\u003e\n    \u003cdiv class=\"kc-notice\"\u003eBookings for 30+ nights only\u003c\/div\u003e\n  \u003c\/div\u003e`;\n\n  function pd(s){return new Date(+s.slice(0,4),+s.slice(4,6)-1,+s.slice(6,8));}\n  function isBooked(d){for(var r of bookedRanges){if(d\u003e=r.start\u0026\u0026d\u003cr.end)return true;}return false;}\n\n  function renderCal(){\n    document.getElementById(\"kc-monthlabel\").textContent=MN[cm]+\" \"+cy;\n    var g=document.getElementById(\"kc-grid\");\n    g.innerHTML=\"\";\n    DN.forEach(function(d){var e=document.createElement(\"div\");e.className=\"kc-dow\";e.textContent=d;g.appendChild(e);});\n    var first=new Date(cy,cm,1).getDay();\n    var total=new Date(cy,cm+1,0).getDate();\n    var today=new Date();today.setHours(0,0,0,0);\n    for(var i=0;i\u003cfirst;i++){var e=document.createElement(\"div\");e.className=\"kc-day\";g.appendChild(e);}\n    for(var d=1;d\u003c=total;d++){\n      var date=new Date(cy,cm,d);\n      var e=document.createElement(\"div\");\n      e.textContent=d;\n      if(date\u003ctoday){e.className=\"kc-day kc-past\";}\n      else if(isBooked(date)){e.className=\"kc-day kc-booked\";}\n      else{e.className=\"kc-day kc-avail\";}\n      if(date.getTime()===today.getTime())e.classList.add(\"kc-today\");\n      g.appendChild(e);\n    }\n  }\n\n  window.kcPrev=function(){cm--;if(cm\u003c0){cm=11;cy--;}renderCal();};\n  window.kcNext=function(){cm++;if(cm\u003e11){cm=0;cy++;}renderCal();};\n\n  fetch(WORKER+\"\/?url=\"+encodeURIComponent(ICAL_URL))\n    .then(function(r){return r.text();})\n    .then(function(text){\n      var lines=text.replace(\/\\r\\n\/g,\"\\n\").replace(\/\\r\/g,\"\\n\").split(\"\\n\");\n      var inEv=false,ds=null,de=null;\n      lines.forEach(function(line){\n        if(line===\"BEGIN:VEVENT\"){inEv=true;ds=null;de=null;}\n        else if(line===\"END:VEVENT\"){if(inEv\u0026\u0026ds\u0026\u0026de)bookedRanges.push({start:ds,end:de});inEv=false;}\n        else if(inEv){\n          var m=line.match(\/^DTSTART[^:]*:(\\d{8})\/);\n          var m2=line.match(\/^DTEND[^:]*:(\\d{8})\/);\n          if(m)ds=pd(m[1]);\n          if(m2)de=pd(m2[1]);\n        }\n      });\n      document.getElementById(\"kc-status\").textContent=\"Contact us for details\";\n      renderCal();\n    })\n    .catch(function(e){\n      document.getElementById(\"kc-status\").textContent=\"\";\n      renderCal();\n    });\n\n  renderCal();\n})();\n\u003c\/script\u003e\n","brand":"Kolette Home","offers":[{"title":"Default Title","offer_id":40911610937530,"sku":"","price":0.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0605\/9504\/4538\/files\/ZX17_Kolette_Home_Living_Room.png?v=1777096333"},{"product_id":"taipei-rental-monthly-apartment-dn33a","title":"2-Bedroom Home with Beautiful Sunlights (DN33A)","description":"\u003cp\u003e\u003cspan style=\"font-weight: 400;\"\u003eFeaturing great natural lights, new furniture and renovations, this home is modern, new and cozy at the same time. It nestles between two MRT stations and is in the center of Taipei Eastern District. High speed wifi and a working desk provide\u003cspan\u003e great convenience to work from home.\u003c\/span\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003ch3\u003e\u003cstrong\u003eSize\u003c\/strong\u003e\u003c\/h3\u003e\n\u003cp\u003e\u003cspan style=\"font-weight: 400;\"\u003e20 ping \/ 66 ㎡ \/ 712 sqft\u003c\/span\u003e\u003c\/p\u003e\n\u003ch3\u003e\u003cstrong\u003eFeatures\u003c\/strong\u003e\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cspan\u003e1 double bedroom, 1 single room\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003e1 bathroom\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003e4-minute walk from \u003cspan style=\"color: #c9821c;\"\u003eMRT Zhongxiao Fuxing Station\u003c\/span\u003e\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003e2-minute walk from\u003cspan\u003e \u003c\/span\u003e\u003cspan style=\"color: #4b7dfa;\"\u003eMRT Zhongxiao Dunhua Station\u003c\/span\u003e\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eTV\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eWifi\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eAir Conditioner \u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eDouble Bed (150 x 188cm)\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\n\u003cspan\u003e Single\u003c\/span\u003e Bed (105 x 188cm)\u003c\/li\u003e\n\u003cli\u003eDining Table\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eCooking Stove\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eMicrowave \u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eWasher\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3 class=\"p3\"\u003e\u003cb\u003eInterested in Renting?\u003c\/b\u003e\u003c\/h3\u003e\n\u003cp class=\"p3\"\u003e\u003cmeta charset=\"utf-8\"\u003eContact us for more information via our official LINE account, by email, or through the contact form:\u003c\/p\u003e\n\u003cul class=\"ul1\"\u003e\n\u003cli class=\"li3\"\u003e\u003cspan class=\"s1\"\u003e\u003ca href=\"https:\/\/lin.ee\/Q7g9PtG\" target=\"_blank\" rel=\"noopener\"\u003e\u003cspan class=\"s2\"\u003e\u003cb\u003eLINE:\u003c\/b\u003e @kolette\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/li\u003e\n\u003cli class=\"li3\"\u003e\n\u003cspan class=\"s1\"\u003e\u003c\/span\u003e\u003cb\u003eEmail:\u003c\/b\u003e contact@kolettehome.com\u003c\/li\u003e\n\u003cli class=\"li3\"\u003e\u003cspan class=\"s1\"\u003e\u003ca href=\"https:\/\/kolettehome.com\/pages\/contact\"\u003e\u003cspan class=\"s2\"\u003e\u003cb\u003eContact form\u003c\/b\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cdiv id=\"kc-cal\"\u003e\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  var WORKER = \"https:\/\/ical-proxy.aidantpe.workers.dev\";\n  var ICAL_URL = \"https:\/\/www.airbnb.com.tw\/calendar\/ical\/584987073519906652.ics?t=46e1e37ba9be4781956efb77453a501f\";\n\n  var bookedRanges=[];\n  var cy=new Date().getFullYear();\n  var cm=new Date().getMonth();\n  var MN=[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"];\n  var DN=[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"];\n\n  var wrap=document.getElementById(\"kc-cal\");\n  wrap.innerHTML=`\n  \u003cstyle\u003e\n  .kc-wrap{font-family:sans-serif;margin:40px 0;border-top:2px solid #e5e7eb;padding-top:30px}\n  .kc-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}\n  .kc-htitle{font-size:1.1rem;font-weight:700;color:#111}\n  .kc-nav button{background:#f3f4f6;border:none;border-radius:8px;padding:6px 14px;cursor:pointer;font-size:14px;margin-left:6px}\n  .kc-nav button:hover{background:#e5e7eb}\n  .kc-status{font-size:12px;color:#6b7280;margin-bottom:12px}\n  .kc-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:12px}\n  .kc-dow{font-size:11px;color:#9ca3af;text-align:center;padding:4px 0;font-weight:600}\n  .kc-day{aspect-ratio:1;display:flex;align-items:center;justify-content:center;border-radius:8px;font-size:13px;color:#111}\n  .kc-avail{background:#f9fafb;border:1px solid #e5e7eb}\n  .kc-booked{background:#e5e7eb;color:#6b7280;text-decoration:line-through}\n  .kc-past{color:#d1d5db}\n  .kc-today{border:2px solid #3b82f6!important;font-weight:700}\n  .kc-legend{display:flex;gap:14px;font-size:12px;color:#6b7280;margin-top:4px;margin-bottom:10px}\n  .kc-leg{display:flex;align-items:center;gap:5px}\n  .kc-dot{width:12px;height:12px;border-radius:3px;flex-shrink:0}\n  .kc-notice{font-size:12px;color:#6b7280;margin-top:10px}\n  \u003c\/style\u003e\n  \u003cdiv class=\"kc-wrap\"\u003e\n    \u003cdiv class=\"kc-head\"\u003e\n      \u003cdiv class=\"kc-htitle\" id=\"kc-monthlabel\"\u003e\u003c\/div\u003e\n      \u003cdiv class=\"kc-nav\"\u003e\n        \u003cbutton onclick=\"kcPrev()\"\u003e\u0026#8592;\u003c\/button\u003e\n        \u003cbutton onclick=\"kcNext()\"\u003e\u0026#8594;\u003c\/button\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"kc-status\" id=\"kc-status\"\u003eLoading...\u003c\/div\u003e\n    \u003cdiv class=\"kc-grid\" id=\"kc-grid\"\u003e\u003c\/div\u003e\n    \u003cdiv class=\"kc-legend\"\u003e\n    \u003cdiv class=\"kc-notice\"\u003eBookings for 30+ nights only\u003c\/div\u003e\n  \u003c\/div\u003e`;\n\n  function pd(s){return new Date(+s.slice(0,4),+s.slice(4,6)-1,+s.slice(6,8));}\n  function isBooked(d){for(var r of bookedRanges){if(d\u003e=r.start\u0026\u0026d\u003cr.end)return true;}return false;}\n\n  function renderCal(){\n    document.getElementById(\"kc-monthlabel\").textContent=MN[cm]+\" \"+cy;\n    var g=document.getElementById(\"kc-grid\");\n    g.innerHTML=\"\";\n    DN.forEach(function(d){var e=document.createElement(\"div\");e.className=\"kc-dow\";e.textContent=d;g.appendChild(e);});\n    var first=new Date(cy,cm,1).getDay();\n    var total=new Date(cy,cm+1,0).getDate();\n    var today=new Date();today.setHours(0,0,0,0);\n    for(var i=0;i\u003cfirst;i++){var e=document.createElement(\"div\");e.className=\"kc-day\";g.appendChild(e);}\n    for(var d=1;d\u003c=total;d++){\n      var date=new Date(cy,cm,d);\n      var e=document.createElement(\"div\");\n      e.textContent=d;\n      if(date\u003ctoday){e.className=\"kc-day kc-past\";}\n      else if(isBooked(date)){e.className=\"kc-day kc-booked\";}\n      else{e.className=\"kc-day kc-avail\";}\n      if(date.getTime()===today.getTime())e.classList.add(\"kc-today\");\n      g.appendChild(e);\n    }\n  }\n\n  window.kcPrev=function(){cm--;if(cm\u003c0){cm=11;cy--;}renderCal();};\n  window.kcNext=function(){cm++;if(cm\u003e11){cm=0;cy++;}renderCal();};\n\n  fetch(WORKER+\"\/?url=\"+encodeURIComponent(ICAL_URL))\n    .then(function(r){return r.text();})\n    .then(function(text){\n      var lines=text.replace(\/\\r\\n\/g,\"\\n\").replace(\/\\r\/g,\"\\n\").split(\"\\n\");\n      var inEv=false,ds=null,de=null;\n      lines.forEach(function(line){\n        if(line===\"BEGIN:VEVENT\"){inEv=true;ds=null;de=null;}\n        else if(line===\"END:VEVENT\"){if(inEv\u0026\u0026ds\u0026\u0026de)bookedRanges.push({start:ds,end:de});inEv=false;}\n        else if(inEv){\n          var m=line.match(\/^DTSTART[^:]*:(\\d{8})\/);\n          var m2=line.match(\/^DTEND[^:]*:(\\d{8})\/);\n          if(m)ds=pd(m[1]);\n          if(m2)de=pd(m2[1]);\n        }\n      });\n      document.getElementById(\"kc-status\").textContent=\"Contact us for details\";\n      renderCal();\n    })\n    .catch(function(e){\n      document.getElementById(\"kc-status\").textContent=\"\";\n      renderCal();\n    });\n\n  renderCal();\n})();\n\u003c\/script\u003e\n","brand":"Kolette Home","offers":[{"title":"Default Title","offer_id":41272909824186,"sku":"","price":0.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0605\/9504\/4538\/files\/DN33A_Kolette_Home_Living_Room.jpg?v=1777022301"},{"product_id":"taipei-rental-monthly-apartment-ly15","title":"Cozy 2-Bedroom Apartment with Natural Light (LY15)","description":"\u003cp\u003e\u003cspan style=\"font-weight: 400;\"\u003e\u003cspan\u003eFeaturing great natural lights, furniture and renovations\u003c\/span\u003e\u003c\/span\u003e\u003cspan style=\"font-weight: 400;\"\u003e, this home is new and cozy at the same time. It is only 5 minutes walk to MRT Dongmen station, which is the transfer spot between MRT Red Line and Orange Line, gives city dwellers great convenience. Close to the fa\u003c\/span\u003emous Yongkang Street, where you can find the must-try dishes on your list.\u003cbr\u003e\u003c\/p\u003e\n\u003ch3\u003e\u003cstrong\u003eSize\u003c\/strong\u003e\u003c\/h3\u003e\n\u003cp\u003e\u003cspan style=\"font-weight: 400;\"\u003e24 ping \/ 82 ㎡ \/ 854 sqft\u003c\/span\u003e\u003c\/p\u003e\n\u003ch3\u003e\u003cstrong\u003eFeatures\u003c\/strong\u003e\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cspan\u003e1 double bedroom and 1 single bedroom\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003e 2 bathrooms(1 with bathtub and 1 dry-wet separated shower)\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003e5-minute walk from \u003cspan style=\"color: #fa6a4d;\"\u003eMRT Dongmen Station\u003c\/span\u003e\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eTV\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eWifi\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eAir Conditioner \u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eStandard Double Bed (150cm*190cm) \u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003e Single Bed (105*190cm)\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eCooking Stove\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eMicrowave \u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eWasher\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3 class=\"p3\"\u003e\u003cb\u003eInterested in Renting?\u003c\/b\u003e\u003c\/h3\u003e\n\u003cp class=\"p3\"\u003e\u003cmeta charset=\"utf-8\"\u003eContact us for more information via our official LINE account, by email, or through the contact form:\u003c\/p\u003e\n\u003cul class=\"ul1\"\u003e\n\u003cli class=\"li3\"\u003e\u003cspan class=\"s1\"\u003e\u003ca rel=\"noopener\" href=\"https:\/\/lin.ee\/Q7g9PtG\" target=\"_blank\"\u003e\u003cspan class=\"s2\"\u003e\u003cb\u003eLINE:\u003c\/b\u003e @kolette\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/li\u003e\n\u003cli class=\"li3\"\u003e\n\u003cspan class=\"s1\"\u003e\u003c\/span\u003e\u003cb\u003eEmail:\u003c\/b\u003e contact@kolettehome.com\u003c\/li\u003e\n\u003cli class=\"li3\"\u003e\u003cspan class=\"s1\"\u003e\u003ca href=\"https:\/\/kolettehome.com\/pages\/contact\"\u003e\u003cspan class=\"s2\"\u003e\u003cb\u003eContact form\u003c\/b\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cdiv id=\"kc-cal\"\u003e\u003c\/div\u003e\n\u003cp\u003e \u003c\/p\u003e\n\n\u003cdiv id=\"kc-cal\"\u003e\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  var WORKER = \"https:\/\/ical-proxy.aidantpe.workers.dev\";\n  var ICAL_URL = \"https:\/\/www.airbnb.com.tw\/calendar\/ical\/41988301.ics?t=7547baad520e4f7b9d395f6ea610ec08\";\n\n  var bookedRanges=[];\n  var cy=new Date().getFullYear();\n  var cm=new Date().getMonth();\n  var MN=[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"];\n  var DN=[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"];\n\n  var wrap=document.getElementById(\"kc-cal\");\n  wrap.innerHTML=`\n  \u003cstyle\u003e\n  .kc-wrap{font-family:sans-serif;margin:40px 0;border-top:2px solid #e5e7eb;padding-top:30px}\n  .kc-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}\n  .kc-htitle{font-size:1.1rem;font-weight:700;color:#111}\n  .kc-nav button{background:#f3f4f6;border:none;border-radius:8px;padding:6px 14px;cursor:pointer;font-size:14px;margin-left:6px}\n  .kc-nav button:hover{background:#e5e7eb}\n  .kc-status{font-size:12px;color:#6b7280;margin-bottom:12px}\n  .kc-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:12px}\n  .kc-dow{font-size:11px;color:#9ca3af;text-align:center;padding:4px 0;font-weight:600}\n  .kc-day{aspect-ratio:1;display:flex;align-items:center;justify-content:center;border-radius:8px;font-size:13px;color:#111}\n  .kc-avail{background:#f9fafb;border:1px solid #e5e7eb}\n  .kc-booked{background:#e5e7eb;color:#6b7280;text-decoration:line-through}\n  .kc-past{color:#d1d5db}\n  .kc-today{border:2px solid #3b82f6!important;font-weight:700}\n  .kc-legend{display:flex;gap:14px;font-size:12px;color:#6b7280;margin-top:4px;margin-bottom:10px}\n  .kc-leg{display:flex;align-items:center;gap:5px}\n  .kc-dot{width:12px;height:12px;border-radius:3px;flex-shrink:0}\n  .kc-notice{font-size:12px;color:#6b7280;margin-top:10px}\n  \u003c\/style\u003e\n  \u003cdiv class=\"kc-wrap\"\u003e\n    \u003cdiv class=\"kc-head\"\u003e\n      \u003cdiv class=\"kc-htitle\" id=\"kc-monthlabel\"\u003e\u003c\/div\u003e\n      \u003cdiv class=\"kc-nav\"\u003e\n        \u003cbutton onclick=\"kcPrev()\"\u003e\u0026#8592;\u003c\/button\u003e\n        \u003cbutton onclick=\"kcNext()\"\u003e\u0026#8594;\u003c\/button\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"kc-status\" id=\"kc-status\"\u003eLoading...\u003c\/div\u003e\n    \u003cdiv class=\"kc-grid\" id=\"kc-grid\"\u003e\u003c\/div\u003e\n    \u003cdiv class=\"kc-legend\"\u003e\n    \u003cdiv class=\"kc-notice\"\u003eBookings for 30+ nights only\u003c\/div\u003e\n  \u003c\/div\u003e`;\n\n  function pd(s){return new Date(+s.slice(0,4),+s.slice(4,6)-1,+s.slice(6,8));}\n  function isBooked(d){for(var r of bookedRanges){if(d\u003e=r.start\u0026\u0026d\u003cr.end)return true;}return false;}\n\n  function renderCal(){\n    document.getElementById(\"kc-monthlabel\").textContent=MN[cm]+\" \"+cy;\n    var g=document.getElementById(\"kc-grid\");\n    g.innerHTML=\"\";\n    DN.forEach(function(d){var e=document.createElement(\"div\");e.className=\"kc-dow\";e.textContent=d;g.appendChild(e);});\n    var first=new Date(cy,cm,1).getDay();\n    var total=new Date(cy,cm+1,0).getDate();\n    var today=new Date();today.setHours(0,0,0,0);\n    for(var i=0;i\u003cfirst;i++){var e=document.createElement(\"div\");e.className=\"kc-day\";g.appendChild(e);}\n    for(var d=1;d\u003c=total;d++){\n      var date=new Date(cy,cm,d);\n      var e=document.createElement(\"div\");\n      e.textContent=d;\n      if(date\u003ctoday){e.className=\"kc-day kc-past\";}\n      else if(isBooked(date)){e.className=\"kc-day kc-booked\";}\n      else{e.className=\"kc-day kc-avail\";}\n      if(date.getTime()===today.getTime())e.classList.add(\"kc-today\");\n      g.appendChild(e);\n    }\n  }\n\n  window.kcPrev=function(){cm--;if(cm\u003c0){cm=11;cy--;}renderCal();};\n  window.kcNext=function(){cm++;if(cm\u003e11){cm=0;cy++;}renderCal();};\n\n  fetch(WORKER+\"\/?url=\"+encodeURIComponent(ICAL_URL))\n    .then(function(r){return r.text();})\n    .then(function(text){\n      var lines=text.replace(\/\\r\\n\/g,\"\\n\").replace(\/\\r\/g,\"\\n\").split(\"\\n\");\n      var inEv=false,ds=null,de=null;\n      lines.forEach(function(line){\n        if(line===\"BEGIN:VEVENT\"){inEv=true;ds=null;de=null;}\n        else if(line===\"END:VEVENT\"){if(inEv\u0026\u0026ds\u0026\u0026de)bookedRanges.push({start:ds,end:de});inEv=false;}\n        else if(inEv){\n          var m=line.match(\/^DTSTART[^:]*:(\\d{8})\/);\n          var m2=line.match(\/^DTEND[^:]*:(\\d{8})\/);\n          if(m)ds=pd(m[1]);\n          if(m2)de=pd(m2[1]);\n        }\n      });\n      document.getElementById(\"kc-status\").textContent=\"Contact us for details\";\n      renderCal();\n    })\n    .catch(function(e){\n      document.getElementById(\"kc-status\").textContent=\"\";\n      renderCal();\n    });\n\n  renderCal();\n})();\n\u003c\/script\u003e\n\n\n","brand":"Kolette Home","offers":[{"title":"Default Title","offer_id":41710897430714,"sku":"","price":0.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0605\/9504\/4538\/products\/LY15_Kolette_Home__Living_Room.jpg?v=1777020706"},{"product_id":"taipei-rental-monthly-apartment-cc8-5","title":"Stylish 2-Bedroom Home with Elevator (CC8-5)","description":"\u003cp\u003e\u003cspan style=\"font-weight: 400;\"\u003eFeaturing great natural lights, new furniture and renovations, this home is modern, new and cozy at the same time. It nestles between two MRT stations which gives city dwellers great convenience. A working desk provided in both of the rooms makes it a lot easlier to work from home.\u003c\/span\u003e\u003c\/p\u003e\n\u003ch3\u003e\u003cstrong\u003eSize\u003c\/strong\u003e\u003c\/h3\u003e\n\u003cp\u003e\u003cspan style=\"font-weight: 400;\"\u003e23 ping \/ 76 ㎡ \/ 818 sqft\u003c\/span\u003e\u003c\/p\u003e\n\u003ch3\u003e\u003cstrong\u003eFeatures\u003c\/strong\u003e\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cspan\u003e1 Double Room and 1 Single Room\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003e1 Bathroom\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003e6-minute walk from \u003cspan style=\"color: #06782c;\"\u003eMRT Nanjing Fuxing station\u003c\/span\u003e\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eTV\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eWifi\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eAir Conditioner \u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eDouble Bed (150 x 188cm)\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eSingle Bed (105 x 188cm)\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eCooking Stove\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eDining Table\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eMicrowave \u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eWasher\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eDryer\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3 class=\"p3\"\u003e\u003cb\u003eInterested in Renting?\u003c\/b\u003e\u003c\/h3\u003e\n\u003cp class=\"p3\"\u003e\u003cmeta charset=\"utf-8\"\u003eContact us for more information via our official LINE account, by email, or through the contact form:\u003c\/p\u003e\n\u003cul class=\"ul1\"\u003e\n\u003cli class=\"li3\"\u003e\u003cspan class=\"s1\"\u003e\u003ca href=\"https:\/\/lin.ee\/Q7g9PtG\" target=\"_blank\" rel=\"noopener\"\u003e\u003cspan class=\"s2\"\u003e\u003cb\u003eLINE:\u003c\/b\u003e @kolette\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/li\u003e\n\u003cli class=\"li3\"\u003e\n\u003cspan class=\"s1\"\u003e\u003c\/span\u003e\u003cb\u003eEmail:\u003c\/b\u003e contact@kolettehome.com\u003c\/li\u003e\n\u003cli class=\"li3\"\u003e\u003cspan class=\"s1\"\u003e\u003ca href=\"https:\/\/kolettehome.com\/pages\/contact\"\u003e\u003cspan class=\"s2\"\u003e\u003cb\u003eContact form\u003c\/b\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\n\n\u003cdiv id=\"kc-cal\"\u003e\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  var WORKER = \"https:\/\/ical-proxy.aidantpe.workers.dev\";\n  var ICAL_URL = \"https:\/\/www.airbnb.com.tw\/calendar\/ical\/769133197471562323.ics?t=0539fc2ef94a45318f16ee287edcd9eb\";\n\n  var bookedRanges=[];\n  var cy=new Date().getFullYear();\n  var cm=new Date().getMonth();\n  var MN=[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"];\n  var DN=[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"];\n\n  var wrap=document.getElementById(\"kc-cal\");\n  wrap.innerHTML=`\n  \u003cstyle\u003e\n  .kc-wrap{font-family:sans-serif;margin:40px 0;border-top:2px solid #e5e7eb;padding-top:30px}\n  .kc-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}\n  .kc-htitle{font-size:1.1rem;font-weight:700;color:#111}\n  .kc-nav button{background:#f3f4f6;border:none;border-radius:8px;padding:6px 14px;cursor:pointer;font-size:14px;margin-left:6px}\n  .kc-nav button:hover{background:#e5e7eb}\n  .kc-status{font-size:12px;color:#6b7280;margin-bottom:12px}\n  .kc-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:12px}\n  .kc-dow{font-size:11px;color:#9ca3af;text-align:center;padding:4px 0;font-weight:600}\n  .kc-day{aspect-ratio:1;display:flex;align-items:center;justify-content:center;border-radius:8px;font-size:13px;color:#111}\n  .kc-avail{background:#f9fafb;border:1px solid #e5e7eb}\n  .kc-booked{background:#e5e7eb;color:#6b7280;text-decoration:line-through}\n  .kc-past{color:#d1d5db}\n  .kc-today{border:2px solid #3b82f6!important;font-weight:700}\n  .kc-legend{display:flex;gap:14px;font-size:12px;color:#6b7280;margin-top:4px;margin-bottom:10px}\n  .kc-leg{display:flex;align-items:center;gap:5px}\n  .kc-dot{width:12px;height:12px;border-radius:3px;flex-shrink:0}\n  .kc-notice{font-size:12px;color:#6b7280;margin-top:10px}\n  \u003c\/style\u003e\n  \u003cdiv class=\"kc-wrap\"\u003e\n    \u003cdiv class=\"kc-head\"\u003e\n      \u003cdiv class=\"kc-htitle\" id=\"kc-monthlabel\"\u003e\u003c\/div\u003e\n      \u003cdiv class=\"kc-nav\"\u003e\n        \u003cbutton onclick=\"kcPrev()\"\u003e\u0026#8592;\u003c\/button\u003e\n        \u003cbutton onclick=\"kcNext()\"\u003e\u0026#8594;\u003c\/button\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"kc-status\" id=\"kc-status\"\u003eLoading...\u003c\/div\u003e\n    \u003cdiv class=\"kc-grid\" id=\"kc-grid\"\u003e\u003c\/div\u003e\n    \u003cdiv class=\"kc-legend\"\u003e\n    \u003cdiv class=\"kc-notice\"\u003eBookings for 30+ nights only\u003c\/div\u003e\n  \u003c\/div\u003e`;\n\n  function pd(s){return new Date(+s.slice(0,4),+s.slice(4,6)-1,+s.slice(6,8));}\n  function isBooked(d){for(var r of bookedRanges){if(d\u003e=r.start\u0026\u0026d\u003cr.end)return true;}return false;}\n\n  function renderCal(){\n    document.getElementById(\"kc-monthlabel\").textContent=MN[cm]+\" \"+cy;\n    var g=document.getElementById(\"kc-grid\");\n    g.innerHTML=\"\";\n    DN.forEach(function(d){var e=document.createElement(\"div\");e.className=\"kc-dow\";e.textContent=d;g.appendChild(e);});\n    var first=new Date(cy,cm,1).getDay();\n    var total=new Date(cy,cm+1,0).getDate();\n    var today=new Date();today.setHours(0,0,0,0);\n    for(var i=0;i\u003cfirst;i++){var e=document.createElement(\"div\");e.className=\"kc-day\";g.appendChild(e);}\n    for(var d=1;d\u003c=total;d++){\n      var date=new Date(cy,cm,d);\n      var e=document.createElement(\"div\");\n      e.textContent=d;\n      if(date\u003ctoday){e.className=\"kc-day kc-past\";}\n      else if(isBooked(date)){e.className=\"kc-day kc-booked\";}\n      else{e.className=\"kc-day kc-avail\";}\n      if(date.getTime()===today.getTime())e.classList.add(\"kc-today\");\n      g.appendChild(e);\n    }\n  }\n\n  window.kcPrev=function(){cm--;if(cm\u003c0){cm=11;cy--;}renderCal();};\n  window.kcNext=function(){cm++;if(cm\u003e11){cm=0;cy++;}renderCal();};\n\n  fetch(WORKER+\"\/?url=\"+encodeURIComponent(ICAL_URL))\n    .then(function(r){return r.text();})\n    .then(function(text){\n      var lines=text.replace(\/\\r\\n\/g,\"\\n\").replace(\/\\r\/g,\"\\n\").split(\"\\n\");\n      var inEv=false,ds=null,de=null;\n      lines.forEach(function(line){\n        if(line===\"BEGIN:VEVENT\"){inEv=true;ds=null;de=null;}\n        else if(line===\"END:VEVENT\"){if(inEv\u0026\u0026ds\u0026\u0026de)bookedRanges.push({start:ds,end:de});inEv=false;}\n        else if(inEv){\n          var m=line.match(\/^DTSTART[^:]*:(\\d{8})\/);\n          var m2=line.match(\/^DTEND[^:]*:(\\d{8})\/);\n          if(m)ds=pd(m[1]);\n          if(m2)de=pd(m2[1]);\n        }\n      });\n      document.getElementById(\"kc-status\").textContent=\"Contact us for details\";\n      renderCal();\n    })\n    .catch(function(e){\n      document.getElementById(\"kc-status\").textContent=\"\";\n      renderCal();\n    });\n\n  renderCal();\n})();\n\u003c\/script\u003e\n","brand":"Kolette Home","offers":[{"title":"Default Title","offer_id":42131305463994,"sku":"","price":0.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0605\/9504\/4538\/files\/CC8-5_Kolette_Home__Living_Room.jpg?v=1777017082"},{"product_id":"taipei-rental-monthly-apartment-dn33b","title":"Downtown 2-Bedroom Home with Balcony (DN33B)","description":"\u003cp\u003e\u003cspan\u003eFeaturing great natural lights, new furniture and renovations, this home is modern, new and cozy at the same time. It nestles between two MRT stations and is in the center of Taipei Eastern District. High speed wifi and a working desk provide\u003c\/span\u003e\u003cspan\u003e great convenience to work from home.\u003c\/span\u003e\u003c\/p\u003e\n\u003ch3\u003e\u003cstrong\u003eSize\u003c\/strong\u003e\u003c\/h3\u003e\n\u003cp\u003e\u003cspan style=\"font-weight: 400;\"\u003e20 ping \/ 66 ㎡ \/ 712 sqft\u003c\/span\u003e\u003c\/p\u003e\n\u003ch3\u003e\u003cstrong\u003eFeatures\u003c\/strong\u003e\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cspan\u003e1 double bedroom, 1 single room\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003e1 bathroom\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003e2-minute walk from \u003cspan style=\"color: #4b7dfa;\"\u003eMRT Zhongxiao Dunhua Station\u003c\/span\u003e\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003e4-minute walk from\u003cspan\u003e \u003c\/span\u003e\u003cspan style=\"color: rgb(174, 106, 28);\"\u003eMRT Zhongxiao Fuxing Station\u003c\/span\u003e\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eTV\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eWifi\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eAir Conditioner \u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eDouble Bed (150 x 188cm)\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eSingle bed (105 x 188cm)\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eDining Table\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eCooking Stove\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eMicrowave \u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eWasher\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3 class=\"p3\"\u003e\u003cb\u003eInterested in Renting?\u003c\/b\u003e\u003c\/h3\u003e\n\u003cp class=\"p3\"\u003e\u003cmeta charset=\"utf-8\"\u003eContact us for more information via our official LINE account, by email, or through the contact form:\u003c\/p\u003e\n\u003cul class=\"ul1\"\u003e\n\u003cli class=\"li3\"\u003e\u003cspan class=\"s1\"\u003e\u003ca rel=\"noopener\" href=\"https:\/\/lin.ee\/Q7g9PtG\" target=\"_blank\"\u003e\u003cspan class=\"s2\"\u003e\u003cb\u003eLINE:\u003c\/b\u003e @kolette\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/li\u003e\n\u003cli class=\"li3\"\u003e\n\u003cspan class=\"s1\"\u003e\u003c\/span\u003e\u003cb\u003eEmail:\u003c\/b\u003e contact@kolettehome.com\u003c\/li\u003e\n\u003cli class=\"li3\"\u003e\u003cspan class=\"s1\"\u003e\u003ca href=\"https:\/\/kolettehome.com\/pages\/contact\"\u003e\u003cspan class=\"s2\"\u003e\u003cb\u003eContact form\u003c\/b\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\n\n\u003cdiv id=\"kc-cal\"\u003e\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  var WORKER = \"https:\/\/ical-proxy.aidantpe.workers.dev\";\n  var ICAL_URL = \"https:\/\/www.airbnb.com.tw\/calendar\/ical\/863557754101501454.ics?t=768788cb103b49a582e38fa08d5c5a0a\";\n\n  var bookedRanges=[];\n  var cy=new Date().getFullYear();\n  var cm=new Date().getMonth();\n  var MN=[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"];\n  var DN=[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"];\n\n  var wrap=document.getElementById(\"kc-cal\");\n  wrap.innerHTML=`\n  \u003cstyle\u003e\n  .kc-wrap{font-family:sans-serif;margin:40px 0;border-top:2px solid #e5e7eb;padding-top:30px}\n  .kc-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}\n  .kc-htitle{font-size:1.1rem;font-weight:700;color:#111}\n  .kc-nav button{background:#f3f4f6;border:none;border-radius:8px;padding:6px 14px;cursor:pointer;font-size:14px;margin-left:6px}\n  .kc-nav button:hover{background:#e5e7eb}\n  .kc-status{font-size:12px;color:#6b7280;margin-bottom:12px}\n  .kc-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:12px}\n  .kc-dow{font-size:11px;color:#9ca3af;text-align:center;padding:4px 0;font-weight:600}\n  .kc-day{aspect-ratio:1;display:flex;align-items:center;justify-content:center;border-radius:8px;font-size:13px;color:#111}\n  .kc-avail{background:#f9fafb;border:1px solid #e5e7eb}\n  .kc-booked{background:#e5e7eb;color:#6b7280;text-decoration:line-through}\n  .kc-past{color:#d1d5db}\n  .kc-today{border:2px solid #3b82f6!important;font-weight:700}\n  .kc-legend{display:flex;gap:14px;font-size:12px;color:#6b7280;margin-top:4px;margin-bottom:10px}\n  .kc-leg{display:flex;align-items:center;gap:5px}\n  .kc-dot{width:12px;height:12px;border-radius:3px;flex-shrink:0}\n  .kc-notice{font-size:12px;color:#6b7280;margin-top:10px}\n  \u003c\/style\u003e\n  \u003cdiv class=\"kc-wrap\"\u003e\n    \u003cdiv class=\"kc-head\"\u003e\n      \u003cdiv class=\"kc-htitle\" id=\"kc-monthlabel\"\u003e\u003c\/div\u003e\n      \u003cdiv class=\"kc-nav\"\u003e\n        \u003cbutton onclick=\"kcPrev()\"\u003e\u0026#8592;\u003c\/button\u003e\n        \u003cbutton onclick=\"kcNext()\"\u003e\u0026#8594;\u003c\/button\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"kc-status\" id=\"kc-status\"\u003eLoading...\u003c\/div\u003e\n    \u003cdiv class=\"kc-grid\" id=\"kc-grid\"\u003e\u003c\/div\u003e\n    \u003cdiv class=\"kc-legend\"\u003e\n    \u003cdiv class=\"kc-notice\"\u003eBookings for 30+ nights only\u003c\/div\u003e\n  \u003c\/div\u003e`;\n\n  function pd(s){return new Date(+s.slice(0,4),+s.slice(4,6)-1,+s.slice(6,8));}\n  function isBooked(d){for(var r of bookedRanges){if(d\u003e=r.start\u0026\u0026d\u003cr.end)return true;}return false;}\n\n  function renderCal(){\n    document.getElementById(\"kc-monthlabel\").textContent=MN[cm]+\" \"+cy;\n    var g=document.getElementById(\"kc-grid\");\n    g.innerHTML=\"\";\n    DN.forEach(function(d){var e=document.createElement(\"div\");e.className=\"kc-dow\";e.textContent=d;g.appendChild(e);});\n    var first=new Date(cy,cm,1).getDay();\n    var total=new Date(cy,cm+1,0).getDate();\n    var today=new Date();today.setHours(0,0,0,0);\n    for(var i=0;i\u003cfirst;i++){var e=document.createElement(\"div\");e.className=\"kc-day\";g.appendChild(e);}\n    for(var d=1;d\u003c=total;d++){\n      var date=new Date(cy,cm,d);\n      var e=document.createElement(\"div\");\n      e.textContent=d;\n      if(date\u003ctoday){e.className=\"kc-day kc-past\";}\n      else if(isBooked(date)){e.className=\"kc-day kc-booked\";}\n      else{e.className=\"kc-day kc-avail\";}\n      if(date.getTime()===today.getTime())e.classList.add(\"kc-today\");\n      g.appendChild(e);\n    }\n  }\n\n  window.kcPrev=function(){cm--;if(cm\u003c0){cm=11;cy--;}renderCal();};\n  window.kcNext=function(){cm++;if(cm\u003e11){cm=0;cy++;}renderCal();};\n\n  fetch(WORKER+\"\/?url=\"+encodeURIComponent(ICAL_URL))\n    .then(function(r){return r.text();})\n    .then(function(text){\n      var lines=text.replace(\/\\r\\n\/g,\"\\n\").replace(\/\\r\/g,\"\\n\").split(\"\\n\");\n      var inEv=false,ds=null,de=null;\n      lines.forEach(function(line){\n        if(line===\"BEGIN:VEVENT\"){inEv=true;ds=null;de=null;}\n        else if(line===\"END:VEVENT\"){if(inEv\u0026\u0026ds\u0026\u0026de)bookedRanges.push({start:ds,end:de});inEv=false;}\n        else if(inEv){\n          var m=line.match(\/^DTSTART[^:]*:(\\d{8})\/);\n          var m2=line.match(\/^DTEND[^:]*:(\\d{8})\/);\n          if(m)ds=pd(m[1]);\n          if(m2)de=pd(m2[1]);\n        }\n      });\n      document.getElementById(\"kc-status\").textContent=\"Contact us for details\";\n      renderCal();\n    })\n    .catch(function(e){\n      document.getElementById(\"kc-status\").textContent=\"\";\n      renderCal();\n    });\n\n  renderCal();\n})();\n\u003c\/script\u003e\n","brand":"Kolette Home","offers":[{"title":"Default Title","offer_id":42486744744122,"sku":"","price":0.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0605\/9504\/4538\/files\/DN33B_Kolette_Home_Living_Room_2.png?v=1777008018"},{"product_id":"taipei-rental-monthly-apartment-yanj7-1","title":"2-Bedroom Home with Elevator(YanJ7-1)","description":"\u003cp\u003e\u003cspan style=\"font-weight: 400;\"\u003eFeaturing great natural lights, new furniture and renovations, this home is modern, new and cozy at the same time. It nestles to MRT station and bus stop which gives city dwellers great convenience. A working desk in the room makes it easy to work from home.\u003c\/span\u003e\u003c\/p\u003e\n\u003ch3\u003e\u003cstrong\u003eSize\u003c\/strong\u003e\u003c\/h3\u003e\n\u003cp\u003e\u003cspan style=\"font-weight: 400;\"\u003e22 ping \/ 72 ㎡ \/ 783 sqft\u003c\/span\u003e\u003c\/p\u003e\n\u003ch3\u003e\u003cstrong\u003eFeatures\u003c\/strong\u003e\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cspan\u003e1 double bedroom and 1 single room\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003e1 bathroom with bathtub and 1 toilet with shower\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003e7-minute walk from \u003cspan style=\"color: rgb(60, 145, 38);\"\u003eMRT Taipei Arena station\u003c\/span\u003e\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eTV\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eWifi\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eAir Conditioner \u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eDouble Bed (150 x 188cm)\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eSingle Bed (105 x 188cm)\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eCooking Stove\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eDining Table\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eMicrowave \u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eWasher\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3 class=\"p3\"\u003e\u003cb\u003eInterested in Renting?\u003c\/b\u003e\u003c\/h3\u003e\n\u003cp class=\"p3\"\u003e\u003cmeta charset=\"utf-8\"\u003eContact us for more information via our official LINE account, by email, or through the contact form:\u003c\/p\u003e\n\u003cul class=\"ul1\"\u003e\n\u003cli class=\"li3\"\u003e\u003cspan class=\"s1\"\u003e\u003ca href=\"https:\/\/lin.ee\/Q7g9PtG\" rel=\"noopener\" target=\"_blank\"\u003e\u003cspan class=\"s2\"\u003e\u003cb\u003eLINE:\u003c\/b\u003e @kolette\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/li\u003e\n\u003cli class=\"li3\"\u003e\n\u003cspan class=\"s1\"\u003e\u003c\/span\u003e\u003cb\u003eEmail:\u003c\/b\u003e contact@kolettehome.com\u003c\/li\u003e\n\u003cli class=\"li3\"\u003e\u003cspan class=\"s1\"\u003e\u003ca href=\"https:\/\/kolettehome.com\/pages\/contact\"\u003e\u003cspan class=\"s2\"\u003e\u003cb\u003eContact form\u003c\/b\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\n\n\u003cdiv id=\"kc-cal\"\u003e\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  var WORKER = \"https:\/\/ical-proxy.aidantpe.workers.dev\";\n  var ICAL_URL = \"https:\/\/www.airbnb.com.tw\/calendar\/ical\/879378797430883334.ics?t=3cab3ac99e83406f9d4eb2cd8b435dfb\";\n\n  var bookedRanges=[];\n  var cy=new Date().getFullYear();\n  var cm=new Date().getMonth();\n  var MN=[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"];\n  var DN=[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"];\n\n  var wrap=document.getElementById(\"kc-cal\");\n  wrap.innerHTML=`\n  \u003cstyle\u003e\n  .kc-wrap{font-family:sans-serif;margin:40px 0;border-top:2px solid #e5e7eb;padding-top:30px}\n  .kc-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}\n  .kc-htitle{font-size:1.1rem;font-weight:700;color:#111}\n  .kc-nav button{background:#f3f4f6;border:none;border-radius:8px;padding:6px 14px;cursor:pointer;font-size:14px;margin-left:6px}\n  .kc-nav button:hover{background:#e5e7eb}\n  .kc-status{font-size:12px;color:#6b7280;margin-bottom:12px}\n  .kc-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:12px}\n  .kc-dow{font-size:11px;color:#9ca3af;text-align:center;padding:4px 0;font-weight:600}\n  .kc-day{aspect-ratio:1;display:flex;align-items:center;justify-content:center;border-radius:8px;font-size:13px;color:#111}\n  .kc-avail{background:#f9fafb;border:1px solid #e5e7eb}\n  .kc-booked{background:#e5e7eb;color:#6b7280;text-decoration:line-through}\n  .kc-past{color:#d1d5db}\n  .kc-today{border:2px solid #3b82f6!important;font-weight:700}\n  .kc-legend{display:flex;gap:14px;font-size:12px;color:#6b7280;margin-top:4px;margin-bottom:10px}\n  .kc-leg{display:flex;align-items:center;gap:5px}\n  .kc-dot{width:12px;height:12px;border-radius:3px;flex-shrink:0}\n  .kc-notice{font-size:12px;color:#6b7280;margin-top:10px}\n  \u003c\/style\u003e\n  \u003cdiv class=\"kc-wrap\"\u003e\n    \u003cdiv class=\"kc-head\"\u003e\n      \u003cdiv class=\"kc-htitle\" id=\"kc-monthlabel\"\u003e\u003c\/div\u003e\n      \u003cdiv class=\"kc-nav\"\u003e\n        \u003cbutton onclick=\"kcPrev()\"\u003e\u0026#8592;\u003c\/button\u003e\n        \u003cbutton onclick=\"kcNext()\"\u003e\u0026#8594;\u003c\/button\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"kc-status\" id=\"kc-status\"\u003eLoading...\u003c\/div\u003e\n    \u003cdiv class=\"kc-grid\" id=\"kc-grid\"\u003e\u003c\/div\u003e\n    \u003cdiv class=\"kc-legend\"\u003e\n    \u003cdiv class=\"kc-notice\"\u003eBookings for 30+ nights only\u003c\/div\u003e\n  \u003c\/div\u003e`;\n\n  function pd(s){return new Date(+s.slice(0,4),+s.slice(4,6)-1,+s.slice(6,8));}\n  function isBooked(d){for(var r of bookedRanges){if(d\u003e=r.start\u0026\u0026d\u003cr.end)return true;}return false;}\n\n  function renderCal(){\n    document.getElementById(\"kc-monthlabel\").textContent=MN[cm]+\" \"+cy;\n    var g=document.getElementById(\"kc-grid\");\n    g.innerHTML=\"\";\n    DN.forEach(function(d){var e=document.createElement(\"div\");e.className=\"kc-dow\";e.textContent=d;g.appendChild(e);});\n    var first=new Date(cy,cm,1).getDay();\n    var total=new Date(cy,cm+1,0).getDate();\n    var today=new Date();today.setHours(0,0,0,0);\n    for(var i=0;i\u003cfirst;i++){var e=document.createElement(\"div\");e.className=\"kc-day\";g.appendChild(e);}\n    for(var d=1;d\u003c=total;d++){\n      var date=new Date(cy,cm,d);\n      var e=document.createElement(\"div\");\n      e.textContent=d;\n      if(date\u003ctoday){e.className=\"kc-day kc-past\";}\n      else if(isBooked(date)){e.className=\"kc-day kc-booked\";}\n      else{e.className=\"kc-day kc-avail\";}\n      if(date.getTime()===today.getTime())e.classList.add(\"kc-today\");\n      g.appendChild(e);\n    }\n  }\n\n  window.kcPrev=function(){cm--;if(cm\u003c0){cm=11;cy--;}renderCal();};\n  window.kcNext=function(){cm++;if(cm\u003e11){cm=0;cy++;}renderCal();};\n\n  fetch(WORKER+\"\/?url=\"+encodeURIComponent(ICAL_URL))\n    .then(function(r){return r.text();})\n    .then(function(text){\n      var lines=text.replace(\/\\r\\n\/g,\"\\n\").replace(\/\\r\/g,\"\\n\").split(\"\\n\");\n      var inEv=false,ds=null,de=null;\n      lines.forEach(function(line){\n        if(line===\"BEGIN:VEVENT\"){inEv=true;ds=null;de=null;}\n        else if(line===\"END:VEVENT\"){if(inEv\u0026\u0026ds\u0026\u0026de)bookedRanges.push({start:ds,end:de});inEv=false;}\n        else if(inEv){\n          var m=line.match(\/^DTSTART[^:]*:(\\d{8})\/);\n          var m2=line.match(\/^DTEND[^:]*:(\\d{8})\/);\n          if(m)ds=pd(m[1]);\n          if(m2)de=pd(m2[1]);\n        }\n      });\n      document.getElementById(\"kc-status\").textContent=\"Contact us for details\";\n      renderCal();\n    })\n    .catch(function(e){\n      document.getElementById(\"kc-status\").textContent=\"\";\n      renderCal();\n    });\n\n  renderCal();\n})();\n\u003c\/script\u003e\n","brand":"Kolette Home","offers":[{"title":"Default Title","offer_id":42488339333306,"sku":"","price":0.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0605\/9504\/4538\/files\/YanJ_Kolette_Home_Living_Room.jpg?v=1776676442"},{"product_id":"taipei-rental-monthly-apartment-lk164","title":"2-Bedroom Home with big bathtub (LK164)","description":"\u003cp\u003eFeaturing great natural lights, furniture and renovations, this home is modern, new and cozy at the same time. Highlighted with a big bathtub, which is the best spot after a hard working day.\u003cbr\u003eLocated at downtown Xinyi Dist. and only 7 minutes walk to MRT Station, gives city dwellers great convenience.\u003c\/p\u003e\n\u003ch3\u003e\u003cstrong\u003eSize\u003c\/strong\u003e\u003c\/h3\u003e\n\u003cp\u003e\u003cspan style=\"font-weight: 400;\"\u003e\u003cspan style=\"font-weight: 400;\"\u003e32 ping \/ 105 ㎡ \/ 1139 sqft\u003c\/span\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003ch3\u003e\u003cstrong\u003eFeatures\u003c\/strong\u003e\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e2 bedrooms and 1 study room\u003c\/li\u003e\n\u003cli\u003e1 bathroom with a bathtub and 1 toilet\u003c\/li\u003e\n\u003cli\u003e7-minute walk to \u003cspan style=\"color: #4b7dfa;\"\u003eMRT Yongchun Station \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003eTV\u003c\/li\u003e\n\u003cli\u003eWifi\u003c\/li\u003e\n\u003cli\u003eAir Conditioner \u003c\/li\u003e\n\u003cli\u003eBed (\u003cspan\u003e150 x 188cm)\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003eCooking Stove\u003c\/li\u003e\n\u003cli\u003eDining Table\u003c\/li\u003e\n\u003cli\u003eMicrowave \u003c\/li\u003e\n\u003cli\u003eWasher\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3 class=\"p3\"\u003e\u003cb\u003eInterested in Renting?\u003c\/b\u003e\u003c\/h3\u003e\n\u003cp class=\"p3\"\u003e\u003cmeta charset=\"utf-8\"\u003eContact us for more information via our official LINE account, by email, or through the contact form:\u003c\/p\u003e\n\u003cul class=\"ul1\"\u003e\n\u003cli class=\"li3\"\u003e\u003cspan class=\"s1\"\u003e\u003ca href=\"https:\/\/lin.ee\/Q7g9PtG\" target=\"_blank\" rel=\"noopener\"\u003e\u003cspan class=\"s2\"\u003e\u003cb\u003eLINE:\u003c\/b\u003e @kolette\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/li\u003e\n\u003cli class=\"li3\"\u003e\n\u003cspan class=\"s1\"\u003e\u003c\/span\u003e\u003cb\u003eEmail:\u003c\/b\u003e contact@kolettehome.com\u003c\/li\u003e\n\u003cli class=\"li3\"\u003e\u003cspan class=\"s1\"\u003e\u003ca href=\"https:\/\/kolettehome.com\/pages\/contact\"\u003e\u003cspan class=\"s2\"\u003e\u003cb\u003eContact form\u003c\/b\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cdiv id=\"kc-cal\"\u003e\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  var WORKER = \"https:\/\/ical-proxy.aidantpe.workers.dev\";\n  var ICAL_URL = \"https:\/\/www.airbnb.com.tw\/calendar\/ical\/53368573.ics?t=9017c1ad239b459cb65cbe782d2194e1\";\n\n  var bookedRanges=[];\n  var cy=new Date().getFullYear();\n  var cm=new Date().getMonth();\n  var MN=[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"];\n  var DN=[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"];\n\n  var wrap=document.getElementById(\"kc-cal\");\n  wrap.innerHTML=`\n  \u003cstyle\u003e\n  .kc-wrap{font-family:sans-serif;margin:40px 0;border-top:2px solid #e5e7eb;padding-top:30px}\n  .kc-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}\n  .kc-htitle{font-size:1.1rem;font-weight:700;color:#111}\n  .kc-nav button{background:#f3f4f6;border:none;border-radius:8px;padding:6px 14px;cursor:pointer;font-size:14px;margin-left:6px}\n  .kc-nav button:hover{background:#e5e7eb}\n  .kc-status{font-size:12px;color:#6b7280;margin-bottom:12px}\n  .kc-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:12px}\n  .kc-dow{font-size:11px;color:#9ca3af;text-align:center;padding:4px 0;font-weight:600}\n  .kc-day{aspect-ratio:1;display:flex;align-items:center;justify-content:center;border-radius:8px;font-size:13px;color:#111}\n  .kc-avail{background:#f9fafb;border:1px solid #e5e7eb}\n  .kc-booked{background:#e5e7eb;color:#6b7280;text-decoration:line-through}\n  .kc-past{color:#d1d5db}\n  .kc-today{border:2px solid #3b82f6!important;font-weight:700}\n  .kc-legend{display:flex;gap:14px;font-size:12px;color:#6b7280;margin-top:4px;margin-bottom:10px}\n  .kc-leg{display:flex;align-items:center;gap:5px}\n  .kc-dot{width:12px;height:12px;border-radius:3px;flex-shrink:0}\n  .kc-notice{font-size:12px;color:#6b7280;margin-top:10px}\n  \u003c\/style\u003e\n  \u003cdiv class=\"kc-wrap\"\u003e\n    \u003cdiv class=\"kc-head\"\u003e\n      \u003cdiv class=\"kc-htitle\" id=\"kc-monthlabel\"\u003e\u003c\/div\u003e\n      \u003cdiv class=\"kc-nav\"\u003e\n        \u003cbutton onclick=\"kcPrev()\"\u003e\u0026#8592;\u003c\/button\u003e\n        \u003cbutton onclick=\"kcNext()\"\u003e\u0026#8594;\u003c\/button\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"kc-status\" id=\"kc-status\"\u003eLoading...\u003c\/div\u003e\n    \u003cdiv class=\"kc-grid\" id=\"kc-grid\"\u003e\u003c\/div\u003e\n    \u003cdiv class=\"kc-legend\"\u003e\n    \u003cdiv class=\"kc-notice\"\u003eBookings for 30+ nights only\u003c\/div\u003e\n  \u003c\/div\u003e`;\n\n  function pd(s){return new Date(+s.slice(0,4),+s.slice(4,6)-1,+s.slice(6,8));}\n  function isBooked(d){for(var r of bookedRanges){if(d\u003e=r.start\u0026\u0026d\u003cr.end)return true;}return false;}\n\n  function renderCal(){\n    document.getElementById(\"kc-monthlabel\").textContent=MN[cm]+\" \"+cy;\n    var g=document.getElementById(\"kc-grid\");\n    g.innerHTML=\"\";\n    DN.forEach(function(d){var e=document.createElement(\"div\");e.className=\"kc-dow\";e.textContent=d;g.appendChild(e);});\n    var first=new Date(cy,cm,1).getDay();\n    var total=new Date(cy,cm+1,0).getDate();\n    var today=new Date();today.setHours(0,0,0,0);\n    for(var i=0;i\u003cfirst;i++){var e=document.createElement(\"div\");e.className=\"kc-day\";g.appendChild(e);}\n    for(var d=1;d\u003c=total;d++){\n      var date=new Date(cy,cm,d);\n      var e=document.createElement(\"div\");\n      e.textContent=d;\n      if(date\u003ctoday){e.className=\"kc-day kc-past\";}\n      else if(isBooked(date)){e.className=\"kc-day kc-booked\";}\n      else{e.className=\"kc-day kc-avail\";}\n      if(date.getTime()===today.getTime())e.classList.add(\"kc-today\");\n      g.appendChild(e);\n    }\n  }\n\n  window.kcPrev=function(){cm--;if(cm\u003c0){cm=11;cy--;}renderCal();};\n  window.kcNext=function(){cm++;if(cm\u003e11){cm=0;cy++;}renderCal();};\n\n  fetch(WORKER+\"\/?url=\"+encodeURIComponent(ICAL_URL))\n    .then(function(r){return r.text();})\n    .then(function(text){\n      var lines=text.replace(\/\\r\\n\/g,\"\\n\").replace(\/\\r\/g,\"\\n\").split(\"\\n\");\n      var inEv=false,ds=null,de=null;\n      lines.forEach(function(line){\n        if(line===\"BEGIN:VEVENT\"){inEv=true;ds=null;de=null;}\n        else if(line===\"END:VEVENT\"){if(inEv\u0026\u0026ds\u0026\u0026de)bookedRanges.push({start:ds,end:de});inEv=false;}\n        else if(inEv){\n          var m=line.match(\/^DTSTART[^:]*:(\\d{8})\/);\n          var m2=line.match(\/^DTEND[^:]*:(\\d{8})\/);\n          if(m)ds=pd(m[1]);\n          if(m2)de=pd(m2[1]);\n        }\n      });\n      document.getElementById(\"kc-status\").textContent=\"Contact us for details\";\n      renderCal();\n    })\n    .catch(function(e){\n      document.getElementById(\"kc-status\").textContent=\"\";\n      renderCal();\n    });\n\n  renderCal();\n})();\n\u003c\/script\u003e\n","brand":"Kolette Home","offers":[{"title":"Default Title","offer_id":42502298042554,"sku":"","price":0.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0605\/9504\/4538\/files\/LK164_Kolette_Home_Living_Room.jpg?v=1776673315"},{"product_id":"taipei-rental-monthly-apartment-jn63a","title":"Sweet 2-Bedroom Apartment (JN63A)","description":"\u003cp\u003e\u003cspan style=\"font-weight: 400;\"\u003eBrand new furniture and renovations, this home is modern, new and cozy at the same time. With great natural lights indoor and only 450 meters, around 6 minutes walk to MRT Zhongxiao \u003cspan\u003eXinsheng\u003c\/span\u003e station, which gives city dwellers great convenience. Each room has a desk to WFH.\u003c\/span\u003e\u003c\/p\u003e\n\u003ch3\u003e\u003cstrong\u003eSize\u003c\/strong\u003e\u003c\/h3\u003e\n\u003cp\u003e\u003cspan style=\"font-weight: 400;\"\u003e23 ping \/ 76 ㎡ \/ 818 sqft\u003c\/span\u003e\u003c\/p\u003e\n\u003ch3\u003e\u003cstrong\u003eFeatures\u003c\/strong\u003e\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cspan\u003e2 bedrooms and 1 bathroom\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\n\u003cspan\u003e\u003cspan\u003e6-minute walk from \u003cspan style=\"color: #4b7dfa;\"\u003eMRT Zhongxiao Xinsheng \u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003cspan style=\"color: #4b7dfa;\"\u003eStation \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eTV\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eWifi\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eAir Conditioner \u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eBed (150 x 188cm)\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003e2 Working Desks\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eCooking Stove\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eMicrowave \u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eWasher\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003eDryer\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3 class=\"p3\"\u003e\u003cb\u003eInterested in Renting?\u003c\/b\u003e\u003c\/h3\u003e\n\u003cp class=\"p3\"\u003e\u003cmeta charset=\"utf-8\"\u003eContact us for more information via our official LINE account, by email, or through the contact form:\u003c\/p\u003e\n\u003cul class=\"ul1\"\u003e\n\u003cli class=\"li3\"\u003e\u003cspan class=\"s1\"\u003e\u003ca href=\"https:\/\/lin.ee\/Q7g9PtG\" target=\"_blank\" rel=\"noopener\"\u003e\u003cspan class=\"s2\"\u003e\u003cb\u003eLINE:\u003c\/b\u003e @kolette\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/li\u003e\n\u003cli class=\"li3\"\u003e\n\u003cspan class=\"s1\"\u003e\u003c\/span\u003e\u003cb\u003eEmail:\u003c\/b\u003e contact@kolettehome.com\u003c\/li\u003e\n\u003cli class=\"li3\"\u003e\u003cspan class=\"s1\"\u003e\u003ca href=\"https:\/\/kolettehome.com\/pages\/contact\"\u003e\u003cspan class=\"s2\"\u003e\u003cb\u003eContact form\u003c\/b\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cdiv id=\"kc-cal\"\u003e\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  var WORKER = \"https:\/\/ical-proxy.aidantpe.workers.dev\";\n  var ICAL_URL = \"https:\/\/www.airbnb.com.tw\/calendar\/ical\/891010552342740939.ics?t=b9036ccd42274feeb451b22e73ea8eb3\";\n\n  var bookedRanges=[];\n  var cy=new Date().getFullYear();\n  var cm=new Date().getMonth();\n  var MN=[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"];\n  var DN=[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"];\n\n  var wrap=document.getElementById(\"kc-cal\");\n  wrap.innerHTML=`\n  \u003cstyle\u003e\n  .kc-wrap{font-family:sans-serif;margin:40px 0;border-top:2px solid #e5e7eb;padding-top:30px}\n  .kc-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}\n  .kc-htitle{font-size:1.1rem;font-weight:700;color:#111}\n  .kc-nav button{background:#f3f4f6;border:none;border-radius:8px;padding:6px 14px;cursor:pointer;font-size:14px;margin-left:6px}\n  .kc-nav button:hover{background:#e5e7eb}\n  .kc-status{font-size:12px;color:#6b7280;margin-bottom:12px}\n  .kc-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:12px}\n  .kc-dow{font-size:11px;color:#9ca3af;text-align:center;padding:4px 0;font-weight:600}\n  .kc-day{aspect-ratio:1;display:flex;align-items:center;justify-content:center;border-radius:8px;font-size:13px;color:#111}\n  .kc-avail{background:#f9fafb;border:1px solid #e5e7eb}\n  .kc-booked{background:#e5e7eb;color:#6b7280;text-decoration:line-through}\n  .kc-past{color:#d1d5db}\n  .kc-today{border:2px solid #3b82f6!important;font-weight:700}\n  .kc-legend{display:flex;gap:14px;font-size:12px;color:#6b7280;margin-top:4px;margin-bottom:10px}\n  .kc-leg{display:flex;align-items:center;gap:5px}\n  .kc-dot{width:12px;height:12px;border-radius:3px;flex-shrink:0}\n  .kc-notice{font-size:12px;color:#6b7280;margin-top:10px}\n  \u003c\/style\u003e\n  \u003cdiv class=\"kc-wrap\"\u003e\n    \u003cdiv class=\"kc-head\"\u003e\n      \u003cdiv class=\"kc-htitle\" id=\"kc-monthlabel\"\u003e\u003c\/div\u003e\n      \u003cdiv class=\"kc-nav\"\u003e\n        \u003cbutton onclick=\"kcPrev()\"\u003e\u0026#8592;\u003c\/button\u003e\n        \u003cbutton onclick=\"kcNext()\"\u003e\u0026#8594;\u003c\/button\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"kc-status\" id=\"kc-status\"\u003eLoading...\u003c\/div\u003e\n    \u003cdiv class=\"kc-grid\" id=\"kc-grid\"\u003e\u003c\/div\u003e\n    \u003cdiv class=\"kc-legend\"\u003e\n    \u003cdiv class=\"kc-notice\"\u003eBookings for 30+ nights only\u003c\/div\u003e\n  \u003c\/div\u003e`;\n\n  function pd(s){return new Date(+s.slice(0,4),+s.slice(4,6)-1,+s.slice(6,8));}\n  function isBooked(d){for(var r of bookedRanges){if(d\u003e=r.start\u0026\u0026d\u003cr.end)return true;}return false;}\n\n  function renderCal(){\n    document.getElementById(\"kc-monthlabel\").textContent=MN[cm]+\" \"+cy;\n    var g=document.getElementById(\"kc-grid\");\n    g.innerHTML=\"\";\n    DN.forEach(function(d){var e=document.createElement(\"div\");e.className=\"kc-dow\";e.textContent=d;g.appendChild(e);});\n    var first=new Date(cy,cm,1).getDay();\n    var total=new Date(cy,cm+1,0).getDate();\n    var today=new Date();today.setHours(0,0,0,0);\n    for(var i=0;i\u003cfirst;i++){var e=document.createElement(\"div\");e.className=\"kc-day\";g.appendChild(e);}\n    for(var d=1;d\u003c=total;d++){\n      var date=new Date(cy,cm,d);\n      var e=document.createElement(\"div\");\n      e.textContent=d;\n      if(date\u003ctoday){e.className=\"kc-day kc-past\";}\n      else if(isBooked(date)){e.className=\"kc-day kc-booked\";}\n      else{e.className=\"kc-day kc-avail\";}\n      if(date.getTime()===today.getTime())e.classList.add(\"kc-today\");\n      g.appendChild(e);\n    }\n  }\n\n  window.kcPrev=function(){cm--;if(cm\u003c0){cm=11;cy--;}renderCal();};\n  window.kcNext=function(){cm++;if(cm\u003e11){cm=0;cy++;}renderCal();};\n\n  fetch(WORKER+\"\/?url=\"+encodeURIComponent(ICAL_URL))\n    .then(function(r){return r.text();})\n    .then(function(text){\n      var lines=text.replace(\/\\r\\n\/g,\"\\n\").replace(\/\\r\/g,\"\\n\").split(\"\\n\");\n      var inEv=false,ds=null,de=null;\n      lines.forEach(function(line){\n        if(line===\"BEGIN:VEVENT\"){inEv=true;ds=null;de=null;}\n        else if(line===\"END:VEVENT\"){if(inEv\u0026\u0026ds\u0026\u0026de)bookedRanges.push({start:ds,end:de});inEv=false;}\n        else if(inEv){\n          var m=line.match(\/^DTSTART[^:]*:(\\d{8})\/);\n          var m2=line.match(\/^DTEND[^:]*:(\\d{8})\/);\n          if(m)ds=pd(m[1]);\n          if(m2)de=pd(m2[1]);\n        }\n      });\n      document.getElementById(\"kc-status\").textContent=\"Contact us for details\";\n      renderCal();\n    })\n    .catch(function(e){\n      document.getElementById(\"kc-status\").textContent=\"\";\n      renderCal();\n    });\n\n  renderCal();\n})();\n\u003c\/script\u003e\n","brand":"Kolette Home","offers":[{"title":"Default Title","offer_id":42514928369850,"sku":"","price":0.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0605\/9504\/4538\/files\/JN63A_Kolette_Home_Living_Room.jpg?v=1776671499"},{"product_id":"taipei-rental-monthly-apartment-xy256","title":"Comfy 2-Bedroom Home (XY256)","description":"\u003cp\u003e\u003cspan style=\"font-weight: 400;\"\u003eBrand new furniture and renovations\u003c\/span\u003e, this stylish apartment is bright and inviting, ideal for comfortable living. There is high speed wifi offered and a working desk provided in each bedroom. Our home\u003cspan style=\"font-weight: 400;\"\u003e is \u003cspan\u003eright next to\u003c\/span\u003e\u003c\/span\u003e MRT Xinyi Anhe station,\u003cspan style=\"font-weight: 400;\"\u003eand is in downtown Taipei, \u003c\/span\u003ewhich give passengers the best convenience to explore the city.\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003ch3\u003e\u003cstrong\u003eSize\u003c\/strong\u003e\u003c\/h3\u003e\n\u003cp\u003e28 ping or 92 ㎡ \/ 996 sqft\u003c\/p\u003e\n\u003ch3\u003e\u003cstrong\u003eFeatures\u003c\/strong\u003e\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e2 bedrooms and 1 bathroom\u003c\/li\u003e\n\u003cli\u003e1-minute walk to \u003cspan style=\"color: #fa6a4d;\"\u003eMRT Xinyi Anhe Station \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003eElevator\u003c\/li\u003e\n\u003cli\u003eTV\u003c\/li\u003e\n\u003cli\u003eWifi\u003c\/li\u003e\n\u003cli\u003eMedia Streamer\u003c\/li\u003e\n\u003cli\u003eAir Conditioner \u003c\/li\u003e\n\u003cli\u003eBed (\u003cspan\u003e150 x 188cm)\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003eCooking Stove\u003c\/li\u003e\n\u003cli\u003eMicrowave \u003c\/li\u003e\n\u003cli\u003eWasher\u003c\/li\u003e\n\u003cli\u003eDryer \u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3 class=\"p3\"\u003e\u003cb\u003eInterested in Renting?\u003c\/b\u003e\u003c\/h3\u003e\n\u003cp class=\"p3\"\u003e\u003cmeta charset=\"utf-8\"\u003eContact us for more information via our official LINE account, by email, or through the contact form:\u003c\/p\u003e\n\u003cul class=\"ul1\"\u003e\n\u003cli class=\"li3\"\u003e\u003cspan class=\"s1\"\u003e\u003ca href=\"https:\/\/lin.ee\/Q7g9PtG\" target=\"_blank\" rel=\"noopener\"\u003e\u003cspan class=\"s2\"\u003e\u003cb\u003eLINE:\u003c\/b\u003e @kolette\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/li\u003e\n\u003cli class=\"li3\"\u003e\n\u003cspan class=\"s1\"\u003e\u003c\/span\u003e\u003cb\u003eEmail:\u003c\/b\u003e contact@kolettehome.com\u003c\/li\u003e\n\u003cli class=\"li3\"\u003e\u003cspan class=\"s1\"\u003e\u003ca href=\"https:\/\/kolettehome.com\/pages\/contact\"\u003e\u003cspan class=\"s2\"\u003e\u003cb\u003eContact form\u003c\/b\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cdiv id=\"kc-cal\"\u003e\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  var WORKER = \"https:\/\/ical-proxy.aidantpe.workers.dev\";\n  var ICAL_URL = \"https:\/\/www.airbnb.com.tw\/calendar\/ical\/1191065471736048608.ics?t=4e06f6b743694bf08e2be61605a0a172\";\n\n  var bookedRanges=[];\n  var cy=new Date().getFullYear();\n  var cm=new Date().getMonth();\n  var MN=[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"];\n  var DN=[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"];\n\n  var wrap=document.getElementById(\"kc-cal\");\n  wrap.innerHTML=`\n  \u003cstyle\u003e\n  .kc-wrap{font-family:sans-serif;margin:40px 0;border-top:2px solid #e5e7eb;padding-top:30px}\n  .kc-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}\n  .kc-htitle{font-size:1.1rem;font-weight:700;color:#111}\n  .kc-nav button{background:#f3f4f6;border:none;border-radius:8px;padding:6px 14px;cursor:pointer;font-size:14px;margin-left:6px}\n  .kc-nav button:hover{background:#e5e7eb}\n  .kc-status{font-size:12px;color:#6b7280;margin-bottom:12px}\n  .kc-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:12px}\n  .kc-dow{font-size:11px;color:#9ca3af;text-align:center;padding:4px 0;font-weight:600}\n  .kc-day{aspect-ratio:1;display:flex;align-items:center;justify-content:center;border-radius:8px;font-size:13px;color:#111}\n  .kc-avail{background:#f9fafb;border:1px solid #e5e7eb}\n  .kc-booked{background:#e5e7eb;color:#6b7280;text-decoration:line-through}\n  .kc-past{color:#d1d5db}\n  .kc-today{border:2px solid #3b82f6!important;font-weight:700}\n  .kc-legend{display:flex;gap:14px;font-size:12px;color:#6b7280;margin-top:4px;margin-bottom:10px}\n  .kc-leg{display:flex;align-items:center;gap:5px}\n  .kc-dot{width:12px;height:12px;border-radius:3px;flex-shrink:0}\n  .kc-notice{font-size:12px;color:#6b7280;margin-top:10px}\n  \u003c\/style\u003e\n  \u003cdiv class=\"kc-wrap\"\u003e\n    \u003cdiv class=\"kc-head\"\u003e\n      \u003cdiv class=\"kc-htitle\" id=\"kc-monthlabel\"\u003e\u003c\/div\u003e\n      \u003cdiv class=\"kc-nav\"\u003e\n        \u003cbutton onclick=\"kcPrev()\"\u003e\u0026#8592;\u003c\/button\u003e\n        \u003cbutton onclick=\"kcNext()\"\u003e\u0026#8594;\u003c\/button\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"kc-status\" id=\"kc-status\"\u003eLoading...\u003c\/div\u003e\n    \u003cdiv class=\"kc-grid\" id=\"kc-grid\"\u003e\u003c\/div\u003e\n    \u003cdiv class=\"kc-legend\"\u003e\n    \u003cdiv class=\"kc-notice\"\u003eBookings for 30+ nights only\u003c\/div\u003e\n  \u003c\/div\u003e`;\n\n  function pd(s){return new Date(+s.slice(0,4),+s.slice(4,6)-1,+s.slice(6,8));}\n  function isBooked(d){for(var r of bookedRanges){if(d\u003e=r.start\u0026\u0026d\u003cr.end)return true;}return false;}\n\n  function renderCal(){\n    document.getElementById(\"kc-monthlabel\").textContent=MN[cm]+\" \"+cy;\n    var g=document.getElementById(\"kc-grid\");\n    g.innerHTML=\"\";\n    DN.forEach(function(d){var e=document.createElement(\"div\");e.className=\"kc-dow\";e.textContent=d;g.appendChild(e);});\n    var first=new Date(cy,cm,1).getDay();\n    var total=new Date(cy,cm+1,0).getDate();\n    var today=new Date();today.setHours(0,0,0,0);\n    for(var i=0;i\u003cfirst;i++){var e=document.createElement(\"div\");e.className=\"kc-day\";g.appendChild(e);}\n    for(var d=1;d\u003c=total;d++){\n      var date=new Date(cy,cm,d);\n      var e=document.createElement(\"div\");\n      e.textContent=d;\n      if(date\u003ctoday){e.className=\"kc-day kc-past\";}\n      else if(isBooked(date)){e.className=\"kc-day kc-booked\";}\n      else{e.className=\"kc-day kc-avail\";}\n      if(date.getTime()===today.getTime())e.classList.add(\"kc-today\");\n      g.appendChild(e);\n    }\n  }\n\n  window.kcPrev=function(){cm--;if(cm\u003c0){cm=11;cy--;}renderCal();};\n  window.kcNext=function(){cm++;if(cm\u003e11){cm=0;cy++;}renderCal();};\n\n  fetch(WORKER+\"\/?url=\"+encodeURIComponent(ICAL_URL))\n    .then(function(r){return r.text();})\n    .then(function(text){\n      var lines=text.replace(\/\\r\\n\/g,\"\\n\").replace(\/\\r\/g,\"\\n\").split(\"\\n\");\n      var inEv=false,ds=null,de=null;\n      lines.forEach(function(line){\n        if(line===\"BEGIN:VEVENT\"){inEv=true;ds=null;de=null;}\n        else if(line===\"END:VEVENT\"){if(inEv\u0026\u0026ds\u0026\u0026de)bookedRanges.push({start:ds,end:de});inEv=false;}\n        else if(inEv){\n          var m=line.match(\/^DTSTART[^:]*:(\\d{8})\/);\n          var m2=line.match(\/^DTEND[^:]*:(\\d{8})\/);\n          if(m)ds=pd(m[1]);\n          if(m2)de=pd(m2[1]);\n        }\n      });\n      document.getElementById(\"kc-status\").textContent=\"Contact us for details\";\n      renderCal();\n    })\n    .catch(function(e){\n      document.getElementById(\"kc-status\").textContent=\"\";\n      renderCal();\n    });\n\n  renderCal();\n})();\n\u003c\/script\u003e\n","brand":"Kolette Home","offers":[{"title":"Default Title","offer_id":44300996870330,"sku":null,"price":0.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0605\/9504\/4538\/files\/XY256_Kolette_Home_Living_Room.jpg?v=1776503135"},{"product_id":"taipei-rental-monthly-apartment-sw2","title":"Sunlight 2-Bedroom Home with Elevator (SW2)","description":"\u003cp\u003e\u003cspan style=\"font-weight: 400;\"\u003eNewly renovated 2-bedroom home with a bright and cozy interior design. Featuring great natural lights, furniture and renovations, this home is new and cozy at the same time. It nestles to MRT station which gives city dwellers great convenience. The bathroom with a large bathtub provide the best relaxing time in a day.\u003c\/span\u003e\u003c\/p\u003e\n\u003ch3\u003e\u003cstrong\u003eSize\u003c\/strong\u003e\u003c\/h3\u003e\n\u003cp\u003e\u003cspan style=\"font-weight: 400;\"\u003e25 ping \/ 83 ㎡ \/ 890 sqft\u003c\/span\u003e\u003c\/p\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e2 double bedrooms\u003c\/li\u003e\n\u003cli\u003e1 bathroom\u003c\/li\u003e\n\u003cli\u003e8 minutes walk from \u003cspan style=\"color: #4b7dfa;\"\u003eMRT Zhongxiao Dunhua Station\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003eTV\u003c\/li\u003e\n\u003cli\u003eWifi\u003c\/li\u003e\n\u003cli\u003eMedia Streamer\u003c\/li\u003e\n\u003cli\u003eAir Conditioner \u003c\/li\u003e\n\u003cli\u003eDouble Bed (\u003cspan\u003e150 x 188cm)\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003eCooking Stove\u003c\/li\u003e\n\u003cli\u003eMicrowave \u003c\/li\u003e\n\u003cli\u003eWasher\u003cbr\u003e\n\u003c\/li\u003e\n\u003cli\u003eDryer\u003c\/li\u003e\n\u003cli\u003eElevator\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3 class=\"p3\"\u003e\u003cb\u003eInterested in Renting?\u003c\/b\u003e\u003c\/h3\u003e\n\u003cp class=\"p3\"\u003e\u003cmeta charset=\"utf-8\"\u003eContact us for more information via our official LINE account, by email, or through the contact form:\u003c\/p\u003e\n\u003cul class=\"ul1\"\u003e\n\u003cli class=\"li3\"\u003e\u003cspan class=\"s1\"\u003e\u003ca href=\"https:\/\/lin.ee\/Q7g9PtG\" target=\"_blank\" rel=\"noopener\"\u003e\u003cspan class=\"s2\"\u003e\u003cb\u003eLINE:\u003c\/b\u003e @kolette\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/li\u003e\n\u003cli class=\"li3\"\u003e\n\u003cspan class=\"s1\"\u003e\u003c\/span\u003e\u003cb\u003eEmail:\u003c\/b\u003e contact@kolettehome.com\u003c\/li\u003e\n\u003cli class=\"li3\"\u003e\u003cspan class=\"s1\"\u003e\u003ca href=\"https:\/\/kolettehome.com\/pages\/contact\"\u003e\u003cspan class=\"s2\"\u003e\u003cb\u003eContact form\u003c\/b\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\n\n\u003cdiv id=\"kc-cal\"\u003e\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  var WORKER = \"https:\/\/ical-proxy.aidantpe.workers.dev\";\n  var ICAL_URL = \"https:\/\/www.airbnb.com.tw\/calendar\/ical\/1191065272717393295.ics?t=688e94ca5b694258b093105a406decd1\";\n\n  var bookedRanges=[];\n  var cy=new Date().getFullYear();\n  var cm=new Date().getMonth();\n  var MN=[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"];\n  var DN=[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"];\n\n  var wrap=document.getElementById(\"kc-cal\");\n  wrap.innerHTML=`\n  \u003cstyle\u003e\n  .kc-wrap{font-family:sans-serif;margin:40px 0;border-top:2px solid #e5e7eb;padding-top:30px}\n  .kc-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}\n  .kc-htitle{font-size:1.1rem;font-weight:700;color:#111}\n  .kc-nav button{background:#f3f4f6;border:none;border-radius:8px;padding:6px 14px;cursor:pointer;font-size:14px;margin-left:6px}\n  .kc-nav button:hover{background:#e5e7eb}\n  .kc-status{font-size:12px;color:#6b7280;margin-bottom:12px}\n  .kc-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:12px}\n  .kc-dow{font-size:11px;color:#9ca3af;text-align:center;padding:4px 0;font-weight:600}\n  .kc-day{aspect-ratio:1;display:flex;align-items:center;justify-content:center;border-radius:8px;font-size:13px;color:#111}\n  .kc-avail{background:#f9fafb;border:1px solid #e5e7eb}\n  .kc-booked{background:#e5e7eb;color:#6b7280;text-decoration:line-through}\n  .kc-past{color:#d1d5db}\n  .kc-today{border:2px solid #3b82f6!important;font-weight:700}\n  .kc-legend{display:flex;gap:14px;font-size:12px;color:#6b7280;margin-top:4px;margin-bottom:10px}\n  .kc-leg{display:flex;align-items:center;gap:5px}\n  .kc-dot{width:12px;height:12px;border-radius:3px;flex-shrink:0}\n  .kc-notice{font-size:12px;color:#6b7280;margin-top:10px}\n  \u003c\/style\u003e\n  \u003cdiv class=\"kc-wrap\"\u003e\n    \u003cdiv class=\"kc-head\"\u003e\n      \u003cdiv class=\"kc-htitle\" id=\"kc-monthlabel\"\u003e\u003c\/div\u003e\n      \u003cdiv class=\"kc-nav\"\u003e\n        \u003cbutton onclick=\"kcPrev()\"\u003e\u0026#8592;\u003c\/button\u003e\n        \u003cbutton onclick=\"kcNext()\"\u003e\u0026#8594;\u003c\/button\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"kc-status\" id=\"kc-status\"\u003eLoading...\u003c\/div\u003e\n    \u003cdiv class=\"kc-grid\" id=\"kc-grid\"\u003e\u003c\/div\u003e\n    \u003cdiv class=\"kc-legend\"\u003e\n    \u003cdiv class=\"kc-notice\"\u003eBookings for 30+ nights only\u003c\/div\u003e\n  \u003c\/div\u003e`;\n\n  function pd(s){return new Date(+s.slice(0,4),+s.slice(4,6)-1,+s.slice(6,8));}\n  function isBooked(d){for(var r of bookedRanges){if(d\u003e=r.start\u0026\u0026d\u003cr.end)return true;}return false;}\n\n  function renderCal(){\n    document.getElementById(\"kc-monthlabel\").textContent=MN[cm]+\" \"+cy;\n    var g=document.getElementById(\"kc-grid\");\n    g.innerHTML=\"\";\n    DN.forEach(function(d){var e=document.createElement(\"div\");e.className=\"kc-dow\";e.textContent=d;g.appendChild(e);});\n    var first=new Date(cy,cm,1).getDay();\n    var total=new Date(cy,cm+1,0).getDate();\n    var today=new Date();today.setHours(0,0,0,0);\n    for(var i=0;i\u003cfirst;i++){var e=document.createElement(\"div\");e.className=\"kc-day\";g.appendChild(e);}\n    for(var d=1;d\u003c=total;d++){\n      var date=new Date(cy,cm,d);\n      var e=document.createElement(\"div\");\n      e.textContent=d;\n      if(date\u003ctoday){e.className=\"kc-day kc-past\";}\n      else if(isBooked(date)){e.className=\"kc-day kc-booked\";}\n      else{e.className=\"kc-day kc-avail\";}\n      if(date.getTime()===today.getTime())e.classList.add(\"kc-today\");\n      g.appendChild(e);\n    }\n  }\n\n  window.kcPrev=function(){cm--;if(cm\u003c0){cm=11;cy--;}renderCal();};\n  window.kcNext=function(){cm++;if(cm\u003e11){cm=0;cy++;}renderCal();};\n\n  fetch(WORKER+\"\/?url=\"+encodeURIComponent(ICAL_URL))\n    .then(function(r){return r.text();})\n    .then(function(text){\n      var lines=text.replace(\/\\r\\n\/g,\"\\n\").replace(\/\\r\/g,\"\\n\").split(\"\\n\");\n      var inEv=false,ds=null,de=null;\n      lines.forEach(function(line){\n        if(line===\"BEGIN:VEVENT\"){inEv=true;ds=null;de=null;}\n        else if(line===\"END:VEVENT\"){if(inEv\u0026\u0026ds\u0026\u0026de)bookedRanges.push({start:ds,end:de});inEv=false;}\n        else if(inEv){\n          var m=line.match(\/^DTSTART[^:]*:(\\d{8})\/);\n          var m2=line.match(\/^DTEND[^:]*:(\\d{8})\/);\n          if(m)ds=pd(m[1]);\n          if(m2)de=pd(m2[1]);\n        }\n      });\n      document.getElementById(\"kc-status\").textContent=\"Contact us for details\";\n      renderCal();\n    })\n    .catch(function(e){\n      document.getElementById(\"kc-status\").textContent=\"\";\n      renderCal();\n    });\n\n  renderCal();\n})();\n\u003c\/script\u003e\n","brand":"Kolette Home","offers":[{"title":"Default Title","offer_id":44308638728378,"sku":null,"price":0.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0605\/9504\/4538\/files\/SW2_Kolette_Home_Living_Room.jpg?v=1776501252"},{"product_id":"taipei-rental-monthly-apartment-zs24","title":"High Floor 2-Bedroom Home (ZS24)","description":"\u003cp\u003e\u003cspan style=\"font-weight: 400;\"\u003eBrand new furniture and renovations, this home is modern, new and cozy at the same time. With great natural lights indoor and on the higher floor with an elevator, you may enjoy the city view easily. Our home is only 350 meters, around 5 minutes walk to MRT\u003cspan style=\"color: rgb(0, 0, 0);\"\u003e Station\u003c\/span\u003e, which gives city dwellers great convenience.\u003c\/span\u003e\u003c\/p\u003e\n\u003ch3\u003e\u003cstrong\u003eSize\u003c\/strong\u003e\u003c\/h3\u003e\n\u003cp\u003e\u003cspan style=\"font-weight: 400;\"\u003e20 ping \/ 66 ㎡ \/ 721 sqft\u003c\/span\u003e\u003c\/p\u003e\n\u003ch3\u003e\u003cstrong\u003eFeatures\u003c\/strong\u003e\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cspan\u003e2 bedrooms and 1 bathroom\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003e\u003cspan\u003e5-minute walk from \u003cspan style=\"color: rgb(246, 208, 15);\"\u003eMRT Zhongshan Elementary School Station\u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eTV\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eWifi\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eAir Conditioner \u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eBed (150 x 188cm)\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eA Working Desk\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eCooking Stove\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eMicrowave \u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eWasher\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003eDryer\u003c\/li\u003e\n\u003cli\u003eElevator\u003c\/li\u003e\n\u003cli\u003eBalconies\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3 class=\"p3\"\u003e\u003cb\u003eInterested in Renting?\u003c\/b\u003e\u003c\/h3\u003e\n\u003cp class=\"p3\"\u003e\u003cmeta charset=\"utf-8\"\u003eContact us for more information via our official LINE account, by email, or through the contact form:\u003c\/p\u003e\n\u003cul class=\"ul1\"\u003e\n\u003cli class=\"li3\"\u003e\u003cspan class=\"s1\"\u003e\u003ca href=\"https:\/\/lin.ee\/Q7g9PtG\" target=\"_blank\" rel=\"noopener\"\u003e\u003cspan class=\"s2\"\u003e\u003cb\u003eLINE:\u003c\/b\u003e @kolette\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/li\u003e\n\u003cli class=\"li3\"\u003e\n\u003cspan class=\"s1\"\u003e\u003c\/span\u003e\u003cb\u003eEmail:\u003c\/b\u003e contact@kolettehome.com\u003c\/li\u003e\n\u003cli class=\"li3\"\u003e\u003cspan class=\"s1\"\u003e\u003ca href=\"https:\/\/kolettehome.com\/pages\/contact\"\u003e\u003cspan class=\"s2\"\u003e\u003cb\u003eContact form\u003c\/b\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\n\u003cdiv id=\"kc-cal\"\u003e\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  var WORKER = \"https:\/\/ical-proxy.aidantpe.workers.dev\";\n  var ICAL_URL = \"https:\/\/www.airbnb.com.tw\/calendar\/ical\/1116336782980727647.ics?t=9949a471eeb541fda5d5fd104002c3cd\";\n\n  var bookedRanges=[];\n  var cy=new Date().getFullYear();\n  var cm=new Date().getMonth();\n  var MN=[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"];\n  var DN=[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"];\n\n  var wrap=document.getElementById(\"kc-cal\");\n  wrap.innerHTML=`\n  \u003cstyle\u003e\n  .kc-wrap{font-family:sans-serif;margin:40px 0;border-top:2px solid #e5e7eb;padding-top:30px}\n  .kc-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}\n  .kc-htitle{font-size:1.1rem;font-weight:700;color:#111}\n  .kc-nav button{background:#f3f4f6;border:none;border-radius:8px;padding:6px 14px;cursor:pointer;font-size:14px;margin-left:6px}\n  .kc-nav button:hover{background:#e5e7eb}\n  .kc-status{font-size:12px;color:#6b7280;margin-bottom:12px}\n  .kc-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:12px}\n  .kc-dow{font-size:11px;color:#9ca3af;text-align:center;padding:4px 0;font-weight:600}\n  .kc-day{aspect-ratio:1;display:flex;align-items:center;justify-content:center;border-radius:8px;font-size:13px;color:#111}\n  .kc-avail{background:#f9fafb;border:1px solid #e5e7eb}\n  .kc-booked{background:#e5e7eb;color:#6b7280;text-decoration:line-through}\n  .kc-past{color:#d1d5db}\n  .kc-today{border:2px solid #3b82f6!important;font-weight:700}\n  .kc-legend{display:flex;gap:14px;font-size:12px;color:#6b7280;margin-top:4px;margin-bottom:10px}\n  .kc-leg{display:flex;align-items:center;gap:5px}\n  .kc-dot{width:12px;height:12px;border-radius:3px;flex-shrink:0}\n  .kc-notice{font-size:12px;color:#6b7280;margin-top:10px}\n  \u003c\/style\u003e\n  \u003cdiv class=\"kc-wrap\"\u003e\n    \u003cdiv class=\"kc-head\"\u003e\n      \u003cdiv class=\"kc-htitle\" id=\"kc-monthlabel\"\u003e\u003c\/div\u003e\n      \u003cdiv class=\"kc-nav\"\u003e\n        \u003cbutton onclick=\"kcPrev()\"\u003e\u0026#8592;\u003c\/button\u003e\n        \u003cbutton onclick=\"kcNext()\"\u003e\u0026#8594;\u003c\/button\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"kc-status\" id=\"kc-status\"\u003eLoading...\u003c\/div\u003e\n    \u003cdiv class=\"kc-grid\" id=\"kc-grid\"\u003e\u003c\/div\u003e\n    \u003cdiv class=\"kc-legend\"\u003e\n    \u003cdiv class=\"kc-notice\"\u003eBookings for 30+ nights only\u003c\/div\u003e\n  \u003c\/div\u003e`;\n\n  function pd(s){return new Date(+s.slice(0,4),+s.slice(4,6)-1,+s.slice(6,8));}\n  function isBooked(d){for(var r of bookedRanges){if(d\u003e=r.start\u0026\u0026d\u003cr.end)return true;}return false;}\n\n  function renderCal(){\n    document.getElementById(\"kc-monthlabel\").textContent=MN[cm]+\" \"+cy;\n    var g=document.getElementById(\"kc-grid\");\n    g.innerHTML=\"\";\n    DN.forEach(function(d){var e=document.createElement(\"div\");e.className=\"kc-dow\";e.textContent=d;g.appendChild(e);});\n    var first=new Date(cy,cm,1).getDay();\n    var total=new Date(cy,cm+1,0).getDate();\n    var today=new Date();today.setHours(0,0,0,0);\n    for(var i=0;i\u003cfirst;i++){var e=document.createElement(\"div\");e.className=\"kc-day\";g.appendChild(e);}\n    for(var d=1;d\u003c=total;d++){\n      var date=new Date(cy,cm,d);\n      var e=document.createElement(\"div\");\n      e.textContent=d;\n      if(date\u003ctoday){e.className=\"kc-day kc-past\";}\n      else if(isBooked(date)){e.className=\"kc-day kc-booked\";}\n      else{e.className=\"kc-day kc-avail\";}\n      if(date.getTime()===today.getTime())e.classList.add(\"kc-today\");\n      g.appendChild(e);\n    }\n  }\n\n  window.kcPrev=function(){cm--;if(cm\u003c0){cm=11;cy--;}renderCal();};\n  window.kcNext=function(){cm++;if(cm\u003e11){cm=0;cy++;}renderCal();};\n\n  fetch(WORKER+\"\/?url=\"+encodeURIComponent(ICAL_URL))\n    .then(function(r){return r.text();})\n    .then(function(text){\n      var lines=text.replace(\/\\r\\n\/g,\"\\n\").replace(\/\\r\/g,\"\\n\").split(\"\\n\");\n      var inEv=false,ds=null,de=null;\n      lines.forEach(function(line){\n        if(line===\"BEGIN:VEVENT\"){inEv=true;ds=null;de=null;}\n        else if(line===\"END:VEVENT\"){if(inEv\u0026\u0026ds\u0026\u0026de)bookedRanges.push({start:ds,end:de});inEv=false;}\n        else if(inEv){\n          var m=line.match(\/^DTSTART[^:]*:(\\d{8})\/);\n          var m2=line.match(\/^DTEND[^:]*:(\\d{8})\/);\n          if(m)ds=pd(m[1]);\n          if(m2)de=pd(m2[1]);\n        }\n      });\n      document.getElementById(\"kc-status\").textContent=\"Contact us for details\";\n      renderCal();\n    })\n    .catch(function(e){\n      document.getElementById(\"kc-status\").textContent=\"\";\n      renderCal();\n    });\n\n  renderCal();\n})();\n\u003c\/script\u003e\n","brand":"Kolette Home","offers":[{"title":"Default Title","offer_id":44311543972026,"sku":null,"price":0.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0605\/9504\/4538\/files\/ZS24_Kolette_Home_Living_Room.png?v=1776500817"},{"product_id":"taipei-rental-monthly-apartment-taipei-yj12","title":"Xinyi 2-Bedroom Flat with Elevator (YJ12)","description":"\u003cp\u003e\u003cspan style=\"font-weight: 400;\"\u003eStylish and cozy apartment with 2 bedroom,1 living room,1 dry and wet separate bathroom, 1 kitchen and 1 balcony. Only 8 minutes walk from MRT Taipei City Hall station with foods and shops around, which gives city dwellers great convenience. Each room has a desk to WFH.\u003c\/span\u003e\u003c\/p\u003e\n\u003ch3\u003e\u003cstrong\u003eSize\u003c\/strong\u003e\u003c\/h3\u003e\n\u003cp\u003e\u003cspan style=\"font-weight: 400;\"\u003e15 ping \/ 50 ㎡ \/ 534 sqft\u003c\/span\u003e\u003c\/p\u003e\n\u003ch3\u003e\u003cstrong\u003eFeatures\u003c\/strong\u003e\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cspan\u003e2 bedrooms and 1 bathroom\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\n\u003cspan\u003e\u003cspan\u003e8-minute walk from \u003cspan style=\"color: #4b7dfa;\"\u003eMRT Taipei City Hall \u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003cspan style=\"color: #4b7dfa;\"\u003eStation \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eTV\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eWifi\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eAir Conditioner \u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003ea Double Size Bed (150 x 188cm) \u0026amp; a Single Size Bed (\u003cmeta charset=\"utf-8\"\u003e91 x 188cm)\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003e2 Working Desks\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eCooking Stove\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eMicrowave \u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cspan\u003eWasher\u003c\/span\u003e\u003c\/li\u003e\n\u003cli\u003eDryer\u003c\/li\u003e\n\u003cli\u003eElevator\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3 class=\"p3\"\u003e\u003cb\u003eInterested in Renting?\u003c\/b\u003e\u003c\/h3\u003e\n\u003cp class=\"p3\"\u003e\u003cmeta charset=\"utf-8\"\u003eContact us for more information via our official LINE account, by email, or through the contact form:\u003c\/p\u003e\n\u003cul class=\"ul1\"\u003e\n\u003cli class=\"li3\"\u003e\u003cspan class=\"s1\"\u003e\u003ca href=\"https:\/\/lin.ee\/Q7g9PtG\" target=\"_blank\" rel=\"noopener\"\u003e\u003cspan class=\"s2\"\u003e\u003cb\u003eLINE:\u003c\/b\u003e @kolette\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/li\u003e\n\u003cli class=\"li3\"\u003e\n\u003cspan class=\"s1\"\u003e\u003c\/span\u003e\u003cb\u003eEmail:\u003c\/b\u003e contact@kolettehome.com\u003c\/li\u003e\n\u003cli class=\"li3\"\u003e\u003cspan class=\"s1\"\u003e\u003ca href=\"https:\/\/kolettehome.com\/pages\/contact\"\u003e\u003cspan class=\"s2\"\u003e\u003cb\u003eContact form\u003c\/b\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\n\u003cdiv id=\"kc-cal\"\u003e\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  var WORKER = \"https:\/\/ical-proxy.aidantpe.workers.dev\";\n  var ICAL_URL = \"https:\/\/www.airbnb.com.tw\/calendar\/ical\/1160638803334282962.ics?t=a676753f92204c5e8af7fc6a45b2b6af\";\n\n  var bookedRanges=[];\n  var cy=new Date().getFullYear();\n  var cm=new Date().getMonth();\n  var MN=[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"];\n  var DN=[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"];\n\n  var wrap=document.getElementById(\"kc-cal\");\n  wrap.innerHTML=`\n  \u003cstyle\u003e\n  .kc-wrap{font-family:sans-serif;margin:40px 0;border-top:2px solid #e5e7eb;padding-top:30px}\n  .kc-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}\n  .kc-htitle{font-size:1.1rem;font-weight:700;color:#111}\n  .kc-nav button{background:#f3f4f6;border:none;border-radius:8px;padding:6px 14px;cursor:pointer;font-size:14px;margin-left:6px}\n  .kc-nav button:hover{background:#e5e7eb}\n  .kc-status{font-size:12px;color:#6b7280;margin-bottom:12px}\n  .kc-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:12px}\n  .kc-dow{font-size:11px;color:#9ca3af;text-align:center;padding:4px 0;font-weight:600}\n  .kc-day{aspect-ratio:1;display:flex;align-items:center;justify-content:center;border-radius:8px;font-size:13px;color:#111}\n  .kc-avail{background:#f9fafb;border:1px solid #e5e7eb}\n  .kc-booked{background:#e5e7eb;color:#6b7280;text-decoration:line-through}\n  .kc-past{color:#d1d5db}\n  .kc-today{border:2px solid #3b82f6!important;font-weight:700}\n  .kc-legend{display:flex;gap:14px;font-size:12px;color:#6b7280;margin-top:4px;margin-bottom:10px}\n  .kc-leg{display:flex;align-items:center;gap:5px}\n  .kc-dot{width:12px;height:12px;border-radius:3px;flex-shrink:0}\n  .kc-notice{font-size:12px;color:#6b7280;margin-top:10px}\n  \u003c\/style\u003e\n  \u003cdiv class=\"kc-wrap\"\u003e\n    \u003cdiv class=\"kc-head\"\u003e\n      \u003cdiv class=\"kc-htitle\" id=\"kc-monthlabel\"\u003e\u003c\/div\u003e\n      \u003cdiv class=\"kc-nav\"\u003e\n        \u003cbutton onclick=\"kcPrev()\"\u003e\u0026#8592;\u003c\/button\u003e\n        \u003cbutton onclick=\"kcNext()\"\u003e\u0026#8594;\u003c\/button\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"kc-status\" id=\"kc-status\"\u003eLoading...\u003c\/div\u003e\n    \u003cdiv class=\"kc-grid\" id=\"kc-grid\"\u003e\u003c\/div\u003e\n    \u003cdiv class=\"kc-legend\"\u003e\n    \u003cdiv class=\"kc-notice\"\u003eBookings for 30+ nights only\u003c\/div\u003e\n  \u003c\/div\u003e`;\n\n  function pd(s){return new Date(+s.slice(0,4),+s.slice(4,6)-1,+s.slice(6,8));}\n  function isBooked(d){for(var r of bookedRanges){if(d\u003e=r.start\u0026\u0026d\u003cr.end)return true;}return false;}\n\n  function renderCal(){\n    document.getElementById(\"kc-monthlabel\").textContent=MN[cm]+\" \"+cy;\n    var g=document.getElementById(\"kc-grid\");\n    g.innerHTML=\"\";\n    DN.forEach(function(d){var e=document.createElement(\"div\");e.className=\"kc-dow\";e.textContent=d;g.appendChild(e);});\n    var first=new Date(cy,cm,1).getDay();\n    var total=new Date(cy,cm+1,0).getDate();\n    var today=new Date();today.setHours(0,0,0,0);\n    for(var i=0;i\u003cfirst;i++){var e=document.createElement(\"div\");e.className=\"kc-day\";g.appendChild(e);}\n    for(var d=1;d\u003c=total;d++){\n      var date=new Date(cy,cm,d);\n      var e=document.createElement(\"div\");\n      e.textContent=d;\n      if(date\u003ctoday){e.className=\"kc-day kc-past\";}\n      else if(isBooked(date)){e.className=\"kc-day kc-booked\";}\n      else{e.className=\"kc-day kc-avail\";}\n      if(date.getTime()===today.getTime())e.classList.add(\"kc-today\");\n      g.appendChild(e);\n    }\n  }\n\n  window.kcPrev=function(){cm--;if(cm\u003c0){cm=11;cy--;}renderCal();};\n  window.kcNext=function(){cm++;if(cm\u003e11){cm=0;cy++;}renderCal();};\n\n  fetch(WORKER+\"\/?url=\"+encodeURIComponent(ICAL_URL))\n    .then(function(r){return r.text();})\n    .then(function(text){\n      var lines=text.replace(\/\\r\\n\/g,\"\\n\").replace(\/\\r\/g,\"\\n\").split(\"\\n\");\n      var inEv=false,ds=null,de=null;\n      lines.forEach(function(line){\n        if(line===\"BEGIN:VEVENT\"){inEv=true;ds=null;de=null;}\n        else if(line===\"END:VEVENT\"){if(inEv\u0026\u0026ds\u0026\u0026de)bookedRanges.push({start:ds,end:de});inEv=false;}\n        else if(inEv){\n          var m=line.match(\/^DTSTART[^:]*:(\\d{8})\/);\n          var m2=line.match(\/^DTEND[^:]*:(\\d{8})\/);\n          if(m)ds=pd(m[1]);\n          if(m2)de=pd(m2[1]);\n        }\n      });\n      document.getElementById(\"kc-status\").textContent=\"Contact us for details\";\n      renderCal();\n    })\n    .catch(function(e){\n      document.getElementById(\"kc-status\").textContent=\"\";\n      renderCal();\n    });\n\n  renderCal();\n})();\n\u003c\/script\u003e\n","brand":"Kolette Home","offers":[{"title":"Default Title","offer_id":44327713505466,"sku":null,"price":0.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0605\/9504\/4538\/files\/YJ12_Kolette_Home_Living_Room.jpg?v=1776497475"},{"product_id":"taipei-rental-monthly-apartment-dn7","title":"2BR, Perfect for Work and Relaxation (DN7)","description":"\u003cp\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003eStep into our urban retreat in this charming 2-bedroom, 2-bathroom apartment, ideally situated just a minute's stroll from MRT Xinyi Anhe Station. Enjoy spacious working desks for productivity, unwind with a movie on the TV, and stay connected with high-speed wifi. The air conditioner with heating ensures year-round comfort. Also cook like a chef with a full modern kitchen. Experience city living with ease in this cozy sweet home.\u003c\/span\u003e\u003c\/p\u003e\n\u003ch3\u003e\u003cstrong\u003eSize\u003c\/strong\u003e\u003c\/h3\u003e\n\u003cp\u003e17 ping \/ 58 m\u003cmeta charset=\"utf-8\"\u003e\u003csup\u003e2\u003c\/sup\u003e \/ 605 sqft\u003c\/p\u003e\n\u003ch3\u003e\u003cstrong\u003eFeatures\u003c\/strong\u003e\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e2 bedrooms and 2 bathroom\u003cbr\u003e\n\u003c\/li\u003e\n\u003cli\u003e1-minute walk to \u003cspan style=\"color: #fa6a4d;\"\u003eMRT Xinyi Anhe Station \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003eNo Elevator (3F)\u003c\/li\u003e\n\u003cli\u003eWorking desks\u003cbr\u003e\n\u003c\/li\u003e\n\u003cli\u003eTV\u003c\/li\u003e\n\u003cli\u003eWifi (300mbp)\u003c\/li\u003e\n\u003cli\u003eMedia Streamer\u003c\/li\u003e\n\u003cli\u003eAir Conditioner (with heater function)\u003c\/li\u003e\n\u003cli\u003eBed (\u003cspan\u003e150 x 188cm)\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003eCooking Stove\u003c\/li\u003e\n\u003cli\u003eMicrowave \u003c\/li\u003e\n\u003cli\u003eWasher\u003c\/li\u003e\n\u003cli\u003eDryer \u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cul\u003e\u003c\/ul\u003e\n\u003ch3 class=\"p3\"\u003e\u003cb\u003eInterested in Renting?\u003c\/b\u003e\u003c\/h3\u003e\n\u003cp class=\"p3\"\u003e\u003cmeta charset=\"utf-8\"\u003eContact us for more information via our official LINE account, by email, or through the contact form:\u003c\/p\u003e\n\u003cul class=\"ul1\"\u003e\n\u003cli class=\"li3\"\u003e\u003cspan class=\"s1\"\u003e\u003ca href=\"https:\/\/lin.ee\/Q7g9PtG\" rel=\"noopener\" target=\"_blank\"\u003e\u003cspan class=\"s2\"\u003e\u003cb\u003eLINE:\u003c\/b\u003e @kolette\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/li\u003e\n\u003cli class=\"li3\"\u003e\n\u003cspan class=\"s1\"\u003e\u003c\/span\u003e\u003cb\u003eEmail:\u003c\/b\u003e contact@kolettehome.com\u003c\/li\u003e\n\u003cli class=\"li3\"\u003e\u003cspan class=\"s1\"\u003e\u003ca href=\"https:\/\/kolettehome.com\/pages\/contact\"\u003e\u003cspan class=\"s2\"\u003e\u003cb\u003eContact form\u003c\/b\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\n\u003cdiv id=\"kc-cal\"\u003e\u003c\/div\u003e\n\u003cscript\u003e\n(function(){\n  var WORKER = \"https:\/\/ical-proxy.aidantpe.workers.dev\";\n  var ICAL_URL = \"https:\/\/www.airbnb.com.tw\/calendar\/ical\/1433921154913441106.ics?t=511272a4b33c4f91a2fb1a985c8c4770\";\n\n  var bookedRanges=[];\n  var cy=new Date().getFullYear();\n  var cm=new Date().getMonth();\n  var MN=[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"];\n  var DN=[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"];\n\n  var wrap=document.getElementById(\"kc-cal\");\n  wrap.innerHTML=`\n  \u003cstyle\u003e\n  .kc-wrap{font-family:sans-serif;margin:40px 0;border-top:2px solid #e5e7eb;padding-top:30px}\n  .kc-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}\n  .kc-htitle{font-size:1.1rem;font-weight:700;color:#111}\n  .kc-nav button{background:#f3f4f6;border:none;border-radius:8px;padding:6px 14px;cursor:pointer;font-size:14px;margin-left:6px}\n  .kc-nav button:hover{background:#e5e7eb}\n  .kc-status{font-size:12px;color:#6b7280;margin-bottom:12px}\n  .kc-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:12px}\n  .kc-dow{font-size:11px;color:#9ca3af;text-align:center;padding:4px 0;font-weight:600}\n  .kc-day{aspect-ratio:1;display:flex;align-items:center;justify-content:center;border-radius:8px;font-size:13px;color:#111}\n  .kc-avail{background:#f9fafb;border:1px solid #e5e7eb}\n  .kc-booked{background:#e5e7eb;color:#6b7280;text-decoration:line-through}\n  .kc-past{color:#d1d5db}\n  .kc-today{border:2px solid #3b82f6!important;font-weight:700}\n  .kc-legend{display:flex;gap:14px;font-size:12px;color:#6b7280;margin-top:4px;margin-bottom:10px}\n  .kc-leg{display:flex;align-items:center;gap:5px}\n  .kc-dot{width:12px;height:12px;border-radius:3px;flex-shrink:0}\n  .kc-notice{font-size:12px;color:#6b7280;margin-top:10px}\n  \u003c\/style\u003e\n  \u003cdiv class=\"kc-wrap\"\u003e\n    \u003cdiv class=\"kc-head\"\u003e\n      \u003cdiv class=\"kc-htitle\" id=\"kc-monthlabel\"\u003e\u003c\/div\u003e\n      \u003cdiv class=\"kc-nav\"\u003e\n        \u003cbutton onclick=\"kcPrev()\"\u003e\u0026#8592;\u003c\/button\u003e\n        \u003cbutton onclick=\"kcNext()\"\u003e\u0026#8594;\u003c\/button\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"kc-status\" id=\"kc-status\"\u003eLoading...\u003c\/div\u003e\n    \u003cdiv class=\"kc-grid\" id=\"kc-grid\"\u003e\u003c\/div\u003e\n    \u003cdiv class=\"kc-notice\"\u003eBookings for 30+ nights only\u003c\/div\u003e\n  \u003c\/div\u003e`;\n\n  function pd(s){return new Date(+s.slice(0,4),+s.slice(4,6)-1,+s.slice(6,8));}\n  function isBooked(d){for(var r of bookedRanges){if(d\u003e=r.start\u0026\u0026d\u003cr.end)return true;}return false;}\n\n  function renderCal(){\n    document.getElementById(\"kc-monthlabel\").textContent=MN[cm]+\" \"+cy;\n    var g=document.getElementById(\"kc-grid\");\n    g.innerHTML=\"\";\n    DN.forEach(function(d){var e=document.createElement(\"div\");e.className=\"kc-dow\";e.textContent=d;g.appendChild(e);});\n    var first=new Date(cy,cm,1).getDay();\n    var total=new Date(cy,cm+1,0).getDate();\n    var today=new Date();today.setHours(0,0,0,0);\n    for(var i=0;i\u003cfirst;i++){var e=document.createElement(\"div\");e.className=\"kc-day\";g.appendChild(e);}\n    for(var d=1;d\u003c=total;d++){\n      var date=new Date(cy,cm,d);\n      var e=document.createElement(\"div\");\n      e.textContent=d;\n      if(date\u003ctoday){e.className=\"kc-day kc-past\";}\n      else if(isBooked(date)){e.className=\"kc-day kc-booked\";}\n      else{e.className=\"kc-day kc-avail\";}\n      if(date.getTime()===today.getTime())e.classList.add(\"kc-today\");\n      g.appendChild(e);\n    }\n  }\n\n  window.kcPrev=function(){cm--;if(cm\u003c0){cm=11;cy--;}renderCal();};\n  window.kcNext=function(){cm++;if(cm\u003e11){cm=0;cy++;}renderCal();};\n\n  fetch(WORKER+\"\/?url=\"+encodeURIComponent(ICAL_URL))\n    .then(function(r){return r.text();})\n    .then(function(text){\n      var lines=text.replace(\/\\r\\n\/g,\"\\n\").replace(\/\\r\/g,\"\\n\").split(\"\\n\");\n      var inEv=false,ds=null,de=null;\n      lines.forEach(function(line){\n        if(line===\"BEGIN:VEVENT\"){inEv=true;ds=null;de=null;}\n        else if(line===\"END:VEVENT\"){if(inEv\u0026\u0026ds\u0026\u0026de)bookedRanges.push({start:ds,end:de});inEv=false;}\n        else if(inEv){\n          var m=line.match(\/^DTSTART[^:]*:(\\d{8})\/);\n          var m2=line.match(\/^DTEND[^:]*:(\\d{8})\/);\n          if(m)ds=pd(m[1]);\n          if(m2)de=pd(m2[1]);\n        }\n      });\n      document.getElementById(\"kc-status\").textContent=\"Contact us for details\";\n      renderCal();\n    })\n    .catch(function(e){\n      document.getElementById(\"kc-status\").textContent=\"\";\n      renderCal();\n    });\n\n  renderCal();\n})();\n\u003c\/script\u003e","brand":"Kolette Home","offers":[{"title":"Default Title","offer_id":45001732948154,"sku":null,"price":0.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0605\/9504\/4538\/files\/dn7_Kolette_Home_living_room.jpg?v=1776489854"}],"url":"https:\/\/kolettehome.com\/collections\/taipei-2-bedroom-monthly-rentals.oembed?page=2","provider":"Kolette Home","version":"1.0","type":"link"}