{"title":"T-shirts et casquettes","description":"\u003cdiv class=\"texts-box\"\u003e\n\n\u003cp class=\"description\"\u003e Conçus pour les installations nécessitant un décalage, nos tés et bouchons de tuyauterie à paroi simple facilitent l'inspection, l'entretien et le nettoyage.\u003c\/p\u003e\n\n\n\u003c\/div\u003e","products":[{"product_id":"tee-with-cap-single-wall-black-pipe-6o","title":"TÉ AVEC BOUCHON TUYAU NOIR À PAROI SIMPLE - 6\"Ø ","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 Utilisé lorsqu'un décalage est nécessaire. Pour faciliter l'inspection, l'entretien et le nettoyage.\n\n\u003cul\u003e\n\n\u003cli\u003e Nos tuyaux et raccords sont fabriqués en acier de qualité supérieure de calibre 22.\u003c\/li\u003e\n\n\u003cli\u003e Nos tuyaux sont soudés, ce qui leur donne une apparence beaucoup plus esthétique et assure un assemblage plus robuste, contrairement aux autres tuyaux à clipser de calibre 24.\u003c\/li\u003e\n\n\u003cli\u003e Nos tuyaux de poêle sont assortis d'une garantie à vie limitée pour votre tranquillité d'esprit.\u003c\/li\u003e\n\n\n\u003c\/ul\u003e\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\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\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 Dédouanements \n\n\u003c\/h3\u003e\n\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\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\/45589A_09-09-2015_003.pdf?v=1760023803\" 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":43676312404019,"sku":"SP00110","price":75.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/SP00110-SP00111-SP00112.webp?v=1760101439"},{"product_id":"tee-with-cap-single-wall-black-pipe-7o","title":"TÉ AVEC BOUCHON TUYAU NOIR À PAROI SIMPLE - 7\"Ø ","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 Utilisé lorsqu'un décalage est nécessaire. Pour faciliter l'inspection, l'entretien et le nettoyage.\n\n\u003cul\u003e\n\n\u003cli\u003e Nos tuyaux et raccords sont fabriqués en acier de qualité supérieure de calibre 22.\u003c\/li\u003e\n\n\u003cli\u003e Nos tuyaux sont soudés, ce qui leur donne une apparence beaucoup plus esthétique et assure un assemblage plus robuste, contrairement aux autres tuyaux à clipser de calibre 24.\u003c\/li\u003e\n\n\u003cli\u003e Nos tuyaux de poêle sont assortis d'une garantie à vie limitée pour votre tranquillité d'esprit.\u003c\/li\u003e\n\n\n\u003c\/ul\u003e\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\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\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 Dédouanements \n\n\u003c\/h3\u003e\n\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\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\/45589A_09-09-2015_003.pdf?v=1760023803\" 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":43676313485363,"sku":"SP00111","price":78.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/SP00110-SP00111-SP00112.webp?v=1760101439"},{"product_id":"tee-with-cap-single-wall-black-pipe-8o","title":"TÉ AVEC BOUCHON TUYAU NOIR À PAROI SIMPLE - 8\"Ø ","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 Utilisé lorsqu'un décalage est nécessaire. Pour faciliter l'inspection, l'entretien et le nettoyage.\n\n\u003cul\u003e\n\n\u003cli\u003e Nos tuyaux et raccords sont fabriqués en acier de qualité supérieure de calibre 22.\u003c\/li\u003e\n\n\u003cli\u003e Nos tuyaux sont soudés, ce qui leur donne une apparence beaucoup plus esthétique et assure un assemblage plus robuste, contrairement aux autres tuyaux à clipser de calibre 24.\u003c\/li\u003e\n\n\u003cli\u003e Nos tuyaux de poêle sont assortis d'une garantie à vie limitée pour votre tranquillité d'esprit.\u003c\/li\u003e\n\n\n\u003c\/ul\u003e\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\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\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 Dédouanements \n\n\u003c\/h3\u003e\n\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\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\/45589A_09-09-2015_003.pdf?v=1760023803\" 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":43676334129203,"sku":"SP00112","price":81.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/SP00110-SP00111-SP00112.webp?v=1760101439"},{"product_id":"cap-single-wall-black-pipe-6o","title":"Bouchon pour tuyau noir à simple paroi - 6\"Ø ","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 Permet la fermeture du raccord en T pour faciliter l'inspection, l'entretien et le nettoyage.\n\n\u003cul\u003e\n\n\u003cli\u003e Nos tuyaux et raccords sont fabriqués en acier de qualité supérieure de calibre 22.\u003c\/li\u003e\n\n\u003cli\u003e Nos tuyaux sont soudés, ce qui leur donne une apparence beaucoup plus esthétique et assure un assemblage plus robuste, contrairement aux autres tuyaux à clipser de calibre 24.\u003c\/li\u003e\n\n\u003cli\u003e Nos tuyaux de poêle sont assortis d'une garantie à vie limitée pour votre tranquillité d'esprit.\u003c\/li\u003e\n\n\n\u003c\/ul\u003e\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\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\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 Dédouanements \n\n\u003c\/h3\u003e\n\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\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\/45589A_09-09-2015_003.pdf?v=1760023803\" 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":43676334981171,"sku":"SP00130","price":33.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/SP00130-SP00131-SP00132_121bf236-c40d-433d-990f-64cd33cb91c6.webp?v=1760102426"},{"product_id":"cap-single-wall-black-pipe-7o","title":"Bouchon pour tuyau noir à simple paroi - 7\"Ø ","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 Permet la fermeture du raccord en T pour faciliter l'inspection, l'entretien et le nettoyage.\n\n\u003cul\u003e\n\n\u003cli\u003e Nos tuyaux et raccords sont fabriqués en acier de qualité supérieure de calibre 22.\u003c\/li\u003e\n\n\u003cli\u003e Nos tuyaux sont soudés, ce qui leur donne une apparence beaucoup plus esthétique et assure un assemblage plus robuste, contrairement aux autres tuyaux à clipser de calibre 24.\u003c\/li\u003e\n\n\u003cli\u003e Nos tuyaux de poêle sont assortis d'une garantie à vie limitée pour votre tranquillité d'esprit.\u003c\/li\u003e\n\n\n\u003c\/ul\u003e\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\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\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 Dédouanements \n\n\u003c\/h3\u003e\n\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\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\/45589A_09-09-2015_003.pdf?v=1760023803\" 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":43676335046707,"sku":"SP00131","price":36.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/SP00130-SP00131-SP00132_121bf236-c40d-433d-990f-64cd33cb91c6.webp?v=1760102426"},{"product_id":"cap-single-wall-black-pipe-8o","title":"Bouchon pour tuyau noir à simple paroi - 8\"Ø ","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 Permet la fermeture du raccord en T pour faciliter l'inspection, l'entretien et le nettoyage.\n\n\u003cul\u003e\n\n\u003cli\u003e Nos tuyaux et raccords sont fabriqués en acier de qualité supérieure de calibre 22.\u003c\/li\u003e\n\n\u003cli\u003e Nos tuyaux sont soudés, ce qui leur donne une apparence beaucoup plus esthétique et assure un assemblage plus robuste, contrairement aux autres tuyaux à clipser de calibre 24.\u003c\/li\u003e\n\n\u003cli\u003e Nos tuyaux de poêle sont assortis d'une garantie à vie limitée pour votre tranquillité d'esprit.\u003c\/li\u003e\n\n\n\u003c\/ul\u003e\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\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\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 Dédouanements \n\n\u003c\/h3\u003e\n\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\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\/45589A_09-09-2015_003.pdf?v=1760023803\" 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":43676335177779,"sku":"SP00132","price":36.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/SP00130-SP00131-SP00132_121bf236-c40d-433d-990f-64cd33cb91c6.webp?v=1760102426"}],"url":"https:\/\/thenorthflame.com\/fr\/collections\/tees-and-caps.oembed","provider":"The North Flame","version":"1.0","type":"link"}