{"id":8248,"date":"2026-10-30T07:58:16","date_gmt":"2026-10-30T07:58:16","guid":{"rendered":"https:\/\/rosevilleconfinement.com\/?p=8248"},"modified":"2026-11-03T06:55:09","modified_gmt":"2026-11-03T06:55:09","slug":"spa-muslimah-kajang-putrajaya-cyberjaya","status":"publish","type":"post","link":"https:\/\/rosevilleconfinement.com\/en\/spa-muslimah-kajang-putrajaya-cyberjaya\/","title":{"rendered":"Spa Muslimah Putrajaya, Kajang dan Cyberjaya: Jarak ke Bangi Gateway, Laluan dan Cara Memilih"},"content":{"rendered":"<div data-no-translation><div class=\"rv-teaser\" style=\"max-width:760px;margin:0 auto 56px;font-family:Montserrat,system-ui,sans-serif;color:#2b2b2b\"><style>.category .more-link{display:none}<\/style><a href=\"https:\/\/rosevilleconfinement.com\/en\/spa-muslimah-kajang-putrajaya-cyberjaya\/\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/rosevilleconfinement.com\/wp-content\/uploads\/2026\/10\/spa-muslimah-kajang-putrajaya-cyberjaya-infographic-summary-en.jpg\" alt=\"1-minute summary: Muslimah spa near Putrajaya, Kajang and Cyberjaya. 1) Kajang 13 min, Putrajaya 16 min, Cyberjaya 29 min, no traffic. 2) Semenyih 17, Seri Kembangan 19, Cheras 20, Dengkil and Balakong 21, Nilai 22 min. 3) Female therapists, private space; only female staff in the spa. 4) Open to all women, including mothers in confinement at home. 5) Pregnant or postnatal? Ask your doctor first; tell the therapist. 6) Book on WhatsApp; pregnant mums can ask about a villa visit.\" width=\"1200\" height=\"630\" style=\"display:block;width:100%;height:auto;border-radius:16px\"><\/a><p style=\"font-size:17px;line-height:1.7;margin:18px 0 10px\">Looking for a muslimah spa near Putrajaya, Kajang or Cyberjaya? See driving times and routes to Roseville Muslimah Spa in Bangi Gateway, plus a checklist.<\/p><p style=\"margin:0\"><a href=\"https:\/\/rosevilleconfinement.com\/en\/spa-muslimah-kajang-putrajaya-cyberjaya\/\" style=\"font-weight:700;color:#2f6b5a;text-decoration:underline\">Read the full guide<\/a><\/p><\/div><\/div>\n<!--more-->\n<!--noteaser-->\n<div data-no-translation>\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\"><link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin><link rel=\"stylesheet\" href=\"https:\/\/fonts.googleapis.com\/css2?family=Montserrat:wght@400;500;600;700;800&amp;display=swap\"><style>.rv2{--latar:#FBF8F4;--kad:#fff;--blush:#F3DCD7;--blush2:#F9ECE8;--mawar:#C27C7A;--mawar-tua:#9A5654;--sage:#DCE8DF;--sage2:#EEF4EF;--euc:#2F6B5E;--euc-tua:#24564B;--emas:#C9A46A;--teks:#2E2A2B;--sub:#5F5658;--garis:#EDE3DD;--wa:#25D366;--wa-tua:#0F7A3F;--serif:\"Montserrat\",system-ui,-apple-system,\"Segoe UI\",sans-serif;--sans:\"Montserrat\",system-ui,-apple-system,\"Segoe UI\",sans-serif;--r:22px;--rk:14px;--bayang:0 12px 34px rgba(46,42,43,.08);--grad:linear-gradient(100deg,#C27C7A 0%,#B58B5E 45%,#2F6B5E 100%)}.rv2,.rv2 *,.rv2 *::before,.rv2 *::after{box-sizing:border-box}.rv2{color:var(--teks);font:16.5px\/1.72 var(--sans);-webkit-font-smoothing:antialiased}.rv2 img{max-width:100%;display:block}.rv2 a{color:var(--euc)}.rv2 h1,.rv2 h2,.rv2 h3{line-height:1.15;margin:0 0 .4em}.rv2 h1,.rv2 h2{font-family:var(--serif);font-weight:700;letter-spacing:-.025em}.rv2 h1{font-size:clamp(32px,4.5vw,54px);line-height:1.12}.rv2 h2{font-size:clamp(25px,2.9vw,36px)}.rv2 h3{font-size:18px;font-weight:700;letter-spacing:-.01em}.rv2 .wrap{max-width:1180px;margin:0 auto;padding:0 20px;position:relative}.rv2 .eye{font-size:12.5px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:var(--mawar-tua);margin:0 0 10px}.rv2 .lead{font-size:19px;color:var(--sub);max-width:58ch}.rv2 .pengantar{color:var(--sub);max-width:68ch}.rv2 .tengah{text-align:center;margin-left:auto;margin-right:auto}.rv2 .grad{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}.rv2 .ik{flex:0 0 auto;vertical-align:middle}.rv2 .kecil-sub{font-size:13.5px;color:var(--sub)}.rv2 .kepala-laman{position:sticky;top:44px;z-index:50;padding:12px 20px 0}.rv2 .nav-pil{max-width:1180px;margin:0 auto;display:flex;align-items:center;gap:6px;background:rgba(255,255,255,.74);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid rgba(255,255,255,.9);box-shadow:0 10px 30px rgba(46,42,43,.08);border-radius:999px;padding:8px 8px 8px 16px}.rv2 .logo{display:flex;align-items:center;gap:9px;text-decoration:none;color:var(--teks);margin-right:auto}.rv2 .logo img{width:30px;height:auto}.rv2 .logo b{font-family:var(--serif);font-size:21px;font-weight:600;color:var(--mawar-tua)}.rv2 .logo small{display:block;font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--sub);margin-top:-3px}.rv2 .nav-pil nav{display:flex;gap:2px}.rv2 .nav-pil nav a{font-size:14.5px;font-weight:600;color:var(--teks);text-decoration:none;padding:8px 13px;border-radius:999px}.rv2 .nav-pil nav a:hover,.rv2 .nav-pil nav a.aktif{background:var(--blush2);color:var(--mawar-tua)}.rv2 .bahasa{font-size:13px;font-weight:700;color:var(--sub);padding:0 8px;text-decoration:none}.rv2 .menu-btn{display:none;background:none;border:0;padding:8px;color:var(--teks);cursor:pointer}.rv2 .btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font:700 15.5px\/1 var(--sans);border-radius:999px;padding:14px 22px;text-decoration:none;border:2px solid transparent;cursor:pointer;transition:transform .15s,box-shadow .15s,background .15s}.rv2 .btn:hover{transform:translateY(-1px)}.rv2 .btn:focus-visible,.rv2 a:focus-visible,.rv2 button:focus-visible,.rv2 input:focus-visible,.rv2 select:focus-visible{outline:3px solid var(--emas);outline-offset:2px}.rv2 .btn-utama{background:var(--euc);color:#fff;box-shadow:0 8px 20px rgba(47,107,94,.25)}.rv2 .btn-utama:hover{background:var(--euc-tua)}.rv2 .btn-kedua{background:#fff;color:var(--teks);border-color:var(--garis)}.rv2 .btn-garis{background:transparent;color:var(--euc);border-color:var(--euc)}.rv2 .btn-wa{background:var(--wa);color:#063D1E}.rv2 .btn-wa:hover{background:#1FBF5B}.rv2 .btn-utama-wa{background:var(--wa);color:#063D1E;box-shadow:0 8px 20px rgba(37,211,102,.28)}.rv2 .btn.kecil{padding:10px 15px;font-size:14px}.rv2 .btn.penuh{width:100%}.rv2 .cta-baris{display:flex;gap:10px;flex-wrap:wrap;margin:22px 0 0}.rv2 .cta-baris.tengah{justify-content:center}.rv2 .pautan-anak{font-weight:700;text-decoration:none;color:var(--euc)}.rv2 .wa-teks{color:var(--wa-tua)}.rv2 .wa-teks .ik{display:none}.rv2 .hero{position:relative;overflow:hidden;padding:46px 0 70px}.rv2 .hero-grid{display:grid;grid-template-columns:1.05fr 1fr;gap:46px;align-items:center}.rv2 .hero h1{max-width:15ch}.rv2 .bukti{list-style:none;padding:0;margin:22px 0 0;display:flex;flex-wrap:wrap;gap:8px 18px;font-size:14.5px;color:var(--sub);font-weight:600}.rv2 .bukti li{display:flex;gap:6px;align-items:center}.rv2 .bukti .ik{color:var(--euc)}.rv2 .hero-vis{position:relative}.rv2 .bingkai{border-radius:var(--r);overflow:hidden;background:var(--blush2);box-shadow:var(--bayang)}.rv2 .bingkai.besar{border-radius:34px;aspect-ratio:4\/3.3}.rv2 .bingkai.besar img{width:100%;height:100%;object-fit:cover}.rv2 .bingkai img.foto{width:100%;height:100%;object-fit:cover;aspect-ratio:3\/2}.rv2 .kaca{position:absolute;background:rgba(255,255,255,.82);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid #fff;border-radius:18px;padding:12px 16px;box-shadow:var(--bayang);display:flex;flex-direction:column;font-size:13px;color:var(--sub)}.rv2 .kaca b{font-size:20px;color:var(--teks);display:flex;align-items:center;gap:4px}.rv2 .kaca .ik{color:var(--emas)}.rv2 .k1{left:-22px;bottom:34px}.rv2 .k2{right:-14px;top:26px}.rv2 .blob{position:absolute;border-radius:50%;filter:blur(8px);z-index:-1;opacity:.85}.rv2 .hero .b1,.rv2 .kepala .b1{width:420px;height:420px;background:var(--blush);right:-120px;top:-80px}.rv2 .hero .b2,.rv2 .kepala .b2{width:300px;height:300px;background:var(--sage);left:-110px;bottom:-120px}.rv2 .ganti{display:grid;place-items:center;text-align:center;color:var(--mawar-tua);background:repeating-linear-gradient(135deg,var(--blush2),var(--blush2) 12px,#fff 12px,#fff 24px);aspect-ratio:3\/2;font-weight:700;font-size:14px}.rv2 .ganti small{font-weight:600;color:var(--sub)}.rv2 .kepala{position:relative;overflow:hidden;padding:56px 0 46px}.rv2 .kepala h1{max-width:18ch}.rv2 .stat{padding:0 0 30px}.rv2 .stat-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}.rv2 .stat-grid div{background:var(--kad);border:1px solid var(--garis);border-radius:20px;padding:18px;text-align:center;box-shadow:0 6px 18px rgba(46,42,43,.04)}.rv2 .stat-grid b{display:block;font:600 36px\/1.1 var(--serif);color:var(--euc)}.rv2 .stat-grid span{font-size:13.5px;color:var(--sub)}.rv2 .blok{padding:64px 0}.rv2 .blok.lembut{background:linear-gradient(180deg,var(--blush2),var(--latar))}.rv2 .tajuk-baris{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:26px;flex-wrap:wrap}.rv2 .niat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:26px}.rv2 .niat-kad{background:var(--kad);border:1px solid var(--garis);border-radius:var(--r);padding:20px;display:flex;flex-direction:column;gap:6px;box-shadow:0 8px 22px rgba(46,42,43,.05);transition:transform .2s}.rv2 .niat-kad:hover{transform:translateY(-3px)}.rv2 .niat-kad h3{font-family:var(--serif);font-weight:600;font-size:21px}.rv2 .niat-kad p{color:var(--sub);margin:0 0 6px;font-size:15px;flex:1}.rv2 .empati{background:var(--euc);color:#F4F8F5;padding:70px 0;position:relative;overflow:hidden}.rv2 .empati .ungkap{font:500 clamp(26px,3.6vw,44px)\/1.25 var(--serif);max-width:26ch;margin:0 auto;text-align:center}.rv2 .ungkap span{opacity:.18;transition:opacity .5s}.rv2 .ungkap span.nampak{opacity:1}.rv2 .ciri-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:26px}.rv2 .ciri{background:var(--kad);border:1px solid var(--garis);border-radius:var(--r);padding:22px}.rv2 .ciri .ik{color:var(--mawar);margin-bottom:10px}.rv2 .ciri p{color:var(--sub);margin:0;font-size:15px}.rv2 .ciri.kecil{display:flex;gap:12px;align-items:flex-start}.rv2 .ciri.kecil h3{font-size:16px;margin-bottom:2px}@media (max-width:420px){.rv2 .ciri.kecil{padding:16px}}.rv2 .tab-pil{display:inline-flex;gap:4px;background:#fff;border:1px solid var(--garis);border-radius:999px;padding:5px;margin:0 0 22px;flex-wrap:wrap}.rv2 .tab-pil button{font:700 14.5px var(--sans);border:0;background:none;border-radius:999px;padding:10px 16px;cursor:pointer;color:var(--sub)}.rv2 .tab-pil button[aria-selected=\"true\"]{background:var(--euc);color:#fff}.rv2 .tab-pil.gulung{display:flex;overflow-x:auto;flex-wrap:nowrap;max-width:100%}.rv2 .tab-panel{display:none}.rv2 .tab-panel.aktif{display:block;animation:muncul .35s ease}@keyframes muncul{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.rv2 .bilik-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.rv2 .kad-bilik{text-decoration:none;color:inherit;background:#fff;border:1px solid var(--garis);border-radius:var(--r);overflow:hidden;transition:transform .2s,box-shadow .2s}.rv2 .kad-bilik:hover{transform:translateY(-4px);box-shadow:var(--bayang)}.rv2 .kad-bilik .bingkai{border-radius:0;box-shadow:none}.rv2 .isi{padding:18px 20px 22px}.rv2 .isi p{color:var(--sub);margin:0;font-size:15px}.rv2 .cip{display:inline-block;font-size:12px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;background:var(--sage);color:var(--euc);border-radius:999px;padding:4px 10px;margin-bottom:8px}.rv2 .langkah{list-style:none;padding:0;margin:28px 0;display:grid;grid-template-columns:repeat(4,1fr);gap:14px;counter-reset:l}.rv2 .langkah li{counter-increment:l;background:#fff;border:1px solid var(--garis);border-radius:var(--r);padding:22px 20px 20px;position:relative}.rv2 .langkah li::before{content:counter(l);display:grid;place-items:center;width:38px;height:38px;border-radius:50%;background:var(--blush);color:var(--mawar-tua);font:700 18px var(--serif);margin-bottom:10px}.rv2 .langkah b{display:block;font-size:17px}.rv2 .langkah span{color:var(--sub);font-size:15px}.rv2 .pelan-promo{display:grid;grid-template-columns:1.2fr 1fr;gap:26px;align-items:center;background:linear-gradient(135deg,var(--sage2),var(--blush2));border-radius:32px;padding:34px}.rv2 .pelan-promo p{color:var(--sub)}.rv2 .pelan-mini{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end;background:#fff;border-radius:22px;padding:18px}.rv2 .pelan-mini label{flex:1;min-width:180px;font-weight:700;font-size:14px;display:flex;flex-direction:column;gap:6px}.rv2 input:not([type=checkbox]):not([type=radio]),.rv2 select{font:16px var(--sans);border:1.5px solid var(--garis);border-radius:14px;padding:12px 14px;background:#fff;color:var(--teks);width:100%}.rv2 .ulasan-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.rv2 .ulasan{margin:0;background:#fff;border:1px solid var(--garis);border-radius:var(--r);padding:22px}.rv2 .ulasan .bintang{color:var(--emas);display:flex;gap:2px}.rv2 .ulasan blockquote{margin:12px 0;font:500 18px\/1.5 var(--serif);color:var(--teks)}.rv2 .ulasan figcaption{font-size:14px;color:var(--sub)}.rv2 .art-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.rv2 .art-grid.satu{grid-template-columns:1fr}.rv2 .kad-art{text-decoration:none;color:inherit;background:#fff;border:1px solid var(--garis);border-radius:var(--r);overflow:hidden;display:flex;flex-direction:column;transition:transform .2s,box-shadow .2s}.rv2 .kad-art:hover{transform:translateY(-3px);box-shadow:var(--bayang)}.rv2 .kad-art .bingkai{border-radius:0;box-shadow:none}.rv2 .kad-art h3{font-family:var(--serif);font-weight:600;font-size:20px}.rv2 .kad-art .meta{display:flex;gap:6px;align-items:center;font-size:13px;color:var(--euc);font-weight:700;margin-top:10px}.rv2 .sampul{aspect-ratio:3\/2;height:100%;display:grid;place-items:center;align-content:center;gap:6px;text-align:center;padding:20px;color:var(--euc)}.rv2 .sampul b{font:600 clamp(22px,2.4vw,30px)\/1.15 var(--serif);color:var(--teks)}.rv2 .sampul span{font-size:12px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--mawar-tua)}.rv2 .s0{background:linear-gradient(135deg,var(--blush),var(--sage2))}.rv2 .s1{background:linear-gradient(135deg,var(--sage),var(--latar))}.rv2 .s2{background:linear-gradient(135deg,var(--blush2),#EBD9BC)}.rv2 .s3{background:linear-gradient(135deg,var(--sage2),var(--blush))}.rv2 .kad-art.besar{display:grid;grid-template-columns:1.2fr 1fr;margin-bottom:18px}.rv2 .kad-art.besar h3{font-size:28px}.rv2 .art-grid.satu .kad-art{display:grid;grid-template-columns:150px 1fr}.rv2 .art-grid.satu .kad-art p{display:none}.rv2 .akhir{padding:70px 0;text-align:center;background:linear-gradient(135deg,var(--blush),var(--sage));}.rv2 .akhir h2{max-width:20ch;margin:0 auto 8px}.rv2 .akhir p{color:var(--sub);margin:0}.rv2 .jadual-bungkus{overflow-x:auto;background:#fff;border:1px solid var(--garis);border-radius:var(--r)}.rv2 .jadual{width:100%;border-collapse:collapse;font-size:15.5px}.rv2 .jadual th{text-align:left;font-size:13px;letter-spacing:.05em;text-transform:uppercase;color:var(--sub);padding:14px 18px;background:var(--sage2)}.rv2 .jadual td{padding:14px 18px;border-top:1px solid var(--garis);vertical-align:middle}.rv2 .jadual td small{display:block;color:var(--sub);font-size:13px}.rv2 .jadual td.h{font:600 20px var(--serif);color:var(--euc);white-space:nowrap}.rv2 .jadual.banding td:not(:first-child){text-align:center;color:var(--euc)}.rv2 .sahkan{font:600 13px var(--sans);color:var(--mawar-tua);background:var(--blush2);border:1px dashed var(--mawar);border-radius:8px;padding:3px 7px;white-space:normal}.rv2 .dua-lajur{display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:center}.rv2 .dua-lajur.atas{align-items:start}.rv2 .senarai-harga{list-style:none;padding:0;margin:14px 0 0;display:grid;gap:8px}.rv2 .senarai-harga li{display:flex;justify-content:space-between;gap:12px;background:#fff;border:1px solid var(--garis);border-radius:14px;padding:12px 16px}.rv2 .senarai-harga b{color:var(--euc)}.rv2 .kad-panduan{background:#fff;border:1px solid var(--garis);border-radius:28px;padding:26px;box-shadow:0 8px 24px rgba(46,42,43,.05)}.rv2 .kad-panduan p{color:var(--sub)}.rv2 .kad-panduan hr{border:0;border-top:1px solid var(--garis);margin:22px 0}.rv2 .bilik-senarai{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}.rv2 .bilik{background:#fff;border:1px solid var(--garis);border-radius:26px;overflow:hidden}.rv2 .bilik .bingkai{border-radius:0;box-shadow:none}.rv2 .bilik h3{font-family:var(--serif);font-weight:600;font-size:28px}.rv2 .bilik[hidden]{display:none}.rv2 .kem{list-style:none;padding:0;margin:8px 0 0;display:grid;grid-template-columns:1fr 1fr;gap:6px 14px;font-size:14.5px;color:var(--sub)}.rv2 .kem li{display:flex;gap:6px;align-items:center}.rv2 .kem .ik{color:var(--euc)}.rv2 .kem li.sub{grid-column:1\/-1;font-weight:700;color:var(--teks)}.rv2 .video-kad{display:grid;grid-template-columns:1fr 1.1fr;gap:30px;align-items:center}.rv2 .video-ganti{aspect-ratio:16\/9;border-radius:26px;background:linear-gradient(135deg,var(--blush),var(--sage));display:grid;place-items:center;align-content:center;gap:8px;color:var(--euc);font-weight:700}.rv2 .menu-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.rv2 .menu-kump h3{font-family:var(--serif);font-weight:600;font-size:23px}.rv2 .rawatan-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.rv2 .kad-rawatan{background:#fff;border:1px solid var(--garis);border-radius:var(--r);padding:22px;display:flex;flex-direction:column;gap:6px}.rv2 .kad-rawatan .ik{color:var(--mawar)}.rv2 .kad-rawatan p{color:var(--sub);flex:1;font-size:15px}.rv2 .ahli-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;align-items:stretch}.rv2 .ahli{background:#fff;border:1px solid var(--garis);border-radius:28px;padding:28px;position:relative;display:flex;flex-direction:column}.rv2 .ahli.pilihan{border:2px solid var(--euc);box-shadow:var(--bayang)}.rv2 .lencana{position:absolute;top:-13px;left:28px;background:var(--euc);color:#fff;font-size:12px;font-weight:800;border-radius:999px;padding:5px 12px}.rv2 .ahli h3{font-family:var(--serif);font-weight:600;font-size:30px;margin:0}.rv2 .ahli .tag{color:var(--sub);margin:0}.rv2 .ahli .harga{margin:14px 0 0}.rv2 .ahli .harga b{font:600 44px var(--serif);color:var(--euc)}.rv2 .ahli .harga span{color:var(--sub)}.rv2 .ahli .jum{font-weight:700;color:var(--mawar-tua);margin:0 0 10px}.rv2 .ahli .kem{grid-template-columns:1fr;flex:1;margin-bottom:20px}.rv2 .pasukan-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:22px}.rv2 .ahli-pasukan{margin:0;text-align:center}.rv2 .potret{aspect-ratio:1;border-radius:50%;background:linear-gradient(135deg,var(--blush),var(--sage));display:grid;place-items:center;align-content:center;color:var(--mawar-tua);max-width:190px;margin:0 auto 12px}.rv2 .potret small{font-size:12px;color:var(--sub)}.rv2 .ahli-pasukan figcaption b{display:block}.rv2 .ahli-pasukan figcaption span{display:block;color:var(--euc);font-weight:700;font-size:14px}.rv2 .ahli-pasukan figcaption small{color:var(--sub)}.rv2 .kenyataan{display:flex;gap:16px;background:#fff;border:1px solid var(--garis);border-left:6px solid var(--euc);border-radius:22px;padding:24px}.rv2 .kenyataan .ik{color:var(--euc)}.rv2 .kenyataan p{color:var(--sub);margin:.3em 0}.rv2 .senarai-ikon{list-style:none;padding:0;margin:18px 0 26px;display:grid;gap:14px}.rv2 .senarai-ikon li{display:flex;gap:14px;align-items:flex-start}.rv2 .senarai-ikon .ik{color:var(--mawar);margin-top:3px}.rv2 .senarai-ikon b{display:block}.rv2 .senarai-ikon span{color:var(--sub);font-size:15.5px}.rv2 .borang{background:#fff;border:1px solid var(--garis);border-radius:30px;padding:28px;box-shadow:var(--bayang);display:grid;gap:14px}.rv2 .borang label{display:flex;flex-direction:column;gap:6px;font-weight:700;font-size:14.5px}.rv2 fieldset{border:0;padding:0;margin:0}.rv2 legend{font-weight:700;font-size:14.5px;margin-bottom:8px}.rv2 legend small{font-weight:600;color:var(--mawar-tua)}.rv2 .cip-pilih{display:flex;gap:8px;flex-wrap:wrap}.rv2 .cip-pilih button{font:600 14px var(--sans);border:1.5px solid var(--garis);background:#fff;border-radius:14px;padding:9px 12px;cursor:pointer;line-height:1.25}.rv2 .cip-pilih button small{display:block;color:var(--sub);font-size:12px}.rv2 .cip-pilih button[aria-pressed=\"true\"]{border-color:var(--euc);background:var(--sage2);color:var(--euc)}.rv2 .pelan-borang{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end;background:#fff;border:1px solid var(--garis);border-radius:28px;padding:24px;box-shadow:var(--bayang)}.rv2 .pelan-borang label{flex:1;min-width:200px;display:flex;flex-direction:column;gap:6px;font-weight:700;font-size:14.5px}.rv2 .pelan-hasil{margin-top:28px}.rv2 .pelan-kepala{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;align-items:flex-end}.rv2 .garis-masa{list-style:none;padding:0;margin:24px 0 0;position:relative;display:grid;gap:12px}.rv2 .garis-masa li{display:grid;grid-template-columns:150px 1fr;gap:18px;background:#fff;border:1px solid var(--garis);border-radius:20px;padding:18px 20px;position:relative}.rv2 .garis-masa li.utama{border:2px solid var(--euc);background:var(--sage2)}.rv2 .garis-masa .tarikh{font:600 18px\/1.3 var(--serif);color:var(--euc)}.rv2 .garis-masa b{display:block;font-size:17px}.rv2 .garis-masa span{color:var(--sub);font-size:15px}.rv2 .semak-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.rv2 .semak-kump{background:#fff;border:1px solid var(--garis);border-radius:24px;padding:20px}.rv2 .semak-kump h3{font-family:var(--serif);font-weight:600;font-size:22px}.rv2 .semak{display:flex;gap:10px;align-items:flex-start;padding:8px 0;border-top:1px solid var(--garis);font-size:15px;cursor:pointer}.rv2 .semak input{width:20px;height:20px;accent-color:var(--euc);margin-top:3px;flex:0 0 auto}.rv2 .semak input:checked+span{text-decoration:line-through;color:var(--sub)}.rv2 .kemajuan{font-weight:800;color:var(--euc);background:var(--sage);border-radius:999px;padding:6px 14px}.rv2 .penafian{display:flex;gap:10px;align-items:flex-start;color:var(--sub);font-size:14.5px;background:#fff;border:1px dashed var(--garis);border-radius:18px;padding:16px}.rv2 .hubungi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.rv2 .hubungi-kad{background:#fff;border:1px solid var(--garis);border-radius:var(--r);padding:22px;display:flex;flex-direction:column;gap:6px;align-items:flex-start}.rv2 .hubungi-kad .ik{color:var(--mawar)}.rv2 .hubungi-kad p{margin:0 0 6px;color:var(--sub);flex:1}.rv2 .cari{display:flex;gap:8px;max-width:560px;margin-top:22px}.rv2 .topik{margin-bottom:22px}.rv2 .kemajuan-baca{position:fixed;top:0;left:0;height:4px;width:0;background:var(--grad);z-index:70;transition:width .1s}.rv2 .art-kepala{padding:40px 0 20px}.rv2 .art-kepala h1{font-size:clamp(32px,4.4vw,52px);max-width:24ch}.rv2 .remah{font-size:14px;color:var(--sub);margin-bottom:14px}.rv2 .remah a{color:var(--sub)}.rv2 .art-meta{display:flex;gap:10px 18px;flex-wrap:wrap;align-items:center;font-size:14px;color:var(--sub)}.rv2 .lencana-semak{display:inline-flex;gap:6px;align-items:center;background:var(--sage);color:var(--euc);font-weight:700;border-radius:999px;padding:7px 14px}.rv2 .art-grid-3{display:grid;grid-template-columns:230px minmax(0,1fr) 64px;gap:34px;align-items:start}.rv2 .toc{position:sticky;top:120px;font-size:14px}.rv2 .toc b{display:block;margin-bottom:8px}.rv2 .toc ol{list-style:none;padding:0;margin:0;border-left:2px solid var(--garis)}.rv2 .toc a{display:block;padding:6px 0 6px 14px;margin-left:-2px;border-left:2px solid transparent;color:var(--sub);text-decoration:none;line-height:1.35}.rv2 .toc a.aktif{border-color:var(--euc);color:var(--euc);font-weight:700}.rv2 .rel-kongsi{position:sticky;top:120px;display:flex;flex-direction:column;gap:8px;align-items:center;font-size:12px;font-weight:700;color:var(--sub)}.rv2 .rel-kongsi button{width:44px;height:44px;border-radius:50%;border:1px solid var(--garis);background:#fff;display:grid;place-items:center;cursor:pointer;font:700 17px var(--sans);color:var(--teks)}.rv2 .rel-kongsi button:first-of-type{background:var(--wa);border-color:var(--wa);color:#063D1E}.rv2 .prosa{font-size:17px;line-height:1.8;max-width:68ch}.rv2 .prosa h2{font-size:clamp(26px,3vw,34px);margin:1.6em 0 .5em;scroll-margin-top:130px}.rv2 .prosa h3{font-size:20px;margin:1.3em 0 .4em}.rv2 .prosa p,.rv2 .prosa li{color:#3d3436}.rv2 .prosa a{color:var(--euc)}.rv2 .prosa table{width:100%;border-collapse:collapse;font-size:16px;margin:1em 0}.rv2 .prosa th,.rv2 .prosa td{border:1px solid var(--garis);padding:10px 12px;text-align:left;vertical-align:top}.rv2 .prosa th{background:var(--sage2)}.rv2 .prosa figure{margin:1.4em 0}.rv2 .prosa figure img{border-radius:20px;box-shadow:var(--bayang)}.rv2 .prosa figcaption{font-size:14px;color:var(--sub);margin-top:8px}.rv2 .prosa .rv-lbl{font-size:12px!important;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--euc)!important;margin:0 0 6px!important}.rv2 .prosa .rv-ans{background:var(--sage2);border:0;border-left:5px solid var(--euc);border-radius:18px;padding:18px 22px;margin:0 0 22px}.rv2 .prosa .rv-rev{display:grid;gap:8px;border:1px solid var(--garis);border-radius:18px;padding:16px 18px;background:#fff;font-size:15px;margin:0 0 24px;scroll-margin-top:130px}.rv2 .prosa .rv-rev-row{display:flex;gap:10px;flex-wrap:wrap}.rv2 .prosa .rv-rev-k{font-weight:700;color:var(--sub);min-width:150px}.rv2 .prosa .rv-tip,.rv2 .prosa .rv-info{background:var(--blush2);border-radius:18px;padding:16px 20px;margin:20px 0}.rv2 .prosa .rv-info-t{font:600 21px\/1.3 var(--serif)!important;color:var(--teks)!important;margin:4px 0 10px!important}.rv2 .prosa .rv-info-l{list-style:none;padding:0;margin:0;display:grid;gap:10px}.rv2 .prosa .rv-info-l li{display:flex;gap:12px;align-items:flex-start}.rv2 .prosa .rv-info-k{display:inline-block;background:var(--mawar);color:#fff!important;border-radius:999px;padding:4px 12px;font:800 12px var(--sans)!important;letter-spacing:.06em;text-transform:uppercase}.rv2 .prosa .rv-warn{background:#FFF4EC;border:1px solid #F2C9A6;border-radius:18px;padding:16px 20px;margin:20px 0}.rv2 .prosa .rv-warn .rv-lbl{color:#9A4A13!important}.rv2 .prosa .rv-cta{background:linear-gradient(135deg,var(--blush2),var(--sage2));border-radius:24px;padding:22px 24px;margin:28px 0;border:0}.rv2 .prosa .rv-cta-t{font:600 22px var(--serif)!important;color:var(--teks)!important}.rv2 .prosa .rv-btn,.rv2 .prosa .rv-cta a[data-wa-kod]{display:inline-flex;background:var(--wa);color:#063D1E;font-weight:800;border-radius:999px;padding:12px 18px;text-decoration:none}.rv2 .prosa .rv-faq details{border:1px solid var(--garis);border-radius:16px;padding:12px 16px;margin:10px 0;background:#fff}.rv2 .prosa .rv-faq summary{font-weight:700;cursor:pointer}.rv2 .prosa .rv-src{font-size:14.5px;color:var(--sub)}.rv2 .prosa .rv-disc{font-size:14px;color:var(--sub);border-top:1px solid var(--garis);padding-top:14px}.rv2 .art-akhir{display:grid;grid-template-columns:1.2fr 1fr;gap:26px;align-items:start}.rv2 .kecil-tajuk{font-family:var(--sans);font-size:15px;text-transform:uppercase;letter-spacing:.06em;color:var(--sub)}.rv2 .faq-wrap{max-width:860px}.rv2 .faq-kump{margin-bottom:34px}.rv2 .faq-kump h2{font-size:28px}.rv2 .faq{background:#fff;border:1px solid var(--garis);border-radius:18px;padding:16px 20px;margin:10px 0}.rv2 .faq summary{font-weight:700;cursor:pointer;list-style:none;display:flex;justify-content:space-between;gap:10px}.rv2 .faq summary::after{content:\"+\";color:var(--euc);font-size:22px;line-height:1}.rv2 .faq[open] summary::after{content:\"\u2212\"}.rv2 .faq p{color:var(--sub);margin:10px 0 0}.rv2 footer.kaki{background:#fff;border-top:1px solid var(--garis);padding:46px 0 110px;font-size:14.5px;color:var(--sub)}.rv2 .kaki-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:26px}.rv2 .kaki-grid b{color:var(--teks);display:block;margin-bottom:8px}.rv2 .kaki-grid a{display:block;color:var(--sub);text-decoration:none;padding:3px 0}.rv2 .kaki-grid a:hover{color:var(--euc)}.rv2 .kaki-bawah{border-top:1px solid var(--garis);margin-top:26px;padding-top:16px;display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;font-size:13px}.rv2 .wa-terapung{position:fixed;right:20px;bottom:22px;z-index:55;display:flex;align-items:center;gap:8px;background:var(--wa);color:#063D1E;font-weight:800;text-decoration:none;border-radius:999px;padding:14px 18px;box-shadow:0 12px 30px rgba(15,122,63,.35)}.rv2 .wa-terapung .ik{width:24px;height:24px}.rv2 .bar-telefon{display:none}.rv2 .hero h1{max-width:none;font-size:clamp(30px,3.7vw,48px)}.rv2 .pautan-bintang{color:inherit;text-decoration:none;display:inline-flex;gap:6px;align-items:center;border-bottom:1px dashed var(--emas)}.rv2 .bukti .pautan-bintang .ik{color:var(--emas)}.rv2 a.kaca{text-decoration:none}.rv2 .art-grid.satu .sampul{aspect-ratio:auto;width:100%;height:100%;min-height:96px}.rv2 .dua-pintu{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:40px;position:relative;z-index:1}.rv2 .pintu{display:flex;flex-direction:column;gap:2px;text-decoration:none;color:var(--teks);border-radius:26px;padding:22px 24px;border:1px solid var(--garis);box-shadow:var(--bayang);transition:transform .2s}.rv2 .pintu:hover{transform:translateY(-3px)}.rv2 .pintu.villa{background:linear-gradient(135deg,#fff,var(--blush2))}.rv2 .pintu.spa{background:linear-gradient(135deg,#fff,var(--sage2))}.rv2 .pintu b{font:700 22px\/1.25 var(--serif);letter-spacing:-.015em}.rv2 .pintu span:not(.eye){color:var(--sub);font-size:15px}.rv2 .pintu em{font-style:normal;font-weight:700;color:var(--euc);margin-top:8px}.rv2 .blok-nipis{padding:6px 0 34px}.rv2 .bukti-jalur{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.rv2 .bukti-jalur div{background:#fff;border:1px solid var(--garis);border-radius:16px;padding:14px 16px;display:flex;flex-direction:column;gap:2px}.rv2 .bukti-jalur b{font-size:12px;letter-spacing:.07em;text-transform:uppercase;color:var(--euc)}.rv2 .bukti-jalur span{font-size:14.5px;color:var(--sub);line-height:1.5}.rv2 .harga3 th small{display:block;font-size:11.5px;letter-spacing:0;text-transform:none;font-weight:600;color:var(--sub);margin-top:2px}.rv2 .harga3 td:first-child b{display:block;white-space:nowrap}.rv2 .tt-tajuk{margin:30px 0 12px}.rv2 .tt-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.rv2 .tt{background:#fff;border:1px solid var(--garis);border-radius:var(--r);padding:18px}.rv2 .tt ul{list-style:none;padding:0;margin:6px 0 0;display:grid;gap:8px;font-size:14.5px;color:var(--sub);line-height:1.5}.rv2 .tt li{display:flex;gap:7px;align-items:flex-start}.rv2 .tt .ik{color:var(--euc);flex:none;margin-top:3px}.rv2 .kenyataan.kopetro{margin-top:22px}.rv2 .kenyataan.kopetro .btn{margin-top:10px}.rv2 .kenyataan.klinik{margin-top:22px;border-left-color:var(--mawar)}.rv2 .kenyataan.klinik .ik{color:var(--mawar)}.rv2 .spa-pakej-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin:24px 0}.rv2 .spa-pakej{background:#fff;border:1px solid var(--garis);border-radius:26px;padding:24px;display:flex;flex-direction:column}.rv2 .spa-pakej.pilihan{border:2px solid var(--euc);box-shadow:var(--bayang)}.rv2 .spa-pakej h3{font:700 26px var(--serif);margin:0}.rv2 .spa-pakej .eye{margin:0 0 4px}.rv2 .spa-pakej .harga{margin:8px 0 6px}.rv2 .spa-pakej .harga b{font:700 38px var(--serif);color:var(--euc)}.rv2 .kem.satu{grid-template-columns:1fr;gap:10px}.rv2 .kem.satu li{align-items:flex-start}.rv2 .kem.satu .ik{flex:none;margin-top:5px}.rv2 .spa-pakej .kem{grid-template-columns:1fr;flex:1;margin-bottom:18px;align-content:start}.rv2 .spa-pakej .kem li{align-items:flex-start}.rv2 .spa-pakej .kem .ik{flex:none;margin-top:4px}.rv2 .lokasi-grid{display:grid;grid-template-columns:1.25fr 1fr;gap:20px;margin-top:22px;align-items:stretch}.rv2 .peta-bingkai{border-radius:var(--r);overflow:hidden;border:1px solid var(--garis);background:var(--sage2);min-height:400px}.rv2 .peta-bingkai iframe{width:100%;height:100%;min-height:400px;border:0;display:block}.rv2 .nap-kotak{background:#fff;border:1px solid var(--garis);border-radius:var(--r);padding:22px;display:flex;flex-direction:column;gap:16px}.rv2 .nap{margin:0;display:grid;gap:12px}.rv2 .nap div{display:grid;grid-template-columns:86px 1fr;gap:10px}.rv2 .nap dt{font-size:12px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:var(--mawar-tua);padding-top:3px}.rv2 .nap dd{margin:0;font-size:15px;line-height:1.55}.rv2 .nap-cta{display:flex;flex-wrap:wrap;gap:10px}.rv2 .ringkasan-ulasan{display:flex;gap:14px;align-items:center;text-decoration:none;color:var(--teks);background:#fff;border:1px solid var(--garis);border-radius:20px;padding:12px 18px}.rv2 .ringkasan-ulasan b{font:700 42px\/1 var(--serif);color:var(--euc)}.rv2 .ringkasan-ulasan span{font-size:13.5px;color:var(--sub);line-height:1.55}.rv2 .ringkasan-ulasan .ik{color:var(--emas)}.rv2 .ringkasan-ulasan u{color:var(--euc);font-weight:700}.rv2 .senarai-ikon.dua{grid-template-columns:1fr 1fr;margin-top:22px}@media (max-width:1000px){.rv2 .tt-grid,.rv2 .bukti-jalur{grid-template-columns:repeat(2,1fr)}.rv2 .spa-pakej-grid,.rv2 .lokasi-grid{grid-template-columns:1fr}}@media (max-width:620px){.rv2 .dua-pintu,.rv2 .senarai-ikon.dua,.rv2 .tt-grid{grid-template-columns:1fr}.rv2 .bukti-jalur{grid-template-columns:1fr 1fr}.rv2 .jadual.harga3 thead{display:none}.rv2 .jadual.harga3,.rv2 .jadual.harga3 tbody{display:block}.rv2 .jadual.harga3 tr{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px 10px;align-items:center;padding:14px 16px;border-top:1px solid var(--garis)}.rv2 .jadual.harga3 tr:first-child{border-top:0}.rv2 .jadual.harga3 td{display:block;border:0;padding:0}.rv2 .jadual.harga3 td:first-child{grid-column:1\/3;grid-row:1}.rv2 .jadual.harga3 td:last-child{grid-column:3;grid-row:1;justify-self:end}.rv2 .jadual.harga3 td.h{font-size:17px;background:var(--sage2);border-radius:12px;padding:8px 10px}.rv2 .jadual.harga3 td.h::before{content:attr(data-label);display:block;font:800 10px\/1.4 var(--sans);letter-spacing:.07em;text-transform:uppercase;color:var(--sub)}.rv2 .nap-cta .btn{width:100%;justify-content:center}.rv2 .art-akhir>*{min-width:0}.rv2 .art-grid.satu .kad-art{grid-template-columns:96px minmax(0,1fr)}.rv2 .art-grid.satu .sampul{padding:10px}.rv2 .art-grid.satu .sampul b{font-size:13px}.rv2 .art-grid.satu .sampul span{display:none}.rv2 .peta-bingkai,.rv2 .peta-bingkai iframe{min-height:300px}.rv2 .nap div{grid-template-columns:1fr;gap:2px}.rv2 .ringkasan-ulasan b{font-size:34px}}@media (max-width:1000px){.rv2 .nav-pil nav{display:none}.rv2 .menu-btn{display:block}.rv2 .nav-pil.buka nav{display:flex;position:absolute;top:66px;left:20px;right:20px;flex-direction:column;background:#fff;border-radius:22px;padding:10px;box-shadow:var(--bayang)}.rv2 .hero-grid,.rv2 .dua-lajur,.rv2 .pelan-promo,.rv2 .video-kad,.rv2 .art-akhir,.rv2 .kad-art.besar{grid-template-columns:1fr}.rv2 .stat-grid{grid-template-columns:repeat(3,1fr)}.rv2 .niat-grid,.rv2 .ciri-grid,.rv2 .rawatan-grid,.rv2 .hubungi-grid,.rv2 .pasukan-grid,.rv2 .langkah{grid-template-columns:repeat(2,1fr)}.rv2 .bilik-grid,.rv2 .art-grid,.rv2 .ulasan-grid,.rv2 .menu-grid,.rv2 .ahli-grid,.rv2 .semak-grid,.rv2 .bilik-senarai{grid-template-columns:1fr}.rv2 .art-grid-3{grid-template-columns:1fr}.rv2 .toc,.rv2 .rel-kongsi{position:static}.rv2 .rel-kongsi{flex-direction:row}.rv2 .kaki-grid{grid-template-columns:1fr 1fr}.rv2 .k1{left:10px}.rv2 .k2{right:10px}}@media (max-width:620px){.rv2{font-size:16.5px}.rv2 .niat-grid,.rv2 .ciri-grid,.rv2 .rawatan-grid,.rv2 .hubungi-grid,.rv2 .pasukan-grid,.rv2 .langkah,.rv2 .stat-grid{grid-template-columns:1fr 1fr}.rv2 .niat-grid,.rv2 .langkah{grid-template-columns:1fr}.rv2 .hero{padding-top:26px}.rv2 .wa-terapung{display:none}.rv2 .bar-telefon{display:grid;grid-template-columns:1fr 1fr;gap:8px;position:fixed;left:0;right:0;bottom:0;z-index:55;background:rgba(255,255,255,.92);backdrop-filter:blur(12px);padding:10px 12px calc(10px + env(safe-area-inset-bottom));border-top:1px solid var(--garis)}.rv2 .bar-telefon .btn{padding:13px 10px;font-size:14.5px}.rv2 .nav-pil>.btn-utama,.rv2 .bahasa{display:none}.rv2 .logo small{white-space:nowrap;font-size:8.5px}.rv2 .stat-grid{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:6px}.rv2 .stat-grid div{flex:0 0 46%;scroll-snap-align:start}.rv2 .garis-masa li{grid-template-columns:1fr}.rv2 .kem{grid-template-columns:1fr}.rv2 .kepala-laman{top:40px}.rv2 .jadual td,.rv2 .jadual th{padding:12px}.rv2 .kaki-grid{grid-template-columns:1fr}}.rv2 .harga3 td.h s{display:block;font:600 12.5px\/1.3 var(--sans);color:var(--sub);opacity:.85}.rv2 .pasukan-grid.lima{grid-template-columns:repeat(5,1fr)}.rv2 .potret.ada-foto{background:none;overflow:hidden;padding:0}.rv2 .potret.ada-foto img{width:100%;height:100%;object-fit:cover;display:block;border-radius:50%}.rv2 .bukti-jalur.tiga{grid-template-columns:repeat(3,1fr)}.rv2 .manfaat-ahli{margin-bottom:26px}@media (max-width:1000px){.rv2 .pasukan-grid.lima{grid-template-columns:repeat(3,1fr)}}@media (max-width:620px){.rv2 .pasukan-grid.lima{grid-template-columns:1fr 1fr}.rv2 .bukti-jalur.tiga{grid-template-columns:1fr}}.rv2 .bahasa{cursor:pointer}.rv2 .bahasa b{color:var(--mawar-tua)}.rv2 .langkah.satu-lajur{grid-template-columns:1fr}@media print{.rv2 .kepala-laman,.rv2 footer.kaki,.rv2 .wa-terapung,.rv2 .bar-telefon,.rv2 .pelan-borang,.rv2 .cta-baris{display:none!important}.rv2{}}.rv2 .rawatan-grid.tiga{grid-template-columns:repeat(3,1fr)}@media (max-width:700px){.rv2 .rawatan-grid.tiga{grid-template-columns:1fr}}@font-face{font-family:\"Montserrat Fallback\";font-weight:100 550;src:local(\"Arial\"),local(\"ArialMT\"),local(\"Roboto\"),local(\"Roboto-Regular\");size-adjust:111.98%;ascent-override:86.44%;descent-override:22.41%;line-gap-override:0%}@font-face{font-family:\"Montserrat Fallback\";font-weight:551 900;src:local(\"Arial Bold\"),local(\"Arial-BoldMT\"),local(\"Roboto Bold\"),local(\"Roboto-Bold\");size-adjust:111%;ascent-override:87.21%;descent-override:22.62%;line-gap-override:0%}.rv2{--serif:\"Montserrat\",\"Montserrat Fallback\",system-ui,-apple-system,\"Segoe UI\",sans-serif;--sans:\"Montserrat\",\"Montserrat Fallback\",system-ui,-apple-system,\"Segoe UI\",sans-serif}.rv2 .lead{max-width:38.4em}.rv2 .pengantar{max-width:45em}.rv2 .kepala h1{max-width:12.22em}.rv2 .akhir h2{max-width:13.58em}.rv2 .empati .ungkap{max-width:17.34em}body:has(.rv2){background:#FBF8F4;margin:0}body:has(.rv2) #qlwapp{display:none!important}.rv2-kepala{position:sticky;top:0;z-index:50}.admin-bar .rv2-kepala{top:32px}@media (max-width:782px){.admin-bar .rv2-kepala{top:46px}}.rv2 .kepala-laman{position:relative;top:auto}.rv2 [hidden]{display:none!important}.rv2 .hero,.rv2 .kepala{isolation:isolate}.rv2 h1,.rv2 h2,.rv2 h3,.rv2 h4{color:inherit;text-transform:none;font-style:normal}.rv2 p{margin-top:1em;margin-bottom:1em}.rv2 button{text-transform:none;letter-spacing:normal;box-shadow:none;min-height:0}.rv2 blockquote{border:0;padding:0;quotes:none;font-style:normal;background:none}.rv2 blockquote::before,.rv2 blockquote::after{content:none}.rv2 svg.ik{fill:none}.rv2 a:hover{color:var(--euc-tua)}.rv2 a.btn-utama:hover,.rv2 a.btn-utama:focus{color:#fff}.rv2 a.btn-wa:hover,.rv2 a.btn-utama-wa:hover,.rv2 a.wa-terapung:hover{color:#063D1E}.rv2 a.btn-kedua:hover{color:var(--teks)}.rv2 a.btn-garis:hover{color:var(--euc)}.rv2 .kaki-grid a:hover{color:var(--euc)}.rv2 .video-lawatan{display:block;width:100%;height:auto;max-height:72vh;border-radius:26px;background:#2E2A2B;box-shadow:var(--bayang)}.rv2 .ralat{color:#9A3412;font-weight:700;margin:0}.rv2-sembunyi{position:absolute;left:-9999px}.rv2{overflow-wrap:break-word}.rv2 .hubungi-grid>*{min-width:0}.rv2 .hubungi-kad p{overflow-wrap:anywhere}.rv2 .no-tel{white-space:nowrap}@media (min-width:1001px){.rv2 .hero-grid{grid-template-columns:1fr 1.1fr;gap:44px}.rv2 .hero-vis{margin-right:calc(-20px - max(0px, (100vw - 1180px) \/ 2))}.rv2 .hero .bingkai.besar{aspect-ratio:1.12;max-height:72vh;border-radius:34px 0 0 34px}.rv2 .hero .k2{right:28px}}@media (max-width:1000px){.rv2 .hero .hero-vis{width:100vw;max-width:none;margin-left:calc(50% - 50vw)}.rv2 .hero .bingkai.besar{border-radius:0;aspect-ratio:16\/11}}@media (max-width:620px){.rv2 .hero{padding-top:0}.rv2 .hero .hero-vis{order:-1}.rv2 .hero .bingkai.besar{aspect-ratio:4\/3.2}.rv2 .hero .kaca{padding:7px 11px;border-radius:14px;font-size:11.5px}.rv2 .hero .kaca b{font-size:15px}.rv2 .hero .k1{bottom:12px}.rv2 .hero .k2{top:12px}}@media (max-width:480px){.rv2 .hubungi-grid{grid-template-columns:1fr}}@media (max-width:620px){.rv2 .kepala-laman{top:auto}}\/* 28 Okt 2026 (Halim: telefon tiada pilihan English): pemilih BM \u00b7 EN kekal nampak di kepala laman telefon, sebelah butang menu *\/@media (max-width:620px){.rv2 .nav-pil>.bahasa{display:inline-block;line-height:34px;padding:0 11px;margin-right:2px;font-size:12.5px;color:var(--teks);border:1px solid var(--garis);border-radius:999px;background:rgba(255,255,255,.9);white-space:nowrap}}@media (max-width:380px){.rv2 .logo small{letter-spacing:.08em}.rv2 .nav-pil>.bahasa{padding:0 9px}}\/* 29 Okt 2026 (Halim: susunan topik Panduan di telefon tak profesional): cip topik jadi satu baris boleh leret, setiap cip berbingkai sendiri *\/@media (max-width:1100px){.rv2 .tab-pil.topik{display:flex;flex-wrap:nowrap;gap:8px;overflow-x:auto;background:none;border:0;border-radius:0;padding:2px 20px 8px;margin:0 -20px 18px;scroll-snap-type:x proximity;scroll-padding:0 20px;-webkit-overflow-scrolling:touch;scrollbar-width:none;-webkit-mask-image:linear-gradient(90deg,#000 0,#000 calc(100% - 36px),transparent);mask-image:linear-gradient(90deg,#000 0,#000 calc(100% - 36px),transparent)}.rv2 .tab-pil.topik::-webkit-scrollbar{display:none}.rv2 .tab-pil.topik button{flex:0 0 auto;white-space:nowrap;scroll-snap-align:start;background:#fff;border:1px solid var(--garis);padding:9px 15px;font-size:14px;line-height:1.2}.rv2 .tab-pil.topik button[aria-selected=\"true\"]{background:var(--euc);border-color:var(--euc);color:#fff}.rv2 .tab-pil.topik::after{content:\"\";flex:0 0 16px}}\/* 28 Okt 2026: bar tab bawah telefon (nav_bawah, RV_NAVBAWAH=1) *\/.rv2 .nav-bawah{display:none}@media (max-width:620px){.rv2 .nav-bawah{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));align-items:end;position:fixed;left:0;right:0;bottom:0;z-index:55;background:rgba(255,255,255,.96);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-top:1px solid var(--garis);box-shadow:0 -6px 20px rgba(46,42,43,.07);padding:4px 2px calc(4px + env(safe-area-inset-bottom))}.rv2 .nav-bawah a{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:3px;min-height:52px;min-width:0;padding:6px 0;font:600 10.5px\/1.2 var(--sans);letter-spacing:-.01em;color:var(--sub);text-decoration:none;text-align:center;white-space:nowrap}.rv2 .nav-bawah a .ik{color:var(--mawar-tua)}.rv2 .nav-bawah a[aria-current]{color:var(--mawar-tua);font-weight:800}.rv2 .nav-bawah a.nb-wa{color:var(--wa-tua);font-weight:800}.rv2 .nav-bawah .nb-bulat{display:flex;align-items:center;justify-content:center;width:50px;height:50px;margin-top:-24px;border-radius:999px;background:var(--wa);color:#063D1E;border:3px solid #fff;box-shadow:0 6px 16px rgba(37,211,102,.35)}.rv2 .nav-bawah .nb-bulat .ik{width:26px;height:26px;color:#fff}body:has(.nav-bawah){padding-bottom:calc(64px + env(safe-area-inset-bottom))!important}}@media (max-width:380px){.rv2 .nav-bawah a{font-size:9.5px}.rv2 .nav-bawah a .ik{width:19px;height:19px}.rv2 .nav-bawah .nb-bulat{width:46px;height:46px}}.rv2 .art-badan{padding:6px 0 44px}.rv2 .rel-kongsi a,.rv2 .rel-kongsi button{width:44px;height:44px;border-radius:50%;border:1px solid var(--garis);background:#fff;display:grid;place-items:center;cursor:pointer;font:700 17px var(--sans);color:var(--teks);text-decoration:none;padding:0}.rv2 .rel-kongsi a[data-kongsi=\"whatsapp\"]{background:var(--wa);border-color:var(--wa);color:#063D1E}.rv2 .rel-kongsi button:first-of-type{background:#fff;border-color:var(--garis);color:var(--teks)}.rv2 .rel-kongsi [data-ok]{background:var(--sage2);border-color:var(--euc);color:var(--euc)}.rv2 .prosa .rv-rev{display:block;padding:0;gap:0;overflow:hidden;border:1px solid var(--garis);border-radius:20px;background:#fff;box-shadow:var(--bayang);font-size:15px;line-height:1.5;margin:0 0 28px}.rv2 .prosa .rv-rev-p{display:flex;gap:14px;align-items:flex-start;padding:16px 20px}.rv2 .prosa .rv-rev-p+.rv-rev-p{border-top:1px solid var(--garis)}.rv2 .prosa .rv-rev-av{flex:0 0 48px;width:48px;height:48px;border-radius:50%;display:grid;place-items:center;font:800 15px\/1 var(--sans);letter-spacing:.04em;color:#fff;background:var(--euc)}.rv2 .prosa .rv-rev-av.syariah{background:#9A7448}.rv2 .prosa .rv-rev-av.logo{background:var(--blush2);border:1px solid var(--garis)}.rv2 .prosa .rv-rev-av.logo img{width:24px;height:auto;margin:0}.rv2 .prosa .rv-rev-i{min-width:0;flex:1}.rv2 .prosa .rv-rev-k{margin:0!important;font-size:11.5px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:var(--euc);min-width:0}.rv2 .prosa .rv-rev-n{margin:3px 0 0!important;font-size:17px;font-weight:700;color:var(--teks);line-height:1.35}.rv2 .prosa .rv-rev-r{margin:2px 0 0!important;font-size:14.5px;color:var(--sub)}.rv2 .prosa .rv-rev-c{list-style:none;margin:10px 0 0!important;padding:0!important;display:flex;flex-wrap:wrap;gap:6px}.rv2 .prosa .rv-rev-c li{margin:0!important;padding:4px 11px;border:1px solid var(--garis);border-radius:99px;background:var(--latar);font-size:12.5px;font-weight:600;color:var(--sub);line-height:1.4}.rv2 .prosa .rv-rev-c li.sah{border-color:var(--sage);background:var(--sage2)}.rv2 .prosa .rv-rev-c a{color:var(--euc);text-decoration:none;display:inline-flex;align-items:center;gap:4px}.rv2 .prosa .rv-rev-c a svg{width:12px;height:12px}.rv2 .prosa .rv-rev-f{display:flex;flex-wrap:wrap;gap:6px 20px;margin:0!important;padding:12px 20px 0;border-top:1px solid var(--garis);background:var(--sage2);font-size:13.5px;color:var(--sub)}.rv2 .prosa .rv-rev-f span{display:inline-flex;align-items:center;gap:6px}.rv2 .prosa .rv-rev-f svg{width:15px;height:15px;color:var(--euc)}.rv2 .prosa .rv-rev-f a{color:var(--euc);font-weight:700}.rv2 .prosa .rv-rev-note{margin:0!important;padding:8px 20px 14px;background:var(--sage2);font-size:13px;color:var(--sub)}.rv2 .prosa .rv-src{scroll-margin-top:130px}.rv2 .prosa .rv-cta-b{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}.rv2 .prosa .rv-cta p{margin:6px 0}.rv2 .prosa .rv-btn-2,.rv2 .prosa .rv-cta a.rv-btn-2{background:#fff;color:var(--euc);border:2px solid var(--euc)}.rv2 .prosa .rv-tbl{margin:1.2em 0;overflow-x:auto}.rv2 .prosa .rv-tbl table{width:100%;border-collapse:collapse;font-size:15.5px;background:#fff}.rv2 .prosa .rv-tbl th,.rv2 .prosa .rv-tbl td{border:1px solid var(--garis);padding:10px 12px;vertical-align:top;text-align:left}.rv2 .prosa .rv-tbl thead th{background:var(--sage2);color:var(--teks)}.rv2 .prosa .rv-info-l li{background:#fff;border-radius:12px;padding:10px 12px;margin:0}.rv2 .prosa .rv-info-l b{flex:0 0 28px;height:28px;border-radius:50%;background:var(--euc);color:#fff;display:flex;align-items:center;justify-content:center;font-size:14px}.rv2 .prosa .rv-info figcaption{font-size:13.5px;color:var(--sub);margin-top:10px}.rv2 .prosa ul,.rv2 .prosa ol{padding-left:1.3em}.rv2 .prosa .rv-faq summary{color:var(--teks)}.rv2 .art-maklum{display:flex;flex-wrap:wrap;gap:10px;margin-top:10px}@media (max-width:1000px){.rv2 .toc{border:1px solid var(--garis);border-radius:18px;padding:14px 16px;background:#fff}.rv2 .art-grid-3{grid-template-columns:minmax(0,1fr)}.rv2 .art-grid-3>*{min-width:0}}@media (max-width:600px){.rv2 .prosa{font-size:16.5px}.rv2 .prosa .rv-rev-p{padding:14px 16px;gap:12px}.rv2 .prosa .rv-rev-av{flex-basis:40px;width:40px;height:40px;font-size:13px}.rv2 .prosa .rv-rev-n{font-size:16px}.rv2 .prosa .rv-rev-f{padding:12px 16px 0}.rv2 .prosa .rv-rev-note{padding:8px 16px 14px}}<\/style>\n\n\n\n<div class=\"rv2 rv2-kepala\" data-bahasa=\"en\"><div class=\"kepala-laman\"><div class=\"nav-pil\"><a class=\"logo\" href=\"\/en\/\"><img decoding=\"async\" src=\"https:\/\/rosevilleconfinement.com\/wp-content\/uploads\/2026\/10\/roseville-logo-90.webp\" width=\"30\" height=\"33\" alt=\"Roseville\"><span><b>Roseville<\/b><small>Confinement Villa &amp; Spa<\/small><\/span><\/a><nav aria-label=\"Main\"><a href=\"\/en\/harga-pakej-berpantang\/\">Packages<\/a><a href=\"\/en\/bilik\/\">Rooms<\/a><a href=\"\/en\/spa-wanita-bangi\/\">Spa<\/a><a href=\"\/en\/panduan-berpantang\/\" class=\"aktif\" aria-current=\"page\">Guides<\/a><a href=\"\/en\/tentang-kami\/\">About<\/a><a href=\"\/en\/hubungi\/\">Contact<\/a><\/nav><a class=\"bahasa\" href=\"\/spa-muslimah-kajang-putrajaya-cyberjaya\/\" hreflang=\"ms\" lang=\"ms\" title=\"Bahasa Melayu\">BM \u00b7 <b>EN<\/b><\/a><a class=\"btn btn-utama kecil\" href=\"\/en\/tempah-lawatan\/\"><svg class=\"ik\" width=\"18\" height=\"18\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><rect x=\"3\" y=\"5\" width=\"18\" height=\"16\" rx=\"3\"\/><path d=\"M3 10h18M8 3v4M16 3v4\"\/><\/svg><span>Book a Visit<\/span><\/a><button class=\"menu-btn\" type=\"button\" aria-label=\"Menu\" aria-expanded=\"false\"><svg class=\"ik\" width=\"24\" height=\"24\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M4 7h16M4 12h16M4 17h16\"\/><\/svg><\/button><\/div><\/div><\/div>\n\n\n\n<div class=\"rv2\" data-bahasa=\"en\"><div class=\"kemajuan-baca\" data-kemajuan><\/div><section class=\"art-kepala\"><div class=\"wrap\"><nav class=\"remah\" aria-label=\"Breadcrumb\"><a href=\"\/en\/\">Home<\/a> \u203a <a href=\"\/en\/panduan-berpantang\/\">Guides<\/a> \u203a Spa &amp; tradition<\/nav><h1>Muslimah Spa near Putrajaya, Kajang and Cyberjaya: Driving Times, Routes and How to Choose<\/h1><div class=\"art-meta\"><span class=\"lencana-semak\"><svg class=\"ik\" width=\"16\" height=\"16\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M12 3l7 3v6c0 4.5-3 7.5-7 9-4-1.5-7-4.5-7-9V6z\"\/><\/svg> Owner: Dr Fatimah Mustafah, Consultant O&amp;G \u00b7 <a href=\"#penyemak\">details<\/a><\/span><span>Written by the Roseville Spa Team<\/span><span>Published 30 Oct 2026<\/span><span>8 min read<\/span><\/div><\/div><\/section><\/div>\n\n\n\n<div class=\"rv2\" data-bahasa=\"en\"><section class=\"art-badan\"><div class=\"wrap art-grid-3\"><aside class=\"toc\"><b>In this article<\/b><ol data-toc><\/ol><\/aside><article class=\"prosa\" data-prosa><div class=\"rv-ans\"><p class=\"rv-lbl\">Quick answer<\/p><p>Roseville Muslimah Spa in Bangi Gateway is open to all women, with female therapists and a private space. It is about 10.2 km from Kajang town (13 minutes), 12 km from Putrajaya Precinct 1 (16 minutes) and 21.3 km from Cyberjaya (29 minutes), without traffic. Book on WhatsApp; no stay needed.<\/p><\/div>\n<div class=\"rv-rev\" id=\"penyemak\" role=\"group\" aria-label=\"Article authors and reviewers\"><div class=\"rv-rev-p\"><span class=\"rv-rev-av logo\" aria-hidden=\"true\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/rosevilleconfinement.com\/wp-content\/uploads\/2026\/10\/roseville-logo-90.webp\" width=\"24\" height=\"26\" alt=\"\"><\/span><div class=\"rv-rev-i\"><p class=\"rv-rev-k\">Written by<\/p><p class=\"rv-rev-n\">Roseville Spa Team<\/p><p class=\"rv-rev-r\">Women therapists at Roseville Muslimah Spa, Bangi Gateway<\/p><\/div><\/div><div class=\"rv-rev-p\"><span class=\"rv-rev-av logo\" aria-hidden=\"true\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/rosevilleconfinement.com\/wp-content\/uploads\/2026\/10\/roseville-logo-90.webp\" width=\"24\" height=\"26\" alt=\"\"><\/span><div class=\"rv-rev-i\"><p class=\"rv-rev-k\">Published by<\/p><p class=\"rv-rev-n\">Roseville Confinement Villa &amp; Spa<\/p><p class=\"rv-rev-r\">Rose Omnicare Sdn Bhd (1361290-T). Co-owner: Dr Fatimah Mustafah, Consultant Obstetrician &amp; Gynaecologist.<\/p><ul class=\"rv-rev-c\"><li class=\"sah\"><a href=\"https:\/\/merits.mmc.gov.my\/viewDoctor\/11439\/search\" target=\"_blank\" rel=\"nofollow noopener\" title=\"Verify registration MMC 27460\" aria-label=\"Verify registration MMC 27460\">MMC 27460 <svg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M14 4h6v6M20 4l-9 9M18 14v5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h5\"\/><\/svg><\/a><\/li><\/ul><\/div><\/div><p class=\"rv-rev-f\"><span><svg class=\"ik\" width=\"15\" height=\"15\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><rect x=\"3\" y=\"5\" width=\"18\" height=\"16\" rx=\"3\"\/><path d=\"M3 10h18M8 3v4M16 3v4\"\/><\/svg> Updated 30 October 2026<\/span><span><svg class=\"ik\" width=\"15\" height=\"15\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M4 7h16M4 12h16M4 17h16\"\/><\/svg> <a href=\"#rujukan\">4 references<\/a><\/span><\/p><p class=\"rv-rev-note\">This article is general information. Distances and driving times are estimates.<\/p><\/div>\n<figure class=\"rv-info\" aria-label=\"1-minute summary: Muslimah spa near Putrajaya, Kajang and Cyberjaya\"><span class=\"rv-info-k\">1-minute summary<\/span><p class=\"rv-info-t\">Muslimah spa near Putrajaya, Kajang and Cyberjaya<\/p><ol class=\"rv-info-l\"><li><b>1<\/b><span>Kajang 13 min, Putrajaya 16 min, Cyberjaya 29 min, no traffic.<\/span><\/li><li><b>2<\/b><span>Semenyih 17, Seri Kembangan 19, Cheras 20, Dengkil and Balakong 21, Nilai 22 min.<\/span><\/li><li><b>3<\/b><span>Female therapists, private space; only female staff in the spa.<\/span><\/li><li><b>4<\/b><span>Open to all women, including mothers in confinement at home.<\/span><\/li><li><b>5<\/b><span>Pregnant or postnatal? Ask your doctor first; tell the therapist.<\/span><\/li><li><b>6<\/b><span>Book on WhatsApp; pregnant mums can ask about a villa visit.<\/span><\/li><\/ol><figcaption>Roseville Confinement Villa &amp; Spa, Bangi Gateway<\/figcaption><\/figure>\n<p>Need a muslimah spa near Putrajaya, Kajang or Cyberjaya? Here are driving times, routes, session ideas and a checklist for choosing a women-only spa.<\/p>\n<h2 id=\"b1\" class=\"wp-block-heading\">Muslimah spa near Putrajaya, Kajang and Cyberjaya: driving times to Bangi Gateway<\/h2>\n<p>Roseville Muslimah Spa is at Plaza Bangi Perdana, Bangi Gateway, Seksyen 15, Bandar Baru Bangi.<\/p>\n<figure class=\"wp-block-table rv-tbl\"><table><thead><tr><th>From<\/th><th>Distance (approx.)<\/th><th>Minutes without traffic (approx.)<\/th><th>Main route (OSRM suggestion)<\/th><\/tr><\/thead><tbody><tr><td>Kajang town<\/td><td>10.2 km<\/td><td>13<\/td><td>Jalan Reko, Jalan Bangi (B17)<\/td><\/tr><tr><td>Putrajaya (Precinct 1)<\/td><td>12.0 km<\/td><td>16<\/td><td>Persiaran INSPEN, Jalan Ayer Hitam (B13)<\/td><\/tr><tr><td>Semenyih<\/td><td>13.6 km<\/td><td>17<\/td><td>Jalan Bangi Lama (31), Jalan Bangi-Kajang (B17)<\/td><\/tr><tr><td>Seri Kembangan<\/td><td>16.9 km<\/td><td>19<\/td><td>Sungai Besi Expressway (E9), North-South Expressway (E2)<\/td><\/tr><tr><td>Cheras (Batu 9)<\/td><td>19.9 km<\/td><td>20<\/td><td>Cheras-Kajang Expressway (E7), Jalan Reko<\/td><\/tr><tr><td>Dengkil<\/td><td>19.2 km<\/td><td>21<\/td><td>Jalan Banting-Semenyih (31), North-South Expressway (E2)<\/td><\/tr><tr><td>Balakong<\/td><td>20.4 km<\/td><td>21<\/td><td>SILK (E18), Sungai Besi Expressway (E9), North-South Expressway (E2)<\/td><\/tr><tr><td>Nilai (Negeri Sembilan)<\/td><td>22.3 km<\/td><td>22<\/td><td>North-South Expressway (E2)<\/td><\/tr><tr><td>Cyberjaya<\/td><td>21.3 km<\/td><td>29<\/td><td>Persiaran Persekutuan, Putrajaya, Jalan Ayer Hitam (B13)<\/td><\/tr><\/tbody><\/table><\/figure>\n<p><strong>How we measured:<\/strong> areas were mapped with OpenStreetMap and routes measured with OSRM on 28 October 2026. Points represent areas, not homes, and traffic is excluded.<\/p>\n<h2 id=\"b2\" class=\"wp-block-heading\">From Putrajaya, Cyberjaya and Dengkil: routes and session ideas<\/h2>\n<h3 class=\"wp-block-heading\">Putrajaya: a massage for working women<\/h3>\n<p>From Precinct 1, the OSRM route runs via Persiaran INSPEN and Jalan Ayer Hitam (B13): about 12 km, 16 minutes without traffic.<\/p>\n<p>Working in Putrajaya? Ask on WhatsApp a day or two ahead for a slot that fits your working hours. The Essential package covers a back, head, neck and shoulder massage, and a foot spa.<\/p>\n<h3 class=\"wp-block-heading\">Cyberjaya: plan one fuller session<\/h3>\n<p>From Cyberjaya, the OSRM route runs via Persiaran APEC into Putrajaya, then as above: about 21.3 km, 29 minutes without traffic.<\/p>\n<p>For a drive of almost half an hour, choose a longer session, such as Signature: a full-body massage, face mask and two extras like a herbal bath or hair wash. A friend from Putrajaya can come along.<\/p>\n<h3 class=\"wp-block-heading\">Dengkil: for mothers in confinement at home<\/h3>\n<p>From Dengkil, the OSRM route runs via Jalan Banting-Semenyih (route 31) and the North-South Expressway (E2): about 19.2 km, 21 minutes without traffic.<\/p>\n<p>Mothers in confinement at home can book a herbal bath, sitz bath, warm compress (tuam) or hair wash without staying. See when to start in our <a href=\"\/en\/mandian-herba-selepas-bersalin\/\">postpartum herbal bath<\/a> guide; after a C-section or complications, ask your doctor first.<\/p>\n<div class=\"rv-tip\"><p class=\"rv-lbl\">Tip from the Roseville team<\/p><p>Check your navigation app for your departure time, then add 15 to 20 minutes for peak-hour expressway trips from Cyberjaya, Nilai and Balakong.<\/p><\/div>\n<h2 id=\"b3\" class=\"wp-block-heading\">From Kajang, Semenyih, Cheras and Balakong: routes and session ideas<\/h2>\n<p>Looking for a ladies&#8217; spa near Kajang? Bangi Gateway is within the Kajang Municipal Council (MPKj) area, and Roseville is licensed by MPKj (account LBUS-12972).<\/p>\n<h3 class=\"wp-block-heading\">Kajang: a short drive for a short session<\/h3>\n<p>From Kajang town centre, the OSRM route runs via Jalan Reko and Jalan Bangi (B17): about 10.2 km, 13 minutes without traffic.<\/p>\n<p>A drive this short suits a quick foot spa or hair wash. After a C-section, the NHS says you will not be able to drive for a few weeks, possibly around 6 weeks, so ask family to drive you. See our <a href=\"\/en\/urut-selepas-bersalin\/\">postnatal massage<\/a> guide.<\/p>\n<h3 class=\"wp-block-heading\">Semenyih: combine the spa with a villa visit<\/h3>\n<p>From Semenyih, the OSRM route runs via Jalan Bangi Lama (route 31) and Jalan Bangi-Kajang (B17): about 13.6 km, 17 minutes without traffic.<\/p>\n<p>Pregnant and choosing a confinement centre? Pair a spa session with a free villa visit (by appointment, 9.00 am to 6.00 pm, 30 to 45 minutes) and ask about both on one day. Read our <a href=\"\/en\/urut-ibu-mengandung\/\">prenatal massage<\/a> guide and guide to <a href=\"\/en\/pusat-berpantang-kajang-putrajaya-cyberjaya\/\">confinement centres near Kajang, Putrajaya and Cyberjaya<\/a>.<\/p>\n<h3 class=\"wp-block-heading\">Cheras (Batu 9) and Balakong: a monthly membership<\/h3>\n<p>From Cheras Batu 9, the OSRM route runs via the Cheras-Kajang Expressway (E7) and Jalan Reko: about 19.9 km, 20 minutes. From Balakong, via SILK (E18), the Sungai Besi Expressway (E9) and the North-South Expressway (E2): about 20.4 km, 21 minutes. Both without traffic.<\/p>\n<p>Coming monthly? The <a href=\"\/en\/keahlian-spa\/\">6-month spa membership<\/a> gives one session a month. Keep the same day and time each month, outside expressway peak hours.<\/p>\n<h2 id=\"b4\" class=\"wp-block-heading\">From Seri Kembangan and Nilai: via the North-South Expressway<\/h2>\n<h3 class=\"wp-block-heading\">Seri Kembangan: the Pantang Closing Package<\/h3>\n<p>From Seri Kembangan, the OSRM route runs via the Sungai Besi Expressway (E9) and the North-South Expressway (E2): about 16.9 km, 19 minutes without traffic.<\/p>\n<p>For mothers in confinement at home, the Pantang Closing Package covers a sauna, foot spa, massages (full-body, urutan sengkak and postnatal breast), warm compress, body scrub and herbal bath. See <a href=\"\/en\/penutup-pantang-hari-ke-berapa\/\">when to close your confinement<\/a>; after a C-section, get your doctor&#8217;s go-ahead first.<\/p>\n<h3 class=\"wp-block-heading\">Nilai: a facial, or a gift for your wife or mother<\/h3>\n<p>From Bandar Baru Nilai, the OSRM route runs via Persiaran Pusat Bandar and the North-South Expressway (E2): about 22.3 km, 22 minutes without traffic. This is close to Dengkil, although Nilai is in Negeri Sembilan.<\/p>\n<p>The Roseville facial covers cleansing, steam, a gentle scrub, masks, moisturiser and sunscreen; see <a href=\"\/en\/facial-berapa-kali-sebulan\/\">how often to get a facial<\/a>. For a gift, see our <a href=\"\/en\/hadiah-untuk-isteri\/\">gift ideas for your wife<\/a> and ask about vouchers on WhatsApp.<\/p>\n<div class=\"rv-cta\"><p class=\"rv-cta-t\">Book a slot at Roseville Muslimah Spa<\/p><p>Browse the spa menu, then WhatsApp us your session and starting area.<\/p><div class=\"rv-cta-b\"><a class=\"rv-btn\" href=\"\/en\/spa-wanita-bangi\/\">See the spa menu<\/a><a class=\"rv-btn rv-btn-2\" href=\"https:\/\/wa.me\/601155599174?text=Hi%20Roseville%2C%20I%20read%20your%20article%20%22Muslimah%20Spa%20near%20Putrajaya%2C%20Kajang%20and%20Cyberjaya%3A%20Driving%20Times%2C%20Routes%20and%20How%20to%20Choose%22%20and%20would%20like%20to%20ask%20about%20a%20slot%20at%20Roseville%20Muslimah%20Spa.\" target=\"_blank\" rel=\"noopener\">Book a slot on WhatsApp<\/a><\/div><\/div>\n<h2 id=\"b5\" class=\"wp-block-heading\">How to choose a muslimah spa: 7 things to ask<\/h2>\n<figure class=\"wp-block-table rv-tbl\"><table><thead><tr><th>Item<\/th><th>Question to ask<\/th><th>Note<\/th><\/tr><\/thead><tbody><tr><td>Therapists and privacy<\/td><td>Are all therapists female, and is there a private space?<\/td><td>Ask who may enter.<\/td><\/tr><tr><td>Aurat<\/td><td>How is the body covered during massages and baths?<\/td><td>Ask before you go.<\/td><\/tr><tr><td>Prayer times<\/td><td>Is there a prayer space for spa guests?<\/td><td>Avoid prayer times when booking.<\/td><\/tr><tr><td>Hygiene<\/td><td>Are towels, sheets and tools changed for each guest?<\/td><td>Check at your first visit.<\/td><\/tr><tr><td>Prices<\/td><td>Are prices shown clearly, including extras?<\/td><td>Ask for a written list.<\/td><\/tr><tr><td>Pregnant or postnatal<\/td><td>Which sessions suit me, and what should I avoid?<\/td><td>Ask your doctor; tell the therapist.<\/td><\/tr><tr><td>Licence<\/td><td>Are the premises licensed by the local council?<\/td><td>MPKj, for example, publishes licensing guidelines for beauty and wellness centres.<\/td><\/tr><\/tbody><\/table><\/figure>\n<p>At Roseville Muslimah Spa, therapists are women, the space is private and only female staff enter the spa. Prices are on the <a href=\"\/en\/spa-wanita-bangi\/\">spa menu<\/a> page; ask us on WhatsApp about aurat or prayer space.<\/p>\n<h2 id=\"b6\" class=\"wp-block-heading\">What is on offer at Roseville Muslimah Spa?<\/h2>\n<p>Sessions are for comfort and rest, not for medical purposes. Planning your confinement? See our <a href=\"\/en\/pusat-berpantang-mesra-muslim\/\">Muslim-friendly confinement centre<\/a> guide.<\/p>\n<ul class=\"wp-block-list\">\n<li><strong>Packages:<\/strong> Essential (back, head, neck and shoulder massage, foot spa, sauna or herbal bath), Signature (full-body massage, face and eye masks, two choices) and Facial.<\/li>\n<li><strong>\u00c0 la carte:<\/strong> foot spa, scrub, warm compress, massage, far-infrared sauna, herbal, sitz, milk or flower bath, hair wash.<\/li>\n<li><strong>Ask first:<\/strong> tummy and waist, postnatal breast, and prenatal and postnatal massage, plus the Pantang Closing Package.<\/li>\n<li><strong>6-month membership<\/strong> (Serenity, Radiance or Signature): one session a month.<\/li>\n<\/ul>\n<p>Considering the sauna? Read our <a href=\"\/en\/sauna-untuk-apa\/\">sauna safety guide<\/a> first if pregnant or postnatal.<\/p>\n<h2 id=\"b7\" class=\"wp-block-heading\">How to book a spa slot from Kajang, Putrajaya or Cyberjaya<\/h2>\n<ol class=\"wp-block-list\">\n<li>Pick a session from the <a href=\"\/en\/spa-wanita-bangi\/\">spa menu<\/a> or <a href=\"\/en\/keahlian-spa\/\">membership<\/a> page.<\/li>\n<li>WhatsApp 011-5559 9174 with the session, date and starting area; mention any pregnancy, recent birth or C-section.<\/li>\n<li>Get directions on our <a href=\"\/en\/hubungi\/\">Contact<\/a> page.<\/li>\n<li>Pregnant? Ask about a <a href=\"\/en\/tempah-lawatan\/\">free villa visit<\/a> the same day, and read <a href=\"\/en\/bila-tempah-pusat-berpantang\/\">when to book a confinement centre<\/a>.<\/li>\n<\/ol>\n<div class=\"rv-cta\"><p class=\"rv-cta-t\">Coming once a month? See the 6-month spa membership<\/p><p>One session a month for six months, subject to availability. Ask about gift vouchers on WhatsApp.<\/p><div class=\"rv-cta-b\"><a class=\"rv-btn\" href=\"\/en\/keahlian-spa\/\">See spa membership<\/a><a class=\"rv-btn rv-btn-2\" href=\"https:\/\/wa.me\/601155599174?text=Hi%20Roseville%2C%20I%20read%20your%20article%20%22Muslimah%20Spa%20near%20Putrajaya%2C%20Kajang%20and%20Cyberjaya%3A%20Driving%20Times%2C%20Routes%20and%20How%20to%20Choose%22%20and%20would%20like%20to%20ask%20about%20a%20slot%20at%20Roseville%20Muslimah%20Spa.\" target=\"_blank\" rel=\"noopener\">Ask on WhatsApp<\/a><\/div><\/div>\n<h2 id=\"b8\" class=\"wp-block-heading\">Frequently asked questions<\/h2>\n<div class=\"rv-faq\"><details><summary>Is there a muslimah spa near Putrajaya?<\/summary><p>Roseville Muslimah Spa in Bangi Gateway is about 12 km or 16 minutes without traffic from Putrajaya Precinct 1, via Jalan Ayer Hitam (B13). It is open to all women, with female therapists and a private space. Book a slot on WhatsApp.<\/p><\/details><details><summary>How far is Roseville Muslimah Spa from Kajang and Cyberjaya?<\/summary><p>From Kajang town, about 10.2 km or 13 minutes via Jalan Reko. From Cyberjaya, about 21.3 km or 29 minutes via Putrajaya. These are no-traffic OSRM estimates; check your navigation app before you leave.<\/p><\/details><details><summary>How much does a muslimah spa cost?<\/summary><p>It depends on the session, such as a foot spa, facial or full-body massage. Prices can change, so we do not list them here; current Roseville prices are on the spa menu page. Elsewhere, ask for a written price list first.<\/p><\/details><details><summary>How do I choose a muslimah spa near me?<\/summary><p>Check that therapists are women, sessions are private, prices are clear and the premises are licensed by the local council. Ask how aurat is kept covered and about prayer space, then compare driving times at your usual hour.<\/p><\/details><details><summary>Can pregnant women or new mothers go to a muslimah spa?<\/summary><p>Ask your doctor first, especially before a massage, sauna or hot bath, or after a C-section. Tell the therapist your weeks of pregnancy or delivery date. Roseville&#8217;s menu includes prenatal and postnatal massage adapted to you; ask on WhatsApp first.<\/p><\/details><\/div>\n<div class=\"rv-src\" id=\"rujukan\"><p class=\"rv-lbl\">References<\/p><ol><li><a href=\"https:\/\/www.openstreetmap.org\/copyright\" target=\"_blank\" rel=\"noopener\">Copyright and License (map data, OpenStreetMap contributors, ODbL)<\/a>, OpenStreetMap Foundation, 2026<\/li><li><a href=\"https:\/\/project-osrm.org\/\" target=\"_blank\" rel=\"noopener\">Project OSRM (Open Source Routing Machine)<\/a>, Project OSRM, 2026<\/li><li><a href=\"https:\/\/www.nhs.uk\/tests-and-treatments\/caesarean-section\/recovery\/\" target=\"_blank\" rel=\"noopener\">Caesarean section: recovery<\/a>, NHS (UK), 2023<\/li><li><a href=\"https:\/\/www.mpkj.gov.my\/index.php\/ms\/komuniti\/perkhidmatan\/pelesenan\" target=\"_blank\" rel=\"noopener\">Pelesenan (Licensing): Licensing Guidelines, in Malay<\/a>, Majlis Perbandaran Kajang (MPKj), 2026<\/li><\/ol><\/div>\n<p class=\"rv-disc\">This article is general information. Distances and driving times are estimates without traffic; check your navigation app before you leave. Roseville is a confinement care centre and women&#8217;s spa, not a clinic or hospital. Spa sessions are for comfort and rest, not for medical purposes. If you are pregnant, have just given birth or have a health condition, get your doctor&#8217;s advice before a spa session.<\/p>\n<script type=\"application\/ld+json\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\/\/rosevilleconfinement.com\/en\/spa-muslimah-kajang-putrajaya-cyberjaya\/#article\",\"headline\":\"Muslimah Spa near Putrajaya, Kajang and Cyberjaya: Driving Times, Routes and How to Choose\",\"description\":\"Looking for a muslimah spa near Putrajaya, Kajang or Cyberjaya? See driving times and routes to Roseville Muslimah Spa in Bangi Gateway, plus a checklist.\",\"inLanguage\":\"en\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/rosevilleconfinement.com\/en\/spa-muslimah-kajang-putrajaya-cyberjaya\/#webpage\"},\"image\":\"https:\/\/rosevilleconfinement.com\/wp-content\/uploads\/2026\/10\/spa-muslimah-kajang-putrajaya-cyberjaya-infographic-summary-en.jpg\",\"author\":{\"@type\":\"Organization\",\"name\":\"Roseville Spa Team\",\"url\":\"https:\/\/rosevilleconfinement.com\/\",\"parentOrganization\":{\"@id\":\"https:\/\/rosevilleconfinement.com\/#organization\"}},\"publisher\":{\"@id\":\"https:\/\/rosevilleconfinement.com\/#organization\"},\"about\":[{\"@type\":\"Thing\",\"name\":\"Muslimah spa\"},{\"@type\":\"Place\",\"name\":\"Putrajaya\"},{\"@type\":\"Place\",\"name\":\"Kajang, Selangor\"},{\"@type\":\"Place\",\"name\":\"Cyberjaya, Selangor\"}],\"keywords\":\"muslimah spa putrajaya, muslimah spa kajang, muslimah spa cyberjaya, ladies spa kajang, women-only spa near kajang, muslimah spa near me, women-only spa putrajaya, muslimah spa seri kembangan, muslimah spa semenyih, muslimah spa nilai\",\"articleSection\":\"Confinement Guides\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/rosevilleconfinement.com\/en\/spa-muslimah-kajang-putrajaya-cyberjaya\/#webpage\",\"url\":\"https:\/\/rosevilleconfinement.com\/en\/spa-muslimah-kajang-putrajaya-cyberjaya\/\",\"name\":\"Muslimah Spa near Putrajaya, Kajang and Cyberjaya: Driving Times, Routes and How to Choose\",\"inLanguage\":\"en\",\"isPartOf\":{\"@id\":\"https:\/\/rosevilleconfinement.com\/#website\"},\"breadcrumb\":{\"@id\":\"https:\/\/rosevilleconfinement.com\/en\/spa-muslimah-kajang-putrajaya-cyberjaya\/#breadcrumb\"},\"primaryImageOfPage\":{\"@type\":\"ImageObject\",\"url\":\"https:\/\/rosevilleconfinement.com\/wp-content\/uploads\/2026\/10\/spa-muslimah-kajang-putrajaya-cyberjaya-infographic-summary-en.jpg\"}},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/rosevilleconfinement.com\/#website\",\"url\":\"https:\/\/rosevilleconfinement.com\/\",\"name\":\"Roseville Confinement Villa & Spa\",\"inLanguage\":[\"ms-MY\",\"en\"],\"publisher\":{\"@id\":\"https:\/\/rosevilleconfinement.com\/#organization\"}},{\"@type\":[\"Organization\",\"LocalBusiness\"],\"@id\":\"https:\/\/rosevilleconfinement.com\/#organization\",\"name\":\"Roseville Confinement Villa & Spa\",\"legalName\":\"Rose Omnicare Sdn Bhd\",\"url\":\"https:\/\/rosevilleconfinement.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\/\/rosevilleconfinement.com\/wp-content\/uploads\/2023\/07\/350.png\",\"width\":516,\"height\":100},\"telephone\":\"+601155599174\",\"email\":\"villaroseville@gmail.com\",\"address\":{\"@type\":\"PostalAddress\",\"streetAddress\":\"No 2-17 & 2-18, Plaza Bangi Perdana, Jalan Gerbang Wawasan 1, Bangi Gateway, Seksyen 15\",\"addressLocality\":\"Bandar Baru Bangi\",\"addressRegion\":\"Selangor\",\"postalCode\":\"43650\",\"addressCountry\":\"MY\"},\"sameAs\":[\"https:\/\/www.facebook.com\/rosevilleconfinement\",\"https:\/\/www.instagram.com\/rosevilleconfinement\/\"],\"identifier\":[{\"@type\":\"PropertyValue\",\"propertyID\":\"SSM\",\"value\":\"1361290-T\"},{\"@type\":\"PropertyValue\",\"propertyID\":\"Lesen Majlis Perbandaran Kajang (MPKj)\",\"value\":\"LBUS-12972\"}]},{\"@type\":\"FAQPage\",\"@id\":\"https:\/\/rosevilleconfinement.com\/en\/spa-muslimah-kajang-putrajaya-cyberjaya\/#faq\",\"inLanguage\":\"en\",\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"Is there a muslimah spa near Putrajaya?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Roseville Muslimah Spa in Bangi Gateway is about 12 km or 16 minutes without traffic from Putrajaya Precinct 1, via Jalan Ayer Hitam (B13). It is open to all women, with female therapists and a private space. Book a slot on WhatsApp.\"}},{\"@type\":\"Question\",\"name\":\"How far is Roseville Muslimah Spa from Kajang and Cyberjaya?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"From Kajang town, about 10.2 km or 13 minutes via Jalan Reko. From Cyberjaya, about 21.3 km or 29 minutes via Putrajaya. These are no-traffic OSRM estimates; check your navigation app before you leave.\"}},{\"@type\":\"Question\",\"name\":\"How much does a muslimah spa cost?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"It depends on the session, such as a foot spa, facial or full-body massage. Prices can change, so we do not list them here; current Roseville prices are on the spa menu page. Elsewhere, ask for a written price list first.\"}},{\"@type\":\"Question\",\"name\":\"How do I choose a muslimah spa near me?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Check that therapists are women, sessions are private, prices are clear and the premises are licensed by the local council. Ask how aurat is kept covered and about prayer space, then compare driving times at your usual hour.\"}},{\"@type\":\"Question\",\"name\":\"Can pregnant women or new mothers go to a muslimah spa?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Ask your doctor first, especially before a massage, sauna or hot bath, or after a C-section. Tell the therapist your weeks of pregnancy or delivery date. Roseville's menu includes prenatal and postnatal massage adapted to you; ask on WhatsApp first.\"}}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/rosevilleconfinement.com\/en\/spa-muslimah-kajang-putrajaya-cyberjaya\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/rosevilleconfinement.com\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Confinement Guides\",\"item\":\"https:\/\/rosevilleconfinement.com\/en\/category\/panduan-berpantang\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Muslimah Spa near Putrajaya, Kajang and Cyberjaya: Driving Times, Routes and How to Choose\",\"item\":\"https:\/\/rosevilleconfinement.com\/en\/spa-muslimah-kajang-putrajaya-cyberjaya\/\"}]}]}<\/script><\/article><aside class=\"rel-kongsi\"><b>Share<\/b><a href=\"whatsapp:\/\/send?text=Muslimah%20Spa%20near%20Putrajaya%2C%20Kajang%20and%20Cyberjaya%3A%20Driving%20Times%2C%20Routes%20and%20How%20to%20Choose%20https%3A%2F%2Frosevilleconfinement.com%2Fen%2Fspa-muslimah-kajang-putrajaya-cyberjaya%2F%3Futm_source%3Dwhatsapp%26utm_medium%3Dshare%26utm_campaign%3Dartikel_spa-muslimah-kajang-putrajaya-cyberjaya\" data-kongsi=\"whatsapp\" data-item=\"spa-muslimah-kajang-putrajaya-cyberjaya\" title=\"WhatsApp\" aria-label=\"WhatsApp\"><svg class=\"ik\" width=\"20\" height=\"20\" viewbox=\"0 0 24 24\" aria-hidden=\"true\"><path fill=\"currentColor\" d=\"M12 2a10 10 0 0 0-8.7 14.9L2 22l5.3-1.3A10 10 0 1 0 12 2zm0 18.2a8.2 8.2 0 0 1-4.2-1.2l-.3-.2-3.1.8.8-3-.2-.3A8.2 8.2 0 1 1 12 20.2zm4.5-6.1c-.2-.1-1.5-.7-1.7-.8s-.4-.1-.6.1-.7.8-.8 1-.3.2-.5.1a6.7 6.7 0 0 1-3.3-2.9c-.3-.4.2-.4.7-1.3.1-.2 0-.3 0-.4l-.8-1.8c-.2-.5-.4-.4-.6-.4h-.5a1 1 0 0 0-.7.3 3 3 0 0 0-.9 2.2 5.2 5.2 0 0 0 1.1 2.7 11.9 11.9 0 0 0 4.6 4 5.2 5.2 0 0 0 3.2.7 2.7 2.7 0 0 0 1.8-1.3 2.2 2.2 0 0 0 .2-1.3c-.1-.1-.3-.2-.5-.3z\"\/><\/svg><\/a><a href=\"https:\/\/www.facebook.com\/sharer\/sharer.php?u=https%3A%2F%2Frosevilleconfinement.com%2Fen%2Fspa-muslimah-kajang-putrajaya-cyberjaya%2F%3Futm_source%3Dfacebook%26utm_medium%3Dshare%26utm_campaign%3Dartikel_spa-muslimah-kajang-putrajaya-cyberjaya\" target=\"_blank\" rel=\"noopener\" data-kongsi=\"facebook\" data-item=\"spa-muslimah-kajang-putrajaya-cyberjaya\" title=\"Facebook\" aria-label=\"Facebook\">f<\/a><button type=\"button\" data-salin=\"https:\/\/rosevilleconfinement.com\/en\/spa-muslimah-kajang-putrajaya-cyberjaya\/\" data-item=\"spa-muslimah-kajang-putrajaya-cyberjaya\" title=\"Copy link\" aria-label=\"Copy link\"><svg class=\"ik\" width=\"18\" height=\"18\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M10 14a4 4 0 0 0 5.7 0l3-3a4 4 0 0 0-5.7-5.7l-1 1M14 10a4 4 0 0 0-5.7 0l-3 3a4 4 0 0 0 5.7 5.7l1-1\"\/><\/svg><\/button><\/aside><\/div><\/section><\/div>\n\n\n\n<div class=\"rv2\" data-bahasa=\"en\"><section class=\"blok lembut\"><div class=\"wrap art-akhir\"><div class=\"kad-panduan\"><div data-maklum-kotak data-terima-kasih=\"Thank you for your feedback.\"><h3>Was this article helpful?<\/h3><div class=\"art-maklum\"><button class=\"btn btn-garis\" type=\"button\" data-maklum=\"ya\" data-item=\"spa-muslimah-kajang-putrajaya-cyberjaya\">Yes, helpful<\/button><button class=\"btn btn-garis\" type=\"button\" data-maklum=\"kurang\" data-item=\"spa-muslimah-kajang-putrajaya-cyberjaya\">Not clear enough<\/button><\/div><\/div><hr><h3>Questions about spa &amp; tradition?<\/h3><p>Ask our carers, or visit the villa to talk it through in person.<\/p><div class=\"cta-baris\"><a class=\"btn btn-wa\" href=\"https:\/\/wa.me\/601155599174?text=Hi%20Roseville%2C%20I%20am%20on%20your%20%22Muslimah%20Spa%20near%20Putrajaya%2C%20Kajang%20and%20Cyberjaya%3A%20Driving%20Times%2C%20Routes%20and%20How%20to%20Choose%22%20page.%20I%20would%20like%20to%20ask%20about%20spa%20%26%20tradition.%0A%0ARef%3A%20RV-ART-SPA-KAWASAN-END\" target=\"_blank\" rel=\"noopener\" data-wa-kod=\"RV-ART-SPA-KAWASAN-END\" data-wa-topik=\"spa &amp; tradition\" data-wa-kedudukan=\"hujung-artikel\"><svg class=\"ik\" width=\"20\" height=\"20\" viewbox=\"0 0 24 24\" aria-hidden=\"true\"><path fill=\"currentColor\" d=\"M12 2a10 10 0 0 0-8.7 14.9L2 22l5.3-1.3A10 10 0 1 0 12 2zm0 18.2a8.2 8.2 0 0 1-4.2-1.2l-.3-.2-3.1.8.8-3-.2-.3A8.2 8.2 0 1 1 12 20.2zm4.5-6.1c-.2-.1-1.5-.7-1.7-.8s-.4-.1-.6.1-.7.8-.8 1-.3.2-.5.1a6.7 6.7 0 0 1-3.3-2.9c-.3-.4.2-.4.7-1.3.1-.2 0-.3 0-.4l-.8-1.8c-.2-.5-.4-.4-.6-.4h-.5a1 1 0 0 0-.7.3 3 3 0 0 0-.9 2.2 5.2 5.2 0 0 0 1.1 2.7 11.9 11.9 0 0 0 4.6 4 5.2 5.2 0 0 0 3.2.7 2.7 2.7 0 0 0 1.8-1.3 2.2 2.2 0 0 0 .2-1.3c-.1-.1-.3-.2-.5-.3z\"\/><\/svg><span>Ask our carers<\/span><\/a><a class=\"btn btn-utama\" href=\"\/en\/tempah-lawatan\/\"><svg class=\"ik\" width=\"18\" height=\"18\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><rect x=\"3\" y=\"5\" width=\"18\" height=\"16\" rx=\"3\"\/><path d=\"M3 10h18M8 3v4M16 3v4\"\/><\/svg><span>Book a Villa Visit<\/span><\/a><\/div><\/div><div><h3 class=\"kecil-tajuk\">Read next<\/h3><div class=\"art-grid satu\"><a class=\"kad-art\" href=\"\/en\/mandian-herba-selepas-bersalin\/\"><div class=\"bingkai\"><div class=\"sampul s2\"><svg class=\"ik\" width=\"30\" height=\"30\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M12 21c-4 0-7-3-7-7 3 0 5 1 7 4 2-3 4-4 7-4 0 4-3 7-7 7zM12 14c-2-3-2-7 0-10 2 3 2 7 0 10z\"\/><\/svg><b>Spa &amp; tradition<\/b><span>Roseville guide<\/span><\/div><\/div>\n<div class=\"isi\"><span class=\"cip\">Spa &amp; tradition<\/span><h3>Postpartum Herbal Bath (Mandian Herba): When to Start and How to Stay Safe<\/h3><p>When to start, how to do it safely, and what tradition and research say about herbal baths.<\/p>\n<span class=\"meta\"><svg class=\"ik\" width=\"14\" height=\"14\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M12 3l7 3v6c0 4.5-3 7.5-7 9-4-1.5-7-4.5-7-9V6z\"\/><\/svg> Reviewed by Dr Fatimah Mustafah, O&amp;G \u00b7 8 min read<\/span><\/div><\/a><a class=\"kad-art\" href=\"\/en\/urut-selepas-bersalin\/\"><div class=\"bingkai\"><div class=\"sampul s1\"><svg class=\"ik\" width=\"30\" height=\"30\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M3 18V8a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v10M3 14h18M7 10h4\"\/><\/svg><b>Spa &amp; tradition<\/b><span>Roseville guide<\/span><\/div><\/div>\n<div class=\"isi\"><span class=\"cip\">Spa &amp; tradition<\/span><h3>Postnatal Massage After Birth: When to Start, How Many Sessions and Who Should Wait<\/h3><p>When to start after a normal delivery or caesarean, what happens in a session, and who should wait.<\/p>\n<span class=\"meta\"><svg class=\"ik\" width=\"14\" height=\"14\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M12 3l7 3v6c0 4.5-3 7.5-7 9-4-1.5-7-4.5-7-9V6z\"\/><\/svg> Reviewed by Dr Fatimah Mustafah, O&amp;G \u00b7 8 min read<\/span><\/div><\/a><a class=\"kad-art\" href=\"\/en\/urut-ibu-mengandung\/\"><div class=\"bingkai\"><div class=\"sampul s2\"><svg class=\"ik\" width=\"30\" height=\"30\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M12 21c-4 0-7-3-7-7 3 0 5 1 7 4 2-3 4-4 7-4 0 4-3 7-7 7zM12 14c-2-3-2-7 0-10 2 3 2 7 0 10z\"\/><\/svg><b>Spa &amp; tradition<\/b><span>Roseville guide<\/span><\/div><\/div>\n<div class=\"isi\"><span class=\"cip\">Spa &amp; tradition<\/span><h3>Prenatal Massage in Pregnancy: Is It Safe, Which Position and When to Avoid It<\/h3><p>When pregnancy massage is an option, safe positions, areas to avoid and warning signs.<\/p>\n<span class=\"meta\"><svg class=\"ik\" width=\"14\" height=\"14\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M12 3l7 3v6c0 4.5-3 7.5-7 9-4-1.5-7-4.5-7-9V6z\"\/><\/svg> Reviewed by Dr Fatimah Mustafah, O&amp;G \u00b7 8 min read<\/span><\/div><\/a><\/div><\/div><\/div><\/section><\/div>\n\n\n\n<div class=\"rv2 rv2-kaki\" data-bahasa=\"en\"><footer class=\"kaki\"><div class=\"wrap\"><div class=\"kaki-grid\"><div><a class=\"logo\" href=\"\/en\/\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/rosevilleconfinement.com\/wp-content\/uploads\/2026\/10\/roseville-logo-90.webp\" width=\"30\" height=\"33\" alt=\"\"><span><b>Roseville<\/b><small>Confinement Villa &amp; Spa<\/small><\/span><\/a><p>A Shariah-friendly confinement centre and women&#x27;s spa in Bangi Gateway. A postnatal care centre, not a clinic or hospital.<\/p><\/div><div><b>Confinement<\/b><a href=\"\/en\/harga-pakej-berpantang\/\">Packages &amp; prices<\/a><a href=\"\/en\/bilik\/\">Rooms &amp; villa<\/a><a href=\"\/en\/tempah-lawatan\/\">Book a visit<\/a><a href=\"\/en\/pelan-pantang\/\">Free Confinement Plan<\/a><\/div><div><b>Spa<\/b><a href=\"\/en\/spa-wanita-bangi\/\">Spa menu<\/a><a href=\"\/en\/keahlian-spa\/\">Membership<\/a><a href=\"\/en\/panduan-berpantang\/\">Confinement guides<\/a><a href=\"\/en\/soalan-lazim\/\">FAQ<\/a><\/div><div><b>Contact<\/b><a href=\"tel:+601155599174\">Call <span class=\"no-tel\">011-5559 9174<\/span><\/a><a href=\"https:\/\/wa.me\/601155599174?text=Hi%20Roseville%2C%20I%20am%20on%20your%20%22Muslimah%20Spa%20near%20Putrajaya%2C%20Kajang%20and%20Cyberjaya%3A%20Driving%20Times%2C%20Routes%20and%20How%20to%20Choose%22%20page.%20I%20would%20like%20to%20ask%3A%0A%0ARef%3A%20RV-ART-SPA-KAWASAN-FOOTER\" target=\"_blank\" rel=\"noopener\" data-wa-kod=\"RV-ART-SPA-KAWASAN-FOOTER\" data-wa-kedudukan=\"footer\">WhatsApp <span class=\"no-tel\">011-5559 9174<\/span><\/a><a href=\"tel:+60389259174\">Office line <span class=\"no-tel\">03-8925 9174<\/span><\/a><a href=\"mailto:villaroseville@gmail.com\">villaroseville@gmail.com<\/a><a href=\"https:\/\/www.google.com\/maps\/dir\/?api=1&amp;destination=Roseville%20Confinement%20Villa%20Bangi\" target=\"_blank\" rel=\"noopener\">Plaza Bangi Perdana, Bangi Gateway<\/a><a href=\"\/en\/tentang-kami\/\">About Roseville<\/a><\/div><\/div><div class=\"kaki-bawah\"><span>\u00a9 2026 Rose Omnicare Sdn Bhd (1361290-T) \u00b7 Kajang Municipal Council licence LBUS-12972 \u00b7 Roseville Confinement Villa &amp; Spa<\/span><span><a href=\"https:\/\/www.facebook.com\/rosevilleconfinement\" target=\"_blank\" rel=\"noopener\">Facebook \/rosevilleconfinement<\/a> \u00b7 <a href=\"https:\/\/www.instagram.com\/rosevilleconfinement\/\" target=\"_blank\" rel=\"noopener\">Instagram @rosevilleconfinement<\/a><\/span><\/div><\/div><\/footer><\/div>\n\n\n\n<div class=\"rv2 rv2-terapung\" data-bahasa=\"en\"><a class=\"wa-terapung\" href=\"https:\/\/wa.me\/601155599174?text=Hi%20Roseville%2C%20I%20am%20on%20your%20%22Muslimah%20Spa%20near%20Putrajaya%2C%20Kajang%20and%20Cyberjaya%3A%20Driving%20Times%2C%20Routes%20and%20How%20to%20Choose%22%20page.%20I%20would%20like%20to%20ask%3A%0A%0ARef%3A%20RV-ART-SPA-KAWASAN-FLOAT\" target=\"_blank\" rel=\"noopener\" data-wa-kod=\"RV-ART-SPA-KAWASAN-FLOAT\" data-wa-kedudukan=\"float\" aria-label=\"WhatsApp Roseville\"><svg class=\"ik\" width=\"20\" height=\"20\" viewbox=\"0 0 24 24\" aria-hidden=\"true\"><path fill=\"currentColor\" d=\"M12 2a10 10 0 0 0-8.7 14.9L2 22l5.3-1.3A10 10 0 1 0 12 2zm0 18.2a8.2 8.2 0 0 1-4.2-1.2l-.3-.2-3.1.8.8-3-.2-.3A8.2 8.2 0 1 1 12 20.2zm4.5-6.1c-.2-.1-1.5-.7-1.7-.8s-.4-.1-.6.1-.7.8-.8 1-.3.2-.5.1a6.7 6.7 0 0 1-3.3-2.9c-.3-.4.2-.4.7-1.3.1-.2 0-.3 0-.4l-.8-1.8c-.2-.5-.4-.4-.6-.4h-.5a1 1 0 0 0-.7.3 3 3 0 0 0-.9 2.2 5.2 5.2 0 0 0 1.1 2.7 11.9 11.9 0 0 0 4.6 4 5.2 5.2 0 0 0 3.2.7 2.7 2.7 0 0 0 1.8-1.3 2.2 2.2 0 0 0 .2-1.3c-.1-.1-.3-.2-.5-.3z\"\/><\/svg><span>Ask us<\/span><\/a><nav class=\"nav-bawah\" aria-label=\"Quick links\"><a href=\"\/en\/harga-pakej-berpantang\/\"><svg class=\"ik\" width=\"20\" height=\"20\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M3 12V4a1 1 0 0 1 1-1h8l9 9-9 9z\"\/><circle cx=\"7.5\" cy=\"7.5\" r=\"1.5\"\/><\/svg><span>Packages<\/span><\/a><a href=\"\/en\/bilik\/\"><svg class=\"ik\" width=\"20\" height=\"20\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M3 18V8a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v10M3 14h18M7 10h4\"\/><\/svg><span>Rooms<\/span><\/a><a href=\"\/en\/spa-wanita-bangi\/\"><svg class=\"ik\" width=\"20\" height=\"20\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M12 21c-4 0-7-3-7-7 3 0 5 1 7 4 2-3 4-4 7-4 0 4-3 7-7 7zM12 14c-2-3-2-7 0-10 2 3 2 7 0 10z\"\/><\/svg><span>Spa<\/span><\/a><a class=\"nb-wa\" href=\"https:\/\/wa.me\/601155599174?text=Hi%20Roseville%2C%20I%20am%20on%20your%20%22Muslimah%20Spa%20near%20Putrajaya%2C%20Kajang%20and%20Cyberjaya%3A%20Driving%20Times%2C%20Routes%20and%20How%20to%20Choose%22%20page.%20I%20would%20like%20to%20ask%3A%0A%0ARef%3A%20RV-ART-SPA-KAWASAN-BAR\" target=\"_blank\" rel=\"noopener\" data-wa-kod=\"RV-ART-SPA-KAWASAN-BAR\" data-wa-kedudukan=\"bar-telefon\"><span class=\"nb-bulat\"><svg class=\"ik\" width=\"20\" height=\"20\" viewbox=\"0 0 24 24\" aria-hidden=\"true\"><path fill=\"currentColor\" d=\"M12 2a10 10 0 0 0-8.7 14.9L2 22l5.3-1.3A10 10 0 1 0 12 2zm0 18.2a8.2 8.2 0 0 1-4.2-1.2l-.3-.2-3.1.8.8-3-.2-.3A8.2 8.2 0 1 1 12 20.2zm4.5-6.1c-.2-.1-1.5-.7-1.7-.8s-.4-.1-.6.1-.7.8-.8 1-.3.2-.5.1a6.7 6.7 0 0 1-3.3-2.9c-.3-.4.2-.4.7-1.3.1-.2 0-.3 0-.4l-.8-1.8c-.2-.5-.4-.4-.6-.4h-.5a1 1 0 0 0-.7.3 3 3 0 0 0-.9 2.2 5.2 5.2 0 0 0 1.1 2.7 11.9 11.9 0 0 0 4.6 4 5.2 5.2 0 0 0 3.2.7 2.7 2.7 0 0 0 1.8-1.3 2.2 2.2 0 0 0 .2-1.3c-.1-.1-.3-.2-.5-.3z\"\/><\/svg><\/span><span>WhatsApp<\/span><\/a><a href=\"\/en\/panduan-berpantang\/\" aria-current=\"page\"><svg class=\"ik\" width=\"20\" height=\"20\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M4 5a2 2 0 0 1 2-2h13v16H6a2 2 0 0 0-2 2zM4 21V5M8 7h7M8 11h5\"\/><\/svg><span>Guides<\/span><\/a><a href=\"\/en\/tempah-lawatan\/\"><svg class=\"ik\" width=\"20\" height=\"20\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><rect x=\"3\" y=\"5\" width=\"18\" height=\"16\" rx=\"3\"\/><path d=\"M3 10h18M8 3v4M16 3v4\"\/><\/svg><span>Visit<\/span><\/a><a href=\"\/en\/hubungi\/\"><svg class=\"ik\" width=\"20\" height=\"20\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M5 4h4l2 5-3 2a11 11 0 0 0 5 5l2-3 5 2v4a2 2 0 0 1-2 2A16 16 0 0 1 3 6a2 2 0 0 1 2-2z\"\/><\/svg><span>Contact<\/span><\/a><\/nav><\/div>\n\n\n\n<script>(function () {\n  'use strict';\n  \/* Skrip interaksi redesign A Roseville (laman WordPress sebenar). Dijana bersama bina_wp.py; sumber: wp_interaksi.js.\n     Tiada penghala hash: setiap halaman WordPress berasingan. Butang WhatsApp = pautan wa.me biasa (GTM kira generate_lead);\n     skrip ini hanya untuk borang lawatan, Pelan Pantang Percuma, tab, penapis, senarai semak dan menu telefon. *\/\n  if (window.rv2Mula) return;\n  window.rv2Mula = true;\n  function $(s, r) { return (r || document).querySelector(s); }\n  function $$(s, r) { return Array.prototype.slice.call((r || document).querySelectorAll(s)); }\n  var akar = $('.rv2[data-bahasa]');\n  if (!akar) return;\n  var EN = akar.getAttribute('data-bahasa') === 'en' || \/^en\/i.test(document.documentElement.lang || '');\n  var NO = '601155599174';\n  var PETA = {};\n  var PRATONTON = \/[?&]preview=true\/.test(location.search);\n\n  var L = EN ? {\n    hari: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], hp: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n    bulan: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n    pilihDulu: 'Please choose one date and one time slot first.', semakTarikh: 'Enter a due date within the next 10 months.',\n    belumPasti: 'Not sure yet', ditanda: 'ticked', kodLawatan: 'RV-EN-VISIT', kodPelan: 'RV-EN-PLAN-SEND',\n    lawatan: function (t, m, n, edd, b, i) { return 'Hi Roseville, I would like to book a villa visit.\\nDate: ' + t + ', ' + m + '\\nName: ' + n + '\\nDue date: ' + edd + '\\nRoom of interest: ' + b + '\\nComing with: ' + i + '\\n\\nRef: RV-EN-VISIT'; },\n    pakej: function (m) { return (m + 1) + '-day, ' + m + '-night package'; },\n    hantar: function (edd, m, akhir) { return 'Hi Roseville, I have created a Free Confinement Plan. Due date: ' + edd + '. Planning a ' + (m + 1) + '-day, ' + m + '-night package (approx. ' + edd + ' to ' + akhir + '). Could you check room availability?\\n\\nRef: RV-EN-PLAN-SEND'; },\n    kongsi: function (edd, h44, url) { return 'Hi love, here is our confinement plan: estimated delivery ' + edd + ', day 44 of confinement ' + h44 + '. Shall we visit Roseville first? ' + url; },\n    tajuk: function (edd) { return 'Estimated delivery ' + edd; },\n    sub: function (m, h44) { return (m + 1) + '-day, ' + m + '-night package at Roseville. Day 44 of confinement falls on ' + h44 + '.'; },\n    garis: function (minggu, beza, lawatTeks, akhirLabel) {\n      return [['Now', 'About ' + minggu + ' weeks pregnant', beza > 0 ? beza + ' days to your due date.' : 'Your due date has arrived or passed.', ''],\n        [lawatTeks, 'Visit the villa', 'At around 28 to 34 weeks, before travelling gets less comfortable. Bring your husband or mother.', 'utama'],\n        [null, 'Book & confirm your dates', 'Rooms are limited (7 rooms). Book after your visit to secure your dates.', ''],\n        [null, 'Pack your confinement bag', 'Three weeks before your due date. Use the checklist below.', ''],\n        [null, 'Confinement begins (estimate)', 'Straight from the hospital after delivery. The actual date follows the day your baby is born.', 'utama'],\n        [null, akhirLabel, 'Go home with a settled baby routine.', ''],\n        [null, 'Day 44 after birth', 'The traditional full confinement period ends (estimate). Many mothers book a Closing Confinement session around this day.', '']];\n    },\n    akhir: function (m) { return 'End of your ' + (m + 1) + '-day, ' + m + '-night package'; },\n    secepat: 'As soon as possible (this week or next)', hingga: ' to '\n  } : {\n    hari: ['Ahad', 'Isnin', 'Selasa', 'Rabu', 'Khamis', 'Jumaat', 'Sabtu'], hp: ['Ahd', 'Isn', 'Sel', 'Rab', 'Kha', 'Jum', 'Sab'],\n    bulan: ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ogo', 'Sep', 'Okt', 'Nov', 'Dis'],\n    pilihDulu: 'Sila pilih satu tarikh dan satu slot masa lawatan dahulu.', semakTarikh: 'Sila masukkan tarikh jangkaan bersalin dalam tempoh 10 bulan akan datang.',\n    belumPasti: 'Belum pasti', ditanda: 'ditanda', kodLawatan: 'RV-LAWATAN', kodPelan: 'RV-PELAN-HANTAR',\n    lawatan: function (t, m, n, edd, b, i) { return 'Salam Roseville, saya ingin menempah lawatan vila.\\nTarikh: ' + t + ', ' + m + '\\nNama: ' + n + '\\nTarikh jangkaan bersalin: ' + edd + '\\nBilik diminati: ' + b + '\\nDatang bersama: ' + i + '\\n\\nRuj: RV-LAWATAN'; },\n    pakej: function (m) { return 'pakej ' + (m + 1) + ' hari ' + m + ' malam'; },\n    hantar: function (edd, m, akhir) { return 'Salam Roseville, saya sudah membuat Pelan Pantang Percuma. Tarikh jangkaan bersalin: ' + edd + '. Rancang pakej ' + (m + 1) + ' hari ' + m + ' malam (anggaran ' + edd + ' hingga ' + akhir + '). Boleh semak kekosongan bilik?\\n\\nRuj: RV-PELAN-HANTAR'; },\n    kongsi: function (edd, h44, url) { return 'Sayang, ni pelan pantang kita: anggaran bersalin ' + edd + ', hari ke-44 pantang ' + h44 + '. Jom lawat Roseville dulu? ' + url; },\n    tajuk: function (edd) { return 'Anggaran bersalin: ' + edd; },\n    sub: function (m, h44) { return 'Pakej ' + (m + 1) + ' hari ' + m + ' malam di Roseville. Hari ke-44 pantang jatuh pada ' + h44 + '.'; },\n    garis: function (minggu, beza, lawatTeks, akhirLabel) {\n      return [['Sekarang', 'Kandungan sekitar ' + minggu + ' minggu', beza > 0 ? beza + ' hari lagi sebelum tarikh jangkaan bersalin.' : 'Tarikh jangkaan bersalin sudah tiba atau berlalu.', ''],\n        [lawatTeks, 'Lawat vila', 'Ketika kandungan sekitar 28 hingga 34 minggu, sebelum perjalanan menjadi kurang selesa. Bawa suami atau ibu.', 'utama'],\n        [null, 'Tempah & sahkan tarikh', 'Bilik terhad (7 bilik). Tempah selepas lawatan supaya tarikh anda terjamin.', ''],\n        [null, 'Kemas beg pantang', 'Tiga minggu sebelum tarikh jangkaan bersalin. Guna senarai semak di bawah.', ''],\n        [null, 'Mula berpantang (anggaran)', 'Terus dari hospital selepas bersalin. Tarikh sebenar mengikut hari bayi lahir.', 'utama'],\n        [null, akhirLabel, 'Pulang dengan rutin bayi yang sudah teratur.', ''],\n        [null, 'Hari ke-44 selepas bersalin', 'Tamat tempoh pantang penuh mengikut adat (anggaran). Ramai ibu memilih sesi Penutup Pantang sekitar hari ini.', '']];\n    },\n    akhir: function (m) { return 'Tamat pakej ' + (m + 1) + ' hari ' + m + ' malam'; },\n    secepat: 'Secepat mungkin (minggu ini atau minggu depan)', hingga: ' hingga '\n  };\n\n  function tarikh(d, pendek) { return (pendek ? '' : L.hari[d.getDay()] + ', ') + d.getDate() + ' ' + L.bulan[d.getMonth()] + ' ' + d.getFullYear(); }\n  function tambah(d, n) { var x = new Date(d.getTime()); x.setDate(x.getDate() + n); return x; }\n  function iso(d) { return d.getFullYear() + '-' + ('0' + (d.getMonth() + 1)).slice(-2) + '-' + ('0' + d.getDate()).slice(-2); }\n  function waUrl(teks) { return 'https:\/\/wa.me\/' + NO + '?text=' + encodeURIComponent(teks); }\n  function el(tag, kelas, teks) { var x = document.createElement(tag); if (kelas) x.className = kelas; if (teks != null) x.textContent = teks; return x; }\n\n  \/* ---------- pratonton draf: pautan dalaman ke halaman draf yang sepadan (hanya bila ?preview=true) *\/\n  function keDraf(href) {\n    try {\n      var u = new URL(href, location.origin);\n      if (u.origin !== location.origin) return null;\n      var id = PETA[u.pathname];\n      if (!id) return null;\n      var q = (typeof id === 'string' ? '\/?p=' + id.slice(1) : '\/?page_id=' + id) + '&preview=true';\n      u.searchParams.forEach(function (v, k) { q += '&' + encodeURIComponent(k) + '=' + encodeURIComponent(v); });\n      return q + u.hash;\n    } catch (err) { return null; }\n  }\n  if (PRATONTON) $$('.rv2 a[href]').forEach(function (a) { var d = keDraf(a.getAttribute('href')); if (d) a.setAttribute('href', d); });\n  function pergi(laluan) { location.href = (PRATONTON && keDraf(laluan)) || laluan; }\n  \/* buka WhatsApp melalui pautan sebenar supaya pencetus klik pautan GTM (generate_lead) tetap berjalan *\/\n  function bukaPautan(url, kod) {\n    var a = el('a', 'rv2-sembunyi', 'WhatsApp');\n    a.href = url; a.target = '_blank'; a.rel = 'noopener'; a.setAttribute('data-wa-kod', kod);\n    document.body.appendChild(a); a.click();\n    setTimeout(function () { if (a.parentNode) a.parentNode.removeChild(a); }, 1000);\n  }\n  function ralat(borang, mesej) {\n    var p = $('.ralat', borang);\n    if (!p) { p = el('p', 'ralat'); p.setAttribute('role', 'alert'); borang.appendChild(p); }\n    p.textContent = mesej; p.hidden = !mesej;\n  }\n\n  \/* ---------- menu telefon *\/\n  $$('.rv2 .menu-btn').forEach(function (b) {\n    b.addEventListener('click', function () {\n      var n = b.closest('.nav-pil'); var buka = n.classList.toggle('buka');\n      b.setAttribute('aria-expanded', buka ? 'true' : 'false');\n    });\n  });\n\n  \/* ---------- tab (spa) dan penapis bilik *\/\n  $$('.rv2 [data-tabs]').forEach(function (t) {\n    $$('[data-tab]', t).forEach(function (b) {\n      b.addEventListener('click', function () {\n        $$('[data-tab]', t).forEach(function (x) { x.setAttribute('aria-selected', x === b ? 'true' : 'false'); });\n        $$('[data-panel]', t).forEach(function (p) { p.classList.toggle('aktif', p.getAttribute('data-panel') === b.getAttribute('data-tab')); });\n      });\n    });\n  });\n  $$('.rv2 [data-tapis] button').forEach(function (b) {\n    b.addEventListener('click', function () {\n      $$('.rv2 [data-tapis] button').forEach(function (x) { x.setAttribute('aria-selected', x === b ? 'true' : 'false'); });\n      var k = b.getAttribute('data-k');\n      $$('.rv2 .bilik').forEach(function (c) { c.hidden = !(k === 'semua' || c.getAttribute('data-k') === k); });\n    });\n  });\n\n  \/* ---------- panduan: topik + carian (tapis kad) *\/\n  var topik = $$('.rv2 .topik button'), cari = $('.rv2 [data-cari] input'), pilih = 0;\n  function tapisPanduan() {\n    var q = (cari && cari.value || '').toLowerCase().trim(), t = pilih > 0 ? topik[pilih].textContent.toLowerCase().trim() : '', ada = 0;\n    $$('.rv2 .kad-art').forEach(function (k) {\n      var cip = ($('.cip', k) || {}).textContent || '';\n      var ok = (!t || cip.toLowerCase().trim() === t) && (!q || k.textContent.toLowerCase().indexOf(q) !== -1);\n      k.hidden = !ok; if (ok) ada++;\n    });\n    var m = $('.rv2 [data-cari-kosong]'); if (m) m.hidden = ada !== 0;\n  }\n  topik.forEach(function (b, i) {\n    b.setAttribute('aria-selected', i === 0 ? 'true' : 'false');\n    b.addEventListener('click', function () { pilih = i; topik.forEach(function (x) { x.setAttribute('aria-selected', x === b ? 'true' : 'false'); }); tapisPanduan(); });\n  });\n  var fc = $('.rv2 [data-cari]');\n  if (fc) { fc.addEventListener('submit', function (ev) { ev.preventDefault(); tapisPanduan(); }); if (cari) cari.addEventListener('input', tapisPanduan); }\n\n  \/* ---------- kiraan naik (statistik) dan ayat empati muncul perkataan demi perkataan *\/\n  $$('.rv2 .ungkap').forEach(function (u) {\n    var kata = u.textContent.split(' '); u.textContent = '';\n    kata.forEach(function (w, i) { u.appendChild(el('span', '', w)); if (i !== kata.length - 1) u.appendChild(document.createTextNode(' ')); });\n  });\n  var io = ('IntersectionObserver' in window) ? new IntersectionObserver(function (ent) {\n    ent.forEach(function (x) {\n      if (!x.isIntersecting) return;\n      var t = x.target; io.unobserve(t);\n      if (t.classList.contains('kira')) {\n        var n = parseFloat(t.getAttribute('data-n')), p = parseInt(t.getAttribute('data-p') || '0', 10), t0 = null;\n        var langkah = function (ms) { if (!t0) t0 = ms; var k = Math.min(1, (ms - t0) \/ 1100); t.textContent = (n * k).toFixed(p); if (k !== 1) requestAnimationFrame(langkah); };\n        requestAnimationFrame(langkah);\n      }\n      if (t.classList.contains('ungkap')) $$('span', t).forEach(function (s, i) { setTimeout(function () { s.classList.add('nampak'); }, i * 70); });\n    });\n  }, { threshold: 0.4 }) : null;\n  $$('.rv2 .kira, .rv2 .ungkap').forEach(function (t) { if (io) io.observe(t); else $$('span', t).forEach(function (s) { s.classList.add('nampak'); }); });\n\n  \/* ---------- borang tempah lawatan -> mesej WhatsApp siap ditulis *\/\n  var tb = $('.rv2 [data-tarikh]');\n  if (tb) {\n    var kini = new Date();\n    for (var i = 1; i !== 15; i++) {\n      var d = tambah(kini, i), b = el('button', '', L.hp[d.getDay()]);\n      b.type = 'button'; b.setAttribute('aria-pressed', 'false'); b.setAttribute('data-t', tarikh(d, true));\n      b.appendChild(el('small', '', d.getDate() + ' ' + L.bulan[d.getMonth()])); tb.appendChild(b);\n    }\n  }\n  $$('.rv2 .cip-pilih').forEach(function (g) {\n    g.addEventListener('click', function (ev) {\n      var b = ev.target.closest('button'); if (!b) return;\n      $$('button', g).forEach(function (x) { x.setAttribute('aria-pressed', x === b ? 'true' : 'false'); });\n    });\n  });\n  var qp = new URLSearchParams(location.search);\n  var fl = $('.rv2 [data-lawatan]');\n  if (fl) {\n    var bq = qp.get('bilik') || qp.get('room'), sb = fl.querySelector('select[name=bilik]');\n    if (bq && sb) $$('option', sb).forEach(function (o) { if (o.value === bq) sb.value = o.value; });\n    fl.addEventListener('submit', function (ev) {\n      ev.preventDefault();\n      var t = $('[data-tarikh] [aria-pressed=\"true\"]', fl), m = $('[data-masa] [aria-pressed=\"true\"]', fl);\n      if (!t || !m) { ralat(fl, L.pilihDulu); return; }\n      ralat(fl, '');\n      var f = new FormData(fl), eddV = f.get('edd'), edd = eddV ? tarikh(new Date(eddV + 'T00:00:00'), true) : '-';\n      bukaPautan(waUrl(L.lawatan(t.getAttribute('data-t'), m.textContent, f.get('nama'), edd, f.get('bilik') || L.belumPasti, f.get('ikut'))), L.kodLawatan);\n    });\n  }\n\n  \/* ---------- Pelan Pantang Percuma *\/\n  var fp = $('.rv2 [data-pelan]');\n  function jana(eddStr, malam) {\n    var edd = new Date(eddStr + 'T00:00:00'), kini2 = new Date(); kini2.setHours(0, 0, 0, 0);\n    var beza = Math.round((edd - kini2) \/ 864e5);\n    if (isNaN(beza) || beza < -21 || beza > 300) { ralat(fp, L.semakTarikh); return; }\n    ralat(fp, '');\n    var minggu = Math.max(0, Math.min(42, Math.round(40 - beza \/ 7)));\n    var lawatA = tambah(edd, -84), lawatB = tambah(edd, -42), tamat = tambah(edd, malam), h44 = tambah(edd, 43);\n    var lawatTeks = kini2 > lawatB ? L.secepat : tarikh(lawatA, true) + L.hingga + tarikh(lawatB, true);\n    var item = L.garis(minggu, beza, lawatTeks, L.akhir(malam));\n    var tarikhItem = [null, null, tambah(edd, -56), tambah(edd, -21), edd, tamat, h44];\n    var ol = $('.rv2 [data-garis-masa]'); ol.textContent = '';\n    item.forEach(function (x, i) {\n      var li = el('li', x[3]); li.appendChild(el('span', 'tarikh', x[0] != null ? x[0] : tarikh(tarikhItem[i])));\n      var div = el('div'); div.appendChild(el('b', '', x[1])); div.appendChild(el('span', '', x[2])); li.appendChild(div); ol.appendChild(li);\n    });\n    $('.rv2 [data-pelan-tajuk]').textContent = L.tajuk(tarikh(edd, true));\n    $('.rv2 [data-pelan-sub]').textContent = L.sub(malam, tarikh(h44, true));\n    var wa = $('.rv2 [data-wa-kod=\"' + L.kodPelan + '\"]');\n    if (wa) wa.href = waUrl(L.hantar(tarikh(edd, true), malam, tarikh(tamat, true)));\n    var ks = $('.rv2 [data-kongsi-suami]');\n    if (ks) ks.href = 'whatsapp:\/\/send?text=' + encodeURIComponent(L.kongsi(tarikh(edd, true), tarikh(h44, true), location.origin + (EN ? '\/en' : '') + '\/pelan-pantang\/?edd=' + iso(edd) + '&malam=' + malam));\n    var hasil = $('.rv2 [data-pelan-hasil]'); hasil.hidden = false; hasil.scrollIntoView({ behavior: 'smooth', block: 'start' });\n    (window.dataLayer = window.dataLayer || []).push({ event: 'pelan_pantang_dijana', malam: malam });\n  }\n  if (fp) {\n    fp.addEventListener('submit', function (ev) { ev.preventDefault(); jana(fp.edd.value, parseInt(fp.malam.value, 10)); });\n    var e0 = qp.get('edd');\n    if (e0 && \/^[0-9]{4}-[0-9]{2}-[0-9]{2}$\/.test(e0)) {\n      fp.edd.value = e0;\n      var m0 = qp.get('malam') || qp.get('nights');\n      if (m0 && fp.malam.querySelector('option[value=\"' + parseInt(m0, 10) + '\"]')) fp.malam.value = String(parseInt(m0, 10));\n      setTimeout(function () { jana(e0, parseInt(fp.malam.value, 10)); }, 80);\n    }\n  }\n  $$('.rv2 [data-pelan-mini]').forEach(function (f) {\n    f.addEventListener('submit', function (ev) {\n      ev.preventDefault(); var v = $('input', f).value; if (!v) return;\n      pergi(f.getAttribute('data-pelan-mini') + '?edd=' + v + '&malam=13');\n    });\n  });\n  \/* ---------- Kalkulator Hari Pantang (2 Nov 2026): hari ke-N = tarikh bersalin + (N - 1), sama seperti Pelan Pantang (h44 = EDD + 43).\n     Fakta daripada artikel 01 (tempoh, pemeriksaan WHO), 03 (penutup pantang) dan 05 (czer). *\/\n  var fk = $('.rv2 [data-kira]');\n  if (fk) {\n    var K = EN ? {\n      semak: 'Enter a delivery date within the last 12 months or the next 10 months.', kod: 'RV-EN-CALC-CLOSING', hingga: ' to ',\n      lahir: 'Delivery day (day 1)', lahirD: 'Day 1 of your confinement.',\n      cek1: 'First postnatal check-up', cek1D: 'WHO recommends a check-up 48 to 72 hours after birth.',\n      cek2: 'Second postnatal check-up', cek2D: 'WHO recommends another check-up 7 to 14 days after birth.',\n      cek6: '6-week postnatal check-up', cek6D: 'The postnatal period lasts about six weeks (42 days). WHO recommends a check-up in week six.',\n      cek6Czer: ' After a C-section, recovery usually takes about six weeks.',\n      penutup: 'Closing confinement week', penutupD: 'No fixed day: many mothers choose the final week of their confinement.',\n      penutupCzer: \" After a C-section, get your doctor's approval first.\",\n      hari: function (n) { return 'Day ' + n + ' of confinement'; },\n      pilihan: function (n) { return 'End of a ' + n + '-day confinement.'; },\n      tamat: function (n) { return 'Your ' + n + '-day confinement ends.'; },\n      tajuk: function (n, t) { return 'Day ' + n + ' falls on ' + t; },\n      kini: function (h, n, baki) { return 'Today is day ' + h + ' of your confinement. ' + (baki > 0 ? baki + ' days to go until day ' + n + '.' : 'Your ' + n + '-day confinement ends today.'); },\n      lepas: function (n, t) { return 'Your ' + n + '-day confinement ended on ' + t + '.'; },\n      awal: function (b) { return 'This date is ' + b + ' days away, so the dates below are estimates.'; },\n      wa: function (lahir, n, a, b, czer) { return 'Hi Roseville, I used the Confinement Date Calculator. Delivery date: ' + lahir + (czer ? ' (C-section)' : '') + '. Planning a ' + n + '-day confinement; closing confinement week ' + a + ' to ' + b + '. Could you check availability for the Closing Confinement package?\\n\\nRef: RV-EN-CALC-CLOSING'; },\n      kongsi: function (lahir, n, t, url) { return 'Hi love, here are our confinement dates: delivery ' + lahir + ', day ' + n + ' falls on ' + t + '. ' + url; }\n    } : {\n      semak: 'Sila masukkan tarikh bersalin dalam tempoh 12 bulan lepas atau 10 bulan akan datang.', kod: 'RV-KIRA-PENUTUP', hingga: ' hingga ',\n      lahir: 'Hari bersalin (hari ke-1)', lahirD: 'Hari pertama pantang anda.',\n      cek1: 'Pemeriksaan pertama selepas bersalin', cek1D: 'WHO mengesyorkan pemeriksaan 48 hingga 72 jam selepas bersalin.',\n      cek2: 'Pemeriksaan kedua selepas bersalin', cek2D: 'WHO mengesyorkan pemeriksaan sekali lagi 7 hingga 14 hari selepas bersalin.',\n      cek6: 'Pemeriksaan 6 minggu', cek6D: 'Tempoh selepas bersalin kira-kira enam minggu (42 hari). WHO mengesyorkan pemeriksaan pada minggu keenam.',\n      cek6Czer: ' Selepas czer, pemulihan biasanya kira-kira enam minggu.',\n      penutup: 'Minggu penutup pantang', penutupD: 'Tiada hari tetap: ramai ibu memilih minggu terakhir tempoh pantang.',\n      penutupCzer: ' Bersalin czer: dapatkan kebenaran doktor dahulu.',\n      hari: function (n) { return 'Hari ke-' + n + ' pantang'; },\n      pilihan: function (n) { return 'Tamat jika anda memilih pantang ' + n + ' hari.'; },\n      tamat: function (n) { return 'Pantang ' + n + ' hari anda tamat.'; },\n      tajuk: function (n, t) { return 'Hari ke-' + n + ' jatuh pada ' + t; },\n      kini: function (h, n, baki) { return 'Hari ini hari ke-' + h + ' pantang anda. ' + (baki > 0 ? baki + ' hari lagi hingga hari ke-' + n + '.' : 'Pantang ' + n + ' hari anda tamat hari ini.'); },\n      lepas: function (n, t) { return 'Pantang ' + n + ' hari anda sudah tamat pada ' + t + '.'; },\n      awal: function (b) { return 'Tarikh ini ' + b + ' hari lagi, jadi tarikh di bawah ialah anggaran.'; },\n      wa: function (lahir, n, a, b, czer) { return 'Salam Roseville, saya guna Kalkulator Hari Pantang. Tarikh bersalin: ' + lahir + (czer ? ' (czer)' : '') + '. Rancang pantang ' + n + ' hari; minggu penutup pantang ' + a + ' hingga ' + b + '. Boleh semak kekosongan Pakej Penutup Pantang?\\n\\nRuj: RV-KIRA-PENUTUP'; },\n      kongsi: function (lahir, n, t, url) { return 'Sayang, ni tarikh pantang kita: bersalin ' + lahir + ', hari ke-' + n + ' jatuh pada ' + t + '. ' + url; }\n    };\n    var kira = function (lahirStr, T, czer) {\n      var lahir = new Date(lahirStr + 'T00:00:00'), kini3 = new Date(); kini3.setHours(0, 0, 0, 0);\n      var beza = Math.round((kini3 - lahir) \/ 864e5);\n      if (isNaN(beza) || beza < -300 || beza > 366) { ralat(fk, K.semak); return; }\n      ralat(fk, '');\n      var hk = function (n) { return tambah(lahir, n - 1); };\n      var julat = function (a, b) { return tarikh(a, true) + K.hingga + tarikh(b, true); };\n      var item = [[0, tarikh(lahir), K.lahir, K.lahirD, 'utama'], [2, julat(tambah(lahir, 2), tambah(lahir, 3)), K.cek1, K.cek1D, ''],\n        [7, julat(tambah(lahir, 7), tambah(lahir, 14)), K.cek2, K.cek2D, ''], [42, tarikh(tambah(lahir, 42)), K.cek6, K.cek6D + (czer ? K.cek6Czer : ''), ''],\n        [T - 6.9, julat(hk(T - 6), hk(T)), K.penutup, K.penutupD + (czer ? K.penutupCzer : ''), 'utama']];\n      [14, 28, 40, 44].forEach(function (n) { item.push([n - 1, tarikh(hk(n)), K.hari(n), n === T ? K.tamat(n) : K.pilihan(n), n === T ? 'utama' : '']); });\n      item.sort(function (a, b) { return a[0] - b[0]; });\n      var ol = $('.rv2 [data-kira-garis]'); ol.textContent = '';\n      item.forEach(function (x) {\n        var li = el('li', x[4]); li.appendChild(el('span', 'tarikh', x[1]));\n        var div = el('div'); div.appendChild(el('b', '', x[2])); div.appendChild(el('span', '', x[3])); li.appendChild(div); ol.appendChild(li);\n      });\n      $('.rv2 [data-kira-tajuk]').textContent = K.tajuk(T, tarikh(hk(T)));\n      $('.rv2 [data-kira-sub]').textContent = beza < 0 ? K.awal(-beza) : (beza <= T - 1 ? K.kini(beza + 1, T, T - beza - 1) : K.lepas(T, tarikh(hk(T), true)));\n      $('.rv2 [data-kira-czer]').hidden = !czer;\n      $('.rv2 [data-kira-awal]').hidden = beza >= 0;\n      var w = $('.rv2 [data-wa-kod=\"' + K.kod + '\"]');\n      if (w) w.href = waUrl(K.wa(tarikh(lahir, true), T, tarikh(hk(T - 6), true), tarikh(hk(T), true), czer));\n      var ks2 = $('.rv2 [data-kira-kongsi]');\n      if (ks2) ks2.href = 'whatsapp:\/\/send?text=' + encodeURIComponent(K.kongsi(tarikh(lahir, true), T, tarikh(hk(T), true),\n        location.origin + (EN ? '\/en' : '') + '\/kira-hari-pantang\/?lahir=' + iso(lahir) + '&tempoh=' + T + (czer ? '&cara=czer' : '')));\n      var hasil = $('.rv2 [data-kira-hasil]'); hasil.hidden = false; hasil.scrollIntoView({ behavior: 'smooth', block: 'start' });\n      (window.dataLayer = window.dataLayer || []).push({ event: 'kira_pantang_dijana', tempoh: T, cara: czer ? 'czer' : 'normal' });\n    };\n    fk.addEventListener('submit', function (ev) { ev.preventDefault(); kira(fk.lahir.value, parseInt(fk.tempoh.value, 10), fk.cara.value === 'czer'); });\n    var l0 = qp.get('lahir');\n    if (l0 && \/^[0-9]{4}-[0-9]{2}-[0-9]{2}$\/.test(l0)) {\n      fk.lahir.value = l0;\n      var t0 = parseInt(qp.get('tempoh'), 10);\n      if ([14, 28, 40, 44].indexOf(t0) > -1) fk.tempoh.value = String(t0);\n      if (qp.get('cara') === 'czer') fk.cara.value = 'czer';\n      setTimeout(function () { kira(l0, parseInt(fk.tempoh.value, 10), fk.cara.value === 'czer'); }, 80);\n    }\n  }\n  $$('.rv2 [data-cetak]').forEach(function (b) { b.addEventListener('click', function () { window.print(); }); });\n\n  \/* ---------- senarai semak barang pantang (disimpan dalam telefon sahaja) *\/\n  var KUNCI = EN ? 'rvSemakEN' : 'rvSemak', simpan = {};\n  try { simpan = JSON.parse(localStorage.getItem(KUNCI) || '{}'); } catch (err) { simpan = {}; }\n  function kiraSemak() {\n    var k = $('.rv2 [data-semak-kira]');\n    if (k) k.textContent = $$('.rv2 [data-semak]:checked').length + ' \/ ' + $$('.rv2 [data-semak]').length + ' ' + L.ditanda;\n  }\n  $$('.rv2 [data-semak]').forEach(function (c) {\n    c.checked = !!simpan[c.getAttribute('data-semak')];\n    c.addEventListener('change', function () {\n      simpan[c.getAttribute('data-semak')] = c.checked;\n      try { localStorage.setItem(KUNCI, JSON.stringify(simpan)); } catch (err) { \/* storan disekat: abaikan *\/ }\n      kiraSemak();\n    });\n  });\n  kiraSemak();\n})();\n\n(function(){var prosa=document.querySelector('.rv2 [data-prosa]');if(!prosa)return;\nvar h2=[].slice.call(prosa.querySelectorAll('h2[id]'));var ol=document.querySelector('.rv2 [data-toc]');\nif(ol&&!ol.childElementCount){h2.forEach(function(h){var li=document.createElement('li'),a=document.createElement('a');a.href='#'+h.id;a.textContent=h.textContent;li.appendChild(a);ol.appendChild(li)})}\nif('IntersectionObserver' in window){var ob=new IntersectionObserver(function(en){en.forEach(function(x){if(x.isIntersecting){[].forEach.call(document.querySelectorAll('.rv2 [data-toc] a'),function(a){a.classList.toggle('aktif',a.getAttribute('href')==='#'+x.target.id)})}})},{rootMargin:'-20% 0px -70% 0px'});h2.forEach(function(h){ob.observe(h)})}\nvar bar=document.querySelector('.rv2 [data-kemajuan]');if(bar){var up=function(){var r=prosa.getBoundingClientRect(),jum=prosa.offsetHeight-innerHeight;bar.style.width=Math.max(0,Math.min(100,(-r.top+120)\/Math.max(1,jum)*100))+'%'};addEventListener('scroll',up,{passive:true});up()}\ndocument.addEventListener('click',function(ev){var t=ev.target.closest&&ev.target.closest('.rv2 [data-kongsi],.rv2 [data-salin],.rv2 [data-maklum]');if(!t)return;var dl=window.dataLayer=window.dataLayer||[],item=t.getAttribute('data-item');\nif(t.hasAttribute('data-kongsi')){dl.push({event:'share',method:t.getAttribute('data-kongsi'),content_type:'article',item_id:item});return}\nev.preventDefault();\nif(t.hasAttribute('data-salin')){var ok=function(){t.setAttribute('data-ok','1');setTimeout(function(){t.removeAttribute('data-ok')},1800)};if(navigator.clipboard){navigator.clipboard.writeText(t.getAttribute('data-salin')).then(ok,ok)}else{ok()}dl.push({event:'share',method:'copy_link',content_type:'article',item_id:item});return}\ndl.push({event:'maklum_balas_artikel',nilai:t.getAttribute('data-maklum'),item_id:item});var k=t.closest('[data-maklum-kotak]');if(k){k.innerHTML='<p>'+k.getAttribute('data-terima-kasih')+'<\/p>'}});\n})();\n<\/script>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Spa muslimah dekat Putrajaya, Kajang atau Cyberjaya? Lihat jarak, laluan dan masa memandu ke Roseville Muslimah Spa di Bangi Gateway, dan cara memilih spa.<\/p>","protected":false},"author":1,"featured_media":8255,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"elementor_canvas","format":"standard","meta":{"footnotes":""},"categories":[33],"tags":[],"class_list":["post-8248","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-panduan-berpantang"],"_links":{"self":[{"href":"https:\/\/rosevilleconfinement.com\/en\/wp-json\/wp\/v2\/posts\/8248","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rosevilleconfinement.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rosevilleconfinement.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rosevilleconfinement.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rosevilleconfinement.com\/en\/wp-json\/wp\/v2\/comments?post=8248"}],"version-history":[{"count":2,"href":"https:\/\/rosevilleconfinement.com\/en\/wp-json\/wp\/v2\/posts\/8248\/revisions"}],"predecessor-version":[{"id":8294,"href":"https:\/\/rosevilleconfinement.com\/en\/wp-json\/wp\/v2\/posts\/8248\/revisions\/8294"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rosevilleconfinement.com\/en\/wp-json\/wp\/v2\/media\/8255"}],"wp:attachment":[{"href":"https:\/\/rosevilleconfinement.com\/en\/wp-json\/wp\/v2\/media?parent=8248"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rosevilleconfinement.com\/en\/wp-json\/wp\/v2\/categories?post=8248"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rosevilleconfinement.com\/en\/wp-json\/wp\/v2\/tags?post=8248"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}