{
  "version": 3,
  "sources": ["/cdn/shop/t/66/assets/tly-ixtyoy-engine.js?cb=1793829861934"],
  "sourcesContent": ["/* ==========================================================================\n   TLY IXTYOY Engine v2.2  (Ten Lei Yen in-house free gifts, replaces BOGOS)\n   Extends v1.1: fetch + XHR interception of /cart/add|change|update|clear, per-variant locking,\n   stale-gift removal. v2: rules come from shop metafield tly.gift_rules (JSON script tag\n   #tly-gifts-rules), twin ($0 \"tly-gift\") variants, stacking rules, stop_lower_priority on matched\n   lines, auto + pick modes (popup), multiplier, line property _tly_gift = rule id, _tly_gift_v = 2.\n   v2.2: customer tiers (audience), order limits (tly.limit_rules), per-gift max_per_order.\n   ========================================================================== */\n(function () {\n  'use strict';\n  if (window.TLY_IXTYOY && window.TLY_IXTYOY.version && /^2\\./.test(window.TLY_IXTYOY.version)) return;\n\n  var VERSION = '2.2.0';\n  var PROP_RULE = '_tly_gift';\n  var PROP_VER = '_tly_gift_v';\n  var LEGACY_FLAG = '_tly_ixtyoy_gift';\n  var CART_MUT_RE = /\\/cart\\/(add|change|update|clear)(\\.js)?(\\?|$)/;\n  var DEBOUNCE_MS = 150;\n  var FAIL_COOLDOWN_MS = 30000;\n\n  // Own requests go through the ORIGINAL fetch so the interceptor never sees them (no self-trigger loops).\n  var nativeFetch = window.fetch.bind(window);\n\n  var rules = [];\n  var running = false;\n  var again = false;\n  var timer = null;\n  var lastCart = null;\n  var picks = {};          // ruleId -> { twinVariantId: qty } chosen in the popup (validated against required)\n  var prompted = {};       // 'ruleId:required' -> true  (popup already shown for this level)\n  var popupOpen = {};      // ruleId -> true while the popup for this rule is on screen\n  var failed = {};         // 'ruleId|variantId' -> timestamp of last failed add\n  var addLock = new Map(); // per-variant lock (v1.1 core)\n  var LOCK_TTL_MS = 8000;\n  var limits = [];         // enabled limit rules (tly.limit_rules)\n  var customerTiers = [];  // lowercase tier slugs of the logged-in customer (guests: [])\n  var srcInfo = {};        // gift twin variant id -> {product_id, variant_id, product_type} of its source product\n  var toastTimer = null;\n  var prodCache = null;\n\n  /* ------------------------------------------------------------------ boot */\n  function boot() {\n    var el = document.getElementById('tly-gifts-rules');\n    var limEl = document.getElementById('tly-limits-rules');\n    var custEl = document.getElementById('tly-gifts-customer');\n    if (!el && !limEl) return;\n    var data = null;\n    try { data = el ? JSON.parse(el.textContent || 'null') : null; } catch (err) { console.error('[TLY IXTYOY] parse:', err); return; }\n    try { var ld = limEl ? JSON.parse(limEl.textContent || 'null') : null; limits = (ld && Array.isArray(ld.limits)) ? ld.limits.filter(function (l) { return l && l.enabled !== false && l.max > 0; }) : []; } catch (err) { limits = []; }\n    try { var cd = custEl ? JSON.parse(custEl.textContent || 'null') : null; customerTiers = ((cd && cd.tiers) || []).map(function (x) { return String(x).toLowerCase(); }); } catch (err) { customerTiers = []; }\n    injectStyle();\n    rules = (data && Array.isArray(data.rules)) ? data.rules.slice() : [];\n    rules = rules.map(function (r, i) { r.__i = i; return r; });\n    rules.sort(function (a, b) { return ((b.priority || 0) - (a.priority || 0)) || (a.__i - b.__i); });\n    interceptFetch();\n    interceptXHR();\n    document.addEventListener('click', onDocClick, true);\n    observeCartDom();\n    schedule();\n    document.dispatchEvent(new CustomEvent('tly:ixtyoy:ready', { detail: { rules: rules, version: VERSION } }));\n  }\n\n  /* --------------------------------------------------------- interception */\n  function interceptFetch() {\n    var orig = window.fetch;\n    window.fetch = async function (input) {\n      var url = typeof input === 'string' ? input : (input && input.url) || '';\n      var isMut = CART_MUT_RE.test(url);\n      var response = await orig.apply(this, arguments);\n      if (isMut && response && response.ok) foreignChange();\n      return response;\n    };\n  }\n  function interceptXHR() {\n    var origOpen = XMLHttpRequest.prototype.open;\n    var origSend = XMLHttpRequest.prototype.send;\n    XMLHttpRequest.prototype.open = function (method, url) { this.__tlyUrl = url; return origOpen.apply(this, arguments); };\n    XMLHttpRequest.prototype.send = function () {\n      if (this.__tlyUrl && CART_MUT_RE.test(String(this.__tlyUrl))) {\n        this.addEventListener('load', function () { if (this.status >= 200 && this.status < 300) foreignChange(); });\n      }\n      return origSend.apply(this, arguments);\n    };\n  }\n  // A cart change made by someone else (theme, customer, another script).\n  function foreignChange() {\n    if (running) again = true; else schedule();\n  }\n  function schedule() {\n    if (timer) clearTimeout(timer);\n    timer = setTimeout(run, DEBOUNCE_MS);\n  }\n\n  /* ------------------------------------------------------------- main loop */\n  async function run() {\n    timer = null;\n    if (running) { again = true; return; }\n    running = true;\n    var loops = 0;\n    try {\n      do {\n        again = false;\n        await reconcileOnce();\n        loops++;\n      } while (again && loops < 3);\n    } catch (e) {\n      console.error('[TLY IXTYOY]', e);\n    } finally {\n      running = false;\n    }\n  }\n\n  async function reconcileOnce() {\n    var cart = await getCart();\n    await ensureSrc();\n    var clamped = await clampPaid(cart);\n    if (clamped) cart = await getCart();\n    var plan = compute(cart);\n    var firingIds = plan.matched.map(function (r) { return r.id; });\n    Object.keys(popupOpen).forEach(function (rid) {\n      if (popupOpen[rid] && firingIds.indexOf(rid) < 0 && hasPopup() && window.TLY_GIFTS_POPUP.isOpen()) { window.TLY_GIFTS_POPUP.close(false); }\n    });\n    var applied = await apply(cart, plan.desired);\n    var changed = applied || clamped;\n    if (applied) cart = await getCart();\n    lastCart = cart;\n    if (changed) await refreshSections();\n    if (changed) { var cd = document.querySelector('cart-drawer'); if (cd) cd.classList.toggle('is-empty', !cart.item_count); }\n    decorate();\n    if (changed) { announceRefresh(cart); }\n    document.dispatchEvent(new CustomEvent('tly:ixtyoy:evaluated', { detail: { matched: plan.matched, cart: cart, pending: plan.pending } }));\n    openPendingPopups(plan, cart);\n  }\n\n  /* ----------------------------------------------------------- rule maths */\n  function inWindow(rule, now) {\n    var s = rule.starts_at ? Date.parse(rule.starts_at) : null;\n    var e = rule.ends_at ? Date.parse(rule.ends_at) : null;\n    if (s !== null && !isNaN(s) && now < s) return false;\n    if (e !== null && !isNaN(e) && now >= e) return false;\n    return true;\n  }\n  function inList(list, v) {\n    if (!Array.isArray(list)) return false;\n    for (var i = 0; i < list.length; i++) { if (list[i] === '*' || Number(list[i]) === Number(v)) return true; }\n    return false;\n  }\n  function lineMatches(rule, line) {\n    var t = rule.trigger || {};\n    switch (t.type) {\n      case 'products':\n        return inList(t.variant_ids, line.variant_id) || inList(t.product_ids, line.product_id);\n      case 'product_type':\n        return !!t.product_type && String(line.product_type || '').toLowerCase() === String(t.product_type).toLowerCase();\n      case 'collection':\n        // cart.js carries no collection membership; only matches if a theme/app supplies line.collections (ids).\n        return Array.isArray(line.collections) && line.collections.some(function (c) { return inList([].concat(t.collection_id), c); });\n      default:\n        return false;\n    }\n  }\n  function isGiftLine(l) {\n    var p = l.properties || {};\n    if (p[PROP_RULE] || p[LEGACY_FLAG]) return true;\n    return l.product_type === 'Gift' && Number(l.original_price) === 0; // orphan $0 tly-gift line\n  }\n\n  // Returns {desired: Map('ruleId|variantId' -> qty), matched:[rules], pending:[{rule,required,selected,trigger}]}\n  function compute(cart) {\n    var now = Date.now();\n    var nonGift = cart.items.filter(function (l) { return !isGiftLine(l); });\n    var subtotal = nonGift.reduce(function (s, l) { return s + (l.final_line_price != null ? l.final_line_price : l.line_price || 0); }, 0);\n    var claims = []; // {priority, keys:Set}\n    var desired = new Map();\n    var matched = [];\n    var pending = [];\n    var firing = {};\n\n    for (var i = 0; i < rules.length; i++) {\n      var rule = rules[i];\n      if (!inWindow(rule, now)) continue;\n      if (!audienceOk(rule)) continue;\n      var t = rule.trigger || {};\n      var minQty = Math.max(1, Number(t.min_qty) || 1);\n      var sumQty = 0, lines = [], fires = false, mult = 1;\n      if (t.type === 'cart_total') {\n        // payload gives min_total in store currency units (dollars); cart.js is in cents.\n        fires = subtotal >= Math.round(Number(t.min_total || 0) * 100);\n        sumQty = nonGift.reduce(function (s, l) { return s + l.quantity; }, 0);\n        lines = nonGift;\n      } else {\n        lines = nonGift.filter(function (l) {\n          if (!lineMatches(rule, l)) return false;\n          // stop_lower_priority: a higher-priority firing rule claimed this line\n          for (var c = 0; c < claims.length; c++) {\n            if (claims[c].priority > (rule.priority || 0) && claims[c].keys.has(l.key)) return false;\n          }\n          return true;\n        });\n        sumQty = lines.reduce(function (s, l) { return s + l.quantity; }, 0);\n        fires = sumQty >= minQty;\n        mult = rule.multiply ? Math.max(1, Math.floor(sumQty / minQty)) : 1;\n      }\n      if (!fires) continue;\n      matched.push(rule);\n      firing[rule.id] = true;\n      if (rule.stop_lower_priority && t.type !== 'cart_total') {\n        var ks = new Set(); lines.forEach(function (l) { ks.add(l.key); });\n        claims.push({ priority: rule.priority || 0, keys: ks });\n      }\n\n      rule.__mult = mult;\n      (rule.gifts || []).forEach(function (g) {\n        addDesired(desired, rule.id, g.twin_variant_id, Number(g.qty || 1) * mult);\n      });\n      if (rule.pick && (rule.pick.options || []).length) {\n        var required = pickN(rule) * mult;\n        var cur = currentRuleQty(cart, rule);          // twin -> qty from cart\n        var sel;\n        var pk = picks[rule.id];\n        if (pk && sumVals(pk) === required) {\n          sel = clampToGifts(pk, rule);\n        } else {\n          if (pk) delete picks[rule.id];\n          var kept = trimTo(cur, rule, required);\n          var keptTotal = sumVals(kept);\n          var pkey = rule.id + ':' + required;\n          if (popupOpen[rule.id]) {\n            sel = kept;                                  // popup on screen: leave lines as they are\n          } else if (keptTotal >= required) {\n            sel = kept;\n          } else if (!prompted[pkey] && hasPopup()) {\n            sel = kept;\n            pending.push({ rule: rule, required: required, selected: kept, trigger: lines[0] || null, key: pkey });\n          } else {\n            sel = topUpDefault(kept, rule, required);   // popup already shown/dismissed or unavailable\n          }\n        }\n        Object.keys(sel).forEach(function (tv) { if (sel[tv] > 0) addDesired(desired, rule.id, tv, sel[tv]); });\n      }\n    }\n    capGiftLimits(desired, nonGift);\n    capPerGift(desired);\n    // forget picks / prompt flags for rules that no longer fire\n    Object.keys(picks).forEach(function (rid) { if (!firing[rid]) delete picks[rid]; });\n    Object.keys(prompted).forEach(function (k) { if (!firing[k.split(':')[0]]) delete prompted[k]; });\n    return { desired: desired, matched: matched, pending: pending };\n  }\n\n  /* ------------------------------------------------ tiers, limits, caps */\n  function audienceOk(rule) {\n    var a = rule.audience;\n    if (!a || a.type !== 'tiers') return true;\n    var want = (a.tiers || []).map(function (x) { return String(x).toLowerCase(); });\n    return customerTiers.some(function (t) { return want.indexOf(t) >= 0; });\n  }\n  function limMatch(L, o) {\n    var s = L.scope || {};\n    switch (s.type) {\n      case 'each_product': return true;\n      case 'products': return inList(s.product_ids, o.product_id) || inList(s.variant_ids, o.variant_id);\n      case 'variants': return inList(s.variant_ids, o.variant_id);\n      case 'product_type': return !!s.product_type && String(o.product_type || '').toLowerCase() === String(s.product_type).toLowerCase();\n      default: return false;\n    }\n  }\n  function limGroup(L, o) { return (L.scope && L.scope.type === 'each_product') ? 'p' + o.product_id : 'all'; }\n  function limMsg(L) { return L.message || ('Limit ' + L.max + ' per order'); }\n  function hasGiftLimits() { return limits.some(function (L) { return L.applies_to === 'gifts' || L.applies_to === 'both'; }); }\n  // product info of the SOURCE product behind each gift twin (limits are written against real products)\n  async function ensureSrc() {\n    if (!hasGiftLimits()) return;\n    var todo = [];\n    rules.forEach(function (r) { (r.gifts || []).concat(pickOpts(r)).forEach(function (g) { if (!srcInfo[g.twin_variant_id] && g.source_handle) todo.push(g); }); });\n    var byHandle = {};\n    for (var i = 0; i < todo.length; i++) {\n      var g = todo[i];\n      try {\n        var p = byHandle[g.source_handle] || (byHandle[g.source_handle] = await nativeFetch('/products/' + encodeURIComponent(g.source_handle) + '.js').then(function (r) { return r.json(); }));\n        srcInfo[g.twin_variant_id] = { product_id: p.id, variant_id: g.source_variant_id, product_type: p.type };\n      } catch (e) { srcInfo[g.twin_variant_id] = { product_id: 0, variant_id: g.source_variant_id, product_type: '' }; }\n    }\n  }\n  function giftObj(l) { return srcInfo[l.variant_id] || null; }\n  async function clampPaid(cart) {\n    if (!limits.length) return false;\n    var qty = {}; cart.items.forEach(function (l) { qty[l.key] = l.quantity; });\n    var msgs = [];\n    limits.forEach(function (L) {\n      if (L.applies_to === 'gifts') return;\n      var groups = {};\n      function grp(gk) { return groups[gk] || (groups[gk] = { paid: [], gift: 0 }); }\n      cart.items.forEach(function (l) {\n        if (isGiftLine(l)) {\n          if (L.applies_to === 'both') { var o = giftObj(l); if (o && limMatch(L, o)) grp(limGroup(L, o)).gift += l.quantity; }\n          return;\n        }\n        if (limMatch(L, l)) grp(limGroup(L, l)).paid.push(l);\n      });\n      Object.keys(groups).forEach(function (gk) {\n        var g = groups[gk]; var cap = Math.max(0, L.max - g.gift);\n        var total = g.paid.reduce(function (s, l) { return s + qty[l.key]; }, 0);\n        var over = total - cap; if (over <= 0) return;\n        for (var i = g.paid.length - 1; i >= 0 && over > 0; i--) { var l = g.paid[i]; var cut = Math.min(qty[l.key], over); qty[l.key] -= cut; over -= cut; }\n        if (msgs.indexOf(limMsg(L)) < 0) msgs.push(limMsg(L));\n      });\n    });\n    var updates = {}, any = false;\n    cart.items.forEach(function (l) { if (qty[l.key] !== l.quantity) { updates[l.key] = qty[l.key]; any = true; } });\n    if (!any) return false;\n    var r = await nativeFetch('/cart/update.js', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' }, body: JSON.stringify({ updates: updates }) });\n    if (!r.ok) { console.error('[TLY IXTYOY] limit clamp failed', r.status); return false; }\n    showToast(msgs.join(' '));\n    return true;\n  }\n  // limits that apply to free gifts (applies_to gifts/both) cap what the engine adds\n  function capGiftLimits(desired, nonGift) {\n    limits.forEach(function (L) {\n      if (L.applies_to !== 'gifts' && L.applies_to !== 'both') return;\n      var paid = {};\n      if (L.applies_to === 'both') nonGift.forEach(function (l) { if (limMatch(L, l)) { var k = limGroup(L, l); paid[k] = (paid[k] || 0) + l.quantity; } });\n      var used = {};\n      desired.forEach(function (q, k) {\n        var o = srcInfo[k.split('|')[1]]; if (!o || !limMatch(L, o)) return;\n        var gk = limGroup(L, o); var left = Math.max(0, L.max - (paid[gk] || 0) - (used[gk] || 0));\n        var nq = Math.min(q, left); used[gk] = (used[gk] || 0) + nq; desired.set(k, nq);\n      });\n    });\n  }\n  // per-gift max_per_order across ALL rules\n  function capPerGift(desired) {\n    var caps = {};\n    rules.forEach(function (r) { (r.gifts || []).concat(pickOpts(r)).forEach(function (g) { var m = Number(g.max_per_order); if (m > 0) caps[g.twin_variant_id] = Math.min(caps[g.twin_variant_id] || 1e9, m); }); });\n    var used = {};\n    desired.forEach(function (q, k) {\n      var tv = k.split('|')[1]; if (caps[tv] == null) return;\n      var nq = Math.max(0, Math.min(q, caps[tv] - (used[tv] || 0))); used[tv] = (used[tv] || 0) + nq; desired.set(k, nq);\n    });\n  }\n  function injectStyle() {\n    if (document.getElementById('tly-limit-style')) return;\n    var st = document.createElement('style'); st.id = 'tly-limit-style';\n    st.textContent = '#tly-limit-toast{position:fixed;top:72px;right:16px;left:16px;margin:0 auto;max-width:360px;z-index:2147483000;background:#1a1a1a;color:#fff;border:2px solid #f5c542;border-radius:12px;padding:12px 16px;font:600 14px/1.4 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;box-shadow:0 8px 24px rgba(0,0,0,.35);opacity:0;transform:translateY(-8px);pointer-events:none;transition:opacity .2s,transform .2s}#tly-limit-toast.is-on{opacity:1;transform:none}.tly-limit-note{margin:6px 0 10px;font-size:14px;font-weight:600;color:#8a5a00}@media(min-width:640px){#tly-limit-toast{left:auto;right:24px}}';\n    document.head.appendChild(st);\n  }\n  function showToast(msg) {\n    var t = document.getElementById('tly-limit-toast');\n    if (!t) { t = document.createElement('div'); t.id = 'tly-limit-toast'; t.setAttribute('role', 'status'); t.setAttribute('aria-live', 'polite'); document.body.appendChild(t); }\n    t.textContent = msg;\n    void t.offsetWidth; t.classList.add('is-on');\n    clearTimeout(toastTimer); toastTimer = setTimeout(function () { t.classList.remove('is-on'); }, 5000);\n  }\n  function limitFor(o, variantIds) {\n    var best = null;\n    limits.forEach(function (L) {\n      if (L.applies_to === 'gifts') return;\n      var hit = limMatch(L, o) || (variantIds && (L.scope || {}).type !== 'each_product' && variantIds.some(function (v) { return limMatch(L, { product_id: o.product_id, variant_id: v, product_type: o.product_type }); }));\n      if (hit && (!best || L.max < best.max)) best = L;\n    });\n    return best;\n  }\n  function decorateLimits() {\n    if (!limits.length) return;\n    // product page: \"Limit N per order\" under the price + quantity max\n    var m = location.pathname.match(/\\/products\\/([^\\/?#]+)/);\n    if (m) {\n      var handle = decodeURIComponent(m[1]);\n      if (!prodCache || prodCache.handle !== handle) {\n        prodCache = { handle: handle, loading: true };\n        nativeFetch('/products/' + encodeURIComponent(handle) + '.js').then(function (r) { return r.json(); })\n          .then(function (p) { prodCache = { handle: handle, p: p }; decorate(); })\n          .catch(function () { prodCache = { handle: handle, p: null }; });\n      } else if (prodCache.p) {\n        var p = prodCache.p;\n        var L = limitFor({ product_id: p.id, variant_id: 0, product_type: p.type }, p.variants.map(function (v) { return v.id; }));\n        document.querySelectorAll('.tly-limit-note').forEach(function (n) { if (!L || n.textContent !== limMsg(L)) n.remove(); });\n        if (L) {\n          document.querySelectorAll('form[action*=\"/cart/add\"] input[name=\"quantity\"], product-info input[name=\"quantity\"]').forEach(function (inp) {\n            inp.setAttribute('max', L.max);\n            if (parseInt(inp.value, 10) > L.max) inp.value = L.max;\n          });\n          if (!document.querySelector('.tly-limit-note')) {\n            var pr = document.querySelector('product-info [id^=\"price-\"], .product__info-container [id^=\"price-\"], main [id^=\"price-\"], main .price');\n            if (pr) { var note = document.createElement('div'); note.className = 'tly-limit-note'; note.textContent = limMsg(L); pr.insertAdjacentElement('afterend', note); }\n          }\n        }\n      }\n    }\n  }\n\n  function addDesired(map, rid, tv, qty) {\n    var k = rid + '|' + tv;\n    map.set(k, (map.get(k) || 0) + qty);\n  }\n  function sumVals(o) { return Object.keys(o).reduce(function (s, k) { return s + (o[k] || 0); }, 0); }\n  function pickOpts(rule) { return (rule.pick && rule.pick.options) || []; }\n  function pickN(rule) { return Math.max(1, Number(rule.pick && rule.pick.pick_n) || 1); }\n  function giftIds(rule) { return pickOpts(rule).map(function (g) { return String(g.twin_variant_id); }); }\n  function currentRuleQty(cart, rule) {\n    var out = {}; var ids = giftIds(rule);\n    cart.items.forEach(function (l) {\n      var p = l.properties || {};\n      if (p[PROP_RULE] === rule.id && String(p[PROP_VER]) === '2' && ids.indexOf(String(l.variant_id)) >= 0) {\n        out[l.variant_id] = (out[l.variant_id] || 0) + l.quantity;\n      }\n    });\n    // an option that is also an automatic gift: the auto units are not pick units\n    (rule.gifts || []).forEach(function (g) {\n      var k = g.twin_variant_id;\n      if (out[k]) { out[k] = Math.max(0, out[k] - Number(g.qty || 1) * (rule.__mult || 1)); if (!out[k]) delete out[k]; }\n    });\n    return out;\n  }\n  function clampToGifts(sel, rule) {\n    var out = {}; var ids = giftIds(rule);\n    Object.keys(sel).forEach(function (k) { if (ids.indexOf(String(k)) >= 0 && sel[k] > 0) out[k] = sel[k]; });\n    return out;\n  }\n  function trimTo(cur, rule, required) {\n    var out = {}; var left = required;\n    pickOpts(rule).forEach(function (g) {\n      var q = cur[g.twin_variant_id] || 0;\n      var take = Math.min(q, left);\n      if (take > 0) { out[g.twin_variant_id] = take; left -= take; }\n    });\n    return out;\n  }\n  function defaultGift(rule) {\n    var gs = pickOpts(rule);\n    for (var i = 0; i < gs.length; i++) if (gs[i].default) return gs[i];\n    return gs[0];\n  }\n  function topUpDefault(sel, rule, required) {\n    var out = {}; Object.keys(sel).forEach(function (k) { out[k] = sel[k]; });\n    var need = required - sumVals(out);\n    var d = defaultGift(rule);\n    if (need > 0 && d) out[d.twin_variant_id] = (out[d.twin_variant_id] || 0) + need;\n    return out;\n  }\n\n  /* ---------------------------------------------------------- applying */\n  async function apply(cart, desired) {\n    var groups = new Map(); // 'ruleId|variantId' or '*orphan|key' -> [lines]\n    cart.items.forEach(function (l) {\n      if (!isGiftLine(l)) return;\n      var p = l.properties || {};\n      var ok = p[PROP_RULE] && String(p[PROP_VER]) === '2';\n      var gk = ok ? (p[PROP_RULE] + '|' + l.variant_id) : ('*orphan|' + l.key);\n      if (!groups.has(gk)) groups.set(gk, []);\n      groups.get(gk).push(l);\n    });\n    var updates = {}; var hasUpdates = false;\n    var adds = [];\n    groups.forEach(function (lines, gk) {\n      var want = gk.indexOf('*orphan|') === 0 ? 0 : (desired.get(gk) || 0);\n      var have = lines.reduce(function (s, l) { return s + l.quantity; }, 0);\n      if (have === want) return;\n      if (want < have) {\n        var remain = want;\n        lines.forEach(function (l) {\n          if (remain >= l.quantity) { remain -= l.quantity; return; }\n          updates[l.key] = remain; remain = 0; hasUpdates = true;\n        });\n      } else {\n        adds.push({ gk: gk, qty: want - have });\n      }\n    });\n    desired.forEach(function (qty, gk) {\n      if (qty > 0 && !groups.has(gk)) adds.push({ gk: gk, qty: qty });\n    });\n\n    var changed = false;\n    if (hasUpdates) {\n      var r = await nativeFetch('/cart/update.js', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' }, body: JSON.stringify({ updates: updates }) });\n      if (!r.ok) console.error('[TLY IXTYOY] update failed', r.status);\n      changed = true;\n    }\n    var items = [];\n    adds.forEach(function (a) {\n      var parts = a.gk.split('|'); var rid = parts[0]; var vid = Number(parts[1]);\n      if (failed[a.gk] && Date.now() - failed[a.gk] < FAIL_COOLDOWN_MS) return;\n      if (isLocked(vid)) return;\n      items.push({ id: vid, quantity: a.qty, properties: (function () { var o = {}; o[PROP_RULE] = rid; o[PROP_VER] = '2'; return o; })(), __gk: a.gk });\n    });\n    if (items.length) {\n      items.forEach(function (it) { lock(it.id); });\n      try {\n        var res = await nativeFetch('/cart/add.js', {\n          method: 'POST', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' },\n          body: JSON.stringify({ items: items.map(function (it) { return { id: it.id, quantity: it.quantity, properties: it.properties }; }) })\n        });\n        if (!res.ok) {\n          // Retry one by one so a single bad variant can't block the rest.\n          for (var i = 0; i < items.length; i++) {\n            var it = items[i];\n            var r1 = await nativeFetch('/cart/add.js', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' },\n              body: JSON.stringify({ items: [{ id: it.id, quantity: it.quantity, properties: it.properties }] }) });\n            if (!r1.ok) { failed[it.__gk] = Date.now(); console.error('[TLY IXTYOY] add failed', it.id, r1.status); } else changed = true;\n          }\n        } else { changed = true; }\n      } catch (err) {\n        console.error('[TLY IXTYOY] add:', err);\n      } finally {\n        items.forEach(function (it) { unlock(it.id); });\n      }\n    }\n    return changed;\n  }\n\n  /* ------------------------------------------------------------- popup */\n  function hasPopup() { return !!(window.TLY_GIFTS_POPUP && typeof window.TLY_GIFTS_POPUP.open === 'function'); }\n  function openPendingPopups(plan, cart) {\n    if (!plan.pending.length || !hasPopup()) return;\n    var p = plan.pending[0]; // one at a time; the next is picked up after this one resolves\n    if (popupOpen[p.rule.id] || anyPopupOpen()) return;\n    prompted[p.key] = true;\n    showPicker(p.rule, p.required, p.selected, 'new', p.trigger);\n  }\n  function anyPopupOpen() { return Object.keys(popupOpen).some(function (k) { return popupOpen[k]; }); }\n\n  function showPicker(rule, required, selected, mode, triggerLine) {\n    popupOpen[rule.id] = true;\n    var def = defaultGift(rule);\n    window.TLY_GIFTS_POPUP.open({\n      ruleId: rule.id,\n      gifts: pickOpts(rule).map(function (g) { return { twin_variant_id: g.twin_variant_id, title: g.title, source_handle: g.source_handle, twin_handle: g.twin_handle, image: g.image || cartImage(g.twin_variant_id), default: !!g.default }; }),\n      required: required,\n      selected: selected || {},\n      defaultTwin: def ? def.twin_variant_id : null,\n      mode: mode,\n      triggerTitle: triggerLine ? (triggerLine.product_title || '') : ((triggerForRule(rule) || {}).product_title || ''),\n      onConfirm: function (sel) {\n        popupOpen[rule.id] = false;\n        picks[rule.id] = sel;\n        schedule();\n      },\n      onDismiss: function () {\n        popupOpen[rule.id] = false;\n        if (mode === 'new') { picks[rule.id] = topUpDefault(trimTo(currentRuleQty(lastCart || { items: [] }, rule), rule, required), rule, required); }\n        schedule();\n      }\n    });\n  }\n  function triggerForRule(rule) {\n    if (!lastCart) return null;\n    for (var i = 0; i < lastCart.items.length; i++) { var l = lastCart.items[i]; if (!isGiftLine(l) && lineMatches(rule, l)) return l; }\n    return null;\n  }\n  function cartImage(variantId) {\n    if (!lastCart) return null;\n    for (var i = 0; i < lastCart.items.length; i++) if (String(lastCart.items[i].variant_id) === String(variantId)) return lastCart.items[i].image;\n    return null;\n  }\n  async function openPicker(ruleId) {\n    var rule = rules.filter(function (r) { return r.id === ruleId; })[0];\n    if (!rule || !hasPopup() || popupOpen[ruleId]) return;\n    var cart = await getCart(); lastCart = cart;\n    var plan = compute(cart);\n    var fired = plan.matched.filter(function (r) { return r.id === ruleId; })[0];\n    if (!fired) return;\n    var t = rule.trigger || {};\n    var sumQty = cart.items.filter(function (l) { return !isGiftLine(l) && lineMatches(rule, l); }).reduce(function (s, l) { return s + l.quantity; }, 0);\n    var mult = rule.multiply ? Math.max(1, Math.floor(sumQty / Math.max(1, Number(t.min_qty) || 1))) : 1;\n    var required = pickN(rule) * mult;\n    showPicker(rule, required, trimTo(currentRuleQty(cart, rule), rule, required), 'change', null);\n  }\n  function onDocClick(e) {\n    var t = e.target && e.target.closest ? e.target.closest('[data-tly-choose]') : null;\n    if (!t) return;\n    e.preventDefault(); e.stopPropagation();\n    openPicker(t.getAttribute('data-tly-choose'));\n  }\n\n  /* --------------------------------------------- cart UI: sections, badge */\n  async function getCart() {\n    var res = await nativeFetch('/cart.js', { headers: { 'Accept': 'application/json' }, cache: 'no-store' });\n    return res.json();\n  }\n\n  // Discover which sections to re-render from the theme's own cart components (no hard-coded ids).\n  function discoverSections() {\n    var out = []; var seen = {};\n    ['cart-drawer', 'cart-items', 'cart-notification'].forEach(function (tag) {\n      var el = document.querySelector(tag);\n      if (el && typeof el.getSectionsToRender === 'function') {\n        try { el.getSectionsToRender().forEach(function (s) { var k = s.id + '|' + s.section; if (!seen[k]) { seen[k] = 1; out.push(s); } }); } catch (e) { /* ignore */ }\n      }\n    });\n    if (!out.length) {\n      document.querySelectorAll('[id^=\"shopify-section-\"]').forEach(function (w) {\n        if (/cart/i.test(w.id)) { var name = w.id.replace('shopify-section-', ''); out.push({ id: w.id, section: name, selector: null }); }\n      });\n    }\n    return out;\n  }\n  async function refreshSections() {\n    try {\n      var list = discoverSections();\n      if (!list.length) return;\n      var names = []; list.forEach(function (s) { var n = s.section || s.id; if (names.indexOf(n) < 0) names.push(n); });\n      var res = await nativeFetch('/?sections=' + encodeURIComponent(names.join(',')), { headers: { 'Accept': 'application/json' }, cache: 'no-store' });\n      if (!res.ok) return;\n      var map = await res.json();\n      list.forEach(function (s) {\n        var html = map[s.section || s.id]; if (!html) return;\n        var host = document.getElementById(s.id) || document.getElementById('shopify-section-' + s.id);\n        if (!host) return; // TLY-247LIVE-1104 cartfix: re-render only the section that was asked for; skip it if its element is not on the page\n        var doc = new DOMParser().parseFromString(html, 'text/html');\n        var from = s.selector ? doc.querySelector(s.selector) : (doc.querySelector('.shopify-section') || doc.body);\n        var to = s.selector ? (host.querySelector(s.selector) || host) : host; // Dawn's rule; never fall back to the first .shopify-section on the page\n        if (from && to) to.innerHTML = from.innerHTML;\n      });\n    } catch (e) { console.error('[TLY IXTYOY] sections', e); }\n  }\n  function announceRefresh(cart) {\n    document.dispatchEvent(new CustomEvent('cart:refresh', { detail: { source: 'tly-ixtyoy', cart: cart } }));\n    try { if (typeof window.publish === 'function' && window.PUB_SUB_EVENTS) window.publish(window.PUB_SUB_EVENTS.cartUpdate, { source: 'tly-ixtyoy', cartData: cart }); } catch (e) { /* ignore */ }\n  }\n\n  var decorating = false, obs = null, obsTimer = null;\n  function decorate() {\n    if (!lastCart) return;\n    decorating = true;\n    if (obs) obs.disconnect();\n    try {\n      decorateLimits();\n      var rows = document.querySelectorAll('[id^=\"CartDrawer-Item-\"], [id^=\"CartItem-\"]');\n      rows.forEach(function (row) {\n        var idx = parseInt((row.id.match(/(\\d+)$/) || [])[1], 10);\n        var item = lastCart.items[idx - 1];\n        if (!item) return;\n        var vin = row.querySelector('[data-quantity-variant-id]');\n        if (vin && String(vin.getAttribute('data-quantity-variant-id')) !== String(item.variant_id)) return;\n        var gift = isGiftLine(item);\n        row.classList.toggle('tly-gift-line', gift);\n        var old = row.querySelector('.tly-gift-badge');\n        if (!gift) {\n          var CL = limitFor(item, [item.variant_id]);\n          if (CL) row.querySelectorAll('input.quantity__input, quantity-input input').forEach(function (n) { n.setAttribute('max', CL.max); });\n        }\n        if (!gift) { if (old) old.remove(); var oq = row.querySelector('.tly-gift-qty'); if (oq) oq.remove(); var oc = row.querySelector('.tly-gift-change'); if (oc) oc.remove(); return; }\n        var host = row.querySelector('.cart-item__details') || row.querySelector('.cart-item__name') || row;\n        if (!old) {\n          var b = document.createElement('span'); b.className = 'tly-gift-badge'; b.textContent = 'FREE GIFT';\n          host.insertBefore(b, host.firstChild);\n        }\n        var qhost = row.querySelector('.cart-item__quantity') || host;\n        var q = row.querySelector('.tly-gift-qty');\n        if (!q) { q = document.createElement('span'); q.className = 'tly-gift-qty'; qhost.appendChild(q); }\n        q.textContent = 'Qty ' + item.quantity;\n        row.querySelectorAll('quantity-input input, quantity-input button, .quantity__input, .quantity__button').forEach(function (n) { n.disabled = true; n.setAttribute('aria-disabled', 'true'); n.tabIndex = -1; });\n        var rid = (item.properties || {})[PROP_RULE];\n        var rule = rules.filter(function (r) { return r.id === rid; })[0];\n        var link = row.querySelector('.tly-gift-change');\n        if (rule && rule.pick && hasPopup() && pickOpts(rule).some(function (o) { return String(o.twin_variant_id) === String(item.variant_id); })) {\n          if (!link) { link = document.createElement('button'); link.type = 'button'; link.className = 'tly-gift-change'; link.textContent = 'Choose your free gift'; host.appendChild(link); }\n          link.setAttribute('data-tly-choose', rid);\n        } else if (link) { link.remove(); }\n      });\n    } finally {\n      decorating = false;\n      attachObserver();\n    }\n  }\n  function attachObserver() {\n    if (!obs) return;\n    obs.observe(document.body, { childList: true, subtree: true });\n  }\n  function observeCartDom() {\n    obs = new MutationObserver(function () {\n      if (decorating) return;\n      if (obsTimer) clearTimeout(obsTimer);\n      obsTimer = setTimeout(decorate, 80);\n    });\n    attachObserver();\n  }\n\n  /* ------------------------------------------------------------- helpers */\n  function isLocked(v) { var e = addLock.get(v); if (!e) return false; if (Date.now() > e) { addLock.delete(v); return false; } return true; }\n  function lock(v) { addLock.set(v, Date.now() + LOCK_TTL_MS); }\n  function unlock(v) { addLock.delete(v); }\n\n  window.TLY_IXTYOY = {\n    version: VERSION,\n    getRules: function () { return rules.slice(); },\n    getLimits: function () { return limits.slice(); },\n    reevaluate: function () { schedule(); return Promise.resolve(); },\n    compute: function (cart) { var p = compute(cart); return { desired: Array.from(p.desired.entries()), matched: p.matched.map(function (r) { return r.id; }), pending: p.pending.map(function (x) { return x.rule.id; }) }; },\n    openPicker: openPicker,\n    state: function () { return { picks: picks, prompted: prompted, popupOpen: popupOpen, running: running, tiers: customerTiers }; }\n  };\n\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', boot);\n  else boot();\n})();\n"],
  "mappings": "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",
  "names": ["g", "l", "p", "it"]
}
