{
  "version": 3,
  "sources": ["/cdn/shop/t/18/assets/quote-request.js?unicare_build=20260910-2145"],
  "sourcesContent": ["(function () {\n  'use strict';\n\n  var STORAGE_KEY = 'unicare-quote-v1';\n  var SAVED_QUOTES_STORAGE_KEY = 'unicare-saved-quotes-v2';\n  var LEGACY_ACTIVE_QUOTE_STORAGE_KEY = 'unicare-active-quote-v1';\n  var HANDOFF_STORAGE_KEY = 'unicare-quote-handoff-v1';\n  var drawer = document.querySelector('[data-quote-drawer]');\n\n  if (!drawer) return;\n\n  var overlay = document.querySelector('[data-quote-overlay]');\n  var drawerBody = drawer.querySelector('.quote-drawer__body');\n  var itemsContainer = drawer.querySelector('[data-quote-items]');\n  var emptyState = drawer.querySelector('[data-quote-empty]');\n  var actions = drawer.querySelector('[data-quote-actions]');\n  var formPanel = drawer.querySelector('[data-quote-form-panel]');\n  var quoteContent = drawer.querySelector('[data-quote-content]');\n  var successPanel = drawer.querySelector('[data-quote-success]');\n  var quoteForm = drawer.querySelector('.quote-request-form');\n  var quoteIdCreateButton = drawer.querySelector('[data-quote-id-create]');\n  var quoteIdStatus = drawer.querySelector('[data-quote-id-status]');\n  var handoffStepNodes = drawer.querySelectorAll('[data-quote-handoff-step]');\n  var handoffCopyButton = drawer.querySelector('[data-quote-handoff-copy]');\n  var handoffDoneButton = drawer.querySelector('[data-quote-handoff-done]');\n  var handoffQuoteIdNode = drawer.querySelector('[data-quote-handoff-id]');\n  var handoffSteps = drawer.querySelector('[data-quote-handoff-steps]');\n  var emailConfirmation = drawer.querySelector('[data-quote-email-confirmation]');\n  var deliveryEmailField = drawer.querySelector('[data-quote-delivery-email]');\n  var customerEmailInput = drawer.querySelector('[data-quote-customer-email]');\n  var savedQuotesSection = drawer.querySelector('[data-saved-quotes]');\n  var savedQuotesList = drawer.querySelector('[data-saved-quotes-list]');\n  var clearListButton = drawer.querySelector('[data-quote-clear]');\n  var approvedQuotesJump = drawer.querySelector('[data-approved-quotes-jump]');\n  var announcer = document.querySelector('[data-quote-announcer]');\n  var messengerDemo = document.querySelector('[data-messenger-demo]');\n  var messengerDemoPanel = messengerDemo && messengerDemo.querySelector('[data-messenger-demo-panel]');\n  var messengerDemoToggle = messengerDemo && messengerDemo.querySelector('[data-messenger-demo-toggle]');\n  var messengerDemoStatus = messengerDemo && messengerDemo.querySelector('[data-messenger-demo-status]');\n  var lastFocusedElement = null;\n  var messengerDemoLastFocus = null;\n  var messengerDemoReference = null;\n  var formMode = false;\n  var successMode = false;\n  var savedQuotes = loadSavedQuotes();\n  try {\n    window.localStorage.removeItem('unicare-approved-checkout-pending-v1');\n    window.sessionStorage.removeItem('unicare-approved-checkout-intent');\n    window.sessionStorage.removeItem('unicare-pricing-just-unlocked');\n  } catch (error) {}\n  saveSavedQuotes(); // Rewrite older browser records without checkout tokens or invoice links.\n  var activeHandoff = loadActiveHandoff();\n  var items = loadItems();\n  var quoteApiUrl = String(drawer.getAttribute('data-quote-api-url') || '').replace(/\\/+$/, '');\n  var quoteIdHandoffEnabled = drawer.getAttribute('data-quote-id-handoff-enabled') === 'true';\n  var quoteMessengerUrl = safeMessengerRedirect(drawer.getAttribute('data-quote-messenger-url'));\n  var messengerIntegrationEnabled = drawer.getAttribute('data-quote-messenger-enabled') === 'true' && /^https:\\/\\//i.test(quoteApiUrl);\n  var clientRequestId = null;\n  var quoteStatusCheckInFlight = false;\n  var lastQuoteStatusCheckAt = 0;\n\n  function validQuoteId(value) {\n    return /^UQ-\\d{8}-[A-Z0-9]{5,12}$/i.test(String(value || ''));\n  }\n\n  function validClientRequestId(value) {\n    return /^[A-Za-z0-9._:-]{8,100}$/.test(String(value || ''));\n  }\n\n  function loadActiveHandoff() {\n    try {\n      var stored = JSON.parse(window.localStorage.getItem(HANDOFF_STORAGE_KEY));\n      if (!stored || !validQuoteId(stored.quoteId)) return null;\n\n      return {\n        quoteId: String(stored.quoteId).toUpperCase(),\n        step: parseInt(stored.step, 10) === 3 ? 3 : 2,\n        channel: stored.channel === 'email' ? 'email' : 'messenger',\n        email: stored.channel === 'email' ? String(stored.email || '') : ''\n      };\n    } catch (error) {\n      return null;\n    }\n  }\n\n  function saveActiveHandoff() {\n    try {\n      if (activeHandoff) {\n        window.localStorage.setItem(HANDOFF_STORAGE_KEY, JSON.stringify(activeHandoff));\n      } else {\n        window.localStorage.removeItem(HANDOFF_STORAGE_KEY);\n      }\n    } catch (error) {}\n  }\n\n  function sanitizeStoredItems(stored) {\n    if (!Array.isArray(stored)) return [];\n\n    return stored.filter(function (item) {\n      if (!item || !item.productTitle) return false;\n      if (item.type === 'custom') return /^custom:[A-Za-z0-9-]+$/.test(String(item.itemKey || ''));\n      return /^\\d+$/.test(String(item.variantId));\n    }).map(function (item) {\n      var type = item.type === 'custom' ? 'custom' : 'shopify_variant';\n      var variantId = type === 'custom' ? '' : String(item.variantId || '');\n\n      return {\n        type: type,\n        itemKey: type === 'custom' ? String(item.itemKey || '') : 'variant:' + variantId,\n        productId: type === 'custom' ? '' : String(item.productId || item.variantId || ''),\n        productTitle: String(item.productTitle || ''),\n        variantId: variantId,\n        variantTitle: type === 'custom' ? '' : String(item.variantTitle || ''),\n        sku: String(item.sku || ''),\n        url: type === 'custom' ? '/collections/all' : normalizeProductPath(item.url || item.productUrl),\n        image: type === 'custom' ? '' : safeImageUrl(item.image || item.imageUrl),\n        quantity: clampQuantity(item.quantity)\n      };\n    });\n  }\n\n  function loadItems() {\n    try {\n      return sanitizeStoredItems(JSON.parse(window.localStorage.getItem(STORAGE_KEY)));\n    } catch (error) {\n      return [];\n    }\n  }\n\n  function normalizeSavedQuote(stored) {\n    if (!stored || !validQuoteId(stored.quoteId) || !validClientRequestId(stored.clientRequestId)) return null;\n\n    return {\n      quoteId: String(stored.quoteId).toUpperCase(),\n      clientRequestId: String(stored.clientRequestId),\n      status: String(stored.status || 'pending_staff_review'),\n      revision: Math.max(0, parseInt(stored.revision, 10) || 0),\n      items: sanitizeStoredItems(stored.items),\n      changes: Array.isArray(stored.changes) ? stored.changes : [],\n      staffNote: String(stored.staffNote || ''),\n      approvedAt: String(stored.approvedAt || '')\n    };\n  }\n\n  function loadSavedQuotes() {\n    try {\n      var stored = JSON.parse(window.localStorage.getItem(SAVED_QUOTES_STORAGE_KEY));\n      var quotes = Array.isArray(stored) ? stored.map(normalizeSavedQuote).filter(Boolean) : [];\n      var legacy = normalizeSavedQuote(JSON.parse(window.localStorage.getItem(LEGACY_ACTIVE_QUOTE_STORAGE_KEY)));\n\n      if (legacy && !quotes.some(function (quote) { return quote.quoteId === legacy.quoteId; })) {\n        quotes.unshift(legacy);\n        window.localStorage.setItem(SAVED_QUOTES_STORAGE_KEY, JSON.stringify(quotes));\n        window.localStorage.removeItem(STORAGE_KEY);\n      }\n      window.localStorage.removeItem(LEGACY_ACTIVE_QUOTE_STORAGE_KEY);\n      window.sessionStorage.removeItem('unicare-last-quote');\n      return quotes;\n    } catch (error) {\n      return [];\n    }\n  }\n\n  function saveItems() {\n    clientRequestId = null;\n    try {\n      window.localStorage.setItem(STORAGE_KEY, JSON.stringify(items));\n    } catch (error) {\n      announce('Your quote was updated for this page, but could not be saved in this browser.');\n    }\n  }\n\n  function saveSavedQuotes() {\n    try {\n      window.localStorage.setItem(SAVED_QUOTES_STORAGE_KEY, JSON.stringify(savedQuotes));\n    } catch (error) {\n      announce('The quote is available on this page, but this browser could not save its ID for later.');\n    }\n  }\n\n  function upsertSavedQuote(data, requestId, fallbackItems) {\n    var existing = savedQuotes.find(function (quote) {\n      return quote.quoteId === String(data.quoteId || '').toUpperCase();\n    });\n    var normalized = normalizeSavedQuote({\n      quoteId: data.quoteId,\n      clientRequestId: requestId || (existing && existing.clientRequestId),\n      status: data.status || (existing && existing.status),\n      revision: data.revision == null ? (existing && existing.revision) : data.revision,\n      items: data.items || (existing && existing.items) || fallbackItems || [],\n      changes: data.changes || [],\n      staffNote: data.staffNote || '',\n      approvedAt: data.approvedAt || ''\n    });\n    if (!normalized) return null;\n\n    savedQuotes = savedQuotes.filter(function (quote) { return quote.quoteId !== normalized.quoteId; });\n    savedQuotes.unshift(normalized);\n    saveSavedQuotes();\n    return normalized;\n  }\n\n  function removeSavedQuote(quoteId) {\n    savedQuotes = savedQuotes.filter(function (quote) { return quote.quoteId !== quoteId; });\n    saveSavedQuotes();\n  }\n\n  function clampQuantity(value) {\n    var quantity = parseInt(value, 10);\n    if (isNaN(quantity) || quantity < 1) return 1;\n    return Math.min(quantity, 999);\n  }\n\n  function itemIdentity(item) {\n    if (item && item.type === 'custom') return String(item.itemKey || '');\n    return 'variant:' + String(item && item.variantId || '');\n  }\n\n  function escapeHtml(value) {\n    return String(value || '')\n      .replace(/&/g, '&amp;')\n      .replace(/</g, '&lt;')\n      .replace(/>/g, '&gt;')\n      .replace(/\"/g, '&quot;')\n      .replace(/'/g, '&#039;');\n  }\n\n  function safeProductUrl(value) {\n    return String(value || '').charAt(0) === '/' ? String(value) : '/collections/all';\n  }\n\n  function normalizeProductPath(value) {\n    value = String(value || '');\n    if (value.charAt(0) === '/') return value;\n\n    try {\n      var url = new URL(value);\n      return url.pathname + url.search;\n    } catch (error) {\n      return '/collections/all';\n    }\n  }\n\n  function safeImageUrl(value) {\n    value = String(value || '');\n    if (value.indexOf('//') === 0) return window.location.protocol + value;\n    if (/^https?:\\/\\//i.test(value) || value.charAt(0) === '/') return value;\n    return '';\n  }\n\n  function displayVariantTitle(value) {\n    return value && value !== 'Default Title' ? value : '';\n  }\n\n  function totalQuantity() {\n    return items.reduce(function (total, item) {\n      return total + clampQuantity(item.quantity);\n    }, 0);\n  }\n\n  function renderItems() {\n    var itemMarkup = items.map(function (item) {\n      var image = safeImageUrl(item.image);\n      var variantTitle = displayVariantTitle(item.variantTitle);\n      var details = [];\n\n      if (variantTitle) details.push('<span>' + escapeHtml(variantTitle) + '</span>');\n      if (item.sku) details.push('<span>SKU: ' + escapeHtml(item.sku) + '</span>');\n\n      var identity = itemIdentity(item);\n\n      return '<article class=\"quote-item\" role=\"listitem\" data-quote-item=\"' + escapeHtml(identity) + '\">' +\n        '<a class=\"quote-item__image\" href=\"' + escapeHtml(safeProductUrl(item.url)) + '\">' +\n          (image ? '<img src=\"' + escapeHtml(image) + '\" alt=\"\" loading=\"lazy\" width=\"84\" height=\"84\">' : '<span aria-hidden=\"true\">+</span>') +\n        '</a>' +\n        '<div class=\"quote-item__details\">' +\n          '<a class=\"quote-item__title\" href=\"' + escapeHtml(safeProductUrl(item.url)) + '\">' + escapeHtml(item.productTitle) + '</a>' +\n          (details.length ? '<div class=\"quote-item__meta\">' + details.join('') + '</div>' : '') +\n          '<div class=\"quote-item__controls\">' +\n            '<div class=\"quote-quantity\" aria-label=\"Quantity\">' +\n              '<button type=\"button\" data-quote-decrease=\"' + escapeHtml(identity) + '\" aria-label=\"Decrease quantity\">&minus;</button>' +\n              '<input type=\"number\" min=\"1\" max=\"999\" inputmode=\"numeric\" value=\"' + clampQuantity(item.quantity) + '\" data-quote-item-quantity=\"' + escapeHtml(identity) + '\" aria-label=\"Quantity for ' + escapeHtml(item.productTitle) + '\">' +\n              '<button type=\"button\" data-quote-increase=\"' + escapeHtml(identity) + '\" aria-label=\"Increase quantity\">+</button>' +\n            '</div>' +\n            '<button type=\"button\" class=\"quote-item__remove\" data-quote-remove=\"' + escapeHtml(identity) + '\">Remove</button>' +\n          '</div>' +\n        '</div>' +\n      '</article>';\n    }).join('');\n\n    itemsContainer.innerHTML = itemMarkup;\n\n    document.querySelectorAll('[data-quote-count]').forEach(function (count) {\n      count.textContent = totalQuantity();\n      count.classList.toggle('hidden-count', items.length === 0);\n    });\n\n    renderSavedQuotes();\n    applyPanelState();\n    renderMessengerDemo();\n  }\n\n  function applyPanelState() {\n    if (successMode) {\n      successPanel.hidden = false;\n      quoteContent.hidden = true;\n      return;\n    }\n\n    successPanel.hidden = true;\n    quoteContent.hidden = false;\n    formPanel.hidden = !formMode;\n    itemsContainer.hidden = formMode;\n    emptyState.hidden = formMode || items.length > 0 || Boolean(activeHandoff);\n    actions.hidden = formMode || (items.length === 0 && !activeHandoff);\n  }\n\n  function renderHandoffSteps() {\n    if (!handoffStepNodes.length) return;\n\n    if (activeHandoff && !savedQuotes.some(function (quote) { return quote.quoteId === activeHandoff.quoteId; })) {\n      activeHandoff = null;\n      saveActiveHandoff();\n    }\n\n    var currentStep = activeHandoff ? activeHandoff.step : 1;\n    var emailHandoff = activeHandoff && activeHandoff.channel === 'email';\n    if (handoffSteps) handoffSteps.hidden = Boolean(emailHandoff);\n    if (emailConfirmation) {\n      emailConfirmation.hidden = !emailHandoff;\n      if (emailHandoff) {\n        emailConfirmation.querySelector('[data-quote-email-id]').textContent = activeHandoff.quoteId;\n        emailConfirmation.querySelector('[data-quote-email-address]').textContent = activeHandoff.email;\n      }\n    }\n    handoffStepNodes.forEach(function (stepNode) {\n      var step = parseInt(stepNode.getAttribute('data-quote-handoff-step'), 10);\n      var marker = stepNode.querySelector('[data-quote-handoff-marker]');\n      var action = stepNode.querySelector('[data-quote-handoff-action]');\n      var completed = step < currentStep;\n      var active = step === currentStep;\n\n      stepNode.classList.toggle('is-complete', completed);\n      stepNode.classList.toggle('is-active', active);\n      stepNode.classList.toggle('is-upcoming', step > currentStep);\n      if (active) stepNode.setAttribute('aria-current', 'step');\n      else stepNode.removeAttribute('aria-current');\n      if (marker) marker.textContent = completed ? '\u2713' : String(step);\n      if (action) action.hidden = !active;\n    });\n\n    if (handoffQuoteIdNode) {\n      handoffQuoteIdNode.textContent = activeHandoff ? activeHandoff.quoteId : 'your quote ID';\n    }\n    if (quoteIdCreateButton && currentStep === 1) {\n      quoteIdCreateButton.hidden = false;\n      quoteIdCreateButton.disabled = false;\n      quoteIdCreateButton.textContent = 'Submit quote request';\n    }\n    if (handoffCopyButton) handoffCopyButton.disabled = false;\n    if (handoffDoneButton) handoffDoneButton.disabled = false;\n  }\n\n  function renderSavedQuotes() {\n    if (clearListButton) clearListButton.hidden = items.length === 0;\n    renderHandoffSteps();\n    if (!savedQuotesSection || !savedQuotesList) return;\n\n    var displayedQuotes = savedQuotes.slice().sort(function (first, second) {\n      var firstApproved = first.status === 'approved' ? 1 : 0;\n      var secondApproved = second.status === 'approved' ? 1 : 0;\n      return secondApproved - firstApproved;\n    });\n    var approvedCount = displayedQuotes.filter(function (quote) { return quote.status === 'approved'; }).length;\n\n    savedQuotesSection.hidden = savedQuotes.length === 0 || Boolean(activeHandoff);\n    savedQuotesSection.classList.toggle('has-approved-quote', approvedCount > 0);\n    savedQuotesList.innerHTML = displayedQuotes.map(savedQuoteMarkup).join('');\n    if (approvedQuotesJump) {\n      approvedQuotesJump.hidden = approvedCount === 0;\n      var approvedCountNode = approvedQuotesJump.querySelector('[data-approved-quotes-count]');\n      var approvedLabelNode = approvedQuotesJump.querySelector('[data-approved-quotes-label]');\n      if (approvedCountNode) approvedCountNode.textContent = approvedCount;\n      if (approvedLabelNode) approvedLabelNode.textContent = approvedCount === 1\n        ? 'reviewed quote \u2014 view status'\n        : 'reviewed quotes \u2014 view status';\n    }\n    document.querySelectorAll('[data-quote-floating-label]').forEach(function (label) {\n      label.textContent = approvedCount > 0 ? 'Quote reviewed' : 'Open quote list';\n    });\n  }\n\n  function savedQuoteMarkup(quote) {\n    var approved = quote.status === 'approved';\n    var statusLabel = approved ? 'Reviewed by Unicare' : 'Pending staff review';\n    var itemMarkup = quote.items.map(function (item) {\n      var option = displayVariantTitle(item.variantTitle);\n      return '<li><strong>' + clampQuantity(item.quantity) + ' &times; ' + escapeHtml(item.productTitle) + '</strong>' +\n        (option ? '<small>' + escapeHtml(option) + '</small>' : '') + '</li>';\n    }).join('');\n    var changesMarkup = quote.changes.length\n      ? '<div class=\"saved-quote__changes\"><h4>What Unicare changed</h4><ul>' + quote.changes.map(changeMarkup).join('') + '</ul></div>'\n      : '';\n    var statusMarkup = approved\n      ? '<p class=\"saved-quote__pending\">Unicare will send your priced PDF through Messenger or email. Please reply there to confirm before staff creates your order.</p>'\n      : '<p class=\"saved-quote__pending\">Unicare is reviewing this list. No further action is needed.</p>';\n\n    return '<article tabindex=\"-1\" class=\"saved-quote saved-quote--' + (approved ? 'approved' : 'pending') + '\" data-saved-quote=\"' + escapeHtml(quote.quoteId) + '\">' +\n      '<div class=\"saved-quote__header\"><div><span class=\"saved-quote__status\">' + statusLabel + '</span><strong>' + escapeHtml(quote.quoteId) + '</strong></div>' +\n      '<span class=\"saved-quote__revision\">Revision ' + quote.revision + '</span></div>' +\n      statusMarkup +\n      '<h4>Current reviewed list</h4><ul class=\"saved-quote__items\">' + itemMarkup + '</ul>' +\n      changesMarkup +\n      (quote.staffNote ? '<div class=\"saved-quote__note\"><strong>Note from Unicare</strong><p>' + escapeHtml(quote.staffNote) + '</p></div>' : '') +\n      '<div class=\"saved-quote__actions\"><button type=\"button\" data-quote-id-delete=\"' + escapeHtml(quote.quoteId) + '\">' + (approved ? 'Hide from this browser' : 'Delete quote') + '</button></div>' +\n      '<p class=\"saved-quote__message\" data-saved-quote-message=\"' + escapeHtml(quote.quoteId) + '\" role=\"status\" aria-live=\"polite\"></p>' +\n      '</article>';\n  }\n\n  function changeMarkup(change) {\n    var before = change && change.before ? change.before : {};\n    var after = change && change.after ? change.after : {};\n    var type = String(change && change.type || '');\n\n    if (type === 'removed') {\n      return '<li class=\"saved-quote__change saved-quote__change--removed\"><strong>Removed:</strong> ' + escapeHtml(before.productTitle || 'Product') +\n        ' (quantity ' + clampQuantity(before.quantity) + ')</li>';\n    }\n    if (type === 'added') {\n      return '<li class=\"saved-quote__change saved-quote__change--added\"><strong>Added:</strong> ' + escapeHtml(after.productTitle || 'Product') +\n        ' (quantity ' + clampQuantity(after.quantity) + ')</li>';\n    }\n\n    var descriptions = [];\n    if (before.quantity !== after.quantity) descriptions.push('quantity ' + clampQuantity(before.quantity) + ' \u2192 ' + clampQuantity(after.quantity));\n    if (String(before.variantTitle || '') !== String(after.variantTitle || '')) descriptions.push('option updated');\n    if (String(before.productTitle || '') !== String(after.productTitle || '')) descriptions.push('product name updated');\n    if (String(before.sku || '') !== String(after.sku || '')) descriptions.push('SKU updated');\n    if (Array.isArray(change.fields) && change.fields.indexOf('unitPrice') !== -1) descriptions.push('pricing updated');\n    return '<li class=\"saved-quote__change saved-quote__change--modified\"><strong>Modified:</strong> ' +\n      escapeHtml(after.productTitle || before.productTitle || 'Product') + (descriptions.length ? ' \u2014 ' + escapeHtml(descriptions.join(', ')) : '') + '</li>';\n  }\n\n  function announce(message) {\n    if (!announcer) return;\n    announcer.textContent = '';\n    window.setTimeout(function () {\n      announcer.textContent = message;\n    }, 20);\n  }\n\n  function renderMessengerDemo() {\n    if (!messengerDemo) return;\n\n    var shareButton = messengerDemo.querySelector('[data-messenger-demo-share]');\n    var quoteButton = messengerDemo.querySelector('[data-messenger-demo-quote]');\n\n    if (shareButton) {\n      shareButton.hidden = items.length === 0;\n      shareButton.textContent = 'Copy quote list and open Messenger';\n    }\n\n    if (quoteButton) {\n      quoteButton.hidden = items.length > 0;\n      quoteButton.textContent = 'Start a quote list';\n    }\n  }\n\n  function openMessengerDemo(trigger) {\n    if (!messengerDemoPanel || !messengerDemoToggle) return;\n\n    messengerDemoLastFocus = trigger || document.activeElement;\n    messengerDemoPanel.hidden = false;\n    messengerDemoPanel.removeAttribute('inert');\n    messengerDemoToggle.setAttribute('aria-expanded', 'true');\n    if (messengerDemoStatus) messengerDemoStatus.textContent = '';\n\n    var closeButton = messengerDemoPanel.querySelector('[data-messenger-demo-close]');\n    if (closeButton) closeButton.focus();\n  }\n\n  function closeMessengerDemo(restoreFocus) {\n    if (!messengerDemoPanel || !messengerDemoToggle || messengerDemoPanel.hidden) return;\n\n    messengerDemoPanel.hidden = true;\n    messengerDemoPanel.setAttribute('inert', '');\n    messengerDemoToggle.setAttribute('aria-expanded', 'false');\n\n    if (restoreFocus !== false && messengerDemoLastFocus && typeof messengerDemoLastFocus.focus === 'function') {\n      messengerDemoLastFocus.focus();\n    }\n  }\n\n  function toggleMessengerDemo(trigger) {\n    if (!messengerDemoPanel) return;\n    if (messengerDemoPanel.hidden) {\n      openMessengerDemo(trigger);\n    } else {\n      closeMessengerDemo();\n    }\n  }\n\n  function openDrawer(trigger) {\n    closeMessengerDemo(false);\n    lastFocusedElement = trigger || document.activeElement;\n    drawer.setAttribute('aria-hidden', 'false');\n    drawer.removeAttribute('inert');\n    drawer.classList.add('is-open');\n    overlay.hidden = false;\n    window.requestAnimationFrame(function () {\n      overlay.classList.add('is-open');\n    });\n    document.body.classList.add('quote-drawer-open');\n\n    if (drawerBody) drawerBody.scrollTop = 0;\n\n    var focusTarget = successMode ? successPanel : drawer.querySelector('[data-quote-close]');\n    if (focusTarget) focusTarget.focus();\n    reconcileSavedQuotes(false);\n  }\n\n  // The legacy navigation can consume clicks before this script's delegated\n  // click handler runs. The inline capture handler calls this bridge instead.\n  window.UnicareQuoteCartOpen = openDrawer;\n\n  function jumpToReviewedQuote(event) {\n    event.preventDefault();\n    var reviewedCard = drawer.querySelector('.saved-quote--approved');\n    if (!reviewedCard) {\n      lastQuoteStatusCheckAt = 0;\n      reconcileSavedQuotes(true);\n      return;\n    }\n    if (typeof reviewedCard.scrollIntoView === 'function') reviewedCard.scrollIntoView({ block: 'start' });\n    reviewedCard.focus();\n  }\n\n  function closeDrawer() {\n    drawer.setAttribute('aria-hidden', 'true');\n    drawer.setAttribute('inert', '');\n    drawer.classList.remove('is-open');\n    overlay.classList.remove('is-open');\n    document.body.classList.remove('quote-drawer-open');\n    if (window.location.hash === '#QuoteDrawer' && window.history && window.history.replaceState) {\n      window.history.replaceState(null, '', window.location.pathname + window.location.search);\n    }\n    window.setTimeout(function () {\n      overlay.hidden = true;\n    }, 220);\n\n    if (lastFocusedElement && typeof lastFocusedElement.focus === 'function') {\n      lastFocusedElement.focus();\n    }\n  }\n\n  function itemFromButton(button) {\n    var productForm = button.closest('[data-quote-product-form]');\n    if (!productForm) return null;\n\n    var variantSelect = productForm.querySelector('[data-quote-variant]');\n    var quantityInput = productForm.querySelector('[data-quote-quantity]');\n    var selectedOption = variantSelect && variantSelect.options[variantSelect.selectedIndex];\n\n    if (!selectedOption || !/^\\d+$/.test(selectedOption.value)) return null;\n\n    return {\n      productId: String(productForm.getAttribute('data-product-id') || ''),\n      productTitle: String(productForm.getAttribute('data-product-title') || ''),\n      variantId: String(selectedOption.value),\n      variantTitle: String(selectedOption.getAttribute('data-variant-title') || ''),\n      sku: String(selectedOption.getAttribute('data-sku') || ''),\n      url: safeProductUrl(productForm.getAttribute('data-product-url')),\n      image: safeImageUrl(productForm.getAttribute('data-product-image')),\n      quantity: clampQuantity(quantityInput ? quantityInput.value : 1)\n    };\n  }\n\n  function addItem(button) {\n    var newItem = itemFromButton(button);\n    if (!newItem) {\n      announce('Please choose an available product option.');\n      return;\n    }\n\n    var existingItem = items.find(function (item) {\n      return String(item.variantId) === newItem.variantId;\n    });\n\n    if (existingItem) {\n      existingItem.quantity = clampQuantity(existingItem.quantity + newItem.quantity);\n    } else {\n      items.push(newItem);\n    }\n\n    saveItems();\n    renderItems();\n\n    var productForm = button.closest('[data-quote-product-form]');\n    var status = productForm && productForm.querySelector('[data-quote-add-status]');\n    var message = newItem.productTitle + ' was added to your quote.';\n    if (status) status.textContent = message;\n    announce(message);\n\n    button.classList.add('is-added');\n    window.setTimeout(function () {\n      button.classList.remove('is-added');\n    }, 700);\n  }\n\n  function findItem(variantId) {\n    return items.find(function (item) {\n      return itemIdentity(item) === String(variantId);\n    });\n  }\n\n  function changeQuantity(variantId, amount) {\n    var item = findItem(variantId);\n    if (!item) return;\n    item.quantity = clampQuantity(item.quantity + amount);\n    saveItems();\n    renderItems();\n    announce('Quantity updated.');\n  }\n\n  function changeProductQuantity(button, amount) {\n    var productForm = button.closest('[data-quote-product-form]');\n    var quantityInput = productForm && productForm.querySelector('[data-quote-quantity]');\n    if (!quantityInput) return;\n\n    quantityInput.value = clampQuantity(parseInt(quantityInput.value, 10) + amount);\n  }\n\n  function setQuantity(variantId, value) {\n    var item = findItem(variantId);\n    if (!item) return;\n    item.quantity = clampQuantity(value);\n    saveItems();\n    renderItems();\n    announce('Quantity updated.');\n  }\n\n  function removeItem(variantId) {\n    var item = findItem(variantId);\n    items = items.filter(function (candidate) {\n      return itemIdentity(candidate) !== String(variantId);\n    });\n    if (items.length === 0) formMode = false;\n    saveItems();\n    renderItems();\n    announce((item ? item.productTitle : 'Product') + ' was removed from your quote.');\n  }\n\n  function makeReference() {\n    var date = new Date();\n    var datePart = String(date.getFullYear()).slice(-2) +\n      String(date.getMonth() + 1).padStart(2, '0') +\n      String(date.getDate()).padStart(2, '0');\n    var randomPart = Math.random().toString(36).slice(2, 7).toUpperCase();\n    return 'UQ-' + datePart + '-' + randomPart;\n  }\n\n  function buildSummary(reference, quoteUrl) {\n    var lines = [\n      'UNICARE PRODUCT QUOTATION REQUEST',\n      'Reference: ' + reference,\n      'Submitted from: ' + window.location.href.split('#')[0],\n      '',\n      'SELECTED PRODUCTS'\n    ];\n\n    items.forEach(function (item, index) {\n      lines.push('');\n      lines.push((index + 1) + '. ' + item.productTitle);\n      if (displayVariantTitle(item.variantTitle)) lines.push('Option: ' + item.variantTitle);\n      if (item.sku) lines.push('SKU: ' + item.sku);\n      lines.push('Quantity: ' + clampQuantity(item.quantity));\n      lines.push('Variant ID: ' + item.variantId);\n      lines.push('Product: ' + window.location.origin + safeProductUrl(item.url));\n    });\n\n    lines.push('');\n    if (quoteUrl) lines.push('Secure quote link: ' + quoteUrl);\n    lines.push('No prices were displayed or submitted. Please review this request and prepare current pricing in a Shopify Draft Order.');\n    return lines.join('\\n');\n  }\n\n  function buildMessengerDemoSummary(reference) {\n    var lines = [\n      'Hello Unicare! I would like to request pricing for this product list.',\n      '',\n      'UNICARE QUOTE LIST \u2014 WEBSITE PREVIEW',\n      'Demo reference: ' + reference,\n      'Page: ' + window.location.href.split('#')[0],\n      '',\n      'SELECTED PRODUCTS'\n    ];\n\n    items.forEach(function (item, index) {\n      lines.push('');\n      lines.push((index + 1) + '. ' + item.productTitle);\n      if (displayVariantTitle(item.variantTitle)) lines.push('Option: ' + item.variantTitle);\n      if (item.sku) lines.push('SKU: ' + item.sku);\n      lines.push('Quantity: ' + clampQuantity(item.quantity));\n      lines.push('Product: ' + window.location.origin + safeProductUrl(item.url));\n    });\n\n    lines.push('');\n    lines.push('Please send me the current pricing and availability for these items. Thank you!');\n    return lines.join('\\n');\n  }\n\n  function legacyCopyText(value) {\n    return new Promise(function (resolve, reject) {\n      var textarea = document.createElement('textarea');\n      textarea.value = value;\n      textarea.setAttribute('readonly', '');\n      textarea.style.position = 'fixed';\n      textarea.style.opacity = '0';\n      document.body.appendChild(textarea);\n      textarea.select();\n\n      try {\n        if (!document.execCommand('copy')) throw new Error('Copy was blocked.');\n        resolve();\n      } catch (error) {\n        reject(error);\n      } finally {\n        document.body.removeChild(textarea);\n      }\n    });\n  }\n\n  function copyText(value) {\n    if (navigator.clipboard && typeof navigator.clipboard.writeText === 'function') {\n      return navigator.clipboard.writeText(value).catch(function () {\n        return legacyCopyText(value);\n      });\n    }\n\n    return legacyCopyText(value);\n  }\n\n  function setMessengerHandoffStatus(message) {\n    if (messengerDemoStatus) messengerDemoStatus.textContent = message;\n    document.querySelectorAll('[data-messenger-handoff-status]').forEach(function (status) {\n      status.textContent = message;\n    });\n  }\n\n  function setQuoteIdStatus(message, isError) {\n    if (!quoteIdStatus) return;\n    quoteIdStatus.textContent = message;\n    quoteIdStatus.classList.toggle('is-error', Boolean(isError));\n  }\n\n  function setSavedQuoteMessage(quoteId, message, isError) {\n    var messageNode = drawer.querySelector('[data-saved-quote-message=\"' + quoteId + '\"]');\n    if (!messageNode) return;\n    messageNode.textContent = message;\n    messageNode.classList.toggle('is-error', Boolean(isError));\n  }\n\n  function reconcileSavedQuotes(force) {\n    if (!savedQuotes.length || !/^https:\\/\\//i.test(quoteApiUrl) || quoteStatusCheckInFlight) return;\n    if (!force && Date.now() - lastQuoteStatusCheckAt < 60000) return;\n\n    quoteStatusCheckInFlight = true;\n    lastQuoteStatusCheckAt = Date.now();\n\n    Promise.all(savedQuotes.map(function (quote) {\n      return window.fetch(quoteApiUrl + '/api/quotes/' + encodeURIComponent(quote.quoteId), {\n        method: 'GET',\n        mode: 'cors',\n        credentials: 'omit',\n        headers: {\n          'Accept': 'application/json',\n          'X-Unicare-Quote-Client': quote.clientRequestId\n        }\n      }).then(function (response) {\n        return response.json().catch(function () { return {}; }).then(function (data) {\n          if (response.status === 404) return { quote: quote, remove: true };\n          if (!response.ok) throw new Error(data.error || 'Quote status is temporarily unavailable.');\n          return { quote: quote, data: data, remove: data.active === false || data.status === 'converted_to_order' };\n        });\n      }).catch(function () {\n        return { quote: quote, failed: true };\n      });\n    })).then(function (results) {\n      var removedCount = 0;\n      savedQuotes = results.filter(function (result) {\n        if (result.remove) removedCount += 1;\n        return !result.remove;\n      }).map(function (result) {\n        if (!result.data) return result.quote;\n        return normalizeSavedQuote({\n          quoteId: result.data.quoteId,\n          clientRequestId: result.quote.clientRequestId,\n          status: result.data.status,\n          revision: result.data.revision,\n          items: result.data.items,\n          changes: result.data.changes,\n          staffNote: result.data.staffNote,\n          approvedAt: result.data.approvedAt\n        }) || result.quote;\n      });\n      saveSavedQuotes();\n      renderItems();\n      results.filter(function (result) { return result.failed; }).forEach(function (result) {\n        setSavedQuoteMessage(result.quote.quoteId, 'Could not refresh this quote right now. Its last saved details are still shown.', true);\n      });\n      if (removedCount) announce(removedCount + (removedCount === 1 ? ' completed quote was' : ' completed quotes were') + ' removed from this browser.');\n    }).then(function () {\n      quoteStatusCheckInFlight = false;\n    });\n  }\n\n  function deleteSavedQuote(event, quoteId) {\n    event.preventDefault();\n    var quote = savedQuotes.find(function (candidate) { return candidate.quoteId === quoteId; });\n    if (!quote) return;\n\n    if (quote.status === 'approved') {\n      if (!window.confirm('Hide ' + quoteId + ' from this browser? Unicare will still keep the quotation and can look it up by ID.')) return;\n      removeSavedQuote(quoteId);\n      renderItems();\n      announce('Reviewed quote hidden from this browser.');\n      return;\n    }\n\n    if (!window.confirm('Delete ' + quoteId + '? The quote ID will stop working and disappear from this browser.')) return;\n\n    var deleteButton = event.target.closest('[data-quote-id-delete]');\n    if (deleteButton) {\n      deleteButton.disabled = true;\n      deleteButton.textContent = 'Deleting\u2026';\n    }\n    setSavedQuoteMessage(quoteId, 'Deleting quote\u2026', false);\n\n    window.fetch(quoteApiUrl + '/api/quotes/' + encodeURIComponent(quote.quoteId), {\n      method: 'DELETE',\n      mode: 'cors',\n      credentials: 'omit',\n      headers: {\n        'Accept': 'application/json',\n        'X-Unicare-Quote-Client': quote.clientRequestId\n      }\n    }).then(function (response) {\n      return response.json().catch(function () { return {}; }).then(function (data) {\n        if (response.status === 404) return { deleted: true };\n        if (response.status === 409) return { staffReview: true };\n        if (!response.ok) throw new Error(data.error || 'The quote could not be deleted.');\n        return { deleted: true };\n      });\n    }).then(function (result) {\n      if (activeHandoff && activeHandoff.quoteId === quoteId) {\n        activeHandoff = null;\n        saveActiveHandoff();\n      }\n      removeSavedQuote(quoteId);\n      renderItems();\n      setQuoteIdStatus(result.staffReview ? 'Staff is processing this quote. Its ID remains valid.' : quoteId + ' was deleted.', false);\n      announce(result.staffReview ? 'Quote hidden from this browser.' : 'Saved quote deleted.');\n    }).catch(function (error) {\n      if (deleteButton) {\n        deleteButton.disabled = false;\n        deleteButton.textContent = 'Delete quote';\n      }\n      setSavedQuoteMessage(quoteId, error.message || 'The quote could not be deleted. Please try again.', true);\n    });\n  }\n\n  function shareMessengerDemoQuote(event) {\n    event.preventDefault();\n\n    if (!items.length) {\n      closeMessengerDemo(false);\n      openDrawer(messengerDemoToggle);\n      return;\n    }\n\n    var messengerUrl = safeMessengerRedirect(messengerDemo.getAttribute('data-messenger-url'));\n    if (!messengerUrl) {\n      setMessengerHandoffStatus('The Messenger link is not configured.');\n      return;\n    }\n\n    messengerDemoReference = messengerDemoReference || 'DEMO-' + makeReference();\n    copyText(buildMessengerDemoSummary(messengerDemoReference)).then(function () {\n      setMessengerHandoffStatus('Copied! Opening Messenger\u2026');\n      announce('Quote list copied. Opening Messenger.');\n      window.setTimeout(function () {\n        window.location.assign(messengerUrl);\n      }, 180);\n    }).catch(function () {\n      setMessengerHandoffStatus('Your browser blocked copying. Allow clipboard access, then try again. Messenger was not opened.');\n    });\n  }\n\n  function makeClientRequestId() {\n    if (window.crypto && typeof window.crypto.randomUUID === 'function') {\n      return window.crypto.randomUUID();\n    }\n\n    return 'uq-client-' + Date.now() + '-' + Math.random().toString(36).slice(2, 12);\n  }\n\n  function formValue(name) {\n    var field = quoteForm.querySelector('[name=\"' + name + '\"]');\n    return field ? String(field.value || '').trim() : '';\n  }\n\n  function messengerPayload() {\n    clientRequestId = clientRequestId || makeClientRequestId();\n\n    return {\n      clientRequestId: clientRequestId,\n      storefrontOrigin: window.location.origin,\n      sourceUrl: window.location.href.split('#')[0],\n      customer: {\n        name: formValue('contact[name]'),\n        email: formValue('contact[email]'),\n        phoneOrMessenger: formValue('contact[Phone or Messenger]'),\n        company: formValue('contact[Company or clinic]'),\n        preferredContactMethod: formValue('contact[Preferred contact method]'),\n        notes: formValue('contact[Customer notes]')\n      },\n      consent: Boolean(quoteForm.querySelector('[name=\"contact[Consent]\"]:checked')),\n      items: items.map(function (item) {\n        return {\n          type: item.type === 'custom' ? 'custom' : 'shopify_variant',\n          itemKey: itemIdentity(item),\n          productId: String(item.productId || ''),\n          productTitle: String(item.productTitle || ''),\n          variantId: String(item.variantId || ''),\n          variantTitle: String(item.variantTitle || ''),\n          sku: String(item.sku || ''),\n          productUrl: window.location.origin + safeProductUrl(item.url),\n          imageUrl: safeImageUrl(item.image),\n          quantity: clampQuantity(item.quantity)\n        };\n      })\n    };\n  }\n\n  function quoteIdPayload() {\n    clientRequestId = clientRequestId || makeClientRequestId();\n    var selectedDelivery = drawer.querySelector('[name=\"quote_delivery_channel\"]:checked');\n    var emailSelected = selectedDelivery && selectedDelivery.value === 'email';\n\n    return {\n      clientRequestId: clientRequestId,\n      storefrontOrigin: window.location.origin,\n      sourceUrl: window.location.href.split('#')[0],\n      deliveryChannel: emailSelected ? 'email' : 'messenger',\n      customerEmail: emailSelected && customerEmailInput ? customerEmailInput.value.trim() : '',\n      items: items.map(function (item) {\n        return {\n          type: item.type === 'custom' ? 'custom' : 'shopify_variant',\n          itemKey: itemIdentity(item),\n          productId: String(item.productId || ''),\n          productTitle: String(item.productTitle || ''),\n          variantId: String(item.variantId || ''),\n          variantTitle: String(item.variantTitle || ''),\n          sku: String(item.sku || ''),\n          productUrl: window.location.origin + safeProductUrl(item.url),\n          imageUrl: safeImageUrl(item.image),\n          quantity: clampQuantity(item.quantity)\n        };\n      })\n    };\n  }\n\n  function safeMessengerRedirect(value) {\n    try {\n      var url = new URL(value);\n      if (url.protocol !== 'https:' || url.hostname !== 'm.me') return null;\n      return url.href;\n    } catch (error) {\n      return null;\n    }\n  }\n\n  function setSubmitting(isSubmitting) {\n    var submitButton = quoteForm.querySelector('[data-quote-submit]');\n    if (!submitButton) return;\n\n    if (!submitButton.getAttribute('data-idle-label')) {\n      submitButton.setAttribute('data-idle-label', submitButton.textContent.trim());\n    }\n\n    submitButton.disabled = isSubmitting;\n    submitButton.textContent = isSubmitting ? 'Preparing Messenger\u2026' : submitButton.getAttribute('data-idle-label');\n  }\n\n  function showFormError(message) {\n    var error = quoteForm.querySelector('[data-quote-form-error]');\n    if (!error) return;\n    error.textContent = message;\n    error.hidden = false;\n    error.focus();\n  }\n\n  function createQuoteId(event) {\n    event.preventDefault();\n\n    if (!quoteIdHandoffEnabled || !/^https:\\/\\//i.test(quoteApiUrl)) {\n      setQuoteIdStatus('The preview quote ID service is not connected yet.', true);\n      return;\n    }\n\n    if (!items.length) {\n      setQuoteIdStatus('Add at least one product before creating a quote ID.', true);\n      return;\n    }\n\n    var payload = quoteIdPayload();\n    if (payload.deliveryChannel === 'email' && (!customerEmailInput || !customerEmailInput.checkValidity() || !customerEmailInput.value.trim())) {\n      setQuoteIdStatus('Enter a valid email address so Unicare can send your quotation.', true);\n      if (customerEmailInput) customerEmailInput.focus();\n      return;\n    }\n\n    quoteIdCreateButton.disabled = true;\n    quoteIdCreateButton.textContent = 'Saving quote\u2026';\n    setQuoteIdStatus('', false);\n\n    window.fetch(quoteApiUrl + '/api/quotes', {\n      method: 'POST',\n      mode: 'cors',\n      credentials: 'omit',\n      headers: {\n        'Accept': 'application/json',\n        'Content-Type': 'application/json'\n      },\n      body: JSON.stringify(payload)\n    }).then(function (response) {\n      return response.json().catch(function () { return {}; }).then(function (data) {\n        if (!response.ok) throw new Error(data.error || 'The quote service could not save your quote list.');\n        return data;\n      });\n    }).then(function (data) {\n      var returnedQuoteId = String(data.quoteId || '');\n      if (!validQuoteId(returnedQuoteId)) {\n        throw new Error('The quote service returned an invalid quote ID.');\n      }\n\n      var requestId = clientRequestId;\n      var submittedItems = items.slice();\n      var savedQuote = upsertSavedQuote(data, requestId, submittedItems);\n      if (!savedQuote) throw new Error('The quote service returned incomplete saved quote details.');\n\n      activeHandoff = { quoteId: savedQuote.quoteId, step: 2, channel: payload.deliveryChannel, email: payload.customerEmail };\n      saveActiveHandoff();\n      items = [];\n      clientRequestId = null;\n      try { window.localStorage.removeItem(STORAGE_KEY); } catch (error) {}\n      renderItems();\n      setQuoteIdStatus('', false);\n      announce('Your quote ID is ' + savedQuote.quoteId + '.');\n      if (payload.deliveryChannel === 'email' && emailConfirmation) emailConfirmation.querySelector('[data-quote-handoff-done]').focus();\n      else if (handoffCopyButton) handoffCopyButton.focus();\n    }).catch(function (error) {\n      quoteIdCreateButton.disabled = false;\n      quoteIdCreateButton.textContent = 'Try creating quote ID again';\n      setQuoteIdStatus(error.message || 'The quote could not be saved. Please try again.', true);\n    });\n  }\n\n  function copyQuoteIdAndOpenMessenger(event, quoteId) {\n    event.preventDefault();\n\n    if (!quoteMessengerUrl) {\n      setSavedQuoteMessage(quoteId, 'The Unicare Messenger link is not configured.', true);\n      return;\n    }\n\n    var copyButton = event.target.closest('[data-quote-id-copy], [data-quote-handoff-copy]');\n    if (copyButton) {\n      copyButton.disabled = true;\n      copyButton.textContent = 'Copying\u2026';\n    }\n    copyText(quoteId).then(function () {\n      if (activeHandoff && activeHandoff.quoteId === quoteId) {\n        activeHandoff.step = 3;\n        saveActiveHandoff();\n        renderItems();\n      }\n      setSavedQuoteMessage(quoteId, 'Copied! Opening Messenger\u2026', false);\n      announce('Quote ID copied. Opening Messenger.');\n      window.setTimeout(function () {\n        window.location.assign(quoteMessengerUrl);\n      }, 180);\n    }).catch(function () {\n      if (copyButton) {\n        copyButton.disabled = false;\n        copyButton.textContent = 'Copy ID and open Messenger';\n      }\n      setSavedQuoteMessage(quoteId, 'Copy was blocked. Select the quote ID above and copy it manually.', true);\n    });\n  }\n\n  function finishMessengerHandoff(event) {\n    event.preventDefault();\n    var channel = activeHandoff && activeHandoff.channel;\n    activeHandoff = null;\n    saveActiveHandoff();\n    renderItems();\n    announce(channel === 'email' ? 'Email quotation request saved.' : 'Messenger handoff completed. You can start another quote.');\n  }\n\n  function updateDeliveryChoice() {\n    var selected = drawer.querySelector('[name=\"quote_delivery_channel\"]:checked');\n    var emailSelected = selected && selected.value === 'email';\n    if (deliveryEmailField) deliveryEmailField.hidden = !emailSelected;\n    if (customerEmailInput) customerEmailInput.required = Boolean(emailSelected);\n    setQuoteIdStatus('', false);\n  }\n\n  function submitShopifyEmailBackup(reference, quoteUrl) {\n    var referenceField = quoteForm.querySelector('[data-quote-reference]');\n    var summaryField = quoteForm.querySelector('[data-quote-summary]');\n    referenceField.value = reference;\n    summaryField.value = buildSummary(reference, quoteUrl);\n\n    var action = quoteForm.getAttribute('action').split('#')[0];\n    var request = window.fetch(action, {\n      method: 'POST',\n      body: new FormData(quoteForm),\n      credentials: 'same-origin',\n      headers: { 'Accept': 'text/html' },\n      keepalive: true\n    });\n\n    var timeout = new Promise(function (resolve) {\n      window.setTimeout(resolve, 3500);\n    });\n\n    return Promise.race([request, timeout]).catch(function () {\n      return null;\n    });\n  }\n\n  function createMessengerQuote(event) {\n    event.preventDefault();\n    setSubmitting(true);\n\n    window.fetch(quoteApiUrl + '/api/quotes', {\n      method: 'POST',\n      mode: 'cors',\n      credentials: 'omit',\n      headers: {\n        'Accept': 'application/json',\n        'Content-Type': 'application/json'\n      },\n      body: JSON.stringify(messengerPayload())\n    }).then(function (response) {\n      return response.json().catch(function () { return {}; }).then(function (data) {\n        if (!response.ok) throw new Error(data.error || 'The quote service could not save your request.');\n        return data;\n      });\n    }).then(function (data) {\n      var messengerUrl = safeMessengerRedirect(data.messengerUrl);\n      if (!validQuoteId(data.quoteId) || !data.quoteUrl || !messengerUrl) {\n        throw new Error('The quote service returned an incomplete Messenger handoff.');\n      }\n\n      var backup = data.created === false ? Promise.resolve() : submitShopifyEmailBackup(data.quoteId, data.quoteUrl);\n      return backup.then(function () {\n        upsertSavedQuote(data, clientRequestId, items.slice());\n        items = [];\n        clientRequestId = null;\n        try { window.localStorage.removeItem(STORAGE_KEY); } catch (error) {}\n        renderItems();\n        window.location.assign(messengerUrl);\n      });\n    }).catch(function (error) {\n      setSubmitting(false);\n      showFormError(error.message || 'We could not continue to Messenger. Please try again.');\n    });\n  }\n\n  function prepareForm(event) {\n    if (!items.length) {\n      event.preventDefault();\n      var error = quoteForm.querySelector('[data-quote-form-error]');\n      error.textContent = 'Please add at least one product before sending your request.';\n      error.hidden = false;\n      formMode = false;\n      renderItems();\n      return;\n    }\n\n    var existingError = quoteForm.querySelector('[data-quote-form-error]');\n    if (existingError) existingError.hidden = true;\n\n    if (messengerIntegrationEnabled) {\n      createMessengerQuote(event);\n      return;\n    }\n\n    var referenceField = quoteForm.querySelector('[data-quote-reference]');\n    var summaryField = quoteForm.querySelector('[data-quote-summary]');\n    var submitButton = quoteForm.querySelector('[data-quote-submit]');\n    var reference = referenceField.value || makeReference();\n\n    referenceField.value = reference;\n    summaryField.value = buildSummary(reference, '');\n\n    var action = quoteForm.getAttribute('action').split('#')[0];\n    quoteForm.setAttribute('action', action + (action.indexOf('?') === -1 ? '?' : '&') + 'quote_request=1#QuoteRequestForm');\n\n    submitButton.disabled = true;\n    submitButton.textContent = 'Sending request\u2026';\n  }\n\n  function showForm() {\n    if (!items.length) return;\n    formMode = true;\n    applyPanelState();\n    var firstField = formPanel.querySelector('input:not([type=\"hidden\"])');\n    if (firstField) firstField.focus();\n  }\n\n  function hideForm() {\n    formMode = false;\n    applyPanelState();\n    var requestButton = drawer.querySelector('[data-quote-show-form]');\n    if (requestButton) requestButton.focus();\n  }\n\n  function switchProductImage(select) {\n    var selected = select.options[select.selectedIndex];\n    var imageId = selected && selected.getAttribute('data-image-id');\n    var section = select.closest('[data-section-type=\"product-template\"]');\n    if (!section) return;\n\n    var visiblePrice = section.querySelector('[data-quote-visible-price]');\n    var priceLabel = selected && selected.getAttribute('data-price-label');\n    if (visiblePrice && priceLabel) visiblePrice.textContent = priceLabel;\n    if (!imageId) return;\n\n    section.querySelectorAll('[id^=\"productPhotoWrapper-\"]').forEach(function (wrapper) {\n      wrapper.classList.toggle('hide', wrapper.getAttribute('data-image-id') !== imageId);\n    });\n  }\n\n  document.addEventListener('click', function (event) {\n    var target = event.target;\n    var quoteIdCreate = target.closest('[data-quote-id-create]');\n    var handoffCopy = target.closest('[data-quote-handoff-copy]');\n    var handoffDone = target.closest('[data-quote-handoff-done]');\n    var quoteIdDelete = target.closest('[data-quote-id-delete]');\n    var refreshSavedQuotes = target.closest('[data-saved-quotes-refresh]');\n    var approvedQuotesJumpButton = target.closest('[data-approved-quotes-jump]');\n    var messengerToggleButton = target.closest('[data-messenger-demo-toggle]');\n    var messengerCloseButton = target.closest('[data-messenger-demo-close]');\n    var messengerShareButton = target.closest('[data-messenger-demo-share]');\n    var messengerQuoteButton = target.closest('[data-messenger-demo-quote]');\n    var addButton = target.closest('[data-quote-add]');\n    var openButton = target.closest('[data-quote-open]');\n    var closeButton = target.closest('[data-quote-close]');\n    var increaseButton = target.closest('[data-quote-increase]');\n    var decreaseButton = target.closest('[data-quote-decrease]');\n    var productIncreaseButton = target.closest('[data-quote-product-increase]');\n    var productDecreaseButton = target.closest('[data-quote-product-decrease]');\n    var removeButton = target.closest('[data-quote-remove]');\n    var showFormButton = target.closest('[data-quote-show-form]');\n    var hideFormButton = target.closest('[data-quote-hide-form]');\n    var clearButton = target.closest('[data-quote-clear]');\n    var thumbnail = target.closest('.product-photo-thumb');\n\n    if (quoteIdCreate) {\n      createQuoteId(event);\n    } else if (handoffCopy && activeHandoff) {\n      copyQuoteIdAndOpenMessenger(event, activeHandoff.quoteId);\n    } else if (handoffDone) {\n      finishMessengerHandoff(event);\n    } else if (quoteIdDelete) {\n      deleteSavedQuote(event, quoteIdDelete.getAttribute('data-quote-id-delete'));\n    } else if (refreshSavedQuotes) {\n      event.preventDefault();\n      lastQuoteStatusCheckAt = 0;\n      reconcileSavedQuotes(true);\n    } else if (approvedQuotesJumpButton) {\n      jumpToReviewedQuote(event);\n    } else if (messengerToggleButton) {\n      event.preventDefault();\n      toggleMessengerDemo(messengerToggleButton);\n    } else if (messengerCloseButton) {\n      event.preventDefault();\n      closeMessengerDemo();\n    } else if (messengerShareButton) {\n      shareMessengerDemoQuote(event);\n    } else if (messengerQuoteButton) {\n      event.preventDefault();\n      closeMessengerDemo(false);\n      openDrawer(messengerDemoToggle);\n    } else if (addButton) {\n      event.preventDefault();\n      addItem(addButton);\n    } else if (openButton) {\n      event.preventDefault();\n      openDrawer(openButton);\n    } else if (closeButton || target === overlay) {\n      event.preventDefault();\n      closeDrawer();\n    } else if (increaseButton) {\n      changeQuantity(increaseButton.getAttribute('data-quote-increase'), 1);\n    } else if (decreaseButton) {\n      changeQuantity(decreaseButton.getAttribute('data-quote-decrease'), -1);\n    } else if (productIncreaseButton) {\n      event.preventDefault();\n      changeProductQuantity(productIncreaseButton, 1);\n    } else if (productDecreaseButton) {\n      event.preventDefault();\n      changeProductQuantity(productDecreaseButton, -1);\n    } else if (removeButton) {\n      removeItem(removeButton.getAttribute('data-quote-remove'));\n    } else if (showFormButton) {\n      showForm();\n    } else if (hideFormButton) {\n      hideForm();\n    } else if (clearButton && window.confirm('Remove all products from your quote list?')) {\n      items = [];\n      formMode = false;\n      saveItems();\n      renderItems();\n      announce('Your quote list was cleared.');\n    } else if (thumbnail) {\n      var imageSection = thumbnail.closest('[data-section-type=\"product-template\"]');\n      var selectedImageId = thumbnail.getAttribute('data-image-id');\n      if (imageSection && selectedImageId) {\n        event.preventDefault();\n        imageSection.querySelectorAll('[id^=\"productPhotoWrapper-\"]').forEach(function (wrapper) {\n          wrapper.classList.toggle('hide', wrapper.getAttribute('data-image-id') !== selectedImageId);\n        });\n      }\n    }\n\n    if (messengerDemo && messengerDemoPanel && !messengerDemoPanel.hidden && !messengerDemo.contains(target)) {\n      closeMessengerDemo(false);\n    }\n  });\n\n  document.addEventListener('change', function (event) {\n    if (event.target.matches('[data-quote-item-quantity]')) {\n      setQuantity(event.target.getAttribute('data-quote-item-quantity'), event.target.value);\n    } else if (event.target.matches('[data-quote-variant]')) {\n      switchProductImage(event.target);\n    }\n  });\n\n  document.addEventListener('keydown', function (event) {\n    if (event.key === 'Escape' && messengerDemoPanel && !messengerDemoPanel.hidden) {\n      closeMessengerDemo();\n      return;\n    }\n\n    if (!drawer.classList.contains('is-open')) return;\n\n    if (event.key === 'Escape') {\n      closeDrawer();\n      return;\n    }\n\n    if (event.key === 'Tab') {\n      var focusable = Array.prototype.slice.call(drawer.querySelectorAll(\n        'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])'\n      )).filter(function (element) {\n        return !element.hidden && element.offsetParent !== null;\n      });\n\n      if (!focusable.length) return;\n      var first = focusable[0];\n      var last = focusable[focusable.length - 1];\n\n      if (event.shiftKey && document.activeElement === first) {\n        event.preventDefault();\n        last.focus();\n      } else if (!event.shiftKey && document.activeElement === last) {\n        event.preventDefault();\n        first.focus();\n      }\n    }\n  });\n\n  if (quoteForm) quoteForm.addEventListener('submit', prepareForm);\n  drawer.querySelectorAll('[name=\"quote_delivery_channel\"]').forEach(function (input) {\n    input.addEventListener('change', updateDeliveryChoice);\n  });\n  updateDeliveryChoice();\n\n  window.addEventListener('focus', function () {\n    reconcileSavedQuotes(false);\n  });\n\n  document.addEventListener('visibilitychange', function () {\n    if (!document.hidden) reconcileSavedQuotes(false);\n  });\n\n  var requestParams = new URLSearchParams(window.location.search);\n  var quoteSubmission = requestParams.get('quote_request') === '1';\n  var postedSuccessfully = drawer.querySelector('[data-quote-posted-successfully]');\n  var formErrors = quoteForm && quoteForm.querySelector('.errors');\n\n  if (quoteSubmission && postedSuccessfully) {\n    items = [];\n    try { window.localStorage.removeItem(STORAGE_KEY); } catch (error) {}\n    successMode = true;\n    renderItems();\n    openDrawer();\n  } else {\n    renderItems();\n    reconcileSavedQuotes(true);\n    if (quoteSubmission && formErrors) {\n      formMode = true;\n      renderItems();\n      openDrawer();\n    }\n  }\n})();\n"],
  "mappings": "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",
  "names": []
}
