{"product_id":"light-canvas-work-jacket-black","title":"Light canvas work jacket - Black","description":"\u003cp\u003eA lightweight work jacket crafted from a washed black canvas built for everyday wear. Designed with dual chest welt pockets and a clean button closure, it balances utility with a refined silhouette. An adjustable back strap allows for a customizable fit, while the exaggerated collar can be worn up or down depending on the mood. Finished with custom Lhouette buttons and tag.\u003c\/p\u003e\n\u003cdiv class=\"lh-details-block\"\u003e\n  \u003cdiv class=\"lh-details\"\u003e\n    \u003cbutton class=\"lh-details-toggle\" type=\"button\" aria-expanded=\"false\"\u003e\n      \u003cspan\u003eDetails\u003c\/span\u003e\n      \u003cspan class=\"icon\"\u003e\u003c\/span\u003e\n    \u003c\/button\u003e\n\n    \u003cdiv class=\"lh-details-content\"\u003e\n      \u003cdiv class=\"lh-details-inner\"\u003e\n        \u003cul\u003e\n          \u003cli\u003eexaggerated collar\u003c\/li\u003e\n          \u003cli\u003eslightly cropped fit\u003c\/li\u003e\n          \u003cli\u003emale model is 182cm (athletic build) wearing size 2\u003c\/li\u003e\n          \u003cli\u003efemale model is 170cm (slim build) wearing size 2\u003c\/li\u003e\n        \u003c\/ul\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cstyle\u003e\n.lh-details {\n  border-bottom: 1px solid #000;\n  padding: 12px 0;\n}\n\n.lh-details-toggle {\n  width: 100%;\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  background: transparent;\n  border: 0;\n  cursor: pointer;\n  padding: 0;\n  font-size: 14px;\n  letter-spacing: 0.02em;\n  color: #000;\n}\n\n.lh-details-toggle .icon {\n  width: 12px;\n  height: 12px;\n  position: relative;\n}\n\n.lh-details-toggle .icon::before,\n.lh-details-toggle .icon::after {\n  content: \"\";\n  position: absolute;\n  background: #000;\n}\n\n.lh-details-toggle .icon::before {\n  width: 100%;\n  height: 1px;\n  top: 50%;\n  left: 0;\n  transform: translateY(-50%);\n}\n\n.lh-details-toggle .icon::after {\n  width: 1px;\n  height: 100%;\n  left: 50%;\n  top: 0;\n  transform: translateX(-50%);\n  transition: transform 0.25s ease, opacity 0.25s ease;\n}\n\n.lh-details.active .icon::after {\n  transform: translateX(-50%) scaleY(0);\n  opacity: 0;\n}\n\n.lh-details-content {\n  max-height: 0;\n  overflow: hidden;\n  transition: max-height 0.35s ease;\n}\n\n.lh-details-inner {\n  padding-top: 12px;\n}\n\n.lh-details ul {\n  padding-left: 18px;\n  font-size: 13px;\n  line-height: 1.6;\n}\n\n.lh-details li {\n  margin-bottom: 6px;\n}\n\u003c\/style\u003e\n\n\u003cscript\u003e\ndocument.addEventListener('DOMContentLoaded', function () {\n  const blocks = document.querySelectorAll('.lh-details');\n\n  blocks.forEach(block =\u003e {\n    const toggle = block.querySelector('.lh-details-toggle');\n    const content = block.querySelector('.lh-details-content');\n\n    toggle.addEventListener('click', function () {\n      const isOpen = block.classList.contains('active');\n\n      if (isOpen) {\n        content.style.maxHeight = content.scrollHeight + 'px';\n        requestAnimationFrame(() =\u003e {\n          content.style.maxHeight = '0px';\n        });\n        block.classList.remove('active');\n        toggle.setAttribute('aria-expanded', 'false');\n      } else {\n        block.classList.add('active');\n        toggle.setAttribute('aria-expanded', 'true');\n        content.style.maxHeight = content.scrollHeight + 'px';\n\n        content.addEventListener('transitionend', function handler() {\n          if (block.classList.contains('active')) {\n            content.style.maxHeight = 'none';\n          }\n          content.removeEventListener('transitionend', handler);\n        });\n      }\n    });\n  });\n});\n\u003c\/script\u003e\n\u003cdiv class=\"lh-jacket-size-chart-block\"\u003e\n  \u003cdiv class=\"lh-jacket-size-chart\"\u003e\n    \u003cbutton class=\"lh-jacket-size-chart-toggle\" type=\"button\" aria-expanded=\"false\"\u003e\n      \u003cspan\u003eSize Chart\u003c\/span\u003e\n      \u003cspan class=\"icon\"\u003e\u003c\/span\u003e\n    \u003c\/button\u003e\n\n    \u003cdiv class=\"lh-jacket-size-chart-content\"\u003e\n      \u003cdiv class=\"lh-jacket-size-chart-inner\"\u003e\n        \u003cdiv class=\"size-chart-controls\"\u003e\n          \u003cbutton type=\"button\" class=\"unit-btn active\" data-unit=\"cm\"\u003eCM\u003c\/button\u003e\n          \u003cbutton type=\"button\" class=\"unit-btn\" data-unit=\"in\"\u003eIN\u003c\/button\u003e\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"size-chart-wrap\"\u003e\n          \u003ctable class=\"size-chart-table active\" data-table=\"cm\"\u003e\n            \u003cthead\u003e\n              \u003ctr\u003e\n                \u003cth\u003eSize\u003c\/th\u003e\n                \u003cth\u003e1\u003c\/th\u003e\n                \u003cth\u003e2\u003c\/th\u003e\n                \u003cth\u003e3\u003c\/th\u003e\n              \u003c\/tr\u003e\n            \u003c\/thead\u003e\n            \u003ctbody\u003e\n              \u003ctr\u003e\n                \u003ctd\u003e1\/2 Chest Width\u003c\/td\u003e\n                \u003ctd\u003e55\u003c\/td\u003e\n                \u003ctd\u003e57\u003c\/td\u003e\n                \u003ctd\u003e59\u003c\/td\u003e\n              \u003c\/tr\u003e\n              \u003ctr\u003e\n                \u003ctd\u003eFront Length\u003c\/td\u003e\n                \u003ctd\u003e60.5\u003c\/td\u003e\n                \u003ctd\u003e61\u003c\/td\u003e\n                \u003ctd\u003e62\u003c\/td\u003e\n              \u003c\/tr\u003e\n              \u003ctr\u003e\n                \u003ctd\u003eSleeve Length\u003c\/td\u003e\n                \u003ctd\u003e59\u003c\/td\u003e\n                \u003ctd\u003e60\u003c\/td\u003e\n                \u003ctd\u003e61\u003c\/td\u003e\n              \u003c\/tr\u003e\n            \u003c\/tbody\u003e\n          \u003c\/table\u003e\n\n          \u003ctable class=\"size-chart-table\" data-table=\"in\"\u003e\n            \u003cthead\u003e\n              \u003ctr\u003e\n                \u003cth\u003eSize\u003c\/th\u003e\n                \u003cth\u003e1\u003c\/th\u003e\n                \u003cth\u003e2\u003c\/th\u003e\n                \u003cth\u003e3\u003c\/th\u003e\n              \u003c\/tr\u003e\n            \u003c\/thead\u003e\n            \u003ctbody\u003e\n              \u003ctr\u003e\n                \u003ctd\u003e1\/2 Chest Width\u003c\/td\u003e\n                \u003ctd\u003e21.7\u003c\/td\u003e\n                \u003ctd\u003e22.4\u003c\/td\u003e\n                \u003ctd\u003e23.2\u003c\/td\u003e\n              \u003c\/tr\u003e\n              \u003ctr\u003e\n                \u003ctd\u003eFront Length\u003c\/td\u003e\n                \u003ctd\u003e23.8\u003c\/td\u003e\n                \u003ctd\u003e24.0\u003c\/td\u003e\n                \u003ctd\u003e24.4\u003c\/td\u003e\n              \u003c\/tr\u003e\n              \u003ctr\u003e\n                \u003ctd\u003eSleeve Length\u003c\/td\u003e\n                \u003ctd\u003e23.2\u003c\/td\u003e\n                \u003ctd\u003e23.6\u003c\/td\u003e\n                \u003ctd\u003e24.0\u003c\/td\u003e\n              \u003c\/tr\u003e\n            \u003c\/tbody\u003e\n          \u003c\/table\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cstyle\u003e\n.lh-jacket-size-chart {\n  border-bottom: 1px solid #000;\n  padding: 12px 0;\n}\n\n.lh-jacket-size-chart-toggle {\n  width: 100%;\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  cursor: pointer;\n  background: transparent;\n  border: 0;\n  padding: 0;\n  font-size: 14px;\n  letter-spacing: 0.02em;\n  color: #000;\n}\n\n.lh-jacket-size-chart-toggle .icon {\n  width: 12px;\n  height: 12px;\n  position: relative;\n  flex-shrink: 0;\n}\n\n.lh-jacket-size-chart-toggle .icon::before,\n.lh-jacket-size-chart-toggle .icon::after {\n  content: \"\";\n  position: absolute;\n  background: #000;\n}\n\n.lh-jacket-size-chart-toggle .icon::before {\n  width: 100%;\n  height: 1px;\n  top: 50%;\n  left: 0;\n  transform: translateY(-50%);\n}\n\n.lh-jacket-size-chart-toggle .icon::after {\n  width: 1px;\n  height: 100%;\n  top: 0;\n  left: 50%;\n  transform: translateX(-50%);\n  transition: transform 0.25s ease, opacity 0.25s ease;\n}\n\n.lh-jacket-size-chart.active .lh-jacket-size-chart-toggle .icon::after {\n  transform: translateX(-50%) scaleY(0);\n  opacity: 0;\n}\n\n.lh-jacket-size-chart-content {\n  max-height: 0;\n  overflow: hidden;\n  transition: max-height 0.35s ease;\n}\n\n.lh-jacket-size-chart-inner {\n  padding-top: 12px;\n}\n\n.size-chart-controls {\n  display: flex;\n  gap: 8px;\n  margin-bottom: 12px;\n}\n\n.unit-btn {\n  border: 1px solid #000;\n  background: transparent;\n  color: #000;\n  font-size: 11px;\n  letter-spacing: 0.08em;\n  padding: 5px 10px;\n  cursor: pointer;\n  line-height: 1;\n}\n\n.unit-btn.active {\n  background: #000;\n  color: #fff;\n}\n\n.size-chart-wrap {\n  overflow-x: auto;\n}\n\n.size-chart-table {\n  width: 100%;\n  border-collapse: collapse;\n  font-size: 13px;\n  line-height: 1.5;\n  display: none;\n}\n\n.size-chart-table.active {\n  display: table;\n}\n\n.size-chart-table th,\n.size-chart-table td {\n  padding: 8px 10px;\n  text-align: center;\n  border-bottom: 1px solid #e5e5e5;\n  white-space: nowrap;\n}\n\n.size-chart-table th:first-child,\n.size-chart-table td:first-child {\n  text-align: left;\n}\n\n.size-chart-table thead th {\n  font-weight: 500;\n}\n\n.size-chart-table tbody tr:last-child td {\n  border-bottom: none;\n}\n\u003c\/style\u003e\n\n\u003cscript\u003e\ndocument.addEventListener('DOMContentLoaded', function () {\n  const chartBlocks = document.querySelectorAll('.lh-jacket-size-chart');\n\n  chartBlocks.forEach(block =\u003e {\n    const toggle = block.querySelector('.lh-jacket-size-chart-toggle');\n    const content = block.querySelector('.lh-jacket-size-chart-content');\n    const buttons = block.querySelectorAll('.unit-btn');\n    const tables = block.querySelectorAll('.size-chart-table');\n\n    toggle.addEventListener('click', function () {\n      const isOpen = block.classList.contains('active');\n\n      if (isOpen) {\n        content.style.maxHeight = content.scrollHeight + 'px';\n        requestAnimationFrame(() =\u003e {\n          content.style.maxHeight = '0px';\n        });\n        block.classList.remove('active');\n        toggle.setAttribute('aria-expanded', 'false');\n      } else {\n        block.classList.add('active');\n        toggle.setAttribute('aria-expanded', 'true');\n        content.style.maxHeight = content.scrollHeight + 'px';\n\n        content.addEventListener('transitionend', function handler() {\n          if (block.classList.contains('active')) {\n            content.style.maxHeight = 'none';\n          }\n          content.removeEventListener('transitionend', handler);\n        });\n      }\n    });\n\n    buttons.forEach(button =\u003e {\n      button.addEventListener('click', function () {\n        const unit = this.getAttribute('data-unit');\n\n        buttons.forEach(btn =\u003e btn.classList.remove('active'));\n        this.classList.add('active');\n\n        tables.forEach(table =\u003e {\n          table.classList.remove('active');\n          if (table.getAttribute('data-table') === unit) {\n            table.classList.add('active');\n          }\n        });\n\n        if (block.classList.contains('active')) {\n          content.style.maxHeight = 'none';\n          const newHeight = content.scrollHeight;\n          content.style.maxHeight = newHeight + 'px';\n\n          content.addEventListener('transitionend', function handler() {\n            if (block.classList.contains('active')) {\n              content.style.maxHeight = 'none';\n            }\n            content.removeEventListener('transitionend', handler);\n          });\n        }\n      });\n    });\n  });\n});\n\u003c\/script\u003e","brand":"LHOUETTE","offers":[{"title":"S","offer_id":47290657407170,"sku":null,"price":181.5,"currency_code":"USD","in_stock":true},{"title":"M","offer_id":47290657439938,"sku":null,"price":181.5,"currency_code":"USD","in_stock":true},{"title":"L","offer_id":47290657472706,"sku":null,"price":181.5,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0662\/7645\/8690\/files\/top_front.jpg?v=1774593830","url":"https:\/\/lhouette.co\/products\/light-canvas-work-jacket-black","provider":"LHOUETTE","version":"1.0","type":"link"}