{"id":552,"date":"2026-08-14T11:33:56","date_gmt":"2026-08-14T11:33:56","guid":{"rendered":"https:\/\/bred.mg\/?page_id=552"},"modified":"2026-10-26T07:09:19","modified_gmt":"2026-10-26T07:09:19","slug":"banque-experte-et-certifiee","status":"publish","type":"page","link":"https:\/\/bred.mg\/mg\/banque-experte-et-certifiee\/","title":{"rendered":"Banque experte et certifi\u00e9e"},"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 Magadasikara Banque Populaire, <em>l\u2019expertise bancaire au service de vos projets<\/em><\/h1><p class=\"wp-block-bred-hero-image__body\">Nous r\u00e9pondons \u00e0 des exigences \u00e9lev\u00e9es en mati\u00e8re de qualit\u00e9 de service et de conformit\u00e9. Nos collaborateurs sont form\u00e9s et qualifi\u00e9s, notre expertise reconnue dans les m\u00e9tiers de la banque, du financement, de l\u2019\u00e9pargne et des op\u00e9rations internationales.&nbsp;&nbsp;<\/p><div class=\"wp-block-bred-hero-image__ctas\"><a class=\"wp-block-bred-hero-image__cta is-primary\" href=\"https:\/\/bred.mg\/prise-de-contact\/\"><span class=\"wp-block-bred-hero-image__cta-label\">Rencontrer un Conseiller<\/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\/collaboratrice-scaled.jpg\" alt=\"\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\"\/><\/div><\/div>\n\n\n\n<style>\n\/* ===== \u00c9tapes : apparition une par une, fondu + mont\u00e9e depuis le bas ===== *\/\n@keyframes etapeUp {\n  from { opacity: 0; transform: translateY(24px); }\n  to   { opacity: 1; transform: translateY(0); }\n}\n\n.anim-etapes {\n  --duree: .55s;    \/* dur\u00e9e d'apparition de chaque \u00e9tape *\/\n  --pas: .55s;      \/* d\u00e9lai entre le d\u00e9but d'une \u00e9tape et le d\u00e9but de la suivante *\/\n}\n\n\/* Num\u00e9ro de chaque \u00e9tape (0, 1, 2, 3...) *\/\n.anim-etapes .wp-block-bred-section-pedagogy__step:nth-child(1) { --p: 0; }\n.anim-etapes .wp-block-bred-section-pedagogy__step:nth-child(2) { --p: 1; }\n.anim-etapes .wp-block-bred-section-pedagogy__step:nth-child(3) { --p: 2; }\n.anim-etapes .wp-block-bred-section-pedagogy__step:nth-child(4) { --p: 3; }\n.anim-etapes .wp-block-bred-section-pedagogy__step:nth-child(5) { --p: 4; }\n.anim-etapes .wp-block-bred-section-pedagogy__step:nth-child(6) { --p: 5; }\n\n\/* \u00c9tapes masqu\u00e9es tant que la section n'est pas \u00e0 l'\u00e9cran (seulement si le script est actif) *\/\n.anim-etapes.anim-ready:not(.is-visible) .wp-block-bred-section-pedagogy__step {\n  opacity: 0 !important;\n}\n\n\/* L'animation se rejoue chaque fois que .is-visible est (r\u00e9)ajout\u00e9e *\/\n.anim-etapes.is-visible .wp-block-bred-section-pedagogy__step {\n  animation: etapeUp var(--duree) cubic-bezier(.22,.8,.3,1) backwards !important;\n  animation-delay: calc(var(--p, 0) * var(--pas)) !important;\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .anim-etapes .wp-block-bred-section-pedagogy__step {\n    animation: none !important;\n    opacity: 1 !important;\n  }\n}\n<\/style>\n\n<script>\n(function () {\n  var DEBUG = true;   \/\/ infos dans la console (F12) ; mets false ensuite\n\n  \/\/ Vrai tant que la couverture \"Notre site \u00e9volue ...\" est affich\u00e9e et n'a pas commenc\u00e9 \u00e0 glisser\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('.anim-etapes');\n    if (DEBUG) console.log('[Etapes] sections trouvees :', blocs.length);\n\n    blocs.forEach(function (block) {\n      if (block.dataset.etapesInit) return;\n      block.dataset.etapesInit = '1';\n\n      var etapes = block.querySelectorAll('.wp-block-bred-section-pedagogy__step');\n      if (DEBUG) console.log('[Etapes] etapes trouvees :', etapes.length);\n      if (!etapes.length) return;\n\n      if (!('IntersectionObserver' in window)) { block.classList.add('is-visible'); return; }\n      block.classList.add('anim-ready');\n\n      var visible = false;\n      var attente = null;\n\n      \/\/ D\u00e9clenchement : 40 % de la section visible (moins si elle est plus haute que l'\u00e9cran)\n      var seuil = Math.min(0.4, (window.innerHeight \/ Math.max(block.offsetHeight, 1)) * 0.9);\n\n      function arreterAttente() {\n        if (attente) { clearInterval(attente); attente = null; }\n      }\n\n      function montrer() {\n        if (visible) {\n          block.classList.add('is-visible');          \/\/ d\u00e9marre l'animation\n          if (DEBUG) console.log('[Etapes] animation lancee');\n        }\n      }\n\n      function essayer() {\n        arreterAttente();\n        if (!couvertureEnCours()) { montrer(); return; }\n        attente = setInterval(function () {\n          if (!couvertureEnCours()) { arreterAttente(); montrer(); }\n        }, 100);\n      }\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            if (!visible) { visible = true; essayer(); }\n          } else if (e.intersectionRatio === 0) {\n            visible = false;                           \/\/ totalement sortie : on r\u00e9arme\n            arreterAttente();\n            block.classList.remove('is-visible');\n          }\n        });\n      }, { threshold: [0, seuil] });\n      io.observe(block);\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-pedagogy is-bg-neutral has-cols-4 is-badge-filled is-badge-shape-square has-header anim-etapes\"><header class=\"wp-block-bred-section-pedagogy__header\"><h2 class=\"wp-block-bred-section-pedagogy__title\">Une expertise reconnue et\u00a0certifi\u00e9e<\/h2><p class=\"wp-block-bred-section-pedagogy__body\">Plus qu\u2019un accompagnement de gestion de banque au quotidien, BRED Madagasikara Banque Populaire met \u00e0 la disposition de chaque client, des experts et des solutions qui r\u00e9pondent \u00e0 leurs besoins.\u00a0<\/p><\/header><ol class=\"wp-block-bred-section-pedagogy__steps\"><li class=\"wp-block-bred-section-pedagogy__step\"><span class=\"wp-block-bred-section-pedagogy__badge\" aria-hidden=\"true\">1<\/span><h3 class=\"wp-block-bred-section-pedagogy__step-title\">La Maison des Entrepreneurs\u00a0<\/h3><p class=\"wp-block-bred-section-pedagogy__step-description\">Un espace d\u00e9di\u00e9 aux professionnels et dirigeants, con\u00e7u pour les accompagner \u00e0 chaque \u00e9tape du d\u00e9veloppement de leur entreprise.<\/p><\/li><li class=\"wp-block-bred-section-pedagogy__step\"><span class=\"wp-block-bred-section-pedagogy__badge\" aria-hidden=\"true\">2<\/span><h3 class=\"wp-block-bred-section-pedagogy__step-title\">L\u2019Expertise Cr\u00e9dit Immobilier\u00a0<\/h3><p class=\"wp-block-bred-section-pedagogy__step-description\">Un accompagnement sp\u00e9cialis\u00e9 pour les particuliers et les professionnels dans le financement de leurs projets immobiliers.<\/p><\/li><li class=\"wp-block-bred-section-pedagogy__step\"><span class=\"wp-block-bred-section-pedagogy__badge\" aria-hidden=\"true\">3<\/span><h3 class=\"wp-block-bred-section-pedagogy__step-title\">Le leasing<\/h3><p class=\"wp-block-bred-section-pedagogy__step-description\">Une solution de financement permettant aux clients d\u2019acqu\u00e9rir des \u00e9quipements ou des v\u00e9hicules en location, tout en pr\u00e9servant leur tr\u00e9sorerie et leur capacit\u00e9 d\u2019\u00e9pargne.<\/p><\/li><li class=\"wp-block-bred-section-pedagogy__step\"><span class=\"wp-block-bred-section-pedagogy__badge\" aria-hidden=\"true\">4<\/span><h3 class=\"wp-block-bred-section-pedagogy__step-title\">La Salle de March\u00e9<\/h3><p class=\"wp-block-bred-section-pedagogy__step-description\">Une \u00e9quipe sp\u00e9cialis\u00e9e accompagne les clients dans leurs op\u00e9rations de change, leurs transferts internationaux et la gestion de leurs risques de change.<\/p><\/li><\/ol><\/section>\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<section class=\"wp-block-bred-section-text is-align-center is-width-wide anim-cta has-custom-css wp-custom-css-f0dd9abe\"><div class=\"wp-block-bred-section-text__inner\"><h2 class=\"wp-block-bred-section-text__title\">Des \u00e9quipes form\u00e9es \u00e0 votre service<\/h2><p class=\"wp-block-bred-section-text__body\">Tous nos collaborateurs sont form\u00e9s aux m\u00e9tiers de la banque, aux exigences de qualit\u00e9 et aux savoir-faire port\u00e9s par BRED Madagasikara Banque Populaire.<\/p><div class=\"wp-block-bred-section-text__extra\">\n<p class=\"wp-block-paragraph\"><\/p>\n<\/div><\/div><\/section>\n\n\n\n<section class=\"wp-block-bred-section-info is-layout-horizontal has-cols-3 is-bg-accent-mg is-header-top-center has-header anim-infos has-custom-css wp-custom-css-3fc44e64\"><header class=\"wp-block-bred-section-info__header\"><h2 class=\"wp-block-bred-section-info__title\">La formation continue de nos conseillers<\/h2><p class=\"wp-block-bred-section-info__body\">Gr\u00e2ce \u00e0 un programme de formation continue, nos conseillers renforcent leurs comp\u00e9tences techniques, commerciales et relationnelles afin d\u2019offrir un accompagnement expert, personnalis\u00e9 et adapt\u00e9 aux besoins de chacun. Parmi les cursus propos\u00e9s\u202f:\u00a0<\/p><\/header><div class=\"wp-block-bred-section-info__grid\"><article class=\"wp-block-bred-section-info__item\"><span class=\"wp-block-bred-section-info__icon\" aria-hidden=\"true\"><i class=\"ph ph-money-wavy\" aria-hidden=\"true\"><\/i><\/span><div class=\"wp-block-bred-section-info__content\"><h3 class=\"wp-block-bred-section-info__item-title\">Les produits bancaires<\/h3><p class=\"wp-block-bred-section-info__item-description\">Une formation pour ma\u00eetriser les caract\u00e9ristiques, avantages et conditions des produits et services bancaires, afin de proposer des solutions adapt\u00e9es \u00e0 vos besoins.<\/p><\/div><\/article><article class=\"wp-block-bred-section-info__item\"><span class=\"wp-block-bred-section-info__icon\" aria-hidden=\"true\"><i class=\"ph ph-user-circle-check\" aria-hidden=\"true\"><\/i><\/span><div class=\"wp-block-bred-section-info__content\"><h3 class=\"wp-block-bred-section-info__item-title\">L\u2019exp\u00e9rience client\u00a0<\/h3><p class=\"wp-block-bred-section-info__item-description\">Un cursus d\u00e9di\u00e9 \u00e0 la qualit\u00e9 de service et \u00e0 la satisfaction client, pour garantir des \u00e9changes fluides, r\u00e9actifs et personnalis\u00e9s.<\/p><\/div><\/article><article class=\"wp-block-bred-section-info__item\"><span class=\"wp-block-bred-section-info__icon\" aria-hidden=\"true\"><i class=\"ph ph-chat-circle-dots\" aria-hidden=\"true\"><\/i><\/span><div class=\"wp-block-bred-section-info__content\"><h3 class=\"wp-block-bred-section-info__item-title\">La posture commerciale\u00a0<\/h3><p class=\"wp-block-bred-section-info__item-description\">Une formation pour adopter une attitude professionnelle, \u00e0 l\u2019\u00e9coute et orient\u00e9e conseil, afin de construire une relation de confiance durable.<\/p><\/div><\/article><article class=\"wp-block-bred-section-info__item\"><span class=\"wp-block-bred-section-info__icon\" aria-hidden=\"true\"><i class=\"ph ph-chart-line-up\" aria-hidden=\"true\"><\/i><\/span><div class=\"wp-block-bred-section-info__content\"><h3 class=\"wp-block-bred-section-info__item-title\">Les techniques de vente\u00a0<\/h3><p class=\"wp-block-bred-section-info__item-description\">Un cursus pour mieux identifier les besoins clients et proposer des solutions pertinentes, en ad\u00e9quation avec leurs attentes.<\/p><\/div><\/article><article class=\"wp-block-bred-section-info__item\"><span class=\"wp-block-bred-section-info__icon\" aria-hidden=\"true\"><i class=\"ph ph-certificate\" aria-hidden=\"true\"><\/i><\/span><div class=\"wp-block-bred-section-info__content\"><h3 class=\"wp-block-bred-section-info__item-title\">Le\u00a0personal\u00a0branding\u00a0<\/h3><p class=\"wp-block-bred-section-info__item-description\">Une formation pour renforcer le professionnalisme, la cr\u00e9dibilit\u00e9 et la qualit\u00e9 de communication des conseillers.<\/p><\/div><\/article><\/div><\/section>\n\n\n\n<style>\n\/* ===== Section Infos : ic\u00f4nes qui flottent + lueur cyan ===== *\/\n@keyframes infoFlotte {\n  0%, 100% { transform: translateY(0); }\n  50%      { transform: translateY(-4px); }\n}\n@keyframes infoLueur {\n  0%, 100% { filter: drop-shadow(0 0 0 rgba(0, 193, 242, 0)); }\n  50%      { filter: drop-shadow(0 0 7px rgba(0, 193, 242, .9)); }\n}\n\n.anim-infos .anim-info-icone {\n  animation: infoFlotte 3.2s ease-in-out infinite,\n             infoLueur 3.2s ease-in-out infinite;\n  animation-delay: calc(var(--i, 0) * .4s), calc(var(--i, 0) * .4s);\n  will-change: transform;\n}\n\n\/* Accessibilit\u00e9 : pas d'animation continue si l'appareil r\u00e9duit les animations *\/\n@media (prefers-reduced-motion: reduce) {\n  .anim-infos .anim-info-icone { animation: none !important; }\n}\n<\/style>\n\n<script>\n(function () {\n  \/\/ Les \u00e9l\u00e9ments d'info = le plus grand groupe d'au moins 3 \u00e9l\u00e9ments fr\u00e8res de m\u00eame classe contenant du texte\n  function trouverGroupe(block) {\n    var res = [];\n    var meilleur = 0;\n    [block].concat(Array.from(block.querySelectorAll('*'))).forEach(function (p) {\n      var enfants = Array.from(p.children).filter(function (c) {\n        return c.textContent.trim().length > 0;\n      });\n      if (enfants.length < 3) return;\n      var premier = enfants[0];\n      var memes = enfants.filter(function (c) {\n        return c.className === premier.className &#038;&#038; c.tagName === premier.tagName;\n      });\n      if (memes.length < 3) return;\n      var total = memes.reduce(function (t, c) { return t + c.textContent.trim().length; }, 0);\n      if (total > meilleur) { meilleur = total; res = memes; }\n    });\n    return res;\n  }\n\n  function init() {\n    document.querySelectorAll('.anim-infos').forEach(function (block) {\n      if (block.dataset.infosInit) return;\n      block.dataset.infosInit = '1';\n\n      var items = trouverGroupe(block);\n      var nb = 0;\n      items.forEach(function (item, i) {\n        var icone = item.querySelector('svg, i, img, [class*=\"icon\"]');\n        if (!icone) return;\n        \/\/ Une transformation ne s'applique pas aux \u00e9l\u00e9ments \"inline\"\n        if (getComputedStyle(icone).display === 'inline') { icone.style.display = 'inline-block'; }\n        icone.classList.add('anim-info-icone');\n        icone.style.setProperty('--i', i);\n        nb = nb + 1;\n      });\n      console.log('[Infos] elements :', items.length, '| icones animees :', nb);\n      if (!nb) {\n        console.warn('[Infos] Aucune icone trouvee : envoie-moi le HTML de la section (clic droit, Inspecter).');\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<style>\n\/* ===== Section Infos : ic\u00f4nes qui flottent + lueur cyan ===== *\/\n@keyframes infoFlotte {\n  0%, 100% { transform: translateY(0); }\n  50%      { transform: translateY(-4px); }\n}\n@keyframes infoLueur {\n  0%, 100% { filter: drop-shadow(0 0 0 rgba(0, 193, 242, 0)); }\n  50%      { filter: drop-shadow(0 0 7px rgba(0, 193, 242, .9)); }\n}\n\n.anim-infos .anim-info-icone {\n  animation: infoFlotte 3.2s ease-in-out infinite,\n             infoLueur 3.2s ease-in-out infinite;\n  animation-delay: calc(var(--i, 0) * .4s), calc(var(--i, 0) * .4s);\n  will-change: transform;\n}\n\n\/* Accessibilit\u00e9 : pas d'animation continue si l'appareil r\u00e9duit les animations *\/\n@media (prefers-reduced-motion: reduce) {\n  .anim-infos .anim-info-icone { animation: none !important; }\n}\n<\/style>\n\n<script>\n(function () {\n  \/\/ Les \u00e9l\u00e9ments d'info = le plus grand groupe d'au moins 3 \u00e9l\u00e9ments fr\u00e8res de m\u00eame classe contenant du texte\n  function trouverGroupe(block) {\n    var res = [];\n    var meilleur = 0;\n    [block].concat(Array.from(block.querySelectorAll('*'))).forEach(function (p) {\n      var enfants = Array.from(p.children).filter(function (c) {\n        return c.textContent.trim().length > 0;\n      });\n      if (enfants.length < 3) return;\n      var premier = enfants[0];\n      var memes = enfants.filter(function (c) {\n        return c.className === premier.className &#038;&#038; c.tagName === premier.tagName;\n      });\n      if (memes.length < 3) return;\n      var total = memes.reduce(function (t, c) { return t + c.textContent.trim().length; }, 0);\n      if (total > meilleur) { meilleur = total; res = memes; }\n    });\n    return res;\n  }\n\n  function init() {\n    document.querySelectorAll('.anim-infos').forEach(function (block) {\n      if (block.dataset.infosInit) return;\n      block.dataset.infosInit = '1';\n\n      var items = trouverGroupe(block);\n      var nb = 0;\n      items.forEach(function (item, i) {\n        var icone = item.querySelector('svg, i, img, [class*=\"icon\"]');\n        if (!icone) return;\n        \/\/ Une transformation ne s'applique pas aux \u00e9l\u00e9ments \"inline\"\n        if (getComputedStyle(icone).display === 'inline') { icone.style.display = 'inline-block'; }\n        icone.classList.add('anim-info-icone');\n        icone.style.setProperty('--i', i);\n        nb = nb + 1;\n      });\n      console.log('[Infos] elements :', items.length, '| icones animees :', nb);\n      if (!nb) {\n        console.warn('[Infos] Aucune icone trouvee : envoie-moi le HTML de la section (clic droit, Inspecter).');\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-text is-align-center is-width-wide has-cta anim-cta\"><div class=\"wp-block-bred-section-text__inner\"><h2 class=\"wp-block-bred-section-text__title\">L&rsquo;expertise BPCE au b\u00e9n\u00e9fice de nos clients<\/h2><p class=\"wp-block-bred-section-text__body\">Avec son existence de plus de 100 ans, ses 36 millions de clients \u00e0 travers le monde et ses 110\u202f 000 collaborateurs, BPCE met \u00e0 disposition de ses clients des pratiques bancaires de qualit\u00e9, des solutions innovantes et un accompagnement de proximit\u00e9 disposant de l\u2019excellence des standards internationaux.&nbsp;<br>&nbsp;<br><em><strong>BRED Madagasikara Banque Populaire,<\/strong><\/em> <strong><em>c\u2019est l\u2019expertise BPCE au service d\u2019un accompagnement local, fiable et performant\u202f!<\/em><\/strong>&nbsp;<\/p><div class=\"wp-block-bred-section-text__extra\">\n<p class=\"wp-block-paragraph\"><\/p>\n<\/div><a class=\"wp-block-bred-section-text__cta\" href=\"https:\/\/bred.mg\/la-force-dun-groupe-international\/\"><span class=\"wp-block-bred-section-text__cta-label\">D\u00e9couvrir le groupe BPCE<\/span><i class=\"wp-block-bred-section-text__cta-icon ph ph-arrow-right\" aria-hidden=\"true\"><\/i><\/a><\/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-3 has-header anim-reassure\"><header class=\"wp-block-bred-section-reassurance__header\"><h2 class=\"wp-block-bred-section-reassurance__title\">Ce que notre expertise change pour vous\u00a0<\/h2><\/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-shield-check\" aria-hidden=\"true\"><\/i><\/span><p class=\"wp-block-bred-reassurance__label\">Solidit\u00e9&nbsp;<\/p><p class=\"wp-block-bred-reassurance__description\">Un \u00e9tablissement bancaire reconnu, adoss\u00e9 \u00e0 un groupe solide, pour vous accompagner durablement dans vos projets.<\/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\">Banque de proximit\u00e9&nbsp;<\/p><p class=\"wp-block-bred-reassurance__description\">Pr\u00e9sente depuis pr\u00e8s de 50 ans \u00e0 Madagascar, avec plus de  70 agences r\u00e9parties sur le territoire.<\/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-users\" aria-hidden=\"true\"><\/i><\/span><p class=\"wp-block-bred-reassurance__label\"><strong>Pour tous les profils<\/strong><\/p><p class=\"wp-block-bred-reassurance__description\">Particuliers, professionnels, entreprises, associations et institutionnels b\u00e9n\u00e9ficient d\u2019une offre de services compl\u00e8te et adapt\u00e9e \u00e0 leurs besoins.<\/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-xl 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\">Une banque \u00e0 votre service<\/h2><p class=\"wp-block-bred-section-stats__body\">BRED Madagasikara Banque Populaire s\u2019engage \u00e0 proposer une qualit\u00e9 de service et un accompagnement de proximit\u00e9 pour \u00e9tablir une relation de confiance durable avec ses clients.\u00a0<\/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\">Centre Relation Client<\/dt><dd class=\"wp-block-bred-section-stats__value\">01<\/dd><\/div><div class=\"wp-block-bred-section-stats__row\"><dt class=\"wp-block-bred-section-stats__label\">Centres d\u2019Affaires<\/dt><dd class=\"wp-block-bred-section-stats__value\">05<\/dd><\/div><div class=\"wp-block-bred-section-stats__row\"><dt class=\"wp-block-bred-section-stats__label\">Espaces Premier<\/dt><dd class=\"wp-block-bred-section-stats__value\">09<\/dd><\/div><div class=\"wp-block-bred-section-stats__row\"><dt class=\"wp-block-bred-section-stats__label\">Distributeurs Automatiques de Billets<\/dt><dd class=\"wp-block-bred-section-stats__value\">146 <\/dd><\/div><div class=\"wp-block-bred-section-stats__row\"><dt class=\"wp-block-bred-section-stats__label\">Collaborateurs<\/dt><dd class=\"wp-block-bred-section-stats__value\">+1 300<\/dd><\/div><\/dl><\/section>\n\n\n\n<div class=\"wp-block-bred-push alignwide is-bg-primary-dark is-layout-row has-cta anim-hero\"><div class=\"wp-block-bred-push__content\"><h2 class=\"wp-block-bred-push__title\">Une question\u202f? Nous sommes l\u00e0 pour vous aider&nbsp;<\/h2><p class=\"wp-block-bred-push__body\">B\u00e9n\u00e9ficiez de l\u2019accompagnement de nos conseillers \u00e0 distance 6j\/7,<br>de 7h30 \u00e0 20h30 en semaine et de 8h \u00e0 15h le samedi.<br>Pour un accompagnement personnalis\u00e9, nos conseillers vous accueillent dans l\u2019agence la plus proche de chez vous.<\/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\">Parler \u00e0 un conseiller<\/span><\/a><\/div><\/div>\n\n\n\n<style>\n\/* Au survol : aucune couche d\u00e9corative du th\u00e8me (pseudo-\u00e9l\u00e9ments) ne recouvre le cyan.\n   Priorit\u00e9 volontairement tr\u00e8s forte pour passer devant les r\u00e8gles :hover du th\u00e8me *\/\nhtml body .bred-cta-on.bred-cta-on::before,\nhtml body .bred-cta-on.bred-cta-on::after,\nhtml body .bred-cta-on.bred-cta-on *::before,\nhtml body .bred-cta-on.bred-cta-on *::after {\n  background: transparent !important;\n  background-image: none !important;\n  box-shadow: none !important;\n  border-color: transparent !important;\n  backdrop-filter: none !important;\n}\n<\/style>\n\n<script>\n(function () {\n  var COULEUR_SURVOL = '#00c1f2';    \/\/ accent-mg de ton th\u00e8me\n  var CYAN_RGB = [0, 193, 242];      \/\/ m\u00eame couleur en RGB (pour ignorer les boutons d\u00e9j\u00e0 cyan)\n  var TEXTE_SURVOL   = '#fff';\n  var LUEUR = '0 6px 18px rgba(0, 193, 242, .45)';\n  var TRANSITION = 'background-color .25s ease, color .25s ease, border-color .25s ease, box-shadow .25s ease, transform .2s ease';\n  var DELAI_RESTAURATION = 300;      \/\/ ms : on garde la transition le temps que l'extinction se termine\n  var LARGEUR_MAX = 520;             \/\/ au-del\u00e0, ce n'est pas un bouton (carte, banni\u00e8re...)\n  var HAUTEUR_MAX = 110;\n  var EXCLUS = '.anim-card, .anim-hero, .anim-choix, [data-cta-off]';   \/\/ blocs exclus (ou ajoute data-cta-off dans le HTML)\n  var DEBUG = false;                 \/\/ true : infos dans la console (F12)\n\n  \/\/ \u00c9l\u00e9ments susceptibles d'\u00eatre des boutons\n  var SELECTEUR = 'a, button, input[type=\"button\"], input[type=\"submit\"], [role=\"button\"], ' +\n                  '.wp-block-button__link, .elementor-button, .btn, .button, [class*=\"__cta\"]';\n  \/\/ \u00c9l\u00e9ments toujours consid\u00e9r\u00e9s comme boutons c\u00f4t\u00e9 taille\/contenu\n  \/\/ (ils doivent quand m\u00eame avoir un fond ou une bordure compl\u00e8te)\n  var FORCES = '.wp-block-button__link, .elementor-button, [class*=\"__cta\"]';\n\n  var reduit = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n\n  \/\/ Comparaisons sans && ni < > (plus s\u00fbres dans un bloc WordPress)\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  \/\/ Lit une couleur CSS -> [r, g, b, alpha]\n  function lire(couleur) {\n    if (!couleur) return [0, 0, 0, 0];\n    if (couleur === 'transparent') return [0, 0, 0, 0];\n    var m = couleur.match(\/[\\d.]+\/g);\n    if (!m) return [0, 0, 0, 0];\n    var a = 1;\n    if (m.length === 4) { a = parseFloat(m[3]); }\n    return [parseFloat(m[0]), parseFloat(m[1]), parseFloat(m[2]), a];\n  }\n\n  \/\/ Le fond est-il non transparent ? (utilis\u00e9 pour les \u00e9l\u00e9ments situ\u00e9s sous le bouton)\n  function aUnFond(el) {\n    return sup(lire(getComputedStyle(el).backgroundColor)[3], 0.05);\n  }\n\n  \/\/ La couleur est-elle d\u00e9j\u00e0 (presque) le cyan de survol ?\n  function estCyan(c) {\n    if (!sup(c[3], 0.5)) return false;\n    var ecart = 40;\n    return [\n      inf(Math.abs(c[0] - CYAN_RGB[0]), ecart),\n      inf(Math.abs(c[1] - CYAN_RGB[1]), ecart),\n      inf(Math.abs(c[2] - CYAN_RGB[2]), ecart)\n    ].every(Boolean);\n  }\n\n  \/\/ Un c\u00f4t\u00e9 de bordure est-il visible ? (cote : Top, Right, Bottom, Left)\n  function coteVisible(cs, cote) {\n    var style = cs['border' + cote + 'Style'];\n    if (style === 'none') return false;\n    if (style === 'hidden') return false;\n    if (!sup(parseFloat(cs['border' + cote + 'Width']), 1)) return false;\n    return sup(lire(cs['border' + cote + 'Color'])[3], 0.1);\n  }\n\n  \/\/ Bordure sur les 4 c\u00f4t\u00e9s ?\n  function bordureComplete(cs) {\n    return coteVisible(cs, 'Top') && coteVisible(cs, 'Right') &&\n           coteVisible(cs, 'Bottom') && coteVisible(cs, 'Left');\n  }\n\n  \/\/ Simple soulignement (bordure en bas uniquement) ?\n  function soulignement(cs) {\n    if (!coteVisible(cs, 'Bottom')) return false;\n    if (coteVisible(cs, 'Top')) return false;\n    if (coteVisible(cs, 'Left')) return false;\n    if (coteVisible(cs, 'Right')) return false;\n    return true;\n  }\n\n  \/\/ Cet \u00e9l\u00e9ment ressemble-t-il \u00e0 un bouton ?\n  function estBouton(el) {\n    if (el.closest(EXCLUS)) return false;\n    var cs = getComputedStyle(el);\n    if (cs.display === 'none') return false;\n    if (cs.visibility === 'hidden') return false;\n\n    var fond = lire(cs.backgroundColor);\n    if (estCyan(fond)) return false;                       \/\/ d\u00e9j\u00e0 cyan : rien \u00e0 faire\n\n    var r = el.getBoundingClientRect();\n    if (!sup(r.width, 1)) return false;\n\n    \/\/ Lien soulign\u00e9 (bordure en bas seulement) : on ne touche pas\n    if (soulignement(cs)) return false;\n\n    var force = el.matches(FORCES);\n\n    if (!force) {\n      \/\/ Taille raisonnable pour un bouton, et pas d'image \u00e0 l'int\u00e9rieur (carte cliquable)\n      if (!inf(r.width, LARGEUR_MAX)) return false;\n      if (!inf(r.height, HAUTEUR_MAX)) return false;\n      if (el.querySelector('img, picture, video, canvas')) return false;\n\n      \/\/ Doit contenir du texte (ou \u00eatre un <input>) ou une ic\u00f4ne\n      var texte = (el.textContent || '').trim();\n      if (texte === '') {\n        if (el.tagName !== 'INPUT') {\n          if (!el.querySelector('svg, i')) return false;\n        }\n      }\n    }\n\n    \/\/ Crit\u00e8re visuel : fond visible, d\u00e9grad\u00e9, ou bordure compl\u00e8te avec un peu de marge int\u00e9rieure\n    if (sup(fond[3], 0.5)) return true;\n    if (cs.backgroundImage.indexOf('gradient') !== -1) return true;\n    if (bordureComplete(cs)) {\n      if (sup(parseFloat(cs.paddingLeft), 10)) return true;\n    }\n    return false;\n  }\n\n  \/\/ Pose un style en ligne !important en m\u00e9morisant l'ancienne valeur\n  function poser(el, prop, val) {\n    if (!el.__ctaSauve) el.__ctaSauve = {};\n    if (!(prop in el.__ctaSauve)) {\n      el.__ctaSauve[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.__ctaSauve) return;\n    Object.keys(el.__ctaSauve).forEach(function (prop) {\n      var s = el.__ctaSauve[prop];\n      if (s[0] === '') { el.style.removeProperty(prop); }\n      else { el.style.setProperty(prop, s[0], s[1]); }\n    });\n    el.__ctaSauve = null;\n  }\n\n  \/\/ Applique la m\u00eame transition \u00e0 un \u00e9l\u00e9ment (en m\u00e9morisant sa transition d'origine)\n  function poserTransition(el) {\n    if (el.__ctaTimer) {\n      clearTimeout(el.__ctaTimer);\n      el.__ctaTimer = null;\n    } else {\n      el.__ctaTransOrig = [el.style.getPropertyValue('transition'), el.style.getPropertyPriority('transition')];\n    }\n    el.style.setProperty('transition', TRANSITION, 'important');\n  }\n\n  \/\/ Restaure la transition d'origine, apr\u00e8s la fin de l'animation\n  function restaurerTransitionPlusTard(el) {\n    el.__ctaTimer = setTimeout(function () {\n      var t = el.__ctaTransOrig;\n      if (t) {\n        if (t[0] === '') { el.style.removeProperty('transition'); }\n        else { el.style.setProperty('transition', t[0], t[1]); }\n      }\n      el.__ctaTransOrig = null;\n      el.__ctaTimer = null;\n    }, DELAI_RESTAURATION);\n  }\n\n  \/\/ \u00c9l\u00e9ments \u00e0 traiter : le bouton, ses descendants, et tout \u00e9l\u00e9ment de taille proche\n  \/\/ situ\u00e9 sous son centre (voile, fond d\u00e9coratif, parent...)\n  function elementsDuFond(btn) {\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 (e) {\n      if (liste.indexOf(e) !== -1) return;\n      if (e === document.documentElement) return;\n      if (e === document.body) return;\n      if (e.closest(EXCLUS)) return;\n      var r = e.getBoundingClientRect();\n      if (inf(r.width, br.width * 1.4)) {\n        if (inf(r.height, br.height * 1.8)) { liste.push(e); }\n      }\n    });\n    return liste;\n  }\n\n  function allumer(btn) {\n    if (btn.__ctaOn) return;\n    btn.__ctaOn = true;\n    btn.classList.add('bred-cta-on');\n    var touches = elementsDuFond(btn);\n    btn.__ctaTouches = touches;\n    var avecBordure = bordureComplete(getComputedStyle(btn));\n\n    \/\/ 1) D'abord : m\u00eame transition sur TOUS les \u00e9l\u00e9ments touch\u00e9s\n    if (!reduit) { touches.forEach(poserTransition); }\n\n    \/\/ 2) Ensuite seulement : on change les couleurs\n    touches.forEach(function (e) {\n      \/\/ Fond cyan : le bouton, et uniquement les autres \u00e9l\u00e9ments qui ont D\u00c9J\u00c0 un fond\n      \/\/ (un descendant transparent reste transparent : pas de halo autour du texte)\n      if (e === btn || aUnFond(e)) {\n        poser(e, 'background-color', COULEUR_SURVOL);\n        poser(e, 'background-image', 'none');\n      }\n      poser(e, 'color', TEXTE_SURVOL);\n      poser(e, 'opacity', '1');\n      poser(e, 'filter', 'none');\n      poser(e, 'box-shadow', (e === btn) ? LUEUR : 'none');\n    });\n    if (avecBordure) { poser(btn, 'border-color', COULEUR_SURVOL); }\n\n    if (DEBUG) { console.log('[CTA global] survol :', btn, touches.length + ' element(s) traite(s)'); }\n  }\n\n  function eteindre(btn) {\n    if (!btn.__ctaOn) return;\n    btn.__ctaOn = false;\n    btn.classList.remove('bred-cta-on');\n    var liste = btn.__ctaTouches || [];\n    btn.__ctaTouches = null;\n    liste.forEach(function (e) {\n      restaurer(e);\n      if (!reduit) { restaurerTransitionPlusTard(e); }\n    });\n  }\n\n  \/\/ --- \u00c9coute globale (d\u00e9l\u00e9gation) : fonctionne aussi pour les boutons ajout\u00e9s plus tard ---\n  document.addEventListener('pointerover', function (ev) {\n    if (ev.pointerType !== 'mouse') return;\n    if (!ev.target.closest) return;\n    var el = ev.target.closest(SELECTEUR);\n    if (!el) return;\n    if (el.__ctaOn) return;\n    if (estBouton(el)) { allumer(el); }\n  });\n\n  document.addEventListener('pointerout', function (ev) {\n    var n = ev.target;\n    while (n) {\n      if (n.__ctaOn) {\n        var reste = ev.relatedTarget ? n.contains(ev.relatedTarget) : false;\n        if (!reste) { eteindre(n); }\n      }\n      n = n.parentElement;\n    }\n  });\n\n  \/\/ Navigation au clavier\n  document.addEventListener('focusin', function (ev) {\n    if (!ev.target.closest) return;\n    var el = ev.target.closest(SELECTEUR);\n    if (!el) return;\n    if (el.__ctaOn) return;\n    if (!el.matches(':focus-visible')) return;\n    if (estBouton(el)) { allumer(el); }\n  });\n  document.addEventListener('focusout', function (ev) {\n    if (ev.target.__ctaOn) { eteindre(ev.target); }\n  });\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":9,"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":"1,33,36,31,37,40","_relevanssi_noindex_reason":"","bred_audience":"particuliers","footnotes":""},"bred_page_cat":[],"class_list":["post-552","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>Banque experte et certifi\u00e9e - 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\/banque-experte-et-certifiee\/\" \/>\n<meta property=\"og:locale\" content=\"mg_MG\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Banque experte et certifi\u00e9e\" \/>\n<meta property=\"og:url\" content=\"https:\/\/bred.mg\/mg\/banque-experte-et-certifiee\/\" \/>\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-10-26T07:09:19+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/bred.mg\/wp-content\/uploads\/2026\/09\/collaboratrice-scaled.jpg\" \/>\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=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/bred.mg\\\/banque-experte-et-certifiee\\\/\",\"url\":\"https:\\\/\\\/bred.mg\\\/banque-experte-et-certifiee\\\/\",\"name\":\"Banque experte et certifi\u00e9e - BRED Madagasikara\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bred.mg\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/bred.mg\\\/banque-experte-et-certifiee\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/bred.mg\\\/banque-experte-et-certifiee\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/bred.mg\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/collaboratrice-scaled.jpg\",\"datePublished\":\"2026-08-14T11:33:56+00:00\",\"dateModified\":\"2026-10-26T07:09:19+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/bred.mg\\\/banque-experte-et-certifiee\\\/#breadcrumb\"},\"inLanguage\":\"mg\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/bred.mg\\\/banque-experte-et-certifiee\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"mg\",\"@id\":\"https:\\\/\\\/bred.mg\\\/banque-experte-et-certifiee\\\/#primaryimage\",\"url\":\"https:\\\/\\\/bred.mg\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/collaboratrice-scaled.jpg\",\"contentUrl\":\"https:\\\/\\\/bred.mg\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/collaboratrice-scaled.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/bred.mg\\\/banque-experte-et-certifiee\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/bred.mg\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Banque experte et certifi\u00e9e\"}]},{\"@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":"Banque experte et certifi\u00e9e - 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\/banque-experte-et-certifiee\/","og_locale":"mg_MG","og_type":"article","og_title":"Banque experte et certifi\u00e9e","og_url":"https:\/\/bred.mg\/mg\/banque-experte-et-certifiee\/","og_site_name":"BRED Madagasikara","article_publisher":"https:\/\/www.facebook.com\/bred.madagasikara.bp","article_modified_time":"2026-10-26T07:09:19+00:00","og_image":[{"url":"https:\/\/bred.mg\/wp-content\/uploads\/2026\/09\/collaboratrice-scaled.jpg","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/bred.mg\/banque-experte-et-certifiee\/","url":"https:\/\/bred.mg\/banque-experte-et-certifiee\/","name":"Banque experte et certifi\u00e9e - BRED Madagasikara","isPartOf":{"@id":"https:\/\/bred.mg\/#website"},"primaryImageOfPage":{"@id":"https:\/\/bred.mg\/banque-experte-et-certifiee\/#primaryimage"},"image":{"@id":"https:\/\/bred.mg\/banque-experte-et-certifiee\/#primaryimage"},"thumbnailUrl":"https:\/\/bred.mg\/wp-content\/uploads\/2026\/09\/collaboratrice-scaled.jpg","datePublished":"2026-08-14T11:33:56+00:00","dateModified":"2026-10-26T07:09:19+00:00","breadcrumb":{"@id":"https:\/\/bred.mg\/banque-experte-et-certifiee\/#breadcrumb"},"inLanguage":"mg","potentialAction":[{"@type":"ReadAction","target":["https:\/\/bred.mg\/banque-experte-et-certifiee\/"]}]},{"@type":"ImageObject","inLanguage":"mg","@id":"https:\/\/bred.mg\/banque-experte-et-certifiee\/#primaryimage","url":"https:\/\/bred.mg\/wp-content\/uploads\/2026\/09\/collaboratrice-scaled.jpg","contentUrl":"https:\/\/bred.mg\/wp-content\/uploads\/2026\/09\/collaboratrice-scaled.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/bred.mg\/banque-experte-et-certifiee\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/bred.mg\/"},{"@type":"ListItem","position":2,"name":"Banque experte et certifi\u00e9e"}]},{"@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\/552","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\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/bred.mg\/mg\/wp-json\/wp\/v2\/comments?post=552"}],"version-history":[{"count":53,"href":"https:\/\/bred.mg\/mg\/wp-json\/wp\/v2\/pages\/552\/revisions"}],"predecessor-version":[{"id":7158,"href":"https:\/\/bred.mg\/mg\/wp-json\/wp\/v2\/pages\/552\/revisions\/7158"}],"wp:attachment":[{"href":"https:\/\/bred.mg\/mg\/wp-json\/wp\/v2\/media?parent=552"}],"wp:term":[{"taxonomy":"bred_page_cat","embeddable":true,"href":"https:\/\/bred.mg\/mg\/wp-json\/wp\/v2\/bred_page_cat?post=552"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}