{"title":"STONE CUSTOM FABRICATION","description":"","products":[{"product_id":"full-zip-midweight-hoodies","title":"STONE FAB FULL ZIP HOODIES","description":"\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e✅ \u003cstrong\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003ePremium Full-Zip Hoodie\u003c\/span\u003e\u003c\/strong\u003e\n\u003c\/h2\u003e\n\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e✅ \u003cstrong\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003e10 oz. Tightly-knit 3-end fleece with cotton face. Soft-washed for ultra-soft hand. \u003cmeta charset=\"utf-8\"\u003eFlat draw cords.\u003c\/span\u003e\u003c\/strong\u003e\n\u003c\/h2\u003e\n\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e✅ \u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cstrong\u003e70% Cotton 30% \u003cmeta charset=\"utf-8\"\u003e\u003c\/strong\u003e\u003cstrong\u003ePolyester.\u003c\/strong\u003e\u003c\/span\u003e\n\u003c\/h2\u003e\n\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e\n\u003cspan style=\"font-size: 1.75rem;\"\u003e✅ \u003c\/span\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cstrong style=\"font-size: 1.75rem;\"\u003e48 Minimum Total Quantity to Place Order\u003c\/strong\u003e\u003c\/span\u003e\n\u003c\/h2\u003e\n\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e✅ \u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cstrong\u003eDiscounts Applied Automatically\u003c\/strong\u003e at quantity breaks: 72, 144, 288, 576\u003c\/span\u003e\n\u003c\/h2\u003e\n\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e✅ \u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cstrong\u003ePricing includes \u003cmeta charset=\"utf-8\"\u003e\u003c\/strong\u003e\u003c\/span\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cstrong\u003eLogos Screen Print on Left Chest and Back.  Custom Neck Labels, Individually Folded, Bagged\u003c\/strong\u003e\u003c\/span\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cstrong\u003e. Small through X-Large.\u003c\/strong\u003e\u003c\/span\u003e\n\u003c\/h2\u003e\n\u003ch3 style=\"margin-top: 1.5rem; font-size: 1.5rem; text-align: center;\"\u003e\n\u003cstrong\u003eNote:\u003c\/strong\u003e 2XL add $2.00   |   3XL add $3.00   |  \u003c\/h3\u003e\n\u003ctable height=\"200\" style=\"width: 90.121%; border-collapse: collapse; font-size: 1.5rem;\"\u003e\n\u003cthead\u003e\n\u003ctr style=\"background-color: #f0f0f0;\"\u003e\n\u003cth style=\"padding: 0.15rem; width: 55.3535%; text-align: center;\"\u003eQuantity Range\u003c\/th\u003e\n\u003cth style=\"padding: 0.15rem; width: 35.1515%; text-align: center;\"\u003eCost Per\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr style=\"text-align: center;\"\u003e\n\u003ctd style=\"padding: 0.15em; width: 55.3535%;\"\u003e48–71\u003c\/td\u003e\n\u003ctd style=\"padding: 0.15rem; width: 35.1515%;\"\u003e$35.08\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"background-color: rgb(249, 249, 249); text-align: center;\"\u003e\n\u003ctd style=\"padding: 0.15em; width: 55.3535%;\"\u003e72–143\u003c\/td\u003e\n\u003ctd style=\"padding: 0.15rem; width: 35.1515%;\"\u003e$32.80\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"text-align: center;\"\u003e\n\u003ctd style=\"padding: 0.15rem; width: 55.3535%;\"\u003e144–287\u003c\/td\u003e\n\u003ctd style=\"padding: 0.15rem; width: 35.1515%;\"\u003e$29.97\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"background-color: rgb(249, 249, 249); text-align: center;\"\u003e\n\u003ctd style=\"padding: 0.15rem; width: 55.3535%;\"\u003e288–575\u003c\/td\u003e\n\u003ctd style=\"padding: 0.15rem; width: 35.1515%;\"\u003e$28.08\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"padding: 0.15rem; width: 55.3535%; text-align: center;\"\u003e576+\u003c\/td\u003e\n\u003ctd style=\"padding: 0.15rem; width: 35.1515%; text-align: center;\"\u003e$27.43\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003cdiv id=\"sched-widget\" data-server-epoch=\"{{ server_epoch }}\" style=\"margin: 16px 0;\"\u003e\n\u003cdiv id=\"sched-error\" role=\"alert\" style=\"color: #b00020; margin-top: 8px; display: none;\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cp\u003e\u003cscript\u003e\n(function(){\n  var DAYS_OUT = 15;\n  var widget = document.getElementById('sched-widget');\n  if (!widget) return;\n\n  var input = document.getElementById('scheduled_date');\n  var err = document.getElementById('sched-error');\n\n  var serverEpoch = parseInt(widget.getAttribute('data-server-epoch') || \"0\", 10);\n  var base = new Date(serverEpoch * 1000);\n  if (isNaN(base.getTime())) base = new Date();\n  base.setHours(0,0,0,0);\n\n  function nextWeekday(d){\n    var c = new Date(d.getTime());\n    while (c.getDay() === 0 || c.getDay() === 6) { \/\/ 0 Sun, 6 Sat\n      c.setDate(c.getDate() + 1);\n    }\n    return c;\n  }\n\n  function isoDate(d){\n    var mm = String(d.getMonth()+1).padStart(2,'0');\n    var dd = String(d.getDate()).padStart(2,'0');\n    return d.getFullYear() + '-' + mm + '-' + dd;\n  }\n\n  \/\/ compute min (server time) + DAYS_OUT, bump to next weekday if needed\n  var minDate = new Date(base);\n  minDate.setDate(minDate.getDate() + DAYS_OUT);\n  minDate = nextWeekday(minDate);\n\n  input.min = isoDate(minDate);\n  input.value = isoDate(minDate);\n\n  function validate(dateStr){\n    if(!dateStr) return { ok:false, msg: 'Please select a Scheduled In-Hands Date.' };\n    var sel = new Date(dateStr + 'T00:00:00');\n    if(isNaN(sel.getTime())) return { ok:false, msg: 'Selected date is invalid.' };\n    sel.setHours(0,0,0,0);\n    if(sel \u003c minDate) return { ok:false, msg: 'Selected date is earlier than the earliest available: ' + isoDate(minDate) + '.' , corrected: minDate };\n    if(sel.getDay() === 0 || sel.getDay() === 6) return { ok:false, msg: 'Weekends not allowed. Next business day: ' + isoDate(nextWeekday(sel)) + '.', corrected: nextWeekday(sel) };\n    return { ok:true };\n  }\n\n  function showError(message){\n    err.textContent = message;\n    err.style.display = 'block';\n  }\n  function hideError(){\n    err.textContent = '';\n    err.style.display = 'none';\n  }\n\n  function handleChange(){\n    var res = validate(input.value);\n    if(!res.ok){\n      showError(res.msg);\n      if(res.corrected) input.value = isoDate(res.corrected);\n    } else {\n      hideError();\n    }\n  }\n\n  input.addEventListener('change', handleChange);\n  input.addEventListener('blur', handleChange);\n\n  \/\/ Ensure validation blocks form submit (works with your existing Add to Cart)\n  var parentForm = input.closest('form');\n  if(parentForm){\n    parentForm.addEventListener('submit', function(e){\n      var res = validate(input.value);\n      if(!res.ok){\n        e.preventDefault();\n        showError(res.msg);\n        if(res.corrected) input.value = isoDate(res.corrected);\n        input.focus();\n        return false;\n      }\n    }, { capture:true });\n  }\n\n})();\n\u003c\/script\u003e \u003cscript\u003e\ndocument.addEventListener('DOMContentLoaded', function() {\n\n  const dateInput = document.getElementById('scheduled_date');\n  if (!dateInput) return;\n\n  \/\/ Detect any AJAX add-to-cart click\n  document.querySelectorAll('.product-form__submit, [data-add-to-cart], button[type=\"submit\"]').forEach(btn =\u003e {\n    btn.addEventListener('click', function(e) {\n\n      const selected = dateInput.value;\n      if (!selected) {\n        e.preventDefault();\n        alert(\"Please select your REQUIRED Scheduled In-Hands Date before continuing.\");\n        dateInput.focus();\n        return false;\n      }\n\n      \/\/ Intercept Shopify AJAX\n      document.addEventListener('cart:request-start', function(ev) {\n        if (!ev.detail || !ev.detail.body) return;\n\n        try {\n          let data = ev.detail.body;\n\n          \/\/ Inject the line item property\n          data.set(\"properties[Scheduled Date In-Hand]\", selected);\n\n        } catch (err) {\n          console.warn(\"Unable to inject Scheduled Date:\", err);\n        }\n      }, { once: true });\n\n    });\n  });\n\n});\n\u003c\/script\u003e\u003c\/p\u003e","brand":"Color Tech","offers":[{"title":"Default Title","offer_id":43319956766926,"sku":null,"price":32.8,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0618\/5562\/9518\/files\/FULL_ZIP_HOODIE_STONE_LOG0_FRONT.png?v=1767055012"},{"product_id":"stone-fab-design-2-stone-log0-graphic-tee","title":"STONE FAB DESIGN 2 1954 TRUCK GRAPHIC TEE","description":"\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e✅ \u003cstrong\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003eNL6210 \u003cmeta charset=\"utf-8\"\u003e \u003cspan\u003eRetail Cut. Elevated Comfort on a Classic Tee.\u003c\/span\u003e\u003c\/span\u003e\u003c\/strong\u003e\n\u003c\/h2\u003e\n\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e✅ \u003cstrong\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cspan\u003e4.3 oz. Combed Ring-Spun Cotton\/Polyester\u003c\/span\u003e.\u003c\/span\u003e\u003c\/strong\u003e\n\u003c\/h2\u003e\n\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e✅ \u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cstrong\u003e60% Cotton 40% \u003cmeta charset=\"utf-8\"\u003e\u003c\/strong\u003e\u003cstrong\u003ePolyester.\u003c\/strong\u003e\u003c\/span\u003e\n\u003c\/h2\u003e\n\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e✅ \u003cstrong\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003eFit: Retail Cut, for Oversized Fit we recommend size up.\u003c\/span\u003e\u003c\/strong\u003e\n\u003c\/h2\u003e\n\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e\n\u003cspan style=\"font-size: 1.75rem;\"\u003e✅ \u003c\/span\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cstrong style=\"font-size: 1.75rem;\"\u003e48 Minimum Total Quantity to Place Order\u003c\/strong\u003e\u003c\/span\u003e\n\u003c\/h2\u003e\n\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e✅ \u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cstrong\u003eDiscounts Applied Automatically\u003c\/strong\u003e at quantity breaks: 72, 144, 288, 576\u003c\/span\u003e\n\u003c\/h2\u003e\n\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e✅ \u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cstrong\u003ePricing includes \u003cmeta charset=\"utf-8\"\u003e\u003c\/strong\u003e\u003c\/span\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cstrong\u003eLogos Screen Print on Front and Back.  Custom Neck Labels, Individually Folded, Bagged\u003c\/strong\u003e\u003c\/span\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cstrong\u003e. Small through X-Large.\u003c\/strong\u003e\u003c\/span\u003e\n\u003c\/h2\u003e\n\u003ch3 style=\"margin-top: 1.5rem; font-size: 1.5rem; text-align: center;\"\u003e\n\u003cstrong\u003eNote:\u003c\/strong\u003e 2XL add $2.00   |   3XL add $3.00\u003cmeta charset=\"utf-8\"\u003e\n\u003c\/h3\u003e\n\u003ch3 style=\"margin-top: 1.5rem; font-size: 1.5rem; text-align: center;\"\u003e4XL add $4.00   |   5XL add 5.00 \u003c\/h3\u003e\n\u003ctable style=\"width: 90.121%; border-collapse: collapse; font-size: 1.5rem;\" height=\"200\"\u003e\n\u003cthead\u003e\n\u003ctr style=\"background-color: #f0f0f0;\"\u003e\n\u003cth style=\"padding: 0.15rem; width: 55.3535%; text-align: center;\"\u003eQuantity Range\u003c\/th\u003e\n\u003cth style=\"padding: 0.15rem; width: 35.1515%; text-align: center;\"\u003eCost Per\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr style=\"text-align: center;\"\u003e\n\u003ctd style=\"padding: 0.15em; width: 55.3535%;\"\u003e48–71\u003c\/td\u003e\n\u003ctd style=\"padding: 0.15rem; width: 35.1515%;\"\u003e$13.75\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"background-color: rgb(249, 249, 249); text-align: center;\"\u003e\n\u003ctd style=\"padding: 0.15em; width: 55.3535%;\"\u003e72–143\u003c\/td\u003e\n\u003ctd style=\"padding: 0.15rem; width: 35.1515%;\"\u003e$12.25\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"text-align: center;\"\u003e\n\u003ctd style=\"padding: 0.15rem; width: 55.3535%;\"\u003e144–287\u003c\/td\u003e\n\u003ctd style=\"padding: 0.15rem; width: 35.1515%;\"\u003e$10.75\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"background-color: rgb(249, 249, 249); text-align: center;\"\u003e\n\u003ctd style=\"padding: 0.15rem; width: 55.3535%;\"\u003e288–575\u003c\/td\u003e\n\u003ctd style=\"padding: 0.15rem; width: 35.1515%;\"\u003e$9.95\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"padding: 0.15rem; width: 55.3535%; text-align: center;\"\u003e576+\u003c\/td\u003e\n\u003ctd style=\"padding: 0.15rem; width: 35.1515%; text-align: center;\"\u003e$8.85\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003cdiv style=\"margin: 16px 0;\" data-server-epoch=\"{{ server_epoch }}\" id=\"sched-widget\"\u003e\n\u003cdiv style=\"color: #b00020; margin-top: 8px; display: none;\" role=\"alert\" id=\"sched-error\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cp\u003e\u003cscript\u003e\n(function(){\n  var DAYS_OUT = 15;\n  var widget = document.getElementById('sched-widget');\n  if (!widget) return;\n\n  var input = document.getElementById('scheduled_date');\n  var err = document.getElementById('sched-error');\n\n  var serverEpoch = parseInt(widget.getAttribute('data-server-epoch') || \"0\", 10);\n  var base = new Date(serverEpoch * 1000);\n  if (isNaN(base.getTime())) base = new Date();\n  base.setHours(0,0,0,0);\n\n  function nextWeekday(d){\n    var c = new Date(d.getTime());\n    while (c.getDay() === 0 || c.getDay() === 6) { \/\/ 0 Sun, 6 Sat\n      c.setDate(c.getDate() + 1);\n    }\n    return c;\n  }\n\n  function isoDate(d){\n    var mm = String(d.getMonth()+1).padStart(2,'0');\n    var dd = String(d.getDate()).padStart(2,'0');\n    return d.getFullYear() + '-' + mm + '-' + dd;\n  }\n\n  \/\/ compute min (server time) + DAYS_OUT, bump to next weekday if needed\n  var minDate = new Date(base);\n  minDate.setDate(minDate.getDate() + DAYS_OUT);\n  minDate = nextWeekday(minDate);\n\n  input.min = isoDate(minDate);\n  input.value = isoDate(minDate);\n\n  function validate(dateStr){\n    if(!dateStr) return { ok:false, msg: 'Please select a Scheduled In-Hands Date.' };\n    var sel = new Date(dateStr + 'T00:00:00');\n    if(isNaN(sel.getTime())) return { ok:false, msg: 'Selected date is invalid.' };\n    sel.setHours(0,0,0,0);\n    if(sel \u003c minDate) return { ok:false, msg: 'Selected date is earlier than the earliest available: ' + isoDate(minDate) + '.' , corrected: minDate };\n    if(sel.getDay() === 0 || sel.getDay() === 6) return { ok:false, msg: 'Weekends not allowed. Next business day: ' + isoDate(nextWeekday(sel)) + '.', corrected: nextWeekday(sel) };\n    return { ok:true };\n  }\n\n  function showError(message){\n    err.textContent = message;\n    err.style.display = 'block';\n  }\n  function hideError(){\n    err.textContent = '';\n    err.style.display = 'none';\n  }\n\n  function handleChange(){\n    var res = validate(input.value);\n    if(!res.ok){\n      showError(res.msg);\n      if(res.corrected) input.value = isoDate(res.corrected);\n    } else {\n      hideError();\n    }\n  }\n\n  input.addEventListener('change', handleChange);\n  input.addEventListener('blur', handleChange);\n\n  \/\/ Ensure validation blocks form submit (works with your existing Add to Cart)\n  var parentForm = input.closest('form');\n  if(parentForm){\n    parentForm.addEventListener('submit', function(e){\n      var res = validate(input.value);\n      if(!res.ok){\n        e.preventDefault();\n        showError(res.msg);\n        if(res.corrected) input.value = isoDate(res.corrected);\n        input.focus();\n        return false;\n      }\n    }, { capture:true });\n  }\n\n})();\n\u003c\/script\u003e \u003cscript\u003e\ndocument.addEventListener('DOMContentLoaded', function() {\n\n  const dateInput = document.getElementById('scheduled_date');\n  if (!dateInput) return;\n\n  \/\/ Detect any AJAX add-to-cart click\n  document.querySelectorAll('.product-form__submit, [data-add-to-cart], button[type=\"submit\"]').forEach(btn =\u003e {\n    btn.addEventListener('click', function(e) {\n\n      const selected = dateInput.value;\n      if (!selected) {\n        e.preventDefault();\n        alert(\"Please select your REQUIRED Scheduled In-Hands Date before continuing.\");\n        dateInput.focus();\n        return false;\n      }\n\n      \/\/ Intercept Shopify AJAX\n      document.addEventListener('cart:request-start', function(ev) {\n        if (!ev.detail || !ev.detail.body) return;\n\n        try {\n          let data = ev.detail.body;\n\n          \/\/ Inject the line item property\n          data.set(\"properties[Scheduled Date In-Hand]\", selected);\n\n        } catch (err) {\n          console.warn(\"Unable to inject Scheduled Date:\", err);\n        }\n      }, { once: true });\n\n    });\n  });\n\n});\n\u003c\/script\u003e\u003c\/p\u003e","brand":"Color Tech","offers":[{"title":"Default Title","offer_id":43329038319822,"sku":null,"price":12.25,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0618\/5562\/9518\/files\/DESIGN_TWO_54_TRUCK_LOG0_FRONT.png?v=1767038286"},{"product_id":"stone-fab-design-3-obs-truck-graphic-tee","title":"STONE FAB DESIGN 3 OBS TRUCK GRAPHIC TEE","description":"\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e✅ \u003cstrong\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003eNL6210 \u003cmeta charset=\"utf-8\"\u003e \u003cspan\u003eRetail Cut. Elevated Comfort on a Classic Tee.\u003c\/span\u003e\u003c\/span\u003e\u003c\/strong\u003e\n\u003c\/h2\u003e\n\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e✅ \u003cstrong\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cspan\u003e4.3 oz. Combed Ring-Spun Cotton\/Polyester\u003c\/span\u003e.\u003c\/span\u003e\u003c\/strong\u003e\n\u003c\/h2\u003e\n\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e✅ \u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cstrong\u003e60% Cotton 40% \u003cmeta charset=\"utf-8\"\u003e\u003c\/strong\u003e\u003cstrong\u003ePolyester.\u003c\/strong\u003e\u003c\/span\u003e\n\u003c\/h2\u003e\n\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e✅ \u003cstrong\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003eFit: Retail Cut, for Oversized Fit we recommend size up.\u003c\/span\u003e\u003c\/strong\u003e\n\u003c\/h2\u003e\n\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e\n\u003cspan style=\"font-size: 1.75rem;\"\u003e✅ \u003c\/span\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cstrong style=\"font-size: 1.75rem;\"\u003e48 Minimum Total Quantity to Place Order\u003c\/strong\u003e\u003c\/span\u003e\n\u003c\/h2\u003e\n\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e✅ \u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cstrong\u003eDiscounts Applied Automatically\u003c\/strong\u003e at quantity breaks: 72, 144, 288, 576\u003c\/span\u003e\n\u003c\/h2\u003e\n\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e✅ \u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cstrong\u003ePricing includes \u003cmeta charset=\"utf-8\"\u003e\u003c\/strong\u003e\u003c\/span\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cstrong\u003eLogos Screen Print on Front and Back.  Custom Neck Labels, Individually Folded, Bagged\u003c\/strong\u003e\u003c\/span\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cstrong\u003e. Small through X-Large.\u003c\/strong\u003e\u003c\/span\u003e\n\u003c\/h2\u003e\n\u003ch3 style=\"margin-top: 1.5rem; font-size: 1.5rem; text-align: center;\"\u003e\n\u003cstrong\u003eNote:\u003c\/strong\u003e 2XL add $2.00   |   3XL add $3.00\u003cmeta charset=\"utf-8\"\u003e\n\u003c\/h3\u003e\n\u003ch3 style=\"margin-top: 1.5rem; font-size: 1.5rem; text-align: center;\"\u003e4XL add $4.00   |   5XL add 5.00 \u003c\/h3\u003e\n\u003ctable style=\"width: 90.121%; border-collapse: collapse; font-size: 1.5rem;\" height=\"200\"\u003e\n\u003cthead\u003e\n\u003ctr style=\"background-color: #f0f0f0;\"\u003e\n\u003cth style=\"padding: 0.15rem; width: 55.3535%; text-align: center;\"\u003eQuantity Range\u003c\/th\u003e\n\u003cth style=\"padding: 0.15rem; width: 35.1515%; text-align: center;\"\u003eCost Per\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr style=\"text-align: center;\"\u003e\n\u003ctd style=\"padding: 0.15em; width: 55.3535%;\"\u003e48–71\u003c\/td\u003e\n\u003ctd style=\"padding: 0.15rem; width: 35.1515%;\"\u003e$13.75\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"background-color: rgb(249, 249, 249); text-align: center;\"\u003e\n\u003ctd style=\"padding: 0.15em; width: 55.3535%;\"\u003e72–143\u003c\/td\u003e\n\u003ctd style=\"padding: 0.15rem; width: 35.1515%;\"\u003e$12.25\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"text-align: center;\"\u003e\n\u003ctd style=\"padding: 0.15rem; width: 55.3535%;\"\u003e144–287\u003c\/td\u003e\n\u003ctd style=\"padding: 0.15rem; width: 35.1515%;\"\u003e$10.75\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"background-color: rgb(249, 249, 249); text-align: center;\"\u003e\n\u003ctd style=\"padding: 0.15rem; width: 55.3535%;\"\u003e288–575\u003c\/td\u003e\n\u003ctd style=\"padding: 0.15rem; width: 35.1515%;\"\u003e$9.95\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"padding: 0.15rem; width: 55.3535%; text-align: center;\"\u003e576+\u003c\/td\u003e\n\u003ctd style=\"padding: 0.15rem; width: 35.1515%; text-align: center;\"\u003e$8.85\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003cdiv style=\"margin: 16px 0;\" data-server-epoch=\"{{ server_epoch }}\" id=\"sched-widget\"\u003e\n\u003cdiv style=\"color: #b00020; margin-top: 8px; display: none;\" role=\"alert\" id=\"sched-error\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cp\u003e\u003cscript\u003e\n(function(){\n  var DAYS_OUT = 15;\n  var widget = document.getElementById('sched-widget');\n  if (!widget) return;\n\n  var input = document.getElementById('scheduled_date');\n  var err = document.getElementById('sched-error');\n\n  var serverEpoch = parseInt(widget.getAttribute('data-server-epoch') || \"0\", 10);\n  var base = new Date(serverEpoch * 1000);\n  if (isNaN(base.getTime())) base = new Date();\n  base.setHours(0,0,0,0);\n\n  function nextWeekday(d){\n    var c = new Date(d.getTime());\n    while (c.getDay() === 0 || c.getDay() === 6) { \/\/ 0 Sun, 6 Sat\n      c.setDate(c.getDate() + 1);\n    }\n    return c;\n  }\n\n  function isoDate(d){\n    var mm = String(d.getMonth()+1).padStart(2,'0');\n    var dd = String(d.getDate()).padStart(2,'0');\n    return d.getFullYear() + '-' + mm + '-' + dd;\n  }\n\n  \/\/ compute min (server time) + DAYS_OUT, bump to next weekday if needed\n  var minDate = new Date(base);\n  minDate.setDate(minDate.getDate() + DAYS_OUT);\n  minDate = nextWeekday(minDate);\n\n  input.min = isoDate(minDate);\n  input.value = isoDate(minDate);\n\n  function validate(dateStr){\n    if(!dateStr) return { ok:false, msg: 'Please select a Scheduled In-Hands Date.' };\n    var sel = new Date(dateStr + 'T00:00:00');\n    if(isNaN(sel.getTime())) return { ok:false, msg: 'Selected date is invalid.' };\n    sel.setHours(0,0,0,0);\n    if(sel \u003c minDate) return { ok:false, msg: 'Selected date is earlier than the earliest available: ' + isoDate(minDate) + '.' , corrected: minDate };\n    if(sel.getDay() === 0 || sel.getDay() === 6) return { ok:false, msg: 'Weekends not allowed. Next business day: ' + isoDate(nextWeekday(sel)) + '.', corrected: nextWeekday(sel) };\n    return { ok:true };\n  }\n\n  function showError(message){\n    err.textContent = message;\n    err.style.display = 'block';\n  }\n  function hideError(){\n    err.textContent = '';\n    err.style.display = 'none';\n  }\n\n  function handleChange(){\n    var res = validate(input.value);\n    if(!res.ok){\n      showError(res.msg);\n      if(res.corrected) input.value = isoDate(res.corrected);\n    } else {\n      hideError();\n    }\n  }\n\n  input.addEventListener('change', handleChange);\n  input.addEventListener('blur', handleChange);\n\n  \/\/ Ensure validation blocks form submit (works with your existing Add to Cart)\n  var parentForm = input.closest('form');\n  if(parentForm){\n    parentForm.addEventListener('submit', function(e){\n      var res = validate(input.value);\n      if(!res.ok){\n        e.preventDefault();\n        showError(res.msg);\n        if(res.corrected) input.value = isoDate(res.corrected);\n        input.focus();\n        return false;\n      }\n    }, { capture:true });\n  }\n\n})();\n\u003c\/script\u003e \u003cscript\u003e\ndocument.addEventListener('DOMContentLoaded', function() {\n\n  const dateInput = document.getElementById('scheduled_date');\n  if (!dateInput) return;\n\n  \/\/ Detect any AJAX add-to-cart click\n  document.querySelectorAll('.product-form__submit, [data-add-to-cart], button[type=\"submit\"]').forEach(btn =\u003e {\n    btn.addEventListener('click', function(e) {\n\n      const selected = dateInput.value;\n      if (!selected) {\n        e.preventDefault();\n        alert(\"Please select your REQUIRED Scheduled In-Hands Date before continuing.\");\n        dateInput.focus();\n        return false;\n      }\n\n      \/\/ Intercept Shopify AJAX\n      document.addEventListener('cart:request-start', function(ev) {\n        if (!ev.detail || !ev.detail.body) return;\n\n        try {\n          let data = ev.detail.body;\n\n          \/\/ Inject the line item property\n          data.set(\"properties[Scheduled Date In-Hand]\", selected);\n\n        } catch (err) {\n          console.warn(\"Unable to inject Scheduled Date:\", err);\n        }\n      }, { once: true });\n\n    });\n  });\n\n});\n\u003c\/script\u003e\u003c\/p\u003e","brand":"Color Tech","offers":[{"title":"Default Title","offer_id":43329060045006,"sku":null,"price":12.25,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0618\/5562\/9518\/files\/DESIGN_THREE_OBS_TRUCK_BACK.png?v=1767039109"},{"product_id":"stone-fab-design-4-bryce-single-cab-obs-truck-graphic-tee","title":"STONE FAB DESIGN 4 \"BRYCE\" SINGLE CAB OBS TRUCK GRAPHIC TEE","description":"\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e✅ \u003cstrong\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003eNL6210 \u003cmeta charset=\"utf-8\"\u003e \u003cspan\u003eRetail Cut. Elevated Comfort on a Classic Tee.\u003c\/span\u003e\u003c\/span\u003e\u003c\/strong\u003e\n\u003c\/h2\u003e\n\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e✅ \u003cstrong\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cspan\u003e4.3 oz. Combed Ring-Spun Cotton\/Polyester\u003c\/span\u003e.\u003c\/span\u003e\u003c\/strong\u003e\n\u003c\/h2\u003e\n\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e✅ \u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cstrong\u003e60% Cotton 40% \u003cmeta charset=\"utf-8\"\u003e\u003c\/strong\u003e\u003cstrong\u003ePolyester.\u003c\/strong\u003e\u003c\/span\u003e\n\u003c\/h2\u003e\n\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e✅ \u003cstrong\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003eFit: Retail Cut, for Oversized Fit we recommend size up.\u003c\/span\u003e\u003c\/strong\u003e\n\u003c\/h2\u003e\n\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e\n\u003cspan style=\"font-size: 1.75rem;\"\u003e✅ \u003c\/span\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cstrong style=\"font-size: 1.75rem;\"\u003e48 Minimum Total Quantity to Place Order\u003c\/strong\u003e\u003c\/span\u003e\n\u003c\/h2\u003e\n\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e✅ \u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cstrong\u003eDiscounts Applied Automatically\u003c\/strong\u003e at quantity breaks: 72, 144, 288, 576\u003c\/span\u003e\n\u003c\/h2\u003e\n\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e✅ \u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cstrong\u003ePricing includes \u003cmeta charset=\"utf-8\"\u003e\u003c\/strong\u003e\u003c\/span\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cstrong\u003eLogos Screen Print on Front and Back.  Custom Neck Labels, Individually Folded, Bagged\u003c\/strong\u003e\u003c\/span\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cstrong\u003e. Small through X-Large.\u003c\/strong\u003e\u003c\/span\u003e\n\u003c\/h2\u003e\n\u003ch3 style=\"margin-top: 1.5rem; font-size: 1.5rem; text-align: center;\"\u003e\n\u003cstrong\u003eNote:\u003c\/strong\u003e 2XL add $2.00   |   3XL add $3.00\u003cmeta charset=\"utf-8\"\u003e\n\u003c\/h3\u003e\n\u003ch3 style=\"margin-top: 1.5rem; font-size: 1.5rem; text-align: center;\"\u003e4XL add $4.00   |   5XL add 5.00 \u003c\/h3\u003e\n\u003ctable style=\"width: 90.121%; border-collapse: collapse; font-size: 1.5rem;\" height=\"200\"\u003e\n\u003cthead\u003e\n\u003ctr style=\"background-color: #f0f0f0;\"\u003e\n\u003cth style=\"padding: 0.15rem; width: 55.3535%; text-align: center;\"\u003eQuantity Range\u003c\/th\u003e\n\u003cth style=\"padding: 0.15rem; width: 35.1515%; text-align: center;\"\u003eCost Per\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr style=\"text-align: center;\"\u003e\n\u003ctd style=\"padding: 0.15em; width: 55.3535%;\"\u003e48–71\u003c\/td\u003e\n\u003ctd style=\"padding: 0.15rem; width: 35.1515%;\"\u003e$13.75\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"background-color: rgb(249, 249, 249); text-align: center;\"\u003e\n\u003ctd style=\"padding: 0.15em; width: 55.3535%;\"\u003e72–143\u003c\/td\u003e\n\u003ctd style=\"padding: 0.15rem; width: 35.1515%;\"\u003e$12.25\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"text-align: center;\"\u003e\n\u003ctd style=\"padding: 0.15rem; width: 55.3535%;\"\u003e144–287\u003c\/td\u003e\n\u003ctd style=\"padding: 0.15rem; width: 35.1515%;\"\u003e$10.75\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"background-color: rgb(249, 249, 249); text-align: center;\"\u003e\n\u003ctd style=\"padding: 0.15rem; width: 55.3535%;\"\u003e288–575\u003c\/td\u003e\n\u003ctd style=\"padding: 0.15rem; width: 35.1515%;\"\u003e$9.95\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"padding: 0.15rem; width: 55.3535%; text-align: center;\"\u003e576+\u003c\/td\u003e\n\u003ctd style=\"padding: 0.15rem; width: 35.1515%; text-align: center;\"\u003e$8.85\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003cdiv style=\"margin: 16px 0;\" data-server-epoch=\"{{ server_epoch }}\" id=\"sched-widget\"\u003e\n\u003cdiv style=\"color: #b00020; margin-top: 8px; display: none;\" role=\"alert\" id=\"sched-error\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cp\u003e\u003cscript\u003e\n(function(){\n  var DAYS_OUT = 15;\n  var widget = document.getElementById('sched-widget');\n  if (!widget) return;\n\n  var input = document.getElementById('scheduled_date');\n  var err = document.getElementById('sched-error');\n\n  var serverEpoch = parseInt(widget.getAttribute('data-server-epoch') || \"0\", 10);\n  var base = new Date(serverEpoch * 1000);\n  if (isNaN(base.getTime())) base = new Date();\n  base.setHours(0,0,0,0);\n\n  function nextWeekday(d){\n    var c = new Date(d.getTime());\n    while (c.getDay() === 0 || c.getDay() === 6) { \/\/ 0 Sun, 6 Sat\n      c.setDate(c.getDate() + 1);\n    }\n    return c;\n  }\n\n  function isoDate(d){\n    var mm = String(d.getMonth()+1).padStart(2,'0');\n    var dd = String(d.getDate()).padStart(2,'0');\n    return d.getFullYear() + '-' + mm + '-' + dd;\n  }\n\n  \/\/ compute min (server time) + DAYS_OUT, bump to next weekday if needed\n  var minDate = new Date(base);\n  minDate.setDate(minDate.getDate() + DAYS_OUT);\n  minDate = nextWeekday(minDate);\n\n  input.min = isoDate(minDate);\n  input.value = isoDate(minDate);\n\n  function validate(dateStr){\n    if(!dateStr) return { ok:false, msg: 'Please select a Scheduled In-Hands Date.' };\n    var sel = new Date(dateStr + 'T00:00:00');\n    if(isNaN(sel.getTime())) return { ok:false, msg: 'Selected date is invalid.' };\n    sel.setHours(0,0,0,0);\n    if(sel \u003c minDate) return { ok:false, msg: 'Selected date is earlier than the earliest available: ' + isoDate(minDate) + '.' , corrected: minDate };\n    if(sel.getDay() === 0 || sel.getDay() === 6) return { ok:false, msg: 'Weekends not allowed. Next business day: ' + isoDate(nextWeekday(sel)) + '.', corrected: nextWeekday(sel) };\n    return { ok:true };\n  }\n\n  function showError(message){\n    err.textContent = message;\n    err.style.display = 'block';\n  }\n  function hideError(){\n    err.textContent = '';\n    err.style.display = 'none';\n  }\n\n  function handleChange(){\n    var res = validate(input.value);\n    if(!res.ok){\n      showError(res.msg);\n      if(res.corrected) input.value = isoDate(res.corrected);\n    } else {\n      hideError();\n    }\n  }\n\n  input.addEventListener('change', handleChange);\n  input.addEventListener('blur', handleChange);\n\n  \/\/ Ensure validation blocks form submit (works with your existing Add to Cart)\n  var parentForm = input.closest('form');\n  if(parentForm){\n    parentForm.addEventListener('submit', function(e){\n      var res = validate(input.value);\n      if(!res.ok){\n        e.preventDefault();\n        showError(res.msg);\n        if(res.corrected) input.value = isoDate(res.corrected);\n        input.focus();\n        return false;\n      }\n    }, { capture:true });\n  }\n\n})();\n\u003c\/script\u003e \u003cscript\u003e\ndocument.addEventListener('DOMContentLoaded', function() {\n\n  const dateInput = document.getElementById('scheduled_date');\n  if (!dateInput) return;\n\n  \/\/ Detect any AJAX add-to-cart click\n  document.querySelectorAll('.product-form__submit, [data-add-to-cart], button[type=\"submit\"]').forEach(btn =\u003e {\n    btn.addEventListener('click', function(e) {\n\n      const selected = dateInput.value;\n      if (!selected) {\n        e.preventDefault();\n        alert(\"Please select your REQUIRED Scheduled In-Hands Date before continuing.\");\n        dateInput.focus();\n        return false;\n      }\n\n      \/\/ Intercept Shopify AJAX\n      document.addEventListener('cart:request-start', function(ev) {\n        if (!ev.detail || !ev.detail.body) return;\n\n        try {\n          let data = ev.detail.body;\n\n          \/\/ Inject the line item property\n          data.set(\"properties[Scheduled Date In-Hand]\", selected);\n\n        } catch (err) {\n          console.warn(\"Unable to inject Scheduled Date:\", err);\n        }\n      }, { once: true });\n\n    });\n  });\n\n});\n\u003c\/script\u003e\u003c\/p\u003e","brand":"Color Tech","offers":[{"title":"Default Title","offer_id":43329063780558,"sku":null,"price":12.25,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0618\/5562\/9518\/files\/DESIGN_FOUR_BRYCE_SINGLE_CAB_BACK.psd.png?v=1767039747"},{"product_id":"stone-fab-design-5-c10-truck-graphic-tee","title":"STONE FAB DESIGN 5 C10 TRUCK GRAPHIC TEE","description":"\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e✅ \u003cstrong\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003eNL6210 \u003cmeta charset=\"utf-8\"\u003e \u003cspan\u003eRetail Cut. Elevated Comfort on a Classic Tee.\u003c\/span\u003e\u003c\/span\u003e\u003c\/strong\u003e\n\u003c\/h2\u003e\n\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e✅ \u003cstrong\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cspan\u003e4.3 oz. Combed Ring-Spun Cotton\/Polyester\u003c\/span\u003e.\u003c\/span\u003e\u003c\/strong\u003e\n\u003c\/h2\u003e\n\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e✅ \u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cstrong\u003e60% Cotton 40% \u003cmeta charset=\"utf-8\"\u003e\u003c\/strong\u003e\u003cstrong\u003ePolyester.\u003c\/strong\u003e\u003c\/span\u003e\n\u003c\/h2\u003e\n\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e✅ \u003cstrong\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003eFit: Retail Cut, for Oversized Fit we recommend size up.\u003c\/span\u003e\u003c\/strong\u003e\n\u003c\/h2\u003e\n\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e\n\u003cspan style=\"font-size: 1.75rem;\"\u003e✅ \u003c\/span\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cstrong style=\"font-size: 1.75rem;\"\u003e48 Minimum Total Quantity to Place Order\u003c\/strong\u003e\u003c\/span\u003e\n\u003c\/h2\u003e\n\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e✅ \u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cstrong\u003eDiscounts Applied Automatically\u003c\/strong\u003e at quantity breaks: 72, 144, 288, 576\u003c\/span\u003e\n\u003c\/h2\u003e\n\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e✅ \u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cstrong\u003ePricing includes \u003cmeta charset=\"utf-8\"\u003e\u003c\/strong\u003e\u003c\/span\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cstrong\u003eLogos Screen Print on Front and Back.  Custom Neck Labels, Individually Folded, Bagged\u003c\/strong\u003e\u003c\/span\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cstrong\u003e. Small through X-Large.\u003c\/strong\u003e\u003c\/span\u003e\n\u003c\/h2\u003e\n\u003ch3 style=\"margin-top: 1.5rem; font-size: 1.5rem; text-align: center;\"\u003e\n\u003cstrong\u003eNote:\u003c\/strong\u003e 2XL add $2.00   |   3XL add $3.00\u003cmeta charset=\"utf-8\"\u003e\n\u003c\/h3\u003e\n\u003ch3 style=\"margin-top: 1.5rem; font-size: 1.5rem; text-align: center;\"\u003e4XL add $4.00   |   5XL add 5.00 \u003c\/h3\u003e\n\u003ctable style=\"width: 90.121%; border-collapse: collapse; font-size: 1.5rem;\" height=\"200\"\u003e\n\u003cthead\u003e\n\u003ctr style=\"background-color: #f0f0f0;\"\u003e\n\u003cth style=\"padding: 0.15rem; width: 55.3535%; text-align: center;\"\u003eQuantity Range\u003c\/th\u003e\n\u003cth style=\"padding: 0.15rem; width: 35.1515%; text-align: center;\"\u003eCost Per\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr style=\"text-align: center;\"\u003e\n\u003ctd style=\"padding: 0.15em; width: 55.3535%;\"\u003e48–71\u003c\/td\u003e\n\u003ctd style=\"padding: 0.15rem; width: 35.1515%;\"\u003e$13.75\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"background-color: rgb(249, 249, 249); text-align: center;\"\u003e\n\u003ctd style=\"padding: 0.15em; width: 55.3535%;\"\u003e72–143\u003c\/td\u003e\n\u003ctd style=\"padding: 0.15rem; width: 35.1515%;\"\u003e$12.25\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"text-align: center;\"\u003e\n\u003ctd style=\"padding: 0.15rem; width: 55.3535%;\"\u003e144–287\u003c\/td\u003e\n\u003ctd style=\"padding: 0.15rem; width: 35.1515%;\"\u003e$10.75\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"background-color: rgb(249, 249, 249); text-align: center;\"\u003e\n\u003ctd style=\"padding: 0.15rem; width: 55.3535%;\"\u003e288–575\u003c\/td\u003e\n\u003ctd style=\"padding: 0.15rem; width: 35.1515%;\"\u003e$9.95\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"padding: 0.15rem; width: 55.3535%; text-align: center;\"\u003e576+\u003c\/td\u003e\n\u003ctd style=\"padding: 0.15rem; width: 35.1515%; text-align: center;\"\u003e$8.85\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003cdiv style=\"margin: 16px 0;\" data-server-epoch=\"{{ server_epoch }}\" id=\"sched-widget\"\u003e\n\u003cdiv style=\"color: #b00020; margin-top: 8px; display: none;\" role=\"alert\" id=\"sched-error\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cp\u003e\u003cscript\u003e\n(function(){\n  var DAYS_OUT = 15;\n  var widget = document.getElementById('sched-widget');\n  if (!widget) return;\n\n  var input = document.getElementById('scheduled_date');\n  var err = document.getElementById('sched-error');\n\n  var serverEpoch = parseInt(widget.getAttribute('data-server-epoch') || \"0\", 10);\n  var base = new Date(serverEpoch * 1000);\n  if (isNaN(base.getTime())) base = new Date();\n  base.setHours(0,0,0,0);\n\n  function nextWeekday(d){\n    var c = new Date(d.getTime());\n    while (c.getDay() === 0 || c.getDay() === 6) { \/\/ 0 Sun, 6 Sat\n      c.setDate(c.getDate() + 1);\n    }\n    return c;\n  }\n\n  function isoDate(d){\n    var mm = String(d.getMonth()+1).padStart(2,'0');\n    var dd = String(d.getDate()).padStart(2,'0');\n    return d.getFullYear() + '-' + mm + '-' + dd;\n  }\n\n  \/\/ compute min (server time) + DAYS_OUT, bump to next weekday if needed\n  var minDate = new Date(base);\n  minDate.setDate(minDate.getDate() + DAYS_OUT);\n  minDate = nextWeekday(minDate);\n\n  input.min = isoDate(minDate);\n  input.value = isoDate(minDate);\n\n  function validate(dateStr){\n    if(!dateStr) return { ok:false, msg: 'Please select a Scheduled In-Hands Date.' };\n    var sel = new Date(dateStr + 'T00:00:00');\n    if(isNaN(sel.getTime())) return { ok:false, msg: 'Selected date is invalid.' };\n    sel.setHours(0,0,0,0);\n    if(sel \u003c minDate) return { ok:false, msg: 'Selected date is earlier than the earliest available: ' + isoDate(minDate) + '.' , corrected: minDate };\n    if(sel.getDay() === 0 || sel.getDay() === 6) return { ok:false, msg: 'Weekends not allowed. Next business day: ' + isoDate(nextWeekday(sel)) + '.', corrected: nextWeekday(sel) };\n    return { ok:true };\n  }\n\n  function showError(message){\n    err.textContent = message;\n    err.style.display = 'block';\n  }\n  function hideError(){\n    err.textContent = '';\n    err.style.display = 'none';\n  }\n\n  function handleChange(){\n    var res = validate(input.value);\n    if(!res.ok){\n      showError(res.msg);\n      if(res.corrected) input.value = isoDate(res.corrected);\n    } else {\n      hideError();\n    }\n  }\n\n  input.addEventListener('change', handleChange);\n  input.addEventListener('blur', handleChange);\n\n  \/\/ Ensure validation blocks form submit (works with your existing Add to Cart)\n  var parentForm = input.closest('form');\n  if(parentForm){\n    parentForm.addEventListener('submit', function(e){\n      var res = validate(input.value);\n      if(!res.ok){\n        e.preventDefault();\n        showError(res.msg);\n        if(res.corrected) input.value = isoDate(res.corrected);\n        input.focus();\n        return false;\n      }\n    }, { capture:true });\n  }\n\n})();\n\u003c\/script\u003e \u003cscript\u003e\ndocument.addEventListener('DOMContentLoaded', function() {\n\n  const dateInput = document.getElementById('scheduled_date');\n  if (!dateInput) return;\n\n  \/\/ Detect any AJAX add-to-cart click\n  document.querySelectorAll('.product-form__submit, [data-add-to-cart], button[type=\"submit\"]').forEach(btn =\u003e {\n    btn.addEventListener('click', function(e) {\n\n      const selected = dateInput.value;\n      if (!selected) {\n        e.preventDefault();\n        alert(\"Please select your REQUIRED Scheduled In-Hands Date before continuing.\");\n        dateInput.focus();\n        return false;\n      }\n\n      \/\/ Intercept Shopify AJAX\n      document.addEventListener('cart:request-start', function(ev) {\n        if (!ev.detail || !ev.detail.body) return;\n\n        try {\n          let data = ev.detail.body;\n\n          \/\/ Inject the line item property\n          data.set(\"properties[Scheduled Date In-Hand]\", selected);\n\n        } catch (err) {\n          console.warn(\"Unable to inject Scheduled Date:\", err);\n        }\n      }, { once: true });\n\n    });\n  });\n\n});\n\u003c\/script\u003e\u003c\/p\u003e","brand":"Color Tech","offers":[{"title":"Default Title","offer_id":43329078395086,"sku":null,"price":12.25,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0618\/5562\/9518\/files\/DESIGN_FIVE_C10_BACK.png?v=1767040215"},{"product_id":"stone-fab-design-1-2-stone-logo-graphic-tee","title":"STONE FAB DESIGN 1 STONE LOGO GRAPHIC TEE","description":"\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e✅ \u003cstrong\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003eNL6210 \u003cmeta charset=\"utf-8\"\u003e \u003cspan\u003eRetail Cut. Elevated Comfort on a Classic Tee.\u003c\/span\u003e\u003c\/span\u003e\u003c\/strong\u003e\n\u003c\/h2\u003e\n\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e✅ \u003cstrong\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cspan\u003e4.3 oz. Combed Ring-Spun Cotton\/Polyester\u003c\/span\u003e.\u003c\/span\u003e\u003c\/strong\u003e\n\u003c\/h2\u003e\n\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e✅ \u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cstrong\u003e60% Cotton 40% \u003cmeta charset=\"utf-8\"\u003e\u003c\/strong\u003e\u003cstrong\u003ePolyester.\u003c\/strong\u003e\u003c\/span\u003e\n\u003c\/h2\u003e\n\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e✅ \u003cstrong\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003eFit: Retail Cut, for Oversized Fit we recommend size up.\u003c\/span\u003e\u003c\/strong\u003e\n\u003c\/h2\u003e\n\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e\n\u003cspan style=\"font-size: 1.75rem;\"\u003e✅ \u003c\/span\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cstrong style=\"font-size: 1.75rem;\"\u003e48 Minimum Total Quantity to Place Order\u003c\/strong\u003e\u003c\/span\u003e\n\u003c\/h2\u003e\n\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e✅ \u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cstrong\u003eDiscounts Applied Automatically\u003c\/strong\u003e at quantity breaks: 72, 144, 288, 576\u003c\/span\u003e\n\u003c\/h2\u003e\n\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e✅ \u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cstrong\u003ePricing includes \u003cmeta charset=\"utf-8\"\u003e\u003c\/strong\u003e\u003c\/span\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cstrong\u003eLogos Screen Print on Front and Back.  Custom Neck Labels, Individually Folded, Bagged\u003c\/strong\u003e\u003c\/span\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cstrong\u003e. Small through X-Large.\u003c\/strong\u003e\u003c\/span\u003e\n\u003c\/h2\u003e\n\u003ch3 style=\"margin-top: 1.5rem; font-size: 1.5rem; text-align: center;\"\u003e\n\u003cstrong\u003eNote:\u003c\/strong\u003e 2XL add $2.00   |   3XL add $3.00\u003cmeta charset=\"utf-8\"\u003e\n\u003c\/h3\u003e\n\u003ch3 style=\"margin-top: 1.5rem; font-size: 1.5rem; text-align: center;\"\u003e4XL add $4.00   |   5XL add 5.00 \u003c\/h3\u003e\n\u003ctable style=\"width: 90.121%; border-collapse: collapse; font-size: 1.5rem;\" height=\"200\"\u003e\n\u003cthead\u003e\n\u003ctr style=\"background-color: #f0f0f0;\"\u003e\n\u003cth style=\"padding: 0.15rem; width: 55.3535%; text-align: center;\"\u003eQuantity Range\u003c\/th\u003e\n\u003cth style=\"padding: 0.15rem; width: 35.1515%; text-align: center;\"\u003eCost Per\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr style=\"text-align: center;\"\u003e\n\u003ctd style=\"padding: 0.15em; width: 55.3535%;\"\u003e48–71\u003c\/td\u003e\n\u003ctd style=\"padding: 0.15rem; width: 35.1515%;\"\u003e$13.75\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"background-color: rgb(249, 249, 249); text-align: center;\"\u003e\n\u003ctd style=\"padding: 0.15em; width: 55.3535%;\"\u003e72–143\u003c\/td\u003e\n\u003ctd style=\"padding: 0.15rem; width: 35.1515%;\"\u003e$12.25\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"text-align: center;\"\u003e\n\u003ctd style=\"padding: 0.15rem; width: 55.3535%;\"\u003e144–287\u003c\/td\u003e\n\u003ctd style=\"padding: 0.15rem; width: 35.1515%;\"\u003e$10.75\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"background-color: rgb(249, 249, 249); text-align: center;\"\u003e\n\u003ctd style=\"padding: 0.15rem; width: 55.3535%;\"\u003e288–575\u003c\/td\u003e\n\u003ctd style=\"padding: 0.15rem; width: 35.1515%;\"\u003e$9.95\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"padding: 0.15rem; width: 55.3535%; text-align: center;\"\u003e576+\u003c\/td\u003e\n\u003ctd style=\"padding: 0.15rem; width: 35.1515%; text-align: center;\"\u003e$8.85\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003cdiv style=\"margin: 16px 0;\" data-server-epoch=\"{{ server_epoch }}\" id=\"sched-widget\"\u003e\n\u003cdiv style=\"color: #b00020; margin-top: 8px; display: none;\" role=\"alert\" id=\"sched-error\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cp\u003e\u003cscript\u003e\n(function(){\n  var DAYS_OUT = 15;\n  var widget = document.getElementById('sched-widget');\n  if (!widget) return;\n\n  var input = document.getElementById('scheduled_date');\n  var err = document.getElementById('sched-error');\n\n  var serverEpoch = parseInt(widget.getAttribute('data-server-epoch') || \"0\", 10);\n  var base = new Date(serverEpoch * 1000);\n  if (isNaN(base.getTime())) base = new Date();\n  base.setHours(0,0,0,0);\n\n  function nextWeekday(d){\n    var c = new Date(d.getTime());\n    while (c.getDay() === 0 || c.getDay() === 6) { \/\/ 0 Sun, 6 Sat\n      c.setDate(c.getDate() + 1);\n    }\n    return c;\n  }\n\n  function isoDate(d){\n    var mm = String(d.getMonth()+1).padStart(2,'0');\n    var dd = String(d.getDate()).padStart(2,'0');\n    return d.getFullYear() + '-' + mm + '-' + dd;\n  }\n\n  \/\/ compute min (server time) + DAYS_OUT, bump to next weekday if needed\n  var minDate = new Date(base);\n  minDate.setDate(minDate.getDate() + DAYS_OUT);\n  minDate = nextWeekday(minDate);\n\n  input.min = isoDate(minDate);\n  input.value = isoDate(minDate);\n\n  function validate(dateStr){\n    if(!dateStr) return { ok:false, msg: 'Please select a Scheduled In-Hands Date.' };\n    var sel = new Date(dateStr + 'T00:00:00');\n    if(isNaN(sel.getTime())) return { ok:false, msg: 'Selected date is invalid.' };\n    sel.setHours(0,0,0,0);\n    if(sel \u003c minDate) return { ok:false, msg: 'Selected date is earlier than the earliest available: ' + isoDate(minDate) + '.' , corrected: minDate };\n    if(sel.getDay() === 0 || sel.getDay() === 6) return { ok:false, msg: 'Weekends not allowed. Next business day: ' + isoDate(nextWeekday(sel)) + '.', corrected: nextWeekday(sel) };\n    return { ok:true };\n  }\n\n  function showError(message){\n    err.textContent = message;\n    err.style.display = 'block';\n  }\n  function hideError(){\n    err.textContent = '';\n    err.style.display = 'none';\n  }\n\n  function handleChange(){\n    var res = validate(input.value);\n    if(!res.ok){\n      showError(res.msg);\n      if(res.corrected) input.value = isoDate(res.corrected);\n    } else {\n      hideError();\n    }\n  }\n\n  input.addEventListener('change', handleChange);\n  input.addEventListener('blur', handleChange);\n\n  \/\/ Ensure validation blocks form submit (works with your existing Add to Cart)\n  var parentForm = input.closest('form');\n  if(parentForm){\n    parentForm.addEventListener('submit', function(e){\n      var res = validate(input.value);\n      if(!res.ok){\n        e.preventDefault();\n        showError(res.msg);\n        if(res.corrected) input.value = isoDate(res.corrected);\n        input.focus();\n        return false;\n      }\n    }, { capture:true });\n  }\n\n})();\n\u003c\/script\u003e \u003cscript\u003e\ndocument.addEventListener('DOMContentLoaded', function() {\n\n  const dateInput = document.getElementById('scheduled_date');\n  if (!dateInput) return;\n\n  \/\/ Detect any AJAX add-to-cart click\n  document.querySelectorAll('.product-form__submit, [data-add-to-cart], button[type=\"submit\"]').forEach(btn =\u003e {\n    btn.addEventListener('click', function(e) {\n\n      const selected = dateInput.value;\n      if (!selected) {\n        e.preventDefault();\n        alert(\"Please select your REQUIRED Scheduled In-Hands Date before continuing.\");\n        dateInput.focus();\n        return false;\n      }\n\n      \/\/ Intercept Shopify AJAX\n      document.addEventListener('cart:request-start', function(ev) {\n        if (!ev.detail || !ev.detail.body) return;\n\n        try {\n          let data = ev.detail.body;\n\n          \/\/ Inject the line item property\n          data.set(\"properties[Scheduled Date In-Hand]\", selected);\n\n        } catch (err) {\n          console.warn(\"Unable to inject Scheduled Date:\", err);\n        }\n      }, { once: true });\n\n    });\n  });\n\n});\n\u003c\/script\u003e\u003c\/p\u003e","brand":"Color Tech","offers":[{"title":"Default Title","offer_id":43334917816526,"sku":null,"price":12.25,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0618\/5562\/9518\/files\/DESIGN_ONE_STONE_LOG0_FRONT.png?v=1767052196"},{"product_id":"stone-fab-long-sleeve-obs-truck-graphic-tee","title":"STONE FAB LONG SLEEVE OBS TRUCK GRAPHIC TEE","description":"\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e✅ \u003cstrong\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003eClassic Tee Long Sleeve\u003cspan\u003e. \u003c\/span\u003e\u003c\/span\u003e\u003c\/strong\u003e\n\u003c\/h2\u003e\n\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e✅ \u003cmeta charset=\"utf-8\"\u003e \u003cstrong\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cspan\u003eStyle Weight \u003c\/span\u003e\u003c\/span\u003e\u003c\/strong\u003e\u003cstrong\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cspan\u003e6 oz. \u003c\/span\u003e\u003c\/span\u003e\u003c\/strong\u003e\n\u003c\/h2\u003e\n\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e✅ \u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cstrong\u003e100% Open End Cotton\u003c\/strong\u003e\u003cstrong\u003e.\u003c\/strong\u003e\u003c\/span\u003e\n\u003c\/h2\u003e\n\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e✅ \u003cstrong\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003eFit: Classic Fit.\u003c\/span\u003e\u003c\/strong\u003e\n\u003c\/h2\u003e\n\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e\n\u003cspan style=\"font-size: 1.75rem;\"\u003e✅ \u003c\/span\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cstrong style=\"font-size: 1.75rem;\"\u003e48 Minimum Total Quantity to Place Order\u003c\/strong\u003e\u003c\/span\u003e\n\u003c\/h2\u003e\n\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e✅ \u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cstrong\u003eDiscounts Applied Automatically\u003c\/strong\u003e at quantity breaks: 72, 144, 288, 576\u003c\/span\u003e\n\u003c\/h2\u003e\n\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e✅ \u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cstrong\u003ePricing includes \u003cmeta charset=\"utf-8\"\u003e\u003c\/strong\u003e\u003c\/span\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cstrong\u003eLogos Screen Print on Front, Back and Right Sleeve.  Custom Neck Labels, Individually Folded, Bagged\u003c\/strong\u003e\u003c\/span\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cstrong\u003e. Small through X-Large.\u003c\/strong\u003e\u003c\/span\u003e\n\u003c\/h2\u003e\n\u003ch3 style=\"margin-top: 1.5rem; font-size: 1.5rem; text-align: center;\"\u003e\n\u003cstrong\u003eNote:\u003c\/strong\u003e 2XL add $2.00   |   3XL add $3.00\u003cmeta charset=\"utf-8\"\u003e\n\u003c\/h3\u003e\n\u003ch3 style=\"margin-top: 1.5rem; font-size: 1.5rem; text-align: center;\"\u003e4XL add $4.00   |   5XL add 5.00 \u003c\/h3\u003e\n\u003ctable height=\"200\" style=\"width: 90.121%; border-collapse: collapse; font-size: 1.5rem;\"\u003e\n\u003cthead\u003e\n\u003ctr style=\"background-color: #f0f0f0;\"\u003e\n\u003cth style=\"padding: 0.15rem; width: 55.3535%; text-align: center;\"\u003eQuantity Range\u003c\/th\u003e\n\u003cth style=\"padding: 0.15rem; width: 35.1515%; text-align: center;\"\u003eCost Per\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr style=\"text-align: center;\"\u003e\n\u003ctd style=\"padding: 0.15em; width: 55.3535%;\"\u003e48–71\u003c\/td\u003e\n\u003ctd style=\"padding: 0.15rem; width: 35.1515%;\"\u003e$16.50\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"background-color: rgb(249, 249, 249); text-align: center;\"\u003e\n\u003ctd style=\"padding: 0.15em; width: 55.3535%;\"\u003e72–143\u003c\/td\u003e\n\u003ctd style=\"padding: 0.15rem; width: 35.1515%;\"\u003e$15.00\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"text-align: center;\"\u003e\n\u003ctd style=\"padding: 0.15rem; width: 55.3535%;\"\u003e144–287\u003c\/td\u003e\n\u003ctd style=\"padding: 0.15rem; width: 35.1515%;\"\u003e$13.50\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"background-color: rgb(249, 249, 249); text-align: center;\"\u003e\n\u003ctd style=\"padding: 0.15rem; width: 55.3535%;\"\u003e288–575\u003c\/td\u003e\n\u003ctd style=\"padding: 0.15rem; width: 35.1515%;\"\u003e$12.70\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"padding: 0.15rem; width: 55.3535%; text-align: center;\"\u003e576+\u003c\/td\u003e\n\u003ctd style=\"padding: 0.15rem; width: 35.1515%; text-align: center;\"\u003e$11.60\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003cdiv id=\"sched-widget\" data-server-epoch=\"{{ server_epoch }}\" style=\"margin: 16px 0;\"\u003e\n\u003cdiv id=\"sched-error\" role=\"alert\" style=\"color: #b00020; margin-top: 8px; display: none;\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cp\u003e\u003cscript\u003e\n(function(){\n  var DAYS_OUT = 15;\n  var widget = document.getElementById('sched-widget');\n  if (!widget) return;\n\n  var input = document.getElementById('scheduled_date');\n  var err = document.getElementById('sched-error');\n\n  var serverEpoch = parseInt(widget.getAttribute('data-server-epoch') || \"0\", 10);\n  var base = new Date(serverEpoch * 1000);\n  if (isNaN(base.getTime())) base = new Date();\n  base.setHours(0,0,0,0);\n\n  function nextWeekday(d){\n    var c = new Date(d.getTime());\n    while (c.getDay() === 0 || c.getDay() === 6) { \/\/ 0 Sun, 6 Sat\n      c.setDate(c.getDate() + 1);\n    }\n    return c;\n  }\n\n  function isoDate(d){\n    var mm = String(d.getMonth()+1).padStart(2,'0');\n    var dd = String(d.getDate()).padStart(2,'0');\n    return d.getFullYear() + '-' + mm + '-' + dd;\n  }\n\n  \/\/ compute min (server time) + DAYS_OUT, bump to next weekday if needed\n  var minDate = new Date(base);\n  minDate.setDate(minDate.getDate() + DAYS_OUT);\n  minDate = nextWeekday(minDate);\n\n  input.min = isoDate(minDate);\n  input.value = isoDate(minDate);\n\n  function validate(dateStr){\n    if(!dateStr) return { ok:false, msg: 'Please select a Scheduled In-Hands Date.' };\n    var sel = new Date(dateStr + 'T00:00:00');\n    if(isNaN(sel.getTime())) return { ok:false, msg: 'Selected date is invalid.' };\n    sel.setHours(0,0,0,0);\n    if(sel \u003c minDate) return { ok:false, msg: 'Selected date is earlier than the earliest available: ' + isoDate(minDate) + '.' , corrected: minDate };\n    if(sel.getDay() === 0 || sel.getDay() === 6) return { ok:false, msg: 'Weekends not allowed. Next business day: ' + isoDate(nextWeekday(sel)) + '.', corrected: nextWeekday(sel) };\n    return { ok:true };\n  }\n\n  function showError(message){\n    err.textContent = message;\n    err.style.display = 'block';\n  }\n  function hideError(){\n    err.textContent = '';\n    err.style.display = 'none';\n  }\n\n  function handleChange(){\n    var res = validate(input.value);\n    if(!res.ok){\n      showError(res.msg);\n      if(res.corrected) input.value = isoDate(res.corrected);\n    } else {\n      hideError();\n    }\n  }\n\n  input.addEventListener('change', handleChange);\n  input.addEventListener('blur', handleChange);\n\n  \/\/ Ensure validation blocks form submit (works with your existing Add to Cart)\n  var parentForm = input.closest('form');\n  if(parentForm){\n    parentForm.addEventListener('submit', function(e){\n      var res = validate(input.value);\n      if(!res.ok){\n        e.preventDefault();\n        showError(res.msg);\n        if(res.corrected) input.value = isoDate(res.corrected);\n        input.focus();\n        return false;\n      }\n    }, { capture:true });\n  }\n\n})();\n\u003c\/script\u003e \u003cscript\u003e\ndocument.addEventListener('DOMContentLoaded', function() {\n\n  const dateInput = document.getElementById('scheduled_date');\n  if (!dateInput) return;\n\n  \/\/ Detect any AJAX add-to-cart click\n  document.querySelectorAll('.product-form__submit, [data-add-to-cart], button[type=\"submit\"]').forEach(btn =\u003e {\n    btn.addEventListener('click', function(e) {\n\n      const selected = dateInput.value;\n      if (!selected) {\n        e.preventDefault();\n        alert(\"Please select your REQUIRED Scheduled In-Hands Date before continuing.\");\n        dateInput.focus();\n        return false;\n      }\n\n      \/\/ Intercept Shopify AJAX\n      document.addEventListener('cart:request-start', function(ev) {\n        if (!ev.detail || !ev.detail.body) return;\n\n        try {\n          let data = ev.detail.body;\n\n          \/\/ Inject the line item property\n          data.set(\"properties[Scheduled Date In-Hand]\", selected);\n\n        } catch (err) {\n          console.warn(\"Unable to inject Scheduled Date:\", err);\n        }\n      }, { once: true });\n\n    });\n  });\n\n});\n\u003c\/script\u003e\u003c\/p\u003e","brand":"Color Tech","offers":[{"title":"Default Title","offer_id":43329489273038,"sku":null,"price":15.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0618\/5562\/9518\/files\/SHOPIFY_PROOF_LEFT_CHEST_FRONT_LONG_SEEVE_2023_STONE_FAB_OBS.png?v=1758829084"}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0618\/5562\/9518\/collections\/DESIGN_ONE_STONE_LOG0_FRONT.png?v=1767035550","url":"https:\/\/colortechsp.com\/collections\/stone-fabrication.oembed","provider":"Color Tech","version":"1.0","type":"link"}