{"id":54413,"date":"2025-10-23T08:58:59","date_gmt":"2025-10-23T06:58:59","guid":{"rendered":"https:\/\/mapau.es\/meubles-de-salle-de-bains-fabriques-en-europe\/"},"modified":"2025-11-07T16:14:54","modified_gmt":"2025-11-07T15:14:54","slug":"meubles-de-salle-de-bains-fabriques-en-europe","status":"publish","type":"page","link":"https:\/\/mapau.es\/fr\/","title":{"rendered":"Meubles de salle de bains fabriqu\u00e9s en Europe"},"content":{"rendered":"<section id=\"hero-block_5c5eac6c5a5d755e6c5a04b8468e1322\" class=\"hero-lebana-block relative w-full min-h-screen flex items-center bg-gray-900\">\n      <div class=\"absolute inset-0 bg-cover bg-center bg-no-repeat\" style=\"background-image: url('https:\/\/mapau.es\/wp-content\/uploads\/sites\/2\/2025\/10\/grunge-background-of-green-wall-colored-abstract-background-free-photo-scaled-copia-1-1.jpg');\"><\/div>\n    <div class=\"absolute inset-0 bg-black pointer-events-none\" style=\"opacity: 0.3;\"><\/div>\n    \n    \n  <div class=\"ladybug-container absolute top-0 right-0 z-20 pointer-events-none\">\n    <div class=\"ladybug-wrapper\">\n      <img decoding=\"async\" \n        src=\"https:\/\/mapau.es\/wp-content\/themes\/mapau-sage\/public\/build\/assets\/mariquita-D6cBAx5F.png\" \n        alt=\"Mariquita\" \n        class=\"ladybug-image\"\n      \/>\n    <\/div>\n  <\/div>\n    \n  <div class=\"relative z-10 w-full px-8 md:px-20 py-20 lg:pl-[320px]\">\n    <div class=\"flex flex-col items-start gap-10 max-w-2xl\">\n      \n              <div class=\"w-full max-w-lg\">\n          <img decoding=\"async\" \n            src=\"https:\/\/mapau.es\/wp-content\/uploads\/sites\/2\/2025\/10\/logo-mapau-blanco.png\" \n            alt=\"Mapau\" \n            class=\"w-full h-auto drop-shadow-2xl\" \n          \/>\n        <\/div>\n            \n      \n              <div class=\"relative w-full min-h-[60px] flex items-center\">\n                      <p class=\"hero-rotating-text opacity-100 absolute top-0 left-0 text-lg md:text-xl lg:text-2xl font-light lowercase transition-opacity duration-500 text-white\" style=\"font-family: 'Poppins', sans-serif;\" data-index=\"0\">\n              construction de salles de bains depuis 2011\n            <\/p>\n                      <p class=\"hero-rotating-text opacity-0 absolute top-0 left-0 text-lg md:text-xl lg:text-2xl font-light lowercase transition-opacity duration-500 text-white\" style=\"font-family: 'Poppins', sans-serif;\" data-index=\"1\">\n              parce que tu es diff\u00e9rent\n            <\/p>\n                      <p class=\"hero-rotating-text opacity-0 absolute top-0 left-0 text-lg md:text-xl lg:text-2xl font-light lowercase transition-opacity duration-500 text-white\" style=\"font-family: 'Poppins', sans-serif;\" data-index=\"2\">\n              #salledebainmapau\n            <\/p>\n                  <\/div>\n            \n      \n              <div class=\"mt-4\">\n          <a \n            href=\"https:\/\/mapau.es\/fr\/nouvelle-collection\/\" \n            class=\"inline-block px-12 py-4 bg-black text-white hover:bg-gray-800 transition-colors duration-300 lowercase text-lg tracking-wide shadow-lg hover:shadow-xl transform hover:-translate-y-0.5 transition-all\"\n            \n          >\n            acheter\n          <\/a>\n        <\/div>\n          <\/div>\n  <\/div>\n<\/section>\n\n<script>\n(function() {\n  const heroId = 'hero-block_5c5eac6c5a5d755e6c5a04b8468e1322';\n  const hero = document.getElementById(heroId);\n  if (!hero) return;\n  \n  const texts = hero.querySelectorAll('.hero-rotating-text');\n  if (texts.length <= 1) return;\n  \n  let currentIndex = 0;\n  \n  function rotateText() {\n    texts[currentIndex].classList.remove('opacity-100');\n    texts[currentIndex].classList.add('opacity-0');\n    \n    currentIndex = (currentIndex + 1) % texts.length;\n    \n    texts[currentIndex].classList.remove('opacity-0');\n    texts[currentIndex].classList.add('opacity-100');\n  }\n  \n  setInterval(rotateText, 3000);\n})();\n<\/script>\n\n\n<script>\n(function() {\n  const heroId = \"hero-block_5c5eac6c5a5d755e6c5a04b8468e1322\";\n  const hero = document.getElementById(heroId);\n  if (!hero) return;\n  \n  const ladybugContainer = hero.querySelector('.ladybug-container');\n  const ladybugWrapper = hero.querySelector('.ladybug-wrapper');\n  if (!ladybugContainer || !ladybugWrapper) return;\n  \n  \/\/ Estado de la mariquita\n  let currentX = 0;\n  let currentY = 0;\n  let currentDirection = Math.random() * 360; \/\/ Direcci\u00f3n inicial aleatoria\n  let walkCycle = 0; \/\/ Para el balanceo al caminar\n  \n  \/\/ L\u00edmites: container 220px, mariquita ~38px. Radio = (220-38)\/2 \u2248 91\n  const maxX = 91;\n  const maxY = 91;\n  \n  \/\/ Velocidad de movimiento (p\u00edxeles por frame)\n  const speed = 0.28;\n  \n  \/\/ \u00c1ngulo desde (x,y) hacia el centro (0,0)\n  function angleTowardCenter(x, y) {\n    if (Math.abs(x) < 0.1) { if (Math.abs(y) < 0.1) return Math.random() * 360; }\n    const rad = Math.atan2(-y, -x);\n    return (rad * 180 \/ Math.PI) + 90;\n  }\n  \n  \/\/ Detecci\u00f3n de atasco (threshold < speed: moverse 0.28px\/frame es normal, no \"atascado\")\n  let lastX = currentX, lastY = currentY, stuckFrames = 0;\n  const stuckThreshold = 0.15;\n  const stuckFrameLimit = 45;\n  \n  \/\/ Frame de animaci\u00f3n - SOLO rebota cuando choca contra el borde real\n  function animate() {\n    const radians = (currentDirection - 90) * Math.PI \/ 180;\n    let newX = currentX + Math.cos(radians) * speed;\n    let newY = currentY + Math.sin(radians) * speed;\n    \n    \/\/ Sin cambios aleatorios: camina recto hasta chocar. Solo rebote al borde.\n    const newRadians = (currentDirection - 90) * Math.PI \/ 180;\n    newX = currentX + Math.cos(newRadians) * speed;\n    newY = currentY + Math.sin(newRadians) * speed;\n    \n    \/\/ Clamp y SOLO AH\u00cd detectar choque: si nos clampearon, rebotar\n    const rawX = newX, rawY = newY;\n    newX = Math.max(-maxX, Math.min(maxX, newX));\n    newY = Math.max(-maxY, Math.min(maxY, newY));\n    \n    if (rawX !== newX || rawY !== newY) {\n      currentDirection = angleTowardCenter(newX, newY) + (Math.random() - 0.5) * 50;\n    }\n    \n    \/\/ Anti-atasco\n    const moved = Math.hypot(newX - lastX, newY - lastY);\n    if (moved < stuckThreshold) {\n      stuckFrames++;\n      if (stuckFrames > stuckFrameLimit) {\n        currentDirection = angleTowardCenter(currentX, currentY) + (Math.random() - 0.5) * 90;\n        stuckFrames = 0;\n      }\n    } else {\n      stuckFrames = 0;\n    }\n    lastX = currentX;\n    lastY = currentY;\n    \n    \/\/ Normalizar \u00e1ngulo (0-360)\n    if (currentDirection < 0) currentDirection += 360;\n    if (currentDirection >= 360) currentDirection -= 360;\n    \n    \/\/ Actualizar posici\u00f3n\n    currentX = newX;\n    currentY = newY;\n    \n    \/\/ Ciclo de caminar (balanceo lateral sutil)\n    walkCycle += 0.15;\n    const wobble = Math.sin(walkCycle) * 2;\n    \n    \/\/ Posicionar con left\/top en p\u00edxeles (evita problemas con transform\/porcentajes)\n    const cw = ladybugContainer.offsetWidth;\n    const ch = ladybugContainer.offsetHeight;\n    const bw = ladybugWrapper.offsetWidth;\n    const bh = ladybugWrapper.offsetHeight;\n    const centerX = (cw - bw) \/ 2;\n    const centerY = (ch - bh) \/ 2;\n    ladybugWrapper.style.left = (centerX + currentX) + 'px';\n    ladybugWrapper.style.top = (centerY + currentY) + 'px';\n    ladybugWrapper.style.transform = 'rotate(' + (currentDirection + wobble) + 'deg)';\n    \n    \/\/ Continuar animaci\u00f3n\n    requestAnimationFrame(animate);\n  }\n  \n  \/\/ Pausas ocasionales\n  let isPaused = false;\n  function randomPause() {\n    if (!isPaused) {\n      if (Math.random() < 0.05) { \/\/ 5% probabilidad cada segundo\n      isPaused = true;\n      \n      \/\/ Pausar durante 1-3 segundos\n      const pauseDuration = 1000 + Math.random() * 2000;\n      \n      setTimeout(function() {\n        isPaused = false;\n        \/\/ Peque\u00f1o cambio de direcci\u00f3n al reanudar\n        currentDirection += (Math.random() - 0.5) * 60;\n      }, pauseDuration);\n    }\n    \n    setTimeout(randomPause, 1000);\n    }\n  }\n  \n  \/\/ Modificar animate para considerar pausas\n  function animateWithPauses() {\n    if (!isPaused) {\n      animate();\n    } else {\n      \/\/ Cuando est\u00e1 pausada, solo hacer peque\u00f1o balanceo\n      const microWobble = Math.sin(walkCycle * 0.3) * 1;\n      const cw = ladybugContainer.offsetWidth;\n      const ch = ladybugContainer.offsetHeight;\n      const bw = ladybugWrapper.offsetWidth;\n      const bh = ladybugWrapper.offsetHeight;\n      ladybugWrapper.style.left = ((cw - bw) \/ 2 + currentX) + 'px';\n      ladybugWrapper.style.top = ((ch - bh) \/ 2 + currentY) + 'px';\n      ladybugWrapper.style.transform = 'rotate(' + (currentDirection + microWobble) + 'deg)';\n      requestAnimationFrame(animateWithPauses);\n    }\n  }\n  \n  \/\/ Iniciar animaci\u00f3n\n  setTimeout(function() {\n    requestAnimationFrame(animate);\n    randomPause();\n  }, 500);\n})();\n<\/script>\n\n\n\n<section id=\"novedades-block_88f7bd55a6fc8a1312c29a3c854adfcf\" class=\"novedades-bento-block py-16 md:py-20 bg-gray-50\">\n  <div class=\"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8\">\n    \n    <div class=\"text-center mb-12 md:mb-16\">\n              <h2 class=\"text-3xl md:text-4xl lg:text-5xl font-normal lowercase mb-3 tracking-wide\">boutique en ligne<\/h2>\n                    <p class=\"text-lg md:text-xl text-gray-600 font-light\">L&#039;innovation \u00e0 la port\u00e9e de tous<\/p>\n          <\/div>\n\n    \n          <div class=\"grid grid-cols-1 md:grid-cols-4 gap-4 md:gap-5 auto-rows-[180px] md:auto-rows-[200px]\">\n                            \n          <a \n            href=\"https:\/\/mapau.es\/fr\/nouvelle-collection\/\" \n            class=\"group relative overflow-hidden rounded-lg flex items-end p-5 md:p-6 bg-cover bg-center bg-no-repeat transition-all duration-300 hover:-translate-y-2 hover:shadow-2xl md:col-span-2 md:row-span-2 col-span-1 row-span-1 \"\n                          style=\"background-image: url('https:\/\/mapau.es\/wp-content\/uploads\/sites\/2\/2025\/09\/MPVOLM1BEBC-1-scaled-2.jpg');\"\n                                  >\n            \n            <div class=\"absolute inset-0 bg-gradient-to-t from-black\/80 via-black\/40 to-transparent group-hover:from-black\/90 group-hover:via-black\/50 transition-all duration-300\"><\/div>\n            \n            \n            <div class=\"relative z-10 w-full\">\n              <span class=\"block text-white text-xl md:text-2xl font-medium lowercase tracking-wide drop-shadow-lg\">\n                Nouvelles\n              <\/span>\n            <\/div>\n          <\/a>\n                            \n          <a \n            href=\"https:\/\/mapau.es\/fr\/producto\/complemento-tille\/\" \n            class=\"group relative overflow-hidden rounded-lg flex items-end p-5 md:p-6 bg-cover bg-center bg-no-repeat transition-all duration-300 hover:-translate-y-2 hover:shadow-2xl col-span-1 row-span-1 \"\n                          style=\"background-image: url('https:\/\/mapau.es\/wp-content\/uploads\/sites\/2\/2025\/09\/MDIJWBAAW0-1-1-scaled-2.jpg');\"\n                                  >\n            \n            <div class=\"absolute inset-0 bg-gradient-to-t from-black\/80 via-black\/40 to-transparent group-hover:from-black\/90 group-hover:via-black\/50 transition-all duration-300\"><\/div>\n            \n            \n            <div class=\"relative z-10 w-full\">\n              <span class=\"block text-white text-xl md:text-2xl font-medium lowercase tracking-wide drop-shadow-lg\">\n                Compl\u00e9ments\n              <\/span>\n            <\/div>\n          <\/a>\n                            \n          <a \n            href=\"https:\/\/mapau.es\/fr\/categoria-producto\/accesorios\/espejos\/\" \n            class=\"group relative overflow-hidden rounded-lg flex items-end p-5 md:p-6 bg-cover bg-center bg-no-repeat transition-all duration-300 hover:-translate-y-2 hover:shadow-2xl col-span-1 row-span-1 \"\n                          style=\"background-image: url('https:\/\/mapau.es\/wp-content\/uploads\/sites\/2\/2025\/10\/MMAYL4_DTL-1-1.jpg');\"\n                                  >\n            \n            <div class=\"absolute inset-0 bg-gradient-to-t from-black\/80 via-black\/40 to-transparent group-hover:from-black\/90 group-hover:via-black\/50 transition-all duration-300\"><\/div>\n            \n            \n            <div class=\"relative z-10 w-full\">\n              <span class=\"block text-white text-xl md:text-2xl font-medium lowercase tracking-wide drop-shadow-lg\">\n                Miroirs\n              <\/span>\n            <\/div>\n          <\/a>\n                            \n          <a \n            href=\"https:\/\/mapau.es\/fr\/categoria-producto\/accesorios\/\" \n            class=\"group relative overflow-hidden rounded-lg flex items-end p-5 md:p-6 bg-cover bg-center bg-no-repeat transition-all duration-300 hover:-translate-y-2 hover:shadow-2xl col-span-1 row-span-1 \"\n                          style=\"background-image: url('https:\/\/mapau.es\/wp-content\/uploads\/sites\/2\/2025\/10\/CPRA41D4B-1-1-scaled.jpg');\"\n                                  >\n            \n            <div class=\"absolute inset-0 bg-gradient-to-t from-black\/80 via-black\/40 to-transparent group-hover:from-black\/90 group-hover:via-black\/50 transition-all duration-300\"><\/div>\n            \n            \n            <div class=\"relative z-10 w-full\">\n              <span class=\"block text-white text-xl md:text-2xl font-medium lowercase tracking-wide drop-shadow-lg\">\n                accessoires\n              <\/span>\n            <\/div>\n          <\/a>\n                            \n          <a \n            href=\"https:\/\/mapau.es\/fr\/categoria-producto\/accesorios\/grifos\/\" \n            class=\"group relative overflow-hidden rounded-lg flex items-end p-5 md:p-6 bg-cover bg-center bg-no-repeat transition-all duration-300 hover:-translate-y-2 hover:shadow-2xl col-span-1 row-span-1 \"\n                          style=\"background-image: url('https:\/\/mapau.es\/wp-content\/uploads\/sites\/2\/2025\/10\/TNRAOLRQ0-1-1-scaled.jpg');\"\n                                  >\n            \n            <div class=\"absolute inset-0 bg-gradient-to-t from-black\/80 via-black\/40 to-transparent group-hover:from-black\/90 group-hover:via-black\/50 transition-all duration-300\"><\/div>\n            \n            \n            <div class=\"relative z-10 w-full\">\n              <span class=\"block text-white text-xl md:text-2xl font-medium lowercase tracking-wide drop-shadow-lg\">\n                robinets\n              <\/span>\n            <\/div>\n          <\/a>\n              <\/div>\n      <\/div>\n<\/section>\n\n\n\n<section id=\"colecciones-block_daa54b96514e54d1a0e510ecf377a9f2\" class=\"grid-colecciones-block py-16 md:py-20 bg-white\">\n  <div class=\"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8\">\n    \n          <h2 class=\"text-3xl md:text-4xl lg:text-5xl font-normal lowercase text-center mb-12 md:mb-16 tracking-wide\">collections<\/h2>\n        \n    \n          <div class=\"marcas-slider-container\">\n        \n        <div class=\"swiper marcas-swiper\">\n          <div class=\"swiper-wrapper\">\n                          <div class=\"swiper-slide\">\n                <a \n                  href=\"https:\/\/mapau.es\/fr\/marque\/bridan\/\" \n                  class=\"marca-card group block\"\n                >\n                  \n                  <div class=\"marca-card-image\">\n                                          \n                      <div class=\"w-full h-full flex items-center justify-center\">\n                        <span class=\"text-5xl font-light text-gray-300 uppercase\">BR<\/span>\n                      <\/div>\n                                      <\/div>\n                  \n                  \n                  <div class=\"marca-card-title\">\n                    <h3 class=\"text-base font-light uppercase tracking-[0.3em] text-gray-800 group-hover:text-gray-900 transition-colors\">\n                      BRIDAN\n                    <\/h3>\n                  <\/div>\n                <\/a>\n              <\/div>\n                          <div class=\"swiper-slide\">\n                <a \n                  href=\"https:\/\/mapau.es\/fr\/marque\/dijon\/\" \n                  class=\"marca-card group block\"\n                >\n                  \n                  <div class=\"marca-card-image\">\n                                          \n                      <div class=\"w-full h-full flex items-center justify-center\">\n                        <span class=\"text-5xl font-light text-gray-300 uppercase\">DI<\/span>\n                      <\/div>\n                                      <\/div>\n                  \n                  \n                  <div class=\"marca-card-title\">\n                    <h3 class=\"text-base font-light uppercase tracking-[0.3em] text-gray-800 group-hover:text-gray-900 transition-colors\">\n                      DIJON\n                    <\/h3>\n                  <\/div>\n                <\/a>\n              <\/div>\n                          <div class=\"swiper-slide\">\n                <a \n                  href=\"https:\/\/mapau.es\/fr\/marque\/essentiel\/\" \n                  class=\"marca-card group block\"\n                >\n                  \n                  <div class=\"marca-card-image\">\n                                          \n                      <div class=\"w-full h-full flex items-center justify-center\">\n                        <span class=\"text-5xl font-light text-gray-300 uppercase\">ES<\/span>\n                      <\/div>\n                                      <\/div>\n                  \n                  \n                  <div class=\"marca-card-title\">\n                    <h3 class=\"text-base font-light uppercase tracking-[0.3em] text-gray-800 group-hover:text-gray-900 transition-colors\">\n                      ESSENTIEL\n                    <\/h3>\n                  <\/div>\n                <\/a>\n              <\/div>\n                          <div class=\"swiper-slide\">\n                <a \n                  href=\"https:\/\/mapau.es\/fr\/marque\/rennes\/\" \n                  class=\"marca-card group block\"\n                >\n                  \n                  <div class=\"marca-card-image\">\n                                          \n                      <div class=\"w-full h-full flex items-center justify-center\">\n                        <span class=\"text-5xl font-light text-gray-300 uppercase\">RE<\/span>\n                      <\/div>\n                                      <\/div>\n                  \n                  \n                  <div class=\"marca-card-title\">\n                    <h3 class=\"text-base font-light uppercase tracking-[0.3em] text-gray-800 group-hover:text-gray-900 transition-colors\">\n                      RENNES\n                    <\/h3>\n                  <\/div>\n                <\/a>\n              <\/div>\n                          <div class=\"swiper-slide\">\n                <a \n                  href=\"https:\/\/mapau.es\/fr\/marque\/richet\/\" \n                  class=\"marca-card group block\"\n                >\n                  \n                  <div class=\"marca-card-image\">\n                                          \n                      <div class=\"w-full h-full flex items-center justify-center\">\n                        <span class=\"text-5xl font-light text-gray-300 uppercase\">RI<\/span>\n                      <\/div>\n                                      <\/div>\n                  \n                  \n                  <div class=\"marca-card-title\">\n                    <h3 class=\"text-base font-light uppercase tracking-[0.3em] text-gray-800 group-hover:text-gray-900 transition-colors\">\n                      RICHET\n                    <\/h3>\n                  <\/div>\n                <\/a>\n              <\/div>\n                          <div class=\"swiper-slide\">\n                <a \n                  href=\"https:\/\/mapau.es\/fr\/marque\/savart\/\" \n                  class=\"marca-card group block\"\n                >\n                  \n                  <div class=\"marca-card-image\">\n                                          \n                      <div class=\"w-full h-full flex items-center justify-center\">\n                        <span class=\"text-5xl font-light text-gray-300 uppercase\">SA<\/span>\n                      <\/div>\n                                      <\/div>\n                  \n                  \n                  <div class=\"marca-card-title\">\n                    <h3 class=\"text-base font-light uppercase tracking-[0.3em] text-gray-800 group-hover:text-gray-900 transition-colors\">\n                      SAVART\n                    <\/h3>\n                  <\/div>\n                <\/a>\n              <\/div>\n                      <\/div>\n        <\/div>\n      <\/div>\n      <\/div>\n<\/section>\n\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-54413","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/mapau.es\/fr\/wp-json\/wp\/v2\/pages\/54413","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mapau.es\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mapau.es\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mapau.es\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mapau.es\/fr\/wp-json\/wp\/v2\/comments?post=54413"}],"version-history":[{"count":2,"href":"https:\/\/mapau.es\/fr\/wp-json\/wp\/v2\/pages\/54413\/revisions"}],"predecessor-version":[{"id":54418,"href":"https:\/\/mapau.es\/fr\/wp-json\/wp\/v2\/pages\/54413\/revisions\/54418"}],"wp:attachment":[{"href":"https:\/\/mapau.es\/fr\/wp-json\/wp\/v2\/media?parent=54413"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}