{"title":"Accessories","description":"\u003cp class=\"description-accessoire-categories\"\u003eAdd the final touch to your stove or fireplace with our accessories - tool sets, practical items for easy maintenance, and more!\u003c\/p\u003e","products":[{"product_id":"cover-for-bora-outdoor-fireplace","title":"COVER FOR BORA OUTDOOR FIREPLACE","description":"\u003cp\u003e\u003cspan\u003eThis protective cover is specially designed for our Bora outdoor fireplace. Made of 600 denier waterproof polyester, the cover has increased fade and weather resistance to protect your fireplace when not in use. The U-shaped hooks, located on the lower edge of the cover, hook onto the base of the fireplace to keep the cover securely in place.\u003c\/span\u003e\u003c\/p\u003e","brand":"The North Flame","offers":[{"title":"Default Title","offer_id":43692150816819,"sku":"AC00211","price":120.0,"currency_code":"CAD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/AC00211.webp?v=1760980766"},{"product_id":"vinyl-siding-standoff-kit","title":"VINYL SIDING STANDOFF KIT","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  \u003cp id=\"desc-teaser\"\u003e\u003c\/p\u003e\n  \u003cspan id=\"desc-more\" style=\"display:none;\"\u003e\n    \u003cp\u003e\n      Stainless steel wall connector including: 1x vinyl protector, 8x steel rivets and 1x 300 mL high-temperature silver silicone.\n    \u003c\/p\u003e\n  \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cspan id=\"seeMoreDesc\" class=\"see-link\" style=\"margin-bottom:20px; display:inline-block;\"\u003e\n  Full Description\n\u003c\/span\u003e\n\n\u003c!-- QUICK SPECIFICATIONS BOX --\u003e\n\u003cdiv id=\"quick-specs\"\u003e\n  \u003cdiv\u003e\n    🌍 \u003cstrong\u003eMade in:\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=\"Canada Flag\"\u003e\n        \u003cspan\u003eCanada\u003c\/span\u003e\n      \u003c\/span\u003e\n    \u003c\/span\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv style=\"margin-top: 10px;\"\u003e\n    \u003cspan id=\"seeFullSpecs\" class=\"see-link\"\u003eFull Specifications\u003c\/span\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- SPECIFICATIONS COLLAPSIBLE --\u003e\n\u003cdiv id=\"specs-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eSpecifications\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\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;\"\u003eAppliance Performance\u003c\/h3\u003e\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo appliance performance available for this product\u003c\/p\u003e\n    \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;\"\u003eGeneral Features\u003c\/h3\u003e\n\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo general features available for this product\u003c\/p\u003e\n    \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\n  Clearances\n\u003c\/h3\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\n  \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo clearances available for this product\u003c\/p\u003e\n\u003c\/table\u003e\n\n    \u003c!-- See Less link inside accordion --\u003e\n    \u003cdiv style=\"text-align:center; margin-top: 15px;\"\u003e\n      \u003cspan id=\"seeLessSpecs\" class=\"see-link\" style=\"display:none;\"\u003eSee Less\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- MANUALS COLLAPSIBLE --\u003e\n\u003cdiv id=\"manuals-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eManuals \u0026amp; Instructions\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\n    \u003cul\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eConsult the available manuals and leaflets for more information on performance, installation and use requirements, etc.\u003c\/p\u003e\n      \u003c!-- PDF Links Styled as Buttons --\u003e\n      \u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 10px;\"\u003e\n        \u003c!-- Installation Instructions --\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\/46184AF_27-05-2020.pdf?v=1760981087\" target=\"_blank\"\u003e\n          📄 Installation Instructions \u003cspan style=\"margin-left: auto;\"\u003e🔗\u003c\/span\u003e\n        \u003c\/a\u003e\n      \u003c\/div\u003e\n    \u003c\/ul\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\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":43692151504947,"sku":"AC01051","price":59.0,"currency_code":"CAD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/AC01051.webp?v=1760981027"},{"product_id":"extension-for-modular-heat-shield-system-ac02762","title":"EXTENSION FOR MODULAR HEAT SHIELD SYSTEM AC02762","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  \u003cp id=\"desc-teaser\"\u003e\u003c\/p\u003e\n  \u003cspan id=\"desc-more\" style=\"display:none;\"\u003e\n    \u003cp\u003e\n      Allows to extend the certified modular heat shield system (AC02762). Made of powder-coated steel, ensuring superior durability and quality. Includes panels and wall brackets.\n    \u003c\/p\u003e\n    \u003cp\u003e\n      \u003cstrong\u003eDimensions:\u003c\/strong\u003e 14 1\/8'' W x 53'' H x 2 1\/2'' D\n    \u003c\/p\u003e\n    \u003cp\u003e\n      \u003cstrong\u003eWeight:\u003c\/strong\u003e 17 lb (7.7 kg)\n    \u003c\/p\u003e\n    \u003cp\u003e\n      Refer to the user manual for details on installing this product. Safety tested according to UL 1618 and ULC S632 by an accredited laboratory.\n    \u003c\/p\u003e\n  \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cspan id=\"seeMoreDesc\" class=\"see-link\" style=\"margin-bottom:20px; display:inline-block;\"\u003e\n  Full Description\n\u003c\/span\u003e\n\n\u003c!-- QUICK SPECIFICATIONS BOX --\u003e\n\u003cdiv id=\"quick-specs\"\u003e\n  \u003cdiv\u003e\n    🌍 \u003cstrong\u003eMade in:\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=\"Canada Flag\"\u003e\n        \u003cspan\u003eCanada\u003c\/span\u003e\n      \u003c\/span\u003e\n    \u003c\/span\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv style=\"margin-top: 10px;\"\u003e\n    \u003cspan id=\"seeFullSpecs\" class=\"see-link\"\u003eFull Specifications\u003c\/span\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- SPECIFICATIONS COLLAPSIBLE --\u003e\n\u003cdiv id=\"specs-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eSpecifications\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\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;\"\u003eAppliance Performance\u003c\/h3\u003e\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo appliance performance available for this product\u003c\/p\u003e\n    \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;\"\u003eGeneral Features\u003c\/h3\u003e\n\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo general features available for this product\u003c\/p\u003e\n    \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\n  Clearances\n\u003c\/h3\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\n  \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo clearances available for this product\u003c\/p\u003e\n\u003c\/table\u003e\n\n    \u003c!-- See Less link inside accordion --\u003e\n    \u003cdiv style=\"text-align:center; margin-top: 15px;\"\u003e\n      \u003cspan id=\"seeLessSpecs\" class=\"see-link\" style=\"display:none;\"\u003eSee Less\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- MANUALS COLLAPSIBLE --\u003e\n\u003cdiv id=\"manuals-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eManuals \u0026amp; Instructions\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\n    \u003cul\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eConsult the available manuals and leaflets for more information on performance, installation and use requirements, etc.\u003c\/p\u003e\n      \u003c!-- PDF Links Styled as Buttons --\u003e\n      \u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 10px;\"\u003e\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\/53-x-29-14-certified-modular-heat-shield-system_Manual_001.pdf?v=1760981171\" target=\"_blank\"\u003e\n          📄 Installation \u0026amp; User's Manual \u003cspan style=\"margin-left: auto;\"\u003e🔗\u003c\/span\u003e\n        \u003c\/a\u003e\n      \u003c\/div\u003e\n    \u003c\/ul\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\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":43692152487987,"sku":"AC02713","price":160.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/AC02713.webp?v=1760981197"},{"product_id":"53-x-58-1-2-certified-modular-heat-shield-system","title":"53\" x 58 1\/2\" CERTIFIED MODULAR HEAT SHIELD SYSTEM","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  \u003cp id=\"desc-teaser\"\u003e\u003c\/p\u003e\n  \u003cspan id=\"desc-more\" style=\"display:none;\"\u003e\n    \u003cp\u003e\n      Designed for freestanding solid fuel stoves. A simple, attractive, and safe solution to effectively reduce wall clearences. Made of powder-coated steel, ensuring superior durability and quality. Includes panels and wall brackets.\n    \u003c\/p\u003e\n    \u003cp\u003e\n      \u003cstrong\u003eDimensions:\u003c\/strong\u003e 58 1\/2'' W x 53'' H x 2 1\/2'' D\n    \u003c\/p\u003e\n    \u003cp\u003e\n      \u003cstrong\u003eWeight:\u003c\/strong\u003e 61 lb (28 kg)\n    \u003c\/p\u003e\n    \u003cp\u003e\n      Refer to the user manual for details on installing this product. Safety tested according to UL 1618 and ULC S632 by an accredited laboratory.\n    \u003c\/p\u003e\n  \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cspan id=\"seeMoreDesc\" class=\"see-link\" style=\"margin-bottom:20px; display:inline-block;\"\u003e\n  Full Description\n\u003c\/span\u003e\n\n\u003c!-- QUICK SPECIFICATIONS BOX --\u003e\n\u003cdiv id=\"quick-specs\"\u003e\n  \u003cdiv\u003e\n    🌍 \u003cstrong\u003eMade in:\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=\"Canada Flag\"\u003e\n        \u003cspan\u003eCanada\u003c\/span\u003e\n      \u003c\/span\u003e\n    \u003c\/span\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv style=\"margin-top: 10px;\"\u003e\n    \u003cspan id=\"seeFullSpecs\" class=\"see-link\"\u003eFull Specifications\u003c\/span\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- SPECIFICATIONS COLLAPSIBLE --\u003e\n\u003cdiv id=\"specs-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eSpecifications\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\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;\"\u003eAppliance Performance\u003c\/h3\u003e\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo appliance performance available for this product\u003c\/p\u003e\n    \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;\"\u003eGeneral Features\u003c\/h3\u003e\n\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo general features available for this product\u003c\/p\u003e\n    \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\n  Clearances\n\u003c\/h3\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\n  \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo clearances available for this product\u003c\/p\u003e\n\u003c\/table\u003e\n\n    \u003c!-- See Less link inside accordion --\u003e\n    \u003cdiv style=\"text-align:center; margin-top: 15px;\"\u003e\n      \u003cspan id=\"seeLessSpecs\" class=\"see-link\" style=\"display:none;\"\u003eSee Less\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- MANUALS COLLAPSIBLE --\u003e\n\u003cdiv id=\"manuals-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eManuals \u0026amp; Instructions\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\n    \u003cul\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eConsult the available manuals and leaflets for more information on performance, installation and use requirements, etc.\u003c\/p\u003e\n      \u003c!-- PDF Links Styled as Buttons --\u003e\n      \u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 10px;\"\u003e\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\/53-x-29-14-certified-modular-heat-shield-system_Manual_001.pdf?v=1760981171\" target=\"_blank\"\u003e\n          📄 Installation \u0026amp; User's Manual \u003cspan style=\"margin-left: auto;\"\u003e🔗\u003c\/span\u003e\n        \u003c\/a\u003e\n      \u003c\/div\u003e\n    \u003c\/ul\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\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":43692152815667,"sku":"AC02762","price":450.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/AC02762.webp?v=1760981564"},{"product_id":"60-x-64-1-8-certified-modular-heat-shield-system","title":"60\" x 64 1\/8\" CERTIFIED MODULAR HEAT SHIELD SYSTEM","description":"\u003cp\u003eDesigned for solid fuel cookstoves. A simple, attractive, and safe solution to effectively reduce wall clearences. Includes panels and wall brackets.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eDimensions:\u003c\/strong\u003e 64 1\/8'' W x 60'' H x 2 1\/2'' D\u003cbr\u003e\u003cstrong\u003eWeight:\u003c\/strong\u003e 72 lb (32.7 kg)\u003c\/p\u003e\n\u003cp\u003eAn extension (AC02766) is available for appliances that require larger wall protection.\u003c\/p\u003e\n\u003cp\u003eRefer to the user manual for details on installing this product. Safety tested according to UL 1618 and ULC S632 by an accredited laboratory.\u003c\/p\u003e\n\u003ch4\u003e\u003cstrong\u003eManuals and Instructions\u003c\/strong\u003e\u003c\/h4\u003e\n\u003cdiv class=\"manual-description-text\"\u003e\n\u003cp\u003eConsult the available manuals and leaflets for more information on performance, installation and use requirements, etc.\u003c\/p\u003e\n\u003cp\u003e🔗\u003ca href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/46335A_2022-11-30.pdf?v=1760981595\"\u003eInstallation and user's manual\u003c\/a\u003e\u003c\/p\u003e\n\u003c\/div\u003e","brand":"The North Flame","offers":[{"title":"Default Title","offer_id":43692152913971,"sku":"AC02765","price":679.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/AC02765_H.webp?v=1760981620"},{"product_id":"extension-for-modular-heat-shield-system-ac02765","title":"EXTENSION FOR MODULAR HEAT SHIELD SYSTEM AC02765","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  \u003cp id=\"desc-teaser\"\u003e\u003c\/p\u003e\n  \u003cspan id=\"desc-more\" style=\"display:none;\"\u003e\n    \u003cp\u003e\n      Allows to extend the certified modular heat shield system - AC02765. Includes panels and wall brackets.\n    \u003c\/p\u003e\n    \u003cp\u003e\n      \u003cstrong\u003eDimensions:\u003c\/strong\u003e 20'' W x 60'' H x 2 1\/2'' D\n    \u003c\/p\u003e\n    \u003cp\u003e\n      \u003cstrong\u003eWeight:\u003c\/strong\u003e 25 lb (11.3 kg)\n    \u003c\/p\u003e\n    \u003cp\u003e\n      Refer to the user manual for details on installing this product. Safety tested according to UL 1618 and ULC S632 by an accredited laboratory.\n    \u003c\/p\u003e\n  \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cspan id=\"seeMoreDesc\" class=\"see-link\" style=\"margin-bottom:20px; display:inline-block;\"\u003e\n  Full Description\n\u003c\/span\u003e\n\n\u003c!-- QUICK SPECIFICATIONS BOX --\u003e\n\u003cdiv id=\"quick-specs\"\u003e\n  \u003cdiv\u003e\n    🌍 \u003cstrong\u003eMade in:\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=\"Canada Flag\"\u003e\n        \u003cspan\u003eCanada\u003c\/span\u003e\n      \u003c\/span\u003e\n    \u003c\/span\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv style=\"margin-top: 10px;\"\u003e\n    \u003cspan id=\"seeFullSpecs\" class=\"see-link\"\u003eFull Specifications\u003c\/span\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- SPECIFICATIONS COLLAPSIBLE --\u003e\n\u003cdiv id=\"specs-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eSpecifications\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\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;\"\u003eAppliance Performance\u003c\/h3\u003e\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo appliance performance available for this product\u003c\/p\u003e\n    \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;\"\u003eGeneral Features\u003c\/h3\u003e\n\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo general features available for this product\u003c\/p\u003e\n    \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\n  Clearances\n\u003c\/h3\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\n  \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo clearances available for this product\u003c\/p\u003e\n\u003c\/table\u003e\n\n    \u003c!-- See Less link inside accordion --\u003e\n    \u003cdiv style=\"text-align:center; margin-top: 15px;\"\u003e\n      \u003cspan id=\"seeLessSpecs\" class=\"see-link\" style=\"display:none;\"\u003eSee Less\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- MANUALS COLLAPSIBLE --\u003e\n\u003cdiv id=\"manuals-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eManuals \u0026amp; Instructions\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\n    \u003cul\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eConsult the available manuals and leaflets for more information on performance, installation and use requirements, etc.\u003c\/p\u003e\n      \u003c!-- PDF Links Styled as Buttons --\u003e\n      \u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 10px;\"\u003e\n        \u003c!-- Installation Instructions --\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\/46335A_2022-11-30.pdf?v=1760981595\" target=\"_blank\"\u003e\n          📄 Installation Instructions \u003cspan style=\"margin-left: auto;\"\u003e🔗\u003c\/span\u003e\n        \u003c\/a\u003e\n      \u003c\/div\u003e\n    \u003c\/ul\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\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":43692153929779,"sku":"AC02766","price":225.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/AC02766_H.webp?v=1760981871"},{"product_id":"heat-shield-double-pipe-only","title":"HEAT SHIELD (DOUBLE PIPE ONLY)","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  \u003cp id=\"desc-teaser\"\u003e\u003c\/p\u003e\n  \u003cspan id=\"desc-more\" style=\"display:none;\"\u003e\n    \u003cp\u003e\n      Cape Town 1800 optional heat shield is used with double pipe only to protect surrounding surfaces from the intense heat generated by the wood stove.\n    \u003c\/p\u003e\n  \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cspan id=\"seeMoreDesc\" class=\"see-link\" style=\"margin-bottom:20px; display:inline-block;\"\u003e\n  Full Description\n\u003c\/span\u003e\n\n\u003c!-- QUICK SPECIFICATIONS BOX --\u003e\n\u003cdiv id=\"quick-specs\"\u003e\n  \u003cdiv\u003e\n    🌍 \u003cstrong\u003eMade in:\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=\"Canada Flag\"\u003e\n        \u003cspan\u003eCanada\u003c\/span\u003e\n      \u003c\/span\u003e\n    \u003c\/span\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv style=\"margin-top: 10px;\"\u003e\n    \u003cspan id=\"seeFullSpecs\" class=\"see-link\"\u003eFull Specifications\u003c\/span\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- SPECIFICATIONS COLLAPSIBLE --\u003e\n\u003cdiv id=\"specs-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eSpecifications\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\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;\"\u003eAppliance Performance\u003c\/h3\u003e\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo appliance performance available for this product\u003c\/p\u003e\n    \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;\"\u003eGeneral Features\u003c\/h3\u003e\n\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo general features available for this product\u003c\/p\u003e\n    \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\n  Clearances\n\u003c\/h3\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\n  \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo clearances available for this product\u003c\/p\u003e\n\u003c\/table\u003e\n\n    \u003c!-- See Less link inside accordion --\u003e\n    \u003cdiv style=\"text-align:center; margin-top: 15px;\"\u003e\n      \u003cspan id=\"seeLessSpecs\" class=\"see-link\" style=\"display:none;\"\u003eSee Less\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- MANUALS COLLAPSIBLE --\u003e\n\u003cdiv id=\"manuals-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eManuals \u0026amp; Instructions\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\n    \u003cul\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eConsult the available manuals and leaflets for more information on performance, installation and use requirements, etc.\u003c\/p\u003e\n      \u003c!-- PDF Links Styled as Buttons --\u003e\n      \u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 10px;\"\u003e\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\/46224AF_2020-07-13.pdf?v=1760982073\" target=\"_blank\"\u003e\n          📄 Installation \u0026amp; User's Manual \u003cspan style=\"margin-left: auto;\"\u003e🔗\u003c\/span\u003e\n        \u003c\/a\u003e\n      \u003c\/div\u003e\n    \u003c\/ul\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\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":43692154224691,"sku":"AC02791","price":120.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/AC02791.webp?v=1760982207"},{"product_id":"rear-heat-shield-for-atlas-cook-stove","title":"REAR HEAT SHIELD FOR ATLAS COOK STOVE","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  \u003cp id=\"desc-teaser\"\u003e\u003c\/p\u003e\n  \u003cspan id=\"desc-more\" style=\"display:none;\"\u003e\n    \u003cp\u003e\n      This optional heat shield surrounding surfaces from the intense heat generated by your Atlas wood-fired cookstove.\n    \u003c\/p\u003e\n  \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cspan id=\"seeMoreDesc\" class=\"see-link\" style=\"margin-bottom:20px; display:inline-block;\"\u003e\n  Full Description\n\u003c\/span\u003e\n\n\u003c!-- QUICK SPECIFICATIONS BOX --\u003e\n\u003cdiv id=\"quick-specs\"\u003e\n  \u003cdiv\u003e\n    🌍 \u003cstrong\u003eMade in:\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=\"Canada Flag\"\u003e\n        \u003cspan\u003eCanada\u003c\/span\u003e\n      \u003c\/span\u003e\n    \u003c\/span\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv style=\"margin-top: 10px;\"\u003e\n    \u003cspan id=\"seeFullSpecs\" class=\"see-link\"\u003eFull Specifications\u003c\/span\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- SPECIFICATIONS COLLAPSIBLE --\u003e\n\u003cdiv id=\"specs-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eSpecifications\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\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;\"\u003eAppliance Performance\u003c\/h3\u003e\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo appliance performance available for this product\u003c\/p\u003e\n    \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;\"\u003eGeneral Features\u003c\/h3\u003e\n\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo general features available for this product\u003c\/p\u003e\n    \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\n  Clearances\n\u003c\/h3\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\n  \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo clearances available for this product\u003c\/p\u003e\n\u003c\/table\u003e\n\n    \u003c!-- See Less link inside accordion --\u003e\n    \u003cdiv style=\"text-align:center; margin-top: 15px;\"\u003e\n      \u003cspan id=\"seeLessSpecs\" class=\"see-link\" style=\"display:none;\"\u003eSee Less\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- MANUALS COLLAPSIBLE --\u003e\n\u003cdiv id=\"manuals-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eManuals \u0026amp; Instructions\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\n    \u003cul\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eConsult the available manuals and leaflets for more information on performance, installation and use requirements, etc.\u003c\/p\u003e\n      \u003c!-- PDF Links Styled as Buttons --\u003e\n      \u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 10px;\"\u003e\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\/45963AF_2018-10-29.pdf?v=1761013019\" target=\"_blank\"\u003e\n          📄 Installation \u0026amp; User's Manual \u003cspan style=\"margin-left: auto;\"\u003e🔗\u003c\/span\u003e\n        \u003c\/a\u003e\n      \u003c\/div\u003e\n    \u003c\/ul\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\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":43692704464947,"sku":"AC02784","price":169.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/AC02784.webp?v=1761012822"},{"product_id":"black-heat-shield","title":"BLACK HEAT SHIELD","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  \u003cp id=\"desc-teaser\"\u003e\u003c\/p\u003e\n  \u003cspan id=\"desc-more\" style=\"display:none;\"\u003e\n    \u003cp\u003e\n      Designed to protect your walls from the intense heat generated by your wood stove. Made of heat-resistant steel, it offers reliable and durable protection. Easy to install and assemble.\n    \u003c\/p\u003e\n    \u003cp\u003e\n      \u003cstrong\u003eDimensions:\u003c\/strong\u003e central panel 42\" H x 30\" W \/ side panels 42\" H x 10 1\/2\" W\n    \u003c\/p\u003e\n  \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cspan id=\"seeMoreDesc\" class=\"see-link\" style=\"margin-bottom:20px; display:inline-block;\"\u003e\n  Full Description\n\u003c\/span\u003e\n\n\u003c!-- QUICK SPECIFICATIONS BOX --\u003e\n\u003cdiv id=\"quick-specs\"\u003e\n  \u003cdiv\u003e\n    🌍 \u003cstrong\u003eMade in:\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=\"Canada Flag\"\u003e\n        \u003cspan\u003eCanada\u003c\/span\u003e\n      \u003c\/span\u003e\n    \u003c\/span\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv style=\"margin-top: 10px;\"\u003e\n    \u003cspan id=\"seeFullSpecs\" class=\"see-link\"\u003eFull Specifications\u003c\/span\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- SPECIFICATIONS COLLAPSIBLE --\u003e\n\u003cdiv id=\"specs-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eSpecifications\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\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;\"\u003eAppliance Performance\u003c\/h3\u003e\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo appliance performance available for this product\u003c\/p\u003e\n    \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;\"\u003eGeneral Features\u003c\/h3\u003e\n\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo general features available for this product\u003c\/p\u003e\n    \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\n  Clearances\n\u003c\/h3\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\n  \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo clearances available for this product\u003c\/p\u003e\n\u003c\/table\u003e\n\n    \u003c!-- See Less link inside accordion --\u003e\n    \u003cdiv style=\"text-align:center; margin-top: 15px;\"\u003e\n      \u003cspan id=\"seeLessSpecs\" class=\"see-link\" style=\"display:none;\"\u003eSee Less\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- MANUALS COLLAPSIBLE --\u003e\n\u003cdiv id=\"manuals-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eManuals \u0026amp; Instructions\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\n    \u003cul\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eConsult the available manuals and leaflets for more information on performance, installation and use requirements, etc.\u003c\/p\u003e\n      \u003c!-- PDF Links Styled as Buttons --\u003e\n      \u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 10px;\"\u003e\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\/black-heat-shield--optimized-packaging_Manual_001.pdf?v=1761013283\" target=\"_blank\"\u003e\n          📄 Installation \u0026amp; User's Manual \u003cspan style=\"margin-left: auto;\"\u003e🔗\u003c\/span\u003e\n        \u003c\/a\u003e\n      \u003c\/div\u003e\n    \u003c\/ul\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\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":43692707315763,"sku":"AC05555","price":210.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/AC05555_d8b1173c-0859-42a1-b9dc-4f7fbc523dad.webp?v=1761013426"},{"product_id":"heat-shield-for-surround-shelf","title":"HEAT SHIELD FOR SURROUND\/SHELF","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  \u003cp id=\"desc-teaser\"\u003e\u003c\/p\u003e\n  \u003cspan id=\"desc-more\" style=\"display:none;\"\u003e\n    \u003cp\u003e\n      Used to reduce the minimum height required between the base of a fireplace and a combustible shelf when installing a zero clearance fireplace. This heat shield fits under the shelf and can accommodate a shelf depth from 6\" (152 mm) to 12\" (305 mm) and up to 84\" (2.1 m) in length.\n    \u003c\/p\u003e\n  \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cspan id=\"seeMoreDesc\" class=\"see-link\" style=\"margin-bottom:20px; display:inline-block;\"\u003e\n  Full Description\n\u003c\/span\u003e\n\n\u003c!-- QUICK SPECIFICATIONS BOX --\u003e\n\u003cdiv id=\"quick-specs\"\u003e\n  \u003cdiv\u003e\n    🌍 \u003cstrong\u003eMade in:\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=\"Canada Flag\"\u003e\n        \u003cspan\u003eCanada\u003c\/span\u003e\n      \u003c\/span\u003e\n    \u003c\/span\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv style=\"margin-top: 10px;\"\u003e\n    \u003cspan id=\"seeFullSpecs\" class=\"see-link\"\u003eFull Specifications\u003c\/span\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- SPECIFICATIONS COLLAPSIBLE --\u003e\n\u003cdiv id=\"specs-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eSpecifications\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\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;\"\u003eAppliance Performance\u003c\/h3\u003e\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo appliance performance available for this product\u003c\/p\u003e\n    \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;\"\u003eGeneral Features\u003c\/h3\u003e\n\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo general features available for this product\u003c\/p\u003e\n    \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\n  Clearances\n\u003c\/h3\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\n  \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo clearances available for this product\u003c\/p\u003e\n\u003c\/table\u003e\n\n    \u003c!-- See Less link inside accordion --\u003e\n    \u003cdiv style=\"text-align:center; margin-top: 15px;\"\u003e\n      \u003cspan id=\"seeLessSpecs\" class=\"see-link\" style=\"display:none;\"\u003eSee Less\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- MANUALS COLLAPSIBLE --\u003e\n\u003cdiv id=\"manuals-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eManuals \u0026amp; Instructions\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\n    \u003cul\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eConsult the available manuals and leaflets for more information on performance, installation and use requirements, etc.\u003c\/p\u003e\n      \u003c!-- PDF Links Styled as Buttons --\u003e\n      \u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 10px;\"\u003e\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\/46127AF_2023-07-27.pdf?v=1761064596\" target=\"_blank\"\u003e\n          📄 Installation \u0026amp; User's Manual \u003cspan style=\"margin-left: auto;\"\u003e🔗\u003c\/span\u003e\n        \u003c\/a\u003e\n      \u003c\/div\u003e\n    \u003c\/ul\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\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":43693328662579,"sku":"AC01223","price":135.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/AC01223.webp?v=1761064168"},{"product_id":"60-washed-cedar-non-combustible-mantel","title":"60\" WASHED CEDAR NON-COMBUSTIBLE MANTEL","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  \u003cp id=\"desc-teaser\"\u003e\u003c\/p\u003e\n  \u003cspan id=\"desc-more\" style=\"display:none;\"\u003e\n    \u003cp\u003e\n      What's better than a shelf to enhance and showcase the richness of your fireplace? Thanks to its exclusive blend of cement concrete reinforced with glass fibers for increased durability, this beautiful shelf offers you a multitude of possibilities as it is not subject to any clearance standard. Handcrafted by a molding process making each shelf a unique piece, the trompe-l'oeil effect mimics wood to perfection and offers an incomparable aesthetic finish.\n    \u003c\/p\u003e\n    \u003cp\u003e\n      \u003cstrong\u003eDimensions*:\u003c\/strong\u003e 60\"W x 4\"H x 8 1\/4\"D\n    \u003c\/p\u003e\n    \u003cp\u003e\n      *Dimensions are approximate and can vary up to 1\/2''.\n    \u003c\/p\u003e\n  \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cspan id=\"seeMoreDesc\" class=\"see-link\" style=\"margin-bottom:20px; display:inline-block;\"\u003e\n  Full Description\n\u003c\/span\u003e\n\n\u003c!-- QUICK SPECIFICATIONS BOX --\u003e\n\u003cdiv id=\"quick-specs\"\u003e\n  \u003cdiv\u003e\n    🌍 \u003cstrong\u003eMade in:\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\/usa-5bd2139a62f1d18a7eb84549b9847120.png?v=1758991655\" alt=\"USA Flag\"\u003e\n        \u003cspan\u003eUnited States\u003c\/span\u003e\n      \u003c\/span\u003e\n    \u003c\/span\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv style=\"margin-top: 10px;\"\u003e\n    \u003cspan id=\"seeFullSpecs\" class=\"see-link\"\u003eFull Specifications\u003c\/span\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- SPECIFICATIONS COLLAPSIBLE --\u003e\n\u003cdiv id=\"specs-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eSpecifications\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\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;\"\u003eAppliance Performance\u003c\/h3\u003e\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo appliance performance available for this product\u003c\/p\u003e\n    \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;\"\u003eGeneral Features\u003c\/h3\u003e\n\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo general features available for this product\u003c\/p\u003e\n    \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\n  Clearances\n\u003c\/h3\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\n  \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo clearances available for this product\u003c\/p\u003e\n\u003c\/table\u003e\n\n    \u003c!-- See Less link inside accordion --\u003e\n    \u003cdiv style=\"text-align:center; margin-top: 15px;\"\u003e\n      \u003cspan id=\"seeLessSpecs\" class=\"see-link\" style=\"display:none;\"\u003eSee Less\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- MANUALS COLLAPSIBLE --\u003e\n\u003cdiv id=\"manuals-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eManuals \u0026amp; Instructions\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\n    \u003cul\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eConsult the available manuals and leaflets for more information on performance, installation and use requirements, etc.\u003c\/p\u003e\n      \u003c!-- PDF Links Styled as Buttons --\u003e\n      \u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 10px;\"\u003e\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\/AC02780_81_82_83_A_2023-04-28.pdf?v=1761064869\" target=\"_blank\"\u003e\n          📄 Installation \u0026amp; User's Manual \u003cspan style=\"margin-left: auto;\"\u003e🔗\u003c\/span\u003e\n        \u003c\/a\u003e\n      \u003c\/div\u003e\n    \u003c\/ul\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\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":43693406617651,"sku":"AC02780","price":1999.0,"currency_code":"CAD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/AC02780-AC02781.webp?v=1761064714"},{"product_id":"72-washed-cedar-non-combustible-mantel","title":"72\" WASHED CEDAR NON-COMBUSTIBLE MANTEL","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  \u003cp id=\"desc-teaser\"\u003e\u003c\/p\u003e\n  \u003cspan id=\"desc-more\" style=\"display:none;\"\u003e\n    \u003cp\u003e\n      What's better than a shelf to enhance and showcase the richness of your fireplace? Thanks to its exclusive blend of cement concrete reinforced with glass fibers for increased durability, this beautiful shelf offers you a multitude of possibilities as it is not subject to any clearance standard. Handcrafted by a molding process making each shelf a unique piece, the trompe-l'oeil effect mimics wood to perfection and offers an incomparable aesthetic finish.\n    \u003c\/p\u003e\n    \u003cp\u003e\n      \u003cstrong\u003eDimensions*:\u003c\/strong\u003e 72\"W x 4\"H x 8 1\/4\"D\n    \u003c\/p\u003e\n    \u003cp\u003e\n      *Dimensions are approximate and can vary up to 1\/2''.\n    \u003c\/p\u003e\n  \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cspan id=\"seeMoreDesc\" class=\"see-link\" style=\"margin-bottom:20px; display:inline-block;\"\u003e\n  Full Description\n\u003c\/span\u003e\n\n\u003c!-- QUICK SPECIFICATIONS BOX --\u003e\n\u003cdiv id=\"quick-specs\"\u003e\n  \u003cdiv\u003e\n    🌍 \u003cstrong\u003eMade in:\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\/usa-5bd2139a62f1d18a7eb84549b9847120.png?v=1758991655\" alt=\"USA Flag\"\u003e\n        \u003cspan\u003eUnited States\u003c\/span\u003e\n      \u003c\/span\u003e\n    \u003c\/span\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv style=\"margin-top: 10px;\"\u003e\n    \u003cspan id=\"seeFullSpecs\" class=\"see-link\"\u003eFull Specifications\u003c\/span\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- SPECIFICATIONS COLLAPSIBLE --\u003e\n\u003cdiv id=\"specs-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eSpecifications\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\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;\"\u003eAppliance Performance\u003c\/h3\u003e\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo appliance performance available for this product\u003c\/p\u003e\n    \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;\"\u003eGeneral Features\u003c\/h3\u003e\n\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo general features available for this product\u003c\/p\u003e\n    \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\n  Clearances\n\u003c\/h3\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\n  \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo clearances available for this product\u003c\/p\u003e\n\u003c\/table\u003e\n\n    \u003c!-- See Less link inside accordion --\u003e\n    \u003cdiv style=\"text-align:center; margin-top: 15px;\"\u003e\n      \u003cspan id=\"seeLessSpecs\" class=\"see-link\" style=\"display:none;\"\u003eSee Less\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- MANUALS COLLAPSIBLE --\u003e\n\u003cdiv id=\"manuals-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eManuals \u0026amp; Instructions\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\n    \u003cul\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eConsult the available manuals and leaflets for more information on performance, installation and use requirements, etc.\u003c\/p\u003e\n      \u003c!-- PDF Links Styled as Buttons --\u003e\n      \u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 10px;\"\u003e\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\/AC02780_81_82_83_A_2023-04-28.pdf?v=1761064869\" target=\"_blank\"\u003e\n          📄 Installation \u0026amp; User's Manual \u003cspan style=\"margin-left: auto;\"\u003e🔗\u003c\/span\u003e\n        \u003c\/a\u003e\n      \u003c\/div\u003e\n    \u003c\/ul\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\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":43693486014515,"sku":"AC02781","price":2199.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/AC02780-AC02781.webp?v=1761064714"},{"product_id":"72-tavern-brown-non-combustible-mantel","title":"72\" TAVERN BROWN NON-COMBUSTIBLE MANTEL","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  \u003cp id=\"desc-teaser\"\u003e\u003c\/p\u003e\n  \u003cspan id=\"desc-more\" style=\"display:none;\"\u003e\n    \u003cp\u003e\n      What's better than a shelf to enhance and showcase the richness of your fireplace? Thanks to its exclusive blend of cement concrete reinforced with glass fibers for increased durability, this beautiful shelf offers you a multitude of possibilities as it is not subject to any clearance standard. Handcrafted by a molding process making each shelf a unique piece, the trompe-l'oeil effect mimics wood to perfection and offers an incomparable aesthetic finish.\n    \u003c\/p\u003e\n    \u003cp\u003e\n      \u003cstrong\u003eDimensions*:\u003c\/strong\u003e 72\"W x 7 1\/2\"H x 7 1\/2\"D\n    \u003c\/p\u003e\n    \u003cp\u003e\n      *Dimensions are approximate and can vary up to 1\/2''.\n    \u003c\/p\u003e\n  \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cspan id=\"seeMoreDesc\" class=\"see-link\" style=\"margin-bottom:20px; display:inline-block;\"\u003e\n  Full Description\n\u003c\/span\u003e\n\n\u003c!-- QUICK SPECIFICATIONS BOX --\u003e\n\u003cdiv id=\"quick-specs\"\u003e\n  \u003cdiv\u003e\n    🌍 \u003cstrong\u003eMade in:\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\/usa-5bd2139a62f1d18a7eb84549b9847120.png?v=1758991655\" alt=\"USA Flag\"\u003e\n        \u003cspan\u003eUnited States\u003c\/span\u003e\n      \u003c\/span\u003e\n    \u003c\/span\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv style=\"margin-top: 10px;\"\u003e\n    \u003cspan id=\"seeFullSpecs\" class=\"see-link\"\u003eFull Specifications\u003c\/span\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- SPECIFICATIONS COLLAPSIBLE --\u003e\n\u003cdiv id=\"specs-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eSpecifications\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\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;\"\u003eAppliance Performance\u003c\/h3\u003e\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo appliance performance available for this product\u003c\/p\u003e\n    \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;\"\u003eGeneral Features\u003c\/h3\u003e\n\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo general features available for this product\u003c\/p\u003e\n    \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\n  Clearances\n\u003c\/h3\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\n  \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo clearances available for this product\u003c\/p\u003e\n\u003c\/table\u003e\n\n    \u003c!-- See Less link inside accordion --\u003e\n    \u003cdiv style=\"text-align:center; margin-top: 15px;\"\u003e\n      \u003cspan id=\"seeLessSpecs\" class=\"see-link\" style=\"display:none;\"\u003eSee Less\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- MANUALS COLLAPSIBLE --\u003e\n\u003cdiv id=\"manuals-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eManuals \u0026amp; Instructions\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\n    \u003cul\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eConsult the available manuals and leaflets for more information on performance, installation and use requirements, etc.\u003c\/p\u003e\n      \u003c!-- PDF Links Styled as Buttons --\u003e\n      \u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 10px;\"\u003e\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\/AC02780_81_82_83_A_2023-04-28.pdf?v=1761064869\" target=\"_blank\"\u003e\n          📄 Installation \u0026amp; User's Manual \u003cspan style=\"margin-left: auto;\"\u003e🔗\u003c\/span\u003e\n        \u003c\/a\u003e\n      \u003c\/div\u003e\n    \u003c\/ul\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\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":43693489291315,"sku":"AC02783","price":2899.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/AC02782_AC02783_H.webp?v=1761066093"},{"product_id":"17-1-2-x-12-x-4-3-4-universal-fireplace-grate","title":"17 1\/2\" x 12\" x 4 3\/4\" UNIVERSAL FIREPLACE GRATE","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  \u003cp id=\"desc-teaser\"\u003e\u003c\/p\u003e\n  \u003cspan id=\"desc-more\" style=\"display:none;\"\u003e\n    \u003cp\u003e\n      Cast-iron accessory required for some wood-burning fireplaces to improve combustion and log support.\n    \u003c\/p\u003e\n  \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cspan id=\"seeMoreDesc\" class=\"see-link\" style=\"margin-bottom:20px; display:inline-block;\"\u003e\n  Full Description\n\u003c\/span\u003e\n\n\u003c!-- QUICK SPECIFICATIONS BOX --\u003e\n\u003cdiv id=\"quick-specs\"\u003e\n  \u003cdiv\u003e\n    🌍 \u003cstrong\u003eMade in:\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\/usa-5bd2139a62f1d18a7eb84549b9847120.png?v=1758991655\" alt=\"USA Flag\"\u003e\n        \u003cspan\u003eUnited States\u003c\/span\u003e\n      \u003c\/span\u003e\n    \u003c\/span\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv style=\"margin-top: 10px;\"\u003e\n    \u003cspan id=\"seeFullSpecs\" class=\"see-link\"\u003eFull Specifications\u003c\/span\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- SPECIFICATIONS COLLAPSIBLE --\u003e\n\u003cdiv id=\"specs-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eSpecifications\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\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;\"\u003eAppliance Performance\u003c\/h3\u003e\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo appliance performance available for this product\u003c\/p\u003e\n    \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;\"\u003eGeneral Features\u003c\/h3\u003e\n\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo general features available for this product\u003c\/p\u003e\n    \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\n  Clearances\n\u003c\/h3\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\n  \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo clearances available for this product\u003c\/p\u003e\n\u003c\/table\u003e\n\n    \u003c!-- See Less link inside accordion --\u003e\n    \u003cdiv style=\"text-align:center; margin-top: 15px;\"\u003e\n      \u003cspan id=\"seeLessSpecs\" class=\"see-link\" style=\"display:none;\"\u003eSee Less\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- MANUALS COLLAPSIBLE --\u003e\n\u003cdiv id=\"manuals-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eManuals \u0026amp; Instructions\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\n    \u003cul\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo manual or leaflet is available for this product\u003c\/p\u003e\n      \u003c!-- PDF Links Styled as Buttons --\u003e\n      \u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 10px;\"\u003e\n      \u003c\/div\u003e\n    \u003c\/ul\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\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":43693625147443,"sku":"AC02300","price":60.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/AC02300_c7679def-03b7-4f8c-804b-0e791cc10917.webp?v=1761076895"},{"product_id":"grate","title":"GRATE","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  \u003cp id=\"desc-teaser\"\u003e\u003c\/p\u003e\n  \u003cspan id=\"desc-more\" style=\"display:none;\"\u003e\n    \u003cp\u003e\n      Accessory for SGS 5 or 6-log gas stove.\n    \u003c\/p\u003e\n  \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cspan id=\"seeMoreDesc\" class=\"see-link\" style=\"margin-bottom:20px; display:inline-block;\"\u003e\n  Full Description\n\u003c\/span\u003e\n\n\u003c!-- QUICK SPECIFICATIONS BOX --\u003e\n\u003cdiv id=\"quick-specs\"\u003e\n  \u003cdiv\u003e\n    🌍 \u003cstrong\u003eMade in:\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=\"Canada Flag\"\u003e\n        \u003cspan\u003eCanada\u003c\/span\u003e\n      \u003c\/span\u003e\n    \u003c\/span\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv style=\"margin-top: 10px;\"\u003e\n    \u003cspan id=\"seeFullSpecs\" class=\"see-link\"\u003eFull Specifications\u003c\/span\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- SPECIFICATIONS COLLAPSIBLE --\u003e\n\u003cdiv id=\"specs-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eSpecifications\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\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;\"\u003eAppliance Performance\u003c\/h3\u003e\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo appliance performance available for this product\u003c\/p\u003e\n    \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;\"\u003eGeneral Features\u003c\/h3\u003e\n\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo general features available for this product\u003c\/p\u003e\n    \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\n  Clearances\n\u003c\/h3\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\n  \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo clearances available for this product\u003c\/p\u003e\n\u003c\/table\u003e\n\n    \u003c!-- See Less link inside accordion --\u003e\n    \u003cdiv style=\"text-align:center; margin-top: 15px;\"\u003e\n      \u003cspan id=\"seeLessSpecs\" class=\"see-link\" style=\"display:none;\"\u003eSee Less\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- MANUALS COLLAPSIBLE --\u003e\n\u003cdiv id=\"manuals-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eManuals \u0026amp; Instructions\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\n    \u003cul\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo manual or leaflet is available for this product\u003c\/p\u003e\n      \u003c!-- PDF Links Styled as Buttons --\u003e\n      \u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 10px;\"\u003e\n      \u003c\/div\u003e\n    \u003c\/ul\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\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":43693629079603,"sku":"PL29016","price":40.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/PL29016.webp?v=1761077096"},{"product_id":"andiron","title":"ANDIRON","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  \u003cp id=\"desc-teaser\"\u003e\u003c\/p\u003e\n  \u003cspan id=\"desc-more\" style=\"display:none;\"\u003e\n    \u003cp\u003e\n      This log retainer ensures greater safety by preventing logs from rolling or falling; it also facilitates work by making wood handling easier.\n    \u003c\/p\u003e\n  \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cspan id=\"seeMoreDesc\" class=\"see-link\" style=\"margin-bottom:20px; display:inline-block;\"\u003e\n  Full Description\n\u003c\/span\u003e\n\n\u003c!-- QUICK SPECIFICATIONS BOX --\u003e\n\u003cdiv id=\"quick-specs\"\u003e\n  \u003cdiv\u003e\n    🌍 \u003cstrong\u003eMade in:\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=\"Canada Flag\"\u003e\n        \u003cspan\u003eCanada\u003c\/span\u003e\n      \u003c\/span\u003e\n    \u003c\/span\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv style=\"margin-top: 10px;\"\u003e\n    \u003cspan id=\"seeFullSpecs\" class=\"see-link\"\u003eFull Specifications\u003c\/span\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- SPECIFICATIONS COLLAPSIBLE --\u003e\n\u003cdiv id=\"specs-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eSpecifications\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\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;\"\u003eAppliance Performance\u003c\/h3\u003e\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo appliance performance available for this product\u003c\/p\u003e\n    \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;\"\u003eGeneral Features\u003c\/h3\u003e\n\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo general features available for this product\u003c\/p\u003e\n    \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\n  Clearances\n\u003c\/h3\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\n  \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo clearances available for this product\u003c\/p\u003e\n\u003c\/table\u003e\n\n    \u003c!-- See Less link inside accordion --\u003e\n    \u003cdiv style=\"text-align:center; margin-top: 15px;\"\u003e\n      \u003cspan id=\"seeLessSpecs\" class=\"see-link\" style=\"display:none;\"\u003eSee Less\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- MANUALS COLLAPSIBLE --\u003e\n\u003cdiv id=\"manuals-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eManuals \u0026amp; Instructions\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\n    \u003cul\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo manual or leaflet is available for this product\u003c\/p\u003e\n      \u003c!-- PDF Links Styled as Buttons --\u003e\n      \u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 10px;\"\u003e\n      \u003c\/div\u003e\n    \u003c\/ul\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\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":43693632978995,"sku":"PL53144","price":65.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/PL53144.webp?v=1761077218"},{"product_id":"stainless-steel-log-retainer","title":"STAINLESS STEEL LOG RETAINER","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  \u003cp id=\"desc-teaser\"\u003e\u003c\/p\u003e\n  \u003cspan id=\"desc-more\" style=\"display:none;\"\u003e\n    \u003cp\u003e\n      Ensures greater safety by preventing logs from rolling or falling; it also facilitates work by making wood handling easier.\n    \u003c\/p\u003e\n  \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cspan id=\"seeMoreDesc\" class=\"see-link\" style=\"margin-bottom:20px; display:inline-block;\"\u003e\n  Full Description\n\u003c\/span\u003e\n\n\u003c!-- QUICK SPECIFICATIONS BOX --\u003e\n\u003cdiv id=\"quick-specs\"\u003e\n  \u003cdiv\u003e\n    🌍 \u003cstrong\u003eMade in:\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=\"Canada Flag\"\u003e\n        \u003cspan\u003eCanada\u003c\/span\u003e\n      \u003c\/span\u003e\n    \u003c\/span\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv style=\"margin-top: 10px;\"\u003e\n    \u003cspan id=\"seeFullSpecs\" class=\"see-link\"\u003eFull Specifications\u003c\/span\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- SPECIFICATIONS COLLAPSIBLE --\u003e\n\u003cdiv id=\"specs-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eSpecifications\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\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;\"\u003eAppliance Performance\u003c\/h3\u003e\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo appliance performance available for this product\u003c\/p\u003e\n    \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;\"\u003eGeneral Features\u003c\/h3\u003e\n\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo general features available for this product\u003c\/p\u003e\n    \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\n  Clearances\n\u003c\/h3\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\n  \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo clearances available for this product\u003c\/p\u003e\n\u003c\/table\u003e\n\n    \u003c!-- See Less link inside accordion --\u003e\n    \u003cdiv style=\"text-align:center; margin-top: 15px;\"\u003e\n      \u003cspan id=\"seeLessSpecs\" class=\"see-link\" style=\"display:none;\"\u003eSee Less\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- MANUALS COLLAPSIBLE --\u003e\n\u003cdiv id=\"manuals-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eManuals \u0026amp; Instructions\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\n    \u003cul\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo manual or leaflet is available for this product\u003c\/p\u003e\n      \u003c!-- PDF Links Styled as Buttons --\u003e\n      \u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 10px;\"\u003e\n      \u003c\/div\u003e\n    \u003c\/ul\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\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":43693634551859,"sku":"PL74170","price":15.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/PL74170.webp?v=1761077302"},{"product_id":"cast-iron-grate","title":"CAST IRON GRATE","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  \u003cp id=\"desc-teaser\"\u003e\u003c\/p\u003e\n  \u003cspan id=\"desc-more\" style=\"display:none;\"\u003e\n    \u003cp\u003e\n      Dimensions: 21 7\/8 W x 18 21\/32 H x 9 1\/2 D\n    \u003c\/p\u003e\n  \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cspan id=\"seeMoreDesc\" class=\"see-link\" style=\"margin-bottom:20px; display:inline-block;\"\u003e\n  Full Description\n\u003c\/span\u003e\n\n\u003c!-- QUICK SPECIFICATIONS BOX --\u003e\n\u003cdiv id=\"quick-specs\"\u003e\n  \u003cdiv\u003e\n    \u003cp\u003eNo specifications available for this product\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv style=\"margin-top: 10px;\"\u003e\n    \u003cspan id=\"seeFullSpecs\" class=\"see-link\"\u003eFull Specifications\u003c\/span\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- SPECIFICATIONS COLLAPSIBLE --\u003e\n\u003cdiv id=\"specs-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eSpecifications\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\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;\"\u003eAppliance Performance\u003c\/h3\u003e\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo appliance performance available for this product\u003c\/p\u003e\n    \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;\"\u003eGeneral Features\u003c\/h3\u003e\n\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo general features available for this product\u003c\/p\u003e\n    \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\n  Clearances\n\u003c\/h3\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\n  \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo clearances available for this product\u003c\/p\u003e\n\u003c\/table\u003e\n\n    \u003c!-- See Less link inside accordion --\u003e\n    \u003cdiv style=\"text-align:center; margin-top: 15px;\"\u003e\n      \u003cspan id=\"seeLessSpecs\" class=\"see-link\" style=\"display:none;\"\u003eSee Less\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- MANUALS COLLAPSIBLE --\u003e\n\u003cdiv id=\"manuals-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eManuals \u0026amp; Instructions\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\n    \u003cul\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo manual or leaflet is available for this product\u003c\/p\u003e\n      \u003c!-- PDF Links Styled as Buttons --\u003e\n      \u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 10px;\"\u003e\n      \u003c\/div\u003e\n    \u003c\/ul\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\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":43693637599283,"sku":"VA1070","price":200.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/VA1070.webp?v=1761077380"},{"product_id":"cast-iron-grate-1","title":"CAST IRON GRATE","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  \u003cp id=\"desc-teaser\"\u003e\u003c\/p\u003e\n  \u003cspan id=\"desc-more\" style=\"display:none;\"\u003e\n    \u003cp\u003e\n      Front dimensions: 15 17\/32” and rear: 17 7\/8\"\n    \u003c\/p\u003e\n  \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cspan id=\"seeMoreDesc\" class=\"see-link\" style=\"margin-bottom:20px; display:inline-block;\"\u003e\n  Full Description\n\u003c\/span\u003e\n\n\u003c!-- QUICK SPECIFICATIONS BOX --\u003e\n\u003cdiv id=\"quick-specs\"\u003e\n  \u003cdiv\u003e\n    \u003cp\u003eNo specifications available for this product\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv style=\"margin-top: 10px;\"\u003e\n    \u003cspan id=\"seeFullSpecs\" class=\"see-link\"\u003eFull Specifications\u003c\/span\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- SPECIFICATIONS COLLAPSIBLE --\u003e\n\u003cdiv id=\"specs-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eSpecifications\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\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;\"\u003eAppliance Performance\u003c\/h3\u003e\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo appliance performance available for this product\u003c\/p\u003e\n    \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;\"\u003eGeneral Features\u003c\/h3\u003e\n\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo general features available for this product\u003c\/p\u003e\n    \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\n  Clearances\n\u003c\/h3\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\n  \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo clearances available for this product\u003c\/p\u003e\n\u003c\/table\u003e\n\n    \u003c!-- See Less link inside accordion --\u003e\n    \u003cdiv style=\"text-align:center; margin-top: 15px;\"\u003e\n      \u003cspan id=\"seeLessSpecs\" class=\"see-link\" style=\"display:none;\"\u003eSee Less\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- MANUALS COLLAPSIBLE --\u003e\n\u003cdiv id=\"manuals-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eManuals \u0026amp; Instructions\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\n    \u003cul\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo manual or leaflet is available for this product\u003c\/p\u003e\n      \u003c!-- PDF Links Styled as Buttons --\u003e\n      \u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 10px;\"\u003e\n      \u003c\/div\u003e\n    \u003c\/ul\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\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":"Valcourt","offers":[{"title":"Default Title","offer_id":43693645692979,"sku":"VA2070","price":200.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/VA2070.webp?v=1761078038"},{"product_id":"painted-cast-iron-andiron","title":"PAINTED CAST IRON ANDIRON","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  \u003cp id=\"desc-teaser\"\u003e\u003c\/p\u003e\n  \u003cspan id=\"desc-more\" style=\"display:none;\"\u003e\n    \u003cp\u003e\n      This log retainer ensures greater safety by preventing logs from rolling or falling; it also facilitates work by making wood handling easier.\n    \u003c\/p\u003e\n  \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cspan id=\"seeMoreDesc\" class=\"see-link\" style=\"margin-bottom:20px; display:inline-block;\"\u003e\n  Full Description\n\u003c\/span\u003e\n\n\u003c!-- QUICK SPECIFICATIONS BOX --\u003e\n\u003cdiv id=\"quick-specs\"\u003e\n  \u003cdiv\u003e\n    \u003cp\u003eNo specifications available for this product\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv style=\"margin-top: 10px;\"\u003e\n    \u003cspan id=\"seeFullSpecs\" class=\"see-link\"\u003eFull Specifications\u003c\/span\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- SPECIFICATIONS COLLAPSIBLE --\u003e\n\u003cdiv id=\"specs-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eSpecifications\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\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;\"\u003eAppliance Performance\u003c\/h3\u003e\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo appliance performance available for this product\u003c\/p\u003e\n    \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;\"\u003eGeneral Features\u003c\/h3\u003e\n\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo general features available for this product\u003c\/p\u003e\n    \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\n  Clearances\n\u003c\/h3\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\n  \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo clearances available for this product\u003c\/p\u003e\n\u003c\/table\u003e\n\n    \u003c!-- See Less link inside accordion --\u003e\n    \u003cdiv style=\"text-align:center; margin-top: 15px;\"\u003e\n      \u003cspan id=\"seeLessSpecs\" class=\"see-link\" style=\"display:none;\"\u003eSee Less\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- MANUALS COLLAPSIBLE --\u003e\n\u003cdiv id=\"manuals-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eManuals \u0026amp; Instructions\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\n    \u003cul\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo manual or leaflet is available for this product\u003c\/p\u003e\n      \u003c!-- PDF Links Styled as Buttons --\u003e\n      \u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 10px;\"\u003e\n      \u003c\/div\u003e\n    \u003c\/ul\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\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":"Valcourt","offers":[{"title":"Default Title","offer_id":43693648478259,"sku":"VA7070","price":80.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/VA7070.webp?v=1761078147"},{"product_id":"equiss-freestanding-log-holder","title":"EQUISS FREESTANDING LOG HOLDER","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  \u003cp id=\"desc-teaser\"\u003e\u003c\/p\u003e\n  \u003cspan id=\"desc-more\" style=\"display:none;\"\u003e\n    \u003cp\u003e\n      This compact and robust log holder is entirely manufactured in Canada and made of high quality steel. Its integrated handles make handling easier. The assembly is done in seconds; simply intersect the two panels and voila! A cuttable rubber band is also available to provide protection for the floor surface and to give it a finishing touch. Once the heating season is over, this free standing log holder is easy to take apart and will not clutter your living space.\n    \u003c\/p\u003e\n  \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cspan id=\"seeMoreDesc\" class=\"see-link\" style=\"margin-bottom:20px; display:inline-block;\"\u003e\n  Full Description\n\u003c\/span\u003e\n\n\u003c!-- QUICK SPECIFICATIONS BOX --\u003e\n\u003cdiv id=\"quick-specs\"\u003e\n  \u003cdiv\u003e\n    🌍 \u003cstrong\u003eMade in:\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=\"Canada Flag\"\u003e\n        \u003cspan\u003eCanada\u003c\/span\u003e\n      \u003c\/span\u003e\n    \u003c\/span\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv style=\"margin-top: 10px;\"\u003e\n    \u003cspan id=\"seeFullSpecs\" class=\"see-link\"\u003eFull Specifications\u003c\/span\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- SPECIFICATIONS COLLAPSIBLE --\u003e\n\u003cdiv id=\"specs-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eSpecifications\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\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;\"\u003eAppliance Performance\u003c\/h3\u003e\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo appliance performance available for this product\u003c\/p\u003e\n    \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;\"\u003eGeneral Features\u003c\/h3\u003e\n\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo general features available for this product\u003c\/p\u003e\n    \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\n  Clearances\n\u003c\/h3\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\n  \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo clearances available for this product\u003c\/p\u003e\n\u003c\/table\u003e\n\n    \u003c!-- See Less link inside accordion --\u003e\n    \u003cdiv style=\"text-align:center; margin-top: 15px;\"\u003e\n      \u003cspan id=\"seeLessSpecs\" class=\"see-link\" style=\"display:none;\"\u003eSee Less\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- MANUALS COLLAPSIBLE --\u003e\n\u003cdiv id=\"manuals-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eManuals \u0026amp; Instructions\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\n    \u003cul\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo manual or leaflet is available for this product\u003c\/p\u003e\n      \u003c!-- PDF Links Styled as Buttons --\u003e\n      \u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 10px;\"\u003e\n      \u003c\/div\u003e\n    \u003c\/ul\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\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":"48\" WOOD STORAGE WITH FINISHING TRIM","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  \u003cp id=\"desc-teaser\"\u003e\u003c\/p\u003e\n  \u003cspan id=\"desc-more\" style=\"display:none;\"\u003e\n    \u003cp\u003e\n      Built-in or freestanding, configurable vertically or horizontally, you will appreciate the versatility of this wood storage unit. It will most certainly find its place in your decor, whether next to your wood stove, close to your heater or the entrance where it can be used as a bench when positioned horizontally. For a pure and minimalist décor, the box can be integrated inside one of your walls. A finishing trim is provided for this flawless look. Very sturdy, this heavy-steel (14 ga) wood storage is powder-coated and can accommodate logs up to 18\" in length. The steel frame contains four concealed wooden blocks to prevent premature wear of your floors. An accessories storage drawer (17\" x 15\" x 6\") is available as an option. Conveniently put away the poker and shovel included with this drawer! Delivered in a compact package, this wood storage unit is very easily assembled. You will be impressed! Made in Canada.\n    \u003c\/p\u003e\n  \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cspan id=\"seeMoreDesc\" class=\"see-link\" style=\"margin-bottom:20px; display:inline-block;\"\u003e\n  Full Description\n\u003c\/span\u003e\n\n\u003c!-- QUICK SPECIFICATIONS BOX --\u003e\n\u003cdiv id=\"quick-specs\"\u003e\n  \u003cdiv\u003e\n    🌍 \u003cstrong\u003eMade in:\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=\"Canada Flag\"\u003e\n        \u003cspan\u003eCanada\u003c\/span\u003e\n      \u003c\/span\u003e\n    \u003c\/span\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv style=\"margin-top: 10px;\"\u003e\n    \u003cspan id=\"seeFullSpecs\" class=\"see-link\"\u003eFull Specifications\u003c\/span\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- SPECIFICATIONS COLLAPSIBLE --\u003e\n\u003cdiv id=\"specs-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eSpecifications\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\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;\"\u003eAppliance Performance\u003c\/h3\u003e\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo appliance performance available for this product\u003c\/p\u003e\n    \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;\"\u003eGeneral Features\u003c\/h3\u003e\n\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo general features available for this product\u003c\/p\u003e\n    \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\n  Clearances\n\u003c\/h3\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\n  \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo clearances available for this product\u003c\/p\u003e\n\u003c\/table\u003e\n\n    \u003c!-- See Less link inside accordion --\u003e\n    \u003cdiv style=\"text-align:center; margin-top: 15px;\"\u003e\n      \u003cspan id=\"seeLessSpecs\" class=\"see-link\" style=\"display:none;\"\u003eSee Less\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- MANUALS COLLAPSIBLE --\u003e\n\u003cdiv id=\"manuals-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eManuals \u0026amp; Instructions\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\n    \u003cul\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eConsult the available manuals and leaflets for more information on performance, installation and use requirements, etc.\u003c\/p\u003e\n      \u003c!-- PDF Links Styled as Buttons --\u003e\n      \u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 10px;\"\u003e\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          📄 Installation \u0026amp; User's Manual \u003cspan style=\"margin-left: auto;\"\u003e🔗\u003c\/span\u003e\n        \u003c\/a\u003e\n      \u003c\/div\u003e\n    \u003c\/ul\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\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":"DRAWER AND TOOL KIT FOR WOOD STORAGE INSERT","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\u003cp id=\"desc-teaser\"\u003e\u003c\/p\u003e\n\u003cp\u003eThis accessory storage drawer (17\" x 15\" x 6\") is a great addition to your wood storage. Store the poker and shovel, included with the drawer, for convenience! Look no further and collect all your things in one place.\u003c\/p\u003e\n\u003cspan id=\"desc-more\" style=\"display: none;\"\u003e\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cp\u003e\u003cspan id=\"seeMoreDesc\" class=\"see-link\" style=\"margin-bottom: 20px; display: inline-block;\"\u003e Full Description \u003c\/span\u003e\u003c\/p\u003e\n\u003c!-- QUICK SPECIFICATIONS BOX --\u003e\n\u003cdiv id=\"quick-specs\"\u003e\n\u003cdiv\u003e\u003cstrong\u003eMade in\u003c\/strong\u003e\u003c\/div\u003e\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=\"Canada Flag\"\u003e \u003cspan\u003eCanada\u003c\/span\u003e \u003c\/span\u003e \u003c\/span\u003e\u003c\/div\u003e\n\u003cdiv style=\"margin-top: 10px;\"\u003e\u003cspan id=\"seeFullSpecs\" class=\"see-link\"\u003eFull Specifications\u003c\/span\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- SPECIFICATIONS COLLAPSIBLE --\u003e\n\u003cdiv id=\"specs-accordion\" class=\"accordion\"\u003e\n\u003cdiv class=\"accordion-header\"\u003eSpecifications\u003c\/div\u003e\n\u003cdiv class=\"accordion-content\"\u003e\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;\"\u003eAppliance Performance\u003c\/h3\u003e\n\u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo appliance performance available for this product\u003c\/p\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\u003c\/table\u003e\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;\"\u003eGeneral Features\u003c\/h3\u003e\n\u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo general features available for this product\u003c\/p\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\u003c\/table\u003e\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;\"\u003eClearances\u003c\/h3\u003e\n\u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo clearances available for this product\u003c\/p\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\u003c\/table\u003e\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;\"\u003eSee Less\u003c\/span\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- MANUALS COLLAPSIBLE --\u003e\n\u003cdiv id=\"manuals-accordion\" class=\"accordion\"\u003e\n\u003cdiv class=\"accordion-header\"\u003eManuals \u0026amp; Instructions\u003c\/div\u003e\n\u003cdiv class=\"accordion-content\"\u003e\n\u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo manual or leaflet is available for this product\u003c\/p\u003e\n\u003cul\u003e\u003c!-- PDF Links Styled as Buttons --\u003e\u003c\/ul\u003e\n\u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 10px;\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\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":"FUSIO LOG HOLDER","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  \u003cp id=\"desc-teaser\"\u003e\u003c\/p\u003e\n  \u003cspan id=\"desc-more\" style=\"display:none;\"\u003e\n    \u003cp\u003e\n      This distinctive log holder combines steel and cherrywood and its curved shape makes a strong contemporary design statement. Make your life simpler by fueling your fire without ever being caught unprepared. Made in Canadavwith exceptional craftmanship.\n    \u003c\/p\u003e\n    \u003cp\u003e\n      \u003cstrong\u003eDimensions:\u003c\/strong\u003e 20”H x 18 1\/2”W x 24\"D.\n    \u003c\/p\u003e\n  \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cspan id=\"seeMoreDesc\" class=\"see-link\" style=\"margin-bottom:20px; display:inline-block;\"\u003e\n  Full Description\n\u003c\/span\u003e\n\n\u003c!-- QUICK SPECIFICATIONS BOX --\u003e\n\u003cdiv id=\"quick-specs\"\u003e\n  \u003cdiv\u003e\n    🌍 \u003cstrong\u003eMade in:\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=\"Canada Flag\"\u003e\n        \u003cspan\u003eCanada\u003c\/span\u003e\n      \u003c\/span\u003e\n    \u003c\/span\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv style=\"margin-top: 10px;\"\u003e\n    \u003cspan id=\"seeFullSpecs\" class=\"see-link\"\u003eFull Specifications\u003c\/span\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- SPECIFICATIONS COLLAPSIBLE --\u003e\n\u003cdiv id=\"specs-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eSpecifications\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\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;\"\u003eAppliance Performance\u003c\/h3\u003e\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo appliance performance available for this product\u003c\/p\u003e\n    \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;\"\u003eGeneral Features\u003c\/h3\u003e\n\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo general features available for this product\u003c\/p\u003e\n    \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\n  Clearances\n\u003c\/h3\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\n  \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo clearances available for this product\u003c\/p\u003e\n\u003c\/table\u003e\n\n    \u003c!-- See Less link inside accordion --\u003e\n    \u003cdiv style=\"text-align:center; margin-top: 15px;\"\u003e\n      \u003cspan id=\"seeLessSpecs\" class=\"see-link\" style=\"display:none;\"\u003eSee Less\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- MANUALS COLLAPSIBLE --\u003e\n\u003cdiv id=\"manuals-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eManuals \u0026amp; Instructions\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\n    \u003cul\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo manual or leaflet is available for this product\u003c\/p\u003e\n      \u003c!-- PDF Links Styled as Buttons --\u003e\n      \u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 10px;\"\u003e\n      \u003c\/div\u003e\n    \u003c\/ul\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\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"},{"product_id":"duplex-fireplace-tool-set","title":"DUPLEX FIREPLACE TOOL SET","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  \u003cp id=\"desc-teaser\"\u003e\u003c\/p\u003e\n  \u003cspan id=\"desc-more\" style=\"display:none;\"\u003e\n    \u003cp\u003e\n      This distinctive hearth tool set contains four instruments: poker, broom, shovel and scraper - all you need to operate and maintain your wood-burning appliance. The clean lines and combination of steel and wood construction make a strong contemporary design statement. Kit height: 27 1\/4” (69 cm). Proudly made in Canada.\n    \u003c\/p\u003e\n  \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cspan id=\"seeMoreDesc\" class=\"see-link\" style=\"margin-bottom:20px; display:inline-block;\"\u003e\n  Full Description\n\u003c\/span\u003e\n\n\u003c!-- QUICK SPECIFICATIONS BOX --\u003e\n\u003cdiv id=\"quick-specs\"\u003e\n  \u003cdiv\u003e\n    \u003cp\u003eNo specifications available for this product\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv style=\"margin-top: 10px;\"\u003e\n    \u003cspan id=\"seeFullSpecs\" class=\"see-link\"\u003eFull Specifications\u003c\/span\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- SPECIFICATIONS COLLAPSIBLE --\u003e\n\u003cdiv id=\"specs-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eSpecifications\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\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;\"\u003eAppliance Performance\u003c\/h3\u003e\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo appliance performance available for this product\u003c\/p\u003e\n    \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;\"\u003eGeneral Features\u003c\/h3\u003e\n\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo general features available for this product\u003c\/p\u003e\n    \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\n  Clearances\n\u003c\/h3\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\n  \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo clearances available for this product\u003c\/p\u003e\n\u003c\/table\u003e\n\n    \u003c!-- See Less link inside accordion --\u003e\n    \u003cdiv style=\"text-align:center; margin-top: 15px;\"\u003e\n      \u003cspan id=\"seeLessSpecs\" class=\"see-link\" style=\"display:none;\"\u003eSee Less\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- MANUALS COLLAPSIBLE --\u003e\n\u003cdiv id=\"manuals-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eManuals \u0026amp; Instructions\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\n    \u003cul\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo manual or leaflet is available for this product\u003c\/p\u003e\n      \u003c!-- PDF Links Styled as Buttons --\u003e\n      \u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 10px;\"\u003e\n      \u003c\/div\u003e\n    \u003c\/ul\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\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":43693660569651,"sku":"AC02620","price":330.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/AC02620.webp?v=1761079395"},{"product_id":"ineo-fireplace-tool-set","title":"INEO FIREPLACE TOOL SET","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  \u003cp id=\"desc-teaser\"\u003e\u003c\/p\u003e\n  \u003cspan id=\"desc-more\" style=\"display:none;\"\u003e\n    \u003cp\u003e\n      This distinctive hearth tool set contains four quality implements: poker, broom, shovel and scraper - all you need to operate and maintain your wood-burning appliance. The clean lines and simplicity make a strong contemporary design statement. Kit height: 28 5\/8\" (73 cm). Proudly made in Canada.\n    \u003c\/p\u003e\n  \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cspan id=\"seeMoreDesc\" class=\"see-link\" style=\"margin-bottom:20px; display:inline-block;\"\u003e\n  Full Description\n\u003c\/span\u003e\n\n\u003c!-- QUICK SPECIFICATIONS BOX --\u003e\n\u003cdiv id=\"quick-specs\"\u003e\n  \u003cdiv\u003e\n    🌍 \u003cstrong\u003eMade in:\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=\"Canada Flag\"\u003e\n        \u003cspan\u003eCanada\u003c\/span\u003e\n      \u003c\/span\u003e\n    \u003c\/span\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv style=\"margin-top: 10px;\"\u003e\n    \u003cspan id=\"seeFullSpecs\" class=\"see-link\"\u003eFull Specifications\u003c\/span\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- SPECIFICATIONS COLLAPSIBLE --\u003e\n\u003cdiv id=\"specs-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eSpecifications\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\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;\"\u003eAppliance Performance\u003c\/h3\u003e\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo appliance performance available for this product\u003c\/p\u003e\n    \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;\"\u003eGeneral Features\u003c\/h3\u003e\n\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo general features available for this product\u003c\/p\u003e\n    \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\n  Clearances\n\u003c\/h3\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\n  \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo clearances available for this product\u003c\/p\u003e\n\u003c\/table\u003e\n\n    \u003c!-- See Less link inside accordion --\u003e\n    \u003cdiv style=\"text-align:center; margin-top: 15px;\"\u003e\n      \u003cspan id=\"seeLessSpecs\" class=\"see-link\" style=\"display:none;\"\u003eSee Less\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- MANUALS COLLAPSIBLE --\u003e\n\u003cdiv id=\"manuals-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eManuals \u0026amp; Instructions\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\n    \u003cul\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo manual or leaflet is available for this product\u003c\/p\u003e\n      \u003c!-- PDF Links Styled as Buttons --\u003e\n      \u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 10px;\"\u003e\n      \u003c\/div\u003e\n    \u003c\/ul\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\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":43693663387699,"sku":"AC02621","price":215.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/AC02621.webp?v=1761079608"},{"product_id":"papyrus-fireplace-tool-set","title":"PAPYRUS FIREPLACE TOOL SET","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  \u003cp id=\"desc-teaser\"\u003e\u003c\/p\u003e\n  \u003cspan id=\"desc-more\" style=\"display:none;\"\u003e\n    \u003cp\u003e\n      This distinctive hearth tool set contains four instruments: poker, broom, shovel and scraper - all you need to operate and maintain your wood-burning appliance. The dramatic use of steel makes a strong contemporary design statement. Kit height: 27 1\/2” (69 cm). Ø ​7 1\/2” (19 cm). Proudly made in Canada.\n    \u003c\/p\u003e\n  \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cspan id=\"seeMoreDesc\" class=\"see-link\" style=\"margin-bottom:20px; display:inline-block;\"\u003e\n  Full Description\n\u003c\/span\u003e\n\n\u003c!-- QUICK SPECIFICATIONS BOX --\u003e\n\u003cdiv id=\"quick-specs\"\u003e\n  \u003cdiv\u003e\n    🌍 \u003cstrong\u003eMade in:\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=\"Canada Flag\"\u003e\n        \u003cspan\u003eCanada\u003c\/span\u003e\n      \u003c\/span\u003e\n    \u003c\/span\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv style=\"margin-top: 10px;\"\u003e\n    \u003cspan id=\"seeFullSpecs\" class=\"see-link\"\u003eFull Specifications\u003c\/span\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- SPECIFICATIONS COLLAPSIBLE --\u003e\n\u003cdiv id=\"specs-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eSpecifications\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\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;\"\u003eAppliance Performance\u003c\/h3\u003e\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo appliance performance available for this product\u003c\/p\u003e\n    \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;\"\u003eGeneral Features\u003c\/h3\u003e\n\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo general features available for this product\u003c\/p\u003e\n    \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\n  Clearances\n\u003c\/h3\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\n  \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo clearances available for this product\u003c\/p\u003e\n\u003c\/table\u003e\n\n    \u003c!-- See Less link inside accordion --\u003e\n    \u003cdiv style=\"text-align:center; margin-top: 15px;\"\u003e\n      \u003cspan id=\"seeLessSpecs\" class=\"see-link\" style=\"display:none;\"\u003eSee Less\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- MANUALS COLLAPSIBLE --\u003e\n\u003cdiv id=\"manuals-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eManuals \u0026amp; Instructions\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\n    \u003cul\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo manual or leaflet is available for this product\u003c\/p\u003e\n      \u003c!-- PDF Links Styled as Buttons --\u003e\n      \u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 10px;\"\u003e\n      \u003c\/div\u003e\n    \u003c\/ul\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\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":43693668171827,"sku":"AC02622","price":190.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/AC02622.webp?v=1761079831"},{"product_id":"nordik-fireplace-tool-set","title":"NORDIK FIREPLACE TOOL SET","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  \u003cp id=\"desc-teaser\"\u003e\u003c\/p\u003e\n  \u003cspan id=\"desc-more\" style=\"display:none;\"\u003e\n    \u003cp\u003e\n      This distinctive hearth tool set contains four instruments: poker, broom, shovel and clamp – all the tools needed to operate and maintain your wood-burning stove or fireplace. Height of stand: 21\" (53 cm). Dimensions of square base: 9 1\/2\" (24 cm) X 4 3\/4\" (12 cm). Made in France with exceptional craftmanship.\n    \u003c\/p\u003e\n  \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cspan id=\"seeMoreDesc\" class=\"see-link\" style=\"margin-bottom:20px; display:inline-block;\"\u003e\n  Full Description\n\u003c\/span\u003e\n\n\u003c!-- QUICK SPECIFICATIONS BOX --\u003e\n\u003cdiv id=\"quick-specs\"\u003e\n  \u003cdiv\u003e\n    \u003cp\u003eNo specifications available for this product\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv style=\"margin-top: 10px;\"\u003e\n    \u003cspan id=\"seeFullSpecs\" class=\"see-link\"\u003eFull Specifications\u003c\/span\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- SPECIFICATIONS COLLAPSIBLE --\u003e\n\u003cdiv id=\"specs-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eSpecifications\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\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;\"\u003eAppliance Performance\u003c\/h3\u003e\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo appliance performance available for this product\u003c\/p\u003e\n    \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;\"\u003eGeneral Features\u003c\/h3\u003e\n\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo general features available for this product\u003c\/p\u003e\n    \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\n  Clearances\n\u003c\/h3\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\n  \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo clearances available for this product\u003c\/p\u003e\n\u003c\/table\u003e\n\n    \u003c!-- See Less link inside accordion --\u003e\n    \u003cdiv style=\"text-align:center; margin-top: 15px;\"\u003e\n      \u003cspan id=\"seeLessSpecs\" class=\"see-link\" style=\"display:none;\"\u003eSee Less\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- MANUALS COLLAPSIBLE --\u003e\n\u003cdiv id=\"manuals-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eManuals \u0026amp; Instructions\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\n    \u003cul\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo manual or leaflet is available for this product\u003c\/p\u003e\n      \u003c!-- PDF Links Styled as Buttons --\u003e\n      \u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 10px;\"\u003e\n      \u003c\/div\u003e\n    \u003c\/ul\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\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":43693669220403,"sku":"AC02628","price":340.0,"currency_code":"CAD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/AC02628_nordik_web.webp?v=1761079923"},{"product_id":"petal-fireplace-tool-set","title":"PETAL FIREPLACE TOOL SET","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  \u003cp id=\"desc-teaser\"\u003e\u003c\/p\u003e\n  \u003cspan id=\"desc-more\" style=\"display:none;\"\u003e\n    \u003cp\u003e\n      This distinctive hearth tool set contains four instruments: poker, broom, shovel and clamp – all the tools needed to operate and maintain your wood-burning stove or fireplace. A nice option for those who want to camouflage tools for a more decorative look. Height of stand: 20\" (51 cm). Base diameter: 7 1\/2\" (19 cm). Made in France with exceptional craftmanship.\n    \u003c\/p\u003e\n  \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cspan id=\"seeMoreDesc\" class=\"see-link\" style=\"margin-bottom:20px; display:inline-block;\"\u003e\n  Full Description\n\u003c\/span\u003e\n\n\u003c!-- QUICK SPECIFICATIONS BOX --\u003e\n\u003cdiv id=\"quick-specs\"\u003e\n  \u003cdiv\u003e\n    \u003cp\u003eNo specifications available for this product\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv style=\"margin-top: 10px;\"\u003e\n    \u003cspan id=\"seeFullSpecs\" class=\"see-link\"\u003eFull Specifications\u003c\/span\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- SPECIFICATIONS COLLAPSIBLE --\u003e\n\u003cdiv id=\"specs-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eSpecifications\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\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;\"\u003eAppliance Performance\u003c\/h3\u003e\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo appliance performance available for this product\u003c\/p\u003e\n    \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;\"\u003eGeneral Features\u003c\/h3\u003e\n\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo general features available for this product\u003c\/p\u003e\n    \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\n  Clearances\n\u003c\/h3\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\n  \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo clearances available for this product\u003c\/p\u003e\n\u003c\/table\u003e\n\n    \u003c!-- See Less link inside accordion --\u003e\n    \u003cdiv style=\"text-align:center; margin-top: 15px;\"\u003e\n      \u003cspan id=\"seeLessSpecs\" class=\"see-link\" style=\"display:none;\"\u003eSee Less\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- MANUALS COLLAPSIBLE --\u003e\n\u003cdiv id=\"manuals-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eManuals \u0026amp; Instructions\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\n    \u003cul\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo manual or leaflet is available for this product\u003c\/p\u003e\n      \u003c!-- PDF Links Styled as Buttons --\u003e\n      \u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 10px;\"\u003e\n      \u003c\/div\u003e\n    \u003c\/ul\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\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":43693672890419,"sku":"AC02629","price":295.0,"currency_code":"CAD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/AC02629.webp?v=1761080031"},{"product_id":"spektra-fireplace-tool-set","title":"SPEKTRA FIREPLACE TOOL SET","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  \u003cp id=\"desc-teaser\"\u003e\u003c\/p\u003e\n  \u003cspan id=\"desc-more\" style=\"display:none;\"\u003e\n    \u003cp\u003e\n      This distinctive hearth tool set contains four instruments: poker, broom, shovel and clamp – all the tools needed to operate and maintain your wood-burning stove or fireplace. You will appreciate its futuristic look for a unique atmosphere. Height of stand: 20\" (51 cm). Base diameter: 7 1\/2\" (19 cm). Made in France with exceptional craftmanship.\n    \u003c\/p\u003e\n  \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cspan id=\"seeMoreDesc\" class=\"see-link\" style=\"margin-bottom:20px; display:inline-block;\"\u003e\n  Full Description\n\u003c\/span\u003e\n\n\u003c!-- QUICK SPECIFICATIONS BOX --\u003e\n\u003cdiv id=\"quick-specs\"\u003e\n  \u003cdiv\u003e\n    \u003cp\u003eNo specifications available for this product\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv style=\"margin-top: 10px;\"\u003e\n    \u003cspan id=\"seeFullSpecs\" class=\"see-link\"\u003eFull Specifications\u003c\/span\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- SPECIFICATIONS COLLAPSIBLE --\u003e\n\u003cdiv id=\"specs-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eSpecifications\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\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;\"\u003eAppliance Performance\u003c\/h3\u003e\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo appliance performance available for this product\u003c\/p\u003e\n    \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;\"\u003eGeneral Features\u003c\/h3\u003e\n\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo general features available for this product\u003c\/p\u003e\n    \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\n  Clearances\n\u003c\/h3\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\n  \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo clearances available for this product\u003c\/p\u003e\n\u003c\/table\u003e\n\n    \u003c!-- See Less link inside accordion --\u003e\n    \u003cdiv style=\"text-align:center; margin-top: 15px;\"\u003e\n      \u003cspan id=\"seeLessSpecs\" class=\"see-link\" style=\"display:none;\"\u003eSee Less\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- MANUALS COLLAPSIBLE --\u003e\n\u003cdiv id=\"manuals-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eManuals \u0026amp; Instructions\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\n    \u003cul\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo manual or leaflet is available for this product\u003c\/p\u003e\n      \u003c!-- PDF Links Styled as Buttons --\u003e\n      \u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 10px;\"\u003e\n      \u003c\/div\u003e\n    \u003c\/ul\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\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":43693674364979,"sku":"AC02631","price":205.0,"currency_code":"CAD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/AC02631.webp?v=1761080157"},{"product_id":"fireplace-carrying-handles","title":"FIREPLACE CARRYING HANDLES","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  \u003cp id=\"desc-teaser\"\u003e\u003c\/p\u003e\n  \u003cspan id=\"desc-more\" style=\"display:none;\"\u003e\n    \u003cp\u003e\n      These carrying handles are to be used only on fireplaces manufactured by SBI. They are designed to lift, not pull or slide the fireplace.\n    \u003c\/p\u003e\n  \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cspan id=\"seeMoreDesc\" class=\"see-link\" style=\"margin-bottom:20px; display:inline-block;\"\u003e\n  Full Description\n\u003c\/span\u003e\n\n\u003c!-- QUICK SPECIFICATIONS BOX --\u003e\n\u003cdiv id=\"quick-specs\"\u003e\n  \u003cdiv\u003e\n    🌍 \u003cstrong\u003eMade in:\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=\"Canada Flag\"\u003e\n        \u003cspan\u003eCanada\u003c\/span\u003e\n      \u003c\/span\u003e\n    \u003c\/span\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv style=\"margin-top: 10px;\"\u003e\n    \u003cspan id=\"seeFullSpecs\" class=\"see-link\"\u003eFull Specifications\u003c\/span\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- SPECIFICATIONS COLLAPSIBLE --\u003e\n\u003cdiv id=\"specs-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eSpecifications\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\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;\"\u003eAppliance Performance\u003c\/h3\u003e\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo appliance performance available for this product\u003c\/p\u003e\n    \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;\"\u003eGeneral Features\u003c\/h3\u003e\n\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo general features available for this product\u003c\/p\u003e\n    \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\n  Clearances\n\u003c\/h3\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\n  \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo clearances available for this product\u003c\/p\u003e\n\u003c\/table\u003e\n\n    \u003c!-- See Less link inside accordion --\u003e\n    \u003cdiv style=\"text-align:center; margin-top: 15px;\"\u003e\n      \u003cspan id=\"seeLessSpecs\" class=\"see-link\" style=\"display:none;\"\u003eSee Less\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- MANUALS COLLAPSIBLE --\u003e\n\u003cdiv id=\"manuals-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eManuals \u0026amp; Instructions\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\n    \u003cul\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo manual or leaflet is available for this product\u003c\/p\u003e\n      \u003c!-- PDF Links Styled as Buttons --\u003e\n      \u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 10px;\"\u003e\n      \u003c\/div\u003e\n    \u003c\/ul\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\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":43693674823731,"sku":"AC09200","price":95.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/AC09200.webp?v=1761080227"},{"product_id":"kevlar-thread-wood-stove-and-fireplace-gloves","title":"KEVLAR THREAD WOOD STOVE AND FIREPLACE GLOVES","description":"\u003cdiv class=\"product-expandable-box open\" id=\"description\"\u003e\n\u003cdiv class=\"children\"\u003e\n\u003cdiv class=\"description-text\"\u003e\n\u003cp\u003eRecommended for a clean and safe use of any type of wood-burning appliance. Fire-resistant kevlar sewings.\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e","brand":"The North Flame","offers":[{"title":"Default Title","offer_id":43693674987571,"sku":"AC07820","price":30.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/AC07820.webp?v=1772849115"},{"product_id":"19-kevlar-thread-sewn-fireplace-gloves","title":"19\" KEVLAR THREAD SEWN FIREPLACE GLOVES","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\u003cp id=\"desc-teaser\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan\u003eThermal protective gloves with long cuffs (19\" or 48 cm).\u003c\/span\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cp\u003e \u003c\/p\u003e","brand":"The North Flame","offers":[{"title":"Default Title","offer_id":43693675511859,"sku":"AC07822","price":55.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/AC07822.webp?v=1761080473"},{"product_id":"start-up-kit","title":"START-UP KIT","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  \u003cp id=\"desc-teaser\"\u003e\u003c\/p\u003e\n  \u003cspan id=\"desc-more\" style=\"display:none;\"\u003e\n    \u003cp\u003e\n      Includes: fire starter (50 bags), stove paint 12 OZ, high quality gloves, digital moisture meter, glass cleaner (500 mL - 16.9 FL.OZ) and thermometer with probe for double wall venting.\n    \u003c\/p\u003e\n  \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cspan id=\"seeMoreDesc\" class=\"see-link\" style=\"margin-bottom:20px; display:inline-block;\"\u003e\n  Full Description\n\u003c\/span\u003e\n\n\u003c!-- QUICK SPECIFICATIONS BOX --\u003e\n\u003cdiv id=\"quick-specs\"\u003e\n  \u003cdiv\u003e\n    \u003cp\u003eNo specifications available for this product\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv style=\"margin-top: 10px;\"\u003e\n    \u003cspan id=\"seeFullSpecs\" class=\"see-link\"\u003eFull Specifications\u003c\/span\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- SPECIFICATIONS COLLAPSIBLE --\u003e\n\u003cdiv id=\"specs-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eSpecifications\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\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;\"\u003eAppliance Performance\u003c\/h3\u003e\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo appliance performance available for this product\u003c\/p\u003e\n    \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;\"\u003eGeneral Features\u003c\/h3\u003e\n\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo general features available for this product\u003c\/p\u003e\n    \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\n  Clearances\n\u003c\/h3\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\n  \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo clearances available for this product\u003c\/p\u003e\n\u003c\/table\u003e\n\n    \u003c!-- See Less link inside accordion --\u003e\n    \u003cdiv style=\"text-align:center; margin-top: 15px;\"\u003e\n      \u003cspan id=\"seeLessSpecs\" class=\"see-link\" style=\"display:none;\"\u003eSee Less\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- MANUALS COLLAPSIBLE --\u003e\n\u003cdiv id=\"manuals-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eManuals \u0026amp; Instructions\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\n    \u003cul\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo manual or leaflet is available for this product\u003c\/p\u003e\n      \u003c!-- PDF Links Styled as Buttons --\u003e\n      \u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 10px;\"\u003e\n      \u003c\/div\u003e\n    \u003c\/ul\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\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":43693676757043,"sku":"AC01380","price":189.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/AC01380_web.webp?v=1761080732"},{"product_id":"3-pellet-stove-cleaning-kit","title":"3\" PELLET STOVE CLEANING KIT","description":"\u003cp\u003e\u003cspan\u003eIncludes: a stainless steel bristled brush along with a long scraper featuring a tough steel blade and an ergonomic handle. Efficiently removes the hardened buildup on the burn pot surface and holes, as well as the outlet of the pellet supply auger housing. A Ø3\" (76 mm) chimney brush (1\/4\"-20 thread) with flexible rods allowing cleaning up to 10 feet (3.04 m). To ease maintenance of exhaust systems with offsets. A nylon bristled tapered brush with a long steel rod and a wooden handle. Ideal for tight spaces and diameters between 1\" (25 mm) and 2 1\/4\" (57 mm). A glass cleaner (500 mL-16.9 fl.oz.). Used regularly, it prevents permanent stains on the glass.\u003c\/span\u003e\u003c\/p\u003e","brand":"The North Flame","offers":[{"title":"Default Title","offer_id":43693677412403,"sku":"AC02712","price":110.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/AC02712.webp?v=1761080927"},{"product_id":"4-pellet-stove-cleaning-kit","title":"4\" PELLET STOVE CLEANING KIT","description":"\u003cp\u003e\u003cspan\u003eIncludes: a stainless steel bristled brush along with a long scraper featuring a tough steel blade and an ergonomic handle. Efficiently removes the hardened buildup on the burn pot surface and holes, as well as the outlet of the pellet supply auger housing. A Ø4\" (102 mm) chimney brush (1\/4\"-20 thread) with flexible rods allowing cleaning up to 10 feet (3.04m). To ease maintenance of exhaust systems with offsets. A nylon bristled tapered brush with a long steel rod and a wooden handle. Ideal for tight spaces and diameters between 1\" (25 mm) and 2 1\/4\" (57 mm). A glass cleaner (500 mL-16.9 fl.oz.). Used regularly, it prevents permanent stains on the glass.\u003c\/span\u003e\u003c\/p\u003e","brand":"The North Flame","offers":[{"title":"Default Title","offer_id":43693678985267,"sku":"AC02714","price":125.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/AC02712.webp?v=1761080927"},{"product_id":"cardboard-frame-air-filter-with-support-20-x-15-x-1","title":"CARDBOARD FRAME AIR FILTER WITH SUPPORT (20\" x 15\" x 1\")","description":"\u003cp\u003e\u003cspan\u003eSet includes: 1x bracket, 2x housing plates, 1x filter and 24x screws.\u003c\/span\u003e\u003c\/p\u003e\n\u003ch4\u003e\u003cstrong\u003eManuals and Instructions\u003c\/strong\u003e\u003c\/h4\u003e\n\u003cdiv class=\"manual-description-text\"\u003e\n\u003cp\u003eConsult the available manuals and leaflets for more information on performance, installation and use requirements, etc.\u003c\/p\u003e\n\u003cp\u003e🔗\u003ca href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/45695A-F_16-04-2015.pdf?v=1761081556\"\u003eInstallation and user's manual\u003c\/a\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"manual-description-text\"\u003e\u003c\/div\u003e","brand":"The North Flame","offers":[{"title":"Default Title","offer_id":43693681246259,"sku":"AC01390","price":79.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/AC01390.webp?v=1761081434"},{"product_id":"washable-aluminum-air-filter-with-support-20-x-15-x-1","title":"WASHABLE ALUMINUM AIR FILTER WITH SUPPORT (20\" x 15\" x 1\")","description":"\u003cp\u003e\u003cspan\u003eIncludes: 1x washable filter, 1x filter holder, 2x air deflectors and fixing screws. Be sure to clean and replace your wood furnace filter regularly to protect the blower motor from dust accumulation. If the filter is not cleaned regularly the furnace will overheat.\u003c\/span\u003e\u003c\/p\u003e\n\u003ch4\u003e\u003cstrong\u003eManuals and Instructions\u003c\/strong\u003e\u003c\/h4\u003e\n\u003cdiv class=\"manual-description-text\"\u003e\n\u003cp\u003eConsult the available manuals and leaflets for more information on performance, installation and use requirements, etc.\u003c\/p\u003e\n\u003cp\u003e🔗\u003ca href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/45695A-F_16-04-2015.pdf?v=1761081556\"\u003eInstallation and user's manual\u003c\/a\u003e\u003c\/p\u003e\n\u003c\/div\u003e","brand":"The North Flame","offers":[{"title":"Default Title","offer_id":43693683015731,"sku":"AC01391","price":100.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/AC01391.webp?v=1761081716"},{"product_id":"cold-air-return-housing-with-filter","title":"COLD AIR RETURN HOUSING WITH FILTER","description":"\u003cp\u003e\u003cspan\u003eAllows the installation of a cold air return duct, it includes the support that is necessary for the installation of an air filter. Includes: 1x case top, 1x case bottom, 2x case sides, 1x filter, 1x filter holder, 2x air deflectors and fixing screws. Be sure to clean and replace your wood furnace filter regularly to protect the blower motor from dust accumulation.\u003c\/span\u003e\u003c\/p\u003e\n\u003ch4\u003e\u003cstrong\u003eManuals and Instructions\u003c\/strong\u003e\u003c\/h4\u003e\n\u003cdiv class=\"manual-description-text\"\u003e\n\u003cp\u003eConsult the available manuals and leaflets for more information on performance, installation and use requirements, etc.\u003c\/p\u003e\n\u003cp\u003e🔗\u003ca href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/45696A-F_17-12-2014.pdf?v=1761100818\"\u003eInstallation and user's manual\u003c\/a\u003e\u003c\/p\u003e\n\u003c\/div\u003e","brand":"The North Flame","offers":[{"title":"Default Title","offer_id":43695130443827,"sku":"AC01392","price":100.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/AC01392_2025_MFP.webp?v=1761100763"},{"product_id":"hepa-filter-with-spark-arrestor-for-ash-vacuum-ac02582","title":"HEPA FILTER WITH SPARK ARRESTOR FOR ASH VACUUM (AC02582)","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  \u003cp id=\"desc-teaser\"\u003e\u003c\/p\u003e\n  \u003cspan id=\"desc-more\" style=\"display:none;\"\u003e\n    \u003cp\u003e\n      This filter HEPA allows to trap effectively the small particles of dry waste. The air sucked up by the sweeper is filtered and cleared of a very big part of allergens, for a healthier air. Resistant and easy to clean, it is enough to shake it or to rinse to remove the impurities.\n    \u003c\/p\u003e\n  \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cspan id=\"seeMoreDesc\" class=\"see-link\" style=\"margin-bottom:20px; display:inline-block;\"\u003e\n  Full Description\n\u003c\/span\u003e\n\n\u003c!-- QUICK SPECIFICATIONS BOX --\u003e\n\u003cdiv id=\"quick-specs\"\u003e\n  \u003cdiv\u003e\n    \u003cp\u003eNo specifications available for this product\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv style=\"margin-top: 10px;\"\u003e\n    \u003cspan id=\"seeFullSpecs\" class=\"see-link\"\u003eFull Specifications\u003c\/span\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- SPECIFICATIONS COLLAPSIBLE --\u003e\n\u003cdiv id=\"specs-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eSpecifications\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\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;\"\u003eAppliance Performance\u003c\/h3\u003e\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo appliance performance available for this product\u003c\/p\u003e\n    \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;\"\u003eGeneral Features\u003c\/h3\u003e\n\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo general features available for this product\u003c\/p\u003e\n    \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\n  Clearances\n\u003c\/h3\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\n  \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo clearances available for this product\u003c\/p\u003e\n\u003c\/table\u003e\n\n    \u003c!-- See Less link inside accordion --\u003e\n    \u003cdiv style=\"text-align:center; margin-top: 15px;\"\u003e\n      \u003cspan id=\"seeLessSpecs\" class=\"see-link\" style=\"display:none;\"\u003eSee Less\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- MANUALS COLLAPSIBLE --\u003e\n\u003cdiv id=\"manuals-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eManuals \u0026amp; Instructions\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\n    \u003cul\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo manual or leaflet is available for this product\u003c\/p\u003e\n      \u003c!-- PDF Links Styled as Buttons --\u003e\n      \u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 10px;\"\u003e\n      \u003c\/div\u003e\n    \u003c\/ul\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\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":43695144173619,"sku":"AC02581","price":19.5,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/AC02581.webp?v=1761101227"},{"product_id":"sootstop-fabric-pre-filter-with-metal-filter-for-ac02582-ash-vacuum","title":"SOOTSTOP FABRIC PRE-FILTER WITH METAL FILTER FOR AC02582 ASH VACUUM","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  \u003cp id=\"desc-teaser\"\u003e\u003c\/p\u003e\n  \u003cspan id=\"desc-more\" style=\"display:none;\"\u003e\n    \u003cp\u003e\n      For a greater longevity of the engine of your sweeper, add on your filter HEPA, it pre-filters cloth and metal sootstop. Specially designed to trap effectively the particles of very small sizes so fine and volatile as the ash, it will preserve all its power of suction in spite of the accumulation of dusts. Easy maintenance: shake it simply or wash it. Replace immediately if the fabric is damaged.\n    \u003c\/p\u003e\n  \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cspan id=\"seeMoreDesc\" class=\"see-link\" style=\"margin-bottom:20px; display:inline-block;\"\u003e\n  Full Description\n\u003c\/span\u003e\n\n\u003c!-- QUICK SPECIFICATIONS BOX --\u003e\n\u003cdiv id=\"quick-specs\"\u003e\n  \u003cdiv\u003e\n    \u003cp\u003eNo specifications available for this product\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv style=\"margin-top: 10px;\"\u003e\n    \u003cspan id=\"seeFullSpecs\" class=\"see-link\"\u003eFull Specifications\u003c\/span\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- SPECIFICATIONS COLLAPSIBLE --\u003e\n\u003cdiv id=\"specs-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eSpecifications\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\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;\"\u003eAppliance Performance\u003c\/h3\u003e\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo appliance performance available for this product\u003c\/p\u003e\n    \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;\"\u003eGeneral Features\u003c\/h3\u003e\n\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo general features available for this product\u003c\/p\u003e\n    \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\n  Clearances\n\u003c\/h3\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\n  \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo clearances available for this product\u003c\/p\u003e\n\u003c\/table\u003e\n\n    \u003c!-- See Less link inside accordion --\u003e\n    \u003cdiv style=\"text-align:center; margin-top: 15px;\"\u003e\n      \u003cspan id=\"seeLessSpecs\" class=\"see-link\" style=\"display:none;\"\u003eSee Less\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- MANUALS COLLAPSIBLE --\u003e\n\u003cdiv id=\"manuals-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eManuals \u0026amp; Instructions\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\n    \u003cul\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo manual or leaflet is available for this product\u003c\/p\u003e\n      \u003c!-- PDF Links Styled as Buttons --\u003e\n      \u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 10px;\"\u003e\n      \u003c\/div\u003e\n    \u003c\/ul\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\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":43695146631219,"sku":"AC02584","price":13.5,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/AC02584.webp?v=1761101453"},{"product_id":"filter-kit-for-ac02586-ash-vacuum-cleaner","title":"FILTER KIT FOR (AC02586) ASH VACUUM CLEANER","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  \u003cp id=\"desc-teaser\"\u003e\u003c\/p\u003e\n  \u003cspan id=\"desc-more\" style=\"display:none;\"\u003e\n    \u003cp\u003e\n      Designed to effectively trap very small fine and volatile particles such as cooled ashes. Its HEPA filter ensures healthier air, improving the quality of the air you breathe. Durable and easy to install, replace it as soon as the cloth is filled with impurities or damaged, for longer vacuum motor life.\n    \u003c\/p\u003e\n  \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cspan id=\"seeMoreDesc\" class=\"see-link\" style=\"margin-bottom:20px; display:inline-block;\"\u003e\n  Full Description\n\u003c\/span\u003e\n\n\u003c!-- QUICK SPECIFICATIONS BOX --\u003e\n\u003cdiv id=\"quick-specs\"\u003e\n  \u003cdiv\u003e\n    \u003cp\u003eNo specifications available for this product\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv style=\"margin-top: 10px;\"\u003e\n    \u003cspan id=\"seeFullSpecs\" class=\"see-link\"\u003eFull Specifications\u003c\/span\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- SPECIFICATIONS COLLAPSIBLE --\u003e\n\u003cdiv id=\"specs-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eSpecifications\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\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;\"\u003eAppliance Performance\u003c\/h3\u003e\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo appliance performance available for this product\u003c\/p\u003e\n    \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;\"\u003eGeneral Features\u003c\/h3\u003e\n\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo general features available for this product\u003c\/p\u003e\n    \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\n  Clearances\n\u003c\/h3\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\n  \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo clearances available for this product\u003c\/p\u003e\n\u003c\/table\u003e\n\n    \u003c!-- See Less link inside accordion --\u003e\n    \u003cdiv style=\"text-align:center; margin-top: 15px;\"\u003e\n      \u003cspan id=\"seeLessSpecs\" class=\"see-link\" style=\"display:none;\"\u003eSee Less\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- MANUALS COLLAPSIBLE --\u003e\n\u003cdiv id=\"manuals-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eManuals \u0026amp; Instructions\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\n    \u003cul\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo manual or leaflet is available for this product\u003c\/p\u003e\n      \u003c!-- PDF Links Styled as Buttons --\u003e\n      \u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 10px;\"\u003e\n      \u003c\/div\u003e\n    \u003c\/ul\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\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":43695146795059,"sku":"AC02587","price":26.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/AC02587.webp?v=1761116087"},{"product_id":"20-x-16-x-1-cardboard-air-filter-12-box","title":"20\" x 16\" x 1\" CARDBOARD AIR FILTER (12\/BOX)","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  \u003cp id=\"desc-teaser\"\u003e\u003c\/p\u003e\n  \u003cspan id=\"desc-more\" style=\"display:none;\"\u003e\n    \u003cp\u003e\n      Economical box of 12 cardboard filters.\n    \u003c\/p\u003e\n  \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cspan id=\"seeMoreDesc\" class=\"see-link\" style=\"margin-bottom:20px; display:inline-block;\"\u003e\n  Full Description\n\u003c\/span\u003e\n\n\u003c!-- QUICK SPECIFICATIONS BOX --\u003e\n\u003cdiv id=\"quick-specs\"\u003e\n  \u003cdiv\u003e\n    \u003cp\u003eNo specifications available for this product\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv style=\"margin-top: 10px;\"\u003e\n    \u003cspan id=\"seeFullSpecs\" class=\"see-link\"\u003eFull Specifications\u003c\/span\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- SPECIFICATIONS COLLAPSIBLE --\u003e\n\u003cdiv id=\"specs-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eSpecifications\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\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;\"\u003eAppliance Performance\u003c\/h3\u003e\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo appliance performance available for this product\u003c\/p\u003e\n    \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;\"\u003eGeneral Features\u003c\/h3\u003e\n\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo general features available for this product\u003c\/p\u003e\n    \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\n  Clearances\n\u003c\/h3\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\n  \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo clearances available for this product\u003c\/p\u003e\n\u003c\/table\u003e\n\n    \u003c!-- See Less link inside accordion --\u003e\n    \u003cdiv style=\"text-align:center; margin-top: 15px;\"\u003e\n      \u003cspan id=\"seeLessSpecs\" class=\"see-link\" style=\"display:none;\"\u003eSee Less\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- MANUALS COLLAPSIBLE --\u003e\n\u003cdiv id=\"manuals-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eManuals \u0026amp; Instructions\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\n    \u003cul\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo manual or leaflet is available for this product\u003c\/p\u003e\n      \u003c!-- PDF Links Styled as Buttons --\u003e\n      \u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 10px;\"\u003e\n      \u003c\/div\u003e\n    \u003c\/ul\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\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":43695344779315,"sku":"AC02764B","price":119.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/AC02764B.webp?v=1761116271"},{"product_id":"filter-support-housing","title":"FILTER SUPPORT HOUSING","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  \u003cp id=\"desc-teaser\"\u003e\u003c\/p\u003e\n  \u003cspan id=\"desc-more\" style=\"display:none;\"\u003e\n    \u003cp\u003e\n      No descriptions available for this product\n    \u003c\/p\u003e\n  \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cspan id=\"seeMoreDesc\" class=\"see-link\" style=\"margin-bottom:20px; display:inline-block;\"\u003e\n  Full Description\n\u003c\/span\u003e\n\n\u003c!-- QUICK SPECIFICATIONS BOX --\u003e\n\u003cdiv id=\"quick-specs\"\u003e\n  \u003cdiv\u003e\n    \u003cp\u003eNo specifications available for this product\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv style=\"margin-top: 10px;\"\u003e\n    \u003cspan id=\"seeFullSpecs\" class=\"see-link\"\u003eFull Specifications\u003c\/span\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- SPECIFICATIONS COLLAPSIBLE --\u003e\n\u003cdiv id=\"specs-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eSpecifications\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\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;\"\u003eAppliance Performance\u003c\/h3\u003e\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo appliance performance available for this product\u003c\/p\u003e\n    \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;\"\u003eGeneral Features\u003c\/h3\u003e\n\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo general features available for this product\u003c\/p\u003e\n    \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\n  Clearances\n\u003c\/h3\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\n  \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo clearances available for this product\u003c\/p\u003e\n\u003c\/table\u003e\n\n    \u003c!-- See Less link inside accordion --\u003e\n    \u003cdiv style=\"text-align:center; margin-top: 15px;\"\u003e\n      \u003cspan id=\"seeLessSpecs\" class=\"see-link\" style=\"display:none;\"\u003eSee Less\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- MANUALS COLLAPSIBLE --\u003e\n\u003cdiv id=\"manuals-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eManuals \u0026amp; Instructions\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\n    \u003cul\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo manual or leaflet is available for this product\u003c\/p\u003e\n      \u003c!-- PDF Links Styled as Buttons --\u003e\n      \u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 10px;\"\u003e\n      \u003c\/div\u003e\n    \u003c\/ul\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\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":43695346384947,"sku":"SE68609","price":200.0,"currency_code":"CAD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/SE68609.webp?v=1761116402"},{"product_id":"cardboard-air-filter-11-x-20-x-1","title":"CARDBOARD AIR FILTER 11\" x 20\" x 1\"","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  \u003cp id=\"desc-teaser\"\u003e\u003c\/p\u003e\n  \u003cspan id=\"desc-more\" style=\"display:none;\"\u003e\n    \u003cp\u003e\n      This furnace air filter plays a key role in keeping your furnace running smoothly and improving indoor air quality.\n    \u003c\/p\u003e\n  \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cspan id=\"seeMoreDesc\" class=\"see-link\" style=\"margin-bottom:20px; display:inline-block;\"\u003e\n  Full Description\n\u003c\/span\u003e\n\n\u003c!-- QUICK SPECIFICATIONS BOX --\u003e\n\u003cdiv id=\"quick-specs\"\u003e\n  \u003cdiv\u003e\n    \u003cp\u003eNo specifications available for this product\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv style=\"margin-top: 10px;\"\u003e\n    \u003cspan id=\"seeFullSpecs\" class=\"see-link\"\u003eFull Specifications\u003c\/span\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- SPECIFICATIONS COLLAPSIBLE --\u003e\n\u003cdiv id=\"specs-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eSpecifications\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\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;\"\u003eAppliance Performance\u003c\/h3\u003e\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo appliance performance available for this product\u003c\/p\u003e\n    \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;\"\u003eGeneral Features\u003c\/h3\u003e\n\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo general features available for this product\u003c\/p\u003e\n    \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\n  Clearances\n\u003c\/h3\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\n  \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo clearances available for this product\u003c\/p\u003e\n\u003c\/table\u003e\n\n    \u003c!-- See Less link inside accordion --\u003e\n    \u003cdiv style=\"text-align:center; margin-top: 15px;\"\u003e\n      \u003cspan id=\"seeLessSpecs\" class=\"see-link\" style=\"display:none;\"\u003eSee Less\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- MANUALS COLLAPSIBLE --\u003e\n\u003cdiv id=\"manuals-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eManuals \u0026amp; Instructions\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\n    \u003cul\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo manual or leaflet is available for this product\u003c\/p\u003e\n      \u003c!-- PDF Links Styled as Buttons --\u003e\n      \u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 10px;\"\u003e\n      \u003c\/div\u003e\n    \u003c\/ul\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\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":43695352873011,"sku":"21040","price":25.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/21040.webp?v=1761116816"},{"product_id":"cardboard-frame-air-filter-20-x-15-x-1","title":"CARDBOARD FRAME AIR FILTER 20\" x 15\" x 1\"","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  \u003cp id=\"desc-teaser\"\u003e\u003c\/p\u003e\n  \u003cspan id=\"desc-more\" style=\"display:none;\"\u003e\n    \u003cp\u003e\n      This furnace air filter plays a key role in keeping your furnace running smoothly and improving indoor air quality.\n    \u003c\/p\u003e\n  \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cspan id=\"seeMoreDesc\" class=\"see-link\" style=\"margin-bottom:20px; display:inline-block;\"\u003e\n  Full Description\n\u003c\/span\u003e\n\n\u003c!-- QUICK SPECIFICATIONS BOX --\u003e\n\u003cdiv id=\"quick-specs\"\u003e\n  \u003cdiv\u003e\n    \u003cp\u003eNo specifications available for this product\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv style=\"margin-top: 10px;\"\u003e\n    \u003cspan id=\"seeFullSpecs\" class=\"see-link\"\u003eFull Specifications\u003c\/span\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- SPECIFICATIONS COLLAPSIBLE --\u003e\n\u003cdiv id=\"specs-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eSpecifications\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\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;\"\u003eAppliance Performance\u003c\/h3\u003e\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo appliance performance available for this product\u003c\/p\u003e\n    \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;\"\u003eGeneral Features\u003c\/h3\u003e\n\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo general features available for this product\u003c\/p\u003e\n    \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\n  Clearances\n\u003c\/h3\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\n  \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo clearances available for this product\u003c\/p\u003e\n\u003c\/table\u003e\n\n    \u003c!-- See Less link inside accordion --\u003e\n    \u003cdiv style=\"text-align:center; margin-top: 15px;\"\u003e\n      \u003cspan id=\"seeLessSpecs\" class=\"see-link\" style=\"display:none;\"\u003eSee Less\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- MANUALS COLLAPSIBLE --\u003e\n\u003cdiv id=\"manuals-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eManuals \u0026amp; Instructions\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\n    \u003cul\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo manual or leaflet is available for this product\u003c\/p\u003e\n      \u003c!-- PDF Links Styled as Buttons --\u003e\n      \u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 10px;\"\u003e\n      \u003c\/div\u003e\n    \u003c\/ul\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\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":43695352938547,"sku":"21044","price":20.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/21044.webp?v=1761116855"},{"product_id":"filter-12-x-24-x-1","title":"FILTER 12\" x 24\" x 1\"","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  \u003cp id=\"desc-teaser\"\u003e\u003c\/p\u003e\n  \u003cspan id=\"desc-more\" style=\"display:none;\"\u003e\n    \u003cp\u003e\n      This furnace air filter plays a key role in keeping your furnace running smoothly and improving indoor air quality.\n    \u003c\/p\u003e\n  \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cspan id=\"seeMoreDesc\" class=\"see-link\" style=\"margin-bottom:20px; display:inline-block;\"\u003e\n  Full Description\n\u003c\/span\u003e\n\n\u003c!-- QUICK SPECIFICATIONS BOX --\u003e\n\u003cdiv id=\"quick-specs\"\u003e\n  \u003cdiv\u003e\n    \u003cp\u003eNo specifications available for this product\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv style=\"margin-top: 10px;\"\u003e\n    \u003cspan id=\"seeFullSpecs\" class=\"see-link\"\u003eFull Specifications\u003c\/span\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- SPECIFICATIONS COLLAPSIBLE --\u003e\n\u003cdiv id=\"specs-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eSpecifications\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\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;\"\u003eAppliance Performance\u003c\/h3\u003e\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo appliance performance available for this product\u003c\/p\u003e\n    \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;\"\u003eGeneral Features\u003c\/h3\u003e\n\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo general features available for this product\u003c\/p\u003e\n    \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\n  Clearances\n\u003c\/h3\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\n  \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo clearances available for this product\u003c\/p\u003e\n\u003c\/table\u003e\n\n    \u003c!-- See Less link inside accordion --\u003e\n    \u003cdiv style=\"text-align:center; margin-top: 15px;\"\u003e\n      \u003cspan id=\"seeLessSpecs\" class=\"see-link\" style=\"display:none;\"\u003eSee Less\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- MANUALS COLLAPSIBLE --\u003e\n\u003cdiv id=\"manuals-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eManuals \u0026amp; Instructions\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\n    \u003cul\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo manual or leaflet is available for this product\u003c\/p\u003e\n      \u003c!-- PDF Links Styled as Buttons --\u003e\n      \u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 10px;\"\u003e\n      \u003c\/div\u003e\n    \u003c\/ul\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\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":43695356018739,"sku":"21063","price":20.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/21063.webp?v=1761117396"},{"product_id":"cardboard-air-filter-20-x-16-x-1","title":"CARDBOARD AIR FILTER 20\" x 16\" x 1\"","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  \u003cp id=\"desc-teaser\"\u003e\u003c\/p\u003e\n  \u003cspan id=\"desc-more\" style=\"display:none;\"\u003e\n    \u003cp\u003e\n      This furnace air filter plays a key role in keeping your furnace running smoothly and improving indoor air quality.\n    \u003c\/p\u003e\n  \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cspan id=\"seeMoreDesc\" class=\"see-link\" style=\"margin-bottom:20px; display:inline-block;\"\u003e\n  Full Description\n\u003c\/span\u003e\n\n\u003c!-- QUICK SPECIFICATIONS BOX --\u003e\n\u003cdiv id=\"quick-specs\"\u003e\n  \u003cdiv\u003e\n    \u003cp\u003eNo specifications available for this product\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv style=\"margin-top: 10px;\"\u003e\n    \u003cspan id=\"seeFullSpecs\" class=\"see-link\"\u003eFull Specifications\u003c\/span\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- SPECIFICATIONS COLLAPSIBLE --\u003e\n\u003cdiv id=\"specs-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eSpecifications\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\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;\"\u003eAppliance Performance\u003c\/h3\u003e\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo appliance performance available for this product\u003c\/p\u003e\n    \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;\"\u003eGeneral Features\u003c\/h3\u003e\n\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo general features available for this product\u003c\/p\u003e\n    \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\n  Clearances\n\u003c\/h3\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\n  \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo clearances available for this product\u003c\/p\u003e\n\u003c\/table\u003e\n\n    \u003c!-- See Less link inside accordion --\u003e\n    \u003cdiv style=\"text-align:center; margin-top: 15px;\"\u003e\n      \u003cspan id=\"seeLessSpecs\" class=\"see-link\" style=\"display:none;\"\u003eSee Less\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- MANUALS COLLAPSIBLE --\u003e\n\u003cdiv id=\"manuals-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eManuals \u0026amp; Instructions\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\n    \u003cul\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo manual or leaflet is available for this product\u003c\/p\u003e\n      \u003c!-- PDF Links Styled as Buttons --\u003e\n      \u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 10px;\"\u003e\n      \u003c\/div\u003e\n    \u003c\/ul\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\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":43695356051507,"sku":"21231","price":20.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/21231.webp?v=1761117470"},{"product_id":"axial-blower-air-filter","title":"AXIAL BLOWER AIR FILTER","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  \u003cp id=\"desc-teaser\"\u003e\u003c\/p\u003e\n  \u003cspan id=\"desc-more\" style=\"display:none;\"\u003e\n    \u003cp\u003e\n      This furnace air filter plays a key role in keeping your furnace running smoothly and improving indoor air quality.\n    \u003c\/p\u003e\n  \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cspan id=\"seeMoreDesc\" class=\"see-link\" style=\"margin-bottom:20px; display:inline-block;\"\u003e\n  Full Description\n\u003c\/span\u003e\n\n\u003c!-- QUICK SPECIFICATIONS BOX --\u003e\n\u003cdiv id=\"quick-specs\"\u003e\n  \u003cdiv\u003e\n    \u003cp\u003eNo specifications available for this product\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv style=\"margin-top: 10px;\"\u003e\n    \u003cspan id=\"seeFullSpecs\" class=\"see-link\"\u003eFull Specifications\u003c\/span\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- SPECIFICATIONS COLLAPSIBLE --\u003e\n\u003cdiv id=\"specs-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eSpecifications\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\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;\"\u003eAppliance Performance\u003c\/h3\u003e\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo appliance performance available for this product\u003c\/p\u003e\n    \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;\"\u003eGeneral Features\u003c\/h3\u003e\n\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo general features available for this product\u003c\/p\u003e\n    \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\n  Clearances\n\u003c\/h3\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\n  \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo clearances available for this product\u003c\/p\u003e\n\u003c\/table\u003e\n\n    \u003c!-- See Less link inside accordion --\u003e\n    \u003cdiv style=\"text-align:center; margin-top: 15px;\"\u003e\n      \u003cspan id=\"seeLessSpecs\" class=\"see-link\" style=\"display:none;\"\u003eSee Less\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- MANUALS COLLAPSIBLE --\u003e\n\u003cdiv id=\"manuals-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eManuals \u0026amp; Instructions\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\n    \u003cul\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo manual or leaflet is available for this product\u003c\/p\u003e\n      \u003c!-- PDF Links Styled as Buttons --\u003e\n      \u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 10px;\"\u003e\n      \u003c\/div\u003e\n    \u003c\/ul\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\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":43695356084275,"sku":"21300","price":25.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/21300.webp?v=1761117522"},{"product_id":"cardboard-air-filter-25-x-14-x-1","title":"CARDBOARD AIR FILTER 25\" x 14\" x 1\"","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  \u003cp id=\"desc-teaser\"\u003e\u003c\/p\u003e\n  \u003cspan id=\"desc-more\" style=\"display:none;\"\u003e\n    \u003cp\u003e\n      This furnace air filter plays a key role in keeping your furnace running smoothly and improving indoor air quality.\n    \u003c\/p\u003e\n  \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cspan id=\"seeMoreDesc\" class=\"see-link\" style=\"margin-bottom:20px; display:inline-block;\"\u003e\n  Full Description\n\u003c\/span\u003e\n\n\u003c!-- QUICK SPECIFICATIONS BOX --\u003e\n\u003cdiv id=\"quick-specs\"\u003e\n  \u003cdiv\u003e\n    \u003cp\u003eNo specifications available for this product\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv style=\"margin-top: 10px;\"\u003e\n    \u003cspan id=\"seeFullSpecs\" class=\"see-link\"\u003eFull Specifications\u003c\/span\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- SPECIFICATIONS COLLAPSIBLE --\u003e\n\u003cdiv id=\"specs-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eSpecifications\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\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;\"\u003eAppliance Performance\u003c\/h3\u003e\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo appliance performance available for this product\u003c\/p\u003e\n    \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;\"\u003eGeneral Features\u003c\/h3\u003e\n\n    \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo general features available for this product\u003c\/p\u003e\n    \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\n  Clearances\n\u003c\/h3\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\n  \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo clearances available for this product\u003c\/p\u003e\n\u003c\/table\u003e\n\n    \u003c!-- See Less link inside accordion --\u003e\n    \u003cdiv style=\"text-align:center; margin-top: 15px;\"\u003e\n      \u003cspan id=\"seeLessSpecs\" class=\"see-link\" style=\"display:none;\"\u003eSee Less\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- MANUALS COLLAPSIBLE --\u003e\n\u003cdiv id=\"manuals-accordion\" class=\"accordion\"\u003e\n  \u003cdiv class=\"accordion-header\"\u003eManuals \u0026amp; Instructions\u003c\/div\u003e\n  \u003cdiv class=\"accordion-content\"\u003e\n    \u003cul\u003e\n      \u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003eNo manual or leaflet is available for this product\u003c\/p\u003e\n      \u003c!-- PDF Links Styled as Buttons --\u003e\n      \u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 10px;\"\u003e\n      \u003c\/div\u003e\n    \u003c\/ul\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\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":43695356117043,"sku":"21367","price":20.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/21367.webp?v=1761117574"}],"url":"https:\/\/thenorthflame.com\/collections\/accessories.oembed?page=3","provider":"The North Flame","version":"1.0","type":"link"}