{"title":"Porte-bûches","description":"\u003cdiv class=\"texts-box\"\u003e\n\n\u003cp class=\"description\"\u003e Apportez une touche de fonctionnalité et de charme à votre expérience de chauffage grâce à notre sélection d'accessoires pour cheminée. \u003c\/p\u003e\n\n\n\u003c\/div\u003e","products":[{"product_id":"equiss-freestanding-log-holder","title":"PORTE-BÛCHES AUTOPORTANT EQUISS ","description":"\u003cstyle\u003e\n  \/* Accordion styling *\/\n  .accordion {\n    border: 1px solid #ddd;\n    border-radius: 5px;\n    margin-bottom: 20px;\n    background: #f9f9f9;\n  }\n  .accordion-header {\n    padding: 12px;\n    font-weight: bold;\n    cursor: pointer;\n    background: #eee;\n  }\n  .accordion-header:hover {\n    background: #ddd;\n  }\n  .accordion-content {\n    display: none;\n    padding: 15px;\n    border-top: 1px solid #ddd;\n    background: #fff;\n  }\n  .accordion-content.open {\n    display: block;\n  }\n\n  \/* Unified link styling *\/\n  .see-link {\n    color: #f37021; \/* orange *\/\n    text-decoration: none;\n    font-weight: bold;\n    cursor: pointer;\n  }\n  .see-link:hover {\n    text-decoration: underline;\n  }\n\n  \/* Quick specs box *\/\n  #quick-specs {\n    border: 1px solid #ddd;\n    border-radius: 8px;\n    padding: 15px;\n    background: #fff;\n    margin: 20px 0;\n    font-size: 14px;\n    line-height: 1.5;\n  }\n  #quick-specs div {\n    margin-bottom: 8px;\n  }\n  #quick-specs strong {\n    font-weight: bold;\n  }\n\n  \/* Keep the flags and country names on one line (when space allows) *\/\n  .flags-inline {\n    display: inline-flex;\n    align-items: center;\n    gap: 8px;\n    margin-left: 5px;\n    white-space: nowrap;\n  }\n  .flag-pair {\n    display: inline-flex;\n    align-items: center;\n    gap: 6px;\n  }\n  .flag-image {\n    width: 22px;\n    height: auto;\n    vertical-align: middle;\n  }\n\u003c\/style\u003e\n\n\u003c!-- PRODUCT DESCRIPTION (SENTENCE TEASER) --\u003e\n\u003cdiv\u003e\n\n\u003cp id=\"desc-teaser\"\u003e\u003c\/p\u003e\n\n\u003cspan id=\"desc-more\" style=\"display:none;\"\u003e\n\u003c\/span\u003e\n Ce porte-bûches compact et robuste est entièrement fabriqué au Canada en acier de haute qualité. Ses poignées intégrées facilitent sa manipulation. L'assemblage se fait en quelques secondes : il suffit d'emboîter les deux panneaux et le tour est joué ! Un élastique sécable est également fourni pour protéger votre sol et apporter une touche finale élégante. Une fois la saison de chauffage terminée, ce porte-bûches autoportant se démonte facilement et ne prendra pas de place dans votre espace de vie.\n\n\n\n\u003c\/div\u003e\n\n \u003cspan id=\"seeMoreDesc\" class=\"see-link\" style=\"margin-bottom:20px; display:inline-block;\"\u003e\nDescription complète\n\u003c\/span\u003e \n\n\u003c!-- QUICK SPECIFICATIONS BOX --\u003e\n\u003cdiv id=\"quick-specs\"\u003e\n\n\u003cdiv\u003e\n\n 🌍 \u003cstrong\u003eFabriqué en :\u003c\/strong\u003e\n \u003cspan class=\"flags-inline\"\u003e\n\u003cspan class=\"flag-pair\"\u003e\n\u003cimg class=\"flag-image\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/download.png?v=1758991613\" alt=\"Drapeau du Canada\"\u003e\n \u003cspan\u003eCanada\u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e \n\n\n\n\u003c\/div\u003e\n\n\n\u003cdiv style=\"margin-top: 10px;\"\u003e\n\n\u003cspan id=\"seeFullSpecs\" class=\"see-link\"\u003eSpécifications complètes\u003c\/span\u003e \n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c!-- SPECIFICATIONS COLLAPSIBLE --\u003e\n\u003cdiv id=\"specs-accordion\" class=\"accordion\"\u003e\n\n\u003cdiv class=\"accordion-header\"\u003e Caractéristiques \u003c\/div\u003e\n\n\u003cdiv class=\"accordion-content\"\u003e\n\n\u003c!-- Appliance Performance Subheader --\u003e\n\u003ch3 style=\"font-size: 16px; font-weight: bold; margin: 20px 0 10px; border-bottom: 2px solid #ddd; padding-bottom: 5px;\"\u003e Performance des appareils \u003c\/h3\u003e\n\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n\n\u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003e Aucune donnée de performance disponible pour ce produit. \u003c\/p\u003e\n\n\n\u003c\/table\u003e\n\n\n\u003c!-- General Features Subheader --\u003e\n\u003ch3 style=\"font-size: 16px; font-weight: bold; margin: 20px 0 10px; border-bottom: 2px solid #ddd; padding-bottom: 5px;\"\u003e Caractéristiques générales \u003c\/h3\u003e\n\n\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n\n\u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003e Aucune fonctionnalité générale n'est disponible pour ce produit. \u003c\/p\u003e\n\n\n\u003c\/table\u003e\n\n\n\u003c!-- Clearances Subheader --\u003e\n\u003ch3 style=\"font-size: 16px; font-weight: bold; margin: 20px 0 10px; border-bottom: 2px solid #ddd; padding-bottom: 5px;\"\u003e\n\n Autorisations \n\n\u003c\/h3\u003e\n\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\n\n\u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003e Aucune dédouanement n'est disponible pour ce produit. \u003c\/p\u003e\n\n\n\u003c\/table\u003e\n\n\n\u003c!-- See Less link inside accordion --\u003e\n\u003cdiv style=\"text-align:center; margin-top: 15px;\"\u003e\n\n \u003cspan id=\"seeLessSpecs\" class=\"see-link\" style=\"display:none;\"\u003eVoir moins\u003c\/span\u003e\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c!-- MANUALS COLLAPSIBLE --\u003e\n\u003cdiv id=\"manuals-accordion\" class=\"accordion\"\u003e\n\n\u003cdiv class=\"accordion-header\"\u003e Manuels et instructions \u003c\/div\u003e\n\n\u003cdiv class=\"accordion-content\"\u003e\n\n\u003cul\u003e\n\n\u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003e Aucun manuel ni dépliant n'est disponible pour ce produit. \u003c\/p\u003e\n\n\u003c!-- PDF Links Styled as Buttons --\u003e\n\u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 10px;\"\u003e\n\u003c\/div\u003e\n\n\n\u003c\/ul\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003cscript\u003e\n  document.addEventListener('DOMContentLoaded', function () {\n    \/\/ TEASER: compute first sentence from the full description content (desc-more)\n    const descTeaserP = document.getElementById('desc-teaser');\n    const descMoreSpan = document.getElementById('desc-more');\n    const descToggle = document.getElementById('seeMoreDesc');\n\n    \/\/ use textContent of the hidden desc-more to compute the first sentence\n    const fullText = descMoreSpan ? descMoreSpan.innerText.trim() : '';\n    let firstPeriod = fullText.indexOf('.');\n    if (firstPeriod === -1) firstPeriod = fullText.length;\n    descTeaserP.textContent = fullText.substring(0, firstPeriod + (firstPeriod \u003c fullText.length ? 1 : 0)).trim();\n\n    \/\/ Initially ensure full description hidden and teaser visible\n    descMoreSpan.style.display = 'none';\n    descTeaserP.style.display = 'block';\n    descToggle.textContent = 'Full Description';\n\n    descToggle.addEventListener('click', function () {\n      const teaser = descTeaserP;\n      const moreText = descMoreSpan;\n\n      if (moreText.style.display === 'none') {\n        \/\/ Expand full description: hide teaser\n        teaser.style.display = 'none';\n        moreText.style.display = 'block';\n        this.textContent = 'See Less';\n        \/\/ optional: scroll into view so user sees the expanded description\n        this.scrollIntoView({ behavior: 'smooth', block: 'center' });\n      } else {\n        \/\/ Collapse to teaser\n        moreText.style.display = 'none';\n        teaser.style.display = 'block';\n        this.textContent = 'Full Description';\n      }\n    });\n\n    \/\/ ACCORDION logic (only one open at a time) + quick-specs handling\n    const accordions = document.querySelectorAll('.accordion');\n    const quickSpecs = document.getElementById('quick-specs');\n    const specsAccordion = document.getElementById('specs-accordion');\n    const specsContent = specsAccordion.querySelector('.accordion-content');\n    const seeLessSpecs = document.getElementById('seeLessSpecs');\n    const seeFullSpecs = document.getElementById('seeFullSpecs');\n\n    function closeAllAccordions(exceptAccordion) {\n      accordions.forEach(acc =\u003e {\n        if (acc !== exceptAccordion) {\n          acc.querySelector('.accordion-content').classList.remove('open');\n        }\n      });\n    }\n\n    function refreshUIState() {\n      \/\/ If specs open =\u003e hide quick-specs and show See Less inside specs\n      if (specsContent.classList.contains('open')) {\n        quickSpecs.style.display = 'none';\n        seeLessSpecs.style.display = 'inline-block';\n      } else {\n        quickSpecs.style.display = 'block';\n        seeLessSpecs.style.display = 'none';\n      }\n    }\n\n    \/\/ Set up header click handlers to toggle and enforce \"one open at a time\"\n    document.querySelectorAll('.accordion').forEach(acc =\u003e {\n      const header = acc.querySelector('.accordion-header');\n      const content = acc.querySelector('.accordion-content');\n\n      header.addEventListener('click', function () {\n        \/\/ if clicking the same accordion that is open =\u003e close it\n        if (content.classList.contains('open')) {\n          content.classList.remove('open');\n        } else {\n          closeAllAccordions(acc); \/\/ close others\n          content.classList.add('open');\n        }\n        refreshUIState();\n      });\n    });\n\n    \/\/ \"Full Specifications\" link: open the specs accordion (or close if already open)\n    seeFullSpecs.addEventListener('click', function () {\n      if (!specsContent.classList.contains('open')) {\n        closeAllAccordions(specsAccordion);\n        specsContent.classList.add('open');\n      } else {\n        specsContent.classList.remove('open');\n      }\n      refreshUIState();\n      \/\/ scroll to specifications area when opening\n      if (specsContent.classList.contains('open')) {\n        specsAccordion.scrollIntoView({ behavior: 'smooth', block: 'start' });\n      }\n    });\n\n    \/\/ \"See Less\" link located inside the Specifications content (after Clearances)\n    seeLessSpecs.addEventListener('click', function () {\n      if (specsContent.classList.contains('open')) {\n        specsContent.classList.remove('open');\n        refreshUIState();\n        \/\/ Reset the top Full Specifications link text if you want (kept as \"Full Specifications\")\n        \/\/ show quick specs again (handled in refreshUIState)\n        \/\/ scroll to the quick-specs area for the user's convenience\n        document.getElementById('quick-specs').scrollIntoView({ behavior: 'smooth', block: 'center' });\n      }\n    });\n\n    \/\/ Initial UI state\n    refreshUIState();\n  });\n\u003c\/script\u003e\n","brand":"The North Flame","offers":[{"title":"Default Title","offer_id":43693652443187,"sku":"AC02350","price":190.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/AC02350.webp?v=1761078680"},{"product_id":"48-wood-storage-with-finishing-trim","title":"Meuble de rangement en bois de 122 cm avec finitions. ","description":"\u003cstyle\u003e\n  \/* Accordion styling *\/\n  .accordion {\n    border: 1px solid #ddd;\n    border-radius: 5px;\n    margin-bottom: 20px;\n    background: #f9f9f9;\n  }\n  .accordion-header {\n    padding: 12px;\n    font-weight: bold;\n    cursor: pointer;\n    background: #eee;\n  }\n  .accordion-header:hover {\n    background: #ddd;\n  }\n  .accordion-content {\n    display: none;\n    padding: 15px;\n    border-top: 1px solid #ddd;\n    background: #fff;\n  }\n  .accordion-content.open {\n    display: block;\n  }\n\n  \/* Unified link styling *\/\n  .see-link {\n    color: #f37021; \/* orange *\/\n    text-decoration: none;\n    font-weight: bold;\n    cursor: pointer;\n  }\n  .see-link:hover {\n    text-decoration: underline;\n  }\n\n  \/* Quick specs box *\/\n  #quick-specs {\n    border: 1px solid #ddd;\n    border-radius: 8px;\n    padding: 15px;\n    background: #fff;\n    margin: 20px 0;\n    font-size: 14px;\n    line-height: 1.5;\n  }\n  #quick-specs div {\n    margin-bottom: 8px;\n  }\n  #quick-specs strong {\n    font-weight: bold;\n  }\n\n  \/* Keep the flags and country names on one line (when space allows) *\/\n  .flags-inline {\n    display: inline-flex;\n    align-items: center;\n    gap: 8px;\n    margin-left: 5px;\n    white-space: nowrap;\n  }\n  .flag-pair {\n    display: inline-flex;\n    align-items: center;\n    gap: 6px;\n  }\n  .flag-image {\n    width: 22px;\n    height: auto;\n    vertical-align: middle;\n  }\n\u003c\/style\u003e\n\n\u003c!-- PRODUCT DESCRIPTION (SENTENCE TEASER) --\u003e\n\u003cdiv\u003e\n\n\u003cp id=\"desc-teaser\"\u003e\u003c\/p\u003e\n\n\u003cspan id=\"desc-more\" style=\"display:none;\"\u003e\n\u003cp\u003e\u003c\/p\u003e\u003c\/span\u003e \nEncastrable ou autoportant, configurable verticalement ou horizontalement, vous apprécierez la polyvalence de ce rangement à bois. Il trouvera assurément sa place dans votre décor, que ce soit près de votre poêle à bois, de votre radiateur ou dans l'entrée où il peut servir de banc en position horizontale. Pour un décor épuré et minimaliste, le coffre peut être intégré à l'un de vos murs. Une moulure de finition est fournie pour un rendu impeccable. Très robuste, ce rangement à bois en acier épais (calibre 14) est revêtu de peinture en poudre et peut accueillir des bûches jusqu'à 45 cm de longueur. La structure en acier comprend quatre blocs de bois dissimulés pour protéger vos planchers. Un tiroir de rangement pour accessoires (43 x 38 x 15 cm) est offert en option. Rangez-y facilement le tisonnier et la pelle inclus! Livré dans un emballage compact, ce rangement à bois est très facile à assembler. Vous serez conquis! Fabriqué au Canada.\n\n\n\n\u003c\/div\u003e \n\u003cspan id=\"seeMoreDesc\" class=\"see-link\" style=\"margin-bottom:20px; display:inline-block;\"\u003e\nDescription complète\n\u003c\/span\u003e \n\n\u003c!-- QUICK SPECIFICATIONS BOX --\u003e\n\u003cdiv id=\"quick-specs\"\u003e\n\n\u003cdiv\u003e\n\n 🌍 \u003cstrong\u003eFabriqué en :\u003c\/strong\u003e\n \u003cspan class=\"flags-inline\"\u003e\n\u003cspan class=\"flag-pair\"\u003e\n\u003cimg class=\"flag-image\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/download.png?v=1758991613\" alt=\"Drapeau du Canada\"\u003e\n \u003cspan\u003eCanada\u003c\/span\u003e\n\u003c\/span\u003e\n\u003c\/span\u003e\n\n\u003c\/div\u003e\n\n\n\u003cdiv style=\"margin-top: 10px;\"\u003e\n\n \u003cspan id=\"seeFullSpecs\" class=\"see-link\"\u003eSpécifications complètes\u003c\/span\u003e \n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c!-- SPECIFICATIONS COLLAPSIBLE --\u003e\n\u003cdiv id=\"specs-accordion\" class=\"accordion\"\u003e\n\n\u003cdiv class=\"accordion-header\"\u003e Caractéristiques \u003c\/div\u003e\n\n\u003cdiv class=\"accordion-content\"\u003e\n\n\u003c!-- Appliance Performance Subheader --\u003e\n\u003ch3 style=\"font-size: 16px; font-weight: bold; margin: 20px 0 10px; border-bottom: 2px solid #ddd; padding-bottom: 5px;\"\u003e Performance des appareils \u003c\/h3\u003e\n\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n\n\u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003e Aucune donnée de performance disponible pour ce produit. \u003c\/p\u003e\n\n\n\u003c\/table\u003e\n\n\n\u003c!-- General Features Subheader --\u003e\n\u003ch3 style=\"font-size: 16px; font-weight: bold; margin: 20px 0 10px; border-bottom: 2px solid #ddd; padding-bottom: 5px;\"\u003e Caractéristiques générales \u003c\/h3\u003e\n\n\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n\n\u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003e Aucune fonctionnalité générale n'est disponible pour ce produit. \u003c\/p\u003e\n\n\n\u003c\/table\u003e\n\n\n\u003c!-- Clearances Subheader --\u003e\n\u003ch3 style=\"font-size: 16px; font-weight: bold; margin: 20px 0 10px; border-bottom: 2px solid #ddd; padding-bottom: 5px;\"\u003e\n\n Autorisations \n\n\u003c\/h3\u003e\n\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\n\n\u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003e Aucune dédouanement n'est disponible pour ce produit. \u003c\/p\u003e\n\n\n\u003c\/table\u003e\n\n\n\u003c!-- See Less link inside accordion --\u003e\n\u003cdiv style=\"text-align:center; margin-top: 15px;\"\u003e\n\n \u003cspan id=\"seeLessSpecs\" class=\"see-link\" style=\"display:none;\"\u003eVoir moins\u003c\/span\u003e\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c!-- MANUALS COLLAPSIBLE --\u003e\n\u003cdiv id=\"manuals-accordion\" class=\"accordion\"\u003e\n\n\u003cdiv class=\"accordion-header\"\u003e Manuels et instructions \u003c\/div\u003e\n\n\u003cdiv class=\"accordion-content\"\u003e\n\n\u003cul\u003e\n\n\u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003e Consultez les manuels et brochures disponibles pour plus d'informations sur les performances, l'installation, les exigences d'utilisation, etc. \u003c\/p\u003e\n\n\u003c!-- PDF Links Styled as Buttons --\u003e\n\u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 10px;\"\u003e\n\n\u003c!-- Installation \u0026 User's Manual --\u003e \n\u003ca style=\"flex: 1; min-width: 250px; text-decoration: none; background: #f7f7f7; padding: 12px 15px; border-radius: 6px; display: flex; align-items: center; font-size: 14px; color: #000; border: 1px solid #e0e0e0;\" href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/45954AF_07-04-2018.pdf?v=1761078894\" target=\"_blank\"\u003e\n📄 Manuel d'installation et d'utilisation \u003cspan style=\"margin-left: auto;\"\u003e🔗\u003c\/span\u003e\n\u003c\/a\u003e \n\n\u003c\/div\u003e\n\n\n\u003c\/ul\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003cscript\u003e\n  document.addEventListener('DOMContentLoaded', function () {\n    \/\/ TEASER: compute first sentence from the full description content (desc-more)\n    const descTeaserP = document.getElementById('desc-teaser');\n    const descMoreSpan = document.getElementById('desc-more');\n    const descToggle = document.getElementById('seeMoreDesc');\n\n    \/\/ use textContent of the hidden desc-more to compute the first sentence\n    const fullText = descMoreSpan ? descMoreSpan.innerText.trim() : '';\n    let firstPeriod = fullText.indexOf('.');\n    if (firstPeriod === -1) firstPeriod = fullText.length;\n    descTeaserP.textContent = fullText.substring(0, firstPeriod + (firstPeriod \u003c fullText.length ? 1 : 0)).trim();\n\n    \/\/ Initially ensure full description hidden and teaser visible\n    descMoreSpan.style.display = 'none';\n    descTeaserP.style.display = 'block';\n    descToggle.textContent = 'Full Description';\n\n    descToggle.addEventListener('click', function () {\n      const teaser = descTeaserP;\n      const moreText = descMoreSpan;\n\n      if (moreText.style.display === 'none') {\n        \/\/ Expand full description: hide teaser\n        teaser.style.display = 'none';\n        moreText.style.display = 'block';\n        this.textContent = 'See Less';\n        \/\/ optional: scroll into view so user sees the expanded description\n        this.scrollIntoView({ behavior: 'smooth', block: 'center' });\n      } else {\n        \/\/ Collapse to teaser\n        moreText.style.display = 'none';\n        teaser.style.display = 'block';\n        this.textContent = 'Full Description';\n      }\n    });\n\n    \/\/ ACCORDION logic (only one open at a time) + quick-specs handling\n    const accordions = document.querySelectorAll('.accordion');\n    const quickSpecs = document.getElementById('quick-specs');\n    const specsAccordion = document.getElementById('specs-accordion');\n    const specsContent = specsAccordion.querySelector('.accordion-content');\n    const seeLessSpecs = document.getElementById('seeLessSpecs');\n    const seeFullSpecs = document.getElementById('seeFullSpecs');\n\n    function closeAllAccordions(exceptAccordion) {\n      accordions.forEach(acc =\u003e {\n        if (acc !== exceptAccordion) {\n          acc.querySelector('.accordion-content').classList.remove('open');\n        }\n      });\n    }\n\n    function refreshUIState() {\n      \/\/ If specs open =\u003e hide quick-specs and show See Less inside specs\n      if (specsContent.classList.contains('open')) {\n        quickSpecs.style.display = 'none';\n        seeLessSpecs.style.display = 'inline-block';\n      } else {\n        quickSpecs.style.display = 'block';\n        seeLessSpecs.style.display = 'none';\n      }\n    }\n\n    \/\/ Set up header click handlers to toggle and enforce \"one open at a time\"\n    document.querySelectorAll('.accordion').forEach(acc =\u003e {\n      const header = acc.querySelector('.accordion-header');\n      const content = acc.querySelector('.accordion-content');\n\n      header.addEventListener('click', function () {\n        \/\/ if clicking the same accordion that is open =\u003e close it\n        if (content.classList.contains('open')) {\n          content.classList.remove('open');\n        } else {\n          closeAllAccordions(acc); \/\/ close others\n          content.classList.add('open');\n        }\n        refreshUIState();\n      });\n    });\n\n    \/\/ \"Full Specifications\" link: open the specs accordion (or close if already open)\n    seeFullSpecs.addEventListener('click', function () {\n      if (!specsContent.classList.contains('open')) {\n        closeAllAccordions(specsAccordion);\n        specsContent.classList.add('open');\n      } else {\n        specsContent.classList.remove('open');\n      }\n      refreshUIState();\n      \/\/ scroll to specifications area when opening\n      if (specsContent.classList.contains('open')) {\n        specsAccordion.scrollIntoView({ behavior: 'smooth', block: 'start' });\n      }\n    });\n\n    \/\/ \"See Less\" link located inside the Specifications content (after Clearances)\n    seeLessSpecs.addEventListener('click', function () {\n      if (specsContent.classList.contains('open')) {\n        specsContent.classList.remove('open');\n        refreshUIState();\n        \/\/ Reset the top Full Specifications link text if you want (kept as \"Full Specifications\")\n        \/\/ show quick specs again (handled in refreshUIState)\n        \/\/ scroll to the quick-specs area for the user's convenience\n        document.getElementById('quick-specs').scrollIntoView({ behavior: 'smooth', block: 'center' });\n      }\n    });\n\n    \/\/ Initial UI state\n    refreshUIState();\n  });\n\u003c\/script\u003e\n","brand":"The North Flame","offers":[{"title":"Default Title","offer_id":43693653884979,"sku":"AC02351","price":800.0,"currency_code":"CAD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/AC02351_cc348916-98d1-42c0-a396-992b66dfd4c8.webp?v=1761078874"},{"product_id":"drawer-and-tool-kit-for-wood-storage-insert","title":"TIROIR ET TROUSSE À OUTILS POUR INSERT DE RANGEMENT EN BOIS ","description":"\u003cstyle\u003e\n  \/* Accordion styling *\/\n  .accordion {\n    border: 1px solid #ddd;\n    border-radius: 5px;\n    margin-bottom: 20px;\n    background: #f9f9f9;\n  }\n  .accordion-header {\n    padding: 12px;\n    font-weight: bold;\n    cursor: pointer;\n    background: #eee;\n  }\n  .accordion-header:hover {\n    background: #ddd;\n  }\n  .accordion-content {\n    display: none;\n    padding: 15px;\n    border-top: 1px solid #ddd;\n    background: #fff;\n  }\n  .accordion-content.open {\n    display: block;\n  }\n\n  \/* Unified link styling *\/\n  .see-link {\n    color: #f37021; \/* orange *\/\n    text-decoration: none;\n    font-weight: bold;\n    cursor: pointer;\n  }\n  .see-link:hover {\n    text-decoration: underline;\n  }\n\n  \/* Quick specs box *\/\n  #quick-specs {\n    border: 1px solid #ddd;\n    border-radius: 8px;\n    padding: 15px;\n    background: #fff;\n    margin: 20px 0;\n    font-size: 14px;\n    line-height: 1.5;\n  }\n  #quick-specs div {\n    margin-bottom: 8px;\n  }\n  #quick-specs strong {\n    font-weight: bold;\n  }\n\n  \/* Keep the flags and country names on one line (when space allows) *\/\n  .flags-inline {\n    display: inline-flex;\n    align-items: center;\n    gap: 8px;\n    margin-left: 5px;\n    white-space: nowrap;\n  }\n  .flag-pair {\n    display: inline-flex;\n    align-items: center;\n    gap: 6px;\n  }\n  .flag-image {\n    width: 22px;\n    height: auto;\n    vertical-align: middle;\n  }\n\u003c\/style\u003e\n\u003c!-- PRODUCT DESCRIPTION (SENTENCE TEASER) --\u003e\n\u003cdiv\u003e\n\n\u003cp id=\"desc-teaser\"\u003e\u003c\/p\u003e\n\n\u003cp\u003e Ce tiroir de rangement pour accessoires (43 x 38 x 15 cm) est un excellent complément à votre rangement pour le bois. Rangez-y le tisonnier et la pelle, fournis avec le tiroir, pour plus de praticité ! Ne cherchez plus, rassemblez tous vos outils au même endroit.\u003c\/p\u003e\n\n\u003cspan id=\"desc-more\" style=\"display: none;\"\u003e\u003c\/span\u003e\n\n\u003c\/div\u003e\n\n\u003cp\u003e \u003cspan id=\"seeMoreDesc\" class=\"see-link\" style=\"margin-bottom: 20px; display: inline-block;\"\u003eDescription complète\u003c\/span\u003e\u003c\/p\u003e\n\n\u003c!-- QUICK SPECIFICATIONS BOX --\u003e\n\u003cdiv id=\"quick-specs\"\u003e\n\n\u003cdiv\u003e \u003cstrong\u003eFabriqué en\u003c\/strong\u003e\n\u003c\/div\u003e\n\n\u003cdiv\u003e \u003cspan class=\"flags-inline\"\u003e\u003cspan class=\"flag-pair\"\u003e\u003cimg class=\"flag-image\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/download.png?v=1758991613\" alt=\"Drapeau du Canada\"\u003e \u003cspan\u003eCanada\u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\n\u003c\/div\u003e\n\n \u003cdiv style=\"margin-top: 10px;\"\u003e\n\u003cspan id=\"seeFullSpecs\" class=\"see-link\"\u003eSpécifications complètes\u003c\/span\u003e \u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\u003c!-- SPECIFICATIONS COLLAPSIBLE --\u003e\n\u003cdiv id=\"specs-accordion\" class=\"accordion\"\u003e\n\n\u003cdiv class=\"accordion-header\"\u003e Caractéristiques \u003c\/div\u003e\n\n\u003cdiv class=\"accordion-content\"\u003e\n\n\u003c!-- Appliance Performance Subheader --\u003e\n\u003ch3 style=\"font-size: 16px; font-weight: bold; margin: 20px 0 10px; border-bottom: 2px solid #ddd; padding-bottom: 5px;\"\u003e Performance des appareils\u003c\/h3\u003e\n\n\u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003e Aucune donnée de performance disponible pour ce produit. \u003c\/p\u003e\n\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\u003c\/table\u003e\n\n\u003c!-- General Features Subheader --\u003e\n\u003ch3 style=\"font-size: 16px; font-weight: bold; margin: 20px 0 10px; border-bottom: 2px solid #ddd; padding-bottom: 5px;\"\u003e Caractéristiques générales\u003c\/h3\u003e\n\n\u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003e Aucune fonctionnalité générale n'est disponible pour ce produit. \u003c\/p\u003e\n\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\u003c\/table\u003e\n\n\u003c!-- Clearances Subheader --\u003e\n\u003ch3 style=\"font-size: 16px; font-weight: bold; margin: 20px 0 10px; border-bottom: 2px solid #ddd; padding-bottom: 5px;\"\u003e Autorisations\u003c\/h3\u003e\n\n\u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003e Aucune dédouanement n'est disponible pour ce produit. \u003c\/p\u003e\n\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\u003c\/table\u003e\n\n\u003c!-- See Less link inside accordion --\u003e\n\u003cdiv style=\"text-align: center; margin-top: 15px;\"\u003e \u003cspan id=\"seeLessSpecs\" class=\"see-link\" style=\"display: none;\"\u003eVoir moins\u003c\/span\u003e \u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\u003c!-- MANUALS COLLAPSIBLE --\u003e\n\u003cdiv id=\"manuals-accordion\" class=\"accordion\"\u003e\n\n\u003cdiv class=\"accordion-header\"\u003e Manuels et instructions \u003c\/div\u003e\n\n\u003cdiv class=\"accordion-content\"\u003e\n\n\u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003e Aucun manuel ni dépliant n'est disponible pour ce produit. \u003c\/p\u003e\n\n\u003cul\u003e\u003c!-- PDF Links Styled as Buttons --\u003e\u003c\/ul\u003e\n\n\u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 10px;\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\u003cp\u003e\u003c\/p\u003e","brand":"The North Flame","offers":[{"title":"Default Title","offer_id":43693656703027,"sku":"AC02353","price":379.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/AC02353.webp?v=1761079053"},{"product_id":"fusio-log-holder","title":"PORTE-BÛCHES FUSIO ","description":"\u003cstyle\u003e\n  \/* Accordion styling *\/\n  .accordion {\n    border: 1px solid #ddd;\n    border-radius: 5px;\n    margin-bottom: 20px;\n    background: #f9f9f9;\n  }\n  .accordion-header {\n    padding: 12px;\n    font-weight: bold;\n    cursor: pointer;\n    background: #eee;\n  }\n  .accordion-header:hover {\n    background: #ddd;\n  }\n  .accordion-content {\n    display: none;\n    padding: 15px;\n    border-top: 1px solid #ddd;\n    background: #fff;\n  }\n  .accordion-content.open {\n    display: block;\n  }\n\n  \/* Unified link styling *\/\n  .see-link {\n    color: #f37021; \/* orange *\/\n    text-decoration: none;\n    font-weight: bold;\n    cursor: pointer;\n  }\n  .see-link:hover {\n    text-decoration: underline;\n  }\n\n  \/* Quick specs box *\/\n  #quick-specs {\n    border: 1px solid #ddd;\n    border-radius: 8px;\n    padding: 15px;\n    background: #fff;\n    margin: 20px 0;\n    font-size: 14px;\n    line-height: 1.5;\n  }\n  #quick-specs div {\n    margin-bottom: 8px;\n  }\n  #quick-specs strong {\n    font-weight: bold;\n  }\n\n  \/* Keep the flags and country names on one line (when space allows) *\/\n  .flags-inline {\n    display: inline-flex;\n    align-items: center;\n    gap: 8px;\n    margin-left: 5px;\n    white-space: nowrap;\n  }\n  .flag-pair {\n    display: inline-flex;\n    align-items: center;\n    gap: 6px;\n  }\n  .flag-image {\n    width: 22px;\n    height: auto;\n    vertical-align: middle;\n  }\n\u003c\/style\u003e\n\n\u003c!-- PRODUCT DESCRIPTION (SENTENCE TEASER) --\u003e\n\u003cdiv\u003e\n\n\u003cp id=\"desc-teaser\"\u003e\u003c\/p\u003e\n\n\u003cspan id=\"desc-more\" style=\"display:none;\"\u003e\n\u003c\/span\u003e\n Ce porte-bûches original allie acier et bois de cerisier, et sa forme incurvée affirme un style résolument contemporain. Simplifiez-vous la vie en alimentant votre feu sans jamais être pris au dépourvu. Fabriqué au Canada avec un savoir-faire exceptionnel.\n\n\u003cp\u003e\n \u003cstrong\u003eDimensions :\u003c\/strong\u003e 20 po H x 18 1\/2 po L x 24 po P.\n\u003c\/p\u003e\n\n\n\n\u003c\/div\u003e\n\n \u003cspan id=\"seeMoreDesc\" class=\"see-link\" style=\"margin-bottom:20px; display:inline-block;\"\u003e\nDescription complète\n\u003c\/span\u003e \n\n\u003c!-- QUICK SPECIFICATIONS BOX --\u003e\n\u003cdiv id=\"quick-specs\"\u003e\n\n\u003cdiv\u003e\n\n 🌍 \u003cstrong\u003eFabriqué en :\u003c\/strong\u003e\n\u003cspan class=\"flags-inline\"\u003e \n\u003cspan class=\"flag-pair\"\u003e\n\u003cimg class=\"flag-image\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/download.png?v=1758991613\" alt=\"Drapeau du Canada\"\u003e\n \u003cspan\u003eCanada\u003c\/span\u003e\n\u003c\/span\u003e\n\n\u003c\/span\u003e\n\u003c\/div\u003e\n\n\n\u003cdiv style=\"margin-top: 10px;\"\u003e\n\n \u003cspan id=\"seeFullSpecs\" class=\"see-link\"\u003eSpécifications complètes\u003c\/span\u003e \n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c!-- SPECIFICATIONS COLLAPSIBLE --\u003e\n\u003cdiv id=\"specs-accordion\" class=\"accordion\"\u003e\n\n\u003cdiv class=\"accordion-header\"\u003e Caractéristiques \u003c\/div\u003e\n\n\u003cdiv class=\"accordion-content\"\u003e\n\n\u003c!-- Appliance Performance Subheader --\u003e\n\u003ch3 style=\"font-size: 16px; font-weight: bold; margin: 20px 0 10px; border-bottom: 2px solid #ddd; padding-bottom: 5px;\"\u003e Performance des appareils \u003c\/h3\u003e\n\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n\n\u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003e Aucune donnée de performance disponible pour ce produit. \u003c\/p\u003e\n\n\n\u003c\/table\u003e\n\n\n\u003c!-- General Features Subheader --\u003e\n\u003ch3 style=\"font-size: 16px; font-weight: bold; margin: 20px 0 10px; border-bottom: 2px solid #ddd; padding-bottom: 5px;\"\u003e Caractéristiques générales \u003c\/h3\u003e\n\n\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n\n\u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003e Aucune fonctionnalité générale n'est disponible pour ce produit. \u003c\/p\u003e\n\n\n\u003c\/table\u003e\n\n\n\u003c!-- Clearances Subheader --\u003e\n\u003ch3 style=\"font-size: 16px; font-weight: bold; margin: 20px 0 10px; border-bottom: 2px solid #ddd; padding-bottom: 5px;\"\u003e\n\n Autorisations \n\n\u003c\/h3\u003e\n\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\n\n\u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003e Aucune dédouanement n'est disponible pour ce produit. \u003c\/p\u003e\n\n\n\u003c\/table\u003e\n\n\n\u003c!-- See Less link inside accordion --\u003e\n\u003cdiv style=\"text-align:center; margin-top: 15px;\"\u003e\n\n \u003cspan id=\"seeLessSpecs\" class=\"see-link\" style=\"display:none;\"\u003eVoir moins\u003c\/span\u003e\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c!-- MANUALS COLLAPSIBLE --\u003e\n\u003cdiv id=\"manuals-accordion\" class=\"accordion\"\u003e\n\n\u003cdiv class=\"accordion-header\"\u003e Manuels et instructions \u003c\/div\u003e\n\n\u003cdiv class=\"accordion-content\"\u003e\n\n\u003cul\u003e\n\n\u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003e Aucun manuel ni dépliant n'est disponible pour ce produit. \u003c\/p\u003e\n\n\u003c!-- PDF Links Styled as Buttons --\u003e\n\u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 10px;\"\u003e\n\u003c\/div\u003e\n\n\n\u003c\/ul\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003cscript\u003e\n  document.addEventListener('DOMContentLoaded', function () {\n    \/\/ TEASER: compute first sentence from the full description content (desc-more)\n    const descTeaserP = document.getElementById('desc-teaser');\n    const descMoreSpan = document.getElementById('desc-more');\n    const descToggle = document.getElementById('seeMoreDesc');\n\n    \/\/ use textContent of the hidden desc-more to compute the first sentence\n    const fullText = descMoreSpan ? descMoreSpan.innerText.trim() : '';\n    let firstPeriod = fullText.indexOf('.');\n    if (firstPeriod === -1) firstPeriod = fullText.length;\n    descTeaserP.textContent = fullText.substring(0, firstPeriod + (firstPeriod \u003c fullText.length ? 1 : 0)).trim();\n\n    \/\/ Initially ensure full description hidden and teaser visible\n    descMoreSpan.style.display = 'none';\n    descTeaserP.style.display = 'block';\n    descToggle.textContent = 'Full Description';\n\n    descToggle.addEventListener('click', function () {\n      const teaser = descTeaserP;\n      const moreText = descMoreSpan;\n\n      if (moreText.style.display === 'none') {\n        \/\/ Expand full description: hide teaser\n        teaser.style.display = 'none';\n        moreText.style.display = 'block';\n        this.textContent = 'See Less';\n        \/\/ optional: scroll into view so user sees the expanded description\n        this.scrollIntoView({ behavior: 'smooth', block: 'center' });\n      } else {\n        \/\/ Collapse to teaser\n        moreText.style.display = 'none';\n        teaser.style.display = 'block';\n        this.textContent = 'Full Description';\n      }\n    });\n\n    \/\/ ACCORDION logic (only one open at a time) + quick-specs handling\n    const accordions = document.querySelectorAll('.accordion');\n    const quickSpecs = document.getElementById('quick-specs');\n    const specsAccordion = document.getElementById('specs-accordion');\n    const specsContent = specsAccordion.querySelector('.accordion-content');\n    const seeLessSpecs = document.getElementById('seeLessSpecs');\n    const seeFullSpecs = document.getElementById('seeFullSpecs');\n\n    function closeAllAccordions(exceptAccordion) {\n      accordions.forEach(acc =\u003e {\n        if (acc !== exceptAccordion) {\n          acc.querySelector('.accordion-content').classList.remove('open');\n        }\n      });\n    }\n\n    function refreshUIState() {\n      \/\/ If specs open =\u003e hide quick-specs and show See Less inside specs\n      if (specsContent.classList.contains('open')) {\n        quickSpecs.style.display = 'none';\n        seeLessSpecs.style.display = 'inline-block';\n      } else {\n        quickSpecs.style.display = 'block';\n        seeLessSpecs.style.display = 'none';\n      }\n    }\n\n    \/\/ Set up header click handlers to toggle and enforce \"one open at a time\"\n    document.querySelectorAll('.accordion').forEach(acc =\u003e {\n      const header = acc.querySelector('.accordion-header');\n      const content = acc.querySelector('.accordion-content');\n\n      header.addEventListener('click', function () {\n        \/\/ if clicking the same accordion that is open =\u003e close it\n        if (content.classList.contains('open')) {\n          content.classList.remove('open');\n        } else {\n          closeAllAccordions(acc); \/\/ close others\n          content.classList.add('open');\n        }\n        refreshUIState();\n      });\n    });\n\n    \/\/ \"Full Specifications\" link: open the specs accordion (or close if already open)\n    seeFullSpecs.addEventListener('click', function () {\n      if (!specsContent.classList.contains('open')) {\n        closeAllAccordions(specsAccordion);\n        specsContent.classList.add('open');\n      } else {\n        specsContent.classList.remove('open');\n      }\n      refreshUIState();\n      \/\/ scroll to specifications area when opening\n      if (specsContent.classList.contains('open')) {\n        specsAccordion.scrollIntoView({ behavior: 'smooth', block: 'start' });\n      }\n    });\n\n    \/\/ \"See Less\" link located inside the Specifications content (after Clearances)\n    seeLessSpecs.addEventListener('click', function () {\n      if (specsContent.classList.contains('open')) {\n        specsContent.classList.remove('open');\n        refreshUIState();\n        \/\/ Reset the top Full Specifications link text if you want (kept as \"Full Specifications\")\n        \/\/ show quick specs again (handled in refreshUIState)\n        \/\/ scroll to the quick-specs area for the user's convenience\n        document.getElementById('quick-specs').scrollIntoView({ behavior: 'smooth', block: 'center' });\n      }\n    });\n\n    \/\/ Initial UI state\n    refreshUIState();\n  });\n\u003c\/script\u003e\n","brand":"The North Flame","offers":[{"title":"Default Title","offer_id":43693658636339,"sku":"AC02627","price":255.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/AC02627_web.webp?v=1761079202"}],"url":"https:\/\/thenorthflame.com\/fr\/collections\/log-holder.oembed","provider":"The North Flame","version":"1.0","type":"link"}