{
  "version": 3,
  "sources": ["/cdn/shop/t/69/assets/tnf-recently-viewed.js?cb=20260527b"],
  "sourcesContent": ["/* TNF Recently Viewed \u2014 2026-10-19 v12.\n   v12 (2026-10-19 Diana): collapse redirect-alias duplicates \u2014 a stale sample\n   seed using an OLD handle that 301s to the same product (e.g.\n   fuul-...-box-of-8 -> fuul-...-bites) no longer renders twice. We capture the\n   canonical handle from /products/<handle>.js and drop the alias card, keeping\n   the canonical-handle card. See __tnfCanonical + claimOrRemove().\n\n   TNF Recently Viewed \u2014 2026-05-21 v11.\n   Horizontal-scrolling product strip under PDP FAQ. Products only \u2014 no\n   collection or brand pills (Diana 2026-05-21).\n\n   v11 (2026-05-21):\n   - Visual style + scroll behavior NOW MATCH \"Discover Something New\"\n     (variant-rfy-* in variant-bundle-common.js): blue gradient inner bg,\n     square 145px / 180px cards, prev/next arrows on desktop, swipe-hint on\n     mobile, right-edge fade, grab-to-scroll on desktop. Keeps the tnf-rv-*\n     class namespace for compatibility but mirrors RFY rules exactly.\n   - BULLETPROOF SOLD-OUT FILTER. Three layers:\n       (1) sync filter on `p.available !== false` (existing).\n       (2) shared cache `window.__tnfAvailability = { handle: true|false }`\n           hydrated from /products/<handle>.js for any handle we render whose\n           availability is unknown. Persisted to sessionStorage (12h TTL).\n       (3) once a handle resolves to `false`, the card is removed from the\n           DOM AND added to `window.__tnfSoldOutHandles` so Discover\n           Something New (and any other section) can hard-filter against the\n           same set. Pre-render filter also drops anything already known\n           sold-out. Unknown = OPTIMISTIC show (no empty section), then\n           background verify + remove if confirmed unavailable.\n\n   Preserved from v10:\n   - 18-product preload (MIN_DESIRED), always top up from collection samples\n   - Cart filter (notInCart) + cart-change listeners + 30s safety poll\n   - GA4 `tnf_continue_exploring_click` event\n   - Smart heading swap based on browse history\n   - Cross-section dedup via window.__tnfShownHandles\n   - preview_theme_id sticky link rewriter\n*/\n(function () {\n  if (window._tnfRvInited) return;\n  window._tnfRvInited = true;\n\n  // \u2500\u2500 0) Make preview_theme_id sticky on every internal link click \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n  var _previewMeta = document.querySelector('meta[name=\"tnf-rv-preview-id\"]');\n  var _previewId = _previewMeta ? _previewMeta.content : '';\n  if (!_previewId) {\n    var m = window.location.search.match(/[?&]preview_theme_id=(\\d+)/);\n    if (m) _previewId = m[1];\n  }\n  if (_previewId) {\n    document.addEventListener('click', function (e) {\n      var a = e.target && e.target.closest && e.target.closest('a[href]');\n      if (!a) return;\n      var href = a.getAttribute('href') || '';\n      if (!href) return;\n      if (/^(https?:)?\\/\\//i.test(href) && href.indexOf(window.location.host) === -1) return;\n      if (/^(#|mailto:|tel:|javascript:)/i.test(href)) return;\n      if (href.indexOf('preview_theme_id=') !== -1) return;\n      if (!/^\\/?(products|collections|pages|blogs|search|account|cart|policies)\\b/.test(href)) return;\n      var sep = href.indexOf('?') === -1 ? '?' : '&';\n      a.setAttribute('href', href + sep + 'preview_theme_id=' + _previewId);\n    }, true);\n  }\n\n  var KEY_PRODUCTS = 'tnf:rv:products';\n  var KEY_VENDORS = 'tnf:rv:vendors';\n  var KEY_COLLECTIONS = 'tnf:rv:collections';\n  var KEY_AVAILABILITY = 'tnf:rv:availability';   // sessionStorage cache\n  var AVAILABILITY_TTL_MS = 12 * 60 * 60 * 1000;  // 12h\n  var MAX_PRODUCTS = 24, MAX_VENDORS = 16, MAX_COLLECTIONS = 32;\n\n  // Collection relevance \u2014 block patterns (unchanged, kept for vendors[] history\n  // capture). The render path no longer uses collections directly.\n  var BLOCK_PATTERNS = [\n    /\\b20\\d{2}\\b/,\n    /\\b(january|february|march|april|may|june|july|august|september|october|november|december)\\b/i,\n    /\\b(jan|feb|mar|apr|jun|jul|aug|sep|sept|oct|nov|dec)[-_ ]/i,\n    /spectrum/i, /\\btest(ing)?\\b/i, /\\bclearance\\b/i, /\\bsales?\\b/i,\n    /\\bbundles?\\b/i, /\\bdeals?\\b/i, /^new[-_ ]?arrivals?$/i,\n    /\\b(all|all[-_ ]?products|home(page)?|frontpage|automated)\\b/i,\n    /\\bbest[-_ ]?(of|seller)/i, /\\bgift[-_ ]?card/i, /\\bfree[-_ ]?gift/i,\n    /\\bcoupon\\b/i, /\\bpromo\\b/i, /\\bbogo\\b/i, /\\bdraft\\b/i, /\\bhidden\\b/i,\n    /\\bclaude\\b/i, /\\bwholesale\\b/i\n  ];\n\n  // \u2500\u2500 Bulletproof availability cache (v11) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n  // window.__tnfAvailability is the shared truth surface:\n  //   true  \u2192 confirmed in-stock\n  //   false \u2192 confirmed sold out (will be hidden EVERYWHERE)\n  //   undefined \u2192 unknown (assume optimistic show, verify in background)\n  //\n  // Persisted to sessionStorage so we don't re-fetch the same handle every nav.\n  // Discover Something New can read the same map for its own filter.\n  try {\n    if (!window.__tnfAvailability) {\n      var stored = sessionStorage.getItem(KEY_AVAILABILITY);\n      if (stored) {\n        var parsed = JSON.parse(stored);\n        if (parsed && typeof parsed === 'object' && parsed._t && (Date.now() - parsed._t) < AVAILABILITY_TTL_MS) {\n          window.__tnfAvailability = parsed.map || {};\n        }\n      }\n    }\n    if (!window.__tnfAvailability) window.__tnfAvailability = {};\n    if (!Array.isArray(window.__tnfSoldOutHandles)) window.__tnfSoldOutHandles = [];\n  } catch (e) {\n    window.__tnfAvailability = window.__tnfAvailability || {};\n    if (!Array.isArray(window.__tnfSoldOutHandles)) window.__tnfSoldOutHandles = [];\n  }\n  // requested-handle -> canonical handle (from /products/<handle>.js, which\n  // 301-follows merged/redirected handles). Lets us collapse redirect-alias\n  // duplicates \u2014 e.g. a stale \"fuul-...-box-of-8\" sample that resolves to the\n  // same product as \"fuul-...-bites\" (Diana 2026-10-19).\n  if (!window.__tnfCanonical) window.__tnfCanonical = {};\n  function persistAvailability() {\n    try { sessionStorage.setItem(KEY_AVAILABILITY, JSON.stringify({ _t: Date.now(), map: window.__tnfAvailability })); } catch (e) {}\n  }\n  function markSoldOut(handle) {\n    if (!handle) return;\n    window.__tnfAvailability[handle] = false;\n    if (window.__tnfSoldOutHandles.indexOf(handle) === -1) window.__tnfSoldOutHandles.push(handle);\n    persistAvailability();\n  }\n  function markInStock(handle) {\n    if (!handle) return;\n    window.__tnfAvailability[handle] = true;\n    persistAvailability();\n  }\n  // Concurrency-limited fetch queue \u2014 verifies a handle's availability via\n  // /products/<handle>.js (gives accurate `available` field for the product).\n  // Skips anything already known and dedupes inflight requests.\n  var _avInflight = {};\n  var _avQueue = [];\n  var _avActive = 0;\n  var AV_CONCURRENCY = 4;\n  function runQueue() {\n    while (_avActive < AV_CONCURRENCY && _avQueue.length) {\n      var fn = _avQueue.shift();\n      _avActive++;\n      Promise.resolve()\n        .then(fn)\n        .catch(function () {})\n        .then(function () { _avActive--; runQueue(); });\n    }\n  }\n  function verifyAvailability(handle, onResolved) {\n    if (!handle) return;\n    var known = window.__tnfAvailability[handle];\n    if (known === true || known === false) { if (onResolved) onResolved(known); return; }\n    if (_avInflight[handle]) { _avInflight[handle].push(onResolved || function () {}); return; }\n    _avInflight[handle] = [onResolved || function () {}];\n    _avQueue.push(function () {\n      return fetch('/products/' + handle + '.js', { credentials: 'same-origin', headers: { 'Accept': 'application/json' } })\n        .then(function (r) { return r.ok ? r.json() : null; })\n        .then(function (p) {\n          var ok = true; // optimistic if response was weird\n          if (p && typeof p.available === 'boolean') ok = p.available;\n          else if (p && Array.isArray(p.variants)) ok = p.variants.some(function (v) { return v && v.available; });\n          if (ok) markInStock(handle); else markSoldOut(handle);\n          // Record canonical handle so redirect-alias duplicates can be collapsed.\n          var canon = (p && p.handle) ? p.handle : handle;\n          window.__tnfCanonical[handle] = canon;\n          var cbs = _avInflight[handle] || [];\n          delete _avInflight[handle];\n          cbs.forEach(function (cb) { try { cb(ok, canon); } catch (e) {} });\n        })\n        .catch(function () {\n          // Network failure \u2014 leave as unknown, clear inflight so a future\n          // render can retry. Don't mark sold-out on transient errors.\n          var cbs = _avInflight[handle] || [];\n          delete _avInflight[handle];\n          cbs.forEach(function (cb) { try { cb(undefined); } catch (e) {} });\n        });\n    });\n    runQueue();\n  }\n\n  // \u2500\u2500 Cart-handles helper (unchanged from v10) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n  var _cartHandlesCache = null;\n  var _cartHandlesCacheAt = 0;\n  var _cartHandlesInflight = null;\n  var CART_HANDLES_TTL_MS = 5000;\n  function invalidateCartHandles() {\n    _cartHandlesCache = null; _cartHandlesCacheAt = 0; _cartHandlesInflight = null;\n  }\n  function getCartHandles() {\n    var now = Date.now();\n    if (_cartHandlesCache && (now - _cartHandlesCacheAt) < CART_HANDLES_TTL_MS) return Promise.resolve(_cartHandlesCache);\n    if (_cartHandlesInflight) return _cartHandlesInflight;\n    _cartHandlesInflight = fetch('/cart.js', { credentials: 'same-origin', headers: { 'Accept': 'application/json' } })\n      .then(function (r) { return r.ok ? r.json() : { items: [] }; })\n      .then(function (cart) {\n        var handles = ((cart && cart.items) || []).map(function (it) { return it && it.handle; }).filter(function (h) { return !!h; });\n        _cartHandlesCache = handles; _cartHandlesCacheAt = Date.now(); _cartHandlesInflight = null;\n        try { window.__tnfCartHandles = handles.slice(); } catch (e) {}\n        return handles;\n      })\n      .catch(function () {\n        _cartHandlesInflight = null;\n        var fallback = (window.__tnfCartHandles && Array.isArray(window.__tnfCartHandles)) ? window.__tnfCartHandles : [];\n        return fallback;\n      });\n    return _cartHandlesInflight;\n  }\n  try {\n    window.__tnfGetCartHandles = getCartHandles;\n    window.__tnfInvalidateCartHandles = invalidateCartHandles;\n    if (!window.__tnfCartHandles) window.__tnfCartHandles = [];\n  } catch (e) {}\n\n  function read(key) {\n    try { var raw = localStorage.getItem(key); if (!raw) return []; var d = JSON.parse(raw); return Array.isArray(d) ? d : []; } catch (e) { return []; }\n  }\n  function write(key, arr, max) {\n    try { localStorage.setItem(key, JSON.stringify(arr.slice(0, max))); } catch (e) {}\n  }\n  function upsert(arr, item, keyFn) {\n    var k = keyFn(item); if (!k) return arr;\n    var rest = arr.filter(function (x) { return keyFn(x) !== k; });\n    rest.unshift(item); return rest;\n  }\n  function readShopCols() {\n    if (window._tnfRvShopCols) return window._tnfRvShopCols;\n    var el = document.getElementById('tnf-rv-popular-collections');\n    if (!el) { window._tnfRvShopCols = []; return []; }\n    var raw;\n    try { raw = JSON.parse(el.textContent || '[]'); } catch (e) { raw = []; }\n    var items = (raw || []).filter(function (c) { return c && c.handle && ((c.samples && c.samples.length) || c.image); });\n    items.sort(function (a, b) { return (b.product_count || 0) - (a.product_count || 0); });\n    window._tnfRvShopCols = items;\n    return items;\n  }\n  function fetchShopCols() { readShopCols(); }\n\n  // \u2500\u2500 1) Capture current PDP into localStorage \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n  var current = null;\n  var dataEl = document.getElementById('tnf-rv-current-product');\n  if (dataEl) {\n    try { current = JSON.parse(dataEl.textContent || dataEl.innerText || '{}'); } catch (e) {}\n  }\n  function extractPdpTitle() {\n    var og = document.querySelector('meta[property=\"og:title\"]');\n    if (og && og.content) return og.content.trim();\n    var h1 = document.querySelector('h1.product-meta__title, h1.product__title, h1[itemprop=\"name\"], .product-meta__title, .product__title');\n    if (h1 && h1.textContent) return h1.textContent.trim();\n    var t = (document.title || '').split(/\\s[\u2013|]\\s/)[0];\n    return t || '';\n  }\n  if (!current || !current.handle) {\n    try {\n      var meta = window.ShopifyAnalytics && window.ShopifyAnalytics.meta && window.ShopifyAnalytics.meta.product;\n      var handleMatch = window.location.pathname.match(/\\/products\\/([^/?#]+)/);\n      var handle = handleMatch ? handleMatch[1] : '';\n      if (handle) {\n        var ogImg = document.querySelector('meta[property=\"og:image\"]');\n        current = {\n          handle: handle,\n          title: extractPdpTitle(),\n          image: ogImg ? ogImg.content : '',\n          vendor: meta && meta.vendor || '',\n          vendor_url: meta && meta.vendor ? '/collections/all?filter.p.vendor=' + encodeURIComponent(meta.vendor) : '',\n          price: (meta && meta.variant && typeof meta.variant.price === 'number') ? (meta.variant.price / 100) : null,\n          price_formatted: '',\n          available: (meta && meta.variant && typeof meta.variant.available === 'boolean') ? meta.variant.available : true,\n          collections: []\n        };\n      }\n    } catch (e) {}\n  }\n  if (current && current.handle && !current.title) {\n    var ct = extractPdpTitle(); if (ct) current.title = ct;\n  }\n\n  if (current && current.handle) {\n    // If current PDP variant is sold-out, record it in the shared cache too.\n    if (current.available === false) markSoldOut(current.handle);\n    else if (current.available === true) markInStock(current.handle);\n\n    var products = read(KEY_PRODUCTS);\n    products = upsert(products, {\n      handle: current.handle,\n      title: current.title || '',\n      image: current.image || '',\n      price: current.price_formatted || current.price || '',\n      url: '/products/' + current.handle,\n      available: (typeof current.available === 'boolean') ? current.available : true\n    }, function (x) { return x.handle; });\n    write(KEY_PRODUCTS, products, MAX_PRODUCTS);\n\n    if (current.vendor) {\n      var vendors = read(KEY_VENDORS);\n      var vname = current.vendor;\n      var nkey = vname.toLowerCase();\n      var existing = null;\n      for (var i = 0; i < vendors.length; i++) {\n        if ((vendors[i].name || '').toLowerCase() === nkey) { existing = vendors[i]; break; }\n      }\n      var newSample = { handle: current.handle, image: current.image || '' };\n      var vendorSample = (current.vendor_sample_image || '').trim();\n      if (!existing) {\n        var samples = [newSample];\n        if (vendorSample && vendorSample !== current.image) samples.push({ handle: '__seed__' + nkey, image: vendorSample });\n        vendors.unshift({ name: vname, url: current.vendor_url || ('/collections/all?filter.p.vendor=' + encodeURIComponent(vname)), samples: samples });\n      } else {\n        existing.samples = existing.samples || [];\n        if (!existing.samples.some(function (s) { return s.handle === newSample.handle; })) existing.samples.unshift(newSample);\n        if (vendorSample && vendorSample !== current.image && !existing.samples.some(function (s) { return s.image === vendorSample; })) {\n          existing.samples.push({ handle: '__seed__' + nkey, image: vendorSample });\n        }\n        existing.samples = existing.samples.slice(0, 8);\n        vendors = vendors.filter(function (v) { return (v.name || '').toLowerCase() !== nkey; });\n        vendors.unshift(existing);\n      }\n      write(KEY_VENDORS, vendors, MAX_VENDORS);\n    }\n\n    if (Array.isArray(current.collections)) {\n      var cols = read(KEY_COLLECTIONS);\n      current.collections.forEach(function (c) {\n        if (!c || !c.handle) return;\n        cols = upsert(cols, {\n          handle: c.handle, title: c.title || c.handle,\n          url: c.url || ('/collections/' + c.handle),\n          product_count: c.product_count || 0,\n          samples: Array.isArray(c.samples) ? c.samples : []\n        }, function (x) { return x.handle; });\n      });\n      write(KEY_COLLECTIONS, cols, MAX_COLLECTIONS);\n    }\n  }\n\n  // \u2500\u2500 2) Render \u2014 matches \"Discover Something New\" visual layout \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n  function esc(s) { return String(s == null ? '' : s).replace(/[&<>\"']/g, function (c) { return {'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;',\"'\":'&#39;'}[c]; }); }\n  function sizedImage(src, w) {\n    if (!src) return '';\n    if (src.indexOf('//') === 0) src = 'https:' + src;\n    if (src.indexOf('width=') !== -1) return src;\n    return src + (src.indexOf('?') === -1 ? '?' : '&') + 'width=' + (w || 400);\n  }\n\n  // Pre-render sold-out filter. Anything in __tnfAvailability with `false` is\n  // dropped IMMEDIATELY. Anything unknown remains and gets background-verified\n  // after render \u2014 if confirmed unavailable, the DOM card is removed live.\n  function isKnownSoldOut(h) { return window.__tnfAvailability[h] === false; }\n\n  // Layer-1 sync filter \u2014 `available === false` from local data.\n  function isAvailable(p) {\n    if (!p || !p.handle) return false;\n    if (isKnownSoldOut(p.handle)) return false;            // Layer-2/3 cache\n    if (p.available === false) { markSoldOut(p.handle); return false; }  // sync mark\n    return true;\n  }\n\n  function buildCardHTML(p) {\n    var hasDiscount = p.compareAtPrice && p.price && (p.compareAtPrice !== p.price);\n    var priceInner = hasDiscount\n      ? '<span class=\"variant-rfy-sale-price\">' + esc(p.price) + '</span><span class=\"variant-rfy-compare-price\">' + esc(p.compareAtPrice) + '</span>'\n      : (p.price ? '<span class=\"variant-rfy-price\">' + esc(p.price) + '</span>' : '');\n    var priceBlock = priceInner ? '<div class=\"variant-rfy-prices product-item__price-list\">' + priceInner + '</div>' : '';\n    var imgSrc = p.image && String(p.image).trim() ? sizedImage(p.image, 400) : '';\n    var imgHtml = imgSrc\n      ? '<img src=\"' + esc(imgSrc) + '\" alt=\"' + esc(p.title || '') + '\" class=\"variant-rfy-img\" loading=\"lazy\">'\n      : '';\n    return '<a href=\"' + esc(p.url) + '\" class=\"variant-rfy-card tnf-rv-card\" data-handle=\"' + esc(p.handle) + '\">' +\n             '<div class=\"variant-rfy-img-wrap\">' + imgHtml + '</div>' +\n             '<div class=\"variant-rfy-info\"><span class=\"variant-rfy-card-title\">' + esc(p.title || '') + '</span>' + priceBlock + '</div>' +\n           '</a>';\n  }\n\n  var ARROW_SVG_LEFT = '<svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m15 18-6-6 6-6\"/></svg>';\n  var ARROW_SVG_RIGHT = '<svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m9 18 6-6-6-6\"/></svg>';\n\n  function buildSection() {\n    var currentHandle = current && current.handle || '';\n\n    var cartHandlesArr = (window.__tnfCartHandles && Array.isArray(window.__tnfCartHandles)) ? window.__tnfCartHandles : [];\n    var cartHandleSet = {};\n    cartHandlesArr.forEach(function (h) { if (h) cartHandleSet[h] = 1; });\n    function notInCart(p) { return p && p.handle && !cartHandleSet[p.handle]; }\n\n    // Raw browse history (drives heading swap \u2014 sold-out NOT excluded here so\n    // history empties don't flip the heading on stale entries).\n    var rvProductsRaw = read(KEY_PRODUCTS).filter(function (p) { return p && p.handle && p.handle !== currentHandle; });\n\n    var browsed = rvProductsRaw.filter(isAvailable).filter(notInCart);\n    var purchased = [];\n    var pEl = document.getElementById('tnf-rv-past-purchased');\n    if (pEl) { try { purchased = JSON.parse(pEl.textContent || '[]') || []; } catch (e) { purchased = []; } }\n    purchased = (purchased || []).filter(isAvailable).filter(notInCart);\n\n    var productMap = {};\n    var allProducts = [];\n    browsed.concat(purchased).forEach(function (p) {\n      if (!p || !p.handle) return;\n      if (p.handle === currentHandle) return;\n      if (productMap[p.handle]) return;\n      productMap[p.handle] = 1;\n      allProducts.push(p);\n    });\n    allProducts.forEach(function (p) {\n      if (!p.title) p.title = (p.handle || '').replace(/-/g, ' ').replace(/\\b\\w/g, function (c) { return c.toUpperCase(); });\n    });\n\n    var MIN_DESIRED = 18;\n    var seenHandles = {};\n    seenHandles[currentHandle] = 1;\n    allProducts.forEach(function (p) { seenHandles[p.handle] = 1; });\n\n    function pullSamplesFromCollections(collsArr) {\n      var pool = [];\n      collsArr.forEach(function (c) {\n        var samples = (c && c.samples) || [];\n        samples.forEach(function (s) {\n          if (!s || !s.handle || !s.image) return;\n          if (s.handle.indexOf('__seed__') === 0) return;\n          if (seenHandles[s.handle]) return;\n          if (cartHandleSet[s.handle]) return;\n          if (isKnownSoldOut(s.handle)) return;\n          seenHandles[s.handle] = 1;\n          pool.push({\n            handle: s.handle,\n            title: (s.title && String(s.title).trim()) || s.handle.replace(/-/g, ' ').replace(/\\b\\w/g, function (c2) { return c2.toUpperCase(); }),\n            image: s.image,\n            price: s.price || '',\n            compareAtPrice: s.compareAtPrice || '',\n            url: '/products/' + s.handle,\n            available: true\n          });\n        });\n      });\n      return pool;\n    }\n    function topUpFromSamples() {\n      if (allProducts.length >= MIN_DESIRED) return;\n      // 1st pass: user's recently-visited collections (most relevant)\n      var pool = pullSamplesFromCollections((current && current.collections) || []);\n      allProducts = allProducts.concat(pool.slice(0, MIN_DESIRED - allProducts.length));\n      // 2nd pass (2026-05-27 Diana): fall back to POPULAR collections so the section is never sparse\n      // \u2014 fills screen with discovery content for new users with no collection history.\n      if (allProducts.length < MIN_DESIRED) {\n        var popular = readShopCols();\n        if (popular && popular.length) {\n          var poolP = pullSamplesFromCollections(popular);\n          allProducts = allProducts.concat(poolP.slice(0, MIN_DESIRED - allProducts.length));\n        }\n      }\n    }\n    topUpFromSamples();\n\n    allProducts = allProducts.filter(notInCart);\n\n    var items = allProducts.slice(0, MIN_DESIRED);\n    // 2026-05-27 Diana: show RV on every page EXCEPT home (unless user has \"a lot\" of RV).\n    //   - Home: skip unless user has 12+ recently viewed products (engaged returning visitor)\n    //   - Other pages: render as long as we have at least 1 item to suggest\n    var pathname = location.pathname || '';\n    var isHomepage = pathname === '/' || pathname === '/index' || /^\\/?$/.test(pathname);\n    var rvCount = (read(KEY_PRODUCTS) || []).length;\n    if (isHomepage && rvCount < 12) return null;\n    if (items.length < 1) return null;\n\n    var hasBrowseHistory = rvProductsRaw.length > 0;\n    var heading = hasBrowseHistory ? 'Recently viewed + You might also like' : 'You might also like';\n    var subhead = 'Hand-picked for you';\n\n    try {\n      window.__tnfShownHandles = window.__tnfShownHandles || [];\n      items.forEach(function (it) {\n        if (it && it.handle && window.__tnfShownHandles.indexOf(it.handle) === -1) window.__tnfShownHandles.push(it.handle);\n      });\n    } catch (e) {}\n\n    var w = document.createElement('section');\n    w.id = 'tnf-rv-section';\n    w.className = 'section tnf-rv-section variant-rfy-section';\n    var cards = items.map(buildCardHTML).join('');\n    w.innerHTML =\n      '<div class=\"variant-rfy-inner\">' +\n        '<div class=\"variant-rfy-header\">' +\n          '<h2 class=\"variant-rfy-title\">' + esc(heading) + '</h2>' +\n          '<p class=\"variant-rfy-subtitle\">' + esc(subhead) + '</p>' +\n        '</div>' +\n      '</div>' +\n      '<div class=\"variant-rfy-carousel-wrap\">' +\n        '<button class=\"variant-rfy-arrow variant-rfy-arrow-left\" aria-label=\"Scroll left\">' + ARROW_SVG_LEFT + '</button>' +\n        '<div class=\"variant-rfy-scroll-area\"><div class=\"variant-rfy-track\">' + cards + '</div></div>' +\n        '<button class=\"variant-rfy-arrow variant-rfy-arrow-right\" aria-label=\"Scroll right\">' + ARROW_SVG_RIGHT + '</button>' +\n      '</div>' +\n      '<div class=\"variant-rfy-scroll-hint\"><span class=\"variant-rfy-scroll-hint-text\">Swipe for more</span>' +\n        '<svg class=\"variant-rfy-scroll-hint-arrow\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M5 12h14\"/><path d=\"m12 5 7 7-7 7\"/></svg></div>';\n    return w;\n  }\n\n  // Carousel behavior \u2014 copied directly from DSN (variant-rfy enableCarousel).\n  function enableCarousel(section) {\n    var sa = section.querySelector('.variant-rfy-scroll-area');\n    var track = section.querySelector('.variant-rfy-track');\n    var hint = section.querySelector('.variant-rfy-scroll-hint');\n    var arrowL = section.querySelector('.variant-rfy-arrow-left');\n    var arrowR = section.querySelector('.variant-rfy-arrow-right');\n    if (!sa || !track) return;\n    var hh = false;\n    function hideHint() { if (hh || !hint) return; hh = true; hint.style.opacity = '0'; hint.style.transition = 'opacity 0.4s ease'; setTimeout(function () { hint.style.display = 'none'; }, 400); }\n    sa.addEventListener('scroll', hideHint, { passive: true });\n    sa.addEventListener('touchstart', hideHint, { passive: true });\n    var down = false, sx = 0, sl = 0;\n    sa.addEventListener('mousedown', function (e) { down = true; sa.classList.add('variant-rfy-grabbing'); sx = e.pageX - sa.offsetLeft; sl = sa.scrollLeft; });\n    sa.addEventListener('mouseleave', function () { down = false; sa.classList.remove('variant-rfy-grabbing'); });\n    sa.addEventListener('mouseup', function () { down = false; sa.classList.remove('variant-rfy-grabbing'); });\n    sa.addEventListener('mousemove', function (e) { if (!down) return; e.preventDefault(); sa.scrollLeft = sl - (e.pageX - sa.offsetLeft - sx) * 1.5; });\n    function updateArrows() { if (!arrowL || !arrowR) return; arrowL.disabled = sa.scrollLeft <= 5; arrowR.disabled = sa.scrollWidth - sa.scrollLeft - sa.clientWidth <= 5; }\n    if (arrowL && arrowR) {\n      var scrollStep = 580;\n      arrowL.addEventListener('click', function () { sa.scrollBy({ left: -scrollStep, behavior: 'smooth' }); });\n      arrowR.addEventListener('click', function () { sa.scrollBy({ left: scrollStep, behavior: 'smooth' }); });\n      sa.addEventListener('scroll', updateArrows, { passive: true });\n      updateArrows();\n    }\n    function lockTrackWidth() {\n      var cards = track.querySelectorAll('.variant-rfy-card');\n      if (!cards.length) return;\n      var gap = 14;\n      var totalW = 0;\n      for (var i = 0; i < cards.length; i++) totalW += cards[i].getBoundingClientRect().width;\n      totalW += Math.max(0, cards.length - 1) * gap;\n      var w = Math.ceil(totalW) + 'px';\n      track.style.width = w; track.style.minWidth = w; track.style.maxWidth = w;\n    }\n    requestAnimationFrame(lockTrackWidth);\n    window.addEventListener('load', function () { requestAnimationFrame(lockTrackWidth); });\n  }\n\n  // GA4 interaction-depth tracking for YML (Recently Viewed / popular fallback).\n  // Adds 3 events alongside the existing tnf_continue_exploring_click:\n  //   - tnf_yml_view    (IntersectionObserver, fires once per page-load when section >=30% visible)\n  //   - tnf_yml_scroll  (horizontal scroll-depth at 25/50/75/100%, debounced ~200ms)\n  //   - tnf_yml_arrow   (arrow button click \u2014 fires BEFORE the existing scroll handler)\n  // Method detection ('arrow' | 'drag' | 'wheel' | 'touch') is best-effort:\n  // we record the most recent input modality in lastMethod and consume it on scroll.\n  function attachYmlAnalytics(section) {\n    if (!section || section.__tnfYmlAnalyticsBound) return;\n    section.__tnfYmlAnalyticsBound = true;\n    var sa = section.querySelector('.variant-rfy-scroll-area');\n    var track = section.querySelector('.variant-rfy-track');\n    var arrowL = section.querySelector('.variant-rfy-arrow-left');\n    var arrowR = section.querySelector('.variant-rfy-arrow-right');\n    var itemsShown = track ? track.querySelectorAll('.variant-rfy-card').length : 0;\n    var srcPid = (current && current.id) ? String(current.id) : '';\n    var hasRecentHistory = false;\n    try {\n      var hist = read(KEY_PRODUCTS);\n      hasRecentHistory = !!(hist && hist.length);\n    } catch (e) {}\n\n    // --- 1. Section view (Intersection Observer, fires once) ---\n    if ('IntersectionObserver' in window) {\n      var viewed = false;\n      var io = new IntersectionObserver(function (entries) {\n        for (var i = 0; i < entries.length; i++) {\n          if (entries[i].intersectionRatio >= 0.3 && !viewed) {\n            viewed = true;\n            window.dataLayer = window.dataLayer || [];\n            window.dataLayer.push({\n              event: 'tnf_yml_view',\n              source_section: 'continue_exploring',\n              source_path: location.pathname,\n              source_product_id: srcPid,\n              items_shown: itemsShown,\n              has_recent_history: hasRecentHistory\n            });\n            io.disconnect();\n            break;\n          }\n        }\n      }, { threshold: [0.3] });\n      io.observe(section);\n    }\n\n    if (!sa) return;\n\n    // --- 2. Horizontal scroll depth + method detection ---\n    var lastMethod = null;\n    var lastMethodAt = 0;\n    function setMethod(m) { lastMethod = m; lastMethodAt = Date.now(); }\n    sa.addEventListener('wheel', function () { setMethod('wheel'); }, { passive: true });\n    sa.addEventListener('touchstart', function () { setMethod('touch'); }, { passive: true });\n    var pdown = false;\n    sa.addEventListener('pointerdown', function () { pdown = true; }, { passive: true });\n    sa.addEventListener('pointermove', function () { if (pdown) setMethod('drag'); }, { passive: true });\n    var releasePointer = function () { pdown = false; };\n    sa.addEventListener('pointerup', releasePointer, { passive: true });\n    sa.addEventListener('pointerleave', releasePointer, { passive: true });\n    sa.addEventListener('pointercancel', releasePointer, { passive: true });\n\n    var firedDepths = {};\n    var scrollDebounce = null;\n    function evalDepth() {\n      var max = sa.scrollWidth - sa.clientWidth;\n      if (max <= 0) return;\n      var pct = (sa.scrollLeft / max) * 100;\n      var thresholds = [25, 50, 75, 100];\n      for (var i = 0; i < thresholds.length; i++) {\n        var t = thresholds[i];\n        if (pct >= t - 0.5 && !firedDepths[t]) {\n          firedDepths[t] = true;\n          var method = (lastMethod && (Date.now() - lastMethodAt) < 1500) ? lastMethod : null;\n          var payload = {\n            event: 'tnf_yml_scroll',\n            source_section: 'continue_exploring',\n            depth_percent: t\n          };\n          if (method) payload.scroll_method = method;\n          window.dataLayer = window.dataLayer || [];\n          window.dataLayer.push(payload);\n        }\n      }\n    }\n    sa.addEventListener('scroll', function () {\n      if (scrollDebounce) clearTimeout(scrollDebounce);\n      scrollDebounce = setTimeout(evalDepth, 200);\n    }, { passive: true });\n\n    // --- 3. Arrow click tracking ---\n    // Use capturing phase so we fire BEFORE the existing scrollBy click handler.\n    function bindArrow(btn, dir) {\n      if (!btn) return;\n      btn.addEventListener('click', function () {\n        setMethod('arrow');\n        var posAfter = 0;\n        try {\n          var step = 580;\n          posAfter = Math.max(0, Math.min(\n            sa.scrollWidth - sa.clientWidth,\n            sa.scrollLeft + (dir === 'next' ? step : -step)\n          ));\n        } catch (e) {}\n        window.dataLayer = window.dataLayer || [];\n        window.dataLayer.push({\n          event: 'tnf_yml_arrow',\n          source_section: 'continue_exploring',\n          direction: dir,\n          position_after: posAfter\n        });\n      }, true);\n    }\n    bindArrow(arrowL, 'prev');\n    bindArrow(arrowR, 'next');\n  }\n\n  // Layer-3: background-verify every rendered card's availability. If we\n  // confirm a handle is sold out, drop the card from the DOM + record in\n  // __tnfSoldOutHandles so Discover Something New filters it too. If after\n  // removals the section has < 2 cards, hide it (re-mount will repopulate\n  // on next nav).\n  function verifyRenderedCards(section) {\n    if (!section) return;\n    var cards = section.querySelectorAll('.variant-rfy-card[data-handle]');\n    if (!cards.length) return;\n    var pending = 0;\n    // Collapse redirect-alias duplicates: two cards whose handles 301 to the\n    // same product (e.g. \"...-box-of-8\" alias + canonical \"...-bites\"). Keep\n    // the card whose handle IS the canonical; drop the alias.\n    var claimedCanon = {};\n    function claimOrRemove(card) {\n      var h = card.getAttribute('data-handle'); if (!h) return false;\n      var ck = window.__tnfCanonical[h] || h;\n      var prev = claimedCanon[ck];\n      if (prev && prev !== card) {\n        var incomingIsCanon = (h === ck);\n        var prevIsCanon = (prev.getAttribute('data-handle') === ck);\n        if (incomingIsCanon && !prevIsCanon) {\n          if (prev.parentNode) prev.parentNode.removeChild(prev);\n          claimedCanon[ck] = card;\n          return false;\n        }\n        if (card.parentNode) card.parentNode.removeChild(card);\n        return true;\n      }\n      claimedCanon[ck] = card;\n      return false;\n    }\n    function maybeReflow() {\n      var remaining = section.querySelectorAll('.variant-rfy-card[data-handle]').length;\n      if (remaining < 2) {\n        // Section emptied out by sold-out reality \u2014 remove it entirely.\n        if (section.parentNode) section.parentNode.removeChild(section);\n        return;\n      }\n      // Re-lock track width since cards were removed.\n      var track = section.querySelector('.variant-rfy-track');\n      if (track) {\n        var inner = track.querySelectorAll('.variant-rfy-card');\n        var gap = 14, totalW = 0;\n        for (var i = 0; i < inner.length; i++) totalW += inner[i].getBoundingClientRect().width;\n        totalW += Math.max(0, inner.length - 1) * gap;\n        var w = Math.ceil(totalW) + 'px';\n        track.style.width = w; track.style.minWidth = w; track.style.maxWidth = w;\n      }\n    }\n    for (var i = 0; i < cards.length; i++) (function (card) {\n      var h = card.getAttribute('data-handle'); if (!h) return;\n      var known = window.__tnfAvailability[h];\n      if (known === false) { card.parentNode && card.parentNode.removeChild(card); return; }\n      if (known === true) { claimOrRemove(card); return; }\n      pending++;\n      verifyAvailability(h, function (ok) {\n        if (ok === false) {\n          // Remove ALL cards with this handle (defensive \u2014 should be one).\n          var soldCards = section.querySelectorAll('.variant-rfy-card[data-handle=\"' + h.replace(/\"/g, '\\\\\"') + '\"]');\n          for (var j = 0; j < soldCards.length; j++) {\n            if (soldCards[j].parentNode) soldCards[j].parentNode.removeChild(soldCards[j]);\n          }\n        } else {\n          // In stock \u2014 collapse if it's a redirect-alias of another shown card.\n          claimOrRemove(card);\n        }\n        pending--;\n        if (pending <= 0) maybeReflow();\n      });\n    })(cards[i]);\n    if (pending === 0) maybeReflow();\n  }\n\n  function injectStyles() {\n    if (document.getElementById('tnf-rv-styles')) return;\n    var s = document.createElement('style');\n    s.id = 'tnf-rv-styles';\n    // Verbatim DSN/RFY visual rules, scoped via shared classnames so we get\n    // the exact same look. The compound `.tnf-rv-section.variant-rfy-section`\n    // is what our element carries \u2014 same selectors apply.\n    s.textContent =\n      '.variant-rfy-section{margin:16px 0;font-family:Barlow,sans-serif;position:relative;max-width:100%;overflow-x:hidden;box-sizing:border-box}'\n    + '.variant-rfy-inner{padding:24px 20px 0;background:linear-gradient(135deg,#f0f7ff 0%,#f8fbff 50%,#eef6ff 100%);border-radius:16px 16px 0 0;margin:0 20px}'\n    + '.variant-rfy-header{padding:0 2px 16px}'\n    + '.variant-rfy-title{font-size:20px;font-weight:700;color:#006fdb;margin:0 0 3px;line-height:1.3;letter-spacing:-.3px}'\n    + '.variant-rfy-subtitle{font-size:13px;font-weight:500;color:#677279;margin:0;line-height:1.4}'\n    + '.variant-rfy-scroll-area{overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:none;-ms-overflow-style:none;padding:4px 20px 20px;background:linear-gradient(180deg,#f0f7ff 0%,#f8fbff 30%,transparent 100%);cursor:grab;user-select:none;-webkit-user-select:none;overscroll-behavior-x:contain;box-sizing:border-box;max-width:100%}'\n    + '.variant-rfy-scroll-area::-webkit-scrollbar{display:none}'\n    + '.variant-rfy-grabbing{cursor:grabbing!important;scroll-behavior:auto!important}'\n    + '.variant-rfy-track{display:flex;gap:14px;width:max-content}'\n    + '.variant-rfy-card{position:relative;flex:0 0 145px;min-width:145px;text-decoration:none;color:inherit;display:flex;flex-direction:column;border-radius:12px;background:#fff;box-shadow:0 2px 8px rgba(0,111,219,.08),0 1px 3px rgba(0,0,0,.04);overflow:hidden;transition:transform .25s ease,box-shadow .25s ease}'\n    + '.variant-rfy-card:active{transform:scale(.97)}'\n    + '@media(hover:hover){.variant-rfy-card:hover{transform:translateY(-3px);box-shadow:0 6px 20px rgba(0,111,219,.14),0 2px 6px rgba(0,0,0,.06)}}'\n    + '.variant-rfy-img-wrap{width:100%;aspect-ratio:1/1;overflow:hidden;background:#f7f9fb;position:relative}'\n    + '.variant-rfy-img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .3s ease,opacity .35s ease}'\n    + '@media(hover:hover){.variant-rfy-card:hover .variant-rfy-img{transform:scale(1.06)}}'\n    + '.variant-rfy-info{padding:10px 10px 12px;display:flex;flex-direction:column;gap:5px}'\n    + '.variant-rfy-card-title{font-size:12.5px;font-weight:600;line-height:1.35;color:#1e2d7d;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-wrap:break-word}'\n    + '.variant-rfy-prices{display:flex;align-items:baseline;gap:6px;flex-wrap:wrap}'\n    + '.variant-rfy-price{font-size:14px;font-weight:700;color:#006fdb}'\n    + '.variant-rfy-sale-price{font-size:14px;font-weight:700;color:#e32c2b}'\n    + '.variant-rfy-compare-price{font-size:11.5px;font-weight:500;color:#8a9297;text-decoration:line-through}'\n    + '.variant-rfy-scroll-hint{display:flex;align-items:center;justify-content:center;gap:6px;padding:8px 0 4px;color:#61b1ff;font-size:12px;font-weight:600;letter-spacing:.3px;animation:variant-rfy-nudge 2s ease-in-out infinite}'\n    + '.variant-rfy-scroll-hint-arrow{width:16px;height:16px}'\n    + '@keyframes variant-rfy-nudge{0%,100%{transform:translateX(0)}50%{transform:translateX(6px)}}'\n    + '.variant-rfy-carousel-wrap{position:relative;overflow:hidden}'\n    + '.variant-rfy-arrow{display:none}'\n    + '@media(min-width:700px){'\n    +   '.variant-rfy-inner{padding:30px 32px 0;border-radius:20px 20px 0 0;margin:0}'\n    +   '.variant-rfy-section{margin:20px auto}'\n    +   '.variant-rfy-title{font-size:24px}'\n    +   '.variant-rfy-card{flex:0 0 180px;min-width:180px}'\n    +   '.variant-rfy-scroll-area{padding:4px 32px 24px}'\n    +   '.variant-rfy-scroll-hint{display:none}'\n    +   '.variant-rfy-arrow{display:flex;align-items:center;justify-content:center;position:absolute;top:50%;transform:translateY(-50%);width:40px;height:40px;border-radius:50%;border:none;background:rgba(255,255,255,.95);box-shadow:0 2px 10px rgba(0,0,0,.12),0 1px 4px rgba(0,0,0,.06);color:#006fdb;cursor:pointer;z-index:5;transition:opacity .2s ease,background .2s ease,box-shadow .2s ease}'\n    +   '.variant-rfy-arrow:hover{background:#fff;box-shadow:0 4px 16px rgba(0,111,219,.18),0 2px 6px rgba(0,0,0,.08);color:#0057b0}'\n    +   '.variant-rfy-arrow:active{transform:translateY(-50%) scale(.93)}'\n    +   '.variant-rfy-arrow[disabled]{opacity:0;pointer-events:none}'\n    +   '.variant-rfy-arrow-left{left:8px}'\n    +   '.variant-rfy-arrow-right{right:8px}'\n    + '}';\n    document.head.appendChild(s);\n  }\n\n  function findAnchor() {\n    var faq = document.getElementById('tnf-pdp-faq');\n    if (faq) return { _insertBefore: faq };\n\n    var byType = document.querySelector('[data-section-type=\"product-recommendations\"]')\n      || document.querySelector('[data-section-type=\"recently-viewed-products\"]');\n    if (byType) return byType.closest('.shopify-section') || byType;\n\n    var phrases = ['you may also like', 'recommended for you', 'discover something', 'recently viewed', \"don't miss our deals\", 'don\u2019t miss our deals', 'frequently bought'];\n    var headings = document.querySelectorAll('h1, h2, h3, h4, .heading, .section__title');\n    for (var i = 0; i < headings.length; i++) {\n      var txt = (headings[i].textContent || '').toLowerCase().trim();\n      for (var j = 0; j < phrases.length; j++) {\n        if (txt.indexOf(phrases[j]) !== -1) {\n          var sec = headings[i].closest('.shopify-section');\n          if (sec) return sec;\n        }\n      }\n    }\n    var footer = document.querySelector('footer, [data-section-type=\"footer\"], .shopify-section-group-footer-group');\n    if (footer) return { _insertBefore: footer.closest('.shopify-section') || footer };\n    return document.querySelector('main') || document.body;\n  }\n\n  function bindRvTracking() {\n    if (window.__tnfRvTrackInit) return;\n    window.__tnfRvTrackInit = true;\n    document.addEventListener('click', function (e) {\n      try {\n        var card = e.target && e.target.closest && e.target.closest('.tnf-rv-card, #tnf-rv-section .variant-rfy-card');\n        if (!card) return;\n        var sec = card.closest('#tnf-rv-section');\n        if (!sec) return;\n        var href = card.getAttribute('href') || '';\n        var handle = '';\n        var clickedType = 'product';\n        var m = href.match(/\\/(products|collections)\\/([^/?#]+)/);\n        if (m) {\n          handle = m[2];\n          if (m[1] === 'collections') clickedType = 'collection';\n        }\n        var track = sec.querySelector('.variant-rfy-track') || sec.querySelector('.tnf-rv-grid');\n        var pos = 0;\n        if (track) {\n          var cards = track.querySelectorAll('.variant-rfy-card, .tnf-rv-card');\n          for (var i = 0; i < cards.length; i++) { if (cards[i] === card) { pos = i + 1; break; } }\n        }\n        window.dataLayer = window.dataLayer || [];\n        var ymlPayload = {\n          source_section: 'continue_exploring',\n          source_path: location.pathname,\n          source_product_id: (current && current.id) ? String(current.id) : '',\n          source_product_handle: (current && current.handle) ? current.handle : '',\n          clicked_type: clickedType,\n          clicked_product_id: '',\n          clicked_product_handle: handle,\n          clicked_url: card.href || href,\n          position: pos\n        };\n        // Legacy event name (kept so existing GTM tags / dashboards don't break).\n        window.dataLayer.push(Object.assign({ event: 'tnf_continue_exploring_click' }, ymlPayload));\n        // 2026-06-13 \u2014 consistent yml_ namespace alias so the YML family is\n        // complete (view/scroll/arrow/click). Additive; same payload.\n        window.dataLayer.push(Object.assign({ event: 'tnf_yml_click' }, ymlPayload));\n      } catch (err) {}\n    }, true);\n  }\n\n  function mount() {\n    var section = buildSection();\n    var existing = document.getElementById('tnf-rv-section');\n    if (!section) {\n      if (existing) existing.remove();\n      return;\n    }\n    injectStyles();\n    bindRvTracking();\n    if (existing) {\n      existing.replaceWith(section);\n      enableCarousel(section);\n      attachYmlAnalytics(section);\n      verifyRenderedCards(section);\n      return;\n    }\n    var anchor = findAnchor();\n    if (!anchor) return;\n    if (anchor._insertBefore) anchor._insertBefore.parentNode.insertBefore(section, anchor._insertBefore);\n    else if (anchor.parentNode) anchor.parentNode.insertBefore(section, anchor.nextSibling);\n    else (document.body || document.documentElement).appendChild(section);\n    enableCarousel(section);\n    attachYmlAnalytics(section);\n    verifyRenderedCards(section);\n  }\n  function mountWhenReady() {\n    function defer(fn, ms) {\n      if ('requestIdleCallback' in window) requestIdleCallback(fn, { timeout: ms || 2000 });\n      else setTimeout(fn, ms || 100);\n    }\n    getCartHandles().then(function () { mount(); }, function () { mount(); });\n    defer(mount, 1500);\n    setTimeout(mount, 800);\n    setTimeout(mount, 2500);\n  }\n\n  function refreshOnCartChange() {\n    invalidateCartHandles();\n    getCartHandles().then(function () {\n      try { window.dispatchEvent(new CustomEvent('tnf:cart:handles-changed')); } catch (e) {}\n      mount();\n    }, function () { mount(); });\n  }\n  ['tnf:cart:item-added', 'tnf:cart:line-removed', 'cart:updated'].forEach(function (ev) {\n    window.addEventListener(ev, refreshOnCartChange);\n  });\n  setInterval(function () {\n    var prev = ((window.__tnfCartHandles || []).slice()).sort().join('|');\n    invalidateCartHandles();\n    getCartHandles().then(function (handles) {\n      var next = (handles || []).slice().sort().join('|');\n      if (prev !== next) {\n        try { window.dispatchEvent(new CustomEvent('tnf:cart:handles-changed')); } catch (e) {}\n        mount();\n      }\n    });\n  }, 30000);\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', mountWhenReady);\n  else mountWhenReady();\n\n  function startShopColsFetch() { readShopCols(); fetchShopCols(); }\n  if ('requestIdleCallback' in window) requestIdleCallback(startShopColsFetch, { timeout: 4000 });\n  else setTimeout(startShopColsFetch, 2500);\n\n  window.addEventListener('pageshow', function (e) { if (e.persisted) mountWhenReady(); });\n  window.addEventListener('popstate', mountWhenReady);\n\n  window.tnfRvDebug = function () {\n    var p = read(KEY_PRODUCTS), v = read(KEY_VENDORS), c = read(KEY_COLLECTIONS);\n    console.log('[TNF RV] captured current:', current);\n    console.log('[TNF RV] products in storage (' + p.length + '):', p.map(function (x) { return x.handle; }));\n    console.log('[TNF RV] vendors in storage (' + v.length + '):', v.map(function (x) { return x.name; }));\n    console.log('[TNF RV] collections in storage (' + c.length + '):', c.map(function (x) { return x.handle; }));\n    console.log('[TNF RV] availability cache:', window.__tnfAvailability);\n    console.log('[TNF RV] sold-out handles:', window.__tnfSoldOutHandles);\n    console.log('[TNF RV] section in DOM?', !!document.getElementById('tnf-rv-section'));\n    return { current: current, products: p, vendors: v, collections: c, availability: window.__tnfAvailability };\n  };\n})();\n"],
  "mappings": "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",
  "names": ["handle", "samples", "i", "m", "existing"]
}
