{"title":"mens-e-Line","description":"\u003cp\u003e Testset\u003c\/p\u003e","products":[{"product_id":"ttbici-cycling-cap-black","title":"Cycling Cap \/ Black","description":"The ttbici Classic Cotton Cycling Cap fits comfortably under your helmet, ensuring you stay stylish and comfortable before, during, and after your ride.","brand":"ttbici","offers":[{"title":"Default Title","offer_id":48070199541984,"sku":"B1TC-C01-BK000N","price":580.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/dsc04837_1.jpg?v=1761703981"},{"product_id":"ttbici-cycling-cap-navy","title":"Cycling Cap \/ Navy","description":"The ttbici Classic Cotton Cycling Cap fits comfortably under your helmet, ensuring you stay stylish and comfortable before, during, and after your ride.","brand":"ttbici","offers":[{"title":"Default Title","offer_id":48070200099040,"sku":"B1TC-C01-NY000N","price":580.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/dsc04844.jpg?v=1761703987"},{"product_id":"ttbici-cycling-cap-grey","title":"Cycling Cap \/ Grey","description":"The ttbici Classic Cotton Cycling Cap fits comfortably under your helmet, ensuring you stay stylish and comfortable before, during, and after your ride.","brand":"ttbici","offers":[{"title":"Default Title","offer_id":48070200164576,"sku":"B1TC-C01-GY000N","price":580.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/dsc04845.jpg?v=1761703992"},{"product_id":"ttbici-socks-black","title":"Socks \/ Black","description":"Breathable Structure - Ventilated design on the sole and instep for moisture-wicking and airflow.\r\n\u003cbr\u003e\u003cbr\u003e\r\nSignature Brand Elements - Custom-woven labels and grippers provide a cohesive design and elevate the overall sense of sophistication.","brand":"ttbici","offers":[{"title":"SM","offer_id":48070266257632,"sku":"B1TC-F01-BK0SMN","price":480.0,"currency_code":"TWD","in_stock":true},{"title":"L-XL","offer_id":48070266290400,"sku":"B1TC-F01-BKLXLN","price":480.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/dsc04794_1.jpg?v=1761708190"},{"product_id":"ttbici-socks-white","title":"Socks \/ White","description":"Breathable Structure - Ventilated design on the sole and instep for moisture-wicking and airflow.\r\n\u003cbr\u003e\u003cbr\u003e\r\nSignature Brand Elements - Custom-woven labels and grippers provide a cohesive design and elevate the overall sense of sophistication.","brand":"ttbici","offers":[{"title":"SM","offer_id":48070266323168,"sku":"B1TC-F01-WH0SMN","price":480.0,"currency_code":"TWD","in_stock":true},{"title":"L-XL","offer_id":48070266355936,"sku":"B1TC-F01-WHLXLN","price":480.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/dsc04780_1.jpg?v=1761708196"},{"product_id":"ttbici-e-1-cycling-sunglasses-solid-black-green-lens","title":"E-1 Cycling Sunglasses \/ Solid Black \/ Green Lens (CAT3)","description":"ttbici E-1 Cycling Sunglasses \u003cbr\u003e\r\nDesigned for versatility across a range of sports, the E-1 features a one-piece lens that seamlessly blends performance with contemporary style.\u003cbr\u003e\r\nMore than just sun protection, it’s the ultimate fashion statement for every ride","brand":"ttbici","offers":[{"title":"Default Title","offer_id":48073344286944,"sku":"B1TC-EE1-BKGREN","price":2580.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/b1tc-ee1-bkgren_1.jpg?v=1761810742"},{"product_id":"ttbici-e-1-cycling-sunglasses-solid-black-mirror-silver-lens","title":"E-1 Cycling Sunglasses \/ Solid Black \/ Mirror Silver Lens (CAT3)","description":"ttbici E-1 Cycling Sunglasses \u003cbr\u003e\r\nDesigned for versatility across a range of sports, the E-1 features a one-piece lens that seamlessly blends performance with contemporary style.\u003cbr\u003e\r\nMore than just sun protection, it’s the ultimate fashion statement for every ride","brand":"ttbici","offers":[{"title":"Default Title","offer_id":48073344516320,"sku":"B1TC-EE1-BKSILN","price":2880.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/b1tc-ee1-bksiln_1.jpg?v=1761810748"},{"product_id":"ttbici-e-1-cycling-sunglasses-matte-grey-pink-lens","title":"E-1 Cycling Sunglasses \/ Matte Grey \/ Pink Lens (CAT1)","description":"ttbici E-1 Cycling Sunglasses \u003cbr\u003e\r\nDesigned for versatility across a range of sports, the E-1 features a one-piece lens that seamlessly blends performance with contemporary style.\u003cbr\u003e\r\nMore than just sun protection, it’s the ultimate fashion statement for every ride","brand":"ttbici","offers":[{"title":"Default Title","offer_id":48073344549088,"sku":"B1TC-EE1-GYPINN","price":2580.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/b1tc-ee1-gypinn_1.jpg?v=1761810754"},{"product_id":"ttbici-e-1-cycling-sunglasses-matte-grey-mirror-blue-lens","title":"E-1 Cycling Sunglasses \/ Matte Grey \/ Mirror Blue Lens (CAT3)","description":"ttbici E-1 Cycling Sunglasses \u003cbr\u003e\r\nDesigned for versatility across a range of sports, the E-1 features a one-piece lens that seamlessly blends performance with contemporary style.\u003cbr\u003e\r\nMore than just sun protection, it’s the ultimate fashion statement for every ride","brand":"ttbici","offers":[{"title":"Default Title","offer_id":48073344581856,"sku":"B1TC-EE1-GYBLUN","price":2880.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/b1tc-ee1-gyblun_1.jpg?v=1761810761"},{"product_id":"ttbici-e-1-cycling-sunglasses-matte-brown-grey-lens","title":"E-1 Cycling Sunglasses \/ Matte Brown \/ Grey Lens (CAT3)","description":"ttbici E-1 Cycling Sunglasses \u003cbr\u003e\r\nDesigned for versatility across a range of sports, the E-1 features a one-piece lens that seamlessly blends performance with contemporary style.\u003cbr\u003e\r\nMore than just sun protection, it’s the ultimate fashion statement for every ride","brand":"ttbici","offers":[{"title":"Default Title","offer_id":48073344614624,"sku":"B1TC-EE1-BRGRYN","price":2580.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/b1tc-ee1-brgryn_1.jpg?v=1761810767"},{"product_id":"ttbici-e-1-cycling-sunglasses-matte-brown-mirror-gold-lens","title":"E-1 Cycling Sunglasses \/ Matte Brown \/ Mirror Gold Lens (CAT3)","description":"ttbici E-1 Cycling Sunglasses \u003cbr\u003e\r\nDesigned for versatility across a range of sports, the E-1 features a one-piece lens that seamlessly blends performance with contemporary style.\u003cbr\u003e\r\nMore than just sun protection, it’s the ultimate fashion statement for every ride","brand":"ttbici","offers":[{"title":"Default Title","offer_id":48073344778464,"sku":"B1TC-EE1-BRGOLN","price":2880.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/b1tc-ee1-brgoln_1.jpg?v=1761810774"},{"product_id":"ttbici-e-line-men-s-classic-bib-shorts-black","title":"E Line Men' Classic Bib Shorts \/ Black","description":"The ttbici E Line Classic Bib Shorts merge traditional elements with modern innovation, embodying understated luxury through exquisite embroidery detailing.\r\n\u003cbr\u003e\u003cbr\u003e\r\nDesigned for comfort and performance, these bib shorts feature an ergonomic, adaptive fit, ensuring ease of movement and all-day wearability. Crafted from durable, moisture-wicking fabric and equipped with a high-density padded chamois, they deliver exceptional support and comfort for an enhanced riding experience.\u003cbr\u003e\u003cbr\u003e\r\n\r\n\u003c!DOCTYPE html\u003e\r\n\u003chtml lang=\"zh-Hant\"\u003e\r\n\r\n\u003chead\u003e\r\n\t\u003cmeta charset=\"UTF-8\" \/\u003e\r\n\t\u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/\u003e\r\n\t\u003cstyle\u003e\r\n\t\tbody.product-modal-open {\r\n\t\t\toverflow: hidden;\r\n\t\t}\r\n\r\n\t\t.product-modal-overlay {\r\n\t\t\tdisplay: none;\r\n\t\t\tposition: fixed;\r\n\t\t\ttop: 0;\r\n\t\t\tleft: 0;\r\n\t\t\twidth: 100vw;\r\n\t\t\theight: 100vh;\r\n\t\t\tbackground-color: rgba(0, 0, 0, 0.5);\r\n\t\t\tbackdrop-filter: blur(2px);\r\n\t\t\tz-index: 1000;\r\n\t\t\tjustify-content: center;\r\n\t\t\talign-items: center;\r\n\t\t}\r\n\r\n\t\t.product-modal {\r\n\t\t\tbackground: white;\r\n\t\t\tpadding: 20px;\r\n\t\t\t\/* border-radius: 10px; *\/\r\n\t\t\tmax-width: 600px;\r\n\t\t\twidth: 90%;\r\n\t\t\tmax-height: 90vh;\r\n\t\t\toverflow-y: auto;\r\n\t\t\tposition: relative;\r\n\t\t}\r\n\r\n\t\t.product-modal .modal-close {\r\n\t\t\tposition: absolute;\r\n\t\t\ttop: 10px;\r\n\t\t\tright: 12px;\r\n\t\t\tfont-size: 20px;\r\n\t\t\tcursor: pointer;\r\n\t\t}\r\n\r\n\t\t\/* ✅ 統一按鈕樣式 *\/\r\n\t\t.button-group {\r\n\t\t\tdisplay: flex;\r\n\t\t\tgap: 12px;\r\n\t\t\tpadding-top: 20px;\r\n\t\t}\r\n\r\n\t\t.button-group button {\r\n\t\t\tpadding: 0px;\r\n\t\t\tborder: none;\r\n\t\t\tbackground-color: transparent;\r\n\t\t\tcolor: #333;\r\n\t\t\tcursor: pointer;\r\n\t\t\t\/* border-radius: 5px; *\/\r\n\t\t\tfont-size: 15px;\r\n\t\t\tfont-family: 'Microsoft JhengHei';\r\n\t\t\ttext-decoration: underline;\r\n\t\t}\r\n\r\n\t\t.button-group button.active {\r\n\t\t\t\/* background-color: #444; *\/\r\n\t\t}\r\n\r\n\t\tbutton:active {\r\n\t\t\tbox-shadow: none !important;\r\n\t\t\tcolor: #333 !important;\r\n\t\t}\r\n\r\n\t\t.product-modal table {\r\n\t\t\twidth: 100%;\r\n\t\t\tborder-collapse: collapse;\r\n\t\t\tmargin-top: 10px;\r\n\t\t}\r\n\r\n\t\t.product-modal th,\r\n\t\t.product-modal td {\r\n\t\t\tborder-bottom: 1px solid #ddd;\r\n\t\t\ttext-align: center;\r\n\t\t\tpadding: 8px;\r\n\t\t}\r\n\r\n\t\t\/* ✅ 新增的欄寬限制 *\/\r\n\t\t.product-modal table th:first-child,\r\n\t\t.product-modal table td:first-child {\r\n\t\t\twidth: 15%;\r\n\t\t\tmax-width: 15%;\r\n\t\t}\r\n\r\n\t\t.product-modal .toggle-wrapper {\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items: center;\r\n\t\t\tgap: 10px;\r\n\t\t\tmargin: 10px 0 20px;\r\n\t\t}\r\n\r\n\t\t.product-modal .toggle {\r\n\t\t\tposition: relative;\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 50px;\r\n\t\t\theight: 24px;\r\n\t\t}\r\n\r\n\t\t.product-modal .toggle input {\r\n\t\t\topacity: 0;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t}\r\n\r\n\t\t.product-modal .slider {\r\n\t\t\tposition: absolute;\r\n\t\t\tcursor: pointer;\r\n\t\t\tbackground-color: #ccc;\r\n\t\t\tborder-radius: 24px;\r\n\t\t\ttop: 0;\r\n\t\t\tleft: 0;\r\n\t\t\tright: 0;\r\n\t\t\tbottom: 0;\r\n\t\t\ttransition: 0.4s;\r\n\t\t}\r\n\r\n\t\t.product-modal .slider:before {\r\n\t\t\tcontent: \"\";\r\n\t\t\tposition: absolute;\r\n\t\t\theight: 18px;\r\n\t\t\twidth: 18px;\r\n\t\t\tleft: 3px;\r\n\t\t\tbottom: 3px;\r\n\t\t\tbackground-color: white;\r\n\t\t\ttransition: 0.4s;\r\n\t\t\tborder-radius: 50%;\r\n\t\t}\r\n\r\n\t\t.product-modal input:checked+.slider {\r\n\t\t\tbackground-color: #333;\r\n\t\t}\r\n\r\n\t\t.product-modal input:checked+.slider:before {\r\n\t\t\ttransform: translateX(26px);\r\n\t\t}\r\n\r\n\t\t.product-modal .modalInnerContent h3 {\r\n\t\t\tpadding: 20px 0;\r\n\r\n\t\t}\r\n\t\u003c\/style\u003e\r\n\u003c\/head\u003e\r\n\r\n\u003cbody\u003e\r\n\r\n\t\u003c!-- 外部觸發按鈕 --\u003e\r\n\t\u003cdiv class=\"button-group\"\u003e\r\n\t\t\u003c!-- \u003cbutton onclick=\"openModal('shipping')\"\u003e運送詳情\u003c\/button\u003e --\u003e\r\n\t\t\u003cbutton onclick=\"openModal('size')\"\u003eSIZE GUIDE\u003c\/button\u003e\r\n\t\t\u003cbutton onclick=\"openModal('care')\"\u003eCARE\u003c\/button\u003e\r\n\t\u003c\/div\u003e\r\n\r\n\t\u003c!-- Modal --\u003e\r\n\t\u003cdiv class=\"product-modal-overlay\" id=\"modalOverlay\"\u003e\r\n\t\t\u003cdiv class=\"product-modal\" id=\"modalContent\"\u003e\r\n\t\t\t\u003cdiv class=\"modal-close\" onclick=\"closeModal()\"\u003e×\u003c\/div\u003e\r\n\r\n\t\t\t\u003c!-- 內部選單 --\u003e\r\n\t\t\t\u003cdiv class=\"button-group\" id=\"infoTabs\"\u003e\r\n\t\t\t\t\u003c!-- \u003cbutton id=\"tab-shipping\" onclick=\"switchTab('shipping')\"\u003e運送詳情\u003c\/button\u003e --\u003e\r\n\t\t\t\t\u003cbutton id=\"tab-size\" onclick=\"switchTab('size')\"\u003eSIZE GUIDE\u003c\/button\u003e\r\n\t\t\t\t\u003cbutton id=\"tab-care\" onclick=\"switchTab('care')\"\u003eCARE\u003c\/button\u003e\r\n\t\t\t\u003c\/div\u003e\r\n\r\n\t\t\t\u003c!-- 內容區 --\u003e\r\n\t\t\t\u003cdiv id=\"modalInnerContent\"\u003e\u003c\/div\u003e\r\n\t\t\u003c\/div\u003e\r\n\t\u003c\/div\u003e\r\n\r\n\t\u003cscript\u003e\r\n\t\tconst modalOverlay = document.getElementById(\"modalOverlay\");\r\n\t\tconst modalInner = document.getElementById(\"modalInnerContent\");\r\n\r\n\t\tconst sizeData = {\r\n\t\t\tcm: [\r\n\t\t\t\t{ size: 'XS', chest: '80–88', waist: '68–76', hip: '82–90' },\r\n\t\t\t\t{ size: 'S', chest: '85–93', waist: '73–81', hip: '87–95' },\r\n\t\t\t\t{ size: 'M', chest: '89–97', waist: '77–85', hip: '91–99' },\r\n\t\t\t\t{ size: 'L', chest: '93–101', waist: '81–89', hip: '95–103' },\r\n\t\t\t\t{ size: 'XL', chest: '97–105', waist: '85–93', hip: '99–107' },\r\n\t\t\t\t{ size: '2XL', chest: '101–109', waist: '89–97', hip: '103–111' }\r\n\t\t\t],\r\n\t\t\tinches: [\r\n\t\t\t\t{ size: 'XS', chest: '32–35', waist: '27–30', hip: '32–35' },\r\n\t\t\t\t{ size: 'S', chest: '34–37', waist: '29–32', hip: '34–37' },\r\n\t\t\t\t{ size: 'M', chest: '35–38', waist: '30–33', hip: '36–39' },\r\n\t\t\t\t{ size: 'L', chest: '37–40', waist: '32–35', hip: '37–40' },\r\n\t\t\t\t{ size: 'XL', chest: '38–41', waist: '34–37', hip: '39–42' },\r\n\t\t\t\t{ size: '2XL', chest: '40–43', waist: '35–38', hip: '41–44' }\r\n\t\t\t]\r\n\t\t};\r\n\r\n\t\tfunction openModal(defaultTab) {\r\n\t\t\tdocument.body.classList.add(\"product-modal-open\");\r\n\t\t\tmodalOverlay.style.display = \"flex\";\r\n\t\t\tswitchTab(defaultTab);\r\n\t\t}\r\n\r\n\t\tfunction closeModal() {\r\n\t\t\tmodalOverlay.style.display = \"none\";\r\n\t\t\tmodalInner.innerHTML = \"\";\r\n\t\t\tdocument.body.classList.remove(\"product-modal-open\");\r\n\t\t}\r\n\r\n\t\tfunction switchTab(tab) {\r\n\t\t\t['shipping', 'care', 'size'].forEach(id =\u003e {\r\n\t\t\t\tconst btn = document.getElementById(`tab-${id}`);\r\n\t\t\t\tif (btn) btn.classList.remove(\"active\");\r\n\t\t\t});\r\n\r\n\t\t\tconst activeBtn = document.getElementById(`tab-${tab}`);\r\n\t\t\tif (activeBtn) activeBtn.classList.add(\"active\");\r\n\r\n\t\t\tif (tab === 'shipping') {\r\n\t\t\t\tmodalInner.innerHTML = `\u003ch3\u003e運送詳情\u003c\/h3\u003e\u003cp\u003e這裡可以放運送方式、時間、費用等資訊。\u003c\/p\u003e`;\r\n\t\t\t} else if (tab === 'care') {\r\n\t\t\t\tmodalInner.innerHTML = `\r\n\t\t\u003ch3\u003eCARE\u003c\/h3\u003e\r\n\t\t\u003col\u003e\r\n\t\t\t\u003cli\u003eWhen wearing cycling jerseys, it is strongly recommended to wear and wash them based on the colors to reduce the risk of clothes bleeding colors onto each other.\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eAfter use, it is advisable to clean them promptly to prevent bacteria growth, odor formation, and the development of sweat stains, or even yellowing on the clothing.\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eWhen cleaning, remember to zip up all zippers to prevent fabric damage during the wash. Soak the clothing in \"cold water with neutral detergent\" for 5 - 10 minutes, then agitate it gently.\u003cbr\u003e\r\n\t\t\t\u003cstrong\u003e※ Do not use cold wash, fabric softener, or bleach, as these detergents can damage the fabric.\u003c\/strong\u003e\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eHand washing is preferred, but if you choose to use a washing machine, make sure to zip up all zippers, place the clothing inside a laundry bag, and wash it on the \" delicate wash mode\"\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eAfter washing, avoid \"wringing out\" the clothing, and refrain from using a dryer, as this may damage the fabric. Instead, wrap the clothing in a towel to remove excess moisture and hang it to air dry in a well-ventilated, cool place.\u003c\/li\u003e\r\n\t\t\u003c\/ol\u003e\r\n\t\t\u003cp\u003e\u003cstrong\u003e※ Due to variations in manufacturing processes and dyeing methods, some fading may occur when wearing or washing cycling clothing, especially for brighter colors. We strongly recommend you to wear and wash them with similar colors.\u003c\/strong\u003e\u003c\/p\u003e\r\n\t`;\r\n\r\n\t\t\t} else if (tab === 'size') {\r\n\t\t\t\tmodalInner.innerHTML = `\r\n          \u003ch3\u003eSIZE GUIDE\u003c\/h3\u003e\r\n          \u003cdiv class=\"toggle-wrapper\"\u003e\r\n            \u003cspan\u003eCM\u003c\/span\u003e\r\n            \u003clabel class=\"toggle\"\u003e\r\n              \u003cinput type=\"checkbox\" id=\"unitToggle\"\u003e\r\n              \u003cspan class=\"slider\"\u003e\u003c\/span\u003e\r\n            \u003c\/label\u003e\r\n            \u003cspan\u003eINCHES\u003c\/span\u003e\r\n          \u003c\/div\u003e\r\n          \u003ctable\u003e\r\n            \u003cthead\u003e\r\n              \u003ctr\u003e\r\n                \u003cth\u003eSIZE\u003c\/th\u003e\r\n                \u003cth id=\"chestHeader\"\u003eCHEST\u003c\/th\u003e\r\n                \u003cth id=\"waistHeader\"\u003eWAIST\u003c\/th\u003e\r\n                \u003cth id=\"hipHeader\"\u003eHIP\u003c\/th\u003e\r\n              \u003c\/tr\u003e\r\n            \u003c\/thead\u003e\r\n            \u003ctbody id=\"tableBody\"\u003e\u003c\/tbody\u003e\r\n          \u003c\/table\u003e\r\n        `;\r\n\t\t\t\trenderSizeTable('cm');\r\n\t\t\t\tdocument.getElementById(\"unitToggle\").addEventListener(\"change\", (e) =\u003e {\r\n\t\t\t\t\trenderSizeTable(e.target.checked ? 'inches' : 'cm');\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction renderSizeTable(unit) {\r\n\t\t\tconst body = document.getElementById(\"tableBody\");\r\n\t\t\tbody.innerHTML = \"\";\r\n\t\t\tsizeData[unit].forEach(row =\u003e {\r\n\t\t\t\tbody.innerHTML += `\r\n      \u003ctr\u003e\r\n        \u003ctd\u003e${row.size}\u003c\/td\u003e\r\n        \u003ctd\u003e${row.chest}\u003c\/td\u003e\r\n        \u003ctd\u003e${row.waist}\u003c\/td\u003e\r\n        \u003ctd\u003e${row.hip}\u003c\/td\u003e\r\n      \u003c\/tr\u003e`;\r\n\t\t\t});\r\n\t\t}\r\n\t\u003c\/script\u003e\r\n\u003c\/body\u003e\r\n\r\n\u003c\/html\u003e","brand":"ttbici","offers":[{"title":"XS","offer_id":48082528895200,"sku":"B6TC-E02-BK0XSM","price":3280.0,"currency_code":"TWD","in_stock":true},{"title":"S","offer_id":48082528927968,"sku":"B6TC-E02-BK00SM","price":3280.0,"currency_code":"TWD","in_stock":false},{"title":"M","offer_id":48082528960736,"sku":"B6TC-E02-BK00MM","price":3280.0,"currency_code":"TWD","in_stock":false},{"title":"L","offer_id":48082528993504,"sku":"B6TC-E02-BK00LM","price":3280.0,"currency_code":"TWD","in_stock":true},{"title":"XL","offer_id":48082529026272,"sku":"B6TC-E02-BK0XLM","price":3280.0,"currency_code":"TWD","in_stock":true},{"title":"2XL","offer_id":48082529059040,"sku":"B6TC-E02-BK2XLM","price":3280.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/dsc09485_1.jpg?v=1762159706"},{"product_id":"ttbici-e-line-men-s-classic-bib-shorts-dark-brown","title":"E Line Men' Classic Bib Shorts \/ Dark Brown","description":"The ttbici E Line Classic Bib Shorts merge traditional elements with modern innovation, embodying understated luxury through exquisite embroidery detailing.\r\n\u003cbr\u003e\u003cbr\u003e\r\nDesigned for comfort and performance, these bib shorts feature an ergonomic, adaptive fit, ensuring ease of movement and all-day wearability. Crafted from durable, moisture-wicking fabric and equipped with a high-density padded chamois, they deliver exceptional support and comfort for an enhanced riding experience.\u003cbr\u003e\u003cbr\u003e\r\n\r\n\u003c!DOCTYPE html\u003e\r\n\u003chtml lang=\"zh-Hant\"\u003e\r\n\r\n\u003chead\u003e\r\n\t\u003cmeta charset=\"UTF-8\" \/\u003e\r\n\t\u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/\u003e\r\n\t\u003cstyle\u003e\r\n\t\tbody.product-modal-open {\r\n\t\t\toverflow: hidden;\r\n\t\t}\r\n\r\n\t\t.product-modal-overlay {\r\n\t\t\tdisplay: none;\r\n\t\t\tposition: fixed;\r\n\t\t\ttop: 0;\r\n\t\t\tleft: 0;\r\n\t\t\twidth: 100vw;\r\n\t\t\theight: 100vh;\r\n\t\t\tbackground-color: rgba(0, 0, 0, 0.5);\r\n\t\t\tbackdrop-filter: blur(2px);\r\n\t\t\tz-index: 1000;\r\n\t\t\tjustify-content: center;\r\n\t\t\talign-items: center;\r\n\t\t}\r\n\r\n\t\t.product-modal {\r\n\t\t\tbackground: white;\r\n\t\t\tpadding: 20px;\r\n\t\t\t\/* border-radius: 10px; *\/\r\n\t\t\tmax-width: 600px;\r\n\t\t\twidth: 90%;\r\n\t\t\tmax-height: 90vh;\r\n\t\t\toverflow-y: auto;\r\n\t\t\tposition: relative;\r\n\t\t}\r\n\r\n\t\t.product-modal .modal-close {\r\n\t\t\tposition: absolute;\r\n\t\t\ttop: 10px;\r\n\t\t\tright: 12px;\r\n\t\t\tfont-size: 20px;\r\n\t\t\tcursor: pointer;\r\n\t\t}\r\n\r\n\t\t\/* ✅ 統一按鈕樣式 *\/\r\n\t\t.button-group {\r\n\t\t\tdisplay: flex;\r\n\t\t\tgap: 12px;\r\n\t\t\tpadding-top: 20px;\r\n\t\t}\r\n\r\n\t\t.button-group button {\r\n\t\t\tpadding: 0px;\r\n\t\t\tborder: none;\r\n\t\t\tbackground-color: transparent;\r\n\t\t\tcolor: #333;\r\n\t\t\tcursor: pointer;\r\n\t\t\t\/* border-radius: 5px; *\/\r\n\t\t\tfont-size: 15px;\r\n\t\t\tfont-family: 'Microsoft JhengHei';\r\n\t\t\ttext-decoration: underline;\r\n\t\t}\r\n\r\n\t\t.button-group button.active {\r\n\t\t\t\/* background-color: #444; *\/\r\n\t\t}\r\n\r\n\t\tbutton:active {\r\n\t\t\tbox-shadow: none !important;\r\n\t\t\tcolor: #333 !important;\r\n\t\t}\r\n\r\n\t\t.product-modal table {\r\n\t\t\twidth: 100%;\r\n\t\t\tborder-collapse: collapse;\r\n\t\t\tmargin-top: 10px;\r\n\t\t}\r\n\r\n\t\t.product-modal th,\r\n\t\t.product-modal td {\r\n\t\t\tborder-bottom: 1px solid #ddd;\r\n\t\t\ttext-align: center;\r\n\t\t\tpadding: 8px;\r\n\t\t}\r\n\r\n\t\t\/* ✅ 新增的欄寬限制 *\/\r\n\t\t.product-modal table th:first-child,\r\n\t\t.product-modal table td:first-child {\r\n\t\t\twidth: 15%;\r\n\t\t\tmax-width: 15%;\r\n\t\t}\r\n\r\n\t\t.product-modal .toggle-wrapper {\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items: center;\r\n\t\t\tgap: 10px;\r\n\t\t\tmargin: 10px 0 20px;\r\n\t\t}\r\n\r\n\t\t.product-modal .toggle {\r\n\t\t\tposition: relative;\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 50px;\r\n\t\t\theight: 24px;\r\n\t\t}\r\n\r\n\t\t.product-modal .toggle input {\r\n\t\t\topacity: 0;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t}\r\n\r\n\t\t.product-modal .slider {\r\n\t\t\tposition: absolute;\r\n\t\t\tcursor: pointer;\r\n\t\t\tbackground-color: #ccc;\r\n\t\t\tborder-radius: 24px;\r\n\t\t\ttop: 0;\r\n\t\t\tleft: 0;\r\n\t\t\tright: 0;\r\n\t\t\tbottom: 0;\r\n\t\t\ttransition: 0.4s;\r\n\t\t}\r\n\r\n\t\t.product-modal .slider:before {\r\n\t\t\tcontent: \"\";\r\n\t\t\tposition: absolute;\r\n\t\t\theight: 18px;\r\n\t\t\twidth: 18px;\r\n\t\t\tleft: 3px;\r\n\t\t\tbottom: 3px;\r\n\t\t\tbackground-color: white;\r\n\t\t\ttransition: 0.4s;\r\n\t\t\tborder-radius: 50%;\r\n\t\t}\r\n\r\n\t\t.product-modal input:checked+.slider {\r\n\t\t\tbackground-color: #333;\r\n\t\t}\r\n\r\n\t\t.product-modal input:checked+.slider:before {\r\n\t\t\ttransform: translateX(26px);\r\n\t\t}\r\n\r\n\t\t.product-modal .modalInnerContent h3 {\r\n\t\t\tpadding: 20px 0;\r\n\r\n\t\t}\r\n\t\u003c\/style\u003e\r\n\u003c\/head\u003e\r\n\r\n\u003cbody\u003e\r\n\r\n\t\u003c!-- 外部觸發按鈕 --\u003e\r\n\t\u003cdiv class=\"button-group\"\u003e\r\n\t\t\u003c!-- \u003cbutton onclick=\"openModal('shipping')\"\u003e運送詳情\u003c\/button\u003e --\u003e\r\n\t\t\u003cbutton onclick=\"openModal('size')\"\u003eSIZE GUIDE\u003c\/button\u003e\r\n\t\t\u003cbutton onclick=\"openModal('care')\"\u003eCARE\u003c\/button\u003e\r\n\t\u003c\/div\u003e\r\n\r\n\t\u003c!-- Modal --\u003e\r\n\t\u003cdiv class=\"product-modal-overlay\" id=\"modalOverlay\"\u003e\r\n\t\t\u003cdiv class=\"product-modal\" id=\"modalContent\"\u003e\r\n\t\t\t\u003cdiv class=\"modal-close\" onclick=\"closeModal()\"\u003e×\u003c\/div\u003e\r\n\r\n\t\t\t\u003c!-- 內部選單 --\u003e\r\n\t\t\t\u003cdiv class=\"button-group\" id=\"infoTabs\"\u003e\r\n\t\t\t\t\u003c!-- \u003cbutton id=\"tab-shipping\" onclick=\"switchTab('shipping')\"\u003e運送詳情\u003c\/button\u003e --\u003e\r\n\t\t\t\t\u003cbutton id=\"tab-size\" onclick=\"switchTab('size')\"\u003eSIZE GUIDE\u003c\/button\u003e\r\n\t\t\t\t\u003cbutton id=\"tab-care\" onclick=\"switchTab('care')\"\u003eCARE\u003c\/button\u003e\r\n\t\t\t\u003c\/div\u003e\r\n\r\n\t\t\t\u003c!-- 內容區 --\u003e\r\n\t\t\t\u003cdiv id=\"modalInnerContent\"\u003e\u003c\/div\u003e\r\n\t\t\u003c\/div\u003e\r\n\t\u003c\/div\u003e\r\n\r\n\t\u003cscript\u003e\r\n\t\tconst modalOverlay = document.getElementById(\"modalOverlay\");\r\n\t\tconst modalInner = document.getElementById(\"modalInnerContent\");\r\n\r\n\t\tconst sizeData = {\r\n\t\t\tcm: [\r\n\t\t\t\t{ size: 'XS', chest: '80–88', waist: '68–76', hip: '82–90' },\r\n\t\t\t\t{ size: 'S', chest: '85–93', waist: '73–81', hip: '87–95' },\r\n\t\t\t\t{ size: 'M', chest: '89–97', waist: '77–85', hip: '91–99' },\r\n\t\t\t\t{ size: 'L', chest: '93–101', waist: '81–89', hip: '95–103' },\r\n\t\t\t\t{ size: 'XL', chest: '97–105', waist: '85–93', hip: '99–107' },\r\n\t\t\t\t{ size: '2XL', chest: '101–109', waist: '89–97', hip: '103–111' }\r\n\t\t\t],\r\n\t\t\tinches: [\r\n\t\t\t\t{ size: 'XS', chest: '32–35', waist: '27–30', hip: '32–35' },\r\n\t\t\t\t{ size: 'S', chest: '34–37', waist: '29–32', hip: '34–37' },\r\n\t\t\t\t{ size: 'M', chest: '35–38', waist: '30–33', hip: '36–39' },\r\n\t\t\t\t{ size: 'L', chest: '37–40', waist: '32–35', hip: '37–40' },\r\n\t\t\t\t{ size: 'XL', chest: '38–41', waist: '34–37', hip: '39–42' },\r\n\t\t\t\t{ size: '2XL', chest: '40–43', waist: '35–38', hip: '41–44' }\r\n\t\t\t]\r\n\t\t};\r\n\r\n\t\tfunction openModal(defaultTab) {\r\n\t\t\tdocument.body.classList.add(\"product-modal-open\");\r\n\t\t\tmodalOverlay.style.display = \"flex\";\r\n\t\t\tswitchTab(defaultTab);\r\n\t\t}\r\n\r\n\t\tfunction closeModal() {\r\n\t\t\tmodalOverlay.style.display = \"none\";\r\n\t\t\tmodalInner.innerHTML = \"\";\r\n\t\t\tdocument.body.classList.remove(\"product-modal-open\");\r\n\t\t}\r\n\r\n\t\tfunction switchTab(tab) {\r\n\t\t\t['shipping', 'care', 'size'].forEach(id =\u003e {\r\n\t\t\t\tconst btn = document.getElementById(`tab-${id}`);\r\n\t\t\t\tif (btn) btn.classList.remove(\"active\");\r\n\t\t\t});\r\n\r\n\t\t\tconst activeBtn = document.getElementById(`tab-${tab}`);\r\n\t\t\tif (activeBtn) activeBtn.classList.add(\"active\");\r\n\r\n\t\t\tif (tab === 'shipping') {\r\n\t\t\t\tmodalInner.innerHTML = `\u003ch3\u003e運送詳情\u003c\/h3\u003e\u003cp\u003e這裡可以放運送方式、時間、費用等資訊。\u003c\/p\u003e`;\r\n\t\t\t} else if (tab === 'care') {\r\n\t\t\t\tmodalInner.innerHTML = `\r\n\t\t\u003ch3\u003eCARE\u003c\/h3\u003e\r\n\t\t\u003col\u003e\r\n\t\t\t\u003cli\u003eWhen wearing cycling jerseys, it is strongly recommended to wear and wash them based on the colors to reduce the risk of clothes bleeding colors onto each other.\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eAfter use, it is advisable to clean them promptly to prevent bacteria growth, odor formation, and the development of sweat stains, or even yellowing on the clothing.\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eWhen cleaning, remember to zip up all zippers to prevent fabric damage during the wash. Soak the clothing in \"cold water with neutral detergent\" for 5 - 10 minutes, then agitate it gently.\u003cbr\u003e\r\n\t\t\t\u003cstrong\u003e※ Do not use cold wash, fabric softener, or bleach, as these detergents can damage the fabric.\u003c\/strong\u003e\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eHand washing is preferred, but if you choose to use a washing machine, make sure to zip up all zippers, place the clothing inside a laundry bag, and wash it on the \" delicate wash mode\"\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eAfter washing, avoid \"wringing out\" the clothing, and refrain from using a dryer, as this may damage the fabric. Instead, wrap the clothing in a towel to remove excess moisture and hang it to air dry in a well-ventilated, cool place.\u003c\/li\u003e\r\n\t\t\u003c\/ol\u003e\r\n\t\t\u003cp\u003e\u003cstrong\u003e※ Due to variations in manufacturing processes and dyeing methods, some fading may occur when wearing or washing cycling clothing, especially for brighter colors. We strongly recommend you to wear and wash them with similar colors.\u003c\/strong\u003e\u003c\/p\u003e\r\n\t`;\r\n\r\n\t\t\t} else if (tab === 'size') {\r\n\t\t\t\tmodalInner.innerHTML = `\r\n          \u003ch3\u003eSIZE GUIDE\u003c\/h3\u003e\r\n          \u003cdiv class=\"toggle-wrapper\"\u003e\r\n            \u003cspan\u003eCM\u003c\/span\u003e\r\n            \u003clabel class=\"toggle\"\u003e\r\n              \u003cinput type=\"checkbox\" id=\"unitToggle\"\u003e\r\n              \u003cspan class=\"slider\"\u003e\u003c\/span\u003e\r\n            \u003c\/label\u003e\r\n            \u003cspan\u003eINCHES\u003c\/span\u003e\r\n          \u003c\/div\u003e\r\n          \u003ctable\u003e\r\n            \u003cthead\u003e\r\n              \u003ctr\u003e\r\n                \u003cth\u003eSIZE\u003c\/th\u003e\r\n                \u003cth id=\"chestHeader\"\u003eCHEST\u003c\/th\u003e\r\n                \u003cth id=\"waistHeader\"\u003eWAIST\u003c\/th\u003e\r\n                \u003cth id=\"hipHeader\"\u003eHIP\u003c\/th\u003e\r\n              \u003c\/tr\u003e\r\n            \u003c\/thead\u003e\r\n            \u003ctbody id=\"tableBody\"\u003e\u003c\/tbody\u003e\r\n          \u003c\/table\u003e\r\n        `;\r\n\t\t\t\trenderSizeTable('cm');\r\n\t\t\t\tdocument.getElementById(\"unitToggle\").addEventListener(\"change\", (e) =\u003e {\r\n\t\t\t\t\trenderSizeTable(e.target.checked ? 'inches' : 'cm');\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction renderSizeTable(unit) {\r\n\t\t\tconst body = document.getElementById(\"tableBody\");\r\n\t\t\tbody.innerHTML = \"\";\r\n\t\t\tsizeData[unit].forEach(row =\u003e {\r\n\t\t\t\tbody.innerHTML += `\r\n      \u003ctr\u003e\r\n        \u003ctd\u003e${row.size}\u003c\/td\u003e\r\n        \u003ctd\u003e${row.chest}\u003c\/td\u003e\r\n        \u003ctd\u003e${row.waist}\u003c\/td\u003e\r\n        \u003ctd\u003e${row.hip}\u003c\/td\u003e\r\n      \u003c\/tr\u003e`;\r\n\t\t\t});\r\n\t\t}\r\n\t\u003c\/script\u003e\r\n\u003c\/body\u003e\r\n\r\n\u003c\/html\u003e","brand":"ttbici","offers":[{"title":"XS","offer_id":48082529124576,"sku":"B6TC-E02-BR0XSM","price":3280.0,"currency_code":"TWD","in_stock":true},{"title":"S","offer_id":48082529157344,"sku":"B6TC-E02-BR00SM","price":3280.0,"currency_code":"TWD","in_stock":true},{"title":"M","offer_id":48082529190112,"sku":"B6TC-E02-BR00MM","price":3280.0,"currency_code":"TWD","in_stock":true},{"title":"L","offer_id":48082529222880,"sku":"B6TC-E02-BR00LM","price":3280.0,"currency_code":"TWD","in_stock":true},{"title":"XL","offer_id":48082529255648,"sku":"B6TC-E02-BR0XLM","price":3280.0,"currency_code":"TWD","in_stock":true},{"title":"2XL","offer_id":48082529288416,"sku":"B6TC-E02-BR2XLM","price":3280.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/dsc09534-light_brown_1.jpg?v=1762159715"},{"product_id":"ttbici-e-line-men-s-classic-bib-shorts-dark-grey","title":"E Line Men' Classic Bib Shorts \/ Grey","description":"The ttbici E Line Classic Bib Shorts merge traditional elements with modern innovation, embodying understated luxury through exquisite embroidery detailing.\r\n\u003cbr\u003e\u003cbr\u003e\r\nDesigned for comfort and performance, these bib shorts feature an ergonomic, adaptive fit, ensuring ease of movement and all-day wearability. Crafted from durable, moisture-wicking fabric and equipped with a high-density padded chamois, they deliver exceptional support and comfort for an enhanced riding experience.\u003cbr\u003e\u003cbr\u003e\r\n\r\n\u003c!DOCTYPE html\u003e\r\n\u003chtml lang=\"zh-Hant\"\u003e\r\n\r\n\u003chead\u003e\r\n\t\u003cmeta charset=\"UTF-8\" \/\u003e\r\n\t\u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/\u003e\r\n\t\u003cstyle\u003e\r\n\t\tbody.product-modal-open {\r\n\t\t\toverflow: hidden;\r\n\t\t}\r\n\r\n\t\t.product-modal-overlay {\r\n\t\t\tdisplay: none;\r\n\t\t\tposition: fixed;\r\n\t\t\ttop: 0;\r\n\t\t\tleft: 0;\r\n\t\t\twidth: 100vw;\r\n\t\t\theight: 100vh;\r\n\t\t\tbackground-color: rgba(0, 0, 0, 0.5);\r\n\t\t\tbackdrop-filter: blur(2px);\r\n\t\t\tz-index: 1000;\r\n\t\t\tjustify-content: center;\r\n\t\t\talign-items: center;\r\n\t\t}\r\n\r\n\t\t.product-modal {\r\n\t\t\tbackground: white;\r\n\t\t\tpadding: 20px;\r\n\t\t\t\/* border-radius: 10px; *\/\r\n\t\t\tmax-width: 600px;\r\n\t\t\twidth: 90%;\r\n\t\t\tmax-height: 90vh;\r\n\t\t\toverflow-y: auto;\r\n\t\t\tposition: relative;\r\n\t\t}\r\n\r\n\t\t.product-modal .modal-close {\r\n\t\t\tposition: absolute;\r\n\t\t\ttop: 10px;\r\n\t\t\tright: 12px;\r\n\t\t\tfont-size: 20px;\r\n\t\t\tcursor: pointer;\r\n\t\t}\r\n\r\n\t\t\/* ✅ 統一按鈕樣式 *\/\r\n\t\t.button-group {\r\n\t\t\tdisplay: flex;\r\n\t\t\tgap: 12px;\r\n\t\t\tpadding-top: 20px;\r\n\t\t}\r\n\r\n\t\t.button-group button {\r\n\t\t\tpadding: 0px;\r\n\t\t\tborder: none;\r\n\t\t\tbackground-color: transparent;\r\n\t\t\tcolor: #333;\r\n\t\t\tcursor: pointer;\r\n\t\t\t\/* border-radius: 5px; *\/\r\n\t\t\tfont-size: 15px;\r\n\t\t\tfont-family: 'Microsoft JhengHei';\r\n\t\t\ttext-decoration: underline;\r\n\t\t}\r\n\r\n\t\t.button-group button.active {\r\n\t\t\t\/* background-color: #444; *\/\r\n\t\t}\r\n\r\n\t\tbutton:active {\r\n\t\t\tbox-shadow: none !important;\r\n\t\t\tcolor: #333 !important;\r\n\t\t}\r\n\r\n\t\t.product-modal table {\r\n\t\t\twidth: 100%;\r\n\t\t\tborder-collapse: collapse;\r\n\t\t\tmargin-top: 10px;\r\n\t\t}\r\n\r\n\t\t.product-modal th,\r\n\t\t.product-modal td {\r\n\t\t\tborder-bottom: 1px solid #ddd;\r\n\t\t\ttext-align: center;\r\n\t\t\tpadding: 8px;\r\n\t\t}\r\n\r\n\t\t\/* ✅ 新增的欄寬限制 *\/\r\n\t\t.product-modal table th:first-child,\r\n\t\t.product-modal table td:first-child {\r\n\t\t\twidth: 15%;\r\n\t\t\tmax-width: 15%;\r\n\t\t}\r\n\r\n\t\t.product-modal .toggle-wrapper {\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items: center;\r\n\t\t\tgap: 10px;\r\n\t\t\tmargin: 10px 0 20px;\r\n\t\t}\r\n\r\n\t\t.product-modal .toggle {\r\n\t\t\tposition: relative;\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 50px;\r\n\t\t\theight: 24px;\r\n\t\t}\r\n\r\n\t\t.product-modal .toggle input {\r\n\t\t\topacity: 0;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t}\r\n\r\n\t\t.product-modal .slider {\r\n\t\t\tposition: absolute;\r\n\t\t\tcursor: pointer;\r\n\t\t\tbackground-color: #ccc;\r\n\t\t\tborder-radius: 24px;\r\n\t\t\ttop: 0;\r\n\t\t\tleft: 0;\r\n\t\t\tright: 0;\r\n\t\t\tbottom: 0;\r\n\t\t\ttransition: 0.4s;\r\n\t\t}\r\n\r\n\t\t.product-modal .slider:before {\r\n\t\t\tcontent: \"\";\r\n\t\t\tposition: absolute;\r\n\t\t\theight: 18px;\r\n\t\t\twidth: 18px;\r\n\t\t\tleft: 3px;\r\n\t\t\tbottom: 3px;\r\n\t\t\tbackground-color: white;\r\n\t\t\ttransition: 0.4s;\r\n\t\t\tborder-radius: 50%;\r\n\t\t}\r\n\r\n\t\t.product-modal input:checked+.slider {\r\n\t\t\tbackground-color: #333;\r\n\t\t}\r\n\r\n\t\t.product-modal input:checked+.slider:before {\r\n\t\t\ttransform: translateX(26px);\r\n\t\t}\r\n\r\n\t\t.product-modal .modalInnerContent h3 {\r\n\t\t\tpadding: 20px 0;\r\n\r\n\t\t}\r\n\t\u003c\/style\u003e\r\n\u003c\/head\u003e\r\n\r\n\u003cbody\u003e\r\n\r\n\t\u003c!-- 外部觸發按鈕 --\u003e\r\n\t\u003cdiv class=\"button-group\"\u003e\r\n\t\t\u003c!-- \u003cbutton onclick=\"openModal('shipping')\"\u003e運送詳情\u003c\/button\u003e --\u003e\r\n\t\t\u003cbutton onclick=\"openModal('size')\"\u003eSIZE GUIDE\u003c\/button\u003e\r\n\t\t\u003cbutton onclick=\"openModal('care')\"\u003eCARE\u003c\/button\u003e\r\n\t\u003c\/div\u003e\r\n\r\n\t\u003c!-- Modal --\u003e\r\n\t\u003cdiv class=\"product-modal-overlay\" id=\"modalOverlay\"\u003e\r\n\t\t\u003cdiv class=\"product-modal\" id=\"modalContent\"\u003e\r\n\t\t\t\u003cdiv class=\"modal-close\" onclick=\"closeModal()\"\u003e×\u003c\/div\u003e\r\n\r\n\t\t\t\u003c!-- 內部選單 --\u003e\r\n\t\t\t\u003cdiv class=\"button-group\" id=\"infoTabs\"\u003e\r\n\t\t\t\t\u003c!-- \u003cbutton id=\"tab-shipping\" onclick=\"switchTab('shipping')\"\u003e運送詳情\u003c\/button\u003e --\u003e\r\n\t\t\t\t\u003cbutton id=\"tab-size\" onclick=\"switchTab('size')\"\u003eSIZE GUIDE\u003c\/button\u003e\r\n\t\t\t\t\u003cbutton id=\"tab-care\" onclick=\"switchTab('care')\"\u003eCARE\u003c\/button\u003e\r\n\t\t\t\u003c\/div\u003e\r\n\r\n\t\t\t\u003c!-- 內容區 --\u003e\r\n\t\t\t\u003cdiv id=\"modalInnerContent\"\u003e\u003c\/div\u003e\r\n\t\t\u003c\/div\u003e\r\n\t\u003c\/div\u003e\r\n\r\n\t\u003cscript\u003e\r\n\t\tconst modalOverlay = document.getElementById(\"modalOverlay\");\r\n\t\tconst modalInner = document.getElementById(\"modalInnerContent\");\r\n\r\n\t\tconst sizeData = {\r\n\t\t\tcm: [\r\n\t\t\t\t{ size: 'XS', chest: '80–88', waist: '68–76', hip: '82–90' },\r\n\t\t\t\t{ size: 'S', chest: '85–93', waist: '73–81', hip: '87–95' },\r\n\t\t\t\t{ size: 'M', chest: '89–97', waist: '77–85', hip: '91–99' },\r\n\t\t\t\t{ size: 'L', chest: '93–101', waist: '81–89', hip: '95–103' },\r\n\t\t\t\t{ size: 'XL', chest: '97–105', waist: '85–93', hip: '99–107' },\r\n\t\t\t\t{ size: '2XL', chest: '101–109', waist: '89–97', hip: '103–111' }\r\n\t\t\t],\r\n\t\t\tinches: [\r\n\t\t\t\t{ size: 'XS', chest: '32–35', waist: '27–30', hip: '32–35' },\r\n\t\t\t\t{ size: 'S', chest: '34–37', waist: '29–32', hip: '34–37' },\r\n\t\t\t\t{ size: 'M', chest: '35–38', waist: '30–33', hip: '36–39' },\r\n\t\t\t\t{ size: 'L', chest: '37–40', waist: '32–35', hip: '37–40' },\r\n\t\t\t\t{ size: 'XL', chest: '38–41', waist: '34–37', hip: '39–42' },\r\n\t\t\t\t{ size: '2XL', chest: '40–43', waist: '35–38', hip: '41–44' }\r\n\t\t\t]\r\n\t\t};\r\n\r\n\t\tfunction openModal(defaultTab) {\r\n\t\t\tdocument.body.classList.add(\"product-modal-open\");\r\n\t\t\tmodalOverlay.style.display = \"flex\";\r\n\t\t\tswitchTab(defaultTab);\r\n\t\t}\r\n\r\n\t\tfunction closeModal() {\r\n\t\t\tmodalOverlay.style.display = \"none\";\r\n\t\t\tmodalInner.innerHTML = \"\";\r\n\t\t\tdocument.body.classList.remove(\"product-modal-open\");\r\n\t\t}\r\n\r\n\t\tfunction switchTab(tab) {\r\n\t\t\t['shipping', 'care', 'size'].forEach(id =\u003e {\r\n\t\t\t\tconst btn = document.getElementById(`tab-${id}`);\r\n\t\t\t\tif (btn) btn.classList.remove(\"active\");\r\n\t\t\t});\r\n\r\n\t\t\tconst activeBtn = document.getElementById(`tab-${tab}`);\r\n\t\t\tif (activeBtn) activeBtn.classList.add(\"active\");\r\n\r\n\t\t\tif (tab === 'shipping') {\r\n\t\t\t\tmodalInner.innerHTML = `\u003ch3\u003e運送詳情\u003c\/h3\u003e\u003cp\u003e這裡可以放運送方式、時間、費用等資訊。\u003c\/p\u003e`;\r\n\t\t\t} else if (tab === 'care') {\r\n\t\t\t\tmodalInner.innerHTML = `\r\n\t\t\u003ch3\u003eCARE\u003c\/h3\u003e\r\n\t\t\u003col\u003e\r\n\t\t\t\u003cli\u003eWhen wearing cycling jerseys, it is strongly recommended to wear and wash them based on the colors to reduce the risk of clothes bleeding colors onto each other.\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eAfter use, it is advisable to clean them promptly to prevent bacteria growth, odor formation, and the development of sweat stains, or even yellowing on the clothing.\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eWhen cleaning, remember to zip up all zippers to prevent fabric damage during the wash. Soak the clothing in \"cold water with neutral detergent\" for 5 - 10 minutes, then agitate it gently.\u003cbr\u003e\r\n\t\t\t\u003cstrong\u003e※ Do not use cold wash, fabric softener, or bleach, as these detergents can damage the fabric.\u003c\/strong\u003e\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eHand washing is preferred, but if you choose to use a washing machine, make sure to zip up all zippers, place the clothing inside a laundry bag, and wash it on the \" delicate wash mode\"\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eAfter washing, avoid \"wringing out\" the clothing, and refrain from using a dryer, as this may damage the fabric. Instead, wrap the clothing in a towel to remove excess moisture and hang it to air dry in a well-ventilated, cool place.\u003c\/li\u003e\r\n\t\t\u003c\/ol\u003e\r\n\t\t\u003cp\u003e\u003cstrong\u003e※ Due to variations in manufacturing processes and dyeing methods, some fading may occur when wearing or washing cycling clothing, especially for brighter colors. We strongly recommend you to wear and wash them with similar colors.\u003c\/strong\u003e\u003c\/p\u003e\r\n\t`;\r\n\r\n\t\t\t} else if (tab === 'size') {\r\n\t\t\t\tmodalInner.innerHTML = `\r\n          \u003ch3\u003eSIZE GUIDE\u003c\/h3\u003e\r\n          \u003cdiv class=\"toggle-wrapper\"\u003e\r\n            \u003cspan\u003eCM\u003c\/span\u003e\r\n            \u003clabel class=\"toggle\"\u003e\r\n              \u003cinput type=\"checkbox\" id=\"unitToggle\"\u003e\r\n              \u003cspan class=\"slider\"\u003e\u003c\/span\u003e\r\n            \u003c\/label\u003e\r\n            \u003cspan\u003eINCHES\u003c\/span\u003e\r\n          \u003c\/div\u003e\r\n          \u003ctable\u003e\r\n            \u003cthead\u003e\r\n              \u003ctr\u003e\r\n                \u003cth\u003eSIZE\u003c\/th\u003e\r\n                \u003cth id=\"chestHeader\"\u003eCHEST\u003c\/th\u003e\r\n                \u003cth id=\"waistHeader\"\u003eWAIST\u003c\/th\u003e\r\n                \u003cth id=\"hipHeader\"\u003eHIP\u003c\/th\u003e\r\n              \u003c\/tr\u003e\r\n            \u003c\/thead\u003e\r\n            \u003ctbody id=\"tableBody\"\u003e\u003c\/tbody\u003e\r\n          \u003c\/table\u003e\r\n        `;\r\n\t\t\t\trenderSizeTable('cm');\r\n\t\t\t\tdocument.getElementById(\"unitToggle\").addEventListener(\"change\", (e) =\u003e {\r\n\t\t\t\t\trenderSizeTable(e.target.checked ? 'inches' : 'cm');\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction renderSizeTable(unit) {\r\n\t\t\tconst body = document.getElementById(\"tableBody\");\r\n\t\t\tbody.innerHTML = \"\";\r\n\t\t\tsizeData[unit].forEach(row =\u003e {\r\n\t\t\t\tbody.innerHTML += `\r\n      \u003ctr\u003e\r\n        \u003ctd\u003e${row.size}\u003c\/td\u003e\r\n        \u003ctd\u003e${row.chest}\u003c\/td\u003e\r\n        \u003ctd\u003e${row.waist}\u003c\/td\u003e\r\n        \u003ctd\u003e${row.hip}\u003c\/td\u003e\r\n      \u003c\/tr\u003e`;\r\n\t\t\t});\r\n\t\t}\r\n\t\u003c\/script\u003e\r\n\u003c\/body\u003e\r\n\r\n\u003c\/html\u003e","brand":"ttbici","offers":[{"title":"XS","offer_id":48082529321184,"sku":"B6TC-E02-GY0XSM","price":3280.0,"currency_code":"TWD","in_stock":true},{"title":"S","offer_id":48082529353952,"sku":"B6TC-E02-GY00SM","price":3280.0,"currency_code":"TWD","in_stock":true},{"title":"M","offer_id":48082529386720,"sku":"B6TC-E02-GY00MM","price":3280.0,"currency_code":"TWD","in_stock":true},{"title":"L","offer_id":48082529419488,"sku":"B6TC-E02-GY00LM","price":3280.0,"currency_code":"TWD","in_stock":true},{"title":"XL","offer_id":48082529452256,"sku":"B6TC-E02-GY0XLM","price":3280.0,"currency_code":"TWD","in_stock":true},{"title":"2XL","offer_id":48082529485024,"sku":"B6TC-E02-GY2XLM","price":3280.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/dsc09534_6.jpg?v=1762159725"},{"product_id":"ttbici-e-line-men-s-classic-jersey-black","title":"E Line Men' Classic Jersey \/ Black","description":"The ttbici E Line Classic Jersey seamlessly blends traditional craftsmanship with modern design, embodying understated luxury through exquisite embroidery detailing.\r\n\u003cbr\u003e\u003cbr\u003e\r\nDesigned for comfort and versatility, its relaxed fit adapts effortlessly to various body types, ensuring a refined yet effortless riding experience. Crafted from lightweight, highly breathable fabric, it offers a soft, premium feel, making it ideal for warm-weather rides. The result—an unparalleled balance of performance and elegance for every cyclist.\u003cbr\u003e\u003cbr\u003e\r\n\r\n\u003c!DOCTYPE html\u003e\r\n\u003chtml lang=\"zh-Hant\"\u003e\r\n\r\n\u003chead\u003e\r\n\t\u003cmeta charset=\"UTF-8\" \/\u003e\r\n\t\u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/\u003e\r\n\t\u003cstyle\u003e\r\n\t\tbody.product-modal-open {\r\n\t\t\toverflow: hidden;\r\n\t\t}\r\n\r\n\t\t.product-modal-overlay {\r\n\t\t\tdisplay: none;\r\n\t\t\tposition: fixed;\r\n\t\t\ttop: 0;\r\n\t\t\tleft: 0;\r\n\t\t\twidth: 100vw;\r\n\t\t\theight: 100vh;\r\n\t\t\tbackground-color: rgba(0, 0, 0, 0.5);\r\n\t\t\tbackdrop-filter: blur(2px);\r\n\t\t\tz-index: 1000;\r\n\t\t\tjustify-content: center;\r\n\t\t\talign-items: center;\r\n\t\t}\r\n\r\n\t\t.product-modal {\r\n\t\t\tbackground: white;\r\n\t\t\tpadding: 20px;\r\n\t\t\t\/* border-radius: 10px; *\/\r\n\t\t\tmax-width: 600px;\r\n\t\t\twidth: 90%;\r\n\t\t\tmax-height: 90vh;\r\n\t\t\toverflow-y: auto;\r\n\t\t\tposition: relative;\r\n\t\t}\r\n\r\n\t\t.product-modal .modal-close {\r\n\t\t\tposition: absolute;\r\n\t\t\ttop: 10px;\r\n\t\t\tright: 12px;\r\n\t\t\tfont-size: 20px;\r\n\t\t\tcursor: pointer;\r\n\t\t}\r\n\r\n\t\t\/* ✅ 統一按鈕樣式 *\/\r\n\t\t.button-group {\r\n\t\t\tdisplay: flex;\r\n\t\t\tgap: 12px;\r\n\t\t\tpadding-top: 20px;\r\n\t\t}\r\n\r\n\t\t.button-group button {\r\n\t\t\tpadding: 0px;\r\n\t\t\tborder: none;\r\n\t\t\tbackground-color: transparent;\r\n\t\t\tcolor: #333;\r\n\t\t\tcursor: pointer;\r\n\t\t\t\/* border-radius: 5px; *\/\r\n\t\t\tfont-size: 15px;\r\n\t\t\tfont-family: 'Microsoft JhengHei';\r\n\t\t\ttext-decoration: underline;\r\n\t\t}\r\n\r\n\t\t.button-group button.active {\r\n\t\t\t\/* background-color: #444; *\/\r\n\t\t}\r\n\r\n\t\tbutton:active {\r\n\t\t\tbox-shadow: none !important;\r\n\t\t\tcolor: #333 !important;\r\n\t\t}\r\n\r\n\t\t.product-modal table {\r\n\t\t\twidth: 100%;\r\n\t\t\tborder-collapse: collapse;\r\n\t\t\tmargin-top: 10px;\r\n\t\t}\r\n\r\n\t\t.product-modal th,\r\n\t\t.product-modal td {\r\n\t\t\tborder-bottom: 1px solid #ddd;\r\n\t\t\ttext-align: center;\r\n\t\t\tpadding: 8px;\r\n\t\t}\r\n\r\n\t\t\/* ✅ 新增的欄寬限制 *\/\r\n\t\t.product-modal table th:first-child,\r\n\t\t.product-modal table td:first-child {\r\n\t\t\twidth: 15%;\r\n\t\t\tmax-width: 15%;\r\n\t\t}\r\n\r\n\t\t.product-modal .toggle-wrapper {\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items: center;\r\n\t\t\tgap: 10px;\r\n\t\t\tmargin: 10px 0 20px;\r\n\t\t}\r\n\r\n\t\t.product-modal .toggle {\r\n\t\t\tposition: relative;\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 50px;\r\n\t\t\theight: 24px;\r\n\t\t}\r\n\r\n\t\t.product-modal .toggle input {\r\n\t\t\topacity: 0;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t}\r\n\r\n\t\t.product-modal .slider {\r\n\t\t\tposition: absolute;\r\n\t\t\tcursor: pointer;\r\n\t\t\tbackground-color: #ccc;\r\n\t\t\tborder-radius: 24px;\r\n\t\t\ttop: 0;\r\n\t\t\tleft: 0;\r\n\t\t\tright: 0;\r\n\t\t\tbottom: 0;\r\n\t\t\ttransition: 0.4s;\r\n\t\t}\r\n\r\n\t\t.product-modal .slider:before {\r\n\t\t\tcontent: \"\";\r\n\t\t\tposition: absolute;\r\n\t\t\theight: 18px;\r\n\t\t\twidth: 18px;\r\n\t\t\tleft: 3px;\r\n\t\t\tbottom: 3px;\r\n\t\t\tbackground-color: white;\r\n\t\t\ttransition: 0.4s;\r\n\t\t\tborder-radius: 50%;\r\n\t\t}\r\n\r\n\t\t.product-modal input:checked+.slider {\r\n\t\t\tbackground-color: #333;\r\n\t\t}\r\n\r\n\t\t.product-modal input:checked+.slider:before {\r\n\t\t\ttransform: translateX(26px);\r\n\t\t}\r\n\r\n\t\t.product-modal .modalInnerContent h3 {\r\n\t\t\tpadding: 20px 0;\r\n\r\n\t\t}\r\n\t\u003c\/style\u003e\r\n\u003c\/head\u003e\r\n\r\n\u003cbody\u003e\r\n\r\n\t\u003c!-- 外部觸發按鈕 --\u003e\r\n\t\u003cdiv class=\"button-group\"\u003e\r\n\t\t\u003c!-- \u003cbutton onclick=\"openModal('shipping')\"\u003e運送詳情\u003c\/button\u003e --\u003e\r\n\t\t\u003cbutton onclick=\"openModal('size')\"\u003eSIZE GUIDE\u003c\/button\u003e\r\n\t\t\u003cbutton onclick=\"openModal('care')\"\u003eCARE\u003c\/button\u003e\r\n\t\u003c\/div\u003e\r\n\r\n\t\u003c!-- Modal --\u003e\r\n\t\u003cdiv class=\"product-modal-overlay\" id=\"modalOverlay\"\u003e\r\n\t\t\u003cdiv class=\"product-modal\" id=\"modalContent\"\u003e\r\n\t\t\t\u003cdiv class=\"modal-close\" onclick=\"closeModal()\"\u003e×\u003c\/div\u003e\r\n\r\n\t\t\t\u003c!-- 內部選單 --\u003e\r\n\t\t\t\u003cdiv class=\"button-group\" id=\"infoTabs\"\u003e\r\n\t\t\t\t\u003c!-- \u003cbutton id=\"tab-shipping\" onclick=\"switchTab('shipping')\"\u003e運送詳情\u003c\/button\u003e --\u003e\r\n\t\t\t\t\u003cbutton id=\"tab-size\" onclick=\"switchTab('size')\"\u003eSIZE GUIDE\u003c\/button\u003e\r\n\t\t\t\t\u003cbutton id=\"tab-care\" onclick=\"switchTab('care')\"\u003eCARE\u003c\/button\u003e\r\n\t\t\t\u003c\/div\u003e\r\n\r\n\t\t\t\u003c!-- 內容區 --\u003e\r\n\t\t\t\u003cdiv id=\"modalInnerContent\"\u003e\u003c\/div\u003e\r\n\t\t\u003c\/div\u003e\r\n\t\u003c\/div\u003e\r\n\r\n\t\u003cscript\u003e\r\n\t\tconst modalOverlay = document.getElementById(\"modalOverlay\");\r\n\t\tconst modalInner = document.getElementById(\"modalInnerContent\");\r\n\r\n\t\tconst sizeData = {\r\n\t\t\tcm: [\r\n\t\t\t\t{ size: 'XS', chest: '80–88', waist: '68–76', hip: '82–90' },\r\n\t\t\t\t{ size: 'S', chest: '85–93', waist: '73–81', hip: '87–95' },\r\n\t\t\t\t{ size: 'M', chest: '89–97', waist: '77–85', hip: '91–99' },\r\n\t\t\t\t{ size: 'L', chest: '93–101', waist: '81–89', hip: '95–103' },\r\n\t\t\t\t{ size: 'XL', chest: '97–105', waist: '85–93', hip: '99–107' },\r\n\t\t\t\t{ size: '2XL', chest: '101–109', waist: '89–97', hip: '103–111' }\r\n\t\t\t],\r\n\t\t\tinches: [\r\n\t\t\t\t{ size: 'XS', chest: '32–35', waist: '27–30', hip: '32–35' },\r\n\t\t\t\t{ size: 'S', chest: '34–37', waist: '29–32', hip: '34–37' },\r\n\t\t\t\t{ size: 'M', chest: '35–38', waist: '30–33', hip: '36–39' },\r\n\t\t\t\t{ size: 'L', chest: '37–40', waist: '32–35', hip: '37–40' },\r\n\t\t\t\t{ size: 'XL', chest: '38–41', waist: '34–37', hip: '39–42' },\r\n\t\t\t\t{ size: '2XL', chest: '40–43', waist: '35–38', hip: '41–44' }\r\n\t\t\t]\r\n\t\t};\r\n\r\n\t\tfunction openModal(defaultTab) {\r\n\t\t\tdocument.body.classList.add(\"product-modal-open\");\r\n\t\t\tmodalOverlay.style.display = \"flex\";\r\n\t\t\tswitchTab(defaultTab);\r\n\t\t}\r\n\r\n\t\tfunction closeModal() {\r\n\t\t\tmodalOverlay.style.display = \"none\";\r\n\t\t\tmodalInner.innerHTML = \"\";\r\n\t\t\tdocument.body.classList.remove(\"product-modal-open\");\r\n\t\t}\r\n\r\n\t\tfunction switchTab(tab) {\r\n\t\t\t['shipping', 'care', 'size'].forEach(id =\u003e {\r\n\t\t\t\tconst btn = document.getElementById(`tab-${id}`);\r\n\t\t\t\tif (btn) btn.classList.remove(\"active\");\r\n\t\t\t});\r\n\r\n\t\t\tconst activeBtn = document.getElementById(`tab-${tab}`);\r\n\t\t\tif (activeBtn) activeBtn.classList.add(\"active\");\r\n\r\n\t\t\tif (tab === 'shipping') {\r\n\t\t\t\tmodalInner.innerHTML = `\u003ch3\u003e運送詳情\u003c\/h3\u003e\u003cp\u003e這裡可以放運送方式、時間、費用等資訊。\u003c\/p\u003e`;\r\n\t\t\t} else if (tab === 'care') {\r\n\t\t\t\tmodalInner.innerHTML = `\r\n\t\t\u003ch3\u003eCARE\u003c\/h3\u003e\r\n\t\t\u003col\u003e\r\n\t\t\t\u003cli\u003eWhen wearing cycling jerseys, it is strongly recommended to wear and wash them based on the colors to reduce the risk of clothes bleeding colors onto each other.\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eAfter use, it is advisable to clean them promptly to prevent bacteria growth, odor formation, and the development of sweat stains, or even yellowing on the clothing.\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eWhen cleaning, remember to zip up all zippers to prevent fabric damage during the wash. Soak the clothing in \"cold water with neutral detergent\" for 5 - 10 minutes, then agitate it gently.\u003cbr\u003e\r\n\t\t\t\u003cstrong\u003e※ Do not use cold wash, fabric softener, or bleach, as these detergents can damage the fabric.\u003c\/strong\u003e\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eHand washing is preferred, but if you choose to use a washing machine, make sure to zip up all zippers, place the clothing inside a laundry bag, and wash it on the \" delicate wash mode\"\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eAfter washing, avoid \"wringing out\" the clothing, and refrain from using a dryer, as this may damage the fabric. Instead, wrap the clothing in a towel to remove excess moisture and hang it to air dry in a well-ventilated, cool place.\u003c\/li\u003e\r\n\t\t\u003c\/ol\u003e\r\n\t\t\u003cp\u003e\u003cstrong\u003e※ Due to variations in manufacturing processes and dyeing methods, some fading may occur when wearing or washing cycling clothing, especially for brighter colors. We strongly recommend you to wear and wash them with similar colors.\u003c\/strong\u003e\u003c\/p\u003e\r\n\t`;\r\n\r\n\t\t\t} else if (tab === 'size') {\r\n\t\t\t\tmodalInner.innerHTML = `\r\n          \u003ch3\u003eSIZE GUIDE\u003c\/h3\u003e\r\n          \u003cdiv class=\"toggle-wrapper\"\u003e\r\n            \u003cspan\u003eCM\u003c\/span\u003e\r\n            \u003clabel class=\"toggle\"\u003e\r\n              \u003cinput type=\"checkbox\" id=\"unitToggle\"\u003e\r\n              \u003cspan class=\"slider\"\u003e\u003c\/span\u003e\r\n            \u003c\/label\u003e\r\n            \u003cspan\u003eINCHES\u003c\/span\u003e\r\n          \u003c\/div\u003e\r\n          \u003ctable\u003e\r\n            \u003cthead\u003e\r\n              \u003ctr\u003e\r\n                \u003cth\u003eSIZE\u003c\/th\u003e\r\n                \u003cth id=\"chestHeader\"\u003eCHEST\u003c\/th\u003e\r\n                \u003cth id=\"waistHeader\"\u003eWAIST\u003c\/th\u003e\r\n                \u003cth id=\"hipHeader\"\u003eHIP\u003c\/th\u003e\r\n              \u003c\/tr\u003e\r\n            \u003c\/thead\u003e\r\n            \u003ctbody id=\"tableBody\"\u003e\u003c\/tbody\u003e\r\n          \u003c\/table\u003e\r\n        `;\r\n\t\t\t\trenderSizeTable('cm');\r\n\t\t\t\tdocument.getElementById(\"unitToggle\").addEventListener(\"change\", (e) =\u003e {\r\n\t\t\t\t\trenderSizeTable(e.target.checked ? 'inches' : 'cm');\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction renderSizeTable(unit) {\r\n\t\t\tconst body = document.getElementById(\"tableBody\");\r\n\t\t\tbody.innerHTML = \"\";\r\n\t\t\tsizeData[unit].forEach(row =\u003e {\r\n\t\t\t\tbody.innerHTML += `\r\n      \u003ctr\u003e\r\n        \u003ctd\u003e${row.size}\u003c\/td\u003e\r\n        \u003ctd\u003e${row.chest}\u003c\/td\u003e\r\n        \u003ctd\u003e${row.waist}\u003c\/td\u003e\r\n        \u003ctd\u003e${row.hip}\u003c\/td\u003e\r\n      \u003c\/tr\u003e`;\r\n\t\t\t});\r\n\t\t}\r\n\t\u003c\/script\u003e\r\n\u003c\/body\u003e\r\n\r\n\u003c\/html\u003e","brand":"ttbici","offers":[{"title":"XS","offer_id":48088710643936,"sku":"B6TC-E01-BK0XSM","price":2880.0,"currency_code":"TWD","in_stock":true},{"title":"S","offer_id":48088710676704,"sku":"B6TC-E01-BK00SM","price":2880.0,"currency_code":"TWD","in_stock":true},{"title":"M","offer_id":48088710709472,"sku":"B6TC-E01-BK00MM","price":2880.0,"currency_code":"TWD","in_stock":false},{"title":"L","offer_id":48088710742240,"sku":"B6TC-E01-BK00LM","price":2880.0,"currency_code":"TWD","in_stock":true},{"title":"XL","offer_id":48088710775008,"sku":"B6TC-E01-BK0XLM","price":2880.0,"currency_code":"TWD","in_stock":true},{"title":"2XL","offer_id":48088710807776,"sku":"B6TC-E01-BK2XLM","price":2880.0,"currency_code":"TWD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/dsc09572.jpg?v=1762236332"},{"product_id":"ttbici-e-line-men-s-classic-jersey-navy","title":"E Line Men' Classic Jersey \/ Navy","description":"The ttbici E Line Classic Jersey seamlessly blends traditional craftsmanship with modern design, embodying understated luxury through exquisite embroidery detailing.\r\n\u003cbr\u003e\u003cbr\u003e\r\nDesigned for comfort and versatility, its relaxed fit adapts effortlessly to various body types, ensuring a refined yet effortless riding experience. Crafted from lightweight, highly breathable fabric, it offers a soft, premium feel, making it ideal for warm-weather rides. The result—an unparalleled balance of performance and elegance for every cyclist.\u003cbr\u003e\u003cbr\u003e\r\n\r\n\u003c!DOCTYPE html\u003e\r\n\u003chtml lang=\"zh-Hant\"\u003e\r\n\r\n\u003chead\u003e\r\n\t\u003cmeta charset=\"UTF-8\" \/\u003e\r\n\t\u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/\u003e\r\n\t\u003cstyle\u003e\r\n\t\tbody.product-modal-open {\r\n\t\t\toverflow: hidden;\r\n\t\t}\r\n\r\n\t\t.product-modal-overlay {\r\n\t\t\tdisplay: none;\r\n\t\t\tposition: fixed;\r\n\t\t\ttop: 0;\r\n\t\t\tleft: 0;\r\n\t\t\twidth: 100vw;\r\n\t\t\theight: 100vh;\r\n\t\t\tbackground-color: rgba(0, 0, 0, 0.5);\r\n\t\t\tbackdrop-filter: blur(2px);\r\n\t\t\tz-index: 1000;\r\n\t\t\tjustify-content: center;\r\n\t\t\talign-items: center;\r\n\t\t}\r\n\r\n\t\t.product-modal {\r\n\t\t\tbackground: white;\r\n\t\t\tpadding: 20px;\r\n\t\t\t\/* border-radius: 10px; *\/\r\n\t\t\tmax-width: 600px;\r\n\t\t\twidth: 90%;\r\n\t\t\tmax-height: 90vh;\r\n\t\t\toverflow-y: auto;\r\n\t\t\tposition: relative;\r\n\t\t}\r\n\r\n\t\t.product-modal .modal-close {\r\n\t\t\tposition: absolute;\r\n\t\t\ttop: 10px;\r\n\t\t\tright: 12px;\r\n\t\t\tfont-size: 20px;\r\n\t\t\tcursor: pointer;\r\n\t\t}\r\n\r\n\t\t\/* ✅ 統一按鈕樣式 *\/\r\n\t\t.button-group {\r\n\t\t\tdisplay: flex;\r\n\t\t\tgap: 12px;\r\n\t\t\tpadding-top: 20px;\r\n\t\t}\r\n\r\n\t\t.button-group button {\r\n\t\t\tpadding: 0px;\r\n\t\t\tborder: none;\r\n\t\t\tbackground-color: transparent;\r\n\t\t\tcolor: #333;\r\n\t\t\tcursor: pointer;\r\n\t\t\t\/* border-radius: 5px; *\/\r\n\t\t\tfont-size: 15px;\r\n\t\t\tfont-family: 'Microsoft JhengHei';\r\n\t\t\ttext-decoration: underline;\r\n\t\t}\r\n\r\n\t\t.button-group button.active {\r\n\t\t\t\/* background-color: #444; *\/\r\n\t\t}\r\n\r\n\t\tbutton:active {\r\n\t\t\tbox-shadow: none !important;\r\n\t\t\tcolor: #333 !important;\r\n\t\t}\r\n\r\n\t\t.product-modal table {\r\n\t\t\twidth: 100%;\r\n\t\t\tborder-collapse: collapse;\r\n\t\t\tmargin-top: 10px;\r\n\t\t}\r\n\r\n\t\t.product-modal th,\r\n\t\t.product-modal td {\r\n\t\t\tborder-bottom: 1px solid #ddd;\r\n\t\t\ttext-align: center;\r\n\t\t\tpadding: 8px;\r\n\t\t}\r\n\r\n\t\t\/* ✅ 新增的欄寬限制 *\/\r\n\t\t.product-modal table th:first-child,\r\n\t\t.product-modal table td:first-child {\r\n\t\t\twidth: 15%;\r\n\t\t\tmax-width: 15%;\r\n\t\t}\r\n\r\n\t\t.product-modal .toggle-wrapper {\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items: center;\r\n\t\t\tgap: 10px;\r\n\t\t\tmargin: 10px 0 20px;\r\n\t\t}\r\n\r\n\t\t.product-modal .toggle {\r\n\t\t\tposition: relative;\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 50px;\r\n\t\t\theight: 24px;\r\n\t\t}\r\n\r\n\t\t.product-modal .toggle input {\r\n\t\t\topacity: 0;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t}\r\n\r\n\t\t.product-modal .slider {\r\n\t\t\tposition: absolute;\r\n\t\t\tcursor: pointer;\r\n\t\t\tbackground-color: #ccc;\r\n\t\t\tborder-radius: 24px;\r\n\t\t\ttop: 0;\r\n\t\t\tleft: 0;\r\n\t\t\tright: 0;\r\n\t\t\tbottom: 0;\r\n\t\t\ttransition: 0.4s;\r\n\t\t}\r\n\r\n\t\t.product-modal .slider:before {\r\n\t\t\tcontent: \"\";\r\n\t\t\tposition: absolute;\r\n\t\t\theight: 18px;\r\n\t\t\twidth: 18px;\r\n\t\t\tleft: 3px;\r\n\t\t\tbottom: 3px;\r\n\t\t\tbackground-color: white;\r\n\t\t\ttransition: 0.4s;\r\n\t\t\tborder-radius: 50%;\r\n\t\t}\r\n\r\n\t\t.product-modal input:checked+.slider {\r\n\t\t\tbackground-color: #333;\r\n\t\t}\r\n\r\n\t\t.product-modal input:checked+.slider:before {\r\n\t\t\ttransform: translateX(26px);\r\n\t\t}\r\n\r\n\t\t.product-modal .modalInnerContent h3 {\r\n\t\t\tpadding: 20px 0;\r\n\r\n\t\t}\r\n\t\u003c\/style\u003e\r\n\u003c\/head\u003e\r\n\r\n\u003cbody\u003e\r\n\r\n\t\u003c!-- 外部觸發按鈕 --\u003e\r\n\t\u003cdiv class=\"button-group\"\u003e\r\n\t\t\u003c!-- \u003cbutton onclick=\"openModal('shipping')\"\u003e運送詳情\u003c\/button\u003e --\u003e\r\n\t\t\u003cbutton onclick=\"openModal('size')\"\u003eSIZE GUIDE\u003c\/button\u003e\r\n\t\t\u003cbutton onclick=\"openModal('care')\"\u003eCARE\u003c\/button\u003e\r\n\t\u003c\/div\u003e\r\n\r\n\t\u003c!-- Modal --\u003e\r\n\t\u003cdiv class=\"product-modal-overlay\" id=\"modalOverlay\"\u003e\r\n\t\t\u003cdiv class=\"product-modal\" id=\"modalContent\"\u003e\r\n\t\t\t\u003cdiv class=\"modal-close\" onclick=\"closeModal()\"\u003e×\u003c\/div\u003e\r\n\r\n\t\t\t\u003c!-- 內部選單 --\u003e\r\n\t\t\t\u003cdiv class=\"button-group\" id=\"infoTabs\"\u003e\r\n\t\t\t\t\u003c!-- \u003cbutton id=\"tab-shipping\" onclick=\"switchTab('shipping')\"\u003e運送詳情\u003c\/button\u003e --\u003e\r\n\t\t\t\t\u003cbutton id=\"tab-size\" onclick=\"switchTab('size')\"\u003eSIZE GUIDE\u003c\/button\u003e\r\n\t\t\t\t\u003cbutton id=\"tab-care\" onclick=\"switchTab('care')\"\u003eCARE\u003c\/button\u003e\r\n\t\t\t\u003c\/div\u003e\r\n\r\n\t\t\t\u003c!-- 內容區 --\u003e\r\n\t\t\t\u003cdiv id=\"modalInnerContent\"\u003e\u003c\/div\u003e\r\n\t\t\u003c\/div\u003e\r\n\t\u003c\/div\u003e\r\n\r\n\t\u003cscript\u003e\r\n\t\tconst modalOverlay = document.getElementById(\"modalOverlay\");\r\n\t\tconst modalInner = document.getElementById(\"modalInnerContent\");\r\n\r\n\t\tconst sizeData = {\r\n\t\t\tcm: [\r\n\t\t\t\t{ size: 'XS', chest: '80–88', waist: '68–76', hip: '82–90' },\r\n\t\t\t\t{ size: 'S', chest: '85–93', waist: '73–81', hip: '87–95' },\r\n\t\t\t\t{ size: 'M', chest: '89–97', waist: '77–85', hip: '91–99' },\r\n\t\t\t\t{ size: 'L', chest: '93–101', waist: '81–89', hip: '95–103' },\r\n\t\t\t\t{ size: 'XL', chest: '97–105', waist: '85–93', hip: '99–107' },\r\n\t\t\t\t{ size: '2XL', chest: '101–109', waist: '89–97', hip: '103–111' }\r\n\t\t\t],\r\n\t\t\tinches: [\r\n\t\t\t\t{ size: 'XS', chest: '32–35', waist: '27–30', hip: '32–35' },\r\n\t\t\t\t{ size: 'S', chest: '34–37', waist: '29–32', hip: '34–37' },\r\n\t\t\t\t{ size: 'M', chest: '35–38', waist: '30–33', hip: '36–39' },\r\n\t\t\t\t{ size: 'L', chest: '37–40', waist: '32–35', hip: '37–40' },\r\n\t\t\t\t{ size: 'XL', chest: '38–41', waist: '34–37', hip: '39–42' },\r\n\t\t\t\t{ size: '2XL', chest: '40–43', waist: '35–38', hip: '41–44' }\r\n\t\t\t]\r\n\t\t};\r\n\r\n\t\tfunction openModal(defaultTab) {\r\n\t\t\tdocument.body.classList.add(\"product-modal-open\");\r\n\t\t\tmodalOverlay.style.display = \"flex\";\r\n\t\t\tswitchTab(defaultTab);\r\n\t\t}\r\n\r\n\t\tfunction closeModal() {\r\n\t\t\tmodalOverlay.style.display = \"none\";\r\n\t\t\tmodalInner.innerHTML = \"\";\r\n\t\t\tdocument.body.classList.remove(\"product-modal-open\");\r\n\t\t}\r\n\r\n\t\tfunction switchTab(tab) {\r\n\t\t\t['shipping', 'care', 'size'].forEach(id =\u003e {\r\n\t\t\t\tconst btn = document.getElementById(`tab-${id}`);\r\n\t\t\t\tif (btn) btn.classList.remove(\"active\");\r\n\t\t\t});\r\n\r\n\t\t\tconst activeBtn = document.getElementById(`tab-${tab}`);\r\n\t\t\tif (activeBtn) activeBtn.classList.add(\"active\");\r\n\r\n\t\t\tif (tab === 'shipping') {\r\n\t\t\t\tmodalInner.innerHTML = `\u003ch3\u003e運送詳情\u003c\/h3\u003e\u003cp\u003e這裡可以放運送方式、時間、費用等資訊。\u003c\/p\u003e`;\r\n\t\t\t} else if (tab === 'care') {\r\n\t\t\t\tmodalInner.innerHTML = `\r\n\t\t\u003ch3\u003eCARE\u003c\/h3\u003e\r\n\t\t\u003col\u003e\r\n\t\t\t\u003cli\u003eWhen wearing cycling jerseys, it is strongly recommended to wear and wash them based on the colors to reduce the risk of clothes bleeding colors onto each other.\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eAfter use, it is advisable to clean them promptly to prevent bacteria growth, odor formation, and the development of sweat stains, or even yellowing on the clothing.\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eWhen cleaning, remember to zip up all zippers to prevent fabric damage during the wash. Soak the clothing in \"cold water with neutral detergent\" for 5 - 10 minutes, then agitate it gently.\u003cbr\u003e\r\n\t\t\t\u003cstrong\u003e※ Do not use cold wash, fabric softener, or bleach, as these detergents can damage the fabric.\u003c\/strong\u003e\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eHand washing is preferred, but if you choose to use a washing machine, make sure to zip up all zippers, place the clothing inside a laundry bag, and wash it on the \" delicate wash mode\"\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eAfter washing, avoid \"wringing out\" the clothing, and refrain from using a dryer, as this may damage the fabric. Instead, wrap the clothing in a towel to remove excess moisture and hang it to air dry in a well-ventilated, cool place.\u003c\/li\u003e\r\n\t\t\u003c\/ol\u003e\r\n\t\t\u003cp\u003e\u003cstrong\u003e※ Due to variations in manufacturing processes and dyeing methods, some fading may occur when wearing or washing cycling clothing, especially for brighter colors. We strongly recommend you to wear and wash them with similar colors.\u003c\/strong\u003e\u003c\/p\u003e\r\n\t`;\r\n\r\n\t\t\t} else if (tab === 'size') {\r\n\t\t\t\tmodalInner.innerHTML = `\r\n          \u003ch3\u003eSIZE GUIDE\u003c\/h3\u003e\r\n          \u003cdiv class=\"toggle-wrapper\"\u003e\r\n            \u003cspan\u003eCM\u003c\/span\u003e\r\n            \u003clabel class=\"toggle\"\u003e\r\n              \u003cinput type=\"checkbox\" id=\"unitToggle\"\u003e\r\n              \u003cspan class=\"slider\"\u003e\u003c\/span\u003e\r\n            \u003c\/label\u003e\r\n            \u003cspan\u003eINCHES\u003c\/span\u003e\r\n          \u003c\/div\u003e\r\n          \u003ctable\u003e\r\n            \u003cthead\u003e\r\n              \u003ctr\u003e\r\n                \u003cth\u003eSIZE\u003c\/th\u003e\r\n                \u003cth id=\"chestHeader\"\u003eCHEST\u003c\/th\u003e\r\n                \u003cth id=\"waistHeader\"\u003eWAIST\u003c\/th\u003e\r\n                \u003cth id=\"hipHeader\"\u003eHIP\u003c\/th\u003e\r\n              \u003c\/tr\u003e\r\n            \u003c\/thead\u003e\r\n            \u003ctbody id=\"tableBody\"\u003e\u003c\/tbody\u003e\r\n          \u003c\/table\u003e\r\n        `;\r\n\t\t\t\trenderSizeTable('cm');\r\n\t\t\t\tdocument.getElementById(\"unitToggle\").addEventListener(\"change\", (e) =\u003e {\r\n\t\t\t\t\trenderSizeTable(e.target.checked ? 'inches' : 'cm');\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction renderSizeTable(unit) {\r\n\t\t\tconst body = document.getElementById(\"tableBody\");\r\n\t\t\tbody.innerHTML = \"\";\r\n\t\t\tsizeData[unit].forEach(row =\u003e {\r\n\t\t\t\tbody.innerHTML += `\r\n      \u003ctr\u003e\r\n        \u003ctd\u003e${row.size}\u003c\/td\u003e\r\n        \u003ctd\u003e${row.chest}\u003c\/td\u003e\r\n        \u003ctd\u003e${row.waist}\u003c\/td\u003e\r\n        \u003ctd\u003e${row.hip}\u003c\/td\u003e\r\n      \u003c\/tr\u003e`;\r\n\t\t\t});\r\n\t\t}\r\n\t\u003c\/script\u003e\r\n\u003c\/body\u003e\r\n\r\n\u003c\/html\u003e","brand":"ttbici","offers":[{"title":"XS","offer_id":48088712610016,"sku":"B6TC-E01-NY0XSM","price":2880.0,"currency_code":"TWD","in_stock":true},{"title":"S","offer_id":48088712642784,"sku":"B6TC-E01-NY00SM","price":2880.0,"currency_code":"TWD","in_stock":true},{"title":"M","offer_id":48088712675552,"sku":"B6TC-E01-NY00MM","price":2880.0,"currency_code":"TWD","in_stock":true},{"title":"L","offer_id":48088712708320,"sku":"B6TC-E01-NY00LM","price":2880.0,"currency_code":"TWD","in_stock":true},{"title":"XL","offer_id":48088712741088,"sku":"B6TC-E01-NY0XLM","price":2880.0,"currency_code":"TWD","in_stock":true},{"title":"2XL","offer_id":48088712773856,"sku":"B6TC-E01-NY2XLM","price":2880.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/dsc09581-3_color-deep_blue.jpg?v=1762236341"},{"product_id":"ttbici-e-line-men-s-classic-jersey-beige","title":"E Line Men' Classic Jersey \/ Beige","description":"The ttbici E Line Classic Jersey seamlessly blends traditional craftsmanship with modern design, embodying understated luxury through exquisite embroidery detailing.\r\n\u003cbr\u003e\u003cbr\u003e\r\nDesigned for comfort and versatility, its relaxed fit adapts effortlessly to various body types, ensuring a refined yet effortless riding experience. Crafted from lightweight, highly breathable fabric, it offers a soft, premium feel, making it ideal for warm-weather rides. The result—an unparalleled balance of performance and elegance for every cyclist.\u003cbr\u003e\u003cbr\u003e\r\n\r\n\u003c!DOCTYPE html\u003e\r\n\u003chtml lang=\"zh-Hant\"\u003e\r\n\r\n\u003chead\u003e\r\n\t\u003cmeta charset=\"UTF-8\" \/\u003e\r\n\t\u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/\u003e\r\n\t\u003cstyle\u003e\r\n\t\tbody.product-modal-open {\r\n\t\t\toverflow: hidden;\r\n\t\t}\r\n\r\n\t\t.product-modal-overlay {\r\n\t\t\tdisplay: none;\r\n\t\t\tposition: fixed;\r\n\t\t\ttop: 0;\r\n\t\t\tleft: 0;\r\n\t\t\twidth: 100vw;\r\n\t\t\theight: 100vh;\r\n\t\t\tbackground-color: rgba(0, 0, 0, 0.5);\r\n\t\t\tbackdrop-filter: blur(2px);\r\n\t\t\tz-index: 1000;\r\n\t\t\tjustify-content: center;\r\n\t\t\talign-items: center;\r\n\t\t}\r\n\r\n\t\t.product-modal {\r\n\t\t\tbackground: white;\r\n\t\t\tpadding: 20px;\r\n\t\t\t\/* border-radius: 10px; *\/\r\n\t\t\tmax-width: 600px;\r\n\t\t\twidth: 90%;\r\n\t\t\tmax-height: 90vh;\r\n\t\t\toverflow-y: auto;\r\n\t\t\tposition: relative;\r\n\t\t}\r\n\r\n\t\t.product-modal .modal-close {\r\n\t\t\tposition: absolute;\r\n\t\t\ttop: 10px;\r\n\t\t\tright: 12px;\r\n\t\t\tfont-size: 20px;\r\n\t\t\tcursor: pointer;\r\n\t\t}\r\n\r\n\t\t\/* ✅ 統一按鈕樣式 *\/\r\n\t\t.button-group {\r\n\t\t\tdisplay: flex;\r\n\t\t\tgap: 12px;\r\n\t\t\tpadding-top: 20px;\r\n\t\t}\r\n\r\n\t\t.button-group button {\r\n\t\t\tpadding: 0px;\r\n\t\t\tborder: none;\r\n\t\t\tbackground-color: transparent;\r\n\t\t\tcolor: #333;\r\n\t\t\tcursor: pointer;\r\n\t\t\t\/* border-radius: 5px; *\/\r\n\t\t\tfont-size: 15px;\r\n\t\t\tfont-family: 'Microsoft JhengHei';\r\n\t\t\ttext-decoration: underline;\r\n\t\t}\r\n\r\n\t\t.button-group button.active {\r\n\t\t\t\/* background-color: #444; *\/\r\n\t\t}\r\n\r\n\t\tbutton:active {\r\n\t\t\tbox-shadow: none !important;\r\n\t\t\tcolor: #333 !important;\r\n\t\t}\r\n\r\n\t\t.product-modal table {\r\n\t\t\twidth: 100%;\r\n\t\t\tborder-collapse: collapse;\r\n\t\t\tmargin-top: 10px;\r\n\t\t}\r\n\r\n\t\t.product-modal th,\r\n\t\t.product-modal td {\r\n\t\t\tborder-bottom: 1px solid #ddd;\r\n\t\t\ttext-align: center;\r\n\t\t\tpadding: 8px;\r\n\t\t}\r\n\r\n\t\t\/* ✅ 新增的欄寬限制 *\/\r\n\t\t.product-modal table th:first-child,\r\n\t\t.product-modal table td:first-child {\r\n\t\t\twidth: 15%;\r\n\t\t\tmax-width: 15%;\r\n\t\t}\r\n\r\n\t\t.product-modal .toggle-wrapper {\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items: center;\r\n\t\t\tgap: 10px;\r\n\t\t\tmargin: 10px 0 20px;\r\n\t\t}\r\n\r\n\t\t.product-modal .toggle {\r\n\t\t\tposition: relative;\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 50px;\r\n\t\t\theight: 24px;\r\n\t\t}\r\n\r\n\t\t.product-modal .toggle input {\r\n\t\t\topacity: 0;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t}\r\n\r\n\t\t.product-modal .slider {\r\n\t\t\tposition: absolute;\r\n\t\t\tcursor: pointer;\r\n\t\t\tbackground-color: #ccc;\r\n\t\t\tborder-radius: 24px;\r\n\t\t\ttop: 0;\r\n\t\t\tleft: 0;\r\n\t\t\tright: 0;\r\n\t\t\tbottom: 0;\r\n\t\t\ttransition: 0.4s;\r\n\t\t}\r\n\r\n\t\t.product-modal .slider:before {\r\n\t\t\tcontent: \"\";\r\n\t\t\tposition: absolute;\r\n\t\t\theight: 18px;\r\n\t\t\twidth: 18px;\r\n\t\t\tleft: 3px;\r\n\t\t\tbottom: 3px;\r\n\t\t\tbackground-color: white;\r\n\t\t\ttransition: 0.4s;\r\n\t\t\tborder-radius: 50%;\r\n\t\t}\r\n\r\n\t\t.product-modal input:checked+.slider {\r\n\t\t\tbackground-color: #333;\r\n\t\t}\r\n\r\n\t\t.product-modal input:checked+.slider:before {\r\n\t\t\ttransform: translateX(26px);\r\n\t\t}\r\n\r\n\t\t.product-modal .modalInnerContent h3 {\r\n\t\t\tpadding: 20px 0;\r\n\r\n\t\t}\r\n\t\u003c\/style\u003e\r\n\u003c\/head\u003e\r\n\r\n\u003cbody\u003e\r\n\r\n\t\u003c!-- 外部觸發按鈕 --\u003e\r\n\t\u003cdiv class=\"button-group\"\u003e\r\n\t\t\u003c!-- \u003cbutton onclick=\"openModal('shipping')\"\u003e運送詳情\u003c\/button\u003e --\u003e\r\n\t\t\u003cbutton onclick=\"openModal('size')\"\u003eSIZE GUIDE\u003c\/button\u003e\r\n\t\t\u003cbutton onclick=\"openModal('care')\"\u003eCARE\u003c\/button\u003e\r\n\t\u003c\/div\u003e\r\n\r\n\t\u003c!-- Modal --\u003e\r\n\t\u003cdiv class=\"product-modal-overlay\" id=\"modalOverlay\"\u003e\r\n\t\t\u003cdiv class=\"product-modal\" id=\"modalContent\"\u003e\r\n\t\t\t\u003cdiv class=\"modal-close\" onclick=\"closeModal()\"\u003e×\u003c\/div\u003e\r\n\r\n\t\t\t\u003c!-- 內部選單 --\u003e\r\n\t\t\t\u003cdiv class=\"button-group\" id=\"infoTabs\"\u003e\r\n\t\t\t\t\u003c!-- \u003cbutton id=\"tab-shipping\" onclick=\"switchTab('shipping')\"\u003e運送詳情\u003c\/button\u003e --\u003e\r\n\t\t\t\t\u003cbutton id=\"tab-size\" onclick=\"switchTab('size')\"\u003eSIZE GUIDE\u003c\/button\u003e\r\n\t\t\t\t\u003cbutton id=\"tab-care\" onclick=\"switchTab('care')\"\u003eCARE\u003c\/button\u003e\r\n\t\t\t\u003c\/div\u003e\r\n\r\n\t\t\t\u003c!-- 內容區 --\u003e\r\n\t\t\t\u003cdiv id=\"modalInnerContent\"\u003e\u003c\/div\u003e\r\n\t\t\u003c\/div\u003e\r\n\t\u003c\/div\u003e\r\n\r\n\t\u003cscript\u003e\r\n\t\tconst modalOverlay = document.getElementById(\"modalOverlay\");\r\n\t\tconst modalInner = document.getElementById(\"modalInnerContent\");\r\n\r\n\t\tconst sizeData = {\r\n\t\t\tcm: [\r\n\t\t\t\t{ size: 'XS', chest: '80–88', waist: '68–76', hip: '82–90' },\r\n\t\t\t\t{ size: 'S', chest: '85–93', waist: '73–81', hip: '87–95' },\r\n\t\t\t\t{ size: 'M', chest: '89–97', waist: '77–85', hip: '91–99' },\r\n\t\t\t\t{ size: 'L', chest: '93–101', waist: '81–89', hip: '95–103' },\r\n\t\t\t\t{ size: 'XL', chest: '97–105', waist: '85–93', hip: '99–107' },\r\n\t\t\t\t{ size: '2XL', chest: '101–109', waist: '89–97', hip: '103–111' }\r\n\t\t\t],\r\n\t\t\tinches: [\r\n\t\t\t\t{ size: 'XS', chest: '32–35', waist: '27–30', hip: '32–35' },\r\n\t\t\t\t{ size: 'S', chest: '34–37', waist: '29–32', hip: '34–37' },\r\n\t\t\t\t{ size: 'M', chest: '35–38', waist: '30–33', hip: '36–39' },\r\n\t\t\t\t{ size: 'L', chest: '37–40', waist: '32–35', hip: '37–40' },\r\n\t\t\t\t{ size: 'XL', chest: '38–41', waist: '34–37', hip: '39–42' },\r\n\t\t\t\t{ size: '2XL', chest: '40–43', waist: '35–38', hip: '41–44' }\r\n\t\t\t]\r\n\t\t};\r\n\r\n\t\tfunction openModal(defaultTab) {\r\n\t\t\tdocument.body.classList.add(\"product-modal-open\");\r\n\t\t\tmodalOverlay.style.display = \"flex\";\r\n\t\t\tswitchTab(defaultTab);\r\n\t\t}\r\n\r\n\t\tfunction closeModal() {\r\n\t\t\tmodalOverlay.style.display = \"none\";\r\n\t\t\tmodalInner.innerHTML = \"\";\r\n\t\t\tdocument.body.classList.remove(\"product-modal-open\");\r\n\t\t}\r\n\r\n\t\tfunction switchTab(tab) {\r\n\t\t\t['shipping', 'care', 'size'].forEach(id =\u003e {\r\n\t\t\t\tconst btn = document.getElementById(`tab-${id}`);\r\n\t\t\t\tif (btn) btn.classList.remove(\"active\");\r\n\t\t\t});\r\n\r\n\t\t\tconst activeBtn = document.getElementById(`tab-${tab}`);\r\n\t\t\tif (activeBtn) activeBtn.classList.add(\"active\");\r\n\r\n\t\t\tif (tab === 'shipping') {\r\n\t\t\t\tmodalInner.innerHTML = `\u003ch3\u003e運送詳情\u003c\/h3\u003e\u003cp\u003e這裡可以放運送方式、時間、費用等資訊。\u003c\/p\u003e`;\r\n\t\t\t} else if (tab === 'care') {\r\n\t\t\t\tmodalInner.innerHTML = `\r\n\t\t\u003ch3\u003eCARE\u003c\/h3\u003e\r\n\t\t\u003col\u003e\r\n\t\t\t\u003cli\u003eWhen wearing cycling jerseys, it is strongly recommended to wear and wash them based on the colors to reduce the risk of clothes bleeding colors onto each other.\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eAfter use, it is advisable to clean them promptly to prevent bacteria growth, odor formation, and the development of sweat stains, or even yellowing on the clothing.\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eWhen cleaning, remember to zip up all zippers to prevent fabric damage during the wash. Soak the clothing in \"cold water with neutral detergent\" for 5 - 10 minutes, then agitate it gently.\u003cbr\u003e\r\n\t\t\t\u003cstrong\u003e※ Do not use cold wash, fabric softener, or bleach, as these detergents can damage the fabric.\u003c\/strong\u003e\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eHand washing is preferred, but if you choose to use a washing machine, make sure to zip up all zippers, place the clothing inside a laundry bag, and wash it on the \" delicate wash mode\"\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eAfter washing, avoid \"wringing out\" the clothing, and refrain from using a dryer, as this may damage the fabric. Instead, wrap the clothing in a towel to remove excess moisture and hang it to air dry in a well-ventilated, cool place.\u003c\/li\u003e\r\n\t\t\u003c\/ol\u003e\r\n\t\t\u003cp\u003e\u003cstrong\u003e※ Due to variations in manufacturing processes and dyeing methods, some fading may occur when wearing or washing cycling clothing, especially for brighter colors. We strongly recommend you to wear and wash them with similar colors.\u003c\/strong\u003e\u003c\/p\u003e\r\n\t`;\r\n\r\n\t\t\t} else if (tab === 'size') {\r\n\t\t\t\tmodalInner.innerHTML = `\r\n          \u003ch3\u003eSIZE GUIDE\u003c\/h3\u003e\r\n          \u003cdiv class=\"toggle-wrapper\"\u003e\r\n            \u003cspan\u003eCM\u003c\/span\u003e\r\n            \u003clabel class=\"toggle\"\u003e\r\n              \u003cinput type=\"checkbox\" id=\"unitToggle\"\u003e\r\n              \u003cspan class=\"slider\"\u003e\u003c\/span\u003e\r\n            \u003c\/label\u003e\r\n            \u003cspan\u003eINCHES\u003c\/span\u003e\r\n          \u003c\/div\u003e\r\n          \u003ctable\u003e\r\n            \u003cthead\u003e\r\n              \u003ctr\u003e\r\n                \u003cth\u003eSIZE\u003c\/th\u003e\r\n                \u003cth id=\"chestHeader\"\u003eCHEST\u003c\/th\u003e\r\n                \u003cth id=\"waistHeader\"\u003eWAIST\u003c\/th\u003e\r\n                \u003cth id=\"hipHeader\"\u003eHIP\u003c\/th\u003e\r\n              \u003c\/tr\u003e\r\n            \u003c\/thead\u003e\r\n            \u003ctbody id=\"tableBody\"\u003e\u003c\/tbody\u003e\r\n          \u003c\/table\u003e\r\n        `;\r\n\t\t\t\trenderSizeTable('cm');\r\n\t\t\t\tdocument.getElementById(\"unitToggle\").addEventListener(\"change\", (e) =\u003e {\r\n\t\t\t\t\trenderSizeTable(e.target.checked ? 'inches' : 'cm');\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction renderSizeTable(unit) {\r\n\t\t\tconst body = document.getElementById(\"tableBody\");\r\n\t\t\tbody.innerHTML = \"\";\r\n\t\t\tsizeData[unit].forEach(row =\u003e {\r\n\t\t\t\tbody.innerHTML += `\r\n      \u003ctr\u003e\r\n        \u003ctd\u003e${row.size}\u003c\/td\u003e\r\n        \u003ctd\u003e${row.chest}\u003c\/td\u003e\r\n        \u003ctd\u003e${row.waist}\u003c\/td\u003e\r\n        \u003ctd\u003e${row.hip}\u003c\/td\u003e\r\n      \u003c\/tr\u003e`;\r\n\t\t\t});\r\n\t\t}\r\n\t\u003c\/script\u003e\r\n\u003c\/body\u003e\r\n\r\n\u003c\/html\u003e","brand":"ttbici","offers":[{"title":"XS","offer_id":48088713593056,"sku":"B6TC-E01-BE0XSM","price":2880.0,"currency_code":"TWD","in_stock":true},{"title":"S","offer_id":48088713625824,"sku":"B6TC-E01-BE00SM","price":2880.0,"currency_code":"TWD","in_stock":true},{"title":"M","offer_id":48088713658592,"sku":"B6TC-E01-BE00MM","price":2880.0,"currency_code":"TWD","in_stock":true},{"title":"L","offer_id":48088713691360,"sku":"B6TC-E01-BE00LM","price":2880.0,"currency_code":"TWD","in_stock":true},{"title":"XL","offer_id":48088713724128,"sku":"B6TC-E01-BE0XLM","price":2880.0,"currency_code":"TWD","in_stock":true},{"title":"2XL","offer_id":48088713756896,"sku":"B6TC-E01-BE2XLM","price":2880.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/dsc09586_a.jpg?v=1762236351"},{"product_id":"ttbici-e-line-men-s-classic-jersey-brown","title":"E Line Men' Classic Jersey \/ Brown","description":"The ttbici E Line Classic Jersey seamlessly blends traditional craftsmanship with modern design, embodying understated luxury through exquisite embroidery detailing.\r\n\u003cbr\u003e\u003cbr\u003e\r\nDesigned for comfort and versatility, its relaxed fit adapts effortlessly to various body types, ensuring a refined yet effortless riding experience. Crafted from lightweight, highly breathable fabric, it offers a soft, premium feel, making it ideal for warm-weather rides. The result—an unparalleled balance of performance and elegance for every cyclist.\u003cbr\u003e\u003cbr\u003e\r\n\r\n\u003c!DOCTYPE html\u003e\r\n\u003chtml lang=\"zh-Hant\"\u003e\r\n\r\n\u003chead\u003e\r\n\t\u003cmeta charset=\"UTF-8\" \/\u003e\r\n\t\u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/\u003e\r\n\t\u003cstyle\u003e\r\n\t\tbody.product-modal-open {\r\n\t\t\toverflow: hidden;\r\n\t\t}\r\n\r\n\t\t.product-modal-overlay {\r\n\t\t\tdisplay: none;\r\n\t\t\tposition: fixed;\r\n\t\t\ttop: 0;\r\n\t\t\tleft: 0;\r\n\t\t\twidth: 100vw;\r\n\t\t\theight: 100vh;\r\n\t\t\tbackground-color: rgba(0, 0, 0, 0.5);\r\n\t\t\tbackdrop-filter: blur(2px);\r\n\t\t\tz-index: 1000;\r\n\t\t\tjustify-content: center;\r\n\t\t\talign-items: center;\r\n\t\t}\r\n\r\n\t\t.product-modal {\r\n\t\t\tbackground: white;\r\n\t\t\tpadding: 20px;\r\n\t\t\t\/* border-radius: 10px; *\/\r\n\t\t\tmax-width: 600px;\r\n\t\t\twidth: 90%;\r\n\t\t\tmax-height: 90vh;\r\n\t\t\toverflow-y: auto;\r\n\t\t\tposition: relative;\r\n\t\t}\r\n\r\n\t\t.product-modal .modal-close {\r\n\t\t\tposition: absolute;\r\n\t\t\ttop: 10px;\r\n\t\t\tright: 12px;\r\n\t\t\tfont-size: 20px;\r\n\t\t\tcursor: pointer;\r\n\t\t}\r\n\r\n\t\t\/* ✅ 統一按鈕樣式 *\/\r\n\t\t.button-group {\r\n\t\t\tdisplay: flex;\r\n\t\t\tgap: 12px;\r\n\t\t\tpadding-top: 20px;\r\n\t\t}\r\n\r\n\t\t.button-group button {\r\n\t\t\tpadding: 0px;\r\n\t\t\tborder: none;\r\n\t\t\tbackground-color: transparent;\r\n\t\t\tcolor: #333;\r\n\t\t\tcursor: pointer;\r\n\t\t\t\/* border-radius: 5px; *\/\r\n\t\t\tfont-size: 15px;\r\n\t\t\tfont-family: 'Microsoft JhengHei';\r\n\t\t\ttext-decoration: underline;\r\n\t\t}\r\n\r\n\t\t.button-group button.active {\r\n\t\t\t\/* background-color: #444; *\/\r\n\t\t}\r\n\r\n\t\tbutton:active {\r\n\t\t\tbox-shadow: none !important;\r\n\t\t\tcolor: #333 !important;\r\n\t\t}\r\n\r\n\t\t.product-modal table {\r\n\t\t\twidth: 100%;\r\n\t\t\tborder-collapse: collapse;\r\n\t\t\tmargin-top: 10px;\r\n\t\t}\r\n\r\n\t\t.product-modal th,\r\n\t\t.product-modal td {\r\n\t\t\tborder-bottom: 1px solid #ddd;\r\n\t\t\ttext-align: center;\r\n\t\t\tpadding: 8px;\r\n\t\t}\r\n\r\n\t\t\/* ✅ 新增的欄寬限制 *\/\r\n\t\t.product-modal table th:first-child,\r\n\t\t.product-modal table td:first-child {\r\n\t\t\twidth: 15%;\r\n\t\t\tmax-width: 15%;\r\n\t\t}\r\n\r\n\t\t.product-modal .toggle-wrapper {\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items: center;\r\n\t\t\tgap: 10px;\r\n\t\t\tmargin: 10px 0 20px;\r\n\t\t}\r\n\r\n\t\t.product-modal .toggle {\r\n\t\t\tposition: relative;\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 50px;\r\n\t\t\theight: 24px;\r\n\t\t}\r\n\r\n\t\t.product-modal .toggle input {\r\n\t\t\topacity: 0;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t}\r\n\r\n\t\t.product-modal .slider {\r\n\t\t\tposition: absolute;\r\n\t\t\tcursor: pointer;\r\n\t\t\tbackground-color: #ccc;\r\n\t\t\tborder-radius: 24px;\r\n\t\t\ttop: 0;\r\n\t\t\tleft: 0;\r\n\t\t\tright: 0;\r\n\t\t\tbottom: 0;\r\n\t\t\ttransition: 0.4s;\r\n\t\t}\r\n\r\n\t\t.product-modal .slider:before {\r\n\t\t\tcontent: \"\";\r\n\t\t\tposition: absolute;\r\n\t\t\theight: 18px;\r\n\t\t\twidth: 18px;\r\n\t\t\tleft: 3px;\r\n\t\t\tbottom: 3px;\r\n\t\t\tbackground-color: white;\r\n\t\t\ttransition: 0.4s;\r\n\t\t\tborder-radius: 50%;\r\n\t\t}\r\n\r\n\t\t.product-modal input:checked+.slider {\r\n\t\t\tbackground-color: #333;\r\n\t\t}\r\n\r\n\t\t.product-modal input:checked+.slider:before {\r\n\t\t\ttransform: translateX(26px);\r\n\t\t}\r\n\r\n\t\t.product-modal .modalInnerContent h3 {\r\n\t\t\tpadding: 20px 0;\r\n\r\n\t\t}\r\n\t\u003c\/style\u003e\r\n\u003c\/head\u003e\r\n\r\n\u003cbody\u003e\r\n\r\n\t\u003c!-- 外部觸發按鈕 --\u003e\r\n\t\u003cdiv class=\"button-group\"\u003e\r\n\t\t\u003c!-- \u003cbutton onclick=\"openModal('shipping')\"\u003e運送詳情\u003c\/button\u003e --\u003e\r\n\t\t\u003cbutton onclick=\"openModal('size')\"\u003eSIZE GUIDE\u003c\/button\u003e\r\n\t\t\u003cbutton onclick=\"openModal('care')\"\u003eCARE\u003c\/button\u003e\r\n\t\u003c\/div\u003e\r\n\r\n\t\u003c!-- Modal --\u003e\r\n\t\u003cdiv class=\"product-modal-overlay\" id=\"modalOverlay\"\u003e\r\n\t\t\u003cdiv class=\"product-modal\" id=\"modalContent\"\u003e\r\n\t\t\t\u003cdiv class=\"modal-close\" onclick=\"closeModal()\"\u003e×\u003c\/div\u003e\r\n\r\n\t\t\t\u003c!-- 內部選單 --\u003e\r\n\t\t\t\u003cdiv class=\"button-group\" id=\"infoTabs\"\u003e\r\n\t\t\t\t\u003c!-- \u003cbutton id=\"tab-shipping\" onclick=\"switchTab('shipping')\"\u003e運送詳情\u003c\/button\u003e --\u003e\r\n\t\t\t\t\u003cbutton id=\"tab-size\" onclick=\"switchTab('size')\"\u003eSIZE GUIDE\u003c\/button\u003e\r\n\t\t\t\t\u003cbutton id=\"tab-care\" onclick=\"switchTab('care')\"\u003eCARE\u003c\/button\u003e\r\n\t\t\t\u003c\/div\u003e\r\n\r\n\t\t\t\u003c!-- 內容區 --\u003e\r\n\t\t\t\u003cdiv id=\"modalInnerContent\"\u003e\u003c\/div\u003e\r\n\t\t\u003c\/div\u003e\r\n\t\u003c\/div\u003e\r\n\r\n\t\u003cscript\u003e\r\n\t\tconst modalOverlay = document.getElementById(\"modalOverlay\");\r\n\t\tconst modalInner = document.getElementById(\"modalInnerContent\");\r\n\r\n\t\tconst sizeData = {\r\n\t\t\tcm: [\r\n\t\t\t\t{ size: 'XS', chest: '80–88', waist: '68–76', hip: '82–90' },\r\n\t\t\t\t{ size: 'S', chest: '85–93', waist: '73–81', hip: '87–95' },\r\n\t\t\t\t{ size: 'M', chest: '89–97', waist: '77–85', hip: '91–99' },\r\n\t\t\t\t{ size: 'L', chest: '93–101', waist: '81–89', hip: '95–103' },\r\n\t\t\t\t{ size: 'XL', chest: '97–105', waist: '85–93', hip: '99–107' },\r\n\t\t\t\t{ size: '2XL', chest: '101–109', waist: '89–97', hip: '103–111' }\r\n\t\t\t],\r\n\t\t\tinches: [\r\n\t\t\t\t{ size: 'XS', chest: '32–35', waist: '27–30', hip: '32–35' },\r\n\t\t\t\t{ size: 'S', chest: '34–37', waist: '29–32', hip: '34–37' },\r\n\t\t\t\t{ size: 'M', chest: '35–38', waist: '30–33', hip: '36–39' },\r\n\t\t\t\t{ size: 'L', chest: '37–40', waist: '32–35', hip: '37–40' },\r\n\t\t\t\t{ size: 'XL', chest: '38–41', waist: '34–37', hip: '39–42' },\r\n\t\t\t\t{ size: '2XL', chest: '40–43', waist: '35–38', hip: '41–44' }\r\n\t\t\t]\r\n\t\t};\r\n\r\n\t\tfunction openModal(defaultTab) {\r\n\t\t\tdocument.body.classList.add(\"product-modal-open\");\r\n\t\t\tmodalOverlay.style.display = \"flex\";\r\n\t\t\tswitchTab(defaultTab);\r\n\t\t}\r\n\r\n\t\tfunction closeModal() {\r\n\t\t\tmodalOverlay.style.display = \"none\";\r\n\t\t\tmodalInner.innerHTML = \"\";\r\n\t\t\tdocument.body.classList.remove(\"product-modal-open\");\r\n\t\t}\r\n\r\n\t\tfunction switchTab(tab) {\r\n\t\t\t['shipping', 'care', 'size'].forEach(id =\u003e {\r\n\t\t\t\tconst btn = document.getElementById(`tab-${id}`);\r\n\t\t\t\tif (btn) btn.classList.remove(\"active\");\r\n\t\t\t});\r\n\r\n\t\t\tconst activeBtn = document.getElementById(`tab-${tab}`);\r\n\t\t\tif (activeBtn) activeBtn.classList.add(\"active\");\r\n\r\n\t\t\tif (tab === 'shipping') {\r\n\t\t\t\tmodalInner.innerHTML = `\u003ch3\u003e運送詳情\u003c\/h3\u003e\u003cp\u003e這裡可以放運送方式、時間、費用等資訊。\u003c\/p\u003e`;\r\n\t\t\t} else if (tab === 'care') {\r\n\t\t\t\tmodalInner.innerHTML = `\r\n\t\t\u003ch3\u003eCARE\u003c\/h3\u003e\r\n\t\t\u003col\u003e\r\n\t\t\t\u003cli\u003eWhen wearing cycling jerseys, it is strongly recommended to wear and wash them based on the colors to reduce the risk of clothes bleeding colors onto each other.\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eAfter use, it is advisable to clean them promptly to prevent bacteria growth, odor formation, and the development of sweat stains, or even yellowing on the clothing.\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eWhen cleaning, remember to zip up all zippers to prevent fabric damage during the wash. Soak the clothing in \"cold water with neutral detergent\" for 5 - 10 minutes, then agitate it gently.\u003cbr\u003e\r\n\t\t\t\u003cstrong\u003e※ Do not use cold wash, fabric softener, or bleach, as these detergents can damage the fabric.\u003c\/strong\u003e\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eHand washing is preferred, but if you choose to use a washing machine, make sure to zip up all zippers, place the clothing inside a laundry bag, and wash it on the \" delicate wash mode\"\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eAfter washing, avoid \"wringing out\" the clothing, and refrain from using a dryer, as this may damage the fabric. Instead, wrap the clothing in a towel to remove excess moisture and hang it to air dry in a well-ventilated, cool place.\u003c\/li\u003e\r\n\t\t\u003c\/ol\u003e\r\n\t\t\u003cp\u003e\u003cstrong\u003e※ Due to variations in manufacturing processes and dyeing methods, some fading may occur when wearing or washing cycling clothing, especially for brighter colors. We strongly recommend you to wear and wash them with similar colors.\u003c\/strong\u003e\u003c\/p\u003e\r\n\t`;\r\n\r\n\t\t\t} else if (tab === 'size') {\r\n\t\t\t\tmodalInner.innerHTML = `\r\n          \u003ch3\u003eSIZE GUIDE\u003c\/h3\u003e\r\n          \u003cdiv class=\"toggle-wrapper\"\u003e\r\n            \u003cspan\u003eCM\u003c\/span\u003e\r\n            \u003clabel class=\"toggle\"\u003e\r\n              \u003cinput type=\"checkbox\" id=\"unitToggle\"\u003e\r\n              \u003cspan class=\"slider\"\u003e\u003c\/span\u003e\r\n            \u003c\/label\u003e\r\n            \u003cspan\u003eINCHES\u003c\/span\u003e\r\n          \u003c\/div\u003e\r\n          \u003ctable\u003e\r\n            \u003cthead\u003e\r\n              \u003ctr\u003e\r\n                \u003cth\u003eSIZE\u003c\/th\u003e\r\n                \u003cth id=\"chestHeader\"\u003eCHEST\u003c\/th\u003e\r\n                \u003cth id=\"waistHeader\"\u003eWAIST\u003c\/th\u003e\r\n                \u003cth id=\"hipHeader\"\u003eHIP\u003c\/th\u003e\r\n              \u003c\/tr\u003e\r\n            \u003c\/thead\u003e\r\n            \u003ctbody id=\"tableBody\"\u003e\u003c\/tbody\u003e\r\n          \u003c\/table\u003e\r\n        `;\r\n\t\t\t\trenderSizeTable('cm');\r\n\t\t\t\tdocument.getElementById(\"unitToggle\").addEventListener(\"change\", (e) =\u003e {\r\n\t\t\t\t\trenderSizeTable(e.target.checked ? 'inches' : 'cm');\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction renderSizeTable(unit) {\r\n\t\t\tconst body = document.getElementById(\"tableBody\");\r\n\t\t\tbody.innerHTML = \"\";\r\n\t\t\tsizeData[unit].forEach(row =\u003e {\r\n\t\t\t\tbody.innerHTML += `\r\n      \u003ctr\u003e\r\n        \u003ctd\u003e${row.size}\u003c\/td\u003e\r\n        \u003ctd\u003e${row.chest}\u003c\/td\u003e\r\n        \u003ctd\u003e${row.waist}\u003c\/td\u003e\r\n        \u003ctd\u003e${row.hip}\u003c\/td\u003e\r\n      \u003c\/tr\u003e`;\r\n\t\t\t});\r\n\t\t}\r\n\t\u003c\/script\u003e\r\n\u003c\/body\u003e\r\n\r\n\u003c\/html\u003e","brand":"ttbici","offers":[{"title":"XS","offer_id":48088714445024,"sku":"B6TC-E01-BR0XSM","price":2880.0,"currency_code":"TWD","in_stock":true},{"title":"S","offer_id":48088714477792,"sku":"B6TC-E01-BR00SM","price":2880.0,"currency_code":"TWD","in_stock":true},{"title":"M","offer_id":48088714510560,"sku":"B6TC-E01-BR00MM","price":2880.0,"currency_code":"TWD","in_stock":true},{"title":"L","offer_id":48088714543328,"sku":"B6TC-E01-BR00LM","price":2880.0,"currency_code":"TWD","in_stock":true},{"title":"XL","offer_id":48088714576096,"sku":"B6TC-E01-BR0XLM","price":2880.0,"currency_code":"TWD","in_stock":true},{"title":"2XL","offer_id":48088714608864,"sku":"B6TC-E01-BR2XLM","price":2880.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/dsc09581-3_color-light_brown.jpg?v=1762236361"},{"product_id":"ttbici-e-line-men-s-classic-jersey-pine-green","title":"E Line Men' Classic Jersey \/ Pine Green","description":"The ttbici E Line Classic Jersey seamlessly blends traditional craftsmanship with modern design, embodying understated luxury through exquisite embroidery detailing.\r\n\u003cbr\u003e\u003cbr\u003e\r\nDesigned for comfort and versatility, its relaxed fit adapts effortlessly to various body types, ensuring a refined yet effortless riding experience. Crafted from lightweight, highly breathable fabric, it offers a soft, premium feel, making it ideal for warm-weather rides. The result—an unparalleled balance of performance and elegance for every cyclist.\u003cbr\u003e\u003cbr\u003e\r\n\r\n\u003c!DOCTYPE html\u003e\r\n\u003chtml lang=\"zh-Hant\"\u003e\r\n\r\n\u003chead\u003e\r\n\t\u003cmeta charset=\"UTF-8\" \/\u003e\r\n\t\u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/\u003e\r\n\t\u003cstyle\u003e\r\n\t\tbody.product-modal-open {\r\n\t\t\toverflow: hidden;\r\n\t\t}\r\n\r\n\t\t.product-modal-overlay {\r\n\t\t\tdisplay: none;\r\n\t\t\tposition: fixed;\r\n\t\t\ttop: 0;\r\n\t\t\tleft: 0;\r\n\t\t\twidth: 100vw;\r\n\t\t\theight: 100vh;\r\n\t\t\tbackground-color: rgba(0, 0, 0, 0.5);\r\n\t\t\tbackdrop-filter: blur(2px);\r\n\t\t\tz-index: 1000;\r\n\t\t\tjustify-content: center;\r\n\t\t\talign-items: center;\r\n\t\t}\r\n\r\n\t\t.product-modal {\r\n\t\t\tbackground: white;\r\n\t\t\tpadding: 20px;\r\n\t\t\t\/* border-radius: 10px; *\/\r\n\t\t\tmax-width: 600px;\r\n\t\t\twidth: 90%;\r\n\t\t\tmax-height: 90vh;\r\n\t\t\toverflow-y: auto;\r\n\t\t\tposition: relative;\r\n\t\t}\r\n\r\n\t\t.product-modal .modal-close {\r\n\t\t\tposition: absolute;\r\n\t\t\ttop: 10px;\r\n\t\t\tright: 12px;\r\n\t\t\tfont-size: 20px;\r\n\t\t\tcursor: pointer;\r\n\t\t}\r\n\r\n\t\t\/* ✅ 統一按鈕樣式 *\/\r\n\t\t.button-group {\r\n\t\t\tdisplay: flex;\r\n\t\t\tgap: 12px;\r\n\t\t\tpadding-top: 20px;\r\n\t\t}\r\n\r\n\t\t.button-group button {\r\n\t\t\tpadding: 0px;\r\n\t\t\tborder: none;\r\n\t\t\tbackground-color: transparent;\r\n\t\t\tcolor: #333;\r\n\t\t\tcursor: pointer;\r\n\t\t\t\/* border-radius: 5px; *\/\r\n\t\t\tfont-size: 15px;\r\n\t\t\tfont-family: 'Microsoft JhengHei';\r\n\t\t\ttext-decoration: underline;\r\n\t\t}\r\n\r\n\t\t.button-group button.active {\r\n\t\t\t\/* background-color: #444; *\/\r\n\t\t}\r\n\r\n\t\tbutton:active {\r\n\t\t\tbox-shadow: none !important;\r\n\t\t\tcolor: #333 !important;\r\n\t\t}\r\n\r\n\t\t.product-modal table {\r\n\t\t\twidth: 100%;\r\n\t\t\tborder-collapse: collapse;\r\n\t\t\tmargin-top: 10px;\r\n\t\t}\r\n\r\n\t\t.product-modal th,\r\n\t\t.product-modal td {\r\n\t\t\tborder-bottom: 1px solid #ddd;\r\n\t\t\ttext-align: center;\r\n\t\t\tpadding: 8px;\r\n\t\t}\r\n\r\n\t\t\/* ✅ 新增的欄寬限制 *\/\r\n\t\t.product-modal table th:first-child,\r\n\t\t.product-modal table td:first-child {\r\n\t\t\twidth: 15%;\r\n\t\t\tmax-width: 15%;\r\n\t\t}\r\n\r\n\t\t.product-modal .toggle-wrapper {\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items: center;\r\n\t\t\tgap: 10px;\r\n\t\t\tmargin: 10px 0 20px;\r\n\t\t}\r\n\r\n\t\t.product-modal .toggle {\r\n\t\t\tposition: relative;\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 50px;\r\n\t\t\theight: 24px;\r\n\t\t}\r\n\r\n\t\t.product-modal .toggle input {\r\n\t\t\topacity: 0;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t}\r\n\r\n\t\t.product-modal .slider {\r\n\t\t\tposition: absolute;\r\n\t\t\tcursor: pointer;\r\n\t\t\tbackground-color: #ccc;\r\n\t\t\tborder-radius: 24px;\r\n\t\t\ttop: 0;\r\n\t\t\tleft: 0;\r\n\t\t\tright: 0;\r\n\t\t\tbottom: 0;\r\n\t\t\ttransition: 0.4s;\r\n\t\t}\r\n\r\n\t\t.product-modal .slider:before {\r\n\t\t\tcontent: \"\";\r\n\t\t\tposition: absolute;\r\n\t\t\theight: 18px;\r\n\t\t\twidth: 18px;\r\n\t\t\tleft: 3px;\r\n\t\t\tbottom: 3px;\r\n\t\t\tbackground-color: white;\r\n\t\t\ttransition: 0.4s;\r\n\t\t\tborder-radius: 50%;\r\n\t\t}\r\n\r\n\t\t.product-modal input:checked+.slider {\r\n\t\t\tbackground-color: #333;\r\n\t\t}\r\n\r\n\t\t.product-modal input:checked+.slider:before {\r\n\t\t\ttransform: translateX(26px);\r\n\t\t}\r\n\r\n\t\t.product-modal .modalInnerContent h3 {\r\n\t\t\tpadding: 20px 0;\r\n\r\n\t\t}\r\n\t\u003c\/style\u003e\r\n\u003c\/head\u003e\r\n\r\n\u003cbody\u003e\r\n\r\n\t\u003c!-- 外部觸發按鈕 --\u003e\r\n\t\u003cdiv class=\"button-group\"\u003e\r\n\t\t\u003c!-- \u003cbutton onclick=\"openModal('shipping')\"\u003e運送詳情\u003c\/button\u003e --\u003e\r\n\t\t\u003cbutton onclick=\"openModal('size')\"\u003eSIZE GUIDE\u003c\/button\u003e\r\n\t\t\u003cbutton onclick=\"openModal('care')\"\u003eCARE\u003c\/button\u003e\r\n\t\u003c\/div\u003e\r\n\r\n\t\u003c!-- Modal --\u003e\r\n\t\u003cdiv class=\"product-modal-overlay\" id=\"modalOverlay\"\u003e\r\n\t\t\u003cdiv class=\"product-modal\" id=\"modalContent\"\u003e\r\n\t\t\t\u003cdiv class=\"modal-close\" onclick=\"closeModal()\"\u003e×\u003c\/div\u003e\r\n\r\n\t\t\t\u003c!-- 內部選單 --\u003e\r\n\t\t\t\u003cdiv class=\"button-group\" id=\"infoTabs\"\u003e\r\n\t\t\t\t\u003c!-- \u003cbutton id=\"tab-shipping\" onclick=\"switchTab('shipping')\"\u003e運送詳情\u003c\/button\u003e --\u003e\r\n\t\t\t\t\u003cbutton id=\"tab-size\" onclick=\"switchTab('size')\"\u003eSIZE GUIDE\u003c\/button\u003e\r\n\t\t\t\t\u003cbutton id=\"tab-care\" onclick=\"switchTab('care')\"\u003eCARE\u003c\/button\u003e\r\n\t\t\t\u003c\/div\u003e\r\n\r\n\t\t\t\u003c!-- 內容區 --\u003e\r\n\t\t\t\u003cdiv id=\"modalInnerContent\"\u003e\u003c\/div\u003e\r\n\t\t\u003c\/div\u003e\r\n\t\u003c\/div\u003e\r\n\r\n\t\u003cscript\u003e\r\n\t\tconst modalOverlay = document.getElementById(\"modalOverlay\");\r\n\t\tconst modalInner = document.getElementById(\"modalInnerContent\");\r\n\r\n\t\tconst sizeData = {\r\n\t\t\tcm: [\r\n\t\t\t\t{ size: 'XS', chest: '80–88', waist: '68–76', hip: '82–90' },\r\n\t\t\t\t{ size: 'S', chest: '85–93', waist: '73–81', hip: '87–95' },\r\n\t\t\t\t{ size: 'M', chest: '89–97', waist: '77–85', hip: '91–99' },\r\n\t\t\t\t{ size: 'L', chest: '93–101', waist: '81–89', hip: '95–103' },\r\n\t\t\t\t{ size: 'XL', chest: '97–105', waist: '85–93', hip: '99–107' },\r\n\t\t\t\t{ size: '2XL', chest: '101–109', waist: '89–97', hip: '103–111' }\r\n\t\t\t],\r\n\t\t\tinches: [\r\n\t\t\t\t{ size: 'XS', chest: '32–35', waist: '27–30', hip: '32–35' },\r\n\t\t\t\t{ size: 'S', chest: '34–37', waist: '29–32', hip: '34–37' },\r\n\t\t\t\t{ size: 'M', chest: '35–38', waist: '30–33', hip: '36–39' },\r\n\t\t\t\t{ size: 'L', chest: '37–40', waist: '32–35', hip: '37–40' },\r\n\t\t\t\t{ size: 'XL', chest: '38–41', waist: '34–37', hip: '39–42' },\r\n\t\t\t\t{ size: '2XL', chest: '40–43', waist: '35–38', hip: '41–44' }\r\n\t\t\t]\r\n\t\t};\r\n\r\n\t\tfunction openModal(defaultTab) {\r\n\t\t\tdocument.body.classList.add(\"product-modal-open\");\r\n\t\t\tmodalOverlay.style.display = \"flex\";\r\n\t\t\tswitchTab(defaultTab);\r\n\t\t}\r\n\r\n\t\tfunction closeModal() {\r\n\t\t\tmodalOverlay.style.display = \"none\";\r\n\t\t\tmodalInner.innerHTML = \"\";\r\n\t\t\tdocument.body.classList.remove(\"product-modal-open\");\r\n\t\t}\r\n\r\n\t\tfunction switchTab(tab) {\r\n\t\t\t['shipping', 'care', 'size'].forEach(id =\u003e {\r\n\t\t\t\tconst btn = document.getElementById(`tab-${id}`);\r\n\t\t\t\tif (btn) btn.classList.remove(\"active\");\r\n\t\t\t});\r\n\r\n\t\t\tconst activeBtn = document.getElementById(`tab-${tab}`);\r\n\t\t\tif (activeBtn) activeBtn.classList.add(\"active\");\r\n\r\n\t\t\tif (tab === 'shipping') {\r\n\t\t\t\tmodalInner.innerHTML = `\u003ch3\u003e運送詳情\u003c\/h3\u003e\u003cp\u003e這裡可以放運送方式、時間、費用等資訊。\u003c\/p\u003e`;\r\n\t\t\t} else if (tab === 'care') {\r\n\t\t\t\tmodalInner.innerHTML = `\r\n\t\t\u003ch3\u003eCARE\u003c\/h3\u003e\r\n\t\t\u003col\u003e\r\n\t\t\t\u003cli\u003eWhen wearing cycling jerseys, it is strongly recommended to wear and wash them based on the colors to reduce the risk of clothes bleeding colors onto each other.\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eAfter use, it is advisable to clean them promptly to prevent bacteria growth, odor formation, and the development of sweat stains, or even yellowing on the clothing.\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eWhen cleaning, remember to zip up all zippers to prevent fabric damage during the wash. Soak the clothing in \"cold water with neutral detergent\" for 5 - 10 minutes, then agitate it gently.\u003cbr\u003e\r\n\t\t\t\u003cstrong\u003e※ Do not use cold wash, fabric softener, or bleach, as these detergents can damage the fabric.\u003c\/strong\u003e\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eHand washing is preferred, but if you choose to use a washing machine, make sure to zip up all zippers, place the clothing inside a laundry bag, and wash it on the \" delicate wash mode\"\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eAfter washing, avoid \"wringing out\" the clothing, and refrain from using a dryer, as this may damage the fabric. Instead, wrap the clothing in a towel to remove excess moisture and hang it to air dry in a well-ventilated, cool place.\u003c\/li\u003e\r\n\t\t\u003c\/ol\u003e\r\n\t\t\u003cp\u003e\u003cstrong\u003e※ Due to variations in manufacturing processes and dyeing methods, some fading may occur when wearing or washing cycling clothing, especially for brighter colors. We strongly recommend you to wear and wash them with similar colors.\u003c\/strong\u003e\u003c\/p\u003e\r\n\t`;\r\n\r\n\t\t\t} else if (tab === 'size') {\r\n\t\t\t\tmodalInner.innerHTML = `\r\n          \u003ch3\u003eSIZE GUIDE\u003c\/h3\u003e\r\n          \u003cdiv class=\"toggle-wrapper\"\u003e\r\n            \u003cspan\u003eCM\u003c\/span\u003e\r\n            \u003clabel class=\"toggle\"\u003e\r\n              \u003cinput type=\"checkbox\" id=\"unitToggle\"\u003e\r\n              \u003cspan class=\"slider\"\u003e\u003c\/span\u003e\r\n            \u003c\/label\u003e\r\n            \u003cspan\u003eINCHES\u003c\/span\u003e\r\n          \u003c\/div\u003e\r\n          \u003ctable\u003e\r\n            \u003cthead\u003e\r\n              \u003ctr\u003e\r\n                \u003cth\u003eSIZE\u003c\/th\u003e\r\n                \u003cth id=\"chestHeader\"\u003eCHEST\u003c\/th\u003e\r\n                \u003cth id=\"waistHeader\"\u003eWAIST\u003c\/th\u003e\r\n                \u003cth id=\"hipHeader\"\u003eHIP\u003c\/th\u003e\r\n              \u003c\/tr\u003e\r\n            \u003c\/thead\u003e\r\n            \u003ctbody id=\"tableBody\"\u003e\u003c\/tbody\u003e\r\n          \u003c\/table\u003e\r\n        `;\r\n\t\t\t\trenderSizeTable('cm');\r\n\t\t\t\tdocument.getElementById(\"unitToggle\").addEventListener(\"change\", (e) =\u003e {\r\n\t\t\t\t\trenderSizeTable(e.target.checked ? 'inches' : 'cm');\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction renderSizeTable(unit) {\r\n\t\t\tconst body = document.getElementById(\"tableBody\");\r\n\t\t\tbody.innerHTML = \"\";\r\n\t\t\tsizeData[unit].forEach(row =\u003e {\r\n\t\t\t\tbody.innerHTML += `\r\n      \u003ctr\u003e\r\n        \u003ctd\u003e${row.size}\u003c\/td\u003e\r\n        \u003ctd\u003e${row.chest}\u003c\/td\u003e\r\n        \u003ctd\u003e${row.waist}\u003c\/td\u003e\r\n        \u003ctd\u003e${row.hip}\u003c\/td\u003e\r\n      \u003c\/tr\u003e`;\r\n\t\t\t});\r\n\t\t}\r\n\t\u003c\/script\u003e\r\n\u003c\/body\u003e\r\n\r\n\u003c\/html\u003e","brand":"ttbici","offers":[{"title":"XS","offer_id":48088715264224,"sku":"B6TC-E01-GR0XSM","price":2880.0,"currency_code":"TWD","in_stock":true},{"title":"S","offer_id":48088715296992,"sku":"B6TC-E01-GR00SM","price":2880.0,"currency_code":"TWD","in_stock":true},{"title":"M","offer_id":48088715329760,"sku":"B6TC-E01-GR00MM","price":2880.0,"currency_code":"TWD","in_stock":false},{"title":"L","offer_id":48088715362528,"sku":"B6TC-E01-GR00LM","price":2880.0,"currency_code":"TWD","in_stock":true},{"title":"XL","offer_id":48088715395296,"sku":"B6TC-E01-GR0XLM","price":2880.0,"currency_code":"TWD","in_stock":true},{"title":"2XL","offer_id":48088715428064,"sku":"B6TC-E01-GR2XLM","price":2880.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/dsc09581-3_color-deep_green_a.jpg?v=1762236370"},{"product_id":"e-line-men-s-classic-thermal-ls-jersey-black","title":"e Line Men' Classic Thermal Ls Jersey \/ Black","description":"The ttbici e Line Classic Thermal Long Sleeve Jersey is designed for cold-weather rides. Its brushed fleece interior offers warmth and flexibility, while the DWR coating repels wind and light rain. With e Line’s minimalist design and refined embroidery, it delivers understated style and steady performance.\r\n\u003cbr\u003e\u003cbr\u003e\r\nRecommended for temperatures below 15°C\r\n\u003cbr\u003e\u003cbr\u003e\r\n\r\n\u003c!DOCTYPE html\u003e\r\n\u003chtml lang=\"zh-Hant\"\u003e\r\n\r\n\u003chead\u003e\r\n\t\u003cmeta charset=\"UTF-8\" \/\u003e\r\n\t\u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/\u003e\r\n\t\u003cstyle\u003e\r\n\t\tbody.product-modal-open {\r\n\t\t\toverflow: hidden;\r\n\t\t}\r\n\r\n\t\t.product-modal-overlay {\r\n\t\t\tdisplay: none;\r\n\t\t\tposition: fixed;\r\n\t\t\ttop: 0;\r\n\t\t\tleft: 0;\r\n\t\t\twidth: 100vw;\r\n\t\t\theight: 100vh;\r\n\t\t\tbackground-color: rgba(0, 0, 0, 0.5);\r\n\t\t\tbackdrop-filter: blur(2px);\r\n\t\t\tz-index: 1000;\r\n\t\t\tjustify-content: center;\r\n\t\t\talign-items: center;\r\n\t\t}\r\n\r\n\t\t.product-modal {\r\n\t\t\tbackground: white;\r\n\t\t\tpadding: 20px;\r\n\t\t\t\/* border-radius: 10px; *\/\r\n\t\t\tmax-width: 600px;\r\n\t\t\twidth: 90%;\r\n\t\t\tmax-height: 90vh;\r\n\t\t\toverflow-y: auto;\r\n\t\t\tposition: relative;\r\n\t\t}\r\n\r\n\t\t.product-modal .modal-close {\r\n\t\t\tposition: absolute;\r\n\t\t\ttop: 10px;\r\n\t\t\tright: 12px;\r\n\t\t\tfont-size: 20px;\r\n\t\t\tcursor: pointer;\r\n\t\t}\r\n\r\n\t\t\/* ✅ 統一按鈕樣式 *\/\r\n\t\t.button-group {\r\n\t\t\tdisplay: flex;\r\n\t\t\tgap: 12px;\r\n\t\t\tpadding-top: 20px;\r\n\t\t}\r\n\r\n\t\t.button-group button {\r\n\t\t\tpadding: 0px;\r\n\t\t\tborder: none;\r\n\t\t\tbackground-color: transparent;\r\n\t\t\tcolor: #333;\r\n\t\t\tcursor: pointer;\r\n\t\t\t\/* border-radius: 5px; *\/\r\n\t\t\tfont-size: 15px;\r\n\t\t\tfont-family: 'Microsoft JhengHei';\r\n\t\t\ttext-decoration: underline;\r\n\t\t}\r\n\r\n\t\t.button-group button.active {\r\n\t\t\t\/* background-color: #444; *\/\r\n\t\t}\r\n\r\n\t\tbutton:active {\r\n\t\t\tbox-shadow: none !important;\r\n\t\t\tcolor: #333 !important;\r\n\t\t}\r\n\r\n\t\t.product-modal table {\r\n\t\t\twidth: 100%;\r\n\t\t\tborder-collapse: collapse;\r\n\t\t\tmargin-top: 10px;\r\n\t\t}\r\n\r\n\t\t.product-modal th,\r\n\t\t.product-modal td {\r\n\t\t\tborder-bottom: 1px solid #ddd;\r\n\t\t\ttext-align: center;\r\n\t\t\tpadding: 8px;\r\n\t\t}\r\n\r\n\t\t\/* ✅ 新增的欄寬限制 *\/\r\n\t\t.product-modal table th:first-child,\r\n\t\t.product-modal table td:first-child {\r\n\t\t\twidth: 15%;\r\n\t\t\tmax-width: 15%;\r\n\t\t}\r\n\r\n\t\t.product-modal .toggle-wrapper {\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items: center;\r\n\t\t\tgap: 10px;\r\n\t\t\tmargin: 10px 0 20px;\r\n\t\t}\r\n\r\n\t\t.product-modal .toggle {\r\n\t\t\tposition: relative;\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 50px;\r\n\t\t\theight: 24px;\r\n\t\t}\r\n\r\n\t\t.product-modal .toggle input {\r\n\t\t\topacity: 0;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t}\r\n\r\n\t\t.product-modal .slider {\r\n\t\t\tposition: absolute;\r\n\t\t\tcursor: pointer;\r\n\t\t\tbackground-color: #ccc;\r\n\t\t\tborder-radius: 24px;\r\n\t\t\ttop: 0;\r\n\t\t\tleft: 0;\r\n\t\t\tright: 0;\r\n\t\t\tbottom: 0;\r\n\t\t\ttransition: 0.4s;\r\n\t\t}\r\n\r\n\t\t.product-modal .slider:before {\r\n\t\t\tcontent: \"\";\r\n\t\t\tposition: absolute;\r\n\t\t\theight: 18px;\r\n\t\t\twidth: 18px;\r\n\t\t\tleft: 3px;\r\n\t\t\tbottom: 3px;\r\n\t\t\tbackground-color: white;\r\n\t\t\ttransition: 0.4s;\r\n\t\t\tborder-radius: 50%;\r\n\t\t}\r\n\r\n\t\t.product-modal input:checked+.slider {\r\n\t\t\tbackground-color: #333;\r\n\t\t}\r\n\r\n\t\t.product-modal input:checked+.slider:before {\r\n\t\t\ttransform: translateX(26px);\r\n\t\t}\r\n\r\n\t\t.product-modal .modalInnerContent h3 {\r\n\t\t\tpadding: 20px 0;\r\n\r\n\t\t}\r\n\t\u003c\/style\u003e\r\n\u003c\/head\u003e\r\n\r\n\u003cbody\u003e\r\n\r\n\t\u003c!-- 外部觸發按鈕 --\u003e\r\n\t\u003cdiv class=\"button-group\"\u003e\r\n\t\t\u003c!-- \u003cbutton onclick=\"openModal('shipping')\"\u003e運送詳情\u003c\/button\u003e --\u003e\r\n\t\t\u003cbutton onclick=\"openModal('size')\"\u003eSIZE GUIDE\u003c\/button\u003e\r\n\t\t\u003cbutton onclick=\"openModal('care')\"\u003eCARE\u003c\/button\u003e\r\n\t\u003c\/div\u003e\r\n\r\n\t\u003c!-- Modal --\u003e\r\n\t\u003cdiv class=\"product-modal-overlay\" id=\"modalOverlay\"\u003e\r\n\t\t\u003cdiv class=\"product-modal\" id=\"modalContent\"\u003e\r\n\t\t\t\u003cdiv class=\"modal-close\" onclick=\"closeModal()\"\u003e×\u003c\/div\u003e\r\n\r\n\t\t\t\u003c!-- 內部選單 --\u003e\r\n\t\t\t\u003cdiv class=\"button-group\" id=\"infoTabs\"\u003e\r\n\t\t\t\t\u003c!-- \u003cbutton id=\"tab-shipping\" onclick=\"switchTab('shipping')\"\u003e運送詳情\u003c\/button\u003e --\u003e\r\n\t\t\t\t\u003cbutton id=\"tab-size\" onclick=\"switchTab('size')\"\u003eSIZE GUIDE\u003c\/button\u003e\r\n\t\t\t\t\u003cbutton id=\"tab-care\" onclick=\"switchTab('care')\"\u003eCARE\u003c\/button\u003e\r\n\t\t\t\u003c\/div\u003e\r\n\r\n\t\t\t\u003c!-- 內容區 --\u003e\r\n\t\t\t\u003cdiv id=\"modalInnerContent\"\u003e\u003c\/div\u003e\r\n\t\t\u003c\/div\u003e\r\n\t\u003c\/div\u003e\r\n\r\n\t\u003cscript\u003e\r\n\t\tconst modalOverlay = document.getElementById(\"modalOverlay\");\r\n\t\tconst modalInner = document.getElementById(\"modalInnerContent\");\r\n\r\n\t\tconst sizeData = {\r\n\t\t\tcm: [\r\n\t\t\t\t{ size: 'XS', chest: '80–88', waist: '68–76', hip: '82–90' },\r\n\t\t\t\t{ size: 'S', chest: '85–93', waist: '73–81', hip: '87–95' },\r\n\t\t\t\t{ size: 'M', chest: '89–97', waist: '77–85', hip: '91–99' },\r\n\t\t\t\t{ size: 'L', chest: '93–101', waist: '81–89', hip: '95–103' },\r\n\t\t\t\t{ size: 'XL', chest: '97–105', waist: '85–93', hip: '99–107' },\r\n\t\t\t\t{ size: '2XL', chest: '101–109', waist: '89–97', hip: '103–111' }\r\n\t\t\t],\r\n\t\t\tinches: [\r\n\t\t\t\t{ size: 'XS', chest: '32–35', waist: '27–30', hip: '32–35' },\r\n\t\t\t\t{ size: 'S', chest: '34–37', waist: '29–32', hip: '34–37' },\r\n\t\t\t\t{ size: 'M', chest: '35–38', waist: '30–33', hip: '36–39' },\r\n\t\t\t\t{ size: 'L', chest: '37–40', waist: '32–35', hip: '37–40' },\r\n\t\t\t\t{ size: 'XL', chest: '38–41', waist: '34–37', hip: '39–42' },\r\n\t\t\t\t{ size: '2XL', chest: '40–43', waist: '35–38', hip: '41–44' }\r\n\t\t\t]\r\n\t\t};\r\n\r\n\t\tfunction openModal(defaultTab) {\r\n\t\t\tdocument.body.classList.add(\"product-modal-open\");\r\n\t\t\tmodalOverlay.style.display = \"flex\";\r\n\t\t\tswitchTab(defaultTab);\r\n\t\t}\r\n\r\n\t\tfunction closeModal() {\r\n\t\t\tmodalOverlay.style.display = \"none\";\r\n\t\t\tmodalInner.innerHTML = \"\";\r\n\t\t\tdocument.body.classList.remove(\"product-modal-open\");\r\n\t\t}\r\n\r\n\t\tfunction switchTab(tab) {\r\n\t\t\t['shipping', 'care', 'size'].forEach(id =\u003e {\r\n\t\t\t\tconst btn = document.getElementById(`tab-${id}`);\r\n\t\t\t\tif (btn) btn.classList.remove(\"active\");\r\n\t\t\t});\r\n\r\n\t\t\tconst activeBtn = document.getElementById(`tab-${tab}`);\r\n\t\t\tif (activeBtn) activeBtn.classList.add(\"active\");\r\n\r\n\t\t\tif (tab === 'shipping') {\r\n\t\t\t\tmodalInner.innerHTML = `\u003ch3\u003e運送詳情\u003c\/h3\u003e\u003cp\u003e這裡可以放運送方式、時間、費用等資訊。\u003c\/p\u003e`;\r\n\t\t\t} else if (tab === 'care') {\r\n\t\t\t\tmodalInner.innerHTML = `\r\n\t\t\u003ch3\u003eCARE\u003c\/h3\u003e\r\n\t\t\u003col\u003e\r\n\t\t\t\u003cli\u003eWhen wearing cycling jerseys, it is strongly recommended to wear and wash them based on the colors to reduce the risk of clothes bleeding colors onto each other.\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eAfter use, it is advisable to clean them promptly to prevent bacteria growth, odor formation, and the development of sweat stains, or even yellowing on the clothing.\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eWhen cleaning, remember to zip up all zippers to prevent fabric damage during the wash. Soak the clothing in \"cold water with neutral detergent\" for 5 - 10 minutes, then agitate it gently.\u003cbr\u003e\r\n\t\t\t\u003cstrong\u003e※ Do not use cold wash, fabric softener, or bleach, as these detergents can damage the fabric.\u003c\/strong\u003e\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eHand washing is preferred, but if you choose to use a washing machine, make sure to zip up all zippers, place the clothing inside a laundry bag, and wash it on the \" delicate wash mode\"\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eAfter washing, avoid \"wringing out\" the clothing, and refrain from using a dryer, as this may damage the fabric. Instead, wrap the clothing in a towel to remove excess moisture and hang it to air dry in a well-ventilated, cool place.\u003c\/li\u003e\r\n\t\t\u003c\/ol\u003e\r\n\t\t\u003cp\u003e\u003cstrong\u003e※ Due to variations in manufacturing processes and dyeing methods, some fading may occur when wearing or washing cycling clothing, especially for brighter colors. We strongly recommend you to wear and wash them with similar colors.\u003c\/strong\u003e\u003c\/p\u003e\r\n\t`;\r\n\r\n\t\t\t} else if (tab === 'size') {\r\n\t\t\t\tmodalInner.innerHTML = `\r\n          \u003ch3\u003eSIZE GUIDE\u003c\/h3\u003e\r\n          \u003cdiv class=\"toggle-wrapper\"\u003e\r\n            \u003cspan\u003eCM\u003c\/span\u003e\r\n            \u003clabel class=\"toggle\"\u003e\r\n              \u003cinput type=\"checkbox\" id=\"unitToggle\"\u003e\r\n              \u003cspan class=\"slider\"\u003e\u003c\/span\u003e\r\n            \u003c\/label\u003e\r\n            \u003cspan\u003eINCHES\u003c\/span\u003e\r\n          \u003c\/div\u003e\r\n          \u003ctable\u003e\r\n            \u003cthead\u003e\r\n              \u003ctr\u003e\r\n                \u003cth\u003eSIZE\u003c\/th\u003e\r\n                \u003cth id=\"chestHeader\"\u003eCHEST\u003c\/th\u003e\r\n                \u003cth id=\"waistHeader\"\u003eWAIST\u003c\/th\u003e\r\n                \u003cth id=\"hipHeader\"\u003eHIP\u003c\/th\u003e\r\n              \u003c\/tr\u003e\r\n            \u003c\/thead\u003e\r\n            \u003ctbody id=\"tableBody\"\u003e\u003c\/tbody\u003e\r\n          \u003c\/table\u003e\r\n        `;\r\n\t\t\t\trenderSizeTable('cm');\r\n\t\t\t\tdocument.getElementById(\"unitToggle\").addEventListener(\"change\", (e) =\u003e {\r\n\t\t\t\t\trenderSizeTable(e.target.checked ? 'inches' : 'cm');\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction renderSizeTable(unit) {\r\n\t\t\tconst body = document.getElementById(\"tableBody\");\r\n\t\t\tbody.innerHTML = \"\";\r\n\t\t\tsizeData[unit].forEach(row =\u003e {\r\n\t\t\t\tbody.innerHTML += `\r\n      \u003ctr\u003e\r\n        \u003ctd\u003e${row.size}\u003c\/td\u003e\r\n        \u003ctd\u003e${row.chest}\u003c\/td\u003e\r\n        \u003ctd\u003e${row.waist}\u003c\/td\u003e\r\n        \u003ctd\u003e${row.hip}\u003c\/td\u003e\r\n      \u003c\/tr\u003e`;\r\n\t\t\t});\r\n\t\t}\r\n\t\u003c\/script\u003e\r\n\u003c\/body\u003e\r\n\r\n\u003c\/html\u003e","brand":"ttbici","offers":[{"title":"XS","offer_id":48531779879136,"sku":"B6TC-E03-BK0XSM","price":3880.0,"currency_code":"TWD","in_stock":true},{"title":"S","offer_id":48531779911904,"sku":"B6TC-E03-BK00SM","price":3880.0,"currency_code":"TWD","in_stock":true},{"title":"M","offer_id":48531779944672,"sku":"B6TC-E03-BK00MM","price":3880.0,"currency_code":"TWD","in_stock":true},{"title":"L","offer_id":48531779977440,"sku":"B6TC-E03-BK00LM","price":3880.0,"currency_code":"TWD","in_stock":true},{"title":"XL","offer_id":48531780010208,"sku":"B6TC-E03-BK0XLM","price":3880.0,"currency_code":"TWD","in_stock":true},{"title":"2XL","offer_id":48531780042976,"sku":"B6TC-E03-BK2XLM","price":3880.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/men_classic_thermal_ls_jersey_black_01.jpg?v=1768183321"},{"product_id":"e-line-men-s-classic-thermal-ls-jersey-maroon","title":"e Line Men' Classic Thermal Ls Jersey \/ Maroon","description":"The ttbici e Line Classic Thermal Long Sleeve Jersey is designed for cold-weather rides. Its brushed fleece interior offers warmth and flexibility, while the DWR coating repels wind and light rain. With e Line’s minimalist design and refined embroidery, it delivers understated style and steady performance.\r\n\u003cbr\u003e\u003cbr\u003e\r\nRecommended for temperatures below 15°C\r\n\u003cbr\u003e\u003cbr\u003e\r\n\r\n\u003c!DOCTYPE html\u003e\r\n\u003chtml lang=\"zh-Hant\"\u003e\r\n\r\n\u003chead\u003e\r\n\t\u003cmeta charset=\"UTF-8\" \/\u003e\r\n\t\u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/\u003e\r\n\t\u003cstyle\u003e\r\n\t\tbody.product-modal-open {\r\n\t\t\toverflow: hidden;\r\n\t\t}\r\n\r\n\t\t.product-modal-overlay {\r\n\t\t\tdisplay: none;\r\n\t\t\tposition: fixed;\r\n\t\t\ttop: 0;\r\n\t\t\tleft: 0;\r\n\t\t\twidth: 100vw;\r\n\t\t\theight: 100vh;\r\n\t\t\tbackground-color: rgba(0, 0, 0, 0.5);\r\n\t\t\tbackdrop-filter: blur(2px);\r\n\t\t\tz-index: 1000;\r\n\t\t\tjustify-content: center;\r\n\t\t\talign-items: center;\r\n\t\t}\r\n\r\n\t\t.product-modal {\r\n\t\t\tbackground: white;\r\n\t\t\tpadding: 20px;\r\n\t\t\t\/* border-radius: 10px; *\/\r\n\t\t\tmax-width: 600px;\r\n\t\t\twidth: 90%;\r\n\t\t\tmax-height: 90vh;\r\n\t\t\toverflow-y: auto;\r\n\t\t\tposition: relative;\r\n\t\t}\r\n\r\n\t\t.product-modal .modal-close {\r\n\t\t\tposition: absolute;\r\n\t\t\ttop: 10px;\r\n\t\t\tright: 12px;\r\n\t\t\tfont-size: 20px;\r\n\t\t\tcursor: pointer;\r\n\t\t}\r\n\r\n\t\t\/* ✅ 統一按鈕樣式 *\/\r\n\t\t.button-group {\r\n\t\t\tdisplay: flex;\r\n\t\t\tgap: 12px;\r\n\t\t\tpadding-top: 20px;\r\n\t\t}\r\n\r\n\t\t.button-group button {\r\n\t\t\tpadding: 0px;\r\n\t\t\tborder: none;\r\n\t\t\tbackground-color: transparent;\r\n\t\t\tcolor: #333;\r\n\t\t\tcursor: pointer;\r\n\t\t\t\/* border-radius: 5px; *\/\r\n\t\t\tfont-size: 15px;\r\n\t\t\tfont-family: 'Microsoft JhengHei';\r\n\t\t\ttext-decoration: underline;\r\n\t\t}\r\n\r\n\t\t.button-group button.active {\r\n\t\t\t\/* background-color: #444; *\/\r\n\t\t}\r\n\r\n\t\tbutton:active {\r\n\t\t\tbox-shadow: none !important;\r\n\t\t\tcolor: #333 !important;\r\n\t\t}\r\n\r\n\t\t.product-modal table {\r\n\t\t\twidth: 100%;\r\n\t\t\tborder-collapse: collapse;\r\n\t\t\tmargin-top: 10px;\r\n\t\t}\r\n\r\n\t\t.product-modal th,\r\n\t\t.product-modal td {\r\n\t\t\tborder-bottom: 1px solid #ddd;\r\n\t\t\ttext-align: center;\r\n\t\t\tpadding: 8px;\r\n\t\t}\r\n\r\n\t\t\/* ✅ 新增的欄寬限制 *\/\r\n\t\t.product-modal table th:first-child,\r\n\t\t.product-modal table td:first-child {\r\n\t\t\twidth: 15%;\r\n\t\t\tmax-width: 15%;\r\n\t\t}\r\n\r\n\t\t.product-modal .toggle-wrapper {\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items: center;\r\n\t\t\tgap: 10px;\r\n\t\t\tmargin: 10px 0 20px;\r\n\t\t}\r\n\r\n\t\t.product-modal .toggle {\r\n\t\t\tposition: relative;\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 50px;\r\n\t\t\theight: 24px;\r\n\t\t}\r\n\r\n\t\t.product-modal .toggle input {\r\n\t\t\topacity: 0;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t}\r\n\r\n\t\t.product-modal .slider {\r\n\t\t\tposition: absolute;\r\n\t\t\tcursor: pointer;\r\n\t\t\tbackground-color: #ccc;\r\n\t\t\tborder-radius: 24px;\r\n\t\t\ttop: 0;\r\n\t\t\tleft: 0;\r\n\t\t\tright: 0;\r\n\t\t\tbottom: 0;\r\n\t\t\ttransition: 0.4s;\r\n\t\t}\r\n\r\n\t\t.product-modal .slider:before {\r\n\t\t\tcontent: \"\";\r\n\t\t\tposition: absolute;\r\n\t\t\theight: 18px;\r\n\t\t\twidth: 18px;\r\n\t\t\tleft: 3px;\r\n\t\t\tbottom: 3px;\r\n\t\t\tbackground-color: white;\r\n\t\t\ttransition: 0.4s;\r\n\t\t\tborder-radius: 50%;\r\n\t\t}\r\n\r\n\t\t.product-modal input:checked+.slider {\r\n\t\t\tbackground-color: #333;\r\n\t\t}\r\n\r\n\t\t.product-modal input:checked+.slider:before {\r\n\t\t\ttransform: translateX(26px);\r\n\t\t}\r\n\r\n\t\t.product-modal .modalInnerContent h3 {\r\n\t\t\tpadding: 20px 0;\r\n\r\n\t\t}\r\n\t\u003c\/style\u003e\r\n\u003c\/head\u003e\r\n\r\n\u003cbody\u003e\r\n\r\n\t\u003c!-- 外部觸發按鈕 --\u003e\r\n\t\u003cdiv class=\"button-group\"\u003e\r\n\t\t\u003c!-- \u003cbutton onclick=\"openModal('shipping')\"\u003e運送詳情\u003c\/button\u003e --\u003e\r\n\t\t\u003cbutton onclick=\"openModal('size')\"\u003eSIZE GUIDE\u003c\/button\u003e\r\n\t\t\u003cbutton onclick=\"openModal('care')\"\u003eCARE\u003c\/button\u003e\r\n\t\u003c\/div\u003e\r\n\r\n\t\u003c!-- Modal --\u003e\r\n\t\u003cdiv class=\"product-modal-overlay\" id=\"modalOverlay\"\u003e\r\n\t\t\u003cdiv class=\"product-modal\" id=\"modalContent\"\u003e\r\n\t\t\t\u003cdiv class=\"modal-close\" onclick=\"closeModal()\"\u003e×\u003c\/div\u003e\r\n\r\n\t\t\t\u003c!-- 內部選單 --\u003e\r\n\t\t\t\u003cdiv class=\"button-group\" id=\"infoTabs\"\u003e\r\n\t\t\t\t\u003c!-- \u003cbutton id=\"tab-shipping\" onclick=\"switchTab('shipping')\"\u003e運送詳情\u003c\/button\u003e --\u003e\r\n\t\t\t\t\u003cbutton id=\"tab-size\" onclick=\"switchTab('size')\"\u003eSIZE GUIDE\u003c\/button\u003e\r\n\t\t\t\t\u003cbutton id=\"tab-care\" onclick=\"switchTab('care')\"\u003eCARE\u003c\/button\u003e\r\n\t\t\t\u003c\/div\u003e\r\n\r\n\t\t\t\u003c!-- 內容區 --\u003e\r\n\t\t\t\u003cdiv id=\"modalInnerContent\"\u003e\u003c\/div\u003e\r\n\t\t\u003c\/div\u003e\r\n\t\u003c\/div\u003e\r\n\r\n\t\u003cscript\u003e\r\n\t\tconst modalOverlay = document.getElementById(\"modalOverlay\");\r\n\t\tconst modalInner = document.getElementById(\"modalInnerContent\");\r\n\r\n\t\tconst sizeData = {\r\n\t\t\tcm: [\r\n\t\t\t\t{ size: 'XS', chest: '80–88', waist: '68–76', hip: '82–90' },\r\n\t\t\t\t{ size: 'S', chest: '85–93', waist: '73–81', hip: '87–95' },\r\n\t\t\t\t{ size: 'M', chest: '89–97', waist: '77–85', hip: '91–99' },\r\n\t\t\t\t{ size: 'L', chest: '93–101', waist: '81–89', hip: '95–103' },\r\n\t\t\t\t{ size: 'XL', chest: '97–105', waist: '85–93', hip: '99–107' },\r\n\t\t\t\t{ size: '2XL', chest: '101–109', waist: '89–97', hip: '103–111' }\r\n\t\t\t],\r\n\t\t\tinches: [\r\n\t\t\t\t{ size: 'XS', chest: '32–35', waist: '27–30', hip: '32–35' },\r\n\t\t\t\t{ size: 'S', chest: '34–37', waist: '29–32', hip: '34–37' },\r\n\t\t\t\t{ size: 'M', chest: '35–38', waist: '30–33', hip: '36–39' },\r\n\t\t\t\t{ size: 'L', chest: '37–40', waist: '32–35', hip: '37–40' },\r\n\t\t\t\t{ size: 'XL', chest: '38–41', waist: '34–37', hip: '39–42' },\r\n\t\t\t\t{ size: '2XL', chest: '40–43', waist: '35–38', hip: '41–44' }\r\n\t\t\t]\r\n\t\t};\r\n\r\n\t\tfunction openModal(defaultTab) {\r\n\t\t\tdocument.body.classList.add(\"product-modal-open\");\r\n\t\t\tmodalOverlay.style.display = \"flex\";\r\n\t\t\tswitchTab(defaultTab);\r\n\t\t}\r\n\r\n\t\tfunction closeModal() {\r\n\t\t\tmodalOverlay.style.display = \"none\";\r\n\t\t\tmodalInner.innerHTML = \"\";\r\n\t\t\tdocument.body.classList.remove(\"product-modal-open\");\r\n\t\t}\r\n\r\n\t\tfunction switchTab(tab) {\r\n\t\t\t['shipping', 'care', 'size'].forEach(id =\u003e {\r\n\t\t\t\tconst btn = document.getElementById(`tab-${id}`);\r\n\t\t\t\tif (btn) btn.classList.remove(\"active\");\r\n\t\t\t});\r\n\r\n\t\t\tconst activeBtn = document.getElementById(`tab-${tab}`);\r\n\t\t\tif (activeBtn) activeBtn.classList.add(\"active\");\r\n\r\n\t\t\tif (tab === 'shipping') {\r\n\t\t\t\tmodalInner.innerHTML = `\u003ch3\u003e運送詳情\u003c\/h3\u003e\u003cp\u003e這裡可以放運送方式、時間、費用等資訊。\u003c\/p\u003e`;\r\n\t\t\t} else if (tab === 'care') {\r\n\t\t\t\tmodalInner.innerHTML = `\r\n\t\t\u003ch3\u003eCARE\u003c\/h3\u003e\r\n\t\t\u003col\u003e\r\n\t\t\t\u003cli\u003eWhen wearing cycling jerseys, it is strongly recommended to wear and wash them based on the colors to reduce the risk of clothes bleeding colors onto each other.\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eAfter use, it is advisable to clean them promptly to prevent bacteria growth, odor formation, and the development of sweat stains, or even yellowing on the clothing.\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eWhen cleaning, remember to zip up all zippers to prevent fabric damage during the wash. Soak the clothing in \"cold water with neutral detergent\" for 5 - 10 minutes, then agitate it gently.\u003cbr\u003e\r\n\t\t\t\u003cstrong\u003e※ Do not use cold wash, fabric softener, or bleach, as these detergents can damage the fabric.\u003c\/strong\u003e\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eHand washing is preferred, but if you choose to use a washing machine, make sure to zip up all zippers, place the clothing inside a laundry bag, and wash it on the \" delicate wash mode\"\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eAfter washing, avoid \"wringing out\" the clothing, and refrain from using a dryer, as this may damage the fabric. Instead, wrap the clothing in a towel to remove excess moisture and hang it to air dry in a well-ventilated, cool place.\u003c\/li\u003e\r\n\t\t\u003c\/ol\u003e\r\n\t\t\u003cp\u003e\u003cstrong\u003e※ Due to variations in manufacturing processes and dyeing methods, some fading may occur when wearing or washing cycling clothing, especially for brighter colors. We strongly recommend you to wear and wash them with similar colors.\u003c\/strong\u003e\u003c\/p\u003e\r\n\t`;\r\n\r\n\t\t\t} else if (tab === 'size') {\r\n\t\t\t\tmodalInner.innerHTML = `\r\n          \u003ch3\u003eSIZE GUIDE\u003c\/h3\u003e\r\n          \u003cdiv class=\"toggle-wrapper\"\u003e\r\n            \u003cspan\u003eCM\u003c\/span\u003e\r\n            \u003clabel class=\"toggle\"\u003e\r\n              \u003cinput type=\"checkbox\" id=\"unitToggle\"\u003e\r\n              \u003cspan class=\"slider\"\u003e\u003c\/span\u003e\r\n            \u003c\/label\u003e\r\n            \u003cspan\u003eINCHES\u003c\/span\u003e\r\n          \u003c\/div\u003e\r\n          \u003ctable\u003e\r\n            \u003cthead\u003e\r\n              \u003ctr\u003e\r\n                \u003cth\u003eSIZE\u003c\/th\u003e\r\n                \u003cth id=\"chestHeader\"\u003eCHEST\u003c\/th\u003e\r\n                \u003cth id=\"waistHeader\"\u003eWAIST\u003c\/th\u003e\r\n                \u003cth id=\"hipHeader\"\u003eHIP\u003c\/th\u003e\r\n              \u003c\/tr\u003e\r\n            \u003c\/thead\u003e\r\n            \u003ctbody id=\"tableBody\"\u003e\u003c\/tbody\u003e\r\n          \u003c\/table\u003e\r\n        `;\r\n\t\t\t\trenderSizeTable('cm');\r\n\t\t\t\tdocument.getElementById(\"unitToggle\").addEventListener(\"change\", (e) =\u003e {\r\n\t\t\t\t\trenderSizeTable(e.target.checked ? 'inches' : 'cm');\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction renderSizeTable(unit) {\r\n\t\t\tconst body = document.getElementById(\"tableBody\");\r\n\t\t\tbody.innerHTML = \"\";\r\n\t\t\tsizeData[unit].forEach(row =\u003e {\r\n\t\t\t\tbody.innerHTML += `\r\n      \u003ctr\u003e\r\n        \u003ctd\u003e${row.size}\u003c\/td\u003e\r\n        \u003ctd\u003e${row.chest}\u003c\/td\u003e\r\n        \u003ctd\u003e${row.waist}\u003c\/td\u003e\r\n        \u003ctd\u003e${row.hip}\u003c\/td\u003e\r\n      \u003c\/tr\u003e`;\r\n\t\t\t});\r\n\t\t}\r\n\t\u003c\/script\u003e\r\n\u003c\/body\u003e\r\n\r\n\u003c\/html\u003e","brand":"ttbici","offers":[{"title":"XS","offer_id":48531780075744,"sku":"B6TC-E03-MT0XSM","price":3880.0,"currency_code":"TWD","in_stock":true},{"title":"S","offer_id":48531780108512,"sku":"B6TC-E03-MT00SM","price":3880.0,"currency_code":"TWD","in_stock":true},{"title":"M","offer_id":48531780141280,"sku":"B6TC-E03-MT00MM","price":3880.0,"currency_code":"TWD","in_stock":true},{"title":"L","offer_id":48531780174048,"sku":"B6TC-E03-MT00LM","price":3880.0,"currency_code":"TWD","in_stock":true},{"title":"XL","offer_id":48531780206816,"sku":"B6TC-E03-MT0XLM","price":3880.0,"currency_code":"TWD","in_stock":true},{"title":"2XL","offer_id":48531780239584,"sku":"B6TC-E03-MT2XLM","price":3880.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/men_classic_thermal_ls_jersey_maroon_01.jpg?v=1768183333"},{"product_id":"e-line-men-s-classic-thermal-ls-jersey-cream","title":"e Line Men' Classic Thermal Ls Jersey \/ Cream","description":"The ttbici e Line Classic Thermal Long Sleeve Jersey is designed for cold-weather rides. Its brushed fleece interior offers warmth and flexibility, while the DWR coating repels wind and light rain. With e Line’s minimalist design and refined embroidery, it delivers understated style and steady performance.\r\n\u003cbr\u003e\u003cbr\u003e\r\nRecommended for temperatures below 15°C\r\n\u003cbr\u003e\u003cbr\u003e\r\n\r\n\u003c!DOCTYPE html\u003e\r\n\u003chtml lang=\"zh-Hant\"\u003e\r\n\r\n\u003chead\u003e\r\n\t\u003cmeta charset=\"UTF-8\" \/\u003e\r\n\t\u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/\u003e\r\n\t\u003cstyle\u003e\r\n\t\tbody.product-modal-open {\r\n\t\t\toverflow: hidden;\r\n\t\t}\r\n\r\n\t\t.product-modal-overlay {\r\n\t\t\tdisplay: none;\r\n\t\t\tposition: fixed;\r\n\t\t\ttop: 0;\r\n\t\t\tleft: 0;\r\n\t\t\twidth: 100vw;\r\n\t\t\theight: 100vh;\r\n\t\t\tbackground-color: rgba(0, 0, 0, 0.5);\r\n\t\t\tbackdrop-filter: blur(2px);\r\n\t\t\tz-index: 1000;\r\n\t\t\tjustify-content: center;\r\n\t\t\talign-items: center;\r\n\t\t}\r\n\r\n\t\t.product-modal {\r\n\t\t\tbackground: white;\r\n\t\t\tpadding: 20px;\r\n\t\t\t\/* border-radius: 10px; *\/\r\n\t\t\tmax-width: 600px;\r\n\t\t\twidth: 90%;\r\n\t\t\tmax-height: 90vh;\r\n\t\t\toverflow-y: auto;\r\n\t\t\tposition: relative;\r\n\t\t}\r\n\r\n\t\t.product-modal .modal-close {\r\n\t\t\tposition: absolute;\r\n\t\t\ttop: 10px;\r\n\t\t\tright: 12px;\r\n\t\t\tfont-size: 20px;\r\n\t\t\tcursor: pointer;\r\n\t\t}\r\n\r\n\t\t\/* ✅ 統一按鈕樣式 *\/\r\n\t\t.button-group {\r\n\t\t\tdisplay: flex;\r\n\t\t\tgap: 12px;\r\n\t\t\tpadding-top: 20px;\r\n\t\t}\r\n\r\n\t\t.button-group button {\r\n\t\t\tpadding: 0px;\r\n\t\t\tborder: none;\r\n\t\t\tbackground-color: transparent;\r\n\t\t\tcolor: #333;\r\n\t\t\tcursor: pointer;\r\n\t\t\t\/* border-radius: 5px; *\/\r\n\t\t\tfont-size: 15px;\r\n\t\t\tfont-family: 'Microsoft JhengHei';\r\n\t\t\ttext-decoration: underline;\r\n\t\t}\r\n\r\n\t\t.button-group button.active {\r\n\t\t\t\/* background-color: #444; *\/\r\n\t\t}\r\n\r\n\t\tbutton:active {\r\n\t\t\tbox-shadow: none !important;\r\n\t\t\tcolor: #333 !important;\r\n\t\t}\r\n\r\n\t\t.product-modal table {\r\n\t\t\twidth: 100%;\r\n\t\t\tborder-collapse: collapse;\r\n\t\t\tmargin-top: 10px;\r\n\t\t}\r\n\r\n\t\t.product-modal th,\r\n\t\t.product-modal td {\r\n\t\t\tborder-bottom: 1px solid #ddd;\r\n\t\t\ttext-align: center;\r\n\t\t\tpadding: 8px;\r\n\t\t}\r\n\r\n\t\t\/* ✅ 新增的欄寬限制 *\/\r\n\t\t.product-modal table th:first-child,\r\n\t\t.product-modal table td:first-child {\r\n\t\t\twidth: 15%;\r\n\t\t\tmax-width: 15%;\r\n\t\t}\r\n\r\n\t\t.product-modal .toggle-wrapper {\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items: center;\r\n\t\t\tgap: 10px;\r\n\t\t\tmargin: 10px 0 20px;\r\n\t\t}\r\n\r\n\t\t.product-modal .toggle {\r\n\t\t\tposition: relative;\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 50px;\r\n\t\t\theight: 24px;\r\n\t\t}\r\n\r\n\t\t.product-modal .toggle input {\r\n\t\t\topacity: 0;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t}\r\n\r\n\t\t.product-modal .slider {\r\n\t\t\tposition: absolute;\r\n\t\t\tcursor: pointer;\r\n\t\t\tbackground-color: #ccc;\r\n\t\t\tborder-radius: 24px;\r\n\t\t\ttop: 0;\r\n\t\t\tleft: 0;\r\n\t\t\tright: 0;\r\n\t\t\tbottom: 0;\r\n\t\t\ttransition: 0.4s;\r\n\t\t}\r\n\r\n\t\t.product-modal .slider:before {\r\n\t\t\tcontent: \"\";\r\n\t\t\tposition: absolute;\r\n\t\t\theight: 18px;\r\n\t\t\twidth: 18px;\r\n\t\t\tleft: 3px;\r\n\t\t\tbottom: 3px;\r\n\t\t\tbackground-color: white;\r\n\t\t\ttransition: 0.4s;\r\n\t\t\tborder-radius: 50%;\r\n\t\t}\r\n\r\n\t\t.product-modal input:checked+.slider {\r\n\t\t\tbackground-color: #333;\r\n\t\t}\r\n\r\n\t\t.product-modal input:checked+.slider:before {\r\n\t\t\ttransform: translateX(26px);\r\n\t\t}\r\n\r\n\t\t.product-modal .modalInnerContent h3 {\r\n\t\t\tpadding: 20px 0;\r\n\r\n\t\t}\r\n\t\u003c\/style\u003e\r\n\u003c\/head\u003e\r\n\r\n\u003cbody\u003e\r\n\r\n\t\u003c!-- 外部觸發按鈕 --\u003e\r\n\t\u003cdiv class=\"button-group\"\u003e\r\n\t\t\u003c!-- \u003cbutton onclick=\"openModal('shipping')\"\u003e運送詳情\u003c\/button\u003e --\u003e\r\n\t\t\u003cbutton onclick=\"openModal('size')\"\u003eSIZE GUIDE\u003c\/button\u003e\r\n\t\t\u003cbutton onclick=\"openModal('care')\"\u003eCARE\u003c\/button\u003e\r\n\t\u003c\/div\u003e\r\n\r\n\t\u003c!-- Modal --\u003e\r\n\t\u003cdiv class=\"product-modal-overlay\" id=\"modalOverlay\"\u003e\r\n\t\t\u003cdiv class=\"product-modal\" id=\"modalContent\"\u003e\r\n\t\t\t\u003cdiv class=\"modal-close\" onclick=\"closeModal()\"\u003e×\u003c\/div\u003e\r\n\r\n\t\t\t\u003c!-- 內部選單 --\u003e\r\n\t\t\t\u003cdiv class=\"button-group\" id=\"infoTabs\"\u003e\r\n\t\t\t\t\u003c!-- \u003cbutton id=\"tab-shipping\" onclick=\"switchTab('shipping')\"\u003e運送詳情\u003c\/button\u003e --\u003e\r\n\t\t\t\t\u003cbutton id=\"tab-size\" onclick=\"switchTab('size')\"\u003eSIZE GUIDE\u003c\/button\u003e\r\n\t\t\t\t\u003cbutton id=\"tab-care\" onclick=\"switchTab('care')\"\u003eCARE\u003c\/button\u003e\r\n\t\t\t\u003c\/div\u003e\r\n\r\n\t\t\t\u003c!-- 內容區 --\u003e\r\n\t\t\t\u003cdiv id=\"modalInnerContent\"\u003e\u003c\/div\u003e\r\n\t\t\u003c\/div\u003e\r\n\t\u003c\/div\u003e\r\n\r\n\t\u003cscript\u003e\r\n\t\tconst modalOverlay = document.getElementById(\"modalOverlay\");\r\n\t\tconst modalInner = document.getElementById(\"modalInnerContent\");\r\n\r\n\t\tconst sizeData = {\r\n\t\t\tcm: [\r\n\t\t\t\t{ size: 'XS', chest: '80–88', waist: '68–76', hip: '82–90' },\r\n\t\t\t\t{ size: 'S', chest: '85–93', waist: '73–81', hip: '87–95' },\r\n\t\t\t\t{ size: 'M', chest: '89–97', waist: '77–85', hip: '91–99' },\r\n\t\t\t\t{ size: 'L', chest: '93–101', waist: '81–89', hip: '95–103' },\r\n\t\t\t\t{ size: 'XL', chest: '97–105', waist: '85–93', hip: '99–107' },\r\n\t\t\t\t{ size: '2XL', chest: '101–109', waist: '89–97', hip: '103–111' }\r\n\t\t\t],\r\n\t\t\tinches: [\r\n\t\t\t\t{ size: 'XS', chest: '32–35', waist: '27–30', hip: '32–35' },\r\n\t\t\t\t{ size: 'S', chest: '34–37', waist: '29–32', hip: '34–37' },\r\n\t\t\t\t{ size: 'M', chest: '35–38', waist: '30–33', hip: '36–39' },\r\n\t\t\t\t{ size: 'L', chest: '37–40', waist: '32–35', hip: '37–40' },\r\n\t\t\t\t{ size: 'XL', chest: '38–41', waist: '34–37', hip: '39–42' },\r\n\t\t\t\t{ size: '2XL', chest: '40–43', waist: '35–38', hip: '41–44' }\r\n\t\t\t]\r\n\t\t};\r\n\r\n\t\tfunction openModal(defaultTab) {\r\n\t\t\tdocument.body.classList.add(\"product-modal-open\");\r\n\t\t\tmodalOverlay.style.display = \"flex\";\r\n\t\t\tswitchTab(defaultTab);\r\n\t\t}\r\n\r\n\t\tfunction closeModal() {\r\n\t\t\tmodalOverlay.style.display = \"none\";\r\n\t\t\tmodalInner.innerHTML = \"\";\r\n\t\t\tdocument.body.classList.remove(\"product-modal-open\");\r\n\t\t}\r\n\r\n\t\tfunction switchTab(tab) {\r\n\t\t\t['shipping', 'care', 'size'].forEach(id =\u003e {\r\n\t\t\t\tconst btn = document.getElementById(`tab-${id}`);\r\n\t\t\t\tif (btn) btn.classList.remove(\"active\");\r\n\t\t\t});\r\n\r\n\t\t\tconst activeBtn = document.getElementById(`tab-${tab}`);\r\n\t\t\tif (activeBtn) activeBtn.classList.add(\"active\");\r\n\r\n\t\t\tif (tab === 'shipping') {\r\n\t\t\t\tmodalInner.innerHTML = `\u003ch3\u003e運送詳情\u003c\/h3\u003e\u003cp\u003e這裡可以放運送方式、時間、費用等資訊。\u003c\/p\u003e`;\r\n\t\t\t} else if (tab === 'care') {\r\n\t\t\t\tmodalInner.innerHTML = `\r\n\t\t\u003ch3\u003eCARE\u003c\/h3\u003e\r\n\t\t\u003col\u003e\r\n\t\t\t\u003cli\u003eWhen wearing cycling jerseys, it is strongly recommended to wear and wash them based on the colors to reduce the risk of clothes bleeding colors onto each other.\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eAfter use, it is advisable to clean them promptly to prevent bacteria growth, odor formation, and the development of sweat stains, or even yellowing on the clothing.\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eWhen cleaning, remember to zip up all zippers to prevent fabric damage during the wash. Soak the clothing in \"cold water with neutral detergent\" for 5 - 10 minutes, then agitate it gently.\u003cbr\u003e\r\n\t\t\t\u003cstrong\u003e※ Do not use cold wash, fabric softener, or bleach, as these detergents can damage the fabric.\u003c\/strong\u003e\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eHand washing is preferred, but if you choose to use a washing machine, make sure to zip up all zippers, place the clothing inside a laundry bag, and wash it on the \" delicate wash mode\"\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eAfter washing, avoid \"wringing out\" the clothing, and refrain from using a dryer, as this may damage the fabric. Instead, wrap the clothing in a towel to remove excess moisture and hang it to air dry in a well-ventilated, cool place.\u003c\/li\u003e\r\n\t\t\u003c\/ol\u003e\r\n\t\t\u003cp\u003e\u003cstrong\u003e※ Due to variations in manufacturing processes and dyeing methods, some fading may occur when wearing or washing cycling clothing, especially for brighter colors. We strongly recommend you to wear and wash them with similar colors.\u003c\/strong\u003e\u003c\/p\u003e\r\n\t`;\r\n\r\n\t\t\t} else if (tab === 'size') {\r\n\t\t\t\tmodalInner.innerHTML = `\r\n          \u003ch3\u003eSIZE GUIDE\u003c\/h3\u003e\r\n          \u003cdiv class=\"toggle-wrapper\"\u003e\r\n            \u003cspan\u003eCM\u003c\/span\u003e\r\n            \u003clabel class=\"toggle\"\u003e\r\n              \u003cinput type=\"checkbox\" id=\"unitToggle\"\u003e\r\n              \u003cspan class=\"slider\"\u003e\u003c\/span\u003e\r\n            \u003c\/label\u003e\r\n            \u003cspan\u003eINCHES\u003c\/span\u003e\r\n          \u003c\/div\u003e\r\n          \u003ctable\u003e\r\n            \u003cthead\u003e\r\n              \u003ctr\u003e\r\n                \u003cth\u003eSIZE\u003c\/th\u003e\r\n                \u003cth id=\"chestHeader\"\u003eCHEST\u003c\/th\u003e\r\n                \u003cth id=\"waistHeader\"\u003eWAIST\u003c\/th\u003e\r\n                \u003cth id=\"hipHeader\"\u003eHIP\u003c\/th\u003e\r\n              \u003c\/tr\u003e\r\n            \u003c\/thead\u003e\r\n            \u003ctbody id=\"tableBody\"\u003e\u003c\/tbody\u003e\r\n          \u003c\/table\u003e\r\n        `;\r\n\t\t\t\trenderSizeTable('cm');\r\n\t\t\t\tdocument.getElementById(\"unitToggle\").addEventListener(\"change\", (e) =\u003e {\r\n\t\t\t\t\trenderSizeTable(e.target.checked ? 'inches' : 'cm');\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction renderSizeTable(unit) {\r\n\t\t\tconst body = document.getElementById(\"tableBody\");\r\n\t\t\tbody.innerHTML = \"\";\r\n\t\t\tsizeData[unit].forEach(row =\u003e {\r\n\t\t\t\tbody.innerHTML += `\r\n      \u003ctr\u003e\r\n        \u003ctd\u003e${row.size}\u003c\/td\u003e\r\n        \u003ctd\u003e${row.chest}\u003c\/td\u003e\r\n        \u003ctd\u003e${row.waist}\u003c\/td\u003e\r\n        \u003ctd\u003e${row.hip}\u003c\/td\u003e\r\n      \u003c\/tr\u003e`;\r\n\t\t\t});\r\n\t\t}\r\n\t\u003c\/script\u003e\r\n\u003c\/body\u003e\r\n\r\n\u003c\/html\u003e","brand":"ttbici","offers":[{"title":"XS","offer_id":48531781288160,"sku":"B6TC-E03-CR0XSM","price":3880.0,"currency_code":"TWD","in_stock":true},{"title":"S","offer_id":48531781320928,"sku":"B6TC-E03-CR00SM","price":3880.0,"currency_code":"TWD","in_stock":true},{"title":"M","offer_id":48531781353696,"sku":"B6TC-E03-CR00MM","price":3880.0,"currency_code":"TWD","in_stock":true},{"title":"L","offer_id":48531781386464,"sku":"B6TC-E03-CR00LM","price":3880.0,"currency_code":"TWD","in_stock":true},{"title":"XL","offer_id":48531781419232,"sku":"B6TC-E03-CR0XLM","price":3880.0,"currency_code":"TWD","in_stock":true},{"title":"2XL","offer_id":48531781452000,"sku":"B6TC-E03-CR2XLM","price":3880.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/men_classic_thermal_ls_jersey_cream_01.jpg?v=1768183343"},{"product_id":"e-line-men-s-classic-thermal-ls-jersey-milky-blue","title":"e Line Men' Classic Thermal Ls Jersey \/ Milky Blue","description":"The ttbici e Line Classic Thermal Long Sleeve Jersey is designed for cold-weather rides. Its brushed fleece interior offers warmth and flexibility, while the DWR coating repels wind and light rain. With e Line’s minimalist design and refined embroidery, it delivers understated style and steady performance.\r\n\u003cbr\u003e\u003cbr\u003e\r\nRecommended for temperatures below 15°C\r\n\u003cbr\u003e\u003cbr\u003e\r\n\r\n\u003c!DOCTYPE html\u003e\r\n\u003chtml lang=\"zh-Hant\"\u003e\r\n\r\n\u003chead\u003e\r\n\t\u003cmeta charset=\"UTF-8\" \/\u003e\r\n\t\u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/\u003e\r\n\t\u003cstyle\u003e\r\n\t\tbody.product-modal-open {\r\n\t\t\toverflow: hidden;\r\n\t\t}\r\n\r\n\t\t.product-modal-overlay {\r\n\t\t\tdisplay: none;\r\n\t\t\tposition: fixed;\r\n\t\t\ttop: 0;\r\n\t\t\tleft: 0;\r\n\t\t\twidth: 100vw;\r\n\t\t\theight: 100vh;\r\n\t\t\tbackground-color: rgba(0, 0, 0, 0.5);\r\n\t\t\tbackdrop-filter: blur(2px);\r\n\t\t\tz-index: 1000;\r\n\t\t\tjustify-content: center;\r\n\t\t\talign-items: center;\r\n\t\t}\r\n\r\n\t\t.product-modal {\r\n\t\t\tbackground: white;\r\n\t\t\tpadding: 20px;\r\n\t\t\t\/* border-radius: 10px; *\/\r\n\t\t\tmax-width: 600px;\r\n\t\t\twidth: 90%;\r\n\t\t\tmax-height: 90vh;\r\n\t\t\toverflow-y: auto;\r\n\t\t\tposition: relative;\r\n\t\t}\r\n\r\n\t\t.product-modal .modal-close {\r\n\t\t\tposition: absolute;\r\n\t\t\ttop: 10px;\r\n\t\t\tright: 12px;\r\n\t\t\tfont-size: 20px;\r\n\t\t\tcursor: pointer;\r\n\t\t}\r\n\r\n\t\t\/* ✅ 統一按鈕樣式 *\/\r\n\t\t.button-group {\r\n\t\t\tdisplay: flex;\r\n\t\t\tgap: 12px;\r\n\t\t\tpadding-top: 20px;\r\n\t\t}\r\n\r\n\t\t.button-group button {\r\n\t\t\tpadding: 0px;\r\n\t\t\tborder: none;\r\n\t\t\tbackground-color: transparent;\r\n\t\t\tcolor: #333;\r\n\t\t\tcursor: pointer;\r\n\t\t\t\/* border-radius: 5px; *\/\r\n\t\t\tfont-size: 15px;\r\n\t\t\tfont-family: 'Microsoft JhengHei';\r\n\t\t\ttext-decoration: underline;\r\n\t\t}\r\n\r\n\t\t.button-group button.active {\r\n\t\t\t\/* background-color: #444; *\/\r\n\t\t}\r\n\r\n\t\tbutton:active {\r\n\t\t\tbox-shadow: none !important;\r\n\t\t\tcolor: #333 !important;\r\n\t\t}\r\n\r\n\t\t.product-modal table {\r\n\t\t\twidth: 100%;\r\n\t\t\tborder-collapse: collapse;\r\n\t\t\tmargin-top: 10px;\r\n\t\t}\r\n\r\n\t\t.product-modal th,\r\n\t\t.product-modal td {\r\n\t\t\tborder-bottom: 1px solid #ddd;\r\n\t\t\ttext-align: center;\r\n\t\t\tpadding: 8px;\r\n\t\t}\r\n\r\n\t\t\/* ✅ 新增的欄寬限制 *\/\r\n\t\t.product-modal table th:first-child,\r\n\t\t.product-modal table td:first-child {\r\n\t\t\twidth: 15%;\r\n\t\t\tmax-width: 15%;\r\n\t\t}\r\n\r\n\t\t.product-modal .toggle-wrapper {\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items: center;\r\n\t\t\tgap: 10px;\r\n\t\t\tmargin: 10px 0 20px;\r\n\t\t}\r\n\r\n\t\t.product-modal .toggle {\r\n\t\t\tposition: relative;\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 50px;\r\n\t\t\theight: 24px;\r\n\t\t}\r\n\r\n\t\t.product-modal .toggle input {\r\n\t\t\topacity: 0;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t}\r\n\r\n\t\t.product-modal .slider {\r\n\t\t\tposition: absolute;\r\n\t\t\tcursor: pointer;\r\n\t\t\tbackground-color: #ccc;\r\n\t\t\tborder-radius: 24px;\r\n\t\t\ttop: 0;\r\n\t\t\tleft: 0;\r\n\t\t\tright: 0;\r\n\t\t\tbottom: 0;\r\n\t\t\ttransition: 0.4s;\r\n\t\t}\r\n\r\n\t\t.product-modal .slider:before {\r\n\t\t\tcontent: \"\";\r\n\t\t\tposition: absolute;\r\n\t\t\theight: 18px;\r\n\t\t\twidth: 18px;\r\n\t\t\tleft: 3px;\r\n\t\t\tbottom: 3px;\r\n\t\t\tbackground-color: white;\r\n\t\t\ttransition: 0.4s;\r\n\t\t\tborder-radius: 50%;\r\n\t\t}\r\n\r\n\t\t.product-modal input:checked+.slider {\r\n\t\t\tbackground-color: #333;\r\n\t\t}\r\n\r\n\t\t.product-modal input:checked+.slider:before {\r\n\t\t\ttransform: translateX(26px);\r\n\t\t}\r\n\r\n\t\t.product-modal .modalInnerContent h3 {\r\n\t\t\tpadding: 20px 0;\r\n\r\n\t\t}\r\n\t\u003c\/style\u003e\r\n\u003c\/head\u003e\r\n\r\n\u003cbody\u003e\r\n\r\n\t\u003c!-- 外部觸發按鈕 --\u003e\r\n\t\u003cdiv class=\"button-group\"\u003e\r\n\t\t\u003c!-- \u003cbutton onclick=\"openModal('shipping')\"\u003e運送詳情\u003c\/button\u003e --\u003e\r\n\t\t\u003cbutton onclick=\"openModal('size')\"\u003eSIZE GUIDE\u003c\/button\u003e\r\n\t\t\u003cbutton onclick=\"openModal('care')\"\u003eCARE\u003c\/button\u003e\r\n\t\u003c\/div\u003e\r\n\r\n\t\u003c!-- Modal --\u003e\r\n\t\u003cdiv class=\"product-modal-overlay\" id=\"modalOverlay\"\u003e\r\n\t\t\u003cdiv class=\"product-modal\" id=\"modalContent\"\u003e\r\n\t\t\t\u003cdiv class=\"modal-close\" onclick=\"closeModal()\"\u003e×\u003c\/div\u003e\r\n\r\n\t\t\t\u003c!-- 內部選單 --\u003e\r\n\t\t\t\u003cdiv class=\"button-group\" id=\"infoTabs\"\u003e\r\n\t\t\t\t\u003c!-- \u003cbutton id=\"tab-shipping\" onclick=\"switchTab('shipping')\"\u003e運送詳情\u003c\/button\u003e --\u003e\r\n\t\t\t\t\u003cbutton id=\"tab-size\" onclick=\"switchTab('size')\"\u003eSIZE GUIDE\u003c\/button\u003e\r\n\t\t\t\t\u003cbutton id=\"tab-care\" onclick=\"switchTab('care')\"\u003eCARE\u003c\/button\u003e\r\n\t\t\t\u003c\/div\u003e\r\n\r\n\t\t\t\u003c!-- 內容區 --\u003e\r\n\t\t\t\u003cdiv id=\"modalInnerContent\"\u003e\u003c\/div\u003e\r\n\t\t\u003c\/div\u003e\r\n\t\u003c\/div\u003e\r\n\r\n\t\u003cscript\u003e\r\n\t\tconst modalOverlay = document.getElementById(\"modalOverlay\");\r\n\t\tconst modalInner = document.getElementById(\"modalInnerContent\");\r\n\r\n\t\tconst sizeData = {\r\n\t\t\tcm: [\r\n\t\t\t\t{ size: 'XS', chest: '80–88', waist: '68–76', hip: '82–90' },\r\n\t\t\t\t{ size: 'S', chest: '85–93', waist: '73–81', hip: '87–95' },\r\n\t\t\t\t{ size: 'M', chest: '89–97', waist: '77–85', hip: '91–99' },\r\n\t\t\t\t{ size: 'L', chest: '93–101', waist: '81–89', hip: '95–103' },\r\n\t\t\t\t{ size: 'XL', chest: '97–105', waist: '85–93', hip: '99–107' },\r\n\t\t\t\t{ size: '2XL', chest: '101–109', waist: '89–97', hip: '103–111' }\r\n\t\t\t],\r\n\t\t\tinches: [\r\n\t\t\t\t{ size: 'XS', chest: '32–35', waist: '27–30', hip: '32–35' },\r\n\t\t\t\t{ size: 'S', chest: '34–37', waist: '29–32', hip: '34–37' },\r\n\t\t\t\t{ size: 'M', chest: '35–38', waist: '30–33', hip: '36–39' },\r\n\t\t\t\t{ size: 'L', chest: '37–40', waist: '32–35', hip: '37–40' },\r\n\t\t\t\t{ size: 'XL', chest: '38–41', waist: '34–37', hip: '39–42' },\r\n\t\t\t\t{ size: '2XL', chest: '40–43', waist: '35–38', hip: '41–44' }\r\n\t\t\t]\r\n\t\t};\r\n\r\n\t\tfunction openModal(defaultTab) {\r\n\t\t\tdocument.body.classList.add(\"product-modal-open\");\r\n\t\t\tmodalOverlay.style.display = \"flex\";\r\n\t\t\tswitchTab(defaultTab);\r\n\t\t}\r\n\r\n\t\tfunction closeModal() {\r\n\t\t\tmodalOverlay.style.display = \"none\";\r\n\t\t\tmodalInner.innerHTML = \"\";\r\n\t\t\tdocument.body.classList.remove(\"product-modal-open\");\r\n\t\t}\r\n\r\n\t\tfunction switchTab(tab) {\r\n\t\t\t['shipping', 'care', 'size'].forEach(id =\u003e {\r\n\t\t\t\tconst btn = document.getElementById(`tab-${id}`);\r\n\t\t\t\tif (btn) btn.classList.remove(\"active\");\r\n\t\t\t});\r\n\r\n\t\t\tconst activeBtn = document.getElementById(`tab-${tab}`);\r\n\t\t\tif (activeBtn) activeBtn.classList.add(\"active\");\r\n\r\n\t\t\tif (tab === 'shipping') {\r\n\t\t\t\tmodalInner.innerHTML = `\u003ch3\u003e運送詳情\u003c\/h3\u003e\u003cp\u003e這裡可以放運送方式、時間、費用等資訊。\u003c\/p\u003e`;\r\n\t\t\t} else if (tab === 'care') {\r\n\t\t\t\tmodalInner.innerHTML = `\r\n\t\t\u003ch3\u003eCARE\u003c\/h3\u003e\r\n\t\t\u003col\u003e\r\n\t\t\t\u003cli\u003eWhen wearing cycling jerseys, it is strongly recommended to wear and wash them based on the colors to reduce the risk of clothes bleeding colors onto each other.\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eAfter use, it is advisable to clean them promptly to prevent bacteria growth, odor formation, and the development of sweat stains, or even yellowing on the clothing.\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eWhen cleaning, remember to zip up all zippers to prevent fabric damage during the wash. Soak the clothing in \"cold water with neutral detergent\" for 5 - 10 minutes, then agitate it gently.\u003cbr\u003e\r\n\t\t\t\u003cstrong\u003e※ Do not use cold wash, fabric softener, or bleach, as these detergents can damage the fabric.\u003c\/strong\u003e\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eHand washing is preferred, but if you choose to use a washing machine, make sure to zip up all zippers, place the clothing inside a laundry bag, and wash it on the \" delicate wash mode\"\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eAfter washing, avoid \"wringing out\" the clothing, and refrain from using a dryer, as this may damage the fabric. Instead, wrap the clothing in a towel to remove excess moisture and hang it to air dry in a well-ventilated, cool place.\u003c\/li\u003e\r\n\t\t\u003c\/ol\u003e\r\n\t\t\u003cp\u003e\u003cstrong\u003e※ Due to variations in manufacturing processes and dyeing methods, some fading may occur when wearing or washing cycling clothing, especially for brighter colors. We strongly recommend you to wear and wash them with similar colors.\u003c\/strong\u003e\u003c\/p\u003e\r\n\t`;\r\n\r\n\t\t\t} else if (tab === 'size') {\r\n\t\t\t\tmodalInner.innerHTML = `\r\n          \u003ch3\u003eSIZE GUIDE\u003c\/h3\u003e\r\n          \u003cdiv class=\"toggle-wrapper\"\u003e\r\n            \u003cspan\u003eCM\u003c\/span\u003e\r\n            \u003clabel class=\"toggle\"\u003e\r\n              \u003cinput type=\"checkbox\" id=\"unitToggle\"\u003e\r\n              \u003cspan class=\"slider\"\u003e\u003c\/span\u003e\r\n            \u003c\/label\u003e\r\n            \u003cspan\u003eINCHES\u003c\/span\u003e\r\n          \u003c\/div\u003e\r\n          \u003ctable\u003e\r\n            \u003cthead\u003e\r\n              \u003ctr\u003e\r\n                \u003cth\u003eSIZE\u003c\/th\u003e\r\n                \u003cth id=\"chestHeader\"\u003eCHEST\u003c\/th\u003e\r\n                \u003cth id=\"waistHeader\"\u003eWAIST\u003c\/th\u003e\r\n                \u003cth id=\"hipHeader\"\u003eHIP\u003c\/th\u003e\r\n              \u003c\/tr\u003e\r\n            \u003c\/thead\u003e\r\n            \u003ctbody id=\"tableBody\"\u003e\u003c\/tbody\u003e\r\n          \u003c\/table\u003e\r\n        `;\r\n\t\t\t\trenderSizeTable('cm');\r\n\t\t\t\tdocument.getElementById(\"unitToggle\").addEventListener(\"change\", (e) =\u003e {\r\n\t\t\t\t\trenderSizeTable(e.target.checked ? 'inches' : 'cm');\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction renderSizeTable(unit) {\r\n\t\t\tconst body = document.getElementById(\"tableBody\");\r\n\t\t\tbody.innerHTML = \"\";\r\n\t\t\tsizeData[unit].forEach(row =\u003e {\r\n\t\t\t\tbody.innerHTML += `\r\n      \u003ctr\u003e\r\n        \u003ctd\u003e${row.size}\u003c\/td\u003e\r\n        \u003ctd\u003e${row.chest}\u003c\/td\u003e\r\n        \u003ctd\u003e${row.waist}\u003c\/td\u003e\r\n        \u003ctd\u003e${row.hip}\u003c\/td\u003e\r\n      \u003c\/tr\u003e`;\r\n\t\t\t});\r\n\t\t}\r\n\t\u003c\/script\u003e\r\n\u003c\/body\u003e\r\n\r\n\u003c\/html\u003e","brand":"ttbici","offers":[{"title":"XS","offer_id":48531781517536,"sku":"B6TC-E03-BL0XSM","price":3880.0,"currency_code":"TWD","in_stock":true},{"title":"S","offer_id":48531781550304,"sku":"B6TC-E03-BL00SM","price":3880.0,"currency_code":"TWD","in_stock":true},{"title":"M","offer_id":48531781583072,"sku":"B6TC-E03-BL00MM","price":3880.0,"currency_code":"TWD","in_stock":true},{"title":"L","offer_id":48531781615840,"sku":"B6TC-E03-BL00LM","price":3880.0,"currency_code":"TWD","in_stock":true},{"title":"XL","offer_id":48531781648608,"sku":"B6TC-E03-BL0XLM","price":3880.0,"currency_code":"TWD","in_stock":true},{"title":"2XL","offer_id":48531781681376,"sku":"B6TC-E03-BL2XLM","price":3880.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/men_classic_thermal_ls_jersey_milky_blue_01.jpg?v=1768183352"},{"product_id":"e-line-men-s-classic-thermal-tights-black","title":"e Line Men' Classic Thermal Tights \/ Black","description":"The ttbici e Line Classic Thermal Tights are designed for cold-weather rides. Crafted with brushed fleece inner fabric, the tights provide excellent insulation and muscle support while maintaining flexibility and freedom of movement. The DWR coating repels wind and light rain. With e Line’s minimalist design and refined embroidery, it delivers understated style and steady performance.\r\n\u003cbr\u003e\u003cbr\u003e\r\nRecommended for temperatures below 15°C.\r\n\u003cbr\u003e\u003cbr\u003e\r\n\r\n\u003c!DOCTYPE html\u003e\r\n\u003chtml lang=\"zh-Hant\"\u003e\r\n\r\n\u003chead\u003e\r\n\t\u003cmeta charset=\"UTF-8\" \/\u003e\r\n\t\u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/\u003e\r\n\t\u003cstyle\u003e\r\n\t\tbody.product-modal-open {\r\n\t\t\toverflow: hidden;\r\n\t\t}\r\n\r\n\t\t.product-modal-overlay {\r\n\t\t\tdisplay: none;\r\n\t\t\tposition: fixed;\r\n\t\t\ttop: 0;\r\n\t\t\tleft: 0;\r\n\t\t\twidth: 100vw;\r\n\t\t\theight: 100vh;\r\n\t\t\tbackground-color: rgba(0, 0, 0, 0.5);\r\n\t\t\tbackdrop-filter: blur(2px);\r\n\t\t\tz-index: 1000;\r\n\t\t\tjustify-content: center;\r\n\t\t\talign-items: center;\r\n\t\t}\r\n\r\n\t\t.product-modal {\r\n\t\t\tbackground: white;\r\n\t\t\tpadding: 20px;\r\n\t\t\t\/* border-radius: 10px; *\/\r\n\t\t\tmax-width: 600px;\r\n\t\t\twidth: 90%;\r\n\t\t\tmax-height: 90vh;\r\n\t\t\toverflow-y: auto;\r\n\t\t\tposition: relative;\r\n\t\t}\r\n\r\n\t\t.product-modal .modal-close {\r\n\t\t\tposition: absolute;\r\n\t\t\ttop: 10px;\r\n\t\t\tright: 12px;\r\n\t\t\tfont-size: 20px;\r\n\t\t\tcursor: pointer;\r\n\t\t}\r\n\r\n\t\t\/* ✅ 統一按鈕樣式 *\/\r\n\t\t.button-group {\r\n\t\t\tdisplay: flex;\r\n\t\t\tgap: 12px;\r\n\t\t\tpadding-top: 20px;\r\n\t\t}\r\n\r\n\t\t.button-group button {\r\n\t\t\tpadding: 0px;\r\n\t\t\tborder: none;\r\n\t\t\tbackground-color: transparent;\r\n\t\t\tcolor: #333;\r\n\t\t\tcursor: pointer;\r\n\t\t\t\/* border-radius: 5px; *\/\r\n\t\t\tfont-size: 15px;\r\n\t\t\tfont-family: 'Microsoft JhengHei';\r\n\t\t\ttext-decoration: underline;\r\n\t\t}\r\n\r\n\t\t.button-group button.active {\r\n\t\t\t\/* background-color: #444; *\/\r\n\t\t}\r\n\r\n\t\tbutton:active {\r\n\t\t\tbox-shadow: none !important;\r\n\t\t\tcolor: #333 !important;\r\n\t\t}\r\n\r\n\t\t.product-modal table {\r\n\t\t\twidth: 100%;\r\n\t\t\tborder-collapse: collapse;\r\n\t\t\tmargin-top: 10px;\r\n\t\t}\r\n\r\n\t\t.product-modal th,\r\n\t\t.product-modal td {\r\n\t\t\tborder-bottom: 1px solid #ddd;\r\n\t\t\ttext-align: center;\r\n\t\t\tpadding: 8px;\r\n\t\t}\r\n\r\n\t\t\/* ✅ 新增的欄寬限制 *\/\r\n\t\t.product-modal table th:first-child,\r\n\t\t.product-modal table td:first-child {\r\n\t\t\twidth: 15%;\r\n\t\t\tmax-width: 15%;\r\n\t\t}\r\n\r\n\t\t.product-modal .toggle-wrapper {\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items: center;\r\n\t\t\tgap: 10px;\r\n\t\t\tmargin: 10px 0 20px;\r\n\t\t}\r\n\r\n\t\t.product-modal .toggle {\r\n\t\t\tposition: relative;\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 50px;\r\n\t\t\theight: 24px;\r\n\t\t}\r\n\r\n\t\t.product-modal .toggle input {\r\n\t\t\topacity: 0;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t}\r\n\r\n\t\t.product-modal .slider {\r\n\t\t\tposition: absolute;\r\n\t\t\tcursor: pointer;\r\n\t\t\tbackground-color: #ccc;\r\n\t\t\tborder-radius: 24px;\r\n\t\t\ttop: 0;\r\n\t\t\tleft: 0;\r\n\t\t\tright: 0;\r\n\t\t\tbottom: 0;\r\n\t\t\ttransition: 0.4s;\r\n\t\t}\r\n\r\n\t\t.product-modal .slider:before {\r\n\t\t\tcontent: \"\";\r\n\t\t\tposition: absolute;\r\n\t\t\theight: 18px;\r\n\t\t\twidth: 18px;\r\n\t\t\tleft: 3px;\r\n\t\t\tbottom: 3px;\r\n\t\t\tbackground-color: white;\r\n\t\t\ttransition: 0.4s;\r\n\t\t\tborder-radius: 50%;\r\n\t\t}\r\n\r\n\t\t.product-modal input:checked+.slider {\r\n\t\t\tbackground-color: #333;\r\n\t\t}\r\n\r\n\t\t.product-modal input:checked+.slider:before {\r\n\t\t\ttransform: translateX(26px);\r\n\t\t}\r\n\r\n\t\t.product-modal .modalInnerContent h3 {\r\n\t\t\tpadding: 20px 0;\r\n\r\n\t\t}\r\n\t\u003c\/style\u003e\r\n\u003c\/head\u003e\r\n\r\n\u003cbody\u003e\r\n\r\n\t\u003c!-- 外部觸發按鈕 --\u003e\r\n\t\u003cdiv class=\"button-group\"\u003e\r\n\t\t\u003c!-- \u003cbutton onclick=\"openModal('shipping')\"\u003e運送詳情\u003c\/button\u003e --\u003e\r\n\t\t\u003cbutton onclick=\"openModal('size')\"\u003eSIZE GUIDE\u003c\/button\u003e\r\n\t\t\u003cbutton onclick=\"openModal('care')\"\u003eCARE\u003c\/button\u003e\r\n\t\u003c\/div\u003e\r\n\r\n\t\u003c!-- Modal --\u003e\r\n\t\u003cdiv class=\"product-modal-overlay\" id=\"modalOverlay\"\u003e\r\n\t\t\u003cdiv class=\"product-modal\" id=\"modalContent\"\u003e\r\n\t\t\t\u003cdiv class=\"modal-close\" onclick=\"closeModal()\"\u003e×\u003c\/div\u003e\r\n\r\n\t\t\t\u003c!-- 內部選單 --\u003e\r\n\t\t\t\u003cdiv class=\"button-group\" id=\"infoTabs\"\u003e\r\n\t\t\t\t\u003c!-- \u003cbutton id=\"tab-shipping\" onclick=\"switchTab('shipping')\"\u003e運送詳情\u003c\/button\u003e --\u003e\r\n\t\t\t\t\u003cbutton id=\"tab-size\" onclick=\"switchTab('size')\"\u003eSIZE GUIDE\u003c\/button\u003e\r\n\t\t\t\t\u003cbutton id=\"tab-care\" onclick=\"switchTab('care')\"\u003eCARE\u003c\/button\u003e\r\n\t\t\t\u003c\/div\u003e\r\n\r\n\t\t\t\u003c!-- 內容區 --\u003e\r\n\t\t\t\u003cdiv id=\"modalInnerContent\"\u003e\u003c\/div\u003e\r\n\t\t\u003c\/div\u003e\r\n\t\u003c\/div\u003e\r\n\r\n\t\u003cscript\u003e\r\n\t\tconst modalOverlay = document.getElementById(\"modalOverlay\");\r\n\t\tconst modalInner = document.getElementById(\"modalInnerContent\");\r\n\r\n\t\tconst sizeData = {\r\n\t\t\tcm: [\r\n\t\t\t\t{ size: 'XS', chest: '80–88', waist: '68–76', hip: '82–90' },\r\n\t\t\t\t{ size: 'S', chest: '85–93', waist: '73–81', hip: '87–95' },\r\n\t\t\t\t{ size: 'M', chest: '89–97', waist: '77–85', hip: '91–99' },\r\n\t\t\t\t{ size: 'L', chest: '93–101', waist: '81–89', hip: '95–103' },\r\n\t\t\t\t{ size: 'XL', chest: '97–105', waist: '85–93', hip: '99–107' },\r\n\t\t\t\t{ size: '2XL', chest: '101–109', waist: '89–97', hip: '103–111' }\r\n\t\t\t],\r\n\t\t\tinches: [\r\n\t\t\t\t{ size: 'XS', chest: '32–35', waist: '27–30', hip: '32–35' },\r\n\t\t\t\t{ size: 'S', chest: '34–37', waist: '29–32', hip: '34–37' },\r\n\t\t\t\t{ size: 'M', chest: '35–38', waist: '30–33', hip: '36–39' },\r\n\t\t\t\t{ size: 'L', chest: '37–40', waist: '32–35', hip: '37–40' },\r\n\t\t\t\t{ size: 'XL', chest: '38–41', waist: '34–37', hip: '39–42' },\r\n\t\t\t\t{ size: '2XL', chest: '40–43', waist: '35–38', hip: '41–44' }\r\n\t\t\t]\r\n\t\t};\r\n\r\n\t\tfunction openModal(defaultTab) {\r\n\t\t\tdocument.body.classList.add(\"product-modal-open\");\r\n\t\t\tmodalOverlay.style.display = \"flex\";\r\n\t\t\tswitchTab(defaultTab);\r\n\t\t}\r\n\r\n\t\tfunction closeModal() {\r\n\t\t\tmodalOverlay.style.display = \"none\";\r\n\t\t\tmodalInner.innerHTML = \"\";\r\n\t\t\tdocument.body.classList.remove(\"product-modal-open\");\r\n\t\t}\r\n\r\n\t\tfunction switchTab(tab) {\r\n\t\t\t['shipping', 'care', 'size'].forEach(id =\u003e {\r\n\t\t\t\tconst btn = document.getElementById(`tab-${id}`);\r\n\t\t\t\tif (btn) btn.classList.remove(\"active\");\r\n\t\t\t});\r\n\r\n\t\t\tconst activeBtn = document.getElementById(`tab-${tab}`);\r\n\t\t\tif (activeBtn) activeBtn.classList.add(\"active\");\r\n\r\n\t\t\tif (tab === 'shipping') {\r\n\t\t\t\tmodalInner.innerHTML = `\u003ch3\u003e運送詳情\u003c\/h3\u003e\u003cp\u003e這裡可以放運送方式、時間、費用等資訊。\u003c\/p\u003e`;\r\n\t\t\t} else if (tab === 'care') {\r\n\t\t\t\tmodalInner.innerHTML = `\r\n\t\t\u003ch3\u003eCARE\u003c\/h3\u003e\r\n\t\t\u003col\u003e\r\n\t\t\t\u003cli\u003eWhen wearing cycling jerseys, it is strongly recommended to wear and wash them based on the colors to reduce the risk of clothes bleeding colors onto each other.\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eAfter use, it is advisable to clean them promptly to prevent bacteria growth, odor formation, and the development of sweat stains, or even yellowing on the clothing.\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eWhen cleaning, remember to zip up all zippers to prevent fabric damage during the wash. Soak the clothing in \"cold water with neutral detergent\" for 5 - 10 minutes, then agitate it gently.\u003cbr\u003e\r\n\t\t\t\u003cstrong\u003e※ Do not use cold wash, fabric softener, or bleach, as these detergents can damage the fabric.\u003c\/strong\u003e\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eHand washing is preferred, but if you choose to use a washing machine, make sure to zip up all zippers, place the clothing inside a laundry bag, and wash it on the \" delicate wash mode\"\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eAfter washing, avoid \"wringing out\" the clothing, and refrain from using a dryer, as this may damage the fabric. Instead, wrap the clothing in a towel to remove excess moisture and hang it to air dry in a well-ventilated, cool place.\u003c\/li\u003e\r\n\t\t\u003c\/ol\u003e\r\n\t\t\u003cp\u003e\u003cstrong\u003e※ Due to variations in manufacturing processes and dyeing methods, some fading may occur when wearing or washing cycling clothing, especially for brighter colors. We strongly recommend you to wear and wash them with similar colors.\u003c\/strong\u003e\u003c\/p\u003e\r\n\t`;\r\n\r\n\t\t\t} else if (tab === 'size') {\r\n\t\t\t\tmodalInner.innerHTML = `\r\n          \u003ch3\u003eSIZE GUIDE\u003c\/h3\u003e\r\n          \u003cdiv class=\"toggle-wrapper\"\u003e\r\n            \u003cspan\u003eCM\u003c\/span\u003e\r\n            \u003clabel class=\"toggle\"\u003e\r\n              \u003cinput type=\"checkbox\" id=\"unitToggle\"\u003e\r\n              \u003cspan class=\"slider\"\u003e\u003c\/span\u003e\r\n            \u003c\/label\u003e\r\n            \u003cspan\u003eINCHES\u003c\/span\u003e\r\n          \u003c\/div\u003e\r\n          \u003ctable\u003e\r\n            \u003cthead\u003e\r\n              \u003ctr\u003e\r\n                \u003cth\u003eSIZE\u003c\/th\u003e\r\n                \u003cth id=\"chestHeader\"\u003eCHEST\u003c\/th\u003e\r\n                \u003cth id=\"waistHeader\"\u003eWAIST\u003c\/th\u003e\r\n                \u003cth id=\"hipHeader\"\u003eHIP\u003c\/th\u003e\r\n              \u003c\/tr\u003e\r\n            \u003c\/thead\u003e\r\n            \u003ctbody id=\"tableBody\"\u003e\u003c\/tbody\u003e\r\n          \u003c\/table\u003e\r\n        `;\r\n\t\t\t\trenderSizeTable('cm');\r\n\t\t\t\tdocument.getElementById(\"unitToggle\").addEventListener(\"change\", (e) =\u003e {\r\n\t\t\t\t\trenderSizeTable(e.target.checked ? 'inches' : 'cm');\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction renderSizeTable(unit) {\r\n\t\t\tconst body = document.getElementById(\"tableBody\");\r\n\t\t\tbody.innerHTML = \"\";\r\n\t\t\tsizeData[unit].forEach(row =\u003e {\r\n\t\t\t\tbody.innerHTML += `\r\n      \u003ctr\u003e\r\n        \u003ctd\u003e${row.size}\u003c\/td\u003e\r\n        \u003ctd\u003e${row.chest}\u003c\/td\u003e\r\n        \u003ctd\u003e${row.waist}\u003c\/td\u003e\r\n        \u003ctd\u003e${row.hip}\u003c\/td\u003e\r\n      \u003c\/tr\u003e`;\r\n\t\t\t});\r\n\t\t}\r\n\t\u003c\/script\u003e\r\n\u003c\/body\u003e\r\n\r\n\u003c\/html\u003e","brand":"ttbici","offers":[{"title":"XS","offer_id":48531800621280,"sku":"B6TC-E04-BK0XSM","price":4980.0,"currency_code":"TWD","in_stock":true},{"title":"S","offer_id":48531800654048,"sku":"B6TC-E04-BK00SM","price":4980.0,"currency_code":"TWD","in_stock":true},{"title":"M","offer_id":48531800686816,"sku":"B6TC-E04-BK00MM","price":4980.0,"currency_code":"TWD","in_stock":true},{"title":"L","offer_id":48531800719584,"sku":"B6TC-E04-BK00LM","price":4980.0,"currency_code":"TWD","in_stock":true},{"title":"XL","offer_id":48531800752352,"sku":"B6TC-E04-BK0XLM","price":4980.0,"currency_code":"TWD","in_stock":true},{"title":"2XL","offer_id":48531800785120,"sku":"B6TC-E04-BK2XLM","price":4980.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/men_classic_thermal_tights_black_01.jpg?v=1768184548"},{"product_id":"e-line-men-s-classic-thermal-tights-limestone","title":"e Line Men' Classic Thermal Tights \/ Limestone","description":"The ttbici e Line Classic Thermal Tights are designed for cold-weather rides. Crafted with brushed fleece inner fabric, the tights provide excellent insulation and muscle support while maintaining flexibility and freedom of movement. The DWR coating repels wind and light rain. With e Line’s minimalist design and refined embroidery, it delivers understated style and steady performance.\r\n\u003cbr\u003e\u003cbr\u003e\r\nRecommended for temperatures below 15°C.\r\n\u003cbr\u003e\u003cbr\u003e\r\n\r\n\u003c!DOCTYPE html\u003e\r\n\u003chtml lang=\"zh-Hant\"\u003e\r\n\r\n\u003chead\u003e\r\n\t\u003cmeta charset=\"UTF-8\" \/\u003e\r\n\t\u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/\u003e\r\n\t\u003cstyle\u003e\r\n\t\tbody.product-modal-open {\r\n\t\t\toverflow: hidden;\r\n\t\t}\r\n\r\n\t\t.product-modal-overlay {\r\n\t\t\tdisplay: none;\r\n\t\t\tposition: fixed;\r\n\t\t\ttop: 0;\r\n\t\t\tleft: 0;\r\n\t\t\twidth: 100vw;\r\n\t\t\theight: 100vh;\r\n\t\t\tbackground-color: rgba(0, 0, 0, 0.5);\r\n\t\t\tbackdrop-filter: blur(2px);\r\n\t\t\tz-index: 1000;\r\n\t\t\tjustify-content: center;\r\n\t\t\talign-items: center;\r\n\t\t}\r\n\r\n\t\t.product-modal {\r\n\t\t\tbackground: white;\r\n\t\t\tpadding: 20px;\r\n\t\t\t\/* border-radius: 10px; *\/\r\n\t\t\tmax-width: 600px;\r\n\t\t\twidth: 90%;\r\n\t\t\tmax-height: 90vh;\r\n\t\t\toverflow-y: auto;\r\n\t\t\tposition: relative;\r\n\t\t}\r\n\r\n\t\t.product-modal .modal-close {\r\n\t\t\tposition: absolute;\r\n\t\t\ttop: 10px;\r\n\t\t\tright: 12px;\r\n\t\t\tfont-size: 20px;\r\n\t\t\tcursor: pointer;\r\n\t\t}\r\n\r\n\t\t\/* ✅ 統一按鈕樣式 *\/\r\n\t\t.button-group {\r\n\t\t\tdisplay: flex;\r\n\t\t\tgap: 12px;\r\n\t\t\tpadding-top: 20px;\r\n\t\t}\r\n\r\n\t\t.button-group button {\r\n\t\t\tpadding: 0px;\r\n\t\t\tborder: none;\r\n\t\t\tbackground-color: transparent;\r\n\t\t\tcolor: #333;\r\n\t\t\tcursor: pointer;\r\n\t\t\t\/* border-radius: 5px; *\/\r\n\t\t\tfont-size: 15px;\r\n\t\t\tfont-family: 'Microsoft JhengHei';\r\n\t\t\ttext-decoration: underline;\r\n\t\t}\r\n\r\n\t\t.button-group button.active {\r\n\t\t\t\/* background-color: #444; *\/\r\n\t\t}\r\n\r\n\t\tbutton:active {\r\n\t\t\tbox-shadow: none !important;\r\n\t\t\tcolor: #333 !important;\r\n\t\t}\r\n\r\n\t\t.product-modal table {\r\n\t\t\twidth: 100%;\r\n\t\t\tborder-collapse: collapse;\r\n\t\t\tmargin-top: 10px;\r\n\t\t}\r\n\r\n\t\t.product-modal th,\r\n\t\t.product-modal td {\r\n\t\t\tborder-bottom: 1px solid #ddd;\r\n\t\t\ttext-align: center;\r\n\t\t\tpadding: 8px;\r\n\t\t}\r\n\r\n\t\t\/* ✅ 新增的欄寬限制 *\/\r\n\t\t.product-modal table th:first-child,\r\n\t\t.product-modal table td:first-child {\r\n\t\t\twidth: 15%;\r\n\t\t\tmax-width: 15%;\r\n\t\t}\r\n\r\n\t\t.product-modal .toggle-wrapper {\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items: center;\r\n\t\t\tgap: 10px;\r\n\t\t\tmargin: 10px 0 20px;\r\n\t\t}\r\n\r\n\t\t.product-modal .toggle {\r\n\t\t\tposition: relative;\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 50px;\r\n\t\t\theight: 24px;\r\n\t\t}\r\n\r\n\t\t.product-modal .toggle input {\r\n\t\t\topacity: 0;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t}\r\n\r\n\t\t.product-modal .slider {\r\n\t\t\tposition: absolute;\r\n\t\t\tcursor: pointer;\r\n\t\t\tbackground-color: #ccc;\r\n\t\t\tborder-radius: 24px;\r\n\t\t\ttop: 0;\r\n\t\t\tleft: 0;\r\n\t\t\tright: 0;\r\n\t\t\tbottom: 0;\r\n\t\t\ttransition: 0.4s;\r\n\t\t}\r\n\r\n\t\t.product-modal .slider:before {\r\n\t\t\tcontent: \"\";\r\n\t\t\tposition: absolute;\r\n\t\t\theight: 18px;\r\n\t\t\twidth: 18px;\r\n\t\t\tleft: 3px;\r\n\t\t\tbottom: 3px;\r\n\t\t\tbackground-color: white;\r\n\t\t\ttransition: 0.4s;\r\n\t\t\tborder-radius: 50%;\r\n\t\t}\r\n\r\n\t\t.product-modal input:checked+.slider {\r\n\t\t\tbackground-color: #333;\r\n\t\t}\r\n\r\n\t\t.product-modal input:checked+.slider:before {\r\n\t\t\ttransform: translateX(26px);\r\n\t\t}\r\n\r\n\t\t.product-modal .modalInnerContent h3 {\r\n\t\t\tpadding: 20px 0;\r\n\r\n\t\t}\r\n\t\u003c\/style\u003e\r\n\u003c\/head\u003e\r\n\r\n\u003cbody\u003e\r\n\r\n\t\u003c!-- 外部觸發按鈕 --\u003e\r\n\t\u003cdiv class=\"button-group\"\u003e\r\n\t\t\u003c!-- \u003cbutton onclick=\"openModal('shipping')\"\u003e運送詳情\u003c\/button\u003e --\u003e\r\n\t\t\u003cbutton onclick=\"openModal('size')\"\u003eSIZE GUIDE\u003c\/button\u003e\r\n\t\t\u003cbutton onclick=\"openModal('care')\"\u003eCARE\u003c\/button\u003e\r\n\t\u003c\/div\u003e\r\n\r\n\t\u003c!-- Modal --\u003e\r\n\t\u003cdiv class=\"product-modal-overlay\" id=\"modalOverlay\"\u003e\r\n\t\t\u003cdiv class=\"product-modal\" id=\"modalContent\"\u003e\r\n\t\t\t\u003cdiv class=\"modal-close\" onclick=\"closeModal()\"\u003e×\u003c\/div\u003e\r\n\r\n\t\t\t\u003c!-- 內部選單 --\u003e\r\n\t\t\t\u003cdiv class=\"button-group\" id=\"infoTabs\"\u003e\r\n\t\t\t\t\u003c!-- \u003cbutton id=\"tab-shipping\" onclick=\"switchTab('shipping')\"\u003e運送詳情\u003c\/button\u003e --\u003e\r\n\t\t\t\t\u003cbutton id=\"tab-size\" onclick=\"switchTab('size')\"\u003eSIZE GUIDE\u003c\/button\u003e\r\n\t\t\t\t\u003cbutton id=\"tab-care\" onclick=\"switchTab('care')\"\u003eCARE\u003c\/button\u003e\r\n\t\t\t\u003c\/div\u003e\r\n\r\n\t\t\t\u003c!-- 內容區 --\u003e\r\n\t\t\t\u003cdiv id=\"modalInnerContent\"\u003e\u003c\/div\u003e\r\n\t\t\u003c\/div\u003e\r\n\t\u003c\/div\u003e\r\n\r\n\t\u003cscript\u003e\r\n\t\tconst modalOverlay = document.getElementById(\"modalOverlay\");\r\n\t\tconst modalInner = document.getElementById(\"modalInnerContent\");\r\n\r\n\t\tconst sizeData = {\r\n\t\t\tcm: [\r\n\t\t\t\t{ size: 'XS', chest: '80–88', waist: '68–76', hip: '82–90' },\r\n\t\t\t\t{ size: 'S', chest: '85–93', waist: '73–81', hip: '87–95' },\r\n\t\t\t\t{ size: 'M', chest: '89–97', waist: '77–85', hip: '91–99' },\r\n\t\t\t\t{ size: 'L', chest: '93–101', waist: '81–89', hip: '95–103' },\r\n\t\t\t\t{ size: 'XL', chest: '97–105', waist: '85–93', hip: '99–107' },\r\n\t\t\t\t{ size: '2XL', chest: '101–109', waist: '89–97', hip: '103–111' }\r\n\t\t\t],\r\n\t\t\tinches: [\r\n\t\t\t\t{ size: 'XS', chest: '32–35', waist: '27–30', hip: '32–35' },\r\n\t\t\t\t{ size: 'S', chest: '34–37', waist: '29–32', hip: '34–37' },\r\n\t\t\t\t{ size: 'M', chest: '35–38', waist: '30–33', hip: '36–39' },\r\n\t\t\t\t{ size: 'L', chest: '37–40', waist: '32–35', hip: '37–40' },\r\n\t\t\t\t{ size: 'XL', chest: '38–41', waist: '34–37', hip: '39–42' },\r\n\t\t\t\t{ size: '2XL', chest: '40–43', waist: '35–38', hip: '41–44' }\r\n\t\t\t]\r\n\t\t};\r\n\r\n\t\tfunction openModal(defaultTab) {\r\n\t\t\tdocument.body.classList.add(\"product-modal-open\");\r\n\t\t\tmodalOverlay.style.display = \"flex\";\r\n\t\t\tswitchTab(defaultTab);\r\n\t\t}\r\n\r\n\t\tfunction closeModal() {\r\n\t\t\tmodalOverlay.style.display = \"none\";\r\n\t\t\tmodalInner.innerHTML = \"\";\r\n\t\t\tdocument.body.classList.remove(\"product-modal-open\");\r\n\t\t}\r\n\r\n\t\tfunction switchTab(tab) {\r\n\t\t\t['shipping', 'care', 'size'].forEach(id =\u003e {\r\n\t\t\t\tconst btn = document.getElementById(`tab-${id}`);\r\n\t\t\t\tif (btn) btn.classList.remove(\"active\");\r\n\t\t\t});\r\n\r\n\t\t\tconst activeBtn = document.getElementById(`tab-${tab}`);\r\n\t\t\tif (activeBtn) activeBtn.classList.add(\"active\");\r\n\r\n\t\t\tif (tab === 'shipping') {\r\n\t\t\t\tmodalInner.innerHTML = `\u003ch3\u003e運送詳情\u003c\/h3\u003e\u003cp\u003e這裡可以放運送方式、時間、費用等資訊。\u003c\/p\u003e`;\r\n\t\t\t} else if (tab === 'care') {\r\n\t\t\t\tmodalInner.innerHTML = `\r\n\t\t\u003ch3\u003eCARE\u003c\/h3\u003e\r\n\t\t\u003col\u003e\r\n\t\t\t\u003cli\u003eWhen wearing cycling jerseys, it is strongly recommended to wear and wash them based on the colors to reduce the risk of clothes bleeding colors onto each other.\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eAfter use, it is advisable to clean them promptly to prevent bacteria growth, odor formation, and the development of sweat stains, or even yellowing on the clothing.\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eWhen cleaning, remember to zip up all zippers to prevent fabric damage during the wash. Soak the clothing in \"cold water with neutral detergent\" for 5 - 10 minutes, then agitate it gently.\u003cbr\u003e\r\n\t\t\t\u003cstrong\u003e※ Do not use cold wash, fabric softener, or bleach, as these detergents can damage the fabric.\u003c\/strong\u003e\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eHand washing is preferred, but if you choose to use a washing machine, make sure to zip up all zippers, place the clothing inside a laundry bag, and wash it on the \" delicate wash mode\"\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eAfter washing, avoid \"wringing out\" the clothing, and refrain from using a dryer, as this may damage the fabric. Instead, wrap the clothing in a towel to remove excess moisture and hang it to air dry in a well-ventilated, cool place.\u003c\/li\u003e\r\n\t\t\u003c\/ol\u003e\r\n\t\t\u003cp\u003e\u003cstrong\u003e※ Due to variations in manufacturing processes and dyeing methods, some fading may occur when wearing or washing cycling clothing, especially for brighter colors. We strongly recommend you to wear and wash them with similar colors.\u003c\/strong\u003e\u003c\/p\u003e\r\n\t`;\r\n\r\n\t\t\t} else if (tab === 'size') {\r\n\t\t\t\tmodalInner.innerHTML = `\r\n          \u003ch3\u003eSIZE GUIDE\u003c\/h3\u003e\r\n          \u003cdiv class=\"toggle-wrapper\"\u003e\r\n            \u003cspan\u003eCM\u003c\/span\u003e\r\n            \u003clabel class=\"toggle\"\u003e\r\n              \u003cinput type=\"checkbox\" id=\"unitToggle\"\u003e\r\n              \u003cspan class=\"slider\"\u003e\u003c\/span\u003e\r\n            \u003c\/label\u003e\r\n            \u003cspan\u003eINCHES\u003c\/span\u003e\r\n          \u003c\/div\u003e\r\n          \u003ctable\u003e\r\n            \u003cthead\u003e\r\n              \u003ctr\u003e\r\n                \u003cth\u003eSIZE\u003c\/th\u003e\r\n                \u003cth id=\"chestHeader\"\u003eCHEST\u003c\/th\u003e\r\n                \u003cth id=\"waistHeader\"\u003eWAIST\u003c\/th\u003e\r\n                \u003cth id=\"hipHeader\"\u003eHIP\u003c\/th\u003e\r\n              \u003c\/tr\u003e\r\n            \u003c\/thead\u003e\r\n            \u003ctbody id=\"tableBody\"\u003e\u003c\/tbody\u003e\r\n          \u003c\/table\u003e\r\n        `;\r\n\t\t\t\trenderSizeTable('cm');\r\n\t\t\t\tdocument.getElementById(\"unitToggle\").addEventListener(\"change\", (e) =\u003e {\r\n\t\t\t\t\trenderSizeTable(e.target.checked ? 'inches' : 'cm');\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction renderSizeTable(unit) {\r\n\t\t\tconst body = document.getElementById(\"tableBody\");\r\n\t\t\tbody.innerHTML = \"\";\r\n\t\t\tsizeData[unit].forEach(row =\u003e {\r\n\t\t\t\tbody.innerHTML += `\r\n      \u003ctr\u003e\r\n        \u003ctd\u003e${row.size}\u003c\/td\u003e\r\n        \u003ctd\u003e${row.chest}\u003c\/td\u003e\r\n        \u003ctd\u003e${row.waist}\u003c\/td\u003e\r\n        \u003ctd\u003e${row.hip}\u003c\/td\u003e\r\n      \u003c\/tr\u003e`;\r\n\t\t\t});\r\n\t\t}\r\n\t\u003c\/script\u003e\r\n\u003c\/body\u003e\r\n\r\n\u003c\/html\u003e","brand":"ttbici","offers":[{"title":"XS","offer_id":48531800817888,"sku":"B6TC-E04-GY0XSM","price":4980.0,"currency_code":"TWD","in_stock":true},{"title":"S","offer_id":48531800850656,"sku":"B6TC-E04-GY00SM","price":4980.0,"currency_code":"TWD","in_stock":true},{"title":"M","offer_id":48531800883424,"sku":"B6TC-E04-GY00MM","price":4980.0,"currency_code":"TWD","in_stock":true},{"title":"L","offer_id":48531800916192,"sku":"B6TC-E04-GY00LM","price":4980.0,"currency_code":"TWD","in_stock":true},{"title":"XL","offer_id":48531800948960,"sku":"B6TC-E04-GY0XLM","price":4980.0,"currency_code":"TWD","in_stock":true},{"title":"2XL","offer_id":48531800981728,"sku":"B6TC-E04-GY2XLM","price":4980.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/men_classic_thermal_tights_limestone_01.jpg?v=1768184557"}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/collections\/eline-mainbg_2.jpg?v=1772680927","url":"https:\/\/www.ttbici.com\/en-us\/collections\/mens-e-line.oembed","provider":"TTBICI","version":"1.0","type":"link"}