{
  "version": 3,
  "sources": ["/cdn/shop/t/221/assets/eyebuddy-rx-flow.js?ebv=20260929-cart-upload-v1"],
  "sourcesContent": ["/* eyebuddy-rx-flow.js \u2014 EyeBuddy lens wizard.\n   Public flow: Single Vision / Multifocal / Non-Prescription / Frame Only. */\n(function () {\n  'use strict';\n\n  var root = document.querySelector('[data-eb-rxflow]');\n  if (!root || root.dataset.ebInit) return;\n  root.dataset.ebInit = '1';\n\n  var CFG;\n  try {\n    CFG = JSON.parse(root.querySelector('[data-eb-rxflow-config]').textContent);\n  } catch (e) {\n    console.error('[eb-rxflow] bad config JSON', e);\n    return;\n  }\n\n  var $ = function (sel) { return root.querySelector(sel); };\n  var money = function (n) { return '$' + Number(n || 0).toFixed(2) + ' USD'; };\n  var fmtP = function (v) { var n = parseFloat(v) || 0; return (n > 0 ? '+' : '') + n.toFixed(2); };\n  var fmtRange = function (min, max, plusFirst) {\n    if (Math.abs(min) === Math.abs(max)) {\n      return plusFirst ? fmtP(min) + ' to ' + fmtP(max) : 'up to \\u00b1' + Math.abs(Number(max || 0)).toFixed(2);\n    }\n    return fmtP(min) + ' to ' + fmtP(max);\n  };\n  var esc = function (s) {\n    return String(s == null ? '' : s).replace(/[&<>\"']/g, function (c) {\n      return { '&': '&amp;', '<': '&lt;', '>': '&gt;', '\"': '&quot;', \"'\": '&#39;' }[c];\n    });\n  };\n  function toast(msg) {\n    var t = $('[data-eb-toast]');\n    if (!t) return;\n    t.textContent = msg;\n    t.classList.add('eb-toast--show');\n    setTimeout(function () { t.classList.remove('eb-toast--show'); }, 2200);\n  }\n\n  var V = {\n    blue: 56173391446308,\n    photo: 56173380075812,\n    classic: 56173380174116,\n    gradient: 56173380272420,\n    polarized: 56173380305188,\n    mirrored: 56173380370724,\n    hi161: 56173873135908,\n    hi167: 56173392298276,\n    hi174: 56173380436260,\n    pcStd: 56173378339108,\n    pcHigh: 56173378568484,\n    pcUltra: 56173379092772,\n    trivexStd: 56173380796708,\n    trivexAdv: 56173380960548,\n    progressive: 56173380993316,\n    bifocal: 56173381091620\n  };\n\n  var IMG = {\n    clear: 'https://cdn.shopify.com/s/files/1/0888/0590/0580/files/lens-flow-clear-clear_160x160.png?v=1788067862',\n    blue: 'https://cdn.shopify.com/s/files/1/0888/0590/0580/files/lens-flow-blue-light-blue-light_160x160.png?v=1788067696',\n    photo: 'https://cdn.shopify.com/s/files/1/0888/0590/0580/files/lens-flow-photochromic-Photochromic-grey_160x160.gif?v=1788067699',\n    classic: 'https://cdn.shopify.com/s/files/1/0888/0590/0580/files/lens-flow-sun-classic-tint-Classic_Tint-brown_160x160.png?v=1788068324',\n    classicGray: 'https://cdn.shopify.com/s/files/1/0888/0590/0580/files/lens-flow-sun-classic-tint-Classic_Tint-gery_160x160.png?v=1788068324',\n    classicBrown: 'https://cdn.shopify.com/s/files/1/0888/0590/0580/files/lens-flow-sun-classic-tint-Classic_Tint-brown_160x160.png?v=1788068324',\n    classicGreen: 'https://cdn.shopify.com/s/files/1/0888/0590/0580/files/lens-flow-sun-classic-tint-Classic_Tint-green_160x160.png?v=1788068324',\n    gradient: 'https://cdn.shopify.com/s/files/1/0888/0590/0580/files/lens-flow-sun-gradient-tint-Gradient_Tint-blue_160x160.png?v=1788067718',\n    gradientBlue: 'https://cdn.shopify.com/s/files/1/0888/0590/0580/files/lens-flow-sun-gradient-tint-Gradient_Tint-blue_160x160.png?v=1788067718',\n    gradientBrown: 'https://cdn.shopify.com/s/files/1/0888/0590/0580/files/lens-flow-sun-gradient-tint-Gradient_Tint-brown_160x160.png?v=1788067718',\n    gradientGray: 'https://cdn.shopify.com/s/files/1/0888/0590/0580/files/lens-flow-sun-gradient-tint-Gradient_Tint-grey_160x160.png?v=1788067718',\n    gradientRed: 'https://cdn.shopify.com/s/files/1/0888/0590/0580/files/lens-flow-sun-gradient-tint-Gradient_Tint-red_160x160.png?v=1788067718',\n    mirrored: 'https://cdn.shopify.com/s/files/1/0888/0590/0580/files/lens-flow-sun-mirrored-Mirrored-blue_160x160.png?v=1788067720',\n    mirroredBlue: 'https://cdn.shopify.com/s/files/1/0888/0590/0580/files/lens-flow-sun-mirrored-Mirrored-blue_160x160.png?v=1788067720',\n    mirroredGold: 'https://cdn.shopify.com/s/files/1/0888/0590/0580/files/lens-flow-sun-mirrored-Mirrored-gold_160x160.png?v=1788067720',\n    mirroredGreen: 'https://cdn.shopify.com/s/files/1/0888/0590/0580/files/lens-flow-sun-mirrored-Mirrored-green_160x160.png?v=1788067720',\n    mirroredSilver: 'https://cdn.shopify.com/s/files/1/0888/0590/0580/files/lens-flow-sun-mirrored-Mirrored-grey_160x160.png?v=1788067720',\n    mirroredOrange: 'https://cdn.shopify.com/s/files/1/0888/0590/0580/files/lens-flow-sun-mirrored-Mirrored-orange_160x160.png?v=1788067720',\n    mirroredPurple: 'https://cdn.shopify.com/s/files/1/0888/0590/0580/files/lens-flow-sun-mirrored-Mirrored-purple_160x160.png?v=1788067720',\n    mirroredRed: 'https://cdn.shopify.com/s/files/1/0888/0590/0580/files/lens-flow-sun-mirrored-Mirrored-red_160x160.png?v=1788067720',\n    polarized: 'https://cdn.shopify.com/s/files/1/0888/0590/0580/files/lens-flow-sun-polarized-Polarized-brown_160x160.png?v=1788067723',\n    polarizedBrown: 'https://cdn.shopify.com/s/files/1/0888/0590/0580/files/lens-flow-sun-polarized-Polarized-brown_160x160.png?v=1788067723',\n    polarizedGreen: 'https://cdn.shopify.com/s/files/1/0888/0590/0580/files/lens-flow-sun-polarized-Polarized-green_160x160.png?v=1788067723',\n    polarizedGray: 'https://cdn.shopify.com/s/files/1/0888/0590/0580/files/lens-flow-sun-polarized-Polarized-grey_160x160.png?v=1788067723',\n    hi161: 'https://cdn.shopify.com/s/files/1/0888/0590/0580/files/lens-flow-161-high-index-high-index_1.61_160x160.png?v=1788067690',\n    hi167: 'https://cdn.shopify.com/s/files/1/0888/0590/0580/files/lens-flow-167-high-index-high-index_1.67_160x160.png?v=1788067692',\n    hi174: 'https://cdn.shopify.com/s/files/1/0888/0590/0580/files/lens-flow-174-high-index-high-index_1.74_160x160.png?v=1788067694',\n    pcStd: 'https://cdn.shopify.com/s/files/1/0888/0590/0580/files/lens-flow-polycarbonate-standard-Polycarbonate_Standard_160x160.png?v=1788067701',\n    pcHigh: 'https://cdn.shopify.com/s/files/1/0888/0590/0580/files/lens-flow-polycarbonate-high-astigmatism-Astigmatism_Polycarbonate_High_160x160.png?v=1788067703',\n    pcUltra: 'https://cdn.shopify.com/s/files/1/0888/0590/0580/files/lens-flow-polycarbonate-ultra-high-astigmatism-Astigmatism_Polycarbonate_Ultra_High_160x160.png?v=1788067707',\n    trivexStd: 'https://cdn.shopify.com/s/files/1/0888/0590/0580/files/lens-flow-standard-trivex-Standard_Trivex_160x160.png?v=1788067709',\n    trivexAdv: 'https://cdn.shopify.com/s/files/1/0888/0590/0580/files/lens-flow-advanced-trivex-Advanced_Trivex_160x160.png?v=1788067711',\n    progressive: 'https://cdn.shopify.com/s/files/1/0888/0590/0580/files/lens-flow-progressive-clear_160x160.png?v=1788067713',\n    bifocal: 'https://cdn.shopify.com/s/files/1/0888/0590/0580/files/lens-flow-bifocal-Bifocal_160x160.png?v=1788067715'\n  };\n\n  var DATA = {\n    types: [\n      { id: 'single', t: 'Single Vision', ic: 'rx-single', d: 'One prescription power for everyday distance or general wear.' },\n      { id: 'multifocal', t: 'Multifocal', ic: 'rx-multi', d: 'Progressive or bifocal lenses when your Rx includes ADD.' },\n      { id: 'nonrx', t: 'Non-Prescription', ic: 'rx-plano', d: 'No Rx needed. Choose clear, blue-light, photochromic, or sun lenses.' },\n      { id: 'frame', t: 'Frame Only', ic: 'frame-only', d: 'Just the frame, no lenses.' }\n    ],\n    singleOptions: [\n      { id: 'clear', t: 'Clear', price: 0, img: IMG.clear, ic: 'lens-clear', d: 'Clear everyday prescription lenses.' },\n      { id: 'blue', t: 'Blue Light', price: 10, variantId: V.blue, img: IMG.blue, ic: 'lens-blue', d: 'Blue-light filtering for school and screen time.' },\n      { id: 'photo', t: 'Photochromic', price: 40, variantId: V.photo, img: IMG.photo, ic: 'lens-photo', d: 'Turns gray outdoors and clear indoors.' },\n      { id: 'sun', t: 'Sunglasses', price: 0, img: IMG.polarizedGray, ic: 'lens-sun', d: 'Prescription sun lenses for bright days.' }\n    ],\n    nonrxOptions: [\n      { id: 'clear', t: 'Clear', price: 0, img: IMG.clear, ic: 'lens-clear', d: 'Clear lenses without prescription power.' },\n      { id: 'blue', t: 'Blue Light', price: 10, variantId: V.blue, img: IMG.blue, ic: 'lens-blue', d: 'Screen-time comfort without prescription power.' },\n      { id: 'photo', t: 'Photochromic', price: 40, variantId: V.photo, img: IMG.photo, ic: 'lens-photo', d: 'Turns gray outdoors and clear indoors.' },\n      { id: 'sun', t: 'Sunglasses', price: 0, img: IMG.polarizedGray, ic: 'lens-sun', d: 'Non-Rx sun lenses for outdoor wear.' }\n    ],\n    sun: [\n      { id: 'classic', t: 'Classic Tint', price: 19, variantId: V.classic, img: IMG.classic, ic: 'tint-classic', d: 'Solid tint for everyday sun protection.' },\n      { id: 'gradient', t: 'Gradient Tint', price: 25, variantId: V.gradient, img: IMG.gradient, ic: 'tint-gradient', d: 'Dark on top, lighter below.' },\n      { id: 'mirrored', t: 'Mirrored', price: 29, variantId: V.mirrored, img: IMG.mirrored, ic: 'tint-mirror', d: 'Reflective sun coating with a bold look.' },\n      { id: 'polarized', t: 'Polarized', price: 39, variantId: V.polarized, img: IMG.polarized, ic: 'tint-polarized', d: 'Reduces glare from roads, water, and snow.' }\n    ],\n    sunColors: {\n      classic: [\n        { id: 'gray', t: 'Gray', variantId: 56173380174116, img: IMG.classicGray, swatch: 'gray', d: 'Classic solid gray tint.' },\n        { id: 'brown', t: 'Brown / Tea', variantId: 67694317437220, img: IMG.classicBrown, swatch: 'brown', d: 'Classic warm brown tint.' },\n        { id: 'green', t: 'Green', variantId: 67694317469988, img: IMG.classicGreen, swatch: 'green', d: 'Classic green sun tint.' }\n      ],\n      gradient: [\n        { id: 'gray-gradient', t: 'Gray Gradient', variantId: 56173380272420, img: IMG.gradientGray, swatch: 'gray-gradient', d: 'Darker gray on top, lighter below.' },\n        { id: 'brown-gradient', t: 'Brown Gradient', variantId: 67694317502756, img: IMG.gradientBrown, swatch: 'brown-gradient', d: 'Darker brown on top, lighter below.' },\n        { id: 'rose-red-gradient', t: 'Rose / Red Gradient', variantId: 67694317535524, img: IMG.gradientRed, swatch: 'red-gradient', d: 'Warm red gradient tint.' },\n        { id: 'blue-purple-gradient', t: 'Blue / Purple Gradient', variantId: 67694317568292, img: IMG.gradientBlue, swatch: 'blue-gradient', d: 'Cool blue gradient tint.' }\n      ],\n      mirrored: [\n        { id: 'silver', t: 'Silver', variantId: 67694317732132, img: IMG.mirroredSilver, swatch: 'silver-mirror', d: 'Reflective silver mirror finish.' },\n        { id: 'blue', t: 'Blue', variantId: 67694317601060, img: IMG.mirroredBlue, swatch: 'blue-mirror', d: 'Reflective blue mirror finish.' },\n        { id: 'gold', t: 'Gold', variantId: 67694317633828, img: IMG.mirroredGold, swatch: 'gold-mirror', d: 'Reflective gold mirror finish.' },\n        { id: 'green', t: 'Green', variantId: 67694317666596, img: IMG.mirroredGreen, swatch: 'green-mirror', d: 'Reflective green mirror finish.' },\n        { id: 'red-pink', t: 'Red / Pink', variantId: 67694317699364, img: IMG.mirroredRed, swatch: 'red-mirror', d: 'Reflective red-pink mirror finish.' },\n        { id: 'purple', t: 'Purple', variantId: 56173380370724, img: IMG.mirroredPurple, swatch: 'purple-mirror', d: 'Reflective purple mirror finish.' },\n        { id: 'orange', t: 'Orange', variantId: 67694317764900, img: IMG.mirroredOrange, swatch: 'orange-mirror', d: 'Reflective orange mirror finish.' }\n      ],\n      polarized: [\n        { id: 'polarized-gray', t: 'Polarized Gray', variantId: 56173380305188, img: IMG.polarizedGray, swatch: 'gray', d: 'Polarized gray sun lens.' },\n        { id: 'polarized-brown', t: 'Polarized Brown', variantId: 67694317797668, img: IMG.polarizedBrown, swatch: 'brown', d: 'Polarized brown sun lens.' },\n        { id: 'polarized-green', t: 'Polarized Green', variantId: 67694317830436, img: IMG.polarizedGreen, swatch: 'green', d: 'Polarized green sun lens.' }\n      ]\n    },\n    multiTypes: [\n      { id: 'progressive', t: 'Progressive', price: 50, variantId: V.progressive, img: IMG.progressive, ic: 'lens-progressive', d: 'No-line lens for distance to near vision.' },\n      { id: 'bifocal', t: 'Bifocal', price: 30, variantId: V.bifocal, img: IMG.bifocal, ic: 'lens-bifocal', d: 'Two-zone lens when bifocal is written on the Rx.' }\n    ],\n    multiOptions: [\n      { id: 'clear', t: 'Clear', price: 0, img: IMG.clear, ic: 'lens-clear', d: 'Clear multifocal lenses.' },\n      { id: 'blue', t: 'Blue Light', price: 10, variantId: V.blue, img: IMG.blue, ic: 'lens-blue', d: 'Adds blue-light filtering.' }\n    ],\n    singleMaterials: [\n      { id: 'hi161', group: 'High-Index', t: '1.61 High-Index', price: 35, variantId: V.hi161, img: IMG.hi161, sphMin: -6, sphMax: 6, cylMin: -2, cylMax: 2, blockSun: ['polarized'], d: 'Thinner and lighter.' },\n      { id: 'hi167', group: 'High-Index', t: '1.67 High-Index', price: 48, variantId: V.hi167, img: IMG.hi167, sphMin: -10, sphMax: 8, cylMin: -4, cylMax: 4, blockSun: ['polarized'], d: 'Slimmer for stronger prescriptions.' },\n      { id: 'hi174', group: 'High-Index', t: '1.74 High-Index', price: 119, variantId: V.hi174, img: IMG.hi174, sphMin: -15, sphMax: 10, cylMin: -6, cylMax: 6, d: 'Our thinnest lens for strong prescriptions. Custom-made lens.' },\n      { id: 'pcStd', group: 'Polycarbonate', t: 'Standard Polycarbonate', price: 19, variantId: V.pcStd, img: IMG.pcStd, sphMin: -3, sphMax: 3, cylMin: -1, cylMax: 1, d: 'Lightweight and impact-resistant.' },\n      { id: 'pcHigh', group: 'Polycarbonate', t: 'Advanced Polycarbonate', price: 29, variantId: V.pcHigh, img: IMG.pcHigh, sphMin: -6, sphMax: 4, cylMin: -2, cylMax: 2, d: 'Durable for stronger prescriptions.' },\n      { id: 'pcUltra', group: 'Polycarbonate', t: 'Complex Polycarbonate', price: 79, variantId: V.pcUltra, img: IMG.pcUltra, sphMin: -15, sphMax: 8, cylMin: -6, cylMax: 6, d: 'Made for high prescriptions and astigmatism. Custom-made lens.' },\n      { id: 'trivexStd', group: 'Trivex', t: 'Standard Trivex', price: 99, variantId: V.trivexStd, img: IMG.trivexStd, sphMin: -6, sphMax: 4, cylMin: -2, cylMax: 2, d: 'Lightweight, clear, and durable.' },\n      { id: 'trivexAdv', group: 'Trivex', t: 'Advanced Trivex', price: 159, variantId: V.trivexAdv, img: IMG.trivexAdv, sphMin: -10, sphMax: 8, cylMin: -4, cylMax: 4, d: 'Premium clarity for stronger prescriptions. Custom-made lens.' }\n    ],\n    multiMaterials: [\n      { id: 'pcStd', group: 'Polycarbonate', t: 'Standard Polycarbonate', price: 19, variantId: V.pcStd, img: IMG.pcStd, sphMin: -3, sphMax: 3, cylMin: -1, cylMax: 1, d: 'Lightweight and impact-resistant.' },\n      { id: 'pcHigh', group: 'Polycarbonate', t: 'Advanced Polycarbonate', price: 29, variantId: V.pcHigh, img: IMG.pcHigh, sphMin: -6, sphMax: 4, cylMin: -2, cylMax: 2, d: 'Durable for stronger prescriptions.' },\n      { id: 'pcUltra', group: 'Polycarbonate', t: 'Complex Polycarbonate', price: 79, variantId: V.pcUltra, img: IMG.pcUltra, sphMin: -15, sphMax: 8, cylMin: -6, cylMax: 6, d: 'Made for high prescriptions and astigmatism. Custom-made lens.' }\n    ]\n  };\n\n  function applyShopifyPrices(list) {\n    (list || []).forEach(function (item) {\n      if (!item || !item.variantId || !CFG.variantPrices) return;\n      var livePrice = Number(CFG.variantPrices[String(item.variantId)]);\n      if (isFinite(livePrice) && livePrice >= 0) item.price = livePrice;\n    });\n  }\n  [DATA.singleOptions, DATA.nonrxOptions, DATA.sun, DATA.multiTypes, DATA.multiOptions, DATA.singleMaterials, DATA.multiMaterials].forEach(applyShopifyPrices);\n\n  var state = {\n    type: null, lensOption: null, sunStyle: null, sunColor: null, multiType: null, multiOption: null, materialGroup: null, material: null,\n    method: null, addons: [], notes: '', forName: '', birthYear: '', added: false, busy: false, rxStashDismissed: false, materialConfirmId: null,\n    rx: {\n      od: { sph: '0.00', cyl: '0.00', axis: '', add: '0.00', prismH: '', baseH: '', prismV: '', baseV: '' },\n      os: { sph: '0.00', cyl: '0.00', axis: '', add: '0.00', prismH: '', baseH: '', prismV: '', baseV: '' },\n      hasPrism: false, pdMode: 'single', pd: '', pdR: '', pdL: '', pdHelp: false, file: '', fileObject: null, cartFileObject: null, cartFilePromise: null, previewUrl: '', previewType: '',\n      ocrStage: 'idle', ocrProgress: 0, ocrConfidence: 0, ocrMissing: [], ocrError: '', ocrSource: ''\n    }\n  };\n  var stepIdx = 0;\n  var renderedOnce = false;\n  var RX_STASH_KEY = 'eb-rx-stash';\n  var RX_STASH_TTL = 2 * 60 * 60 * 1000;\n\n  function hasAddons() { return !!(CFG.addons && CFG.addons.length); }\n  function needsRx() { return state.type === 'single' || state.type === 'multifocal'; }\n  function needsAdd() { return state.type === 'multifocal'; }\n  function needsSunStep() { return (state.type === 'single' || state.type === 'nonrx') && state.lensOption === 'sun'; }\n  function needsMaterial() { return state.type === 'single' || state.type === 'multifocal'; }\n  function flowSteps() {\n    var steps = ['type'];\n    if (!state.type) return steps;\n    if (state.type === 'frame') {\n      if (hasAddons()) steps.push('addons');\n      steps.push('review');\n      return steps;\n    }\n    if (state.type === 'multifocal') steps.push('multitype', 'lens');\n    else steps.push('lens');\n    if (needsSunStep()) steps.push('sun', 'suncolor');\n    if (needsRx()) {\n      steps.push('method');\n      if (state.method === 'manual' || state.method === 'upload') steps.push('rx');\n    }\n    if (needsMaterial()) steps.push('material');\n    if (hasAddons() && state.type !== 'nonrx') steps.push('addons');\n    steps.push('review');\n    return steps;\n  }\n  var cur = function () { var s = flowSteps(); if (stepIdx >= s.length) stepIdx = s.length - 1; return s[stepIdx]; };\n\n  function copyEye(eye) {\n    var e = state.rx[eye];\n    return { sph: e.sph, cyl: e.cyl, axis: e.axis || '', add: e.add || '0.00', prismH: e.prismH || '', baseH: e.baseH || '', prismV: e.prismV || '', baseV: e.baseV || '' };\n  }\n  function restoreEye(saved) {\n    saved = saved || {};\n    return { sph: saved.sph || '0.00', cyl: saved.cyl || '0.00', axis: saved.axis || '', add: saved.add || '0.00', prismH: saved.prismH || '', baseH: saved.baseH || '', prismV: saved.prismV || '', baseV: saved.baseV || '' };\n  }\n  function rxStashLoad() {\n    try {\n      var s = JSON.parse(sessionStorage.getItem(RX_STASH_KEY));\n      if (!s || !s.ts || (Date.now() - s.ts) > RX_STASH_TTL || !s.od || !s.os) return null;\n      return s;\n    } catch (e) { return null; }\n  }\n  function rxStashSave() {\n    try {\n      sessionStorage.setItem(RX_STASH_KEY, JSON.stringify({\n        od: copyEye('od'), os: copyEye('os'), hasPrism: state.rx.hasPrism,\n        pdMode: state.rx.pdMode, pd: state.rx.pd, pdR: state.rx.pdR, pdL: state.rx.pdL, pdHelp: state.rx.pdHelp, ts: Date.now()\n      }));\n    } catch (e) {}\n  }\n  function rxStashSummary(s) {\n    var eye = function (e) {\n      var ax = parseFloat(e.cyl) !== 0 && e.axis ? ' | x' + String(e.axis).padStart(3, '0') : '';\n      var add = parseFloat(e.add) > 0 || (needsAdd() && Number.isFinite(parseFloat(e.add))) ? ' | ADD ' + fmtP(e.add) : '';\n      var prism = prismString(e);\n      return fmtP(e.sph) + ' | ' + fmtP(e.cyl) + ax + add + (prism ? ' | Prism ' + prism : '');\n    };\n    var pd = s.pdHelp ? 'Customer needs help' : s.pdMode === 'dual' ? 'Dual | R ' + s.pdR + ' / L ' + s.pdL : 'Single | ' + s.pd;\n    return 'OD ' + eye(s.od) + ' / OS ' + eye(s.os) + ' / PD ' + pd;\n  }\n\n  function themeVariantInput() {\n    var main = document.querySelector('form[x-ref=\"productForm\"] [name=\"id\"]');\n    if (main) return main;\n\n    var forms = document.querySelectorAll('form[action*=\"/cart/add\"]');\n    for (var i = 0; i < forms.length; i++) {\n      if (forms[i].hasAttribute('data-eb-form')) continue;\n      var el = forms[i].querySelector('[name=\"id\"]');\n      if (el) return el;\n    }\n    return null;\n  }\n  function currentVariant() {\n    var el = themeVariantInput();\n    var id = el ? Number(el.value) : CFG.frame.firstAvailable;\n    var v = null;\n    for (var i = 0; i < CFG.frame.variants.length; i++) {\n      if (CFG.frame.variants[i].id === id) { v = CFG.frame.variants[i]; break; }\n    }\n    return v || CFG.frame.variants[0];\n  }\n  function syncFrameVariantInput(v) {\n    var input = $('[data-eb-frame-variant-id]');\n    var variant = v || currentVariant();\n    if (input && variant) input.value = String(variant.id);\n  }\n  function frameName(v) {\n    return CFG.frame.hasOnlyDefaultVariant ? CFG.frame.title : CFG.frame.title + ' - ' + v.title;\n  }\n  function framePdRange() {\n    return String(CFG.frame.pdRange || '').trim();\n  }\n  function customerPdValue() {\n    if (!needsRx() || state.method === 'later' || state.rx.pdHelp) return null;\n    if (state.rx.pdMode === 'dual') {\n      var right = parseFloat(state.rx.pdR), left = parseFloat(state.rx.pdL);\n      return isFinite(right) && isFinite(left) ? right + left : null;\n    }\n    var single = parseFloat(state.rx.pd);\n    return isFinite(single) ? single : null;\n  }\n  function birthYearPdRange() {\n    var year = parseInt(state.birthYear, 10);\n    if (!isFinite(year)) return '';\n    var age = Math.max(1, Math.min(18, new Date().getFullYear() - year));\n    function maleMean(age) { return 43.36 + 1.663 * age - 0.034 * age * age; }\n    function femaleMean(age) { return 41.76 + 1.891 * age - 0.052 * age * age; }\n    return Math.round((femaleMean(age) + maleMean(age)) / 2) + ' mm';\n  }\n  function birthYearOrderString() {\n    var range = birthYearPdRange();\n    return range ? state.birthYear + ' PD avg: ' + range : state.birthYear;\n  }\n  function framePdFitStatus() {\n    var range = framePdRange(), pd = customerPdValue();\n    if (!range || pd == null) return '';\n    var values = range.match(/\\d+(?:\\.\\d+)?/g);\n    if (!values || values.length < 2) return '';\n    var min = parseFloat(values[0]), max = parseFloat(values[1]);\n    if (!isFinite(min) || !isFinite(max)) return '';\n    if (pd < min) return 'Review required - customer PD ' + pd.toFixed(2) + ' mm is below the frame range';\n    if (pd > max) return 'Review required - customer PD ' + pd.toFixed(2) + ' mm is above the frame range';\n    return 'Within listed range - customer PD ' + pd.toFixed(2) + ' mm';\n  }\n  function renderFramePdWarning(el) {\n    var warning = el.querySelector('[data-eb-frame-pd-warning]');\n    if (!warning) return;\n    var status = framePdFitStatus(), range = framePdRange();\n    if (status.indexOf('Review required') !== 0) {\n      warning.innerHTML = '';\n      return;\n    }\n    var pd = customerPdValue();\n    var message = state.rx.pdMode === 'dual'\n      ? 'Combined PD ' + pd.toFixed(2) + ' mm is outside this frame\\u2019s PD range: ' + esc(range) + '.'\n      : 'Your child\\u2019s PD is outside this frame\\u2019s PD range: ' + esc(range) + '.';\n    warning.innerHTML = '<div class=\"eb-frame-pd-warning\">' + message + '</div>';\n  }\n  function orderPdString() {\n    var value = state.method === 'later' ? 'Send later' : pdString();\n    var range = framePdRange();\n    return range ? value + '\\u00a0\\u00a0\\u00a0\\u00a0\\u00a0/\\u00a0\\u00a0\\u00a0\\u00a0Range: ' + range : value;\n  }\n  function syncRxTriggers(v) {\n    var variant = v || currentVariant();\n    var available = !!(variant && variant.available);\n    document.querySelectorAll('[data-eb-rx-open]').forEach(function (btn) {\n      btn.disabled = !available;\n      btn.setAttribute('aria-disabled', available ? 'false' : 'true');\n      var label = btn.querySelector('[data-eb-rx-trigger-label]') || btn.querySelector('span') || btn;\n      label.textContent = available ? 'Select Lenses and Purchase' : 'Sold Out';\n    });\n  }\n\n  // Convert plus-cylinder prescriptions before checking lab-ready lens ranges.\n  function normalizeEye(e) {\n    var sph = parseFloat(e.sph) || 0;\n    var cyl = parseFloat(e.cyl) || 0;\n    var axis = parseInt(e.axis, 10);\n    if (cyl > 0) {\n      sph = sph + cyl;\n      cyl = -cyl;\n      if (axis) axis = axis + 90 > 180 ? axis - 90 : axis + 90;\n    }\n    return { sph: sph, cyl: cyl, axis: axis || '' };\n  }\n  function normalizedEyes() {\n    return [normalizeEye(state.rx.od), normalizeEye(state.rx.os)];\n  }\n  function byId(list, id) {\n    for (var i = 0; i < list.length; i++) if (list[i].id === id) return list[i];\n    return null;\n  }\n  function materialList() { return state.type === 'multifocal' ? DATA.multiMaterials : DATA.singleMaterials; }\n  function materialGroups() {\n    var seen = {};\n    return materialList().reduce(function (out, m) {\n      if (seen[m.group]) return out;\n      seen[m.group] = true;\n      out.push({ id: m.group, t: m.group, price: 0, img: materialGroupImage(m.group), ic: m.group === 'High-Index' ? 'material-hi' : m.group === 'Trivex' ? 'material-trivex' : 'material-pc', d: materialGroupCopy(m.group) });\n      return out;\n    }, []);\n  }\n  function materialGroupImage(group) {\n    if (group === 'High-Index') return IMG.hi167;\n    if (group === 'Polycarbonate') return IMG.pcStd;\n    if (group === 'Trivex') return IMG.trivexStd;\n    return '';\n  }\n  function materialGroupCopy(group) {\n    if (group === 'High-Index') return 'Thinner and lighter.';\n    if (group === 'Polycarbonate') return 'Lightweight and impact-resistant.';\n    if (group === 'Trivex') return 'Lightweight, clear, and durable.';\n    return 'Choose a lens material tier.';\n  }\n  function selectedFunction() {\n    if (state.type === 'multifocal') return byId(DATA.multiOptions, state.multiOption);\n    if (state.type === 'nonrx') return byId(DATA.nonrxOptions, state.lensOption);\n    return byId(DATA.singleOptions, state.lensOption);\n  }\n  function selectedSun() { return byId(DATA.sun, state.sunStyle); }\n  function sunColorList() { return state.sunStyle && DATA.sunColors[state.sunStyle] ? DATA.sunColors[state.sunStyle] : []; }\n  function selectedSunColor() { return byId(sunColorList(), state.sunColor); }\n  function selectedMultiType() { return byId(DATA.multiTypes, state.multiType); }\n  function selectedMaterial() { return byId(materialList(), state.material); }\n  function prismFeePrice() { return Number((CFG.prismFee && CFG.prismFee.price) || 9.95); }\n  function prismFeeVariantId() { return CFG.prismFee && CFG.prismFee.variantId ? Number(CFG.prismFee.variantId) : null; }\n  function prismString(e) {\n    var parts = [];\n    if (parseFloat(e.prismH) > 0 && e.baseH) parts.push(e.prismH + ' ' + e.baseH);\n    if (parseFloat(e.prismV) > 0 && e.baseV) parts.push(e.prismV + ' ' + e.baseV);\n    return parts.join(' / ');\n  }\n  function eyePrismString(eye) { return prismString(state.rx[eye]); }\n  function hasPrismValues() { return !!(eyePrismString('od') || eyePrismString('os')); }\n  function chargePrism() { return state.rx.hasPrism && (state.method === 'upload' || hasPrismValues()); }\n  function clearPrismValues() {\n    ['od', 'os'].forEach(function (eye) {\n      state.rx[eye].prismH = ''; state.rx[eye].baseH = ''; state.rx[eye].prismV = ''; state.rx[eye].baseV = '';\n    });\n  }\n\n  function materialConfirmation(m) {\n    if (!m) return null;\n    if ((state.lensOption === 'photo' || state.lensOption === 'sun') && (m.id === 'hi174' || m.id === 'pcUltra')) {\n      return {\n        notice: 'Manual review required for this complex lens.',\n        message: 'This lens can be made, but it is more complex and requires manual review. We will contact you if any changes are needed.'\n      };\n    }\n    return null;\n  }\n  function materialCompatible(m) {\n    if (!m) return { ok: false, why: 'Choose a material.' };\n    if (m.group === 'Trivex' && state.type === 'multifocal') return { ok: false, why: 'Trivex is not available for multifocal lenses.' };\n    if (m.group === 'Trivex' && state.lensOption === 'blue') return { ok: false, why: 'Not available with Blue Light.' };\n    if (m.blockOptions && m.blockOptions.indexOf(state.lensOption) !== -1) return { ok: false, why: 'Not available with this lens option.' };\n    if (state.lensOption === 'sun' && m.blockSun && m.blockSun.indexOf(state.sunStyle) !== -1) return { ok: false, why: 'Not available with polarized lenses.' };\n    var confirmation = materialConfirmation(m);\n    if (confirmation) return { ok: true, why: confirmation.notice };\n    if (state.method !== 'manual' && state.method !== 'upload') return { ok: true };\n    var eyes = normalizedEyes();\n    var sphMin = Number(m.sphMin == null ? -Math.abs(Number(m.sph || 0)) : m.sphMin);\n    var sphMax = Number(m.sphMax == null ? Math.abs(Number(m.sph || 0)) : m.sphMax);\n    var cylMin = Number(m.cylMin == null ? -Math.abs(Number(m.cyl || 0)) : m.cylMin);\n    var cylMax = Number(m.cylMax == null ? Math.abs(Number(m.cyl || 0)) : m.cylMax);\n    for (var i = 0; i < eyes.length; i++) {\n      if (eyes[i].sph < sphMin || eyes[i].sph > sphMax) return { ok: false, why: 'SPH is outside this lens range.' };\n      if (eyes[i].cyl < cylMin || eyes[i].cyl > cylMax) return { ok: false, why: 'CYL is outside this lens range.' };\n    }\n    return { ok: true };\n  }\n  function complexLensNeedsReview() {\n    return (state.lensOption === 'photo' || state.lensOption === 'sun') && (state.material === 'hi174' || state.material === 'pcUltra');\n  }\n\n  function componentList() {\n    var out = [];\n    function add(c, kind, variantId) {\n      var selectedVariantId = variantId || (c && c.variantId);\n      if (c && Number(c.price) > 0 && selectedVariantId) out.push({ name: c.t, price: Number(c.price), variantId: Number(selectedVariantId), kind: kind });\n    }\n    add(selectedMultiType(), 'Multifocal Type');\n    add(selectedFunction(), 'Lens Option');\n    add(selectedSun(), 'Sunglasses', selectedSunColor() && selectedSunColor().variantId);\n    add(selectedMaterial(), 'Lens Material');\n    return out;\n  }\n  function lensLabel() {\n    if (state.type === 'frame') return 'Frame Only';\n    var parts = [];\n    if (state.type === 'single') parts.push('Single Vision');\n    if (state.type === 'multifocal') parts.push(selectedMultiType() ? selectedMultiType().t : 'Multifocal');\n    if (state.type === 'nonrx') parts.push('Non-Prescription');\n    if (selectedFunction()) parts.push(selectedFunction().t);\n    if (state.lensOption === 'sun' && selectedSun()) parts.push(selectedSun().t);\n    if (state.lensOption === 'sun' && selectedSunColor()) parts.push(selectedSunColor().t);\n    if (selectedMaterial()) parts.push(selectedMaterial().t);\n    return parts.join(' / ');\n  }\n  function typeLabel() {\n    return { single: 'Single Vision', multifocal: 'Multifocal', nonrx: 'Non-Prescription', frame: 'Frame Only' }[state.type] || '';\n  }\n  function frameMethod() {\n    return state.method === 'upload' ? 'Upload Prescription' : state.method === 'later' ? 'Send Later' : 'Enter Manually';\n  }\n  function chosenAddons() { return CFG.addons.filter(function (a) { return state.addons.indexOf(a.id) !== -1; }); }\n\n  function opts(sel, from, to, step, fmt, chosen, blank) {\n    var h = blank ? '<option value=\"\">Choose</option>' : '';\n    var dir = from > to ? -1 : 1;\n    for (var v = from; dir > 0 ? v <= to + 1e-9 : v >= to - 1e-9; v += step * dir) {\n      var val = v.toFixed(step < 1 ? 2 : 0);\n      h += '<option value=\"' + val + '\"' + (val === chosen ? ' selected' : '') + '>' + (fmt ? fmt(val) : val) + '</option>';\n    }\n    sel.innerHTML = h;\n  }\n  function directionOpts(sel, choices, chosen) {\n    sel.innerHTML = '<option value=\"\">Choose</option>' + choices.map(function (c) {\n      return '<option value=\"' + c + '\"' + (c === chosen ? ' selected' : '') + '>' + c + '</option>';\n    }).join('');\n  }\n  function birthYearOptions() {\n    var current = new Date().getFullYear(), out = '<option value=\"\">Select birth year</option>';\n    for (var year = current - 1; year >= current - 18; year--) {\n      out += '<option value=\"' + year + '\"' + (String(year) === String(state.birthYear) ? ' selected' : '') + '>' + year + '</option>';\n    }\n    return out;\n  }\n  function materialTierIcon(m) {\n    if (m.group === 'High-Index') return m.id === 'hi174' ? 'tier-hi-174' : m.id === 'hi167' ? 'tier-hi-167' : 'tier-hi-161';\n    if (m.group === 'Trivex') return m.id === 'trivexAdv' ? 'tier-trivex-advanced' : 'tier-trivex-standard';\n    return m.id === 'pcUltra' ? 'tier-cyl-ultra' : m.id === 'pcHigh' ? 'tier-cyl-high' : 'tier-standard';\n  }\n  function largeImageUrl(url) {\n    return String(url || '').replace(/_160x160(\\.[a-z]+)(\\?v=)/i, '_900x900$1$2');\n  }\n  function openImagePreview(url, title) {\n    if (!url) return;\n    var old = root.querySelector('[data-eb-imgpreview]');\n    if (old) old.remove();\n    var wrap = document.createElement('div');\n    wrap.className = 'eb-imgpreview';\n    wrap.dataset.ebImgpreview = '1';\n    wrap.innerHTML = '<button type=\"button\" class=\"eb-imgpreview__close\" aria-label=\"Close image preview\">\u00D7</button><figure><img src=\"' + esc(largeImageUrl(url)) + '\" alt=\"' + esc(title || 'Lens preview') + '\"><figcaption>' + esc(title || '') + '</figcaption></figure>';\n    root.appendChild(wrap);\n    function close() { wrap.remove(); document.removeEventListener('keydown', onKey); }\n    function onKey(e) { if (e.key === 'Escape') close(); }\n    wrap.onclick = function (e) { if (e.target === wrap) close(); };\n    wrap.querySelector('.eb-imgpreview__close').onclick = close;\n    document.addEventListener('keydown', onKey);\n  }\n  function iconSvg(name) {\n    var icons = {\n      'rx-single': '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path class=\"lens-fill\" d=\"M5.3 7.3c2.1-1.4 4.7-.7 5.7 1.6.7 1.6.7 4.6 0 6.2-1 2.3-3.6 3-5.7 1.6-2.5-1.7-2.5-7.7 0-9.4Z\"></path><path class=\"lens-fill\" d=\"M18.7 7.3c-2.1-1.4-4.7-.7-5.7 1.6-.7 1.6-.7 4.6 0 6.2 1 2.3 3.6 3 5.7 1.6 2.5-1.7 2.5-7.7 0-9.4Z\"></path><path d=\"M11 12h2M4 8.5 3 6M20 8.5 21 6\"></path><path class=\"accent\" d=\"M7 11h2.8M14.2 11H17\"></path></svg>',\n      'rx-multi': '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path class=\"lens-fill\" d=\"M7 4h10c1.4 0 2.5 1.1 2.5 2.5v11c0 1.4-1.1 2.5-2.5 2.5H7c-1.4 0-2.5-1.1-2.5-2.5v-11C4.5 5.1 5.6 4 7 4Z\"></path><path d=\"M7.5 8.5h9M7.5 12h9M8.5 16h7\"></path><path class=\"accent\" d=\"M12 5v14\"></path></svg>',\n      'rx-plano': '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path class=\"lens-fill\" d=\"M7 5h10c1.8 0 3 1.6 2.6 3.4l-1.5 7.2A4.2 4.2 0 0 1 14 19H10a4.2 4.2 0 0 1-4.1-3.4L4.4 8.4C4 6.6 5.2 5 7 5Z\"></path><path d=\"M8 12h8\"></path><path class=\"accent\" d=\"M9 15h6\"></path></svg>',\n      'frame-only': '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M4 11.5c1-2.2 5.4-2.2 6.5 0 .7 1.6 0 4.2-2.5 4.2H6.5c-2 0-3.2-2.2-2.5-4.2ZM20 11.5c-1-2.2-5.4-2.2-6.5 0-.7 1.6 0 4.2 2.5 4.2h1.5c2 0 3.2-2.2 2.5-4.2Z\"></path><path d=\"M10.5 12h3M4.3 10 3 7M19.7 10 21 7\"></path></svg>',\n      'lens-clear': '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path class=\"lens-fill\" d=\"M8 4.5h8c1.8 0 3 1.6 2.7 3.3l-1.4 7.4A5.4 5.4 0 0 1 12 19.5a5.4 5.4 0 0 1-5.3-4.3L5.3 7.8C5 6.1 6.2 4.5 8 4.5Z\"></path><path class=\"accent\" d=\"M8.5 9.5h7M9.5 13h5\"></path></svg>',\n      'lens-blue': '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><rect class=\"lens-fill\" x=\"5\" y=\"5\" width=\"14\" height=\"10\" rx=\"2\"></rect><path d=\"M9 19h6M12 15v4\"></path><path class=\"accent\" d=\"M8 8.5h8M8 11.5h5\"></path></svg>',\n      'lens-photo': '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path class=\"lens-fill\" d=\"M8 4.5h8c1.8 0 3 1.6 2.7 3.3l-1.4 7.4A5.4 5.4 0 0 1 12 19.5a5.4 5.4 0 0 1-5.3-4.3L5.3 7.8C5 6.1 6.2 4.5 8 4.5Z\"></path><path class=\"accent\" d=\"M6.8 12h10.4M12 5v14\"></path><path d=\"M18 3.5v2M18 8.5v2M14.5 7h2M19.5 7h2\"></path></svg>',\n      'lens-sun': '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path class=\"lens-fill\" d=\"M4 10h6.5l-.9 5.2H6L4 10ZM20 10h-6.5l.9 5.2H18l2-5.2Z\"></path><path d=\"M10.5 11.5h3M5 8l-1-2M19 8l1-2\"></path><path class=\"accent\" d=\"M6.2 12.4h2.2M15.6 12.4h2.2\"></path></svg>',\n      'tint-classic': '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path class=\"lens-fill\" d=\"M7 5h10c1.6 0 2.7 1.4 2.3 3l-1.5 7.2A4.5 4.5 0 0 1 13.4 19h-2.8a4.5 4.5 0 0 1-4.4-3.8L4.7 8C4.3 6.4 5.4 5 7 5Z\"></path><path class=\"accent\" d=\"M7.2 14.5h9.6\"></path></svg>',\n      'tint-gradient': '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path class=\"lens-fill\" d=\"M7 5h10c1.6 0 2.7 1.4 2.3 3l-1.5 7.2A4.5 4.5 0 0 1 13.4 19h-2.8a4.5 4.5 0 0 1-4.4-3.8L4.7 8C4.3 6.4 5.4 5 7 5Z\"></path><path d=\"M7 8.5h10M7.7 11.5h8.6M8.6 14.5h6.8\"></path><path class=\"accent\" d=\"M10 17h4\"></path></svg>',\n      'tint-mirror': '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path class=\"lens-fill\" d=\"M7 5h10c1.6 0 2.7 1.4 2.3 3l-1.5 7.2A4.5 4.5 0 0 1 13.4 19h-2.8a4.5 4.5 0 0 1-4.4-3.8L4.7 8C4.3 6.4 5.4 5 7 5Z\"></path><path class=\"accent\" d=\"m8 15 8-8M11.5 17.5l5.2-5.2\"></path></svg>',\n      'tint-polarized': '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path class=\"lens-fill\" d=\"M7 5h10c1.6 0 2.7 1.4 2.3 3l-1.5 7.2A4.5 4.5 0 0 1 13.4 19h-2.8a4.5 4.5 0 0 1-4.4-3.8L4.7 8C4.3 6.4 5.4 5 7 5Z\"></path><path d=\"M8 9c1.3 0 1.3-1 2.6-1s1.3 1 2.6 1 1.3-1 2.8-1\"></path><path class=\"accent\" d=\"M8 13c1.3 0 1.3-1 2.6-1s1.3 1 2.6 1 1.3-1 2.8-1\"></path><path d=\"M8 17c1.3 0 1.3-1 2.6-1s1.3 1 2.6 1 1.3-1 2.8-1\"></path></svg>',\n      'lens-progressive': '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path class=\"lens-fill\" d=\"M8 4.5h8c1.8 0 3 1.6 2.7 3.3l-1.4 7.4A5.4 5.4 0 0 1 12 19.5a5.4 5.4 0 0 1-5.3-4.3L5.3 7.8C5 6.1 6.2 4.5 8 4.5Z\"></path><path d=\"M8.5 8.5h7M9 12h6M10 15.5h4\"></path><path class=\"accent\" d=\"M12 6.5c1.4 2.8 1.4 8.2 0 11\"></path></svg>',\n      'lens-bifocal': '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path class=\"lens-fill\" d=\"M8 4.5h8c1.8 0 3 1.6 2.7 3.3l-1.4 7.4A5.4 5.4 0 0 1 12 19.5a5.4 5.4 0 0 1-5.3-4.3L5.3 7.8C5 6.1 6.2 4.5 8 4.5Z\"></path><path d=\"M7 13h10\"></path><path class=\"accent\" d=\"M9 16h6\"></path></svg>',\n      'material-hi': '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path class=\"lens-fill\" d=\"M7.5 5h9l2 7-6.5 7-6.5-7 2-7Z\"></path><path d=\"M7.5 5 12 19 16.5 5\"></path><path class=\"accent\" d=\"M6 12h12\"></path></svg>',\n      'material-pc': '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path class=\"lens-fill\" d=\"M12 3.8 19 6.5v5.2c0 4.1-2.8 7.5-7 8.9-4.2-1.4-7-4.8-7-8.9V6.5l7-2.7Z\"></path><path class=\"accent\" d=\"M8.8 12l2.1 2.1 4.3-4.6\"></path></svg>',\n      'material-trivex': '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path class=\"lens-fill\" d=\"M12 4 19 8v8l-7 4-7-4V8l7-4Z\"></path><path d=\"M12 4v16M5 8l7 4 7-4\"></path><path class=\"accent\" d=\"m7.5 15 4.5-3 4.5 3\"></path></svg>',\n      'tier-hi-161': '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path class=\"lens-fill\" d=\"M8 5h8l2 7-6 7-6-7 2-7Z\"></path><path class=\"accent\" d=\"M8.5 12h7\"></path></svg>',\n      'tier-hi-167': '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path class=\"lens-fill\" d=\"M8 5h8l2 7-6 7-6-7 2-7Z\"></path><path d=\"M9 9h6\"></path><path class=\"accent\" d=\"M8.5 13h7\"></path></svg>',\n      'tier-hi-174': '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path class=\"lens-fill\" d=\"M8 5h8l2 7-6 7-6-7 2-7Z\"></path><path d=\"M9.5 8.5h5M8.8 12h6.4\"></path><path class=\"accent\" d=\"M9.5 15.5h5\"></path></svg>',\n      'tier-standard': '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path class=\"lens-fill\" d=\"M8 4.5h8c1.8 0 3 1.6 2.7 3.3l-1.4 7.4A5.4 5.4 0 0 1 12 19.5a5.4 5.4 0 0 1-5.3-4.3L5.3 7.8C5 6.1 6.2 4.5 8 4.5Z\"></path><path class=\"accent\" d=\"M9 12h6\"></path></svg>',\n      'tier-cyl-high': '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path class=\"lens-fill\" d=\"M8 4.5h8c1.8 0 3 1.6 2.7 3.3l-1.4 7.4A5.4 5.4 0 0 1 12 19.5a5.4 5.4 0 0 1-5.3-4.3L5.3 7.8C5 6.1 6.2 4.5 8 4.5Z\"></path><path d=\"M8 9c2.2 2.2 5.8 2.2 8 0\"></path><path class=\"accent\" d=\"M8 15c2.2-2.2 5.8-2.2 8 0\"></path></svg>',\n      'tier-cyl-ultra': '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path class=\"lens-fill\" d=\"M8 4.5h8c1.8 0 3 1.6 2.7 3.3l-1.4 7.4A5.4 5.4 0 0 1 12 19.5a5.4 5.4 0 0 1-5.3-4.3L5.3 7.8C5 6.1 6.2 4.5 8 4.5Z\"></path><path d=\"M7.8 8.8c2.4 2.4 6 2.4 8.4 0M7.8 15.2c2.4-2.4 6-2.4 8.4 0\"></path><path class=\"accent\" d=\"M12 6.8v10.4\"></path></svg>',\n      'tier-trivex-standard': '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path class=\"lens-fill\" d=\"M12 4 18.5 8v8L12 20 5.5 16V8L12 4Z\"></path><path class=\"accent\" d=\"M8.5 12h7\"></path></svg>',\n      'tier-trivex-advanced': '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path class=\"lens-fill\" d=\"M12 4 18.5 8v8L12 20 5.5 16V8L12 4Z\"></path><path d=\"M8.5 10h7M8.5 14h7\"></path><path class=\"accent\" d=\"M12 6v12\"></path></svg>',\n      'method-manual': '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path class=\"lens-fill\" d=\"M6 4.5h12v15H6z\"></path><path d=\"M8.5 8h7M8.5 11.5h7M8.5 15h4\"></path><path class=\"accent\" d=\"m14 16 3 3 2-5-5 2Z\"></path></svg>',\n      'method-upload': '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path class=\"lens-fill\" d=\"M7 4.5h7l3 3v12H7z\"></path><path d=\"M14 4.5V8h3\"></path><path class=\"accent\" d=\"M12 16V9.5M9.5 12l2.5-2.5 2.5 2.5\"></path></svg>',\n      'method-later': '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path class=\"lens-fill\" d=\"M12 20a7.5 7.5 0 1 0-7.5-7.5A7.5 7.5 0 0 0 12 20Z\"></path><path d=\"M12 8v4.5l3 1.8\"></path><path class=\"accent\" d=\"M6 4.5 4.5 6M18 4.5 19.5 6\"></path></svg>'\n    };\n    return icons[name] || icons['lens-clear'];\n  }\n  function choice(c, selected, disabled, why) {\n    var hasPrice = Number(c.price) > 0;\n    var icon = c.img ? '<span class=\"eb-imgicon\" role=\"button\" tabindex=\"0\" aria-label=\"View larger image for ' + esc(c.t) + '\" data-img=\"' + esc(c.img) + '\" data-img-title=\"' + esc(c.t) + '\"><img src=\"' + esc(c.img) + '\" alt=\"\" loading=\"lazy\"></span>' : c.swatch ? '<span class=\"eb-colorchip eb-colorchip--' + esc(c.swatch) + '\"></span>' : '<span class=\"eb-ic eb-ic--' + esc(c.ic || 'lens-clear') + '\">' + iconSvg(c.ic) + '</span>';\n    return '<button type=\"button\" class=\"eb-choice' + (hasPrice ? '' : ' eb-choice--noprice') + (selected ? ' eb-choice--selected' : '') + (disabled ? ' eb-choice--incompat' : '') +\n      '\" data-k=\"' + esc(c.id) + '\"' + (disabled ? ' disabled' : '') + '>' +\n      icon +\n      '<span class=\"eb-choice__body\"><span class=\"eb-choice__head\"><span class=\"eb-t\">' + esc(c.t) + '</span>' + (c.badge ? '<span class=\"eb-recommended-badge\">' + esc(c.badge) + '</span>' : '') + '</span>' +\n      '<div class=\"eb-d\">' + esc(c.d || '') + (c.range ? '<strong class=\"eb-range\">' + esc(c.range) + '</strong>' : '') + (why ? '<div class=\"eb-why\">' + esc(why) + '</div>' : '') + '</div></span>' +\n      (hasPrice ? '<span class=\"eb-price\">' + money(c.price) + '</span>' : '') + '</button>';\n  }\n  function renderChoices(el, title, hint, list, current, cb, compat) {\n    el.innerHTML = '<h2>' + esc(title) + '</h2>' + (hint ? '<p class=\"eb-hint eb-step-hint\">' + esc(hint) + '</p>' : '') +\n      list.map(function (c) {\n        var ok = compat ? compat(c) : { ok: true };\n        return choice(c, current === c.id, !ok.ok, ok.why);\n      }).join('');\n    el.querySelectorAll('.eb-choice:not([disabled])').forEach(function (b) {\n      b.onclick = function () { if (cb(b.dataset.k) !== false) advance(); };\n    });\n    wireImagePreviews(el);\n  }\n  function wireImagePreviews(el) {\n    el.querySelectorAll('.eb-imgicon[data-img]').forEach(function (img) {\n      img.onclick = function (e) {\n        e.preventDefault();\n        e.stopPropagation();\n        openImagePreview(img.dataset.img, img.dataset.imgTitle);\n      };\n      img.onkeydown = function (e) {\n        if (e.key === 'Enter' || e.key === ' ') {\n          e.preventDefault();\n          e.stopPropagation();\n          openImagePreview(img.dataset.img, img.dataset.imgTitle);\n        }\n      };\n    });\n  }\n  function closeSelectMenus(except) {\n    root.querySelectorAll('.eb-select--open').forEach(function (w) {\n      if (w !== except) {\n        w.classList.remove('eb-select--open');\n        var b = w.querySelector('.eb-select__btn');\n        if (b) b.setAttribute('aria-expanded', 'false');\n      }\n    });\n  }\n  function isSignedRxSelect(s) {\n    return s.matches && s.matches('select[data-eye][data-f=\"sph\"],select[data-eye][data-f=\"cyl\"]');\n  }\n  function enhanceSelects(scope) {\n    scope.querySelectorAll('select:not([data-eb-enhanced])').forEach(function (s) {\n      var wrap = document.createElement('span');\n      var btn = document.createElement('button');\n      var menu = document.createElement('span');\n      var signed = isSignedRxSelect(s);\n      var choose = function (value) {\n        s.value = value;\n        closeSelectMenus();\n        s.dispatchEvent(new Event('change', { bubbles: true }));\n      };\n      var sync = function () {\n        var opt = s.options[s.selectedIndex];\n        btn.textContent = opt ? opt.textContent : 'Choose';\n        btn.disabled = s.disabled;\n        menu.querySelectorAll('.eb-select__option').forEach(function (item) {\n          item.setAttribute('aria-selected', item.dataset.value === s.value ? 'true' : 'false');\n        });\n      };\n      s.dataset.ebEnhanced = '1';\n      s.tabIndex = -1;\n      wrap.className = 'eb-select';\n      if (signed) wrap.className += ' eb-select--signed';\n      if (s.matches('[data-eb-pd1],[data-eb-pdr],[data-eb-pdl]')) wrap.className += ' eb-select--pd';\n      btn.type = 'button';\n      btn.className = 'eb-select__btn';\n      btn.setAttribute('aria-haspopup', 'listbox');\n      btn.setAttribute('aria-expanded', 'false');\n      menu.className = 'eb-select__menu' + (signed ? ' eb-select__menu--signed' : '');\n      menu.setAttribute('role', 'listbox');\n      function optionButton(o, empty) {\n        var item = document.createElement('button');\n        item.type = 'button';\n        item.className = 'eb-select__option' + (empty ? ' eb-select__option--empty' : '');\n        item.textContent = empty ? '' : o.textContent;\n        item.dataset.value = empty ? '' : o.value;\n        item.setAttribute('role', 'option');\n        if (!empty && o.selected) item.setAttribute('aria-selected', 'true');\n        if (empty) item.disabled = true;\n        else item.onclick = function () { choose(o.value); };\n        return item;\n      }\n      if (signed) {\n        var optsList = Array.prototype.filter.call(s.options, function (o) { return o.value !== ''; });\n        var zero = optsList.find(function (o) { return Math.abs(parseFloat(o.value)) < 1e-9; });\n        var neg = optsList.filter(function (o) { return parseFloat(o.value) < 0; }).sort(function (a, b) { return parseFloat(b.value) - parseFloat(a.value); });\n        var pos = optsList.filter(function (o) { return parseFloat(o.value) > 0; }).sort(function (a, b) { return parseFloat(a.value) - parseFloat(b.value); });\n        if (zero) {\n          var zeroBtn = optionButton(zero);\n          zeroBtn.className += ' eb-select__option--zero';\n          menu.appendChild(zeroBtn);\n        }\n        var grid = document.createElement('span');\n        grid.className = 'eb-select__signed-grid';\n        for (var i = 0, n = Math.max(neg.length, pos.length); i < n; i++) {\n          grid.appendChild(neg[i] ? optionButton(neg[i]) : optionButton({}, true));\n          grid.appendChild(pos[i] ? optionButton(pos[i]) : optionButton({}, true));\n        }\n        menu.appendChild(grid);\n      } else {\n        Array.prototype.forEach.call(s.options, function (o) {\n          menu.appendChild(optionButton(o));\n        });\n      }\n      btn.onclick = function () {\n        var open = wrap.classList.contains('eb-select--open');\n        closeSelectMenus(open ? null : wrap);\n        wrap.classList.toggle('eb-select--open', !open);\n        btn.setAttribute('aria-expanded', !open ? 'true' : 'false');\n        if (!open) setTimeout(function () { wrap.scrollIntoView({ block: 'nearest' }); }, 0);\n      };\n      s.addEventListener('change', sync);\n      s.parentNode.insertBefore(wrap, s);\n      wrap.appendChild(s);\n      wrap.appendChild(btn);\n      wrap.appendChild(menu);\n      sync();\n    });\n  }\n  function render() {\n    renderedOnce = true;\n    var steps = flowSteps();\n    if (stepIdx >= steps.length) stepIdx = steps.length - 1;\n    $('[data-eb-bar]').style.width = ((stepIdx + 1) / steps.length * 100) + '%';\n    $('[data-eb-stepname]').textContent = 'Step ' + (stepIdx + 1) + ' of ' + steps.length;\n    $('[data-eb-back]').disabled = stepIdx === 0 || state.added;\n    var el = $('[data-eb-step]');\n    ({ type: renderType, lens: renderLens, sun: renderSun, suncolor: renderSunColor, multitype: renderMultiType,\n      method: renderMethod, rx: renderRx, material: renderMaterial, addons: renderAddons, review: renderReview })[cur()](el);\n    enhanceSelects(el);\n    syncSummary(); syncNext();\n  }\n  function resetStepScroll() {\n    var scroller = root.querySelector('.eb-panel__body');\n    if (!scroller) return;\n    var smooth = !(window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches);\n    requestAnimationFrame(function () { scroller.scrollTo({ top: 0, behavior: smooth ? 'smooth' : 'auto' }); });\n  }\n  function advance() { if (stepIdx < flowSteps().length - 1) stepIdx++; render(); resetStepScroll(); }\n\n  function renderType(el) {\n    renderChoices(el, 'Choose Your Lenses', '', DATA.types, state.type, function (k) {\n      if (state.type !== k) {\n        state.type = k; state.lensOption = null; state.sunStyle = null; state.sunColor = null; state.multiType = null; state.multiOption = null; state.materialGroup = null; state.material = null; state.materialConfirmId = null;\n        state.method = (k === 'single' || k === 'multifocal') ? 'manual' : null;\n      }\n    });\n  }\n  function renderLens(el) {\n    if (state.type === 'multifocal') {\n      renderChoices(el, 'Choose Multifocal Option', 'Choose clear lenses, or add blue-light filtering.', DATA.multiOptions, state.multiOption, function (k) {\n        state.multiOption = k; state.materialGroup = null; state.material = null; state.materialConfirmId = null;\n      });\n      return;\n    }\n    var list = state.type === 'nonrx' ? DATA.nonrxOptions : DATA.singleOptions;\n    renderChoices(el, 'Choose Lens Option', 'Pick the lens function first. Materials and prescription limits come next.', list, state.lensOption, function (k) {\n      state.lensOption = k; state.sunStyle = null; state.sunColor = null; state.materialGroup = null; state.material = null; state.materialConfirmId = null;\n    });\n  }\n  function renderSun(el) {\n    renderChoices(el, 'Choose Sunglasses Style', '', DATA.sun, state.sunStyle, function (k) { state.sunStyle = k; state.sunColor = null; state.materialGroup = null; state.material = null; state.materialConfirmId = null; });\n  }\n  function renderSunColor(el) {\n    var sun = selectedSun();\n    renderChoices(el, 'Choose Lens Color', sun ? 'Select the color for ' + sun.t + '.' : '', sunColorList(), state.sunColor, function (k) {\n      state.sunColor = k;\n    });\n  }\n  function renderMultiType(el) {\n    renderChoices(el, 'Choose Multifocal Type', 'Use this only when the prescription includes ADD.', DATA.multiTypes, state.multiType, function (k) {\n      state.multiType = k; state.multiOption = null; state.materialGroup = null; state.material = null; state.materialConfirmId = null;\n    });\n  }\n  function renderMethod(el) {\n    var manualCopy = 'Enter SPH, CYL, AXIS and PD to instantly see all eligible lens options.';\n    var items = [\n      { id: 'manual', t: 'Enter Manually', badge: 'Recommended', price: 0, ic: 'method-manual', d: manualCopy },\n      { id: 'upload', t: 'Upload Prescription', price: 0, ic: 'method-upload', d: 'Upload a photo or PDF to scan and prefill the prescription.' },\n      { id: 'later', t: 'Send Later', price: 0, ic: 'method-later', d: 'Order now\u2014we\u2019ll contact you for your prescription. Some lens options may cost extra.' }\n    ];\n    renderChoices(el, 'Prescription Method', '', items, state.method, function (k) {\n      if (state.method !== k) {\n        var input = $('[data-eb-rxfile]');\n        if (input) input.value = '';\n        if (state.rx.previewUrl) URL.revokeObjectURL(state.rx.previewUrl);\n        state.rx.file = '';\n        state.rx.fileObject = null;\n        state.rx.cartFileObject = null;\n        state.rx.cartFilePromise = null;\n        state.rx.previewUrl = '';\n        state.rx.previewType = '';\n        state.rx.ocrStage = 'idle';\n        state.rx.ocrProgress = 0;\n        state.rx.ocrConfidence = 0;\n        state.rx.ocrMissing = [];\n        state.rx.ocrError = '';\n        state.rx.ocrSource = '';\n      }\n      state.method = k;\n      if (k === 'upload' && window.EyeBuddyRxOcr && window.EyeBuddyRxOcr.prewarm) {\n        window.EyeBuddyRxOcr.prewarm();\n      }\n      state.materialGroup = null;\n      state.material = null;\n      state.materialConfirmId = null;\n    });\n  }\n  function eyeBlock(which, label) {\n    var add = needsAdd() ? '<div><label class=\"eb-f\">ADD</label><select data-eye=\"' + which + '\" data-f=\"add\"></select></div>' : '';\n    return '<div class=\"eb-eye\"><h3>' + label + '</h3><div class=\"eb-grid' + (needsAdd() ? '4' : '3') + '\">' +\n      '<div><label class=\"eb-f\">SPH</label><select data-eye=\"' + which + '\" data-f=\"sph\"></select></div>' +\n      '<div><label class=\"eb-f\">CYL</label><select data-eye=\"' + which + '\" data-f=\"cyl\"></select></div>' +\n      '<div><label class=\"eb-f\">AXIS</label><select data-eye=\"' + which + '\" data-f=\"axis\"></select></div>' + add +\n      '</div><div class=\"eb-fielderr\" data-err=\"' + which + '\" style=\"display:none\"></div></div>';\n  }\n  function prismBlock(which, label) {\n    return '<div class=\"eb-prism-eye\"><h4>' + label + '</h4><div class=\"eb-prism-grid\">' +\n      '<div><label class=\"eb-f\">Horizontal</label><select data-prism-eye=\"' + which + '\" data-prism-f=\"prismH\"></select></div>' +\n      '<div><label class=\"eb-f\">Base</label><select data-prism-eye=\"' + which + '\" data-prism-f=\"baseH\"></select></div>' +\n      '<div><label class=\"eb-f\">Vertical</label><select data-prism-eye=\"' + which + '\" data-prism-f=\"prismV\"></select></div>' +\n      '<div><label class=\"eb-f\">Base</label><select data-prism-eye=\"' + which + '\" data-prism-f=\"baseV\"></select></div>' +\n      '</div><div class=\"eb-fielderr\" data-err=\"' + which + '-prism\" style=\"display:none\"></div></div>';\n  }\n  function uploadScannerHtml() {\n    var progress = Math.max(0, Math.min(100, Math.round(Number(state.rx.ocrProgress || 0) * 100)));\n    if (state.rx.ocrStage === 'scanning') {\n      return '<div class=\"eb-ocr-status\" role=\"status\"><span class=\"eb-ocr-spinner\" aria-hidden=\"true\"></span><div class=\"eb-ocr-activity\"><span>Reading your prescription...</span><span>Checking every number and sign for accuracy...</span><span>Finding SPH, CYL, AXIS and PD...</span></div><span class=\"eb-ocr-status__soon\">Almost ready. Please keep this window open.</span><div class=\"eb-ocr-meter\"><i style=\"width:' + progress + '%\"></i></div></div>';\n    }\n    var error = state.rx.ocrError ? '<div class=\"eb-ocr-error\" role=\"alert\">' + esc(state.rx.ocrError) + '</div>' : '';\n    return '<button type=\"button\" class=\"eb-ocr-upload\" data-eb-attach><span class=\"eb-ocr-upload__icon\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"/><path d=\"m17 8-5-5-5 5\"/><path d=\"M12 3v12\"/></svg></span><b>' + (state.rx.file ? 'Choose another photo or PDF' : 'Choose photo or PDF') + '</b><span class=\"eb-ocr-formats\">JPEG, PNG, WEBP or PDF, up to 10 MB</span></button>' + error + '<div class=\"eb-fielderr\" data-eb-fileerr style=\"display:none\"></div>';\n  }\n  function ocrFieldName(field) {\n    return ({ 'od.sph': 'OD SPH', 'od.cyl': 'OD CYL', 'od.axis': 'OD AXIS', 'od.add': 'OD ADD', 'os.sph': 'OS SPH', 'os.cyl': 'OS CYL', 'os.axis': 'OS AXIS', 'os.add': 'OS ADD', pd: 'PD' })[field] || field;\n  }\n  function ocrReviewHtml() {\n    var missing = state.rx.ocrMissing || [];\n    var preview = '';\n    if (state.rx.previewUrl) {\n      if (state.rx.previewType === 'application/pdf') {\n        preview = '<details class=\"eb-ocr-preview\"><summary>View uploaded prescription</summary><div class=\"eb-ocr-preview__media\"><iframe src=\"' + esc(state.rx.previewUrl) + '#toolbar=0\" title=\"Uploaded prescription PDF\"></iframe></div></details>';\n      } else {\n        var image = '<img src=\"' + esc(state.rx.previewUrl) + '\" alt=\"Uploaded prescription: ' + esc(state.rx.file) + '\">';\n        preview = '<details class=\"eb-ocr-preview\"><summary>View uploaded prescription</summary><div class=\"eb-ocr-preview__media\"><button type=\"button\" class=\"eb-ocr-preview__zoom\" data-eb-ocr-zoom aria-label=\"Enlarge uploaded prescription\">' + image + '</button></div></details>' +\n          '<dialog class=\"eb-ocr-lightbox\" data-eb-ocr-lightbox><button type=\"button\" class=\"eb-ocr-lightbox__close\" data-eb-ocr-lightbox-close aria-label=\"Close enlarged prescription\">&times;</button>' + image + '</dialog>';\n      }\n    }\n    return '<div class=\"eb-ocr-review' + (missing.length ? ' eb-ocr-review--partial' : '') + '\">' +\n      '<div class=\"eb-ocr-review__main\"><span class=\"eb-ocr-review__mark\" aria-hidden=\"true\">' + (missing.length ? '!' : '&#10003;') + '</span><div><b>Please check every value before continuing.</b></div></div>' +\n      '<div class=\"eb-ocr-review__actions\"><button type=\"button\" class=\"eb-ocr-replace\" data-eb-attach>Replace image</button>' + preview + '</div></div>';\n  }\n  function applyOcrResult(result) {\n    var values = result && result.values ? result.values : {};\n    ['od', 'os'].forEach(function (eye) {\n      var found = values[eye] || {};\n      state.rx[eye].sph = found.sph == null ? '' : found.sph;\n      state.rx[eye].cyl = found.cyl == null ? '' : found.cyl;\n      state.rx[eye].axis = found.axis == null ? '' : found.axis;\n      state.rx[eye].add = found.add == null ? (needsAdd() ? '' : '0.00') : found.add;\n    });\n    if (values.pd && values.pd.mode === 'dual') {\n      state.rx.pdMode = 'dual'; state.rx.pd = ''; state.rx.pdR = values.pd.right; state.rx.pdL = values.pd.left;\n    } else if (values.pd && values.pd.mode === 'single') {\n      state.rx.pdMode = 'single'; state.rx.pd = values.pd.value; state.rx.pdR = ''; state.rx.pdL = '';\n    } else {\n      state.rx.pdMode = 'single'; state.rx.pd = ''; state.rx.pdR = ''; state.rx.pdL = '';\n    }\n    state.rx.pdHelp = false;\n    state.rx.hasPrism = !!values.hasPrism;\n    state.rx.ocrMissing = result.missing || [];\n    state.rx.ocrConfidence = Number(result.confidence || 0);\n    state.rx.ocrSource = result.source || '';\n    state.rx.ocrError = '';\n    state.rx.ocrStage = 'review';\n  }\n  function pdChooserHtml() {\n    return '<h3 class=\"eb-pdtitle\">Pupillary Distance (PD)</h3><div class=\"eb-pdrow\"><label><input type=\"radio\" name=\"eb-pdm\" value=\"single\"' + (state.rx.pdMode === 'single' ? ' checked' : '') + '> Single PD</label>' +\n      '<label><input type=\"radio\" name=\"eb-pdm\" value=\"dual\"' + (state.rx.pdMode === 'dual' ? ' checked' : '') + '> Dual PD</label>' +\n      '<label><input type=\"radio\" name=\"eb-pdm\" value=\"help\"' + (state.rx.pdMode === 'help' ? ' checked' : '') + '> No PD?</label></div>' +\n      (state.rx.pdMode === 'help' ? '<div class=\"eb-pd-help\" data-eb-pd-help><button type=\"button\" class=\"eb-pd-help__btn\" data-eb-pd-measure>Measure PD</button><button type=\"button\" class=\"eb-pd-help__btn\" data-ebpd-open>PD Tools</button><button type=\"button\" class=\"eb-pd-help__btn\" data-eb-pd-need-help>Need Help</button></div>' : '') +\n      (state.rx.pdHelp ? '<div class=\"eb-pd-helpnote\">We will contact you for PD. You can continue.</div>' : '') +\n      '<div data-eb-pdarea></div><div data-eb-frame-pd-warning></div><div class=\"eb-fielderr\" data-err=\"pd\" style=\"display:none\"></div>';\n  }\n  function wirePdControls(el) {\n    el.querySelectorAll('input[name=eb-pdm]').forEach(function (r) {\n      r.onchange = function () {\n        state.rx.pdMode = r.value;\n        state.rx.pdHelp = false;\n        if (r.value === 'help') {\n          state.rx.pd = '';\n          state.rx.pdR = '';\n          state.rx.pdL = '';\n        }\n        render();\n      };\n    });\n    var help = el.querySelector('[data-eb-pd-need-help]');\n    if (help) help.onclick = function () {\n      state.rx.pdHelp = true;\n      state.rx.pd = '';\n      state.rx.pdR = '';\n      state.rx.pdL = '';\n      render();\n    };\n    var measure = el.querySelector('[data-eb-pd-measure]');\n    if (measure) measure.onclick = openPdMeasure;\n  }\n  function closePdMeasure() {\n    var modal = document.querySelector('[data-eb-pd-modal]');\n    if (modal) modal.hidden = true;\n  }\n  function openPdMeasure() {\n    var modal = document.querySelector('[data-eb-pd-modal]');\n    var body = modal && modal.querySelector('[data-eb-pd-modal-body]');\n    if (!modal || !body) return;\n    modal.hidden = false;\n    body.innerHTML = '<div class=\"eb-pd-guide\"><div class=\"eb-pd-print-card\"><div><strong>Measure at home with our printable PD ruler</strong><span>Print at 100% actual size, then measure your child\\'s pupillary distance.</span></div><a class=\"eb-pd-print-btn\" href=\"https://cdn.shopify.com/s/files/1/0888/0590/0580/files/EyeBuddy-PD-Ruler.pdf?v=1788582307\" target=\"_blank\" rel=\"noopener\">Print the PD Ruler</a></div><div class=\"eb-pd-guide__visual\" aria-label=\"PD is measured from the center of one pupil to the center of the other\" role=\"img\"><svg viewBox=\"0 0 360 180\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"28\" y=\"124\" width=\"304\" height=\"22\" rx=\"8\" fill=\"#fff4ea\" stroke=\"#f1d8c4\"/><g stroke=\"#bf8d62\" stroke-width=\"2\"><path d=\"M54 124v18M84 124v10M114 124v18M144 124v10M174 124v18M204 124v10M234 124v18M264 124v10M294 124v18\"/></g><path d=\"M71 78c25-27 68-27 93 0-25 25-68 25-93 0Z\" fill=\"#fff\" stroke=\"#2558d8\" stroke-width=\"3\"/><path d=\"M196 78c25-27 68-27 93 0-25 25-68 25-93 0Z\" fill=\"#fff\" stroke=\"#2558d8\" stroke-width=\"3\"/><circle cx=\"118\" cy=\"78\" r=\"14\" fill=\"#2f2a26\"/><circle cx=\"243\" cy=\"78\" r=\"14\" fill=\"#2f2a26\"/><circle cx=\"123\" cy=\"73\" r=\"4\" fill=\"#fff\"/><circle cx=\"248\" cy=\"73\" r=\"4\" fill=\"#fff\"/><path d=\"M118 104v18M243 104v18\" stroke=\"#ff6b35\" stroke-width=\"3\" stroke-linecap=\"round\"/><path d=\"M128 113h105\" stroke=\"#ff6b35\" stroke-width=\"4\" stroke-linecap=\"round\"/><path d=\"M129 113l10-8v16Z\" fill=\"#ff6b35\"/><path d=\"M232 113l-10-8v16Z\" fill=\"#ff6b35\"/><rect x=\"154\" y=\"96\" width=\"52\" height=\"28\" rx=\"14\" fill=\"#ff6b35\"/><text x=\"180\" y=\"115\" text-anchor=\"middle\" fill=\"#fff\" font-size=\"16\" font-weight=\"800\" font-family=\"Arial, sans-serif\">PD</text></svg></div><p class=\"eb-pd-guide__lead\">PD is the distance, in millimeters, between the centers of the pupils. It helps us center the lenses correctly.</p>' +\n      '<div class=\"eb-pd-guide__steps\"><div><b>1. Grab a millimeter ruler</b><p>Use a flat ruler with millimeter markings. Avoid flexible tape measures because they can bend and shift.</p></div>' +\n      '<div><b>2. Keep the eyes level</b><p>Stand at arm&apos;s length facing your child. Ask them to look straight ahead at a small target at your eye level.</p></div>' +\n      '<div><b>3. Measure pupil to pupil</b><p>Line up the 0 mm mark with the center of one pupil, then read the number at the center of the other pupil.</p></div></div>' +\n      '<p class=\"eb-pd-guide__note\">Measure 2-3 times in good lighting and use the average. If the prescription already includes PD, use that number. If you are not sure, choose <b>Need Help</b> and we will contact you before making the lenses.</p></div>';\n  }\n  function wireFile(el) {\n    var fileInput = $('[data-eb-rxfile]'), btn = el.querySelector('[data-eb-attach]');\n    if (!fileInput || !btn) return;\n    function receiveFile(f) {\n      if (!f) return;\n      var err = el.querySelector('[data-eb-fileerr]');\n      if (f.size > 10 * 1024 * 1024) {\n        if (err) { err.textContent = 'File is over 10 MB. Please use a smaller photo or PDF.'; err.style.display = 'block'; }\n        return;\n      }\n      if (!window.EyeBuddyRxOcr) {\n        if (err) { err.textContent = 'The prescription scanner is unavailable. Please try again.'; err.style.display = 'block'; }\n        return;\n      }\n      if (err) err.style.display = 'none';\n      if (state.rx.previewUrl) URL.revokeObjectURL(state.rx.previewUrl);\n      state.rx.file = f.name;\n      state.rx.fileObject = f;\n      state.rx.cartFileObject = f;\n      state.rx.cartFilePromise = window.EyeBuddyRxOcr.prepareUploadFile\n        ? window.EyeBuddyRxOcr.prepareUploadFile(f).then(function (prepared) {\n          var uploadFile = prepared || f;\n          if (state.rx.fileObject === f) state.rx.cartFileObject = uploadFile;\n          return uploadFile;\n        }).catch(function () {\n          if (state.rx.fileObject === f) state.rx.cartFileObject = f;\n          return f;\n        })\n        : Promise.resolve(f);\n      state.rx.previewUrl = URL.createObjectURL(f);\n      state.rx.previewType = f.type || '';\n      state.rx.ocrStage = 'scanning';\n      state.rx.ocrProgress = 0;\n      state.rx.ocrError = '';\n      state.rx.ocrMissing = [];\n      render();\n      window.EyeBuddyRxOcr.scan(f, {\n        needsAdd: needsAdd(),\n        endpoint: CFG.ocrEndpoint || (location.hostname === '127.0.0.1' || location.hostname === 'localhost' ? 'http://127.0.0.1:8787/rx-scan' : ''),\n        progress: function (update) {\n          state.rx.ocrProgress = Math.max(state.rx.ocrProgress, Number(update.progress || 0));\n          var meter = root.querySelector('.eb-ocr-meter i');\n          if (meter) meter.style.width = Math.round(state.rx.ocrProgress * 100) + '%';\n        }\n      }).then(function (result) {\n        if (!result || result.kind === 'allError') {\n          state.rx.ocrStage = 'error';\n          state.rx.ocrError = 'We could not read the prescription clearly. Please use a sharper, well-lit image.';\n          render();\n          return;\n        }\n        applyOcrResult(result);\n        state.materialGroup = null;\n        state.material = null;\n        state.materialConfirmId = null;\n        render();\n      }).catch(function (error) {\n        console.error('[eb-rxflow] prescription scan failed:', error);\n        state.rx.ocrStage = 'error';\n        state.rx.ocrError = error && error.message ? error.message : 'We could not scan this file. Please try another image or PDF.';\n        render();\n      });\n    }\n    btn.onclick = function () {\n      // Mobile Safari can drop change events from detached, temporary file inputs.\n      // Reuse the persistent input inside the form and reset it so selecting the\n      // same file again still fires change.\n      fileInput.value = '';\n      fileInput.click();\n    };\n    fileInput.onchange = function (e) { receiveFile(e.target.files && e.target.files[0]); };\n    var zoom = el.querySelector('[data-eb-ocr-zoom]');\n    var lightbox = el.querySelector('[data-eb-ocr-lightbox]');\n    var lightboxClose = el.querySelector('[data-eb-ocr-lightbox-close]');\n    function closeLightbox() {\n      if (!lightbox) return;\n      if (typeof lightbox.close === 'function' && lightbox.open) lightbox.close();\n      else lightbox.removeAttribute('open');\n    }\n    if (zoom && lightbox) zoom.onclick = function () {\n      if (typeof lightbox.showModal === 'function') lightbox.showModal();\n      else lightbox.setAttribute('open', '');\n    };\n    if (lightboxClose) lightboxClose.onclick = closeLightbox;\n    if (lightbox) lightbox.onclick = function (e) { if (e.target === lightbox) closeLightbox(); };\n  }\n  function renderRx(el) {\n    var R = CFG.ranges;\n    var uploadReview = state.method === 'upload' && state.rx.ocrStage === 'review';\n    if (state.method === 'upload' && !uploadReview) {\n      el.innerHTML = '<h2>Upload Prescription</h2><p class=\"eb-hint eb-step-hint\">Upload a clear photo or PDF. We will scan the values for you.</p>' + uploadScannerHtml();\n      wireFile(el); syncNext(); return;\n    }\n    var stash = state.method === 'manual' && (!state.rxStashDismissed && !state.added) ? rxStashLoad() : null;\n    el.innerHTML = '<h2>' + (uploadReview ? 'Review the Prescription' : 'Enter the Prescription') + '</h2>' +\n      (uploadReview ? ocrReviewHtml() : '') +\n      (stash ? '<div class=\"eb-rxreuse\" data-eb-rxreuse><p class=\"eb-rxreuse__title\">Use the prescription you just entered?</p><p class=\"eb-rxreuse__vals\">' + esc(rxStashSummary(stash)) +\n        '</p><button type=\"button\" class=\"eb-cta eb-rxreuse__use\" data-eb-rxreuse-use>Use this prescription</button><button type=\"button\" class=\"eb-skiplink\" data-eb-rxreuse-no>Enter a different one</button></div>' : '') +\n      eyeBlock('od', 'OD (Right Eye)') + eyeBlock('os', 'OS (Left Eye)') +\n      '<hr class=\"eb-sep\">' + pdChooserHtml() +\n      '<hr class=\"eb-sep\"><div class=\"eb-prism-head\"><h3 class=\"eb-pdtitle\">Prism Values</h3><span class=\"eb-prism-price\">+' + money(prismFeePrice()) + '</span></div>' +\n      '<div class=\"eb-pdrow eb-prism-toggle\"><label><input type=\"radio\" name=\"eb-prism-toggle\" value=\"no\"' + (!state.rx.hasPrism ? ' checked' : '') + '> No</label><label><input type=\"radio\" name=\"eb-prism-toggle\" value=\"yes\"' + (state.rx.hasPrism ? ' checked' : '') + '> Yes</label></div>' +\n      (state.rx.hasPrism ? '<p class=\"eb-hint\">Enter prism values exactly as written on the prescription. Some prism prescriptions may require manual review.</p>' + prismBlock('od', 'OD (Right Eye)') + prismBlock('os', 'OS (Left Eye)') : '');\n    el.querySelectorAll('select[data-eye]').forEach(function (s) {\n      var eye = s.dataset.eye, f = s.dataset.f, v = state.rx[eye][f];\n      if (f === 'sph') opts(s, parseFloat(R.sphMin == null ? -15 : R.sphMin), parseFloat(R.sphMax == null ? 12 : R.sphMax), R.step, fmtP, v, uploadReview);\n      if (f === 'cyl') opts(s, parseFloat(R.cylMin), (R.cylMax == null ? 6 : parseFloat(R.cylMax)), R.step, fmtP, v, uploadReview);\n      if (f === 'axis') { opts(s, 1, 180, 1, function (x) { return x; }, v, true); s.disabled = parseFloat(state.rx[eye].cyl) === 0; }\n      if (f === 'add') opts(s, Math.min(0, parseFloat(R.addMin == null ? 0 : R.addMin)), parseFloat(R.addMax == null ? 4 : R.addMax), R.step, fmtP, Number.isFinite(parseFloat(v)) ? parseFloat(v).toFixed(2) : '', true);\n      s.onchange = function () {\n        state.rx[eye][f] = s.value; state.materialGroup = null; state.material = null;\n        state.rx.ocrMissing = (state.rx.ocrMissing || []).filter(function (field) { return field !== eye + '.' + f; });\n        if (s.parentElement) s.parentElement.classList.remove('eb-ocr-field--missing');\n        if (f === 'cyl') { if (parseFloat(s.value) === 0) state.rx[eye].axis = ''; render(); } else validateRx(el);\n        syncNext();\n      };\n    });\n    wirePdControls(el);\n    el.querySelectorAll('input[name=eb-prism-toggle]').forEach(function (r) {\n      r.onchange = function () { state.rx.hasPrism = r.value === 'yes'; if (!state.rx.hasPrism) clearPrismValues(); render(); };\n    });\n    el.querySelectorAll('[data-prism-eye]').forEach(function (s) {\n      var eye = s.dataset.prismEye, f = s.dataset.prismF, v = state.rx[eye][f];\n      if (f === 'prismH' || f === 'prismV') opts(s, 0, parseFloat(R.prismMax == null ? 10 : R.prismMax), R.step, function (x) { return x; }, v, true);\n      if (f === 'baseH') directionOpts(s, ['IN', 'OUT'], v);\n      if (f === 'baseV') directionOpts(s, ['UP', 'DOWN'], v);\n      s.onchange = function () {\n        state.rx[eye][f] = s.value;\n        if (f === 'prismH' && (!s.value || parseFloat(s.value) === 0)) state.rx[eye].baseH = '';\n        if (f === 'prismV' && (!s.value || parseFloat(s.value) === 0)) state.rx[eye].baseV = '';\n        validateRx(el); syncNext();\n      };\n    });\n    var useBtn = el.querySelector('[data-eb-rxreuse-use]');\n    if (useBtn) useBtn.onclick = function () {\n      var sv = rxStashLoad(); state.rxStashDismissed = true;\n      if (sv) {\n        state.rx.od = restoreEye(sv.od); state.rx.os = restoreEye(sv.os);\n        state.rx.hasPrism = sv.hasPrism === true || !!(prismString(state.rx.od) || prismString(state.rx.os));\n        state.rx.pdMode = sv.pdMode === 'dual' ? 'dual' : sv.pdMode === 'help' ? 'help' : 'single';\n        state.rx.pd = sv.pd || ''; state.rx.pdR = sv.pdR || ''; state.rx.pdL = sv.pdL || ''; state.rx.pdHelp = sv.pdHelp === true;\n        state.materialGroup = null; state.material = null;\n      }\n      render();\n    };\n    var noBtn = el.querySelector('[data-eb-rxreuse-no]');\n    if (noBtn) noBtn.onclick = function () { state.rxStashDismissed = true; render(); };\n    if (uploadReview) {\n      wireFile(el);\n      (state.rx.ocrMissing || []).forEach(function (field) {\n        if (field === 'pd') return;\n        var parts = field.split('.');\n        var select = el.querySelector('[data-eye=\"' + parts[0] + '\"][data-f=\"' + parts[1] + '\"]');\n        if (select && select.parentElement) select.parentElement.classList.add('eb-ocr-field--missing');\n      });\n    }\n    renderPd(el); validateRx(el); syncNext();\n  }\n  function renderPd(el) {\n    var a = el.querySelector('[data-eb-pdarea]'), R = CFG.ranges;\n    if (!a) return;\n    if (state.rx.pdMode === 'help') {\n      a.innerHTML = '';\n      return;\n    }\n    if (state.rx.pdMode === 'single') {\n      a.innerHTML = '<div style=\"max-width:220px\"><label class=\"eb-f\">PD</label><select data-eb-pd1></select></div>';\n      var s = a.querySelector('[data-eb-pd1]');\n      opts(s, parseFloat(R.pdMin), parseFloat(R.pdMax), R.pdStep, function (x) { return x; }, state.rx.pd, true);\n      s.onchange = function (e) { state.rx.pd = e.target.value; state.rx.ocrMissing = (state.rx.ocrMissing || []).filter(function (field) { return field !== 'pd'; }); renderFramePdWarning(el); validateRx(el); syncNext(); };\n    } else {\n      a.innerHTML = '<div class=\"eb-grid3\" style=\"grid-template-columns:1fr 1fr;max-width:340px\"><div><label class=\"eb-f\">Right (OD)</label><select data-eb-pdr></select></div><div><label class=\"eb-f\">Left (OS)</label><select data-eb-pdl></select></div></div>';\n      var r = a.querySelector('[data-eb-pdr]'), l = a.querySelector('[data-eb-pdl]');\n      opts(r, parseFloat(R.dpdMin), parseFloat(R.dpdMax), R.pdStep, function (x) { return x; }, state.rx.pdR, true);\n      opts(l, parseFloat(R.dpdMin), parseFloat(R.dpdMax), R.pdStep, function (x) { return x; }, state.rx.pdL, true);\n      r.onchange = function (e) { state.rx.pdR = e.target.value; state.rx.ocrMissing = (state.rx.ocrMissing || []).filter(function (field) { return field !== 'pd'; }); renderFramePdWarning(el); validateRx(el); syncNext(); };\n      l.onchange = function (e) { state.rx.pdL = e.target.value; state.rx.ocrMissing = (state.rx.ocrMissing || []).filter(function (field) { return field !== 'pd'; }); renderFramePdWarning(el); validateRx(el); syncNext(); };\n    }\n    renderFramePdWarning(el);\n  }\n  function rxProblems() {\n    var p = {};\n    addPdProblems(p);\n    if (state.method === 'upload') {\n      if (!state.rx.file) p.file = 'Please upload the prescription file.';\n      else if (state.rx.ocrStage !== 'review') p.file = 'Please wait for the prescription scan to finish.';\n    }\n    if (state.method !== 'manual' && state.method !== 'upload') return p;\n    ['od', 'os'].forEach(function (eye) {\n      var e = state.rx[eye], cyl = parseFloat(e.cyl) || 0, add = parseFloat(e.add);\n      var eyeIssues = [];\n      if (e.sph === '') eyeIssues.push('Choose SPH.');\n      if (e.cyl === '') eyeIssues.push('Choose CYL.');\n      if (e.cyl !== '' && cyl !== 0 && !e.axis) eyeIssues.push('AXIS is required when CYL is not 0.00.');\n      if (needsAdd() && !Number.isFinite(add)) eyeIssues.push('Choose ADD for this eye. Select 0.00 if the prescription specifies no ADD.');\n      else if (needsAdd() && add < 0) eyeIssues.push('ADD must be 0.00 or a positive value.');\n      else if (needsAdd() && add === 0 && parseFloat(state.rx[eye === 'od' ? 'os' : 'od'].add) === 0) {\n        eyeIssues.push('Both ADD values are 0.00. Please check your prescription and lens type, or contact us for help.');\n      }\n      if (eyeIssues.length) p[eye] = eyeIssues.join(' ');\n      if (!state.rx.hasPrism) return;\n      var prismIssues = [];\n      if (parseFloat(e.prismH) > 0 && !e.baseH) prismIssues.push('Choose horizontal base direction.');\n      if (e.baseH && !(parseFloat(e.prismH) > 0)) prismIssues.push('Choose a horizontal prism amount.');\n      if (parseFloat(e.prismV) > 0 && !e.baseV) prismIssues.push('Choose vertical base direction.');\n      if (e.baseV && !(parseFloat(e.prismV) > 0)) prismIssues.push('Choose a vertical prism amount.');\n      if (prismIssues.length) p[eye + 'Prism'] = prismIssues.join(' ');\n    });\n    if (state.rx.hasPrism && !hasPrismValues()) p.prism = 'Please enter at least one prism value, or choose No.';\n    return p;\n  }\n  function addPdProblems(p) {\n    if (state.method !== 'manual' && state.method !== 'upload') return;\n    if (state.rx.pdMode === 'help') {\n      if (!state.rx.pdHelp) p.pd = 'Please choose Measure PD or Need Help.';\n      return;\n    }\n    if (state.rx.pdMode === 'single') { if (!state.rx.pd) p.pd = 'Please choose a PD.'; }\n    else if (!state.rx.pdR || !state.rx.pdL) p.pd = 'Please choose both PD values.';\n    else if (Math.abs(parseFloat(state.rx.pdR) - parseFloat(state.rx.pdL)) > 4) p.pdWarn = 'Right and left PD differ by more than 4 mm. Please double-check.';\n  }\n  function validateRx(el) {\n    var p = rxProblems();\n    var fileErr = el.querySelector('[data-eb-fileerr]');\n    if (fileErr && p.file) { fileErr.style.display = 'block'; fileErr.textContent = p.file; }\n    ['od', 'os'].forEach(function (eye) {\n      var box = el.querySelector('[data-err=\"' + eye + '\"]');\n      if (box) { box.style.display = p[eye] ? 'block' : 'none'; box.textContent = p[eye] || ''; }\n      var prismBox = el.querySelector('[data-err=\"' + eye + '-prism\"]');\n      if (prismBox) { prismBox.style.display = p[eye + 'Prism'] || p.prism ? 'block' : 'none'; prismBox.textContent = p[eye + 'Prism'] || p.prism || ''; }\n    });\n    var pd = el.querySelector('[data-err=\"pd\"]');\n    if (pd) {\n      if (p.pd) { pd.style.display = 'block'; pd.className = 'eb-fielderr'; pd.textContent = p.pd; }\n      else if (p.pdWarn) { pd.style.display = 'block'; pd.className = 'eb-fieldwarn'; pd.textContent = p.pdWarn; }\n      else pd.style.display = 'none';\n    }\n  }\n  function rxValid() {\n    var p = rxProblems();\n    if (p.od || p.os || p.odPrism || p.osPrism || p.prism || p.pd || p.file) return false;\n    return true;\n  }\n  function renderMaterial(el) {\n    var groups = materialGroups();\n    var availabilityNote = state.type === 'multifocal' ? 'Trivex is not available for multifocal lenses.' : state.lensOption === 'blue' ? 'Trivex is not available with Blue Light.' : '';\n    if (!state.materialGroup || !groups.some(function (g) { return g.id === state.materialGroup; })) {\n      el.innerHTML = '<h2>Choose Lens Material</h2><p class=\"eb-hint eb-step-hint\">Choose a material first. The next screen shows the available prescription tiers and prices.</p>' +\n        (availabilityNote ? '<p class=\"eb-hint eb-step-hint\" role=\"note\">' + esc(availabilityNote) + '</p>' : '') +\n        groups.map(function (g) { return choice(g, state.materialGroup === g.id, false, ''); }).join('');\n      el.querySelectorAll('.eb-choice').forEach(function (b) {\n        b.onclick = function () { state.materialGroup = b.dataset.k; state.material = null; state.materialConfirmId = null; renderMaterial(el); syncSummary(); syncNext(); resetStepScroll(); };\n      });\n      wireImagePreviews(el);\n      return;\n    }\n    var list = materialList().filter(function (m) { return m.group === state.materialGroup; }).map(function (m) {\n      var label = m.t;\n      var sphMin = Number(m.sphMin == null ? -Math.abs(Number(m.sph || 0)) : m.sphMin);\n      var sphMax = Number(m.sphMax == null ? Math.abs(Number(m.sph || 0)) : m.sphMax);\n      var cylMin = Number(m.cylMin == null ? -Math.abs(Number(m.cyl || 0)) : m.cylMin);\n      var cylMax = Number(m.cylMax == null ? Math.abs(Number(m.cyl || 0)) : m.cylMax);\n      return Object.assign({}, m, { t: label, ic: materialTierIcon(m), range: 'SPH ' + fmtRange(sphMin, sphMax, true) + ', CYL ' + fmtRange(cylMin, cylMax, false) });\n    });\n    renderChoices(el, state.materialGroup, 'Choose the tier that matches the prescription. We check plus-cylinder prescriptions after converting them to lab-ready minus-cylinder form.', list, state.material, function (k) {\n      var selectedMaterial = materialList().find(function (m) { return m.id === k; });\n      if (materialConfirmation(selectedMaterial)) {\n        state.material = null;\n        state.materialConfirmId = k;\n        renderMaterial(el);\n        return false;\n      }\n      state.materialConfirmId = null;\n      state.material = k;\n    }, materialCompatible);\n    if (availabilityNote) el.querySelector('h2').insertAdjacentHTML('afterend', '<p class=\"eb-hint eb-step-hint\" role=\"note\">' + esc(availabilityNote) + '</p>');\n    if (state.materialConfirmId) {\n      var pendingMaterial = materialList().find(function (m) { return m.id === state.materialConfirmId; });\n      var pendingConfirmation = materialConfirmation(pendingMaterial);\n      var pendingCard = el.querySelector('.eb-choice[data-k=\"' + state.materialConfirmId + '\"]');\n      if (pendingCard && pendingConfirmation) {\n        pendingCard.insertAdjacentHTML('afterend', '<div class=\"eb-standard-eligibility\"><p class=\"eb-hint\">' + esc(pendingConfirmation.message) + '</p><button type=\"button\" class=\"eb-cta\" data-eb-material-confirm>Confirm and continue</button></div>');\n        el.querySelector('[data-eb-material-confirm]').onclick = function () {\n          state.material = state.materialConfirmId;\n          state.materialConfirmId = null;\n          advance();\n        };\n      }\n    }\n    el.insertAdjacentHTML('beforeend', '<p class=\"eb-material-help\">Can&apos;t choose a lens or have a special request? Contact <a href=\"mailto:hi@eyebuddykids.com\">hi@eyebuddykids.com</a>.</p>');\n  }\n  function renderAddons(el) {\n    el.innerHTML = '<h2>Complete the Pair</h2><p class=\"eb-hint eb-step-hint\">Optional extras.</p>' +\n      CFG.addons.map(function (a) {\n        var on = state.addons.indexOf(a.id) !== -1;\n        var hasPrice = Number(a.price) > 0;\n        return '<button type=\"button\" class=\"eb-choice' + (hasPrice ? '' : ' eb-choice--noprice') + (on ? ' eb-choice--selected' : '') + '\" data-k=\"' + esc(a.id) + '\"><span class=\"eb-check\">' + (on ? '\u2713' : '') + '</span><span><div class=\"eb-t\">' + esc(a.name) + '</div><div class=\"eb-d\">' + esc(a.desc || '') + '</div></span>' + (hasPrice ? '<span class=\"eb-price\">' + money(a.price) + '</span>' : '') + '</button>';\n      }).join('') + '<button type=\"button\" class=\"eb-skiplink\" data-eb-skip>No thanks, continue without extras</button>';\n    el.querySelectorAll('.eb-choice').forEach(function (b) {\n      b.onclick = function () {\n        var k = b.dataset.k;\n        state.addons = state.addons.indexOf(k) !== -1 ? state.addons.filter(function (x) { return x !== k; }) : state.addons.concat([k]);\n        renderAddons(el); syncSummary(); syncNext();\n      };\n    });\n    el.querySelector('[data-eb-skip]').onclick = function () { state.addons = []; advance(); };\n  }\n  function pdString() { return state.rx.pdHelp ? 'Customer needs help - contact before production' : state.rx.pdMode === 'single' ? 'Single | ' + state.rx.pd : 'Dual | R ' + state.rx.pdR + ' / L ' + state.rx.pdL; }\n  function eyeString(eye) {\n    var e = state.rx[eye], ax = parseFloat(e.cyl) !== 0 ? ' | x' + String(e.axis).padStart(3, '0') : '';\n    var add = needsAdd() && Number.isFinite(parseFloat(e.add)) ? ' | ADD ' + fmtP(e.add) : '';\n    return fmtP(e.sph) + ' | ' + fmtP(e.cyl) + ax + add;\n  }\n  function labEyeString(eye) {\n    var n = normalizeEye(state.rx[eye]), ax = n.cyl !== 0 && n.axis ? ' | x' + String(n.axis).padStart(3, '0') : '';\n    return fmtP(n.sph) + ' | ' + fmtP(n.cyl) + ax;\n  }\n  function renderReview(el) {\n    var v = currentVariant(), comps = componentList(), adds = chosenAddons(), rxHtml = '';\n    var verificationHtml = complexLensNeedsReview() ? '<div class=\"eb-confirmbox\"><span><b>Manual review required</b><br>This lens can be made, but it is more complex and requires manual review. We will contact you if any changes are needed.</span></div>' : '';\n    var colorHtml = state.lensOption === 'sun' && selectedSunColor() ? '<div class=\"eb-row\"><span class=\"eb-muted\">Lens Color</span><b>' + esc(selectedSunColor().t) + '</b></div>' : '';\n    if (needsRx()) {\n      rxHtml += '<div class=\"eb-row\"><span class=\"eb-muted\">Method</span><b>' + esc(frameMethod()) + '</b></div>';\n      if (state.method === 'manual' || state.method === 'upload') {\n        rxHtml += '<div class=\"eb-row\"><span class=\"eb-muted\">OD (Right)</span><b>' + esc(eyeString('od')) + '</b></div><div class=\"eb-row\"><span class=\"eb-muted\">OS (Left)</span><b>' + esc(eyeString('os')) + '</b></div><div class=\"eb-row\"><span class=\"eb-muted\">PD</span><b>' + esc(pdString()) + '</b></div>';\n        if (state.rx.hasPrism && eyePrismString('od')) rxHtml += '<div class=\"eb-row\"><span class=\"eb-muted\">OD Prism</span><b>' + esc(eyePrismString('od')) + '</b></div>';\n        if (state.rx.hasPrism && eyePrismString('os')) rxHtml += '<div class=\"eb-row\"><span class=\"eb-muted\">OS Prism</span><b>' + esc(eyePrismString('os')) + '</b></div>';\n      }\n    }\n    if (state.rx.file) rxHtml += '<div class=\"eb-row\"><span class=\"eb-muted\">Rx file</span><b>' + esc(state.rx.file) + '</b></div>';\n    el.innerHTML = '<h2>Please Review the Order</h2><div class=\"eb-rev\"><div class=\"eb-row\"><b>' + esc(frameName(v)) + '</b><b>' + money(v.price) + '</b></div><div class=\"eb-row\"><span class=\"eb-muted\">Lens</span><b>' + esc(lensLabel()) + '</b></div>' +\n      colorHtml +\n      comps.map(function (c) { return '<div class=\"eb-row\"><span class=\"eb-muted\">' + esc(c.kind) + '</span><b>' + esc(c.name) + ' / ' + money(c.price) + '</b></div>'; }).join('') +\n      (chargePrism() ? '<div class=\"eb-row\"><span class=\"eb-muted\">Prism Correction</span><b>' + money(prismFeePrice()) + '</b></div>' : '') +\n      adds.map(function (a) { return '<div class=\"eb-row\"><span class=\"eb-muted\">Add-on</span><b>' + esc(a.name) + (Number(a.price) > 0 ? ' / ' + money(a.price) : '') + '</b></div>'; }).join('') + rxHtml + verificationHtml + '</div>' +\n      '<div class=\"eb-rev\"><label class=\"eb-f\" for=\"eb-forname\">Who are these for? (first name, optional)</label><input type=\"text\" id=\"eb-forname\" maxlength=\"40\" placeholder=\"e.g. Mia\" value=\"' + esc(state.forName) + '\"><label class=\"eb-f\" for=\"eb-birthyear\" style=\"margin-top:12px\">Birth year (for fit check) \u00B7 Recommended</label><select id=\"eb-birthyear\">' + birthYearOptions() + '</select></div><div class=\"eb-rev\"><label class=\"eb-f\" for=\"eb-notes\">Order notes</label><textarea id=\"eb-notes\" rows=\"2\" placeholder=\"Anything we should know?\">' + esc(state.notes) + '</textarea></div><div data-eb-done style=\"display:none\"></div>';\n    el.querySelector('#eb-forname').oninput = function (e) { state.forName = e.target.value; };\n    el.querySelector('#eb-birthyear').onchange = function (e) { state.birthYear = e.target.value; };\n    el.querySelector('#eb-notes').oninput = function (e) { state.notes = e.target.value; };\n    if (state.added) renderSuccess();\n  }\n  function buildItems(pairId) {\n    var v = currentVariant();\n    if (needsMaterial() && (!selectedMaterial() || !(Number(selectedMaterial().price) > 0) || !selectedMaterial().variantId)) {\n      throw new Error('Please select a priced lens material before adding this pair.');\n    }\n    if (needsMaterial()) {\n      var compatibility = materialCompatible(selectedMaterial());\n      if (!compatibility.ok) throw new Error(compatibility.why);\n    }\n    var frameProps = { 'Prescription Type': typeLabel(), 'Lens': lensLabel(), '_pair_id': pairId };\n    if (state.lensOption === 'sun' && selectedSun()) frameProps['Sunglasses Style'] = selectedSun().t;\n    if (state.lensOption === 'sun' && selectedSunColor()) frameProps['Lens Color'] = selectedSunColor().t;\n    if (needsRx()) {\n      frameProps.Method = frameMethod();\n      frameProps.PD = orderPdString();\n      if (state.method === 'manual' || state.method === 'upload') {\n        frameProps['OD (Right)'] = eyeString('od'); frameProps['OS (Left)'] = eyeString('os');\n        frameProps['Lab OD (minus cyl)'] = labEyeString('od'); frameProps['Lab OS (minus cyl)'] = labEyeString('os');\n        if (state.rx.hasPrism) frameProps['Prism Values'] = 'Yes';\n        if (state.rx.hasPrism && eyePrismString('od')) frameProps['OD Prism'] = eyePrismString('od');\n        if (state.rx.hasPrism && eyePrismString('os')) frameProps['OS Prism'] = eyePrismString('os');\n      }\n    }\n    if (complexLensNeedsReview()) frameProps['Complex Lens Review'] = 'Manual review required before production';\n    if (state.forName) frameProps.For = state.forName;\n    if (state.birthYear) frameProps['Birth Year'] = birthYearOrderString();\n    if (state.notes) frameProps['Order Notes'] = state.notes;\n    var items = [{ id: v.id, quantity: 1, properties: frameProps }];\n    componentList().forEach(function (c) {\n      var props = { '_pair_id': pairId, Frame: frameName(v), Service: c.kind, 'Lens Choice': c.name };\n      if (c.kind === 'Sunglasses' && selectedSunColor()) props['Lens Color'] = selectedSunColor().t;\n      if (c.kind === 'Lens Material' && complexLensNeedsReview()) props['Complex Lens Review'] = 'Manual review required before production';\n      items.push({ id: c.variantId, quantity: 1, properties: props });\n    });\n    if (chargePrism() && prismFeeVariantId()) items.push({ id: prismFeeVariantId(), quantity: 1, properties: { '_pair_id': pairId, Frame: frameName(v), Service: 'Prism Correction' } });\n    chosenAddons().forEach(function (a) { items.push({ id: Number(a.variantId), quantity: 1, properties: { '_pair_id': pairId, Frame: frameName(v) } }); });\n    frameProps._eb_required_components = JSON.stringify(items.slice(1).map(function (item) { return { id: Number(item.id), quantity: item.quantity }; }));\n    return items;\n  }\n  function pairSubtotal() {\n    var v = currentVariant();\n    return Number(v.price) + componentList().reduce(function (s, c) { return s + Number(c.price); }, 0) + chosenAddons().reduce(function (s, a) { return s + Number(a.price); }, 0) + (chargePrism() ? prismFeePrice() : 0);\n  }\n  function syncSummary() {\n    var v = currentVariant(), comps = componentList(), adds = chosenAddons();\n    $('[data-eb-sumframe]').textContent = money(v.price);\n    $('[data-eb-lensrow]').style.display = comps.length ? 'flex' : 'none';\n    if (comps.length) $('[data-eb-sumlens]').textContent = money(comps.reduce(function (s, c) { return s + Number(c.price); }, 0));\n    var prismRow = $('[data-eb-prismrow]');\n    if (prismRow) { prismRow.style.display = chargePrism() ? 'flex' : 'none'; $('[data-eb-sumprism]').textContent = money(prismFeePrice()); }\n    var addSum = adds.reduce(function (s, a) { return s + Number(a.price); }, 0);\n    $('[data-eb-addonrow]').style.display = addSum > 0 ? 'flex' : 'none';\n    if (addSum > 0) $('[data-eb-sumaddons]').textContent = money(addSum);\n    $('[data-eb-sumtotal]').textContent = money(pairSubtotal());\n  }\n  function syncCartRow() {}\n  function canContinue() {\n    if (state.busy) return false;\n    switch (cur()) {\n      case 'type': return !!state.type;\n      case 'multitype': return !!state.multiType;\n      case 'lens': return state.type === 'multifocal' ? !!state.multiOption : !!state.lensOption;\n      case 'sun': return !!state.sunStyle;\n      case 'suncolor': return !!state.sunColor;\n      case 'method': return !!state.method;\n      case 'rx': return rxValid();\n      case 'material': return !!state.material && materialCompatible(selectedMaterial()).ok;\n      case 'addons': return true;\n      case 'review': return !state.added;\n    }\n    return false;\n  }\n  function syncNext() {\n    var n = $('[data-eb-next]');\n    n.disabled = state.busy || !canContinue();\n    n.textContent = state.busy ? (state.rx.file ? 'Uploading prescription...' : 'Adding...') : state.added ? 'Added to cart' : cur() === 'review' ? 'Add to Cart' : 'Continue';\n  }\n  function rxFileObj() {\n    var inp = $('[data-eb-rxfile]');\n    return state.rx.cartFileObject || state.rx.fileObject || (inp && inp.files && inp.files[0] ? inp.files[0] : null);\n  }\n  function addToCart() {\n    if (state.busy || state.added) return;\n    var pairId = 'eb-' + Date.now(), items, fileReady = state.rx.cartFilePromise || Promise.resolve(rxFileObj()), errBox = $('[data-eb-adderror]');\n    if (errBox) { errBox.style.display = 'none'; errBox.textContent = ''; }\n    state.busy = true; window.__ebPairAddPending = true; syncNext();\n    function done() { state.busy = false; window.__ebPairAddPending = false; state.added = true; if (state.method === 'manual' || state.method === 'upload') rxStashSave(); syncNext(); renderSuccess(); toast('Pair added'); }\n    function fail(err) {\n      console.error('[eb-rxflow] add to cart failed:', err); state.busy = false; window.__ebPairAddPending = false; syncNext();\n      var box = $('[data-eb-adderror]');\n      if (box) {\n        box.textContent = err && err.message ? err.message : 'Something went wrong adding this to the cart. Please try again or contact us.';\n        box.style.display = 'block';\n      }\n      toast('Could not add to cart');\n    }\n    try {\n      if (needsRx() && (state.method === 'manual' || state.method === 'upload') && !rxValid()) throw new Error('Please review the prescription before adding this pair.');\n      items = buildItems(pairId);\n    } catch (error) { fail(error); return; }\n    function verifyAddedPair() {\n      return fetch('/cart.js', { headers: { Accept: 'application/json' }, cache: 'no-store' }).then(function (r) {\n        if (!r.ok) throw new Error('We could not verify the complete pair. Please review your cart.');\n        return r.json();\n      }).then(function (cart) {\n        var actual = cart.items.filter(function (item) { return item.properties && item.properties._pair_id === pairId; });\n        if (actual.length !== items.length || items.some(function (expected) {\n          return !actual.some(function (item) {\n            return Number(item.variant_id || item.id) === Number(expected.id) && item.quantity === expected.quantity &&\n              Object.keys(expected.properties).every(function (key) { return String(item.properties[key]) === String(expected.properties[key]); });\n          });\n        })) throw new Error('The complete frame and lenses were not added. Please review your cart and try again.');\n        if (window.EBPairGuard) window.EBPairGuard.validate({ items: actual });\n      });\n    }\n    function addJson(list) {\n      return fetch('/cart/add.js', { method: 'POST', headers: { 'Content-Type': 'application/json', Accept: 'application/json' }, body: JSON.stringify({ items: list }) }).then(function (r) {\n        if (!r.ok) return r.json().catch(function () { return {}; }).then(function (j) { throw new Error(j.description || ('HTTP ' + r.status)); });\n        return r.json();\n      });\n    }\n    Promise.resolve(fileReady).then(function (file) {\n      file = file || rxFileObj();\n      if (!file) return addJson(items);\n      var frame = items[0], fd = new FormData();\n      fd.append('id', String(frame.id)); fd.append('quantity', '1');\n      Object.keys(frame.properties).forEach(function (k) { fd.append('properties[' + k + ']', frame.properties[k]); });\n      fd.append('properties[Rx File]', file, file.name);\n      return fetch('/cart/add.js', { method: 'POST', body: fd }).then(function (r) {\n        if (!r.ok) return r.text().then(function (t) { throw new Error('multipart add failed: ' + t.slice(0, 200)); });\n        return r.json();\n      }).then(function () {\n        return items.length > 1 ? addJson(items.slice(1)) : null;\n      });\n    }).then(verifyAddedPair).then(done).catch(function (err) {\n      fetch('/cart.js', { headers: { Accept: 'application/json' }, cache: 'no-store' }).then(function (r) {\n        if (!r.ok) throw err;\n        return r.json();\n      }).then(function (cart) {\n        var updates = {};\n        cart.items.forEach(function (item) { if (item.properties && item.properties._pair_id === pairId) updates[item.key] = 0; });\n        if (!Object.keys(updates).length) return;\n        return fetch('/cart/update.js', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ updates: updates }) }).then(function (r) { if (!r.ok) throw err; });\n      }).then(function () { fail(err); }).catch(function () {\n        fail(new Error('We could not verify or remove the incomplete pair. Do not check out; remove this pair from your cart and try again, or contact hi@eyebuddykids.com.'));\n      });\n    });\n  }\n  function renderSuccess() {\n    var d = $('[data-eb-done]'); if (!d) return;\n    d.style.display = 'block';\n    d.innerHTML = '<div class=\"eb-confirmbox eb-confirmbox--good\"><span><b>Pair added to cart!</b></span></div><a class=\"eb-cta\" style=\"display:block;text-align:center;text-decoration:none\" href=\"/cart\">Review cart</a><a class=\"eb-ghost\" href=\"' + esc(CFG.urls.secondPair) + '\">' + esc(CFG.copy.secondPairLabel || 'Add another pair') + '</a>';\n    d.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n  }\n\n  $('[data-eb-form]').addEventListener('submit', function (e) { e.preventDefault(); });\n  $('[data-eb-next]').addEventListener('click', function () { if (state.busy || !canContinue()) return; if (cur() === 'review') addToCart(); else advance(); });\n  $('[data-eb-back]').addEventListener('click', function () {\n    if (state.added) return;\n    if (cur() === 'material' && state.materialGroup) {\n      state.materialGroup = null;\n      state.material = null;\n      state.materialConfirmId = null;\n      render();\n      resetStepScroll();\n      return;\n    }\n    if (stepIdx > 0) { stepIdx--; render(); resetStepScroll(); }\n  });\n\n  var panel = $('[data-eb-panel]'), scrim = $('[data-eb-scrim]'), closeBtn = $('[data-eb-close]');\n  var lastFocus = null, keyHandler = null, hideTimer = null;\n  var reduceMotion = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n  document.querySelectorAll('[data-eb-pd-modal-close]').forEach(function (btn) {\n    btn.addEventListener('click', closePdMeasure);\n  });\n  document.addEventListener('keydown', function (e) {\n    if (e.key === 'Escape') closePdMeasure();\n  });\n  function panelFocusables() {\n    if (!panel) return [];\n    return Array.prototype.filter.call(panel.querySelectorAll('a[href],button:not([disabled]),input:not([disabled]),select:not([disabled]):not([data-eb-enhanced]),textarea:not([disabled]),[tabindex]:not([tabindex=\"-1\"])'), function (el) { return el.offsetParent !== null; });\n  }\n  function onPanelKey(e) {\n    if (e.key === 'Escape') {\n      if (root.querySelector('.eb-select--open')) { e.preventDefault(); closeSelectMenus(); return; }\n      e.preventDefault(); closePanel(); return;\n    }\n    if (e.key === 'Tab') {\n      var f = panelFocusables(); if (!f.length) return;\n      var first = f[0], last = f[f.length - 1];\n      if (e.shiftKey && document.activeElement === first) { e.preventDefault(); last.focus(); }\n      else if (!e.shiftKey && document.activeElement === last) { e.preventDefault(); first.focus(); }\n    }\n  }\n  // Speedy requires explicit acknowledgement on each entry into the lens wizard.\n  var speedyNotice = null;\n  function showSpeedyNotice() {\n    if (!speedyNotice) {\n      var style = document.createElement('style');\n      style.textContent = '.eb-speedy-notice{position:fixed;inset:0;box-sizing:border-box;width:calc(100% - 32px);max-width:440px;max-height:calc(100dvh - 40px);margin:auto;padding:28px;border:1px solid #eadfce;border-radius:22px;background:#fffaf3;color:#302821;font-family:inherit;box-shadow:0 20px 70px #30282126;overflow:auto;text-align:left}.eb-speedy-notice::backdrop{background:rgba(34,29,24,.45)}.eb-speedy-notice h2{margin:0 26px 14px 0;font-weight:800;font-size:25px;line-height:1.2}.eb-speedy-notice p{margin:0 0 16px;font-size:15px;line-height:1.6}.eb-speedy-notice .eb-speedy-range{display:block;padding:14px 16px;border-radius:12px;background:#fff0df;color:#a64316;font-size:21px;font-weight:800;text-align:center}.eb-speedy-notice a{color:#302821;text-decoration:underline}.eb-speedy-notice-actions{display:flex;gap:10px;margin-top:22px}.eb-speedy-notice button{appearance:none;box-sizing:border-box;min-height:46px;border:1px solid #dfd2c1;border-radius:999px;padding:10px 18px;font-family:inherit;font-size:15px;font-weight:700;cursor:pointer;background:#fff;color:#514335}.eb-speedy-notice button[data-speedy-yes]{flex:1;background:#ff682d;border-color:#ff682d;color:#fff}.eb-speedy-notice .eb-speedy-close{position:absolute;top:13px;right:13px;min-height:36px;width:36px;padding:0;border:0;background:transparent;font-size:25px;font-weight:400}.eb-speedy-notice button:focus-visible{outline:2px solid #245de9;outline-offset:3px}@media(max-width:480px){.eb-speedy-notice{padding:24px}.eb-speedy-notice h2{font-size:23px}}';\n      document.head.appendChild(style);\n      speedyNotice = document.createElement('dialog');\n      speedyNotice.className = 'eb-speedy-notice';\n      speedyNotice.setAttribute('aria-labelledby', 'eb-speedy-notice-title');\n      speedyNotice.setAttribute('aria-describedby', 'eb-speedy-notice-copy');\n      speedyNotice.innerHTML = '<button type=\"button\" class=\"eb-speedy-close\" aria-label=\"Close prescription notice\">\u00D7</button><h2 id=\"eb-speedy-notice-title\">Before you choose lenses</h2><p id=\"eb-speedy-notice-copy\" style=\"color:#d9480f;font-weight:700\">This frame requires specially shaped, curved lenses. If your prescription is outside our manufacturing range, we will contact you.</p><p>Questions? Contact <a href=\"mailto:hi@eyebuddykids.com\">hi@eyebuddykids.com</a>.</p><div class=\"eb-speedy-notice-actions\"><button type=\"button\" data-speedy-cancel>Cancel</button><button type=\"button\" data-speedy-yes>Yes, continue</button></div>';\n      document.body.appendChild(speedyNotice);\n      speedyNotice.querySelector('[data-speedy-cancel]').addEventListener('click', function () { speedyNotice.close(); });\n      speedyNotice.querySelector('.eb-speedy-close').addEventListener('click', function () { speedyNotice.close(); });\n      speedyNotice.querySelector('[data-speedy-yes]').addEventListener('click', function () {\n        speedyNotice.close();\n        if (currentVariant().available) openPanel(true);\n      });\n    }\n    if (!speedyNotice.open) speedyNotice.showModal();\n  }\n  function openPanel(speedyAccepted) {\n    if (!panel || panel.getAttribute('data-open') === '1') return;\n    if ((CFG.frame.handle === 'speedy' || CFG.frame.handle === 'zoom') && speedyAccepted !== true) { showSpeedyNotice(); return; }\n    if (!renderedOnce) render();\n    if (window.EyeBuddyRxOcr && window.EyeBuddyRxOcr.prewarm) window.EyeBuddyRxOcr.prewarm();\n    if (hideTimer) { clearTimeout(hideTimer); hideTimer = null; }\n    lastFocus = document.activeElement; scrim.hidden = false; panel.hidden = false;\n    document.documentElement.classList.add('eb-scroll-lock'); document.body.classList.add('eb-scroll-lock');\n    void panel.offsetWidth;\n    scrim.classList.add('eb-rxflow-scrim--open'); panel.classList.add('eb-rxflow-panel--open'); panel.setAttribute('data-open', '1');\n    keyHandler = onPanelKey; document.addEventListener('keydown', keyHandler, true);\n    if (closeBtn) closeBtn.focus();\n  }\n  function closePanel() {\n    if (!panel || panel.getAttribute('data-open') !== '1') return;\n    scrim.classList.remove('eb-rxflow-scrim--open'); panel.classList.remove('eb-rxflow-panel--open');\n    document.documentElement.classList.remove('eb-scroll-lock'); document.body.classList.remove('eb-scroll-lock');\n    panel.removeAttribute('data-open');\n    if (keyHandler) { document.removeEventListener('keydown', keyHandler, true); keyHandler = null; }\n    var hide = function () { panel.hidden = true; scrim.hidden = true; };\n    if (reduceMotion) hide(); else hideTimer = setTimeout(hide, 340);\n    if (lastFocus && lastFocus.focus) { try { lastFocus.focus(); } catch (e) {} }\n  }\n  document.addEventListener('click', function (e) {\n    if (!e.target.closest || !e.target.closest('.eb-select')) closeSelectMenus();\n    var t = e.target.closest && e.target.closest('[data-eb-rx-open]');\n    if (t) {\n      e.preventDefault();\n      if (t.disabled || t.getAttribute('aria-disabled') === 'true' || !currentVariant().available) return;\n      openPanel();\n    }\n  });\n  if (scrim) scrim.addEventListener('click', closePanel);\n  if (closeBtn) closeBtn.addEventListener('click', closePanel);\n\n  var lastVid = null;\n  setInterval(function () {\n    var v = currentVariant();\n    if (v.id !== lastVid) {\n      lastVid = v.id; syncRxTriggers(v); syncFrameVariantInput(v);\n      if (renderedOnce) syncSummary();\n      if (cur() === 'review' && !state.added) render();\n    }\n  }, 1500);\n\n  document.body.classList.add('eb-rxflow-active');\n  syncRxTriggers(currentVariant());\n  syncFrameVariantInput(currentVariant());\n})();\n"],
  "mappings": "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",
  "names": ["age", "selectedMaterial"]
}
