{
  "version": 3,
  "sources": ["/cdn/shop/t/3/assets/lens-flow.js?cb=1108b"],
  "sourcesContent": ["/* ===== Lens Flow \u2014 \u81EA\u5EFA\u914D\u955C\u6D41\u7A0B\u5F15\u64CE\uFF08\u590D\u523B LooL OX6FX3\uFF09===== */\n(function () {\n  'use strict';\n\n  var CFG = null;\n  try { CFG = JSON.parse(document.getElementById('lfx-config').textContent); } catch (e) { CFG = null; }\n  /* ---- i18n: window.__LFX_I18N__ injected by lens-flow.liquid per request.locale ---- */\n  var LFX_D = (typeof window !== 'undefined' && window.__LFX_I18N__) || null;\n  function T(x) { return (LFX_D && LFX_D[x]) || x; }\n  (function deepT(o, k) {\n    if (!LFX_D || !o || typeof o !== 'object') return;\n    if (k === 't' || k === 'h' || k === 'type' || k === 'leadsTo') return; /* swatch/\u903B\u8F91\u503C\u4E0D\u7FFB */\n    for (var key in o) {\n      var v = o[key];\n      if (v && typeof v === 'object') deepT(v, key);\n      else if (typeof v === 'string' && LFX_D[v]) o[key] = LFX_D[v];\n    }\n  })(CFG, '');\n  var PROD_CACHE = null; /* \u4EA7\u54C1\u6570\u636E\u9884\u53D6\u7F13\u5B58\uFF1A\u8DE8\u5F39\u7A97\u5F00\u5173\u590D\u7528\uFF0C\u907F\u514D\u6BCF\u6B21\u6253\u5F00\u90FD\u7B49\u7F51\u7EDC */\n  if (CFG) init();\n\n  function init() {\n    var root = document.querySelector('.lfx-root');\n    if (!root) return;\n    var overlay = document.querySelector('.lfx-overlay');\n    var dialog = document.querySelector('.lfx-dialog');\n    if (!overlay || !dialog) return;\n    /* \u5F39\u7A97\u79FB\u5230 body \u672B\u5C3E\uFF1A\u8131\u79BB main.content-for-layout(z-index:2) \u7684\u5C42\u53E0\u4E0A\u4E0B\u6587\uFF0C\n       \u5426\u5219 sticky header(z:8) \u4F1A\u76D6\u4F4F\u5F39\u7A97\u9876\u90E8 */\n    if (overlay.parentElement !== document.body) document.body.appendChild(overlay);\n    if (dialog.parentElement !== document.body) document.body.appendChild(dialog);\n    var btn = root.querySelector('.lfx-btn');\n    var btn2 = root.querySelector('.lfx-btn-alt');\n    var backBtn = dialog.querySelector('.lfx-back');\n    var closeBtn = dialog.querySelector('.lfx-close');\n    var progEl = dialog.querySelector('.lfx-progress i');\n    var sumEl = dialog.querySelector('.lfx-summary');\n    var content = dialog.querySelector('.lfx-content');\n    var foot = dialog.querySelector('.lfx-foot');\n\n    /* \u6309\u94AE\u4E0E aria \u6807\u7B7E\u672C\u5730\u5316 */\n    function setBtnTxt(b, txt) {\n      if (!b) return;\n      for (var i = b.childNodes.length - 1; i >= 0; i--) {\n        var n = b.childNodes[i];\n        if (n.nodeType === 3 && n.textContent.trim()) { n.textContent = ' ' + txt; break; }\n      }\n    }\n    setBtnTxt(btn, T('Customize Lenses')); setBtnTxt(btn2, T('Customize Lenses'));\n    dialog.setAttribute('aria-label', T('Customize lenses'));\n    backBtn.setAttribute('aria-label', T('Back'));\n    closeBtn.setAttribute('aria-label', T('Close'));\n\n    var st = null;   // \u4F1A\u8BDD\u72B6\u6001\n    var PROD = null; // /products/*.js\n\n    /* \u4EA7\u54C1\u6570\u636E\u9884\u53D6\uFF1A\u4EA7\u54C1\u9875\u7A7A\u95F2\u65F6\u5C31\u62C9\u597D\uFF0C\u70B9\u5F00\u5F39\u7A97\u96F6\u7B49\u5F85 */\n    var preloadTried = false;\n    function preloadProd() {\n      if (preloadTried || PROD_CACHE) return;\n      preloadTried = true;\n      var m = location.pathname.match(/\\/products\\/([^\\/?#]+)/);\n      if (!m) return;\n      fetch('/products/' + m[1] + '.js').then(function (r) { return r.json(); })\n        .then(function (p) { PROD_CACHE = p; })\n        .catch(function () { preloadTried = false; });\n    }\n    if ('requestIdleCallback' in window) requestIdleCallback(preloadProd, { timeout: 2500 });\n    else setTimeout(preloadProd, 600);\n\n    function openFlow() {\n      var handle = location.pathname.match(/\\/products\\/([^\\/?#]+)/);\n      if (!handle) return;\n      /* \u5F39\u7A97\u52A8\u753B\u7ACB\u5373\u54CD\u5E94\uFF0C\u4E0D\u7B49\u7F51\u7EDC\uFF1B\u6570\u636E\u672A\u5C31\u7EEA\u65F6\u5148\u7ED9\u52A0\u8F7D\u6001 */\n      overlay.classList.add('is-open');\n      dialog.classList.add('is-open');\n      document.documentElement.style.overflow = 'hidden';\n      function start(p) {\n        PROD = p; PROD_CACHE = p;\n        /* /products/*.js \u6052\u8FD4\u56DE\u9ED8\u8BA4\u8BED\u8A00\uFF1B\u6458\u8981\u6807\u9898\u6539\u7528\u9875\u9762 og:title\uFF08\u8DDF\u968F request.locale\uFF09 */\n        try {\n          var og = document.querySelector('meta[property=\"og:title\"]');\n          var t1 = og && og.content && og.content.trim();\n          if (t1) { PROD.title = t1; if (PROD_CACHE) PROD_CACHE.title = t1; }\n        } catch (e) {}\n        st = { hist: [], presc: null, lensType: null, lens: null, method: null,\n               rx: { od: { sph: '', cyl: '', axis: '' }, os: { sph: '', cyl: '', axis: '' }, pd: '', dualPd: false, pdOd: '', pdOs: '', add: '', mag: '' },\n               prism: false, note: '', file: null };\n        go('prescription');   /* \u5904\u65B9\u9875\u5165\u6808\uFF0C\u4FDD\u8BC1\u540E\u7EED\u6BCF\u4E00\u5C42\u90FD\u80FD\u8FD4\u56DE */\n      }\n      if (PROD_CACHE) { start(PROD_CACHE); return; }\n      content.innerHTML = '<div class=\"lfx-loading\"><span class=\"lfx-spin\"></span></div>';\n      fetch('/products/' + handle[1] + '.js').then(function (r) { return r.json(); }).then(start)\n        .catch(function () {\n          closeFlow();\n          alert(T('Failed to load product, please refresh and try again.'));\n        });\n    }\n    function closeFlow() {\n      overlay.classList.remove('is-open');\n      dialog.classList.remove('is-open');\n      document.documentElement.style.overflow = '';\n    }\n    btn && btn.addEventListener('click', openFlow);\n    btn2 && btn2.addEventListener('click', openFlow);\n    closeBtn.addEventListener('click', closeFlow);\n    overlay.addEventListener('click', closeFlow);\n    document.addEventListener('keydown', function (e) { if (e.key === 'Escape' && dialog.classList.contains('is-open')) closeFlow(); });\n    backBtn.addEventListener('click', function () {\n      if (!st || st.hist.length < 2) return;   /* hist[0] \u662F\u5904\u65B9\u9875\uFF0C\u81F3\u5C11\u7559\u4E00\u5C42 */\n      st.hist.pop();                    /* \u5F39\u51FA\u5F53\u524D\u9875 */\n      render(st.hist[st.hist.length - 1], true);  /* \u56DE\u5230\u4E0A\u4E00\u9875\uFF08\u4FDD\u7559\u5728\u6808\u4E2D\uFF09 */\n    });\n\n    /* ---------- \u8D27\u5E01\u6362\u7B97\uFF08\u4E0E currency-localize.js \u5171\u4EAB\u6C47\u7387\u7F13\u5B58\uFF09 ---------- */\n    var FX_C2C = { CN: 'CNY', HK: 'HKD', TW: 'TWD', MO: 'MOP', SG: 'SGD', JP: 'JPY', KR: 'KRW',\n      GB: 'GBP', IE: 'EUR', DE: 'EUR', FR: 'EUR', IT: 'EUR', ES: 'EUR', NL: 'EUR',\n      BE: 'EUR', AT: 'EUR', PT: 'EUR', FI: 'EUR', GR: 'EUR', LU: 'EUR',\n      CA: 'CAD', AU: 'AUD', NZ: 'NZD', CH: 'CHF', SE: 'SEK', NO: 'NOK', DK: 'DKK',\n      AE: 'AED', SA: 'SAR', IL: 'ILS', IN: 'INR', MY: 'MYR', TH: 'THB', PH: 'PHP',\n      ID: 'IDR', VN: 'VND', BR: 'BRL', MX: 'MXN', AR: 'ARS', CL: 'CLP', CO: 'COP',\n      RU: 'RUB', TR: 'TRY', ZA: 'ZAR', EG: 'EGP', NG: 'NGN' };\n    var FX_CACHE = null;\n    function FX() {\n      if (window.IRISFX && window.IRISFX.ready && window.IRISFX.currency) return window.IRISFX;\n      if (FX_CACHE) return FX_CACHE;\n      try {\n        var raw = localStorage.getItem('irisharp_fx_v1');\n        if (!raw) return null;\n        var o = JSON.parse(raw);\n        if (!o || !o.rates || !o.ts || Date.now() - o.ts > 12 * 3600 * 1000) return null;\n        var c = '';\n        try { c = (window.Shopify && Shopify.country) || ''; } catch (e2) {}\n        if (!c) c = document.documentElement.getAttribute('data-country') || '';\n        c = String(c).toUpperCase();\n        var cur = FX_C2C[c];\n        if (!cur || cur === 'USD' || !o.rates[cur]) return null;\n        FX_CACHE = { currency: cur, rate: o.rates[cur], ready: true };\n        return FX_CACHE;\n      } catch (e) { return null; }\n    }\n    function FXNOTE() {\n      /* \u53C2\u8003\u4EF7\u63D0\u793A\u8BED\u5DF2\u6309\u9700\u6C42\u79FB\u9664 */\n      return '';\n    }\n    /* ---------- \u5DE5\u5177 ---------- */\n    function fmt(c) {\n      if (typeof c !== 'number') c = Number(c) || 0;\n      var usd = c / 100;\n      var fx = FX();\n      if (fx && fx.currency && fx.currency !== 'USD' && fx.rate > 0) {\n        var v = usd * fx.rate;\n        var zero = (fx.currency === 'JPY' || fx.currency === 'KRW' || fx.currency === 'VND' || fx.currency === 'IDR' || fx.currency === 'CLP');\n        try {\n          return new Intl.NumberFormat(document.documentElement.lang || 'en', {\n            style: 'currency', currency: fx.currency, currencyDisplay: 'narrowSymbol',\n            maximumFractionDigits: zero ? 0 : 2\n          }).format(v);\n        } catch (e) { return fx.currency + ' ' + (zero ? Math.round(v) : v.toFixed(2)); }\n      }\n      return '$' + usd.toFixed(2);\n    }\n    function money10(str) { // \"29.00\" -> cents\n      return Math.round(parseFloat(str || '0') * 100);\n    }\n    function curFrameVariant() {\n      if (!PROD) return null;\n      var vid = null;\n      try {\n        var m = location.search.match(/[?&]variant=(\\d+)/);\n        if (m) vid = m[1];  /* \u4E3B\u9898\u6362\u8272\u4F1A\u540C\u6B65 URL\uFF0C\u6700\u53EF\u9760 */\n      } catch (e) {}\n      if (!vid) {\n        /* \u591A\u4E2A\u9690\u85CF input \u66F4\u65B0\u4E0D\u540C\u6B65\uFF1A\u53D6\u51FA\u73B0\u6B21\u6570\u6700\u591A\u7684\u503C\uFF08DOM \u9760\u540E\u8005\u4F18\u5148\uFF09 */\n        var inputs = Array.prototype.slice.call(document.querySelectorAll('.product-form input[name=\"id\"], form[action*=\"/cart/add\"] input[name=\"id\"], select[name=\"id\"]'));\n        var counts = {};\n        inputs.forEach(function (x) { if (x.value) counts[x.value] = (counts[x.value] || 0) + 1; });\n        var bestN = 0;\n        inputs.forEach(function (x) { var n = counts[x.value] || 0; if (n >= bestN) { vid = x.value; bestN = n; } });\n      }\n      var v = null;\n      if (vid) {\n        for (var i = 0; i < PROD.variants.length; i++) {\n          if (String(PROD.variants[i].id) === String(vid)) v = PROD.variants[i];\n        }\n      }\n      if (!v) { v = PROD.variants.filter(function (x) { return x.available; })[0] || PROD.variants[0]; }\n      return v;\n    }\n    function variantImg(f) {\n      if (f) {\n        if (typeof f.featured_image === 'string' && f.featured_image) return f.featured_image;\n        if (f.featured_image && f.featured_image.src) return f.featured_image.src;\n        if (f.image) return f.image;\n      }\n      return (PROD && PROD.featured_image) || '';\n    }\n    function grandTotal() {\n      var f = curFrameVariant();\n      var t = f ? f.price : 0;\n      if (st.lens) t += money10(st.lens.price);\n      if (st.prism && CFG.prism) t += money10(CFG.prism.price);\n      return t;\n    }\n    function updateSummary() {\n      var f = curFrameVariant();\n      var rows = '';\n      rows += '<div class=\"lfx-sum-row\"><span>' + esc(PROD.title) + '</span><span>' + fmt(f.price) + '</span></div>';\n      if (st.presc) rows += '<div class=\"lfx-sum-row\"><span>' + T('Prescription') + '</span><span>' + esc(st.presc.title) + '</span></div>';\n      if (st.lensType) rows += '<div class=\"lfx-sum-row\"><span>' + T('Lens type') + '</span><span>' + esc(st.lensType.title) + '</span></div>';\n      if (st.lens) rows += sumPriceRow(st.lens);\n      if (st.prism && CFG.prism) rows += '<div class=\"lfx-sum-row\"><span>' + T('Prism') + '</span><span>+' + fmt(money10(CFG.prism.price)) + '</span></div>';\n      rows += '<div class=\"lfx-sum-total\"><span>' + T('Grand total') + '</span><span>' + fmt(grandTotal()) + '</span></div>' + FXNOTE();\n      sumEl.innerHTML =\n        '<img class=\"lfx-summary-img\" src=\"' + variantImg(f) + '\" alt=\"\">' +\n        '<div class=\"lfx-summary-title\">' + esc(PROD.title) + '</div>' +\n        '<div class=\"lfx-summary-items\">' + rows + '</div>';\n    }\n    function sumPriceRow(lens) {\n      var p = money10(lens.price);\n      var ca = lens.ca ? money10(lens.ca) : 0;\n      var right = ca > p ? '<s>' + fmt(ca) + '</s>' + fmt(p) : fmt(p);\n      return '<div class=\"lfx-sum-row\"><span>' + esc(lens.title) + '</span><span>' + right + '</span></div>';\n    }\n    function esc(s) {\n      return String(s == null ? '' : s).replace(/[&<>\"']/g, function (c) {\n        return { '&': '&amp;', '<': '&lt;', '>': '&gt;', '\"': '&quot;', \"'\": '&#39;' }[c];\n      });\n    }\n    function setProgress() {\n      var total = 6; // \u5904\u65B9/\u955C\u7247\u7C7B\u578B/\u955C\u7247/\u65B9\u5F0F/\u8868\u5355/\u786E\u8BA4\n      var n = st.hist.length;   /* hist \u542B\u5F53\u524D\u9875 */\n      /* \u7528 transform \u7F29\u653E\u66FF\u4EE3 width\uFF1A\u5408\u6210\u5668\u52A8\u753B\uFF0C\u4E0D\u89E6\u53D1\u9010\u5E27\u91CD\u6392 */\n      progEl.style.transform = 'scaleX(' + Math.min(1, n / total) + ')';\n    }\n    function go(id) {\n      st.hist.push(id);\n      render(id);\n    }\n    function render(id, fromBack) {\n      if (!st) return;\n      setProgress();\n      updateSummary();\n      backBtn.classList.toggle('is-vis', st.hist.length > 1);  /* \u6808\u91CC\u8FD8\u6709\u4E0A\u4E00\u5C42\u624D\u663E\u793A\u8FD4\u56DE */\n      content.scrollTop = 0;\n      foot.innerHTML = '';\n      var kind = (st.presc && st.presc.type) || 'singleVision';\n      CFG.forms.current = kind === 'progressive' ? CFG.forms.progressive : (kind === 'reading' ? CFG.forms.reading : CFG.forms.single);\n      /* \u6B65\u9AA4\u5207\u6362\u8FC7\u6E21\uFF1A\u8F7B\u91CF\u6DE1\u5165\u4E0A\u79FB\uFF0C\u6D88\u9664 innerHTML \u786C\u5207\u7684\u751F\u786C\u611F */\n      content.classList.remove('lfx-anim');\n      void content.offsetWidth;   /* \u5F3A\u5236 reflow \u91CD\u65B0\u89E6\u53D1\u52A8\u753B */\n      content.classList.add('lfx-anim');\n      if (id === 'prescription') renderPresc();\n      else if (id === 'method') renderMethod();\n      else if (id === 'review') renderReview();\n      else if (CFG.pages[id]) renderLensPage(id);\n      else renderPresc();\n    }\n\n    /* ---------- \u5361\u7247 ---------- */\n    function cardBody(o) {\n      /* \u6709\u989C\u8272\u884C\u65F6\uFF1A\u6807\u9898\u9ED8\u8BA4\u663E\u793A\u7B2C\u4E00\u4E2A\u989C\u8272\uFF08\u4E0E LooL \u4E00\u81F4\uFF0C\u5982 \"1.56 Index - Blue\"\uFF09 */\n      var hasColors = o.colors && o.colors.length > 1;\n      var ttl = hasColors ? o.title + ' - ' + o.colors[0].t : o.title;\n      var t = '<span class=\"lfx-card-title\" data-base=\"' + esc(o.title) + '\">' + esc(ttl) + '</span>';\n      if (o.spec && (o.spec.rows && o.spec.rows.length || o.spec.rx || o.spec.lt || o.spec.ft)) {\n        var rows = o.spec.rows || [];\n        if (!rows.length) {\n          if (o.spec.rx) rows.push([T('Prescription'), o.spec.rx]);\n          if (o.spec.lt) rows.push([T('Lens Type'), o.spec.lt]);\n          if (o.spec.ft) rows.push([T('Features'), o.spec.ft]);\n        }\n        t += '<span class=\"lfx-spec\">' + rows.map(function (r) {\n          return '<span class=\"lfx-spec-row\"><span class=\"lfx-spec-k\">' + esc(r[0]) +\n            '</span><span class=\"lfx-spec-v\">' + esc(r[1]) + '</span></span>';\n        }).join('') + '</span>';\n      } else if (o.desc) {\n        t += '<span class=\"lfx-card-desc\">' + esc(o.desc) + '</span>';\n      }\n      return t;\n    }\n    var SWATCH = { 'Grey': '#8a8f98', 'Green': '#4d7c5f', 'Brown': '#8b5a34', 'Pink': '#e8a8bc', 'Purple': '#9b7fc7', 'Blue': '#7fa8d9' };\n    function colorRowHtml(o) {\n      if (!o.colors || !o.colors.length) return '';\n      return '<span class=\"lfx-colors\">' + o.colors.map(function (c, ci) {\n        var inner = c.img\n          ? '<img src=\"' + c.img + (c.img.indexOf('?') > -1 ? '&' : '?') + 'width=80\" alt=\"\">'\n          : '<i style=\"background:' + (SWATCH[c.t] || '#c9c2d4') + '\"></i>';\n        return '<span class=\"lfx-color' + (ci === 0 ? ' is-sel' : '') + '\" data-cvid=\"' + esc(c.vid) +\n          '\" data-price=\"' + esc(c.price) + '\" data-ca=\"' + esc(c.ca || '') + '\" data-name=\"' + esc(c.t) + '\" role=\"button\" tabindex=\"0\">' +\n          inner + '</span>';\n      }).join('') + '</span>';\n    }\n    function card(o) {\n      var p = money10(o.price);\n      var ca = o.ca ? money10(o.ca) : 0;\n      var priceHtml = p === 0 ? '<span style=\"color:#0d9488\">' + T('FREE') + '</span>'\n        : (ca > p ? '<s>' + fmt(ca) + '</s>' + fmt(p) : '+' + fmt(p));\n      var ico = '';\n      if (!o.img) {\n        /* \u513F\u7AE5\u591A\u70B9\u79BB\u7126 \u2192 \u540C\u5FC3\u73AF\u793A\u610F\uFF1B\u8702\u7A9D \u2192 \u516D\u8FB9\u5F62\u793A\u610F */\n        if (/multi-point|ring/i.test(o.h || '') || /multi-zone/i.test(o.title)) ico = ringIcon();\n        else if (/honeycomb/i.test(o.h || '') || /honeycomb/i.test(o.title)) ico = combIcon();\n        else ico = lensIcon();\n      }\n      var img = o.img\n        ? '<img class=\"lfx-card-img\" loading=\"lazy\" src=\"' + o.img + (o.img.indexOf('?') > -1 ? '&' : '?') + 'width=140\" alt=\"\">'\n        : '<span class=\"lfx-card-ico\">' + ico + '</span>';\n      return '<button type=\"button\" class=\"lfx-card' + (o.spec ? ' lfx-card-spec' : '') +\n        (o.colors && o.colors.length > 1 ? ' lfx-card-colors' : '') + '\" data-vid=\"' + esc(o.vid) + '\">' +\n        (o.badge ? '<span class=\"lfx-badge\">' + esc(o.badge) + '</span>' : '') +\n        img +\n        '<span class=\"lfx-card-main\">' + cardBody(o) + colorRowHtml(o) +\n        '</span><span class=\"lfx-card-price\">' + priceHtml + '</span></button>';\n    }\n    function lensIcon() {\n      return '<svg viewBox=\"0 0 34 26\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\">' +\n        '<rect x=\"1\" y=\"6\" width=\"13\" height=\"13\" rx=\"6.5\"/><rect x=\"20\" y=\"6\" width=\"13\" height=\"13\" rx=\"6.5\"/>' +\n        '<path d=\"M14 9c1.5-1.6 4.5-1.6 6 0\"/></svg>';\n    }\n    function ringIcon() {\n      /* \u540C\u5FC3\u73AF\u591A\u70B9\u79BB\u7126\u793A\u610F */\n      var rings = '';\n      for (var i = 1; i <= 4; i++) {\n        rings += '<circle cx=\"17\" cy=\"13\" r=\"' + (2.6 * i) + '\" stroke-dasharray=\"' + (2.2 + i) + ' ' + (2 + i) + '\" opacity=\"' + (1 - i * 0.14) + '\"/>';\n      }\n      return '<svg viewBox=\"0 0 34 26\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\">' + rings +\n        '<circle cx=\"17\" cy=\"13\" r=\"1.2\" fill=\"currentColor\" stroke=\"none\"/></svg>';\n    }\n    function combIcon() {\n      /* \u8702\u7A9D\u5FAE\u900F\u955C\u793A\u610F */\n      var dots = '';\n      for (var r = 0; r < 3; r++) {\n        for (var q = 0; q < 5; q++) {\n          var x = 5 + q * 6 + (r % 2 ? 3 : 0), y = 5 + r * 8;\n          dots += '<circle cx=\"' + x + '\" cy=\"' + y + '\" r=\"2.1\" opacity=\"' + (0.85 - r * 0.18) + '\"/>';\n        }\n      }\n      return '<svg viewBox=\"0 0 34 26\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.3\">' + dots + '</svg>';\n    }\n\n    /* ---------- \u6B65\u9AA4 1\uFF1A\u5904\u65B9\u7C7B\u578B ---------- */\n    function renderPresc() {\n      content.innerHTML = '<h2 class=\"lfx-step-title\">' + esc(CFG.prescription.title) +\n        ' <span class=\"lfx-help\" title=\"' + esc(T('If you have Addition (ADD) on your prescription, choose Progressive; otherwise choose Single Vision.')) + '\">?</span></h2>' +\n        '<div class=\"lfx-cards\">' + CFG.prescription.opts.map(function (o) {\n          return '<button type=\"button\" class=\"lfx-card\" data-go=\"' + esc(o.leadsTo) + '\" data-type=\"' + esc(o.type) + '\">' +\n            '<span class=\"lfx-card-main\"><span class=\"lfx-card-title\">' + esc(o.title) + '</span>' +\n            (o.desc ? '<span class=\"lfx-card-desc\">' + esc(o.desc) + '</span>' : '') + '</span></button>';\n        }).join('') + '</div>';\n      content.querySelectorAll('.lfx-card').forEach(function (c) {\n        c.addEventListener('click', function () {\n          var opt = CFG.prescription.opts.filter(function (o) { return o.leadsTo === c.getAttribute('data-go'); })[0];\n          st.presc = { title: opt.title, type: opt.type };\n          go(c.getAttribute('data-go') || 'method');\n        });\n      });\n    }\n\n    /* ---------- \u955C\u7247\u9875\uFF08LENS TYPE / LENS BUNDLE\uFF09 ---------- */\n    function renderLensPage(pid) {\n      var pg = CFG.pages[pid];\n      var isType = pg.title === 'LENS TYPE';\n      var pickedIdx = -1;\n      var cardEls = [];\n\n      function setLens(idx) {\n        var o = pg.opts[idx];\n        var cEl = cardEls[idx];\n        if (o.av === false) { alert(T('This option is currently unavailable.')); return false; }\n        if (isType) {\n          st.lensType = { title: o.title };\n        } else {\n          /* bundle\uFF1A\u6709\u989C\u8272\u53D8\u4F53\u5C31\u7528\u5F53\u524D\u9009\u4E2D\u7684\u989C\u8272\uFF08>1 \u8272\u65F6\u6807\u9898\u5E26\u989C\u8272\uFF0C\u5982 \"1.61 Index - Pink\"\uFF09 */\n          var pick = o;\n          var sel = cEl && cEl.querySelector('.lfx-color.is-sel');\n          if (o.colors && o.colors.length && sel) {\n            var cvid = sel.getAttribute('data-cvid');\n            var c = o.colors.filter(function (x) { return String(x.vid) === String(cvid); })[0] || o.colors[0];\n            pick = Object.assign({}, o, { vid: c.vid, price: c.price, ca: c.ca, color: c.t,\n              title: o.colors.length > 1 ? o.title + ' - ' + c.t : o.title });\n          }\n          st.lens = pick;\n        }\n        return true;\n      }\n      function advance(idx) {\n        if (!setLens(idx)) return;\n        var o = pg.opts[idx];\n        if (o.leadsTo && CFG.pages[o.leadsTo]) go(o.leadsTo);\n        else go('method');\n      }\n      /* \u5E26\u989C\u8272\u7684\u5361\u7247\uFF1A\u70B9\u51FB\u53EA\u9009\u4E2D + \u5E95\u90E8\u51FA\u73B0 Next\uFF0C\u5BA2\u6237\u786E\u8BA4\u989C\u8272\u540E\u518D\u8FDB\u4E0B\u4E00\u6B65 */\n      function markPicked(cardEl) {\n        cardEls.forEach(function (x) { x.classList.remove('is-picked'); });\n        cardEl.classList.add('is-picked');\n        pickedIdx = cardEls.indexOf(cardEl);\n        foot.innerHTML = '<button type=\"button\" class=\"lfx-next\">' + T('Next') + '</button>';\n        foot.querySelector('.lfx-next').addEventListener('click', function () {\n          if (pickedIdx > -1) advance(pickedIdx);\n        });\n      }\n\n      content.innerHTML = '<h2 class=\"lfx-step-title\">' + esc(pg.title) + '</h2>' +\n        (isType ? '<div class=\"lfx-step-sub\">' + T('Choose the lens that fits your lifestyle') + '</div>' : '<div class=\"lfx-step-sub\">' + T('Choose your lens index based on your prescription strength') + '</div>') +\n        '<div class=\"lfx-cards\">' + pg.opts.map(function (o, i) {\n          return card(o);\n        }).join('') + '</div>';\n      cardEls = Array.prototype.slice.call(content.querySelectorAll('.lfx-card'));\n      cardEls.forEach(function (c, idx) {\n        var o = pg.opts[idx];\n        var hasColors = !isType && o.colors && o.colors.length > 1;\n        /* \u989C\u8272\u5706\uFF1A\u9009\u4E2D + \u66F4\u65B0\u4EF7\u683C/\u6807\u9898\uFF0C\u540C\u6B65\u5DE6\u4FA7\u6458\u8981\uFF0C\u4E0D\u89E6\u53D1\u5361\u7247\u8DF3\u8F6C */\n        c.querySelectorAll('.lfx-color').forEach(function (s) {\n          var pick = function (e) {\n            e.stopPropagation();\n            e.preventDefault();\n            c.querySelectorAll('.lfx-color').forEach(function (x) { x.classList.remove('is-sel'); });\n            s.classList.add('is-sel');\n            var p = money10(s.getAttribute('data-price'));\n            var ca = money10(s.getAttribute('data-ca') || '0');\n            var ph = p === 0 ? '<span style=\"color:#0d9488\">' + T('FREE') + '</span>'\n              : (ca > p ? '<s>' + fmt(ca) + '</s>' + fmt(p) : '+' + fmt(p));\n            c.querySelector('.lfx-card-price').innerHTML = ph;\n            /* \u5361\u7247\u6807\u9898\u5E26\u6240\u9009\u989C\u8272\uFF08\u4EC5\u591A\u8272\u65F6\uFF1B\u5355\u8272\u4FDD\u6301\u7EAF\u6807\u9898\uFF0C\u4E0E LooL \u4E00\u81F4\uFF09 */\n            if (hasColors) {\n              var cname = s.getAttribute('data-name') || '';\n              var tt = c.querySelector('.lfx-card-title');\n              if (tt) {\n                if (!tt.getAttribute('data-base')) tt.setAttribute('data-base', tt.textContent);\n                tt.textContent = tt.getAttribute('data-base') + (cname ? ' - ' + cname : '');\n              }\n              markPicked(c);\n              if (setLens(idx)) updateSummary();   /* \u5DE6\u4FA7\u6458\u8981\u7ACB\u5373\u663E\u793A\u6240\u9009\u989C\u8272 */\n            }\n          };\n          s.addEventListener('click', pick);\n          s.addEventListener('keydown', function (e) { if (e.key === 'Enter' || e.key === ' ') pick(e); });\n        });\n        c.addEventListener('click', function () {\n          if (hasColors) { markPicked(c); return; }   /* \u6709\u989C\u8272 \u2192 \u505C\u4E0B\u6765\u8BA9\u5BA2\u6237\u786E\u8BA4 */\n          advance(idx);\n        });\n      });\n    }\n\n    /* ---------- \u63D0\u4EA4\u65B9\u5F0F ---------- */\n    function renderMethod() {\n      content.innerHTML = '<h2 class=\"lfx-step-title\">' + T('Choose your submission method') + '</h2>' +\n        '<div class=\"lfx-cards\">' + CFG.forms.method.opts.map(function (o) {\n          var sub = o.type === 'manual' ? T('Enter your prescription numbers here') :\n            o.type === 'upload' ? T('Upload a photo or file of your prescription') :\n              T('Place the order first, email your prescription later');\n          return '<button type=\"button\" class=\"lfx-card\" data-type=\"' + o.type + '\">' +\n            '<span class=\"lfx-card-main\"><span class=\"lfx-card-title\">' + esc(o.title) + '</span>' +\n            '<span class=\"lfx-card-desc\">' + sub + '</span></span></button>';\n        }).join('') + '</div>';\n      content.querySelectorAll('.lfx-card').forEach(function (c) {\n        c.addEventListener('click', function () {\n          var t = c.getAttribute('data-type');\n          st.method = t;\n          if (t === 'manual') renderRxForm();\n          else if (t === 'upload') renderUpload();\n          else go('review');\n        });\n      });\n    }\n\n    /* ---------- \u4E0B\u62C9 ---------- */\n    function selOpts(spec, fmtFn, ph) {\n      var out = '<option value=\"\">' + (ph || '\u2014') + '</option>';\n      var a = parseFloat(spec.start), b = parseFloat(spec.end), s = parseFloat(spec.step);\n      var eps = 1e-9;\n      for (var v = a; v <= b + eps; v += s) {\n        out += '<option value=\"' + fmtFn(v) + '\">' + fmtFn(v) + '</option>';\n      }\n      return out;\n    }\n    var f2 = function (v) { var s = v.toFixed(2); return (v > 0 ? '+' + s : s); };\n    var fAx = function (v) { var n = Math.round(v); return (n < 10 ? '00' + n : n < 100 ? '0' + n : '' + n); };\n    var fPd = function (v) { return (Math.round(v * 2) / 2).toFixed(1); };\n    /* 2 PD numbers\uFF1A\u5355\u773C PD \u8303\u56F4 20-40\uFF08\u4E0E LooL \u8001\u5E97\u4E00\u81F4\uFF09 */\n    var PD_EYE = { start: 20, end: 40, step: 0.5 };\n\n    function eyeRow(label, idp, withAdd) {\n      return '<tr><td>' + label + '</td>' +\n        '<td><select class=\"lfx-sel\" data-eye=\"' + idp + '\" data-f=\"sph\">' + selOpts(CFG.forms.current.sph, f2) + '</select></td>' +\n        '<td><select data-eye=\"' + idp + '\" data-f=\"cyl\">' + selOpts(CFG.forms.current.cyl, f2) + '</select></td>' +\n        '<td><select data-eye=\"' + idp + '\" data-f=\"axis\">' + selOpts(CFG.forms.current.axis, fAx) + '</select></td>' +\n        (withAdd ? '<td><select data-eye=\"' + idp + '\" data-f=\"add\">' + selOpts(CFG.forms.current.add, f2) + '</select></td>' : '') +\n        '</tr>';\n    }\n    function rxTableHtml(kind) {\n      var withAdd = kind === 'progressive';\n      return '<table><thead><tr><th></th><th>SPH</th><th>CYL</th><th>AXIS</th>' + (withAdd ? '<th>ADD</th>' : '') + '</tr></thead>' +\n        '<tbody>' + eyeRow(T('OD (Right)'), 'od', withAdd) + eyeRow(T('OS (Left)'), 'os', withAdd) + '</tbody></table>';\n    }\n    function pdBlockHtml() {\n      return '<div class=\"lfx-field\"><label style=\"text-transform:none;letter-spacing:0;font-size:13px\">' + T('PD (Pupillary Distance)') + '</label>' +\n        '<div style=\"display:flex;gap:10px\"><select id=\"lfx-pd\" class=\"lfx-sel\" style=\"max-width:200px\">' + selOpts(CFG.forms.current.pd, fPd) + '</select>' +\n        '<select id=\"lfx-pd-od\" class=\"lfx-sel\" style=\"max-width:140px;display:none\">' + selOpts(PD_EYE, fPd, T('Right PD')) + '</select>' +\n        '<select id=\"lfx-pd-os\" class=\"lfx-sel\" style=\"max-width:140px;display:none\">' + selOpts(PD_EYE, fPd, T('Left PD')) + '</select></div>' +\n        '<label class=\"lfx-check\" style=\"margin-top:8px\"><input type=\"checkbox\" id=\"lfx-dualpd\"> ' + T('2 PD numbers') + '</label>' +\n        '<div class=\"lfx-rx-note\">' + T('PD (Pupillary Distance) is the distance between your two pupils in millimeters. It should be included on your prescription. If there is no PD on your prescription, checking with your eye doctor is recommended.') + '</div></div>';\n    }\n    function noteBlockHtml() {\n      return '<div class=\"lfx-field\"><label style=\"text-transform:none;letter-spacing:0;font-size:13px\">' + T('Note') + '</label>' +\n        '<textarea class=\"lfx-textarea\" id=\"lfx-note\" placeholder=\"' + esc(T('Note your additional needs or prescription details')) + '\"></textarea></div>';\n    }\n    function prismBlockHtml() {\n      return '<label class=\"lfx-check\"><input type=\"checkbox\" id=\"lfx-prism\"> ' + T('Add Prism') + ' (+' + fmt(money10(CFG.prism ? CFG.prism.price : 0)) + ') <span class=\"lfx-help\" title=\"' + esc(T('We can process prism prescriptions to correct eye orientation.')) + '\">?</span></label>';\n    }\n    function collectRx() {\n      content.querySelectorAll('select[data-eye]').forEach(function (s) {\n        var eye = s.getAttribute('data-eye'), f = s.getAttribute('data-f');\n        if (st.rx[eye]) st.rx[eye][f] = s.value || '';\n      });\n      var pd = content.querySelector('#lfx-pd'), pdo = content.querySelector('#lfx-pd-od'), pds = content.querySelector('#lfx-pd-os');\n      var dual = content.querySelector('#lfx-dualpd');\n      st.rx.dualPd = !!(dual && dual.checked);\n      if (st.rx.dualPd) { st.rx.pdOd = pdo ? pdo.value : ''; st.rx.pdOs = pds ? pds.value : ''; st.rx.pd = ''; }\n      else st.rx.pd = pd ? pd.value : '';\n      var ta = content.querySelector('#lfx-note');\n      if (ta) st.note = ta.value.trim();\n      var pr = content.querySelector('#lfx-prism');\n      if (pr) st.prism = pr.checked;\n    }\n    function footNext(label, fn) {\n      foot.innerHTML = '<button type=\"button\" class=\"lfx-next\">' + label + '</button>';\n      foot.querySelector('.lfx-next').addEventListener('click', fn);\n    }\n    function footErr(msg) {\n      var e = foot.querySelector('.lfx-err');\n      if (e) e.remove();\n      foot.insertAdjacentHTML('afterbegin', '<span class=\"lfx-err\">' + esc(msg) + '</span>');\n    }\n\n    /* ---------- \u624B\u52A8\u5904\u65B9\u8868\u5355 ---------- */\n    function renderRxForm() {\n      var kind = (st.presc && st.presc.type) || 'singleVision';\n      var isProg = kind === 'progressive';\n      var isReading = kind === 'reading';\n      CFG.forms.current = isProg ? CFG.forms.progressive : (isReading ? CFG.forms.reading : CFG.forms.single);\n\n      if (isReading) {\n        content.innerHTML = '<h2 class=\"lfx-step-title\">' + T('Select a Magnification Strength') + '</h2>' +\n          '<div class=\"lfx-rx\"><div class=\"lfx-field\" style=\"margin-top:0\"><label style=\"text-transform:none;letter-spacing:0;font-size:13px\">' + T('Magnification strength (same for both eyes)') + '</label>' +\n          '<select id=\"lfx-mag\" class=\"lfx-sel\" style=\"max-width:220px\">' + selOpts(CFG.forms.current.mag, f2) + '</select>' +\n          '<div class=\"lfx-rx-note\">' + T('Choose the strength your reading glasses use. If unsure, start with +1.50 for typical reading distance.') + '</div></div>' +\n          prismBlockHtml() + noteBlockHtml() + '</div>';\n        footNext('Next', function () {\n          var m = content.querySelector('#lfx-mag').value;\n          if (!m) { footErr(T('Please select a magnification strength.')); return; }\n          st.rx.mag = m;\n          var pr = content.querySelector('#lfx-prism'); if (pr) st.prism = pr.checked;\n          var ta = content.querySelector('#lfx-note'); if (ta) st.note = ta.value.trim();\n          go('review');\n        });\n        return;\n      }\n\n      content.innerHTML = '<h2 class=\"lfx-step-title\">' + T(isProg ? 'Please input your progressive prescription' : 'Please input your single vision prescription') + '</h2>' +\n        '<div class=\"lfx-rx\">' + rxTableHtml(isProg ? 'progressive' : 'single') +\n        '<div style=\"display:flex;align-items:flex-start;gap:12px;margin-top:10px\"><div style=\"font-weight:700;font-size:13px;padding:9px 0\">PD</div><div style=\"flex:1\">' +\n        '<div style=\"display:flex;gap:10px;align-items:center\"><select id=\"lfx-pd\" class=\"lfx-sel\" style=\"max-width:180px\">' + selOpts(CFG.forms.current.pd, fPd) + '</select>' +\n        '<select id=\"lfx-pd-od\" class=\"lfx-sel\" style=\"max-width:130px;display:none\">' + selOpts(PD_EYE, fPd, T('Right PD')) + '</select>' +\n        '<select id=\"lfx-pd-os\" class=\"lfx-sel\" style=\"max-width:130px;display:none\">' + selOpts(PD_EYE, fPd, T('Left PD')) + '</select></div>' +\n        '<label class=\"lfx-check\" style=\"margin-top:8px\"><input type=\"checkbox\" id=\"lfx-dualpd\"> ' + T('2 PD numbers') + '</label>' +\n        '<div class=\"lfx-rx-note\">' + T('PD (Pupillary Distance) is the distance between your two pupils in millimeters. If there is no PD on your prescription, checking with your eye doctor is recommended.') + '</div></div></div>' +\n        prismBlockHtml() + noteBlockHtml() + '</div>';\n      var dual = content.querySelector('#lfx-dualpd');\n      dual.addEventListener('change', function () {\n        var on = dual.checked;\n        content.querySelector('#lfx-pd').style.display = on ? 'none' : '';\n        content.querySelector('#lfx-pd-od').style.display = on ? '' : 'none';\n        content.querySelector('#lfx-pd-os').style.display = on ? '' : 'none';\n      });\n      footNext('Next', function () {\n        collectRx();\n        if (!st.rx.od.sph || !st.rx.os.sph) { footErr(T('Please select SPH for both eyes.')); return; }\n        if (st.rx.dualPd && (!st.rx.pdOd || !st.rx.pdOs)) { footErr(T('Please select Right PD and Left PD.')); return; }\n        if (!st.rx.dualPd && !st.rx.pd && !isProg) { footErr(T('Please select your PD (or check with your eye doctor).')); return; }\n        go('review');\n      });\n    }\n\n    /* ---------- \u4E0A\u4F20\u5904\u65B9 ---------- */\n    function renderUpload() {\n      content.innerHTML = '<h2 class=\"lfx-step-title\">' + T('Upload your prescription file') + '</h2>' +\n        '<div class=\"lfx-rx\"><label class=\"lfx-file\" id=\"lfx-file-drop\">' +\n        '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"><path d=\"M12 16V4m0 0l-4 4m4-4l4 4\"/><path d=\"M4 16v3a2 2 0 002 2h12a2 2 0 002-2v-3\"/></svg>' +\n        '<span><span class=\"lfx-file-t\" id=\"lfx-file-name\">' + T('Choose a file') + '</span>' +\n        '<span class=\"lfx-file-h\">' + T('JPG, PNG or PDF \u00B7 max 10 MB') + '</span></span>' +\n        '<input type=\"file\" id=\"lfx-file\" accept=\".jpg,.jpeg,.png,.pdf,image/jpeg,image/png,application/pdf\"></label>' +\n        '<div style=\"display:flex;align-items:flex-start;gap:12px;margin-top:14px\"><div style=\"font-weight:700;font-size:13px;padding:9px 0\">PD</div><div style=\"flex:1\">' +\n        '<div style=\"display:flex;gap:10px\"><select id=\"lfx-pd\" class=\"lfx-sel\" style=\"max-width:180px\">' + selOpts(CFG.forms.current.pd, fPd) + '</select>' +\n        '<select id=\"lfx-pd-od\" class=\"lfx-sel\" style=\"max-width:130px;display:none\">' + selOpts(PD_EYE, fPd, T('Right PD')) + '</select>' +\n        '<select id=\"lfx-pd-os\" class=\"lfx-sel\" style=\"max-width:130px;display:none\">' + selOpts(PD_EYE, fPd, T('Left PD')) + '</select></div>' +\n        '<label class=\"lfx-check\" style=\"margin-top:8px\"><input type=\"checkbox\" id=\"lfx-dualpd\"> ' + T('2 PD numbers') + '</label></div></div>' +\n        noteBlockHtml() + '</div>';\n      CFG.forms.current = CFG.forms.single;\n      var input = content.querySelector('#lfx-file');\n      var drop = content.querySelector('#lfx-file-drop');\n      input.addEventListener('change', function () {\n        var f = input.files && input.files[0];\n        if (f) { st.file = f; drop.classList.add('has'); content.querySelector('#lfx-file-name').textContent = f.name; }\n      });\n      var dual = content.querySelector('#lfx-dualpd');\n      dual.addEventListener('change', function () {\n        var on = dual.checked;\n        content.querySelector('#lfx-pd').style.display = on ? 'none' : '';\n        content.querySelector('#lfx-pd-od').style.display = on ? '' : 'none';\n        content.querySelector('#lfx-pd-os').style.display = on ? '' : 'none';\n      });\n      footNext('Next', function () {\n        collectRx();\n        if (!st.file) { footErr(T('Please choose a prescription file to upload.')); return; }\n        if (st.rx.dualPd && (!st.rx.pdOd || !st.rx.pdOs)) { footErr(T('Please select Right PD and Left PD.')); return; }\n        go('review');\n      });\n    }\n\n    /* ---------- Review ---------- */\n    function rxRowsHtml() {\n      var kind = (st.presc && st.presc.type) || 'singleVision';\n      if (st.method === 'upload') {\n        return '<table class=\"lfx-rx-table\"><tr><th>' + T('Prescription file') + '</th></tr><tr><td>' + esc(st.file ? st.file.name : '') + '</td></tr>' +\n          (st.rx.pd ? '<tr><th>PD</th></tr><tr><td>' + esc(st.rx.pd) + '</td></tr>' :\n            (st.rx.dualPd ? '<tr><th>PD</th></tr><tr><td>OD ' + esc(st.rx.pdOd) + ' / OS ' + esc(st.rx.pdOs) + '</td></tr>' : '')) + '</table>';\n      }\n      if (st.method === 'email') {\n        return '<table class=\"lfx-rx-table\"><tr><th>' + T('Prescription') + '</th></tr><tr><td>' + T('Will be provided by email after the order') + '</td></tr></table>';\n      }\n      if (kind === 'reading') {\n        return '<table class=\"lfx-rx-table\"><tr><th></th><th>' + T('Magnification') + '</th></tr><tr><td>' + T('Both eyes') + '</td><td>' + esc(st.rx.mag) + '</td></tr></table>';\n      }\n      var isProg = kind === 'progressive';\n      function row(l, e) {\n        return '<tr><td>' + l + '</td><td>' + esc(e.sph || '\u2014') + '</td><td>' + esc(e.cyl || '0.00') + '</td><td>' + esc(e.axis || '\u2014') + '</td>' +\n          (isProg ? '<td>' + esc(e.add || '\u2014') + '</td>' : '') + '</tr>';\n      }\n      var pdVal = st.rx.dualPd ? ('OD ' + esc(st.rx.pdOd) + ' / OS ' + esc(st.rx.pdOs)) : esc(st.rx.pd || '\u2014');\n      var cols = isProg ? 5 : 4;\n      return '<table class=\"lfx-rx-table\"><thead><tr><th></th><th>SPH</th><th>CYL</th><th>AXIS</th>' + (isProg ? '<th>ADD</th>' : '') + '</tr></thead><tbody>' +\n        row(T('OD (Right)'), st.rx.od) + row(T('OS (Left)'), st.rx.os) +\n        '<tr><td>PD</td><td colspan=\"' + cols + '\">' + pdVal + '</td></tr>' +\n        '</tbody></table>';\n    }\n    function rvPrice(p, ca) {\n      var pc = money10(p), cac = ca ? money10(ca) : 0;\n      return cac > pc ? '<s>' + fmt(cac) + '</s>' + fmt(pc) : fmt(pc);\n    }\n    function renderReview() {\n      var f = curFrameVariant();\n      var lensLine = st.lens ? esc(st.lensType.title) + ' \u00B7 ' + esc(st.lens.title) : '';\n      var lines = '<div class=\"lfx-rv-item\"><span>' + esc(PROD.title) + (f && f.public_title ? ' \u2014 ' + esc(f.public_title) : '') + '</span><span>' + fmt(f.price) + '</span></div>';\n      if (st.lens) lines += '<div class=\"lfx-rv-item\"><span>' + lensLine + '</span><span>' + rvPrice(st.lens.price, st.lens.ca) + '</span></div>';\n      if (st.prism && CFG.prism) lines += '<div class=\"lfx-rv-item\"><span>' + T('Prism correction') + '</span><span>+' + fmt(money10(CFG.prism.price)) + '</span></div>';\n      content.innerHTML = '<h2 class=\"lfx-step-title\">' + T('Review your order') + '</h2>' +\n        '<div class=\"lfx-rv\"><div style=\"text-align:center;margin:6px 0 14px\"><img src=\"' + variantImg(f) + '\" alt=\"\" style=\"max-width:200px;max-height:150px;object-fit:contain\"></div>' +\n        rxRowsHtml() + lines +\n        '<div class=\"lfx-rv-total\"><span>' + T('Grand total') + '</span><span>' + fmt(grandTotal()) + '</span></div>' +\n        FXNOTE() +\n        (st.method !== 'manual' ? '<div class=\"lfx-field\">' + noteBlockHtml() + '</div>' : '') +\n        '</div>';\n      var ta = content.querySelector('#lfx-note');\n      if (ta) { ta.value = st.note || ''; ta.addEventListener('input', function () { st.note = ta.value.trim(); }); }\n      var btnEl = '<button type=\"button\" class=\"lfx-next\" id=\"lfx-atc\">' + T('Add to cart') + '</button>';\n      foot.innerHTML = '<span class=\"lfx-total\">' + T('Total') + ' <b>' + fmt(grandTotal()) + '</b></span>' + btnEl;\n      foot.querySelector('#lfx-atc').addEventListener('click', addToCart);\n    }\n\n    /* ---------- \u52A0\u8D2D ---------- */\n    function visibleProps(fv) {\n      var kind = (st.presc && st.presc.type) || 'singleVision';\n      var p = {\n        'Prescription type': st.presc ? st.presc.title : '',\n        'Lens type': st.lensType ? st.lensType.title : '',\n        'Lens index': st.lens ? st.lens.title : ''\n      };\n      if (st.method === 'manual') {\n        if (kind === 'reading') {\n          p['Magnification strength'] = st.rx.mag;\n        } else {\n          p['OD (Right)'] = st.rx.od.sph + ' | ' + (st.rx.od.cyl || '0.00') + ' | ' + (st.rx.od.axis || '000') + (st.rx.od.add ? ' | ADD ' + st.rx.od.add : '');\n          p['OS (Left)'] = st.rx.os.sph + ' | ' + (st.rx.os.cyl || '0.00') + ' | ' + (st.rx.os.axis || '000') + (st.rx.os.add ? ' | ADD ' + st.rx.os.add : '');\n          p['PD'] = st.rx.dualPd ? ('OD ' + st.rx.pdOd + ' / OS ' + st.rx.pdOs) : (st.rx.pd || 'Not provided');\n        }\n      } else if (st.method === 'upload') {\n        p['Prescription'] = 'Uploaded file';\n        p['PD'] = st.rx.dualPd ? ('OD ' + st.rx.pdOd + ' / OS ' + st.rx.pdOs) : (st.rx.pd || '');\n      } else {\n        p['Prescription'] = 'To be emailed after order';\n      }\n      if (st.prism && CFG.prism) p['Prism'] = 'Yes';\n      if (st.note) p['Note'] = st.note;\n      if (st.lens && st.lens.color) p['Lens color'] = st.lens.color;\n      return p;\n    }\n    function addToCart() {\n      var btnAtc = foot.querySelector('#lfx-atc');\n      btnAtc.disabled = true; btnAtc.textContent = T('Adding\u2026');\n      var fv = curFrameVariant();\n      var key = 'lfx' + Date.now();\n      var lensOpt = st.lens;\n      var ids = [String(fv.id), lensOpt ? lensOpt.vid : ''];\n      if (st.prism && CFG.prism) ids.push(CFG.prism.vid);\n      var base = visibleProps(fv);\n      var items = [];\n      var fp = Object.assign({}, base, { '_bundle': key, '_bundle_ids': ids.join(','), '_type': 'frame', 'Frame': PROD.title });\n      items.push({ id: Number(fv.id), quantity: 1, properties: fp });\n      if (lensOpt) items.push({ id: Number(lensOpt.vid), quantity: 1, properties: { '_bundle': key, '_bundle_ids': ids.join(','), '_type': 'lens', 'Lens': st.lensType.title + ' - ' + lensOpt.title } });\n      if (st.prism && CFG.prism) items.push({ id: Number(CFG.prism.vid), quantity: 1, properties: { '_bundle': key, '_bundle_ids': ids.join(','), '_type': 'prism' } });\n\n      var hasFile = st.method === 'upload' && st.file;\n      function jsonAdd(list, noteExtra) {\n        var body = { items: list.map(function (it) {\n          var p2 = Object.assign({}, it.properties);\n          if (noteExtra) p2['Note'] = (p2['Note'] ? p2['Note'] + ' \u00B7 ' : '') + noteExtra;\n          return { id: it.id, quantity: it.quantity, properties: p2 };\n        }) };\n        return fetch('/cart/add.js', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(body) })\n          .then(function (r) { if (!r.ok) return r.json().then(function (e) { throw new Error(e.description || 'add failed'); }); });\n      }\n      var p;\n      if (hasFile) {\n        var fd = new FormData();\n        items.forEach(function (it, i) {\n          fd.append('items[' + i + '][id]', it.id);\n          fd.append('items[' + i + '][quantity]', it.quantity);\n          Object.keys(it.properties).forEach(function (k) {\n            fd.append('items[' + i + '][properties][' + k + ']', it.properties[k]);\n          });\n        });\n        fd.append('items[0][properties][Prescription file]', st.file, st.file.name);\n        p = fetch('/cart/add.js', { method: 'POST', body: fd }).then(function (r) {\n          if (!r.ok) throw new Error('upload-add failed');\n        }).catch(function () {\n          // \u4E0A\u4F20\u5C5E\u6027\u5931\u8D25 \u2192 \u9000\u5316\u4E3A JSON \u52A0\u8D2D\uFF08\u6587\u4EF6\u540D\u8FDB Note\uFF0C\u63D0\u9192\u90AE\u4EF6\u53D1\u9001\uFF09\n          return jsonAdd(items, 'Prescription file: ' + st.file.name + ' (please email it to support@irisharp.com)');\n        });\n      } else {\n        p = jsonAdd(items);\n      }\n      p.then(function () { window.location.href = '/cart'; })\n       .catch(function (e) {\n         btnAtc.disabled = false; btnAtc.textContent = T('Add to cart');\n         footErr(T('Failed to add to cart:') + ' ' + (e.message || ''));\n       });\n    }\n  }\n})();\n"],
  "mappings": "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",
  "names": []
}
