{"title":"Women's Collection","description":"","products":[{"product_id":"ttbici-a-line-lightweight-jacket-black","title":"a Line Lightweight Jacket \/ Black","description":"The ttbici a Line Lightweight Jacket combines ultralight materials with exceptional wind resistance. Featuring a DWR Coating, it effectively repels water and moisture, providing reliable protection against unpredictable weather conditions.\r\n\u003cbr\u003e\u003cbr\u003e\r\nWith a self-packable design for easy portability, this jacket ensures optimal comfort and protection against sudden rain or strong winds—allowing you to ride with confidence, no matter the conditions.\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":48067794731232,"sku":"B6TC-A06-BK0XSN","price":3880.0,"currency_code":"TWD","in_stock":true},{"title":"S","offer_id":48067794764000,"sku":"B6TC-A06-BK00SN","price":3880.0,"currency_code":"TWD","in_stock":true},{"title":"M","offer_id":48067794796768,"sku":"B6TC-A06-BK00MN","price":3880.0,"currency_code":"TWD","in_stock":true},{"title":"L","offer_id":48067794829536,"sku":"B6TC-A06-BK00LN","price":3880.0,"currency_code":"TWD","in_stock":true},{"title":"XL","offer_id":48067794862304,"sku":"B6TC-A06-BK0XLN","price":3880.0,"currency_code":"TWD","in_stock":false},{"title":"2XL","offer_id":48067794895072,"sku":"B6TC-A06-BK2XLN","price":3880.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/dsc05803_1.jpg?v=1761635446"},{"product_id":"ttbici-a-line-lightweight-jacket-grey","title":"a Line Lightweight Jacket \/ Grey","description":"The ttbici a Line Lightweight Jacket combines ultralight materials with exceptional wind resistance. Featuring a DWR Coating, it effectively repels water and moisture, providing reliable protection against unpredictable weather conditions.\r\n\u003cbr\u003e\u003cbr\u003e\r\nWith a self-packable design for easy portability, this jacket ensures optimal comfort and protection against sudden rain or strong winds—allowing you to ride with confidence, no matter the conditions.\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":48067794993376,"sku":"B6TC-A06-GY0XSN","price":3880.0,"currency_code":"TWD","in_stock":false},{"title":"S","offer_id":48067795026144,"sku":"B6TC-A06-GY00SN","price":3880.0,"currency_code":"TWD","in_stock":true},{"title":"M","offer_id":48067795058912,"sku":"B6TC-A06-GY00MN","price":3880.0,"currency_code":"TWD","in_stock":true},{"title":"L","offer_id":48067795091680,"sku":"B6TC-A06-GY00LN","price":3880.0,"currency_code":"TWD","in_stock":true},{"title":"XL","offer_id":48067795124448,"sku":"B6TC-A06-GY0XLN","price":3880.0,"currency_code":"TWD","in_stock":false},{"title":"2XL","offer_id":48067795157216,"sku":"B6TC-A06-GY2XLN","price":3880.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/dsc05804_1.jpg?v=1761635455"},{"product_id":"ttbici-lightweight-mitts-black","title":"Lightweight Mitts \/ Black","description":"High-Density Palm Padding: Effectively reduces impact and enhances protection.\r\n\u003cbr\u003e\u003cbr\u003e\r\nReflective Print Details: Improved visibility and safety with 3M high-reflection technology.\r\n\u003cbr\u003e\u003cbr\u003e\r\nFull Palm Perforation Design: Enhances breathability, reducing stuffiness and increasing comfort.","brand":"ttbici","offers":[{"title":"XS","offer_id":48067894640864,"sku":"B1TC-G01-BK0XSN","price":1280.0,"currency_code":"TWD","in_stock":true},{"title":"S","offer_id":48067894673632,"sku":"B1TC-G01-BK00SN","price":1280.0,"currency_code":"TWD","in_stock":true},{"title":"M","offer_id":48067894706400,"sku":"B1TC-G01-BK00MN","price":1280.0,"currency_code":"TWD","in_stock":true},{"title":"L","offer_id":48067894739168,"sku":"B1TC-G01-BK00LN","price":1280.0,"currency_code":"TWD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/dsc05514_1.jpg?v=1761642148"},{"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-team-cycling-cap-grey","title":"Team Cycling Cap \/ Grey","description":"The ttbici Team Cycling Cap is crafted from lightweight, quick-drying, and stretchable fabric, offering exceptional breathability and flexibility. Designed for high-intensity rides, it keeps you cool, dry, and stylish throughout your journey.","brand":"ttbici","offers":[{"title":"Default Title","offer_id":48070200230112,"sku":"B1TC-C02-GY000N","price":580.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/team_cycling_cap_grey_1.jpg?v=1761704000"},{"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-team-socks-purple","title":"Team Socks \/ Purple","description":"ttbici a Line Socks feature an elastic cuff design for a secure yet easy fit. Engineered with COOLMAX® technology, the specialized fiber structure efficiently wicks moisture away from the skin, accelerating evaporation to keep your feet dry, lightweight, breathable, comfortable, and durable.","brand":"ttbici","offers":[{"title":"SM","offer_id":48070266388704,"sku":"B1TC-F02-PG0SMN","price":580.0,"currency_code":"TWD","in_stock":true},{"title":"L-XL","offer_id":48070266421472,"sku":"B1TC-F02-PGLXLN","price":580.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/team_socks_-purple_1_1.jpg?v=1761708202"},{"product_id":"ttbici-team-socks-white","title":"Team Socks \/ White","description":"ttbici a Line Socks feature an elastic cuff design for a secure yet easy fit. Engineered with COOLMAX® technology, the specialized fiber structure efficiently wicks moisture away from the skin, accelerating evaporation to keep your feet dry, lightweight, breathable, comfortable, and durable.","brand":"ttbici","offers":[{"title":"SM","offer_id":48070266454240,"sku":"B1TC-F02-WH0SMN","price":580.0,"currency_code":"TWD","in_stock":true},{"title":"L-XL","offer_id":48070266487008,"sku":"B1TC-F02-WHLXLN","price":580.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/team_socks_-white_1_1.jpg?v=1761708208"},{"product_id":"ttbici-team-socks-grey","title":"Team Socks \/ Grey","description":"ttbici a Line Socks feature an elastic cuff design for a secure yet easy fit. Engineered with COOLMAX® technology, the specialized fiber structure efficiently wicks moisture away from the skin, accelerating evaporation to keep your feet dry, lightweight, breathable, comfortable, and durable.","brand":"ttbici","offers":[{"title":"SM","offer_id":48070266519776,"sku":"B1TC-F02-GY0SMN","price":580.0,"currency_code":"TWD","in_stock":true},{"title":"L-XL","offer_id":48070266552544,"sku":"B1TC-F02-GYLXLN","price":580.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/team_socks_grey_1_1.jpg?v=1761708214"},{"product_id":"ttbici-a-2-performance-sunglasses-transparent-black-grey-lens","title":"A-2 Performance Sunglasses \/ Transparent Black \/ Grey Lens (CAT3)","description":"ttbici A-2 Performance Sunglasses \u003cbr\u003e\r\nFeaturing a large curved lens design, the A-2 offers an expanded field of vision while enhancing aerodynamic efficiency.\u003cbr\u003e\r\nPaired with multiple lens options, it delivers optimal performance for high-speed riding across all weather conditions.\r\n","brand":"ttbici","offers":[{"title":"Default Title","offer_id":48073344024800,"sku":"B1TC-EA2-BKGRYN","price":3280.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/b1tc-ea2-bkgryn_1.jpg?v=1761810703"},{"product_id":"ttbici-a-2-performance-sunglasses-transparent-black-photochromic-lens","title":"A-2 Performance Sunglasses \/ Transparent Black \/ Photochromic Lens (CAT 0 - 3)","description":"ttbici A-2 Performance Sunglasses \u003cbr\u003e\r\nFeaturing a large curved lens design, the A-2 offers an expanded field of vision while enhancing aerodynamic efficiency.\u003cbr\u003e\r\nPaired with multiple lens options, it delivers optimal performance for high-speed riding across all weather conditions.\r\n","brand":"ttbici","offers":[{"title":"Default Title","offer_id":48073344057568,"sku":"B1TC-EA2-BKPHON","price":4380.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/b1tc-ea2-bkphon_1.jpg?v=1761810709"},{"product_id":"ttbici-a-2-performance-sunglasses-matte-clear-photochromic-lens","title":"A-2 Performance Sunglasses \/ Matte Clear \/ Photochromic Lens (CAT 0 - 3)","description":"ttbici A-2 Performance Sunglasses \u003cbr\u003e\r\nFeaturing a large curved lens design, the A-2 offers an expanded field of vision while enhancing aerodynamic efficiency.\u003cbr\u003e\r\nPaired with multiple lens options, it delivers optimal performance for high-speed riding across all weather conditions.\r\n","brand":"ttbici","offers":[{"title":"Default Title","offer_id":48073344155872,"sku":"B1TC-EA2-CLPHON","price":4380.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/b1tc-ea2-clphon_1.jpg?v=1761810723"},{"product_id":"ttbici-a-2-performance-sunglasses-matte-purple-green-lens","title":"A-2 Performance Sunglasses \/ Matte Purple \/ Green Lens (CAT3)","description":"ttbici A-2 Performance Sunglasses \u003cbr\u003e\r\nFeaturing a large curved lens design, the A-2 offers an expanded field of vision while enhancing aerodynamic efficiency.\u003cbr\u003e\r\nPaired with multiple lens options, it delivers optimal performance for high-speed riding across all weather conditions.\r\n","brand":"ttbici","offers":[{"title":"Default Title","offer_id":48073344221408,"sku":"B1TC-EA2-PGGREN","price":3280.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/b1tc-ea2-pggren_1.jpg?v=1761810729"},{"product_id":"ttbici-a-2-performance-sunglasses-matte-purple-photochromic-lens","title":"A-2 Performance Sunglasses \/ Matte Purple \/ Photochromic Lens (CAT 0 - 3)","description":"ttbici A-2 Performance Sunglasses \u003cbr\u003e\r\nFeaturing a large curved lens design, the A-2 offers an expanded field of vision while enhancing aerodynamic efficiency.\u003cbr\u003e\r\nPaired with multiple lens options, it delivers optimal performance for high-speed riding across all weather conditions.\r\n","brand":"ttbici","offers":[{"title":"Default Title","offer_id":48073344254176,"sku":"B1TC-EA2-PGPHON","price":4380.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/b1tc-ea2-pgphon_1.jpg?v=1761810735"},{"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-u-1-active-sunglasses-matte-black-yellow-lens","title":"U-1 Active Sunglasses \/ Matte Black \/ Yellow Lens (CAT0)","description":"ttbici U-1 Active Sunglasses \u003cbr\u003e\r\nMore than just sports eyewear, the U-1 is the perfect choice for urban exploration and everyday fashion. \u003cbr\u003e\r\nWhether you're cycling through the city or styling your daily look, the U-1 seamlessly adapts to your lifestyle with effortless versatility.","brand":"ttbici","offers":[{"title":"Default Title","offer_id":48073344811232,"sku":"B1TC-EU1-BKYELN","price":1880.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/b1tc-eu1-bkyeln_1.jpg?v=1761810781"},{"product_id":"ttbici-u-1-active-sunglasses-matte-black-mirror-silver-lens","title":"U-1 Active Sunglasses \/ Matte Black \/ Mirror Silver Lens (CAT3)","description":"ttbici U-1 Active Sunglasses \u003cbr\u003e\r\nMore than just sports eyewear, the U-1 is the perfect choice for urban exploration and everyday fashion. \u003cbr\u003e\r\nWhether you're cycling through the city or styling your daily look, the U-1 seamlessly adapts to your lifestyle with effortless versatility.","brand":"ttbici","offers":[{"title":"Default Title","offer_id":48073345794272,"sku":"B1TC-EU1-BKSILN","price":2080.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/b1tc-eu1-bksiln_1.jpg?v=1761810786"},{"product_id":"ttbici-u-1-active-sunglasses-matte-grey-pink-lens","title":"U-1 Active Sunglasses \/ Matte Grey \/ Pink Lens (CAT1)","description":"ttbici U-1 Active Sunglasses \u003cbr\u003e\r\nMore than just sports eyewear, the U-1 is the perfect choice for urban exploration and everyday fashion. \u003cbr\u003e\r\nWhether you're cycling through the city or styling your daily look, the U-1 seamlessly adapts to your lifestyle with effortless versatility.","brand":"ttbici","offers":[{"title":"Default Title","offer_id":48073345827040,"sku":"B1TC-EU1-GYPINN","price":1880.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/b1tc-eu1-gypinn_1.jpg?v=1761810792"},{"product_id":"ttbici-u-1-active-sunglasses-matte-grey-mirror-blue-lens","title":"U-1 Active Sunglasses \/ Matte Grey \/ Mirror Blue Lens (CAT3)","description":"ttbici U-1 Active Sunglasses \u003cbr\u003e\r\nMore than just sports eyewear, the U-1 is the perfect choice for urban exploration and everyday fashion. \u003cbr\u003e\r\nWhether you're cycling through the city or styling your daily look, the U-1 seamlessly adapts to your lifestyle with effortless versatility.","brand":"ttbici","offers":[{"title":"Default Title","offer_id":48073345859808,"sku":"B1TC-EU1-GYBLUN","price":2080.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/b1tc-eu1-gyblun_1.jpg?v=1761810799"},{"product_id":"ttbici-u-1-active-sunglasses-matte-brown-grey-lens","title":"U-1 Active Sunglasses \/ Matte Brown \/ Grey Lens (CAT3)","description":"ttbici U-1 Active Sunglasses \u003cbr\u003e\r\nMore than just sports eyewear, the U-1 is the perfect choice for urban exploration and everyday fashion. \u003cbr\u003e\r\nWhether you're cycling through the city or styling your daily look, the U-1 seamlessly adapts to your lifestyle with effortless versatility.","brand":"ttbici","offers":[{"title":"Default Title","offer_id":48073345892576,"sku":"B1TC-EU1-BRGRYN","price":1880.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/b1tc-eu1-brgryn_1.jpg?v=1761810805"},{"product_id":"ttbici-u-1-active-sunglasses-matte-brown-mirror-gold-lens","title":"U-1 Active Sunglasses \/ Matte Brown \/ Mirror Gold Lens (CAT3)","description":"ttbici U-1 Active Sunglasses \u003cbr\u003e\r\nMore than just sports eyewear, the U-1 is the perfect choice for urban exploration and everyday fashion. \u003cbr\u003e\r\nWhether you're cycling through the city or styling your daily look, the U-1 seamlessly adapts to your lifestyle with effortless versatility.","brand":"ttbici","offers":[{"title":"Default Title","offer_id":48073345958112,"sku":"B1TC-EU1-BRGOLN","price":2080.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/b1tc-eu1-brgoln_1.jpg?v=1761810811"},{"product_id":"ttbici-u-line-tech-t-shirt-black","title":"U Line Tech T-shirt \/ Black","description":"The ttbici U Line TECH T-Shirt is designed specifically for cycling commuters, combining functionality with everyday comfort. Infused with Polygeine® technology, this performance tee actively inhibits bacterial growth, ensuring long-lasting freshness by preventing odors at the source. Even after a sweaty ride, you can confidently step into your next destination without worrying about unpleasant smells—eliminating the need for extra clothing changes. Whether you're commuting, running errands, or enjoying a casual ride, this breathable and lightweight tee is your perfect companion for an active lifestyle.\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', width: '46', length: '63', sleeve: '37' },\r\n\t\t\t\t{ size: 'S', width: '49', length: '66', sleeve: '38' },\r\n\t\t\t\t{ size: 'M', width: '52', length: '69', sleeve: '39' },\r\n\t\t\t\t{ size: 'L', width: '55', length: '71', sleeve: '40' },\r\n\t\t\t\t{ size: 'XL', width: '58', length: '74', sleeve: '41' },\r\n\t\t\t\t{ size: '2XL', width: '60', length: '77', sleeve: '42' }\r\n\t\t\t],\r\n\t\t\tinches: [\r\n\t\t\t\t{ size: 'XS', width: '18', length: '25', sleeve: '14.5' },\r\n\t\t\t\t{ size: 'S', width: '19', length: '26', sleeve: '14.5' },\r\n\t\t\t\t{ size: 'M', width: '21', length: '27', sleeve: '15' },\r\n\t\t\t\t{ size: 'L', width: '22', length: '28', sleeve: '15.5' },\r\n\t\t\t\t{ size: 'XL', width: '23', length: '29', sleeve: '16' },\r\n\t\t\t\t{ size: '2XL', width: '24', length: '30', sleeve: '16.5' }\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      `;\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=\"widthHeader\"\u003eWIDTH\u003c\/th\u003e\r\n              \u003cth id=\"lengthHeader\"\u003eLENGTH\u003c\/th\u003e\r\n              \u003cth id=\"sleeveHeader\"\u003eSLEEVE\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.width}\u003c\/td\u003e\r\n          \u003ctd\u003e${row.length}\u003c\/td\u003e\r\n          \u003ctd\u003e${row.sleeve}\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\r\n\u003c\/body\u003e\r\n\r\n\u003c\/html\u003e","brand":"ttbici","offers":[{"title":"XS","offer_id":48073386295520,"sku":"B6TC-U01-BK0XSN","price":1980.0,"currency_code":"TWD","in_stock":true},{"title":"S","offer_id":48073386328288,"sku":"B6TC-U01-BK00SN","price":1980.0,"currency_code":"TWD","in_stock":true},{"title":"M","offer_id":48073386361056,"sku":"B6TC-U01-BK00MN","price":1980.0,"currency_code":"TWD","in_stock":true},{"title":"L","offer_id":48073386393824,"sku":"B6TC-U01-BK00LN","price":1980.0,"currency_code":"TWD","in_stock":true},{"title":"XL","offer_id":48073386426592,"sku":"B6TC-U01-BK0XLN","price":1980.0,"currency_code":"TWD","in_stock":true},{"title":"2XL","offer_id":48073386459360,"sku":"B6TC-U01-BK2XLN","price":1980.0,"currency_code":"TWD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/dsc05559_1.jpg?v=1761813182"},{"product_id":"ttbici-u-line-tech-t-shirt-bleached-sand","title":"U Line Tech T-shirt \/ Bleached Sand","description":"The ttbici U Line TECH T-Shirt is designed specifically for cycling commuters, combining functionality with everyday comfort. Infused with Polygeine® technology, this performance tee actively inhibits bacterial growth, ensuring long-lasting freshness by preventing odors at the source. Even after a sweaty ride, you can confidently step into your next destination without worrying about unpleasant smells—eliminating the need for extra clothing changes. Whether you're commuting, running errands, or enjoying a casual ride, this breathable and lightweight tee is your perfect companion for an active lifestyle.\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', width: '46', length: '63', sleeve: '37' },\r\n\t\t\t\t{ size: 'S', width: '49', length: '66', sleeve: '38' },\r\n\t\t\t\t{ size: 'M', width: '52', length: '69', sleeve: '39' },\r\n\t\t\t\t{ size: 'L', width: '55', length: '71', sleeve: '40' },\r\n\t\t\t\t{ size: 'XL', width: '58', length: '74', sleeve: '41' },\r\n\t\t\t\t{ size: '2XL', width: '60', length: '77', sleeve: '42' }\r\n\t\t\t],\r\n\t\t\tinches: [\r\n\t\t\t\t{ size: 'XS', width: '18', length: '25', sleeve: '14.5' },\r\n\t\t\t\t{ size: 'S', width: '19', length: '26', sleeve: '14.5' },\r\n\t\t\t\t{ size: 'M', width: '21', length: '27', sleeve: '15' },\r\n\t\t\t\t{ size: 'L', width: '22', length: '28', sleeve: '15.5' },\r\n\t\t\t\t{ size: 'XL', width: '23', length: '29', sleeve: '16' },\r\n\t\t\t\t{ size: '2XL', width: '24', length: '30', sleeve: '16.5' }\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      `;\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=\"widthHeader\"\u003eWIDTH\u003c\/th\u003e\r\n              \u003cth id=\"lengthHeader\"\u003eLENGTH\u003c\/th\u003e\r\n              \u003cth id=\"sleeveHeader\"\u003eSLEEVE\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.width}\u003c\/td\u003e\r\n          \u003ctd\u003e${row.length}\u003c\/td\u003e\r\n          \u003ctd\u003e${row.sleeve}\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\r\n\u003c\/body\u003e\r\n\r\n\u003c\/html\u003e","brand":"ttbici","offers":[{"title":"XS","offer_id":48073386590432,"sku":"B6TC-U01-SD0XSN","price":1980.0,"currency_code":"TWD","in_stock":false},{"title":"S","offer_id":48073386623200,"sku":"B6TC-U01-SD00SN","price":1980.0,"currency_code":"TWD","in_stock":true},{"title":"M","offer_id":48073386655968,"sku":"B6TC-U01-SD00MN","price":1980.0,"currency_code":"TWD","in_stock":true},{"title":"L","offer_id":48073386688736,"sku":"B6TC-U01-SD00LN","price":1980.0,"currency_code":"TWD","in_stock":true},{"title":"XL","offer_id":48073386721504,"sku":"B6TC-U01-SD0XLN","price":1980.0,"currency_code":"TWD","in_stock":true},{"title":"2XL","offer_id":48073386754272,"sku":"B6TC-U01-SD2XLN","price":1980.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/dsc05552_1.jpg?v=1761813190"},{"product_id":"ttbici-u-line-tech-t-shirt-rum-brown","title":"U Line Tech T-shirt \/ Rum Brown","description":"The ttbici U Line TECH T-Shirt is designed specifically for cycling commuters, combining functionality with everyday comfort. Infused with Polygeine® technology, this performance tee actively inhibits bacterial growth, ensuring long-lasting freshness by preventing odors at the source. Even after a sweaty ride, you can confidently step into your next destination without worrying about unpleasant smells—eliminating the need for extra clothing changes. Whether you're commuting, running errands, or enjoying a casual ride, this breathable and lightweight tee is your perfect companion for an active lifestyle.\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', width: '46', length: '63', sleeve: '37' },\r\n\t\t\t\t{ size: 'S', width: '49', length: '66', sleeve: '38' },\r\n\t\t\t\t{ size: 'M', width: '52', length: '69', sleeve: '39' },\r\n\t\t\t\t{ size: 'L', width: '55', length: '71', sleeve: '40' },\r\n\t\t\t\t{ size: 'XL', width: '58', length: '74', sleeve: '41' },\r\n\t\t\t\t{ size: '2XL', width: '60', length: '77', sleeve: '42' }\r\n\t\t\t],\r\n\t\t\tinches: [\r\n\t\t\t\t{ size: 'XS', width: '18', length: '25', sleeve: '14.5' },\r\n\t\t\t\t{ size: 'S', width: '19', length: '26', sleeve: '14.5' },\r\n\t\t\t\t{ size: 'M', width: '21', length: '27', sleeve: '15' },\r\n\t\t\t\t{ size: 'L', width: '22', length: '28', sleeve: '15.5' },\r\n\t\t\t\t{ size: 'XL', width: '23', length: '29', sleeve: '16' },\r\n\t\t\t\t{ size: '2XL', width: '24', length: '30', sleeve: '16.5' }\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      `;\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=\"widthHeader\"\u003eWIDTH\u003c\/th\u003e\r\n              \u003cth id=\"lengthHeader\"\u003eLENGTH\u003c\/th\u003e\r\n              \u003cth id=\"sleeveHeader\"\u003eSLEEVE\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.width}\u003c\/td\u003e\r\n          \u003ctd\u003e${row.length}\u003c\/td\u003e\r\n          \u003ctd\u003e${row.sleeve}\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\r\n\u003c\/body\u003e\r\n\r\n\u003c\/html\u003e","brand":"ttbici","offers":[{"title":"XS","offer_id":48073386918112,"sku":"B6TC-U01-BR0XSM","price":1980.0,"currency_code":"TWD","in_stock":true},{"title":"S","offer_id":48073386950880,"sku":"B6TC-U01-BR00SM","price":1980.0,"currency_code":"TWD","in_stock":true},{"title":"M","offer_id":48073386983648,"sku":"B6TC-U01-BR00MM","price":1980.0,"currency_code":"TWD","in_stock":true},{"title":"L","offer_id":48073387016416,"sku":"B6TC-U01-BR00LM","price":1980.0,"currency_code":"TWD","in_stock":true},{"title":"XL","offer_id":48073387049184,"sku":"B6TC-U01-BR0XLM","price":1980.0,"currency_code":"TWD","in_stock":true},{"title":"2XL","offer_id":48073387081952,"sku":"B6TC-U01-BR2XLM","price":1980.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/dsc05554-dark_red_1.jpg?v=1761813199"},{"product_id":"ttbici-u-line-tech-t-shirt-forest-green","title":"U Line Tech T-shirt \/ Forest Green","description":"The ttbici U Line TECH T-Shirt is designed specifically for cycling commuters, combining functionality with everyday comfort. Infused with Polygeine® technology, this performance tee actively inhibits bacterial growth, ensuring long-lasting freshness by preventing odors at the source. Even after a sweaty ride, you can confidently step into your next destination without worrying about unpleasant smells—eliminating the need for extra clothing changes. Whether you're commuting, running errands, or enjoying a casual ride, this breathable and lightweight tee is your perfect companion for an active lifestyle.\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', width: '46', length: '63', sleeve: '37' },\r\n\t\t\t\t{ size: 'S', width: '49', length: '66', sleeve: '38' },\r\n\t\t\t\t{ size: 'M', width: '52', length: '69', sleeve: '39' },\r\n\t\t\t\t{ size: 'L', width: '55', length: '71', sleeve: '40' },\r\n\t\t\t\t{ size: 'XL', width: '58', length: '74', sleeve: '41' },\r\n\t\t\t\t{ size: '2XL', width: '60', length: '77', sleeve: '42' }\r\n\t\t\t],\r\n\t\t\tinches: [\r\n\t\t\t\t{ size: 'XS', width: '18', length: '25', sleeve: '14.5' },\r\n\t\t\t\t{ size: 'S', width: '19', length: '26', sleeve: '14.5' },\r\n\t\t\t\t{ size: 'M', width: '21', length: '27', sleeve: '15' },\r\n\t\t\t\t{ size: 'L', width: '22', length: '28', sleeve: '15.5' },\r\n\t\t\t\t{ size: 'XL', width: '23', length: '29', sleeve: '16' },\r\n\t\t\t\t{ size: '2XL', width: '24', length: '30', sleeve: '16.5' }\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      `;\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=\"widthHeader\"\u003eWIDTH\u003c\/th\u003e\r\n              \u003cth id=\"lengthHeader\"\u003eLENGTH\u003c\/th\u003e\r\n              \u003cth id=\"sleeveHeader\"\u003eSLEEVE\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.width}\u003c\/td\u003e\r\n          \u003ctd\u003e${row.length}\u003c\/td\u003e\r\n          \u003ctd\u003e${row.sleeve}\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\r\n\u003c\/body\u003e\r\n\r\n\u003c\/html\u003e","brand":"ttbici","offers":[{"title":"XS","offer_id":48073387180256,"sku":"B6TC-U01-GR0XSM","price":1980.0,"currency_code":"TWD","in_stock":true},{"title":"S","offer_id":48073387213024,"sku":"B6TC-U01-GR00SM","price":1980.0,"currency_code":"TWD","in_stock":true},{"title":"M","offer_id":48073387245792,"sku":"B6TC-U01-GR00MM","price":1980.0,"currency_code":"TWD","in_stock":true},{"title":"L","offer_id":48073387278560,"sku":"B6TC-U01-GR00LM","price":1980.0,"currency_code":"TWD","in_stock":false},{"title":"XL","offer_id":48073387311328,"sku":"B6TC-U01-GR0XLM","price":1980.0,"currency_code":"TWD","in_stock":false},{"title":"2XL","offer_id":48073387344096,"sku":"B6TC-U01-GR2XLM","price":1980.0,"currency_code":"TWD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/dsc05554-dark_green_1.jpg?v=1761813207"},{"product_id":"ttbici-u-line-tech-t-shirt-granite-grey","title":"U Line Tech T-shirt \/ Granite Grey","description":"The ttbici U Line TECH T-Shirt is designed specifically for cycling commuters, combining functionality with everyday comfort. Infused with Polygeine® technology, this performance tee actively inhibits bacterial growth, ensuring long-lasting freshness by preventing odors at the source. Even after a sweaty ride, you can confidently step into your next destination without worrying about unpleasant smells—eliminating the need for extra clothing changes. Whether you're commuting, running errands, or enjoying a casual ride, this breathable and lightweight tee is your perfect companion for an active lifestyle.\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', width: '46', length: '63', sleeve: '37' },\r\n\t\t\t\t{ size: 'S', width: '49', length: '66', sleeve: '38' },\r\n\t\t\t\t{ size: 'M', width: '52', length: '69', sleeve: '39' },\r\n\t\t\t\t{ size: 'L', width: '55', length: '71', sleeve: '40' },\r\n\t\t\t\t{ size: 'XL', width: '58', length: '74', sleeve: '41' },\r\n\t\t\t\t{ size: '2XL', width: '60', length: '77', sleeve: '42' }\r\n\t\t\t],\r\n\t\t\tinches: [\r\n\t\t\t\t{ size: 'XS', width: '18', length: '25', sleeve: '14.5' },\r\n\t\t\t\t{ size: 'S', width: '19', length: '26', sleeve: '14.5' },\r\n\t\t\t\t{ size: 'M', width: '21', length: '27', sleeve: '15' },\r\n\t\t\t\t{ size: 'L', width: '22', length: '28', sleeve: '15.5' },\r\n\t\t\t\t{ size: 'XL', width: '23', length: '29', sleeve: '16' },\r\n\t\t\t\t{ size: '2XL', width: '24', length: '30', sleeve: '16.5' }\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      `;\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=\"widthHeader\"\u003eWIDTH\u003c\/th\u003e\r\n              \u003cth id=\"lengthHeader\"\u003eLENGTH\u003c\/th\u003e\r\n              \u003cth id=\"sleeveHeader\"\u003eSLEEVE\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.width}\u003c\/td\u003e\r\n          \u003ctd\u003e${row.length}\u003c\/td\u003e\r\n          \u003ctd\u003e${row.sleeve}\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\r\n\u003c\/body\u003e\r\n\r\n\u003c\/html\u003e","brand":"ttbici","offers":[{"title":"XS","offer_id":48073398026464,"sku":"B6TC-U01-GY0XSN","price":1980.0,"currency_code":"TWD","in_stock":true},{"title":"S","offer_id":48073398059232,"sku":"B6TC-U01-GY00SN","price":1980.0,"currency_code":"TWD","in_stock":true},{"title":"M","offer_id":48073398092000,"sku":"B6TC-U01-GY00MN","price":1980.0,"currency_code":"TWD","in_stock":true},{"title":"L","offer_id":48073398124768,"sku":"B6TC-U01-GY00LN","price":1980.0,"currency_code":"TWD","in_stock":true},{"title":"XL","offer_id":48073398157536,"sku":"B6TC-U01-GY0XLN","price":1980.0,"currency_code":"TWD","in_stock":true},{"title":"2XL","offer_id":48073398190304,"sku":"B6TC-U01-GY2XLN","price":1980.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/dsc05548_5.jpg?v=1761813775"},{"product_id":"ttbici-a-line-lightweight-gilet-black","title":"a Line Lightweight Gilet \/ Black","description":"The ttbici A Line Lightweight Gilet combines ultralight materials with exceptional wind resistance. Featuring a DWR Coating, it effectively repels water and moisture, providing reliable protection against unpredictable weather conditions.\r\n\u003cbr\u003e\u003cbr\u003e\r\nWith a self-packable design for easy portability, this jacket ensures optimal comfort and protection against sudden rain or strong winds—allowing you to ride with confidence, no matter the conditions.\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":48073429221600,"sku":"B6TC-A07-BK0XSN","price":3280.0,"currency_code":"TWD","in_stock":true},{"title":"S","offer_id":48073429254368,"sku":"B6TC-A07-BK00SN","price":3280.0,"currency_code":"TWD","in_stock":true},{"title":"M","offer_id":48073429287136,"sku":"B6TC-A07-BK00MN","price":3280.0,"currency_code":"TWD","in_stock":true},{"title":"L","offer_id":48073429319904,"sku":"B6TC-A07-BK00LN","price":3280.0,"currency_code":"TWD","in_stock":true},{"title":"XL","offer_id":48073429352672,"sku":"B6TC-A07-BK0XLN","price":3280.0,"currency_code":"TWD","in_stock":true},{"title":"2XL","offer_id":48073429385440,"sku":"B6TC-A07-BK2XLN","price":3280.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/dsc05799_1.jpg?v=1761814829"},{"product_id":"ttbici-a-line-lightweight-gilet-grey","title":"a Line Lightweight Gilet \/ Grey","description":"The ttbici A Line Lightweight Gilet combines ultralight materials with exceptional wind resistance. Featuring a DWR Coating, it effectively repels water and moisture, providing reliable protection against unpredictable weather conditions.\r\n\u003cbr\u003e\u003cbr\u003e\r\nWith a self-packable design for easy portability, this jacket ensures optimal comfort and protection against sudden rain or strong winds—allowing you to ride with confidence, no matter the conditions.\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":48073429483744,"sku":"B6TC-A07-GY0XSN","price":3280.0,"currency_code":"TWD","in_stock":true},{"title":"S","offer_id":48073429516512,"sku":"B6TC-A07-GY00SN","price":3280.0,"currency_code":"TWD","in_stock":true},{"title":"M","offer_id":48073429549280,"sku":"B6TC-A07-GY00MN","price":3280.0,"currency_code":"TWD","in_stock":true},{"title":"L","offer_id":48073429582048,"sku":"B6TC-A07-GY00LN","price":3280.0,"currency_code":"TWD","in_stock":true},{"title":"XL","offer_id":48073429614816,"sku":"B6TC-A07-GY0XLN","price":3280.0,"currency_code":"TWD","in_stock":false},{"title":"2XL","offer_id":48073429647584,"sku":"B6TC-A07-GY2XLN","price":3280.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/dsc05798_1.jpg?v=1761814838"},{"product_id":"ttbici-a-line-women-s-team-base-layer-white","title":"a Line Women' Team Base Layer \/ White","description":"The ttbici a Line Base Layer features a soft, quick-drying fabric with a highly breathable structure that efficiently wicks moisture and regulates body temperature. Designed for warm conditions, it ensures exceptional comfort and enhances the overall 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: '70–78', waist: '55–63', hip: '74–82' },\r\n\t\t\t\t{ size: 'S', chest: '74–82', waist: '59–67', hip: '78–86' },\r\n\t\t\t\t{ size: 'M', chest: '78–86', waist: '63–71', hip: '82–90' },\r\n\t\t\t\t{ size: 'L', chest: '82–90', waist: '67–75', hip: '86–94' }\r\n\t\t\t],\r\n\t\t\tinches: [\r\n\t\t\t\t{ size: 'XS', chest: '27–31', waist: '21–25', hip: '29–32' },\r\n\t\t\t\t{ size: 'S', chest: '29–32', waist: '23–26', hip: '31–34' },\r\n\t\t\t\t{ size: 'M', chest: '31–34', waist: '25–28', hip: '32–36' },\r\n\t\t\t\t{ size: 'L', chest: '32–36', waist: '27–30', hip: '34–37' }\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":48076929827040,"sku":"B6TC-A05-WH0XSW","price":1580.0,"currency_code":"TWD","in_stock":true},{"title":"S","offer_id":48076929859808,"sku":"B6TC-A05-WH00SW","price":1580.0,"currency_code":"TWD","in_stock":true},{"title":"M","offer_id":48076929892576,"sku":"B6TC-A05-WH00MW","price":1580.0,"currency_code":"TWD","in_stock":true},{"title":"L","offer_id":48076929925344,"sku":"B6TC-A05-WH00LW","price":1580.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/dsc05760-_-__4.jpg?v=1761900679"},{"product_id":"ttbici-a-line-women-s-team-base-layer-lime","title":"a Line Women' Team Base Layer \/ Lime","description":"The ttbici a Line Base Layer features a soft, quick-drying fabric with a highly breathable structure that efficiently wicks moisture and regulates body temperature. Designed for warm conditions, it ensures exceptional comfort and enhances the overall 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: '70–78', waist: '55–63', hip: '74–82' },\r\n\t\t\t\t{ size: 'S', chest: '74–82', waist: '59–67', hip: '78–86' },\r\n\t\t\t\t{ size: 'M', chest: '78–86', waist: '63–71', hip: '82–90' },\r\n\t\t\t\t{ size: 'L', chest: '82–90', waist: '67–75', hip: '86–94' }\r\n\t\t\t],\r\n\t\t\tinches: [\r\n\t\t\t\t{ size: 'XS', chest: '27–31', waist: '21–25', hip: '29–32' },\r\n\t\t\t\t{ size: 'S', chest: '29–32', waist: '23–26', hip: '31–34' },\r\n\t\t\t\t{ size: 'M', chest: '31–34', waist: '25–28', hip: '32–36' },\r\n\t\t\t\t{ size: 'L', chest: '32–36', waist: '27–30', hip: '34–37' }\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":48076929990880,"sku":"B6TC-A05-LG0XSW","price":1580.0,"currency_code":"TWD","in_stock":true},{"title":"S","offer_id":48076930023648,"sku":"B6TC-A05-LG00SW","price":1580.0,"currency_code":"TWD","in_stock":true},{"title":"M","offer_id":48076930056416,"sku":"B6TC-A05-LG00MW","price":1580.0,"currency_code":"TWD","in_stock":true},{"title":"L","offer_id":48076930089184,"sku":"B6TC-A05-LG00LW","price":1580.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/dsc05766_1.jpg?v=1761900686"},{"product_id":"ttbici-a-line-women-s-team-base-layer-grey","title":"a Line Women' Team Base Layer Grey","description":"The ttbici a Line Base Layer features a soft, quick-drying fabric with a highly breathable structure that efficiently wicks moisture and regulates body temperature. Designed for warm conditions, it ensures exceptional comfort and enhances the overall 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: '70–78', waist: '55–63', hip: '74–82' },\r\n\t\t\t\t{ size: 'S', chest: '74–82', waist: '59–67', hip: '78–86' },\r\n\t\t\t\t{ size: 'M', chest: '78–86', waist: '63–71', hip: '82–90' },\r\n\t\t\t\t{ size: 'L', chest: '82–90', waist: '67–75', hip: '86–94' }\r\n\t\t\t],\r\n\t\t\tinches: [\r\n\t\t\t\t{ size: 'XS', chest: '27–31', waist: '21–25', hip: '29–32' },\r\n\t\t\t\t{ size: 'S', chest: '29–32', waist: '23–26', hip: '31–34' },\r\n\t\t\t\t{ size: 'M', chest: '31–34', waist: '25–28', hip: '32–36' },\r\n\t\t\t\t{ size: 'L', chest: '32–36', waist: '27–30', hip: '34–37' }\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":48076930154720,"sku":"B6TC-A05-GY0XSW","price":1580.0,"currency_code":"TWD","in_stock":true},{"title":"S","offer_id":48076930187488,"sku":"B6TC-A05-GY00SW","price":1580.0,"currency_code":"TWD","in_stock":true},{"title":"M","offer_id":48076930220256,"sku":"B6TC-A05-GY00MW","price":1580.0,"currency_code":"TWD","in_stock":true},{"title":"L","offer_id":48076930253024,"sku":"B6TC-A05-GY00LW","price":1580.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/dsc05760_1.jpg?v=1761900693"},{"product_id":"ttbici-a-line-women-s-lightweight-bib-shorts-black","title":"a Line Women' Lightweight Bib Shorts \/ Black","description":"The ttbici a Line Lightweight Bib Shorts are engineered for high-intensity rides, featuring high-stretch, lightweight fabric, and premium Italian Elastic Interface Pads (E.I.T). With exceptional support and breathability, they ensure superior stability and comfort even on long-distance rides.\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: '70–78', waist: '55–63', hip: '74–82' },\r\n\t\t\t\t{ size: 'S', chest: '74–82', waist: '59–67', hip: '78–86' },\r\n\t\t\t\t{ size: 'M', chest: '78–86', waist: '63–71', hip: '82–90' },\r\n\t\t\t\t{ size: 'L', chest: '82–90', waist: '67–75', hip: '86–94' }\r\n\t\t\t],\r\n\t\t\tinches: [\r\n\t\t\t\t{ size: 'XS', chest: '27–31', waist: '21–25', hip: '29–32' },\r\n\t\t\t\t{ size: 'S', chest: '29–32', waist: '23–26', hip: '31–34' },\r\n\t\t\t\t{ size: 'M', chest: '31–34', waist: '25–28', hip: '32–36' },\r\n\t\t\t\t{ size: 'L', chest: '32–36', waist: '27–30', hip: '34–37' }\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":48082448416992,"sku":"B6TC-A03-BK0XSW","price":4580.0,"currency_code":"TWD","in_stock":true},{"title":"S","offer_id":48082448449760,"sku":"B6TC-A03-BK00SW","price":4580.0,"currency_code":"TWD","in_stock":true},{"title":"M","offer_id":48082448482528,"sku":"B6TC-A03-BK00MW","price":4580.0,"currency_code":"TWD","in_stock":true},{"title":"L","offer_id":48082448515296,"sku":"B6TC-A03-BK00LW","price":4580.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/dsc05780_3.jpg?v=1762154487"},{"product_id":"ttbici-a-line-women-s-lightweight-bib-shorts-bronze-green","title":"a Line Woen' Lightweight Bib Shorts \/ Bronze Green","description":"The ttbici a Line Lightweight Bib Shorts are engineered for high-intensity rides, featuring high-stretch, lightweight fabric, and premium Italian Elastic Interface Pads (E.I.T). With exceptional support and breathability, they ensure superior stability and comfort even on long-distance rides.\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: '70–78', waist: '55–63', hip: '74–82' },\r\n\t\t\t\t{ size: 'S', chest: '74–82', waist: '59–67', hip: '78–86' },\r\n\t\t\t\t{ size: 'M', chest: '78–86', waist: '63–71', hip: '82–90' },\r\n\t\t\t\t{ size: 'L', chest: '82–90', waist: '67–75', hip: '86–94' }\r\n\t\t\t],\r\n\t\t\tinches: [\r\n\t\t\t\t{ size: 'XS', chest: '27–31', waist: '21–25', hip: '29–32' },\r\n\t\t\t\t{ size: 'S', chest: '29–32', waist: '23–26', hip: '31–34' },\r\n\t\t\t\t{ size: 'M', chest: '31–34', waist: '25–28', hip: '32–36' },\r\n\t\t\t\t{ size: 'L', chest: '32–36', waist: '27–30', hip: '34–37' }\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":48082449039584,"sku":"B6TC-A03-GR0XSW","price":4580.0,"currency_code":"TWD","in_stock":true},{"title":"S","offer_id":48082449072352,"sku":"B6TC-A03-GR00SW","price":4580.0,"currency_code":"TWD","in_stock":true},{"title":"M","offer_id":48082449105120,"sku":"B6TC-A03-GR00MW","price":4580.0,"currency_code":"TWD","in_stock":true},{"title":"L","offer_id":48082449137888,"sku":"B6TC-A03-GR00LW","price":4580.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/dsc05784_1.jpg?v=1762154499"},{"product_id":"ttbici-a-line-women-s-cargo-bib-shorts-charcoal","title":"a Line Women' Cargo Bib Shorts \/ Charcoal","description":"The ttbici a Line Lightweight Cargo Bib Shorts feature strategically placed side storage pockets and a central rear pocket, allowing for quick and easy access to essentials. Designed for long-distance rides, they enhance convenience and functionality without compromising performance.\r\n\u003cbr\u003e\u003cbr\u003e\r\nEngineered for high-intensity rides, featuring high-stretch, lightweight fabric, and premium Italian Elastic Interface Pads (E.I.T). With exceptional support and breathability, they ensure superior stability and comfort even on long-distance rides.\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: '70–78', waist: '55–63', hip: '74–82' },\r\n\t\t\t\t{ size: 'S', chest: '74–82', waist: '59–67', hip: '78–86' },\r\n\t\t\t\t{ size: 'M', chest: '78–86', waist: '63–71', hip: '82–90' },\r\n\t\t\t\t{ size: 'L', chest: '82–90', waist: '67–75', hip: '86–94' }\r\n\t\t\t],\r\n\t\t\tinches: [\r\n\t\t\t\t{ size: 'XS', chest: '27–31', waist: '21–25', hip: '29–32' },\r\n\t\t\t\t{ size: 'S', chest: '29–32', waist: '23–26', hip: '31–34' },\r\n\t\t\t\t{ size: 'M', chest: '31–34', waist: '25–28', hip: '32–36' },\r\n\t\t\t\t{ size: 'L', chest: '32–36', waist: '27–30', hip: '34–37' }\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":48082449170656,"sku":"B6TC-A04-CH0XSW","price":5180.0,"currency_code":"TWD","in_stock":true},{"title":"S","offer_id":48082449203424,"sku":"B6TC-A04-CH00SW","price":5180.0,"currency_code":"TWD","in_stock":true},{"title":"M","offer_id":48082449236192,"sku":"B6TC-A04-CH00MW","price":5180.0,"currency_code":"TWD","in_stock":true},{"title":"L","offer_id":48082449268960,"sku":"B6TC-A04-CH00LW","price":5180.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/dsc05789-gray_1.jpg?v=1762154509"},{"product_id":"ttbici-a-line-women-s-cargo-bib-shorts-chocolate","title":"a Line Women' Cargo Bib Shorts \/ Chocolate","description":"The ttbici a Line Lightweight Cargo Bib Shorts feature strategically placed side storage pockets and a central rear pocket, allowing for quick and easy access to essentials. Designed for long-distance rides, they enhance convenience and functionality without compromising performance.\r\n\u003cbr\u003e\u003cbr\u003e\r\nEngineered for high-intensity rides, featuring high-stretch, lightweight fabric, and premium Italian Elastic Interface Pads (E.I.T). With exceptional support and breathability, they ensure superior stability and comfort even on long-distance rides.\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: '70–78', waist: '55–63', hip: '74–82' },\r\n\t\t\t\t{ size: 'S', chest: '74–82', waist: '59–67', hip: '78–86' },\r\n\t\t\t\t{ size: 'M', chest: '78–86', waist: '63–71', hip: '82–90' },\r\n\t\t\t\t{ size: 'L', chest: '82–90', waist: '67–75', hip: '86–94' }\r\n\t\t\t],\r\n\t\t\tinches: [\r\n\t\t\t\t{ size: 'XS', chest: '27–31', waist: '21–25', hip: '29–32' },\r\n\t\t\t\t{ size: 'S', chest: '29–32', waist: '23–26', hip: '31–34' },\r\n\t\t\t\t{ size: 'M', chest: '31–34', waist: '25–28', hip: '32–36' },\r\n\t\t\t\t{ size: 'L', chest: '32–36', waist: '27–30', hip: '34–37' }\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":48082449629408,"sku":"B6TC-A04-BR0XSW","price":5180.0,"currency_code":"TWD","in_stock":true},{"title":"S","offer_id":48082449662176,"sku":"B6TC-A04-BR00SW","price":5180.0,"currency_code":"TWD","in_stock":true},{"title":"M","offer_id":48082449694944,"sku":"B6TC-A04-BR00MW","price":5180.0,"currency_code":"TWD","in_stock":true},{"title":"L","offer_id":48082449727712,"sku":"B6TC-A04-BR00LW","price":5180.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/dsc05789_1.jpg?v=1762154517"},{"product_id":"ttbici-a-line-women-s-lightweight-bib-shorts-eclipse-purple","title":"a Line Women' Lightweight Bib Shorts \/ Eclipse Purple","description":"The ttbici a Line Lightweight Bib Shorts are engineered for high-intensity rides, featuring high-stretch, lightweight fabric, and premium Italian Elastic Interface Pads (E.I.T). With exceptional support and breathability, they ensure superior stability and comfort even on long-distance rides.\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: '70–78', waist: '55–63', hip: '74–82' },\r\n\t\t\t\t{ size: 'S', chest: '74–82', waist: '59–67', hip: '78–86' },\r\n\t\t\t\t{ size: 'M', chest: '78–86', waist: '63–71', hip: '82–90' },\r\n\t\t\t\t{ size: 'L', chest: '82–90', waist: '67–75', hip: '86–94' }\r\n\t\t\t],\r\n\t\t\tinches: [\r\n\t\t\t\t{ size: 'XS', chest: '27–31', waist: '21–25', hip: '29–32' },\r\n\t\t\t\t{ size: 'S', chest: '29–32', waist: '23–26', hip: '31–34' },\r\n\t\t\t\t{ size: 'M', chest: '31–34', waist: '25–28', hip: '32–36' },\r\n\t\t\t\t{ size: 'L', chest: '32–36', waist: '27–30', hip: '34–37' }\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":48082449760480,"sku":"B6TC-A03-PG0XSW","price":4580.0,"currency_code":"TWD","in_stock":true},{"title":"S","offer_id":48082449793248,"sku":"B6TC-A03-PG00SW","price":4580.0,"currency_code":"TWD","in_stock":true},{"title":"M","offer_id":48082449826016,"sku":"B6TC-A03-PG00MW","price":4580.0,"currency_code":"TWD","in_stock":true},{"title":"L","offer_id":48082449858784,"sku":"B6TC-A03-PG00LW","price":4580.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/dsc05784-purple_2.jpg?v=1762154525"},{"product_id":"ttbici-e-line-women-s-classic-bib-shorts-black","title":"E Line Women' 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: '70–78', waist: '55–63', hip: '74–82' },\r\n\t\t\t\t{ size: 'S', chest: '74–82', waist: '59–67', hip: '78–86' },\r\n\t\t\t\t{ size: 'M', chest: '78–86', waist: '63–71', hip: '82–90' },\r\n\t\t\t\t{ size: 'L', chest: '82–90', waist: '67–75', hip: '86–94' }\r\n\t\t\t],\r\n\t\t\tinches: [\r\n\t\t\t\t{ size: 'XS', chest: '27–31', waist: '21–25', hip: '29–32' },\r\n\t\t\t\t{ size: 'S', chest: '29–32', waist: '23–26', hip: '31–34' },\r\n\t\t\t\t{ size: 'M', chest: '31–34', waist: '25–28', hip: '32–36' },\r\n\t\t\t\t{ size: 'L', chest: '32–36', waist: '27–30', hip: '34–37' }\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":48082451235040,"sku":"B6TC-E02-BK0XSW","price":3280.0,"currency_code":"TWD","in_stock":true},{"title":"S","offer_id":48082451267808,"sku":"B6TC-E02-BK00SW","price":3280.0,"currency_code":"TWD","in_stock":true},{"title":"M","offer_id":48082451300576,"sku":"B6TC-E02-BK00MW","price":3280.0,"currency_code":"TWD","in_stock":true},{"title":"L","offer_id":48082451333344,"sku":"B6TC-E02-BK00LW","price":3280.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/dsc09495_8.jpg?v=1762154873"},{"product_id":"ttbici-e-line-women-s-classic-bib-shorts-dark-brown","title":"E Line Women' 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: '70–78', waist: '55–63', hip: '74–82' },\r\n\t\t\t\t{ size: 'S', chest: '74–82', waist: '59–67', hip: '78–86' },\r\n\t\t\t\t{ size: 'M', chest: '78–86', waist: '63–71', hip: '82–90' },\r\n\t\t\t\t{ size: 'L', chest: '82–90', waist: '67–75', hip: '86–94' }\r\n\t\t\t],\r\n\t\t\tinches: [\r\n\t\t\t\t{ size: 'XS', chest: '27–31', waist: '21–25', hip: '29–32' },\r\n\t\t\t\t{ size: 'S', chest: '29–32', waist: '23–26', hip: '31–34' },\r\n\t\t\t\t{ size: 'M', chest: '31–34', waist: '25–28', hip: '32–36' },\r\n\t\t\t\t{ size: 'L', chest: '32–36', waist: '27–30', hip: '34–37' }\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":48082451628256,"sku":"B6TC-E02-BR0XSW","price":3280.0,"currency_code":"TWD","in_stock":true},{"title":"S","offer_id":48082451661024,"sku":"B6TC-E02-BR00SW","price":3280.0,"currency_code":"TWD","in_stock":true},{"title":"M","offer_id":48082451693792,"sku":"B6TC-E02-BR00MW","price":3280.0,"currency_code":"TWD","in_stock":true},{"title":"L","offer_id":48082451726560,"sku":"B6TC-E02-BR00LW","price":3280.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/dsc09545-light_brown_1_1.jpg?v=1762154881"},{"product_id":"ttbici-e-line-women-s-classic-bib-shorts-dark-grey","title":"E Line Women' 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: '70–78', waist: '55–63', hip: '74–82' },\r\n\t\t\t\t{ size: 'S', chest: '74–82', waist: '59–67', hip: '78–86' },\r\n\t\t\t\t{ size: 'M', chest: '78–86', waist: '63–71', hip: '82–90' },\r\n\t\t\t\t{ size: 'L', chest: '82–90', waist: '67–75', hip: '86–94' }\r\n\t\t\t],\r\n\t\t\tinches: [\r\n\t\t\t\t{ size: 'XS', chest: '27–31', waist: '21–25', hip: '29–32' },\r\n\t\t\t\t{ size: 'S', chest: '29–32', waist: '23–26', hip: '31–34' },\r\n\t\t\t\t{ size: 'M', chest: '31–34', waist: '25–28', hip: '32–36' },\r\n\t\t\t\t{ size: 'L', chest: '32–36', waist: '27–30', hip: '34–37' }\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":48082451759328,"sku":"B6TC-E02-GY0XSW","price":3280.0,"currency_code":"TWD","in_stock":true},{"title":"S","offer_id":48082451792096,"sku":"B6TC-E02-GY00SW","price":3280.0,"currency_code":"TWD","in_stock":true},{"title":"M","offer_id":48082451824864,"sku":"B6TC-E02-GY00MW","price":3280.0,"currency_code":"TWD","in_stock":true},{"title":"L","offer_id":48082451857632,"sku":"B6TC-E02-GY00LW","price":3280.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/dsc09545_8.jpg?v=1762154889"},{"product_id":"ttbici-e-line-women-s-classic-jersey-black","title":"E Line Women' 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: '70–78', waist: '55–63', hip: '74–82' },\r\n\t\t\t\t{ size: 'S', chest: '74–82', waist: '59–67', hip: '78–86' },\r\n\t\t\t\t{ size: 'M', chest: '78–86', waist: '63–71', hip: '82–90' },\r\n\t\t\t\t{ size: 'L', chest: '82–90', waist: '67–75', hip: '86–94' }\r\n\t\t\t],\r\n\t\t\tinches: [\r\n\t\t\t\t{ size: 'XS', chest: '27–31', waist: '21–25', hip: '29–32' },\r\n\t\t\t\t{ size: 'S', chest: '29–32', waist: '23–26', hip: '31–34' },\r\n\t\t\t\t{ size: 'M', chest: '31–34', waist: '25–28', hip: '32–36' },\r\n\t\t\t\t{ size: 'L', chest: '32–36', waist: '27–30', hip: '34–37' }\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":48087478698208,"sku":"B6TC-E01-BK0XSW","price":2880.0,"currency_code":"TWD","in_stock":true},{"title":"S","offer_id":48087478730976,"sku":"B6TC-E01-BK00SW","price":2880.0,"currency_code":"TWD","in_stock":true},{"title":"M","offer_id":48087478763744,"sku":"B6TC-E01-BK00MW","price":2880.0,"currency_code":"TWD","in_stock":true},{"title":"L","offer_id":48087478796512,"sku":"B6TC-E01-BK00LW","price":2880.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/dsc09592_1_2.jpg?v=1762226950"},{"product_id":"ttbici-e-line-women-s-classic-jersey-navy","title":"E Line Women' 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: '70–78', waist: '55–63', hip: '74–82' },\r\n\t\t\t\t{ size: 'S', chest: '74–82', waist: '59–67', hip: '78–86' },\r\n\t\t\t\t{ size: 'M', chest: '78–86', waist: '63–71', hip: '82–90' },\r\n\t\t\t\t{ size: 'L', chest: '82–90', waist: '67–75', hip: '86–94' }\r\n\t\t\t],\r\n\t\t\tinches: [\r\n\t\t\t\t{ size: 'XS', chest: '27–31', waist: '21–25', hip: '29–32' },\r\n\t\t\t\t{ size: 'S', chest: '29–32', waist: '23–26', hip: '31–34' },\r\n\t\t\t\t{ size: 'M', chest: '31–34', waist: '25–28', hip: '32–36' },\r\n\t\t\t\t{ size: 'L', chest: '32–36', waist: '27–30', hip: '34–37' }\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":48087479714016,"sku":"B6TC-E01-NY0XSW","price":2880.0,"currency_code":"TWD","in_stock":true},{"title":"S","offer_id":48087479746784,"sku":"B6TC-E01-NY00SW","price":2880.0,"currency_code":"TWD","in_stock":true},{"title":"M","offer_id":48087479779552,"sku":"B6TC-E01-NY00MW","price":2880.0,"currency_code":"TWD","in_stock":true},{"title":"L","offer_id":48087479812320,"sku":"B6TC-E01-NY00LW","price":2880.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/dsc09602-3_color-deep_blue_2.jpg?v=1762226958"},{"product_id":"ttbici-e-line-women-s-classic-jersey-beige","title":"E Line Women' 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: '70–78', waist: '55–63', hip: '74–82' },\r\n\t\t\t\t{ size: 'S', chest: '74–82', waist: '59–67', hip: '78–86' },\r\n\t\t\t\t{ size: 'M', chest: '78–86', waist: '63–71', hip: '82–90' },\r\n\t\t\t\t{ size: 'L', chest: '82–90', waist: '67–75', hip: '86–94' }\r\n\t\t\t],\r\n\t\t\tinches: [\r\n\t\t\t\t{ size: 'XS', chest: '27–31', waist: '21–25', hip: '29–32' },\r\n\t\t\t\t{ size: 'S', chest: '29–32', waist: '23–26', hip: '31–34' },\r\n\t\t\t\t{ size: 'M', chest: '31–34', waist: '25–28', hip: '32–36' },\r\n\t\t\t\t{ size: 'L', chest: '32–36', waist: '27–30', hip: '34–37' }\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":48087480074464,"sku":"B6TC-E01-BE0XSW","price":2880.0,"currency_code":"TWD","in_stock":true},{"title":"S","offer_id":48087480107232,"sku":"B6TC-E01-BE00SW","price":2880.0,"currency_code":"TWD","in_stock":true},{"title":"M","offer_id":48087480140000,"sku":"B6TC-E01-BE00MW","price":2880.0,"currency_code":"TWD","in_stock":true},{"title":"L","offer_id":48087480172768,"sku":"B6TC-E01-BE00LW","price":2880.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/dsc09606_a.jpg?v=1762226966"}],"url":"https:\/\/www.ttbici.com\/en-us\/collections\/womens-category-series.oembed","provider":"TTBICI","version":"1.0","type":"link"}