{
  "version": 3,
  "sources": ["/cdn/shop/t/199/assets/pab-mobile-guide-entry.js?pab_build=20260914_168"],
  "sourcesContent": ["(function () {\n  \"use strict\";\n\n  var PAB_GUIDE_BUILD = \"20260916_scroll1\";\n  var GUIDE_PORTRAIT_MQ = \"(max-width: 767px) and (orientation: portrait)\";\n  var GUIDE_LANDSCAPE_MQ = \"(max-width: 1023px) and (max-height: 500px) and (orientation: landscape)\";\n  var MOBILE = GUIDE_PORTRAIT_MQ;\n  var STATE_KEY = \"pab-mobile-guide-v1\";\n  var INTRO_KEY = \"pab-mobile-intro-seen-v1\";\n  var RESUME_KEY = \"pab-mobile-guide-resume-v1\";\n  var STARTED_KEY = \"pab-mobile-design-started-v1\";\n  var EXITED_KEY = \"pab-mobile-guide-exited-v1\";\n  var NEW_DESIGN_KEY = \"pab-mobile-new-design-v1\";\n  var GUIDE_RESUME_COOKIE = \"pab_mobile_guide_resume\";\n  var GUIDE_STEP_COOKIE = \"pab_mobile_guide_step\";\n  var GUIDE_STARTED_COOKIE = \"pab_mobile_design_started\";\n  var GUIDE_EXITED_COOKIE = \"pab_mobile_guide_exited\";\n  var OPEN_STEP_KEY = \"pab-mobile-guide-open-step-v1\";\n  var STEP_IDS = [\"design\", \"tier\", \"quantity\", \"paper\", \"accessories\", \"checkout\"];\n  var STEP_NAMES = [\"Bill format\", \"Design level\", \"Quantity\", \"Materials & features\", \"Accessories\", \"Review your order\"];\n  var STEP_EYEBROWS = [\"01 / BILL FORMAT\", \"02 / DESIGN LEVEL\", \"03 / QUANTITY\", \"04 / PAPER, FINISH & FEATURES\", \"05 / OPTIONAL ACCESSORIES\", \"06 / REVIEW\"];\n  var LOGO_SRC = \"https://cdn.shopify.com/s/files/1/1792/3413/files/PropMoney_Icon_Transparent_1024.png?v=1782336784&width=88\";\n  var attempts = 0;\n  var builderStateReader = null;\n\n  function visualViewportScale() {\n    try {\n      return window.visualViewport ? window.visualViewport.scale : 1;\n    } catch (_error) {\n      return 1;\n    }\n  }\n\n  function visualViewportPinched() {\n    return visualViewportScale() > 1.01;\n  }\n\n  function readGuideOrientation() {\n    try {\n      if (window.matchMedia(GUIDE_PORTRAIT_MQ).matches) return \"portrait\";\n      if (window.matchMedia(GUIDE_LANDSCAPE_MQ).matches) return \"landscape\";\n    } catch (_error) {}\n    if (visualViewportPinched()) {\n      var pinned = document.documentElement.dataset.pabGuideOrientation;\n      if (pinned === \"portrait\" || pinned === \"landscape\" || pinned === \"desktop\") return pinned;\n    }\n    var width = window.innerWidth;\n    var height = window.innerHeight;\n    if (width <= 767 && height >= width) return \"portrait\";\n    if (width <= 1023 && height <= 500 && width > height) return \"landscape\";\n    return \"desktop\";\n  }\n\n  function applyGuideOrientation(next) {\n    var html = document.documentElement;\n    var prev = html.dataset.pabGuideOrientation || \"\";\n    html.dataset.pabGuideOrientation = next;\n    html.classList.toggle(\"pab-guide-phone-portrait\", next === \"portrait\");\n    html.classList.toggle(\"pab-guide-phone-landscape\", next === \"landscape\");\n    return prev;\n  }\n\n  function syncVisualViewportSpace() {\n    if (visualViewportPinched()) return;\n    var viewport = window.visualViewport;\n    var icb = document.documentElement;\n    var width = icb.clientWidth || window.innerWidth;\n    var height = icb.clientHeight || window.innerHeight;\n    var offsetTop = 0;\n    var offsetLeft = 0;\n    if (viewport) {\n      width = viewport.width;\n      height = viewport.height;\n      offsetTop = viewport.offsetTop || 0;\n      offsetLeft = viewport.offsetLeft || 0;\n    }\n    var bottom = Math.max(0, window.innerHeight - height - offsetTop);\n    var right = Math.max(0, window.innerWidth - width - offsetLeft);\n    icb.style.setProperty(\"--pab-shell-left\", Math.round(offsetLeft) + \"px\");\n    icb.style.setProperty(\"--pab-shell-top\", Math.round(offsetTop) + \"px\");\n    icb.style.setProperty(\"--pab-shell-width\", Math.round(width) + \"px\");\n    icb.style.setProperty(\"--pab-shell-height\", Math.round(height) + \"px\");\n    icb.style.setProperty(\"--pab-shell-bottom\", Math.round(bottom) + \"px\");\n    icb.style.setProperty(\"--pab-shell-right\", Math.round(right) + \"px\");\n    icb.style.setProperty(\"--pab-vv-height\", Math.round(height) + \"px\");\n    icb.style.setProperty(\"--pab-vv-width\", Math.round(width) + \"px\");\n    icb.style.setProperty(\"--pab-vv-offset-top\", Math.round(offsetTop) + \"px\");\n    icb.style.setProperty(\"--pab-vv-offset-left\", Math.round(offsetLeft) + \"px\");\n    icb.style.setProperty(\"--pab-keyboard-inset\", Math.round(bottom) + \"px\");\n  }\n\n  function mobile() {\n    var orientation = readGuideOrientation();\n    return orientation === \"portrait\" || orientation === \"landscape\";\n  }\n\n  window.pabGuidePhone = function () {\n    return document.body.classList.contains(\"pab-mobile-guide-active\") && mobile();\n  };\n\n  function bindGuideViewportWatch() {\n    if (window.__pabGuideViewportBound) return;\n    window.__pabGuideViewportBound = true;\n    var lastOrientation = applyGuideOrientation(readGuideOrientation());\n    syncVisualViewportSpace();\n    function syncLayoutOrientation() {\n      var next = readGuideOrientation();\n      var prev = applyGuideOrientation(next);\n      if (prev !== next) {\n        window.dispatchEvent(new CustomEvent(\"pab-guide-orientation\", { detail: { prev: prev, next: next } }));\n      }\n    }\n    try {\n      window.matchMedia(GUIDE_PORTRAIT_MQ).addEventListener(\"change\", syncLayoutOrientation);\n      window.matchMedia(GUIDE_LANDSCAPE_MQ).addEventListener(\"change\", syncLayoutOrientation);\n    } catch (_error) {}\n    window.addEventListener(\"orientationchange\", function () {\n      window.setTimeout(syncLayoutOrientation, 60);\n    });\n    window.addEventListener(\"resize\", function () {\n      if (visualViewportPinched()) return;\n      syncLayoutOrientation();\n      syncVisualViewportSpace();\n    });\n    if (window.visualViewport) {\n      window.visualViewport.addEventListener(\"resize\", syncVisualViewportSpace);\n      window.visualViewport.addEventListener(\"scroll\", syncVisualViewportSpace);\n    }\n    var previewBarSync = 0;\n    function syncAfterPreviewBar() {\n      window.clearTimeout(previewBarSync);\n      previewBarSync = window.setTimeout(function () {\n        syncLayoutOrientation();\n        syncVisualViewportSpace();\n      }, 50);\n    }\n    [0, 300, 800, 1600].forEach(function (ms) {\n      window.setTimeout(syncAfterPreviewBar, ms);\n    });\n    if (window.MutationObserver) {\n      var barWatch = new MutationObserver(function () {\n        if (document.getElementById(\"PBarNextFrame\") || document.querySelector(\"iframe[src*='preview_bar']\")) {\n          syncAfterPreviewBar();\n        }\n      });\n      barWatch.observe(document.documentElement, { childList: true, subtree: true });\n    }\n  }\n\n  function ensureGuideSelectPane(region, slot) {\n    if (!region || !slot) return null;\n    var pane = region.querySelector(\":scope > [data-pab-guide-select-pane]\");\n    if (!pane) {\n      pane = document.createElement(\"div\");\n      pane.className = \"pab-mobile-guide-select-pane\";\n      pane.dataset.pabGuideSelectPane = \"\";\n      region.appendChild(pane);\n    }\n    Array.prototype.slice.call(region.children).forEach(function (child) {\n      if (child !== slot && child !== pane) pane.appendChild(child);\n    });\n    return pane;\n  }\n\n  function ensurePaperOptionsPane(region) {\n    var list = region && region.querySelector(\".option-list\");\n    if (!list) return null;\n    var pane = list.querySelector(\":scope > [data-pab-guide-select-pane]\");\n    if (!pane) {\n      pane = document.createElement(\"div\");\n      pane.className = \"pab-mobile-guide-select-pane\";\n      pane.dataset.pabGuideSelectPane = \"\";\n      list.appendChild(pane);\n    }\n    Array.prototype.slice.call(list.children).forEach(function (child) {\n      if (child === pane) return;\n      if (child.matches && child.matches(\".option, .option-panel\")) pane.appendChild(child);\n    });\n    return pane;\n  }\n\n  function unwrapPaneChildren(pane) {\n    if (!pane || !pane.parentNode) return;\n    while (pane.firstChild) pane.parentNode.insertBefore(pane.firstChild, pane);\n    pane.parentNode.removeChild(pane);\n  }\n\n  function unwrapGuideSelectPane(region, slot) {\n    if (!region) return;\n    var pane = region.querySelector(\":scope > [data-pab-guide-select-pane]\");\n    if (pane) unwrapPaneChildren(pane);\n    if (!slot || slot.parentNode !== region) return;\n    var note = region.querySelector(\":scope > .section-note\");\n    if (note) {\n      note.parentNode.insertBefore(slot, note.nextSibling);\n      return;\n    }\n    var heading = region.querySelector(\":scope > .section-heading, :scope > .tier-heading\");\n    if (heading) heading.parentNode.insertBefore(slot, heading.nextSibling);\n  }\n\n  function unwrapPaperOptionsPane(region) {\n    var list = region && region.querySelector(\".option-list\");\n    if (!list) return;\n    var pane = list.querySelector(\":scope > [data-pab-guide-select-pane]\");\n    if (pane) unwrapPaneChildren(pane);\n  }\n\n  function unwrapCheckoutReviewPanes(region) {\n    if (!region) return;\n    var intro = region.querySelector(\":scope > [data-pab-guide-intro-pane]\");\n    if (intro) unwrapPaneChildren(intro);\n  }\n\n  function ensureCheckoutReviewPanes(region) {\n    if (!region) return null;\n    var heading = region.querySelector(\":scope > .pab-mobile-review-heading\");\n    var details = region.querySelector(\":scope > .pab-mobile-review-details\");\n    var intro = region.querySelector(\":scope > [data-pab-guide-intro-pane]\");\n    if (!intro) {\n      intro = document.createElement(\"div\");\n      intro.className = \"pab-mobile-guide-intro-pane\";\n      intro.dataset.pabGuideIntroPane = \"\";\n      if (details) region.insertBefore(intro, details);\n      else region.appendChild(intro);\n    }\n    Array.prototype.slice.call(region.children).forEach(function (child) {\n      if (child === heading || child === details || child === intro) return;\n      if (child.getAttribute && child.getAttribute(\"data-pab-guide-region\") === \"cart\") return;\n      if (child.getAttribute && child.getAttribute(\"data-pab-ai-design-process\")) return;\n      intro.appendChild(child);\n    });\n    var disclosure = region.querySelector(\":scope > [data-pab-ai-design-process]\");\n    if (disclosure && details && disclosure.previousElementSibling !== details) {\n      details.parentNode.insertBefore(disclosure, details.nextSibling);\n    }\n    return intro;\n  }\n\n  function revealGuideTarget(el) {\n    if (!el || typeof el.getBoundingClientRect !== \"function\") return;\n    var pane = el.closest(\"[data-pab-guide-select-pane], [data-pab-guide-intro-pane]\");\n    var region = el.closest(\"[data-pab-guide-region]\");\n    var scroller = pane || region;\n    if (!scroller) return;\n    var vv = window.visualViewport;\n    var viewTop = vv ? vv.offsetTop : 0;\n    var viewBottom = vv ? vv.offsetTop + vv.height : window.innerHeight;\n    var footer = document.querySelector(\"#pab-mobile-guide-chrome .pab-mobile-guide-footer\");\n    if (footer) {\n      var footerRect = footer.getBoundingClientRect();\n      if (footerRect.height > 8 && footerRect.top > viewTop + 24) {\n        viewBottom = Math.min(viewBottom, footerRect.top);\n      }\n    }\n    var rect = el.getBoundingClientRect();\n    var extra = 14;\n    if (rect.bottom > viewBottom - extra) {\n      scroller.scrollTop += Math.round(rect.bottom - viewBottom + extra + 8);\n    } else if (rect.top < viewTop + extra) {\n      scroller.scrollTop += Math.round(rect.top - viewTop - extra);\n    }\n  }\n\n  function wrapGuideRegion(nodes, id) {\n    var first = nodes[0];\n    if (!first || !first.parentNode) return null;\n    var existing = first.closest(\"[data-pab-guide-region='\" + id + \"']\");\n    if (!existing && first.parentNode.querySelector) {\n      existing = first.parentNode.querySelector(\"[data-pab-guide-region='\" + id + \"']\");\n    }\n    if (existing) return existing;\n    var wrap = document.createElement(\"div\");\n    wrap.className = \"pab-guide-region\";\n    wrap.dataset.pabGuideRegion = id;\n    first.parentNode.insertBefore(wrap, first);\n    nodes.forEach(function (node) {\n      if (node) wrap.appendChild(node);\n    });\n    return wrap;\n  }\n\n  function ensureGuideRegions(root) {\n    var order = root && root.querySelector(\".order-column\");\n    if (!order) return;\n    var heading = order.querySelector(\".section-heading:not(.tier-heading)\");\n    var note = heading && heading.nextElementSibling && heading.nextElementSibling.classList.contains(\"section-note\")\n      ? heading.nextElementSibling\n      : null;\n    var format = order.querySelector(\".format-card\");\n    var tierHeading = order.querySelector(\".tier-heading\");\n    var tierNote = tierHeading && tierHeading.nextElementSibling && tierHeading.nextElementSibling.classList.contains(\"section-note\")\n      ? tierHeading.nextElementSibling\n      : null;\n    wrapGuideRegion([heading, note, format].filter(Boolean), \"design\");\n    wrapGuideRegion([\n      tierHeading,\n      tierNote,\n      order.querySelector(\".tier-grid\"),\n      order.querySelector(\"#compare\"),\n      order.querySelector(\"#tier-features\")\n    ].filter(Boolean), \"tier\");\n    wrapGuideRegion([order.querySelector(\".config-section\")].filter(Boolean), \"quantity\");\n    wrapGuideRegion([order.querySelector(\".option-list\")].filter(Boolean), \"paper\");\n    wrapGuideRegion([order.querySelector(\".accessories\")].filter(Boolean), \"accessories\");\n    wrapGuideRegion([\n      order.querySelector(\".name-field\"),\n      order.querySelector(\".next-steps\")\n    ].filter(Boolean), \"checkout\");\n    var summary = order.querySelector(\".summary\");\n    if (summary && !summary.dataset.pabGuideRegion) {\n      summary.classList.add(\"pab-guide-region\");\n      summary.dataset.pabGuideRegion = \"cart\";\n    }\n  }\n\n  function readGuideCookie(name) {\n    try {\n      var prefix = name + \"=\";\n      var item = document.cookie.split(\";\").map(function (part) { return part.trim(); }).find(function (part) { return part.indexOf(prefix) === 0; });\n      return item ? decodeURIComponent(item.slice(prefix.length)) : \"\";\n    } catch (_error) {\n      return \"\";\n    }\n  }\n\n  function writeGuideCookies(open, index) {\n    var expires = open ? \"max-age=604800\" : \"max-age=0\";\n    var attrs = \"; path=/; SameSite=None; Secure; \" + expires;\n    document.cookie = GUIDE_RESUME_COOKIE + \"=\" + (open ? \"true\" : \"\") + attrs;\n    document.cookie = GUIDE_STEP_COOKIE + \"=\" + (open ? String(Math.max(0, Math.min(5, Number(index) || 0))) : \"\") + attrs;\n  }\n\n  function writeStartedCookie(on) {\n    document.cookie = GUIDE_STARTED_COOKIE + \"=\" + (on ? \"true\" : \"\") + \"; path=/; SameSite=None; Secure; \" + (on ? \"max-age=604800\" : \"max-age=0\");\n  }\n\n  function writeExitedCookie(on) {\n    document.cookie = GUIDE_EXITED_COOKIE + \"=\" + (on ? \"true\" : \"\") + \"; path=/; SameSite=Lax; \" + (on ? \"max-age=604800\" : \"max-age=0\");\n  }\n\n  function setGuideExited(on) {\n    try {\n      if (on) sessionStorage.setItem(EXITED_KEY, \"true\");\n      else sessionStorage.removeItem(EXITED_KEY);\n    } catch (_error) {}\n    try {\n      if (on) localStorage.setItem(EXITED_KEY, \"true\");\n      else localStorage.removeItem(EXITED_KEY);\n    } catch (_error) {}\n    writeExitedCookie(!!on);\n  }\n\n  function guideWasExited() {\n    try {\n      if (sessionStorage.getItem(EXITED_KEY) === \"true\") return true;\n    } catch (_error) {}\n    try {\n      if (localStorage.getItem(EXITED_KEY) === \"true\") return true;\n    } catch (_error) {}\n    return readGuideCookie(GUIDE_EXITED_COOKIE) === \"true\";\n  }\n\n  function resumeStepIndex(saved) {\n    var openStep = readOpenStep();\n    if (openStep !== null) return openStep;\n    var index = Number(saved && saved.index);\n    if (Number.isFinite(index) && index >= 0 && index <= 5) return index;\n    return 0;\n  }\n\n  function persistOpenStep(index) {\n    var step = String(Math.max(0, Math.min(5, Number(index) || 0)));\n    try { sessionStorage.setItem(OPEN_STEP_KEY, step); } catch (_error) {}\n    try { localStorage.setItem(OPEN_STEP_KEY, step); } catch (_error) {}\n    try { sessionStorage.setItem(STARTED_KEY, \"true\"); } catch (_error) {}\n    try { localStorage.setItem(STARTED_KEY, \"true\"); } catch (_error) {}\n    try { window.name = \"pab-mobile-guide-step:\" + step; } catch (_error) {}\n    writeGuideCookies(true, Number(step));\n    writeStartedCookie(true);\n  }\n\n  function clearOpenStep() {\n    try { sessionStorage.removeItem(OPEN_STEP_KEY); } catch (_error) {}\n    try { localStorage.removeItem(OPEN_STEP_KEY); } catch (_error) {}\n    try {\n      if (/^pab-mobile-guide-step:/.test(String(window.name || \"\"))) window.name = \"\";\n    } catch (_error) {}\n  }\n\n  function readOpenStep() {\n    var urlStep = readGuideStepFromUrl();\n    if (urlStep !== null) return urlStep;\n    var raw = \"\";\n    try { raw = sessionStorage.getItem(OPEN_STEP_KEY) || \"\"; } catch (_error) {}\n    if (raw === \"\") {\n      try { raw = localStorage.getItem(OPEN_STEP_KEY) || \"\"; } catch (_error) {}\n    }\n    if (raw === \"\") raw = readGuideCookie(GUIDE_STEP_COOKIE);\n    if (raw === \"\") {\n      try {\n        var named = String(window.name || \"\").match(/^pab-mobile-guide-step:(\\d)$/);\n        if (named) raw = named[1];\n      } catch (_error) {}\n    }\n    if (raw === \"\" || raw == null) return null;\n    var step = Number(raw);\n    if (Number.isFinite(step) && step >= 0 && step <= 5) return step;\n    return null;\n  }\n\n  function parseStoredState(store) {\n    try {\n      return JSON.parse(store.getItem(STATE_KEY) || \"null\") || {};\n    } catch (_error) {\n      return {};\n    }\n  }\n\n  function readState() {\n    var session = parseStoredState(sessionStorage);\n    if (session.active || session.builder) return session;\n    var persistent = parseStoredState(localStorage);\n    if (persistent.active || persistent.builder) return persistent;\n    if (readGuideCookie(GUIDE_RESUME_COOKIE) === \"true\") {\n      return { active: true, index: Math.max(0, Math.min(5, Number(readGuideCookie(GUIDE_STEP_COOKIE)) || 0)), builder: null };\n    }\n    return session;\n  }\n\n  function saveState(active, index) {\n    var previous = readState();\n    var builder = previous.builder;\n    try {\n      if (builderStateReader) builder = builderStateReader();\n    } catch (_error) {}\n    var next = JSON.stringify({ active: !!active, index: index, builder: builder || null });\n    try { sessionStorage.setItem(STATE_KEY, next); } catch (_error) {}\n    try { localStorage.setItem(STATE_KEY, next); } catch (_error) {}\n    writeGuideCookies(!!active, index);\n    if (active) persistOpenStep(index);\n    else clearOpenStep();\n  }\n\n  function readGuideStepFromUrl() {\n    try {\n      var hash = String(window.location.hash || \"\");\n      var hashMatch = hash.match(/^#pab-guide(?:\\/(\\d))?$/);\n      if (hashMatch) {\n        if (hashMatch[1] == null || hashMatch[1] === \"\") return 0;\n        var hashStep = Number(hashMatch[1]);\n        if (Number.isFinite(hashStep) && hashStep >= 0 && hashStep <= 5) return hashStep;\n      }\n      var raw = new URLSearchParams(window.location.search).get(\"pab-step\");\n      if (raw == null || raw === \"\") return null;\n      var step = Number(raw);\n      if (Number.isFinite(step) && step >= 0 && step <= 5) return step;\n    } catch (_error) {}\n    return null;\n  }\n\n  function setGuideResume(open, index) {\n    try {\n      if (open) sessionStorage.setItem(RESUME_KEY, \"true\");\n      else sessionStorage.removeItem(RESUME_KEY);\n    } catch (_error) {}\n    try {\n      if (open) localStorage.setItem(RESUME_KEY, \"true\");\n      else localStorage.removeItem(RESUME_KEY);\n    } catch (_error) {}\n    writeGuideCookies(open, index);\n  }\n\n  function shouldResumeGuide() {\n    if (guideWasExited()) return false;\n    var fromStorage = false;\n    try { fromStorage = sessionStorage.getItem(RESUME_KEY) === \"true\"; } catch (_error) {}\n    try { fromStorage = fromStorage || localStorage.getItem(RESUME_KEY) === \"true\"; } catch (_error) {}\n    var started = false;\n    try { started = sessionStorage.getItem(STARTED_KEY) === \"true\"; } catch (_error) {}\n    try { started = started || localStorage.getItem(STARTED_KEY) === \"true\"; } catch (_error) {}\n    var fromUrl = false;\n    try {\n      fromUrl = /^#pab-guide/.test(window.location.hash || \"\") ||\n        new URLSearchParams(window.location.search).get(\"pab-guide\") === \"1\" ||\n        readGuideStepFromUrl() !== null;\n    } catch (_error) {}\n    var stored = parseStoredState(sessionStorage);\n    if (!(stored.active || stored.builder)) stored = parseStoredState(localStorage);\n    return fromStorage || stored.active === true || !!stored.builder || started ||\n      readGuideCookie(GUIDE_RESUME_COOKIE) === \"true\" ||\n      readGuideCookie(GUIDE_STARTED_COOKIE) === \"true\" ||\n      fromUrl || readOpenStep() !== null;\n  }\n\n  function markIntroSeen() {\n    try {\n      sessionStorage.setItem(INTRO_KEY, \"true\");\n    } catch (_error) {}\n  }\n\n  function introSeen() {\n    try {\n      return sessionStorage.getItem(INTRO_KEY) === \"true\";\n    } catch (_error) {\n      return false;\n    }\n  }\n\n  function selected(root, selector) {\n    return !!root.querySelector(selector);\n  }\n\n  function customDenominationValid(root) {\n    var custom = root.querySelector('#denoms button[data-denom=\"$custom\"].selected:not([hidden])');\n    if (!custom) return !!root.querySelector('#denoms button.selected:not([hidden]):not([data-denom=\"$custom\"])');\n    var input = root.querySelector(\"#pab-custom-denom-input\");\n    return !!(input && String(input.value || \"\").replace(/[^0-9]/g, \"\"));\n  }\n\n  function stepComplete(root, index) {\n    if (index === 0) {\n      return selected(root, \"#series button.selected:not([hidden])\") && customDenominationValid(root);\n    }\n    if (index === 1) return selected(root, \".tier.selected\");\n    if (index === 2) {\n      var quantity = root.querySelector(\"#qty, #stackCount\");\n      var number = parseInt(String(quantity && quantity.value || \"\").replace(/[^0-9]/g, \"\"), 10);\n      return Number.isFinite(number) && number >= 2;\n    }\n    if (index === 5) {\n      var name = root.querySelector(\"#design-name\");\n      var length = String(name && name.value || \"\").trim().length;\n      return length >= 3 && length <= 30;\n    }\n    return true;\n  }\n\n  function cleanText(value) {\n    return String(value || \"\").replace(/\\s+/g, \" \").trim();\n  }\n\n  function setReviewStackedList(el, items, emptyText) {\n    if (!el) return;\n    el.textContent = \"\";\n    var list = (items || []).filter(Boolean);\n    var block = el.closest(\".pab-mobile-review-block\");\n    if (block && el.hasAttribute(\"data-pab-review-accessories\")) {\n      block.classList.toggle(\"pab-mobile-review-block--compact\", !list.length);\n    }\n    if (!list.length) {\n      el.textContent = emptyText || \"\";\n      return;\n    }\n    list.forEach(function (text) {\n      var line = document.createElement(\"span\");\n      line.className = \"pab-mobile-review-stack__item\";\n      line.textContent = text;\n      el.appendChild(line);\n    });\n  }\n\n  function designNameInput(root) {\n    return root.querySelector(\"#design-name\");\n  }\n\n  function ensureNameContinueHint(root) {\n    var field = root.querySelector('[data-pab-guide-region=\"checkout\"] .name-field');\n    if (!field) return null;\n    var hint = field.querySelector(\"[data-pab-name-continue-hint]\");\n    if (!hint) {\n      hint = document.createElement(\"p\");\n      hint.className = \"pab-mobile-name-continue-hint\";\n      hint.setAttribute(\"data-pab-name-continue-hint\", \"\");\n      hint.setAttribute(\"role\", \"status\");\n      hint.hidden = true;\n      hint.textContent = \"Add a name to continue.\";\n      var error = field.querySelector(\"[data-pab-design-name-error]\");\n      field.insertBefore(hint, error || null);\n    }\n    return hint;\n  }\n\n  function withDollarPrefix(value, fallback) {\n    var text = cleanText(value);\n    if (!text) return fallback || \"\";\n    if (/^\\$/.test(text) || /^custom$/i.test(text) || text === \"Not selected\") return text;\n    return \"$\" + text.replace(/^\\$/, \"\");\n  }\n\n  function selectedText(root, selector, fallback) {\n    var element = root.querySelector(selector);\n    if (!element) return fallback;\n    return cleanText(element.dataset.label || element.dataset.series || element.dataset.tier || element.dataset.denom || element.textContent) || fallback;\n  }\n\n  function createReviewHeading(region) {\n    var heading = document.createElement(\"div\");\n    heading.className = \"pab-mobile-review-heading section-heading\";\n    heading.innerHTML = '<div class=\"eyebrow\">06 / REVIEW</div><h2>Finalize your design.</h2><p class=\"section-note\">Give your design a name, confirm your selections, then add it to your cart.</p>';\n    region.insertBefore(heading, region.firstChild);\n    return heading;\n  }\n\n  function createReviewDetails(region, beforeNode) {\n    var details = document.createElement(\"section\");\n    details.className = \"pab-mobile-review-details\";\n    details.setAttribute(\"aria-label\", \"Order summary\");\n    details.innerHTML =\n      '<div class=\"pab-mobile-review-details__head\"><span>Charges</span></div>' +\n      '<dl><div class=\"pab-mobile-review-row\"><dt>Bill design</dt><dd data-pab-review-bill>\u2014</dd><button type=\"button\" data-pab-review-edit=\"0\" aria-label=\"Edit bill format\">Edit</button></div></dl>' +\n      '<div hidden><span data-pab-review-tier></span><span data-pab-review-quantity></span><span data-pab-review-options></span><span data-pab-review-accessories></span></div>' +\n      '<div class=\"pab-price-breakdown\"><table aria-label=\"Selected options and charges\"><tbody data-pab-price-rows data-pab-price-mobile></tbody><tfoot><tr><th scope=\"row\">FedEx 2Day\u00AE shipping</th><td>Free</td></tr></tfoot></table></div>' +\n      '<div class=\"pab-mobile-review-details__checkout\"><div class=\"pab-review-total\"><span class=\"pab-estimated-total-label\"><span data-pab-review-total-label>Estimated total</span><small class=\"pab-price-basis\" data-pab-price-basis>USD \u00B7 Before discounts and tax</small></span><strong data-pab-review-total>\u2014</strong></div></div>';\n    var copy = document.querySelector('[data-pab-price-copy]');\n    if (copy) {\n      details.querySelector('dt').textContent = copy.getAttribute('data-bill-design') || 'Bill design';\n      details.querySelector('[data-pab-review-total-label]').textContent = copy.getAttribute('data-estimated-total') || 'Estimated total';\n      details.querySelector('[data-pab-price-basis]').textContent = copy.getAttribute('data-basis') || 'USD \u00B7 Before discounts and tax';\n    }\n    region.insertBefore(details, beforeNode || null);\n    return details;\n  }\n\n  function currentTotal(root) {\n    var total = root.querySelector(\"#total\") || document.querySelector(\"#simple-total\") || root.querySelector(\"#totalCost\");\n    var text = total && total.textContent ? total.textContent.trim() : \"\";\n    return text || \"$0.00\";\n  }\n\n  function moneyCents(value) {\n    var source = String(value || \"\").replace(/,/g, \"\");\n    var match = source.match(/\\$\\s*([0-9]+(?:\\.[0-9]{1,2})?)/) || source.match(/^\\s*([0-9]+(?:\\.[0-9]{1,2})?)/);\n    return match ? Math.round(parseFloat(match[1]) * 100) : 0;\n  }\n\n  function formatMoney(cents) {\n    var amount = Math.max(0, Number(cents) || 0) / 100;\n    return \"$\" + amount.toLocaleString(\"en-US\", {\n      minimumFractionDigits: cents % 100 ? 2 : 0,\n      maximumFractionDigits: 2\n    });\n  }\n\n  function createIntro(root) {\n    var intro = document.getElementById(\"pab-mobile-intro\");\n    var hydrated = !!intro;\n    if (!intro) {\n      intro = document.createElement(\"section\");\n      intro.id = \"pab-mobile-intro\";\n      intro.className = \"pab-mobile-intro\";\n      intro.setAttribute(\"role\", \"region\");\n      intro.setAttribute(\"aria-labelledby\", \"pab-mobile-intro-title\");\n      intro.hidden = true;\n      intro.innerHTML =\n        '<div class=\"pab-mobile-intro__content\">' +\n          '<div class=\"pab-mobile-intro__visual-col\">' +\n            '<div class=\"pab-mobile-intro__visual has-fallback\" aria-label=\"Completed custom bill examples\" style=\"--pab-intro-bill:url(\\'https://cdn.shopify.com/s/files/1/1792/3413/files/Usher_PPF_100.jpg?v=1767468046\\')\"><div class=\"pab-mobile-intro__bill-stage\"><img class=\"pab-mobile-intro__bill-fallback\" alt=\"\" width=\"1842\" height=\"1590\" src=\"https://cdn.shopify.com/s/files/1/1792/3413/files/Usher_PPF_100.jpg?v=1767468046\" hidden><div class=\"pab-mobile-intro__bill-slide is-active\" aria-hidden=\"true\"></div><div class=\"pab-mobile-intro__bill-slide\" aria-hidden=\"true\"></div></div></div>' +\n            '<p class=\"pab-mobile-intro__example-note\">Examples shown. Your design will be custom-made.</p>' +\n          '</div>' +\n          '<div class=\"pab-mobile-intro__copy-col\">' +\n            '<div class=\"pab-mobile-intro__lead\">' +\n              '<p class=\"pab-mobile-intro__eyebrow\">PRINT A BILL\u2122</p>' +\n              '<h1 id=\"pab-mobile-intro-title\">Put anything on money.</h1>' +\n              '<p class=\"pab-mobile-intro__copy\">Create custom prop money for productions, events, brands, celebrations and everything in between.</p>' +\n            '</div>' +\n            '<div class=\"pab-mobile-intro__proof\" aria-label=\"Ordering benefits\">' +\n              '<span data-pab-intro-proof=\"portrait\">Professional design included</span>' +\n              '<span data-pab-intro-proof=\"portrait\">Design approval before printing</span>' +\n              '<span data-pab-intro-proof=\"landscape\">Professional design included</span>' +\n              '<span data-pab-intro-proof=\"landscape\">Design approval before print</span>' +\n            '</div>' +\n          '</div>' +\n        '</div>' +\n        '<div class=\"pab-mobile-intro__actions\">' +\n          '<button type=\"button\" class=\"pab-mobile-intro__start\">Start designing</button>' +\n          '<button type=\"button\" class=\"pab-mobile-intro__new\" hidden>Start a new design</button>' +\n        '</div>';\n    }\n\n    var orderingTemplate = document.getElementById(\"pab-mobile-ordering-template\");\n    var orderingBenefits = intro.querySelector(\".pab-mobile-intro__proof\");\n    if (orderingTemplate && orderingBenefits && !intro.querySelector(\".pab-mobile-ordering\")) {\n      orderingBenefits.replaceWith(orderingTemplate.content.cloneNode(true));\n    }\n\n    if (window.PABPrepareWelcomeNotice) window.PABPrepareWelcomeNotice(intro);\n\n    var stage = intro.querySelector(\".pab-mobile-intro__bill-stage\");\n    var images = Array.prototype.slice.call(intro.querySelectorAll(\".pab-mobile-intro__bill-slide\"));\n    var visual = intro.querySelector(\".pab-mobile-intro__visual\");\n    var currentImage = 0;\n    var currentBill = \"\";\n    var loadingBill = \"\";\n    var introBillTimer = 0;\n    var introBillVisible = true;\n    var introBillRequest = 0;\n    var introManualTarget = \"\";\n    var introManualTimer = 0;\n    var introSwipe = null;\n\n    function landingBillImages() {\n      return [\n        \"https://cdn.shopify.com/s/files/1/1792/3413/files/Usher_PPF_100.jpg?v=1767468046\",\n        \"https://cdn.shopify.com/s/files/1/1792/3413/files/prime_properties.jpg?v=1767468046\",\n        \"https://cdn.shopify.com/s/files/1/1792/3413/files/its_a_girl.jpg?v=1767468046\",\n        \"https://cdn.shopify.com/s/files/1/1792/3413/files/class_of_2025.jpg?v=1767468046\",\n        \"https://cdn.shopify.com/s/files/1/1792/3413/files/boxer.jpg?v=1767468046\",\n        \"https://cdn.shopify.com/s/files/1/1792/3413/files/wedding.jpg?v=1767468048\",\n        \"https://cdn.shopify.com/s/files/1/1792/3413/files/its_a_boy.jpg?v=1767468046\",\n        \"https://cdn.shopify.com/s/files/1/1792/3413/files/gaga.jpg?v=1767468046\",\n        \"https://cdn.shopify.com/s/files/1/1792/3413/files/patriot_day.jpg?v=1767468046\",\n        \"https://cdn.shopify.com/s/files/1/1792/3413/files/sweet_sixteenth.jpg?v=1767468046\",\n        \"https://cdn.shopify.com/s/files/1/1792/3413/files/american_heating_and_cooling.jpg?v=1767468046\",\n        \"https://cdn.shopify.com/s/files/1/1792/3413/files/nova_bucks.jpg?v=1767675679\"\n      ];\n    }\n\n    function seedIntroFallback() {\n      if (!visual || !stage) return;\n      var fallback = stage.querySelector(\".pab-mobile-intro__bill-fallback\");\n      if (!fallback) return;\n      var live = document.getElementById(\"bill-image\");\n      var src = (live && (live.currentSrc || live.getAttribute(\"src\") || live.src)) || \"\";\n      if (!src && window.PAB_MOCKUP_ASSETS && window.PAB_MOCKUP_ASSETS[\"New Series\"]) {\n        src = window.PAB_MOCKUP_ASSETS[\"New Series\"][\"100\"] || \"\";\n      }\n      if (!src) return;\n      visual.hidden = false;\n      visual.classList.add(\"has-fallback\");\n      if (fallback.getAttribute(\"src\") !== src) fallback.src = src;\n      fallback.setAttribute(\"hidden\", \"\");\n      fallback.style.visibility = \"hidden\";\n      if (!visual.style.getPropertyValue(\"--pab-intro-bill\") && src) {\n        visual.style.setProperty(\"--pab-intro-bill\", 'url(\"' + src.replace(/\"/g, \"%22\") + '\")');\n      }\n    }\n\n    function showLandingBill(src, immediate, manual) {\n      if (!src || !images.length || (currentBill === src && !loadingBill)) return;\n      if (loadingBill && !manual) return;\n      loadingBill = src;\n      if (manual) introManualTarget = src;\n      var request = ++introBillRequest;\n      var nextIndex = images.length > 1 ? (currentImage + 1) % images.length : currentImage;\n      var outgoing = images[currentImage];\n      var incoming = images[nextIndex];\n      var revealed = false;\n      function reveal() {\n        if (revealed || request !== introBillRequest) return;\n        revealed = true;\n        var apply = function () {\n          if (request !== introBillRequest) return;\n          window.clearTimeout(introManualTimer);\n          visual.classList.toggle(\"pab-intro-manual-swipe\", !!manual);\n          incoming.classList.add(\"is-active\");\n          if (outgoing !== incoming) outgoing.classList.remove(\"is-active\");\n          currentImage = nextIndex;\n          currentBill = src;\n          loadingBill = \"\";\n          introManualTarget = \"\";\n          visual.classList.add(\"is-ready\");\n          if (manual) introManualTimer = window.setTimeout(function () {\n            visual.classList.remove(\"pab-intro-manual-swipe\");\n          }, 420);\n        };\n        if (immediate) apply();\n        else window.requestAnimationFrame(function () { window.requestAnimationFrame(apply); });\n      }\n      var preload = new Image();\n      preload.onload = function () {\n        var ready = function () {\n          if (request !== introBillRequest) return;\n          incoming.style.setProperty(\"--pab-intro-bill\", 'url(\"' + src.replace(/\"/g, \"%22\") + '\")');\n          reveal();\n        };\n        if (typeof preload.decode === \"function\") preload.decode().catch(function () {}).then(ready);\n        else ready();\n      };\n      preload.onerror = function () {\n        if (request !== introBillRequest) return;\n        loadingBill = \"\";\n        introManualTarget = \"\";\n      };\n      preload.src = src;\n      if (preload.complete && preload.naturalWidth) preload.onload();\n    }\n\n    function stepIntroBill(direction) {\n      var bills = landingBillImages();\n      if (!mobile() || visualViewportPinched() || bills.length < 2) return;\n      var index = bills.indexOf(introManualTarget || currentBill);\n      if (index < 0) index = 0;\n      var next = (index + direction + bills.length) % bills.length;\n      showLandingBill(bills[next], false, true);\n    }\n\n    if (visual && window.PointerEvent) {\n      visual.setAttribute(\"role\", \"group\");\n      visual.setAttribute(\"aria-keyshortcuts\", \"ArrowLeft ArrowRight\");\n      visual.tabIndex = 0;\n      visual.addEventListener(\"pointerdown\", function (event) {\n        if (!mobile() || visualViewportPinched() || event.isPrimary === false || event.button !== 0) return;\n        introSwipe = { id: event.pointerId, x: event.clientX, y: event.clientY };\n        visual.classList.add(\"pab-intro-swiping\");\n        visual.setPointerCapture(event.pointerId);\n      });\n      visual.addEventListener(\"pointerup\", function (event) {\n        if (!introSwipe || event.pointerId !== introSwipe.id) return;\n        var dx = event.clientX - introSwipe.x;\n        var dy = event.clientY - introSwipe.y;\n        introSwipe = null;\n        visual.classList.remove(\"pab-intro-swiping\");\n        if (visual.hasPointerCapture(event.pointerId)) visual.releasePointerCapture(event.pointerId);\n        if (Math.abs(dx) >= 40 && Math.abs(dx) > Math.abs(dy) * 1.25) stepIntroBill(dx < 0 ? 1 : -1);\n      });\n      visual.addEventListener(\"pointercancel\", function () {\n        introSwipe = null;\n        visual.classList.remove(\"pab-intro-swiping\");\n      });\n      visual.addEventListener(\"keydown\", function (event) {\n        if (event.key !== \"ArrowLeft\" && event.key !== \"ArrowRight\") return;\n        if (!mobile()) return;\n        event.preventDefault();\n        stepIntroBill(event.key === \"ArrowRight\" ? 1 : -1);\n      });\n    }\n\n    function syncIntroPreview() {\n      var bills = landingBillImages();\n      if (!images.length || !visual) return;\n      seedIntroFallback();\n      if (!bills.length) {\n        if (!visual.classList.contains(\"has-fallback\")) visual.hidden = true;\n        return;\n      }\n      visual.hidden = false;\n      if (!currentBill && !loadingBill) showLandingBill(bills[0], true);\n      if (!introBillTimer && bills.length > 1) {\n        introBillTimer = window.setInterval(function () {\n          if (!introBillVisible || document.hidden || introSwipe) return;\n          var choices = landingBillImages().filter(function (src) { return src !== currentBill; });\n          if (!choices.length) return;\n          showLandingBill(choices[Math.floor(Math.random() * choices.length)]);\n        }, 4500);\n      }\n    }\n    if (\"IntersectionObserver\" in window && visual) {\n      new IntersectionObserver(function (entries) {\n        introBillVisible = !!(entries[0] && entries[0].isIntersecting);\n      }, { threshold: 0.05 }).observe(visual);\n    }\n    syncIntroPreview();\n    [120, 500, 1000].forEach(function (delay) { window.setTimeout(syncIntroPreview, delay); });\n    if (!intro.parentNode) {\n      if (root.parentNode) root.parentNode.insertBefore(intro, root);\n      else document.body.appendChild(intro);\n    } else if (root.parentNode && intro.nextElementSibling !== root) {\n      root.parentNode.insertBefore(intro, root);\n    }\n    if (hydrated && !document.documentElement.classList.contains(\"pab-guide-resume-entry\")) {\n      intro.classList.add(\"is-visible\");\n      intro.hidden = false;\n    }\n    return intro;\n  }\n\n  function createChrome() {\n    var chrome = document.createElement(\"div\");\n    chrome.id = \"pab-mobile-guide-chrome\";\n    chrome.className = \"pab-mobile-guide-chrome\";\n    chrome.hidden = true;\n    chrome.innerHTML =\n      '<header class=\"pab-mobile-guide-head\" data-pab-guide-build=\"' + PAB_GUIDE_BUILD + '\">' +\n        '<span class=\"pab-mobile-brand\"><img class=\"pab-mobile-brand__icon\" src=\"' + LOGO_SRC + '\" alt=\"\" width=\"44\" height=\"44\"><strong>Print A Bill\u2122</strong></span>' +\n        '<span class=\"pab-mobile-guide-actions\">' +\n          '<button type=\"button\" class=\"pab-mobile-guide-action\" data-pab-mobile-reset aria-haspopup=\"dialog\" aria-expanded=\"false\" aria-controls=\"pab-mobile-reset-confirm\">' +\n            '<svg class=\"pab-mobile-guide-action__icon\" viewBox=\"0 0 16 16\" width=\"20\" height=\"20\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M13.2 8A5.2 5.2 0 1 1 11.7 4.35\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.35\" stroke-linecap=\"round\"/><path d=\"M13.2 2.75v3.05h-3.05\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.35\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>' +\n            'Start over' +\n          '</button>' +\n          '<button type=\"button\" class=\"pab-mobile-guide-action\" data-pab-mobile-exit aria-label=\"Exit guide\">' +\n            '<svg class=\"pab-mobile-guide-action__icon\" viewBox=\"0 0 16 16\" width=\"24\" height=\"24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M4.25 4.25l7.5 7.5M11.75 4.25l-7.5 7.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.05\" stroke-linecap=\"round\"/></svg>' +\n            'Exit' +\n          '</button>' +\n        '</span>' +\n        '<div class=\"pab-mobile-guide-status\"><span data-pab-mobile-count>Step 1 of 6</span><strong data-pab-mobile-name>Bill format</strong></div>' +\n        '<div class=\"pab-mobile-guide-track\"><span data-pab-mobile-progress></span></div>' +\n      '</header>' +\n      '<footer class=\"pab-mobile-guide-footer\">' +\n        '<button type=\"button\" class=\"pab-mobile-guide-back\" data-pab-mobile-back aria-label=\"Back\"><svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" width=\"22\" height=\"22\"><path d=\"M14.5 5 7.5 12l7 7\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg></button>' +\n        '<span class=\"pab-mobile-guide-total\"><small>EST. TOTAL</small><strong data-pab-mobile-total>$0.00</strong></span>' +\n        '<button type=\"button\" class=\"pab-mobile-guide-next\" data-pab-mobile-next>Continue</button>' +\n      '</footer>' +\n      '<div class=\"pab-mobile-guide-confirm\" id=\"pab-mobile-reset-confirm\" data-pab-mobile-reset-confirm hidden>' +\n        '<div class=\"pab-mobile-guide-confirm__backdrop\" data-pab-mobile-reset-dismiss></div>' +\n        '<div class=\"pab-mobile-guide-confirm__sheet\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"pab-mobile-reset-title\" aria-describedby=\"pab-mobile-reset-copy\">' +\n          '<h2 class=\"pab-mobile-guide-confirm__title\" id=\"pab-mobile-reset-title\">Start over?</h2>' +\n          '<p class=\"pab-mobile-guide-confirm__copy\" id=\"pab-mobile-reset-copy\">Your selections will be cleared.</p>' +\n          '<div class=\"pab-mobile-guide-confirm__actions\">' +\n            '<button type=\"button\" class=\"pab-mobile-guide-confirm__keep\" data-pab-mobile-reset-dismiss>Keep editing</button>' +\n            '<button type=\"button\" class=\"pab-mobile-guide-confirm__reset\" data-pab-mobile-reset-confirm-go>Start over</button>' +\n          '</div>' +\n        '</div>' +\n      '</div>';\n    document.body.appendChild(chrome);\n    var confirmNode = chrome.querySelector(\"[data-pab-mobile-reset-confirm]\");\n    if (confirmNode) document.body.appendChild(confirmNode);\n    return chrome;\n  }\n\n  function createLauncher(firstRegion) {\n    var launcher = document.createElement(\"div\");\n    launcher.className = \"pab-mobile-guide-launcher\";\n    launcher.innerHTML = '<span>Want step-by-step help?</span><button type=\"button\">Guide me</button>';\n    firstRegion.parentNode.insertBefore(launcher, firstRegion);\n    return launcher;\n  }\n\n  function createStepPreview(region) {\n    var note = region.querySelector(\".section-note\");\n    var preview = document.createElement(\"div\");\n    preview.className = \"pab-mobile-step-preview\";\n    preview.innerHTML =\n      '<div class=\"pab-mobile-step-preview__label\"><span>LIVE BILL PREVIEW</span><span>Updates as you choose</span></div>' +\n      '<img alt=\"Selected custom prop money bill\" width=\"1842\" height=\"1590\">';\n    if (note && note.parentNode) note.parentNode.insertBefore(preview, note.nextSibling);\n    else region.insertBefore(preview, region.firstChild);\n    return preview.querySelector(\"img\");\n  }\n\n  function setBillSide(slot, side) {\n    if (!slot) return;\n    side = side === \"back\" ? \"back\" : \"front\";\n    slot.dataset.billSide = side;\n    slot.querySelectorAll(\"[data-pab-bill-side]\").forEach(function (button) {\n      var active = button.dataset.pabBillSide === side;\n      button.classList.toggle(\"is-active\", active);\n      button.setAttribute(\"aria-pressed\", active ? \"true\" : \"false\");\n    });\n    sizeGuideBillCrop(slot);\n    syncLandscapeCallouts(slot);\n  }\n\n  function billSideToggleHtml() {\n    return (\n      '<div class=\"pab-mobile-bill-side-toggle\" role=\"group\" aria-label=\"Bill side\">' +\n        '<button type=\"button\" class=\"is-active\" data-pab-bill-side=\"front\" aria-pressed=\"true\">Front</button>' +\n        '<button type=\"button\" data-pab-bill-side=\"back\" aria-pressed=\"false\">Back</button>' +\n      '</div>'\n    );\n  }\n\n  function bindBillSideToggles(slots) {\n    var list = (slots || []).filter(Boolean);\n    function applySide(side) {\n      var scroller = document.getElementById(\"pab-mockup-root\");\n      var y = scroller ? scroller.scrollTop : 0;\n      list.forEach(function (slot) { setBillSide(slot, side); });\n      if (scroller && Math.abs(scroller.scrollTop - y) > 0.5) scroller.scrollTop = y;\n    }\n    list.forEach(function (slot) {\n      if (slot._pabBillSideBound) return;\n      slot._pabBillSideBound = true;\n      var group = slot.querySelector(\".pab-mobile-bill-side-toggle\");\n      slot.querySelectorAll(\"[data-pab-bill-side]\").forEach(function (button) {\n        var chooseSide = function (event) {\n          if (event) event.stopPropagation();\n          applySide(button.dataset.pabBillSide);\n        };\n        button.addEventListener(\"click\", chooseSide);\n        button.addEventListener(\"pointerup\", function (event) {\n          if (event.pointerType === \"mouse\") return;\n          chooseSide(event);\n        });\n      });\n      if (!group) return;\n      group.addEventListener(\"keydown\", function (event) {\n        if (event.key !== \"ArrowLeft\" && event.key !== \"ArrowRight\" && event.key !== \"Home\" && event.key !== \"End\") return;\n        event.preventDefault();\n        var side = (event.key === \"ArrowLeft\" || event.key === \"Home\") ? \"front\" : \"back\";\n        applySide(side);\n        var next = slot.querySelector(\"[data-pab-bill-side='\" + side + \"']\");\n        if (next) next.focus();\n      });\n    });\n  }\n\n  function clearGuideBillFaceStyles(preview) {\n    var node = preview || document.getElementById(\"bill-preview\");\n    if (node) {\n      [\"width\", \"height\", \"aspect-ratio\", \"padding\", \"max-width\", \"max-height\", \"left\", \"top\"].forEach(function (prop) {\n        node.style.removeProperty(prop);\n      });\n    }\n    var img = node ? node.querySelector(\"#bill-image, .bill-image\") : document.getElementById(\"bill-image\");\n    if (img) {\n      [\"width\", \"height\", \"max-width\", \"max-height\", \"object-fit\"].forEach(function (prop) {\n        img.style.removeProperty(prop);\n      });\n    }\n  }\n\n  function clearGuideBillLayerStyles(layer) {\n    if (!layer) return;\n    [\"position\", \"left\", \"top\", \"width\", \"height\"].forEach(function (prop) {\n      layer.style.removeProperty(prop);\n    });\n  }\n\n  var uvDemoOriginalStyleCaptured = false;\n  var uvDemoOriginalStyle = null;\n  function syncUvDemoHitTarget() {\n    var uv = document.getElementById(\"uv-demo\");\n    if (!uv) return;\n    if (!uvDemoOriginalStyleCaptured) {\n      uvDemoOriginalStyleCaptured = true;\n      uvDemoOriginalStyle = uv.getAttribute(\"style\");\n    }\n    var landscape = document.documentElement.dataset.pabGuideOrientation === \"landscape\";\n    if (!landscape) {\n      if (uvDemoOriginalStyle === null) uv.removeAttribute(\"style\");\n      else uv.setAttribute(\"style\", uvDemoOriginalStyle);\n      return;\n    }\n    if (uvDemoOriginalStyle === null) uv.removeAttribute(\"style\");\n    else uv.setAttribute(\"style\", uvDemoOriginalStyle);\n    uv.style.setProperty(\"min-width\", \"44px\", \"important\");\n    uv.style.setProperty(\"min-height\", \"44px\", \"important\");\n    uv.style.setProperty(\"height\", \"44px\", \"important\");\n    uv.style.setProperty(\"padding\", \"12px 8px 12px 0\", \"important\");\n    uv.style.setProperty(\"box-sizing\", \"border-box\", \"important\");\n  }\n\n  function sizeGuideBillCrop(slot) {\n    if (!slot) return;\n    var viewport = slot.querySelector(\".pab-mobile-bill-viewport\");\n    var crop = slot.querySelector(\".pab-mobile-bill-crop\");\n    if (!viewport || !crop) return;\n    var preview = crop.querySelector(\"#bill-preview\");\n    var layer = crop.querySelector(\".pab-mobile-bill-zoom-layer\");\n    if (document.documentElement.dataset.pabGuideOrientation !== \"landscape\") {\n      [\"width\", \"height\", \"padding\", \"box-sizing\", \"aspect-ratio\", \"max-width\", \"min-width\", \"flex\"].forEach(function (prop) {\n        crop.style.removeProperty(prop);\n      });\n      clearGuideBillLayerStyles(layer);\n      if (preview) clearGuideBillFaceStyles(preview);\n      return;\n    }\n    var availW = viewport.clientWidth;\n    var availH = viewport.clientHeight;\n    if (availW < 8 || availH < 8) return;\n    var img = document.getElementById(\"bill-image\");\n    var nw = img && img.naturalWidth ? img.naturalWidth : 0;\n    var nh = img && img.naturalHeight ? img.naturalHeight : 0;\n    var faceRatio = 2.34;\n    if (nw > 8 && nh > 8) faceRatio = nw / (nh / 2);\n    var inset = 8;\n    var fitW = Math.max(8, availW - inset * 2);\n    var fitH = Math.max(8, availH - inset * 2);\n    var faceH = fitH;\n    var faceW = Math.max(1, Math.round(faceH * faceRatio));\n    if (faceW > fitW) {\n      faceW = fitW;\n      faceH = Math.max(1, Math.round(faceW / faceRatio));\n    }\n    crop.style.setProperty(\"box-sizing\", \"border-box\", \"important\");\n    crop.style.setProperty(\"aspect-ratio\", \"auto\", \"important\");\n    crop.style.setProperty(\"padding\", \"0\", \"important\");\n    crop.style.setProperty(\"flex\", \"0 0 auto\", \"important\");\n    crop.style.setProperty(\"max-width\", faceW + \"px\", \"important\");\n    crop.style.setProperty(\"min-width\", \"0\", \"important\");\n    crop.style.setProperty(\"width\", faceW + \"px\", \"important\");\n    crop.style.setProperty(\"height\", faceH + \"px\", \"important\");\n    if (layer) {\n      layer.style.setProperty(\"position\", \"absolute\", \"important\");\n      layer.style.setProperty(\"left\", \"0\", \"important\");\n      layer.style.setProperty(\"top\", \"0\", \"important\");\n      layer.style.setProperty(\"width\", faceW + \"px\", \"important\");\n      layer.style.setProperty(\"height\", faceH + \"px\", \"important\");\n    }\n    if (preview) {\n      preview.style.setProperty(\"left\", \"0\", \"important\");\n      preview.style.setProperty(\"top\", \"0\", \"important\");\n      preview.style.setProperty(\"width\", faceW + \"px\", \"important\");\n      preview.style.setProperty(\"height\", faceH * 2 + \"px\", \"important\");\n      preview.style.setProperty(\"aspect-ratio\", \"auto\", \"important\");\n      preview.style.setProperty(\"padding\", \"0\", \"important\");\n      preview.style.setProperty(\"max-width\", \"none\", \"important\");\n      preview.style.setProperty(\"max-height\", \"none\", \"important\");\n      var faceImg = preview.querySelector(\"#bill-image, .bill-image\");\n      if (faceImg) {\n        faceImg.style.setProperty(\"width\", \"100%\", \"important\");\n        faceImg.style.setProperty(\"height\", \"100%\", \"important\");\n        faceImg.style.setProperty(\"max-width\", \"none\", \"important\");\n        faceImg.style.setProperty(\"max-height\", \"none\", \"important\");\n        faceImg.style.setProperty(\"object-fit\", \"cover\", \"important\");\n      }\n    }\n    if (typeof slot._pabAfterCropSize === \"function\") slot._pabAfterCropSize();\n    syncLandscapeCallouts(slot);\n  }\n\n  function syncLandscapeCallouts(slot) {\n    var host = document.getElementById(\"callouts\");\n    if (!host) return;\n    slot = slot || host.closest(\".pab-mobile-tier-bill-slot, .pab-mobile-design-bill-slot\");\n    var landscape = document.documentElement.dataset.pabGuideOrientation === \"landscape\";\n    var side = slot && slot.dataset.billSide === \"back\" ? \"back\" : \"front\";\n    Array.prototype.forEach.call(host.querySelectorAll(\".callout\"), function (el) {\n      var props = [\"width\", \"height\", \"min-width\", \"min-height\", \"max-width\", \"max-height\", \"box-sizing\", \"border-radius\", \"aspect-ratio\", \"padding\", \"visibility\", \"pointer-events\", \"border\"];\n      if (!landscape) {\n        props.forEach(function (prop) { el.style.removeProperty(prop); });\n        return;\n      }\n      el.style.setProperty(\"width\", \"23px\", \"important\");\n      el.style.setProperty(\"height\", \"23px\", \"important\");\n      el.style.setProperty(\"min-width\", \"23px\", \"important\");\n      el.style.setProperty(\"min-height\", \"23px\", \"important\");\n      el.style.setProperty(\"max-width\", \"23px\", \"important\");\n      el.style.setProperty(\"max-height\", \"23px\", \"important\");\n      el.style.setProperty(\"box-sizing\", \"border-box\", \"important\");\n      el.style.setProperty(\"border-radius\", \"50%\", \"important\");\n      el.style.setProperty(\"aspect-ratio\", \"1 / 1\", \"important\");\n      el.style.setProperty(\"padding\", \"0\", \"important\");\n      el.style.setProperty(\"border\", \"1px solid #1d1d1f\", \"important\");\n      var top = parseFloat(el.style.top);\n      var onBack = !isNaN(top) && top >= 50;\n      var show = isNaN(top) ? true : (side === \"back\" ? onBack : !onBack);\n      el.style.setProperty(\"visibility\", show ? \"visible\" : \"hidden\", \"important\");\n      el.style.setProperty(\"pointer-events\", show ? \"auto\" : \"none\", \"important\");\n    });\n    if (landscape && !host._pabCalloutSync) {\n      host._pabCalloutSync = true;\n      new MutationObserver(function () {\n        window.requestAnimationFrame(function () { syncLandscapeCallouts(null); });\n      }).observe(host, { childList: true });\n    }\n  }\n\n  function createTierBillSlot(region, withControls) {\n    var note = region.querySelector(\".section-note\");\n    var slot = document.createElement(\"div\");\n    var eye =\n      '<button type=\"button\" class=\"pab-form-preview__eye pab-mobile-preview-eye\" aria-pressed=\"false\" aria-label=\"Dim callouts\">' +\n        '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.75\"><path d=\"M2.5 12s3.5-6 9.5-6 9.5 6 9.5 6-3.5 6-9.5 6-9.5-6-9.5-6Z\"/><circle cx=\"12\" cy=\"12\" r=\"2.75\"/></svg>' +\n      '</button>';\n    var controls =\n      '<div class=\"pab-mobile-preview-controls\">' +\n        (withControls ?\n          '<div class=\"pab-form-preview__zoom pab-mobile-preview-zoom\" role=\"group\" aria-label=\"Bill zoom\">' +\n            '<button type=\"button\" class=\"pab-form-preview__zoom-btn\" data-pab-mobile-zoom=\"out\" aria-label=\"Zoom out\">\u2212</button>' +\n            '<button type=\"button\" class=\"pab-form-preview__zoom-status\" data-pab-mobile-zoom=\"status\" aria-label=\"Reset zoom to 1\u00D7\" aria-live=\"polite\">1\u00D7</button>' +\n            '<button type=\"button\" class=\"pab-form-preview__zoom-btn\" data-pab-mobile-zoom=\"in\" aria-label=\"Zoom in\">+</button>' +\n          '</div>' : \"\") +\n        billSideToggleHtml() +\n      '</div>';\n    slot.className = \"pab-mobile-tier-bill-slot\" + (withControls ? \" has-preview-controls\" : \" has-side-toggle\");\n    slot.setAttribute(\"aria-label\", \"Interactive bill preview\");\n    slot.innerHTML =\n      '<div class=\"pab-mobile-step-preview__label\"><span>LIVE BILL PREVIEW</span>' + (withControls ? eye : \"\") + '</div>' +\n      '<div class=\"pab-mobile-bill-viewport\"><div class=\"pab-mobile-bill-crop\">' +\n        (withControls ? '<div class=\"pab-mobile-bill-zoom-layer\"></div>' : \"\") +\n      '</div></div>' +\n      controls;\n    setBillSide(slot, \"front\");\n    if (note && note.parentNode) note.parentNode.insertBefore(slot, note.nextSibling);\n    else region.insertBefore(slot, region.firstChild);\n    var viewport = slot.querySelector(\".pab-mobile-bill-viewport\");\n    if (viewport && window.ResizeObserver && !slot._pabCropObserver) {\n      slot._pabCropObserver = new ResizeObserver(function () { sizeGuideBillCrop(slot); });\n      slot._pabCropObserver.observe(viewport);\n    }\n    sizeGuideBillCrop(slot);\n    return slot;\n  }\n\n  function initTierBillControls(slot) {\n    if (!slot || !slot.classList.contains(\"has-preview-controls\")) return;\n    var levels = [1, 1.5, 2, 3, 4];\n    var zoom = 1;\n    var panX = 0;\n    var panY = 0;\n    var pointers = {};\n    var drag = null;\n    var pinch = null;\n    var crop = slot.querySelector(\".pab-mobile-bill-crop\");\n    var layer = slot.querySelector(\".pab-mobile-bill-zoom-layer\");\n    var eye = slot.querySelector(\".pab-mobile-preview-eye\");\n    var zoomOut = slot.querySelector(\"[data-pab-mobile-zoom='out']\");\n    var zoomStatus = slot.querySelector(\"[data-pab-mobile-zoom='status']\");\n    var zoomIn = slot.querySelector(\"[data-pab-mobile-zoom='in']\");\n\n    function formatZoom(value) {\n      return (Math.abs(value - Math.round(value)) < .01 ? Math.round(value) : value) + \"\u00D7\";\n    }\n\n    function clampPan() {\n      if (!crop || zoom <= 1) {\n        panX = 0;\n        panY = 0;\n        return;\n      }\n      var maxX = crop.clientWidth * (zoom - 1) / 2;\n      var maxY = crop.clientHeight * (zoom - 1) / 2;\n      panX = Math.max(-maxX, Math.min(maxX, panX));\n      panY = Math.max(-maxY, Math.min(maxY, panY));\n    }\n\n    function renderZoom(animate) {\n      if (!layer || !crop) return;\n      clampPan();\n      layer.classList.toggle(\"is-animating\", !!animate);\n      layer.style.transform = \"translate3d(\" + panX + \"px,\" + panY + \"px,0) scale3d(\" + zoom + \",\" + zoom + \",1)\";\n      crop.classList.toggle(\"is-zoomed\", zoom > 1.001);\n      if (zoomStatus) zoomStatus.textContent = formatZoom(zoom);\n      if (zoomOut) zoomOut.disabled = zoom <= 1.001;\n      if (zoomIn) zoomIn.disabled = zoom >= 3.999;\n      if (animate) window.setTimeout(function () { layer.classList.remove(\"is-animating\"); }, 260);\n    }\n\n    function setZoom(next, animate) {\n      var nearest = levels[0];\n      levels.forEach(function (level) {\n        if (Math.abs(level - next) < Math.abs(nearest - next)) nearest = level;\n      });\n      zoom = nearest;\n      if (zoom <= 1) {\n        panX = 0;\n        panY = 0;\n      }\n      renderZoom(animate);\n    }\n\n    function stepZoom(direction) {\n      var index = levels.indexOf(zoom);\n      if (index < 0) index = 0;\n      setZoom(levels[Math.max(0, Math.min(levels.length - 1, index + direction))], true);\n    }\n\n    if (eye) eye.addEventListener(\"click\", function () {\n      var dimmed = slot.classList.toggle(\"callouts-dimmed\");\n      eye.classList.toggle(\"is-off\", dimmed);\n      eye.setAttribute(\"aria-pressed\", dimmed ? \"true\" : \"false\");\n      eye.setAttribute(\"aria-label\", dimmed ? \"Restore callouts\" : \"Dim callouts\");\n    });\n    if (zoomOut) zoomOut.addEventListener(\"click\", function () { stepZoom(-1); });\n    if (zoomIn) zoomIn.addEventListener(\"click\", function () { stepZoom(1); });\n    if (zoomStatus) zoomStatus.addEventListener(\"click\", function () {\n      setZoom(1, true);\n      sizeGuideBillCrop(slot);\n    });\n    if (crop && window.PointerEvent) {\n      crop.addEventListener(\"pointerdown\", function (event) {\n        pointers[event.pointerId] = { x: event.clientX, y: event.clientY };\n        var active = Object.keys(pointers);\n        if (active.length === 1) {\n          drag = zoom > 1.001 ? { x: event.clientX, y: event.clientY, panX: panX, panY: panY } : null;\n          pinch = null;\n          if (drag) {\n            crop.setPointerCapture(event.pointerId);\n            crop.classList.add(\"is-panning\");\n            event.preventDefault();\n          }\n        } else if (active.length === 2) {\n          var a = pointers[active[0]], b = pointers[active[1]];\n          pinch = { distance: Math.hypot(b.x - a.x, b.y - a.y), zoom: zoom };\n          drag = null;\n          crop.setPointerCapture(event.pointerId);\n          crop.classList.add(\"is-panning\");\n          event.preventDefault();\n        }\n      });\n      crop.addEventListener(\"pointermove\", function (event) {\n        if (!pointers[event.pointerId]) return;\n        pointers[event.pointerId] = { x: event.clientX, y: event.clientY };\n        var active = Object.keys(pointers);\n        if (active.length === 1 && drag) {\n          panX = drag.panX + event.clientX - drag.x;\n          panY = drag.panY + event.clientY - drag.y;\n          renderZoom(false);\n          event.preventDefault();\n        } else if (active.length === 2 && pinch) {\n          var a = pointers[active[0]], b = pointers[active[1]];\n          var distance = Math.hypot(b.x - a.x, b.y - a.y);\n          var target = pinch.zoom * distance / Math.max(1, pinch.distance);\n          var nearest = levels.reduce(function (best, level) {\n            return Math.abs(level - target) < Math.abs(best - target) ? level : best;\n          }, levels[0]);\n          if (nearest !== zoom) {\n            zoom = nearest;\n            renderZoom(false);\n          }\n          event.preventDefault();\n        }\n      });\n      var endPointer = function (event) {\n        delete pointers[event.pointerId];\n        if (!Object.keys(pointers).length) {\n          drag = null;\n          pinch = null;\n          crop.classList.remove(\"is-panning\");\n          renderZoom(true);\n        }\n      };\n      crop.addEventListener(\"pointerup\", endPointer);\n      crop.addEventListener(\"pointercancel\", endPointer);\n    }\n\n    slot._pabAfterCropSize = function () {\n      if (zoom <= 1.001) {\n        panX = 0;\n        panY = 0;\n      }\n      renderZoom(false);\n    };\n\n    renderZoom(false);\n  }\n\n  function init() {\n    bindGuideViewportWatch();\n    applyGuideOrientation(readGuideOrientation());\n    if (!mobile()) return;\n    var root = document.getElementById(\"pab-mockup-root\");\n    var cartEditEntry = window.PABCartEditEntry;\n    var cartEditOpened = false;\n    var bootState = cartEditEntry ? {} : readState();\n    if (!bootState.active && !shouldResumeGuide()) {\n      document.body.classList.remove(\"pab-mobile-guide-active\");\n      delete document.body.dataset.pabMobileGuideStep;\n    }\n    if (!root || root.dataset.pabMobileGuideReady === \"true\") return;\n    ensureGuideRegions(root);\n    var regions = STEP_IDS.map(function (id) {\n      return root.querySelector('[data-pab-guide-region=\"' + id + '\"]');\n    });\n    var checkoutRegion = root.querySelector('[data-pab-guide-region=\"checkout\"]');\n    var cartRegion = root.querySelector('[data-pab-guide-region=\"cart\"]');\n    if (regions.some(function (region) { return !region; })) {\n      attempts += 1;\n      if (attempts < 40) {\n        window.setTimeout(init, 100);\n        return;\n      }\n      return;\n    }\n\n    document.body.classList.add(\"pab-mobile-guide-only\");\n\n    root.dataset.pabMobileGuideReady = \"true\";\n    document.documentElement.dataset.pabGuideBuild = PAB_GUIDE_BUILD;\n\n    var lastGuideTouchEnd = 0;\n    var guideTouchStartY = 0;\n    var storefrontScrollLock = { locked: false, x: 0, y: 0 };\n\n    function landscapeOverlayOpen() {\n      if (document.documentElement.dataset.pabGuideOrientation !== \"landscape\") return false;\n      if (!document.body.classList.contains(\"pab-mobile-guide-only\")) return false;\n      return document.body.classList.contains(\"pab-mobile-guide-active\") || !!(intro && !intro.hidden);\n    }\n\n    function lockStorefrontScroll() {\n      if (!landscapeOverlayOpen()) {\n        unlockStorefrontScroll();\n        return;\n      }\n      if (!storefrontScrollLock.locked) {\n        storefrontScrollLock = {\n          locked: true,\n          x: window.scrollX || 0,\n          y: window.scrollY || window.pageYOffset || 0\n        };\n      }\n      document.documentElement.classList.add(\"pab-storefront-scroll-lock\");\n      document.body.style.setProperty(\"position\", \"fixed\", \"important\");\n      document.body.style.setProperty(\"top\", \"-\" + storefrontScrollLock.y + \"px\", \"important\");\n      document.body.style.setProperty(\"left\", \"-\" + storefrontScrollLock.x + \"px\", \"important\");\n      document.body.style.setProperty(\"width\", \"100%\", \"important\");\n    }\n\n    function unlockStorefrontScroll() {\n      document.documentElement.classList.remove(\"pab-storefront-scroll-lock\");\n      document.body.style.removeProperty(\"position\");\n      document.body.style.removeProperty(\"top\");\n      document.body.style.removeProperty(\"left\");\n      document.body.style.removeProperty(\"width\");\n      if (!storefrontScrollLock.locked) return;\n      var x = storefrontScrollLock.x;\n      var y = storefrontScrollLock.y;\n      storefrontScrollLock.locked = false;\n      window.scrollTo(x, y);\n    }\n\n    document.addEventListener(\"touchend\", function (event) {\n      if (!document.body.classList.contains(\"pab-mobile-guide-active\")) return;\n      if (event.target.closest && event.target.closest(\"#pab-volume-pricing-modal, #shopify-pc__banner, #shopify-pc__prefs\")) return;\n      if (event.target.closest && event.target.closest(\"button, a, input, label, select, textarea, [role='button'], .tier, .callout, .uv-demo, #uv-demo, .choice, .option\")) {\n        lastGuideTouchEnd = 0;\n        return;\n      }\n      var now = Date.now();\n      if (now - lastGuideTouchEnd < 320) event.preventDefault();\n      lastGuideTouchEnd = now;\n    }, { passive: false, capture: true });\n\n    document.addEventListener(\"dblclick\", function (event) {\n      if (document.body.classList.contains(\"pab-mobile-guide-active\")) event.preventDefault();\n    }, { passive: false, capture: true });\n\n    root.addEventListener(\"touchstart\", function (event) {\n      if (event.touches.length === 1) guideTouchStartY = event.touches[0].clientY;\n    }, { passive: true });\n\n    function guideScrollRoot() {\n      if (document.documentElement.dataset.pabGuideOrientation === \"landscape\") {\n        var current = regions[index];\n        var pane = current && current.querySelector(\"[data-pab-guide-select-pane]\");\n        if (pane) return pane;\n      }\n      return root;\n    }\n\n    function overlayTouchActive() {\n      return document.body.classList.contains(\"pab-mobile-guide-active\") ||\n        !!(intro && !intro.hidden && document.documentElement.dataset.pabGuideOrientation === \"landscape\");\n    }\n\n    function overlayScrollRoot() {\n      if (intro && !intro.hidden && document.documentElement.dataset.pabGuideOrientation === \"landscape\" && !document.body.classList.contains(\"pab-mobile-guide-active\")) {\n        return intro;\n      }\n      return guideScrollRoot();\n    }\n\n    function preventScrollChain(event, scroller) {\n      if (!scroller || event.touches.length !== 1) return;\n      var deltaY = event.touches[0].clientY - guideTouchStartY;\n      var atTop = scroller.scrollTop <= 0;\n      var atBottom = scroller.scrollTop + scroller.clientHeight >= scroller.scrollHeight - 1;\n      if ((atTop && deltaY > 0) || (atBottom && deltaY < 0)) event.preventDefault();\n    }\n\n    root.addEventListener(\"touchmove\", function (event) {\n      if (event.target.closest && event.target.closest(\"#pab-accessory-product-modal, #examples, #details-modal, #pab-mockup-uv-modal, #pab-volume-pricing-modal, #pab-mobile-reset-confirm\")) return;\n      if (!overlayTouchActive()) return;\n      preventScrollChain(event, overlayScrollRoot());\n    }, { passive: false });\n\n    document.addEventListener(\"touchstart\", function (event) {\n      if (!overlayTouchActive() || event.touches.length !== 1) return;\n      guideTouchStartY = event.touches[0].clientY;\n    }, { passive: true, capture: true });\n\n    document.addEventListener(\"touchmove\", function (event) {\n      if (event.target.closest && event.target.closest(\"#pab-accessory-product-modal, #examples, #details-modal, #pab-mockup-uv-modal, #pab-volume-pricing-modal, #pab-mobile-reset-confirm\")) return;\n      if (!overlayTouchActive() || event.touches.length !== 1) return;\n      preventScrollChain(event, overlayScrollRoot());\n    }, { passive: false, capture: true });\n    var billPreview = root.querySelector(\"#bill-preview\");\n    var billHome = billPreview ? billPreview.parentNode : null;\n    var billHomeNext = billPreview ? billPreview.nextSibling : null;\n    var examplesTrigger = root.querySelector(\"#open-examples\");\n    var examplesHome = examplesTrigger ? examplesTrigger.parentNode : null;\n    var examplesHomeNext = examplesTrigger ? examplesTrigger.nextSibling : null;\n    var examplesTriggerPortraitHtml = examplesTrigger ? examplesTrigger.innerHTML : \"\";\n    function syncExamplesTriggerMarkup() {\n      if (!examplesTrigger) return;\n      var landscape = document.documentElement.dataset.pabGuideOrientation === \"landscape\";\n      if (landscape) {\n        if (examplesTrigger.querySelector(\".pab-mobile-examples-icon\")) return;\n        examplesTrigger.innerHTML = 'View examples <svg class=\"pab-mobile-examples-icon\" viewBox=\"0 0 14 14\" width=\"14\" height=\"14\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M6 2.5h5.5V8M11.5 2.5 2.5 11.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path></svg>';\n        return;\n      }\n      if (examplesTriggerPortraitHtml) examplesTrigger.innerHTML = examplesTriggerPortraitHtml;\n    }\n    syncExamplesTriggerMarkup();\n    syncUvDemoHitTarget();\n    var detailsTrigger = root.querySelector(\"#details\");\n    var detailsHome = detailsTrigger ? detailsTrigger.parentNode : null;\n    var detailsHomeNext = detailsTrigger ? detailsTrigger.nextSibling : null;\n    var intro = createIntro(root);\n    var chrome = createChrome();\n    var launcher = createLauncher(regions[0]);\n    var designBillSlot = createTierBillSlot(regions[0], false);\n    designBillSlot.classList.add(\"pab-mobile-design-bill-slot\");\n    var stepPreviewImages = [];\n    var tierBillSlot = createTierBillSlot(regions[1], true);\n    initTierBillControls(tierBillSlot);\n    bindBillSideToggles([designBillSlot, tierBillSlot]);\n    var billImage = document.getElementById(\"bill-image\");\n    if (billImage) {\n      billImage.addEventListener(\"load\", function () {\n        sizeGuideBillCrop(designBillSlot);\n        sizeGuideBillCrop(tierBillSlot);\n      });\n    }\n    var tierHeroTitle = regions[1].querySelector(\".tier-heading h2\");\n    var tierHeroTitleDesktop = tierHeroTitle ? tierHeroTitle.textContent : \"\";\n    if (tierHeroTitle) tierHeroTitle.textContent = \"Choose your level.\";\n    var reviewHeading = createReviewHeading(checkoutRegion);\n    var nextSteps = checkoutRegion.querySelector(\".next-steps\");\n    var reviewDetails = createReviewDetails(checkoutRegion, nextSteps);\n    var cartHome = cartRegion ? cartRegion.parentNode : null;\n    var cartHomeNext = cartRegion ? cartRegion.nextSibling : null;\n    if (cartRegion) checkoutRegion.insertBefore(cartRegion, nextSteps || null);\n    var proofTimeline = checkoutRegion.querySelector('[data-pab-proof-timeline]');\n    if (proofTimeline) checkoutRegion.insertBefore(proofTimeline, cartRegion || nextSteps || null);\n    var index = 0;\n    reviewDetails.addEventListener(\"click\", function (event) {\n      var edit = event.target.closest(\"[data-pab-review-edit]\");\n      if (!edit) return;\n      index = Math.max(0, Math.min(4, parseInt(edit.dataset.pabReviewEdit, 10) || 0));\n      update();\n      focusHeading();\n    });\n    var lastFocus = null;\n    var customDenominationValue = \"\";\n    var customDenominationButton = root.querySelector('#denoms button[data-denom=\"$custom\"]');\n    var customDenominationDesktopHtml = customDenominationButton ? customDenominationButton.innerHTML : \"\";\n    var customDenominationPhoneHtml = '<span class=\"pab-mobile-custom-denomination-toggle__label\"><i aria-hidden=\"true\"></i><b>Use a custom denomination</b></span><span class=\"pab-mobile-custom-denomination-toggle__fee\">+$25</span>';\n    if (customDenominationButton) {\n      customDenominationButton.classList.add(\"pab-mobile-custom-denomination-toggle\");\n      customDenominationButton.innerHTML = customDenominationPhoneHtml;\n    }\n\n    function customDenominationFeeText() {\n      var ultimate = /ultimate/i.test(selectedText(root, \".tier.selected\", \"\"));\n      if (ultimate) return \"Included in Ultimate\";\n      var amount = 25;\n      try {\n        if (typeof denomChangePrice === \"function\") amount = Number(denomChangePrice()) || 25;\n      } catch (_error) {}\n      return \"+$\" + String(amount).replace(/\\.00$/, \"\");\n    }\n\n    function syncCustomDenominationToggle() {\n      if (!customDenominationButton) return;\n      var active = customDenominationButton.classList.contains(\"selected\");\n      var fee = customDenominationButton.querySelector(\".pab-mobile-custom-denomination-toggle__fee\");\n      customDenominationButton.setAttribute(\"aria-pressed\", active ? \"true\" : \"false\");\n      if (fee) fee.textContent = customDenominationFeeText();\n    }\n\n    function syncDenominationLayout() {\n      var denoms = root.querySelector(\"#denoms\");\n      if (!denoms) return;\n      if (document.documentElement.dataset.pabGuideOrientation !== \"landscape\" || document.body.dataset.pabMobileGuideStep !== \"design\") {\n        denoms.style.removeProperty(\"--pab-denom-cols\");\n        delete denoms.dataset.pabDenomCount;\n        delete denoms.dataset.pabDenomCols;\n        return;\n      }\n      var buttons = Array.prototype.filter.call(denoms.querySelectorAll(\"button\"), function (button) {\n        return button.getAttribute(\"data-denom\") !== \"$custom\" && !button.hidden;\n      });\n      var count = Math.max(1, buttons.length);\n      var width = denoms.clientWidth;\n      if (width < 8) return;\n      var gap = 8;\n      var minBtn = 52;\n      buttons.forEach(function (button) {\n        var label = String(button.textContent || \"\").replace(/\\s+/g, \"\");\n        var guessed = Math.max(44, Math.ceil(label.length * 7.1) + 14);\n        if (guessed > minBtn) minBtn = Math.min(88, guessed);\n      });\n      var maxCols = Math.max(1, Math.floor((width + gap) / (minBtn + gap)));\n      var cols = Math.min(count, maxCols);\n      if (cols < count) cols = Math.ceil(count / Math.ceil(count / cols));\n      denoms.style.setProperty(\"--pab-denom-cols\", String(cols));\n      denoms.dataset.pabDenomCount = String(count);\n      denoms.dataset.pabDenomCols = String(cols);\n    }\n\n    function syncDollarOneNote() {\n      var denoms = root.querySelector(\"#denoms\");\n      if (!denoms) return;\n      var selectedSeries = selectedText(root, \"#series button.selected:not([hidden])\", \"\");\n      var selectedDenomination = selectedText(root, '#denoms button.selected:not([hidden]):not([data-denom=\"$custom\"])', \"\").replace(/[^0-9]/g, \"\");\n      var showNote = /new series|2000 series/i.test(selectedSeries) && selectedDenomination === \"1\";\n      var note = root.querySelector(\".pab-mobile-classic-dollar-one-note\");\n      if (!note && showNote) {\n        note = document.createElement(\"p\");\n        note.className = \"pab-mobile-classic-dollar-one-note\";\n        note.textContent = \"The $1 uses the same classic design across all series.\";\n        denoms.insertAdjacentElement(\"afterend\", note);\n      }\n      if (note) note.hidden = !showNote;\n    }\n\n    function restoreCustomDenomination() {\n      if (!customDenominationValue) return;\n      var denomination = root.querySelector('#denoms button[data-denom=\"$custom\"].selected:not([hidden])');\n      var input = root.querySelector(\"#pab-custom-denom-input\");\n      if (!denomination || !input || String(input.value || \"\")) return;\n      input.value = customDenominationValue;\n      input.dispatchEvent(new Event(\"input\", { bubbles: true }));\n      input.dispatchEvent(new Event(\"change\", { bubbles: true }));\n    }\n\n    var denomsHost = root.querySelector(\"#denoms\");\n    if (denomsHost && window.ResizeObserver && !denomsHost._pabDenomResize) {\n      denomsHost._pabDenomResize = new ResizeObserver(function () {\n        syncDenominationLayout();\n      });\n      denomsHost._pabDenomResize.observe(denomsHost);\n    }\n    if (denomsHost && window.MutationObserver && !denomsHost._pabDenomMut) {\n      denomsHost._pabDenomMut = new MutationObserver(function () {\n        window.requestAnimationFrame(syncDenominationLayout);\n      });\n      denomsHost._pabDenomMut.observe(denomsHost, { attributes: true, attributeFilter: [\"hidden\", \"class\", \"aria-hidden\"], subtree: true });\n    }\n    window.addEventListener(\"pab-guide-orientation\", function () {\n      window.requestAnimationFrame(syncDenominationLayout);\n    });\n    root.addEventListener(\"click\", function (event) {\n      if (!event.target.closest(\"#series button, #denoms button, .tier\")) return;\n      window.requestAnimationFrame(function () {\n        syncCustomDenominationToggle();\n        syncDenominationLayout();\n      });\n    });\n\n    function organizeTierLayout() {\n      var grid = root.querySelector(\".tier-grid\");\n      var panel = root.querySelector(\"#tier-features\");\n      if (!grid || !panel) return null;\n      var shell = regions[1].querySelector(\".pab-mobile-tier-shell\");\n      if (!shell) {\n        shell = document.createElement(\"div\");\n        shell.className = \"pab-mobile-tier-shell\";\n        grid.parentNode.insertBefore(shell, grid);\n        shell.appendChild(grid);\n      }\n      if (document.documentElement.dataset.pabGuideOrientation === \"landscape\") {\n        if (grid.parentNode !== shell) shell.insertBefore(grid, shell.firstChild);\n        if (panel.parentNode !== shell || panel.previousElementSibling !== grid) {\n          shell.appendChild(panel);\n        }\n      } else if (panel.parentNode !== shell) {\n        shell.appendChild(panel);\n      }\n      return { grid: grid, panel: panel, shell: shell };\n    }\n\n    function readFeaturesHidden() {\n      try { return sessionStorage.getItem(\"pab-tier-features-hidden\") === \"1\"; } catch (_error) { return false; }\n    }\n\n    function paintFeatureToggle(node, open) {\n      if (!node) return;\n      node.setAttribute(\"aria-expanded\", open ? \"true\" : \"false\");\n      var label = node.classList.contains(\"feature-card-toggle\") ? node : node.querySelector(\".feature-card-toggle\");\n      if (!label) return;\n      var chevron = label.querySelector(\".feature-card-toggle-chevron\");\n      label.textContent = open ? \"Hide features \" : \"Show features \";\n      if (!chevron) {\n        chevron = document.createElement(\"span\");\n        chevron.className = \"feature-card-toggle-chevron\";\n        chevron.setAttribute(\"aria-hidden\", \"true\");\n      }\n      label.appendChild(chevron);\n    }\n\n    function syncTierFeatureDisclosure(panel) {\n      var landscape = document.documentElement.dataset.pabGuideOrientation === \"landscape\";\n      var hidden = landscape && readFeaturesHidden();\n      if (hidden) panel.classList.remove(\"open\");\n      else panel.classList.add(\"open\");\n      panel.setAttribute(\"aria-hidden\", \"false\");\n      var columns = panel.querySelector(\"#pab-feature-columns, .feature-columns\");\n      if (columns) {\n        columns.hidden = !!hidden;\n        columns.setAttribute(\"aria-hidden\", hidden ? \"true\" : \"false\");\n      }\n      paintFeatureToggle(panel.querySelector(\"#pab-features-card-toggle\"), !hidden);\n      paintFeatureToggle(panel.querySelector(\".feature-card-bottom-toggle\"), !hidden);\n    }\n\n    function syncTierFeatureBrowser() {\n      if (!mobile()) return;\n      var layout = organizeTierLayout();\n      if (!layout) return;\n      var grid = layout.grid;\n      var panel = layout.panel;\n      panel.classList.add(\"pab-mobile-feature-browser\");\n      syncTierFeatureDisclosure(panel);\n      panel.querySelectorAll(\".pab-mobile-feature-side-tabs\").forEach(function (tabs) { tabs.remove(); });\n      if (!panel.dataset.pabFeatureSide) panel.dataset.pabFeatureSide = \"front\";\n      var currentTier = selectedText(root, \".tier.selected\", \"Premium\").match(/Standard|Premium|Ultimate/i);\n      var title = panel.querySelector(\".feature-card-head-copy strong\");\n      if (title && currentTier) title.textContent = currentTier[0].charAt(0).toUpperCase() + currentTier[0].slice(1).toLowerCase() + \" includes\";\n      panel.querySelectorAll(\".feature-columns > div > p\").forEach(function (row) {\n        var callout = row.querySelector(\".feature-callout[data-callout]\");\n        if (!callout) return;\n        var calloutValue = String(callout.dataset.callout || \"\");\n        var titleSpan = null;\n        Array.prototype.forEach.call(row.querySelectorAll(\"span\"), function (span) {\n          if (span.classList.contains(\"feature-callout\") || span.classList.contains(\"pab-entire-bill-detail\") || span.classList.contains(\"pab-entire-bill-copy\")) return;\n          if (!titleSpan) titleSpan = span;\n        });\n        row.setAttribute(\"role\", \"button\");\n        row.setAttribute(\"tabindex\", (document.documentElement.dataset.pabGuideOrientation === \"landscape\" && readFeaturesHidden()) ? \"-1\" : \"0\");\n        row.setAttribute(\"aria-label\", \"Highlight \" + ((titleSpan && titleSpan.textContent) || \"callout\").trim());\n        callout.removeAttribute(\"role\");\n        callout.removeAttribute(\"tabindex\");\n        callout.setAttribute(\"aria-hidden\", \"true\");\n        if (calloutValue === \"15\") {\n          var copyWrap = row.querySelector(\".pab-entire-bill-copy\");\n          if (!copyWrap && titleSpan) {\n            copyWrap = document.createElement(\"span\");\n            copyWrap.className = \"pab-entire-bill-copy\";\n            titleSpan.parentNode.insertBefore(copyWrap, titleSpan);\n            copyWrap.appendChild(titleSpan);\n          }\n          var detail = row.querySelector(\".pab-entire-bill-detail\");\n          if (!detail) {\n            detail = document.createElement(\"span\");\n            detail.className = \"pab-entire-bill-detail\";\n          }\n          detail.textContent = \"Choose a custom bill background color or provide your own background artwork.\";\n          if (copyWrap && detail.parentNode !== copyWrap) copyWrap.appendChild(detail);\n          row.setAttribute(\"aria-expanded\", row.classList.contains(\"pab-mobile-feature-selected\") ? \"true\" : \"false\");\n        } else {\n          row.removeAttribute(\"aria-expanded\");\n        }\n      });\n      syncTierFeatureDisclosure(panel);\n    }\n\n    function syncTierFeatureSide(side) {\n      var panel = root.querySelector(\"#tier-features\");\n      if (!panel) return;\n      side = side === \"back\" ? \"back\" : \"front\";\n      panel.dataset.pabFeatureSide = side;\n      panel.querySelectorAll(\"[data-pab-feature-side]\").forEach(function (button) {\n        var active = button.dataset.pabFeatureSide === side;\n        button.classList.toggle(\"is-active\", active);\n        button.setAttribute(\"aria-selected\", active ? \"true\" : \"false\");\n      });\n    }\n\n    function pinTierBillForFeatures() {\n      if (!tierBillSlot || !document.body.classList.contains(\"pab-mobile-guide-active\")) return;\n      if (document.documentElement.dataset.pabGuideOrientation === \"landscape\") return;\n      window.setTimeout(function () {\n        var billTop = tierBillSlot.getBoundingClientRect().top - root.getBoundingClientRect().top + root.scrollTop;\n        root.scrollTo({\n          top: Math.max(0, Math.round(billTop)),\n          behavior: window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches ? \"auto\" : \"smooth\"\n        });\n      }, 32);\n    }\n\n    var tierLayoutSyncTimer = 0;\n    var tierLayoutSyncFrame = 0;\n    function scheduleTierFeatureBrowser() {\n      window.cancelAnimationFrame(tierLayoutSyncFrame);\n      window.clearTimeout(tierLayoutSyncTimer);\n      tierLayoutSyncFrame = window.requestAnimationFrame(function () {\n        syncTierFeatureBrowser();\n      });\n      tierLayoutSyncTimer = window.setTimeout(syncTierFeatureBrowser, 96);\n    }\n\n    function clearTierCalloutFocus() {\n      root.classList.remove(\"pab-mobile-has-active-callout\");\n      root.querySelectorAll(\"#tier-features .feature-columns p.pab-mobile-feature-selected\").forEach(function (row) {\n        row.classList.remove(\"pab-mobile-feature-selected\");\n        row.setAttribute(\"aria-pressed\", \"false\");\n        if (row.hasAttribute(\"aria-expanded\")) row.setAttribute(\"aria-expanded\", \"false\");\n      });\n      root.querySelectorAll(\"#tier-features .feature-callout.feature-callout-highlight, #callouts .callout.callout-highlight\").forEach(function (callout) {\n        callout.classList.remove(\"feature-callout-highlight\", \"callout-highlight\");\n      });\n    }\n\n    var tierLayoutObserver = new MutationObserver(function () {\n      window.clearTimeout(tierLayoutSyncTimer);\n      tierLayoutSyncTimer = window.setTimeout(scheduleTierFeatureBrowser, 0);\n    });\n    tierLayoutObserver.observe(regions[1], { childList: true, subtree: true });\n\n    function moveRushServiceToReview() {\n      var rushInput = root.querySelector(\"#rush-option\");\n      var rushRow = rushInput ? rushInput.closest(\"label\") : null;\n      root.querySelectorAll(\"#special input\").forEach(function (input) {\n        var text = cleanText((input.dataset.label || \"\") + \" \" + (input.value || \"\") + \" \" + ((input.closest(\"label\") || input.parentElement || {}).textContent || \"\"));\n        if (!/request rush service/i.test(text)) return;\n        rushRow = input.closest(\"label, .option, .feature-option, .choice\") || input.parentElement;\n      });\n      if (!rushRow || !checkoutRegion) return;\n      rushRow.classList.add(\"pab-mobile-rush-service-row\");\n      var card = root.querySelector(\".pab-mobile-rush-service-card\");\n      if (!card) {\n        card = document.createElement(\"section\");\n        card.className = \"pab-mobile-rush-service-card\";\n        card.setAttribute(\"aria-label\", \"Optional rush service\");\n        card.innerHTML = '<div class=\"pab-mobile-rush-service-card__label\">OPTIONAL SERVICE</div>';\n        checkoutRegion.insertBefore(card, nextSteps || null);\n      }\n      if (card.parentNode !== checkoutRegion) checkoutRegion.insertBefore(card, nextSteps || null);\n      if (rushRow.parentNode !== card) card.appendChild(rushRow);\n    }\n\n    function markFirstSpecialFeatureRow() {\n      var input = Array.prototype.find.call(root.querySelectorAll(\"#special input\"), function (candidate) {\n        return !candidate.hidden && candidate.type !== \"hidden\";\n      });\n      if (!input) return;\n      var row = input.closest(\"label, .option, .feature-option, .choice\") || input.parentElement;\n      if (row) row.classList.add(\"pab-mobile-first-special-row\");\n    }\n\n    moveRushServiceToReview();\n    markFirstSpecialFeatureRow();\n\n    function findRushInput() {\n      return root.querySelector(\"#rush-option\") || Array.prototype.find.call(root.querySelectorAll(\"#special input\"), function (input) {\n        var text = cleanText((input.dataset.label || \"\") + \" \" + (input.value || \"\") + \" \" + ((input.closest(\"label\") || input.parentElement || {}).textContent || \"\"));\n        return /request rush service/i.test(text);\n      }) || null;\n    }\n\n    function captureBuilderSelections() {\n      var format = window.PABMockupState && window.PABMockupState.getState\n        ? window.PABMockupState.getState()\n        : {};\n      var paper = root.querySelector(\"#paper input:checked\");\n      var paperLabel = paper ? String(paper.dataset.label || \"\").toLowerCase() : \"\";\n      var accessories = Array.prototype.map.call(root.querySelectorAll(\".accessory[data-variant]\"), function (card) {\n        if (card.getAttribute(\"data-available\") === \"false\" || card.classList.contains(\"is-out-of-stock\")) {\n          return { variantId: card.dataset.variant, qty: 0 };\n        }\n        var maxAcc = (window.PAB && window.PAB.MAX_ACCESSORY_QTY) || 15;\n        var quantity = parseInt((card.querySelector(\"strong\") || {}).textContent, 10) || 0;\n        if (quantity > maxAcc) quantity = maxAcc;\n        return { variantId: card.dataset.variant, qty: quantity };\n      }).filter(function (item) { return item.variantId && item.qty > 0; });\n      var rush = findRushInput();\n      var name = root.querySelector(\"#design-name\");\n\n      var customInput = root.querySelector(\"#pab-custom-denom-input\");\n      var customFace = customInput ? String(customInput.value || \"\").trim() : \"\";\n      if (customFace) customDenominationValue = customFace;\n\n      return Object.assign({}, format, {\n        paper: /flame/.test(paperLabel) ? \"flame\" : (/durable/.test(paperLabel) ? \"durable\" : \"signature\"),\n        finish: root.querySelector(\"#realaged-option:checked\") ? \"realaged\" : \"standard\",\n        uv: !!root.querySelector(\"#uv-option:checked\"),\n        serials: !!root.querySelector(\"#serial-option:checked\"),\n        denomChange: !!root.querySelector(\"#denom-change-option:checked\"),\n        accessoryItems: accessories,\n        billName: name ? name.value : \"\",\n        rush: !!(rush && rush.checked),\n        customDenomination: customFace\n      });\n    }\n\n    function restoreBuilderSelections(state) {\n      try {\n        if (!state || !window.PABMockupState || !window.PABMockupState.restore) return false;\n        var customInput = root.querySelector(\"#pab-custom-denom-input\");\n        var customFace = String(state.customDenomination || customDenominationValue || \"\").replace(/^\\$/, \"\").trim();\n        if (customInput && customFace) {\n          customInput.value = customFace;\n          customDenominationValue = customFace;\n        }\n        window.PABMockupState.restore(state);\n        if (customInput && customFace) {\n          customInput.value = customFace;\n          customDenominationValue = customFace;\n          customInput.dispatchEvent(new Event(\"input\", { bubbles: true }));\n          customInput.dispatchEvent(new Event(\"change\", { bubbles: true }));\n        }\n        var rush = findRushInput();\n        if (window.PABRushService) window.PABRushService.set(!!state.rush);\n        else if (rush) rush.checked = !!state.rush;\n        if (window.PABMockupState.refresh) window.PABMockupState.refresh();\n        scheduleTierFeatureBrowser();\n        return true;\n      } catch (_error) {\n        return false;\n      }\n    }\n\n    builderStateReader = captureBuilderSelections;\n\n    function readInlineStyle(node, name) {\n      return {\n        value: node.style.getPropertyValue(name),\n        priority: node.style.getPropertyPriority(name)\n      };\n    }\n\n    function writeInlineStyle(node, name, saved) {\n      if (!saved || !saved.value) {\n        node.style.removeProperty(name);\n        return;\n      }\n      node.style.setProperty(name, saved.value, saved.priority || \"\");\n    }\n\n    function setStorefrontAtcLocked(locked) {\n      var nodes = document.querySelectorAll(\"#pab-mockup-root .mobile-bar, #pab-mockup-root .summary, #simple-sticky-bar\");\n      Array.prototype.forEach.call(nodes, function (node) {\n        if (locked) {\n          if (!node.dataset.pabGuideAtcPrev) {\n            node.dataset.pabGuideAtcPrev = JSON.stringify({\n              display: readInlineStyle(node, \"display\"),\n              visibility: readInlineStyle(node, \"visibility\"),\n              opacity: readInlineStyle(node, \"opacity\"),\n              pointerEvents: readInlineStyle(node, \"pointer-events\")\n            });\n          }\n          node.style.setProperty(\"display\", \"none\", \"important\");\n          node.style.setProperty(\"visibility\", \"hidden\", \"important\");\n          node.style.setProperty(\"opacity\", \"0\", \"important\");\n          node.style.setProperty(\"pointer-events\", \"none\", \"important\");\n          node.setAttribute(\"aria-hidden\", \"true\");\n        } else {\n          var saved = null;\n          try { saved = JSON.parse(node.dataset.pabGuideAtcPrev || \"null\"); } catch (_error) { saved = null; }\n          delete node.dataset.pabGuideAtcPrev;\n          if (saved) {\n            writeInlineStyle(node, \"display\", saved.display);\n            writeInlineStyle(node, \"visibility\", saved.visibility);\n            writeInlineStyle(node, \"opacity\", saved.opacity);\n            writeInlineStyle(node, \"pointer-events\", saved.pointerEvents);\n          } else {\n            node.style.removeProperty(\"display\");\n            node.style.removeProperty(\"visibility\");\n            node.style.removeProperty(\"opacity\");\n            node.style.removeProperty(\"pointer-events\");\n          }\n          node.removeAttribute(\"aria-hidden\");\n        }\n      });\n    }\n\n    function syncChromeHeight() {\n      if (chrome.hidden) return;\n      var head = chrome.querySelector(\".pab-mobile-guide-head\");\n      var footer = chrome.querySelector(\".pab-mobile-guide-footer\");\n      var height = head ? Math.ceil(head.getBoundingClientRect().height) : 0;\n      var footerHeight = footer ? Math.ceil(footer.getBoundingClientRect().height) : 0;\n      if (height > 0) {\n        document.documentElement.style.setProperty(\"--pab-mobile-guide-head-height\", height + \"px\");\n      }\n      if (footerHeight > 0) {\n        document.documentElement.style.setProperty(\"--pab-mobile-guide-footer-height\", footerHeight + \"px\");\n      }\n      syncTierCardPosition();\n      sizeGuideBillCrop(tierBillSlot);\n      sizeGuideBillCrop(designBillSlot);\n    }\n\n    function syncTierCardPosition() {\n      if (!tierBillSlot) return;\n      var height = Math.ceil(tierBillSlot.getBoundingClientRect().height);\n      if (height > 0) document.documentElement.style.setProperty(\"--pab-mobile-tier-card-top\", height + \"px\");\n    }\n\n    function mountTierPreview() {\n      var viewport = tierBillSlot.querySelector(\".pab-mobile-bill-zoom-layer\") || tierBillSlot.querySelector(\".pab-mobile-bill-crop\");\n      if (!billPreview || !viewport || billPreview.parentNode === viewport) return;\n      viewport.appendChild(billPreview);\n      sizeGuideBillCrop(tierBillSlot);\n    }\n\n    function mountDesignPreview() {\n      var viewport = designBillSlot.querySelector(\".pab-mobile-bill-crop\");\n      if (!billPreview || !viewport || billPreview.parentNode === viewport) return;\n      viewport.appendChild(billPreview);\n      sizeGuideBillCrop(designBillSlot);\n    }\n\n    function restorePreview() {\n      if (!billPreview || !billHome || billPreview.parentNode === billHome) return;\n      if (billHomeNext && billHomeNext.parentNode === billHome) {\n        billHome.insertBefore(billPreview, billHomeNext);\n      } else {\n        billHome.appendChild(billPreview);\n      }\n      clearGuideBillFaceStyles(billPreview);\n    }\n\n    function mountGuideLinks() {\n      if (examplesTrigger) designBillSlot.insertAdjacentElement(\"afterend\", examplesTrigger);\n      if (detailsTrigger) {\n        var paperRegion = regions[3];\n        var detailsAnchor = paperRegion && (\n          paperRegion.querySelector(\":scope > .pab-mobile-materials-intro\") ||\n          paperRegion.querySelector(\".pab-mobile-materials-intro\") ||\n          paperRegion.querySelector(\":scope > .section-note\") ||\n          paperRegion.querySelector(\".section-heading + .section-note\") ||\n          paperRegion.querySelector(\".section-note\")\n        );\n        if (detailsAnchor) detailsAnchor.insertAdjacentElement(\"afterend\", detailsTrigger);\n        else if (paperRegion) paperRegion.insertBefore(detailsTrigger, paperRegion.firstChild);\n      }\n    }\n\n    function restoreGuideLink(node, home, next) {\n      if (!node || !home || node.parentNode === home) return;\n      if (next && next.parentNode === home) home.insertBefore(node, next);\n      else home.appendChild(node);\n    }\n\n    function restoreGuideLinks() {\n      restoreGuideLink(examplesTrigger, examplesHome, examplesHomeNext);\n      restoreGuideLink(detailsTrigger, detailsHome, detailsHomeNext);\n    }\n\n    function mountReview() {\n      if (cartRegion && cartRegion.parentNode !== checkoutRegion) {\n        checkoutRegion.insertBefore(cartRegion, nextSteps || null);\n      }\n    }\n\n    function syncStepPreviews() {\n      var source = root.querySelector(\"#bill-image\");\n      if (!source || !source.src) {\n        syncTierCardPosition();\n        return;\n      }\n      stepPreviewImages.forEach(function (image) {\n        if (image.src !== source.src) image.src = source.src;\n      });\n      syncTierCardPosition();\n    }\n\n    function preloadBillArtwork() {\n      var assets = window.PAB_MOCKUP_ASSETS || {};\n      Object.keys(assets).forEach(function (series) {\n        var denominations = assets[series] || {};\n        Object.keys(denominations).forEach(function (denomination) {\n          if (typeof denominations[denomination] !== \"string\") return;\n          var image = new Image();\n          image.src = denominations[denomination];\n        });\n      });\n    }\n\n    function instantBillPreview(button) {\n      if (!button) return;\n      var isSeries = !!button.closest(\"#series\");\n      var isDenomination = !!button.closest(\"#denoms\");\n      if (!isSeries && !isDenomination) return;\n\n      var seriesButton = isSeries ? button : root.querySelector(\"#series button.selected:not([hidden])\");\n      var denominationButton = isDenomination ? button : root.querySelector('#denoms button.selected:not([hidden]):not([data-denom=\"$custom\"])');\n      if (!seriesButton || !denominationButton) return;\n\n      var seriesValue = cleanText(seriesButton.dataset.series || seriesButton.dataset.label || seriesButton.textContent);\n      var denominationValue = cleanText(denominationButton.dataset.denom || denominationButton.dataset.label || denominationButton.textContent);\n      var digits = denominationValue.replace(/[^0-9]/g, \"\");\n      var assets = window.PAB_MOCKUP_ASSETS || {};\n      var normalizedSeries = seriesValue.toLowerCase().replace(/\\s+series$/i, \"\").trim();\n      var seriesKey = Object.keys(assets).find(function (key) {\n        var normalizedKey = key.toLowerCase().replace(/\\s+series$/i, \"\").trim();\n        return normalizedKey === normalizedSeries || key.toLowerCase() === seriesValue.toLowerCase() || seriesValue.toLowerCase().indexOf(key.toLowerCase()) !== -1;\n      });\n      if (!seriesKey) return;\n\n      var denominations = assets[seriesKey] || {};\n      var denominationKey = Object.keys(denominations).find(function (key) {\n        return key === denominationValue || key.replace(/[^0-9]/g, \"\") === digits;\n      });\n      var url = denominationKey && denominations[denominationKey];\n      if (!url || typeof url !== \"string\") return;\n\n      var source = root.querySelector(\"#bill-image\");\n      if (source && source.src !== url) source.src = url;\n      if (source) {\n        source.classList.toggle(\"is-ready\", !!(source.complete && source.naturalWidth));\n        if (source.complete && source.naturalWidth) {\n          document.documentElement.classList.remove(\"pab-preview-waiting\");\n        }\n      }\n      stepPreviewImages.forEach(function (image) {\n        if (image.src !== url) image.src = url;\n      });\n    }\n\n\n    function selectedTierCents() {\n      var tier = root.querySelector(\".tier.selected\");\n      return tier ? moneyCents(tier.textContent) : 0;\n    }\n\n    function selectedQuantity() {\n      var quantity = root.querySelector(\"#qty, #stackCount\");\n      return Math.max(0, parseInt(String(quantity && quantity.value || \"0\").replace(/[^0-9]/g, \"\"), 10) || 0);\n    }\n\n    function selectedStackRateCents(quantity) {\n      var rows = root.querySelectorAll(\"[data-pab-stack-tier]\");\n      for (var i = 0; i < rows.length; i += 1) {\n        var range = String(rows[i].dataset.pabStackTier || \"\").split(\"-\");\n        var minimum = parseInt(range[0], 10) || 0;\n        var maximum = parseInt(range[1], 10) || minimum;\n        if (quantity >= minimum && quantity <= maximum) return moneyCents(rows[i].textContent);\n      }\n      return 0;\n    }\n\n    function syncQuantityPricing() {\n      var quantity = selectedQuantity();\n      var rows = Array.prototype.slice.call(root.querySelectorAll(\"#volume-panel > div\"));\n      var activeRow = null;\n      rows.forEach(function (row) {\n        var range = String(row.dataset.pabStackTier || \"\").split(\"-\");\n        var minimum = parseInt(range[0], 10) || 0;\n        var maximum = parseInt(range[1], 10) || minimum;\n        var active = !!row.dataset.pabStackTier && quantity >= minimum && quantity <= maximum;\n        row.classList.toggle(\"pab-mobile-active-price-tier\", active);\n        if (active) activeRow = row;\n        if (active) row.setAttribute(\"aria-current\", \"true\");\n        else row.removeAttribute(\"aria-current\");\n      });\n      if (quantity >= 500 && rows.length) {\n        activeRow = rows[rows.length - 1];\n        activeRow.classList.add(\"pab-mobile-active-price-tier\");\n        activeRow.setAttribute(\"aria-current\", \"true\");\n      }\n      var summary = root.querySelector(\"#discount-copy\");\n      if (!summary) return;\n      summary.setAttribute(\"data-pab-volume-hint\", \"savings\");\n      if (quantity >= 500) {\n        summary.textContent = \"Contact us for volume pricing\";\n        summary.classList.add(\"pab-volume-copy-ready\");\n        return;\n      }\n      var baseRate = rows.length ? moneyCents(rows[0].textContent) : 2599;\n      var currentRate = activeRow ? moneyCents(activeRow.textContent) : selectedStackRateCents(quantity);\n      if (!baseRate) baseRate = 2599;\n      if (!currentRate) {\n        currentRate = quantity >= 100 ? 1399 : quantity >= 50 ? 1699 : quantity >= 20 ? 1999 : quantity >= 10 ? 2199 : 2599;\n      }\n      var savings = Math.max(0, (baseRate - currentRate) * quantity);\n      summary.textContent = savings > 0\n        ? formatMoney(currentRate) + \" per stack \u00B7 Save \" + formatMoney(savings)\n        : \"Add \" + (10 - quantity) + \" more \" + ((10 - quantity) === 1 ? \"stack\" : \"stacks\") + \" to unlock 12% off\";\n      summary.classList.add(\"pab-volume-copy-ready\");\n    }\n\n    function customDenominationCents() {\n      var denomination = root.querySelector('#denoms button[data-denom=\"$custom\"].selected:not([hidden])');\n      if (!denomination) return 0;\n      return /ultimate/i.test(selectedText(root, \".tier.selected\", \"\")) ? 0 : 2500;\n    }\n\n    function selectedOptionCents(quantity) {\n      var cents = 0;\n      root.querySelectorAll('#paper input:checked, input[name=\"paper\"]:checked, #finish input:checked, #special input:checked:not([hidden])').forEach(function (input) {\n        cents += moneyCents(input.dataset.setup) + (moneyCents(input.dataset.stack) * quantity);\n      });\n      return cents;\n    }\n\n    function selectedAccessoriesCents() {\n      var cents = 0;\n      root.querySelectorAll(\".accessory\").forEach(function (item) {\n        var maxAcc = (window.PAB && window.PAB.MAX_ACCESSORY_QTY) || 15;\n        var count = parseInt(cleanText((item.querySelector(\".accessory-stepper strong\") || {}).textContent), 10) || 0;\n        if (count > maxAcc) count = maxAcc;\n        cents += moneyCents(item.textContent) * count;\n      });\n      return cents;\n    }\n\n    function guideFacingSpec() {\n      var tierEl = root.querySelector(\".tier.selected\");\n      var tier = String((tierEl && tierEl.dataset.tier) || \"\").toLowerCase() || \"premium\";\n      var paperSel = root.querySelector(\"#paper input:checked\");\n      var paperLabel = paperSel && paperSel.dataset.label;\n      var paper = paperLabel === \"Flame-Retardant\" ? \"flame\" : paperLabel === \"Premium Durable\" ? \"durable\" : \"signature\";\n      return {\n        tier: tier,\n        stacks: selectedQuantity(),\n        paper: paper,\n        finish: root.querySelector(\"#realaged-option\") && root.querySelector(\"#realaged-option\").checked ? \"realaged\" : \"standard\",\n        uv: !!(root.querySelector(\"#uv-option\") && root.querySelector(\"#uv-option\").checked),\n        serials: !!(root.querySelector(\"#serial-option\") && root.querySelector(\"#serial-option\").checked),\n        denomChange: tier === \"ultimate\" || !!(root.querySelector(\"#denom-change-option\") && root.querySelector(\"#denom-change-option\").checked)\n      };\n    }\n\n    function guideAccessoryCents() {\n      if (window.PAB && typeof window.PAB.computeAccessoryCents === \"function\" && window.PAB.ACCESSORY_DEFS) {\n        var maxAcc = window.PAB.MAX_ACCESSORY_QTY || 15;\n        var items = window.PAB.ACCESSORY_DEFS.map(function (def) {\n          var card = root.querySelector('.accessory[data-variant=\"' + def.variantId + '\"]');\n          var qty = 0;\n          if (card && card.getAttribute(\"data-available\") !== \"false\" && !card.classList.contains(\"is-out-of-stock\")) {\n            qty = parseInt(cleanText((card.querySelector(\".accessory-stepper strong\") || {}).textContent), 10) || 0;\n            if (qty > maxAcc) qty = maxAcc;\n            if (qty < 0) qty = 0;\n          }\n          return { variantId: def.variantId, qty: qty };\n        });\n        return window.PAB.computeAccessoryCents(items, window.ACCESSORY_LIVE_PRICES || {});\n      }\n      return selectedAccessoriesCents();\n    }\n\n    function customerFacingFullTotalCents() {\n      if (!(window.PAB && typeof window.PAB.computeCustomerFacingTotalCents === \"function\")) return null;\n      var cents = window.PAB.computeCustomerFacingTotalCents(\n        guideFacingSpec(),\n        window.PAB_VARIANT_PRICES || {},\n        guideAccessoryCents()\n      );\n      return typeof cents === \"number\" && isFinite(cents) ? cents : null;\n    }\n\n    function progressiveTotalCents() {\n      if (index === 0) return customDenominationCents() || null;\n      if (index >= 4) {\n        var facing = customerFacingFullTotalCents();\n        if (facing != null) return facing;\n      }\n      var quantity = selectedQuantity();\n      var cents = selectedTierCents();\n      if (index >= 1) cents += customDenominationCents();\n      if (index >= 2) cents += selectedStackRateCents(quantity) * quantity;\n      if (index >= 3) cents += selectedOptionCents(quantity);\n      if (index >= 4) cents += selectedAccessoriesCents();\n      return cents;\n    }\n\n    function syncFooterTotal() {\n      var wrapper = chrome.querySelector(\".pab-mobile-guide-total\");\n      var label = wrapper && wrapper.querySelector(\"small\");\n      var total = chrome.querySelector(\"[data-pab-mobile-total]\");\n      var cents = progressiveTotalCents();\n      if (wrapper) wrapper.classList.toggle(\"is-hidden\", cents === null);\n      if (label) label.textContent = index === 0 ? \"CUSTOM DENOMINATION\" : \"EST. TOTAL\";\n      if (total && cents !== null) total.textContent = (index === 0 ? \"+\" : \"\") + formatMoney(cents);\n    }\n\n    function refreshLiveValues() {\n      syncStepPreviews();\n      syncCustomDenominationToggle();\n      syncDenominationLayout();\n      syncQuantityPricing();\n      syncFooterTotal();\n      if (index === 5) syncReviewSummary();\n    }\n\n    function scheduleLiveRefresh() {\n      [0, 60, 180, 420].forEach(function (delay) {\n        window.setTimeout(refreshLiveValues, delay);\n      });\n    }\n\n    function syncReviewSummary() {\n      if (!reviewDetails) return;\n      var format = window.PABMockupState && typeof window.PABMockupState.getState === \"function\"\n        ? window.PABMockupState.getState()\n        : {};\n      var series = format.billSeries || selectedText(root, \"#series button.selected:not([hidden])\", \"\");\n      var seriesMatch = String(series || \"\").match(/New Series|2000 Series|1990 Series|Vintage Series/i);\n      if (seriesMatch) series = seriesMatch[0];\n      if (!series) series = \"Not selected\";\n      var customActive = !!(root.querySelector('#denoms button[data-denom=\"$custom\"].selected:not([hidden])') ||\n        (format.denomination && String(format.denomination).toLowerCase() === \"custom\"));\n      var customInput = root.querySelector(\"#pab-custom-denom-input\");\n      var exactValue = customInput ? cleanText(customInput.value) : \"\";\n      if (exactValue && !/^\\$/.test(exactValue)) exactValue = \"$\" + exactValue;\n      var designDenom = withDollarPrefix(format.baseBill || format.denomination || selectedText(root, '#denoms button.selected:not([hidden]):not([data-denom=\"$custom\"])', \"\"), \"\");\n      if (customActive && /^custom$/i.test(designDenom)) designDenom = \"\";\n      var billEl = reviewDetails.querySelector(\"[data-pab-review-bill]\");\n      if (customActive) {\n        billEl.textContent = series + (designDenom ? \" \u00B7 \" + designDenom : \"\");\n      } else {\n        var denomination = withDollarPrefix(format.denomination || selectedText(root, '#denoms button.selected:not([hidden])', \"\"), \"Not selected\");\n        billEl.textContent = series + \" \u00B7 \" + denomination;\n      }\n      var tier = selectedText(root, \".tier.selected\", \"Not selected\");\n      var tierMatch = tier.match(/Standard|Premium|Ultimate/i);\n      if (tierMatch) tier = tierMatch[0].charAt(0).toUpperCase() + tierMatch[0].slice(1).toLowerCase();\n      reviewDetails.querySelector(\"[data-pab-review-tier]\").textContent = tier;\n      var quantity = parseInt(String((root.querySelector(\"#qty\") || {}).value || \"2\").replace(/[^0-9]/g, \"\"), 10) || 2;\n      reviewDetails.querySelector(\"[data-pab-review-quantity]\").textContent = quantity.toLocaleString() + \" stacks \u00B7 \" + (quantity * 100).toLocaleString() + \" bills\";\n      var paper = selectedText(root, 'input[name=\"paper\"]:checked', \"Signature\");\n      if (!/paper/i.test(paper)) paper += \" paper\";\n      var options = [paper];\n      root.querySelectorAll('#finish input:checked, #special input:checked:not([hidden])').forEach(function (input) {\n        var label = cleanText(input.dataset.label);\n        if (label) options.push(label);\n      });\n      setReviewStackedList(reviewDetails.querySelector(\"[data-pab-review-options]\"), options, \"\");\n      var accessories = [];\n      root.querySelectorAll(\".accessory\").forEach(function (item) {\n        if (item.getAttribute(\"data-available\") === \"false\" || item.classList.contains(\"is-out-of-stock\")) return;\n        var maxAcc = (window.PAB && window.PAB.MAX_ACCESSORY_QTY) || 15;\n        var count = parseInt(cleanText((item.querySelector(\".accessory-stepper strong\") || {}).textContent), 10) || 0;\n        if (count > maxAcc) count = maxAcc;\n        if (count > 0) accessories.push(count + \"\u00D7 \" + cleanText(item.dataset.label));\n      });\n      setReviewStackedList(reviewDetails.querySelector(\"[data-pab-review-accessories]\"), accessories, \"None\");\n      if (window.PAB && window.PAB.refreshPriceBreakdown) window.PAB.refreshPriceBreakdown();\n      var reviewTotal = reviewDetails.querySelector('[data-pab-review-total]');\n      var reviewCents = customerFacingFullTotalCents();\n      if (reviewTotal) reviewTotal.textContent = reviewCents != null ? formatMoney(reviewCents) : currentTotal(root);\n    }\n\n    function clearOverlayInline(el) {\n      if (!el || !el.style) return;\n      [\"display\", \"visibility\", \"opacity\", \"pointer-events\"].forEach(function (prop) {\n        el.style.removeProperty(prop);\n      });\n    }\n\n    function hideOverlay(el) {\n      if (!el) return false;\n      var open = el.classList.contains(\"show\") ||\n        el.classList.contains(\"is-open\") ||\n        el.getAttribute(\"aria-hidden\") === \"false\";\n      if (!open && el.hidden === false && (el.classList.contains(\"pab-mockup-modal\") || el.classList.contains(\"pab-accessory-product-modal\") || el.classList.contains(\"pab-appearance-modal\"))) {\n        open = true;\n      }\n      if (!open) return false;\n      el.classList.remove(\"show\", \"is-open\");\n      el.setAttribute(\"aria-hidden\", \"true\");\n      if (\"hidden\" in el) el.hidden = true;\n      el.style.setProperty(\"display\", \"none\", \"important\");\n      el.style.setProperty(\"visibility\", \"hidden\", \"important\");\n      el.style.setProperty(\"opacity\", \"0\", \"important\");\n      el.style.setProperty(\"pointer-events\", \"none\", \"important\");\n      return true;\n    }\n\n    function guideModalPanels() {\n      return [\n        document.querySelector(\"#examples .modal-content\"),\n        document.querySelector(\"#pab-volume-pricing-modal .pab-mockup-modal__panel\"),\n        document.querySelector(\"#details-modal .modal-content\")\n      ];\n    }\n\n    function ensureModalShell(panel) {\n      if (!panel || document.documentElement.dataset.pabGuideOrientation !== \"landscape\") return;\n      if (panel.querySelector(\":scope > .pab-mobile-modal-head\")) return;\n      var close = panel.querySelector(\":scope > .pab-guide-close, :scope > .pab-mockup-modal__close, :scope > .close\");\n      if (!close) close = panel.querySelector(\".pab-guide-close, .pab-mockup-modal__close\");\n      var head = document.createElement(\"header\");\n      head.className = \"pab-mobile-modal-head\";\n      var body = document.createElement(\"div\");\n      body.className = \"pab-mobile-modal-body\";\n      Array.prototype.slice.call(panel.children).forEach(function (child) {\n        if (child === close) return;\n        body.appendChild(child);\n      });\n      var titleWrap = document.createElement(\"div\");\n      titleWrap.className = \"pab-mobile-modal-head__title\";\n      var title = body.querySelector(\"h2\");\n      if (title) {\n        var eyebrow = title.previousElementSibling;\n        if (eyebrow && eyebrow.classList && eyebrow.classList.contains(\"eyebrow\")) titleWrap.appendChild(eyebrow);\n        titleWrap.appendChild(title);\n      }\n      head.appendChild(titleWrap);\n      if (close) {\n        close.classList.add(\"pab-mobile-modal-head__close\");\n        head.appendChild(close);\n      }\n      panel.classList.add(\"pab-mobile-modal-shell\");\n      panel.insertBefore(head, panel.firstChild);\n      panel.appendChild(body);\n    }\n\n    function restoreModalShell(panel) {\n      if (!panel) return;\n      var head = panel.querySelector(\":scope > .pab-mobile-modal-head\");\n      var body = panel.querySelector(\":scope > .pab-mobile-modal-body\");\n      if (!head && !body) {\n        panel.classList.remove(\"pab-mobile-modal-shell\");\n        return;\n      }\n      var close = head && head.querySelector(\".pab-guide-close, .pab-mockup-modal__close, .close\");\n      var titleWrap = head && head.querySelector(\".pab-mobile-modal-head__title\");\n      var formView = body && body.querySelector('[data-pab-volume-pricing-view=\"form\"]');\n      var title = titleWrap && titleWrap.querySelector(\"h2\");\n      var eyebrow = titleWrap && titleWrap.querySelector(\".eyebrow\");\n      if (close) {\n        close.classList.remove(\"pab-mobile-modal-head__close\");\n        panel.insertBefore(close, panel.firstChild);\n      }\n      if (formView && title) {\n        formView.insertBefore(title, formView.firstChild);\n      } else {\n        var after = close;\n        if (eyebrow) {\n          panel.insertBefore(eyebrow, after ? after.nextSibling : panel.firstChild);\n          after = eyebrow;\n        }\n        if (title) panel.insertBefore(title, after ? after.nextSibling : panel.firstChild);\n      }\n      if (body) {\n        while (body.firstChild) panel.appendChild(body.firstChild);\n      }\n      if (head) head.remove();\n      if (body) body.remove();\n      panel.classList.remove(\"pab-mobile-modal-shell\");\n    }\n\n    function syncGuideModalShells() {\n      var panels = guideModalPanels();\n      if (document.documentElement.dataset.pabGuideOrientation === \"landscape\") {\n        panels.forEach(ensureModalShell);\n        return;\n      }\n      panels.forEach(restoreModalShell);\n    }\n\n    function removeCustomLandscapeNote() {\n      Array.prototype.forEach.call(root.querySelectorAll(\"[data-pab-custom-landscape-note], .pab-custom-denom__landscape-note\"), function (note) {\n        note.remove();\n      });\n    }\n\n    syncGuideModalShells();\n    removeCustomLandscapeNote();\n\n    function bindVolumePricingModal() {\n      var modal = document.getElementById(\"pab-volume-pricing-modal\");\n      if (!modal) return;\n      var form = modal.querySelector(\"#pab-volume-pricing-form\");\n      var formView = modal.querySelector('[data-pab-volume-pricing-view=\"form\"]');\n      var successView = modal.querySelector('[data-pab-volume-pricing-view=\"success\"]');\n      var errorEl = modal.querySelector(\"[data-pab-volume-error]\");\n      var submitBtn = modal.querySelector(\"[data-pab-volume-submit]\");\n      var guidePortrait = function () {\n        return window.pabGuidePhone ? window.pabGuidePhone() :\n          (document.body.classList.contains(\"pab-mobile-guide-active\") && mobile());\n      };\n      var selectedValue = function (selector) {\n        return selectedText(root, selector, \"\");\n      };\n      var fillContext = function () {\n        var qty = selectedQuantity();\n        var stacksPrefill = qty >= 500 ? qty : 500;\n        var series = selectedValue(\"#series button.selected:not([hidden])\") || \"Not selected\";\n        var seriesMatch = series.match(/New Series|2000 Series|1990 Series|Vintage Series/i);\n        if (seriesMatch) series = seriesMatch[0];\n        var denomination = selectedValue('#denoms button.selected:not([hidden])') || \"Not selected\";\n        var customActive = root.querySelector('#denoms button[data-denom=\"$custom\"].selected:not([hidden])');\n        var customInput = root.querySelector(\"#pab-custom-denom-input\");\n        if (customActive && customInput && cleanText(customInput.value)) {\n          denomination = cleanText(customInput.value);\n          if (!/^\\$/.test(denomination)) denomination = \"$\" + denomination;\n          denomination += \" custom\";\n        } else if (denomination !== \"Not selected\" && !/^\\$/.test(denomination) && denomination !== \"Custom\") {\n          denomination = \"$\" + denomination.replace(/^\\$/, \"\");\n        }\n        var tier = selectedValue(\".tier.selected\") || \"Not selected\";\n        var tierMatch = tier.match(/Standard|Premium|Ultimate/i);\n        if (tierMatch) tier = tierMatch[0].charAt(0).toUpperCase() + tierMatch[0].slice(1).toLowerCase();\n        modal.querySelector('[data-pab-volume-field=\"series\"]').value = series;\n        modal.querySelector('[data-pab-volume-field=\"denomination\"]').value = denomination;\n        modal.querySelector('[data-pab-volume-field=\"tier\"]').value = tier;\n        modal.querySelector('[data-pab-volume-field=\"quantity\"]').value = String(stacksPrefill);\n        modal.querySelector('[data-pab-volume-field=\"page-url\"]').value = window.location.href;\n      };\n      var prefillStacksInput = function () {\n        var qty = selectedQuantity();\n        var stacksInput = modal.querySelector('[data-pab-volume-input=\"stacks\"]');\n        if (stacksInput) stacksInput.value = String(qty >= 500 ? qty : 500);\n      };\n      var parseStacksNeeded = function (raw) {\n        var text = String(raw == null ? \"\" : raw).trim();\n        if (!text || !/^[0-9]+$/.test(text)) return null;\n        var stacks = Number(text);\n        if (!isFinite(stacks) || stacks < 500 || stacks % 1 !== 0) return null;\n        return stacks;\n      };\n      var showStacksError = function (show) {\n        if (!errorEl) return;\n        errorEl.textContent = show ? \"Minimum order for volume pricing is 500 stacks.\" : \"\";\n        errorEl.hidden = !show;\n      };\n      var showSuccess = function () {\n        if (formView) formView.hidden = true;\n        if (successView) successView.hidden = false;\n      };\n      var showForm = function () {\n        if (formView) formView.hidden = false;\n        if (successView) successView.hidden = true;\n        showStacksError(false);\n      };\n      var closeModal = function () {\n        modal.classList.remove(\"is-open\");\n        modal.setAttribute(\"aria-hidden\", \"true\");\n        window.setTimeout(function () {\n          if (modal.classList.contains(\"is-open\")) return;\n          modal.hidden = true;\n          showForm();\n          syncGuidePopupChrome();\n        }, 180);\n        syncGuidePopupChrome();\n      };\n      var openModal = function () {\n        syncGuideModalShells();\n        fillContext();\n        prefillStacksInput();\n        showForm();\n        modal.hidden = false;\n        modal.setAttribute(\"aria-hidden\", \"false\");\n        modal.classList.add(\"is-open\");\n        var body = modal.querySelector(\".pab-mobile-modal-body\");\n        if (body) body.scrollTop = 0;\n        syncGuidePopupChrome();\n        if (window.Shopify && Shopify.captcha && typeof Shopify.captcha.protect === \"function\") {\n          try { Shopify.captcha.protect(form); } catch (_error) {}\n        }\n        window.requestAnimationFrame(function () {\n          var first = modal.querySelector('[data-pab-volume-input=\"stacks\"]');\n          if (first) {\n            try { first.focus({ preventScroll: true }); } catch (_error) {}\n          }\n        });\n      };\n      new MutationObserver(syncGuidePopupChrome).observe(modal, {\n        attributes: true,\n        attributeFilter: [\"class\", \"hidden\", \"style\"]\n      });\n      document.addEventListener(\"click\", function (event) {\n        if (!guidePortrait()) return;\n        var trigger = event.target.closest && event.target.closest(\".volume-contact-link\");\n        if (!trigger) return;\n        event.preventDefault();\n        event.stopPropagation();\n        openModal();\n      }, true);\n      [\"pointerdown\", \"pointerup\", \"click\", \"touchstart\", \"touchend\", \"input\", \"change\", \"keydown\", \"keyup\", \"focusin\"].forEach(function (eventName) {\n        modal.addEventListener(eventName, function (event) {\n          event.stopPropagation();\n        });\n      });\n      modal.querySelectorAll(\"[data-pab-volume-pricing-close], [data-pab-volume-pricing-done]\").forEach(function (button) {\n        button.addEventListener(\"click\", function (event) {\n          event.preventDefault();\n          event.stopPropagation();\n          closeModal();\n        });\n      });\n      document.addEventListener(\"keydown\", function (event) {\n        if (event.key !== \"Escape\" || modal.hidden || !modal.classList.contains(\"is-open\")) return;\n        event.preventDefault();\n        closeModal();\n      });\n      if (!form) return;\n      form.noValidate = true;\n      form.setAttribute(\"action\", \"/contact\");\n      form.setAttribute(\"method\", \"post\");\n      form.setAttribute(\"target\", \"pab-volume-contact-target\");\n      form.addEventListener(\"submit\", function (event) {\n        event.preventDefault();\n        event.stopImmediatePropagation();\n      }, true);\n      var iframe = document.getElementById(\"pab-volume-contact-target\");\n      var pendingIframeSubmit = false;\n      var finishPending = function (ok) {\n        pendingIframeSubmit = false;\n        if (ok) {\n          showSuccess();\n        } else if (errorEl) {\n          errorEl.textContent = \"Something went wrong. Please try again.\";\n          errorEl.hidden = false;\n        }\n        if (submitBtn) {\n          submitBtn.disabled = false;\n          submitBtn.textContent = \"Request pricing\";\n        }\n      };\n      var bindCaptcha = function () {\n        if (window.Shopify && Shopify.captcha && typeof Shopify.captcha.protect === \"function\") {\n          try { Shopify.captcha.protect(form); } catch (_error) {}\n        }\n      };\n      var waitForBoundCaptcha = function () {\n        bindCaptcha();\n        return new Promise(function (resolve, reject) {\n          var started = Date.now();\n          var tick = function () {\n            if (form.getAttribute(\"data-hcaptcha-bound\") && window.hcaptcha && typeof hcaptcha.execute === \"function\") {\n              resolve();\n              return;\n            }\n            if (Date.now() - started > 12000) {\n              reject(new Error(\"captcha\"));\n              return;\n            }\n            window.setTimeout(tick, 50);\n          };\n          tick();\n        });\n      };\n      var readIframeResult = function () {\n        var href = \"\";\n        var title = \"\";\n        try {\n          href = (iframe.contentWindow && iframe.contentWindow.location && iframe.contentWindow.location.href) || \"\";\n          title = (iframe.contentDocument && iframe.contentDocument.title) || \"\";\n        } catch (_error) {\n          return { ok: true };\n        }\n        if (!href || href === \"about:blank\") return { ok: null };\n        if (/invalid parameters|missing captcha|recaptcha v2/i.test(title)) return { ok: false };\n        if (/contact_posted=true|pab_volume_sent=1/i.test(href)) return { ok: true };\n        if (/\\/challenge/i.test(href)) return { ok: false };\n        if (/\\/contact(?:\\?|$|#)/i.test(href)) return { ok: false };\n        return { ok: true };\n      };\n      var submitThroughShopifyCaptcha = function () {\n        return waitForBoundCaptcha().then(function () {\n          return new Promise(function (resolve, reject) {\n            if (!iframe) {\n              reject(new Error(\"iframe\"));\n              return;\n            }\n            var settled = false;\n            var timer = 0;\n            var finish = function (ok) {\n              if (settled) return;\n              settled = true;\n              pendingIframeSubmit = false;\n              iframe.removeEventListener(\"load\", onLoad);\n              window.clearTimeout(timer);\n              if (ok) resolve(true);\n              else reject(new Error(\"contact\"));\n            };\n            var onLoad = function () {\n              if (!pendingIframeSubmit) return;\n              var result = readIframeResult();\n              if (result.ok === null) return;\n              finish(result.ok);\n            };\n            timer = window.setTimeout(function () {\n              var result = readIframeResult();\n              finish(result.ok === true);\n            }, 12000);\n            iframe.addEventListener(\"load\", onLoad);\n            pendingIframeSubmit = true;\n            form.setAttribute(\"target\", \"pab-volume-contact-target\");\n            try {\n              form.submit();\n            } catch (_error) {\n              HTMLFormElement.prototype.submit.call(form);\n            }\n          });\n        });\n      };\n      var sendVolumePricingRequest = function () {\n        var stacksInput = modal.querySelector('[data-pab-volume-input=\"stacks\"]');\n        var enteredStacks = stacksInput ? stacksInput.value : \"\";\n        var stacks = parseStacksNeeded(enteredStacks);\n        if (stacks === null) {\n          if (stacksInput) stacksInput.value = enteredStacks;\n          showStacksError(true);\n          if (stacksInput) stacksInput.focus();\n          return;\n        }\n        showStacksError(false);\n        var nameInput = modal.querySelector('[data-pab-volume-input=\"name\"]');\n        var emailInput = modal.querySelector('[data-pab-volume-input=\"email\"]');\n        var phoneInput = modal.querySelector('[data-pab-volume-input=\"phone\"]');\n        var notesInput = modal.querySelector('[data-pab-volume-input=\"notes\"]');\n        var notes = cleanText((notesInput || {}).value);\n        var name = cleanText((nameInput || {}).value);\n        var email = cleanText((emailInput || {}).value);\n        var phone = cleanText((phoneInput || {}).value);\n        if (!name || !email || email.indexOf(\"@\") < 1) {\n          if (typeof form.reportValidity === \"function\") form.reportValidity();\n          return;\n        }\n        fillContext();\n        modal.querySelector('[data-pab-volume-field=\"quantity\"]').value = String(stacks);\n        if (nameInput) nameInput.value = name;\n        if (emailInput) emailInput.value = email;\n        if (phoneInput) phoneInput.value = phone;\n        var formType = form.querySelector('[name=\"form_type\"]');\n        var utf8 = form.querySelector('[name=\"utf8\"]');\n        if (formType) formType.value = \"contact\";\n        if (utf8) utf8.value = \"\\u2713\";\n        var series = cleanText((modal.querySelector('[data-pab-volume-field=\"series\"]') || {}).value);\n        var denomination = cleanText((modal.querySelector('[data-pab-volume-field=\"denomination\"]') || {}).value);\n        var tier = cleanText((modal.querySelector('[data-pab-volume-field=\"tier\"]') || {}).value);\n        var pageUrl = cleanText((modal.querySelector('[data-pab-volume-field=\"page-url\"]') || {}).value);\n        var subject = \"Print A Bill - 500+ Stack Pricing Request\";\n        var body = [\n          subject,\n          \"\",\n          \"Series: \" + series,\n          \"Denomination: \" + denomination,\n          \"Design level: \" + tier,\n          \"Requested stack quantity: \" + stacks,\n          \"Page: \" + pageUrl,\n          \"Name: \" + name,\n          \"Email: \" + email,\n          phone ? \"Phone: \" + phone : \"\",\n          notes ? \"Notes: \" + notes : \"\"\n        ].filter(Boolean).join(\"\\n\");\n        var bodyField = modal.querySelector('[data-pab-volume-field=\"body\"]');\n        if (bodyField) bodyField.value = body;\n        var returnTo = form.querySelector('[name=\"return_to\"]');\n        if (!returnTo) {\n          returnTo = document.createElement(\"input\");\n          returnTo.type = \"hidden\";\n          returnTo.name = \"return_to\";\n          form.appendChild(returnTo);\n        }\n        returnTo.value = \"/pages/print-a-bill?pab_volume_sent=1\";\n        if (submitBtn) {\n          submitBtn.disabled = true;\n          submitBtn.textContent = \"Sending\u2026\";\n        }\n        submitThroughShopifyCaptcha().then(function () {\n          finishPending(true);\n        }).catch(function () {\n          finishPending(false);\n        });\n      };\n      if (submitBtn) {\n        submitBtn.addEventListener(\"click\", function (event) {\n          event.preventDefault();\n          event.stopPropagation();\n          sendVolumePricingRequest();\n        });\n      }\n      form.addEventListener(\"keydown\", function (event) {\n        if (event.key !== \"Enter\") return;\n        if (event.target && String(event.target.tagName || \"\") === \"TEXTAREA\") return;\n        event.preventDefault();\n        sendVolumePricingRequest();\n      });\n    }\n\n    function closeGuidePopups() {\n      var closed = false;\n      if (closeResetConfirm()) closed = true;\n      [\"examples\", \"details-modal\"].forEach(function (modalId) {\n        var modal = document.getElementById(modalId);\n        if (!modal) return;\n        var isOpen = modal.classList.contains(\"show\") || modal.getAttribute(\"aria-hidden\") === \"false\";\n        if (!isOpen) return;\n        var closeBtn = modal.querySelector(\".close\");\n        if (closeBtn) closeBtn.click();\n        hideOverlay(modal);\n        closed = true;\n      });\n      var uv = document.getElementById(\"pab-mockup-uv-modal\");\n      if (uv && (uv.classList.contains(\"is-open\") || uv.hidden === false)) {\n        var uvClose = uv.querySelector(\".pab-mockup-modal__close\");\n        if (uvClose) uvClose.click();\n        uv.classList.remove(\"show\", \"is-open\");\n        uv.setAttribute(\"aria-hidden\", \"true\");\n        uv.hidden = true;\n        clearOverlayInline(uv);\n        closed = true;\n      }\n      var volumePricing = document.getElementById(\"pab-volume-pricing-modal\");\n      if (volumePricing && (volumePricing.classList.contains(\"is-open\") || volumePricing.hidden === false)) {\n        volumePricing.classList.remove(\"show\", \"is-open\");\n        volumePricing.setAttribute(\"aria-hidden\", \"true\");\n        volumePricing.hidden = true;\n        clearOverlayInline(volumePricing);\n        closed = true;\n      }\n      var accessory = document.getElementById(\"pab-accessory-product-modal\");\n      if (accessory && (accessory.classList.contains(\"is-open\") || accessory.hidden === false)) {\n        var accClose = accessory.querySelector(\"[data-pab-accessory-modal-close]\");\n        if (accClose) accClose.click();\n        accessory.classList.remove(\"show\", \"is-open\");\n        accessory.setAttribute(\"aria-hidden\", \"true\");\n        accessory.hidden = true;\n        clearOverlayInline(accessory);\n        closed = true;\n      }\n      var appearance = document.querySelector(\".pab-appearance-modal.is-open\");\n      if (appearance) {\n        var appClose = appearance.querySelector(\"[data-pab-appearance-dismiss]\");\n        if (appClose) appClose.click();\n        else hideOverlay(appearance);\n        closed = true;\n      }\n      document.documentElement.classList.remove(\"pab-modal-open\", \"pab-appearance-modal-open\");\n      document.body.classList.remove(\"pab-modal-open\", \"pab-mockup-modal-open\", \"pab-accessory-modal-open\");\n      syncGuidePopupChrome();\n      return closed;\n    }\n\n    function guidePopupIsOpen() {\n      var accessory = document.getElementById(\"pab-accessory-product-modal\");\n      var accessoryOpen = !!(document.body.classList.contains(\"pab-accessory-modal-open\") ||\n        (accessory && accessory.hidden === false && accessory.classList.contains(\"is-open\")));\n      var uv = document.getElementById(\"pab-mockup-uv-modal\");\n      var uvOpen = !!(document.body.classList.contains(\"pab-mockup-modal-open\") ||\n        (uv && uv.hidden === false && uv.classList.contains(\"is-open\")));\n      var volume = document.getElementById(\"pab-volume-pricing-modal\");\n      var volumeOpen = !!(volume && volume.hidden === false && volume.classList.contains(\"is-open\"));\n      var sheetOpen = [\"examples\", \"details-modal\"].some(function (modalId) {\n        var modal = document.getElementById(modalId);\n        return !!(modal && modal.classList.contains(\"show\") && modal.getAttribute(\"aria-hidden\") !== \"true\");\n      });\n      var resetConfirm = document.getElementById(\"pab-mobile-reset-confirm\");\n      var resetOpen = !!(resetConfirm && !resetConfirm.hidden);\n      return accessoryOpen || uvOpen || volumeOpen || sheetOpen || resetOpen;\n    }\n\n    function syncGuidePopupChrome() {\n      document.body.classList.toggle(\"pab-mobile-guide-popup-open\", guidePopupIsOpen());\n    }\n\n    function openGuidePopup(modalId) {\n      var modal = document.getElementById(modalId);\n      if (!modal) return;\n      syncGuideModalShells();\n      modal.classList.add(\"show\");\n      modal.setAttribute(\"aria-hidden\", \"false\");\n      if (\"hidden\" in modal) modal.hidden = false;\n      modal.style.setProperty(\"display\", \"grid\", \"important\");\n      modal.style.setProperty(\"visibility\", \"visible\", \"important\");\n      modal.style.setProperty(\"opacity\", \"1\", \"important\");\n      modal.style.setProperty(\"pointer-events\", \"auto\", \"important\");\n      var body = modal.querySelector(\".pab-mobile-modal-body\");\n      if (body) body.scrollTop = 0;\n      syncGuidePopupChrome();\n    }\n\n    [\"examples\", \"details-modal\"].forEach(function (modalId) {\n      var modal = document.getElementById(modalId);\n      if (!modal) return;\n      new MutationObserver(syncGuidePopupChrome).observe(modal, {\n        attributes: true,\n        attributeFilter: [\"class\", \"aria-hidden\", \"style\", \"hidden\"]\n      });\n    });\n\n    var accessoryModal = document.getElementById(\"pab-accessory-product-modal\");\n    if (accessoryModal) {\n      new MutationObserver(syncGuidePopupChrome).observe(accessoryModal, {\n        attributes: true,\n        attributeFilter: [\"class\", \"hidden\", \"style\"]\n      });\n    }\n    var uvModal = document.getElementById(\"pab-mockup-uv-modal\");\n    if (uvModal) {\n      new MutationObserver(syncGuidePopupChrome).observe(uvModal, {\n        attributes: true,\n        attributeFilter: [\"class\", \"hidden\", \"style\"]\n      });\n      [\"pointerdown\", \"pointerup\", \"click\", \"touchstart\", \"touchend\", \"keydown\", \"keyup\"].forEach(function (eventName) {\n        uvModal.addEventListener(eventName, function (event) {\n          if (eventName === \"keydown\" && event.key === \"Escape\") {\n            event.preventDefault();\n            closeGuidePopups();\n          }\n          event.stopPropagation();\n        });\n      });\n    }\n    bindVolumePricingModal();\n    new MutationObserver(syncGuidePopupChrome).observe(document.body, {\n      attributes: true,\n      attributeFilter: [\"class\"]\n    });\n\n    if (examplesTrigger) {\n      examplesTrigger.addEventListener(\"click\", function (event) {\n        if (!document.body.classList.contains(\"pab-mobile-guide-active\")) return;\n        event.preventDefault();\n        event.stopPropagation();\n        openGuidePopup(\"examples\");\n      }, true);\n    }\n\n    document.addEventListener(\"click\", function (event) {\n      if (!document.body.classList.contains(\"pab-mobile-guide-active\")) return;\n      var openDetails = event.target.closest && event.target.closest(\"#open-details\");\n      if (!openDetails) return;\n      event.preventDefault();\n      event.stopPropagation();\n      openGuidePopup(\"details-modal\");\n    }, true);\n\n    function hideNameContinueHint() {\n      var hint = ensureNameContinueHint(root);\n      var input = designNameInput(root);\n      if (hint) hint.hidden = true;\n      if (input) {\n        input.classList.remove(\"pab-mobile-name-attention\");\n        input.removeAttribute(\"aria-invalid\");\n      }\n    }\n\n    function promptDesignNameToContinue() {\n      var hint = ensureNameContinueHint(root);\n      var input = designNameInput(root);\n      var field = input && input.closest(\".name-field\");\n      if (hint) hint.hidden = false;\n      if (input) {\n        input.classList.add(\"pab-mobile-name-attention\");\n        input.setAttribute(\"aria-invalid\", \"true\");\n        try { input.focus({ preventScroll: true }); } catch (_error) { input.focus(); }\n      }\n      window.requestAnimationFrame(function () {\n        var target = (hint && !hint.hidden) ? hint : (field || input);\n        revealGuideTarget(target);\n        if (field && typeof field.scrollIntoView === \"function\") {\n          field.scrollIntoView({\n            block: \"center\",\n            inline: \"nearest\",\n            behavior: window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches ? \"auto\" : \"smooth\"\n          });\n        }\n      });\n    }\n\n    function syncNextButton() {\n      var next = chrome.querySelector(\"[data-pab-mobile-next]\");\n      if (!next) return;\n      var complete = stepComplete(root, index);\n      next.textContent = index === 5 ? (window.PABEditMode && window.PABEditMode.active ? \"Update Cart\" : \"Add to cart\") : \"Continue\";\n      if (index === 5) {\n        next.disabled = false;\n        next.classList.toggle(\"is-dim\", !complete);\n        next.setAttribute(\"aria-disabled\", complete ? \"false\" : \"true\");\n      } else {\n        next.disabled = !complete;\n        next.classList.remove(\"is-dim\");\n        next.removeAttribute(\"aria-disabled\");\n      }\n      if (index !== 5 || complete) hideNameContinueHint();\n    }\n\n    function resetScroller(el) {\n      if (!el) return;\n      try { el.style.overflowAnchor = \"none\"; } catch (_error) {}\n      el.scrollTop = 0;\n      el.scrollLeft = 0;\n      if (typeof el.scrollTo === \"function\") {\n        try { el.scrollTo(0, 0); } catch (_error) {}\n      }\n    }\n\n    function resetGuideScroll() {\n      if (document.documentElement.dataset.pabGuideOrientation === \"desktop\") return;\n      var scroller = guideScrollRoot();\n      resetScroller(scroller);\n      if (scroller !== root) resetScroller(root);\n      var current = regions[index];\n      if (!current) return;\n      if (current !== scroller) resetScroller(current);\n      var pane = current.querySelector(\"[data-pab-guide-select-pane], [data-pab-guide-intro-pane]\");\n      if (pane && pane !== scroller) resetScroller(pane);\n      resetScroller(current.querySelector(\".accessory-row\"));\n    }\n\n    function syncSelectPanes() {\n      if (document.documentElement.dataset.pabGuideOrientation === \"landscape\") {\n        ensureGuideSelectPane(regions[0], designBillSlot);\n        ensureGuideSelectPane(regions[1], tierBillSlot);\n        ensurePaperOptionsPane(regions[3]);\n        ensureCheckoutReviewPanes(regions[5]);\n        return;\n      }\n      unwrapGuideSelectPane(regions[0], designBillSlot);\n      unwrapGuideSelectPane(regions[1], tierBillSlot);\n      unwrapPaperOptionsPane(regions[3]);\n      unwrapCheckoutReviewPanes(regions[5]);\n      if (mobile()) mountGuideLinks();\n      else restoreGuideLinks();\n    }\n\n    var lastGuideIndex = -1;\n    function update() {\n      if (!mobile()) return;\n      var enteredStep = lastGuideIndex !== index;\n      lastGuideIndex = index;\n      if (enteredStep) resetGuideScroll();\n      closeGuidePopups();\n      document.body.dataset.pabMobileGuideStep = STEP_IDS[index];\n      syncSelectPanes();\n      if (index === 0) mountDesignPreview();\n      else if (index === 1) mountTierPreview();\n      else restorePreview();\n      if (index === 5) mountReview();\n      regions.forEach(function (region, regionIndex) {\n        region.classList.toggle(\"pab-mobile-guide-current\", regionIndex === index);\n        region.setAttribute(\"aria-hidden\", regionIndex === index ? \"false\" : \"true\");\n      });\n      if (enteredStep) resetGuideScroll();\n      chrome.querySelector(\"[data-pab-mobile-count]\").textContent = \"Step \" + (index + 1) + \" of 6\";\n      chrome.querySelector(\"[data-pab-mobile-name]\").textContent = STEP_NAMES[index];\n      chrome.querySelector(\"[data-pab-mobile-progress]\").style.width = (((index + 1) / 6) * 100) + \"%\";\n      syncFooterTotal();\n      syncUvDemoHitTarget();\n      var back = chrome.querySelector(\"[data-pab-mobile-back]\");\n      back.classList.toggle(\"is-hidden\", index === 0);\n      back.setAttribute(\"aria-hidden\", index === 0 ? \"true\" : \"false\");\n      back.tabIndex = index === 0 ? -1 : 0;\n      syncNextButton();\n      var eyebrow = regions[index].querySelector(\".eyebrow\");\n      if (eyebrow && !eyebrow.textContent.trim()) eyebrow.textContent = STEP_EYEBROWS[index];\n      syncStepPreviews();\n      if (index === 5) syncReviewSummary();\n      scheduleLiveRefresh();\n      saveState(true, index);\n      setGuideResume(true, index);\n      window.requestAnimationFrame(function () {\n        syncChromeHeight();\n        syncDenominationLayout();\n        if (!enteredStep) return;\n        resetGuideScroll();\n        window.requestAnimationFrame(resetGuideScroll);\n      });\n    }\n\n    function focusHeading() {\n      if (window.matchMedia(\"(pointer: coarse)\").matches) return;\n      var heading = regions[index].querySelector(\"h1, h2, h3, .section-heading\");\n      if (!heading) return;\n      heading.setAttribute(\"tabindex\", \"-1\");\n      heading.focus({ preventScroll: true });\n    }\n\n    function syncIntroColumnLayout() {\n      var copyCol = intro.querySelector(\".pab-mobile-intro__copy-col\");\n      var actions = intro.querySelector(\".pab-mobile-intro__actions\");\n      if (!copyCol || !actions) return;\n      if (document.documentElement.dataset.pabGuideOrientation === \"landscape\") {\n        if (actions.parentNode !== copyCol) copyCol.appendChild(actions);\n        return;\n      }\n      if (actions.parentNode !== intro) intro.appendChild(actions);\n    }\n\n    function showWelcome() {\n      document.documentElement.classList.add(\"pab-welcome-entry\");\n      document.documentElement.classList.remove(\"pab-guide-resume-entry\");\n      document.body.classList.add(\"pab-mobile-guide-only\");\n      syncIntroColumnLayout();\n      syncIntroActions();\n      intro.hidden = false;\n      intro.classList.add(\"is-visible\");\n      lockStorefrontScroll();\n    }\n\n    function openGuide(startIndex) {\n      lastFocus = document.activeElement;\n      index = Math.max(0, Math.min(5, Number(startIndex) || 0));\n      lastGuideIndex = -1;\n      setGuideExited(false);\n      setGuideResume(true, index);\n      try {\n        sessionStorage.setItem(STARTED_KEY, \"true\");\n        localStorage.setItem(STARTED_KEY, \"true\");\n      } catch (_error) {}\n      writeStartedCookie(true);\n      saveState(true, index);\n      markIntroSeen();\n      document.documentElement.classList.remove(\"pab-welcome-entry\", \"pab-guide-resume-entry\");\n      intro.hidden = true;\n      intro.classList.remove(\"is-visible\");\n      chrome.hidden = false;\n      document.body.classList.add(\"pab-mobile-guide-only\");\n      document.body.classList.add(\"pab-mobile-guide-active\");\n      setStorefrontAtcLocked(true);\n      lockStorefrontScroll();\n      syncCookieOverlay();\n      mountGuideLinks();\n      syncChromeHeight();\n      update();\n      window.requestAnimationFrame(function () {\n        syncChromeHeight();\n        focusHeading();\n      });\n    }\n\n    function closeGuide() {\n      if (resetConfirm) {\n        window.cancelAnimationFrame(resetConfirmFrame);\n        window.clearTimeout(resetConfirmTimer);\n        resetConfirm.classList.remove(\"is-open\");\n        resetConfirm.hidden = true;\n        resetConfirmLock = false;\n        delete resetConfirm.dataset.pabPending;\n        document.documentElement.classList.remove(\"pab-mobile-guide-confirm-open\");\n        if (resetHeaderButton) resetHeaderButton.setAttribute(\"aria-expanded\", \"false\");\n        syncGuidePopupChrome();\n      }\n      restorePreview();\n      restoreGuideLinks();\n      setStorefrontAtcLocked(false);\n      document.body.classList.remove(\"pab-mobile-guide-active\");\n      delete document.body.dataset.pabMobileGuideStep;\n      chrome.hidden = true;\n      regions.forEach(function (region) {\n        region.classList.remove(\"pab-mobile-guide-current\");\n        region.removeAttribute(\"aria-hidden\");\n      });\n      if (cartRegion && cartHome && cartRegion.parentNode !== cartHome) {\n        if (cartHomeNext && cartHomeNext.parentNode === cartHome) cartHome.insertBefore(cartRegion, cartHomeNext);\n        else cartHome.appendChild(cartRegion);\n      }\n      setGuideResume(false, index);\n      clearOpenStep();\n      saveState(false, index);\n      setGuideExited(true);\n      showWelcome();\n      window.requestAnimationFrame(function () {\n        var start = intro.querySelector(\".pab-mobile-intro__start\");\n        if (start) start.focus({ preventScroll: true });\n      });\n    }\n\n    function suspendGuideForDesktop() {\n      if (resetConfirm) {\n        window.cancelAnimationFrame(resetConfirmFrame);\n        window.clearTimeout(resetConfirmTimer);\n        resetConfirm.classList.remove(\"is-open\");\n        resetConfirm.hidden = true;\n        resetConfirmLock = false;\n        document.documentElement.classList.remove(\"pab-mobile-guide-confirm-open\");\n        if (resetHeaderButton) resetHeaderButton.setAttribute(\"aria-expanded\", \"false\");\n        syncGuidePopupChrome();\n      }\n      closeGuidePopups();\n      if (document.body.classList.contains(\"pab-mobile-guide-active\")) {\n        persistOpenStep(index);\n        saveState(true, index);\n        setGuideResume(true, index);\n      }\n      restorePreview();\n      restoreGuideLinks();\n      setStorefrontAtcLocked(false);\n      document.body.classList.remove(\"pab-mobile-guide-active\", \"pab-mobile-guide-only\");\n      document.documentElement.classList.remove(\"pab-welcome-entry\", \"pab-guide-resume-entry\", \"pab-storefront-scroll-lock\");\n      delete document.body.dataset.pabMobileGuideStep;\n      chrome.hidden = true;\n      intro.hidden = true;\n      intro.classList.remove(\"is-visible\");\n      unlockStorefrontScroll();\n      regions.forEach(function (region) {\n        region.classList.remove(\"pab-mobile-guide-current\");\n        region.removeAttribute(\"aria-hidden\");\n      });\n      if (cartRegion && cartHome && cartRegion.parentNode !== cartHome) {\n        if (cartHomeNext && cartHomeNext.parentNode === cartHome) cartHome.insertBefore(cartRegion, cartHomeNext);\n        else cartHome.appendChild(cartRegion);\n      }\n      restoreDesktopBuilder();\n    }\n\n    // init() builds this phone-guide markup inside the shared builder, and its styles\n    // only exist under the phone guide, so desktop orientations must detach it.\n    function restoreDesktopBuilder() {\n      [designBillSlot, tierBillSlot, reviewHeading, reviewDetails].forEach(function (node) {\n        if (node) node.hidden = true;\n      });\n      if (tierHeroTitle && tierHeroTitleDesktop) tierHeroTitle.textContent = tierHeroTitleDesktop;\n      if (customDenominationButton && customDenominationButton.classList.contains(\"pab-mobile-custom-denomination-toggle\")) {\n        customDenominationButton.classList.remove(\"pab-mobile-custom-denomination-toggle\");\n        customDenominationButton.innerHTML = customDenominationDesktopHtml;\n      }\n      unwrapPaneChildren(regions[1].querySelector(\".pab-mobile-tier-shell\"));\n      var panel = root.querySelector(\"#tier-features\");\n      if (panel) panel.classList.remove(\"pab-mobile-feature-browser\");\n    }\n\n    function restorePhoneBuilder() {\n      [designBillSlot, tierBillSlot, reviewHeading, reviewDetails].forEach(function (node) {\n        if (node) node.hidden = false;\n      });\n      if (tierHeroTitle) tierHeroTitle.textContent = \"Choose your level.\";\n      if (customDenominationButton && !customDenominationButton.classList.contains(\"pab-mobile-custom-denomination-toggle\")) {\n        customDenominationButton.classList.add(\"pab-mobile-custom-denomination-toggle\");\n        customDenominationButton.innerHTML = customDenominationPhoneHtml;\n        syncCustomDenominationToggle();\n      }\n      scheduleTierFeatureBrowser();\n    }\n\n    function resumeGuideIfNeeded() {\n      restorePhoneBuilder();\n      document.body.classList.add(\"pab-mobile-guide-only\");\n      if (document.body.classList.contains(\"pab-mobile-guide-active\")) {\n        setStorefrontAtcLocked(true);\n        lockStorefrontScroll();\n        syncChromeHeight();\n        update();\n        return;\n      }\n      if (cartEditEntry && !cartEditOpened) {\n        openCartEdit();\n        return;\n      }\n      if (guideWasExited()) {\n        showWelcome();\n        return;\n      }\n      var resumeStep = readOpenStep();\n      var savedProgress = readState();\n      if (resumeStep !== null || (savedProgress && (savedProgress.active || savedProgress.builder)) || shouldResumeGuide()) {\n        openGuide(resumeStepIndex(savedProgress || {}));\n        return;\n      }\n      showWelcome();\n    }\n\n    function hasSavedDesign() {\n      if (readGuideCookie(GUIDE_STARTED_COOKIE) === \"true\") return true;\n      if (readOpenStep() !== null) return true;\n      var progress = readState();\n      var started = false;\n      try { started = sessionStorage.getItem(STARTED_KEY) === \"true\"; } catch (_error) {}\n      try { started = started || localStorage.getItem(STARTED_KEY) === \"true\"; } catch (_error) {}\n      return !!(progress && (progress.builder || progress.active)) || started;\n    }\n\n    function syncIntroActions() {\n      var hasProgress = hasSavedDesign();\n      var startButton = intro.querySelector(\".pab-mobile-intro__start\");\n      var newButton = intro.querySelector(\".pab-mobile-intro__new\");\n      startButton.textContent = hasProgress ? \"Continue designing\" : \"Start designing\";\n      newButton.hidden = !hasProgress;\n    }\n\n    function clearSavedDesignForFreshStart() {\n      try {\n        sessionStorage.setItem(NEW_DESIGN_KEY, \"true\");\n        sessionStorage.removeItem(STATE_KEY);\n        localStorage.removeItem(STATE_KEY);\n        sessionStorage.removeItem(RESUME_KEY);\n        localStorage.removeItem(RESUME_KEY);\n        sessionStorage.removeItem(STARTED_KEY);\n        localStorage.removeItem(STARTED_KEY);\n        sessionStorage.removeItem(OPEN_STEP_KEY);\n        localStorage.removeItem(OPEN_STEP_KEY);\n        sessionStorage.removeItem(\"pab-tier-features-hidden\");\n      } catch (_error) {}\n      setGuideExited(false);\n      writeGuideCookies(false, 0);\n      writeStartedCookie(false);\n    }\n\n    intro.querySelector(\".pab-mobile-intro__start\").addEventListener(\"click\", function () {\n      intro.classList.remove(\"is-visible\");\n      openGuide(resumeStepIndex(readState()));\n    });\n    intro.querySelector(\".pab-mobile-intro__new\").addEventListener(\"click\", function (event) {\n      event.preventDefault();\n      event.stopPropagation();\n      clearSavedDesignForFreshStart();\n      window.location.reload();\n    });\n    launcher.querySelector(\"button\").addEventListener(\"click\", function () {\n      openGuide(0);\n    });\n    chrome.querySelector(\"[data-pab-mobile-exit]\").addEventListener(\"click\", closeGuide);\n    var resetHeaderButton = chrome.querySelector(\"[data-pab-mobile-reset]\");\n    var resetConfirm = document.getElementById(\"pab-mobile-reset-confirm\");\n    var resetConfirmTimer = 0;\n    var resetConfirmFrame = 0;\n    var resetConfirmLock = false;\n    function prefersReducedMotion() {\n      return window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n    }\n    function resetConfirmIsOpen() {\n      return !!(resetConfirm && !resetConfirm.hidden);\n    }\n    function setResetConfirmOpenClass(isOpen) {\n      document.documentElement.classList.toggle(\"pab-mobile-guide-confirm-open\", !!isOpen);\n    }\n    function cookieBannerVisible() {\n      var banner = document.getElementById(\"shopify-pc__banner\");\n      if (!banner || banner.hasAttribute(\"hidden\") || banner.getAttribute(\"aria-hidden\") === \"true\") return false;\n      var cs = window.getComputedStyle(banner);\n      if (cs.display === \"none\" || cs.visibility === \"hidden\" || Number(cs.opacity) === 0) return false;\n      var box = banner.getBoundingClientRect();\n      return box.width > 1 && box.height > 1;\n    }\n\n    function syncCookieOverlay() {\n      var blocked = cookieBannerVisible();\n      document.documentElement.classList.toggle(\"pab-guide-cookie-visible\", blocked);\n      if (!resetConfirm) return;\n      resetConfirm.classList.toggle(\"is-cookie-blocked\", blocked);\n      if (blocked) {\n        var keep = resetConfirm.querySelector(\".pab-mobile-guide-confirm__keep\");\n        if (keep && document.activeElement === keep) keep.blur();\n        if (resetConfirmIsOpen() && !resetConfirmLock) {\n          resetConfirm.dataset.pabPending = \"1\";\n          closeResetConfirm();\n        }\n      }\n    }\n\n    function clearPendingResetConfirm() {\n      if (resetConfirm) delete resetConfirm.dataset.pabPending;\n    }\n\n    function flushPendingResetConfirm() {\n      if (!resetConfirm || resetConfirm.dataset.pabPending !== \"1\") return;\n      if (cookieBannerVisible() || resetConfirmLock || resetConfirmIsOpen()) return;\n      delete resetConfirm.dataset.pabPending;\n      openResetConfirm();\n    }\n\n    function openResetConfirm() {\n      if (!resetConfirm || resetConfirmIsOpen() || resetConfirmLock) return;\n      if (cookieBannerVisible()) {\n        resetConfirm.dataset.pabPending = \"1\";\n        return;\n      }\n      window.cancelAnimationFrame(resetConfirmFrame);\n      window.clearTimeout(resetConfirmTimer);\n      resetConfirm.hidden = false;\n      setResetConfirmOpenClass(true);\n      if (resetHeaderButton) resetHeaderButton.setAttribute(\"aria-expanded\", \"true\");\n      syncGuidePopupChrome();\n      syncCookieOverlay();\n      resetConfirmFrame = window.requestAnimationFrame(function () {\n        if (resetConfirm.hidden || resetConfirmLock) return;\n        resetConfirm.classList.add(\"is-open\");\n        var keep = resetConfirm.querySelector(\".pab-mobile-guide-confirm__keep\");\n        if (keep) {\n          keep.classList.add(\"is-focus-visible\");\n          keep.focus({ preventScroll: true });\n        }\n      });\n    }\n    function closeResetConfirm() {\n      if (!resetConfirmIsOpen() || resetConfirmLock) return false;\n      resetConfirmLock = true;\n      window.cancelAnimationFrame(resetConfirmFrame);\n      resetConfirm.classList.remove(\"is-open\");\n      var keep = resetConfirm.querySelector(\".pab-mobile-guide-confirm__keep\");\n      if (keep) keep.classList.remove(\"is-focus-visible\");\n      if (resetHeaderButton) resetHeaderButton.setAttribute(\"aria-expanded\", \"false\");\n      window.clearTimeout(resetConfirmTimer);\n      resetConfirmTimer = window.setTimeout(function () {\n        resetConfirm.hidden = true;\n        resetConfirmLock = false;\n        setResetConfirmOpenClass(false);\n        syncGuidePopupChrome();\n      }, prefersReducedMotion() ? 0 : 220);\n      window.requestAnimationFrame(function () {\n        if (resetHeaderButton) resetHeaderButton.focus({ preventScroll: true });\n      });\n      syncGuidePopupChrome();\n      return true;\n    }\n    function performFreshStart(button) {\n      if (button) {\n        button.disabled = true;\n        button.textContent = \"Starting over\u2026\";\n      }\n      clearSavedDesignForFreshStart();\n      window.location.reload();\n    }\n    resetHeaderButton.addEventListener(\"click\", function (event) {\n      event.preventDefault();\n      openResetConfirm();\n    });\n    if (resetConfirm) {\n    var keepButton = resetConfirm.querySelector(\".pab-mobile-guide-confirm__keep\");\n    if (keepButton) {\n      keepButton.addEventListener(\"blur\", function () {\n        keepButton.classList.remove(\"is-focus-visible\");\n      });\n    }\n    resetConfirm.querySelector(\"[data-pab-mobile-reset-confirm-go]\").addEventListener(\"click\", function (event) {\n      event.preventDefault();\n      performFreshStart(event.currentTarget);\n    });\n    resetConfirm.querySelectorAll(\"[data-pab-mobile-reset-dismiss]\").forEach(function (dismiss) {\n      dismiss.addEventListener(\"click\", function (event) {\n        event.preventDefault();\n        closeResetConfirm();\n      });\n    });\n    resetConfirm.addEventListener(\"click\", function (event) {\n      if (event.target.closest(\".pab-mobile-guide-confirm__sheet\")) return;\n      event.preventDefault();\n      closeResetConfirm();\n    });\n    resetConfirm.addEventListener(\"keydown\", function (event) {\n      if (event.key !== \"Tab\" || !resetConfirmIsOpen() || cookieBannerVisible()) return;\n      var keep = resetConfirm.querySelector(\".pab-mobile-guide-confirm__keep\");\n      var go = resetConfirm.querySelector(\".pab-mobile-guide-confirm__reset\");\n      if (!keep || !go) return;\n      if (event.shiftKey && document.activeElement === keep) {\n        event.preventDefault();\n        go.focus();\n      } else if (!event.shiftKey && document.activeElement === go) {\n        event.preventDefault();\n        keep.focus();\n      }\n    });\n    new MutationObserver(function () {\n      syncCookieOverlay();\n      flushPendingResetConfirm();\n    }).observe(document.documentElement, { attributes: true, childList: true, subtree: true });\n    syncCookieOverlay();\n    }\n    chrome.querySelector(\"[data-pab-mobile-back]\").addEventListener(\"click\", function (event) {\n      clearPendingResetConfirm();\n      if (closeGuidePopups()) return;\n      if (index === 0) return;\n      index -= 1;\n      update();\n      focusHeading();\n    });\n    chrome.querySelector(\"[data-pab-mobile-next]\").addEventListener(\"click\", function (event) {\n      clearPendingResetConfirm();\n      closeGuidePopups();\n      if (!stepComplete(root, index)) {\n        if (index === 5) promptDesignNameToContinue();\n        return;\n      }\n      if (index < 5) {\n        index += 1;\n        update();\n        focusHeading();\n        return;\n      }\n      var add = root.querySelector(\"#add-cart\") || document.querySelector(\".add-to-cart-btn\") || document.getElementById(\"simple-add\");\n      if (add) add.click();\n    });\n\n    preloadBillArtwork();\n    scheduleTierFeatureBrowser();\n\n    var tierViewportAnchor = null;\n    root.addEventListener(\"click\", function (event) {\n      var tierButton = event.target.closest(\".tier\");\n      if (!tierButton || !document.body.classList.contains(\"pab-mobile-guide-active\")) return;\n      tierViewportAnchor = {\n        button: tierButton,\n        top: tierButton.getBoundingClientRect().top,\n        rootTop: root.scrollTop\n      };\n    }, true);\n\n    root.addEventListener(\"click\", function (event) {\n      if (document.documentElement.dataset.pabGuideOrientation !== \"landscape\") return;\n      var trigger = event.target.closest && event.target.closest(\"[data-open]\");\n      if (!trigger || !regions[3] || !regions[3].contains(trigger)) return;\n      window.setTimeout(function () {\n        var panel = document.getElementById(trigger.getAttribute(\"data-open\"));\n        if (panel && panel.classList.contains(\"open\")) revealGuideTarget(panel);\n      }, 50);\n    });\n\n    root.addEventListener(\"focusin\", function (event) {\n      if (document.documentElement.dataset.pabGuideOrientation !== \"landscape\") return;\n      var target = event.target;\n      if (!target) return;\n      if (target.id === \"design-name\" || (target.closest && target.closest(\"#pab-volume-pricing-modal\"))) {\n        window.requestAnimationFrame(function () { revealGuideTarget(target); });\n      }\n    });\n\n    root.addEventListener(\"click\", function (event) {\n      var denominationButton = event.target.closest(\"#denoms button\");\n      if (!denominationButton) return;\n      var denomination = cleanText(denominationButton.dataset.denom || denominationButton.textContent).toLowerCase();\n      if (!/custom/.test(denomination)) return;\n      var next = chrome.querySelector(\"[data-pab-mobile-next]\");\n      if (next) {\n        next.disabled = true;\n        next.blur();\n      }\n      window.getSelection().removeAllRanges();\n    }, true);\n    function selectTierFeatureForCallout(callout) {\n      if (index !== 1 || !/^[0-9]+[A-Z]?$/.test(callout)) return;\n      scheduleTierFeatureBrowser();\n      var featureCallout = callout === \"4A\" || callout === \"4B\" ? \"4\" : callout;\n      var row = root.querySelector(\"#tier-features .feature-columns p .feature-callout[data-callout='\" + featureCallout + \"']\");\n      row = row && row.closest(\"p\");\n      if (!row) return;\n      row.click();\n      /* A bill tap should select the matching row without fading the other bill markers.\n         The eye control remains the only way to dim those markers. */\n      root.classList.remove(\"pab-mobile-has-active-callout\");\n\n      function revealSelectedFeatureRow() {\n        if (!row.isConnected) return;\n        var rowTop = row.getBoundingClientRect().top - root.getBoundingClientRect().top + root.scrollTop;\n        var reservedTop = tierBillSlot ? tierBillSlot.getBoundingClientRect().height + 16 : 16;\n        root.scrollTo({\n          top: Math.max(0, Math.round(rowTop - reservedTop)),\n          behavior: window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches ? \"auto\" : \"smooth\"\n        });\n      }\n      window.requestAnimationFrame(revealSelectedFeatureRow);\n      window.setTimeout(revealSelectedFeatureRow, 140);\n    }\n\n    document.addEventListener(\"click\", function (event) {\n      var feature = event.target.closest(\".feature-callout[data-callout]\");\n      if (!feature || !root.contains(feature) || !document.body.classList.contains(\"pab-mobile-guide-active\")) return;\n      if (feature.closest(\"#tier-features .feature-columns\")) return;\n      var callout = String(feature.dataset.callout || \"\").toUpperCase();\n      var side = /^(11|12|13|14)(?:[AB])?$/.test(callout) ? \"back\" : \"front\";\n      setBillSide(tierBillSlot, side);\n      setBillSide(designBillSlot, side);\n      syncTierFeatureSide(side);\n    }, true);\n\n    var lastBillCalloutTap = 0;\n    function activateBillCallout(event) {\n      if (!document.body.classList.contains(\"pab-mobile-guide-active\") || index !== 1) return false;\n      var billCallout = event.target.closest(\"#callouts .callout[data-callout]\");\n      if (!billCallout || !root.contains(billCallout)) return false;\n      selectTierFeatureForCallout(String(billCallout.dataset.callout || \"\").toUpperCase());\n      lastBillCalloutTap = Date.now();\n      return true;\n    }\n\n    root.addEventListener(\"pointerup\", function (event) {\n      activateBillCallout(event);\n    }, true);\n    root.addEventListener(\"click\", function (event) {\n      if (Date.now() - lastBillCalloutTap < 700 && event.target.closest(\"#callouts .callout[data-callout]\")) {\n        event.preventDefault();\n        event.stopImmediatePropagation();\n        return;\n      }\n      activateBillCallout(event);\n    }, true);\n    root.addEventListener(\"click\", function (event) {\n      instantBillPreview(event.target.closest(\"#series button, #denoms button\"));\n      if (event.target.closest(\"#denoms button\")) restoreCustomDenomination();\n      if (event.target.closest(\"#series button, #denoms button\")) syncDollarOneNote();\n      if (!event.target.closest(\".tier, .pab-accessory-learn, .accessory-stepper, .accessory-plus, .accessory-minus, #uv-demo, #pab-accessory-product-modal, #pab-mockup-uv-modal, #pab-volume-pricing-modal, #examples, #details-modal\")) window.setTimeout(update, 40);\n      scheduleLiveRefresh();\n    });\n    root.addEventListener(\"click\", function (event) {\n      if (event.target.closest(\".tier\") && mobile()) {\n        var anchor = tierViewportAnchor;\n        clearTierCalloutFocus();\n        scheduleTierFeatureBrowser();\n\n        function restoreTierAnchor() {\n          if (!anchor || !anchor.button || !anchor.button.isConnected) return;\n          var delta = anchor.button.getBoundingClientRect().top - anchor.top;\n          if (Math.abs(delta) <= 0.25) return;\n          var scroller = root;\n          if (document.documentElement.dataset.pabGuideOrientation === \"landscape\") {\n            scroller = (regions[1] && regions[1].querySelector(\"[data-pab-guide-select-pane]\")) || root;\n          }\n          scroller.scrollTop += delta;\n        }\n\n        restoreTierAnchor();\n        window.requestAnimationFrame(function () {\n          restoreTierAnchor();\n          window.requestAnimationFrame(restoreTierAnchor);\n        });\n        [60, 120, 200, 320].forEach(function (delay) {\n          window.setTimeout(restoreTierAnchor, delay);\n        });\n      }\n      if (event.target.closest(\"#pab-features-card-toggle, .feature-card-bottom-toggle\")) scheduleTierFeatureBrowser();\n      if (event.target.closest(\"#pab-features-card-toggle\") && root.querySelector(\"#tier-features.open\")) pinTierBillForFeatures();\n      function applyTierFeatureSelection(featureRow) {\n        if (!featureRow) return;\n        var alreadySelected = featureRow.classList.contains(\"pab-mobile-feature-selected\");\n        clearTierCalloutFocus();\n        if (alreadySelected) return;\n        featureRow.classList.add(\"pab-mobile-feature-selected\");\n        featureRow.setAttribute(\"aria-pressed\", \"true\");\n        root.classList.remove(\"pab-mobile-has-active-callout\");\n        var activeCallout = featureRow.querySelector(\".feature-callout[data-callout]\");\n        var activeValue = activeCallout && String(activeCallout.dataset.callout || \"\").toUpperCase();\n        var linkedValues = activeValue === \"4\" ? [\"4\", \"4A\", \"4B\"] : (activeValue === \"4A\" || activeValue === \"4B\" ? [activeValue, \"4\"] : [activeValue]);\n        if (activeValue !== \"15\") {\n          var side = /^(11|12|13|14)(?:[AB])?$/.test(activeValue) ? \"back\" : \"front\";\n          setBillSide(tierBillSlot, side);\n          setBillSide(designBillSlot, side);\n          syncTierFeatureSide(side);\n        }\n        linkedValues.forEach(function (value) {\n          root.querySelectorAll(\"#tier-features .feature-callout[data-callout='\" + value + \"']\").forEach(function (callout) {\n            callout.classList.add(\"feature-callout-highlight\");\n          });\n          root.querySelectorAll(\"#callouts .callout[data-callout='\" + value + \"']\").forEach(function (callout) {\n            callout.classList.add(\"callout-highlight\");\n          });\n        });\n        if (activeValue === \"15\") featureRow.setAttribute(\"aria-expanded\", \"true\");\n      }\n      var featureRow = event.target.closest(\"#tier-features .feature-columns p\");\n      if (featureRow) applyTierFeatureSelection(featureRow);\n    });\n    document.addEventListener(\"click\", function (event) {\n      if (!root.classList.contains(\"pab-mobile-has-active-callout\")) return;\n      if (event.target.closest(\"#tier-features .feature-columns p, #callouts .callout\")) return;\n      clearTierCalloutFocus();\n    });\n    root.addEventListener(\"keydown\", function (event) {\n      if (event.key !== \"Enter\" && event.key !== \" \") return;\n      var featureRow = event.target.closest(\"#tier-features .feature-columns p[role=button]\");\n      if (!featureRow) return;\n      event.preventDefault();\n      featureRow.click();\n    });\n    /* The quantity control is press-and-hold only; never expose iOS text selection or Copy. */\n    [\"selectstart\", \"contextmenu\", \"dragstart\"].forEach(function (eventName) {\n      root.addEventListener(eventName, function (event) {\n        if (!document.body.classList.contains(\"pab-mobile-guide-active\") || index !== 2) return;\n        if (!event.target.closest(\"#qty, #plus, #minus\")) return;\n        event.preventDefault();\n      }, true);\n    });\n\n    root.addEventListener(\"input\", function (event) {\n      if (event.target && event.target.id === \"pab-custom-denom-input\") customDenominationValue = event.target.value;\n      update();\n      scheduleLiveRefresh();\n    });\n    root.addEventListener(\"change\", function () { window.setTimeout(update, 40); scheduleLiveRefresh(); });\n\n    /* Quantity buttons update on press and repeat while held for fast mobile adjustment. */\n    var fastQuantityTapUntil = 0;\n    var fastQuantityPointerId = null;\n    var fastQuantityDelay = 0;\n    var fastQuantityRepeat = 0;\n    function stopFastQuantityRepeat() {\n      window.clearTimeout(fastQuantityDelay);\n      window.clearInterval(fastQuantityRepeat);\n      fastQuantityDelay = 0;\n      fastQuantityRepeat = 0;\n      fastQuantityPointerId = null;\n    }\n    function adjustFastQuantity(button) {\n      var quantity = selectedQuantity();\n      var nextQuantity = button.id === \"plus\" ? quantity + 1 : Math.max(2, quantity - 1);\n      if (nextQuantity === quantity || !window.PABMockupState || typeof window.PABMockupState.setStacks !== \"function\") return false;\n      if (!window.PABMockupState.setStacks(nextQuantity)) return false;\n      fastQuantityTapUntil = Date.now() + 900;\n      refreshLiveValues();\n      scheduleBuilderPersistence();\n      return true;\n    }\n    root.addEventListener(\"pointerdown\", function (event) {\n      if (!document.body.classList.contains(\"pab-mobile-guide-active\") || index !== 2 || event.isPrimary === false) return;\n      var button = event.target.closest(\"#plus, #minus\");\n      if (!button || !root.contains(button)) return;\n      event.preventDefault();\n      event.stopPropagation();\n      stopFastQuantityRepeat();\n      if (!adjustFastQuantity(button)) return;\n      fastQuantityPointerId = event.pointerId;\n      if (button.setPointerCapture) button.setPointerCapture(event.pointerId);\n      fastQuantityDelay = window.setTimeout(function () {\n        fastQuantityRepeat = window.setInterval(function () {\n          if (!adjustFastQuantity(button)) stopFastQuantityRepeat();\n        }, 85);\n      }, 360);\n    }, true);\n    [\"pointerup\", \"pointercancel\", \"lostpointercapture\"].forEach(function (eventName) {\n      root.addEventListener(eventName, function (event) {\n        if (fastQuantityPointerId === event.pointerId) stopFastQuantityRepeat();\n      }, true);\n    });\n    root.addEventListener(\"click\", function (event) {\n      var button = event.target.closest(\"#plus, #minus\");\n      if (!button || Date.now() > fastQuantityTapUntil) return;\n      event.preventDefault();\n      event.stopImmediatePropagation();\n    }, true);\n\n    var totalSources = [root.querySelector(\"#total\"), document.querySelector(\"#simple-total\"), root.querySelector(\"#mobile-total\")].filter(Boolean);\n    if (totalSources.length) {\n      var totalObserver = new MutationObserver(syncFooterTotal);\n      totalSources.forEach(function (source) {\n        totalObserver.observe(source, { childList: true, characterData: true, subtree: true });\n      });\n    }\n\n    var previewSource = root.querySelector(\"#bill-image\");\n    if (previewSource) {\n      var previewObserver = new MutationObserver(syncStepPreviews);\n      previewObserver.observe(previewSource, { attributes: true, attributeFilter: [\"src\", \"srcset\"] });\n      previewSource.addEventListener(\"load\", syncStepPreviews);\n    }\n\n    syncDollarOneNote();\n    document.addEventListener(\"keydown\", function (event) {\n      if (event.key !== \"Escape\" || !document.body.classList.contains(\"pab-mobile-guide-active\")) return;\n      if (resetConfirmIsOpen()) {\n        event.preventDefault();\n        event.stopPropagation();\n        closeResetConfirm();\n        return;\n      }\n      if (guidePopupIsOpen()) {\n        event.preventDefault();\n        event.stopPropagation();\n        closeGuidePopups();\n        return;\n      }\n      closeGuide();\n    }, true);\n    if (window.visualViewport) {\n      window.visualViewport.addEventListener(\"resize\", function () {\n        if (document.documentElement.dataset.pabGuideOrientation !== \"landscape\") return;\n        var active = document.activeElement;\n        if (!active) return;\n        if (active.id === \"design-name\") {\n          revealGuideTarget(active.closest(\".name-field\") || active);\n          return;\n        }\n        if (active.closest && active.closest(\"#pab-volume-pricing-modal\")) {\n          revealGuideTarget(active);\n        }\n      });\n    }\n    window.addEventListener(\"resize\", function () {\n      if (visualViewportPinched()) return;\n      syncVisualViewportSpace();\n      syncChromeHeight();\n    });\n    window.addEventListener(\"pab-guide-orientation\", function (event) {\n      var next = event.detail && event.detail.next;\n      function syncLandscapeGuideChrome() {\n        syncExamplesTriggerMarkup();\n        syncUvDemoHitTarget();\n        syncGuideModalShells();\n        removeCustomLandscapeNote();\n        sizeGuideBillCrop(tierBillSlot);\n        sizeGuideBillCrop(designBillSlot);\n        syncSelectPanes();\n      }\n      if (next === \"desktop\") {\n        suspendGuideForDesktop();\n        syncLandscapeGuideChrome();\n        window.requestAnimationFrame(syncLandscapeGuideChrome);\n        return;\n      }\n      if (next === \"portrait\" || next === \"landscape\") resumeGuideIfNeeded();\n      syncLandscapeGuideChrome();\n      window.requestAnimationFrame(function () {\n        syncLandscapeGuideChrome();\n        syncVisualViewportSpace();\n        syncIntroColumnLayout();\n        lockStorefrontScroll();\n        syncChromeHeight();\n        var accessoryRow = document.querySelector(\"[data-pab-guide-region='accessories'] .accessory-row\");\n        if (accessoryRow) accessoryRow.scrollTop = 0;\n        if (index === 5) syncReviewSummary();\n      });\n    });\n\n    var startFresh = false;\n    try {\n      startFresh = sessionStorage.getItem(NEW_DESIGN_KEY) === \"true\";\n      sessionStorage.removeItem(NEW_DESIGN_KEY);\n    } catch (_error) {}\n    if (cartEditEntry) startFresh = false;\n    var saved = (startFresh || cartEditEntry) ? {} : readState();\n    try {\n      if (startFresh && window.PABMockupState && window.PABMockupState.setStacks) {\n        window.PABMockupState.setStacks(2);\n      }\n    } catch (_error) {}\n    try {\n      if (saved.builder) restoreBuilderSelections(saved.builder);\n    } catch (_error) {}\n    syncIntroActions();\n\n    var persistTimer = 0;\n    function scheduleBuilderPersistence() {\n      if (!document.body.classList.contains(\"pab-mobile-guide-active\")) return;\n      window.clearTimeout(persistTimer);\n      persistTimer = window.setTimeout(function () { saveState(true, index); }, 80);\n    }\n    root.addEventListener(\"click\", scheduleBuilderPersistence);\n    root.addEventListener(\"change\", scheduleBuilderPersistence);\n    root.addEventListener(\"input\", scheduleBuilderPersistence);\n\n    function openCartEdit() {\n      if (!cartEditEntry || cartEditOpened || !mobile()) return;\n      if (cartEditEntry.status !== \"restored\" && cartEditEntry.status !== \"ready\") return;\n      cartEditOpened = true;\n      openGuide(0);\n      if (window.PABCartEditMobileBoot) window.PABCartEditMobileBoot.reveal();\n    }\n    document.addEventListener(\"pab:cart-edit-restored\", openCartEdit);\n    if (cartEditEntry) {\n      openCartEdit();\n    } else if (startFresh) {\n      setGuideExited(false);\n      clearOpenStep();\n      try { openGuide(0); } catch (_error) { showWelcome(); }\n    } else if (!guideWasExited() && (readOpenStep() !== null || saved.active || saved.builder || shouldResumeGuide())) {\n      try { openGuide(resumeStepIndex(saved)); } catch (_error) { showWelcome(); }\n    } else {\n      showWelcome();\n    }\n\n    window.__pabOpenMobileGuide = function () {\n      openGuide(resumeStepIndex(readState()));\n    };\n    if (window.__pabGuideStartPending) {\n      window.__pabGuideStartPending = false;\n      window.__pabOpenMobileGuide();\n    }\n    if (typeof window.__pabWelcomeBootClear === \"function\") window.__pabWelcomeBootClear();\n\n    window.addEventListener(\"pagehide\", function () {\n      try { if (sessionStorage.getItem(NEW_DESIGN_KEY) === \"true\") return; } catch (_error) {}\n      if (document.body.classList.contains(\"pab-mobile-guide-active\")) {\n        persistOpenStep(index);\n        saveState(true, index);\n      }\n    });\n    document.addEventListener(\"visibilitychange\", function () {\n      try { if (sessionStorage.getItem(NEW_DESIGN_KEY) === \"true\") return; } catch (_error) {}\n      if (document.visibilityState === \"hidden\" && document.body.classList.contains(\"pab-mobile-guide-active\")) {\n        persistOpenStep(index);\n        saveState(true, index);\n      }\n    });\n\n  }\n\n  bindGuideViewportWatch();\n  applyGuideOrientation(readGuideOrientation());\n  window.addEventListener(\"pab-guide-orientation\", function (event) {\n    var next = event.detail && event.detail.next;\n    if (next === \"portrait\" || next === \"landscape\") init();\n  });\n  if (document.readyState === \"loading\") {\n    document.addEventListener(\"DOMContentLoaded\", init, { once: true });\n  } else {\n    init();\n  }\n})();\n\n\n"],
  "mappings": "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",
  "names": ["saved", "resetConfirm", "featureRow"]
}
