{"title":"Bundle Deals","description":"\u003cp\u003eSave big when you bundle. Grab 3 or 5 Kap-Bak patches at a discount — mix and match your favorites and keep more cash in your pocket. The more you grab, the more you save.\u003c\/p\u003e","products":[{"product_id":"pick-any-3-patches-bundle-save","title":"Pick Any 3 Kap-Baks — Bundle \u0026 Save","description":"\n\u003cstyle\u003e\n.kbp-wrap { font-family: 'Inter', system-ui, -apple-system, sans-serif; max-width: 100%; margin: 24px 0 32px; color: #121212; }\n.kbp-hero { background: linear-gradient(135deg, #f7f5f0 0%, #efe9dd 100%); border-radius: 14px; padding: 28px 28px 24px; text-align: center; margin-bottom: 24px; }\n.kbp-eyebrow { font-size: 11px; letter-spacing: 0.18em; text-transform: uppercase; color: #108474; font-weight: 700; margin: 0 0 10px; }\n.kbp-title { font-size: 32px; font-weight: 800; margin: 0 0 8px; letter-spacing: -0.02em; line-height: 1.1; }\n.kbp-sub { font-size: 15px; color: #4a4a4a; margin: 0; }\n.kbp-progress { display: flex; align-items: center; justify-content: center; gap: 10px; margin-top: 18px; flex-wrap: wrap; }\n.kbp-dot { width: 38px; height: 38px; border-radius: 50%; border: 2px solid #cdcdcd; background: #fff; display: inline-flex; align-items: center; justify-content: center; font-weight: 700; font-size: 14px; color: #999; transition: all 0.25s ease; }\n.kbp-dot.kbp-filled { background: #108474; border-color: #108474; color: #fff; transform: scale(1.05); }\n.kbp-counter { font-size: 14px; font-weight: 600; color: #121212; margin-left: 6px; }\n.kbp-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 16px; margin: 24px 0; }\n.kbp-card { background: #fff; border: 2px solid #ececec; border-radius: 12px; padding: 12px; cursor: pointer; transition: all 0.2s ease; position: relative; text-align: left; }\n.kbp-card:hover { border-color: #b8b8b8; transform: translateY(-2px); box-shadow: 0 8px 20px rgba(0,0,0,0.06); }\n.kbp-card.kbp-selected { border-color: #108474; background: rgba(16,132,116,0.04); box-shadow: 0 0 0 3px rgba(16,132,116,0.12); }\n.kbp-card-img { width: 100%; aspect-ratio: 1; object-fit: contain; background: #f7f5f0; border-radius: 8px; margin-bottom: 10px; }\n.kbp-card-name { font-size: 14px; font-weight: 600; line-height: 1.3; margin: 0 0 4px; color: #121212; }\n.kbp-card-price { font-size: 13px; color: #6a6a6a; margin: 0; }\n.kbp-check { position: absolute; top: 8px; right: 8px; width: 28px; height: 28px; border-radius: 50%; background: #108474; color: #fff; display: none; align-items: center; justify-content: center; font-size: 16px; font-weight: 700; box-shadow: 0 2px 8px rgba(16,132,116,0.4); }\n.kbp-card.kbp-selected .kbp-check { display: flex; }\n.kbp-card-pos { position: absolute; top: 8px; left: 8px; width: 26px; height: 26px; border-radius: 50%; background: #fff; color: #108474; display: none; align-items: center; justify-content: center; font-size: 13px; font-weight: 800; border: 2px solid #108474; }\n.kbp-card.kbp-selected .kbp-card-pos { display: flex; }\n.kbp-cta-bar { position: sticky; bottom: 0; background: #fff; border-top: 1px solid #ececec; padding: 16px 0; margin-top: 8px; z-index: 10; display: flex; gap: 12px; align-items: center; flex-wrap: wrap; }\n.kbp-cta { flex: 1; min-width: 200px; background: #121212; color: #fff; border: 0; padding: 16px 24px; font-size: 15px; font-weight: 700; letter-spacing: 0.02em; border-radius: 10px; cursor: pointer; transition: all 0.2s ease; text-transform: uppercase; }\n.kbp-cta:hover:not(:disabled) { background: #108474; transform: translateY(-1px); }\n.kbp-cta:disabled { background: #cdcdcd; color: #fff; cursor: not-allowed; }\n.kbp-status { font-size: 13px; color: #6a6a6a; }\n.kbp-loading { text-align: center; padding: 40px; color: #6a6a6a; font-size: 14px; }\n.kbp-error { text-align: center; padding: 24px; color: #b00020; background: #fef0f0; border-radius: 10px; font-size: 14px; }\n@media (max-width: 600px) {\n  .kbp-grid { grid-template-columns: repeat(2, 1fr); gap: 12px; }\n  .kbp-title { font-size: 24px; }\n  .kbp-card-name { font-size: 13px; }\n}\n\u003c\/style\u003e\n\u003cdiv class=\"kbp-wrap\" id=\"kbp-3\"\u003e\n  \u003cdiv class=\"kbp-hero\"\u003e\n    \u003cp class=\"kbp-eyebrow\"\u003eBuild Your Bundle\u003c\/p\u003e\n    \u003ch2 class=\"kbp-title\"\u003ePick Any 3 Kap-Baks\u003c\/h2\u003e\n    \u003cp class=\"kbp-sub\"\u003eSelect your designs below — your picks ship together as one bundle for $39.99.\u003c\/p\u003e\n    \u003cdiv class=\"kbp-progress\" id=\"kbp-progress-3\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003cdiv id=\"kbp-grid-3\" class=\"kbp-loading\"\u003eLoading designs…\u003c\/div\u003e\n  \u003cdiv class=\"kbp-cta-bar\"\u003e\n    \u003cspan class=\"kbp-status\" id=\"kbp-status-3\"\u003eSelect 3 designs to continue.\u003c\/span\u003e\n    \u003cbutton class=\"kbp-cta\" id=\"kbp-cta-3\" disabled\u003eAdd Bundle to Cart — $39.99\u003c\/button\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\n(function() {\n  var PICK_N = 3;\n  var BUNDLE_VARIANT = 45868946718893;\n  var EXCLUDED = new Set([\"patches\", \"the-original-kap-bak\", \"pick-any-3-patches-bundle-save\", \"starter-pack-5-patches\", \"green-leaf-kap-bak-1\"]);\n  var selected = []; \/\/ array of {id, title, image, handle}\n  var container = document.getElementById('kbp-3');\n  if (!container) return;\n  var grid = document.getElementById('kbp-grid-3');\n  var status = document.getElementById('kbp-status-3');\n  var cta = document.getElementById('kbp-cta-3');\n  var progress = document.getElementById('kbp-progress-3');\n\n  function renderProgress() {\n    var html = '';\n    for (var i = 0; i \u003c PICK_N; i++) {\n      html += '\u003cspan class=\"kbp-dot ' + (i \u003c selected.length ? 'kbp-filled' : '') + '\"\u003e' + (i + 1) + '\u003c\/span\u003e';\n    }\n    html += '\u003cspan class=\"kbp-counter\"\u003e' + selected.length + ' of ' + PICK_N + ' picked\u003c\/span\u003e';\n    progress.innerHTML = html;\n  }\n\n  function updateState() {\n    renderProgress();\n    if (selected.length === PICK_N) {\n      cta.disabled = false;\n      status.textContent = 'Bundle ready: ' + selected.map(function(s){return s.title;}).join(', ');\n    } else {\n      cta.disabled = true;\n      status.textContent = 'Select ' + (PICK_N - selected.length) + ' more design' + (PICK_N - selected.length === 1 ? '' : 's') + '.';\n    }\n    \/\/ re-render selected indicators\n    Array.prototype.forEach.call(grid.querySelectorAll('.kbp-card'), function(card) {\n      var pid = card.getAttribute('data-pid');\n      var idx = selected.findIndex(function(s) { return String(s.id) === String(pid); });\n      if (idx \u003e= 0) {\n        card.classList.add('kbp-selected');\n        card.querySelector('.kbp-card-pos').textContent = idx + 1;\n      } else {\n        card.classList.remove('kbp-selected');\n      }\n    });\n  }\n\n  function toggleSelect(p) {\n    var idx = selected.findIndex(function(s) { return s.id === p.id; });\n    if (idx \u003e= 0) {\n      selected.splice(idx, 1);\n    } else {\n      if (selected.length \u003e= PICK_N) {\n        \/\/ replace the last pick\n        selected.pop();\n      }\n      selected.push(p);\n    }\n    updateState();\n  }\n\n  cta.addEventListener('click', function() {\n    if (selected.length !== PICK_N) return;\n    var url = '\/cart\/' + BUNDLE_VARIANT + ':1';\n    var params = [];\n    selected.forEach(function(s, i) {\n      params.push('properties[Pick%20' + (i + 1) + ']=' + encodeURIComponent(s.title));\n    });\n    url += '?' + params.join('\u0026');\n    window.location.href = url;\n  });\n\n  fetch('\/products.json?limit=250').then(function(r) { return r.json(); }).then(function(data) {\n    var products = (data.products || []).filter(function(p) {\n      if (EXCLUDED.has(p.handle)) return false;\n      if (!p.images || p.images.length === 0) return false;\n      var tags = (p.tags || []).join(' ').toLowerCase();\n      if (tags.indexOf('bundle') \u003e= 0) return false;\n      \/\/ Royalty guardrail (added 2026-05-16): licensed collegiate designs\n      \/\/ (FSU, CCU, JMU, etc.) ship at MSRP and can't be bundled at promo price.\n      if (tags.indexOf('collegiate') \u003e= 0) return false;\n      if (tags.indexOf('licensed') \u003e= 0) return false;\n      return true;\n    });\n    products.sort(function(a, b) { return a.title.localeCompare(b.title); });\n    if (products.length === 0) {\n      grid.innerHTML = '\u003cdiv class=\"kbp-error\"\u003eNo designs available right now. Please try again later.\u003c\/div\u003e';\n      return;\n    }\n    grid.classList.remove('kbp-loading');\n    grid.className = 'kbp-grid';\n    grid.innerHTML = '';\n    products.forEach(function(p) {\n      var img = p.images[0].src;\n      var card = document.createElement('div');\n      card.className = 'kbp-card';\n      card.setAttribute('data-pid', p.id);\n      card.innerHTML = '\u003cspan class=\"kbp-card-pos\"\u003e\u003c\/span\u003e\u003cspan class=\"kbp-check\"\u003e\u0026#10003;\u003c\/span\u003e\u003cimg class=\"kbp-card-img\" src=\"' + img + '\u0026width=400\" alt=\"' + p.title.replace(\/\"\/g, '\u0026quot;') + ' Kap-Bak\" loading=\"lazy\" \/\u003e\u003cp class=\"kbp-card-name\"\u003e' + p.title + '\u003c\/p\u003e\u003cp class=\"kbp-card-price\"\u003eIncluded in bundle\u003c\/p\u003e';\n      card.addEventListener('click', function() {\n        toggleSelect({id: p.id, title: p.title, image: img, handle: p.handle});\n      });\n      grid.appendChild(card);\n    });\n    renderProgress();\n  }).catch(function(err) {\n    grid.innerHTML = '\u003cdiv class=\"kbp-error\"\u003eCould not load designs. Please refresh the page.\u003c\/div\u003e';\n    console.error('Bundle picker load error:', err);\n  });\n})();\n\u003c\/script\u003e\n\n\u003chr style=\"border:0;border-top:1px solid #ececec;margin:32px 0;\"\u003e\n\u003ch3 style=\"font-size:18px;font-weight:700;letter-spacing:-0.01em;margin:24px 0 12px;\"\u003eAbout this bundle\u003c\/h3\u003e\n\u003cp\u003eMix and match any 3 designs from our full lineup and save $5 off the regular price. Whether you rep your favorite flag, your branch, or just something that makes people do a double-take, this bundle lets you build your own lineup.\u003c\/p\u003e\n\u003cul style=\"padding-left:20px;line-height:1.7;\"\u003e\n  \u003cli\u003e\n\u003cstrong\u003e3 Kap-Baks of your choice\u003c\/strong\u003e — pick any from our full design catalog above\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003e$39.99 — save $5\u003c\/strong\u003e compared to buying separately\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eMade in the USA\u003c\/strong\u003e with premium embroidered detail that holds up\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003ePatented\u003c\/strong\u003e Velcro® attachment — works on most snapback and trucker caps\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eFree shipping\u003c\/strong\u003e on orders over $30\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eTough, low-profile, and built to swap. Add the bundle to cart, then attach your designs to any baseball cap with the included Velcro® loop.\u003c\/p\u003e\n\u003cp\u003e\u003cem\u003eNote: This bundle includes 3 embroidered designs only. Licensed collegiate designs (FSU, CCU, JMU) ship at MSRP and are not eligible for bundle pricing. The Original Kap-Bak base is sold separately.\u003c\/em\u003e\u003c\/p\u003e","brand":"Kap-Bak","offers":[{"title":"Default Title","offer_id":45868946718893,"sku":"BUNDLE-3","price":39.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0663\/8000\/5549\/files\/DSC07300_0d719f07-d4a0-41ec-9343-92043be9c68f.jpg?v=1777324050"},{"product_id":"starter-pack-5-patches","title":"Starter Pack — 5 Kap-Baks","description":"\n\u003cstyle\u003e\n.kbp-wrap { font-family: 'Inter', system-ui, -apple-system, sans-serif; max-width: 100%; margin: 24px 0 32px; color: #121212; }\n.kbp-hero { background: linear-gradient(135deg, #f7f5f0 0%, #efe9dd 100%); border-radius: 14px; padding: 28px 28px 24px; text-align: center; margin-bottom: 24px; }\n.kbp-eyebrow { font-size: 11px; letter-spacing: 0.18em; text-transform: uppercase; color: #108474; font-weight: 700; margin: 0 0 10px; }\n.kbp-title { font-size: 32px; font-weight: 800; margin: 0 0 8px; letter-spacing: -0.02em; line-height: 1.1; }\n.kbp-sub { font-size: 15px; color: #4a4a4a; margin: 0; }\n.kbp-progress { display: flex; align-items: center; justify-content: center; gap: 10px; margin-top: 18px; flex-wrap: wrap; }\n.kbp-dot { width: 38px; height: 38px; border-radius: 50%; border: 2px solid #cdcdcd; background: #fff; display: inline-flex; align-items: center; justify-content: center; font-weight: 700; font-size: 14px; color: #999; transition: all 0.25s ease; }\n.kbp-dot.kbp-filled { background: #108474; border-color: #108474; color: #fff; transform: scale(1.05); }\n.kbp-counter { font-size: 14px; font-weight: 600; color: #121212; margin-left: 6px; }\n.kbp-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 16px; margin: 24px 0; }\n.kbp-card { background: #fff; border: 2px solid #ececec; border-radius: 12px; padding: 12px; cursor: pointer; transition: all 0.2s ease; position: relative; text-align: left; }\n.kbp-card:hover { border-color: #b8b8b8; transform: translateY(-2px); box-shadow: 0 8px 20px rgba(0,0,0,0.06); }\n.kbp-card.kbp-selected { border-color: #108474; background: rgba(16,132,116,0.04); box-shadow: 0 0 0 3px rgba(16,132,116,0.12); }\n.kbp-card-img { width: 100%; aspect-ratio: 1; object-fit: contain; background: #f7f5f0; border-radius: 8px; margin-bottom: 10px; }\n.kbp-card-name { font-size: 14px; font-weight: 600; line-height: 1.3; margin: 0 0 4px; color: #121212; }\n.kbp-card-price { font-size: 13px; color: #6a6a6a; margin: 0; }\n.kbp-check { position: absolute; top: 8px; right: 8px; width: 28px; height: 28px; border-radius: 50%; background: #108474; color: #fff; display: none; align-items: center; justify-content: center; font-size: 16px; font-weight: 700; box-shadow: 0 2px 8px rgba(16,132,116,0.4); }\n.kbp-card.kbp-selected .kbp-check { display: flex; }\n.kbp-card-pos { position: absolute; top: 8px; left: 8px; width: 26px; height: 26px; border-radius: 50%; background: #fff; color: #108474; display: none; align-items: center; justify-content: center; font-size: 13px; font-weight: 800; border: 2px solid #108474; }\n.kbp-card.kbp-selected .kbp-card-pos { display: flex; }\n.kbp-cta-bar { position: sticky; bottom: 0; background: #fff; border-top: 1px solid #ececec; padding: 16px 0; margin-top: 8px; z-index: 10; display: flex; gap: 12px; align-items: center; flex-wrap: wrap; }\n.kbp-cta { flex: 1; min-width: 200px; background: #121212; color: #fff; border: 0; padding: 16px 24px; font-size: 15px; font-weight: 700; letter-spacing: 0.02em; border-radius: 10px; cursor: pointer; transition: all 0.2s ease; text-transform: uppercase; }\n.kbp-cta:hover:not(:disabled) { background: #108474; transform: translateY(-1px); }\n.kbp-cta:disabled { background: #cdcdcd; color: #fff; cursor: not-allowed; }\n.kbp-status { font-size: 13px; color: #6a6a6a; }\n.kbp-loading { text-align: center; padding: 40px; color: #6a6a6a; font-size: 14px; }\n.kbp-error { text-align: center; padding: 24px; color: #b00020; background: #fef0f0; border-radius: 10px; font-size: 14px; }\n@media (max-width: 600px) {\n  .kbp-grid { grid-template-columns: repeat(2, 1fr); gap: 12px; }\n  .kbp-title { font-size: 24px; }\n  .kbp-card-name { font-size: 13px; }\n}\n\u003c\/style\u003e\n\u003cdiv class=\"kbp-wrap\" id=\"kbp-5\"\u003e\n  \u003cdiv class=\"kbp-hero\"\u003e\n    \u003cp class=\"kbp-eyebrow\"\u003eBuild Your Bundle\u003c\/p\u003e\n    \u003ch2 class=\"kbp-title\"\u003ePick Any 5 Kap-Baks\u003c\/h2\u003e\n    \u003cp class=\"kbp-sub\"\u003eSelect your designs below — your picks ship together as one bundle for $59.99.\u003c\/p\u003e\n    \u003cdiv class=\"kbp-progress\" id=\"kbp-progress-5\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003cdiv id=\"kbp-grid-5\" class=\"kbp-loading\"\u003eLoading designs…\u003c\/div\u003e\n  \u003cdiv class=\"kbp-cta-bar\"\u003e\n    \u003cspan class=\"kbp-status\" id=\"kbp-status-5\"\u003eSelect 5 designs to continue.\u003c\/span\u003e\n    \u003cbutton class=\"kbp-cta\" id=\"kbp-cta-5\" disabled\u003eAdd Bundle to Cart — $59.99\u003c\/button\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\n(function() {\n  var PICK_N = 5;\n  var BUNDLE_VARIANT = 45868946751661;\n  var EXCLUDED = new Set([\"patches\", \"the-original-kap-bak\", \"pick-any-3-patches-bundle-save\", \"starter-pack-5-patches\", \"green-leaf-kap-bak-1\"]);\n  var selected = []; \/\/ array of {id, title, image, handle}\n  var container = document.getElementById('kbp-5');\n  if (!container) return;\n  var grid = document.getElementById('kbp-grid-5');\n  var status = document.getElementById('kbp-status-5');\n  var cta = document.getElementById('kbp-cta-5');\n  var progress = document.getElementById('kbp-progress-5');\n\n  function renderProgress() {\n    var html = '';\n    for (var i = 0; i \u003c PICK_N; i++) {\n      html += '\u003cspan class=\"kbp-dot ' + (i \u003c selected.length ? 'kbp-filled' : '') + '\"\u003e' + (i + 1) + '\u003c\/span\u003e';\n    }\n    html += '\u003cspan class=\"kbp-counter\"\u003e' + selected.length + ' of ' + PICK_N + ' picked\u003c\/span\u003e';\n    progress.innerHTML = html;\n  }\n\n  function updateState() {\n    renderProgress();\n    if (selected.length === PICK_N) {\n      cta.disabled = false;\n      status.textContent = 'Bundle ready: ' + selected.map(function(s){return s.title;}).join(', ');\n    } else {\n      cta.disabled = true;\n      status.textContent = 'Select ' + (PICK_N - selected.length) + ' more design' + (PICK_N - selected.length === 1 ? '' : 's') + '.';\n    }\n    \/\/ re-render selected indicators\n    Array.prototype.forEach.call(grid.querySelectorAll('.kbp-card'), function(card) {\n      var pid = card.getAttribute('data-pid');\n      var idx = selected.findIndex(function(s) { return String(s.id) === String(pid); });\n      if (idx \u003e= 0) {\n        card.classList.add('kbp-selected');\n        card.querySelector('.kbp-card-pos').textContent = idx + 1;\n      } else {\n        card.classList.remove('kbp-selected');\n      }\n    });\n  }\n\n  function toggleSelect(p) {\n    var idx = selected.findIndex(function(s) { return s.id === p.id; });\n    if (idx \u003e= 0) {\n      selected.splice(idx, 1);\n    } else {\n      if (selected.length \u003e= PICK_N) {\n        \/\/ replace the last pick\n        selected.pop();\n      }\n      selected.push(p);\n    }\n    updateState();\n  }\n\n  cta.addEventListener('click', function() {\n    if (selected.length !== PICK_N) return;\n    var url = '\/cart\/' + BUNDLE_VARIANT + ':1';\n    var params = [];\n    selected.forEach(function(s, i) {\n      params.push('properties[Pick%20' + (i + 1) + ']=' + encodeURIComponent(s.title));\n    });\n    url += '?' + params.join('\u0026');\n    window.location.href = url;\n  });\n\n  fetch('\/products.json?limit=250').then(function(r) { return r.json(); }).then(function(data) {\n    var products = (data.products || []).filter(function(p) {\n      if (EXCLUDED.has(p.handle)) return false;\n      if (!p.images || p.images.length === 0) return false;\n      var tags = (p.tags || []).join(' ').toLowerCase();\n      if (tags.indexOf('bundle') \u003e= 0) return false;\n      return true;\n    });\n    products.sort(function(a, b) { return a.title.localeCompare(b.title); });\n    if (products.length === 0) {\n      grid.innerHTML = '\u003cdiv class=\"kbp-error\"\u003eNo designs available right now. Please try again later.\u003c\/div\u003e';\n      return;\n    }\n    grid.classList.remove('kbp-loading');\n    grid.className = 'kbp-grid';\n    grid.innerHTML = '';\n    products.forEach(function(p) {\n      var img = p.images[0].src;\n      var card = document.createElement('div');\n      card.className = 'kbp-card';\n      card.setAttribute('data-pid', p.id);\n      card.innerHTML = '\u003cspan class=\"kbp-card-pos\"\u003e\u003c\/span\u003e\u003cspan class=\"kbp-check\"\u003e\u0026#10003;\u003c\/span\u003e\u003cimg class=\"kbp-card-img\" src=\"' + img + '\u0026width=400\" alt=\"' + p.title.replace(\/\"\/g, '\u0026quot;') + ' Kap-Bak\" loading=\"lazy\" \/\u003e\u003cp class=\"kbp-card-name\"\u003e' + p.title + '\u003c\/p\u003e\u003cp class=\"kbp-card-price\"\u003eIncluded in bundle\u003c\/p\u003e';\n      card.addEventListener('click', function() {\n        toggleSelect({id: p.id, title: p.title, image: img, handle: p.handle});\n      });\n      grid.appendChild(card);\n    });\n    renderProgress();\n  }).catch(function(err) {\n    grid.innerHTML = '\u003cdiv class=\"kbp-error\"\u003eCould not load designs. Please refresh the page.\u003c\/div\u003e';\n    console.error('Bundle picker load error:', err);\n  });\n})();\n\u003c\/script\u003e\n\n\u003chr style=\"border:0;border-top:1px solid #ececec;margin:32px 0;\"\u003e\n\u003ch3 style=\"font-size:18px;font-weight:700;letter-spacing:-0.01em;margin:24px 0 12px;\"\u003eAbout this bundle\u003c\/h3\u003e\n\u003cp\u003eGo big — the Starter Pack gets you 5 Kap-Baks of your choice at over 20% off. This is the best deal we offer, plain and simple. Load up your gear with the designs that speak to you and save $15.\u003c\/p\u003e\n\u003cul style=\"padding-left:20px;line-height:1.7;\"\u003e\n  \u003cli\u003e\n\u003cstrong\u003e5 Kap-Baks of your choice\u003c\/strong\u003e — pick any from our full design catalog above\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003e$59.99 — save over 20%\u003c\/strong\u003e vs. buying separately\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eMade in the USA\u003c\/strong\u003e with premium embroidered detail\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003ePatented\u003c\/strong\u003e Velcro® attachment — swap designs in seconds\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eFree shipping\u003c\/strong\u003e on orders over $30\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eBest value in the lineup. Bold colors, clean edges, Velcro® backing that grips tight.\u003c\/p\u003e\n\u003cp\u003e\u003cem\u003eNote: This bundle includes 5 embroidered designs only. The Original Kap-Bak base is sold separately.\u003c\/em\u003e\u003c\/p\u003e","brand":"Kap-Bak","offers":[{"title":"Default Title","offer_id":45868946751661,"sku":"BUNDLE-5","price":59.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0663\/8000\/5549\/files\/DSC07332_aa17387f-79b3-4aea-a4d0-fb239ae4a1b1.jpg?v=1777324057"},{"product_id":"pick-any-3-licensed-kap-baks-college-bundle","title":"Pick Any 3 Licensed Kap-Baks — College Bundle","description":"\n\u003cstyle\u003e\n.kbp-wrap { font-family: 'Inter', system-ui, -apple-system, sans-serif; max-width: 100%; margin: 24px 0 32px; color: #121212; }\n.kbp-hero { background: linear-gradient(135deg, #f7f5f0 0%, #efe9dd 100%); border-radius: 14px; padding: 28px 28px 24px; text-align: center; margin-bottom: 24px; }\n.kbp-eyebrow { font-size: 11px; letter-spacing: 0.18em; text-transform: uppercase; color: #7a1a1a; font-weight: 700; margin: 0 0 10px; }\n.kbp-title { font-size: 32px; font-weight: 800; margin: 0 0 8px; letter-spacing: -0.02em; line-height: 1.1; }\n.kbp-sub { font-size: 15px; color: #4a4a4a; margin: 0; }\n.kbp-progress { display: flex; align-items: center; justify-content: center; gap: 10px; margin-top: 18px; flex-wrap: wrap; }\n.kbp-dot { width: 38px; height: 38px; border-radius: 50%; border: 2px solid #cdcdcd; background: #fff; display: inline-flex; align-items: center; justify-content: center; font-weight: 700; font-size: 14px; color: #999; transition: all 0.25s ease; }\n.kbp-dot.kbp-filled { background: #7a1a1a; border-color: #7a1a1a; color: #fff; transform: scale(1.05); }\n.kbp-counter { font-size: 14px; font-weight: 600; color: #121212; margin-left: 6px; }\n.kbp-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 16px; margin: 24px 0; }\n.kbp-card { background: #fff; border: 2px solid #ececec; border-radius: 12px; padding: 12px; cursor: pointer; transition: all 0.2s ease; position: relative; text-align: left; }\n.kbp-card:hover { border-color: #b8b8b8; transform: translateY(-2px); box-shadow: 0 8px 20px rgba(0,0,0,0.06); }\n.kbp-card.kbp-selected { border-color: #7a1a1a; background: rgba(122,26,26,0.04); box-shadow: 0 0 0 3px rgba(122,26,26,0.12); }\n.kbp-card-img { width: 100%; aspect-ratio: 1; object-fit: contain; background: #f7f5f0; border-radius: 8px; margin-bottom: 10px; }\n.kbp-card-name { font-size: 14px; font-weight: 600; line-height: 1.3; margin: 0 0 4px; color: #121212; }\n.kbp-card-price { font-size: 13px; color: #6a6a6a; margin: 0; }\n.kbp-check { position: absolute; top: 8px; right: 8px; width: 28px; height: 28px; border-radius: 50%; background: #7a1a1a; color: #fff; display: none; align-items: center; justify-content: center; font-size: 16px; font-weight: 700; box-shadow: 0 2px 8px rgba(122,26,26,0.4); }\n.kbp-card.kbp-selected .kbp-check { display: flex; }\n.kbp-card-pos { position: absolute; top: 8px; left: 8px; width: 26px; height: 26px; border-radius: 50%; background: #fff; color: #7a1a1a; display: none; align-items: center; justify-content: center; font-size: 13px; font-weight: 800; border: 2px solid #7a1a1a; }\n.kbp-card.kbp-selected .kbp-card-pos { display: flex; }\n.kbp-cta-bar { position: sticky; bottom: 0; background: #fff; border-top: 1px solid #ececec; padding: 16px 0; margin-top: 8px; z-index: 10; display: flex; gap: 12px; align-items: center; flex-wrap: wrap; }\n.kbp-cta { flex: 1; min-width: 200px; background: #121212; color: #fff; border: 0; padding: 16px 24px; font-size: 15px; font-weight: 700; letter-spacing: 0.02em; border-radius: 10px; cursor: pointer; transition: all 0.2s ease; text-transform: uppercase; }\n.kbp-cta:hover:not(:disabled) { background: #7a1a1a; transform: translateY(-1px); }\n.kbp-cta:disabled { background: #cdcdcd; color: #fff; cursor: not-allowed; }\n.kbp-status { font-size: 13px; color: #6a6a6a; }\n.kbp-loading { text-align: center; padding: 40px; color: #6a6a6a; font-size: 14px; }\n.kbp-error { text-align: center; padding: 24px; color: #b00020; background: #fef0f0; border-radius: 10px; font-size: 14px; }\n@media (max-width: 600px) {\n  .kbp-grid { grid-template-columns: repeat(2, 1fr); gap: 12px; }\n  .kbp-title { font-size: 24px; }\n  .kbp-card-name { font-size: 13px; }\n}\n\u003c\/style\u003e\n\u003cdiv class=\"kbp-wrap\" id=\"kbp-3lic\"\u003e\n  \u003cdiv class=\"kbp-hero\"\u003e\n    \u003cp class=\"kbp-eyebrow\"\u003eOfficially Licensed · Build Your Bundle\u003c\/p\u003e\n    \u003ch2 class=\"kbp-title\"\u003ePick Any 3 Licensed Kap-Baks\u003c\/h2\u003e\n    \u003cp class=\"kbp-sub\"\u003eMix and match from our officially licensed collegiate lineup. Ships as one bundle for $54.99.\u003c\/p\u003e\n    \u003cdiv class=\"kbp-progress\" id=\"kbp-progress-3lic\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003cdiv id=\"kbp-grid-3lic\" class=\"kbp-loading\"\u003eLoading licensed designs…\u003c\/div\u003e\n  \u003cdiv class=\"kbp-cta-bar\"\u003e\n    \u003cspan class=\"kbp-status\" id=\"kbp-status-3lic\"\u003eSelect 3 licensed designs to continue.\u003c\/span\u003e\n    \u003cbutton class=\"kbp-cta\" id=\"kbp-cta-3lic\" disabled\u003eAdd Bundle to Cart — $54.99\u003c\/button\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\n(function() {\n  var PICK_N = 3;\n  var BUNDLE_VARIANT = 46019412656301;\n  var selected = [];\n  var container = document.getElementById('kbp-3lic');\n  if (!container) return;\n  var grid = document.getElementById('kbp-grid-3lic');\n  var status = document.getElementById('kbp-status-3lic');\n  var cta = document.getElementById('kbp-cta-3lic');\n  var progress = document.getElementById('kbp-progress-3lic');\n\n  function renderProgress() {\n    var html = '';\n    for (var i = 0; i \u003c PICK_N; i++) {\n      html += '\u003cspan class=\"kbp-dot ' + (i \u003c selected.length ? 'kbp-filled' : '') + '\"\u003e' + (i + 1) + '\u003c\/span\u003e';\n    }\n    html += '\u003cspan class=\"kbp-counter\"\u003e' + selected.length + ' of ' + PICK_N + ' picked\u003c\/span\u003e';\n    progress.innerHTML = html;\n  }\n\n  function updateState() {\n    renderProgress();\n    if (selected.length === PICK_N) {\n      cta.disabled = false;\n      status.textContent = 'Bundle ready: ' + selected.map(function(s){return s.title;}).join(', ');\n    } else {\n      cta.disabled = true;\n      status.textContent = 'Select ' + (PICK_N - selected.length) + ' more licensed design' + (PICK_N - selected.length === 1 ? '' : 's') + '.';\n    }\n    Array.prototype.forEach.call(grid.querySelectorAll('.kbp-card'), function(card) {\n      var pid = card.getAttribute('data-pid');\n      var idx = selected.findIndex(function(s) { return String(s.id) === String(pid); });\n      if (idx \u003e= 0) {\n        card.classList.add('kbp-selected');\n        card.querySelector('.kbp-card-pos').textContent = idx + 1;\n      } else {\n        card.classList.remove('kbp-selected');\n      }\n    });\n  }\n\n  function toggleSelect(p) {\n    var idx = selected.findIndex(function(s) { return s.id === p.id; });\n    if (idx \u003e= 0) {\n      selected.splice(idx, 1);\n    } else {\n      if (selected.length \u003e= PICK_N) { selected.pop(); }\n      selected.push(p);\n    }\n    updateState();\n  }\n\n  cta.addEventListener('click', function() {\n    if (selected.length !== PICK_N) return;\n    var url = '\/cart\/' + BUNDLE_VARIANT + ':1';\n    var params = [];\n    selected.forEach(function(s, i) {\n      params.push('properties[Pick%20' + (i + 1) + ']=' + encodeURIComponent(s.title));\n    });\n    url += '?' + params.join('\u0026');\n    window.location.href = url;\n  });\n\n  fetch('\/products.json?limit=250').then(function(r) { return r.json(); }).then(function(data) {\n    var products = (data.products || []).filter(function(p) {\n      if (!p.images || p.images.length === 0) return false;\n      var tags = (p.tags || []).join(' ').toLowerCase();\n      if (tags.indexOf('bundle') \u003e= 0) return false;\n      \/\/ Inverse of the standard picker: ONLY licensed\/collegiate designs.\n      if (tags.indexOf('collegiate') \u003c 0 \u0026\u0026 tags.indexOf('licensed') \u003c 0) return false;\n      return true;\n    });\n    products.sort(function(a, b) { return a.title.localeCompare(b.title); });\n    if (products.length === 0) {\n      grid.innerHTML = '\u003cdiv class=\"kbp-error\"\u003eNo licensed designs available right now. Please try again later.\u003c\/div\u003e';\n      return;\n    }\n    grid.classList.remove('kbp-loading');\n    grid.className = 'kbp-grid';\n    grid.innerHTML = '';\n    products.forEach(function(p) {\n      var img = p.images[0].src;\n      var card = document.createElement('div');\n      card.className = 'kbp-card';\n      card.setAttribute('data-pid', p.id);\n      card.innerHTML = '\u003cspan class=\"kbp-card-pos\"\u003e\u003c\/span\u003e\u003cspan class=\"kbp-check\"\u003e\u0026#10003;\u003c\/span\u003e\u003cimg class=\"kbp-card-img\" src=\"' + img + '\u0026width=400\" alt=\"' + p.title.replace(\/\"\/g, '\u0026quot;') + ' Kap-Bak\" loading=\"lazy\" \/\u003e\u003cp class=\"kbp-card-name\"\u003e' + p.title + '\u003c\/p\u003e\u003cp class=\"kbp-card-price\"\u003eIncluded in bundle\u003c\/p\u003e';\n      card.addEventListener('click', function() {\n        toggleSelect({id: p.id, title: p.title, image: img, handle: p.handle});\n      });\n      grid.appendChild(card);\n    });\n    renderProgress();\n  }).catch(function(err) {\n    grid.innerHTML = '\u003cdiv class=\"kbp-error\"\u003eCould not load designs. Please refresh the page.\u003c\/div\u003e';\n    console.error('Licensed bundle picker load error:', err);\n  });\n})();\n\u003c\/script\u003e\n\n\u003chr style=\"border:0;border-top:1px solid #ececec;margin:32px 0;\"\u003e\n\u003ch3 style=\"font-size:18px;font-weight:700;letter-spacing:-0.01em;margin:24px 0 12px;\"\u003eAbout this bundle\u003c\/h3\u003e\n\u003cp\u003ePick any 3 designs from our officially licensed collegiate lineup and save $4.98 off the regular price. Rep your school three ways — gameday cap, tailgate cap, weekend cap — and swap them as fast as you can pull the Velcro® loop.\u003c\/p\u003e\n\u003cul style=\"padding-left:20px;line-height:1.7;\"\u003e\n  \u003cli\u003e\n\u003cstrong\u003e3 officially licensed Kap-Baks\u003c\/strong\u003e — pick any from the collegiate catalog above\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003e$54.99 — save $4.98\u003c\/strong\u003e compared to buying separately ($19.99 each)\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eOfficially licensed\u003c\/strong\u003e by each university — royalty paid on every order\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eMade in the USA\u003c\/strong\u003e with premium embroidered detail that holds up\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003ePatented\u003c\/strong\u003e Velcro® attachment — works on most snapback and trucker caps\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eFree shipping\u003c\/strong\u003e on orders over $30\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eCurrently shipping: Coastal Carolina, Florida State, James Madison. More schools added regularly — check back or follow @kapbak for new drops.\u003c\/p\u003e\n\u003cp\u003e\u003cem\u003eNote: This bundle is for licensed collegiate designs only. For non-licensed designs (patriotic, 2A, outdoor, etc.) check out our \u003ca href=\"\/products\/pick-any-3-patches-bundle-save\"\u003estandard Pick Any 3\u003c\/a\u003e at $39.99.\u003c\/em\u003e\u003c\/p\u003e\n","brand":"Kap-Bak","offers":[{"title":"Default Title","offer_id":46019412656301,"sku":"BUNDLE-3-LICENSED","price":54.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0663\/8000\/5549\/files\/regular-14.jpg?v=1779801606"}],"url":"https:\/\/kap-bak.com\/collections\/bundle-deals.oembed","provider":"Kap-Bak","version":"1.0","type":"link"}