{"title":"Casquettes","description":"\u003cdiv class=\"texts-box\"\u003e\n\n\u003cp class=\"description\"\u003e Parfaits pour protéger le tuyau et empêcher les infiltrations d'eau et de débris, ainsi que les courants d'air indésirables, les bouchons de tuyau à granulés sont fabriqués en acier inoxydable. \u003c\/p\u003e\n\n\n\u003c\/div\u003e","products":[{"product_id":"3-pellet-jet-cap","title":"CAPUCHON POUR JET À GRANULÉS DE 3\" ","description":"\u003cstyle\u003e\n  \/* Accordion styling *\/\n  .accordion {\n    border: 1px solid #ddd;\n    border-radius: 5px;\n    margin-bottom: 20px;\n    background: #f9f9f9;\n  }\n  .accordion-header {\n    padding: 12px;\n    font-weight: bold;\n    cursor: pointer;\n    background: #eee;\n  }\n  .accordion-header:hover {\n    background: #ddd;\n  }\n  .accordion-content {\n    display: none;\n    padding: 15px;\n    border-top: 1px solid #ddd;\n    background: #fff;\n  }\n  .accordion-content.open {\n    display: block;\n  }\n\n  \/* Unified link styling *\/\n  .see-link {\n    color: #f37021; \/* orange *\/\n    text-decoration: none;\n    font-weight: bold;\n    cursor: pointer;\n  }\n  .see-link:hover {\n    text-decoration: underline;\n  }\n\n  \/* Quick specs box *\/\n  #quick-specs {\n    border: 1px solid #ddd;\n    border-radius: 8px;\n    padding: 15px;\n    background: #fff;\n    margin: 20px 0;\n    font-size: 14px;\n    line-height: 1.5;\n  }\n  #quick-specs div {\n    margin-bottom: 8px;\n  }\n  #quick-specs strong {\n    font-weight: bold;\n  }\n\n  \/* Keep the flags and country names on one line (when space allows) *\/\n  .flags-inline {\n    display: inline-flex;\n    align-items: center;\n    gap: 8px;\n    margin-left: 5px;\n    white-space: nowrap;\n  }\n  .flag-pair {\n    display: inline-flex;\n    align-items: center;\n    gap: 6px;\n  }\n  .flag-image {\n    width: 22px;\n    height: auto;\n    vertical-align: middle;\n  }\n\u003c\/style\u003e\n\n\u003c!-- PRODUCT DESCRIPTION (SENTENCE TEASER) --\u003e\n\u003cdiv\u003e\n\n\u003cp id=\"desc-teaser\"\u003e\u003c\/p\u003e\n\n\u003cspan id=\"desc-more\" style=\"display:none;\"\u003e\n\u003c\/span\u003e\n Fabriqué en acier inoxydable, ce chapeau sert à protéger contre les intempéries et à améliorer le tirage de la cheminée.\n\n\u003cul\u003e\n\n\u003cli\u003e Ventilation robuste et durable grâce à sa paroi extérieure en acier galvanisé et sa paroi intérieure en acier inoxydable\u003c\/li\u003e\n\n\u003cli\u003e Système de joint révolutionnaire qui empêche les fuites et ne nécessite pas l'utilisation de silicone\u003c\/li\u003e\n\n\u003cli\u003e Technologie de soudure lisse pour des coutures pratiquement invisibles\u003c\/li\u003e\n\n\u003cli\u003e Extrémités formées avec précision pour une meilleure finition\u003c\/li\u003e\n\n\u003cli\u003e Conforme aux normes NFPA 211, CSA B365, UL 641, CAN\/ULC S609 et ULC\/ORD C441\u003c\/li\u003e\n\n\n\u003c\/ul\u003e\n\n\u003cp\u003e \u003cstrong\u003eDimensions\u003c\/strong\u003e\u003c\/p\u003e\n\n\u003cp\u003e AØ : 3,75\"\u003c\/p\u003e\n\n\u003cp\u003e B : 7,7\"\u003c\/p\u003e\n\n\u003cp\u003e CØ : 2,75\"\u003c\/p\u003e\n\n\u003cp\u003e D : 3,02\"\u003c\/p\u003e\n\n\n\n\u003c\/div\u003e\n\n \u003cspan id=\"seeMoreDesc\" class=\"see-link\" style=\"margin-bottom:20px; display:inline-block;\"\u003e\nDescription complète\n\u003c\/span\u003e \n\n\u003c!-- QUICK SPECIFICATIONS BOX --\u003e\n\u003cdiv id=\"quick-specs\"\u003e\n\n\u003cdiv\u003e\n\n 🌍 \u003cstrong\u003eFabriqué en :\u003c\/strong\u003e\n \u003cspan class=\"flags-inline\"\u003e\n\u003cspan class=\"flag-pair\"\u003e\n\u003cimg class=\"flag-image\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/usa-5bd2139a62f1d18a7eb84549b9847120.png?v=1758991655\" alt=\"Drapeau des États-Unis\"\u003e\n \u003cspan\u003eÉtats-Unis\u003c\/span\u003e\n\u003c\/span\u003e\n\u003c\/span\u003e\n\n\u003c\/div\u003e\n\n\n\u003cdiv style=\"margin-top: 10px;\"\u003e \n\u003cspan id=\"seeFullSpecs\" class=\"see-link\"\u003eSpécifications complètes\u003c\/span\u003e \n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c!-- SPECIFICATIONS COLLAPSIBLE --\u003e\n\u003cdiv id=\"specs-accordion\" class=\"accordion\"\u003e\n\n\u003cdiv class=\"accordion-header\"\u003e Caractéristiques \u003c\/div\u003e\n\n\u003cdiv class=\"accordion-content\"\u003e\n\n\u003c!-- Appliance Performance Subheader --\u003e\n\u003ch3 style=\"font-size: 16px; font-weight: bold; margin: 20px 0 10px; border-bottom: 2px solid #ddd; padding-bottom: 5px;\"\u003e Performance des appareils \u003c\/h3\u003e\n\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n\n\u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003e Aucune donnée de performance disponible pour ce produit. \u003c\/p\u003e\n\n\n\u003c\/table\u003e\n\n\n\u003c!-- General Features Subheader --\u003e\n\u003ch3 style=\"font-size: 16px; font-weight: bold; margin: 20px 0 10px; border-bottom: 2px solid #ddd; padding-bottom: 5px;\"\u003e Caractéristiques générales \u003c\/h3\u003e\n\n\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n\n\u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003e Aucune fonctionnalité générale n'est disponible pour ce produit. \u003c\/p\u003e\n\n\n\u003c\/table\u003e\n\n\n\u003c!-- Clearances Subheader --\u003e\n\u003ch3 style=\"font-size: 16px; font-weight: bold; margin: 20px 0 10px; border-bottom: 2px solid #ddd; padding-bottom: 5px;\"\u003e\n\n Dédouanements \n\n\u003c\/h3\u003e\n\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\n\n\u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003e Aucune dédouanement n'est disponible pour ce produit. \u003c\/p\u003e\n\n\n\u003c\/table\u003e\n\n\n\u003c!-- See Less link inside accordion --\u003e\n\u003cdiv style=\"text-align:center; margin-top: 15px;\"\u003e\n\n \u003cspan id=\"seeLessSpecs\" class=\"see-link\" style=\"display:none;\"\u003eVoir moins\u003c\/span\u003e\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c!-- MANUALS COLLAPSIBLE --\u003e\n\u003cdiv id=\"manuals-accordion\" class=\"accordion\"\u003e\n\n\u003cdiv class=\"accordion-header\"\u003e Manuels et instructions \u003c\/div\u003e\n\n\u003cdiv class=\"accordion-content\"\u003e\n\n\u003cul\u003e\n\n\u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003e Consultez les manuels et brochures disponibles pour plus d'informations sur les performances, l'installation, les exigences d'utilisation, etc. \u003c\/p\u003e\n\n\u003c!-- PDF Links Styled as Buttons --\u003e\n\u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 10px;\"\u003e\n\n\u003c!-- Installation \u0026 User's Manual --\u003e\n\u003ca style=\"flex: 1; min-width: 250px; text-decoration: none; background: #f7f7f7; padding: 12px 15px; border-radius: 6px; display: flex; align-items: center; font-size: 14px; color: #000; border: 1px solid #e0e0e0;\" href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/45651A_26-11-2014_009.pdf?v=1760354598\" target=\"_blank\"\u003e \n📄 Manuel d'installation et d'utilisation \u003cspan style=\"margin-left: auto;\"\u003e🔗\u003c\/span\u003e \n\n\u003c\/a\u003e\n\u003c\/div\u003e\n\n\n\u003c\/ul\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003cscript\u003e\n  document.addEventListener('DOMContentLoaded', function () {\n    \/\/ TEASER: compute first sentence from the full description content (desc-more)\n    const descTeaserP = document.getElementById('desc-teaser');\n    const descMoreSpan = document.getElementById('desc-more');\n    const descToggle = document.getElementById('seeMoreDesc');\n\n    \/\/ use textContent of the hidden desc-more to compute the first sentence\n    const fullText = descMoreSpan ? descMoreSpan.innerText.trim() : '';\n    let firstPeriod = fullText.indexOf('.');\n    if (firstPeriod === -1) firstPeriod = fullText.length;\n    descTeaserP.textContent = fullText.substring(0, firstPeriod + (firstPeriod \u003c fullText.length ? 1 : 0)).trim();\n\n    \/\/ Initially ensure full description hidden and teaser visible\n    descMoreSpan.style.display = 'none';\n    descTeaserP.style.display = 'block';\n    descToggle.textContent = 'Full Description';\n\n    descToggle.addEventListener('click', function () {\n      const teaser = descTeaserP;\n      const moreText = descMoreSpan;\n\n      if (moreText.style.display === 'none') {\n        \/\/ Expand full description: hide teaser\n        teaser.style.display = 'none';\n        moreText.style.display = 'block';\n        this.textContent = 'See Less';\n        \/\/ optional: scroll into view so user sees the expanded description\n        this.scrollIntoView({ behavior: 'smooth', block: 'center' });\n      } else {\n        \/\/ Collapse to teaser\n        moreText.style.display = 'none';\n        teaser.style.display = 'block';\n        this.textContent = 'Full Description';\n      }\n    });\n\n    \/\/ ACCORDION logic (only one open at a time) + quick-specs handling\n    const accordions = document.querySelectorAll('.accordion');\n    const quickSpecs = document.getElementById('quick-specs');\n    const specsAccordion = document.getElementById('specs-accordion');\n    const specsContent = specsAccordion.querySelector('.accordion-content');\n    const seeLessSpecs = document.getElementById('seeLessSpecs');\n    const seeFullSpecs = document.getElementById('seeFullSpecs');\n\n    function closeAllAccordions(exceptAccordion) {\n      accordions.forEach(acc =\u003e {\n        if (acc !== exceptAccordion) {\n          acc.querySelector('.accordion-content').classList.remove('open');\n        }\n      });\n    }\n\n    function refreshUIState() {\n      \/\/ If specs open =\u003e hide quick-specs and show See Less inside specs\n      if (specsContent.classList.contains('open')) {\n        quickSpecs.style.display = 'none';\n        seeLessSpecs.style.display = 'inline-block';\n      } else {\n        quickSpecs.style.display = 'block';\n        seeLessSpecs.style.display = 'none';\n      }\n    }\n\n    \/\/ Set up header click handlers to toggle and enforce \"one open at a time\"\n    document.querySelectorAll('.accordion').forEach(acc =\u003e {\n      const header = acc.querySelector('.accordion-header');\n      const content = acc.querySelector('.accordion-content');\n\n      header.addEventListener('click', function () {\n        \/\/ if clicking the same accordion that is open =\u003e close it\n        if (content.classList.contains('open')) {\n          content.classList.remove('open');\n        } else {\n          closeAllAccordions(acc); \/\/ close others\n          content.classList.add('open');\n        }\n        refreshUIState();\n      });\n    });\n\n    \/\/ \"Full Specifications\" link: open the specs accordion (or close if already open)\n    seeFullSpecs.addEventListener('click', function () {\n      if (!specsContent.classList.contains('open')) {\n        closeAllAccordions(specsAccordion);\n        specsContent.classList.add('open');\n      } else {\n        specsContent.classList.remove('open');\n      }\n      refreshUIState();\n      \/\/ scroll to specifications area when opening\n      if (specsContent.classList.contains('open')) {\n        specsAccordion.scrollIntoView({ behavior: 'smooth', block: 'start' });\n      }\n    });\n\n    \/\/ \"See Less\" link located inside the Specifications content (after Clearances)\n    seeLessSpecs.addEventListener('click', function () {\n      if (specsContent.classList.contains('open')) {\n        specsContent.classList.remove('open');\n        refreshUIState();\n        \/\/ Reset the top Full Specifications link text if you want (kept as \"Full Specifications\")\n        \/\/ show quick specs again (handled in refreshUIState)\n        \/\/ scroll to the quick-specs area for the user's convenience\n        document.getElementById('quick-specs').scrollIntoView({ behavior: 'smooth', block: 'center' });\n      }\n    });\n\n    \/\/ Initial UI state\n    refreshUIState();\n  });\n\u003c\/script\u003e\n","brand":"Vortex","offers":[{"title":"Default Title","offer_id":43681426735155,"sku":"VOP0360","price":57.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/VOP0360_VOP0361.webp?v=1760460744"},{"product_id":"4-pellet-jet-cap","title":"CAPUCHON DE JET À GRANULÉS DE 4\" ","description":"\u003cstyle\u003e\n  \/* Accordion styling *\/\n  .accordion {\n    border: 1px solid #ddd;\n    border-radius: 5px;\n    margin-bottom: 20px;\n    background: #f9f9f9;\n  }\n  .accordion-header {\n    padding: 12px;\n    font-weight: bold;\n    cursor: pointer;\n    background: #eee;\n  }\n  .accordion-header:hover {\n    background: #ddd;\n  }\n  .accordion-content {\n    display: none;\n    padding: 15px;\n    border-top: 1px solid #ddd;\n    background: #fff;\n  }\n  .accordion-content.open {\n    display: block;\n  }\n\n  \/* Unified link styling *\/\n  .see-link {\n    color: #f37021; \/* orange *\/\n    text-decoration: none;\n    font-weight: bold;\n    cursor: pointer;\n  }\n  .see-link:hover {\n    text-decoration: underline;\n  }\n\n  \/* Quick specs box *\/\n  #quick-specs {\n    border: 1px solid #ddd;\n    border-radius: 8px;\n    padding: 15px;\n    background: #fff;\n    margin: 20px 0;\n    font-size: 14px;\n    line-height: 1.5;\n  }\n  #quick-specs div {\n    margin-bottom: 8px;\n  }\n  #quick-specs strong {\n    font-weight: bold;\n  }\n\n  \/* Keep the flags and country names on one line (when space allows) *\/\n  .flags-inline {\n    display: inline-flex;\n    align-items: center;\n    gap: 8px;\n    margin-left: 5px;\n    white-space: nowrap;\n  }\n  .flag-pair {\n    display: inline-flex;\n    align-items: center;\n    gap: 6px;\n  }\n  .flag-image {\n    width: 22px;\n    height: auto;\n    vertical-align: middle;\n  }\n\u003c\/style\u003e\n\n\u003c!-- PRODUCT DESCRIPTION (SENTENCE TEASER) --\u003e\n\u003cdiv\u003e\n\n\u003cp id=\"desc-teaser\"\u003e\u003c\/p\u003e\n\n\u003cspan id=\"desc-more\" style=\"display:none;\"\u003e\n\u003c\/span\u003e\n Fabriqué en acier inoxydable, ce chapeau sert à protéger contre les intempéries et à améliorer le tirage de la cheminée.\n\n\u003cul\u003e\n\n\u003cli\u003e Ventilation robuste et durable grâce à sa paroi extérieure en acier galvanisé et sa paroi intérieure en acier inoxydable\u003c\/li\u003e\n\n\u003cli\u003e Système de joint révolutionnaire qui empêche les fuites et ne nécessite pas l'utilisation de silicone\u003c\/li\u003e\n\n\u003cli\u003e Technologie de soudure lisse pour des coutures pratiquement invisibles\u003c\/li\u003e\n\n\u003cli\u003e Extrémités formées avec précision pour une meilleure finition\u003c\/li\u003e\n\n\u003cli\u003e Conforme aux normes NFPA 211, CSA B365, UL 641, CAN\/ULC S609 et ULC\/ORD C441\u003c\/li\u003e\n\n\n\u003c\/ul\u003e\n\n\u003cp\u003e \u003cstrong\u003eDimensions\u003c\/strong\u003e\u003c\/p\u003e\n\n\u003cp\u003e AØ : 4,75\"\u003c\/p\u003e\n\n\u003cp\u003e B : 9,12\"\u003c\/p\u003e\n\n\u003cp\u003e CØ : 3,75\"\u003c\/p\u003e\n\n\u003cp\u003e D : 4,12\"\u003c\/p\u003e\n\n\n\n\u003c\/div\u003e\n\n \u003cspan id=\"seeMoreDesc\" class=\"see-link\" style=\"margin-bottom:20px; display:inline-block;\"\u003e\nDescription complète\n\u003c\/span\u003e \n\n\u003c!-- QUICK SPECIFICATIONS BOX --\u003e\n\u003cdiv id=\"quick-specs\"\u003e\n\n\u003cdiv\u003e\n\n 🌍 \u003cstrong\u003eFabriqué en :\u003c\/strong\u003e\n\u003cspan class=\"flags-inline\"\u003e\n\u003cspan class=\"flag-pair\"\u003e\u003c\/span\u003e \n\u003cimg class=\"flag-image\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/usa-5bd2139a62f1d18a7eb84549b9847120.png?v=1758991655\" alt=\"Drapeau des États-Unis\"\u003e\n \u003cspan\u003eÉtats-Unis\u003c\/span\u003e\n\n\n\u003c\/span\u003e\n\u003c\/div\u003e\n\n\n\u003cdiv style=\"margin-top: 10px;\"\u003e\n\n \u003cspan id=\"seeFullSpecs\" class=\"see-link\"\u003eSpécifications complètes\u003c\/span\u003e \n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c!-- SPECIFICATIONS COLLAPSIBLE --\u003e\n\u003cdiv id=\"specs-accordion\" class=\"accordion\"\u003e\n\n\u003cdiv class=\"accordion-header\"\u003e Caractéristiques \u003c\/div\u003e\n\n\u003cdiv class=\"accordion-content\"\u003e\n\n\u003c!-- Appliance Performance Subheader --\u003e\n\u003ch3 style=\"font-size: 16px; font-weight: bold; margin: 20px 0 10px; border-bottom: 2px solid #ddd; padding-bottom: 5px;\"\u003e Performance des appareils \u003c\/h3\u003e\n\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n\n\u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003e Aucune donnée de performance disponible pour ce produit. \u003c\/p\u003e\n\n\n\u003c\/table\u003e\n\n\n\u003c!-- General Features Subheader --\u003e\n\u003ch3 style=\"font-size: 16px; font-weight: bold; margin: 20px 0 10px; border-bottom: 2px solid #ddd; padding-bottom: 5px;\"\u003e Caractéristiques générales \u003c\/h3\u003e\n\n\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n\n\u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003e Aucune fonctionnalité générale n'est disponible pour ce produit. \u003c\/p\u003e\n\n\n\u003c\/table\u003e\n\n\n\u003c!-- Clearances Subheader --\u003e\n\u003ch3 style=\"font-size: 16px; font-weight: bold; margin: 20px 0 10px; border-bottom: 2px solid #ddd; padding-bottom: 5px;\"\u003e\n\n Dédouanements \n\n\u003c\/h3\u003e\n\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\n\n\u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003e Aucune dédouanement n'est disponible pour ce produit. \u003c\/p\u003e\n\n\n\u003c\/table\u003e\n\n\n\u003c!-- See Less link inside accordion --\u003e\n\u003cdiv style=\"text-align:center; margin-top: 15px;\"\u003e\n\n \u003cspan id=\"seeLessSpecs\" class=\"see-link\" style=\"display:none;\"\u003eVoir moins\u003c\/span\u003e\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c!-- MANUALS COLLAPSIBLE --\u003e\n\u003cdiv id=\"manuals-accordion\" class=\"accordion\"\u003e\n\n\u003cdiv class=\"accordion-header\"\u003e Manuels et instructions \u003c\/div\u003e\n\n\u003cdiv class=\"accordion-content\"\u003e\n\n\u003cul\u003e\n\n\u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003e Consultez les manuels et brochures disponibles pour plus d'informations sur les performances, l'installation, les exigences d'utilisation, etc. \u003c\/p\u003e\n\n\u003c!-- PDF Links Styled as Buttons --\u003e\n\u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 10px;\"\u003e\n\n\u003c!-- Installation \u0026 User's Manual --\u003e\n\u003ca style=\"flex: 1; min-width: 250px; text-decoration: none; background: #f7f7f7; padding: 12px 15px; border-radius: 6px; display: flex; align-items: center; font-size: 14px; color: #000; border: 1px solid #e0e0e0;\" href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/45651A_26-11-2014_009.pdf?v=1760354598\" target=\"_blank\"\u003e \n📄 Manuel d'installation et d'utilisation \u003cspan style=\"margin-left: auto;\"\u003e🔗\u003c\/span\u003e \n\n\u003c\/a\u003e\n\u003c\/div\u003e\n\n\n\u003c\/ul\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003cscript\u003e\n  document.addEventListener('DOMContentLoaded', function () {\n    \/\/ TEASER: compute first sentence from the full description content (desc-more)\n    const descTeaserP = document.getElementById('desc-teaser');\n    const descMoreSpan = document.getElementById('desc-more');\n    const descToggle = document.getElementById('seeMoreDesc');\n\n    \/\/ use textContent of the hidden desc-more to compute the first sentence\n    const fullText = descMoreSpan ? descMoreSpan.innerText.trim() : '';\n    let firstPeriod = fullText.indexOf('.');\n    if (firstPeriod === -1) firstPeriod = fullText.length;\n    descTeaserP.textContent = fullText.substring(0, firstPeriod + (firstPeriod \u003c fullText.length ? 1 : 0)).trim();\n\n    \/\/ Initially ensure full description hidden and teaser visible\n    descMoreSpan.style.display = 'none';\n    descTeaserP.style.display = 'block';\n    descToggle.textContent = 'Full Description';\n\n    descToggle.addEventListener('click', function () {\n      const teaser = descTeaserP;\n      const moreText = descMoreSpan;\n\n      if (moreText.style.display === 'none') {\n        \/\/ Expand full description: hide teaser\n        teaser.style.display = 'none';\n        moreText.style.display = 'block';\n        this.textContent = 'See Less';\n        \/\/ optional: scroll into view so user sees the expanded description\n        this.scrollIntoView({ behavior: 'smooth', block: 'center' });\n      } else {\n        \/\/ Collapse to teaser\n        moreText.style.display = 'none';\n        teaser.style.display = 'block';\n        this.textContent = 'Full Description';\n      }\n    });\n\n    \/\/ ACCORDION logic (only one open at a time) + quick-specs handling\n    const accordions = document.querySelectorAll('.accordion');\n    const quickSpecs = document.getElementById('quick-specs');\n    const specsAccordion = document.getElementById('specs-accordion');\n    const specsContent = specsAccordion.querySelector('.accordion-content');\n    const seeLessSpecs = document.getElementById('seeLessSpecs');\n    const seeFullSpecs = document.getElementById('seeFullSpecs');\n\n    function closeAllAccordions(exceptAccordion) {\n      accordions.forEach(acc =\u003e {\n        if (acc !== exceptAccordion) {\n          acc.querySelector('.accordion-content').classList.remove('open');\n        }\n      });\n    }\n\n    function refreshUIState() {\n      \/\/ If specs open =\u003e hide quick-specs and show See Less inside specs\n      if (specsContent.classList.contains('open')) {\n        quickSpecs.style.display = 'none';\n        seeLessSpecs.style.display = 'inline-block';\n      } else {\n        quickSpecs.style.display = 'block';\n        seeLessSpecs.style.display = 'none';\n      }\n    }\n\n    \/\/ Set up header click handlers to toggle and enforce \"one open at a time\"\n    document.querySelectorAll('.accordion').forEach(acc =\u003e {\n      const header = acc.querySelector('.accordion-header');\n      const content = acc.querySelector('.accordion-content');\n\n      header.addEventListener('click', function () {\n        \/\/ if clicking the same accordion that is open =\u003e close it\n        if (content.classList.contains('open')) {\n          content.classList.remove('open');\n        } else {\n          closeAllAccordions(acc); \/\/ close others\n          content.classList.add('open');\n        }\n        refreshUIState();\n      });\n    });\n\n    \/\/ \"Full Specifications\" link: open the specs accordion (or close if already open)\n    seeFullSpecs.addEventListener('click', function () {\n      if (!specsContent.classList.contains('open')) {\n        closeAllAccordions(specsAccordion);\n        specsContent.classList.add('open');\n      } else {\n        specsContent.classList.remove('open');\n      }\n      refreshUIState();\n      \/\/ scroll to specifications area when opening\n      if (specsContent.classList.contains('open')) {\n        specsAccordion.scrollIntoView({ behavior: 'smooth', block: 'start' });\n      }\n    });\n\n    \/\/ \"See Less\" link located inside the Specifications content (after Clearances)\n    seeLessSpecs.addEventListener('click', function () {\n      if (specsContent.classList.contains('open')) {\n        specsContent.classList.remove('open');\n        refreshUIState();\n        \/\/ Reset the top Full Specifications link text if you want (kept as \"Full Specifications\")\n        \/\/ show quick specs again (handled in refreshUIState)\n        \/\/ scroll to the quick-specs area for the user's convenience\n        document.getElementById('quick-specs').scrollIntoView({ behavior: 'smooth', block: 'center' });\n      }\n    });\n\n    \/\/ Initial UI state\n    refreshUIState();\n  });\n\u003c\/script\u003e\n","brand":"Vortex","offers":[{"title":"Default Title","offer_id":43681427390515,"sku":"VOP0361","price":60.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/VOP0360_VOP0361.webp?v=1760460744"},{"product_id":"3-pellet-vertical-cap","title":"CAPUCHON VERTICAL POUR GRANULÉS DE 3\" ","description":"\u003cstyle\u003e\n  \/* Accordion styling *\/\n  .accordion {\n    border: 1px solid #ddd;\n    border-radius: 5px;\n    margin-bottom: 20px;\n    background: #f9f9f9;\n  }\n  .accordion-header {\n    padding: 12px;\n    font-weight: bold;\n    cursor: pointer;\n    background: #eee;\n  }\n  .accordion-header:hover {\n    background: #ddd;\n  }\n  .accordion-content {\n    display: none;\n    padding: 15px;\n    border-top: 1px solid #ddd;\n    background: #fff;\n  }\n  .accordion-content.open {\n    display: block;\n  }\n\n  \/* Unified link styling *\/\n  .see-link {\n    color: #f37021; \/* orange *\/\n    text-decoration: none;\n    font-weight: bold;\n    cursor: pointer;\n  }\n  .see-link:hover {\n    text-decoration: underline;\n  }\n\n  \/* Quick specs box *\/\n  #quick-specs {\n    border: 1px solid #ddd;\n    border-radius: 8px;\n    padding: 15px;\n    background: #fff;\n    margin: 20px 0;\n    font-size: 14px;\n    line-height: 1.5;\n  }\n  #quick-specs div {\n    margin-bottom: 8px;\n  }\n  #quick-specs strong {\n    font-weight: bold;\n  }\n\n  \/* Keep the flags and country names on one line (when space allows) *\/\n  .flags-inline {\n    display: inline-flex;\n    align-items: center;\n    gap: 8px;\n    margin-left: 5px;\n    white-space: nowrap;\n  }\n  .flag-pair {\n    display: inline-flex;\n    align-items: center;\n    gap: 6px;\n  }\n  .flag-image {\n    width: 22px;\n    height: auto;\n    vertical-align: middle;\n  }\n\u003c\/style\u003e\n\n\u003c!-- PRODUCT DESCRIPTION (SENTENCE TEASER) --\u003e\n\u003cdiv\u003e\n\n\u003cp id=\"desc-teaser\"\u003e\u003c\/p\u003e\n\n\u003cspan id=\"desc-more\" style=\"display:none;\"\u003e\n\u003c\/span\u003e\n Comporte un système de fixation rapide pour un accès facile au nettoyage ou à l'inspection de la cheminée.\n\n\u003cul\u003e\n\n\u003cli\u003e Ventilation robuste et durable grâce à sa paroi extérieure en acier galvanisé et sa paroi intérieure en acier inoxydable\u003c\/li\u003e\n\n\u003cli\u003e Système de joint révolutionnaire qui empêche les fuites et ne nécessite pas l'utilisation de silicone\u003c\/li\u003e\n\n\u003cli\u003e Technologie de soudure lisse pour des coutures pratiquement invisibles\u003c\/li\u003e\n\n\u003cli\u003e Extrémités formées avec précision pour une meilleure finition\u003c\/li\u003e\n\n\u003cli\u003e Conforme aux normes NFPA 211, CSA B365, UL 641, CAN\/ULC S609 et ULC\/ORD C441\u003c\/li\u003e\n\n\n\u003c\/ul\u003e\n\n\u003cp\u003e \u003cstrong\u003eDimensions\u003c\/strong\u003e\u003c\/p\u003e\n\n\u003cp\u003e AØ : 3\"\u003c\/p\u003e\n\n\u003cp\u003e BØ : 3,75\"\u003c\/p\u003e\n\n\u003cp\u003e C : 3\"\u003c\/p\u003e\n\n\u003cp\u003e D : 8,48\"\u003c\/p\u003e\n\n\n\n\u003c\/div\u003e\n\n \u003cspan id=\"seeMoreDesc\" class=\"see-link\" style=\"margin-bottom:20px; display:inline-block;\"\u003e\nDescription complète\n\u003c\/span\u003e \n\n\u003c!-- QUICK SPECIFICATIONS BOX --\u003e\n\u003cdiv id=\"quick-specs\"\u003e\n\n\u003cdiv\u003e\n\n 🌍 \u003cstrong\u003eFabriqué en :\u003c\/strong\u003e\n \u003cspan class=\"flags-inline\"\u003e\n\u003cspan class=\"flag-pair\"\u003e\n\u003cimg class=\"flag-image\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/usa-5bd2139a62f1d18a7eb84549b9847120.png?v=1758991655\" alt=\"Drapeau des États-Unis\"\u003e\u003c\/span\u003e\u003c\/span\u003e \n\u003cspan\u003eÉtats-Unis\u003c\/span\u003e\n\n\n\n\u003c\/div\u003e\n\n\n\u003cdiv style=\"margin-top: 10px;\"\u003e\n\n \u003cspan id=\"seeFullSpecs\" class=\"see-link\"\u003eSpécifications complètes\u003c\/span\u003e \n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c!-- SPECIFICATIONS COLLAPSIBLE --\u003e\n\u003cdiv id=\"specs-accordion\" class=\"accordion\"\u003e\n\n\u003cdiv class=\"accordion-header\"\u003e Caractéristiques \u003c\/div\u003e\n\n\u003cdiv class=\"accordion-content\"\u003e\n\n\u003c!-- Appliance Performance Subheader --\u003e\n\u003ch3 style=\"font-size: 16px; font-weight: bold; margin: 20px 0 10px; border-bottom: 2px solid #ddd; padding-bottom: 5px;\"\u003e Performance des appareils \u003c\/h3\u003e\n\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n\n\u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003e Aucune donnée de performance disponible pour ce produit. \u003c\/p\u003e\n\n\n\u003c\/table\u003e\n\n\n\u003c!-- General Features Subheader --\u003e\n\u003ch3 style=\"font-size: 16px; font-weight: bold; margin: 20px 0 10px; border-bottom: 2px solid #ddd; padding-bottom: 5px;\"\u003e Caractéristiques générales \u003c\/h3\u003e\n\n\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n\n\u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003e Aucune fonctionnalité générale n'est disponible pour ce produit. \u003c\/p\u003e\n\n\n\u003c\/table\u003e\n\n\n\u003c!-- Clearances Subheader --\u003e\n\u003ch3 style=\"font-size: 16px; font-weight: bold; margin: 20px 0 10px; border-bottom: 2px solid #ddd; padding-bottom: 5px;\"\u003e\n\n Dédouanements \n\n\u003c\/h3\u003e\n\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\n\n\u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003e Aucune dédouanement n'est disponible pour ce produit. \u003c\/p\u003e\n\n\n\u003c\/table\u003e\n\n\n\u003c!-- See Less link inside accordion --\u003e\n\u003cdiv style=\"text-align:center; margin-top: 15px;\"\u003e\n\n \u003cspan id=\"seeLessSpecs\" class=\"see-link\" style=\"display:none;\"\u003eVoir moins\u003c\/span\u003e\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c!-- MANUALS COLLAPSIBLE --\u003e\n\u003cdiv id=\"manuals-accordion\" class=\"accordion\"\u003e\n\n\u003cdiv class=\"accordion-header\"\u003e Manuels et instructions \u003c\/div\u003e\n\n\u003cdiv class=\"accordion-content\"\u003e\n\n\u003cul\u003e\n\n\u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003e Consultez les manuels et brochures disponibles pour plus d'informations sur les performances, l'installation, les exigences d'utilisation, etc. \u003c\/p\u003e\n\n\u003c!-- PDF Links Styled as Buttons --\u003e\n\u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 10px;\"\u003e\n\n\u003c!-- Installation \u0026 User's Manual --\u003e\n\u003ca style=\"flex: 1; min-width: 250px; text-decoration: none; background: #f7f7f7; padding: 12px 15px; border-radius: 6px; display: flex; align-items: center; font-size: 14px; color: #000; border: 1px solid #e0e0e0;\" href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/45651A_26-11-2014_009.pdf?v=1760354598\" target=\"_blank\"\u003e \n📄 Manuel d'installation et d'utilisation \u003cspan style=\"margin-left: auto;\"\u003e🔗\u003c\/span\u003e \n\n\u003c\/a\u003e\n\u003c\/div\u003e\n\n\n\u003c\/ul\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003cscript\u003e\n  document.addEventListener('DOMContentLoaded', function () {\n    \/\/ TEASER: compute first sentence from the full description content (desc-more)\n    const descTeaserP = document.getElementById('desc-teaser');\n    const descMoreSpan = document.getElementById('desc-more');\n    const descToggle = document.getElementById('seeMoreDesc');\n\n    \/\/ use textContent of the hidden desc-more to compute the first sentence\n    const fullText = descMoreSpan ? descMoreSpan.innerText.trim() : '';\n    let firstPeriod = fullText.indexOf('.');\n    if (firstPeriod === -1) firstPeriod = fullText.length;\n    descTeaserP.textContent = fullText.substring(0, firstPeriod + (firstPeriod \u003c fullText.length ? 1 : 0)).trim();\n\n    \/\/ Initially ensure full description hidden and teaser visible\n    descMoreSpan.style.display = 'none';\n    descTeaserP.style.display = 'block';\n    descToggle.textContent = 'Full Description';\n\n    descToggle.addEventListener('click', function () {\n      const teaser = descTeaserP;\n      const moreText = descMoreSpan;\n\n      if (moreText.style.display === 'none') {\n        \/\/ Expand full description: hide teaser\n        teaser.style.display = 'none';\n        moreText.style.display = 'block';\n        this.textContent = 'See Less';\n        \/\/ optional: scroll into view so user sees the expanded description\n        this.scrollIntoView({ behavior: 'smooth', block: 'center' });\n      } else {\n        \/\/ Collapse to teaser\n        moreText.style.display = 'none';\n        teaser.style.display = 'block';\n        this.textContent = 'Full Description';\n      }\n    });\n\n    \/\/ ACCORDION logic (only one open at a time) + quick-specs handling\n    const accordions = document.querySelectorAll('.accordion');\n    const quickSpecs = document.getElementById('quick-specs');\n    const specsAccordion = document.getElementById('specs-accordion');\n    const specsContent = specsAccordion.querySelector('.accordion-content');\n    const seeLessSpecs = document.getElementById('seeLessSpecs');\n    const seeFullSpecs = document.getElementById('seeFullSpecs');\n\n    function closeAllAccordions(exceptAccordion) {\n      accordions.forEach(acc =\u003e {\n        if (acc !== exceptAccordion) {\n          acc.querySelector('.accordion-content').classList.remove('open');\n        }\n      });\n    }\n\n    function refreshUIState() {\n      \/\/ If specs open =\u003e hide quick-specs and show See Less inside specs\n      if (specsContent.classList.contains('open')) {\n        quickSpecs.style.display = 'none';\n        seeLessSpecs.style.display = 'inline-block';\n      } else {\n        quickSpecs.style.display = 'block';\n        seeLessSpecs.style.display = 'none';\n      }\n    }\n\n    \/\/ Set up header click handlers to toggle and enforce \"one open at a time\"\n    document.querySelectorAll('.accordion').forEach(acc =\u003e {\n      const header = acc.querySelector('.accordion-header');\n      const content = acc.querySelector('.accordion-content');\n\n      header.addEventListener('click', function () {\n        \/\/ if clicking the same accordion that is open =\u003e close it\n        if (content.classList.contains('open')) {\n          content.classList.remove('open');\n        } else {\n          closeAllAccordions(acc); \/\/ close others\n          content.classList.add('open');\n        }\n        refreshUIState();\n      });\n    });\n\n    \/\/ \"Full Specifications\" link: open the specs accordion (or close if already open)\n    seeFullSpecs.addEventListener('click', function () {\n      if (!specsContent.classList.contains('open')) {\n        closeAllAccordions(specsAccordion);\n        specsContent.classList.add('open');\n      } else {\n        specsContent.classList.remove('open');\n      }\n      refreshUIState();\n      \/\/ scroll to specifications area when opening\n      if (specsContent.classList.contains('open')) {\n        specsAccordion.scrollIntoView({ behavior: 'smooth', block: 'start' });\n      }\n    });\n\n    \/\/ \"See Less\" link located inside the Specifications content (after Clearances)\n    seeLessSpecs.addEventListener('click', function () {\n      if (specsContent.classList.contains('open')) {\n        specsContent.classList.remove('open');\n        refreshUIState();\n        \/\/ Reset the top Full Specifications link text if you want (kept as \"Full Specifications\")\n        \/\/ show quick specs again (handled in refreshUIState)\n        \/\/ scroll to the quick-specs area for the user's convenience\n        document.getElementById('quick-specs').scrollIntoView({ behavior: 'smooth', block: 'center' });\n      }\n    });\n\n    \/\/ Initial UI state\n    refreshUIState();\n  });\n\u003c\/script\u003e\n","brand":"Vortex","offers":[{"title":"Default Title","offer_id":43681427554355,"sku":"VOP0400","price":85.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/VOP0400_VOP0401.webp?v=1760460969"},{"product_id":"4-pellet-vertical-cap","title":"CAPUCHON VERTICAL POUR GRANULÉS DE 4\" ","description":"\u003cstyle\u003e\n  \/* Accordion styling *\/\n  .accordion {\n    border: 1px solid #ddd;\n    border-radius: 5px;\n    margin-bottom: 20px;\n    background: #f9f9f9;\n  }\n  .accordion-header {\n    padding: 12px;\n    font-weight: bold;\n    cursor: pointer;\n    background: #eee;\n  }\n  .accordion-header:hover {\n    background: #ddd;\n  }\n  .accordion-content {\n    display: none;\n    padding: 15px;\n    border-top: 1px solid #ddd;\n    background: #fff;\n  }\n  .accordion-content.open {\n    display: block;\n  }\n\n  \/* Unified link styling *\/\n  .see-link {\n    color: #f37021; \/* orange *\/\n    text-decoration: none;\n    font-weight: bold;\n    cursor: pointer;\n  }\n  .see-link:hover {\n    text-decoration: underline;\n  }\n\n  \/* Quick specs box *\/\n  #quick-specs {\n    border: 1px solid #ddd;\n    border-radius: 8px;\n    padding: 15px;\n    background: #fff;\n    margin: 20px 0;\n    font-size: 14px;\n    line-height: 1.5;\n  }\n  #quick-specs div {\n    margin-bottom: 8px;\n  }\n  #quick-specs strong {\n    font-weight: bold;\n  }\n\n  \/* Keep the flags and country names on one line (when space allows) *\/\n  .flags-inline {\n    display: inline-flex;\n    align-items: center;\n    gap: 8px;\n    margin-left: 5px;\n    white-space: nowrap;\n  }\n  .flag-pair {\n    display: inline-flex;\n    align-items: center;\n    gap: 6px;\n  }\n  .flag-image {\n    width: 22px;\n    height: auto;\n    vertical-align: middle;\n  }\n\u003c\/style\u003e\n\n\u003c!-- PRODUCT DESCRIPTION (SENTENCE TEASER) --\u003e\n\u003cdiv\u003e\n\n\u003cp id=\"desc-teaser\"\u003e\u003c\/p\u003e\n\n\u003cspan id=\"desc-more\" style=\"display:none;\"\u003e\n\u003c\/span\u003e\n Comporte un système de fixation rapide pour un accès facile au nettoyage ou à l'inspection de la cheminée.\n\n\u003cul\u003e\n\n\u003cli\u003e Ventilation robuste et durable grâce à sa paroi extérieure en acier galvanisé et sa paroi intérieure en acier inoxydable\u003c\/li\u003e\n\n\u003cli\u003e Système de joint révolutionnaire qui empêche les fuites et ne nécessite pas l'utilisation de silicone\u003c\/li\u003e\n\n\u003cli\u003e Technologie de soudure lisse pour des coutures pratiquement invisibles\u003c\/li\u003e\n\n\u003cli\u003e Extrémités formées avec précision pour une meilleure finition\u003c\/li\u003e\n\n\u003cli\u003e Conforme aux normes NFPA 211, CSA B365, UL 641, CAN\/ULC S609 et ULC\/ORD C441\u003c\/li\u003e\n\n\n\u003c\/ul\u003e\n\n\u003cp\u003e \u003cstrong\u003eDimensions\u003c\/strong\u003e\u003c\/p\u003e\n\n\u003cp\u003e AØ : 4\"\u003c\/p\u003e\n\n\u003cp\u003e BØ : 4,75\"\u003c\/p\u003e\n\n\u003cp\u003e C : 3\"\u003c\/p\u003e\n\n\u003cp\u003e D : 8,48\"\u003c\/p\u003e\n\n\n\n\u003c\/div\u003e\n\n \u003cspan id=\"seeMoreDesc\" class=\"see-link\" style=\"margin-bottom:20px; display:inline-block;\"\u003e\nDescription complète\n\u003c\/span\u003e \n\n\u003c!-- QUICK SPECIFICATIONS BOX --\u003e\n\u003cdiv id=\"quick-specs\"\u003e\n\n\u003cdiv\u003e\n\n 🌍 \u003cstrong\u003eFabriqué en :\u003c\/strong\u003e\n \u003cspan class=\"flags-inline\"\u003e\n\u003cspan class=\"flag-pair\"\u003e\n\u003cimg class=\"flag-image\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/usa-5bd2139a62f1d18a7eb84549b9847120.png?v=1758991655\" alt=\"Drapeau des États-Unis\"\u003e\u003c\/span\u003e\u003c\/span\u003e \n\u003cspan\u003eÉtats-Unis\u003c\/span\u003e\n\n\n\n\u003c\/div\u003e\n\n\n\u003cdiv style=\"margin-top: 10px;\"\u003e\n\n \u003cspan id=\"seeFullSpecs\" class=\"see-link\"\u003eSpécifications complètes\u003c\/span\u003e \n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c!-- SPECIFICATIONS COLLAPSIBLE --\u003e\n\u003cdiv id=\"specs-accordion\" class=\"accordion\"\u003e\n\n\u003cdiv class=\"accordion-header\"\u003e Caractéristiques \u003c\/div\u003e\n\n\u003cdiv class=\"accordion-content\"\u003e\n\n\u003c!-- Appliance Performance Subheader --\u003e\n\u003ch3 style=\"font-size: 16px; font-weight: bold; margin: 20px 0 10px; border-bottom: 2px solid #ddd; padding-bottom: 5px;\"\u003e Performance des appareils \u003c\/h3\u003e\n\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n\n\u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003e Aucune donnée de performance disponible pour ce produit. \u003c\/p\u003e\n\n\n\u003c\/table\u003e\n\n\n\u003c!-- General Features Subheader --\u003e\n\u003ch3 style=\"font-size: 16px; font-weight: bold; margin: 20px 0 10px; border-bottom: 2px solid #ddd; padding-bottom: 5px;\"\u003e Caractéristiques générales \u003c\/h3\u003e\n\n\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 30px;\"\u003e\n\n\u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003e Aucune fonctionnalité générale n'est disponible pour ce produit. \u003c\/p\u003e\n\n\n\u003c\/table\u003e\n\n\n\u003c!-- Clearances Subheader --\u003e\n\u003ch3 style=\"font-size: 16px; font-weight: bold; margin: 20px 0 10px; border-bottom: 2px solid #ddd; padding-bottom: 5px;\"\u003e\n\n Dédouanements \n\n\u003c\/h3\u003e\n\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; border-radius: 6px; overflow: hidden;\"\u003e\n\n\u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003e Aucune dédouanement n'est disponible pour ce produit. \u003c\/p\u003e\n\n\n\u003c\/table\u003e\n\n\n\u003c!-- See Less link inside accordion --\u003e\n\u003cdiv style=\"text-align:center; margin-top: 15px;\"\u003e\n\n \u003cspan id=\"seeLessSpecs\" class=\"see-link\" style=\"display:none;\"\u003eVoir moins\u003c\/span\u003e\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c!-- MANUALS COLLAPSIBLE --\u003e\n\u003cdiv id=\"manuals-accordion\" class=\"accordion\"\u003e\n\n\u003cdiv class=\"accordion-header\"\u003e Manuels et instructions \u003c\/div\u003e\n\n\u003cdiv class=\"accordion-content\"\u003e\n\n\u003cul\u003e\n\n\u003cp style=\"font-size: 14px; margin: 0 0 15px;\"\u003e Consultez les manuels et brochures disponibles pour plus d'informations sur les performances, l'installation, les exigences d'utilisation, etc. \u003c\/p\u003e\n\n\u003c!-- PDF Links Styled as Buttons --\u003e\n\u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 10px;\"\u003e\n\n\u003c!-- Installation \u0026 User's Manual --\u003e\n\u003ca style=\"flex: 1; min-width: 250px; text-decoration: none; background: #f7f7f7; padding: 12px 15px; border-radius: 6px; display: flex; align-items: center; font-size: 14px; color: #000; border: 1px solid #e0e0e0;\" href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/45651A_26-11-2014_009.pdf?v=1760354598\" target=\"_blank\"\u003e \n📄 Manuel d'installation et d'utilisation \u003cspan style=\"margin-left: auto;\"\u003e🔗\u003c\/span\u003e \n\n\u003c\/a\u003e\n\u003c\/div\u003e\n\n\n\u003c\/ul\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003cscript\u003e\n  document.addEventListener('DOMContentLoaded', function () {\n    \/\/ TEASER: compute first sentence from the full description content (desc-more)\n    const descTeaserP = document.getElementById('desc-teaser');\n    const descMoreSpan = document.getElementById('desc-more');\n    const descToggle = document.getElementById('seeMoreDesc');\n\n    \/\/ use textContent of the hidden desc-more to compute the first sentence\n    const fullText = descMoreSpan ? descMoreSpan.innerText.trim() : '';\n    let firstPeriod = fullText.indexOf('.');\n    if (firstPeriod === -1) firstPeriod = fullText.length;\n    descTeaserP.textContent = fullText.substring(0, firstPeriod + (firstPeriod \u003c fullText.length ? 1 : 0)).trim();\n\n    \/\/ Initially ensure full description hidden and teaser visible\n    descMoreSpan.style.display = 'none';\n    descTeaserP.style.display = 'block';\n    descToggle.textContent = 'Full Description';\n\n    descToggle.addEventListener('click', function () {\n      const teaser = descTeaserP;\n      const moreText = descMoreSpan;\n\n      if (moreText.style.display === 'none') {\n        \/\/ Expand full description: hide teaser\n        teaser.style.display = 'none';\n        moreText.style.display = 'block';\n        this.textContent = 'See Less';\n        \/\/ optional: scroll into view so user sees the expanded description\n        this.scrollIntoView({ behavior: 'smooth', block: 'center' });\n      } else {\n        \/\/ Collapse to teaser\n        moreText.style.display = 'none';\n        teaser.style.display = 'block';\n        this.textContent = 'Full Description';\n      }\n    });\n\n    \/\/ ACCORDION logic (only one open at a time) + quick-specs handling\n    const accordions = document.querySelectorAll('.accordion');\n    const quickSpecs = document.getElementById('quick-specs');\n    const specsAccordion = document.getElementById('specs-accordion');\n    const specsContent = specsAccordion.querySelector('.accordion-content');\n    const seeLessSpecs = document.getElementById('seeLessSpecs');\n    const seeFullSpecs = document.getElementById('seeFullSpecs');\n\n    function closeAllAccordions(exceptAccordion) {\n      accordions.forEach(acc =\u003e {\n        if (acc !== exceptAccordion) {\n          acc.querySelector('.accordion-content').classList.remove('open');\n        }\n      });\n    }\n\n    function refreshUIState() {\n      \/\/ If specs open =\u003e hide quick-specs and show See Less inside specs\n      if (specsContent.classList.contains('open')) {\n        quickSpecs.style.display = 'none';\n        seeLessSpecs.style.display = 'inline-block';\n      } else {\n        quickSpecs.style.display = 'block';\n        seeLessSpecs.style.display = 'none';\n      }\n    }\n\n    \/\/ Set up header click handlers to toggle and enforce \"one open at a time\"\n    document.querySelectorAll('.accordion').forEach(acc =\u003e {\n      const header = acc.querySelector('.accordion-header');\n      const content = acc.querySelector('.accordion-content');\n\n      header.addEventListener('click', function () {\n        \/\/ if clicking the same accordion that is open =\u003e close it\n        if (content.classList.contains('open')) {\n          content.classList.remove('open');\n        } else {\n          closeAllAccordions(acc); \/\/ close others\n          content.classList.add('open');\n        }\n        refreshUIState();\n      });\n    });\n\n    \/\/ \"Full Specifications\" link: open the specs accordion (or close if already open)\n    seeFullSpecs.addEventListener('click', function () {\n      if (!specsContent.classList.contains('open')) {\n        closeAllAccordions(specsAccordion);\n        specsContent.classList.add('open');\n      } else {\n        specsContent.classList.remove('open');\n      }\n      refreshUIState();\n      \/\/ scroll to specifications area when opening\n      if (specsContent.classList.contains('open')) {\n        specsAccordion.scrollIntoView({ behavior: 'smooth', block: 'start' });\n      }\n    });\n\n    \/\/ \"See Less\" link located inside the Specifications content (after Clearances)\n    seeLessSpecs.addEventListener('click', function () {\n      if (specsContent.classList.contains('open')) {\n        specsContent.classList.remove('open');\n        refreshUIState();\n        \/\/ Reset the top Full Specifications link text if you want (kept as \"Full Specifications\")\n        \/\/ show quick specs again (handled in refreshUIState)\n        \/\/ scroll to the quick-specs area for the user's convenience\n        document.getElementById('quick-specs').scrollIntoView({ behavior: 'smooth', block: 'center' });\n      }\n    });\n\n    \/\/ Initial UI state\n    refreshUIState();\n  });\n\u003c\/script\u003e\n","brand":"Vortex","offers":[{"title":"Default Title","offer_id":43681427849267,"sku":"VOP0401","price":90.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0665\/6871\/6339\/files\/VOP0400_VOP0401.webp?v=1760460969"}],"url":"https:\/\/thenorthflame.com\/fr\/collections\/caps.oembed","provider":"The North Flame","version":"1.0","type":"link"}