{"title":"TDFSG","description":"","products":[{"product_id":"ttbici-x-tdfsg-womens-jersey-black","title":"ttbici x TDFSG Woen' Jersey \/ Black","description":"ttbici X TDFSG Jersey built upon the iconic ttbici e Line jersey, this special edition draws inspiration from the 2025 TDFSG – Tour de France Singapore “À l’attaque” concept. Featuring design elements from the Tour’s four legendary leader jerseys — the Yellow, Polka Dot, Green, and White — it embodies the spirit of competition and prestige.\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":48087492690144,"sku":"B6TC-TD1-BK0XSW","price":2880.0,"currency_code":"TWD","in_stock":true},{"title":"S","offer_id":48087492722912,"sku":"B6TC-TD1-BK00SW","price":2880.0,"currency_code":"TWD","in_stock":false},{"title":"M","offer_id":48087492755680,"sku":"B6TC-TD1-BK00MW","price":2880.0,"currency_code":"TWD","in_stock":false},{"title":"L","offer_id":48087492788448,"sku":"B6TC-TD1-BK00LW","price":2880.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/dsc_6985.jpg?v=1762227061"},{"product_id":"ttbici-x-tdfsg-mens-jersey-black","title":"ttbici x TDFSG Men' Jersey \/ Black","description":"ttbici X TDFSG Jersey built upon the iconic ttbici e Line jersey, this special edition draws inspiration from the 2025 TDFSG – Tour de France Singapore “À l’attaque” concept. Featuring design elements from the Tour’s four legendary leader jerseys — the Yellow, Polka Dot, Green, and White — it embodies the spirit of competition and prestige.\r\n\u003cbr\u003e\u003cbr\u003e\r\nDesigned for comfort and versatility, its relaxed fit adapts effortlessly to various body types, ensuring a refined yet effortless riding experience. Crafted from lightweight, highly breathable fabric, it offers a soft, premium feel, making it ideal for warm-weather rides. The result—an unparalleled balance of performance and elegance for every cyclist.\u003cbr\u003e\u003cbr\u003e\r\n\r\n\u003c!DOCTYPE html\u003e\r\n\u003chtml lang=\"zh-Hant\"\u003e\r\n\r\n\u003chead\u003e\r\n\t\u003cmeta charset=\"UTF-8\" \/\u003e\r\n\t\u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/\u003e\r\n\t\u003cstyle\u003e\r\n\t\tbody.product-modal-open {\r\n\t\t\toverflow: hidden;\r\n\t\t}\r\n\r\n\t\t.product-modal-overlay {\r\n\t\t\tdisplay: none;\r\n\t\t\tposition: fixed;\r\n\t\t\ttop: 0;\r\n\t\t\tleft: 0;\r\n\t\t\twidth: 100vw;\r\n\t\t\theight: 100vh;\r\n\t\t\tbackground-color: rgba(0, 0, 0, 0.5);\r\n\t\t\tbackdrop-filter: blur(2px);\r\n\t\t\tz-index: 1000;\r\n\t\t\tjustify-content: center;\r\n\t\t\talign-items: center;\r\n\t\t}\r\n\r\n\t\t.product-modal {\r\n\t\t\tbackground: white;\r\n\t\t\tpadding: 20px;\r\n\t\t\t\/* border-radius: 10px; *\/\r\n\t\t\tmax-width: 600px;\r\n\t\t\twidth: 90%;\r\n\t\t\tmax-height: 90vh;\r\n\t\t\toverflow-y: auto;\r\n\t\t\tposition: relative;\r\n\t\t}\r\n\r\n\t\t.product-modal .modal-close {\r\n\t\t\tposition: absolute;\r\n\t\t\ttop: 10px;\r\n\t\t\tright: 12px;\r\n\t\t\tfont-size: 20px;\r\n\t\t\tcursor: pointer;\r\n\t\t}\r\n\r\n\t\t\/* ✅ 統一按鈕樣式 *\/\r\n\t\t.button-group {\r\n\t\t\tdisplay: flex;\r\n\t\t\tgap: 12px;\r\n\t\t\tpadding-top: 20px;\r\n\t\t}\r\n\r\n\t\t.button-group button {\r\n\t\t\tpadding: 0px;\r\n\t\t\tborder: none;\r\n\t\t\tbackground-color: transparent;\r\n\t\t\tcolor: #333;\r\n\t\t\tcursor: pointer;\r\n\t\t\t\/* border-radius: 5px; *\/\r\n\t\t\tfont-size: 15px;\r\n\t\t\tfont-family: 'Microsoft JhengHei';\r\n\t\t\ttext-decoration: underline;\r\n\t\t}\r\n\r\n\t\t.button-group button.active {\r\n\t\t\t\/* background-color: #444; *\/\r\n\t\t}\r\n\r\n\t\tbutton:active {\r\n\t\t\tbox-shadow: none !important;\r\n\t\t\tcolor: #333 !important;\r\n\t\t}\r\n\r\n\t\t.product-modal table {\r\n\t\t\twidth: 100%;\r\n\t\t\tborder-collapse: collapse;\r\n\t\t\tmargin-top: 10px;\r\n\t\t}\r\n\r\n\t\t.product-modal th,\r\n\t\t.product-modal td {\r\n\t\t\tborder-bottom: 1px solid #ddd;\r\n\t\t\ttext-align: center;\r\n\t\t\tpadding: 8px;\r\n\t\t}\r\n\r\n\t\t\/* ✅ 新增的欄寬限制 *\/\r\n\t\t.product-modal table th:first-child,\r\n\t\t.product-modal table td:first-child {\r\n\t\t\twidth: 15%;\r\n\t\t\tmax-width: 15%;\r\n\t\t}\r\n\r\n\t\t.product-modal .toggle-wrapper {\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items: center;\r\n\t\t\tgap: 10px;\r\n\t\t\tmargin: 10px 0 20px;\r\n\t\t}\r\n\r\n\t\t.product-modal .toggle {\r\n\t\t\tposition: relative;\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 50px;\r\n\t\t\theight: 24px;\r\n\t\t}\r\n\r\n\t\t.product-modal .toggle input {\r\n\t\t\topacity: 0;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t}\r\n\r\n\t\t.product-modal .slider {\r\n\t\t\tposition: absolute;\r\n\t\t\tcursor: pointer;\r\n\t\t\tbackground-color: #ccc;\r\n\t\t\tborder-radius: 24px;\r\n\t\t\ttop: 0;\r\n\t\t\tleft: 0;\r\n\t\t\tright: 0;\r\n\t\t\tbottom: 0;\r\n\t\t\ttransition: 0.4s;\r\n\t\t}\r\n\r\n\t\t.product-modal .slider:before {\r\n\t\t\tcontent: \"\";\r\n\t\t\tposition: absolute;\r\n\t\t\theight: 18px;\r\n\t\t\twidth: 18px;\r\n\t\t\tleft: 3px;\r\n\t\t\tbottom: 3px;\r\n\t\t\tbackground-color: white;\r\n\t\t\ttransition: 0.4s;\r\n\t\t\tborder-radius: 50%;\r\n\t\t}\r\n\r\n\t\t.product-modal input:checked+.slider {\r\n\t\t\tbackground-color: #333;\r\n\t\t}\r\n\r\n\t\t.product-modal input:checked+.slider:before {\r\n\t\t\ttransform: translateX(26px);\r\n\t\t}\r\n\r\n\t\t.product-modal .modalInnerContent h3 {\r\n\t\t\tpadding: 20px 0;\r\n\r\n\t\t}\r\n\t\u003c\/style\u003e\r\n\u003c\/head\u003e\r\n\r\n\u003cbody\u003e\r\n\r\n\t\u003c!-- 外部觸發按鈕 --\u003e\r\n\t\u003cdiv class=\"button-group\"\u003e\r\n\t\t\u003c!-- \u003cbutton onclick=\"openModal('shipping')\"\u003e運送詳情\u003c\/button\u003e --\u003e\r\n\t\t\u003cbutton onclick=\"openModal('size')\"\u003eSIZE GUIDE\u003c\/button\u003e\r\n\t\t\u003cbutton onclick=\"openModal('care')\"\u003eCARE\u003c\/button\u003e\r\n\t\u003c\/div\u003e\r\n\r\n\t\u003c!-- Modal --\u003e\r\n\t\u003cdiv class=\"product-modal-overlay\" id=\"modalOverlay\"\u003e\r\n\t\t\u003cdiv class=\"product-modal\" id=\"modalContent\"\u003e\r\n\t\t\t\u003cdiv class=\"modal-close\" onclick=\"closeModal()\"\u003e×\u003c\/div\u003e\r\n\r\n\t\t\t\u003c!-- 內部選單 --\u003e\r\n\t\t\t\u003cdiv class=\"button-group\" id=\"infoTabs\"\u003e\r\n\t\t\t\t\u003c!-- \u003cbutton id=\"tab-shipping\" onclick=\"switchTab('shipping')\"\u003e運送詳情\u003c\/button\u003e --\u003e\r\n\t\t\t\t\u003cbutton id=\"tab-size\" onclick=\"switchTab('size')\"\u003eSIZE GUIDE\u003c\/button\u003e\r\n\t\t\t\t\u003cbutton id=\"tab-care\" onclick=\"switchTab('care')\"\u003eCARE\u003c\/button\u003e\r\n\t\t\t\u003c\/div\u003e\r\n\r\n\t\t\t\u003c!-- 內容區 --\u003e\r\n\t\t\t\u003cdiv id=\"modalInnerContent\"\u003e\u003c\/div\u003e\r\n\t\t\u003c\/div\u003e\r\n\t\u003c\/div\u003e\r\n\r\n\t\u003cscript\u003e\r\n\t\tconst modalOverlay = document.getElementById(\"modalOverlay\");\r\n\t\tconst modalInner = document.getElementById(\"modalInnerContent\");\r\n\r\n\t\tconst sizeData = {\r\n\t\t\tcm: [\r\n\t\t\t\t{ size: 'XS', chest: '80–88', waist: '68–76', hip: '82–90' },\r\n\t\t\t\t{ size: 'S', chest: '85–93', waist: '73–81', hip: '87–95' },\r\n\t\t\t\t{ size: 'M', chest: '89–97', waist: '77–85', hip: '91–99' },\r\n\t\t\t\t{ size: 'L', chest: '93–101', waist: '81–89', hip: '95–103' },\r\n\t\t\t\t{ size: 'XL', chest: '97–105', waist: '85–93', hip: '99–107' },\r\n\t\t\t\t{ size: '2XL', chest: '101–109', waist: '89–97', hip: '103–111' }\r\n\t\t\t],\r\n\t\t\tinches: [\r\n\t\t\t\t{ size: 'XS', chest: '32–35', waist: '27–30', hip: '32–35' },\r\n\t\t\t\t{ size: 'S', chest: '34–37', waist: '29–32', hip: '34–37' },\r\n\t\t\t\t{ size: 'M', chest: '35–38', waist: '30–33', hip: '36–39' },\r\n\t\t\t\t{ size: 'L', chest: '37–40', waist: '32–35', hip: '37–40' },\r\n\t\t\t\t{ size: 'XL', chest: '38–41', waist: '34–37', hip: '39–42' },\r\n\t\t\t\t{ size: '2XL', chest: '40–43', waist: '35–38', hip: '41–44' }\r\n\t\t\t]\r\n\t\t};\r\n\r\n\t\tfunction openModal(defaultTab) {\r\n\t\t\tdocument.body.classList.add(\"product-modal-open\");\r\n\t\t\tmodalOverlay.style.display = \"flex\";\r\n\t\t\tswitchTab(defaultTab);\r\n\t\t}\r\n\r\n\t\tfunction closeModal() {\r\n\t\t\tmodalOverlay.style.display = \"none\";\r\n\t\t\tmodalInner.innerHTML = \"\";\r\n\t\t\tdocument.body.classList.remove(\"product-modal-open\");\r\n\t\t}\r\n\r\n\t\tfunction switchTab(tab) {\r\n\t\t\t['shipping', 'care', 'size'].forEach(id =\u003e {\r\n\t\t\t\tconst btn = document.getElementById(`tab-${id}`);\r\n\t\t\t\tif (btn) btn.classList.remove(\"active\");\r\n\t\t\t});\r\n\r\n\t\t\tconst activeBtn = document.getElementById(`tab-${tab}`);\r\n\t\t\tif (activeBtn) activeBtn.classList.add(\"active\");\r\n\r\n\t\t\tif (tab === 'shipping') {\r\n\t\t\t\tmodalInner.innerHTML = `\u003ch3\u003e運送詳情\u003c\/h3\u003e\u003cp\u003e這裡可以放運送方式、時間、費用等資訊。\u003c\/p\u003e`;\r\n\t\t\t} else if (tab === 'care') {\r\n\t\t\t\tmodalInner.innerHTML = `\r\n\t\t\u003ch3\u003eCARE\u003c\/h3\u003e\r\n\t\t\u003col\u003e\r\n\t\t\t\u003cli\u003eWhen wearing cycling jerseys, it is strongly recommended to wear and wash them based on the colors to reduce the risk of clothes bleeding colors onto each other.\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eAfter use, it is advisable to clean them promptly to prevent bacteria growth, odor formation, and the development of sweat stains, or even yellowing on the clothing.\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eWhen cleaning, remember to zip up all zippers to prevent fabric damage during the wash. Soak the clothing in \"cold water with neutral detergent\" for 5 - 10 minutes, then agitate it gently.\u003cbr\u003e\r\n\t\t\t\u003cstrong\u003e※ Do not use cold wash, fabric softener, or bleach, as these detergents can damage the fabric.\u003c\/strong\u003e\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eHand washing is preferred, but if you choose to use a washing machine, make sure to zip up all zippers, place the clothing inside a laundry bag, and wash it on the \" delicate wash mode\"\u003c\/li\u003e\r\n\t\t\t\u003cli\u003eAfter washing, avoid \"wringing out\" the clothing, and refrain from using a dryer, as this may damage the fabric. Instead, wrap the clothing in a towel to remove excess moisture and hang it to air dry in a well-ventilated, cool place.\u003c\/li\u003e\r\n\t\t\u003c\/ol\u003e\r\n\t\t\u003cp\u003e\u003cstrong\u003e※ Due to variations in manufacturing processes and dyeing methods, some fading may occur when wearing or washing cycling clothing, especially for brighter colors. We strongly recommend you to wear and wash them with similar colors.\u003c\/strong\u003e\u003c\/p\u003e\r\n\t`;\r\n\r\n\t\t\t} else if (tab === 'size') {\r\n\t\t\t\tmodalInner.innerHTML = `\r\n          \u003ch3\u003eSIZE GUIDE\u003c\/h3\u003e\r\n          \u003cdiv class=\"toggle-wrapper\"\u003e\r\n            \u003cspan\u003eCM\u003c\/span\u003e\r\n            \u003clabel class=\"toggle\"\u003e\r\n              \u003cinput type=\"checkbox\" id=\"unitToggle\"\u003e\r\n              \u003cspan class=\"slider\"\u003e\u003c\/span\u003e\r\n            \u003c\/label\u003e\r\n            \u003cspan\u003eINCHES\u003c\/span\u003e\r\n          \u003c\/div\u003e\r\n          \u003ctable\u003e\r\n            \u003cthead\u003e\r\n              \u003ctr\u003e\r\n                \u003cth\u003eSIZE\u003c\/th\u003e\r\n                \u003cth id=\"chestHeader\"\u003eCHEST\u003c\/th\u003e\r\n                \u003cth id=\"waistHeader\"\u003eWAIST\u003c\/th\u003e\r\n                \u003cth id=\"hipHeader\"\u003eHIP\u003c\/th\u003e\r\n              \u003c\/tr\u003e\r\n            \u003c\/thead\u003e\r\n            \u003ctbody id=\"tableBody\"\u003e\u003c\/tbody\u003e\r\n          \u003c\/table\u003e\r\n        `;\r\n\t\t\t\trenderSizeTable('cm');\r\n\t\t\t\tdocument.getElementById(\"unitToggle\").addEventListener(\"change\", (e) =\u003e {\r\n\t\t\t\t\trenderSizeTable(e.target.checked ? 'inches' : 'cm');\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction renderSizeTable(unit) {\r\n\t\t\tconst body = document.getElementById(\"tableBody\");\r\n\t\t\tbody.innerHTML = \"\";\r\n\t\t\tsizeData[unit].forEach(row =\u003e {\r\n\t\t\t\tbody.innerHTML += `\r\n      \u003ctr\u003e\r\n        \u003ctd\u003e${row.size}\u003c\/td\u003e\r\n        \u003ctd\u003e${row.chest}\u003c\/td\u003e\r\n        \u003ctd\u003e${row.waist}\u003c\/td\u003e\r\n        \u003ctd\u003e${row.hip}\u003c\/td\u003e\r\n      \u003c\/tr\u003e`;\r\n\t\t\t});\r\n\t\t}\r\n\t\u003c\/script\u003e\r\n\u003c\/body\u003e\r\n\r\n\u003c\/html\u003e","brand":"ttbici","offers":[{"title":"XS","offer_id":48087663608032,"sku":"B6TC-TD1-BK0XSM","price":2880.0,"currency_code":"TWD","in_stock":false},{"title":"S","offer_id":48087663640800,"sku":"B6TC-TD1-BK00SM","price":2880.0,"currency_code":"TWD","in_stock":false},{"title":"M","offer_id":48087663673568,"sku":"B6TC-TD1-BK00MM","price":2880.0,"currency_code":"TWD","in_stock":false},{"title":"L","offer_id":48087663706336,"sku":"B6TC-TD1-BK00LM","price":2880.0,"currency_code":"TWD","in_stock":true},{"title":"XL","offer_id":48087663739104,"sku":"B6TC-TD1-BK0XLM","price":2880.0,"currency_code":"TWD","in_stock":false},{"title":"2XL","offer_id":48087663771872,"sku":"B6TC-TD1-BK2XLM","price":2880.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/men_jersey_black_1.jpg?v=1762228443"},{"product_id":"ttbici-x-tdfsg-yellow-t-shirt-yellow","title":"ttbici x TDFSG Yellow T-Shirt \/ Yellow","description":"Where's my Pogi at? \u003cbr\u003e\r\nttbici X TDFSG Yellow T-Shirt inspired by the 2025 Tour de France Yellow Jersey holder. Designed based on the classic GC1 yellow jersey, represent the top cyclist in the game. 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.\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":48089797689568,"sku":"B6TC-TD2-YW0XSN","price":1480.0,"currency_code":"TWD","in_stock":false},{"title":"S","offer_id":48089797722336,"sku":"B6TC-TD2-YW00SN","price":1480.0,"currency_code":"TWD","in_stock":true},{"title":"M","offer_id":48089797755104,"sku":"B6TC-TD2-YW00MN","price":1480.0,"currency_code":"TWD","in_stock":true},{"title":"L","offer_id":48089797787872,"sku":"B6TC-TD2-YW00LN","price":1480.0,"currency_code":"TWD","in_stock":true},{"title":"XL","offer_id":48089797820640,"sku":"B6TC-TD2-YW0XLN","price":1480.0,"currency_code":"TWD","in_stock":true},{"title":"2XL","offer_id":48089797853408,"sku":"B6TC-TD2-YW2XLN","price":1480.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/dsc_8247.jpg?v=1762245233"},{"product_id":"ttbici-x-tdfsg-polka-dot-t-shirt-white","title":"ttbici x TDFSG Polka Dot T-Shirt \/ White","description":"We Almost Have Jonas!!! \u003cbr\u003e\r\nttbici X TDFSG Polka Dot T-Shirt inspired by the intense combat for the 2025 Tour de France Polka Dot Jersey. Designed based on the classic KOM polka dot jersey, represent the best climber in the game. \r\nCombining 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.\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":48089798934752,"sku":"B6TC-TD3-WH0XSN","price":1480.0,"currency_code":"TWD","in_stock":false},{"title":"S","offer_id":48089798967520,"sku":"B6TC-TD3-WH00SN","price":1480.0,"currency_code":"TWD","in_stock":false},{"title":"M","offer_id":48089799000288,"sku":"B6TC-TD3-WH00MN","price":1480.0,"currency_code":"TWD","in_stock":true},{"title":"L","offer_id":48089799033056,"sku":"B6TC-TD3-WH00LN","price":1480.0,"currency_code":"TWD","in_stock":true},{"title":"XL","offer_id":48089799065824,"sku":"B6TC-TD3-WH0XLN","price":1480.0,"currency_code":"TWD","in_stock":false},{"title":"2XL","offer_id":48089799098592,"sku":"B6TC-TD3-WH2XLN","price":1480.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/dsc_7012.jpg?v=1762245243"},{"product_id":"ttbici-x-tdfsg-green-t-shirt-green","title":"ttbici x TDFSG Green T-Shirt \/ Green","description":"Milan vs Philipsen\u003cbr\u003e\r\nttbici X TDFSG Green T-Shirt inspired by the best sprinters in the world. Designed based on the classic sprinter Green jersey. Cheer up for the one you love. \r\nCombining 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.\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":48089799524576,"sku":"B6TC-TD4-GR0XSN","price":1480.0,"currency_code":"TWD","in_stock":true},{"title":"S","offer_id":48089799557344,"sku":"B6TC-TD4-GR00SN","price":1480.0,"currency_code":"TWD","in_stock":false},{"title":"M","offer_id":48089799590112,"sku":"B6TC-TD4-GR00MN","price":1480.0,"currency_code":"TWD","in_stock":true},{"title":"L","offer_id":48089799622880,"sku":"B6TC-TD4-GR00LN","price":1480.0,"currency_code":"TWD","in_stock":true},{"title":"XL","offer_id":48089799655648,"sku":"B6TC-TD4-GR0XLN","price":1480.0,"currency_code":"TWD","in_stock":true},{"title":"2XL","offer_id":48089799688416,"sku":"B6TC-TD4-GR2XLN","price":1480.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/green_t_shirt_green_1_1.jpg?v=1762245251"},{"product_id":"cycling-cap-棉質車帽-黑色-副本","title":"ttbici x TDFSG Cycling Cap \/ Black","description":"ttbici X TDFSG Cycling Cap draws inspiration from the 2025 TDFSG – Tour de France Singapore “À l’attaque” concept. Featuring design elements from the Tour’s four legendary leader jerseys — the Yellow, Polka Dot, Green, and White — it embodies the spirit of competition and prestige. \r\n\u003cbr\u003e\u003cbr\u003e\r\nDesigned with a versatile fit that adapts to most head shapes, 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":48134130991328,"sku":"B1TC-TD6-BK000N","price":580.0,"currency_code":"TWD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/cycling_cap_black_1_1.jpg?v=1763363736"},{"product_id":"ttbici-x-tdfsg-water-bottle-600ml-tdfsg聯名水壺-煙燻黑","title":"ttbici x TDFSG Water Bottle 600ml \/ Smoke","description":"ttbici X TDFSG Cycling Water Bottle draws inspiration from the 2025 TDFSG – Tour de France Singapore “À l’attaque” concept. Featuring design elements from the Tour’s four legendary leader jerseys — the Yellow, Polka Dot, Green, and White — it embodies the spirit of competition and prestige. \r\n\u003cbr\u003e\u003cbr\u003e\r\nThoughtfully incorporates POLYGIENE® technology, utilizing sustainable silver salt as an active ingredient to effectively inhibit bacterial growth and prevent odors. Even after multiple washes, it maintains its effectiveness, extending its lifespan and ensuring a safe and hygienic hydration experience every time.","brand":"ttbici","offers":[{"title":"Default Title","offer_id":48134193447136,"sku":"B1TC-TD7-CL600N","price":480.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/watter_bottle_600ml_smoke_1.jpg?v=1763364554"},{"product_id":"ttbici-x-tdfsg-white-kids-t-shirt-tdfsg聯名白衫兒童t恤-白色","title":"ttbici x TDFSG White Kids T-Shirt \/ White","description":"See you on the road in TEN years =)\u003cbr\u003e\r\nttbici X TDFSG White Kid's T-Shirt inspired by the Tour de France Best Young Rider White Jersey, this design celebrates\r\nemerging talent and the fearless spirit of new contenders. The future is yours, are you ready?\r\nCombining functionality with everyday comfort. Infused with Polygeine® technology, this performance tee actively\r\ninhibits bacterial growth, ensuring long-lasting freshness by preventing odors at the source.\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  \u003cmeta charset=\"UTF-8\" \/\u003e\r\n  \u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/\u003e\r\n  \u003cstyle\u003e\r\n    body.product-modal-open {\r\n      overflow: hidden;\r\n    }\r\n\r\n    .product-modal-overlay {\r\n      display: none;\r\n      position: fixed;\r\n      top: 0;\r\n      left: 0;\r\n      width: 100vw;\r\n      height: 100vh;\r\n      background-color: rgba(0, 0, 0, 0.5);\r\n      backdrop-filter: blur(2px);\r\n      z-index: 1000;\r\n      justify-content: center;\r\n      align-items: center;\r\n    }\r\n\r\n    .product-modal {\r\n      background: white;\r\n      padding: 20px;\r\n      \/* border-radius: 10px; *\/\r\n      max-width: 600px;\r\n      width: 90%;\r\n      max-height: 90vh;\r\n      overflow-y: auto;\r\n      position: relative;\r\n    }\r\n\r\n    .product-modal .modal-close {\r\n      position: absolute;\r\n      top: 10px;\r\n      right: 12px;\r\n      font-size: 20px;\r\n      cursor: pointer;\r\n    }\r\n\r\n    \/* ✅ 統一按鈕樣式 *\/\r\n    .button-group {\r\n      display: flex;\r\n      gap: 12px;\r\n      padding-top: 20px;\r\n    }\r\n\r\n    .button-group button {\r\n      padding: 0px;\r\n      border: none;\r\n      background-color: transparent;\r\n      color: #333;\r\n      cursor: pointer;\r\n      \/* border-radius: 5px; *\/\r\n      font-size: 15px;\r\n      font-family: 'Microsoft JhengHei';\r\n      text-decoration: underline;\r\n    }\r\n\r\n    .button-group button.active {\r\n      \/* background-color: #444; *\/\r\n    }\r\n\r\n    button:active {\r\n      box-shadow: none !important;\r\n      color: #333 !important;\r\n    }\r\n\r\n    .product-modal table {\r\n      width: 100%;\r\n      border-collapse: collapse;\r\n      margin-top: 10px;\r\n    }\r\n\r\n    .product-modal th,\r\n    .product-modal td {\r\n      border-bottom: 1px solid #ddd;\r\n      text-align: center;\r\n      padding: 8px;\r\n    }\r\n\r\n    \/* ✅ 新增的欄寬限制 *\/\r\n    .product-modal table th:first-child,\r\n    .product-modal table td:first-child {\r\n      width: 15%;\r\n      max-width: 15%;\r\n    }\r\n\r\n    .product-modal .toggle-wrapper {\r\n      display: flex;\r\n      align-items: center;\r\n      gap: 10px;\r\n      margin: 10px 0 20px;\r\n    }\r\n\r\n    .product-modal .toggle {\r\n      position: relative;\r\n      display: inline-block;\r\n      width: 50px;\r\n      height: 24px;\r\n    }\r\n\r\n    .product-modal .toggle input {\r\n      opacity: 0;\r\n      width: 0;\r\n      height: 0;\r\n    }\r\n\r\n    .product-modal .slider {\r\n      position: absolute;\r\n      cursor: pointer;\r\n      background-color: #ccc;\r\n      border-radius: 24px;\r\n      top: 0;\r\n      left: 0;\r\n      right: 0;\r\n      bottom: 0;\r\n      transition: 0.4s;\r\n    }\r\n\r\n    .product-modal .slider:before {\r\n      content: \"\";\r\n      position: absolute;\r\n      height: 18px;\r\n      width: 18px;\r\n      left: 3px;\r\n      bottom: 3px;\r\n      background-color: white;\r\n      transition: 0.4s;\r\n      border-radius: 50%;\r\n    }\r\n\r\n    .product-modal input:checked+.slider {\r\n      background-color: #333;\r\n    }\r\n\r\n    .product-modal input:checked+.slider:before {\r\n      transform: translateX(26px);\r\n    }\r\n\r\n    .product-modal .modalInnerContent h3 {\r\n      padding: 20px 0;\r\n\r\n    }\r\n  \u003c\/style\u003e\r\n\u003c\/head\u003e\r\n\r\n\u003cbody\u003e\r\n\r\n  \u003c!-- 外部觸發按鈕 --\u003e\r\n  \u003cdiv class=\"button-group\"\u003e\r\n    \u003c!-- \u003cbutton onclick=\"openModal('shipping')\"\u003e運送詳情\u003c\/button\u003e --\u003e\r\n    \u003cbutton onclick=\"openModal('size')\"\u003eSIZE GUIDE\u003c\/button\u003e\r\n    \u003cbutton onclick=\"openModal('care')\"\u003eCARE\u003c\/button\u003e\r\n  \u003c\/div\u003e\r\n\r\n  \u003c!-- Modal --\u003e\r\n  \u003cdiv class=\"product-modal-overlay\" id=\"modalOverlay\"\u003e\r\n    \u003cdiv class=\"product-modal\" id=\"modalContent\"\u003e\r\n      \u003cdiv class=\"modal-close\" onclick=\"closeModal()\"\u003e×\u003c\/div\u003e\r\n\r\n      \u003c!-- 內部選單 --\u003e\r\n      \u003cdiv class=\"button-group\" id=\"infoTabs\"\u003e\r\n        \u003c!-- \u003cbutton id=\"tab-shipping\" onclick=\"switchTab('shipping')\"\u003e運送詳情\u003c\/button\u003e --\u003e\r\n        \u003cbutton id=\"tab-size\" onclick=\"switchTab('size')\"\u003eSIZE GUIDE\u003c\/button\u003e\r\n        \u003cbutton id=\"tab-care\" onclick=\"switchTab('care')\"\u003eCARE\u003c\/button\u003e\r\n      \u003c\/div\u003e\r\n\r\n      \u003c!-- 內容區 --\u003e\r\n      \u003cdiv id=\"modalInnerContent\"\u003e\u003c\/div\u003e\r\n    \u003c\/div\u003e\r\n  \u003c\/div\u003e\r\n\r\n  \u003cscript\u003e\r\n    const modalOverlay = document.getElementById(\"modalOverlay\");\r\n    const modalInner = document.getElementById(\"modalInnerContent\");\r\n\r\n    const sizeData = {\r\n      cm: [\r\n        { size: 'S', width: '36', length: '45', sleeve: '30' },\r\n        { size: 'M', width: '40', length: '51', sleeve: '34' },\r\n        { size: 'L', width: '45', length: '59', sleeve: '38' }\r\n      ],\r\n      inches: [\r\n        { size: 'S', width: '14', length: '17.5', sleeve: '12' },\r\n        { size: 'M', width: '15.5', length: '20.5', sleeve: '13' },\r\n        { size: 'L', width: '17.5', length: '23.5', sleeve: '14.5' }\r\n      ]\r\n    };\r\n\r\n    function openModal(defaultTab) {\r\n      document.body.classList.add(\"product-modal-open\");\r\n      modalOverlay.style.display = \"flex\";\r\n      switchTab(defaultTab);\r\n    }\r\n\r\n    function closeModal() {\r\n      modalOverlay.style.display = \"none\";\r\n      modalInner.innerHTML = \"\";\r\n      document.body.classList.remove(\"product-modal-open\");\r\n    }\r\n\r\n    function switchTab(tab) {\r\n      ['shipping', 'care', 'size'].forEach(id =\u003e {\r\n        const btn = document.getElementById(`tab-${id}`);\r\n        if (btn) btn.classList.remove(\"active\");\r\n      });\r\n\r\n      const activeBtn = document.getElementById(`tab-${tab}`);\r\n      if (activeBtn) activeBtn.classList.add(\"active\");\r\n\r\n      if (tab === 'shipping') {\r\n        modalInner.innerHTML = `\u003ch3\u003e運送詳情\u003c\/h3\u003e\u003cp\u003e這裡可以放運送方式、時間、費用等資訊。\u003c\/p\u003e`;\r\n      } else if (tab === 'care') {\r\n        modalInner.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      } else if (tab === 'size') {\r\n        modalInner.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        renderSizeTable('cm');\r\n        document.getElementById(\"unitToggle\").addEventListener(\"change\", (e) =\u003e {\r\n          renderSizeTable(e.target.checked ? 'inches' : 'cm');\r\n        });\r\n      }\r\n    }\r\n\r\n    function renderSizeTable(unit) {\r\n      const body = document.getElementById(\"tableBody\");\r\n      body.innerHTML = \"\";\r\n      sizeData[unit].forEach(row =\u003e {\r\n        body.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      });\r\n    }\r\n  \u003c\/script\u003e\r\n\r\n\u003c\/body\u003e\r\n\r\n\u003c\/html\u003e","brand":"ttbici","offers":[{"title":"S","offer_id":48134243352800,"sku":"B6TC-TD5-WH00SN","price":1080.0,"currency_code":"TWD","in_stock":false},{"title":"M","offer_id":48134243385568,"sku":"B6TC-TD5-WH00MN","price":1080.0,"currency_code":"TWD","in_stock":true},{"title":"L","offer_id":48134243418336,"sku":"B6TC-TD5-WH00LN","price":1080.0,"currency_code":"TWD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/files\/dsc_6991.jpg?v=1763365933"}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0775\/9714\/7360\/collections\/banner-image09.jpg?v=1763454926","url":"https:\/\/www.ttbici.com\/en-us\/collections\/tdfsg.oembed","provider":"TTBICI","version":"1.0","type":"link"}