{"id":6,"date":"2026-11-09T14:54:37","date_gmt":"2026-11-09T14:54:37","guid":{"rendered":"https:\/\/zhrempire.shop\/?page_id=6"},"modified":"2026-11-09T14:56:34","modified_gmt":"2026-11-09T14:56:34","slug":"zh","status":"publish","type":"page","link":"https:\/\/zhrempire.shop\/","title":{"rendered":"zh"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"6\" class=\"elementor elementor-6\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2ad98d4c e-flex e-con-boxed e-con e-parent\" data-id=\"2ad98d4c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-693bf29c elementor-widget elementor-widget-html\" data-id=\"693bf29c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Great+Vibes&family=Cormorant+Garamond:wght@400;500;600;700&display=swap');\n\n#zh-wedding {\n  --purple: #51266d;\n  --deep: #341346;\n  --lavender: #b99bda;\n  --gold: #c6a674;\n  --ivory: #fff9f5;\n  font-family: 'Cormorant Garamond',Georgia,serif;\n  background: var(--ivory);\n  color: var(--deep);\n  text-align: center;\n  overflow: hidden;\n  position: relative;\n}\n#zh-wedding * {box-sizing:border-box}\n#zh-wedding h1,\n#zh-wedding h2,\n#zh-wedding p {color:inherit}\n#zh-wedding h1 {\n  font-family:'Great Vibes',cursive;\n  font-size:clamp(47px,10vw,75px);\n  font-weight:normal;\n  line-height:1.35;\n  margin:14px 0;\n}\n#zh-wedding h2 {\n  font-size:36px;\n  font-weight:500;\n  margin:12px 0 25px;\n}\n#zh-wedding p {\n  font-size:19px;\n  line-height:1.8;\n}\n#zh-wedding .gold {color:var(--gold)}\n#zh-wedding .ornament {\n  color:var(--gold);\n  font-size:28px;\n  padding:15px 0;\n}\n#zh-wedding .small {\n  font:12px Arial,sans-serif;\n  letter-spacing:3px;\n  text-transform:uppercase;\n}\n#zh-wedding button,\n#zh-wedding .zh-btn {\n  display:inline-block;\n  background:linear-gradient(135deg,#e7d1a7,#c4a16e);\n  color:#321441;\n  padding:14px 25px;\n  border:0;\n  border-radius:30px;\n  font:600 13px Arial,sans-serif;\n  text-decoration:none;\n  cursor:pointer;\n  margin:8px 4px;\n}\n#zh-wedding button:focus-visible,\n#zh-wedding a:focus-visible {\n  outline:3px solid #8b61ae;\n  outline-offset:3px;\n}\n\n\/* COVER GAMBAR *\/\n#zh-wedding .cover {\n  min-height:100svh;\n  background:#eee0f6;\n  display:flex;\n  justify-content:center;\n  align-items:center;\n  padding:0;\n}\n#zh-wedding .cover-inner {\n  width:min(100%,520px);\n  position:relative;\n  overflow:hidden;\n}\n#zh-wedding .cover-image {\n  width:100%;\n  height:auto;\n  display:block;\n}\n#zh-wedding .cover-button {\n  position:absolute;\n  bottom:5%;\n  left:50%;\n  transform:translateX(-50%);\n  white-space:nowrap;\n  box-shadow:0 5px 20px #32144155;\n  z-index:2;\n}\n#zh-wedding .cover-button:hover {\n  background:#ecd7b0;\n}\n#zh-wedding .cover-inner:after {\n  content:'';\n  position:absolute;\n  inset:auto 0 0;\n  height:22%;\n  background:linear-gradient(\n    transparent,#34134666\n  );\n  pointer-events:none;\n}\n\n\/* ANIMASI *\/\n@keyframes zhFade {\n  from {opacity:0;transform:translateY(35px)}\n  to {opacity:1;transform:translateY(0)}\n}\n#zh-wedding .animate {\n  animation:zhFade 1s ease both;\n}\n#zh-wedding .petal {\n  position:absolute;\n  top:-40px;\n  font-size:22px;\n  pointer-events:none;\n  animation:zhFall linear infinite;\n  opacity:.6;\n  z-index:2;\n}\n@keyframes zhFall {\n  to {\n    transform:translateY(105vh) rotate(360deg);\n    opacity:0;\n  }\n}\n\n\/* ISI JEMPUTAN *\/\n#zh-wedding .content {\n  display:none;\n  padding-bottom:85px;\n}\n#zh-wedding .section {\n  padding:80px 22px;\n  background:linear-gradient(\n    140deg,#fff9f5,#eee1f7\n  );\n  position:relative;\n}\n#zh-wedding .section.purple {\n  background:\n    radial-gradient(ellipse at top,#6c408b,transparent 75%),\n    var(--deep);\n  color:white;\n}\n#zh-wedding .section > * {\n  max-width:570px;\n  margin-left:auto;\n  margin-right:auto;\n}\n#zh-wedding .floral {\n  color:#a37bc0;\n  font-size:35px;\n  letter-spacing:10px;\n  margin:20px auto;\n}\n#zh-wedding .line {\n  height:1px;\n  width:150px;\n  background:var(--gold);\n  margin:25px auto;\n}\n\n\/* COUNTDOWN *\/\n#zh-wedding .countdown {\n  display:flex;\n  gap:8px;\n  justify-content:center;\n  margin:25px auto;\n}\n#zh-wedding .countdown div {\n  background:#ffffff15;\n  border:1px solid var(--gold);\n  border-radius:12px;\n  min-width:65px;\n  padding:13px 7px;\n}\n#zh-wedding .countdown strong {\n  display:block;\n  color:#e2c893;\n  font-size:28px;\n}\n#zh-wedding .countdown small {\n  font:11px Arial,sans-serif;\n}\n\n\/* NAVIGASI *\/\n#zh-wedding .bottom-nav {\n  display:none;\n  position:fixed;\n  bottom:0;\n  left:0;\n  right:0;\n  z-index:9998;\n  background:#341346;\n  border-top:1px solid var(--gold);\n  justify-content:space-around;\n  padding:9px 3px calc(9px + env(safe-area-inset-bottom));\n}\n#zh-wedding .bottom-nav button {\n  padding:5px;\n  margin:0;\n  background:none;\n  color:#e7cc9a;\n  border-radius:0;\n  font:11px Arial,sans-serif;\n}\n#zh-wedding .bottom-nav span {\n  display:block;\n  font-size:22px;\n  margin-bottom:4px;\n}\n\n\/* POPUP *\/\n#zh-wedding .overlay {\n  display:none;\n  position:fixed;\n  inset:0;\n  z-index:9999;\n  background:#180b25e8;\n  justify-content:center;\n  align-items:center;\n  padding:15px;\n}\n#zh-wedding .overlay.active {display:flex}\n#zh-wedding .modal {\n  width:min(100%,440px);\n  max-height:90vh;\n  overflow-y:auto;\n  background:#fff9f5;\n  border:3px double var(--gold);\n  border-radius:14px;\n  padding:30px 20px;\n  color:var(--deep);\n  position:relative;\n}\n#zh-wedding .modal h2 {font-size:30px}\n#zh-wedding .modal input,\n#zh-wedding .modal select,\n#zh-wedding .modal textarea {\n  width:100%;\n  display:block;\n  background:white;\n  color:#333;\n  border:1px solid #cbb7d9;\n  border-radius:8px;\n  padding:13px;\n  margin:10px 0;\n  font:14px Arial,sans-serif;\n}\n#zh-wedding .modal .close {\n  position:absolute;\n  top:3px;\n  right:5px;\n  background:none;\n  font-size:25px;\n  box-shadow:none;\n}\n#zh-wedding .wish {\n  padding:15px 0;\n  text-align:left;\n  border-bottom:1px solid #cbb7d9;\n  overflow-wrap:anywhere;\n}\n#zh-wedding .wish strong {display:block}\n\n@media(min-width:700px) {\n  #zh-wedding .bottom-nav {\n    left:50%;\n    width:min(100%,520px);\n    transform:translateX(-50%);\n  }\n}\n@media(max-width:370px) {\n  #zh-wedding .countdown div {min-width:54px}\n  #zh-wedding .countdown strong {font-size:23px}\n}\n@media(prefers-reduced-motion:reduce) {\n  #zh-wedding .animate,\n  #zh-wedding .petal {\n    animation:none;\n  }\n}\n<\/style>\n\n<div id=\"zh-wedding\">\n\n  <!-- COVER ILUSTRASI -->\n  <div class=\"cover\" id=\"zh-cover\">\n    <div class=\"cover-inner\">\n\n      <img decoding=\"async\" id=\"zh-cover-img\"\n        class=\"cover-image\"\n        src=\"\"\n        alt=\"Kad jemputan Zahir dan Huda\"\n      >\n\n      <button type=\"button\"\n        id=\"zh-open\"\n        class=\"cover-button\">\n        \u2661 Buka Jemputan\n      <\/button>\n\n    <\/div>\n  <\/div>\n\n  <!-- ISI KAD -->\n  <main class=\"content\" id=\"zh-content\">\n\n    <section class=\"section animate\">\n      <div class=\"floral\">\u2740 \u273f \u2740<\/div>\n      <div class=\"ornament\">\u2766 \u2727 \u2766<\/div>\n\n      <p class=\"small\">\n        Majlis Kesyukuran Perkahwinan\n      <\/p>\n\n      <h2>Assalamualaikum W.B.T.<\/h2>\n\n      <p>\n        Dengan penuh kesyukuran ke hadrat\n        Ilahi, kami sekeluarga menjemput\n        Dato' \/ Datin \/ Tuan \/ Puan\n        sekeluarga ke majlis perkahwinan\n      <\/p>\n\n      <h1>Zahir<\/h1>\n      <h2>&amp;<\/h2>\n      <h1>Huda<\/h1>\n\n      <div class=\"line\"><\/div>\n\n      <p>\n        Semoga dengan kehadiran serta doa\n        restu anda akan menyerikan lagi\n        majlis penuh bermakna ini.\n      <\/p>\n\n      <div class=\"floral\">\u273f \u2740 \u273f<\/div>\n    <\/section>\n\n    <!-- BUTIRAN MAJLIS -->\n    <section class=\"section purple\" id=\"zh-details\">\n      <p class=\"small gold\">The Wedding Day<\/p>\n\n      <h2>Butiran Majlis<\/h2>\n      <div class=\"ornament\">\u2727 \u2766 \u2727<\/div>\n\n      <p class=\"gold\">\n        SABTU<br>\n        2 JANUARI 2027\n      <\/p>\n\n      <p>11.00 PAGI \u2013 4.00 PETANG<\/p>\n\n      <div class=\"line\"><\/div>\n\n      <p>\n        Teratak Majlis Perkahwinan<br>\n        Kampung Lata Rek<br>\n        18000 Kuala Krai, Kelantan\n      <\/p>\n\n      <a class=\"zh-btn\" id=\"zh-map\"\n        href=\"https:\/\/maps.google.com\"\n        target=\"_blank\" rel=\"noopener\">\n        Google Maps\n      <\/a>\n\n      <a class=\"zh-btn\" id=\"zh-waze\"\n        href=\"https:\/\/waze.com\"\n        target=\"_blank\" rel=\"noopener\">\n        Waze\n      <\/a>\n    <\/section>\n\n    <!-- COUNTDOWN -->\n    <section class=\"section purple\" id=\"zh-count-section\">\n      <p class=\"small gold\">\n        Counting The Days\n      <\/p>\n\n      <h2>Detik Bahagia<\/h2>\n\n      <div class=\"countdown\">\n        <div>\n          <strong id=\"zh-days\">00<\/strong>\n          <small>Hari<\/small>\n        <\/div>\n        <div>\n          <strong id=\"zh-hours\">00<\/strong>\n          <small>Jam<\/small>\n        <\/div>\n        <div>\n          <strong id=\"zh-minutes\">00<\/strong>\n          <small>Minit<\/small>\n        <\/div>\n        <div>\n          <strong id=\"zh-seconds\">00<\/strong>\n          <small>Saat<\/small>\n        <\/div>\n      <\/div>\n\n      <button type=\"button\" data-popup=\"rsvp\">\n        Sahkan Kehadiran \u2661\n      <\/button>\n    <\/section>\n\n    <!-- BUKU UCAPAN -->\n    <section class=\"section\" id=\"zh-wishes\">\n      <div class=\"floral\">\u2740 \u273f \u2740<\/div>\n\n      <h2>Buku Ucapan<\/h2>\n\n      <p>\n        Titipkan doa dan ucapan\n        buat pasangan pengantin.\n      <\/p>\n\n      <button type=\"button\" data-popup=\"wish\">\n        Tulis Ucapan\n      <\/button>\n\n      <div id=\"zh-wish-list\">\n        <div class=\"wish\">\n          <strong>Tetamu<\/strong>\n          Semoga berbahagia hingga ke syurga.\n        <\/div>\n      <\/div>\n\n      <p style=\"font-size:12px\">\n        Buku ucapan demo disimpan dalam\n        browser ini sahaja.\n      <\/p>\n    <\/section>\n\n    <!-- PENUTUP -->\n    <section class=\"section purple\">\n      <div class=\"ornament\">\u2766 \u2727 \u2766<\/div>\n\n      <h2>Terima Kasih<\/h2>\n\n      <p>\n        Dengan penuh kasih dan penghargaan,\n        kami menantikan kehadiran anda.\n      <\/p>\n\n      <h1>Zahir &amp; Huda<\/h1>\n      <div class=\"ornament\">\u2740<\/div>\n    <\/section>\n\n  <\/main>\n\n  <!-- MENU BAWAH -->\n  <nav class=\"bottom-nav\" id=\"zh-nav\">\n\n    <button type=\"button\" data-popup=\"rsvp\">\n      <span>\u2661<\/span>RSVP\n    <\/button>\n\n    <button type=\"button\" data-popup=\"wish\">\n      <span>\u2709<\/span>Ucapan\n    <\/button>\n\n    <button type=\"button\" id=\"zh-contact\">\n      <span>\u260e<\/span>Hubungi\n    <\/button>\n\n    <button type=\"button\" id=\"zh-location\">\n      <span>\u2316<\/span>Lokasi\n    <\/button>\n\n    <button type=\"button\" id=\"zh-music\">\n      <span>\u266b<\/span>\n      <b id=\"zh-music-label\">Muzik<\/b>\n    <\/button>\n\n  <\/nav>\n\n  <!-- POPUP RSVP -->\n  <div class=\"overlay\" id=\"zh-rsvp-popup\">\n    <div class=\"modal\" role=\"dialog\"\n      aria-modal=\"true\"\n      aria-label=\"Pengesahan kehadiran\">\n\n      <button type=\"button\"\n        class=\"close\" data-close>\u00d7<\/button>\n\n      <h2>RSVP Kehadiran<\/h2>\n      <p>Sila sahkan kehadiran anda.<\/p>\n\n      <form id=\"zh-rsvp-form\">\n\n        <input type=\"text\"\n          id=\"zh-name\"\n          placeholder=\"Nama penuh\"\n          required maxlength=\"100\">\n\n        <select id=\"zh-attend\">\n          <option value=\"Hadir\">\n            Ya, saya akan hadir\n          <\/option>\n          <option value=\"Tidak Hadir\">\n            Maaf, tidak dapat hadir\n          <\/option>\n        <\/select>\n\n        <select id=\"zh-guests\">\n          <option value=\"1\">1 orang<\/option>\n          <option value=\"2\">2 orang<\/option>\n          <option value=\"3\">3 orang<\/option>\n          <option value=\"4\">4 orang<\/option>\n          <option value=\"5\">5 orang<\/option>\n        <\/select>\n\n        <button type=\"submit\">\n          Hantar RSVP WhatsApp\n        <\/button>\n\n      <\/form>\n    <\/div>\n  <\/div>\n\n  <!-- POPUP UCAPAN -->\n  <div class=\"overlay\" id=\"zh-wish-popup\">\n    <div class=\"modal\" role=\"dialog\"\n      aria-modal=\"true\"\n      aria-label=\"Buku ucapan\">\n\n      <button type=\"button\"\n        class=\"close\" data-close>\u00d7<\/button>\n\n      <h2>Titipkan Ucapan<\/h2>\n\n      <form id=\"zh-wish-form\">\n\n        <input type=\"text\"\n          id=\"zh-wish-name\"\n          placeholder=\"Nama anda\"\n          maxlength=\"80\" required>\n\n        <textarea id=\"zh-wish-message\"\n          placeholder=\"Ucapan dan doa...\"\n          rows=\"4\"\n          maxlength=\"500\"\n          required><\/textarea>\n\n        <button type=\"submit\">\n          Hantar Ucapan\n        <\/button>\n\n      <\/form>\n    <\/div>\n  <\/div>\n\n  <!-- LAGU -->\n  <audio id=\"zh-audio\"\n    preload=\"none\" loop><\/audio>\n\n<\/div>\n\n<script>\n(function() {\n  const root = document.getElementById('zh-wedding');\n  if (!root || root.dataset.ready) return;\n  root.dataset.ready = '1';\n\n  \/\/ EDIT MAKLUMAT DI SINI\n  const config = {\n    coverImage: 'https:\/\/legacyforman.shop\/wp-content\/uploads\/2026\/11\/cover-zahir-huda-lavender.png',\n\n    date: '2027-01-02T11:00:00+08:00',\n\n    music: 'https:\/\/legacyforman.shop\/wp-content\/uploads\/2026\/11\/7648879360732056850.mp3',\n\n    whatsapp: '60122721482',\n\n    maps: 'https:\/\/maps.app.goo.gl\/cdwvaoYrve2YWMTs5',\n\n    waze: 'https:\/\/waze.com'\n  };\n\n  const $ = s => root.querySelector(s);\n  const audio = $('#zh-audio');\n\n  if (config.coverImage.startsWith('https:\/\/')) {\n    $('#zh-cover-img').src = config.coverImage;\n  } else {\n    $('#zh-cover-img').style.display = 'none';\n    $('#zh-cover').insertAdjacentHTML(\n      'afterbegin',\n      '<div style=\"position:absolute;top:25%;padding:20px;color:#51266d;font-size:24px\">Zahir & Huda<br>2 Januari 2027<\/div>'\n    );\n  }\n\n  audio.src = config.music;\n  $('#zh-map').href = config.maps;\n  $('#zh-waze').href = config.waze;\n\n  function playMusic() {\n    if (!config.music) return;\n\n    audio.play().then(() => {\n      $('#zh-music-label').textContent = 'Pause';\n    }).catch(() => {\n      $('#zh-music-label').textContent = 'Muzik';\n    });\n  }\n\n  \/\/ BUKA KAD\n  $('#zh-open').addEventListener('click', () => {\n    $('#zh-cover').style.display = 'none';\n    $('#zh-content').style.display = 'block';\n    $('#zh-nav').style.display = 'flex';\n\n    window.scrollTo(0, 0);\n    playMusic();\n  });\n\n  \/\/ MUZIK\n  $('#zh-music').addEventListener('click', () => {\n    if (audio.paused) {\n      playMusic();\n    } else {\n      audio.pause();\n      $('#zh-music-label').textContent = 'Muzik';\n    }\n  });\n\n  \/\/ HUBUNGI\n  $('#zh-contact').addEventListener('click', () => {\n    window.open(\n      'https:\/\/wa.me\/' + config.whatsapp,\n      '_blank',\n      'noopener'\n    );\n  });\n\n  \/\/ LOKASI\n  $('#zh-location').addEventListener('click', () => {\n    window.open(\n      config.maps, '_blank', 'noopener'\n    );\n  });\n\n  \/\/ POPUP\n  function openPopup(name) {\n    const popup = $('#zh-' + name + '-popup');\n    if (popup) popup.classList.add('active');\n  }\n\n  function closePopups() {\n    root.querySelectorAll('.overlay').forEach(el => {\n      el.classList.remove('active');\n    });\n  }\n\n  root.querySelectorAll('[data-popup]').forEach(btn => {\n    btn.addEventListener('click', () => {\n      openPopup(btn.dataset.popup);\n    });\n  });\n\n  root.querySelectorAll('[data-close]').forEach(btn => {\n    btn.addEventListener('click', closePopups);\n  });\n\n  root.querySelectorAll('.overlay').forEach(el => {\n    el.addEventListener('click', e => {\n      if (e.target === el) closePopups();\n    });\n  });\n\n  \/\/ COUNTDOWN\n  function countdown() {\n    const diff = Math.max(\n      0,\n      new Date(config.date).getTime() - Date.now()\n    );\n\n    $('#zh-days').textContent =\n      Math.floor(diff \/ 86400000);\n\n    $('#zh-hours').textContent =\n      String(Math.floor(diff \/ 3600000) % 24)\n      .padStart(2, '0');\n\n    $('#zh-minutes').textContent =\n      String(Math.floor(diff \/ 60000) % 60)\n      .padStart(2, '0');\n\n    $('#zh-seconds').textContent =\n      String(Math.floor(diff \/ 1000) % 60)\n      .padStart(2, '0');\n  }\n\n  countdown();\n  setInterval(countdown, 1000);\n\n  \/\/ RSVP WHATSAPP\n  $('#zh-attend').addEventListener('change', e => {\n    $('#zh-guests').disabled =\n      e.target.value !== 'Hadir';\n  });\n\n  $('#zh-rsvp-form').addEventListener('submit', e => {\n    e.preventDefault();\n\n    const name = $('#zh-name').value.trim();\n    const status = $('#zh-attend').value;\n\n    const guests = status === 'Hadir'\n      ? $('#zh-guests').value\n      : '0';\n\n    if (!name) return;\n\n    const msg =\n      'RSVP Majlis Zahir & Huda\\n' +\n      'Nama: ' + name + '\\n' +\n      'Status: ' + status + '\\n' +\n      'Jumlah Kehadiran: ' + guests;\n\n    window.open(\n      'https:\/\/wa.me\/' + config.whatsapp +\n      '?text=' + encodeURIComponent(msg),\n      '_blank',\n      'noopener'\n    );\n  });\n\n  \/\/ BUKU UCAPAN DEMO\n  function renderWish(name, message) {\n    const box = document.createElement('div');\n    box.className = 'wish';\n\n    const strong = document.createElement('strong');\n    strong.textContent = name;\n\n    const body = document.createElement('div');\n    body.textContent = message;\n\n    box.append(strong, body);\n    $('#zh-wish-list').prepend(box);\n  }\n\n  const storageKey = 'zh-wedding-wishes-demo';\n  let wishes = [];\n\n  try {\n    wishes = JSON.parse(\n      localStorage.getItem(storageKey) || '[]'\n    );\n    if (!Array.isArray(wishes)) wishes = [];\n  } catch(e) {\n    wishes = [];\n  }\n\n  wishes.forEach(w => {\n    renderWish(w.name, w.message);\n  });\n\n  $('#zh-wish-form').addEventListener('submit', e => {\n    e.preventDefault();\n\n    const name = $('#zh-wish-name').value.trim();\n    const message = $('#zh-wish-message').value.trim();\n\n    if (!name || !message) return;\n\n    wishes.push({name, message});\n    renderWish(name, message);\n\n    try {\n      localStorage.setItem(\n        storageKey, JSON.stringify(wishes)\n      );\n    } catch(e) {}\n\n    e.target.reset();\n    closePopups();\n\n    $('#zh-wishes').scrollIntoView({\n      behavior: 'smooth'\n    });\n  });\n\n})();\n<\/script>\n<style>\n#zh-wedding .lavender-petal {\n  position: fixed;\n  top: -50px;\n  pointer-events: none;\n  z-index: 100;\n  opacity: 0;\n  animation: lavender-fall linear forwards;\n  filter: drop-shadow(0 2px 3px #8051a333);\n}\n\n@keyframes lavender-fall {\n  0% {\n    transform: translate3d(0,-30px,0) rotate(0deg);\n    opacity: 0;\n  }\n  12% { opacity: .85; }\n  85% { opacity: .75; }\n  100% {\n    transform: translate3d(65px,105vh,0)\n      rotate(540deg);\n    opacity: 0;\n  }\n}\n<\/style>\n\n<script>\n(function() {\n  const wedding = document.getElementById('zh-wedding');\n  const openBtn = document.getElementById('zh-open');\n\n  if (!wedding || !openBtn ||\n      wedding.dataset.petalsReady) return;\n\n  wedding.dataset.petalsReady = '1';\n\n  function createPetal() {\n    const petal = document.createElement('span');\n\n    petal.className = 'lavender-petal';\n    petal.textContent = ['\ud83c\udf38','\u2740','\u273f'][Math.floor(Math.random()*3)];\n\n    petal.style.left = Math.random()*100 + 'vw';\n    petal.style.fontSize = (12 + Math.random()*13) + 'px';\n    petal.style.color = ['#B79AD9','#D7B9E8','#9370BE'][\n      Math.floor(Math.random()*3)\n    ];\n\n    const duration = 5 + Math.random()*4;\n    petal.style.animationDuration = duration + 's';\n\n    wedding.appendChild(petal);\n    setTimeout(() => petal.remove(), duration*1000);\n  }\n\n  openBtn.addEventListener('click', function() {\n    if (window.matchMedia('(prefers-reduced-motion: reduce)').matches)\n      return;\n\n    let created = 0;\n\n    const rain = setInterval(() => {\n      createPetal();\n      created++;\n\n      if (created >= 35) clearInterval(rain);\n    }, 200);\n  });\n})();\n<\/script>\n\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>\u2661 Buka Jemputan \u2740 \u273f \u2740 \u2766 \u2727 \u2766 Majlis Kesyukuran Perkahwinan Assalamualaikum W.B.T. Dengan penuh kesyukuran ke hadrat Ilahi, kami sekeluarga menjemput Dato&#8217; \/ Datin \/ Tuan \/ Puan sekeluarga ke majlis perkahwinan Zahir &amp; Huda Semoga dengan kehadiran serta doa restu anda akan menyerikan lagi majlis penuh bermakna ini. \u273f \u2740 \u273f The [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"footnotes":""},"class_list":["post-6","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/zhrempire.shop\/index.php?rest_route=\/wp\/v2\/pages\/6","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zhrempire.shop\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/zhrempire.shop\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/zhrempire.shop\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zhrempire.shop\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=6"}],"version-history":[{"count":4,"href":"https:\/\/zhrempire.shop\/index.php?rest_route=\/wp\/v2\/pages\/6\/revisions"}],"predecessor-version":[{"id":15,"href":"https:\/\/zhrempire.shop\/index.php?rest_route=\/wp\/v2\/pages\/6\/revisions\/15"}],"wp:attachment":[{"href":"https:\/\/zhrempire.shop\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}