{
  "version": 3,
  "sources": ["/cdn/shop/t/249/assets/fdr-buybox.js?cb=1790890697708"],
  "sourcesContent": ["/* ============================================================\n   Get Joy \u2014 FDR PDP v10 \u00B7 buy box + page personalization\n   Reads quiz state (localStorage 'gj_quiz_state_v1' or URL params),\n   derives classic/plan/landing state, runs the approved pricing\n   model, and wires /cart/add.js with Skio selling plan + line props.\n   ============================================================ */\n(function () {\n  'use strict';\n\n  /* ---------- config ---------- */\n  var cfgEl = document.getElementById('gjx-config');\n  if (!cfgEl) return;\n  var CFG;\n  try { CFG = JSON.parse(cfgEl.textContent); } catch (e) { return; }\n\n  // Per-bag pricing derives from the live variant price (Shopify admin) when the\n  // section passes it in CFG.variantData; the fallbacks match the approved model.\n  var FIRST_ORDER_PCT = 4446; // 44.46% (SupaEasy \"50% off your first order\"), in basis points\n  function firstOrder(spCents) { return (spCents - Math.floor(spCents * FIRST_ORDER_PCT / 10000)) / 100; }\n  function bagPrices(protein) {\n    var vd = (CFG.variantData || {})[protein] || {};\n    var full = parseFloat(vd.price) || 49.94;\n    return {\n      OTP_FULL: full,\n      // First box = what checkout actually charges: the first-order function takes 44.46% off the subscription\n      // price (\u2248 50% off list), floored to the cent per unit. Verified in cart: $49.95 bag \u2192 $44.96 \u2192 $24.98; at $49.94 (Oct 8) \u2192 $44.95 \u2192 $24.97, exactly half.\n      SUB_FIRST: firstOrder(Math.round(full * 90)),\n      SUB_RENEW: Math.round(full * 90) / 100\n    };\n  }\n  var fmt = function (n) { return '$' + n.toFixed(2); };\n  // Weekly value = box total \u00F7 weeks, rounded half-up to the cent in integer cents (same rule as the quiz and the FAQ's Liquid math).\n  function perWeek(total, weeks) { return Math.round(Math.round(total * 100) / weeks) / 100; }\n  var esc = function (s) { return String(s == null ? '' : s).replace(/[&<>\"']/g, function (c) { return { '&': '&amp;', '<': '&lt;', '>': '&gt;', '\"': '&quot;', \"'\": '&#39;' }[c]; }); };\n\n  /* ---------- pricing & portions (README \u00A74 \u2014 must match exactly) ---------- */\n  var CUP_TABLE = [[5, .5], [10, 1], [15, 1.25], [30, 2.25], [50, 3.75], [75, 5], [100, 6]];\n  function cupsFor(w) {\n    if (w <= 5) return .5;\n    if (w >= 100) return 6;\n    for (var i = 1; i < CUP_TABLE.length; i++) {\n      if (w <= CUP_TABLE[i][0]) {\n        var w0 = CUP_TABLE[i - 1][0], c0 = CUP_TABLE[i - 1][1], w1 = CUP_TABLE[i][0], c1 = CUP_TABLE[i][1];\n        return c0 + (w - w0) / (w1 - w0) * (c1 - c0);\n      }\n    }\n    return 6;\n  }\n  function cupStr(n) {\n    var r = Math.round(n * 4) / 4, i = Math.floor(r), f = +(r - i).toFixed(2);\n    var fr = { 0: '', 0.25: '\u00BC', 0.5: '\u00BD', 0.75: '\u00BE' }[f] || '';\n    return ((i || !fr) ? i : '') + fr || '\u00BC';\n  }\n\n  var BAG_CUPS = 12; // ~12 cups in a 32 oz bag (back-of-bag label)\n  // Meals: never short. A 4-week (or one-time) box always covers a full month (30+ days); other cadences cover their full interval.\n  // Toppers: whole bags, rounded up.\n  function mealTarget(days) { return days === 28 ? 30 : days; }\n  function bagsFor(days, topper, topCupN, cups) {\n    return topper ? Math.max(1, Math.ceil(topCupN * days / BAG_CUPS)) : Math.max(1, Math.ceil(cups * mealTarget(days) / BAG_CUPS - 1e-9));\n  }\n  function planFor(weeks) {\n    var p = (CFG.plans || {})[String(weeks)];\n    return p ? parseInt(p, 10) : 0;\n  }\n  function freqsAvailable() {\n    return [2, 4, 6].filter(function (f) { return f === 4 || !!planFor(f); }).filter(function (f) { return !!document.querySelector('[data-gjx-freq=\"' + f + '\"]'); });\n  }\n  var COVER_TOL_SHORT = -4, COVER_TOL_OVER = 6; // days either side of the delivery date that still count as \"on time\"\n\n  /* ---------- quiz state ---------- */\n  function readQuiz() {\n    var a = null;\n    try {\n      var raw = localStorage.getItem('gj_quiz_state_v1');\n      if (raw) {\n        var s = JSON.parse(raw);\n        if (s && s.a && s.a.name && s.a.weight && (s.screen === 'plan' || s.screen === 'build')) a = s.a;\n      }\n    } catch (e) { /* private mode */ }\n    // URL params override / fallback so emailed links work without localStorage\n    try {\n      var p = new URLSearchParams(location.search);\n      if (p.get('dog') && p.get('w')) {\n        a = a || {};\n        a.name = p.get('dog').replace(/[<>&\"']/g, '').slice(0, 40);\n        a.weight = parseInt(p.get('w'), 10) || a.weight || 30;\n        var pp = p.get('protein'), pm = p.get('mode'), pg = p.get('goal');\n        if (pp === 'beef' || pp === 'chicken') a.protein = pp;\n        if (pm === 'topper' || pm === 'meal') a.mode = pm;\n        if (pg && GOAL_WORD.hasOwnProperty(pg)) { a.goals = [pg]; }\n        var pa = parseFloat(p.get('age'));\n        if (isFinite(pa) && pa >= 0 && pa < 30) a.age = pa;\n        a.goals = a.goals || [];\n        a.food = a.food || [];\n      }\n    } catch (e) { }\n    // sanitize whatever came from storage or the URL before it drives copy or math\n    if (a) {\n      a.name = (typeof a.name === 'string' ? a.name : '').replace(/[<>&\"']/g, '').slice(0, 40);\n      var wNum = parseFloat(a.weight);\n      a.weight = isFinite(wNum) ? Math.max(2, Math.min(200, Math.round(wNum))) : 30;\n      if (Object.prototype.toString.call(a.goals) !== '[object Array]') a.goals = [];\n      if (Object.prototype.toString.call(a.food) !== '[object Array]') a.food = [];\n      if (!a.name) a = null;\n    }\n    return a;\n  }\n\n  /* ---------- personalization maps (README \u00A77) ---------- */\n  var GOAL_WORD = { digestion: 'working on digestion', skin: 'working on skin and coat', picky: 'a picky eater', weight: 'working on a healthy weight', joints: 'working on joints', calm: 'working on calm', dental: 'working on breath and teeth', energy: 'building energy' };\n  var GOAL_SHORT = { digestion: 'digestion', skin: 'skin & coat', picky: 'picky appetite', weight: 'healthy weight', joints: 'joints', calm: 'calm', dental: 'breath & teeth', energy: 'energy' };\n  var GOAL_ICON = { digestion: 'Quiz_Improve_Poop.webp', skin: 'Quiz_Improve_SkinCoat.webp', calm: 'Quiz_Improve_Anxious.webp', joints: 'Quiz_Improve_Joint.webp', weight: 'Quiz_Improve_Weight.webp', dental: 'Quiz_Improve_BadBreath.webp', picky: 'Quiz_Improve_PickyEater.webp', energy: 'Quiz_Improve_Wellness.webp' };\n  var GOAL_TILE_IDX = { digestion: 0, skin: 1, calm: 2, joints: 3, weight: 4, dental: 5, picky: 6, energy: 7 };\n  var ICON_BASE = 'https://getjoyfood.com/cdn/shop/files/';\n\n  /* ---------- state ---------- */\n  var quiz = readQuiz();\n  var root = document.querySelector('[data-gjx-root]');\n  var landingConcern = root ? root.getAttribute('data-gjx-landing') : '';\n  var S = {\n    page: quiz ? 'plan' : (landingConcern ? 'landing' : 'classic'),\n    weight: quiz && quiz.weight ? Math.max(5, Math.min(100, Math.round(quiz.weight / 5) * 5)) : 30,\n    mode: quiz ? ((quiz.mode === 'topper' || (!quiz.mode && quiz.prep === 'mixed')) ? 'topper' : 'meal') : 'meal',\n    protein: (quiz && quiz.protein) || (root && root.getAttribute('data-gjx-protein')) || 'beef',\n    buyType: 'sub',\n    freq: 4,          // delivery frequency in weeks (subscription); 4 is the recommended default\n    bagAdj: 0,        // shopper's +/- bag tweak from the coverage line; resets when the amount drivers change\n    hName: '',        // name from the portion helper (does not switch the page into quiz plan state)\n    hStage: '',       // life stage from the portion helper\n    addons: {},\n    editing: false,\n    gal: 0,\n    vid: 0,\n    vidOpen: false,\n    sticky: false\n  };\n  var exactWeight = quiz && quiz.weight ? quiz.weight : null; // for copy; slider snaps to 5s\n\n  function derived() {\n    var a = quiz || {};\n    var w = exactWeight || S.weight;\n    var topper = S.mode === 'topper';\n    var ageN = parseFloat(a.age);\n    var stage = !isNaN(ageN) ? (ageN < 1 ? 'puppy' : ageN >= 8 ? 'senior' : 'adult') : (S.hStage || 'adult');\n    var name = (a.name || '').trim();\n    var coverName = name || S.hName;\n    var isPlan = S.page === 'plan' && !!name;\n    var goals = (a.goals && a.goals.length) ? a.goals : (landingConcern ? ({ picky: ['picky'], gut: ['digestion'], itchy: ['skin'] }[landingConcern] || ['digestion']) : ['digestion']);\n    var topCup = w < 25 ? '\u00BC' : w < 50 ? '\u2153' : '\u00BD';\n    var topCupN = w < 25 ? .25 : w < 50 ? 1 / 3 : .5;\n    var cups = cupsFor(w);\n    // Bags per delivery scale with the cadence so the daily amount never changes (4 weeks = the approved model, unchanged).\n    var days = S.buyType === 'sub' ? S.freq * 7 : 28;\n    var daily = topper ? topCupN : cups;\n    // Round 27: each card is priced from its own amount, whichever card is selected.\n    // Subscribe = the chosen cadence (+ any coverage tweak). One-time trial = the same month of food as the 4-week plan,\n    // so switching cards never changes how much food the dog gets \u2014 only how it's paid for.\n    var subBags = Math.max(1, bagsFor(S.freq * 7, topper, topCupN, cups) + S.bagAdj);\n    var otpBags = Math.max(1, bagsFor(28, topper, topCupN, cups) + (S.freq === 4 ? S.bagAdj : 0));\n    var baseBags = bagsFor(days, topper, topCupN, cups);\n    var bags = S.buyType === 'sub' ? subBags : otpBags;\n    var coverDays = Math.floor(bags * BAG_CUPS / daily);\n    var PRICES = bagPrices(S.protein);\n    var subFirst = subBags * PRICES.SUB_FIRST, subRenew = subBags * PRICES.SUB_RENEW, subFull = Math.round(subBags * PRICES.OTP_FULL * 100) / 100;\n    var otpFull = Math.round(otpBags * PRICES.OTP_FULL * 100) / 100, otpNew = Math.round(otpBags * (PRICES.OTP_FULL - Math.floor(PRICES.OTP_FULL * 25) / 100) * 100) / 100; // Shopify allocates the 25% code per unit, floored ($59.95 \u2192 $44.97/bag)\n    var perDay = subFirst / (S.freq * 7);\n    // Round 25 (weekly value): every price is shown per week of the delivery cadence. A one-time box is a month's food,\n    // so it reads over 4 weeks. Box totals stay visible next to every weekly figure (renewal-law disclosure).\n    var weeks = S.buyType === 'sub' ? S.freq : 4;\n    var wkFirst = perWeek(subFirst, S.freq), wkRenew = perWeek(subRenew, S.freq), wkSubFull = perWeek(subFull, S.freq), wkOtp = perWeek(otpNew, 4), wkFull = perWeek(otpFull, 4);\n    var addonTotal = 0;\n    (CFG.addons || []).forEach(function (ad) { if (S.addons[ad.id]) addonTotal += parseFloat(ad.price); });\n    var boxTotal = (S.buyType === 'otp' ? otpNew : subFirst) + addonTotal;\n    var proteinLabel = S.protein === 'beef' ? 'Beef' : 'Chicken';\n    var breedWord = (a.breed && a.breed !== 'Other') ? (a.breed === 'Mixed breed' ? 'mixed-breed dog' : a.breed) : null;\n    var dogDesc = breedWord ? (stage === 'puppy' ? breedWord.replace(/ dog$/, '') + ' puppy' : (stage === 'adult' ? '' : stage + ' ') + breedWord) : (stage === 'adult' ? 'dog' : stage === 'puppy' ? 'puppy' : 'senior dog');\n    var goalWord = GOAL_WORD[goals[0]] || 'ready for a gut-first bowl';\n    var reasonTail = ({\n      digestion: 'gentle sorghum and pumpkin, with the full Belly Biotics\u2122 system',\n      skin: 'omega-3s from salmon oil and flaxseed for skin and coat',\n      picky: 'the recipe picky eaters devour first',\n      weight: 'nutrient-dense and portioned precisely to ' + w + ' lb',\n      joints: 'omega-3s plus precise portions that keep weight off the joints',\n      calm: 'a calmer gut often means a steadier dog',\n      dental: 'Belly Biotics\u2122 dogs show an improved oral microbiome',\n      energy: 'more absorbed nutrition means more energy at the park'\n    })[goals[0]] || 'the recipe most dogs devour first';\n    var bodyNote = ({ 'More to Love': 'Portioned to get ' + name + ' back to a healthy weight \u2014 precise portions, not free feeding.', 'A Bit Skinny': 'Portioned to put healthy weight on ' + name + ', meal by meal.' })[a.body] || '';\n    var stageNote = stage === 'puppy' ? ('Made for a growing puppy: complete & balanced for all life stages (AAFCO), including puppies who grow past 70 lb, with Belly Biotics\u2122 building a healthy gut from the start. As ' + (name || 'they') + ' grow' + (name ? 's' : '') + ', update the weight and the plan grows too.') : stage === 'senior' ? ('Gentle on senior stomachs \u2014 and the month-3 joint and dental reset matters most for ' + name + '.') : '';\n    var prepLine = isPlan ? ({ dry: 'You chose serve dry \u2014 pour ' + name + \"'s portion straight in, no prep.\", hydrated: 'You chose hydrated \u2014 add \u2153 cup warm water per cup and give it 60 seconds.', mixed: 'You chose mixed-in \u2014 ' + topCup + ' cup a day over ' + name + \"'s current food.\" })[a.prep] || '' : '';\n    return {\n      a: a, w: w, name: name, isPlan: isPlan, topper: topper, stage: stage,\n      stageLabel: { puppy: 'Puppy', adult: 'Adult', senior: 'Senior' }[stage],\n      goals: goals, goalWord: goalWord, reasonTail: reasonTail, bodyNote: bodyNote, stageNote: stageNote, prepLine: prepLine,\n      dogDesc: dogDesc, proteinLabel: proteinLabel,\n      topCup: topCup, topCupN: topCupN, cups: cups, bags: bags, baseBags: baseBags, days: days, daily: daily, coverDays: coverDays, coverName: coverName,\n      subBags: subBags, otpBags: otpBags, subFull: subFull, wkSubFull: wkSubFull,\n      subFirst: subFirst, subRenew: subRenew, otpFull: otpFull, otpNew: otpNew, perDay: perDay, boxTotal: boxTotal,\n      weeks: weeks, wkFirst: wkFirst, wkRenew: wkRenew, wkOtp: wkOtp, wkFull: wkFull,\n      fromKibble: (a.food || []).indexOf('Kibble') >= 0,\n      brandName: (a.brand || '').trim()\n    };\n  }\n\n  /* ---------- DOM helpers ---------- */\n  function $(sel, ctx) { return (ctx || document).querySelector(sel); }\n  function $$(sel, ctx) { return Array.prototype.slice.call((ctx || document).querySelectorAll(sel)); }\n  function setText(sel, txt) { $$(sel).forEach(function (el) { el.textContent = txt; }); }\n  function show(sel, on) { $$(sel).forEach(function (el) { el.hidden = !on; }); }\n\n  // Bag image: the variant's featured image from the product admin wins;\n  // the FOP webp is the fallback so the page never shows an empty bag slide.\n  var BAG_FALLBACK = {\n    beef: ICON_BASE + 'GJ_PDP_FDR_Beef-FOP.webp?v=1785277204&width=900',\n    chicken: ICON_BASE + 'GJ_PDP_FDR_Chicken-FOP.webp?v=1785277203&width=900'\n  };\n  function bagImg(protein) {\n    var vd = (CFG.variantData || {})[protein] || {};\n    return vd.img || BAG_FALLBACK[protein];\n  }\n  var GAL_N = Math.max(1, $$('[data-gjx-slide]').length);\n  function galList() {\n    var out = [];\n    $$('[data-gjx-slide]').forEach(function (sl) { var f = sl.getAttribute('data-flavor'); if (!f || f === 'all' || f === S.protein) out.push(+sl.getAttribute('data-gjx-slide')); });\n    return out.length ? out : [0];\n  }\n\n  /* ---------- render ---------- */\n  function render() {\n    var d = derived();\n    var isPlan = d.isPlan, name = d.name || 'your dog';\n    var poss = isPlan ? name + \"'s\" : 'their';\n\n    // page-state blocks\n    show('[data-gjx-show=classic]', S.page === 'classic');\n    show('[data-gjx-show=landing]', S.page === 'landing');\n    show('[data-gjx-show=plan]', isPlan);\n\n    if (isPlan) {\n      setText('[data-gjx=dog-name]', name);\n      // Personalized product description (same message as the classic hero copy, rewritten around their answers).\n      var GOAL_OUTCOME = { digestion: 'firmer, happier poops', skin: 'a calmer, shinier coat', picky: 'a bowl they actually finish', weight: 'a healthy weight', joints: 'easier movement', calm: 'a steadier, calmer dog', dental: 'fresher breath', energy: 'all-day energy' };\n      var outc = GOAL_OUTCOME[d.goals[0]];\n      var tailYears = d.stage === 'puppy' ? 'a strong start to a lifetime of healthy, happy years' : d.stage === 'senior' ? 'more healthy, happy years together' : 'more healthy, happy years';\n      var art = /^8|^1[18]$/.test(String(d.w)) ? 'an' : 'a';\n      setText('[data-gjx=playback]', 'Freeze Dried Raw ' + (d.topper ? 'Topper' : 'Meals') + ' for ' + art + ' ' + d.w + ' lb ' + d.dogDesc + ', crafted with 100% superfoods, premium protein, and Belly Biotics\u2122\u2014a blend of prebiotics, probiotics, and postbiotics\u2014to support a balanced gut' + (outc ? ', ' + outc + ',' : '') + ' and ' + tailYears + '.');\n    }\n\n    // bag images (gallery slide 0, thumb 0, sticky, close)\n    $$('[data-gjx-bagimg]').forEach(function (el) { el.style.backgroundImage = \"url('\" + bagImg(S.protein) + \"')\"; });\n\n    // buy box title + steps vs profile chip\n    setText('[data-gjx=buy-title]', isPlan ? 'Build ' + name + \"'s Bowl\" : (S.hName ? 'Build ' + S.hName + \"'s bowl\" : 'Build their bowl'));\n    show('[data-gjx=profile-chip]', isPlan && !S.editing);\n    show('[data-gjx=steps]', !isPlan || S.editing);\n    show('[data-gjx=rec-row]', isPlan && !S.editing);\n    show('[data-gjx=mode-switch]', isPlan && !S.editing);\n    show('[data-gjx=buy-quiz-nudge]', !isPlan && !quiz);\n    if (isPlan) {\n      setText('[data-gjx=profile-line]', ''); // rebuilt below\n      var pl = $('[data-gjx=profile-line]');\n      if (pl) pl.innerHTML = '<strong>' + esc(name) + '</strong> \u00B7 ' + d.w + ' lb \u00B7 ' + d.stageLabel + ' \u00B7 ' + d.proteinLabel;\n      var chips = $('[data-gjx=goal-chips]');\n      if (chips) {\n        chips.innerHTML = d.goals.map(function (g) {\n          var s = GOAL_SHORT[g] || g;\n          return '<span class=\"gjx-goal-chip\"><img src=\"' + ICON_BASE + (GOAL_ICON[g] || 'Quiz_Improve_Wellness.webp') + '\" alt=\"\">' + s.charAt(0).toUpperCase() + s.slice(1) + '</span>';\n        }).join('');\n      }\n    }\n\n    // steps\n    var slider = $('[data-gjx=weight-slider]');\n    if (slider && +slider.value !== S.weight) slider.value = S.weight;\n    setText('[data-gjx=weight-val]', S.weight + ' lb');\n    $$('[data-gjx-mode]').forEach(function (b) { b.setAttribute('aria-pressed', b.getAttribute('data-gjx-mode') === S.mode ? 'true' : 'false'); });\n    $$('[data-gjx-protein]').forEach(function (b) { b.setAttribute('aria-pressed', b.getAttribute('data-gjx-protein') === S.protein ? 'true' : 'false'); });\n\n    // spec row\n    var q = Math.round(d.cups * 4) / 4;\n    // Round 25: no bag counts in the UI. The amount is the daily scoop our nutritionist recommends; bags stay behind the scenes (cart quantity).\n    setText('[data-gjx=amt-src]', (d.topper ? 'on top of their food \u00B7 ' : '') + 'recommended for ' + (d.coverName ? d.coverName + ' (' + d.w + ' lb)' : 'a ' + d.w + ' lb dog') + ' by our Ph.D. animal nutritionist');\n    renderCover(d);\n    renderFreq(d);\n    setText('[data-gjx=feed-preview]', d.topper ? d.topCup + ' cup a day on top' : cupStr(d.cups) + (q <= 1 ? ' cup' : ' cups') + ' a day');\n    setText('[data-gjx=spec-cups]', d.topper ? d.topCup + ' cup' : cupStr(d.cups) + (q <= 1 ? ' cup' : ' cups'));\n    setText('[data-gjx=spec-cups-k]', d.topper ? '/ day on top' : '/ day');\n    setText('[data-gjx=plan-tail]', d.topper\n      ? (d.proteinLabel + ' topper for ' + (isPlan ? name + \"'s\" : 'their') + ' current food \u00B7 first month 50% off')\n      : ('A month of ' + d.proteinLabel + ' meals \u00B7 first month 50% off'));\n\n    // why rows (plan)\n    var why = $('[data-gjx=why-rows]');\n    if (why) {\n      var rows = ['We recommend ' + d.proteinLabel + ' \u2014 ' + d.reasonTail + '.', [d.bodyNote, d.stageNote].filter(Boolean).join(' ')].filter(Boolean);\n      why.innerHTML = rows.map(function (r) { return '<div class=\"gjx-why-row\"><span class=\"gjx-check\">\u2713</span><span>' + esc(r) + '</span></div>'; }).join('');\n      setText('[data-gjx=why-name]', name);\n    }\n\n    // plan cards\n    $$('[data-gjx-buytype]').forEach(function (b) { b.setAttribute('aria-pressed', b.getAttribute('data-gjx-buytype') === S.buyType ? 'true' : 'false'); });\n    $$('[data-gjx-card]').forEach(function (c) { c.setAttribute('data-on', c.getAttribute('data-gjx-card') === S.buyType ? 'true' : 'false'); });\n    setText('[data-gjx=sub-first]', fmt(d.wkFirst) + '/wk');\n    setText('[data-gjx=sub-strike]', fmt(d.wkSubFull) + '/wk'); // Round 27: strike = full price, so \"50% off first box\" reads true\n    setText('[data-gjx=sub-terms]', 'Then ' + fmt(d.wkRenew) + '/wk (' + fmt(d.subRenew) + ' every ' + S.freq + ' weeks) \u00B7 skip, pause or cancel anytime');\n    setText('[data-gjx=otp-terms]', fmt(d.otpNew) + ' for a month of food (25% off) \u00B7 reorders at ' + fmt(d.wkFull) + '/wk');\n    setText('[data-gjx=sub-save]', fmt(Math.round((d.otpFull - d.subFirst) * 100) / 100));\n    setText('[data-gjx=per-day]', fmt(d.perDay) + '/day');\n    setText('[data-gjx=month-line]', d.bags + ' \u00D7 32 oz bag' + (d.bags > 1 ? 's' : '') + ' \u00B7 a month of ' + (d.topper ? 'daily toppers' : 'meals'));\n    setText('[data-gjx=sub-renew]', fmt(d.subRenew));\n    setText('[data-gjx=otp-new]', fmt(d.wkOtp) + '/wk');\n    setText('[data-gjx=otp-strike]', fmt(d.wkFull) + '/wk');\n\n    // CTA\n    // Oct 7: plain retail CTA (\"Add to cart\") for both delivery options \u2014 the price always matches the selected row.\n    var ctaLabel = 'Add to cart \u2014 ' + fmt(d.boxTotal);\n    setText('[data-gjx=cta-label]', ctaLabel);\n    setText('[data-gjx=close-cta-label]', ctaLabel);\n    setText('[data-gjx=close-eyebrow]', isPlan ? name + \"'s plan is ready\" : 'Ready when they are');\n    var cp = $('[data-gjx=close-price]');\n    if (cp) {\n      cp.innerHTML = S.buyType === 'otp'\n        ? 'One-time purchase \u00B7 ' + fmt(d.wkOtp) + '/wk <span class=\"gjx-strike\">' + fmt(d.wkFull) + '/wk</span> \u00B7 ' + fmt(d.otpNew) + ' today'\n        : 'Subscribe &amp; Save \u00B7 ' + fmt(d.wkFirst) + '/wk for the first box <span class=\"gjx-strike\">' + fmt(d.wkSubFull) + '/wk</span> \u00B7 then ' + fmt(d.wkRenew) + '/wk';\n    }\n\n    // feeding guide highlight + prep line\n    var idx = S.weight <= 10 ? 0 : S.weight <= 25 ? 1 : S.weight <= 50 ? 2 : S.weight <= 75 ? 3 : 4;\n    $$('[data-gjx-feedrow]').forEach(function (r, i) { r.classList.toggle('is-active', i === idx); });\n    var prep = $('[data-gjx=prep-line]');\n    if (prep) { prep.hidden = !d.prepLine; prep.textContent = d.prepLine; }\n\n    // gallery slides\n    var gl = galList(); if (gl.indexOf(S.gal) < 0) S.gal = gl[0];\n    $$('[data-gjx-slide]').forEach(function (sl) { sl.hidden = +sl.getAttribute('data-gjx-slide') !== S.gal; });\n    $$('[data-gjx-thumb]').forEach(function (t) { var i = +t.getAttribute('data-gjx-thumb'); t.hidden = gl.indexOf(i) < 0; t.setAttribute('aria-pressed', i === S.gal ? 'true' : 'false'); });\n    // Keep the active thumb in view inside the strip (horizontal only \u2014 never scrolls the page).\n    var strip = $('.gjx-gal-thumbs'), at = $('[data-gjx-thumb][aria-pressed=true]');\n    if (strip && at && strip.scrollWidth > strip.clientWidth) {\n      var sr = strip.getBoundingClientRect(), ar = at.getBoundingClientRect(), sl = strip.scrollLeft;\n      var l = ar.left - sr.left + sl, r = l + ar.width;\n      if (l < sl + 8) strip.scrollLeft = Math.max(0, l - 8);\n      else if (r > sl + strip.clientWidth - 8) strip.scrollLeft = r - strip.clientWidth + 8;\n    }\n\n    // sticky bar\n    var sticky = $('[data-gjx=sticky]');\n    if (sticky) {\n      sticky.hidden = !S.sticky;\n      setText('[data-gjx=sticky-title]', isPlan ? name + \"'s Plan\" : 'Freeze Dried Raw');\n      setText('[data-gjx=sticky-sub]', d.proteinLabel + (d.topper ? ' topper' : ' meals'));\n      setText('[data-gjx=sticky-price]', fmt(S.buyType === 'otp' ? d.wkOtp : d.wkFirst) + '/wk');\n      setText('[data-gjx=sticky-was]', fmt(S.buyType === 'otp' ? d.wkFull : d.wkSubFull) + '/wk'); // same anchor as the buy box card\n      setText('[data-gjx=sticky-perday]', '\u00B7 ' + fmt(d.boxTotal) + (S.buyType === 'otp' ? ' today' : ' first box'));\n      setText('[data-gjx=sticky-cta-label]', 'Add to cart');\n    }\n\n    // ingredients / GA per protein\n    show('[data-gjx-flat=beef]', S.protein === 'beef');\n    show('[data-gjx-flat=chicken]', S.protein === 'chicken');\n    show('[data-gjx-ga=beef]', S.protein === 'beef');\n    show('[data-gjx-ga=chicken]', S.protein === 'chicken');\n    setText('[data-gjx=protein-label]', d.proteinLabel);\n    show('[data-gjx-ing-protein=beef]', S.protein === 'beef');\n    show('[data-gjx-ing-protein=chicken]', S.protein === 'chicken');\n\n    // personalized section headings\n    setText('[data-gjx=concerns-head]', isPlan ? 'What ' + name + ' needs help with.' : 'Where do they need a little extra support?');\n    var swEl = $('[data-gjx=switch-line]');\n    if (swEl) {\n      var line = '';\n      if (isPlan) {\n        line = d.topper\n          ? name + ' is on the topper plan \u2014 no switch needed. Start with ' + d.topCup + ' cup on day one.'\n          : name + \"'s 7-day switch\" + (d.fromKibble ? (d.brandName ? ' from ' + d.brandName : ' from kibble') : '') + ' \u2014 a quarter, then half, then three-quarters, then the good bowl.';\n      }\n      swEl.hidden = !line;\n      var swTx = $('[data-gjx=switch-line-text]');\n      if (swTx) swTx.textContent = line;\n    }\n\n    // add-on buttons (all instances share state)\n    $$('[data-gjx-addon]').forEach(function (b) {\n      var id = b.getAttribute('data-gjx-addon');\n      var on = !!S.addons[id];\n      b.setAttribute('aria-pressed', on ? 'true' : 'false');\n      if (b.classList.contains('gjx-add-btn')) b.textContent = on ? '\\u2713 In first box' : '+ Add to box';\n    });\n    var totalRow = $('[data-gjx=box-total-row]');\n    if (totalRow) {\n      var count = Object.keys(S.addons).filter(function (k) { return S.addons[k]; }).length;\n      totalRow.hidden = count === 0;\n      setText('[data-gjx=box-total]', fmt(d.boxTotal));\n    }\n    // \"In your first box\" strip above the CTA \u2014 makes the CTA total transparent when add-ons are toggled elsewhere on the page\n    var boxRow = $('[data-gjx=box-addons]');\n    if (boxRow) {\n      var active = (CFG.addons || []).filter(function (ad) { return S.addons[ad.id]; });\n      boxRow.hidden = active.length === 0;\n      boxRow.innerHTML = active.length ? '<div class=\"gjx-box-addons-h\">Also in your first box</div>' + active.map(function (ad) {\n        return '<div class=\"gjx-box-addon\"><span class=\"n\">' + ad.name + '</span><span class=\"p\">+ ' + fmt(parseFloat(ad.price)) + '</span><button type=\"button\" class=\"x\" data-gjx-addon=\"' + ad.id + '\" aria-label=\"Remove ' + ad.name.replace(/<[^>]+>/g, '') + '\">\u00D7</button></div>';\n      }).join('') + '<div class=\"gjx-box-addon gjx-box-addon--sum\"><span class=\"n\">First box total</span><span class=\"p\">' + fmt(d.boxTotal) + '</span></div>' : '';\n    }\n  }\n\n  /* ---------- coverage line + frequency (Round 21) ---------- */\n  // One plain sentence that ties the amount to the cadence: \"5 bags \u00B7 ~26 days of meals for Biscuit \u00B7 lands right on your next delivery\".\n  // When the order drifts (shopper tweak, topper, tiny dogs), it offers the single best one-tap fix.\n  function coverFixes(d) {\n    var target0 = d.topper ? d.days : mealTarget(d.days), diff0 = d.coverDays - target0;\n    var out = [];\n    var mk = function (label, bags, days, apply) {\n      var cd = Math.floor(bags * BAG_CUPS / d.daily), tg = d.topper ? days : mealTarget(days);\n      return { label: label, diff: cd - tg, apply: apply };\n    };\n    var bagDays = Math.round(BAG_CUPS / d.daily);\n    out.push(mk('Add ~' + bagDays + ' days of food', d.bags + 1, d.days, function () { S.bagAdj++; }));\n    if (d.bags > 1) out.push(mk('Trim ~' + bagDays + ' days', d.bags - 1, d.days, function () { S.bagAdj--; }));\n    if (S.buyType === 'sub') {\n      freqsAvailable().forEach(function (f) {\n        if (f === S.freq) return;\n        var b = bagsFor(f * 7, d.topper, d.topCupN, d.cups);\n        out.push(mk('Switch to every ' + f + ' weeks', b, f * 7, function () { S.freq = f; S.bagAdj = 0; }));\n      });\n    }\n    // never \"fix\" an order into one that runs short (meals must still cover the full month / interval)\n    out = out.filter(function (x) { return d.topper ? x.diff >= COVER_TOL_SHORT : x.diff >= 0; });\n    // Round 29: prefer fixes that never run short (a topper that runs out 4 days early is worse for the dog and for retention\n    // than the cadence that fits), then the closest fit.\n    var rank = function (x) { return x.diff < 0 ? 100 + Math.abs(x.diff) : x.diff; };\n    out.sort(function (x, y) { return rank(x) - rank(y); });\n    var best = out[0];\n    return (best && Math.abs(best.diff) + 3 <= Math.abs(diff0)) ? best : null;\n  }\n  var coverFix = null;\n  function renderCover(d) {\n    var el = $('[data-gjx=cover]');\n    if (!el) return;\n    var what = d.topper ? 'toppers' : 'meals';\n    var who = d.coverName ? ' for ' + d.coverName : '';\n    // The bag count already sits in the amount row above, so this caption only says how long it lasts.\n    var head = '~' + d.coverDays + ' days of ' + what + who;\n    var target = d.topper ? d.days : mealTarget(d.days);\n    var diff = d.coverDays - target, status = 'ok', tail = '';\n    var month = d.days === 28;\n    coverFix = null;\n    if (S.buyType === 'sub') {\n      var shortAt = d.topper ? COVER_TOL_SHORT : 0, overAt = d.topper ? COVER_TOL_OVER : 10;\n      if (diff < shortAt) { status = 'short'; tail = 'runs out ~' + (target - d.coverDays) + ' days before the next box'; }\n      else if (diff > overAt) { status = 'over'; tail = '~' + (d.coverDays - d.days) + ' extra days each delivery'; }\n      else tail = month && !d.topper ? 'a full month, every delivery' : 'lands right on your next delivery';\n      if (status !== 'ok') coverFix = coverFixes(d);\n      // Toppers are sold by the whole bag (rounded up), so a little to spare is expected: say it calmly, still offer the better fit.\n      if (status === 'over' && d.topper) { status = 'spare'; tail = 'covers the ' + S.freq + ' weeks with ~' + (d.coverDays - d.days) + ' days to spare'; }\n      else if (status === 'over' && !coverFix) tail += ' (push a delivery back anytime)';\n    } else {\n      tail = d.topper ? 'one delivery, no commitment' : 'a full month in one box';\n    }\n    el.setAttribute('data-status', status);\n    setText('[data-gjx=cover-text]', head + ' \u00B7 ' + tail);\n    setText('[data-gjx=cover-ic]', (status === 'ok' || status === 'spare') ? '\u2713' : '!');\n    var fx = $('[data-gjx=cover-fix]');\n    if (fx) { fx.hidden = !coverFix; fx.textContent = coverFix ? coverFix.label : ''; }\n    // One sizing affordance per state: quiz shoppers can retake the quiz; everyone else gets the size helper.\n    var planSt = d.isPlan && !S.editing;\n    $$('.gjx-cover [data-gjx=helper-open]').forEach(function (b) { b.hidden = planSt; });\n    show('[data-gjx=retake]', planSt);\n    var based = $('[data-gjx=cover-based]');\n    if (based) {\n      var showBased = !!(S.hName || S.hStage || d.stage === 'puppy');\n      based.hidden = !showBased;\n      if (showBased) based.textContent = 'Based on ' + d.w + ' lb \u00B7 ' + d.stageLabel.toLowerCase() + ' \u00B7 ' + (d.topper ? 'topper' : 'full bowl') + (d.stage === 'puppy' ? ' \u00B7 growing pups may need more; adjust as they grow' : '');\n    }\n  }\n  function renderFreq(d) {\n    var box = $('[data-gjx=freq]');\n    if (!box) return;\n    box.hidden = S.buyType !== 'sub';\n    box.setAttribute('data-open', S.freqOpen ? 'true' : 'false');\n    setText('[data-gjx=freq-val]', S.freq + ' weeks');\n    setText('[data-gjx=freq-word]', S.freq + ' weeks');\n    // \"Recommended\" sits on the cadence whose whole-bag amount lands closest to the next delivery without running short:\n    // 4 weeks (the default) whenever it fits, otherwise the cadence that does (e.g. 6 weeks for a \u00BD-cup topper).\n    var diffF = function (f) {\n      var b = bagsFor(f * 7, d.topper, d.topCupN, d.cups);\n      return Math.floor(b * BAG_CUPS / d.daily) - (d.topper ? f * 7 : mealTarget(f * 7));\n    };\n    var fitsF = function (f) { var x = diffF(f); return d.topper ? (x >= COVER_TOL_SHORT && x <= COVER_TOL_OVER) : (x >= 0 && x <= 10); };\n    // 4 weeks whenever it fits; otherwise the cadence with the least leftover that never runs short.\n    var recF = fitsF(4) ? 4 : freqsAvailable().slice().sort(function (x, y) {\n      var dx = diffF(x), dy = diffF(y);\n      return (dx < (d.topper ? COVER_TOL_SHORT : 0) ? 999 : dx) - (dy < (d.topper ? COVER_TOL_SHORT : 0) ? 999 : dy);\n    })[0] || 4;\n    show('[data-gjx=freq-rec]', S.freq === recF && S.bagAdj === 0);\n    var tg = $('[data-gjx=freq-toggle]');\n    if (tg) { tg.setAttribute('aria-expanded', S.freqOpen ? 'true' : 'false'); tg.textContent = S.freqOpen ? 'Done' : 'Change'; }\n    var chips = $('.gjx-freq-chips');\n    if (chips) chips.hidden = !S.freqOpen;\n    $$('[data-gjx-freq]').forEach(function (b) {\n      var f = +b.getAttribute('data-gjx-freq');\n      b.setAttribute('aria-checked', f === S.freq ? 'true' : 'false');\n      var n = bagsFor(f * 7, d.topper, d.topCupN, d.cups) + (f === S.freq ? S.bagAdj : 0);\n      n = Math.max(1, n);\n      var sp = b.querySelector('[data-gjx-freq-bags]');\n      if (sp) sp.textContent = f === recF ? ' \u00B7 recommended' : '';\n    });\n  }\n\n  /* ---------- portion helper (bottom sheet) ---------- */\n  var H = { name: '', weight: 30, stage: 'adult', mode: 'meal' }, helperReturn = null;\n  function helperPreview() {\n    var out = $('[data-gjx=h-out]');\n    if (!out) return;\n    var topper = H.mode === 'topper';\n    var cups = cupsFor(H.weight), tcN = H.weight < 25 ? .25 : H.weight < 50 ? 1 / 3 : .5, tc = H.weight < 25 ? '\u00BC' : H.weight < 50 ? '\u2153' : '\u00BD';\n    var days = S.freq * 7, b = bagsFor(days, topper, tcN, cups);\n    var nm = H.name ? esc(H.name) : 'Your dog';\n    var q = Math.round(cups * 4) / 4;\n    var amt = topper ? tc + ' cup a day on top of their food' : cupStr(cups) + (q <= 1 ? ' cup' : ' cups') + ' a day';\n    var bp = bagPrices(S.protein), wkF = fmt(perWeek(b * bp.SUB_FIRST, S.freq)), wkR = fmt(perWeek(b * bp.SUB_RENEW, S.freq));\n    out.innerHTML = '<div class=\"gjx-sheet-out-k\">' + nm + \"'s plan</div>\" +\n      '<div class=\"gjx-sheet-out-v\"><strong>' + amt + '</strong><span>~' + Math.floor(b * BAG_CUPS / (topper ? tcN : cups)) + ' days of ' + (topper ? 'toppers' : 'meals') + ', delivered every ' + S.freq + ' weeks</span>' +\n      '<span>' + wkF + '/wk for the first box (50% off), then ' + wkR + '/wk \u00B7 Belly Biotics\u2122 in every scoop</span></div>' +\n      (H.stage === 'puppy' ? '<div class=\"gjx-sheet-note\">Growing puppies often need more than the adult amount. Start here, weigh them weekly and adjust: your plan changes in a tap.</div>' : '') +\n      (H.stage === 'senior' ? '<div class=\"gjx-sheet-note\">Less active seniors may need a little less. Keep an eye on their waistline and adjust anytime.</div>' : '');\n    setText('[data-gjx=h-weight-val]', H.weight + ' lb');\n    $$('[data-gjx-hstage]').forEach(function (x) { x.setAttribute('aria-checked', x.getAttribute('data-gjx-hstage') === H.stage ? 'true' : 'false'); });\n    $$('[data-gjx-hmode]').forEach(function (x) { x.setAttribute('aria-checked', x.getAttribute('data-gjx-hmode') === H.mode ? 'true' : 'false'); });\n  }\n  function helperOpen(from) {\n    var sh = $('[data-gjx=helper]');\n    if (!sh) return;\n    var d = derived();\n    H.name = S.hName || d.name || '';\n    H.weight = S.weight; H.stage = d.stage; H.mode = S.mode;\n    var ni = $('[data-gjx=h-name]'); if (ni) ni.value = H.name;\n    var wi = $('[data-gjx=h-weight]'); if (wi) wi.value = H.weight;\n    helperPreview();\n    helperReturn = from || null;\n    sh.hidden = false;\n    document.documentElement.classList.add('gjx-sheet-open');\n    requestAnimationFrame(function () { sh.classList.add('is-in'); });\n    var first = $('[data-gjx=h-weight]') || ni;\n    if (first) setTimeout(function () { try { first.focus({ preventScroll: true }); } catch (e) { first.focus(); } }, 60);\n    track('gjx_helper_open', {});\n  }\n  function helperClose() {\n    var sh = $('[data-gjx=helper]');\n    if (!sh || sh.hidden) return;\n    sh.classList.remove('is-in');\n    document.documentElement.classList.remove('gjx-sheet-open');\n    setTimeout(function () { sh.hidden = true; }, 200);\n    if (helperReturn && helperReturn.focus) { try { helperReturn.focus({ preventScroll: true }); } catch (e) {} }\n  }\n  function helperUse() {\n    S.weight = H.weight; exactWeight = null; S.mode = H.mode; S.hStage = H.stage;\n    S.hName = (H.name || '').replace(/[<>&\"']/g, '').trim().slice(0, 24);\n    S.bagAdj = 0; S.buyType = 'sub';\n    helperClose();\n    render();\n    track('gjx_helper_use', { weight: S.weight, mode: S.mode, stage: S.hStage, named: !!S.hName });\n    var cv = $('[data-gjx=cover]');\n    if (cv) { cv.classList.remove('is-flash'); void cv.offsetWidth; cv.classList.add('is-flash'); cv.scrollIntoView({ behavior: 'smooth', block: 'center' }); }\n  }\n  document.addEventListener('input', function (e) {\n    if (e.target.matches('[data-gjx=h-weight]')) { H.weight = +e.target.value; helperPreview(); }\n    else if (e.target.matches('[data-gjx=h-name]')) { H.name = e.target.value.replace(/[<>&\"']/g, '').slice(0, 24); helperPreview(); }\n  });\n  document.addEventListener('keydown', function (e) {\n    var sh = $('[data-gjx=helper]');\n    if (!sh || sh.hidden) return;\n    if (e.key === 'Escape') { helperClose(); return; }\n    if (e.key === 'Enter' && e.target.matches('[data-gjx=h-name]')) { e.preventDefault(); helperUse(); return; }\n    if (e.key === 'Tab') { // keep focus inside the dialog\n      var f = $$('button, input', sh.querySelector('.gjx-sheet-card')).filter(function (x) { return !x.disabled && x.offsetParent !== null; });\n      if (!f.length) return;\n      if (e.shiftKey && document.activeElement === f[0]) { e.preventDefault(); f[f.length - 1].focus(); }\n      else if (!e.shiftKey && document.activeElement === f[f.length - 1]) { e.preventDefault(); f[0].focus(); }\n    }\n  });\n  document.addEventListener('click', function (e) {\n    var t = e.target.closest('[data-gjx=helper-open],[data-gjx=helper-close],[data-gjx=helper-use],[data-gjx-hstage],[data-gjx-hmode],[data-gjx=freq-toggle],[data-gjx-freq],[data-gjx=cover-fix],[data-gjx-jump]');\n    if (!t) return;\n    if (t.matches('[data-gjx=helper-open]')) helperOpen(t);\n    else if (t.matches('[data-gjx=helper-close]')) helperClose();\n    else if (t.matches('[data-gjx=helper-use]')) helperUse();\n    else if (t.hasAttribute('data-gjx-hstage')) { H.stage = t.getAttribute('data-gjx-hstage'); helperPreview(); }\n    else if (t.hasAttribute('data-gjx-hmode')) { H.mode = t.getAttribute('data-gjx-hmode'); helperPreview(); }\n    else if (t.matches('[data-gjx=freq-toggle]')) { S.freqOpen = !S.freqOpen; render(); }\n    else if (t.hasAttribute('data-gjx-freq')) { S.freq = +t.getAttribute('data-gjx-freq'); S.bagAdj = 0; S.freqOpen = false; render(); track('gjx_frequency', { weeks: S.freq }); }\n    else if (t.matches('[data-gjx=cover-fix]')) { if (coverFix) { var lbl = coverFix.label; coverFix.apply(); render(); track('gjx_cover_fix', { fix: lbl }); } }\n    else if (t.hasAttribute('data-gjx-jump')) {\n      var tgt = document.getElementById(t.getAttribute('data-gjx-jump'));\n      if (!tgt) return;\n      e.preventDefault();\n      if (tgt.tagName === 'DETAILS') tgt.open = true;\n      var which = t.getAttribute('data-gjx-open');\n      if (which) { var acc = tgt.querySelector('[data-gjx-acc=\"' + which + '\"]'); if (acc) acc.open = true; }\n      tgt.scrollIntoView({ behavior: 'smooth', block: 'start' });\n    }\n  });\n\n  /* ---------- events: buy box ---------- */\n  document.addEventListener('input', function (e) {\n    if (e.target.matches('[data-gjx=weight-slider]')) { S.weight = +e.target.value; exactWeight = null; S.bagAdj = 0; render(); track('gjx_weight', { weight: S.weight }); }\n  });\n  document.addEventListener('click', function (e) {\n    var t = e.target.closest('[data-gjx-mode],[data-gjx-protein]:not([data-gjx-root]),[data-gjx-buytype],[data-gjx=profile-chip],[data-gjx-thumb],[data-gjx=gal-prev],[data-gjx=gal-next],[data-gjx-vtile],[data-gjx=vid-close],[data-gjx-addon],[data-gjx-addcart],[data-gjx=cta],[data-gjx=sticky-cta],[data-gjx=close-cta],[data-gjx-scrollbuy],[data-gjx-concern],[data-gjx-ing],[data-gjx-revchip],[data-gjx=rev-more],[data-gjx-bowlstep],[data-gjx-benefstop],[data-gjx=founder-tile]');\n    if (!t) return;\n    if (t.hasAttribute('data-gjx-mode')) { S.mode = t.getAttribute('data-gjx-mode'); S.bagAdj = 0; render(); track('gjx_mode', { mode: S.mode }); }\n    else if (t.hasAttribute('data-gjx-protein')) { S.protein = t.getAttribute('data-gjx-protein'); render(); track('gjx_protein', { protein: S.protein }); }\n    else if (t.hasAttribute('data-gjx-buytype')) { S.buyType = t.getAttribute('data-gjx-buytype'); render(); track('gjx_buytype', { type: S.buyType }); }\n    else if (t.matches('[data-gjx=profile-chip]')) { S.editing = !S.editing; render(); }\n    else if (t.hasAttribute('data-gjx-thumb')) { S.gal = +t.getAttribute('data-gjx-thumb'); render(); }\n    else if (t.matches('[data-gjx=gal-prev]')) { var gp = galList(), ip = gp.indexOf(S.gal); S.gal = gp[(ip - 1 + gp.length) % gp.length]; render(); }\n    else if (t.matches('[data-gjx=gal-next]')) { var gn = galList(), inx = gn.indexOf(S.gal); S.gal = gn[(inx + 1) % gn.length]; render(); }\n    else if (t.hasAttribute('data-gjx-vtile')) { toggleVideo(+t.getAttribute('data-gjx-vtile')); }\n    else if (t.matches('[data-gjx=vid-close]')) { closeVideo(); }\n    else if (t.hasAttribute('data-gjx-addcart')) { addVariantToCart(t); }\n    else if (t.hasAttribute('data-gjx-addon')) { var id = t.getAttribute('data-gjx-addon'); S.addons[id] = !S.addons[id]; render(); track('gjx_addon', { id: id, on: S.addons[id] }); }\n    else if (t.matches('[data-gjx=cta]') || t.matches('[data-gjx=close-cta]')) { addToCart(t); }\n    else if (t.matches('[data-gjx=sticky-cta]')) {\n      if (window.matchMedia('(min-width:1024px)').matches) scrollToBuy(); else addToCart(t);\n    }\n    else if (t.hasAttribute('data-gjx-scrollbuy')) { scrollToBuy(); }\n    else if (t.hasAttribute('data-gjx-concern')) { concernTap(+t.getAttribute('data-gjx-concern')); }\n    else if (t.hasAttribute('data-gjx-ing')) { ingTap(+t.getAttribute('data-gjx-ing')); }\n    else if (t.hasAttribute('data-gjx-revchip')) { revFilter(t.getAttribute('data-gjx-revchip')); }\n    else if (t.getAttribute('data-gjx') === 'rev-more') { revExpanded = !revExpanded; revFilter(revTag); if (!revExpanded) { var rs = $('[data-gjx=rev-scroll]'); if (rs) rs.scrollIntoView({ block: 'start', behavior: 'smooth' }); } }\n    else if (t.hasAttribute('data-gjx-bowlstep')) { bowlUser = true; setBowl(+t.getAttribute('data-gjx-bowlstep')); }\n    else if (t.hasAttribute('data-gjx-benefstop')) { benefUser = true; setBenef(+t.getAttribute('data-gjx-benefstop')); }\n    else if (t.matches('[data-gjx=founder-tile]')) { playFounder(t); }\n  });\n\n  // keyboard access for the video tiles rendered as role=\"button\" divs\n  document.addEventListener('keydown', function (e) {\n    if ((e.key === 'Enter' || e.key === ' ') && e.target.matches && e.target.matches('[data-gjx=founder-tile]')) {\n      e.preventDefault();\n      playFounder(e.target);\n    }\n  });\n\n  function scrollToBuy() {\n    var bb = $('[data-gjx-buybox]');\n    if (bb) bb.scrollIntoView({ behavior: 'smooth', block: 'start' });\n  }\n\n  /* ---------- cart ---------- */\n  // Open the store's cart drawer in place (Rebuy Smart Cart / theme drawer); falls back to /cart.\n  function openCart() {\n    document.dispatchEvent(new CustomEvent('cart:build'));\n    document.dispatchEvent(new CustomEvent('cart:refresh'));\n    try { if (window.Rebuy && window.Rebuy.Cart && typeof window.Rebuy.Cart.fetchCart === 'function') window.Rebuy.Cart.fetchCart(); } catch (e) {}\n    var trig = document.querySelector('.js-drawer-open-cart');\n    if (trig) trig.click(); else window.location.href = '/cart';\n  }\n\n  // Routine tiles: one-tap add of a single variant (treats / chews), then open the cart.\n  function addVariantToCart(btn) {\n    var vid = parseInt(btn.getAttribute('data-gjx-addcart'), 10);\n    if (!vid) return;\n    var orig = btn.textContent;\n    btn.disabled = true; btn.textContent = 'Adding\\u2026';\n    fetch('/cart/add.js', {\n      method: 'POST',\n      headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' },\n      body: JSON.stringify({ items: [{ id: vid, quantity: 1 }] })\n    }).then(function (r) {\n      if (!r.ok) return r.json().then(function (j) { throw new Error(j.description || 'Cart error'); });\n      return r.json();\n    }).then(function () {\n      track('gjx_routine_add', { variant: vid, name: btn.getAttribute('data-gjx-addname') || '' });\n      btn.disabled = false; btn.textContent = '\\u2713 In your cart'; btn.setAttribute('aria-pressed', 'true');\n      setTimeout(function () { btn.textContent = orig; btn.setAttribute('aria-pressed', 'false'); }, 4000);\n      openCart();\n    }).catch(function (err) {\n      btn.disabled = false; btn.textContent = orig;\n      alertBar(err.message || 'Something went wrong \\u2014 please try again.');\n    });\n  }\n\n  function addToCart(btn) {\n    var d = derived();\n    var variantId = S.protein === 'beef' ? CFG.variants.beef : CFG.variants.chicken;\n    if (!variantId) { console.warn('[gjx] missing variant id'); return; }\n    var item = {\n      id: parseInt(variantId, 10),\n      quantity: d.bags,\n      properties: {\n        _dog_name: d.name || S.hName || '',\n        _weight_lb: String(d.w),\n        _mode: S.mode,\n        _goals: (d.goals || []).join(','),\n        _frequency_weeks: S.buyType === 'sub' ? String(S.freq) : '',\n        _bags: String(d.bags),\n        // Visible in the cart drawer, checkout, order emails and the subscription portal: a supply, not a bag count.\n        Plan: ((d.name || S.hName) ? (d.name || S.hName) + \"'s \" : '') + (S.buyType === 'sub' ? S.freq + '-week supply' : '1-month supply') + (d.topper ? ' (topper)' : '')\n      }\n    };\n    if (S.buyType === 'sub') {\n      var plan = planFor(S.freq) || (S.freq === 4 ? parseInt(CFG.sellingPlanId, 10) : 0);\n      if (!plan) { S.freq = 4; plan = parseInt(CFG.sellingPlanId, 10); } // never send a cadence we can't honor\n      if (plan) item.selling_plan = plan;\n    }\n    var items = [item];\n    (CFG.addons || []).forEach(function (ad) {\n      if (S.addons[ad.id] && ad.variantId) items.push({ id: parseInt(ad.variantId, 10), quantity: 1 });\n    });\n    // Keep the inner label span (data-gjx=cta-label) intact: restore innerHTML, not textContent, or later price\n    // re-renders can't find the span and the CTA freezes at the pre-add price.\n    var orig = btn.innerHTML;\n    btn.disabled = true; btn.textContent = 'Adding\u2026';\n    // Trial code goes on the cart BEFORE the add so the cart drawer (Rebuy auto-opens on add) renders the discounted price on first paint.\n    var pre = (S.buyType === 'otp' && CFG.trialCode)\n      ? fetch('/cart/update.js', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' }, body: JSON.stringify({ discount: CFG.trialCode }) }).catch(function () {})\n      : Promise.resolve();\n    pre.then(function () { return fetch('/cart/add.js', {\n      method: 'POST',\n      headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' },\n      body: JSON.stringify({ items: items })\n    }); }).then(function (r) {\n      if (!r.ok) return r.json().then(function (j) { throw new Error(j.description || 'Cart error'); });\n      return r.json();\n    }).then(function () {\n      track('gjx_add_to_cart', { bags: d.bags, protein: S.protein, mode: S.mode, type: S.buyType, weeks: S.buyType === 'sub' ? S.freq : 0, total: d.boxTotal });\n      var after = function () {\n        btn.disabled = false; btn.textContent = '\\u2713 Added to cart'; setTimeout(function () { btn.innerHTML = orig; render(); }, 3000);\n        openCart();\n      };\n      if (S.buyType === 'otp' && CFG.trialCode) {\n        // Belt and braces: also set the classic discount cookie so checkout carries the code even if the cart-level apply was dropped.\n        fetch('/discount/' + encodeURIComponent(CFG.trialCode), { credentials: 'same-origin' }).then(after, after);\n      } else { after(); }\n    }).catch(function (err) {\n      btn.disabled = false; btn.innerHTML = orig; render();\n      alertBar(err.message || 'Something went wrong \u2014 please try again.');\n    });\n  }\n  function alertBar(msg) {\n    var el = $('[data-gjx=cart-error]');\n    if (el) { el.textContent = msg; el.hidden = false; setTimeout(function () { el.hidden = true; }, 5000); }\n  }\n\n  /* ---------- analytics ---------- */\n  function track(ev, data) {\n    try { window.dataLayer = window.dataLayer || []; window.dataLayer.push(Object.assign({ event: ev }, data || {})); } catch (e) { }\n  }\n\n  /* ---------- sticky bar visibility ---------- */\n  (function () {\n    var el = $('[data-gjx-buybox]');\n    if (!el) return;\n    if ('IntersectionObserver' in window) {\n      new IntersectionObserver(function (entries) {\n        var en = entries[entries.length - 1];\n        var stick = !en.isIntersecting && en.boundingClientRect.bottom < 0;\n        if (stick !== S.sticky) { S.sticky = stick; render(); }\n      }, { threshold: 0 }).observe(el);\n    } else {\n      var onScroll = function () {\n        var stick = el.getBoundingClientRect().bottom < 0;\n        if (stick !== S.sticky) { S.sticky = stick; render(); }\n      };\n      window.addEventListener('scroll', onScroll, { passive: true });\n      window.addEventListener('resize', onScroll);\n    }\n  })();\n\n  /* ---------- video strip ---------- */\n  var VIDEOS = CFG.videos || [];\n  function sortVideos() {\n    var d = derived();\n    var g0 = d.goals[0];\n    // Neil stays first (brand anchor); the tile matching the dog's top goal comes next; rest keep the configured order.\n    var score = function (v) { return v.c === 'nph' ? 2 : (v.c === g0 || (v.c === 'senior' && d.stage === 'senior')) ? 1 : 0; };\n    VIDEOS = VIDEOS.slice().sort(function (x, y) { return score(y) - score(x); });\n    var grid = $('[data-gjx=vgrid]');\n    if (!grid) return;\n    grid.innerHTML = VIDEOS.map(function (v, i) {\n      var media = v.src\n        ? '<video src=\"' + v.src + '\"' + (v.poster ? ' poster=\"' + v.poster + '\"' : '') + ' muted playsinline preload=\"' + (v.poster ? 'none' : 'metadata') + '\"></video>'\n        : '<img src=\"' + v.poster + '\" alt=\"\" loading=\"lazy\">';\n      return '<button type=\"button\" class=\"gjx-vtile\" role=\"listitem\" data-gjx-vtile=\"' + i + '\" aria-label=\"Play review video: ' + String(v.tag).replace(/\"/g, '') + '\">' + media +\n        '<span class=\"gjx-vtile-stars\">\u2605\u2605\u2605\u2605\u2605</span><span class=\"gjx-vtile-play\">\u25B6</span><span class=\"gjx-vtile-tag\">' + v.tag + '</span></button>';\n    }).join('');\n    vcarSync();\n  }\n  // Carousel arrows (desktop/mouse only; touch swipes). Each click pages by the visible width.\n  function vcarSync() {\n    var g = $('[data-gjx=vgrid]'); if (!g) return;\n    var prev = $('[data-gjx=vcar-prev]'), next = $('[data-gjx=vcar-next]');\n    var max = g.scrollWidth - g.clientWidth - 2;\n    if (prev) prev.hidden = g.scrollLeft <= 2;\n    if (next) next.hidden = g.scrollLeft >= max;\n  }\n  (function () {\n    var g = $('[data-gjx=vgrid]'); if (!g) return;\n    g.addEventListener('scroll', function () { window.requestAnimationFrame(vcarSync); }, { passive: true });\n    window.addEventListener('resize', vcarSync);\n    document.addEventListener('click', function (e) {\n      var b = e.target.closest('[data-gjx=vcar-prev],[data-gjx=vcar-next]'); if (!b) return;\n      var dir = b.matches('[data-gjx=vcar-next]') ? 1 : -1;\n      g.scrollBy({ left: dir * (g.clientWidth + 6), behavior: 'smooth' });\n    });\n  })();\n  function toggleVideo(i) {\n    if (S.vidOpen && S.vid === i) { closeVideo(); return; }\n    S.vid = i; S.vidOpen = true;\n    var v = VIDEOS[i];\n    var wrap = $('[data-gjx=vplayer]');\n    if (!wrap) return;\n    wrap.hidden = false;\n    var media = v.src\n      ? '<video src=\"' + v.src + '\"' + (v.poster ? ' poster=\"' + v.poster + '\"' : '') + ' autoplay playsinline controls></video>'\n      : '<img src=\"' + v.poster + '\" alt=\"\"><span class=\"gjx-vplayer-coming\">Video coming</span>';\n    wrap.innerHTML = '<div class=\"gjx-vplayer-frame\"' + (v.poster ? ' style=\"--gjx-vposter:url(&quot;' + v.poster + '&quot;)\"' : '') + '>' + media +\n      '<button type=\"button\" class=\"gjx-vplayer-close\" data-gjx=\"vid-close\" aria-label=\"Close video\">\u00D7</button></div>' +\n      '<div class=\"gjx-vplayer-meta\"><div class=\"st\">\u2605\u2605\u2605\u2605\u2605</div><div class=\"q\">' + v.quote + '</div><div class=\"w\">' + (v.who || '\u2713 Verified Get Joy customer') + '</div></div>';\n    $$('[data-gjx-vtile]').forEach(function (b) { b.setAttribute('aria-pressed', +b.getAttribute('data-gjx-vtile') === i ? 'true' : 'false'); });\n  }\n  function closeVideo() {\n    S.vidOpen = false;\n    var wrap = $('[data-gjx=vplayer]');\n    if (wrap) { wrap.hidden = true; wrap.innerHTML = ''; }\n    $$('[data-gjx-vtile]').forEach(function (b) { b.setAttribute('aria-pressed', 'false'); });\n  }\n\n  /* ---------- concerns (Block 2b) ---------- */\n  var CONCERNS = CFG.concerns || [];\n  var concernSel = null;\n  function initConcerns() {\n    if (!$('[data-gjx=concern-panel]')) return;\n    var d = derived();\n    var idx = d.isPlan ? (GOAL_TILE_IDX[d.goals[0]] != null ? GOAL_TILE_IDX[d.goals[0]] : 0) : 0;\n    concernTap(idx, true);\n  }\n  function concernTap(i, silent) {\n    concernSel = (concernSel === i && !silent) ? -1 : i;\n    $$('[data-gjx-concern]').forEach(function (b) { b.setAttribute('aria-pressed', +b.getAttribute('data-gjx-concern') === concernSel ? 'true' : 'false'); });\n    var panel = $('[data-gjx=concern-panel]');\n    if (!panel) return;\n    if (concernSel < 0) { panel.hidden = true; return; }\n    var c = CONCERNS[concernSel];\n    if (!c) { panel.hidden = true; return; }\n    panel.hidden = false;\n    setText('[data-gjx=concern-title]', c.title);\n    setText('[data-gjx=concern-body]', c.body);\n    var im = $('[data-gjx=concern-img]');\n    if (im) im.src = c.illo;\n    var prods = $('[data-gjx=concern-prods]');\n    if (prods) {\n      prods.innerHTML = (c.addons || []).map(function (id) {\n        var ad = (CFG.addons || []).filter(function (x) { return x.id === id; })[0];\n        if (!ad) return '';\n        var on = !!S.addons[id];\n        return '<div class=\"gjx-addon-row\">' +\n          (ad.img ? '<div class=\"im\" style=\"background-image:url(\\'' + ad.img + '\\')\"></div>' : '<div class=\"im im--ph\"></div>') +\n          '<div class=\"mid\"><strong>' + ad.name + '</strong><div class=\"p\">' + (ad.pair || ad.sub || '') + '</div></div>' +\n          '<div class=\"r\"><div class=\"pr\">$' + parseFloat(ad.price).toFixed(2) + '</div>' +\n          '<button type=\"button\" class=\"gjx-add-btn\" data-gjx-addon=\"' + id + '\" aria-pressed=\"' + on + '\">' + (on ? '\\u2713 In first box' : '+ Add to box') + '</button></div></div>';\n      }).join('');\n    }\n  }\n\n  /* ---------- ingredients (Block 4) ---------- */\n  var ING = CFG.ingredients || {};\n  var ingSel = null;\n  function ingTap(i) {\n    ingSel = ingSel === i ? null : i;\n    $$('[data-gjx-ing]').forEach(function (b) { b.setAttribute('aria-pressed', +b.getAttribute('data-gjx-ing') === ingSel ? 'true' : 'false'); });\n    var flat = $('[data-gjx=ing-flat]'), panel = $('[data-gjx=ing-panel]');\n    if (!panel) return;\n    if (ingSel == null) { panel.hidden = true; if (flat) flat.hidden = false; return; }\n    var list = ING[S.protein] || [];\n    var d = list[ingSel];\n    if (!d) return;\n    if (flat) flat.hidden = true;\n    panel.hidden = false;\n    setText('[data-gjx=ing-name]', d.label);\n    setText('[data-gjx=ing-line]', d.line);\n    var imWrap = $('[data-gjx=ing-panel-im]');\n    if (imWrap) imWrap.innerHTML = d.img ? '<img src=\"' + d.img + '\" alt=\"' + d.label + '\">' : '<div class=\"ph\" role=\"img\" aria-label=\"' + d.label + '\"></div>';\n  }\n\n  /* ---------- reviews filter (Block 3) ---------- */\n  var revTag = 'all', revExpanded = false, REV_INITIAL = 8;\n  function revFilter(tag) {\n    revTag = tag;\n    $$('[data-gjx-revchip]').forEach(function (b) { b.setAttribute('aria-pressed', b.getAttribute('data-gjx-revchip') === tag ? 'true' : 'false'); });\n    var shown = 0, hiddenByCap = 0;\n    $$('[data-gjx-revtag]').forEach(function (card) {\n      var match = tag === 'all' || card.getAttribute('data-gjx-revtag') === tag;\n      var cap = tag === 'all' && !revExpanded && shown >= REV_INITIAL;\n      card.hidden = !match || cap;\n      if (match && !cap) shown++; else if (match && cap) hiddenByCap++;\n    });\n    var more = $('[data-gjx=rev-more]');\n    if (more) { more.hidden = !(hiddenByCap > 0 || (revExpanded && tag === 'all')); more.textContent = revExpanded ? 'Show fewer' : 'Show more reviews (' + hiddenByCap + ')'; }\n  }\n  // Re-apply the desktop 8-card cap when the viewport crosses 1024 (tablet rotate, window resize).\n  (function () { var wasDesk = window.innerWidth >= 1024, t; window.addEventListener('resize', function () {\n    clearTimeout(t); t = setTimeout(function () { var isDesk = window.innerWidth >= 1024; if (isDesk !== wasDesk) { wasDesk = isDesk; revFilter(revTag); } }, 150); }); })();\n  function sortReviews() {\n    var d = derived();\n    var match = { digestion: 'Digestion', skin: 'Skin & allergy', picky: 'Picky eater' }[d.goals[0]] || null;\n    var wrap = $('[data-gjx=rev-scroll]');\n    if (!wrap || !match) return;\n    var cards = $$('[data-gjx-revtag]', wrap);\n    cards.filter(function (c) { return c.getAttribute('data-gjx-revtag') === match; })\n      .reverse().forEach(function (c) { wrap.insertBefore(c, wrap.firstChild); });\n  }\n\n  /* ---------- transition bowl (Block 5) ---------- */\n  var bowlIdx = 0, bowlUser = false, BOWL_STEPS = [['Days 1\u20132', 25], ['Days 3\u20134', 50], ['Days 5\u20136', 75], ['Day 7+', 100]];\n  function setBowl(i) {\n    bowlIdx = i % 4;\n    var st = BOWL_STEPS[bowlIdx];\n    $$('[data-gjx-bowlstep]').forEach(function (b) { b.setAttribute('aria-pressed', +b.getAttribute('data-gjx-bowlstep') === bowlIdx ? 'true' : 'false'); });\n    var mask = $('[data-gjx=bowl-mask]');\n    if (mask) {\n      var m = 'conic-gradient(#000 0 ' + st[1] + '%, transparent 0)';\n      mask.style.webkitMaskImage = m; mask.style.maskImage = m;\n      mask.style.animation = 'none'; void mask.offsetWidth; mask.style.animation = '';\n    }\n    setText('[data-gjx=bowl-when]', st[0]);\n    setText('[data-gjx=bowl-pct]', st[1] + '% Get Joy \u00B7 ' + (100 - st[1]) + '% current food');\n  }\n  if ($('[data-gjx=bowl-mask]')) {\n    setBowl(0);\n    setInterval(function () { if (!bowlUser) setBowl(bowlIdx + 1); }, 2600);\n  }\n\n  /* ---------- benefits timeline (Block 5b) ---------- */\n  var BENEF = CFG.benefits || [];\n  var benefIdx = 0, benefUser = false;\n  function setBenef(i) {\n    benefIdx = i % (BENEF.length || 5);\n    var b = BENEF[benefIdx];\n    if (!b) return;\n    $$('[data-gjx-benefstop]').forEach(function (btn) { btn.setAttribute('aria-pressed', +btn.getAttribute('data-gjx-benefstop') === benefIdx ? 'true' : 'false'); });\n    var card = $('[data-gjx=benef-card]');\n    if (!card) return;\n    card.innerHTML = '<div class=\"gjx-eyebrow\">' + b.eyebrow + '</div><div class=\"gjx-benef-title\">' + b.title + '</div>' +\n      '<div class=\"gjx-benef-points\"><span class=\"num\">01</span><span><strong>' + b.p1 + '</strong><br>' + b.s1 + '</span>' +\n      '<span class=\"num\">02</span><span><strong>' + b.p2 + '</strong><br>' + b.s2 + '</span></div>';\n    card.style.animation = 'none'; void card.offsetWidth; card.style.animation = '';\n  }\n  if ($('[data-gjx=benef-card]') && BENEF.length) {\n    setBenef(0);\n    setInterval(function () { if (!benefUser) setBenef(benefIdx + 1); }, 3500);\n  }\n\n  /* ---------- survey count-up (Block 2) ---------- */\n  (function () {\n    var nums = $$('[data-gjx-countup]');\n    if (!nums.length || !('IntersectionObserver' in window)) { nums.forEach(function (n) { n.textContent = n.getAttribute('data-gjx-countup'); }); return; }\n    var done = false;\n    var io = new IntersectionObserver(function (entries) {\n      entries.forEach(function (en) {\n        if (!en.isIntersecting || done) return;\n        done = true; io.disconnect();\n        var t0 = performance.now();\n        (function step(now) {\n          var p = Math.max(0, Math.min(1, (now - t0) / 1400)); // rAF timestamps can predate t0 \u2014 clamp so it never shows negatives\n          var e = 1 - Math.pow(1 - p, 3);\n          nums.forEach(function (n) { n.textContent = Math.round(+n.getAttribute('data-gjx-countup') * e); });\n          if (p < 1) requestAnimationFrame(step);\n        })(t0);\n      });\n    }, { threshold: .4 });\n    io.observe(nums[0]);\n  })();\n\n  /* ---------- founder video (Block 6) ---------- */\n  function playFounder(tile) {\n    var url = tile.getAttribute('data-gjx-video');\n    if (!url) return;\n    var v = document.createElement('video');\n    v.src = url; v.controls = true; v.autoplay = true; v.playsInline = true;\n    v.className = 'gjx-founder-video';\n    tile.replaceWith(v);\n  }\n\n  /* ---------- boot ---------- */\n  render();\n  sortVideos();\n  sortReviews();\n  revFilter('all');\n  initConcerns();\n  track('gjx_pdp_view', { state: S.page, weight: S.weight, protein: S.protein, mode: S.mode });\n})();\n"],
  "mappings": "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",
  "names": ["r", "sl"]
}
