{"id":8219,"date":"2026-10-30T03:26:23","date_gmt":"2026-10-30T03:26:23","guid":{"rendered":"https:\/\/rosevilleconfinement.com\/?p=8219"},"modified":"2026-11-05T06:12:37","modified_gmt":"2026-11-05T06:12:37","slug":"hadiah-untuk-isteri","status":"publish","type":"post","link":"https:\/\/rosevilleconfinement.com\/en\/hadiah-untuk-isteri\/","title":{"rendered":"Hadiah untuk Isteri: Idea Ikut Situasi dan Bajet, dari Hari Jadi hingga Isteri Merajuk"},"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\/hadiah-untuk-isteri\/\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/rosevilleconfinement.com\/wp-content\/uploads\/2026\/10\/hadiah-untuk-isteri-infographic-summary-en.jpg\" alt=\"1-minute summary: Gifts for your wife: 6 key points. 1) Price is not the measure: recipients do not value gifts by price. 2) Time and help, like taking over chores, let her rest. 3) Experiences tend to bring people closer than things. 4) Upset? Talk and apologise first; the gift comes after. 5) Pregnant? Ask her doctor before a spa session; be careful with saunas. 6) A women-only spa session or membership suits wives who enjoy massage.\" 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\">Gift ideas for your wife in Malaysia by situation and budget: birthdays, anniversaries, when she is tired, upset or pregnant, plus free and spa gifts.<\/p><p style=\"margin:0\"><a href=\"https:\/\/rosevilleconfinement.com\/en\/hadiah-untuk-isteri\/\" 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 .prosa .rv-kalk [hidden]{display:none!important}.rv2 .prosa .rv-kalk .pelan-borang{margin:16px 0 8px;padding:20px;border-radius:22px}.rv2 .prosa .rv-kalk .pelan-borang label{min-width:min(100%,280px);font-size:14.5px;color:var(--teks);line-height:1.4}.rv2 .prosa .rv-kalk .pelan-borang .btn{flex:1 1 100%}.rv2 .prosa .rv-kalk .pelan-hasil{margin-top:18px;padding:20px;border-radius:22px;background:var(--sage2)}.rv2 .prosa .rv-kalk .cuti-tajuk{margin:0 0 6px;font:600 24px\/1.3 var(--serif);color:var(--teks)}.rv2 .prosa .rv-kalk .pengantar{margin:0;font-size:16px}.rv2 .prosa .rv-kalk .garis-masa{padding:0;margin:16px 0 0;list-style:none}.rv2 .prosa .rv-kalk .garis-masa li{margin:0;grid-template-columns:140px 1fr;gap:14px;padding:14px 16px;line-height:1.5}.rv2 .prosa .rv-kalk .garis-masa .tarikh{font-size:16px}.rv2 .prosa .rv-kalk .garis-masa b{font-size:16px}.rv2 .prosa .rv-kalk .garis-masa span{font-size:14.5px}.rv2 .prosa .rv-kalk [data-cuti-nota]{margin:14px 0 0}.rv2 .prosa .rv-kalk .btn{margin-top:0;text-decoration:none!important}.rv2 .prosa .rv-kalk .btn-utama{color:#fff}.rv2 .prosa .rv-kalk .btn-wa{color:#063D1E}.rv2 .prosa .rv-kalk .btn-kedua{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}.rv2 .prosa .rv-kalk .pelan-borang,.rv2 .prosa .rv-kalk .pelan-hasil{padding:16px}.rv2 .prosa .rv-kalk .garis-masa li{grid-template-columns:1fr;gap:4px}.rv2 .prosa .rv-kalk .cta-baris .btn{flex:1 1 100%}}<\/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=\"\/hadiah-untuk-isteri\/\" 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>Gift Ideas for Your Wife in Malaysia: Birthday, Anniversary and Spa Day Ideas on Any Budget<\/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>A good gift for your wife does not need to be expensive. Research suggests people do not judge gifts by price, and experiences tend to bring people closer. Match the gift to her situation: time and help so she can rest, a handwritten letter, dinner for two or a women-only spa session.<\/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\">9 references<\/a><\/span><\/p><p class=\"rv-rev-note\">This article is general information.<\/p><\/div>\n<figure class=\"rv-info\" aria-label=\"1-minute summary: Gifts for your wife: 6 key points\"><span class=\"rv-info-k\">1-minute summary<\/span><p class=\"rv-info-t\">Gifts for your wife: 6 key points<\/p><ol class=\"rv-info-l\"><li><b>1<\/b><span>Price is not the measure: recipients do not value gifts by price.<\/span><\/li><li><b>2<\/b><span>Time and help, like taking over chores, let her rest.<\/span><\/li><li><b>3<\/b><span>Experiences tend to bring people closer than things.<\/span><\/li><li><b>4<\/b><span>Upset? Talk and apologise first; the gift comes after.<\/span><\/li><li><b>5<\/b><span>Pregnant? Ask her doctor before a spa session; be careful with saunas.<\/span><\/li><li><b>6<\/b><span>A women-only spa session or membership suits wives who enjoy massage.<\/span><\/li><\/ol><figcaption>Roseville Confinement Villa &amp; Spa, Bangi Gateway<\/figcaption><\/figure>\n<p>Looking for a gift for your wife&#8217;s birthday, your anniversary or just to say thank you? Here are ideas by situation and budget from the spa team at Roseville Confinement Villa &amp; Spa, a Muslim-friendly confinement centre and women&#8217;s spa in Bangi Gateway.<\/p>\n<h2 id=\"b1\" class=\"wp-block-heading\">What is a good gift for your wife?<\/h2>\n<p>The right gift suits her situation right now. A tired wife may value a full night&#8217;s sleep more than something new. If unsure, just ask: &#8220;What do you need right now: a thing, some rest or time together?&#8221;<\/p>\n<p>Islam encourages giving gifts. The Prophet Muhammad (peace be upon him) said: <span lang=\"ar\" dir=\"rtl\">\u062a\u0647\u0627\u062f\u064f\u0648\u0652\u0627 \u062a\u062d\u0627\u0628\u064f\u0651\u0648\u0627<\/span>, meaning &#8220;Give gifts to one another, and you will love one another.&#8221; (Narrated by al-Bukhari in al-Adab al-Mufrad, no. 594; graded sahih by the Federal Territories Mufti Department in <a href=\"https:\/\/muftiwp.gov.my\/ms\/artikel\/al-kafi-li-al-fatawi\/4200-al-kafi-1614-hukum-meminta-semula-hadiah\" target=\"_blank\" rel=\"noopener\">Al-Kafi #1614<\/a>, in Malay.)<\/p>\n<h3 class=\"wp-block-heading\">What research says about gifts<\/h3>\n<ul class=\"wp-block-list\">\n<li><strong>Price is not the measure.<\/strong> In three studies by <a href=\"https:\/\/www.gsb.stanford.edu\/faculty-research\/publications\/money-cant-buy-love-asymmetric-beliefs-about-link-between-gift-price\" target=\"_blank\" rel=\"noopener\">Flynn and Adams (2009)<\/a>, givers expected pricier gifts to be appreciated more; recipients reported no such link.<\/li>\n<li><strong>Experiences bring people closer.<\/strong> <a href=\"https:\/\/doi.org\/10.1093\/jcr\/ucw067\" target=\"_blank\" rel=\"noopener\">Chan and Mogilner (2017)<\/a> found experiential gifts strengthened relationships more than material gifts, as rated by recipients. <a href=\"https:\/\/www.utoronto.ca\/news\/science-gift-giving-u-t-research-best-kind-present-receive\" target=\"_blank\" rel=\"noopener\">Emotional keepsakes<\/a>, like a framed photo, help too.<\/li>\n<li><strong>Appreciation is returned.<\/strong> <a href=\"https:\/\/pubmed.ncbi.nlm.nih.gov\/22642482\/\" target=\"_blank\" rel=\"noopener\">Gordon and colleagues (2012)<\/a> found people who felt appreciated by their partner tended to appreciate them more.<\/li>\n<\/ul>\n<p>These studies were done outside Malaysia and not only with married couples, so treat them as a general guide. The Gordon data is largely observational: it shows a link, not cause and effect.<\/p>\n<h2 id=\"b2\" class=\"wp-block-heading\">Free and cheap gift ideas for your wife<\/h2>\n<p>Free gifts are usually about time and help that lighten her load.<\/p>\n<ul class=\"wp-block-list\">\n<li><strong>Take over the housework<\/strong> for a day.<\/li>\n<li><strong>Mind the children<\/strong> for a few hours so she can sleep or go out alone.<\/li>\n<li><strong>A handwritten letter<\/strong> naming things you appreciate about her.<\/li>\n<li><strong>Dinner you cook yourself<\/strong>, and clean up afterwards.<\/li>\n<li><strong>Homemade help coupons<\/strong>, such as &#8220;one night I put the kids to bed&#8221;.<\/li>\n<li><strong>Printed family photos<\/strong> in a small album.<\/li>\n<\/ul>\n<p>For a cheap gift, pick something small she has mentioned, such as a book, a tudung or her favourite snack, with a handwritten card. Attention matters more than price, so never borrow money for a gift.<\/p>\n<h2 id=\"b3\" class=\"wp-block-heading\">Gift ideas for your wife by situation<\/h2>\n<p>The second column costs nothing; the third is something you buy or an experience.<\/p>\n<figure class=\"wp-block-table rv-tbl\"><table><thead><tr><th>Situation<\/th><th>Free ideas<\/th><th>Gift ideas<\/th><th>Note<\/th><\/tr><\/thead><tbody><tr><td>Birthday<\/td><td>Breakfast you make, a card<\/td><td>Something she mentioned, a framed photo, a spa session<\/td><td>Ask gently weeks ahead<\/td><\/tr><tr><td>Anniversary<\/td><td>A letter on what you value<\/td><td>Dinner for two, a spa membership<\/td><td>Arrange childcare early<\/td><\/tr><tr><td>She is exhausted<\/td><td>Take over the night routine<\/td><td>Food delivered home, a spa session<\/td><td>Rest matters more than things<\/td><\/tr><tr><td>She is upset with you<\/td><td>Listen, apologise clearly<\/td><td>A small gift after you talk<\/td><td>A gift does not replace talking<\/td><\/tr><tr><td>She is pregnant<\/td><td>Take over heavy chores<\/td><td>Extra pillows, a spa session after asking her doctor<\/td><td>Tell the therapist<\/td><\/tr><tr><td>She has just given birth<\/td><td>Mind the baby so she can sleep<\/td><td>See our <a href=\"\/en\/hadiah-untuk-ibu-bersalin\/\">confinement gift guide<\/a><\/td><td>Keep it practical<\/td><\/tr><\/tbody><\/table><\/figure>\n<h3 class=\"wp-block-heading\">Birthday gift for your wife: ideas and examples<\/h3>\n<p>Note what she mentions over a few weeks. Ideas: breakfast in bed with a card, a chore-free day, something she mentioned, or a spa session if she enjoys being pampered. For a wife who has everything, give time and experiences, not more things.<\/p>\n<h3 class=\"wp-block-heading\">Anniversary gift for your wife<\/h3>\n<p>Choose gifts that bring back shared memories: a letter about your marriage, a photo album or dinner for two. Arrange childcare early.<\/p>\n<h3 class=\"wp-block-heading\">When she is exhausted: working mums and young kids<\/h3>\n<p>For a wife juggling work and young kids, real rest is the gift: mind the kids so she can sleep, or book her a women-only spa session.<\/p>\n<h2 id=\"b4\" class=\"wp-block-heading\">When your wife is upset with you: what comes first?<\/h2>\n<p>A gift does not replace talking and saying sorry. Start by listening all the way through, without interrupting or defending yourself.<\/p>\n<ol class=\"wp-block-list\">\n<li>Pick a calm moment, such as after the children are asleep.<\/li>\n<li>Acknowledge her feelings and apologise for the specific thing.<\/li>\n<li>Ask what you can change, then follow through.<\/li>\n<li>Only then offer a small gift, such as her favourite food or a short note.<\/li>\n<\/ol>\n<p>If the same arguments keep coming back, consider a family counsellor.<\/p>\n<h2 id=\"b5\" class=\"wp-block-heading\">Experience gifts: when is a spa session right for your wife?<\/h2>\n<p>A spa session suits a wife who enjoys being pampered and is comfortable with massage. If unsure, ask her gently first.<\/p>\n<p>Roseville Muslimah Spa in Bangi Gateway is open to all women, with female therapists and a private space. Sessions are for comfort and rest, not for medical purposes.<\/p>\n<ul class=\"wp-block-list\">\n<li><strong>Essential:<\/strong> back massage, head, neck and shoulder massage, foot spa, plus infrared sauna or herbal bath.<\/li>\n<li><strong>Signature:<\/strong> full-body massage, head, neck and shoulder massage, foot spa, face and eye masks, plus two of: infrared sauna, herbal bath, hair wash, milk bath or flower bath.<\/li>\n<li><strong>Facial:<\/strong> deep cleansing, steam, gentle scrub, masks, moisturiser and sunscreen.<\/li>\n<li><strong>\u00c0 la carte:<\/strong> shorter options such as a foot spa, body scrub or hair wash.<\/li>\n<li><strong>6-month spa membership<\/strong> (Serenity, Radiance or Signature): one session a month, subject to availability.<\/li>\n<\/ul>\n<p>For gift vouchers, see our <a href=\"\/en\/baucar-hadiah-spa\/\">spa gift vouchers<\/a> or ask our team on WhatsApp. You can also browse our <a href=\"\/en\/spa-wanita-bangi\/\">spa menu<\/a> and <a href=\"\/en\/keahlian-spa\/\">memberships<\/a>.<\/p>\n<div class=\"rv-tip\"><p class=\"rv-lbl\">Tip from the Roseville team<\/p><p>Let her pick the date and session, and mind the children while she is at the spa. Handle the booking and transport too.<\/p><\/div>\n<div class=\"rv-cta\"><p class=\"rv-cta-t\">Give your wife the gift of rest<\/p><p>Ask about gift vouchers on WhatsApp, or browse the spa menu first.<\/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%22Gift%20Ideas%20for%20Your%20Wife%20in%20Malaysia%3A%20Birthday%2C%20Anniversary%20and%20Spa%20Day%20Ideas%20on%20Any%20Budget%22%20and%20would%20like%20to%20ask%20about%20a%20spa%20gift%20voucher%20for%20my%20wife.\" target=\"_blank\" rel=\"noopener\">Ask about gift vouchers<\/a><\/div><\/div>\n<h2 id=\"b6\" class=\"wp-block-heading\">Gifts for a pregnant wife or a new mum<\/h2>\n<h3 class=\"wp-block-heading\">If she is pregnant<\/h3>\n<p>The <a href=\"https:\/\/www.nhs.uk\/pregnancy\/common-symptoms\/tiredness\/\" target=\"_blank\" rel=\"noopener\">NHS<\/a> says tiredness is common in pregnancy, especially in the first 12 weeks, and encourages rest and accepting help. So take over heavy chores and get extra pillows: the NHS suggests sleeping on her side, with pillows supporting the bump and between the knees.<\/p>\n<p>Before a spa session, check with her doctor and tell the therapist she is pregnant. <a href=\"https:\/\/www.healthlinkbc.ca\/healthwise\/pregnancy-hot-tub-and-sauna-use\" target=\"_blank\" rel=\"noopener\">HealthLink BC<\/a>, a Canadian government health service, advises caution with saunas and hot tubs in pregnancy, as overheating can harm the baby, especially early on. See our <a href=\"\/en\/urut-ibu-mengandung\/\">prenatal massage guide<\/a>.<\/p>\n<p>A bigger gift: plan her confinement together. Enter her due date in the <a href=\"\/en\/pelan-pantang\/\">Free Confinement Plan<\/a>, read <a href=\"\/en\/bila-tempah-pusat-berpantang\/\">when to book a confinement centre<\/a> and book a <a href=\"\/en\/tempah-lawatan\/\">free villa visit<\/a>. At Roseville, <a href=\"\/en\/suami-tinggal-di-pusat-berpantang\/\">husbands can stay<\/a> throughout confinement at no extra charge.<\/p>\n<h3 class=\"wp-block-heading\">If she has just given birth<\/h3>\n<p>After birth, sleep, ready-to-eat meals and help with the baby and visitors matter more than things; after a C-section, pick gifts that need little movement. See our <a href=\"\/en\/hadiah-untuk-ibu-bersalin\/\">confinement gift guide<\/a>, including spa sessions to <a href=\"\/en\/penutup-pantang-hari-ke-berapa\/\">close confinement<\/a>.<\/p>\n<div class=\"rv-warn\"><p class=\"rv-lbl\">When to see a doctor<\/p><ul><li>She feels low or hopeless nearly every day for weeks: encourage her to see a doctor. Postnatal depression can start in pregnancy or up to a year after birth; fathers can have it too.<\/li><li>Thoughts of harming herself or the baby: get emergency help straight away.<\/li><li>Pregnant and dizzy, faint or with a racing heart in a hot session: stop and get out straight away.<\/li><\/ul><\/div>\n<div class=\"rv-cta\"><p class=\"rv-cta-t\">A gift that lasts: 6-month spa membership<\/p><p>One session a month for six months, subject to availability.<\/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%22Gift%20Ideas%20for%20Your%20Wife%20in%20Malaysia%3A%20Birthday%2C%20Anniversary%20and%20Spa%20Day%20Ideas%20on%20Any%20Budget%22%20and%20would%20like%20to%20ask%20about%20a%20spa%20gift%20voucher%20for%20my%20wife.\" target=\"_blank\" rel=\"noopener\">Ask about gift vouchers<\/a><\/div><\/div>\n<h2 id=\"b7\" class=\"wp-block-heading\">Frequently asked questions<\/h2>\n<div class=\"rv-faq\"><details><summary>What is a good birthday gift for my wife in Malaysia?<\/summary><p>Something she has mentioned wanting, or rest: breakfast you make, a chore-free day and a handwritten card. If she enjoys being pampered, a women-only spa session also works. Research found recipients do not judge gifts by price, so attention matters more than cost.<\/p><\/details><details><summary>What should I give my wife for our anniversary?<\/summary><p>Choose gifts that bring back shared memories, such as a letter about your marriage, a photo album or dinner for two. Research suggests experiences, like an activity she loves or a spa session, tend to bring people closer. Arrange childcare early so she can relax.<\/p><\/details><details><summary>What can I give a wife who has everything?<\/summary><p>Give time and experiences instead of more things: a day off from chores, dinner for two, a class she has wanted to try, or a spa session. Low-cost gifts such as a handwritten letter or printed family photos can mean just as much.<\/p><\/details><details><summary>What gift can I give my wife when she is upset with me?<\/summary><p>A gift does not replace talking and apologising. Listen fully, acknowledge how she feels and apologise for the specific thing. After that, a small gift like her favourite food or a short note can help reopen the conversation. A big gift without a proper talk can feel like avoiding the problem.<\/p><\/details><details><summary>Is a spa day or spa gift voucher a good gift for my wife?<\/summary><p>Yes, if she is comfortable with massage and enjoys being pampered. Roseville Muslimah Spa in Bangi Gateway is open to all women, with female therapists and a private space. Choose from Essential, Signature, facial, \u00e0 la carte or a 6-month membership. Ask our team on WhatsApp about gift vouchers.<\/p><\/details><\/div>\n<div class=\"rv-src\" id=\"rujukan\"><p class=\"rv-lbl\">References<\/p><ol><li><a href=\"https:\/\/muftiwp.gov.my\/ms\/artikel\/al-kafi-li-al-fatawi\/4200-al-kafi-1614-hukum-meminta-semula-hadiah\" target=\"_blank\" rel=\"noopener\">Al-Kafi #1614: Hukum Meminta Semula Hadiah (on taking back gifts, in Malay)<\/a>, Federal Territories Mufti Department, 2020<\/li><li><a href=\"https:\/\/www.gsb.stanford.edu\/faculty-research\/publications\/money-cant-buy-love-asymmetric-beliefs-about-link-between-gift-price\" target=\"_blank\" rel=\"noopener\">Money can&#8217;t buy love: Asymmetric beliefs about the link between gift price and feelings of appreciation (Flynn &amp; Adams, Journal of Experimental Social Psychology)<\/a>, Stanford Graduate School of Business, 2009<\/li><li><a href=\"https:\/\/doi.org\/10.1093\/jcr\/ucw067\" target=\"_blank\" rel=\"noopener\">Experiential Gifts Foster Stronger Social Relationships Than Material Gifts (Chan &amp; Mogilner, Journal of Consumer Research)<\/a>, Oxford University Press, 2017<\/li><li><a href=\"https:\/\/www.utoronto.ca\/news\/science-gift-giving-u-t-research-best-kind-present-receive\" target=\"_blank\" rel=\"noopener\">The science of gift giving (research by Cindy Chan)<\/a>, University of Toronto News, 2016<\/li><li><a href=\"https:\/\/pubmed.ncbi.nlm.nih.gov\/22642482\/\" target=\"_blank\" rel=\"noopener\">To have and to hold: gratitude promotes relationship maintenance in intimate bonds (Gordon et al., Journal of Personality and Social Psychology)<\/a>, PubMed, 2012<\/li><li><a href=\"https:\/\/www.nhs.uk\/pregnancy\/common-symptoms\/tiredness\/\" target=\"_blank\" rel=\"noopener\">Tiredness and sleep problems in pregnancy<\/a>, NHS (UK), 2024<\/li><li><a href=\"https:\/\/www.healthlinkbc.ca\/healthwise\/pregnancy-hot-tub-and-sauna-use\" target=\"_blank\" rel=\"noopener\">Pregnancy: Hot Tub and Sauna Use<\/a>, HealthLink BC (Government of British Columbia, Canada), 2023<\/li><li><a href=\"https:\/\/www.nhs.uk\/mental-health\/conditions\/depression-in-adults\/overview\/\" target=\"_blank\" rel=\"noopener\">Depression in adults<\/a>, NHS (UK), 2023<\/li><li><a href=\"https:\/\/www.nhs.uk\/mental-health\/conditions\/postnatal-depression\/\" target=\"_blank\" rel=\"noopener\">Postnatal depression<\/a>, NHS (UK), 2026<\/li><\/ol><\/div>\n<p class=\"rv-disc\">This article is general information and does not replace advice from your doctor. 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. For specific religious rulings, refer to your state mufti office.<\/p>\n<script type=\"application\/ld+json\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\/\/rosevilleconfinement.com\/en\/hadiah-untuk-isteri\/#article\",\"headline\":\"Gift Ideas for Your Wife in Malaysia: Birthday, Anniversary and Spa Day Ideas on Any Budget\",\"description\":\"Gift ideas for your wife in Malaysia by situation and budget: birthdays, anniversaries, when she is tired, upset or pregnant, plus free and spa gifts.\",\"inLanguage\":\"en\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/rosevilleconfinement.com\/en\/hadiah-untuk-isteri\/#webpage\"},\"image\":\"https:\/\/rosevilleconfinement.com\/wp-content\/uploads\/2026\/10\/hadiah-untuk-isteri-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\":\"Gifts for wife\"},{\"@type\":\"Thing\",\"name\":\"Experiential gifts\"},{\"@type\":\"Thing\",\"name\":\"Women's spa\"}],\"keywords\":\"gift for wife, birthday gift for wife malaysia, anniversary gift for wife malaysia, gift for wife ideas, spa gift for wife, spa day gift for wife, spa gift card for wife, birthday gift for wife who has everything\",\"articleSection\":\"Confinement Guides\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/rosevilleconfinement.com\/en\/hadiah-untuk-isteri\/#webpage\",\"url\":\"https:\/\/rosevilleconfinement.com\/en\/hadiah-untuk-isteri\/\",\"name\":\"Gift Ideas for Your Wife in Malaysia: Birthday, Anniversary and Spa Day Ideas on Any Budget\",\"inLanguage\":\"en\",\"isPartOf\":{\"@id\":\"https:\/\/rosevilleconfinement.com\/#website\"},\"breadcrumb\":{\"@id\":\"https:\/\/rosevilleconfinement.com\/en\/hadiah-untuk-isteri\/#breadcrumb\"},\"primaryImageOfPage\":{\"@type\":\"ImageObject\",\"url\":\"https:\/\/rosevilleconfinement.com\/wp-content\/uploads\/2026\/10\/hadiah-untuk-isteri-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\/hadiah-untuk-isteri\/#faq\",\"inLanguage\":\"en\",\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"What is a good birthday gift for my wife in Malaysia?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Something she has mentioned wanting, or rest: breakfast you make, a chore-free day and a handwritten card. If she enjoys being pampered, a women-only spa session also works. Research found recipients do not judge gifts by price, so attention matters more than cost.\"}},{\"@type\":\"Question\",\"name\":\"What should I give my wife for our anniversary?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Choose gifts that bring back shared memories, such as a letter about your marriage, a photo album or dinner for two. Research suggests experiences, like an activity she loves or a spa session, tend to bring people closer. Arrange childcare early so she can relax.\"}},{\"@type\":\"Question\",\"name\":\"What can I give a wife who has everything?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Give time and experiences instead of more things: a day off from chores, dinner for two, a class she has wanted to try, or a spa session. Low-cost gifts such as a handwritten letter or printed family photos can mean just as much.\"}},{\"@type\":\"Question\",\"name\":\"What gift can I give my wife when she is upset with me?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"A gift does not replace talking and apologising. Listen fully, acknowledge how she feels and apologise for the specific thing. After that, a small gift like her favourite food or a short note can help reopen the conversation. A big gift without a proper talk can feel like avoiding the problem.\"}},{\"@type\":\"Question\",\"name\":\"Is a spa day or spa gift voucher a good gift for my wife?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Yes, if she is comfortable with massage and enjoys being pampered. Roseville Muslimah Spa in Bangi Gateway is open to all women, with female therapists and a private space. Choose from Essential, Signature, facial, \u00e0 la carte or a 6-month membership. Ask our team on WhatsApp about gift vouchers.\"}}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/rosevilleconfinement.com\/en\/hadiah-untuk-isteri\/#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\":\"Gift Ideas for Your Wife in Malaysia: Birthday, Anniversary and Spa Day Ideas on Any Budget\",\"item\":\"https:\/\/rosevilleconfinement.com\/en\/hadiah-untuk-isteri\/\"}]}]}<\/script><\/article><aside class=\"rel-kongsi\"><b>Share<\/b><a href=\"whatsapp:\/\/send?text=Gift%20Ideas%20for%20Your%20Wife%20in%20Malaysia%3A%20Birthday%2C%20Anniversary%20and%20Spa%20Day%20Ideas%20on%20Any%20Budget%20https%3A%2F%2Frosevilleconfinement.com%2Fen%2Fhadiah-untuk-isteri%2F%3Futm_source%3Dwhatsapp%26utm_medium%3Dshare%26utm_campaign%3Dartikel_hadiah-untuk-isteri\" data-kongsi=\"whatsapp\" data-item=\"hadiah-untuk-isteri\" 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%2Fhadiah-untuk-isteri%2F%3Futm_source%3Dfacebook%26utm_medium%3Dshare%26utm_campaign%3Dartikel_hadiah-untuk-isteri\" target=\"_blank\" rel=\"noopener\" data-kongsi=\"facebook\" data-item=\"hadiah-untuk-isteri\" title=\"Facebook\" aria-label=\"Facebook\">f<\/a><button type=\"button\" data-salin=\"https:\/\/rosevilleconfinement.com\/en\/hadiah-untuk-isteri\/\" data-item=\"hadiah-untuk-isteri\" 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=\"hadiah-untuk-isteri\">Yes, helpful<\/button><button class=\"btn btn-garis\" type=\"button\" data-maklum=\"kurang\" data-item=\"hadiah-untuk-isteri\">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%22Gift%20Ideas%20for%20Your%20Wife%20in%20Malaysia%3A%20Birthday%2C%20Anniversary%20and%20Spa%20Day%20Ideas%20on%20Any%20Budget%22%20page.%20I%20would%20like%20to%20ask%20about%20spa%20%26%20tradition.%0A%0ARef%3A%20RV-ART-HADIAH-ISTERI-END\" target=\"_blank\" rel=\"noopener\" data-wa-kod=\"RV-ART-HADIAH-ISTERI-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\/hadiah-untuk-ibu-bersalin\/\"><div class=\"bingkai\"><div class=\"sampul s0\"><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\"><circle cx=\"12\" cy=\"12\" r=\"9\"\/><path d=\"M12 7v5l3 2\"\/><\/svg><b>Preparation<\/b><span>Roseville guide<\/span><\/div><\/div>\n<div class=\"isi\"><span class=\"cip\">Preparation<\/span><h3>Confinement Gift Ideas for a New Mother in Malaysia, Including After a C-Section<\/h3><p>Time, practical items and spa sessions, by giver and the mother&#x27;s situation.<\/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> Roseville Care Lady Team \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><a class=\"kad-art\" href=\"\/en\/bila-tempah-pusat-berpantang\/\"><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>Preparation<\/b><span>Roseville guide<\/span><\/div><\/div>\n<div class=\"isi\"><span class=\"cip\">Preparation<\/span><h3>When to Book a Confinement Centre: A Trimester Timeline, Deposits and Early or Late Babies<\/h3><p>A trimester timeline, deposit and balance, and what if your baby is early or late.<\/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> Roseville Care Lady Team \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%22Gift%20Ideas%20for%20Your%20Wife%20in%20Malaysia%3A%20Birthday%2C%20Anniversary%20and%20Spa%20Day%20Ideas%20on%20Any%20Budget%22%20page.%20I%20would%20like%20to%20ask%3A%0A%0ARef%3A%20RV-ART-HADIAH-ISTERI-FOOTER\" target=\"_blank\" rel=\"noopener\" data-wa-kod=\"RV-ART-HADIAH-ISTERI-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%22Gift%20Ideas%20for%20Your%20Wife%20in%20Malaysia%3A%20Birthday%2C%20Anniversary%20and%20Spa%20Day%20Ideas%20on%20Any%20Budget%22%20page.%20I%20would%20like%20to%20ask%3A%0A%0ARef%3A%20RV-ART-HADIAH-ISTERI-FLOAT\" target=\"_blank\" rel=\"noopener\" data-wa-kod=\"RV-ART-HADIAH-ISTERI-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%22Gift%20Ideas%20for%20Your%20Wife%20in%20Malaysia%3A%20Birthday%2C%20Anniversary%20and%20Spa%20Day%20Ideas%20on%20Any%20Budget%22%20page.%20I%20would%20like%20to%20ask%3A%0A%0ARef%3A%20RV-ART-HADIAH-ISTERI-BAR\" target=\"_blank\" rel=\"noopener\" data-wa-kod=\"RV-ART-HADIAH-ISTERI-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  \/* ---------- Kalkulator Cuti Bersalin (artikel 10, 3 Nov 2026): hari terakhir = tarikh mula + (N - 1), kembali bekerja = mula + N.\n     Fakta daripada artikel 10: Akta Kerja 1955 s.37, s.40(2), s.60FA; Ordinan Buruh Sabah dan Sarawak (98 hari, mula seawal 30 hari);\n     PPSM JPA SR.5.4.1 (60 hingga 90 hari, mula seawal 14 hari sebelum jangkaan) dan SR.5.7.1 (CTR Kelompok suami).\n     JANGAN guna aksara kurang-daripada dalam blok ini: wptexturize WordPress (kandungan post) menukar && kepada &#038;&#038; selepasnya (4 Nov 2026). *\/\n  var fc = $('.rv2 [data-cuti]');\n  if (fc) {\n    var C = EN ? {\n      semak: 'Enter a due date or delivery date within the last 12 months or the next 10 months.', semakTempoh: 'Civil servants choose between 60 and 90 days.',\n      hingga: ' to ', mulai: 'From ', sebelum: 'By ', segera: 'As soon as possible', kod: 'RV-ART-CUTI-BERSALIN-CALC',\n      notis: 'Tell your employer', notisD: 'Under the Employment Act 1955 (Peninsular Malaysia and Labuan), give notice within 60 days before your due date, including your leave start date. If you don\\u2019t, your allowance can be held back until you give notice.',\n      suamiNotis: 'Your husband tells his employer', suamiNotisD: 'For 7-day paternity leave in the private sector: at least 30 days before the due date, or as soon as possible after the birth.',\n      mula: 'Maternity leave starts', mulaD: function (n) { return 'Day 1 of ' + n + '. Each day taken before the birth is one day less after it.'; },\n      jangka: 'Due date', lahir: 'Delivery day',\n      lahirD: function (a) { return (a ? 'Day ' + (a + 1) + ' of maternity leave' : 'Day 1 of maternity leave') + ' and day 1 of confinement.'; },\n      paterniti: 'Husband\u2019s paternity leave (private sector)', paternitiD: '7 consecutive days from the delivery day, weekends and public holidays included. Civil servant husbands: CTR Kelompok of 1 to 20 days a year, with the head of department\u2019s approval.',\n      h44: 'Day 44 of confinement', h44D: function (h, b) { return 'Day ' + h + ' of your maternity leave. Leave left after confinement: ' + b + ' days.'; },\n      akhir: 'Last day of maternity leave', akhirD: function (n) { return 'Day ' + n + ' of your leave.'; },\n      balik: 'Back to work', balikD: 'Or your next working day if this falls on a rest day or public holiday.',\n      notaSwasta: 'If your baby arrives early or late, recalculate with the actual delivery date. Days taken more than 30 days before the birth do not count as maternity leave. Pay depends on the conditions explained below.',\n      notaAwam: 'Budget 2027 announced up to 98 days per birth for civil servants, but no start date has been set. Check with your department\u2019s HR unit.',\n      tajuk: function (n, t) { return 'Your ' + n + '-day leave ends on ' + t; },\n      kini: function (h, n) { return 'Today is day ' + h + ' of your ' + n + '-day leave. '; },\n      jadual: function (a, b) { return 'Leave starts ' + a + ' and you are back at work on ' + b + '.'; },\n      anggaran: ' These are estimates based on your due date.', lepas: function (t) { return 'Your maternity leave ended on ' + t + '.'; },\n      wa: function (belum, l, a, b, h) { return 'Hi Roseville, I used the Maternity Leave Calculator. ' + (belum ? 'Due date: ' : 'Delivery date: ') + l + '. My maternity leave: ' + a + ' to ' + b + '. I would like to plan my confinement at Roseville (day 44: ' + h + '). Could you check room availability?\\n\\nRef: RV-ART-CUTI-BERSALIN-CALC'; },\n      waLewat: function (l) { return 'Hi Roseville, I used the Maternity Leave Calculator. I gave birth on ' + l + ' and would like to ask about the Closing Confinement package or the spa.\\n\\nRef: RV-ART-CUTI-BERSALIN-CALC'; },\n      kongsi: function (belum, l, a, b, s, url) { return 'Hi love, here are our maternity leave dates: ' + (belum ? 'due date ' : 'delivery ') + l + ', my leave ' + a + ' to ' + b + '. Private-sector paternity leave is 7 days from the delivery day' + (s ? ', so tell your employer by ' + s : '') + '. ' + url; }\n    } : {\n      semak: 'Sila masukkan tarikh jangkaan bersalin atau tarikh bersalin dalam tempoh 12 bulan lepas atau 10 bulan akan datang.', semakTempoh: 'Penjawat awam memilih antara 60 hingga 90 hari.',\n      hingga: ' hingga ', mulai: 'Mulai ', sebelum: 'Sebelum ', segera: 'Secepat mungkin', kod: 'RV-ART-CUTI-BERSALIN-KIRA',\n      notis: 'Maklumkan majikan anda', notisD: 'Di bawah Akta Kerja 1955 (Semenanjung dan Labuan), beri notis dalam tempoh 60 hari sebelum tarikh jangkaan bersalin, termasuk tarikh mula cuti. Jika tidak, elaun boleh ditangguhkan sehingga notis diberi.',\n      suamiNotis: 'Suami maklumkan majikannya', suamiNotisD: 'Untuk cuti paterniti 7 hari di sektor swasta: sekurang-kurangnya 30 hari sebelum tarikh jangkaan bersalin, atau seawal mungkin selepas kelahiran.',\n      mula: 'Cuti bersalin bermula', mulaD: function (n) { return 'Hari ke-1 daripada ' + n + ' hari. Setiap hari cuti sebelum bersalin mengurangkan satu hari cuti selepas bersalin.'; },\n      jangka: 'Tarikh jangkaan bersalin', lahir: 'Hari bersalin',\n      lahirD: function (a) { return 'Hari ke-' + (a + 1) + ' cuti bersalin dan hari ke-1 pantang.'; },\n      paterniti: 'Cuti paterniti suami (swasta)', paternitiD: '7 hari berturut-turut bermula pada hari bersalin, termasuk hujung minggu dan cuti umum. Suami penjawat awam: CTR Kelompok 1 hingga 20 hari setahun, dengan kelulusan Ketua Jabatan.',\n      h44: 'Hari ke-44 pantang', h44D: function (h, b) { return 'Hari ke-' + h + ' cuti bersalin anda. Baki cuti selepas pantang: ' + b + ' hari.'; },\n      akhir: 'Hari terakhir cuti bersalin', akhirD: function (n) { return 'Hari ke-' + n + ' cuti anda.'; },\n      balik: 'Kembali bekerja', balikD: 'Atau hari bekerja anda yang berikutnya jika tarikh ini hari rehat atau cuti umum.',\n      notaSwasta: 'Jika bayi lahir lebih awal atau lewat, kira semula dengan tarikh bersalin sebenar. Hari cuti yang diambil lebih daripada 30 hari sebelum bersalin tidak dikira sebagai cuti bersalin. Elaun bergantung pada syarat yang diterangkan di bawah.',\n      notaAwam: 'Belanjawan 2027 mengumumkan maksimum 98 hari bagi setiap kelahiran untuk penjawat awam, tetapi tarikh kuat kuasa belum dinyatakan. Semak dengan unit sumber manusia jabatan anda.',\n      tajuk: function (n, t) { return 'Cuti ' + n + ' hari anda tamat pada ' + t; },\n      kini: function (h, n) { return 'Hari ini hari ke-' + h + ' daripada ' + n + ' hari cuti anda. '; },\n      jadual: function (a, b) { return 'Cuti bermula ' + a + ' dan anda kembali bekerja pada ' + b + '.'; },\n      anggaran: ' Tarikh ini ialah anggaran mengikut tarikh jangkaan bersalin.', lepas: function (t) { return 'Cuti bersalin anda sudah tamat pada ' + t + '.'; },\n      wa: function (belum, l, a, b, h) { return 'Salam Roseville, saya guna Kalkulator Cuti Bersalin. ' + (belum ? 'Tarikh jangkaan bersalin: ' : 'Tarikh bersalin: ') + l + '. Cuti bersalin saya ' + a + ' hingga ' + b + '. Saya nak rancang pantang di Roseville (hari ke-44: ' + h + '). Boleh semak kekosongan bilik?\\n\\nRuj: RV-ART-CUTI-BERSALIN-KIRA'; },\n      waLewat: function (l) { return 'Salam Roseville, saya guna Kalkulator Cuti Bersalin. Saya bersalin pada ' + l + ' dan nak tanya tentang Pakej Penutup Pantang atau spa.\\n\\nRuj: RV-ART-CUTI-BERSALIN-KIRA'; },\n      kongsi: function (belum, l, a, b, s, url) { return 'Sayang, ni tarikh cuti bersalin kita: ' + (belum ? 'jangkaan bersalin ' : 'bersalin ') + l + ', cuti saya ' + a + ' hingga ' + b + '. Cuti paterniti (swasta) 7 hari bermula hari bersalin' + (s ? ', jadi maklumkan majikan sebelum ' + s : '') + '. ' + url; }\n    };\n    var segerak = function () {  \/\/ penjawat awam: tempoh 60 hingga 90 hari, mula paling awal 14 hari sebelum jangkaan\n      var awam = fc.sektor.value === 'awam';\n      $('[data-cuti-tempoh]', fc).hidden = !awam;\n      $$('option[data-swasta]', fc.awal).forEach(function (o) { o.hidden = o.disabled = awam; });\n      if (awam && parseInt(fc.awal.value, 10) > 14) fc.awal.value = '14';\n    };\n    fc.sektor.addEventListener('change', segerak);\n    var kiraCuti = function (gulung) {\n      var lahir = new Date(fc.lahir.value + 'T00:00:00'), kini4 = new Date(); kini4.setHours(0, 0, 0, 0);\n      var beza = Math.round((lahir - kini4) \/ 864e5);\n      if (isNaN(beza) || -366 > beza || beza > 300) { ralat(fc, C.semak); return; }\n      var awam = fc.sektor.value === 'awam', N = awam ? parseInt(fc.tempoh.value, 10) : 98;\n      if (awam && !(N >= 60 && 90 >= N)) { ralat(fc, C.semakTempoh); return; }\n      ralat(fc, '');\n      var A = Math.min(parseInt(fc.awal.value, 10) || 0, awam ? 14 : 30), belum = beza > 0;\n      var mula = tambah(lahir, -A), akhir = tambah(mula, N - 1), balik = tambah(mula, N), h44 = tambah(lahir, 43);\n      var hadPada = function (d, awalan) { return kini4 > d ? C.segera : awalan + tarikh(d, true); };\n      var item = [];  \/\/ [kunci susunan (hari dari tarikh bersalin), teks tarikh, tajuk, huraian, kelas]\n      if (belum && !awam) item.push([-60.5, hadPada(tambah(lahir, -60), C.mulai), C.notis, C.notisD, '']);\n      if (belum) item.push([-30.5, hadPada(tambah(lahir, -30), C.sebelum), C.suamiNotis, C.suamiNotisD, '']);\n      if (A) item.push([-A, tarikh(mula), C.mula, C.mulaD(N), '']);\n      item.push([0, tarikh(lahir), belum ? C.jangka : C.lahir, C.lahirD(A), '']);\n      item.push([0.5, tarikh(lahir, true) + C.hingga + tarikh(tambah(lahir, 6), true), C.paterniti, C.paternitiD, '']);\n      item.push([43, tarikh(h44), C.h44, C.h44D(A + 44, N - A - 44), 'utama']);\n      item.push([N - A - 1, tarikh(akhir), C.akhir, C.akhirD(N), 'utama']);\n      item.push([N - A, tarikh(balik), C.balik, C.balikD, '']);\n      item.sort(function (a, b) { return a[0] - b[0]; });\n      var ol = $('.rv2 [data-cuti-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      var hari = Math.round((kini4 - mula) \/ 864e5);\n      $('.rv2 [data-cuti-tajuk]').textContent = C.tajuk(N, tarikh(akhir));\n      $('.rv2 [data-cuti-sub]').textContent = hari >= N ? C.lepas(tarikh(akhir, true)) :\n        (hari >= 0 ? C.kini(hari + 1, N) : '') + C.jadual(tarikh(mula, true), tarikh(balik, true)) + (belum ? C.anggaran : '');\n      $('.rv2 [data-cuti-nota]').textContent = awam ? C.notaAwam : C.notaSwasta;\n      var l = tarikh(lahir, true), a = tarikh(mula, true), b = tarikh(akhir, true);\n      var w = $('.rv2 [data-wa-kod=\"' + C.kod + '\"]');\n      if (w) w.href = waUrl(-43 > beza ? C.waLewat(l) : C.wa(belum, l, a, b, tarikh(h44, true)));\n      var kp = $('.rv2 [data-cuti-pantang]');\n      if (kp) kp.href = (EN ? '\/en' : '') + '\/kira-hari-pantang\/?lahir=' + iso(lahir) + '&tempoh=44';\n      var ks3 = $('.rv2 [data-cuti-kongsi]'), sn = tambah(lahir, -30);\n      if (ks3) ks3.href = 'whatsapp:\/\/send?text=' + encodeURIComponent(C.kongsi(belum, l, a, b, belum && sn >= kini4 ? tarikh(sn, true) : '',\n        location.origin + location.pathname + '?lahir=' + iso(lahir) + '&sektor=' + fc.sektor.value + '&awal=' + A + (awam ? '&tempoh=' + N : '') + '#kalkulator'));\n      var hasil = $('.rv2 [data-cuti-hasil]'); hasil.hidden = false;\n      if (gulung) hasil.scrollIntoView({ behavior: 'smooth', block: 'start' });\n      (window.dataLayer = window.dataLayer || []).push({ event: 'kalkulator_cuti_dijana', sektor: fc.sektor.value, awal: A, tempoh: N });\n    };\n    fc.addEventListener('submit', function (ev) { ev.preventDefault(); kiraCuti(true); });\n    var c0 = qp.get('lahir');\n    if (c0 && \/^[0-9]{4}-[0-9]{2}-[0-9]{2}$\/.test(c0)) {\n      fc.lahir.value = c0;\n      if (qp.get('sektor') === 'awam') fc.sektor.value = 'awam';\n      var tp = parseInt(qp.get('tempoh'), 10); if (tp >= 60 && 90 >= tp) fc.tempoh.value = String(tp);\n      var aw = qp.get('awal'); if (aw && fc.awal.querySelector('option[value=\"' + parseInt(aw, 10) + '\"]')) fc.awal.value = String(parseInt(aw, 10));\n      segerak();\n      setTimeout(function () { kiraCuti(true); }, 80);\n    } else segerak();\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>Idea hadiah untuk isteri ikut situasi dan bajet: hari jadi, anniversary, isteri penat, merajuk atau mengandung. Termasuk hadiah tanpa belanja dan spa.<\/p>","protected":false},"author":1,"featured_media":8223,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"elementor_canvas","format":"standard","meta":{"footnotes":""},"categories":[33],"tags":[],"class_list":["post-8219","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\/8219","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=8219"}],"version-history":[{"count":5,"href":"https:\/\/rosevilleconfinement.com\/en\/wp-json\/wp\/v2\/posts\/8219\/revisions"}],"predecessor-version":[{"id":8317,"href":"https:\/\/rosevilleconfinement.com\/en\/wp-json\/wp\/v2\/posts\/8219\/revisions\/8317"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rosevilleconfinement.com\/en\/wp-json\/wp\/v2\/media\/8223"}],"wp:attachment":[{"href":"https:\/\/rosevilleconfinement.com\/en\/wp-json\/wp\/v2\/media?parent=8219"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rosevilleconfinement.com\/en\/wp-json\/wp\/v2\/categories?post=8219"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rosevilleconfinement.com\/en\/wp-json\/wp\/v2\/tags?post=8219"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}