Skip to content
Toggle Navigation
Produits
SIÈGES
Chaises
Chaises de bureau
Tabourets & Poufs
Fauteuils
Canapés
Sièges modulaires
document.addEventListener("DOMContentLoaded", function () { const menus = document.querySelectorAll(".products .hover-checklists, .products .hover-checklists2"); const layerA = document.querySelector(".products .layer-a"); const layerB = document.querySelector(".products .layer-b"); if (!menus.length || !layerA || !layerB) return; let activeLayer = layerA; let animLayer = layerB; let currentImage = ""; let currentIndex = -1; let animating = false; let pendingImage = null; let pendingIndex = -1; activeLayer.classList.add("visible"); function runAnimation(newImage, newIndex) { const movingDown = currentIndex === -1 || newIndex > currentIndex; animating = true; animLayer.style.backgroundImage = `url('${newImage}')`; animLayer.classList.remove("animating-down", "animating-up"); void animLayer.offsetWidth; animLayer.classList.add(movingDown ? "animating-down" : "animating-up"); const cleanup = () => { animLayer.removeEventListener("animationend", cleanup); activeLayer.classList.remove("visible"); animLayer.classList.remove("animating-down", "animating-up"); animLayer.classList.add("visible"); [activeLayer, animLayer] = [animLayer, activeLayer]; currentImage = newImage; currentIndex = newIndex; animating = false; // fast move এর সময় জমে থাকা সবচেয়ে শেষ pending image থাকলে সাথে সাথে সেটার animation চালাও if (pendingImage && pendingImage !== currentImage) { const img = pendingImage, idx = pendingIndex; pendingImage = null; pendingIndex = -1; runAnimation(img, idx); } else { pendingImage = null; pendingIndex = -1; } }; animLayer.addEventListener("animationend", cleanup, { once: true }); } menus.forEach(menu => { menu.addEventListener("pointerover", function (e) { const span = e.target.closest(".fusion-li-item-content span"); if (!span) return; const newImage = span.dataset.image; if (!newImage) return; const li = span.closest("li"); const items = [...menu.querySelectorAll("li")]; const newIndex = items.indexOf(li); if (newImage === currentImage && !animating) return; if (animating) { // এখনো animate হচ্ছে -> শুধু latest target মনে রাখো, cleanup এ handle হবে pendingImage = newImage; pendingIndex = newIndex; return; } if (newImage === currentImage) return; runAnimation(newImage, newIndex); }, true); }); });
TABLES
Tables à manger
Tables basses
Tables de bar
Plateaux de table
ACCESSOIRES
Panneaux acoustiques
Coussins
Caissons
Miroirs
Pots de fleurs
Chairs
Stools
Collections
Collections
document.addEventListener("DOMContentLoaded", function () { const menus = document.querySelectorAll(".hover-checklists, .hover-checklists2"); const layerA = document.querySelector(".collection .layer-a"); const layerB = document.querySelector(".collection .layer-b"); if (!menus.length || !layerA || !layerB) return; let activeLayer = layerA; let animLayer = layerB; let currentImage = ""; let currentIndex = -1; let animating = false; let pendingImage = null; let pendingIndex = -1; activeLayer.classList.add("visible"); function runAnimation(newImage, newIndex) { const movingDown = currentIndex === -1 || newIndex > currentIndex; animating = true; animLayer.style.backgroundImage = `url('${newImage}')`; animLayer.classList.remove("animating-down", "animating-up"); void animLayer.offsetWidth; animLayer.classList.add(movingDown ? "animating-down" : "animating-up"); const cleanup = () => { animLayer.removeEventListener("animationend", cleanup); activeLayer.classList.remove("visible"); animLayer.classList.remove("animating-down", "animating-up"); animLayer.classList.add("visible"); [activeLayer, animLayer] = [animLayer, activeLayer]; currentImage = newImage; currentIndex = newIndex; animating = false; // fast move এর সময় জমে থাকা সবচেয়ে শেষ pending image থাকলে সাথে সাথে সেটার animation চালাও if (pendingImage && pendingImage !== currentImage) { const img = pendingImage, idx = pendingIndex; pendingImage = null; pendingIndex = -1; runAnimation(img, idx); } else { pendingImage = null; pendingIndex = -1; } }; animLayer.addEventListener("animationend", cleanup, { once: true }); } menus.forEach(menu => { menu.addEventListener("pointerover", function (e) { const span = e.target.closest(".fusion-li-item-content span"); if (!span) return; const newImage = span.dataset.image; if (!newImage) return; const li = span.closest("li"); const items = [...menu.querySelectorAll("li")]; const newIndex = items.indexOf(li); if (newImage === currentImage && !animating) return; if (animating) { // এখনো animate হচ্ছে -> শুধু latest target মনে রাখো, cleanup এ handle হবে pendingImage = newImage; pendingIndex = newIndex; return; } if (newImage === currentImage) return; runAnimation(newImage, newIndex); }, true); }); });
Basket
Diego
Dolphin
Globe
Gloria
Hera
Mia
Mushroom
New
Paradise
Pasha
Premiere
Venus
Projets
Projets
document.addEventListener("DOMContentLoaded", function () { const menus = document.querySelectorAll(".hover-checklists, .hover-checklists2"); const layerA = document.querySelector(".references .layer-a"); const layerB = document.querySelector(".references .layer-b"); if (!menus.length || !layerA || !layerB) return; let activeLayer = layerA; let animLayer = layerB; let currentImage = ""; let currentIndex = -1; let animating = false; let pendingImage = null; let pendingIndex = -1; activeLayer.classList.add("visible"); function runAnimation(newImage, newIndex) { const movingDown = currentIndex === -1 || newIndex > currentIndex; animating = true; animLayer.style.backgroundImage = `url('${newImage}')`; animLayer.classList.remove("animating-down", "animating-up"); void animLayer.offsetWidth; animLayer.classList.add(movingDown ? "animating-down" : "animating-up"); const cleanup = () => { animLayer.removeEventListener("animationend", cleanup); activeLayer.classList.remove("visible"); animLayer.classList.remove("animating-down", "animating-up"); animLayer.classList.add("visible"); [activeLayer, animLayer] = [animLayer, activeLayer]; currentImage = newImage; currentIndex = newIndex; animating = false; // fast move এর সময় জমে থাকা সবচেয়ে শেষ pending image থাকলে সাথে সাথে সেটার animation চালাও if (pendingImage && pendingImage !== currentImage) { const img = pendingImage, idx = pendingIndex; pendingImage = null; pendingIndex = -1; runAnimation(img, idx); } else { pendingImage = null; pendingIndex = -1; } }; animLayer.addEventListener("animationend", cleanup, { once: true }); } menus.forEach(menu => { menu.addEventListener("pointerover", function (e) { const span = e.target.closest(".fusion-li-item-content span"); if (!span) return; const newImage = span.dataset.image; if (!newImage) return; const li = span.closest("li"); const items = [...menu.querySelectorAll("li")]; const newIndex = items.indexOf(li); if (newImage === currentImage && !animating) return; if (animating) { // এখনো animate হচ্ছে -> শুধু latest target মনে রাখো, cleanup এ handle হবে pendingImage = newImage; pendingIndex = newIndex; return; } if (newImage === currentImage) return; runAnimation(newImage, newIndex); }, true); }); });
Cafés
Restaurants
Hôtels
Commercial / Bureaux
Résidentiel
Ressources
Ressources
document.addEventListener("DOMContentLoaded", function () { const menus = document.querySelectorAll(".hover-checklists, .hover-checklists2"); const layerA = document.querySelector(".resources .layer-a"); const layerB = document.querySelector(".resources .layer-b"); if (!menus.length || !layerA || !layerB) return; let activeLayer = layerA; let animLayer = layerB; let currentImage = ""; let currentIndex = -1; let animating = false; let pendingImage = null; let pendingIndex = -1; activeLayer.classList.add("visible"); function runAnimation(newImage, newIndex) { const movingDown = currentIndex === -1 || newIndex > currentIndex; animating = true; animLayer.style.backgroundImage = `url('${newImage}')`; animLayer.classList.remove("animating-down", "animating-up"); void animLayer.offsetWidth; animLayer.classList.add(movingDown ? "animating-down" : "animating-up"); const cleanup = () => { animLayer.removeEventListener("animationend", cleanup); activeLayer.classList.remove("visible"); animLayer.classList.remove("animating-down", "animating-up"); animLayer.classList.add("visible"); [activeLayer, animLayer] = [animLayer, activeLayer]; currentImage = newImage; currentIndex = newIndex; animating = false; // fast move এর সময় জমে থাকা সবচেয়ে শেষ pending image থাকলে সাথে সাথে সেটার animation চালাও if (pendingImage && pendingImage !== currentImage) { const img = pendingImage, idx = pendingIndex; pendingImage = null; pendingIndex = -1; runAnimation(img, idx); } else { pendingImage = null; pendingIndex = -1; } }; animLayer.addEventListener("animationend", cleanup, { once: true }); } menus.forEach(menu => { menu.addEventListener("pointerover", function (e) { const span = e.target.closest(".fusion-li-item-content span"); if (!span) return; const newImage = span.dataset.image; if (!newImage) return; const li = span.closest("li"); const items = [...menu.querySelectorAll("li")]; const newIndex = items.indexOf(li); if (newImage === currentImage && !animating) return; if (animating) { // এখনো animate হচ্ছে -> শুধু latest target মনে রাখো, cleanup এ handle হবে pendingImage = newImage; pendingIndex = newIndex; return; } if (newImage === currentImage) return; runAnimation(newImage, newIndex); }, true); }); });
Tissus
Finitions
Catalogues
Liste de prix
Fiches produits
Dessins 2D et 3D
Entreprise
Entreprise
document.addEventListener("DOMContentLoaded", function () { const menus = document.querySelectorAll(".hover-checklists, .hover-checklists2"); const layerA = document.querySelector(".company .layer-a"); const layerB = document.querySelector(".company .layer-b"); if (!menus.length || !layerA || !layerB) return; let activeLayer = layerA; let animLayer = layerB; let currentImage = ""; let currentIndex = -1; let animating = false; let pendingImage = null; let pendingIndex = -1; activeLayer.classList.add("visible"); function runAnimation(newImage, newIndex) { const movingDown = currentIndex === -1 || newIndex > currentIndex; animating = true; animLayer.style.backgroundImage = `url('${newImage}')`; animLayer.classList.remove("animating-down", "animating-up"); void animLayer.offsetWidth; animLayer.classList.add(movingDown ? "animating-down" : "animating-up"); const cleanup = () => { animLayer.removeEventListener("animationend", cleanup); activeLayer.classList.remove("visible"); animLayer.classList.remove("animating-down", "animating-up"); animLayer.classList.add("visible"); [activeLayer, animLayer] = [animLayer, activeLayer]; currentImage = newImage; currentIndex = newIndex; animating = false; // fast move এর সময় জমে থাকা সবচেয়ে শেষ pending image থাকলে সাথে সাথে সেটার animation চালাও if (pendingImage && pendingImage !== currentImage) { const img = pendingImage, idx = pendingIndex; pendingImage = null; pendingIndex = -1; runAnimation(img, idx); } else { pendingImage = null; pendingIndex = -1; } }; animLayer.addEventListener("animationend", cleanup, { once: true }); } menus.forEach(menu => { menu.addEventListener("pointerover", function (e) { const span = e.target.closest(".fusion-li-item-content span"); if (!span) return; const newImage = span.dataset.image; if (!newImage) return; const li = span.closest("li"); const items = [...menu.querySelectorAll("li")]; const newIndex = items.indexOf(li); if (newImage === currentImage && !animating) return; if (animating) { // এখনো animate হচ্ছে -> শুধু latest target মনে রাখো, cleanup এ handle হবে pendingImage = newImage; pendingIndex = newIndex; return; } if (newImage === currentImage) return; runAnimation(newImage, newIndex); }, true); }); });
À propos de nous
Histoires
Certifications
Designers
Durabilité
Carrières
Contacter
Toggle Navigation
Search for:
.
FR
EN
TR
.mnm-root{ --mnm-bg:#ffffff; --mnm-text:#15151a; --mnm-muted:#6b6b70; --mnm-border:rgba(0,0,0,.08); font-family: var(--awb-fusion-font-family-typography) !important; } .mnm-root *{box-sizing:border-box;} /* ===== Trigger button ===== */ .mnm-topbar{ display:flex; align-items:center; justify-content:flex-start; } .mnm-burger{ width:32px;height:32px; background:none;border:none; display:flex;flex-direction:column;justify-content:center;gap:6px; cursor:pointer; padding:0; } .mnm-burger span{ display:block;height:2px;width:100%;background:#15151a; transition:transform .3s ease, opacity .3s ease; } .mnm-burger.active span:nth-child(1){transform:translateY(8px) rotate(45deg);} .mnm-burger.active span:nth-child(2){opacity:0;} .mnm-burger.active span:nth-child(3){transform:translateY(-8px) rotate(-45deg);} /* ===== Menu overlay ===== */ .mnm-overlay{ position:fixed; top:0;left:0;right:0;bottom:0; background:var(--mnm-bg); z-index:99999; display:flex; flex-direction:column; transform:translateY(100%); transition:transform .45s cubic-bezier(.65,0,.35,1); overflow:hidden; visibility:hidden; box-shadow:0 0 30px rgba(0,0,0,.12); } .mnm-overlay.open{ transform:translateY(0); visibility:visible; } .mnm-header{ display:flex; align-items:center; flex-direction: row-reverse; justify-content:space-between; padding:16px 20px; flex-shrink:0; } .mnm-header .mnm-logo{font-size:22px;font-weight:600;color:var(--mnm-text);letter-spacing:.5px;} .mnm-header .mnm-actions{display:flex;gap:18px;align-items:center;} .mnm-icon-btn{ background:none;border:none;color:var(--mnm-text);cursor:pointer; display:flex;align-items:center;justify-content:center; width:28px;height:28px; padding:0; } .mnm-icon-btn svg{width:22px;height:22px;} /* ===== Panels container (slides left/right) ===== */ .mnm-panels{ position:relative; flex:1; overflow:hidden; } .mnm-panel{ position:absolute; top:0;left:0; width:100%;height:100%; overflow-y:auto; padding:10px 20px 40px; transform:translateX(0); transition:transform .4s cubic-bezier(.65,0,.35,1); background:var(--mnm-bg); padding-bottom: 210px !important; } .mnm-panel.mnm-sub{ transform:translateX(100%); } .mnm-panel.mnm-sub.active{ transform:translateX(0); } .mnm-panel.mnm-main.shift{ transform:translateX(-100%); } .mnm-back-btn{ display:flex; align-items:center; gap:8px; color:var(--mnm-muted); background:none;border:none; font-size:13px; letter-spacing:1px; text-transform:uppercase; padding:14px 0; cursor:pointer; } .mnm-back-btn svg{ width:40px; height:40px; } .mnm-sub-title{ color:var(--mnm-text); font-size:26px; font-weight:600; padding:10px 0 16px; } .mnm-list{list-style:none;margin:0;padding:0;} .mnm-list li{ border-bottom:1px solid var(--mnm-border); } .mnm-link{ display:flex; align-items:center; justify-content:space-between; color:var(--mnm-text); text-decoration:none; font-size:28px; padding:20px 0; background:none; border:none; width:100%; text-align:left; cursor:pointer; font-family: var(--awb-fusion-font-family-typography) !important; } .mnm-link svg{width:22px;height:22px;flex-shrink:0;color:var(--mnm-text);} .mnm-sub-list{ list-style:none; margin:0; padding:0; border-bottom: 1px solid #ddd; } .mnm-sub-list li{padding:0;} .mnm-sub-list a{ display:block; color:var(--mnm-muted); text-decoration:none; font-size:19px; padding:14px 0; } /* ===== Language switcher (inside menu header) ===== */ .mnm-lang{ display:inline-flex; align-items:center; height:40px; background:#f4f4f4; border-radius:999px; padding:3px; box-sizing:border-box; overflow:hidden; } .mnm-lang__en{ flex:0 0 auto; width:34px; height:34px; border-radius:50%; border:none; background:#ebebeb; color:#15151a; font-size:14px; font-weight:700; letter-spacing:.02em; cursor:pointer; display:flex; align-items:center; justify-content:center; transition:background .25s ease; } .mnm-lang__en:hover{background:#e0e0e0;} .mnm-lang__options{ display:flex; align-items:center; gap:14px; width:0; opacity:0; overflow:hidden; white-space:nowrap; margin-left:0; padding-right:0; transition:width .35s cubic-bezier(.4,0,.2,1), opacity .3s cubic-bezier(.4,0,.2,1), margin-left .35s cubic-bezier(.4,0,.2,1), padding-right .35s cubic-bezier(.4,0,.2,1); } .mnm-lang.is-open .mnm-lang__options{ opacity:1; margin-left:12px; padding-right:10px; /* width is set inline by JS to the exact content width, so the transition has no dead time */ } .mnm-lang__item{ font-size:14px; font-weight:700; text-decoration:none; letter-spacing:.02em; opacity:.9; transition:opacity .2s ease; } .mnm-lang__item:hover{opacity:1; color: #000 !important} .mnm-lang__item--es{color:#8c2f2f;} .mnm-lang__item--fr{color:#1c2b52;} .mnm-lang__item--de{color:#2f6b52;} .mnm-lang__item--it{color:#c0432f;} .mnm-lang__close{ display:flex; align-items:center; justify-content:center; width:18px; height:18px; border:none; background:transparent; color:#15151a; cursor:pointer; padding:0; opacity:.85; transition:opacity .2s ease, transform .2s ease; } .mnm-lang__close:hover{opacity:1;transform:scale(1.1);}
Produits
Collections
Projets
Ressources
Entreprise
DOS
SIÈGES
Chaises
Chaises de bureau
Tabourets & Poufs
Fauteuils
Canapés
Sièges modulaires
TABLES
Tables à manger
Tables basses
Tables de bar
Plateaux de table
ACCESSOIRES
Panneaux acoustiques
Coussins
Caissons
Miroirs
Pots de fleurs
DOS
Collections
Basket
Diego
Dolphin
Globe
Gloria
Hera
Mia
Mushroom
New
Paradise
Pasha
Premiere
Venus
DOS
Ressources
Tissus
Finitions
Catalogues
Liste de prix
Fiches produits
Dessins 2D et 3D
DOS
Projets
Cafés
Restaurants
Hôtels
Commercial / Bureaux
Résidentiel
DOS
Entreprise
À propos de nous
Histoires
Certifications
Designers
Durabilité
Carrières
Contacter
(function(){ var burgerBtn = document.getElementById('mnmBurgerBtn'); var closeBtn = document.getElementById('mnmCloseBtn'); var overlay = document.getElementById('mnmOverlay'); var mainPanel = document.getElementById('mnmMainPanel'); if(!burgerBtn || !overlay) return; function openMenu(){ overlay.classList.add('open'); burgerBtn.classList.add('active'); document.body.style.overflow = 'hidden'; } function closeMenu(){ overlay.classList.remove('open'); burgerBtn.classList.remove('active'); document.body.style.overflow = ''; setTimeout(function(){ mainPanel.classList.remove('shift'); document.querySelectorAll('.mnm-panel.mnm-sub').forEach(function(p){ p.classList.remove('active'); }); }, 450); } burgerBtn.addEventListener('click', function(){ if(overlay.classList.contains('open')){ closeMenu(); } else { openMenu(); } }); if(closeBtn) closeBtn.addEventListener('click', closeMenu); document.querySelectorAll('.mnm-link[data-target]').forEach(function(btn){ btn.addEventListener('click', function(){ var targetId = btn.getAttribute('data-target'); var target = document.getElementById(targetId); mainPanel.classList.add('shift'); target.classList.add('active'); }); }); document.querySelectorAll('[data-back]').forEach(function(btn){ btn.addEventListener('click', function(){ var sub = btn.closest('.mnm-panel.mnm-sub'); sub.classList.remove('active'); mainPanel.classList.remove('shift'); }); }); // ===== Language switcher inside menu header ===== var langRoot = document.getElementById('mnmLang'); var langToggle = document.getElementById('mnmLangToggle'); var langClose = document.getElementById('mnmLangClose'); var langOptions = document.getElementById('mnmLangOptions'); if(langRoot && langToggle && langOptions){ function openLang(){ // measure the natural width of the content first (still 0 visually since width:0 is set) langOptions.style.width = 'auto'; var natural = langOptions.scrollWidth; langOptions.style.width = '0px'; // force reflow so the browser registers the 0px before we animate to natural width langOptions.offsetWidth; langRoot.classList.add('is-open'); langToggle.setAttribute('aria-expanded', 'true'); requestAnimationFrame(function(){ langOptions.style.width = natural + 'px'; }); } function closeLang(){ langRoot.classList.remove('is-open'); langToggle.setAttribute('aria-expanded', 'false'); langOptions.style.width = '0px'; } langToggle.addEventListener('click', function(e){ e.stopPropagation(); if(langRoot.classList.contains('is-open')){ closeLang(); } else { openLang(); } }); if(langClose){ langClose.addEventListener('click', function(e){ e.stopPropagation(); closeLang(); }); } document.addEventListener('click', function(e){ if(!langRoot.contains(e.target)) closeLang(); }); } })();
Search for:
.
FR
EN
TR
Page load link
Go to Top