{"id":222,"date":"2026-06-18T12:35:36","date_gmt":"2026-06-18T12:35:36","guid":{"rendered":"https:\/\/bred.mg\/?page_id=222"},"modified":"2026-11-12T07:17:21","modified_gmt":"2026-11-12T07:17:21","slug":"particulier","status":"publish","type":"page","link":"https:\/\/bred.mg\/mg\/","title":{"rendered":"Accueil Particulier"},"content":{"rendered":"\n<style>\n\/* Transition douce *\/\n.anim-bouton {\n  transition: transform .2s ease, box-shadow .2s ease,\n              background-color .25s ease, color .25s ease !important;\n}\n\n\/* Au survol : on supprime les voiles d\u00e9coratifs (pseudo-\u00e9l\u00e9ments) du th\u00e8me *\/\n.anim-bouton.anim-on::before,\n.anim-bouton.anim-on::after,\n.anim-bouton.anim-on *::before,\n.anim-bouton.anim-on *::after {\n  background: transparent !important;\n  background-image: none !important;\n  opacity: 0 !important;\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .anim-bouton, .anim-bouton * { transition: none !important; }\n}\n<\/style>\n\n<script>\n(function () {\n  var COULEUR_SURVOL = '#00C1F2';\n  var TEXTE_SURVOL   = '#fff';\n  var LUEUR = '0 0 0 3px rgba(255,255,255,.35), 0 6px 22px rgba(0,193,242,.65)';\n  var LUEUR_CLIC = '0 0 0 2px rgba(255,255,255,.25), 0 2px 8px rgba(0,193,242,.45)';\n  var DEBUG = true;   \/\/ affiche dans la console les \u00e9l\u00e9ments color\u00e9s ; mets false ensuite\n\n  function inf(a, b) { return Math.max(a, b) === b; }   \/\/ a <= b\n  function sup(a, b) { return Math.max(a, b) === a; }   \/\/ a >= b\n\n  \/\/ Le fond est-il non transparent ?\n  function aUnFond(el) {\n    var c = getComputedStyle(el).backgroundColor;\n    if (c === 'rgba(0, 0, 0, 0)') return false;\n    if (c === 'transparent') return false;\n    return true;\n  }\n\n  \/\/ Pose un style en ligne !important en m\u00e9morisant l'ancienne valeur\n  function poser(el, prop, val) {\n    if (!el.__animSauve) el.__animSauve = {};\n    if (!(prop in el.__animSauve)) {\n      el.__animSauve[prop] = [el.style.getPropertyValue(prop), el.style.getPropertyPriority(prop)];\n    }\n    el.style.setProperty(prop, val, 'important');\n  }\n  function restaurer(el) {\n    if (!el.__animSauve) return;\n    Object.keys(el.__animSauve).forEach(function (prop) {\n      var s = el.__animSauve[prop];\n      if (s[0] === '') { el.style.removeProperty(prop); }\n      else { el.style.setProperty(prop, s[0], s[1]); }\n    });\n    el.__animSauve = null;\n  }\n\n  function preparer(btn) {\n    var survole = false;\n    var touches = [];\n\n    \/\/ Elements \u00e0 colorer : le bouton, ses descendants, et tout \u00e9l\u00e9ment de taille proche\n    \/\/ qui se trouve sous le centre du bouton (parent, voile, fond d\u00e9coratif...)\n    function elementsDuFond() {\n      var br = btn.getBoundingClientRect();\n      var liste = [btn].concat(Array.from(btn.querySelectorAll('*')));\n      var pile = document.elementsFromPoint(br.left + br.width \/ 2, br.top + br.height \/ 2);\n      pile.forEach(function (el) {\n        if (liste.indexOf(el) !== -1) return;\n        if (el === document.documentElement) return;\n        if (el === document.body) return;\n        var r = el.getBoundingClientRect();\n        if (inf(r.width, br.width * 1.4)) {\n          if (inf(r.height, br.height * 1.8)) { liste.push(el); }\n        }\n      });\n      return liste;\n    }\n\n    function allumer() {\n      if (survole) return;\n      survole = true;\n      btn.classList.add('anim-on');\n      touches = elementsDuFond();\n      var colores = [];\n      touches.forEach(function (el) {\n        if (el === btn || aUnFond(el)) {\n          poser(el, 'background-color', COULEUR_SURVOL);\n          poser(el, 'background-image', 'none');\n          colores.push(el.tagName.toLowerCase() + '.' + String(el.className).replace(\/\\s+\/g, '.'));\n        }\n        poser(el, 'color', TEXTE_SURVOL);\n        poser(el, 'opacity', '1');\n        poser(el, 'filter', 'none');\n      });\n      poser(btn, 'transform', 'scale(1.06)');\n      poser(btn, 'box-shadow', LUEUR);\n      if (DEBUG) console.log('[Bouton] elements colores au survol :', colores);\n    }\n\n    function eteindre() {\n      if (!survole) return;\n      survole = false;\n      btn.classList.remove('anim-on');\n      touches.forEach(restaurer);\n      touches = [];\n    }\n\n    btn.addEventListener('mouseenter', allumer);\n    btn.addEventListener('mouseleave', eteindre);\n    btn.addEventListener('focus', function () { if (btn.matches(':focus-visible')) allumer(); });\n    btn.addEventListener('blur', eteindre);\n    btn.addEventListener('mousedown', function () {\n      poser(btn, 'transform', 'scale(.98)');\n      poser(btn, 'box-shadow', LUEUR_CLIC);\n    });\n    btn.addEventListener('mouseup', function () {\n      poser(btn, 'transform', 'scale(1.06)');\n      poser(btn, 'box-shadow', LUEUR);\n    });\n  }\n\n  function init() {\n    var n = 0;\n    \/\/ Liens et boutons des blocs .anim-hero, et ceux marqu\u00e9s .anim-btn\n    document.querySelectorAll('.anim-hero a, .anim-hero button, a.anim-btn, button.anim-btn, .anim-btn a, .anim-btn button').forEach(function (el) {\n      if (el.dataset.animBouton) return;\n      el.dataset.animBouton = '1';\n      el.classList.add('anim-bouton');\n      preparer(el);\n      n = n + 1;\n    });\n    console.log('[Bouton] boutons prepares :', n);\n  }\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', init);\n  } else {\n    init();\n  }\n})();\n<\/script>\n\n\n\n<div class=\"wp-block-bred-hero-image is-bg-primary-dark has-photo anim-hero\"><div class=\"wp-block-bred-hero-image__content\"><h1 class=\"wp-block-bred-hero-image__title\">BRED Madagasikara<br>Banque Populaire,<br><em>L\u00e0 o\u00f9 vos ambitions rayonnent<\/em><\/h1><p class=\"wp-block-bred-hero-image__body\"><strong>Particuliers<\/strong> : ouvrez un compte, financez vos projets et g\u00e9rez simplement votre argent avec une banque proche et accessible.<\/p><div class=\"wp-block-bred-hero-image__ctas\"><a class=\"wp-block-bred-hero-image__cta is-primary\" href=\"https:\/\/bred.mg\/ouvrir-un-compte\/\"><span class=\"wp-block-bred-hero-image__cta-label\">Devenir client<\/span><\/a><\/div><\/div><div class=\"wp-block-bred-hero-image__media\" aria-hidden=\"true\"><img class=\"wp-block-bred-hero-image__photo\" src=\"https:\/\/bred.mg\/wp-content\/uploads\/2026\/09\/Farany-sisa.gif\" alt=\"\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\"\/><\/div><\/div>\n\n\n\n<style>\n\/* ===== Carte qui se soul\u00e8ve ===== *\/\n.anim-card {\n  transition: transform .25s ease, box-shadow .25s ease, filter .25s ease;\n  will-change: transform;\n}\n\n\/* Ic\u00f4ne et bouton : transitions *\/\n.anim-card [class*=\"icon\"] {\n  transition: transform .25s ease;\n}\n.anim-card .wp-block-bred-card-pack__cta {\n  transition: background-color .25s ease, color .25s ease, box-shadow .25s ease;\n}\n.anim-card .wp-block-bred-card-pack__cta * {\n  transition: color .25s ease;\n}\n\n\/* Petit pulse de l'ic\u00f4ne (zoom in puis zoom out) *\/\n@keyframes iconPulse {\n  0%   { transform: scale(1); }\n  50%  { transform: scale(1.18); }\n  100% { transform: scale(1); }\n}\n\n\/* Uniquement sur les appareils avec souris *\/\n@media (hover: hover) {\n  .anim-card:hover {\n    transform: translateY(-6px);\n    box-shadow: 0 14px 28px rgba(26, 42, 108, .45);\n    filter: brightness(.97);            \/* fond un peu plus fonc\u00e9 *\/\n  }\n  .anim-card:hover [class*=\"icon\"] {\n    animation: iconPulse .5s ease;\n  }\n\n  \/* Bouton de la carte survol\u00e9e : #00c1f2, texte blanc, lueur cyan.\n     Survoler le bouton lui-m\u00eame ne change rien : m\u00eame couleur, pas de zoom *\/\n  html body .wp-block-bred-card-pack.anim-card:hover a.wp-block-bred-card-pack__cta,\n  html body .wp-block-bred-card-pack.anim-card:hover a.wp-block-bred-card-pack__cta:hover,\n  html body .wp-block-bred-card-pack.anim-card:hover a.wp-block-bred-card-pack__cta:focus-visible,\n  html body .wp-block-bred-card-pack.anim-card:hover a.wp-block-bred-card-pack__cta:active {\n    background: #00c1f2 !important;\n    background-color: #00c1f2 !important;\n    background-image: none !important;\n    border-color: #00c1f2 !important;\n    color: #fff !important;\n    box-shadow: 0 0 14px rgba(0, 193, 242, .6) !important;\n    transform: none !important;\n    filter: none !important;\n  }\n  html body .wp-block-bred-card-pack.anim-card:hover a.wp-block-bred-card-pack__cta * {\n    color: #fff !important;\n    background: transparent !important;\n  }\n}\n\n\/* Accessibilit\u00e9 *\/\n@media (prefers-reduced-motion: reduce) {\n  .anim-card, .anim-card * {\n    animation: none !important;\n    transition: none !important;\n  }\n}\n<\/style>\n\n<script>\n(function () {\n  var COULEUR = '#00c1f2';\n\n  \/\/ Pose un style en ligne !important en m\u00e9morisant l'ancienne valeur\n  function poser(el, prop, val) {\n    if (!el.__carteSauve) el.__carteSauve = {};\n    if (!(prop in el.__carteSauve)) {\n      el.__carteSauve[prop] = [el.style.getPropertyValue(prop), el.style.getPropertyPriority(prop)];\n    }\n    el.style.setProperty(prop, val, 'important');\n  }\n  function restaurer(el) {\n    if (!el.__carteSauve) return;\n    Object.keys(el.__carteSauve).forEach(function (prop) {\n      var s = el.__carteSauve[prop];\n      if (s[0] === '') { el.style.removeProperty(prop); }\n      else { el.style.setProperty(prop, s[0], s[1]); }\n    });\n    el.__carteSauve = null;\n  }\n\n  function init() {\n    var n = 0;\n    document.querySelectorAll('.anim-card').forEach(function (card) {\n      if (card.dataset.carteBtn) return;\n      card.dataset.carteBtn = '1';\n      var boutons = Array.from(card.querySelectorAll('a'));\n      if (!boutons.length) return;\n      n = n + 1;\n\n      function allumer() {\n        boutons.forEach(function (a) {\n          poser(a, 'background-color', COULEUR);\n          poser(a, 'background-image', 'none');\n          poser(a, 'color', '#fff');\n          poser(a, 'filter', 'none');\n          poser(a, 'transform', 'none');\n          a.querySelectorAll('*').forEach(function (e) { poser(e, 'color', '#fff'); });\n        });\n      }\n      function eteindre() {\n        boutons.forEach(function (a) {\n          restaurer(a);\n          a.querySelectorAll('*').forEach(restaurer);\n        });\n      }\n      card.addEventListener('mouseenter', allumer);\n      card.addEventListener('mouseleave', eteindre);\n    });\n    console.log('[Cartes] cartes avec bouton :', n);\n  }\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', init);\n  } else {\n    init();\n  }\n})();\n<\/script>\n\n\n\n<section class=\"wp-block-bred-section-pack alignwide is-bg-none has-header has-controls\"><header class=\"wp-block-bred-section-pack__header\"><h2 class=\"wp-block-bred-section-pack__title\"><strong><strong>Vos besoins, Nos solutions<\/strong><\/strong><\/h2><\/header><div class=\"wp-block-bred-section-pack__slider\"><div class=\"wp-block-bred-section-pack__viewport\" data-bred-pack-viewport=\"true\"><div class=\"wp-block-bred-section-pack__cards\">\n<article class=\"wp-block-bred-card-pack is-tone-cyan has-no-info anim-card\"><span class=\"wp-block-bred-card-pack__icon\" aria-hidden=\"true\"><i class=\"ph ph-wall\" aria-hidden=\"true\"><\/i><\/span><div class=\"wp-block-bred-card-pack__content\"><h3 class=\"wp-block-bred-card-pack__title\">Ouvrir mon compte bancaire<\/h3><p class=\"wp-block-bred-card-pack__description\">B\u00e9n\u00e9ficiez des services essentiels au quotidien : compte, carte bancaire et moyens de paiement.<\/p><\/div><a class=\"wp-block-bred-card-pack__cta\" href=\"https:\/\/bred.mg\/ouvrir-un-compte\/\"><span class=\"wp-block-bred-card-pack__cta-label\">D\u00e9couvrir nos offres<\/span><\/a><\/article>\n\n\n\n<article class=\"wp-block-bred-card-pack is-tone-green has-no-info anim-card\"><span class=\"wp-block-bred-card-pack__icon\" aria-hidden=\"true\"><i class=\"ph ph-car\" aria-hidden=\"true\"><\/i><\/span><div class=\"wp-block-bred-card-pack__content\"><h3 class=\"wp-block-bred-card-pack__title\">Financer mes projets<\/h3><p class=\"wp-block-bred-card-pack__description\">Concr\u00e9tisez vos projets gr\u00e2ce \u00e0 des cr\u00e9dits et solutions de financement adapt\u00e9s \u00e0 vos besoins.<\/p><\/div><a class=\"wp-block-bred-card-pack__cta\" href=\"https:\/\/bred.mg\/financer-un-projet-2\/\"><span class=\"wp-block-bred-card-pack__cta-label\">D\u00e9couvrir nos solutions<\/span><\/a><\/article>\n\n\n\n<article class=\"wp-block-bred-card-pack is-tone-yellow has-no-info anim-card\"><span class=\"wp-block-bred-card-pack__icon\" aria-hidden=\"true\"><i class=\"ph ph-parachute\" aria-hidden=\"true\"><\/i><\/span><div class=\"wp-block-bred-card-pack__content\"><h3 class=\"wp-block-bred-card-pack__title\">Mettre de l&rsquo;argent de c\u00f4t\u00e9<\/h3><p class=\"wp-block-bred-card-pack__description\">Pr\u00e9parez l\u2019avenir avec des solutions d\u2019\u00e9pargne et de placements adapt\u00e9es \u00e0 vos objectifs.<\/p><\/div><a class=\"wp-block-bred-card-pack__cta\" href=\"https:\/\/bred.mg\/epargner\/\"><span class=\"wp-block-bred-card-pack__cta-label\"><strong>D\u00e9couvrir nos placements<\/strong><\/span><\/a><\/article>\n\n\n\n<article class=\"wp-block-bred-card-pack is-tone-blue has-no-info anim-card\"><span class=\"wp-block-bred-card-pack__icon\" aria-hidden=\"true\"><i class=\"ph ph-device-mobile\" aria-hidden=\"true\"><\/i><\/span><div class=\"wp-block-bred-card-pack__content\"><h3 class=\"wp-block-bred-card-pack__title\">G\u00e9rer mon compte \u00e0 distance<\/h3><p class=\"wp-block-bred-card-pack__description\">Gardez la ma\u00eetrise de vos comptes avec l\u2019application mobile, l\u2019Internet Banking et les alertes.<\/p><\/div><a class=\"wp-block-bred-card-pack__cta\" href=\"https:\/\/bred.mg\/gerer-a-distance\/\"><span class=\"wp-block-bred-card-pack__cta-label\"><strong>D\u00e9couvrir nos services<\/strong><\/span><\/a><\/article>\n<\/div><\/div><\/div><div class=\"wp-block-bred-section-pack__controls\"><div class=\"wp-block-bred-section-pack__dots\" data-bred-pack-dots=\"true\" aria-hidden=\"true\"><\/div><div class=\"wp-block-bred-section-pack__arrows\"><button type=\"button\" class=\"wp-block-bred-section-pack__arrow is-prev\" data-bred-pack-prev=\"true\" aria-label=\"Pr\u00e9c\u00e9dent\"><i class=\"ph ph-arrow-left\" aria-hidden=\"true\"><\/i><\/button><button type=\"button\" class=\"wp-block-bred-section-pack__arrow is-next\" data-bred-pack-next=\"true\" aria-label=\"Suivant\"><i class=\"ph ph-arrow-right\" aria-hidden=\"true\"><\/i><\/button><\/div><\/div><\/section>\n\n\n\n<style>\n\/* ===== Fond de la section : coins arrondis ===== *\/\n.anim-choix {\n  --rayon-bloc: 28px;                          \/* ajuste : 16px, 24px, 32px... *\/\n  border-radius: var(--rayon-bloc);\n  overflow: hidden;                            \/* d\u00e9coupe aussi le fond s'il est port\u00e9 par un \u00e9l\u00e9ment interne *\/\n}\n\n\/* ===== Effet 1 : apparition gauche \u2192 droite au scroll ===== *\/\n@keyframes choixSlide {\n  from { opacity: 0; transform: translateX(-28px); }\n  to   { opacity: 1; transform: translateX(0); }\n}\n@keyframes choixFade {\n  from { opacity: 0; }\n  to   { opacity: 1; }\n}\n\n\/* Masqu\u00e9 tant que le bloc n'est pas visible (seulement si le script est actif) *\/\n.anim-choix.anim-ready:not(.is-visible) .anim-item,\n.anim-choix.anim-ready:not(.is-visible) .anim-img { opacity: 0; }\n\n\/* L'animation se rejoue chaque fois que .is-visible est (r\u00e9)ajout\u00e9e *\/\n.anim-choix.is-visible .anim-item {\n  animation: choixSlide .8s cubic-bezier(.2,.7,.3,1) var(--d, 0s) backwards;\n}\n.anim-choix.is-visible .anim-img {\n  animation: choixFade 1s ease var(--d, 0s) backwards;\n}\n\n\/* ===== Effet 2 : bouton qui se remplit, texte blanc, fl\u00e8che qui clignote ===== *\/\n@keyframes choixClic {\n  0%, 100% { opacity: 1; }\n  50%      { opacity: .2; }\n}\n\n.anim-choix a {\n  position: relative;\n  overflow: hidden;\n  isolation: isolate;\n  transition: box-shadow .3s ease;\n}\n\n\/* Remplissage bleu marine : part de la droite (derri\u00e8re le bloc marine) et s'\u00e9tend vers la gauche *\/\n.anim-choix a::before {\n  content: \"\";\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  width: 0;\n  background: #1a2a6c;                         \/* m\u00eame bleu marine que le bloc de la fl\u00e8che *\/\n  z-index: -1;\n  transition: width .5s cubic-bezier(.65, 0, .35, 1);\n}\n\n\/* Le texte change de couleur un peu apr\u00e8s le d\u00e9but du remplissage *\/\n.anim-choix a > * {\n  transition: color .3s ease .15s;\n}\n\n\/* Fl\u00e8che (rep\u00e9r\u00e9e par le script) : doit pouvoir grossir, m\u00eame si c'est un caract\u00e8re ou une ic\u00f4ne *\/\n.anim-choix .anim-fleche {\n  display: inline-block;\n  overflow: visible;\n  transform-origin: center;\n  transition: transform .35s ease, color .3s ease .15s;\n}\n\n@media (hover: hover) {\n  .anim-choix a:hover {\n    box-shadow: 0 8px 20px rgba(26, 42, 108, .18);\n    color: #fff;\n  }\n  .anim-choix a:hover::before {\n    width: 100%;                               \/* le bleu marine va jusqu'au bout du bouton *\/\n  }\n  .anim-choix a:hover > :not(:last-child),\n  .anim-choix a:hover > :not(:last-child) * {\n    color: #fff;                               \/* \"Je suis salari\u00e9\", etc. *\/\n  }\n  .anim-choix a:hover .anim-fleche {\n    transform: scale(2.2);                     \/* fl\u00e8che tr\u00e8s grande *\/\n    animation: choixClic .9s ease-in-out .35s infinite;   \/* clignote pendant le survol *\/\n  }\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .anim-choix .anim-item, .anim-choix .anim-img { animation: none !important; opacity: 1 !important; }\n  .anim-choix a, .anim-choix a *, .anim-choix a::before { transition: none !important; animation: none !important; }\n}\n<\/style>\n\n<script>\ndocument.addEventListener('DOMContentLoaded', function () {\n  document.querySelectorAll('.anim-choix').forEach(function (block) {\n    \/\/ Titre, textes et boutons, dans l'ordre d'apparition\n    var items = Array.from(block.querySelectorAll('h1,h2,h3,p,a')).filter(function (el) {\n      if (el.closest('figure')) return false;\n      if (el.tagName === 'A') return true;\n      return !el.closest('a');\n    });\n    items.forEach(function (el, i) {\n      el.classList.add('anim-item');\n      el.style.setProperty('--d', (i * 0.09) + 's');\n    });\n    \/\/ Photo : l\u00e9ger fondu, en dernier\n    var img = block.querySelector('figure, img');\n    if (img) {\n      img.classList.add('anim-img');\n      img.style.setProperty('--d', (items.length * 0.09) + 's');\n    }\n\n    \/\/ Rep\u00e8re la fl\u00e8che dans chaque bouton (dernier \u00e9l\u00e9ment du bouton)\n    var nbFleches = 0;\n    block.querySelectorAll('a').forEach(function (a) {\n      var dernier = a.lastElementChild;\n      if (!dernier) return;\n      var cible = null;\n      if (dernier.matches('svg, img')) {\n        cible = dernier;                                   \/\/ le dernier \u00e9l\u00e9ment est directement l'ic\u00f4ne\n      } else {\n        cible = dernier.querySelector('svg, img, i, [class*=\"icon\"], [class*=\"arrow\"], [class*=\"chevron\"]');\n      }\n      if (!cible) {\n        if (dernier.children.length === 0) {\n          if (dernier.textContent.trim() !== '') {\n            \/\/ simple caract\u00e8re (par exemple \u2192) : on l'enveloppe pour pouvoir le grossir\n            var s = document.createElement('span');\n            while (dernier.firstChild) { s.appendChild(dernier.firstChild); }\n            dernier.appendChild(s);\n            cible = s;\n          }\n        }\n      }\n      if (cible) {\n        cible.classList.add('anim-fleche');\n        nbFleches = nbFleches + 1;\n      }\n    });\n    console.log('[Choix] fleches detectees :', nbFleches);\n\n    if (!('IntersectionObserver' in window)) { block.classList.add('is-visible'); return; }\n    block.classList.add('anim-ready');\n\n    var SEUIL = 0.25;\n    var io = new IntersectionObserver(function (entries) {\n      entries.forEach(function (e) {\n        var assez = false;\n        if (e.isIntersecting) {\n          assez = (Math.max(e.intersectionRatio, SEUIL) === e.intersectionRatio);\n        }\n        if (assez) {\n          block.classList.add('is-visible');      \/\/ d\u00e9marre \/ relance l'animation\n        } else if (e.intersectionRatio === 0) {\n          block.classList.remove('is-visible');   \/\/ totalement sorti : on r\u00e9arme\n        }\n      });\n    }, { threshold: [0, SEUIL] });\n    io.observe(block);\n  });\n});\n<\/script>\n\n\n\n<section class=\"wp-block-bred-section-choices alignwide is-media-right is-bg-accent-mg-10 has-no-phone has-media anim-choix\"><figure class=\"wp-block-bred-section-choices__media\"><div class=\"wp-block-bred-section-choices__frame\"><img class=\"wp-block-bred-section-choices__image\" src=\"https:\/\/bred.mg\/wp-content\/uploads\/2026\/09\/Nouveau-projet-2.png\" alt=\"\" loading=\"lazy\" decoding=\"async\"\/><\/div><\/figure><div class=\"wp-block-bred-section-choices__content\"><h2 class=\"wp-block-bred-section-choices__title\">En fonction de <em>vous<\/em><\/h2><p class=\"wp-block-bred-section-choices__body\">Acc\u00e9dez directement aux solutions qui correspondent \u00e0 votre situation.<\/p><ul class=\"wp-block-bred-section-choices__items\"><li class=\"wp-block-bred-section-choices__item-wrap\"><a class=\"wp-block-bred-section-choices__item\" href=\"https:\/\/bred.mg\/particuliers-je-suis-salarie\/\"><span class=\"wp-block-bred-section-choices__item-label\">Je suis salari\u00e9<\/span><span class=\"wp-block-bred-section-choices__item-arrow\" aria-hidden=\"true\"><i class=\"ph ph-arrow-right\" aria-hidden=\"true\"><\/i><\/span><\/a><\/li><li class=\"wp-block-bred-section-choices__item-wrap\"><a class=\"wp-block-bred-section-choices__item\" href=\"https:\/\/bred.mg\/particuliers-je-suis-fonctionnaire\/\"><span class=\"wp-block-bred-section-choices__item-label\">Je suis fonctionnaire<\/span><span class=\"wp-block-bred-section-choices__item-arrow\" aria-hidden=\"true\"><i class=\"ph ph-arrow-right\" aria-hidden=\"true\"><\/i><\/span><\/a><\/li><li class=\"wp-block-bred-section-choices__item-wrap\"><a class=\"wp-block-bred-section-choices__item\" href=\"https:\/\/bred.mg\/particuliers-retraite\/\"><span class=\"wp-block-bred-section-choices__item-label\">Je suis retrait\u00e9<\/span><span class=\"wp-block-bred-section-choices__item-arrow\" aria-hidden=\"true\"><i class=\"ph ph-arrow-right\" aria-hidden=\"true\"><\/i><\/span><\/a><\/li><li class=\"wp-block-bred-section-choices__item-wrap\"><a class=\"wp-block-bred-section-choices__item\" href=\"https:\/\/bred.mg\/particuliers-diaspora\/\"><span class=\"wp-block-bred-section-choices__item-label\">Je suis membre de la diaspora<\/span><span class=\"wp-block-bred-section-choices__item-arrow\" aria-hidden=\"true\"><i class=\"ph ph-arrow-right\" aria-hidden=\"true\"><\/i><\/span><\/a><\/li><\/ul><\/div><\/section>\n\n\n\n<div class=\"wp-block-bred-push-glyphe alignwide is-bg-support-yellow is-layout-centered is-glyph-top-right has-glyph has-no-cta anim-cta\"><img class=\"wp-block-bred-push-glyphe__glyph\" src=\"\/wp-content\/themes\/bred-theme\/assets\/images\/glyph-madagasikara.svg\" alt=\"\" aria-hidden=\"true\" loading=\"lazy\" decoding=\"async\"\/><div class=\"wp-block-bred-push-glyphe__content\"><h2 class=\"wp-block-bred-push-glyphe__title\">D\u00e9couvrez nos offres du moment<\/h2><\/div><\/div>\n\n\n\n<style>\n\/* Jaune plus vif pour le fond des slides *\/\n.anim-slides { --anim-jaune: #ffe84d; }\n.anim-slides .anim-jaune { background-color: var(--anim-jaune) !important; }\n\n\/* Images et GIF des slides : coins arrondis *\/\n.anim-slides { --rayon-image: 20px; }              \/* ajuste : 12px, 24px, 32px... *\/\n.anim-slides .anim-track img,\n.anim-slides .anim-track picture,\n.anim-slides .anim-track figure {\n  border-radius: var(--rayon-image) !important;\n  overflow: hidden;\n}\n\n\/* Piste du carrousel *\/\n.anim-slides .anim-viewport { overflow: hidden; width: 100%; min-width: 0; flex: none; }\n.anim-slides .anim-track { display: flex; width: 100%; will-change: transform; }\n\n\/* Pastilles et fl\u00e8ches *\/\n.anim-slides .anim-ctrl { display: flex; align-items: center; justify-content: space-between; padding: 18px 10px 0; }\n.anim-slides .anim-dots { display: flex; gap: 8px; }\n.anim-slides .anim-dot {\n  width: 12px; height: 12px; border-radius: 50%; border: 0; padding: 0;\n  background: #c9c9c9; cursor: pointer;\n  transition: background-color .3s ease, transform .3s ease;\n}\n.anim-slides .anim-dot.is-active { background: #555; transform: scale(1.15); }\n.anim-slides .anim-fleches { display: flex; gap: 14px; }\n.anim-slides .anim-fleche {\n  width: 36px; height: 36px; border: 0; background: transparent;\n  color: #1a2a6c; font-size: 24px; line-height: 1; cursor: pointer;\n  transition: transform .2s ease;\n}\n.anim-slides .anim-fleche:hover { transform: scale(1.2); }\n<\/style>\n\n<script>\n(function () {\n  var SELECTEUR = '.anim-slides';\n  var DUREE_SLIDE = 9000;                       \/\/ dur\u00e9e d'affichage de chaque slide (ms) ; tu avais mis 2000 pour tester\n  var VITESSE = 800;                            \/\/ dur\u00e9e du glissement (ms)\n  var PAUSE_AU_SURVOL = false;                  \/\/ true : pause quand la souris est sur le carrousel\n  var RESPECTER_ANIMATIONS_REDUITES = false;    \/\/ true : pas de d\u00e9filement auto si l'appareil r\u00e9duit les animations\n  var PAS = 250;                                \/\/ pas du chronom\u00e8tre interne (ms)\n  var DEBUG = true;                             \/\/ infos dans la console (F12) ; mets false une fois que tout marche\n\n  \/\/ Comparaisons sans les signes < et > (que WordPress peut ab\u00eemer)\n  function sup(a, b) { return Math.max(a, b) === a; }   \/\/ a >= b\n  function inf(a, b) { return Math.max(a, b) === b; }   \/\/ a <= b\n\n  var reduit = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n\n  \/\/ Vrai tant que la couverture \"Notre site evolue ...\" est affichee\n  function couvertureEnCours() {\n    var w = document.getElementById('book-wrap');\n    if (!w) return false;\n    return !w.classList.contains('is-opening');\n  }\n\n  \/\/ Jaune pastel : rgb proche de (255, 246, 200)\n  function estJaunePastel(couleur) {\n    var m = couleur.match(\/\\d+(\\.\\d+)?\/g);\n    if (!m) return false;\n    if (m.length === 4) { if (parseFloat(m[3]) === 0) return false; }\n    var r = parseFloat(m[0]);\n    var g = parseFloat(m[1]);\n    var b = parseFloat(m[2]);\n    return [sup(r, 235), sup(g, 220), inf(b, 235), sup(g - b, 20), sup(r, g - 12)].every(Boolean);\n  }\n\n  function contientImage(el) {\n    if (el.tagName === 'IMG') return true;\n    return !!el.querySelector('img');\n  }\n\n  \/\/ Slides = element parent dont au moins 2 enfants contiennent une image\n  function trouverSlides(block) {\n    var candidats = [block].concat(Array.from(block.querySelectorAll('*')));\n    var res = null;\n    candidats.some(function (p) {\n      var enfants = Array.from(p.children).filter(function (c) {\n        if (c.tagName === 'SCRIPT') return false;\n        if (c.tagName === 'STYLE') return false;\n        return contientImage(c);\n      });\n      if (sup(enfants.length, 2)) { res = { parent: p, slides: enfants }; return true; }\n      return false;\n    });\n    return res;\n  }\n\n  function creerBouton(classe, texte, label) {\n    var b = document.createElement('button');\n    b.type = 'button';\n    b.className = classe;\n    b.textContent = texte;\n    b.setAttribute('aria-label', label);\n    return b;\n  }\n\n  function init() {\n    document.querySelectorAll(SELECTEUR).forEach(function (block) {\n      if (block.dataset.slidesInit) return;\n\n      \/\/ 1. Fond jaune plus vif\n      [block].concat(Array.from(block.querySelectorAll('*'))).forEach(function (el) {\n        if (estJaunePastel(getComputedStyle(el).backgroundColor)) el.classList.add('anim-jaune');\n      });\n\n      \/\/ 2. Reperage des slides\n      var trouve = trouverSlides(block);\n      if (!trouve) {\n        console.warn('[Slides] Aucune paire de slides avec image trouvee : envoie-moi le HTML du carrousel (clic droit, Inspecter).');\n        return;\n      }\n      block.dataset.slidesInit = '1';\n      var parent = trouve.parent;\n      var slides = trouve.slides;\n      var n = slides.length;\n      if (DEBUG) console.log('[Slides] slides trouvees :', n, '| parent :', parent.tagName, parent.className);\n\n      \/\/ Images chargees d'avance (pas de blanc pendant le glissement)\n      block.querySelectorAll('img').forEach(function (im) { im.loading = 'eager'; });\n\n      \/\/ 3. Construction de la piste\n      var viewport = document.createElement('div');\n      viewport.className = 'anim-viewport';\n      var track = document.createElement('div');\n      track.className = 'anim-track';\n      parent.insertBefore(viewport, slides[0]);\n      viewport.appendChild(track);\n      slides.forEach(function (s) {\n        s.style.flex = '0 0 100%';\n        s.style.width = '100%';\n        s.style.minWidth = '0';\n        s.style.maxWidth = '100%';\n        s.style.boxSizing = 'border-box';\n        s.style.marginLeft = '0';\n        s.style.marginRight = '0';\n        track.appendChild(s);\n      });\n      var clone = slides[0].cloneNode(true);       \/\/ copie de la 1re slide pour la boucle infinie\n      clone.setAttribute('aria-hidden', 'true');\n      clone.setAttribute('inert', '');\n      track.appendChild(clone);\n\n      \/\/ 4. On masque les anciennes fleches \/ pastilles\n      var re = \/(dot|bullet|pagin|arrow|prev|next|chevron|nav|control)\/i;\n      function cacher(el) {\n        el.style.display = 'none';\n        var p = el.parentElement;\n        if (!p) return;\n        if (p === block) return;\n        if (p.contains(viewport)) return;\n        var tous = Array.from(p.children).every(function (c) { return c.style.display === 'none'; });\n        if (tous) cacher(p);\n      }\n      Array.from(block.querySelectorAll('*')).forEach(function (el) {\n        if (viewport.contains(el)) return;\n        if (el.contains(viewport)) return;\n        var cls = el.getAttribute('class') || '';\n        if (el.tagName === 'BUTTON') { cacher(el); return; }\n        if (re.test(cls)) cacher(el);\n      });\n\n      \/\/ 5. Nos propres pastilles et fleches\n      var ctrl = document.createElement('div');\n      ctrl.className = 'anim-ctrl';\n      var dots = document.createElement('div');\n      dots.className = 'anim-dots';\n      var pts = [];\n      slides.forEach(function (s, k) {\n        var d = creerBouton('anim-dot', '', 'Slide ' + (k + 1));\n        d.addEventListener('click', function () { aller(k); });\n        dots.appendChild(d);\n        pts.push(d);\n      });\n      var fl = document.createElement('div');\n      fl.className = 'anim-fleches';\n      var bPrev = creerBouton('anim-fleche', '\\u2190', 'Slide precedente');\n      var bNext = creerBouton('anim-fleche', '\\u2192', 'Slide suivante');\n      bPrev.addEventListener('click', function () { precedent(); });\n      bNext.addEventListener('click', function () { suivant(); });\n      fl.appendChild(bPrev);\n      fl.appendChild(bNext);\n      ctrl.appendChild(dots);\n      ctrl.appendChild(fl);\n\n      var ancre = viewport;\n      while (ancre.parentElement) {\n        if (ancre.parentElement === block) break;\n        ancre = ancre.parentElement;\n      }\n      block.insertBefore(ctrl, ancre.nextSibling);\n\n      \/\/ 6. Deplacements : toujours de la droite vers la gauche\n      var i = 0;\n      var bloque = false;\n      var ecoule = 0;\n      var visible = false;\n      var pause = false;\n\n      function majPoints() {\n        pts.forEach(function (b, k) { b.classList.toggle('is-active', k === (i % n)); });\n      }\n      function pos(idx, avecAnim) {\n        track.style.transition = avecAnim ? ('transform ' + VITESSE + 'ms cubic-bezier(.65,0,.35,1)') : 'none';\n        track.style.transform = 'translateX(' + (-100 * idx) + '%)';\n        if (!avecAnim) { void track.offsetWidth; }\n      }\n      function deplacer(idx) {\n        i = idx;\n        pos(i, true);\n        majPoints();\n        bloque = true;\n        setTimeout(function () {\n          if (i === n) { i = 0; pos(0, false); majPoints(); }   \/\/ arrivee sur la copie : retour invisible a la vraie 1re slide\n          bloque = false;\n        }, VITESSE + 60);\n      }\n      function suivant() {\n        if (bloque) return;\n        ecoule = 0;\n        deplacer(i + 1);\n      }\n      function precedent() {\n        if (bloque) return;\n        ecoule = 0;\n        if (i === 0) { i = n; pos(n, false); }\n        deplacer(i - 1);\n      }\n      function aller(k) {\n        if (bloque) return;\n        ecoule = 0;\n        if (k === (i % n)) return;\n        deplacer(k);\n      }\n\n      pos(0, false);\n      majPoints();\n\n      \/\/ 7. Defilement automatique\n      var dernierEtat = '';\n      setInterval(function () {\n        var cov = couvertureEnCours();\n        var ok = visible;\n        if (ok) ok = !pause;\n        if (ok) ok = !document.hidden;\n        if (ok) ok = !cov;\n        if (ok) ok = !bloque;\n        if (RESPECTER_ANIMATIONS_REDUITES) { if (reduit) ok = false; }\n        if (DEBUG) {\n          var etat = 'visible=' + visible + ' pause=' + pause + ' couverture=' + cov;\n          if (etat !== dernierEtat) { dernierEtat = etat; console.log('[Slides] etat :', etat); }\n        }\n        if (!ok) return;\n        ecoule += PAS;\n        if (sup(ecoule, DUREE_SLIDE)) { suivant(); }\n      }, PAS);\n\n      block.addEventListener('pointerdown', function () { ecoule = 0; });\n      block.addEventListener('keydown', function () { ecoule = 0; });\n\n      if (PAUSE_AU_SURVOL) {\n        block.addEventListener('pointerenter', function (ev) { if (ev.pointerType === 'mouse') pause = true; });\n        block.addEventListener('pointerleave', function () { pause = false; });\n        block.addEventListener('focusin', function () { pause = true; });\n        block.addEventListener('focusout', function () { pause = false; });\n      }\n\n      if ('IntersectionObserver' in window) {\n        var io = new IntersectionObserver(function (entries) {\n          entries.forEach(function (e) {\n            var v = e.isIntersecting;\n            if (v) v = (Math.max(e.intersectionRatio, 0.3) === e.intersectionRatio);\n            visible = v;\n          });\n        }, { threshold: [0, 0.3] });\n        io.observe(block);\n      } else {\n        visible = true;\n      }\n    });\n  }\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', init);\n  } else {\n    init();\n  }\n  window.addEventListener('load', init);          \/\/ 2e essai si la mise en page n'\u00e9tait pas pr\u00eate\n})();\n<\/script>\n\n\n\n<section class=\"wp-block-bred-push-app-slider alignwide is-bg-support-yellow has-controls has-no-stores anim-slides\"><div class=\"wp-block-bred-push-app-slider__viewport\" data-bred-app-slider-viewport=\"true\"><div class=\"wp-block-bred-push-app-slider__slides\"><article class=\"wp-block-bred-push-app-slider__slide\"><div class=\"wp-block-bred-push-app-slider__media\"><img class=\"wp-block-bred-push-app-slider__image\" src=\"https:\/\/bred.mg\/wp-content\/uploads\/2026\/11\/Gif-immo-V2_2.gif\" alt=\"\" loading=\"lazy\" decoding=\"async\"\/><\/div><div class=\"wp-block-bred-push-app-slider__content\"><h2 class=\"wp-block-bred-push-app-slider__title\"><em>Et si votre projet immobilier devenait r\u00e9alit\u00e9 ? <\/em><\/h2><p class=\"wp-block-bred-push-app-slider__body\"><br>Particuliers et professionnels, achetez, construisez ou financez un terrain pour votre futur logement ou votre activit\u00e9. Nous vous accompagnons dans votre projet immobilier avec une solution adapt\u00e9e \u00e0 votre situation.<br><br><a href=\"https:\/\/bred.mg\/credit-immobilier-residence-principale-2\/\" data-type=\"link\" data-id=\"https:\/\/bred.mg\/credit-immobilier-residence-principale-2\/\">En savoir plus<\/a><\/p><\/div><\/article><article class=\"wp-block-bred-push-app-slider__slide\"><div class=\"wp-block-bred-push-app-slider__media\"><img class=\"wp-block-bred-push-app-slider__image\" src=\"https:\/\/env-sitevitrinemadaprovisoire-uatbewizyu.kinsta.cloud\/wp-content\/uploads\/2026\/09\/LOA-anime.gif\" alt=\"\" loading=\"lazy\" decoding=\"async\"\/><\/div><div class=\"wp-block-bred-push-app-slider__content\"><h2 class=\"wp-block-bred-push-app-slider__title\"><em>Equipez-vous sans attendre d'\u00e9conomiser. <\/em><\/h2><p class=\"wp-block-bred-push-app-slider__body\">Vos projets n'ont pas besoin d'attendre, voiture, \u00e9quipements, mat\u00e9riel agricole ou solutions \u00e9nerg\u00e9tiques : <em><strong>concr\u00e9tisez vos projets gr\u00e2ce \u00e0 la Location avec Option d'Achat<\/strong><\/em>.<br><br><a href=\"https:\/\/env-sitevitrinemadaprovisoire-uatbewizyu.kinsta.cloud\/particuliers-location-option-achat\/\" data-type=\"page\" data-id=\"5038\"><strong>En savoir plus<\/strong><\/a><br><\/p><\/div><\/article><\/div><\/div><div class=\"wp-block-bred-push-app-slider__controls\"><div class=\"wp-block-bred-push-app-slider__dots\" data-bred-app-slider-dots=\"true\" aria-hidden=\"true\"><\/div><div class=\"wp-block-bred-push-app-slider__arrows\"><button type=\"button\" class=\"wp-block-bred-push-app-slider__arrow is-prev\" data-bred-app-slider-prev=\"true\" aria-label=\"Pr\u00e9c\u00e9dent\"><i class=\"ph ph-arrow-left\" aria-hidden=\"true\"><\/i><\/button><button type=\"button\" class=\"wp-block-bred-push-app-slider__arrow is-next\" data-bred-app-slider-next=\"true\" aria-label=\"Suivant\"><i class=\"ph ph-arrow-right\" aria-hidden=\"true\"><\/i><\/button><\/div><\/div><\/section>\n\n\n\n<style>\n\/* ===== Apparition des arguments : un par un, fondu + mont\u00e9e depuis le bas ===== *\/\n@keyframes reassureUp {\n  from { opacity: 0; transform: translateY(26px); }\n  to   { opacity: 1; transform: translateY(0); }\n}\n\n.anim-reassure {\n  --duree: .7s;    \/* dur\u00e9e de l'apparition de chaque argument *\/\n  --pas: .75s;     \/* d\u00e9lai entre le d\u00e9but d'un argument et le d\u00e9but du suivant *\/\n}\n\n\/* Masqu\u00e9 tant que le bloc n'est pas visible (seulement si le script est actif) *\/\n.anim-reassure.anim-ready:not(.is-visible) .anim-pill > * { opacity: 0; }\n\n\/* L'animation se rejoue chaque fois que .is-visible est (r\u00e9)ajout\u00e9e.\n   --p = num\u00e9ro de la pastille (0, 1, 2, 3), pos\u00e9 par le script ;\n   --d = petit d\u00e9calage interne (ic\u00f4ne, puis titre, puis description) *\/\n.anim-reassure.is-visible .anim-pill > * {\n  animation: reassureUp var(--duree) cubic-bezier(.22,.8,.3,1) backwards;\n  animation-delay: calc(var(--p, 0) * var(--pas) + var(--d, 0s));\n}\n.anim-reassure.is-visible .anim-pill > *:nth-child(1) { --d: 0s;   }  \/* ic\u00f4ne *\/\n.anim-reassure.is-visible .anim-pill > *:nth-child(2) { --d: .08s; }  \/* titre *\/\n.anim-reassure.is-visible .anim-pill > *:nth-child(3) { --d: .16s; }  \/* description *\/\n\n@media (prefers-reduced-motion: reduce) {\n  .anim-reassure .anim-pill > * { animation: none !important; opacity: 1 !important; }\n}\n<\/style>\n\n<script>\ndocument.addEventListener('DOMContentLoaded', function () {\n  document.querySelectorAll('.anim-reassure').forEach(function (block) {\n    \/\/ Num\u00e9rote les pastilles : 0, 1, 2, 3\n    block.querySelectorAll('.anim-pill').forEach(function (pill, i) {\n      pill.style.setProperty('--p', i);\n    });\n\n    if (!('IntersectionObserver' in window)) { block.classList.add('is-visible'); return; }\n    block.classList.add('anim-ready');\n\n    \/\/ Bloc enti\u00e8rement visible (98 % pour \u00e9viter les soucis d'arrondi).\n    \/\/ Si le bloc est plus haut que l'\u00e9cran (mobile, pastilles empil\u00e9es),\n    \/\/ on d\u00e9clenche d\u00e8s que l'\u00e9cran en est enti\u00e8rement rempli.\n    var seuil = Math.min(1, window.innerHeight \/ Math.max(block.offsetHeight, 1)) * 0.98;\n\n    var io = new IntersectionObserver(function (entries) {\n      entries.forEach(function (e) {\n        var assez = false;\n        if (e.isIntersecting) {\n          assez = (Math.max(e.intersectionRatio, seuil) === e.intersectionRatio);\n        }\n        if (assez) {\n          block.classList.add('is-visible');      \/\/ d\u00e9marre \/ relance l'animation\n        } else if (e.intersectionRatio === 0) {\n          block.classList.remove('is-visible');   \/\/ totalement sorti : on r\u00e9arme\n        }\n      });\n    }, { threshold: [0, seuil] });\n    io.observe(block);\n  });\n});\n<\/script>\n\n\n\n<section class=\"wp-block-bred-section-reassurance is-bg-none has-cols-4 has-header anim-reassure\"><header class=\"wp-block-bred-section-reassurance__header\"><h2 class=\"wp-block-bred-section-reassurance__title\">Pourquoi choisir <em>BRED Madagasikara Banque Populaire<\/em>\u202f?<\/h2><p class=\"wp-block-bred-section-reassurance__body\">Une banque solide, <em>proche de vous<\/em> depuis plus d'un si\u00e8cle.<\/p><\/header><div class=\"wp-block-bred-section-reassurance__list\">\n<div class=\"wp-block-bred-reassurance is-tone-accent-mg is-size-md anim-pill\"><span class=\"wp-block-bred-reassurance__bubble\"><i class=\"ph ph-globe\" aria-hidden=\"true\"><\/i><\/span><p class=\"wp-block-bred-reassurance__label\">Un Groupe international <\/p><p class=\"wp-block-bred-reassurance__description\">B\u00e9n\u00e9ficiez de la solidit\u00e9 du Groupe BPCE et de l\u2019accompagnement d\u2019une banque proche de vous.<\/p><\/div>\n\n\n\n<div class=\"wp-block-bred-reassurance is-tone-accent-mg is-size-md anim-pill\"><span class=\"wp-block-bred-reassurance__bubble\"><i class=\"ph ph-medal\" aria-hidden=\"true\"><\/i><\/span><p class=\"wp-block-bred-reassurance__label\">Une banque certifi\u00e9e<\/p><p class=\"wp-block-bred-reassurance__description\">B\u00e9n\u00e9ficiez d\u2019un cadre s\u00e9curis\u00e9 pour g\u00e9rer vos comptes en toute confiance.<\/p><\/div>\n\n\n\n<div class=\"wp-block-bred-reassurance is-tone-accent-mg is-size-md anim-pill\"><span class=\"wp-block-bred-reassurance__bubble\"><i class=\"ph ph-clock\" aria-hidden=\"true\"><\/i><\/span><p class=\"wp-block-bred-reassurance__label\">Assistance 7j\/7<\/p><p class=\"wp-block-bred-reassurance__description\">B\u00e9n\u00e9ficiez d\u2019une assistance pouvant \u00eatre disponible tous les jours selon l'objet de vos questions.<\/p><\/div>\n\n\n\n<div class=\"wp-block-bred-reassurance is-tone-accent-mg is-size-md anim-pill\"><span class=\"wp-block-bred-reassurance__bubble\"><i class=\"ph ph-map-pin\" aria-hidden=\"true\"><\/i><\/span><p class=\"wp-block-bred-reassurance__label\"><strong>Un r\u00e9seau de proximit\u00e9<\/strong><\/p><p class=\"wp-block-bred-reassurance__description\">B\u00e9n\u00e9ficiez d'une agence dans chaque territoire pour \u00eatre accompagn\u00e9 au plus pr\u00e8s de votre activit\u00e9.<\/p><\/div>\n<\/div><\/section>\n\n\n\n<script>\n(function () {\n  var DUREE = 2000;                              \/\/ dur\u00e9e de la mont\u00e9e (ms)\n  var PAUSE_FIN = 3500;                          \/\/ temps pass\u00e9 sur les chiffres finaux avant de repartir (ms)\n  var PAUSE_ZERO = 400;                          \/\/ petit temps \u00e0 0 avant la nouvelle mont\u00e9e (ms)\n  var SELECTEUR = '.anim-chiffres';\n  var RESPECTER_ANIMATIONS_REDUITES = false;     \/\/ true : valeurs finales directes si l'appareil r\u00e9duit les animations\n\n  var reduit = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n  if (RESPECTER_ANIMATIONS_REDUITES) {\n    if (reduit) return;\n  }\n\n  \/\/ \"+ 300 000\" : pr\u00e9fixe \"+ \", nombre \"300 000\", suffixe \u00e9ventuel (%, M...)\n  var re = \/^(\\D*?)(\\d[\\d\\s\\u00a0\\u202f]*\\d|\\d)(\\D{0,3})$\/;\n\n  function format(n, sep) {\n    return String(n).replace(\/\\B(?=(\\d{3})+(?!\\d))\/g, sep);\n  }\n\n  \/\/ Vrai tant que la couverture livre est affich\u00e9e et pas encore en train de s'ouvrir\n  function couvertureEnCours() {\n    var w = document.getElementById('book-wrap');\n    if (!w) return false;\n    return !w.classList.contains('is-opening');\n  }\n\n  function init() {\n    var blocs = document.querySelectorAll(SELECTEUR);\n    console.log('[Chiffres] blocs trouves :', blocs.length);\n    if (!blocs.length) {\n      console.warn('[Chiffres] Aucun bloc avec la classe anim-chiffres : verifie la classe du bloc Section Chiffres.');\n      return;\n    }\n\n    blocs.forEach(function (block) {\n      if (block.dataset.chiffresInit) return;     \/\/ evite un double lancement\n      block.dataset.chiffresInit = '1';\n\n      var compteurs = [];\n\n      block.querySelectorAll('*').forEach(function (el) {\n        if (el.children.length) return;           \/\/ elements de texte uniquement\n        var m = el.textContent.trim().match(re);\n        if (!m) return;\n        var sepMatch = m[2].match(\/[\\s\\u00a0\\u202f]\/);\n        compteurs.push({\n          el: el,\n          pre: m[1],\n          suf: m[3],\n          sep: sepMatch ? sepMatch[0] : '\\u00a0',\n          cible: parseInt(m[2].replace(\/\\D\/g, ''), 10)\n        });\n        \/\/ Fige la largeur finale pour eviter que la mise en page bouge pendant le comptage\n        if (getComputedStyle(el).display === 'inline') el.style.display = 'inline-block';\n        el.style.minWidth = el.getBoundingClientRect().width + 'px';\n        el.style.fontVariantNumeric = 'tabular-nums';\n      });\n\n      console.log('[Chiffres] compteurs detectes :', compteurs.length);\n      if (!compteurs.length) {\n        console.warn('[Chiffres] Aucun chiffre detecte dans le bloc : le + et le nombre sont peut-etre dans des balises separees.');\n        return;\n      }\n      if (!('IntersectionObserver' in window)) return;\n\n      var raf = null;\n      var attente = null;\n      var boucle = null;\n      var actif = false;\n\n      function afficher(c, n) {\n        c.el.textContent = c.pre + format(n, c.sep) + c.suf;\n      }\n      function arreter() {\n        if (raf) cancelAnimationFrame(raf);\n        if (attente) clearInterval(attente);\n        if (boucle) clearTimeout(boucle);\n        raf = null;\n        attente = null;\n        boucle = null;\n      }\n      function mettreAZero() {\n        compteurs.forEach(function (c) { afficher(c, 0); });\n      }\n      function remiseAZero() {\n        arreter();\n        mettreAZero();\n      }\n\n      \/\/ Une fois les chiffres finaux atteints : pause, retour a 0, puis nouvelle montee\n      function planifierRecommencement() {\n        boucle = setTimeout(function () {\n          boucle = null;\n          if (!actif) return;\n          mettreAZero();\n          boucle = setTimeout(function () {\n            boucle = null;\n            if (actif) lancer();\n          }, PAUSE_ZERO);\n        }, PAUSE_FIN);\n      }\n\n      function lancer() {\n        arreter();\n        var debut = null;\n        function pas(t) {\n          if (debut === null) debut = t;\n          var p = Math.min((t - debut) \/ DUREE, 1);\n          var e = 1 - Math.pow(1 - p, 3);         \/\/ ralentit vers la fin\n          compteurs.forEach(function (c) { afficher(c, Math.round(c.cible * e)); });\n          if (p !== 1) {\n            raf = requestAnimationFrame(pas);\n          } else {\n            raf = null;\n            planifierRecommencement();            \/\/ boucle infinie\n          }\n        }\n        raf = requestAnimationFrame(pas);\n      }\n\n      \/\/ Attend que la couverture commence a s'ouvrir avant de compter\n      function lancerQuandPret() {\n        if (!couvertureEnCours()) { lancer(); return; }\n        attente = setInterval(function () {\n          if (!couvertureEnCours()) {\n            clearInterval(attente);\n            attente = null;\n            if (actif) lancer();\n          }\n        }, 100);\n      }\n\n      remiseAZero();                              \/\/ depart a zero a chaque chargement\n\n      \/\/ Seuil : 35 % du bloc, ou moins si le bloc est plus haut que l'ecran\n      var seuil = Math.min(0.35, (window.innerHeight \/ Math.max(block.offsetHeight, 1)) * 0.9);\n\n      var io = new IntersectionObserver(function (entries) {\n        entries.forEach(function (e) {\n          var assezVisible = e.isIntersecting;\n          if (assezVisible) {\n            \/\/ vrai si le ratio visible est superieur ou egal au seuil\n            assezVisible = (Math.max(e.intersectionRatio, seuil) === e.intersectionRatio);\n          }\n          if (assezVisible) {\n            if (!actif) {\n              actif = true;\n              lancerQuandPret();                  \/\/ demarre \/ relance\n            }\n          } else if (e.intersectionRatio === 0) {\n            actif = false;                        \/\/ totalement sorti : on arrete et on rearme\n            remiseAZero();\n          }\n        });\n      }, { threshold: [0, seuil] });\n      io.observe(block);\n\n      \/\/ Retour arriere du navigateur (page restauree depuis le cache) : on repart de zero\n      window.addEventListener('pageshow', function (ev) {\n        if (ev.persisted) {\n          actif = false;\n          remiseAZero();\n          io.unobserve(block);\n          io.observe(block);\n        }\n      });\n    });\n  }\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', init);\n  } else {\n    init();\n  }\n})();\n<\/script>\n\n\n\n<section class=\"wp-block-bred-section-stats alignfull is-bg-none is-header-side is-value-md is-value-left is-tile-style has-header anim-chiffres\"><header class=\"wp-block-bred-section-stats__header\"><h2 class=\"wp-block-bred-section-stats__title\">BRED Madagasikara Banque Populaire engag\u00e9e \u00e0 vos c\u00f4t\u00e9s<\/h2><p class=\"wp-block-bred-section-stats__body\">Banque de proximit\u00e9 engag\u00e9e dans le d\u00e9veloppement \u00e9conomique et social de Madagascar, nous agissons chaque jour pour accompagner nos clients et renforcer l\u2019inclusion financi\u00e8re sur le territoire.<\/p><\/header><dl class=\"wp-block-bred-section-stats__list\"><div class=\"wp-block-bred-section-stats__row\"><dt class=\"wp-block-bred-section-stats__label\"><strong>Collaborateurs \u00e0 votre service <\/strong><br>Des \u00e9quipes mobilis\u00e9es au plus pr\u00e8s du terrain.<\/dt><dd class=\"wp-block-bred-section-stats__value\">+ 1 200<\/dd><\/div><div class=\"wp-block-bred-section-stats__row\"><dt class=\"wp-block-bred-section-stats__label\"><strong>Clients accompagn\u00e9s<\/strong><br>Particuliers, professionnels, associations et entreprises nous font confiance.<\/dt><dd class=\"wp-block-bred-section-stats__value\">+ 300 000<\/dd><\/div><div class=\"wp-block-bred-section-stats__row\"><dt class=\"wp-block-bred-section-stats__label\"><strong>Actions RSE soutenues<\/strong><br>Des engagements concrets en faveur du territoire et de l\u2019inclusion.<\/dt><dd class=\"wp-block-bred-section-stats__value\">+ 1 200<\/dd><\/div><\/dl><\/section>\n\n\n\n<div class=\"wp-block-bred-push-app alignwide is-bg-primary-dark is-media-right has-image has-rating has-stores has-cta\"><div class=\"wp-block-bred-push-app__content\"><span class=\"wp-block-bred-push-app__eyebrow\">APPLICATION MOBILE<\/span><h2 class=\"wp-block-bred-push-app__title\">BRED Connect : <em>la banque \u00e0 port\u00e9e de vos mains<\/em> <\/h2><p class=\"wp-block-bred-push-app__body\">Consultez vos comptes, suivez vos op\u00e9rations, t\u00e9l\u00e9chargez votre RIB: g\u00e9rez tout depuis votre mobile, o\u00f9 que vous soyez.<\/p><div class=\"wp-block-bred-push-app__ratings\"><span class=\"wp-block-bred-push-app__rating\"><span class=\"wp-block-bred-push-app__rating-icon\" aria-hidden=\"true\"><i class=\"ph ph-apple-logo\" aria-hidden=\"true\"><\/i><\/span><span class=\"wp-block-bred-push-app__rating-value\">4,6\/5<\/span><span class=\"wp-block-bred-push-app__rating-star\" aria-hidden=\"true\"><i class=\"ph ph-star\" aria-hidden=\"true\"><\/i><\/span><span class=\"wp-block-bred-push-app__rating-label\">sur App Store<\/span><\/span><span class=\"wp-block-bred-push-app__rating\"><span class=\"wp-block-bred-push-app__rating-icon\" aria-hidden=\"true\"><i class=\"ph ph-google-play-logo\" aria-hidden=\"true\"><\/i><\/span><span class=\"wp-block-bred-push-app__rating-value\">4,4\/5<\/span><span class=\"wp-block-bred-push-app__rating-star\" aria-hidden=\"true\"><i class=\"ph ph-star\" aria-hidden=\"true\"><\/i><\/span><span class=\"wp-block-bred-push-app__rating-label\">sur Google Play<\/span><\/span><\/div><a class=\"wp-block-bred-push-app__cta\" href=\"https:\/\/connect.bred.mg\/connect\/security\/login\"><span class=\"wp-block-bred-push-app__cta-label\">Acc\u00e9der \u00e0 mon espace client<\/span><\/a><div class=\"wp-block-bred-push-app__stores\"><a class=\"wp-block-bred-push-app__store is-apple\" href=\"https:\/\/apps.apple.com\/us\/app\/bred-connect-mada\/id6759828680 \" target=\"_blank\" rel=\"noopener noreferrer\" aria-label=\"T\u00e9l\u00e9charger sur l'App Store\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 162 54\" width=\"162\" height=\"54\" role=\"img\" aria-label=\"Download on the App Store\"><rect x=\"0.5\" y=\"0.5\" width=\"161\" height=\"53\" rx=\"9.5\" fill=\"#000000\" stroke=\"#ffffff\" stroke-opacity=\"0.15\"><\/rect><g transform=\"translate(14 12)\" fill=\"#ffffff\"><path d=\"M16.4 16.6c0-2.3 1.9-3.4 2-3.4-1-1.5-2.7-1.7-3.3-1.8-1.4-.1-2.7.8-3.4.8-.7 0-1.8-.8-3-.8-1.5 0-2.9.9-3.7 2.3-1.6 2.7-.4 6.7 1.1 8.9.7 1.1 1.6 2.3 2.7 2.2 1.1 0 1.5-.7 2.8-.7 1.3 0 1.7.7 2.8.7 1.2 0 1.9-1.1 2.6-2.2.8-1.2 1.2-2.5 1.2-2.5-.1 0-2.3-.9-2.3-3.5ZM14.7 10.5c.6-.7 1-1.6.9-2.6-.9 0-2 .6-2.6 1.3-.6.6-1 1.6-.9 2.5 1 .1 2-.5 2.6-1.2Z\"><\/path><\/g><text x=\"46\" y=\"22\" fill=\"#ffffff\" font-family=\"-apple-system, system-ui, sans-serif\" font-size=\"9\" font-weight=\"400\">Download on the<\/text><text x=\"46\" y=\"40\" fill=\"#ffffff\" font-family=\"-apple-system, system-ui, sans-serif\" font-size=\"18\" font-weight=\"500\">App Store<\/text><\/svg><\/a><a class=\"wp-block-bred-push-app__store is-play\" href=\"https:\/\/play.google.com\/store\/apps\/details?id=mg.bmbp.saphir.app1&amp;pcampaignid=web_share\" target=\"_blank\" rel=\"noopener noreferrer\" aria-label=\"Disponible sur Google Play\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 184 54\" width=\"184\" height=\"54\" role=\"img\" aria-label=\"Get it on Google Play\"><rect x=\"0.5\" y=\"0.5\" width=\"183\" height=\"53\" rx=\"9.5\" fill=\"#000000\" stroke=\"#ffffff\" stroke-opacity=\"0.15\"><\/rect><g transform=\"translate(14 12)\"><path d=\"M0 0v30l13-15L0 0Z\" fill=\"#34A853\"><\/path><path d=\"M0 0l21 12-8 3L0 0Z\" fill=\"#FBBC04\"><\/path><path d=\"M0 30l21-12-8-3L0 30Z\" fill=\"#EA4335\"><\/path><path d=\"M13 15l8-3 4 2.4-4 2.6-8-2Z\" fill=\"#4285F4\"><\/path><\/g><text x=\"50\" y=\"22\" fill=\"#ffffff\" font-family=\"-apple-system, system-ui, sans-serif\" font-size=\"9\" font-weight=\"400\">GET IT ON<\/text><text x=\"50\" y=\"40\" fill=\"#ffffff\" font-family=\"-apple-system, system-ui, sans-serif\" font-size=\"18\" font-weight=\"500\">Google Play<\/text><\/svg><\/a><\/div><\/div><div class=\"wp-block-bred-push-app__media\"><img class=\"wp-block-bred-push-app__image\" src=\"https:\/\/bred.mg\/wp-content\/uploads\/2026\/09\/BRED-Connect.gif\" alt=\"\" loading=\"lazy\" decoding=\"async\"\/><\/div><\/div>\n\n\n\n<style>\n\/* ===== Bouton principal : halo qui pulse + reflet lumineux ===== *\/\n@keyframes ctaHalo {\n  0%   { box-shadow: 0 0 0 0 rgba(0, 193, 242, .45); }\n  70%  { box-shadow: 0 0 0 16px rgba(0, 193, 242, 0); }\n  100% { box-shadow: 0 0 0 0 rgba(0, 193, 242, 0); }\n}\n@keyframes ctaBrillance {\n  0%, 55% { background-position: 160% 0; }\n  100%    { background-position: -60% 0; }\n}\n\n.anim-cta .anim-cta-btn {\n  background-image: linear-gradient(110deg,\n    rgba(255,255,255,0) 35%,\n    rgba(255,255,255,.28) 50%,\n    rgba(255,255,255,0) 65%);\n  background-size: 250% 100%;\n  background-repeat: no-repeat;\n  background-position: 160% 0;\n  animation: ctaHalo 2.6s ease-out infinite,\n             ctaBrillance 4s ease-in-out infinite;\n  transition: transform .2s ease;\n}\n.anim-cta .anim-cta-btn:hover {\n  transform: scale(1.04);\n  animation: ctaBrillance 4s ease-in-out infinite;\n}\n\n\/* ===== Titre : vague de lumi\u00e8re bleue qui traverse le texte ===== *\/\n@keyframes ctaTitre {\n  0%, 35% { background-position: 100% 0; }   \/* repos : texte dans sa couleur normale *\/\n  100%    { background-position: 0% 0; }     \/* la vague traverse de gauche \u00e0 droite *\/\n}\n\n@supports (-webkit-background-clip: text) or (background-clip: text) {\n  .anim-cta .anim-cta-titre {\n    background-image: linear-gradient(90deg,\n      currentColor 0%,\n      currentColor 25%,\n      #1f9bdc 50%,                           \/* bleu de la vague (ajuste \u00e0 ta charte) *\/\n      currentColor 75%,\n      currentColor 100%);\n    background-size: 200% 100%;\n    background-position: 100% 0;\n    -webkit-background-clip: text;\n    background-clip: text;\n    -webkit-text-fill-color: transparent;\n    animation: ctaTitre 7s ease-in-out infinite;\n  }\n}\n\n\/* Accessibilit\u00e9 : pas d'animation continue si l'appareil r\u00e9duit les animations *\/\n@media (prefers-reduced-motion: reduce) {\n  .anim-cta .anim-cta-btn { animation: none; }\n  .anim-cta .anim-cta-titre {\n    animation: none;\n    background-image: none;\n    -webkit-text-fill-color: currentColor;\n  }\n}\n<\/style>\n\n<script>\n(function () {\n  function init() {\n    document.querySelectorAll('.anim-cta').forEach(function (block) {\n      var liens = Array.from(block.querySelectorAll('a'));\n\n      \/\/ Bouton principal = le lien qui a un fond plein (le lien secondaire n'en a pas)\n      var principal = null;\n      liens.some(function (a) {\n        var c = getComputedStyle(a).backgroundColor;\n        if (c !== 'rgba(0, 0, 0, 0)') {\n          if (c !== 'transparent') { principal = a; return true; }\n        }\n        return false;\n      });\n      if (!principal) principal = liens[0];\n      if (principal) { principal.classList.add('anim-cta-btn'); }\n      console.log('[CTA] bouton principal repere :', !!principal);\n\n      \/\/ Titre = le premier titre h1-h4 ; sinon l'element de texte a la plus grande police\n      var titre = block.querySelector('h1, h2, h3, h4');\n      if (!titre) {\n        var meilleur = 0;\n        block.querySelectorAll('*').forEach(function (el) {\n          if (el.children.length) return;\n          if (el.closest('a')) return;\n          if (el.textContent.trim() === '') return;\n          var taille = parseFloat(getComputedStyle(el).fontSize);\n          if (Math.max(taille, meilleur) === taille) {\n            if (taille !== meilleur) { meilleur = taille; titre = el; }\n          }\n        });\n      }\n      if (titre) { titre.classList.add('anim-cta-titre'); }\n      console.log('[CTA] titre repere :', !!titre);\n    });\n  }\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', init);\n  } else {\n    init();\n  }\n})();\n<\/script>\n\n\n\n<div class=\"wp-block-bred-push alignwide is-bg-accent-mg is-layout-centered has-cta has-secondary-cta anim-cta\"><div class=\"wp-block-bred-push__content\"><h2 class=\"wp-block-bred-push__title\">\u00c9changer avec nos conseillers<\/h2><p class=\"wp-block-bred-push__body\">Vous avez besoin d'aide ?<br><br>Pour toutes vos questions :<br>Notre Centre Relation Client est \u00e0 votre \u00e9coute : du lundi au vendredi de 7h30 \u00e0 20h30 et le samedi de 8h00 \u00e0 15h00.<br>L\u2019\u00e9quipe de l\u2019assistance mon\u00e9tique est disponible 24\/24 et 7j\/7.<\/p><\/div><div class=\"wp-block-bred-push__ctas\"><a class=\"wp-block-bred-push__cta is-primary\" href=\"https:\/\/bred.mg\/prise-de-contact\/\"><span class=\"wp-block-bred-push__cta-label\">Contacter un conseiller<\/span><\/a><a class=\"wp-block-bred-push__cta is-secondary\" href=\"https:\/\/bred.mg\/faq\/\"><span class=\"wp-block-bred-push__cta-label\">Foire aux questions<\/span><\/a><\/div><\/div>\n\n\n\n<section class=\"wp-block-bred-text-media is-media-left has-media\"><div class=\"wp-block-bred-text-media__content\"><h2 class=\"wp-block-bred-text-media__title\">Notre r\u00e9seau proche de vous, une agence ou un DAB <\/h2><p class=\"wp-block-bred-text-media__body\">BRED Madagasikara Banque Populaire, votre banque de proximit\u00e9.<\/p><div class=\"wp-block-bred-text-media__extra\"><\/div><div class=\"wp-block-bred-text-media__ctas\"><a class=\"wp-block-bred-text-media__cta is-primary\" href=\"https:\/\/bred.mg\/trouver-une-agence\/\"><span class=\"wp-block-bred-text-media__cta-label\">Trouver une agence ou un DAB<\/span><\/a><a class=\"wp-block-bred-text-media__cta is-secondary\" href=\"https:\/\/bred.mg\/prise-de-contact\/\"><span class=\"wp-block-bred-text-media__cta-label\">Prendre un rendez-vous avec un conseiller<\/span><\/a><\/div><\/div><figure class=\"wp-block-bred-text-media__media\"><div class=\"wp-block-bred-text-media__frame\"><img class=\"wp-block-bred-text-media__image\" src=\"http:\/\/bred.mg\/wp-content\/uploads\/2026\/06\/back-view-man-feeling-free-2.png\" alt=\"\" loading=\"lazy\" decoding=\"async\"\/><\/div><\/figure><\/section>\n\n\n\n<style>\n#book-wrap {\n  position: fixed;\n  inset: 0;\n  z-index: 999999;\n  overflow: hidden;\n  cursor: pointer;\n  background-color: #b9cdf0;\n  --origine: 50% 95%;                      \/* centre du cercle (le soleil) ; ajust\u00e9 par le script en version mobile *\/\n  --texte-couleur: #ffffff;                \/* couleur des textes \u00e9crits (titre et Bred.mg) *\/\n}\n\n\/* Calque anim\u00e9 : contient la sc\u00e8ne *\/\n#book-anim {\n  position: absolute;\n  inset: 0;\n  overflow: hidden;\n  \/* \u00e9tat de d\u00e9part : cercle ferm\u00e9 sur le soleil, l\u00e9g\u00e8rement agrandi, invisible *\/\n  opacity: 0;\n  transform: scale(1.12);\n  clip-path: circle(0% at var(--origine));\n  will-change: clip-path, transform, opacity;\n}\n\n\/* ---------- Sc\u00e8ne DESKTOP : image 1920 x 1080 (16:9), centr\u00e9e en mode \u00ab cover \u00bb ---------- *\/\n#book-stage {\n  --u: calc(max(100vw, 177.78vh) \/ 100);   \/* 1% de la largeur de la sc\u00e8ne *\/\n  --decalage: 1.5;                         \/* remonte l'image (en % de sa largeur) pour mieux voir le bas :\n                                              0 = centr\u00e9e comme avant ; 1.5 = un peu plus haut ; 3 = encore plus haut *\/\n  position: absolute;\n  left: 50%;\n  \/* centr\u00e9e, puis remont\u00e9e de \u00ab --decalage \u00bb, sans jamais laisser d'espace vide en bas *\/\n  top: calc(50% - min(var(--u) * var(--decalage), (var(--u) * 56.25 - 100vh) \/ 2));\n  width: calc(var(--u) * 100);\n  height: calc(var(--u) * 56.25);          \/* 1080 \/ 1920 *\/\n  margin-left: calc(var(--u) * -50);\n  margin-top: calc(var(--u) * -28.125);\n  background: #b9cdf0 url(\"https:\/\/bred.mg\/wp-content\/uploads\/2026\/11\/Laptop.gif\") center \/ 100% 100% no-repeat;\n  pointer-events: none;\n}\n\n\/* ---------- Sc\u00e8ne MOBILE : image 1080 x 1920 (9:16), centr\u00e9e en \u00ab cover \u00bb ---------- *\/\n#book-wrap.is-mobile #book-stage {\n  --u: calc(max(100vw, 56.25vh) \/ 100);\n  top: 50%;                                \/* pas de d\u00e9calage vertical en version mobile *\/\n  width: calc(var(--u) * 100);\n  height: calc(var(--u) * 177.78);         \/* 1920 \/ 1080 *\/\n  margin-left: calc(var(--u) * -50);\n  margin-top: calc(var(--u) * -88.89);\n  background-image: url(\"https:\/\/bred.mg\/wp-content\/uploads\/2026\/11\/telephone.gif\");\n}\n\/* Barre d'adresse mobile : on utilise la vraie hauteur visible quand le navigateur sait le faire *\/\n@supports (height: 100dvh) {\n  #book-wrap.is-mobile #book-stage {\n    --u: calc(max(100vw, 56.25dvh) \/ 100);\n  }\n}\n\n\/* Entr\u00e9e : le cercle s'ouvre depuis le soleil *\/\n#book-wrap.is-in #book-anim {\n  opacity: 1;\n  transform: scale(1);\n  clip-path: circle(150% at var(--origine));\n  transition: clip-path 1.1s cubic-bezier(.22, .8, .3, 1),\n              opacity .5s ease,\n              transform 1.6s cubic-bezier(.22, .8, .3, 1);\n}\n\n\/* Sortie : le cercle se referme vers le soleil (textes compris),\n   et le fond de l'intro s'efface en m\u00eame temps pour laisser voir le site *\/\n#book-wrap.is-out {\n  background-color: transparent;\n  transition: background-color .9s ease .1s;\n  pointer-events: none;\n}\n#book-wrap.is-out #book-anim {\n  opacity: 0;\n  transform: scale(1.06);\n  clip-path: circle(0% at var(--origine));\n  transition: clip-path .9s cubic-bezier(.65, 0, .35, 1),\n              opacity .9s ease .1s,\n              transform .9s ease;\n}\n\n\/* Textes *\/\n.book-txt {\n  position: absolute;\n  left: 0;\n  width: 100%;\n  text-align: center;\n  white-space: nowrap;\n  font-family: \"Gill Sans MT\", \"Gill Sans\", \"Gill Sans Nova\", Calibri, \"Trebuchet MS\", sans-serif;\n  font-weight: 700;\n  color: var(--texte-couleur);\n  text-shadow: 0 1px 10px rgba(25, 42, 107, .55);   \/* l\u00e9ger halo bleu marine pour garder le blanc lisible *\/\n  line-height: 1;\n}\n\n\/* Desktop *\/\n#book-titre {\n  top: calc(var(--u) * 17.9);         \/* plus la valeur est petite, plus le titre monte *\/\n  font-size: calc(var(--u) * 4.0);   \/* taille du titre : \u00e9tait 4.7 *\/\n}\n#book-url {\n  top: calc(var(--u) * 39.9);        \/* dans le demi-cercle du glyphe *\/\n  font-size: calc(var(--u) * 2.2);\n}\n\n\/* Mobile : \u00ab Tongasoa \u00bb et \u00ab Bienvenue \u00bb superpos\u00e9s dans le ciel, \u00ab Bred.mg \u00bb dans le glyphe *\/\n#book-t1 {\n  top: calc(var(--u) * 45.9);        \/* ajuste pour monter \/ descendre le titre *\/\n  font-size: calc(var(--u) * 11.5);\n}\n#book-t2 {\n  top: calc(var(--u) * 57.5);        \/* sous \u00ab Tongasoa \u00bb ; augmente pour les \u00e9carter *\/\n  font-size: calc(var(--u) * 11.5);\n}\n#book-wrap.is-mobile #book-url {\n  top: calc(var(--u) * 133.4);       \/* dans le demi-cercle du glyphe *\/\n  font-size: calc(var(--u) * 5.7);\n}\n\n\/* Lettres : cach\u00e9es, puis r\u00e9v\u00e9l\u00e9es une \u00e0 une (effet machine \u00e0 \u00e9crire) *\/\n.book-l { opacity: 0; }\n.book-l.on { opacity: 1; }\n\n\/* ---------- Bouton de fermeture (X), en haut \u00e0 droite ---------- *\/\n#book-close {\n  position: absolute;\n  top: calc(env(safe-area-inset-top, 0px) + 16px);\n  right: 16px;\n  z-index: 5;\n  width: 44px;                       \/* taille du bouton (44 px = confortable au doigt) *\/\n  height: 44px;\n  margin: 0;\n  padding: 0;\n  border: 0;\n  border-radius: 50%;\n  background: rgba(25, 42, 107, .55);   \/* bleu marine translucide, lisible sur le fond clair *\/\n  cursor: pointer;\n  -webkit-appearance: none;\n  appearance: none;\n  -webkit-tap-highlight-color: transparent;\n  opacity: 0;                        \/* appara\u00eet en fondu juste apr\u00e8s l'ouverture du cercle *\/\n  transition: opacity .4s ease .6s, background-color .2s ease;\n}\n#book-close:hover,\n#book-close:focus-visible {\n  background: rgba(25, 42, 107, .85);\n}\n#book-close:focus-visible {\n  outline: 2px solid #ffffff;\n  outline-offset: 2px;\n}\n\/* Les deux traits de la croix *\/\n#book-close::before,\n#book-close::after {\n  content: \"\";\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  width: 18px;\n  height: 2px;\n  margin: -1px 0 0 -9px;\n  border-radius: 1px;\n  background: #ffffff;\n}\n#book-close::before { transform: rotate(45deg); }\n#book-close::after  { transform: rotate(-45deg); }\n\n#book-wrap.is-in #book-close  { opacity: 1; }\n#book-wrap.is-out #book-close { opacity: 0; transition: opacity .3s ease; }\n\n\/* Accessibilit\u00e9 : simples fondus, sans mouvement *\/\n@media (prefers-reduced-motion: reduce) {\n  #book-anim { clip-path: none !important; transform: none !important; }\n  #book-wrap.is-out { transition: opacity .5s ease; opacity: 0; }\n}\n<\/style>\n\n<script>\n(function () {\n  var AVANT_ENTREE  = 300;    \/\/ temps apr\u00e8s le chargement de l'image, avant l'entr\u00e9e (ms)\n  var ENTREE_IMAGE  = 1100;   \/\/ dur\u00e9e de l'apparition du fond (ms), \u00e9gale \u00e0 la transition CSS\n  var DELAI_TITRE   = 150;    \/\/ petit temps avant de commencer \u00e0 \u00e9crire (ms)\n  var VITESSE_TITRE = 70;     \/\/ ms par lettre pour \u00ab Tongasoa \/ Bienvenue \u00bb\n  var PAUSE_TITRE   = 500;    \/\/ pause avant \u00ab Bred.mg \u00bb (0,5 s)\n  var VITESSE_URL   = 90;     \/\/ ms par lettre pour \u00ab Bred.mg \u00bb\n  var RESTE_FINAL   = 1000;   \/\/ temps o\u00f9 l'ensemble reste affich\u00e9 (1 s)\n  var SORTIE_IMAGE  = 1000;   \/\/ dur\u00e9e de la disparition (ms), un peu plus que la transition CSS (0,9 s + d\u00e9lai)\n  var UNE_FOIS      = true;   \/\/ true : une seule fois par session (onglet) ; false : \u00e0 chaque chargement\n  var IMAGE_DESKTOP = 'https:\/\/bred.mg\/wp-content\/uploads\/2026\/11\/Laptop.gif';\n  var IMAGE_MOBILE  = 'https:\/\/bred.mg\/wp-content\/uploads\/2026\/11\/telephone.gif';\n  var ORIGINE_MOBILE = '50% 72%';   \/\/ centre du soleil dans l'image mobile (cercle d'entr\u00e9e \/ sortie)\n  var TEXTE_TITRE   = 'Tongasoa \/ Bienvenue';   \/\/ version desktop (une seule ligne)\n  var TEXTE_T1      = 'Tongasoa';                \/\/ version mobile : ligne 1\n  var TEXTE_T2      = 'Bienvenue';               \/\/ version mobile : ligne 2\n  var TEXTE_URL     = 'Bred.mg';\n  var TEXTE_FERMER  = \"Fermer l'introduction\";   \/\/ texte lu par les lecteurs d'\u00e9cran pour le bouton X\n\n  \/\/ Une fois par session : si l'intro a d\u00e9j\u00e0 \u00e9t\u00e9 lanc\u00e9e dans cet onglet, on ne fait rien\n  try { if (UNE_FOIS) { if (sessionStorage.getItem('couvertureVue')) return; } } catch (e) {}\n  \/\/ On note tout de suite que l'intro est lanc\u00e9e (m\u00eame si le visiteur quitte la page avant la fin)\n  try { if (UNE_FOIS) { sessionStorage.setItem('couvertureVue', '1'); } } catch (e2) {}\n\n  var reduit = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n  \/\/ Version mobile = \u00e9cran en portrait\n  var mobile = window.matchMedia('(orientation: portrait)').matches;\n  var IMAGE_FOND = mobile ? IMAGE_MOBILE : IMAGE_DESKTOP;\n\n  \/\/ --- Construction du DOM ---\n  var wrap = document.createElement('div');\n  wrap.id = 'book-wrap';\n  if (mobile) {\n    wrap.classList.add('is-mobile');\n    wrap.style.setProperty('--origine', ORIGINE_MOBILE);\n  }\n\n  var anim = document.createElement('div');\n  anim.id = 'book-anim';\n\n  var stage = document.createElement('div');\n  stage.id = 'book-stage';\n  stage.setAttribute('role', 'img');\n  stage.setAttribute('aria-label', 'Tongasoa \/ Bienvenue - Bred.mg');\n\n  function creerTexte(id) {\n    var d = document.createElement('div');\n    d.id = id;\n    d.className = 'book-txt';\n    d.setAttribute('aria-hidden', 'true');\n    return d;\n  }\n  var url = creerTexte('book-url');\n\n  \/\/ Cr\u00e9e une span par lettre (le texte est donc centr\u00e9 d\u00e8s le d\u00e9part, sans bouger pendant la frappe)\n  function preparerLettres(el, texte) {\n    var lettres = [];\n    texte.split('').forEach(function (ch) {\n      var s = document.createElement('span');\n      s.className = 'book-l';\n      s.textContent = ch;\n      el.appendChild(s);\n      lettres.push(s);\n    });\n    return lettres;\n  }\n\n  var lettresTitre = [];\n  if (mobile) {\n    var t1 = creerTexte('book-t1');\n    var t2 = creerTexte('book-t2');\n    stage.appendChild(t1);\n    stage.appendChild(t2);\n    \/\/ \u00ab Tongasoa \u00bb s'\u00e9crit, puis \u00ab Bienvenue \u00bb juste en dessous\n    lettresTitre = preparerLettres(t1, TEXTE_T1).concat(preparerLettres(t2, TEXTE_T2));\n  } else {\n    var titre = creerTexte('book-titre');\n    stage.appendChild(titre);\n    lettresTitre = preparerLettres(titre, TEXTE_TITRE);\n  }\n  stage.appendChild(url);\n  var lettresUrl = preparerLettres(url, TEXTE_URL);\n\n  anim.appendChild(stage);\n  wrap.appendChild(anim);\n\n  \/\/ Bouton X (en haut \u00e0 droite) : plac\u00e9 dans #book-wrap, hors du calque anim\u00e9\n  var fermer = document.createElement('button');\n  fermer.id = 'book-close';\n  fermer.type = 'button';\n  fermer.setAttribute('aria-label', TEXTE_FERMER);\n  wrap.appendChild(fermer);\n\n  document.body.appendChild(wrap);\n  document.documentElement.style.overflow = 'hidden';\n\n  var termine = false;\n  var timers = [];\n  function attendre(ms, fn) { timers.push(setTimeout(fn, ms)); }\n\n  \/\/ \u00c9criture lettre par lettre\n  function ecrire(lettres, vitesse, fin) {\n    if (reduit) {\n      lettres.forEach(function (s) { s.classList.add('on'); });\n      fin();\n      return;\n    }\n    var i = 0;\n    function suivante() {\n      if (termine) return;\n      if (i >= lettres.length) { fin(); return; }\n      lettres[i].classList.add('on');\n      i = i + 1;\n      attendre(vitesse, suivante);\n    }\n    suivante();\n  }\n\n  \/\/ Touche Echap : ferme aussi l'intro\n  function surTouche(ev) {\n    if (ev.key === 'Escape') { sortir(); }\n  }\n  document.addEventListener('keydown', surTouche);\n\n  \/\/ Sortie : le cercle se referme vers le soleil, le fond s'efface, puis l'intro est retir\u00e9e\n  function sortir() {\n    if (termine) return;\n    termine = true;\n    timers.forEach(clearTimeout);\n    document.removeEventListener('keydown', surTouche);\n    wrap.classList.add('is-out');\n    setTimeout(function () {\n      wrap.remove();\n      document.documentElement.style.overflow = '';\n    }, SORTIE_IMAGE);\n  }\n\n  \/\/ S\u00e9quence : fond -> titre -> pause 0,5 s -> Bred.mg -> reste 1 s -> sortie\n  function entrer() {\n    if (termine) return;\n    wrap.classList.add('is-in');\n    attendre(ENTREE_IMAGE + DELAI_TITRE, function () {\n      ecrire(lettresTitre, VITESSE_TITRE, function () {\n        attendre(PAUSE_TITRE, function () {\n          ecrire(lettresUrl, VITESSE_URL, function () {\n            attendre(RESTE_FINAL, sortir);\n          });\n        });\n      });\n    });\n  }\n\n  \/\/ D\u00e9marre quand l'image est charg\u00e9e (ou apr\u00e8s 4 s maximum)\n  var demarre = false;\n  function demarrer() {\n    if (demarre) return;\n    demarre = true;\n    attendre(AVANT_ENTREE, entrer);\n  }\n  var im = new Image();\n  im.onload = demarrer;\n  im.onerror = sortir;                 \/\/ image introuvable : on affiche directement le site\n  im.src = IMAGE_FOND;\n  setTimeout(demarrer, 4000);\n\n  wrap.addEventListener('click', sortir);   \/\/ un clic n'importe o\u00f9 lance directement la sortie\n  fermer.addEventListener('click', function (ev) {\n    ev.stopPropagation();\n    sortir();\n  });\n})();\n<\/script>\n\n\n<section class=\"wp-block-bred-table-change has-cols-1 is-bg-accent-mg-30 alignfull\" data-bred-table-change>\n\t<div class=\"wp-block-bred-table-change__bleed\" aria-hidden=\"true\">\n\t\t<span class=\"wp-block-bred-table-change__decoration\">\n\t\t\t<svg viewBox=\"0 0 552 385\" width=\"267\" height=\"195\" fill=\"none\" preserveAspectRatio=\"none\" aria-hidden=\"true\" focusable=\"false\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t\t\t\t<path fill=\"currentColor\" d=\"M256.309 0.450203C257.68 0.325899 259.054 0.24579 260.43 0.20988C271.456 0.0123741 283.4 -0.25833 294.328 0.529852C307.038 1.44694 305.017 17.0209 304.962 25.7015L304.87 49.2843C304.879 74.2953 305.437 101.163 304.644 126.024C314.756 101.567 324.951 74.9071 334.699 50.1742L342.606 30.1014C344.036 26.4855 345.77 21.3831 347.708 18.1396C353.082 8.72427 365.764 13.9147 373.279 17.676C381.527 21.8025 396.543 23.9433 400.253 32.9968L400.492 33.5994C402.31 38.0389 393.282 57.9138 391.234 63.0628L375.429 102.851L364.412 130.611C362.318 135.871 359.716 143.189 356.934 147.852C363.116 141.964 371.895 131.793 378.058 125.187L418.599 82.3138C424.057 76.6004 429.256 70.6596 434.912 65.1308C443.432 56.2647 450.79 60.7065 458.167 68.2288C464.367 74.5535 472.698 81.2098 478.52 87.9338C481.542 91.4212 481.459 98.3822 478.534 101.948C471.393 110.65 462.711 118.996 455.044 127.245L424.624 159.562C416.938 167.793 406.72 179.083 398.702 186.68C405.922 182.652 414.996 178.658 422.567 175.096C436.388 168.537 450.25 162.065 464.15 155.678L488.245 144.352C498.099 139.684 512.266 130.045 519.273 144.432C522.784 151.616 526.078 159.873 529.828 166.87C540.222 186.258 528.606 188.843 513.142 195.98L492.512 205.646L422.437 238.318C423.923 238.066 425.418 237.859 426.917 237.698C450.255 235.245 479.563 234.315 503.298 232.973C510.988 232.476 518.678 231.935 526.359 231.352C538.1 230.51 549.979 228.48 550.643 245.281C551.063 255.995 552.249 266.863 551.953 277.524C551.82 282.433 547.109 286.758 542.455 287.534C503.805 289.605 464.381 293.073 425.764 294.686C426.534 294.837 427.304 295.008 428.07 295.2C435.364 297.037 444.193 300.163 451.51 302.557L494.011 316.539L521.746 325.484C527.679 327.4 539.488 329.992 542.367 335.769C546.556 344.176 538.843 356.063 536.827 364.525C535.812 368.775 533.948 374.414 532.089 378.383C529.427 384.009 523.268 385.85 517.673 384.193C511.154 382.443 504.751 380.165 498.348 378.038L465.945 367.43L381.154 339.687C367.766 335.323 353.816 330.484 340.396 326.391C347.57 316.442 352.386 307.138 355.278 295.148C360.307 274.221 356.791 252.158 345.512 233.818C333.675 214.558 315.674 202 293.77 196.759C293.249 196.577 290.44 195.951 289.881 195.868C268.568 192.685 248.017 196.638 230.32 208.582C212.292 220.633 199.802 239.34 195.6 260.584C190.708 286.348 196.862 305.522 211.18 326.474C210.861 326.594 210.54 326.709 210.218 326.82C171.047 340.3 130.175 353.002 90.694 365.948L51.6819 378.756C45.3424 380.828 38.7967 383.166 32.2819 384.764C27.331 385.979 22.2602 382.319 20.0565 378.033C16.6681 371.44 15.2495 362.334 12.5033 355.957C1.75217 330.991 14.1534 330.779 33.8449 324.37L65.5308 314.035L101.404 302.29C108.772 299.869 118.928 296.315 126.291 294.686C119.704 294.398 113.169 293.843 106.547 293.471C74.5952 291.663 42.586 289.61 10.6501 287.701C0.708205 287.106 -0.672995 276.716 0.233962 268.965C1.27424 260.075 0.85767 251.313 1.9104 242.268C2.63376 236.053 6.60111 231.333 13.258 230.671C25.095 230.94 37.1175 232.365 48.9647 233.004C67.7718 233.926 86.5702 235.003 105.359 236.236C112.238 236.731 122.781 237.123 129.199 238.335C120.529 233.485 106.316 227.394 97.0196 223.064L39.5316 196.21C22.632 188.368 11.6816 186.116 23.127 165.429C26.1252 158.975 29.1154 152.457 32.1316 146.018C39.5367 130.207 50.9705 138.34 62.7393 143.858L87.0459 155.279L127.327 174.113C135.85 178.099 145.686 182.444 153.848 186.915C152.997 186.188 152.173 185.43 151.378 184.643C135.068 168.379 117.348 148.615 101.312 131.622L83.263 112.568C77.0619 105.966 66.5447 97.5835 73.7081 87.8679C76.3233 84.3211 81.0833 80.1892 84.5607 77.2556C91.3952 71.4906 98.4705 60.4326 108.118 60.3C114.405 60.3483 120.808 68.7347 124.772 72.9698L140.663 89.8798C158.962 109.089 177.133 128.42 195.174 147.87C192.363 142.823 188.716 132.84 186.431 127.096L172.02 90.8245L158.943 57.8917C156.464 51.7188 153.813 45.3052 151.636 39.0099C151.004 37.1821 151.31 35.4695 151.75 33.685C152.589 30.286 155.779 27.1034 158.97 25.6007C164.179 23.1482 170.251 21.0857 175.696 18.9702C180.972 17.0016 185.887 14.2563 191.406 13.0082C196.211 11.9212 202.187 13.7172 204.471 18.3206C208.701 26.8455 211.907 36.1923 215.387 45.0911L235.147 94.5744C238.252 102.491 243.756 117.937 247.336 125.081L247.599 125.601C246.99 112.501 246.278 13.1081 248.167 8.22521C249.745 4.14526 252.492 2.1564 256.309 0.450203Z\"\/>\n\t\t\t<\/svg>\n\t\t<\/span>\n\t<\/div>\n\t\t\t<header class=\"wp-block-bred-table-change__header\">\n\t\t\t\t\t\t\t<h2 class=\"wp-block-bred-table-change__title\">Taux de change du jour<\/h2>\n\t\t\t\t\t\t\t\t\t\t<p class=\"wp-block-bred-table-change__subtitle\">Consultez nos taux actualis\u00e9s quotidiennement.<\/p>\n\t\t\t\t\t<\/header>\n\t\n\t<div class=\"wp-block-bred-table-change__groups\">\n\t\t\t\t\t<div class=\"wp-block-bred-table-change__group\" data-bred-fx-code=\"EUR\">\n\t\t\t\t<div class=\"wp-block-bred-table-change__row wp-block-bred-table-change__row--buy\">\n\t\t\t\t\t<span class=\"wp-block-bred-table-change__label\">Achat<\/span>\n\t\t\t\t\t<span class=\"wp-block-bred-table-change__code\">EUR<\/span>\n\t\t\t\t\t<span class=\"wp-block-bred-table-change__value wp-block-bred-table-change__value--buy\" data-bred-fx=\"buy\">4\u00a0771,62<\/span>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"wp-block-bred-table-change__row wp-block-bred-table-change__row--sell\">\n\t\t\t\t\t<span class=\"wp-block-bred-table-change__label\">Vente<\/span>\n\t\t\t\t\t<span class=\"wp-block-bred-table-change__code\">EUR<\/span>\n\t\t\t\t\t<span class=\"wp-block-bred-table-change__value wp-block-bred-table-change__value--sell\" data-bred-fx=\"sell\">5\u00a0273,90<\/span>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t\t\t<div class=\"wp-block-bred-table-change__group\" data-bred-fx-code=\"USD\">\n\t\t\t\t<div class=\"wp-block-bred-table-change__row wp-block-bred-table-change__row--buy\">\n\t\t\t\t\t<span class=\"wp-block-bred-table-change__label\">Achat<\/span>\n\t\t\t\t\t<span class=\"wp-block-bred-table-change__code\">USD<\/span>\n\t\t\t\t\t<span class=\"wp-block-bred-table-change__value wp-block-bred-table-change__value--buy\" data-bred-fx=\"buy\">4\u00a0344,99<\/span>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"wp-block-bred-table-change__row wp-block-bred-table-change__row--sell\">\n\t\t\t\t\t<span class=\"wp-block-bred-table-change__label\">Vente<\/span>\n\t\t\t\t\t<span class=\"wp-block-bred-table-change__code\">USD<\/span>\n\t\t\t\t\t<span class=\"wp-block-bred-table-change__value wp-block-bred-table-change__value--sell\" data-bred-fx=\"sell\">4\u00a0802,35<\/span>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t\t\t<div class=\"wp-block-bred-table-change__group\" data-bred-fx-code=\"CHF\">\n\t\t\t\t<div class=\"wp-block-bred-table-change__row wp-block-bred-table-change__row--buy\">\n\t\t\t\t\t<span class=\"wp-block-bred-table-change__label\">Achat<\/span>\n\t\t\t\t\t<span class=\"wp-block-bred-table-change__code\">CHF<\/span>\n\t\t\t\t\t<span class=\"wp-block-bred-table-change__value wp-block-bred-table-change__value--buy\" data-bred-fx=\"buy\">5\u00a0222,03<\/span>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"wp-block-bred-table-change__row wp-block-bred-table-change__row--sell\">\n\t\t\t\t\t<span class=\"wp-block-bred-table-change__label\">Vente<\/span>\n\t\t\t\t\t<span class=\"wp-block-bred-table-change__code\">CHF<\/span>\n\t\t\t\t\t<span class=\"wp-block-bred-table-change__value wp-block-bred-table-change__value--sell\" data-bred-fx=\"sell\">5\u00a0771,71<\/span>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t<\/div>\n\n\t\t\t<p class=\"wp-block-bred-table-change__updated\">Derni\u00e8re mise \u00e0 jour : <span data-bred-fx-updated>13 November 2026<\/span><\/p>\n\t<\/section>\n\n\n\n<div class=\"wp-block-bred-spacer is-size-small\" aria-hidden=\"true\"><\/div>\n\n\n\n<style>\n\/* =====================================================\n   RUBAN CONTINU \u2014 Section Banni\u00e8re du bas\n   Classe CSS additionnelle \u00e0 mettre sur le bloc : bred-notification-animated-foot\n   ===================================================== *\/\n\n.bred-notification-animated-foot.bred-m-on {\n  position: relative !important;\n  overflow: hidden !important;\n  box-sizing: border-box !important;\n}\n\n\/* Conteneurs interm\u00e9diaires : pleine largeur *\/\n.bred-m-on .bred-m-fill {\n  width: 100% !important;\n  max-width: 100% !important;\n  min-width: 0 !important;\n  flex: 1 1 0 !important;\n  box-sizing: border-box !important;\n  overflow: hidden !important;\n}\n\n\/* Zone visible du ruban *\/\n.bred-m-on.bred-m-inner,\n.bred-m-on .bred-m-inner {\n  display: flex !important;\n  align-items: center !important;\n  width: 100% !important;\n  min-width: 0 !important;\n  max-width: 100% !important;\n  margin: 0 !important;\n  padding: 0 var(--bred-m-droite, 0px) 0 0 !important;\n  overflow: hidden !important;\n  white-space: nowrap !important;\n  text-decoration: none !important;\n  box-sizing: border-box !important;\n}\n\n\/* Piste anim\u00e9e (l'animation est pos\u00e9e par le script) *\/\n.bred-m-on .bred-m-track {\n  display: flex !important;\n  flex-flow: row nowrap !important;\n  align-items: center !important;\n  width: max-content !important;\n  max-width: none !important;\n  min-width: 0 !important;\n  margin: 0 !important;\n  padding: 0 !important;\n  white-space: nowrap !important;\n  will-change: transform;\n}\n\n\/* Groupe r\u00e9p\u00e9t\u00e9 *\/\n.bred-m-on .bred-m-group {\n  display: flex !important;\n  flex: 0 0 auto !important;\n  flex-flow: row nowrap !important;\n  align-items: center !important;\n  width: max-content !important;\n  max-width: none !important;\n  margin: 0 !important;\n  padding: 0 !important;\n  white-space: nowrap !important;\n}\n\n\/* Une annonce compl\u00e8te : badge + texte + fl\u00e8che *\/\n.bred-m-on .bred-m-copy {\n  display: inline-flex !important;\n  flex: 0 0 auto !important;\n  flex-flow: row nowrap !important;\n  align-items: center !important;\n  gap: 10px !important;\n  width: max-content !important;\n  max-width: none !important;\n  margin: 0 !important;\n  white-space: nowrap !important;\n  box-sizing: border-box !important;\n}\n.bred-m-on .bred-m-copy .bred-m-part {\n  flex: 0 0 auto !important;\n  width: auto !important;\n  max-width: none !important;\n  white-space: nowrap !important;\n}\n\n@keyframes bred-m-defile {\n  from { transform: translate3d(0, 0, 0); }\n  to   { transform: translate3d(calc(-1 * var(--bred-m-distance, 0px)), 0, 0); }\n}\n\n\/* Bouton de fermeture : fixe \u00e0 droite (s'il est activ\u00e9) *\/\n.bred-m-on .bred-m-close {\n  position: absolute !important;\n  top: 50% !important;\n  right: 0 !important;\n  left: auto !important;\n  bottom: auto !important;\n  transform: translateY(-50%) !important;\n  z-index: 100 !important;\n  cursor: pointer !important;\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .bred-m-on .bred-m-track {\n    animation: none !important;\n    transform: none !important;\n  }\n}\n<\/style>\n\n<script>\n(function () {\n  'use strict';\n\n  \/\/ Uniquement les blocs portant la classe CSS additionnelle \"bred-notification-animated-foot\"\n  var SELECTEUR = '.bred-notification-animated-foot';\n  var VITESSE = 55;            \/\/ pixels par seconde\n  var ESPACE_BUREAU = 64;      \/\/ espace entre deux annonces (px)\n  var ESPACE_MOBILE = 48;\n  var ZONE_FERMETURE = 48;     \/\/ place r\u00e9serv\u00e9e au bouton X (si pr\u00e9sent)\n  var DEBUG = true;            \/\/ infos dans la console (F12) ; mets false ensuite\n  var PLEINE_LARGEUR = true;\n\n  function espace() {\n    return window.innerWidth <= 768 ? ESPACE_MOBILE : ESPACE_BUREAU;\n  }\n\n  \/\/ Quantit\u00e9 de texte propre \u00e0 l'\u00e9l\u00e9ment (hors descendants)\n  function texteDirect(el) {\n    var total = 0;\n    Array.from(el.childNodes).forEach(function (n) {\n      if (n.nodeType === 3) { total = total + n.data.trim().length; }\n    });\n    return total;\n  }\n\n  \/\/ Le message = l'\u00e9l\u00e9ment qui porte le plus de texte\n  function trouverTexte(banner, close) {\n    var meilleur = null;\n    var max = 0;\n    banner.querySelectorAll('*').forEach(function (el) {\n      if (close) {\n        if (el === close) return;\n        if (close.contains(el)) return;\n      }\n      var n = texteDirect(el);\n      if (n > max) { max = n; meilleur = el; }\n    });\n    return meilleur;\n  }\n\n  \/\/ Conteneur de la rang\u00e9e : premier anc\u00eatre du texte qui regroupe plusieurs \u00e9l\u00e9ments (badge, texte, fl\u00e8che)\n  function trouverConteneur(texte, banner, close) {\n    var a = texte.parentElement;\n    while (a) {\n      var enfants = Array.from(a.children).filter(function (c) {\n        if (c === close) return false;\n        if (close) { if (c.contains(close)) return false; }\n        return true;\n      });\n      if (enfants.length >= 2) return a;\n      if (a === banner) return a;\n      a = a.parentElement;\n    }\n    return banner;\n  }\n\n  \/\/ \u00c9tire le bandeau sur toute la largeur de l'\u00e9cran, m\u00eame s'il est dans un conteneur plus \u00e9troit\n  function elargir(banner) {\n    if (!PLEINE_LARGEUR) return;\n    banner.style.setProperty('position', 'relative', 'important');\n    banner.style.setProperty('left', '0px', 'important');\n    banner.style.setProperty('width', document.documentElement.clientWidth + 'px', 'important');\n    banner.style.setProperty('max-width', 'none', 'important');\n    banner.style.setProperty('box-sizing', 'border-box', 'important');\n    var decalage = banner.getBoundingClientRect().left;\n    banner.style.setProperty('left', (-decalage) + 'px', 'important');\n  }\n\n  function initBanner(banner) {\n    if (!banner) return;\n    if (banner.dataset.bredMReady === '1') return;\n\n    var close = banner.querySelector(\n      '[class*=\"close\"], [class*=\"dismiss\"], button[aria-label*=\"erm\"], button[aria-label*=\"lose\"]'\n    );\n    var texte = trouverTexte(banner, close);\n    if (!texte) return;\n\n    var inner = trouverConteneur(texte, banner, close);\n    var parts = Array.from(inner.children).filter(function (c) {\n      if (c === close) return false;\n      if (close) { if (c.contains(close)) return false; }\n      return true;\n    });\n    if (!parts.length) return;\n\n    banner.dataset.bredMReady = '1';\n    if (DEBUG) {\n      console.log('[RubanFoot] banniere prete :', {\n        texte: texte.textContent.trim().slice(0, 40),\n        conteneur: inner.tagName + '.' + inner.className,\n        elements: parts.length,\n        fermeture: !!close\n      });\n    }\n\n    banner.classList.add('bred-m-on');\n    elargir(banner);\n    window.addEventListener('resize', function () { elargir(banner); });\n    inner.classList.add('bred-m-inner');\n    if (close) {\n      close.classList.add('bred-m-close');\n      banner.style.setProperty('--bred-m-droite', ZONE_FERMETURE + 'px');\n    }\n    \/\/ Conteneurs entre le bandeau et la rang\u00e9e : pleine largeur\n    if (inner !== banner) {\n      var p = inner.parentElement;\n      while (p) {\n        if (p === banner) break;\n        p.classList.add('bred-m-fill');\n        p = p.parentElement;\n      }\n    }\n\n    \/\/ Mod\u00e8les d'annonce (clones des \u00e9l\u00e9ments d'origine), puis on retire les originaux\n    var modeles = parts.map(function (el) { return el.cloneNode(true); });\n    parts.forEach(function (el) { el.remove(); });\n\n    function creerCopie(premiere) {\n      var copie = document.createElement('span');\n      copie.className = 'bred-m-copy';\n      copie.style.paddingRight = espace() + 'px';\n      if (!premiere) { copie.setAttribute('aria-hidden', 'true'); }\n      modeles.forEach(function (m) {\n        var c = m.cloneNode(true);\n        c.classList.add('bred-m-part');\n        copie.appendChild(c);\n      });\n      return copie;\n    }\n\n    var piste = document.createElement('span');\n    piste.className = 'bred-m-track';\n    var groupe = document.createElement('span');\n    groupe.className = 'bred-m-group';\n    groupe.appendChild(creerCopie(true));\n    piste.appendChild(groupe);\n    inner.appendChild(piste);\n\n    var boucle = null;\n    var derniere = 0;\n    var raf = null;\n\n    function reconstruire() {\n      if (!banner.isConnected) return;\n      var largeurVue = inner.getBoundingClientRect().width;\n      if (largeurVue <= 0) return;\n\n      \/\/ Repart d'une seule annonce pour mesurer\n      groupe.innerHTML = '';\n      groupe.appendChild(creerCopie(true));\n      var largeurCopie = groupe.firstElementChild.getBoundingClientRect().width;\n      if (largeurCopie <= 0) return;\n\n      \/\/ Assez d'annonces pour couvrir la zone visible\n      var besoin = Math.ceil(largeurVue \/ largeurCopie) + 2;\n      while (groupe.children.length < besoin) {\n        groupe.appendChild(creerCopie(false));\n      }\n      var largeurGroupe = groupe.getBoundingClientRect().width;\n      if (largeurGroupe <= 0) return;\n\n      \/\/ Deuxi\u00e8me s\u00e9quence identique : la boucle est parfaite\n      if (boucle) boucle.remove();\n      boucle = groupe.cloneNode(true);\n      boucle.setAttribute('aria-hidden', 'true');\n      boucle.querySelectorAll('a, button, input, select, textarea, [tabindex]').forEach(function (el) {\n        el.setAttribute('tabindex', '-1');\n      });\n      piste.appendChild(boucle);\n\n      piste.style.setProperty('--bred-m-distance', largeurGroupe + 'px');\n      piste.style.animation = 'none';\n      void piste.offsetWidth;\n      piste.style.animation = 'bred-m-defile ' + (largeurGroupe \/ VITESSE) + 's linear infinite';\n\n      derniere = largeurVue;\n    }\n\n    reconstruire();\n    if (document.fonts) {\n      if (document.fonts.ready) { document.fonts.ready.then(reconstruire); }\n    }\n    window.addEventListener('load', reconstruire);\n\n    if ('ResizeObserver' in window) {\n      var ro = new ResizeObserver(function () {\n        if (raf) cancelAnimationFrame(raf);\n        raf = requestAnimationFrame(function () {\n          if (Math.abs(inner.getBoundingClientRect().width - derniere) > 1) { reconstruire(); }\n        });\n      });\n      ro.observe(inner);\n    }\n  }\n\n  function scanner() {\n    document.querySelectorAll(SELECTEUR).forEach(initBanner);\n  }\n\n  function demarrer() {\n    scanner();\n    if (document.body) {\n      new MutationObserver(scanner).observe(document.body, { childList: true, subtree: true });\n    }\n  }\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', demarrer, { once: true });\n  } else {\n    demarrer();\n  }\n})();\n<\/script>\n\n\n\n<aside class=\"wp-block-bred-section-banner is-variant-jaune is-size-lg has-icon has-url bred-notification-animated-foot\" role=\"status\"><a href=\"https:\/\/bred.mg\/credit-immobilier-residence-principale-2\/\" class=\"wp-block-bred-section-banner__inner\"><span class=\"wp-block-bred-section-banner__badge\" aria-hidden=\"true\"><i class=\"ph ph-gift\" aria-hidden=\"true\"><\/i><\/span><span class=\"wp-block-bred-section-banner__message\">De locataire \u00e0 propri\u00e9taire, il n\u2019y a qu\u2019un pr\u00eat. D\u00e9couvrez notre Cr\u00e9dit Immobilier R\u00e9sidence Principale.\u00a0<\/span><span class=\"wp-block-bred-section-banner__caret\" aria-hidden=\"true\"><i class=\"ph ph-caret-right\" aria-hidden=\"true\"><\/i><\/span><\/a><\/aside>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":4,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_relevanssi_hide_post":"","_relevanssi_hide_content":"","_relevanssi_pin_for_all":"","_relevanssi_pin_keywords":"","_relevanssi_unpin_keywords":"","_relevanssi_related_keywords":"","_relevanssi_related_include_ids":"","_relevanssi_related_exclude_ids":"","_relevanssi_related_no_append":"","_relevanssi_related_not_related":"","_relevanssi_related_posts":"37,33,32,34,31,40","_relevanssi_noindex_reason":"","bred_audience":"particuliers","footnotes":""},"bred_page_cat":[44],"class_list":["post-222","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.8 (Yoast SEO v28.8) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Accueil Particulier - BRED Madagasikara<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/bred.mg\/mg\/\" \/>\n<meta property=\"og:locale\" content=\"mg_MG\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Accueil Particulier\" \/>\n<meta property=\"og:url\" content=\"https:\/\/bred.mg\/mg\/\" \/>\n<meta property=\"og:site_name\" content=\"BRED Madagasikara\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/bred.madagasikara.bp\" \/>\n<meta property=\"article:modified_time\" content=\"2026-11-12T07:17:21+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/bred.mg\/wp-content\/uploads\/2026\/09\/Farany-sisa.gif\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/bred.mg\\\/\",\"url\":\"https:\\\/\\\/bred.mg\\\/\",\"name\":\"Accueil Particulier - BRED Madagasikara\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bred.mg\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/bred.mg\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/bred.mg\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/bred.mg\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/Farany-sisa.gif\",\"datePublished\":\"2026-06-18T12:35:36+00:00\",\"dateModified\":\"2026-11-12T07:17:21+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/bred.mg\\\/#breadcrumb\"},\"inLanguage\":\"mg\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/bred.mg\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"mg\",\"@id\":\"https:\\\/\\\/bred.mg\\\/#primaryimage\",\"url\":\"https:\\\/\\\/bred.mg\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/Farany-sisa.gif\",\"contentUrl\":\"https:\\\/\\\/bred.mg\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/Farany-sisa.gif\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/bred.mg\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/bred.mg\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Accueil Particulier\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/bred.mg\\\/#website\",\"url\":\"https:\\\/\\\/bred.mg\\\/\",\"name\":\"BRED Madagasikara\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/bred.mg\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/bred.mg\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"mg\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/bred.mg\\\/#organization\",\"name\":\"BRED Madagasikara\",\"url\":\"https:\\\/\\\/bred.mg\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"mg\",\"@id\":\"https:\\\/\\\/bred.mg\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/bred.mg\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/Illustration-1.webp\",\"contentUrl\":\"https:\\\/\\\/bred.mg\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/Illustration-1.webp\",\"width\":544,\"height\":150,\"caption\":\"BRED Madagasikara\"},\"image\":{\"@id\":\"https:\\\/\\\/bred.mg\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/bred.madagasikara.bp\",\"http:\\\/\\\/www.instagram.com\\\/bred_madagasikara_bp\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/bred-madagasikara-bp\"]}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Accueil Particulier - BRED Madagasikara","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/bred.mg\/mg\/","og_locale":"mg_MG","og_type":"article","og_title":"Accueil Particulier","og_url":"https:\/\/bred.mg\/mg\/","og_site_name":"BRED Madagasikara","article_publisher":"https:\/\/www.facebook.com\/bred.madagasikara.bp","article_modified_time":"2026-11-12T07:17:21+00:00","og_image":[{"url":"https:\/\/bred.mg\/wp-content\/uploads\/2026\/09\/Farany-sisa.gif","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/bred.mg\/","url":"https:\/\/bred.mg\/","name":"Accueil Particulier - BRED Madagasikara","isPartOf":{"@id":"https:\/\/bred.mg\/#website"},"primaryImageOfPage":{"@id":"https:\/\/bred.mg\/#primaryimage"},"image":{"@id":"https:\/\/bred.mg\/#primaryimage"},"thumbnailUrl":"https:\/\/bred.mg\/wp-content\/uploads\/2026\/09\/Farany-sisa.gif","datePublished":"2026-06-18T12:35:36+00:00","dateModified":"2026-11-12T07:17:21+00:00","breadcrumb":{"@id":"https:\/\/bred.mg\/#breadcrumb"},"inLanguage":"mg","potentialAction":[{"@type":"ReadAction","target":["https:\/\/bred.mg\/"]}]},{"@type":"ImageObject","inLanguage":"mg","@id":"https:\/\/bred.mg\/#primaryimage","url":"https:\/\/bred.mg\/wp-content\/uploads\/2026\/09\/Farany-sisa.gif","contentUrl":"https:\/\/bred.mg\/wp-content\/uploads\/2026\/09\/Farany-sisa.gif"},{"@type":"BreadcrumbList","@id":"https:\/\/bred.mg\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/bred.mg\/"},{"@type":"ListItem","position":2,"name":"Accueil Particulier"}]},{"@type":"WebSite","@id":"https:\/\/bred.mg\/#website","url":"https:\/\/bred.mg\/","name":"BRED Madagasikara","description":"","publisher":{"@id":"https:\/\/bred.mg\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/bred.mg\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"mg"},{"@type":"Organization","@id":"https:\/\/bred.mg\/#organization","name":"BRED Madagasikara","url":"https:\/\/bred.mg\/","logo":{"@type":"ImageObject","inLanguage":"mg","@id":"https:\/\/bred.mg\/#\/schema\/logo\/image\/","url":"https:\/\/bred.mg\/wp-content\/uploads\/2026\/09\/Illustration-1.webp","contentUrl":"https:\/\/bred.mg\/wp-content\/uploads\/2026\/09\/Illustration-1.webp","width":544,"height":150,"caption":"BRED Madagasikara"},"image":{"@id":"https:\/\/bred.mg\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/bred.madagasikara.bp","http:\/\/www.instagram.com\/bred_madagasikara_bp","https:\/\/www.linkedin.com\/company\/bred-madagasikara-bp"]}]}},"_links":{"self":[{"href":"https:\/\/bred.mg\/mg\/wp-json\/wp\/v2\/pages\/222","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bred.mg\/mg\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/bred.mg\/mg\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/bred.mg\/mg\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/bred.mg\/mg\/wp-json\/wp\/v2\/comments?post=222"}],"version-history":[{"count":157,"href":"https:\/\/bred.mg\/mg\/wp-json\/wp\/v2\/pages\/222\/revisions"}],"predecessor-version":[{"id":7447,"href":"https:\/\/bred.mg\/mg\/wp-json\/wp\/v2\/pages\/222\/revisions\/7447"}],"wp:attachment":[{"href":"https:\/\/bred.mg\/mg\/wp-json\/wp\/v2\/media?parent=222"}],"wp:term":[{"taxonomy":"bred_page_cat","embeddable":true,"href":"https:\/\/bred.mg\/mg\/wp-json\/wp\/v2\/bred_page_cat?post=222"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}