{"id":6,"date":"2026-01-19T06:46:21","date_gmt":"2026-01-19T06:46:21","guid":{"rendered":"https:\/\/loyalty.ezoneretails.com\/?page_id=6"},"modified":"2026-01-21T12:12:22","modified_gmt":"2026-01-21T12:12:22","slug":"loyalty","status":"publish","type":"page","link":"https:\/\/loyalty.ezoneretails.com\/fr\/","title":{"rendered":"Loyalty"},"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-3ca5bb1 e-con-full e-flex e-con e-parent\" data-id=\"3ca5bb1\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-221a6ac e-con-full e-flex e-con e-child\" data-id=\"221a6ac\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a1684f7 elementor-widget elementor-widget-image\" data-id=\"a1684f7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"1600\" height=\"918\" src=\"https:\/\/loyalty.ezoneretails.com\/wp-content\/uploads\/2026\/01\/Ezone-Logo-White-2025.png\" class=\"attachment-full size-full wp-image-31\" alt=\"\" srcset=\"https:\/\/loyalty.ezoneretails.com\/wp-content\/uploads\/2026\/01\/Ezone-Logo-White-2025.png 1600w, https:\/\/loyalty.ezoneretails.com\/wp-content\/uploads\/2026\/01\/Ezone-Logo-White-2025-300x172.png 300w, https:\/\/loyalty.ezoneretails.com\/wp-content\/uploads\/2026\/01\/Ezone-Logo-White-2025-1024x588.png 1024w, https:\/\/loyalty.ezoneretails.com\/wp-content\/uploads\/2026\/01\/Ezone-Logo-White-2025-768x441.png 768w, https:\/\/loyalty.ezoneretails.com\/wp-content\/uploads\/2026\/01\/Ezone-Logo-White-2025-1536x881.png 1536w\" sizes=\"(max-width: 1600px) 100vw, 1600px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-e26f10c e-con-full e-flex e-con e-child\" data-id=\"e26f10c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-14f9b8a elementor-widget elementor-widget-heading\" data-id=\"14f9b8a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Register for Exclusive Member Benefits<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-bb4f5e9 e-con-full e-flex e-con e-child\" data-id=\"bb4f5e9\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-16ece17 elementor-widget elementor-widget-shortcode\" data-id=\"16ece17\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\n<div class=\"wpcf7 no-js\" id=\"wpcf7-f15-o1\" lang=\"en-US\" dir=\"ltr\" data-wpcf7-id=\"15\">\n<div class=\"screen-reader-response\"><p role=\"status\" aria-live=\"polite\" aria-atomic=\"true\"><\/p> <ul><\/ul><\/div>\n<form action=\"\/fr\/wp-json\/wp\/v2\/pages\/6#wpcf7-f15-o1\" method=\"post\" class=\"wpcf7-form init\" aria-label=\"Contact form\" novalidate=\"novalidate\" data-status=\"init\">\n<fieldset class=\"hidden-fields-container\"><input type=\"hidden\" name=\"_wpcf7\" value=\"15\" \/><input type=\"hidden\" name=\"_wpcf7_version\" value=\"6.1.5\" \/><input type=\"hidden\" name=\"_wpcf7_locale\" value=\"en_US\" \/><input type=\"hidden\" name=\"_wpcf7_unit_tag\" value=\"wpcf7-f15-o1\" \/><input type=\"hidden\" name=\"_wpcf7_container_post\" value=\"0\" \/><input type=\"hidden\" name=\"_wpcf7_posted_data_hash\" value=\"\" \/>\n<\/fieldset>\n<div class=\"uacf7-form-wrapper-container uacf7-form-15  \"><!-- ===== Compact Loyalty Form (v2, CF7 safe) ===== -->\n<style>\n  .cf7-loyalty-mini-2{\n    max-width:420px;margin:12px auto;padding:14px 16px;\n    background:#fff;border:1px solid #e5e5e5;border-radius:10px;\n    box-shadow:0 2px 5px rgba(0,0,0,.04);\n  }\n  .cf7-loyalty-mini-2 p{ margin-bottom:5px !important; }\n  .cf7-loyalty-mini-2 label{\n    display:block;font-size:13px;font-weight:600;margin:10px 0px 10px 0px;\n  }\n  .cf7-loyalty-mini-2 .cf7-input-normal{\n    width:100%;padding:8px 10px;font-size:14px;border:1px solid #ccc;\n    border-radius:8px;box-sizing:border-box;line-height:1.2;\n  }\n  .cf7-loyalty-mini-2 textarea.cf7-input-normal{height:55px;resize:none;}\n  .cf7-row-two-2{display:grid;grid-template-columns:1fr 1fr;gap:10px;}\n  @media(max-width:480px){.cf7-row-two-2{grid-template-columns:1fr;}}\n  .cf7-loyalty-mini-2 .anniv-wrap-2{display:none;margin-top:4px;}\n  .cf7-loyalty-mini-2 .submit-wrap-2{text-align:left !important;margin-top:10px;}\n  .cf7-loyalty-mini-2 input[type=\"submit\"]{\n    background:#1ca9e1;color:#fff;border:0;border-radius:8px;\n    padding:9px 22px;font-size:15px;cursor:pointer;transition:.2s;\n  }\n  .cf7-loyalty-mini-2 input[type=\"submit\"]:hover{background:#133c5e;}\n  #cf7-loyalty-form-2 .wpcf7-response-output{ display:none !important; }\n\n  .cf7p-modal-backdrop-2{\n    position:fixed; inset:0; background:rgba(0,0,0,.45);\n    display:none; align-items:center; justify-content:center; z-index:99999;\n  }\n  .cf7p-modal-2{\n    width:min(92vw,420px); background:#fff; border-radius:12px; box-shadow:0 10px 30px rgba(0,0,0,.2);\n    overflow:hidden; transform:translateY(10px); opacity:0; transition:.2s ease;\n  }\n  .cf7p-modal-2.show{ transform:translateY(0); opacity:1; }\n  .cf7p-head-2{ padding:12px 16px; font-weight:700; font-size:15px; border-bottom:1px solid #eee; }\n  .cf7p-head-2.success{ color:#0a7d3b; }\n  .cf7p-head-2.error{ color:#b00020; }\n  .cf7p-body-2{ padding:12px 16px; font-size:14px; color:#333; }\n  .cf7p-actions-2{ padding:12px 16px; border-top:1px solid #eee; text-align:right; }\n  .cf7p-btn-2{\n    background:#1ca9e1; color:#fff; border:0; border-radius:8px; padding:8px 16px; cursor:pointer;\n  }\n  .cf7p-btn-2:hover{ background:#133c5e; }\n<\/style>\n\n<div class=\"cf7-loyalty-mini-2\" id=\"cf7-loyalty-form-2\">\n\n  <label>Full Name \/ Nom complet \/ Nome completo *<\/label>\n  <span class=\"wpcf7-form-control-wrap\" data-name=\"full_name_2\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required cf7-input-normal\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Your name\" value=\"\" type=\"text\" name=\"full_name_2\" \/><\/span>\n\n  <label>Your Mail \/ Votre courrier \/ Seu correio<\/label>\n  <span class=\"wpcf7-form-control-wrap\" data-name=\"email_2\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-email wpcf7-text wpcf7-validates-as-email cf7-input-normal\" aria-invalid=\"false\" placeholder=\"you@example.com\" value=\"\" type=\"email\" name=\"email_2\" \/><\/span>\n\n  <label>Country \/ Pays \/ Pa\u00eds *<\/label>\n  <!-- \u2705 UPDATED: Dynamic dropdown from plugin -->\n  <span class=\"wpcf7-form-control-wrap\" data-name=\"country_2\"><select name=\"country_2\" class=\"wpcf7-form-control wpcf7-ezlp_country_select wpcf7-validates-as-required wpcf7-select cf7-input-normal\" aria-required=\"true\"><option value=\"\">Select Country<\/option><option value=\"Abidjan (+225)\">Abidjan (+225)<\/option><option value=\"Angola (+244)\">Angola (+244)<\/option><option value=\"Banjul (Gambia) (+220)\">Banjul (Gambia) (+220)<\/option><option value=\"Benin (+229)\">Benin (+229)<\/option><option value=\"Burkina Faso (+226)\">Burkina Faso (+226)<\/option><option value=\"Cameroon (+237)\">Cameroon (+237)<\/option><option value=\"Chad (+235)\">Chad (+235)<\/option><option value=\"Congo (+242)\">Congo (+242)<\/option><option value=\"DRC (+243)\">DRC (+243)<\/option><option value=\"Freetown (Sierra Leone) (+232)\">Freetown (Sierra Leone) (+232)<\/option><option value=\"Gabon (+241)\">Gabon (+241)<\/option><option value=\"Ghana (+233)\">Ghana (+233)<\/option><option value=\"Guinea (+224)\">Guinea (+224)<\/option><option value=\"Guinea-Bissau (+245)\">Guinea-Bissau (+245)<\/option><option value=\"Kenya (+254)\">Kenya (+254)<\/option><option value=\"Liberia (+231)\">Liberia (+231)<\/option><option value=\"Mali (+223)\">Mali (+223)<\/option><option value=\"Mauritania (+222)\">Mauritania (+222)<\/option><option value=\"Morocco (+212)\">Morocco (+212)<\/option><option value=\"Niger (+227)\">Niger (+227)<\/option><option value=\"Nigeria (+234)\">Nigeria (+234)<\/option><option value=\"Senegal (+221)\">Senegal (+221)<\/option><option value=\"Tanzania (+255)\">Tanzania (+255)<\/option><option value=\"Togo (+228)\">Togo (+228)<\/option><option value=\"Uganda (+256)\">Uganda (+256)<\/option><option value=\"Ziguinchor (Senegal) (+221)\">Ziguinchor (Senegal) (+221)<\/option><\/select><\/span>\n\n  <labelContact Number \/ Num\u00e9ro de t\u00e9l\u00e9phone \/ N\u00famero de contacto\n *<\/label>\n  <span class=\"wpcf7-form-control-wrap\" data-name=\"phone_2\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-tel wpcf7-validates-as-required wpcf7-text wpcf7-validates-as-tel cf7-input-normal\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Enter Your Mobile Number \/ Entrez votre num\u00e9ro de t\u00e9l\u00e9phone portable \/ Introduza o seu n\u00famero de telem\u00f3vel\" value=\"\" type=\"tel\" name=\"phone_2\" \/><\/span>\n\n  <label>Address \/ Adresse \/ Endere\u00e7o\n <\/label>\n  <span class=\"wpcf7-form-control-wrap\" data-name=\"address_2\"><textarea cols=\"40\" rows=\"10\" maxlength=\"2000\" class=\"wpcf7-form-control wpcf7-textarea cf7-input-normal\" aria-invalid=\"false\" placeholder=\"Enter Your Full Address \/ Indiquez votre adresse compl\u00e8te \/ Introduza a sua morada completa\" name=\"address_2\"><\/textarea><\/span>\n\n  <div class=\"cf7-row-two-2\">\n    <div>\n      <label>Date of Birth \/ Date de naissance \/ Data de nascimento\n <\/label>\n      <span class=\"wpcf7-form-control-wrap\" data-name=\"dob_2\"><input class=\"wpcf7-form-control wpcf7-date wpcf7-validates-as-date cf7-input-normal\" min=\"1900-01-01\" max=\"2026-05-25\" aria-invalid=\"false\" value=\"\" type=\"date\" name=\"dob_2\" \/><\/span>\n    <\/div>\n    <div>\n      <label>Marital Status \/ Situation familiale \/ Estado civil\n <\/label>\n      <span class=\"wpcf7-form-control-wrap\" data-name=\"marital_status_2\"><select class=\"wpcf7-form-control wpcf7-select cf7-input-normal\" aria-invalid=\"false\" name=\"marital_status_2\"><option value=\"\">&#8212;Please choose an option&#8212;<\/option><option value=\"Single \/ C\u00e9libataire \/ Solteiro\">Single \/ C\u00e9libataire \/ Solteiro<\/option><option value=\"Married \/ Mari\u00e9 \/ Casado\">Married \/ Mari\u00e9 \/ Casado<\/option><\/select><\/span>\n    <\/div>\n  <\/div>\n\n  <div class=\"anniv-wrap-2\" id=\"anniv-block-2\">\n    <label>Anniversary Date \/ Date d'anniversaire \/ Data do anivers\u00e1rio <\/label>\n    <span class=\"wpcf7-form-control-wrap\" data-name=\"anniversary_2\"><input class=\"wpcf7-form-control wpcf7-date wpcf7-validates-as-date cf7-input-normal\" id=\"anniversary-2\" min=\"1900-01-01\" max=\"2026-05-25\" aria-invalid=\"false\" value=\"\" type=\"date\" name=\"anniversary_2\" \/><\/span>\n  <\/div>\n\n  <div class=\"submit-wrap-2\"><input class=\"wpcf7-form-control wpcf7-submit has-spinner\" type=\"submit\" value=\"Submit\" \/><\/div>\n<\/div>\n\n<!-- Popup container -->\n<div class=\"cf7p-modal-backdrop-2\" id=\"cf7pModal-2\" aria-hidden=\"true\">\n  <div class=\"cf7p-modal-2\" role=\"alertdialog\" aria-modal=\"true\" aria-labelledby=\"cf7pTitle-2\" aria-describedby=\"cf7pMsg-2\">\n    <div class=\"cf7p-head-2\" id=\"cf7pTitle-2\">Notification<\/div>\n    <div class=\"cf7p-body-2\" id=\"cf7pMsg-2\">Message<\/div>\n    <div class=\"cf7p-actions-2\">\n      <button type=\"button\" class=\"cf7p-btn-2\" id=\"cf7pClose-2\">OK<\/button>\n    <\/div>\n  <\/div>\n<\/div>\n\n<script>\ndocument.addEventListener('DOMContentLoaded', function () {\n  var fWrap = document.getElementById('cf7-loyalty-form-2');\n  if (!fWrap) return;\n\n  \/\/ ---- Bounds (1900 .. today) for date inputs ----\n  var today = new Date();\n  var yyyy = today.getFullYear();\n  var mm = String(today.getMonth() + 1).padStart(2, '0');\n  var dd = String(today.getDate()).padStart(2, '0');\n  var maxStr = yyyy + '-' + mm + '-' + dd;\n\n  function setBounds(name){\n    var el = fWrap.querySelector('input[name=\"'+name+'\"]');\n    if (!el) return;\n    el.setAttribute('min', '1900-01-01');\n    el.setAttribute('max', maxStr);\n  }\n  setBounds('dob_2');\n  setBounds('anniversary_2');\n\n  \/\/ ---- Show\/hide Anniversary based on Marital Status ----\n  var s = fWrap.querySelector('select[name=\"marital_status_2\"]');\n  var a = fWrap.querySelector('#anniv-block-2');\n  var i = fWrap.querySelector('#anniversary-2');\n\n  function toggleAnniversary() {\n    var v = (s && s.value ? s.value : '').toLowerCase();\n    if (v === 'married') {\n      if (a) a.style.display = 'block';\n      if (i) i.setAttribute('required', 'required');\n    } else {\n      if (a) a.style.display = 'none';\n      if (i) { i.removeAttribute('required'); i.value = ''; i.setCustomValidity(''); }\n    }\n  }\n  if (s) {\n    s.addEventListener('change', toggleAnniversary);\n    toggleAnniversary();\n  }\n\n  \/\/ ---- Normalize & enforce 4-digit year (supports YYYY-MM-DD or DD-MM-YYYY) ----\n  function normalizeAndValidate(el, label) {\n    var v = (el.value || '').trim();\n    if (!v) { el.setCustomValidity(''); return; }\n\n    var mISO = v.match(\/^(\\d{1,})(?:-|\\\/)(\\d{1,2})(?:-|\\\/)(\\d{1,2})$\/);\n    var mLocal = v.match(\/^(\\d{1,2})(?:-|\\\/)(\\d{1,2})(?:-|\\\/)(\\d{1,})$\/);\n\n    var Y, M, D;\n\n    if (mISO) {\n      Y = mISO[1]; M = mISO[2]; D = mISO[3];\n    } else if (mLocal) {\n      D = mLocal[1]; M = mLocal[2]; Y = mLocal[3];\n    } else {\n      el.setCustomValidity('Please enter '+label+' in a valid format (YYYY-MM-DD or DD-MM-YYYY).');\n      return;\n    }\n\n    if (Y.length > 4) Y = Y.slice(0, 4);\n\n    if (Y.length !== 4 || +Y < 1900 || +Y > (new Date()).getFullYear()) {\n      el.setCustomValidity(label+' year must be 4 digits (1900\u2013'+ (new Date()).getFullYear() +').');\n      return;\n    }\n\n    M = String(+M).padStart(2, '0');\n    D = String(+D).padStart(2, '0');\n\n    var iso = Y + '-' + M + '-' + D;\n    var test = new Date(iso);\n    if (isNaN(test.getTime()) || test.getUTCFullYear() != +Y || (test.getUTCMonth()+1) != +M || test.getUTCDate() != +D) {\n      el.setCustomValidity('Please enter a valid '+label+' date.');\n      return;\n    }\n\n    if (iso < '1900-01-01' || iso > maxStr) {\n      el.setCustomValidity(label+' must be between 1900-01-01 and today.');\n      return;\n    }\n\n    el.value = iso;\n    el.setCustomValidity('');\n  }\n\n  function hookDate(name, label) {\n    var el = fWrap.querySelector('input[name=\"'+name+'\"]');\n    if (!el) return;\n    var handler = function(){ normalizeAndValidate(el, label); };\n    el.addEventListener('input', handler);\n    el.addEventListener('change', handler);\n    handler();\n  }\n\n  hookDate('dob_2', 'Date of Birth');\n  hookDate('anniversary_2', 'Anniversary');\n\n  \/\/ ---- Phone length logic (works with: value=GH, text=Ghana, or Ghana (+233)) ----\n  var countrySelect = fWrap.querySelector('select[name=\"country_2\"]');\n  var phoneInput    = fWrap.querySelector('input[name=\"phone_2\"]');\n\n  \/\/ Prefer rules by ISO country code if option value is like \"GH\", \"SN\", etc.\n  var phoneRulesByCode = {\n    GM: 7,\n    GW: 7,\n\n    BJ: 8, BF: 8, GA: 8, LR: 8, ML: 8, MR: 8, NE: 8, SL: 8, TD: 8, TG: 8,\n\n    AO: 9, CM: 9, CG: 9, CD: 9, GH: 9, GN: 9, KE: 9, MA: 9, RW: 9, SN: 9, TZ: 9, UG: 9,\n\n    CI: 10, NG: 10\n  };\n\n  \/\/ Backup rules by country name (if option value is not code)\n  var phoneRulesByName = {\n    'gambia': 7,\n    'guinea bissau': 7,\n\n    'benin': 8,\n    'burkina faso': 8,\n    'gabon': 8,\n    'liberia': 8,\n    'mali': 8,\n    'mauritania': 8,\n    'niger': 8,\n    'sierra leone': 8,\n    'tchad': 8,\n    'chad': 8,\n    'togo': 8,\n\n    'angola': 9,\n    'cameroon': 9,\n    'congo': 9,\n    'drc': 9,\n    'ghana': 9,\n    'guinea': 9,\n    'kenya': 9,\n    'morocco': 9,\n    'rwanda': 9,\n    'senegal': 9,\n    'tanzania': 9,\n    'uganda': 9,\n\n    \"cote d'ivoire\": 10,\n    'nigeria': 10\n  };\n\n  function normalizeCountryName(txt){\n    return (txt || '')\n      .replace(\/\\(\\+\\d+\\)\/g, '')     \/\/ remove (+233)\n      .replace(\/\\s+\/g, ' ')\n      .trim()\n      .toLowerCase();\n  }\n\n  function getSelectedMeta(){\n    var meta = { code: '', text: '', name: '', dial: '' };\n\n    if (!countrySelect) return meta;\n\n    var opt = countrySelect.selectedOptions && countrySelect.selectedOptions[0] ? countrySelect.selectedOptions[0] : null;\n    meta.code = (countrySelect.value || '').trim(); \/\/ might be \"GH\" or full text\n    meta.text = opt ? (opt.textContent || '').trim() : '';\n\n    \/\/ dial parse from text like \"Ghana (+233)\"\n    var mDial = meta.text.match(\/\\(\\+(\\d+)\\)\/);\n    if (mDial) meta.dial = mDial[1];\n\n    meta.name = normalizeCountryName(meta.text || meta.code);\n\n    return meta;\n  }\n\n  function resolvePhoneLength(meta){\n    \/\/ 1) if value looks like 2-letter code, use it\n    if (\/^[A-Za-z]{2}$\/.test(meta.code)) {\n      var c = meta.code.toUpperCase();\n      if (phoneRulesByCode[c]) return phoneRulesByCode[c];\n    }\n\n    \/\/ 2) if text includes \"Country (+dial)\" or plain name\n    if (meta.name && phoneRulesByName[meta.name]) return phoneRulesByName[meta.name];\n\n    \/\/ 3) fallback: try matching partials (e.g. \"freetown (sierra leone)\" -> \"sierra leone\")\n    for (var k in phoneRulesByName) {\n      if (!Object.prototype.hasOwnProperty.call(phoneRulesByName, k)) continue;\n      if (meta.name.indexOf(k) !== -1) return phoneRulesByName[k];\n    }\n\n    return null;\n  }\n\n  function updatePhoneConstraints() {\n    if (!countrySelect || !phoneInput) return;\n\n    var meta = getSelectedMeta();\n    var required = resolvePhoneLength(meta);\n\n    var raw    = phoneInput.value || '';\n    var digits = raw.replace(\/\\D\/g, '');\n    if (required && digits.length > required) {\n      digits = digits.slice(0, required);\n    }\n    phoneInput.value = digits;\n\n    var label = meta.text || meta.code || 'selected country';\n\n    if (required) {\n      phoneInput.placeholder = 'Enter ' + required + '-digit mobile number';\n    } else {\n      phoneInput.placeholder = 'Enter your mobile number';\n    }\n\n    if (required && digits.length > 0 && digits.length !== required) {\n      phoneInput.setCustomValidity(\n        'For ' + label + ', please enter exactly ' + required + ' digits (currently ' + digits.length + ').'\n      );\n    } else {\n      phoneInput.setCustomValidity('');\n    }\n  }\n\n  if (countrySelect && phoneInput) {\n    countrySelect.addEventListener('change', updatePhoneConstraints);\n    phoneInput.addEventListener('input', updatePhoneConstraints);\n    phoneInput.addEventListener('blur', updatePhoneConstraints);\n    updatePhoneConstraints();\n  }\n\n  \/\/ ---- Popup (modal) notifications using CF7 events ----\n  var modal = document.getElementById('cf7pModal-2');\n  var modalBox = modal.querySelector('.cf7p-modal-2');\n  var title = document.getElementById('cf7pTitle-2');\n  var msg   = document.getElementById('cf7pMsg-2');\n  var btn   = document.getElementById('cf7pClose-2');\n\n  function showPopup(kind, message){\n    title.className = 'cf7p-head-2 ' + (kind === 'success' ? 'success' : 'error');\n    title.textContent = (kind === 'success') ? 'Success' : 'Notice';\n    msg.textContent = message || ((kind === 'success') ? 'Your form has been submitted successfully.' : 'Please check the form and try again.');\n    modal.style.display = 'flex';\n    requestAnimationFrame(function(){ modalBox.classList.add('show'); });\n  }\n\n  function hidePopup(){\n    modalBox.classList.remove('show');\n    setTimeout(function(){ modal.style.display = 'none'; }, 180);\n  }\n\n  btn.addEventListener('click', hidePopup);\n  modal.addEventListener('click', function(e){ if(e.target === modal) hidePopup(); });\n\n  document.addEventListener('wpcf7mailsent', function(e){\n    if (!e.target || !e.target.querySelector('#cf7-loyalty-form-2')) return;\n    showPopup('success', 'New Loyalty Form enquiry received. Thank you!');\n    setTimeout(function() {\n      toggleAnniversary();\n      updatePhoneConstraints();\n    }, 50);\n  });\n\n  document.addEventListener('wpcf7invalid', function(e){\n    if (!e.target || !e.target.querySelector('#cf7-loyalty-form-2')) return;\n    showPopup('error', 'Some fields are invalid. Please review and submit again.');\n  });\n\n  document.addEventListener('wpcf7mailfailed', function(e){\n    if (!e.target || !e.target.querySelector('#cf7-loyalty-form-2')) return;\n    showPopup('error', 'Submission failed. Please try again.');\n  });\n\n  document.addEventListener('wpcf7spam', function(e){\n    if (!e.target || !e.target.querySelector('#cf7-loyalty-form-2')) return;\n    showPopup('error', 'Submission flagged as spam. Please try again.');\n  });\n});\n<\/script>\n<!-- ===== \/Compact Loyalty Form (v2) ===== --><\/div><div class=\"wpcf7-response-output\" aria-hidden=\"true\"><\/div>\n<\/form>\n<\/div>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Inscrivez-vous pour des avantages exclusifs r\u00e9serv\u00e9s aux membres<\/p>","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"],"_hostinger_reach_plugin_has_subscription_block":false,"_hostinger_reach_plugin_is_elementor":false,"_links":{"self":[{"href":"https:\/\/loyalty.ezoneretails.com\/fr\/wp-json\/wp\/v2\/pages\/6","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/loyalty.ezoneretails.com\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/loyalty.ezoneretails.com\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/loyalty.ezoneretails.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/loyalty.ezoneretails.com\/fr\/wp-json\/wp\/v2\/comments?post=6"}],"version-history":[{"count":13,"href":"https:\/\/loyalty.ezoneretails.com\/fr\/wp-json\/wp\/v2\/pages\/6\/revisions"}],"predecessor-version":[{"id":41,"href":"https:\/\/loyalty.ezoneretails.com\/fr\/wp-json\/wp\/v2\/pages\/6\/revisions\/41"}],"wp:attachment":[{"href":"https:\/\/loyalty.ezoneretails.com\/fr\/wp-json\/wp\/v2\/media?parent=6"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}