{"product_id":"custom-official-cat-servant-pullover-hoodie","title":"Custom Official Cat Servant Pullover Hoodie","description":"\u003cp\u003eLet's be completely honest about the household hierarchy: you don't own the cat—you work for them. Our 'Custom Official Cat Servant' fleece features your cat's name arched in vintage varsity lettering paired with distressed feline heraldry. The official heavyweight uniform for full-time cat servants.\u003c\/p\u003e\n\n\u003cdetails style=\"border: 1px solid #e5e5e5; border-radius: 8px; padding: 14px 18px; margin-bottom: 12px; background: #fafafa;\"\u003e\n\u003csummary style=\"font-weight: 700; font-size: 15px; cursor: pointer; color: #111; list-style: none; display: flex; justify-content: space-between; align-items: center;\"\u003e\n\u003cspan\u003e📏 Cotton Heritage M2580 Unisex Pullover Hoodie Sizing \u0026amp; Fit Guide\u003c\/span\u003e\n\u003cspan style=\"font-size: 18px; color: #666;\"\u003e▾\u003c\/span\u003e\n\u003c\/summary\u003e\n\u003cdiv style=\"margin-top: 14px; color: #333; line-height: 1.6; font-size: 14px;\"\u003e\n\u003cp\u003eCrafted on authentic \u003cstrong\u003eCotton Heritage M2580 Unisex Pullover Hoodie\u003c\/strong\u003e (8.5 oz\/yd², 3-end fleece). Built with a 100% combed cotton face (65% cotton \/ 35% polyester blend, 28.8 singles) providing an ultra-soft hand feel, zero surface pilling, and vibrant print clarity. Features a 3-panel hood with dyed-to-match flat drawcords and a front kangaroo pouch pocket.\u003c\/p\u003e\n\u003cul style=\"margin: 8px 0 14px 20px;\"\u003e\n\u003cli\u003e\n\u003cstrong\u003eStandard Streetwear Fit:\u003c\/strong\u003e Order your normal unisex size for a clean, tailored drape.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eCozy Oversized Fit:\u003c\/strong\u003e Size up 1–2 sizes for an extra-roomy aesthetic.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cdiv style=\"overflow-x: auto; margin: 14px 0;\"\u003e\n\u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 13px; text-align: center;\"\u003e\n\u003cthead\u003e\n\u003ctr style=\"background: #f0f0f0; border-bottom: 2px solid #ddd;\"\u003e\n\u003cth style=\"padding: 8px; text-align: left;\"\u003eSize\u003c\/th\u003e\n\u003cth style=\"padding: 8px;\"\u003eChest Width (in)\u003c\/th\u003e\n\u003cth style=\"padding: 8px;\"\u003eBody Length (in)\u003c\/th\u003e\n\u003cth style=\"padding: 8px;\"\u003eSleeve Length (in)\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr style=\"border-bottom: 1px solid #eee;\"\u003e\n\u003ctd style=\"padding: 7px; text-align: left; font-weight: 600;\"\u003eS\u003c\/td\u003e\n\u003ctd style=\"padding: 7px;\"\u003e20\u003c\/td\u003e\n\u003ctd style=\"padding: 7px;\"\u003e27\u003c\/td\u003e\n\u003ctd style=\"padding: 7px;\"\u003e33.5\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"border-bottom: 1px solid #eee;\"\u003e\n\u003ctd style=\"padding: 7px; text-align: left; font-weight: 600;\"\u003eM\u003c\/td\u003e\n\u003ctd style=\"padding: 7px;\"\u003e21\u003c\/td\u003e\n\u003ctd style=\"padding: 7px;\"\u003e28\u003c\/td\u003e\n\u003ctd style=\"padding: 7px;\"\u003e34.5\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"border-bottom: 1px solid #eee;\"\u003e\n\u003ctd style=\"padding: 7px; text-align: left; font-weight: 600;\"\u003eL\u003c\/td\u003e\n\u003ctd style=\"padding: 7px;\"\u003e23\u003c\/td\u003e\n\u003ctd style=\"padding: 7px;\"\u003e29\u003c\/td\u003e\n\u003ctd style=\"padding: 7px;\"\u003e35.5\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"border-bottom: 1px solid #eee;\"\u003e\n\u003ctd style=\"padding: 7px; text-align: left; font-weight: 600;\"\u003eXL\u003c\/td\u003e\n\u003ctd style=\"padding: 7px;\"\u003e25\u003c\/td\u003e\n\u003ctd style=\"padding: 7px;\"\u003e30\u003c\/td\u003e\n\u003ctd style=\"padding: 7px;\"\u003e36.5\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"border-bottom: 1px solid #eee;\"\u003e\n\u003ctd style=\"padding: 7px; text-align: left; font-weight: 600;\"\u003e2XL\u003c\/td\u003e\n\u003ctd style=\"padding: 7px;\"\u003e26.5\u003c\/td\u003e\n\u003ctd style=\"padding: 7px;\"\u003e31\u003c\/td\u003e\n\u003ctd style=\"padding: 7px;\"\u003e37.5\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"padding: 7px; text-align: left; font-weight: 600;\"\u003e3XL\u003c\/td\u003e\n\u003ctd style=\"padding: 7px;\"\u003e28\u003c\/td\u003e\n\u003ctd style=\"padding: 7px;\"\u003e32\u003c\/td\u003e\n\u003ctd style=\"padding: 7px;\"\u003e38.5\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/details\u003e\n\n\u003cdetails style=\"border: 1px solid #e5e5e5; border-radius: 8px; padding: 14px 18px; margin-bottom: 12px; background: #fafafa;\"\u003e\n\u003csummary style=\"font-weight: 700; font-size: 15px; cursor: pointer; color: #111; list-style: none; display: flex; justify-content: space-between; align-items: center;\"\u003e\n\u003cspan\u003e🧼 Fleece Care \u0026amp; Laundering Guide\u003c\/span\u003e\n\u003cspan style=\"font-size: 18px; color: #666;\"\u003e▾\u003c\/span\u003e\n\u003c\/summary\u003e\n\u003cdiv style=\"margin-top: 14px; color: #333; line-height: 1.6; font-size: 14px;\"\u003e\n\u003cul style=\"margin: 8px 0 10px 20px;\"\u003e\n\u003cli\u003eMachine wash cold, inside-out, with like colors on gentle cycle.\u003c\/li\u003e\n\u003cli\u003eUse mild detergent only; avoid bleach and harsh fabric softeners.\u003c\/li\u003e\n\u003cli\u003eTumble dry low or hang dry to preserve fleece softness and prevent shrinkage.\u003c\/li\u003e\n\u003cli\u003eCool iron inside-out if needed; \u003cstrong\u003enever iron directly over decoration\u003c\/strong\u003e.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003c\/details\u003e\n\u003cscript data-strxke-customizer=\"custom-servant\"\u003e\n(function() {\n  const MODE = \"custom-servant\";\n  function initStrxkeCustomizer() {\n    const prodForm = document.querySelector('product-form-component form.shopify-product-form') || document.querySelector('form[action*=\"\/cart\/add\"]');\n    if (!prodForm) return;\n    const formId = prodForm.id;\n    const existingInput = document.getElementById('custom_personalization');\n    let wrapper = existingInput ? existingInput.closest('div') : null;\n    const buyBlock = prodForm.querySelector('.buy-buttons-block, .product-form__buttons, button[type=\"submit\"]') || prodForm.lastElementChild;\n    if (!wrapper) {\n      if (buyBlock) {\n        wrapper = document.createElement('div');\n        wrapper.id = 'strxke-customizer-container';\n        buyBlock.parentNode.insertBefore(wrapper, buyBlock);\n      }\n    } else if (buyBlock \u0026\u0026 buyBlock.parentNode \u0026\u0026 wrapper.nextElementSibling !== buyBlock) {\n      buyBlock.parentNode.insertBefore(wrapper, buyBlock);\n    }\n    if (!wrapper || wrapper.dataset.strxkeUpgraded === 'true') return;\n    wrapper.dataset.strxkeUpgraded = 'true';\n    wrapper.id = 'strxke-customizer-container';\n    wrapper.style.cssText = 'margin: 18px 0 22px 0; padding: 18px; background: #141518; color: #f5f5f7; border: 1.5px solid #d8b258; border-radius: 10px; box-shadow: 0 4px 16px rgba(0,0,0,0.08);';\n\n    if (!document.getElementById('strxke-customizer-styles')) {\n      const st = document.createElement('style');\n      st.id = 'strxke-customizer-styles';\n      st.textContent = `\n        [data-strxke-upgraded=\"true\"] input[type=\"text\"] {\n          color: #FFFFFF !important;\n          background-color: #1E2026 !important;\n          -webkit-text-fill-color: #FFFFFF !important;\n        }\n        [data-strxke-upgraded=\"true\"] input[type=\"text\"]::placeholder,\n        [data-strxke-upgraded=\"true\"] input[type=\"text\"]::-webkit-input-placeholder,\n        [data-strxke-upgraded=\"true\"] input[type=\"text\"]::-moz-placeholder {\n          color: #9CA3AF !important;\n          -webkit-text-fill-color: #9CA3AF !important;\n          opacity: 1 !important;\n        }\n        [data-strxke-upgraded=\"true\"] .strxke-field-label {\n          display: block;\n          font-weight: 700;\n          font-size: 11.5px;\n          text-transform: uppercase;\n          letter-spacing: 0.3px;\n          white-space: nowrap;\n          overflow: hidden;\n          text-overflow: ellipsis;\n          margin-bottom: 6px;\n          color: #FFFFFF !important;\n        }\n      `;\n      document.head.appendChild(st);\n    }\n\n    if (MODE === 'custom-photo') {\n      wrapper.innerHTML = `\n        \u003cdiv style=\"display:flex; justify-content:space-between; align-items:center; margin-bottom:12px;\"\u003e\n          \u003cspan style=\"font-weight:800; font-size:13px; text-transform:uppercase; letter-spacing:0.8px; color:#f5d069;\"\u003e⚡ Custom 90s Bootleg Studio\u003c\/span\u003e\n          \u003cspan style=\"font-size:11px; background:#23262e; color:#2ecc71; padding:3px 8px; border-radius:4px; font-weight:600;\"\u003e✓ 24-Hr Proof Included\u003c\/span\u003e\n        \u003c\/div\u003e\n        \u003cdiv style=\"margin-bottom:14px;\"\u003e\n          \u003clabel for=\"strxke_pet_name\" class=\"strxke-field-label\"\u003e\n            1. Pet Name (3D Chrome Headline) *\n          \u003c\/label\u003e\n          \u003cinput type=\"text\" id=\"strxke_pet_name\" name=\"properties[Pet Name]\" form=\"${formId}\" maxlength=\"18\" required\n            placeholder=\"e.g., LUNA\"\n            style=\"width:100%; padding:11px 13px; font-size:14px; font-weight:600; border:1.5px solid #4b5563; border-radius:6px; box-sizing:border-box; background:#1e2026; color:#FFFFFF !important;\"\u003e\n        \u003c\/div\u003e\n        \u003cdiv style=\"margin-bottom:14px;\"\u003e\n          \u003clabel class=\"strxke-field-label\"\u003e\n            2. Upload 1–3 Pet Photos (Any Background) *\n          \u003c\/label\u003e\n          \u003clabel for=\"strxke_pet_photo_1\" id=\"strxke_dropzone\" style=\"display:flex; flex-direction:column; align-items:center; justify-content:center; padding:16px 12px; border:2px dashed #d8b258; border-radius:8px; background:#1c1e24; cursor:pointer; text-align:center; transition:all 0.2s;\"\u003e\n            \u003cspan style=\"font-size:13px; font-weight:700; color:#f5d069;\"\u003e📸 Click or Drag \u0026 Drop Primary Pet Photo *\u003c\/span\u003e\n            \u003cspan style=\"font-size:11px; color:#d1d5db; margin-top:4px;\"\u003eJPG, PNG, HEIC • Messy backgrounds removed automatically\u003c\/span\u003e\n          \u003c\/label\u003e\n          \u003cinput type=\"file\" id=\"strxke_pet_photo_1\" name=\"properties[Pet Photo 1]\" form=\"${formId}\" accept=\"image\/*\" required style=\"position:absolute; width:1px; height:1px; opacity:0; pointer-events:none;\"\u003e\n          \u003cdiv id=\"strxke_photo_preview_box\" style=\"display:none; margin-top:10px; padding:10px; background:#1e2026; border-radius:6px; border:1px solid #333;\"\u003e\u003c\/div\u003e\n          \u003cdiv style=\"margin-top:8px; display:flex; gap:8px;\"\u003e\n            \u003clabel style=\"flex:1; font-size:11px; color:#e5e7eb; background:#1e2026; padding:7px 10px; border-radius:5px; border:1px solid #3a3d46; cursor:pointer; text-align:center;\"\u003e\n              + Add 2nd Pose (Optional)\n              \u003cinput type=\"file\" id=\"strxke_pet_photo_2\" name=\"properties[Pet Photo 2]\" form=\"${formId}\" accept=\"image\/*\" style=\"display:none;\"\u003e\n            \u003c\/label\u003e\n            \u003clabel style=\"flex:1; font-size:11px; color:#e5e7eb; background:#1e2026; padding:7px 10px; border-radius:5px; border:1px solid #3a3d46; cursor:pointer; text-align:center;\"\u003e\n              + Add 3rd Pose (Optional)\n              \u003cinput type=\"file\" id=\"strxke_pet_photo_3\" name=\"properties[Pet Photo 3]\" form=\"${formId}\" accept=\"image\/*\" style=\"display:none;\"\u003e\n            \u003c\/label\u003e\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n        \u003cdiv\u003e\n          \u003clabel for=\"strxke_subtitle\" class=\"strxke-field-label\" style=\"color:#e5e7eb !important;\"\u003e\n            3. Bottom Text \/ Era (Optional — Defaults to \"WORLD TOUR\")\n          \u003c\/label\u003e\n          \u003cinput type=\"text\" id=\"strxke_subtitle\" name=\"properties[Subtitle \/ Era]\" form=\"${formId}\" maxlength=\"28\"\n            placeholder=\"e.g., WORLD TOUR (or leave blank)\"\n            style=\"width:100%; padding:10px 13px; font-size:13px; border:1.5px solid #4b5563; border-radius:6px; box-sizing:border-box; background:#1e2026; color:#FFFFFF !important;\"\u003e\n        \u003c\/div\u003e\n        \u003cinput type=\"hidden\" name=\"properties[_Custom_Mode]\" value=\"custom-photo\" form=\"${formId}\"\u003e\n      `;\n\n      const f1 = document.getElementById('strxke_pet_photo_1');\n      const f2 = document.getElementById('strxke_pet_photo_2');\n      const f3 = document.getElementById('strxke_pet_photo_3');\n      const pBox = document.getElementById('strxke_photo_preview_box');\n      function updatePreviews() {\n        const files = [f1?.files?.[0], f2?.files?.[0], f3?.files?.[0]].filter(Boolean);\n        if (!files.length) { pBox.style.display = 'none'; return; }\n        pBox.style.display = 'block';\n        pBox.innerHTML = '\u003cdiv style=\"font-size:11px; font-weight:700; color:#2ecc71; margin-bottom:6px;\"\u003e✓ ' + files.length + ' Photo(s) Attached \u0026 Ready for AI Cutout:\u003c\/div\u003e\u003cdiv id=\"strxke_thumbs\" style=\"display:flex; gap:8px; flex-wrap:wrap;\"\u003e\u003c\/div\u003e';\n        const tContainer = document.getElementById('strxke_thumbs');\n        files.forEach((file, idx) =\u003e {\n          const reader = new FileReader();\n          reader.onload = function(e) {\n            const img = new Image();\n            img.onload = function() {\n              const minDim = Math.min(img.width, img.height);\n              const badgeColor = minDim \u003e= 600 ? '#2ecc71' : '#f39c12';\n              const badgeTxt = minDim \u003e= 600 ? 'HD Ready (' + img.width + '×' + img.height + ')' : 'OK (' + img.width + '×' + img.height + ')';\n              const card = document.createElement('div');\n              card.style.cssText = 'display:flex; align-items:center; gap:8px; background:#141518; padding:5px 8px; border-radius:5px; border:1px solid #333;';\n              card.innerHTML = '\u003cimg src=\"' + e.target.result + '\" style=\"width:38px; height:38px; object-fit:cover; border-radius:4px; border:1px solid #d8b258;\"\u003e' +\n                '\u003cdiv style=\"font-size:11px; line-height:1.3;\"\u003e\u003cdiv style=\"color:#fff; font-weight:600;\"\u003ePose #' + (idx+1) + '\u003c\/div\u003e\u003cdiv style=\"color:' + badgeColor + ';\"\u003e' + badgeTxt + '\u003c\/div\u003e\u003c\/div\u003e';\n              tContainer.appendChild(card);\n            };\n            img.src = e.target.result;\n          };\n          reader.readAsDataURL(file);\n        });\n      }\n      [f1, f2, f3].forEach(inp =\u003e inp \u0026\u0026 inp.addEventListener('change', updatePreviews));\n\n      const dz = document.getElementById('strxke_dropzone');\n      if (dz \u0026\u0026 f1) {\n        dz.addEventListener('dragover', (e) =\u003e { e.preventDefault(); dz.style.borderColor = '#2ecc71'; });\n        dz.addEventListener('dragleave', (e) =\u003e { e.preventDefault(); dz.style.borderColor = '#d8b258'; });\n        dz.addEventListener('drop', (e) =\u003e {\n          e.preventDefault();\n          dz.style.borderColor = '#d8b258';\n          if (e.dataTransfer \u0026\u0026 e.dataTransfer.files.length) {\n            f1.files = e.dataTransfer.files;\n            updatePreviews();\n          }\n        });\n      }\n    } else if (MODE === 'custom-servant') {\n      wrapper.innerHTML = `\n        \u003cdiv style=\"display:flex; justify-content:space-between; align-items:center; margin-bottom:12px;\"\u003e\n          \u003cspan style=\"font-weight:800; font-size:13px; text-transform:uppercase; letter-spacing:0.8px; color:#f5d069;\"\u003e🐾 Official Cat Servant Personalizer\u003c\/span\u003e\n        \u003c\/div\u003e\n        \u003cdiv style=\"margin-bottom:12px;\"\u003e\n          \u003clabel for=\"strxke_est_year\" class=\"strxke-field-label\"\u003e\n            1. Servant Since (\"EST.\" Year) *\n          \u003c\/label\u003e\n          \u003cinput type=\"text\" id=\"strxke_est_year\" name=\"properties[Est. Year]\" form=\"${formId}\" pattern=\"^[0-9]{4}$\" maxlength=\"4\" required\n            placeholder=\"e.g., 2020\"\n            style=\"width:100%; padding:11px 13px; font-size:14px; font-weight:600; border:1.5px solid #4b5563; border-radius:6px; box-sizing:border-box; background:#1e2026; color:#FFFFFF !important;\"\u003e\n        \u003c\/div\u003e\n        \u003cdiv style=\"margin-bottom:14px;\"\u003e\n          \u003clabel for=\"strxke_cat_names\" class=\"strxke-field-label\"\u003e\n            2. Enter Your Cat Name(s) (1 to 3 Names) *\n          \u003c\/label\u003e\n          \u003cinput type=\"text\" id=\"strxke_cat_names\" name=\"properties[Cat Names]\" form=\"${formId}\" maxlength=\"36\" required\n            placeholder=\"e.g., Luna, Milo \u0026 Oliver\"\n            style=\"width:100%; padding:11px 13px; font-size:14px; font-weight:600; border:1.5px solid #4b5563; border-radius:6px; box-sizing:border-box; background:#1e2026; color:#FFFFFF !important;\"\u003e\n        \u003c\/div\u003e\n        \u003cdiv style=\"margin-bottom:14px;\"\u003e\n          \u003clabel class=\"strxke-field-label\"\u003e\n            3. Upload 1–3 Cat Photos (Any Background) *\n          \u003c\/label\u003e\n          \u003clabel for=\"strxke_cat_photo_1\" id=\"strxke_cat_dropzone\" style=\"display:flex; flex-direction:column; align-items:center; justify-content:center; padding:16px 12px; border:2px dashed #d8b258; border-radius:8px; background:#1c1e24; cursor:pointer; text-align:center; transition:all 0.2s;\"\u003e\n            \u003cspan style=\"font-size:13px; font-weight:700; color:#f5d069;\"\u003e📸 Click or Drag \u0026 Drop Primary Cat Photo *\u003c\/span\u003e\n            \u003cspan style=\"font-size:11px; color:#d1d5db; margin-top:4px;\"\u003eJPG, PNG, WebP, HEIC • We crop into vintage portrait ovals\u003c\/span\u003e\n          \u003c\/label\u003e\n          \u003cinput type=\"file\" id=\"strxke_cat_photo_1\" name=\"properties[Cat Photo 1]\" form=\"${formId}\" accept=\"image\/jpeg,image\/png,image\/webp,image\/heic,image\/*\" required style=\"position:absolute; width:1px; height:1px; opacity:0; pointer-events:none;\"\u003e\n          \u003cdiv id=\"strxke_cat_photo_preview_box\" style=\"display:none; margin-top:10px; padding:10px; background:#1e2026; border-radius:6px; border:1px solid #333;\"\u003e\u003c\/div\u003e\n          \u003cdiv style=\"margin-top:8px; display:flex; gap:8px;\"\u003e\n            \u003clabel style=\"flex:1; font-size:11px; color:#e5e7eb; background:#1e2026; padding:7px 10px; border-radius:5px; border:1px solid #3a3d46; cursor:pointer; text-align:center;\"\u003e\n              + Add Cat #2 (Optional)\n              \u003cinput type=\"file\" id=\"strxke_cat_photo_2\" name=\"properties[Cat Photo 2]\" form=\"${formId}\" accept=\"image\/jpeg,image\/png,image\/webp,image\/heic,image\/*\" style=\"display:none;\"\u003e\n            \u003c\/label\u003e\n            \u003clabel style=\"flex:1; font-size:11px; color:#e5e7eb; background:#1e2026; padding:7px 10px; border-radius:5px; border:1px solid #3a3d46; cursor:pointer; text-align:center;\"\u003e\n              + Add Cat #3 (Optional)\n              \u003cinput type=\"file\" id=\"strxke_cat_photo_3\" name=\"properties[Cat Photo 3]\" form=\"${formId}\" accept=\"image\/jpeg,image\/png,image\/webp,image\/heic,image\/*\" style=\"display:none;\"\u003e\n            \u003c\/label\u003e\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n        \u003cp style=\"font-size:11px; color:#d1d5db; margin:8px 0 0 0;\"\u003e* Automatically centered in vintage portrait ovals with matching distressed typography.\u003c\/p\u003e\n        \u003cinput type=\"hidden\" name=\"properties[_Custom_Mode]\" value=\"custom-servant\" form=\"${formId}\"\u003e\n      `;\n\n      const cf1 = document.getElementById('strxke_cat_photo_1');\n      const cf2 = document.getElementById('strxke_cat_photo_2');\n      const cf3 = document.getElementById('strxke_cat_photo_3');\n      const cpBox = document.getElementById('strxke_cat_photo_preview_box');\n      function updateCatPreviews() {\n        const files = [cf1?.files?.[0], cf2?.files?.[0], cf3?.files?.[0]].filter(Boolean);\n        if (!files.length) { cpBox.style.display = 'none'; return; }\n        cpBox.style.display = 'block';\n        cpBox.innerHTML = '\u003cdiv style=\"font-size:11px; font-weight:700; color:#2ecc71; margin-bottom:6px;\"\u003e✓ ' + files.length + ' Cat Photo(s) Attached \u0026 Ready for Oval Crop:\u003c\/div\u003e\u003cdiv id=\"strxke_cat_thumbs\" style=\"display:flex; gap:8px; flex-wrap:wrap;\"\u003e\u003c\/div\u003e';\n        const tContainer = document.getElementById('strxke_cat_thumbs');\n        files.forEach((file, idx) =\u003e {\n          const reader = new FileReader();\n          reader.onload = function(e) {\n            const img = new Image();\n            img.onload = function() {\n              const minDim = Math.min(img.width, img.height);\n              const badgeColor = minDim \u003e= 600 ? '#2ecc71' : '#f39c12';\n              const badgeTxt = minDim \u003e= 600 ? 'HD Ready (' + img.width + '×' + img.height + ')' : 'OK (' + img.width + '×' + img.height + ')';\n              const card = document.createElement('div');\n              card.style.cssText = 'display:flex; align-items:center; gap:8px; background:#141518; padding:5px 8px; border-radius:5px; border:1px solid #333;';\n              card.innerHTML = '\u003cimg src=\"' + e.target.result + '\" style=\"width:38px; height:38px; object-fit:cover; border-radius:4px; border:1px solid #d8b258;\"\u003e' +\n                '\u003cdiv style=\"font-size:11px; line-height:1.3;\"\u003e\u003cdiv style=\"color:#fff; font-weight:600;\"\u003eCat #' + (idx+1) + '\u003c\/div\u003e\u003cdiv style=\"color:' + badgeColor + ';\"\u003e' + badgeTxt + '\u003c\/div\u003e\u003c\/div\u003e';\n              tContainer.appendChild(card);\n            };\n            img.src = e.target.result;\n          };\n          reader.readAsDataURL(file);\n        });\n      }\n      [cf1, cf2, cf3].forEach(inp =\u003e inp \u0026\u0026 inp.addEventListener('change', updateCatPreviews));\n\n      const cdz = document.getElementById('strxke_cat_dropzone');\n      if (cdz \u0026\u0026 cf1) {\n        cdz.addEventListener('dragover', (e) =\u003e { e.preventDefault(); cdz.style.borderColor = '#2ecc71'; });\n        cdz.addEventListener('dragleave', (e) =\u003e { e.preventDefault(); cdz.style.borderColor = '#d8b258'; });\n        cdz.addEventListener('drop', (e) =\u003e {\n          e.preventDefault();\n          cdz.style.borderColor = '#d8b258';\n          if (e.dataTransfer \u0026\u0026 e.dataTransfer.files.length) {\n            cf1.files = e.dataTransfer.files;\n            updateCatPreviews();\n          }\n        });\n      }\n    } else if (MODE === 'custom-year') {\n      wrapper.innerHTML = `\n        \u003cdiv style=\"display:flex; justify-content:space-between; align-items:center; margin-bottom:12px;\"\u003e\n          \u003cspan style=\"font-weight:800; font-size:13px; text-transform:uppercase; letter-spacing:0.8px; color:#f5d069;\"\u003e🏛️ Custom Vintage Year Personalizer\u003c\/span\u003e\n        \u003c\/div\u003e\n        \u003cdiv\u003e\n          \u003clabel for=\"strxke_vintage_year\" class=\"strxke-field-label\"\u003e\n            Enter 4-Digit Birth or Milestone Year *\n          \u003c\/label\u003e\n          \u003cinput type=\"text\" id=\"strxke_vintage_year\" name=\"properties[Vintage Year]\" form=\"${formId}\" pattern=\"^(19|20)[0-9]{2}$\" maxlength=\"4\" inputmode=\"numeric\" required\n            placeholder=\"e.g., 1986\"\n            style=\"width:100%; padding:12px 14px; font-size:16px; font-weight:700; letter-spacing:1.5px; border:1.5px solid #4b5563; border-radius:6px; box-sizing:border-box; background:#1e2026; color:#FFFFFF !important;\"\u003e\n        \u003c\/div\u003e\n        \u003cp style=\"font-size:11px; color:#d1d5db; margin:8px 0 0 0;\"\u003e* Your custom 4-digit year is distressed in vintage gold slab-serif to match the crest.\u003c\/p\u003e\n        \u003cinput type=\"hidden\" name=\"properties[_Custom_Mode]\" value=\"custom-year\" form=\"${formId}\"\u003e\n      `;\n    }\n  }\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', initStrxkeCustomizer);\n  } else {\n    initStrxkeCustomizer();\n  }\n})();\n\u003c\/script\u003e\n\n\u003cscript data-strxke-switcher=\"true\" data-group=\"custom_official_cat_servant\" data-current=\"hoodie\"\u003e\n(function() {\n  const REGISTRY = {\"custom_90s_bootleg_cat_world_tour\": {\"title\": \"Custom 90s Bootleg Pet\", \"is_custom\": true, \"garments\": {\"tee\": {\"name\": \"Heavyweight Tee\", \"handle\": \"vintage-90s-bootleg-rap-cat-shirt-retro-streetwear-heavyweight-graphic-tee\", \"price\": \"$34.99\"}, \"hoodie\": {\"name\": \"Pullover Hoodie\", \"handle\": \"custom-90s-bootleg-cat-pullover-hoodie\", \"price\": \"$57.99\"}}}, \"aged_to_perfection\": {\"title\": \"Custom Aged to Perfection\", \"is_custom\": true, \"garments\": {\"tee\": {\"name\": \"Heavyweight Tee\", \"handle\": \"vintage-limited-edition-shirt-aged-to-perfection-classic-birthday-tee\", \"price\": \"$34.99\"}, \"crewneck\": {\"name\": \"Crewneck\", \"handle\": \"custom-aged-to-perfection-crewneck-sweatshirt\", \"price\": \"$49.99\"}}}, \"custom_official_cat_servant\": {\"title\": \"Custom Official Cat Servant\", \"is_custom\": true, \"garments\": {\"tee\": {\"name\": \"Heavyweight Tee\", \"handle\": \"custom-official-cat-servant-comfort-colors-tee\", \"price\": \"$34.99\"}, \"crewneck\": {\"name\": \"Crewneck\", \"handle\": \"custom-official-cat-servant-crewneck-sweatshirt\", \"price\": \"$49.99\"}, \"hoodie\": {\"name\": \"Pullover Hoodie\", \"handle\": \"custom-official-cat-servant-pullover-hoodie\", \"price\": \"$57.99\"}}}, \"night_shift_crew_raccoon_nurse\": {\"title\": \"Night Shift Raccoon Nurse\", \"is_custom\": false, \"garments\": {\"tee\": {\"name\": \"Heavyweight Tee\", \"handle\": \"night-shift-crew-raccoon-nurse-shirt-funny-healthcare-vintage-graphic-tee\", \"price\": \"$29.99\"}, \"crewneck\": {\"name\": \"Crewneck\", \"handle\": \"night-shift-raccoon-nurse-crewneck-sweatshirt\", \"price\": \"$44.99\"}, \"hoodie\": {\"name\": \"Pullover Hoodie\", \"handle\": \"night-shift-raccoon-nurse-pullover-hoodie\", \"price\": \"$52.99\"}}}, \"fueled_by_spite_iced_coffee_cat\": {\"title\": \"Fueled by Spite Cat\", \"is_custom\": false, \"garments\": {\"tee\": {\"name\": \"Heavyweight Tee\", \"handle\": \"fueled-by-spite-iced-coffee-tee-heavyweight-vintage-cat-shirt\", \"price\": \"$29.99\"}, \"crewneck\": {\"name\": \"Crewneck\", \"handle\": \"fueled-by-spite-cat-crewneck-sweatshirt\", \"price\": \"$44.99\"}, \"hoodie\": {\"name\": \"Pullover Hoodie\", \"handle\": \"fueled-by-spite-cat-pullover-hoodie\", \"price\": \"$52.99\"}}}, \"feral_and_festive\": {\"title\": \"Feral \u0026 Festive Cat\", \"is_custom\": false, \"garments\": {\"tee\": {\"name\": \"Heavyweight Tee\", \"handle\": \"feral-festive-christmas-cat-shirt-grunge-holiday-heavyweight-graphic-tee\", \"price\": \"$29.99\"}, \"crewneck\": {\"name\": \"Crewneck\", \"handle\": \"feral-and-festive-cat-crewneck-sweatshirt\", \"price\": \"$44.99\"}, \"hoodie\": {\"name\": \"Pullover Hoodie\", \"handle\": \"feral-and-festive-cat-pullover-hoodie\", \"price\": \"$52.99\"}}}, \"merry_catmas_tree\": {\"title\": \"Merry Catmas Tree\", \"is_custom\": false, \"garments\": {\"tee\": {\"name\": \"Heavyweight Tee\", \"handle\": \"merry-catmas-tree-shirt-vintage-retro-christmas-cat-lover-graphic-tee\", \"price\": \"$29.99\"}, \"crewneck\": {\"name\": \"Crewneck\", \"handle\": \"merry-catmas-tree-crewneck-sweatshirt\", \"price\": \"$44.99\"}, \"hoodie\": {\"name\": \"Pullover Hoodie\", \"handle\": \"merry-catmas-tree-pullover-hoodie\", \"price\": \"$52.99\"}}}, \"old_enough_to_know_better\": {\"title\": \"Old Enough to Know Better\", \"is_custom\": false, \"garments\": {\"tee\": {\"name\": \"Heavyweight Tee\", \"handle\": \"old-enough-to-know-better-vintage-graphic-tee\", \"price\": \"$29.99\"}, \"crewneck\": {\"name\": \"Crewneck\", \"handle\": \"old-enough-to-know-better-crewneck-sweatshirt\", \"price\": \"$44.99\"}}}, \"sleigh_bells_trauma_calls\": {\"title\": \"Sleigh Bells \u0026 Trauma Calls\", \"is_custom\": false, \"garments\": {\"tee\": {\"name\": \"Heavyweight Tee\", \"handle\": \"sleigh-bells-trauma-calls-shirt-funny-er-nurse-holiday-graphic-tee\", \"price\": \"$29.99\"}, \"crewneck\": {\"name\": \"Crewneck\", \"handle\": \"sleigh-bells-trauma-calls-crewneck-sweatshirt\", \"price\": \"$44.99\"}, \"hoodie\": {\"name\": \"Pullover Hoodie\", \"handle\": \"sleigh-bells-trauma-calls-pullover-hoodie\", \"price\": \"$52.99\"}}}, \"sleighing_the_night_shift\": {\"title\": \"Sleighing the Night Shift\", \"is_custom\": false, \"garments\": {\"tee\": {\"name\": \"Heavyweight Tee\", \"handle\": \"sleighing-the-night-shift-shirt-skeleton-hand-iced-coffee-nurse-holiday-tee\", \"price\": \"$29.99\"}, \"crewneck\": {\"name\": \"Crewneck\", \"handle\": \"sleighing-the-night-shift-crewneck-sweatshirt\", \"price\": \"$44.99\"}, \"hoodie\": {\"name\": \"Pullover Hoodie\", \"handle\": \"sleighing-the-night-shift-pullover-hoodie\", \"price\": \"$52.99\"}}}, \"due_to_not_wanting_to_cat\": {\"title\": \"Due to Not Wanting to Cat\", \"is_custom\": false, \"garments\": {\"tee\": {\"name\": \"Heavyweight Tee\", \"handle\": \"due-to-not-wanting-to-i-will-simply-not-cat-shirt-sarcastic-vintage-tee\", \"price\": \"$29.99\"}, \"crewneck\": {\"name\": \"Crewneck\", \"handle\": \"due-to-not-wanting-to-cat-crewneck-sweatshirt\", \"price\": \"$44.99\"}, \"hoodie\": {\"name\": \"Pullover Hoodie\", \"handle\": \"due-to-not-wanting-to-cat-pullover-hoodie\", \"price\": \"$52.99\"}}}};\n  const CURRENT_GROUP = \"custom_official_cat_servant\";\n  const CURRENT_TYPE = \"hoodie\";\n\n  function findMountTarget() {\n    const customizer = document.getElementById('strxke-customizer-container');\n\n    \/\/ Find the Color variant fieldset in Horizon theme\n    const fieldsets = document.querySelectorAll('fieldset, .product-form__input, variant-radios \u003e fieldset, variant-selects \u003e div');\n    let colorFieldset = null;\n    for (const fs of fieldsets) {\n      const text = (fs.querySelector('legend, label, .form__label') || fs).textContent.toLowerCase();\n      if (text.includes('color')) {\n        colorFieldset = fs;\n        break;\n      }\n    }\n\n    if (!colorFieldset) {\n      colorFieldset = document.querySelector('variant-radios fieldset, variant-selects fieldset, variant-radios, variant-selects, .product-variant-picker');\n    }\n\n    \/\/ Rule: Always mount at top of options column, directly above Color, and never below Custom Personalizer Studio\n    if (customizer \u0026\u0026 colorFieldset \u0026\u0026 customizer.parentNode === colorFieldset.parentNode) {\n      const isCustomizerFirst = (customizer.compareDocumentPosition(colorFieldset) \u0026 Node.DOCUMENT_POSITION_FOLLOWING);\n      if (isCustomizerFirst) {\n        return customizer;\n      }\n    }\n\n    if (colorFieldset) return colorFieldset;\n    if (customizer) return customizer;\n    return document.querySelector('product-form-component, form[action*=\"\/cart\/add\"], .product-form');\n  }\n\n  async function renderSwitcher() {\n    if (document.getElementById('strxke-garment-switcher')) return;\n\n    const groupData = REGISTRY[CURRENT_GROUP];\n    if (!groupData) return;\n\n    const entries = Object.entries(groupData.garments);\n    const currentPath = window.location.pathname;\n\n    \/\/ Check each garment style via \/products\/\u003chandle\u003e.js so zero dead links are ever rendered\n    const liveChecks = await Promise.all(\n      entries.map(async ([gType, gInfo]) =\u003e {\n        const isCurrent = (gType === CURRENT_TYPE) || currentPath.includes(gInfo.handle);\n        if (isCurrent) {\n          return { gType, gInfo, isLive: true, isActive: true };\n        }\n        try {\n          const resp = await fetch('\/products\/' + gInfo.handle + '.js');\n          if (resp.ok) {\n            return { gType, gInfo, isLive: true, isActive: false };\n          }\n        } catch (e) {}\n        return { gType, gInfo, isLive: false, isActive: false };\n      })\n    );\n\n    const availableGarments = liveChecks.filter(item =\u003e item.isLive);\n\n    \/\/ If only 1 style is live on Shopify, do not render switcher (avoids clutter and dead links)\n    if (availableGarments.length \u003c= 1) {\n      return;\n    }\n\n    const target = findMountTarget();\n    if (!target || !target.parentNode) return;\n\n    if (document.getElementById('strxke-garment-switcher')) return;\n\n    const switcher = document.createElement('div');\n    switcher.id = 'strxke-garment-switcher';\n    switcher.style.cssText = 'margin: 16px 0 20px 0; padding: 14px 16px; background: #181A1F; border: 1.5px solid #3A3D46; border-radius: 10px; box-sizing: border-box; font-family: inherit;';\n\n    const header = document.createElement('div');\n    header.style.cssText = 'display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px;';\n    header.innerHTML = `\n      \u003cspan style=\"font-size: 11.5px; font-weight: 800; text-transform: uppercase; letter-spacing: 0.8px; color: #D8B258;\"\u003e\n        GARMENT STYLE\n      \u003c\/span\u003e\n      \u003cspan style=\"font-size: 11px; color: #9CA3AF; font-weight: 500;\"\u003e\n        100% Combed Cotton Faces\n      \u003c\/span\u003e\n    `;\n    switcher.appendChild(header);\n\n    const pillsRow = document.createElement('div');\n    pillsRow.style.cssText = 'display: flex; gap: 8px; flex-wrap: wrap;';\n\n    const ICONS = {\n      tee: `\u003csvg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#D8B258\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"flex-shrink:0; vertical-align: middle;\"\u003e\u003cpath d=\"M6 2L1.5 7.5L5 10L6 9V21C6 21.55 6.45 22 7 22H17C17.55 22 18 21.55 18 21V9L19 10L22.5 7.5L18 2H14.5C14.5 3.38 13.38 4.5 12 4.5C10.62 4.5 9.5 3.38 9.5 2H6Z\"\/\u003e\u003c\/svg\u003e`,\n      crewneck: `\u003csvg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#D8B258\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"flex-shrink:0; vertical-align: middle;\"\u003e\u003cpath d=\"M7 2.5L1 11L4 12.5L6.5 8.5V20.5C6.5 21.3 7.2 22 8 22H16C16.8 22 17.5 21.3 17.5 20.5V8.5L20 12.5L23 11L17 2.5H14C14 3.6 13.1 4.5 12 4.5C10.9 4.5 10 3.6 10 2.5H7Z\"\/\u003e\u003cline x1=\"6.5\" y1=\"19.5\" x2=\"17.5\" y2=\"19.5\"\/\u003e\u003c\/svg\u003e`,\n      hoodie: `\u003csvg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#D8B258\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"flex-shrink:0; vertical-align: middle;\"\u003e\u003cpath d=\"M7 6L1 13L4 14.5L6.5 10.5V20.5C6.5 21.3 7.2 22 8 22H16C16.8 22 17.5 21.3 17.5 20.5V10.5L20 14.5L23 13L17 6\"\/\u003e\u003cpath d=\"M7.5 6C7.5 3 9 1 12 1C15 1 16.5 3 16.5 6\"\/\u003e\u003cpath d=\"M9.5 15H14.5L15.5 19H8.5L9.5 15Z\"\/\u003e\u003c\/svg\u003e`\n    };\n\n    for (const item of availableGarments) {\n      const { gType, gInfo, isActive } = item;\n      const iconSvg = ICONS[gType] || '';\n      const pill = document.createElement('a');\n      pill.href = '\/products\/' + gInfo.handle;\n      pill.className = 'strxke-style-pill' + (isActive ? ' active' : '');\n      pill.style.cssText = `\n        flex: 1;\n        min-width: 95px;\n        text-decoration: none;\n        padding: 9px 12px;\n        border-radius: 8px;\n        text-align: center;\n        transition: all 0.2s ease;\n        border: 1.5px solid ${isActive ? '#D8B258' : '#3A3D46'};\n        background: ${isActive ? '#23262E' : '#141518'};\n        color: #FFFFFF;\n        display: block;\n        box-shadow: ${isActive ? '0 0 10px rgba(216,178,88,0.2)' : 'none'};\n      `;\n\n      pill.innerHTML = `\n        \u003cdiv style=\"display: flex; align-items: center; justify-content: center; gap: 6px; font-size: 12px; font-weight: 700; color: #FFFFFF; letter-spacing: 0.2px;\"\u003e\n          ${iconSvg}\n          \u003cspan\u003e${gInfo.name}\u003c\/span\u003e\n        \u003c\/div\u003e\n        \u003cdiv style=\"font-size: 11px; color: #D8B258; font-weight: 700; margin-top: 3px;\"\u003e${gInfo.price}\u003c\/div\u003e\n      `;\n\n      pill.addEventListener('mouseenter', () =\u003e {\n        if (!isActive) pill.style.borderColor = '#D8B258';\n      });\n      pill.addEventListener('mouseleave', () =\u003e {\n        if (!isActive) pill.style.borderColor = '#3A3D46';\n      });\n\n      pillsRow.appendChild(pill);\n    }\n\n    switcher.appendChild(pillsRow);\n    target.parentNode.insertBefore(switcher, target);\n  }\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', renderSwitcher);\n  } else {\n    renderSwitcher();\n  }\n\n  \/\/ Re-run if Shopify Horizon dynamic variant sections update the DOM\n  const observer = new MutationObserver(() =\u003e {\n    if (!document.getElementById('strxke-garment-switcher')) {\n      renderSwitcher();\n    }\n  });\n  observer.observe(document.body, { childList: true, subtree: true });\n})();\n\u003c\/script\u003e\n","brand":"STRXKE Apparel Co.","offers":[{"title":"Carbon Grey \/ S","offer_id":54431494046059,"sku":"STRXKE-10784","price":57.99,"currency_code":"USD","in_stock":true},{"title":"Carbon Grey \/ M","offer_id":54431494078827,"sku":"STRXKE-10785","price":57.99,"currency_code":"USD","in_stock":true},{"title":"Carbon Grey \/ L","offer_id":54431494111595,"sku":"STRXKE-10786","price":57.99,"currency_code":"USD","in_stock":true},{"title":"Carbon Grey \/ XL","offer_id":54431494144363,"sku":"STRXKE-10787","price":57.99,"currency_code":"USD","in_stock":true},{"title":"Carbon Grey \/ 2XL","offer_id":54431494177131,"sku":"STRXKE-10788","price":60.99,"currency_code":"USD","in_stock":true},{"title":"Carbon Grey \/ 3XL","offer_id":54431494209899,"sku":"STRXKE-13420","price":62.99,"currency_code":"USD","in_stock":true},{"title":"Vintage Black \/ S","offer_id":54431494242667,"sku":"STRXKE-20272","price":57.99,"currency_code":"USD","in_stock":true},{"title":"Vintage Black \/ M","offer_id":54431494275435,"sku":"STRXKE-20273","price":57.99,"currency_code":"USD","in_stock":true},{"title":"Vintage Black \/ L","offer_id":54431494308203,"sku":"STRXKE-20274","price":57.99,"currency_code":"USD","in_stock":true},{"title":"Vintage Black \/ XL","offer_id":54431494340971,"sku":"STRXKE-20275","price":57.99,"currency_code":"USD","in_stock":true},{"title":"Vintage Black \/ 2XL","offer_id":54431494373739,"sku":"STRXKE-20276","price":60.99,"currency_code":"USD","in_stock":true},{"title":"Vintage Black \/ 3XL","offer_id":54431494406507,"sku":"STRXKE-20277","price":62.99,"currency_code":"USD","in_stock":true},{"title":"Black \/ S","offer_id":54431494439275,"sku":"STRXKE-10779","price":57.99,"currency_code":"USD","in_stock":true},{"title":"Black \/ M","offer_id":54431494472043,"sku":"STRXKE-10780","price":57.99,"currency_code":"USD","in_stock":true},{"title":"Black \/ L","offer_id":54431494504811,"sku":"STRXKE-10781","price":57.99,"currency_code":"USD","in_stock":true},{"title":"Black \/ XL","offer_id":54431494537579,"sku":"STRXKE-10782","price":57.99,"currency_code":"USD","in_stock":true},{"title":"Black \/ 2XL","offer_id":54431494570347,"sku":"STRXKE-10783","price":60.99,"currency_code":"USD","in_stock":true},{"title":"Black \/ 3XL","offer_id":54431494603115,"sku":"STRXKE-13416","price":62.99,"currency_code":"USD","in_stock":true},{"title":"Bone \/ S","offer_id":54431494635883,"sku":"STRXKE-20284","price":57.99,"currency_code":"USD","in_stock":true},{"title":"Bone \/ M","offer_id":54431494668651,"sku":"STRXKE-20285","price":57.99,"currency_code":"USD","in_stock":true},{"title":"Bone \/ L","offer_id":54431494701419,"sku":"STRXKE-20286","price":57.99,"currency_code":"USD","in_stock":true},{"title":"Bone \/ XL","offer_id":54431494734187,"sku":"STRXKE-20287","price":57.99,"currency_code":"USD","in_stock":true},{"title":"Bone \/ 2XL","offer_id":54431494766955,"sku":"STRXKE-20288","price":60.99,"currency_code":"USD","in_stock":true},{"title":"Bone \/ 3XL","offer_id":54431494799723,"sku":"STRXKE-20289","price":62.99,"currency_code":"USD","in_stock":true},{"title":"Maroon \/ S","offer_id":54431494832491,"sku":"STRXKE-11486","price":57.99,"currency_code":"USD","in_stock":true},{"title":"Maroon \/ M","offer_id":54431494865259,"sku":"STRXKE-11487","price":57.99,"currency_code":"USD","in_stock":true},{"title":"Maroon \/ L","offer_id":54431494898027,"sku":"STRXKE-11488","price":57.99,"currency_code":"USD","in_stock":true},{"title":"Maroon \/ XL","offer_id":54431494930795,"sku":"STRXKE-11489","price":57.99,"currency_code":"USD","in_stock":true},{"title":"Maroon \/ 2XL","offer_id":54431494963563,"sku":"STRXKE-11490","price":60.99,"currency_code":"USD","in_stock":true},{"title":"Maroon \/ 3XL","offer_id":54431494996331,"sku":"STRXKE-13418","price":62.99,"currency_code":"USD","in_stock":true},{"title":"Charcoal Heather \/ S","offer_id":54431495029099,"sku":"STRXKE-11481","price":57.99,"currency_code":"USD","in_stock":true},{"title":"Charcoal Heather \/ M","offer_id":54431495061867,"sku":"STRXKE-11482","price":57.99,"currency_code":"USD","in_stock":true},{"title":"Charcoal Heather \/ L","offer_id":54431495094635,"sku":"STRXKE-11483","price":57.99,"currency_code":"USD","in_stock":true},{"title":"Charcoal Heather \/ XL","offer_id":54431495127403,"sku":"STRXKE-11484","price":57.99,"currency_code":"USD","in_stock":true},{"title":"Charcoal Heather \/ 2XL","offer_id":54431495160171,"sku":"STRXKE-11485","price":60.99,"currency_code":"USD","in_stock":true},{"title":"Charcoal Heather \/ 3XL","offer_id":54431495192939,"sku":"STRXKE-13419","price":62.99,"currency_code":"USD","in_stock":true},{"title":"Navy Blazer \/ S","offer_id":54431495225707,"sku":"STRXKE-11491","price":57.99,"currency_code":"USD","in_stock":true},{"title":"Navy Blazer \/ M","offer_id":54431495258475,"sku":"STRXKE-11492","price":57.99,"currency_code":"USD","in_stock":true},{"title":"Navy Blazer \/ L","offer_id":54431495291243,"sku":"STRXKE-11493","price":57.99,"currency_code":"USD","in_stock":true},{"title":"Navy Blazer \/ XL","offer_id":54431495324011,"sku":"STRXKE-11494","price":57.99,"currency_code":"USD","in_stock":true},{"title":"Navy Blazer \/ 2XL","offer_id":54431495356779,"sku":"STRXKE-11495","price":60.99,"currency_code":"USD","in_stock":true},{"title":"Navy Blazer \/ 3XL","offer_id":54431495389547,"sku":"STRXKE-13417","price":62.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1020\/2385\/6491\/files\/Custom_Official_Cat_Servant_Carbon_Grey_Hoodie_FlatLay_1500x1500_ad771ae3-8cf9-4403-bf2a-e1dee5973628.jpg?v=1794701099","url":"https:\/\/strxkeapparel.com\/products\/custom-official-cat-servant-pullover-hoodie","provider":"STRXKE Apparel Co.","version":"1.0","type":"link"}