{
  "version": 3,
  "sources": ["/cdn/shop/t/8/assets/aa-remedy-chat.js?r=13891"],
  "sourcesContent": ["/* aa-remedy-chat.js: Aditi remedies consultation (WhatsApp-style) on api.astroaura.ai.\n   Auth rides the site's Aura AI phone-OTP session (aa-auth-v2.js / window.AAauth).\n   Flow: login -> pay \u20B915 here, a Shopify order through Magic Checkout -> profile picker\n   -> chart creation -> reading -> consulting (message cap) -> closed. Server is the source of truth;\n   on reload the full transcript is redrawn from GET /messages. */\n(function () {\n  'use strict';\n\n  var root, log, input, sendBtn, subEl, jumpBtn;\n  var API = '', LANG = 'en';\n  var cursor = 0, state = '', busy = false, left = null, price = 15;\n  var LEFT_SHOW = 20;  /* show messages left only from here down */\n  var typingRow = null, rzLoading = null, animOn = false;\n  var sessionId = '', sessions = [], viewing = null, langPending = false;  /* viewing: an earlier chat's session_id while it is on screen */\n\n  /* ---------- auth ---------- */\n  function authCfg() { return window.AA_AUTH_CONFIG || {}; }\n  function rawSession() {\n    try {\n      var ref = authCfg().projectRef || 'ieakxiipnpwvyvpsjnkl';\n      var raw = localStorage.getItem('sb-' + ref + '-auth-token');\n      return raw ? JSON.parse(raw) : null;\n    } catch (e) { return null; }\n  }\n  function loggedIn() { var s = rawSession(); return !!(s && s.access_token); }\n  function session() {\n    if (window.AAauth && AAauth.session) return AAauth.session();\n    return Promise.resolve(rawSession());\n  }\n  function userPhone() {\n    var s = rawSession();\n    var p = s && s.user && (s.user.phone || (s.user.user_metadata && s.user.user_metadata.phone)) || '';\n    return p ? ('+' + String(p).replace(/^\\+/, '')) : '';\n  }\n\n  /* ---------- api ---------- */\n  function api(path, body) {\n    return session().then(function (s) {\n      var ctl = ('AbortController' in window) ? new AbortController() : null;\n      var tmr = ctl ? setTimeout(function () { ctl.abort(); }, 65000) : null;\n      return fetch(API + path, {\n        method: body ? 'POST' : 'GET',\n        headers: Object.assign({ 'Content-Type': 'application/json' },\n          (s && s.access_token) ? { Authorization: 'Bearer ' + s.access_token } : {}),\n        body: body ? JSON.stringify(body) : undefined,\n        signal: ctl ? ctl.signal : undefined\n      }).then(function (r) {\n        if (tmr) clearTimeout(tmr);\n        return r.json().catch(function () { return {}; }).then(function (d) {\n          /* 402 buy_first (no paid consultation) carries the normal reply with the buy\n             bubble and state needs_purchase: render it like the 200 the API sent before. */\n          if (r.status === 402 && d.error === 'buy_first') return d;\n          if (!r.ok) { var e = new Error(d.message || ('HTTP ' + r.status)); e.status = r.status; e.code = d.error || ''; throw e; }\n          return d;\n        });\n      }, function (err) { if (tmr) clearTimeout(tmr); err.timeout = true; throw err; });\n    });\n  }\n\n  /* ---------- render helpers ---------- */\n  function esc(s) { return String(s == null ? '' : s).replace(/[&<>\"]/g, function (c) { return { '&': '&amp;', '<': '&lt;', '>': '&gt;', '\"': '&quot;' }[c]; }); }\n  function waText(s) {\n    return esc(s)\n      .replace(/\\*([^*\\n]+)\\*/g, '<b>$1</b>')\n      .replace(/(^|\\W)_([^_\\n]+)_(?=\\W|$)/g, '$1<i>$2</i>')\n      .replace(/~([^~\\n]+)~/g, '<s>$1</s>');\n  }\n  function tnow() {\n    var d = new Date(), h = d.getHours(), m = d.getMinutes(), ap = h >= 12 ? 'pm' : 'am';\n    h = h % 12 || 12; return h + ':' + (m < 10 ? '0' : '') + m + ' ' + ap;\n  }\n  function el(html) { var d = document.createElement('div'); d.innerHTML = html.trim(); return d.firstChild; }\n  /* ===== In-chat commerce: product card + remedy add-ons + ring builder (website only) =====\n     The theme's cart globals (AA_addToCart / AA_cartAdded / AA_openMagicCheckout) exist on the\n     site; in the app webview they don't, so cards fall back to opening the product page. */\n  var _rcProd = {}, _rcAddon = {}, RC_BUNDLE_CODE = 'REMEDY10';\n  var RC_SIZES = (function () { var a = []; for (var s = 9; s <= 30; s++) a.push(String(s)); return a; })();\n  var RC_ADDON = {\n    oil:   { handle: 'energising-oil',     emo: '\uD83E\uDED2', name: 'Premium Energised Oil', sub: 'Energise your stone so it works from day one.' },\n    plate: { handle: 'raw-selenite-plate', emo: '\u2B1C',       name: 'Raw Selenite Plate',    sub: 'Cleanse & recharge it every week.' }\n  };\n  function rcShopLive() { return typeof window.AA_addToCart === 'function'; }\n  function rcHandle(url) { var h = ('' + (url || '')).split('/products/')[1]; return h ? h.split('?')[0].split('#')[0] : ''; }\n  function rcGet(handle) {\n    if (!handle) return Promise.resolve(null);\n    if (_rcProd[handle]) return Promise.resolve(_rcProd[handle]);\n    return fetch('/products/' + handle + '.js', { credentials: 'same-origin' }).then(function (r) { return r.json(); })\n      .then(function (p) { _rcProd[handle] = p; return p; }).catch(function () { return null; });\n  }\n  function rcRs(cents) { return '\u20B9' + Math.round((Number(cents) || 0) / 100).toLocaleString('en-IN'); }\n  function rcImg(u, w) { u = '' + (u || ''); if (!u) return ''; if (u.indexOf('//') === 0) u = 'https:' + u; return u + (u.indexOf('?') >= 0 ? '&' : '?') + 'width=' + (w || 88); }\n  function rcOpt(p, name) { var o = p.options || []; for (var i = 0; i < o.length; i++) { var n = (typeof o[i] === 'string' ? o[i] : o[i].name) || ''; if (n.toLowerCase().indexOf(name.toLowerCase()) >= 0) return i; } return -1; }\n  function rcOptVals(p, name) { var i = rcOpt(p, name); if (i < 0) return []; var seen = {}, out = []; (p.variants || []).forEach(function (v) { var x = v.options[i]; if (x != null && !seen[x]) { seen[x] = 1; out.push(x); } }); return out; }\n  function rcVar(p, sel) {\n    var ti = rcOpt(p, 'Type'), ci = rcOpt(p, 'Carat'), mi = rcOpt(p, 'Material'), vs = p.variants || [];\n    for (var i = 0; i < vs.length; i++) {\n      var v = vs[i], ok = true;\n      if (sel.type != null && ti >= 0 && v.options[ti] !== sel.type) ok = false;\n      if (sel.carat != null && ci >= 0 && v.options[ci] !== sel.carat) ok = false;\n      if (sel.material != null && mi >= 0 && v.options[mi] !== sel.material) ok = false;\n      if (ok) return v;\n    }\n    return null;\n  }\n  /* the size Aditi advised: the item's `carat`, else ?carat= in its link; the card and the builder start there */\n  function rcCaratOf(it) {\n    var c = parseFloat(it && it.carat);\n    if (!(c > 0)) { var m = ('' + (it && it.url || '')).match(/[?&]carat=([\\d.]+)/); c = m ? parseFloat(m[1]) : 0; }\n    return c > 0 ? c : 0;\n  }\n  function rcNearCarat(p, c) {\n    var best = '', bd = Infinity;\n    rcOptVals(p, 'Carat').forEach(function (v) { var d = Math.abs(parseFloat(v) - c); if (d < bd) { bd = d; best = v; } });\n    return best;\n  }\n  function rcAddonVar(k) { var ap = _rcAddon[k]; if (!ap) return null; var vs = ap.variants || []; return vs.filter(function (x) { return x.available; })[0] || vs[0] || null; }\n  /* add items; `bundle` also applies the 10% complete-remedy code so Magic Checkout prefills it */\n  function rcCartAdd(items, bundle) {\n    return fetch('/cart/add.js', { method: 'POST', credentials: 'same-origin', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', 'X-Requested-With': 'XMLHttpRequest' }, body: JSON.stringify({ items: items }) })\n      .then(function () {\n        if (!bundle) return;\n        try { document.cookie = 'discount_code=' + RC_BUNDLE_CODE + '; path=/; max-age=93600; samesite=lax'; } catch (e) {}\n        return fetch('/discount/' + RC_BUNDLE_CODE + '?redirect=%2Fcart.js', { credentials: 'same-origin' }).catch(function () {});\n      });\n  }\n  function rcAfterAdd(buy) {\n    if (buy) { try { if (typeof window.AA_openMagicCheckout === 'function') window.AA_openMagicCheckout(); } catch (e) {} setTimeout(function () { try { window.__aaBuyNow = false; } catch (e) {} }, 2500); }\n    else { try { if (typeof window.AA_cartAdded === 'function') window.AA_cartAdded(); else document.dispatchEvent(new CustomEvent('cart:updated')); } catch (e) {} }\n  }\n  function buildProductCard(card, it) {\n    var addB = card.querySelector('[data-rc-add]'), buyB = card.querySelector('[data-rc-buy]');\n    var toPdp = function () { [addB, buyB].forEach(function (b) { if (b) b.addEventListener('click', function () { try { window.open(it.url, '_blank'); } catch (e) {} }); }); };\n    if (!rcShopLive()) { toPdp(); return; }\n    rcGet(rcHandle(it.url)).then(function (p) {\n      if (!p) { toPdp(); return; }\n      var isGem = rcOpt(p, 'Type') >= 0 && rcOptVals(p, 'Type').indexOf('Ring') >= 0;\n      var advised = isGem ? rcNearCarat(p, rcCaratOf(it) || 4) : '4';\n      var base = rcVar(p, { type: (isGem ? 'Gemstone' : null), carat: advised, material: 'No Setting' }) || (p.variants || []).filter(function (v) { return v.available; })[0] || (p.variants || [])[0];\n      var meta = card.querySelector('[data-rc-meta]');\n      if (meta && base) meta.innerHTML = '<span class=\"aa-rc__price\">' + rcRs(base.price) + '</span>' + (isGem ? '<span class=\"aa-rc__trust\">' + (rcCaratOf(it) ? esc(advised) + ' ct \u00B7 ' : '') + '\u2713 Lab-certified</span>' : '');\n      function wire(b, buy) {\n        if (!b) return;\n        b.addEventListener('click', function () {\n          if (b.disabled || !base) return; var o = b.textContent; b.disabled = true; b.textContent = buy ? 'Opening\u2026' : 'Adding\u2026';\n          if (buy) { try { window.__aaBuyNow = true; } catch (e) {} }\n          rcCartAdd([{ id: base.id, quantity: 1 }]).then(function () { rcAfterAdd(buy); if (buy) { b.disabled = false; b.textContent = o; } else { b.textContent = 'Added \u2713'; setTimeout(function () { b.disabled = false; b.textContent = o; }, 1600); } },\n            function () { try { window.__aaBuyNow = false; } catch (e) {} b.disabled = false; b.textContent = 'Try again'; setTimeout(function () { b.textContent = o; }, 1500); });\n        });\n      }\n      wire(addB, false); wire(buyB, true);\n      buildAddons(card.querySelector('[data-rc-addons]'), p, isGem, advised);\n    });\n  }\n  function buildAddons(box, p, isGem, carat) {\n    if (!box) return;\n    if (isGem) {\n      box.innerHTML = '<button type=\"button\" class=\"aa-rc__ring\" data-rc-ring>' +\n        '<span class=\"aa-rc__ring-emo\">\uD83D\uDC8D</span>' +\n        '<span class=\"aa-rc__ring-tx\"><b>Wear it as a ring or pendant</b><i>Pick your metal, carat &amp; size</i></span>' +\n        '<span class=\"aa-rc__ring-cta\">Configure \u2192</span></button>';\n      Object.keys(RC_ADDON).forEach(function (k) { rcGet(RC_ADDON[k].handle).then(function (ap) { _rcAddon[k] = ap; }); });\n      var rb = box.querySelector('[data-rc-ring]'); if (rb) rb.addEventListener('click', function () { openRingPopup(p, false, carat); });\n      return;\n    }\n    var h = '<div class=\"aa-rc__ao-h\">Complete your remedy:</div>';\n    Object.keys(RC_ADDON).forEach(function (k) { var a = RC_ADDON[k]; h += '<button type=\"button\" class=\"aa-rc__ao\" data-rc-addon=\"' + k + '\"><span class=\"aa-rc__ao-emo\">' + a.emo + '</span><span class=\"aa-rc__ao-tx\"><b>' + a.name + '</b><i>' + a.sub + '</i></span><span class=\"aa-rc__ao-cta\" data-ctl>Add</span></button>'; });\n    box.innerHTML = h;\n    Object.keys(RC_ADDON).forEach(function (k) { rcGet(RC_ADDON[k].handle).then(function (ap) { _rcAddon[k] = ap; var c = box.querySelector('[data-rc-addon=\"' + k + '\"] [data-ctl]'); var v = rcAddonVar(k); if (c && v) c.textContent = 'Add \u00B7 ' + rcRs(v.price); }); });\n    box.querySelectorAll('[data-rc-addon]').forEach(function (b) {\n      b.addEventListener('click', function () {\n        var k = b.getAttribute('data-rc-addon'), c = b.querySelector('[data-ctl]'), v = rcAddonVar(k);\n        if (!v || b.classList.contains('is-added')) return; var o = c.textContent; c.textContent = '\u2026';\n        rcCartAdd([{ id: v.id, quantity: 1 }]).then(function () { rcAfterAdd(false); c.textContent = 'Added \u2713'; b.classList.add('is-added'); }, function () { c.textContent = o; });\n      });\n    });\n  }\n  /* [indian size, circumference mm, inner diameter mm] \u2014 from the product page size chart */\n  var RC_SIZECHART = [[9,49.3,15.7],[10,50.6,16.1],[11,51.8,16.5],[12,53.1,16.9],[13,54.3,17.3],[14,55.6,17.7],[15,56.9,18.1],[16,58.1,18.5],[17,59.4,18.9],[18,60.6,19.3],[19,61.9,19.7],[20,63.1,20.1],[21,64.4,20.5],[22,65.7,20.9],[23,66.9,21.3],[24,68.2,21.7],[25,69.4,22.1],[26,70.7,22.5],[27,71.9,22.9],[28,73.2,23.3],[29,74.5,23.7],[30,75.7,24.1]];\n  function openRingPopup(p, bundle, carat) {\n    var types = rcOptVals(p, 'Type'), mats = rcOptVals(p, 'Material').filter(function (m) { return m !== 'No Setting'; }), carats = rcOptVals(p, 'Carat');\n    var want = carats.indexOf(carat) >= 0 ? carat : '4';\n    var sel = { type: (types.indexOf('Ring') >= 0 ? 'Ring' : types[0]), carat: (carats.indexOf(want) >= 0 ? want : carats[0]), material: (mats[0] || 'No Setting'), size: '' };\n    var oil = !!bundle, plate = !!bundle, guide = false, gtab = 'chart';\n    var typeLbl = { Gemstone: 'Just the stone', Ring: 'Ring', Pendant: 'Pendant' };\n    var wrap = el('<div class=\"aa-rc-sheet\"><div class=\"aa-rc-sheet__scrim\" data-close></div><div class=\"aa-rc-sheet__panel\"><button type=\"button\" class=\"aa-rc-sheet__x\" data-close aria-label=\"Close\">\u00D7</button><div class=\"aa-rc-sheet__body\" data-body></div></div></div>');\n    document.body.appendChild(wrap);\n    requestAnimationFrame(function () { wrap.classList.add('on'); });\n    function variant() { return rcVar(p, { type: sel.type, carat: sel.carat, material: (sel.type === 'Gemstone' ? 'No Setting' : sel.material) }); }\n    function guideHtml() {\n      var h = '<button type=\"button\" class=\"aa-rc-sheet__back\" data-guide-close>\u2190 Back</button>';\n      h += '<div class=\"aa-rc-sheet__t\">Find your ring size</div>';\n      h += '<div class=\"aa-rc-gtabs\"><button type=\"button\" class=\"aa-rc-gtab' + (gtab === 'chart' ? ' on' : '') + '\" data-gtab=\"chart\">Size chart</button><button type=\"button\" class=\"aa-rc-gtab' + (gtab === 'measure' ? ' on' : '') + '\" data-gtab=\"measure\">How to measure</button></div>';\n      if (gtab === 'chart') {\n        h += '<div class=\"aa-rc-gchart\"><table><thead><tr><th>Indian size</th><th>Inner \u2300</th><th>Circumf.</th></tr></thead><tbody>' + RC_SIZECHART.map(function (r) { return '<tr' + (sel.size === String(r[0]) ? ' class=\"on\"' : '') + '><td><b>' + r[0] + '</b></td><td>' + r[2] + ' mm</td><td>' + r[1] + ' mm</td></tr>'; }).join('') + '</tbody></table></div>';\n        h += '<p class=\"aa-rc-gnote\">Standard Indian ring scale. Between two sizes? Pick the larger one.</p>';\n      } else {\n        h += '<div class=\"aa-rc-gm\"><span class=\"aa-rc-gm__n\">1</span><div><b>Measure a ring you already wear</b><p>Measure the <b>inner diameter</b> across the ring in mm, then match the \u201CInner \u2300\u201D column.</p></div></div>';\n        h += '<div class=\"aa-rc-gm\"><span class=\"aa-rc-gm__n\">2</span><div><b>Measure your finger</b><p>Wrap a thread around the base of the finger, mark where it meets, measure that length in mm, then match the \u201CCircumf.\u201D column.</p></div></div>';\n        h += '<p class=\"aa-rc-gnote\">Still unsure? Add it and our team will confirm your size before dispatch.</p>';\n      }\n      return h;\n    }\n    function configHtml() {\n      var isRing = sel.type === 'Ring', isStone = sel.type === 'Gemstone';\n      var v = variant(), price = v ? v.price : 0;\n      var ov = rcAddonVar('oil'), pv = rcAddonVar('plate');\n      var oilP = ov ? ov.price : 0, plP = pv ? pv.price : 0;\n      var total = price + (oil ? oilP : 0) + (plate ? plP : 0);\n      var all = oil && plate, disc = all ? Math.round(total * 0.1) : 0, pay = total - disc;\n      var nm = (p.title || 'your stone').split('(')[0].replace(/Certified Natural\\s*/i, '').trim();\n      var h = '<div class=\"aa-rc-sheet__t\">Set up your ' + esc(nm) + '</div>';\n      h += '<div class=\"aa-rc-sheet__lab\">How to wear</div><div class=\"aa-rc-chips\">' + types.map(function (t) { return '<button type=\"button\" class=\"aa-rc-chip' + (sel.type === t ? ' on' : '') + '\" data-grp=\"type\" data-val=\"' + esc(t) + '\">' + esc(typeLbl[t] || t) + '</button>'; }).join('') + '</div>';\n      if (!isStone) h += '<div class=\"aa-rc-sheet__lab\">Metal</div><div class=\"aa-rc-mats\">' + mats.map(function (m) { return '<button type=\"button\" class=\"aa-rc-mat' + (sel.material === m ? ' on' : '') + '\" data-grp=\"material\" data-val=\"' + esc(m) + '\"><span class=\"aa-rc-sw\" data-metal=\"' + esc(m.toLowerCase()) + '\"><i></i></span><span class=\"aa-rc-mn\">' + esc(m) + '</span></button>'; }).join('') + '</div>';\n      h += '<div class=\"aa-rc-sheet__lab\">Carat</div><div class=\"aa-rc-chips\">' + carats.map(function (c) { return '<button type=\"button\" class=\"aa-rc-chip aa-rc-chip--c' + (sel.carat === c ? ' on' : '') + '\" data-grp=\"carat\" data-val=\"' + esc(c) + '\"><b>' + esc(c) + '</b><span>ct</span></button>'; }).join('') + '</div>';\n      if (isRing) h += '<div class=\"aa-rc-sheet__lab\">Ring size <span class=\"aa-rc-sheet__req\">required</span> <button type=\"button\" class=\"aa-rc-sheet__guide\" data-guide-open>Size guide</button></div><select class=\"aa-rc-sheet__sel\" data-size><option value=\"\">Select your finger size</option>' + RC_SIZES.map(function (s) { return '<option value=\"' + s + '\"' + (sel.size === s ? ' selected' : '') + '>' + s + '</option>'; }).join('') + '</select>';\n      var AO = [{ k: 'oil', on: oil, nm: 'Premium Energised Oil', tag: 'Works from day one', pr: oilP, img: _rcAddon.oil && _rcAddon.oil.featured_image },\n                { k: 'plate', on: plate, nm: 'Raw Selenite Plate', tag: 'Cleanse it weekly', pr: plP, img: _rcAddon.plate && _rcAddon.plate.featured_image }];\n      h += '<div class=\"aa-rc-sheet__lab\">Complete the remedy</div>';\n      AO.forEach(function (a) { h += '<button type=\"button\" class=\"aa-rc-ao2' + (a.on ? ' is-on' : '') + '\" data-ao=\"' + a.k + '\"><span class=\"aa-rc-ao2-im\">' + (a.img ? '<img src=\"' + rcImg(a.img, 96) + '\" alt=\"\" loading=\"lazy\">' : '<i>\u2726</i>') + '</span><span class=\"aa-rc-ao2-t\"><b>' + a.nm + '</b><small>' + a.tag + '</small></span><span class=\"aa-rc-ao2-p\">+' + rcRs(a.pr) + '</span><span class=\"aa-rc-ck\" aria-hidden=\"true\"></span></button>'; });\n      var cfg = (isStone ? 'Loose stone' : sel.type) + (isStone ? '' : ' \u00B7 ' + sel.material) + ' \u00B7 ' + sel.carat + ' ct' + (isRing && sel.size ? ' \u00B7 size ' + sel.size : '');\n      function srow(img, name, sub, pr) { return '<div class=\"aa-rc-srow\"><span class=\"aa-rc-srow-im\">' + (img ? '<img src=\"' + rcImg(img, 64) + '\" alt=\"\" loading=\"lazy\">' : '<i>\u2726</i>') + '</span><span class=\"aa-rc-srow-t\"><b>' + name + '</b>' + (sub ? '<small>' + sub + '</small>' : '') + '</span><em>' + rcRs(pr) + '</em></div>'; }\n      h += '<div class=\"aa-rc-build\"><div class=\"aa-rc-build__h\">Your build</div>';\n      h += srow(p.featured_image, esc(nm), cfg, price);\n      if (oil) h += srow(_rcAddon.oil && _rcAddon.oil.featured_image, 'Premium Energised Oil', '', oilP);\n      if (plate) h += srow(_rcAddon.plate && _rcAddon.plate.featured_image, 'Raw Selenite Plate', '', plP);\n      if (disc) h += '<div class=\"aa-rc-brow\"><span>Complete-remedy saving <i>10% off</i></span><em>\u2212' + rcRs(disc) + '</em></div>';\n      h += '</div>';\n      h += '<div class=\"aa-rc-foot\"><div class=\"aa-rc-foot__top\"><span class=\"aa-rc-foot__lbl\">Total</span><b class=\"aa-rc-foot__amt\">' + rcRs(pay) + '</b></div>';\n      h += '<div class=\"aa-rc-sheet__btns\"><button type=\"button\" class=\"aa-rc-sheet__add\" data-act=\"add\">Add to cart</button><button type=\"button\" class=\"aa-rc-sheet__buy\" data-act=\"buy\">Buy now</button></div></div>';\n      return h;\n    }\n    function render() { wrap.querySelector('[data-body]').innerHTML = guide ? guideHtml() : configHtml(); var pn = wrap.querySelector('.aa-rc-sheet__panel'); if (pn) pn.scrollTop = 0; }\n    function close() { wrap.classList.remove('on'); setTimeout(function () { if (wrap.parentNode) wrap.parentNode.removeChild(wrap); }, 260); }\n    function go(buy) {\n      var isRing = sel.type === 'Ring';\n      if (isRing && !sel.size) { var s = wrap.querySelector('[data-size]'); if (s) { s.classList.add('err'); s.focus(); } return; }\n      var v = variant(); if (!v) return;\n      var items = [isRing ? { id: v.id, quantity: 1, properties: { 'Ring Size': sel.size } } : { id: v.id, quantity: 1 }];\n      if (oil) { var ovx = rcAddonVar('oil'); if (ovx) items.push({ id: ovx.id, quantity: 1 }); }\n      if (plate) { var pvx = rcAddonVar('plate'); if (pvx) items.push({ id: pvx.id, quantity: 1 }); }\n      var all = oil && plate;\n      var btn = wrap.querySelector('[data-act=\"' + (buy ? 'buy' : 'add') + '\"]'); if (btn) { btn.disabled = true; btn.textContent = buy ? 'Opening\u2026' : 'Adding\u2026'; }\n      if (buy) { try { window.__aaBuyNow = true; } catch (e) {} }\n      rcCartAdd(items, all).then(function () { rcAfterAdd(buy); close(); }, function () { try { window.__aaBuyNow = false; } catch (e) {} if (btn) { btn.disabled = false; btn.textContent = 'Try again'; } });\n    }\n    wrap.addEventListener('click', function (e) {\n      if (e.target.closest('[data-close]')) { close(); return; }\n      if (e.target.closest('[data-guide-open]')) { guide = true; gtab = 'chart'; render(); return; }\n      if (e.target.closest('[data-guide-close]')) { guide = false; render(); return; }\n      var gt = e.target.closest('[data-gtab]'); if (gt) { gtab = gt.getAttribute('data-gtab'); render(); return; }\n      var c = e.target.closest('.aa-rc-chip, .aa-rc-mat'); if (c) { sel[c.getAttribute('data-grp')] = c.getAttribute('data-val'); render(); return; }\n      var ao = e.target.closest('.aa-rc-ao2'); if (ao) { var k = ao.getAttribute('data-ao'); if (k === 'oil') oil = !oil; else plate = !plate; render(); return; }\n      var act = e.target.closest('[data-act]'); if (act) { go(act.getAttribute('data-act') === 'buy'); return; }\n    });\n    wrap.addEventListener('change', function (e) {\n      if (e.target.hasAttribute('data-size')) { sel.size = e.target.value; e.target.classList.remove('err'); return; }\n    });\n    render();\n  }\n  function nearBottom() { return log.scrollHeight - log.scrollTop - log.clientHeight < 220; }\n  function scrollBot(force) {\n    if (force || nearBottom()) { log.scrollTop = log.scrollHeight; jumpBtn.classList.remove('on'); }\n    else jumpBtn.classList.add('on');\n  }\n  function add(node, force) {\n    if (animOn && node.classList && (node.classList.contains('aa-rc__row') || node.classList.contains('aa-rc__cardrow'))) node.classList.add('aa-rc__anim');\n    if (typingRow && typingRow.parentNode) log.insertBefore(node, typingRow); else log.appendChild(node);\n    if (animOn) { try { log.scrollTo({ top: log.scrollHeight, behavior: 'smooth' }); } catch (e) { log.scrollTop = log.scrollHeight; } jumpBtn.classList.remove('on'); }\n    else scrollBot(force);\n    return node;\n  }\n  function meta(out) { return '<span class=\"aa-rc__meta\">' + tnow() + (out ? ' <span class=\"aa-rc__tick\">&#10003;</span>' : '') + '</span>'; }\n\n  function addIn(html) {\n    return add(el('<div class=\"aa-rc__row aa-rc__row--in\"><div class=\"aa-rc__bb\">' + html + meta(false) + '</div></div>'));\n  }\n  function addOut(text) {\n    var row = add(el('<div class=\"aa-rc__row aa-rc__row--out\"><div class=\"aa-rc__bb\">' + waText(text) + meta(true) + '</div></div>'), true);\n    row.classList.add('aa-rc__anim');\n    return { row: row, bb: row.querySelector('.aa-rc__bb'), tick: row.querySelector('.aa-rc__tick') };\n  }\n  function sys(text) { add(el('<div class=\"aa-rc__sys\">' + esc(text) + '</div>')); }\n  function typing(on) {\n    if (on) {\n      if (!typingRow) { typingRow = el('<div class=\"aa-rc__row aa-rc__row--in aa-rc__typing\"><div class=\"aa-rc__bb\"><i></i><i></i><i></i></div></div>'); log.appendChild(typingRow); scrollBot(); }\n      setSub('typing\u2026');\n    } else {\n      if (typingRow) { typingRow.remove(); typingRow = null; }\n      setSub(null);\n    }\n  }\n  function setSub(override) {\n    if (override) { subEl.textContent = override; return; }\n    if (viewing) subEl.textContent = 'earlier consultation';\n    else if (state === 'consulting') subEl.textContent = 'online' + (left != null && left <= LEFT_SHOW ? ' \u00B7 ' + left + ' messages left' : '');\n    else if (state === 'awaiting_payment') subEl.textContent = 'awaiting payment';\n    else if (deadClosed()) subEl.textContent = 'consultation ended';\n    else subEl.textContent = 'online';\n  }\n\n  function newestRow() {\n    var kids = Array.prototype.filter.call(log.children, function (k) {\n      return k.classList.contains('aa-rc__row') || k.classList.contains('aa-rc__cardrow');\n    });\n    return kids.length ? kids[kids.length - 1] : null;\n  }\n  /* the server labels a freshly re-opened picker \"closed\" too, so treat it as\n     ended only when the newest message has no tappable control left. */\n  function hasLiveControl() {\n    var last = newestRow();\n    return !!(last && (last.querySelector('.aa-rc__optlist') || last.querySelector('[data-aa-pay]')));\n  }\n  function deadClosed() { return state === 'closed' && !hasLiveControl(); }\n\n  /* only the newest interactive block stays tappable; history stays visual */\n  function freezeOld() {\n    var last = newestRow();\n    log.querySelectorAll('.aa-rc__optlist').forEach(function (l) {\n      if (!(last && last.contains(l))) l.querySelectorAll('.aa-rc__opt').forEach(function (b) { b.disabled = true; });\n    });\n    log.querySelectorAll('[data-aa-pay]').forEach(function (p) {\n      p.disabled = busy || !(last && last.contains(p));\n    });\n  }\n\n  /* ---------- items ---------- */\n  function renderItem(it) {\n    if (it.type === 'text') { addIn(waText(it.text)); return; }\n    if (it.type === 'options') {\n      /* rich = any option carries a description (e.g. the profile picker): render\n         left-aligned rows with an initial avatar + chevron. Plain yes/no options\n         stay as centered WhatsApp-style reply buttons. */\n      var rich = (it.options || []).some(function (o) { return o.description; });\n      var btns = (it.options || []).map(function (o) {\n        var isNew = /(^|:)new$/.test(o.id || '') || /create|add/i.test(o.label || '');\n        if (rich) {\n          var initial = ((o.label || '?').trim().charAt(0) || '?').toUpperCase();\n          return '<button type=\"button\" class=\"aa-rc__opt aa-rc__opt--rich' + (isNew ? ' aa-rc__opt--new' : '') + '\" data-oid=\"' + esc(o.id) + '\" data-olabel=\"' + esc(o.label) + '\">' +\n            '<span class=\"aa-rc__opt-av\">' + (isNew ? '+' : esc(initial)) + '</span>' +\n            '<span class=\"aa-rc__opt-tx\"><b>' + esc(o.label) + '</b>' + (o.description ? '<small>' + esc(o.description) + '</small>' : '') + '</span>' +\n            '<span class=\"aa-rc__opt-go\">\u203A</span></button>';\n        }\n        return '<button type=\"button\" class=\"aa-rc__opt\" data-oid=\"' + esc(o.id) + '\" data-olabel=\"' + esc(o.label) + '\">' + esc(o.label) + (o.description ? '<small>' + esc(o.description) + '</small>' : '') + '</button>';\n      }).join('');\n      /* single-picker: the backend re-emits the same question repeatedly; never\n         stack duplicates \u2014 drop any existing identical picker before adding. */\n      var qtext = it.text || '';\n      Array.prototype.forEach.call(log.querySelectorAll('.aa-rc__opts'), function (o) {\n        if (o.getAttribute('data-q') === qtext) { var r = o.closest('.aa-rc__row'); if (r) r.remove(); }\n      });\n      var wrap = add(el('<div class=\"aa-rc__row aa-rc__row--in\"><div class=\"aa-rc__opts\" data-q=\"' + esc(qtext) + '\"><div class=\"aa-rc__bb\">' + waText(it.text) + meta(false) + '</div><div class=\"aa-rc__optlist' + (rich ? ' aa-rc__optlist--rich' : '') + '\">' + btns + '</div></div></div>'));\n      wrap.querySelectorAll('.aa-rc__opt').forEach(function (b) {\n        b.addEventListener('click', function () {\n          if (b.disabled || busy) return;\n          /* settle the picker: highlight the choice, disable the rest, then fold\n             the list away smoothly (the outbound bubble records the choice). */\n          var listEl = b.closest('.aa-rc__optlist');\n          b.classList.add('sel');\n          if (listEl) { listEl.querySelectorAll('.aa-rc__opt').forEach(function (x) { x.disabled = true; }); collapseList(listEl); }\n          doSend({ option_id: b.dataset.oid }, b.dataset.olabel);\n        });\n      });\n      return;\n    }\n    if (it.type === 'product') {\n      var pcard = add(el('<div class=\"aa-rc__row aa-rc__row--in aa-rc__cardrow\"><div class=\"aa-rc__card\">' +\n        (it.image_url ? '<a href=\"' + esc(it.url) + '\" target=\"_blank\" rel=\"noopener\"><img src=\"' + esc(it.image_url) + '\" alt=\"\" loading=\"lazy\"></a>' : '') +\n        '<div class=\"aa-rc__card-b\"><div class=\"aa-rc__card-n\">' + esc(it.name) + '</div><div class=\"aa-rc__card-meta\" data-rc-meta></div></div>' +\n        '<div class=\"aa-rc__card-acts\"><button type=\"button\" class=\"aa-rc__card-add\" data-rc-add>Add to cart</button>' +\n        '<button type=\"button\" class=\"aa-rc__card-buy\" data-rc-buy>Buy now</button></div>' +\n        '<div class=\"aa-rc__addons\" data-rc-addons></div>' +\n        '<a class=\"aa-rc__card-view\" href=\"' + esc(it.url) + '\" target=\"_blank\" rel=\"noopener\">' + esc(it.button_label && it.button_label !== 'View' ? it.button_label : 'View details') + '</a>' +\n        '</div></div>'));\n      buildProductCard(pcard, it);\n      return;\n    }\n    if (it.type === 'link' && rcHandle(it.url) === RC_CONSULT) return;  /* the pay card replaces it */\n    if (it.type === 'link') {\n      add(el('<div class=\"aa-rc__row aa-rc__row--in aa-rc__cardrow\"><div class=\"aa-rc__card\"><div class=\"aa-rc__card-b\"><div class=\"aa-rc__card-n\" style=\"font-weight:400\">' + waText(it.text) + '</div></div>' +\n        '<a class=\"aa-rc__card-a\" href=\"' + esc(it.url) + '\" target=\"_blank\" rel=\"noopener\">' + esc(it.label || 'Open') + '</a></div></div>'));\n      return;\n    }\n    if (it.type === 'pay') {\n      var amt = it.amount_rs != null ? it.amount_rs : price;\n      var row = add(el('<div class=\"aa-rc__row aa-rc__row--in aa-rc__cardrow\"><div class=\"aa-rc__card\"><div class=\"aa-rc__pay\">' +\n        '<div class=\"aa-rc__pay-t\">Consultation with Aditi</div>' +\n        '<div class=\"aa-rc__pay-rs\">\u20B9' + esc(amt) + '</div>' +\n        '<button type=\"button\" class=\"aa-rc__paybtn\" data-aa-pay data-cid=\"' + esc(it.consultation_id || '') + '\">Pay \u20B9' + esc(amt) + '</button>' +\n        '<div class=\"aa-rc__pay-s\">\uD83D\uDD12 Aura wallet or UPI / card via Razorpay</div></div></div></div>'));\n      row.querySelector('[data-aa-pay]').addEventListener('click', function () { pay(this); });\n      return;\n    }\n    if (it.text) addIn(waText(it.text));\n  }\n\n  function clearLog() {\n    if (typingRow) { typingRow.remove(); typingRow = null; }\n    if (log) log.innerHTML = '';\n  }\n\n  function apply(d, animate) {\n    if (viewing) return;  /* an earlier chat is on screen; the way back reloads this one */\n    if (!d) { finishTurn(); return; }\n    /* a new consultation is a new chat: it opens on a clean screen */\n    if (d.session_id) {\n      if (sessionId && d.session_id !== sessionId) { clearLog(); sessionId = d.session_id; loadSessions(); }\n      sessionId = d.session_id;\n    }\n    var raw = Array.isArray(d.items) ? d.items : [];\n    /* collapse a run of identical pickers (the backend can re-emit the same\n       \"Who is this for?\" several times), then keep only genuinely new items. */\n    var list = raw.filter(function (it, i) {\n      if (it.type === 'options') {\n        var nxt = raw[i + 1];\n        if (nxt && nxt.type === 'options' && (nxt.text || '') === (it.text || '')) return false;\n      }\n      return true;\n    }).filter(function (it) { return !(it.id != null && it.id <= cursor); });\n\n    /* advance bookkeeping up front so state/composer reflect the final result */\n    raw.forEach(function (it) { if (it.id != null && it.id > cursor) cursor = it.id; });\n    if (d.cursor != null && d.cursor > cursor) cursor = d.cursor;\n    if (d.state) state = d.state;\n    left = (typeof d.messages_left === 'number') ? d.messages_left : (state === 'consulting' ? left : null);\n\n    if (animate && list.length) revealSeq(list, finishTurn);\n    else { list.forEach(renderItem); finishTurn(); }\n  }\n\n  function finishTurn() { busy = false; typing(false); setSub(null); freezeOld(); updateComposer(); }\n\n  /* premium reveal: Aditi \"types\", then each message eases in one at a time,\n     paced by how much there is to read, so replies never dump in instantly. */\n  function revealSeq(items, cb) {\n    animOn = true;\n    var i = 0;\n    (function step() {\n      if (i >= items.length) { animOn = false; if (cb) cb(); return; }\n      var it = items[i++];\n      typing(true); setSub('typing\u2026');\n      /* consistent WhatsApp-bot beat: a short, even typing pause before each\n         message, not a length-scaled delay that feels random. */\n      var dwell = it.type === 'text' ? 700 : 520;\n      setTimeout(function () {\n        typing(false);\n        renderItem(it);\n        setTimeout(step, i < items.length ? 220 : 0);\n      }, dwell);\n    })();\n  }\n\n  /* fold a picker away smoothly after a choice, instead of an abrupt vanish */\n  function collapseList(listEl) {\n    var h = listEl.scrollHeight;\n    listEl.style.maxHeight = h + 'px'; listEl.style.overflow = 'hidden';\n    requestAnimationFrame(function () {\n      listEl.style.transition = 'max-height .3s ease, opacity .3s ease, margin-top .3s ease';\n      listEl.style.maxHeight = '0'; listEl.style.opacity = '0'; listEl.style.marginTop = '0';\n    });\n    setTimeout(function () { if (listEl.parentNode) listEl.remove(); }, 330);\n  }\n\n  function updateComposer() {\n    var dead = !viewing && deadClosed();\n    var needPay = !viewing && state === 'needs_purchase';\n    var blocked = !!viewing || state === 'awaiting_payment' || dead || needPay || paidWait;\n    input.disabled = blocked; sendBtn.disabled = busy || blocked;  /* keep input focusable during send -> keyboard stays (WhatsApp-like) */\n    input.placeholder = viewing ? 'Earlier consultation, read only'\n      : state === 'awaiting_payment' ? 'Complete the payment above to continue'\n      : paidWait ? 'Opening your consultation\\u2026'\n      : needPay ? 'Pay \\u20B9' + price + ' to begin'\n      : dead ? 'Consultation ended'\n      : 'Message';\n    var payRow = log.querySelector('[data-aa-consult-pay]');\n    if (needPay && !paidWait && !payRow) showPay();\n    else if ((!needPay || paidWait) && payRow) payRow.remove();\n    var existing = log.querySelector('[data-aa-restart]');\n    if (dead && !existing) {\n      var b = add(el('<div class=\"aa-rc__sys aa-rc__sys--cta\"><button type=\"button\" data-aa-restart class=\"aa-rc__gatebtn\" style=\"margin-top:0\">Start a new consultation</button></div>'));\n      b.querySelector('button').addEventListener('click', function () { b.remove(); startChat(); });\n    } else if (!dead && existing) {\n      /* a live picker/control exists now: drop any stray restart button so it\n         never lingers in the middle of the transcript. */\n      (existing.closest('.aa-rc__sys') || existing).remove();\n    }\n  }\n\n  /* ---------- flow ---------- */\n  function startChat() {\n    busy = true; typing(true); updateComposer();\n    api('/v1/remedy-chat/start', { language: LANG })\n      .then(function (d) { langPending = false; apply(d, true); })\n      .catch(fail);\n  }\n  /* a fresh start: the API says whether there is a consultation. A paid buyer (e.g. straight\n     from the WhatsApp \"start your consultation\" CTA) gets the greeting, anyone else the pay card. */\n  function freshStart() {\n    busy = true; typing(true); updateComposer();\n    api('/v1/remedy-chat/start', { language: LANG }).then(function (d) {\n      langPending = false; typing(false);\n      if (!d || d.state !== 'needs_purchase') addIn(WELCOME);\n      apply(d, true);\n    }).catch(fail);\n  }\n\n  function done() { busy = false; typing(false); updateComposer(); }\n\n  function doSend(payload, label) {\n    if (busy) return;\n    busy = true; updateComposer();\n    var out = addOut(label != null ? label : (payload.text || ''));\n    typing(true);\n    /* a language picked mid-chat travels once, with the next message */\n    api('/v1/remedy-chat/send', langPending ? Object.assign({}, payload, { language: LANG }) : payload)\n      .then(function (d) { langPending = false; out.tick.classList.add('blue'); apply(d, true); })\n      .catch(function (e) { recover(e, out, payload, label); });\n  }\n\n  /* send failed or timed out: the server may still have processed it.\n     Poll /messages?after=cursor; new items mean it went through. */\n  function recover(e, out, payload, label) {\n    if (e && (e.status === 401)) { done(); gateLogin(); return; }\n    if (e && e.status === 403) { done(); sys('This account is not on the tester list yet.'); return; }\n    if (e && e.status === 429) { done(); markFail(out, payload, label, 'Too many messages, wait a minute'); return; }\n    var tries = 0;\n    typing(true);\n    var iv = setInterval(function () {\n      tries++;\n      api('/v1/remedy-chat/messages?after=' + cursor).then(function (d) {\n        if ((d.items && d.items.length) || (d.state && d.state !== state)) {\n          clearInterval(iv); out.tick.classList.add('blue'); apply(d, true);\n        } else if (tries >= 18) { clearInterval(iv); done(); markFail(out, payload, label, null); }\n      }).catch(function () { if (tries >= 18) { clearInterval(iv); done(); markFail(out, payload, label, null); } });\n    }, 3500);\n  }\n  function markFail(out, payload, label, note) {\n    out.bb.classList.add('aa-rc__bb--fail');\n    if (note) sys(note);\n    var r = el('<button type=\"button\" class=\"aa-rc__retry\">Not sent \u00B7 tap to retry</button>');\n    out.bb.appendChild(r);\n    r.addEventListener('click', function () {\n      if (busy) return;\n      out.row.remove();\n      doSend(payload, label);\n    });\n  }\n  function fail(e) {\n    done();\n    if (e && e.status === 401) { gateLogin(); return; }\n    if (e && e.status === 403) { sys('This account is not on the tester list yet. Ask us to enable your number.'); return; }\n    sys((e && (e.message || e.code)) ? ('Something went wrong: ' + (e.message || e.code)) : 'Network issue, check your connection.');\n    var b = add(el('<div class=\"aa-rc__sys aa-rc__sys--cta\"><button type=\"button\" class=\"aa-rc__gatebtn\" style=\"margin-top:0\">Try again</button></div>'));\n    b.querySelector('button').addEventListener('click', function () { b.remove(); boot(); });\n  }\n\n  /* ---------- payment ---------- */\n  function pay(btn) {\n    if (busy) return;\n    btn.disabled = true; busy = true; typing(true); updateComposer();\n    api('/v1/remedy-chat/pay', { consultation_id: btn.dataset.cid || '' })\n      .then(function (d) {\n        if (d.paid) { typing(false); sys('Paid \u20B9' + price + ' from your Aura wallet \u2713'); apply(d, true); return; }\n        if (d.method === 'razorpay' && d.razorpay) { done(); openRazorpay(d.razorpay, btn); return; }\n        done(); btn.disabled = false; sys('Could not start the payment, try again.');\n      })\n      .catch(function (e) {\n        done(); btn.disabled = false;\n        if (e.code === 'not_awaiting_payment') { syncNew(); return; }\n        fail(e);\n      });\n  }\n  function loadRz() {\n    if (window.Razorpay) return Promise.resolve();\n    if (rzLoading) return rzLoading;\n    rzLoading = new Promise(function (res, rej) {\n      var s = document.createElement('script');\n      s.src = 'https://checkout.razorpay.com/v1/checkout.js';\n      s.onload = res; s.onerror = function () { rzLoading = null; rej(new Error('Razorpay failed to load')); };\n      document.head.appendChild(s);\n    });\n    return rzLoading;\n  }\n  function openRazorpay(r, btn) {\n    loadRz().then(function () {\n      var rz = new Razorpay({\n        key: r.key_id, order_id: r.order_id, amount: r.amount, currency: r.currency,\n        name: r.name, description: r.description, notes: r.notes,\n        prefill: { contact: userPhone() },\n        theme: { color: '#075E54' },\n        modal: { ondismiss: function () { btn.disabled = false; sys('Payment not completed'); setTimeout(syncNew, 2500); } },\n        handler: function (resp) { verifyPay(resp, btn); }\n      });\n      rz.open();\n    }).catch(function () { btn.disabled = false; sys('Could not open the payment window, try again.'); });\n  }\n  function verifyPay(resp, btn) {\n    busy = true; typing(true); updateComposer();\n    api('/v1/remedy-chat/pay/verify', {\n      razorpay_order_id: resp.razorpay_order_id,\n      razorpay_payment_id: resp.razorpay_payment_id,\n      razorpay_signature: resp.razorpay_signature\n    }).then(function (d) { typing(false); sys('Payment received \u2713'); apply(d, true); })\n      .catch(function () {\n        /* webhook still opens the consultation; pull it */\n        var tries = 0;\n        var iv = setInterval(function () {\n          tries++;\n          api('/v1/remedy-chat/messages?after=' + cursor).then(function (d) {\n            if ((d.items && d.items.length) || d.state === 'consulting') { clearInterval(iv); apply(d, true); }\n            else if (tries >= 10) { clearInterval(iv); done(); btn.disabled = false; sys('Payment is being confirmed. If money was taken it will open here automatically.'); }\n          }).catch(function () {});\n        }, 3000);\n      });\n  }\n  function syncNew() {\n    api('/v1/remedy-chat/messages?after=' + cursor).then(apply).catch(function () {});\n  }\n\n  /* ---------- boot ---------- */\n  function gateLogin() {\n    if (log) log.innerHTML = '';\n    var wrap = add(el('<div class=\"aa-rc__row aa-rc__row--in\"><div class=\"aa-rc__opts\"><div class=\"aa-rc__bb\">Namaste \uD83D\uDE4F I\u2019m <b>Aditi</b> from AstroAura.\\nLogin with your phone number to begin your consultation.' + meta(false) + '</div><div class=\"aa-rc__optlist\"><button type=\"button\" class=\"aa-rc__opt\">Login with OTP</button></div></div></div>'), true);\n    wrap.querySelector('.aa-rc__opt').addEventListener('click', function () {\n      if (window.AAauth && AAauth.open) AAauth.open(); else sys('Login is unavailable right now.');\n    });\n    var iv = setInterval(function () {\n      if (loggedIn()) {\n        clearInterval(iv);\n        if (window.AAauth && AAauth.close) try { AAauth.close(); } catch (e) {}\n        wrap.remove(); boot();\n      }\n    }, 900);\n  }\n\n  function boot() {\n    fetch(API + '/v1/remedy-chat/config').then(function (r) { return r.json(); }).then(function (c) {\n      if (c && c.price_rs) price = c.price_rs;\n    }).catch(function () {});\n    busy = true; typing(true); updateComposer();\n    loadSessions();\n    payResume().then(function (paid) {\n      if (paid) { clearLog(); addIn('Payment received \\uD83D\\uDE4F Opening your consultation\\u2026'); payAwait(); return; }\n      bootChat();\n    });\n  }\n  function bootChat() {\n    api('/v1/remedy-chat/messages').then(function (d) {\n      if (log) log.innerHTML = '';  /* remove boot loader */\n      /* exclusive: replay history instantly OR start fresh \u2014 never both */\n      if (d.items && d.items.length && d.state !== 'new') { done(); apply(d); scrollBot(true); }\n      else { busy = false; typing(false); freshStart(); }\n    }).catch(function (e) {\n      if (log) log.innerHTML = '';\n      if (e && e.status === 403) { done(); sys('This account is not on the tester list yet. Ask us to enable your number.'); return; }\n      /* a brand-new account can 404/empty here; just start */\n      busy = false; typing(false); freshStart();\n    });\n  }\n\n  /* ---------- the \u20B915 consultation, paid on this screen ----------\n     It stays a Shopify order. Magic Checkout takes the whole cart, so the cart holds only the\n     consultation while checkout is open and the customer's own items wait in aaRcPay, coming\n     back after, paid or not. Razorpay empties the cart only when an order is placed, so a\n     consultation still in the cart means the checkout was closed. */\n  var RC_CONSULT = 'personal-remedies-consultation-with-aditi-chat', PAY_KEY = 'aaRcPay', PAY_TTL = 1800000;\n  var paying = false, paidWait = false, payGuardOn = false, payViewed = false;\n  var WELCOME = 'Namaste \\uD83D\\uDE4F Welcome to your private Gemstone Consultation with <b>Aditi</b>. Your consultation has started. Let\\u2019s begin \\uD83D\\uDC47';\n  function payGet() { try { return JSON.parse(localStorage.getItem(PAY_KEY) || 'null'); } catch (e) { return null; } }\n  function paySet(o) { try { if (o) localStorage.setItem(PAY_KEY, JSON.stringify(o)); else localStorage.removeItem(PAY_KEY); } catch (e) {} }\n  function cartPost(path, body) {\n    return fetch(path, { method: 'POST', credentials: 'same-origin', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', 'X-Requested-With': 'XMLHttpRequest' }, body: JSON.stringify(body || {}) });\n  }\n  /* takes the consultation out if it is still there, puts the customer's items back; true = it was there */\n  function payCartBack() {\n    var p = payGet();\n    return fetch('/cart.js', { credentials: 'same-origin' }).then(function (r) { return r.json(); }).then(function (c) {\n      var line = ((c && c.items) || []).filter(function (i) { return i.handle === RC_CONSULT; })[0];\n      return (line ? cartPost('/cart/change.js', { id: line.key, quantity: 0 }) : Promise.resolve()).then(function () {\n        var items = (p && p.items) || [];\n        if (!items.length) return;\n        p.items = []; paySet(p);\n        try { window.__aaOwnAdd = true; } catch (e) {}  /* back quietly: no drawer over the chat */\n        return cartPost('/cart/add.js', { items: items }).then(function () { window.__aaOwnAdd = false; }, function () { window.__aaOwnAdd = false; });\n      }).then(function () { return !!line; });\n    });\n  }\n  function payVariant(p) { return p && (p.variants || []).filter(function (x) { return x.available; })[0]; }\n  /* Meta and our funnel table. Purchase and what follows come from the order on the server */\n  function payTrack(name, p, v) {\n    if (typeof window.AA_storeEvent === 'function') window.AA_storeEvent(name === 'ViewContent' ? 'product_view' : 'book_click', { product_handle: RC_CONSULT });\n    if (typeof window.fbq !== 'function' || !p || !v) return;\n    var data = { content_ids: [String(v.id)], content_name: p.title, content_type: 'product', value: v.price / 100, currency: 'INR' };\n    if (name === 'InitiateCheckout') data.num_items = 1;\n    try { window.fbq('track', name, data); } catch (e) {}\n  }\n  function showPay() {\n    if (!payViewed && rcHandle(location.pathname) !== RC_CONSULT) {  /* a product page already sent its own */\n      payViewed = true;\n      rcGet(RC_CONSULT).then(function (p) { payTrack('ViewContent', p, payVariant(p)); });\n    }\n    if (!log.querySelector('.aa-rc__row')) addIn('Namaste \\uD83D\\uDE4F I\\u2019m <b>Aditi</b>. To begin your private Gemstone Consultation, please pay the one-time \\u20B9' + price + ' below.');\n    var row = add(el('<div class=\"aa-rc__row aa-rc__row--in aa-rc__cardrow\" data-aa-consult-pay><div class=\"aa-rc__card\"><div class=\"aa-rc__pay\">' +\n      '<div class=\"aa-rc__pay-t\">Gemstone Consultation with Aditi</div>' +\n      '<div class=\"aa-rc__pay-rs\">\\u20B9' + price + '</div>' +\n      '<button type=\"button\" class=\"aa-rc__paybtn\">Pay \\u20B9' + price + '</button>' +\n      '<div class=\"aa-rc__pay-s\">\\uD83D\\uDD12 One-time payment. UPI, cards and more.</div></div></div></div>'), true);\n    row.querySelector('button').addEventListener('click', function () { payOpen(this); });\n  }\n  function payGuard() {\n    if (payGuardOn || !window.navigation) return;\n    payGuardOn = true;\n    /* Razorpay sends a paid customer to the order page; this chat is where they were going */\n    window.navigation.addEventListener('navigate', function (e) {\n      if (!paying || !e.cancelable || !/\\/\\d+\\/orders\\//.test(e.destination.url)) return;\n      e.preventDefault();\n      payDone();\n    });\n  }\n  function payOpen(btn) {\n    if (paying) return;\n    if (!rcShopLive() || typeof window.AA_openMagicCheckout !== 'function') { location.href = '/products/' + RC_CONSULT; return; }\n    paying = true; btn.disabled = true; btn.textContent = 'Opening\\u2026';\n    var s = rawSession(), uid = s && s.user && s.user.id;\n    rcGet(RC_CONSULT).then(function (p) {\n      var v = payVariant(p);\n      if (!v) throw new Error('unavailable');\n      return fetch('/cart.js', { credentials: 'same-origin' }).then(function (r) { return r.json(); }).then(function (c) {\n        paySet({ t: Date.now(), items: ((c && c.items) || []).filter(function (i) { return i.handle !== RC_CONSULT; }).map(function (i) {\n          return { id: i.variant_id, quantity: i.quantity, properties: i.properties || {} };\n        }) });\n        return cartPost('/cart/clear.js');\n      }).then(function () {\n        try { window.__aaBuyNow = true; } catch (e) {}\n        var item = { id: v.id, quantity: 1 };\n        if (uid) item.properties = { _aura_uid: uid };  /* the order credits this account */\n        return cartPost('/cart/add.js', { items: [item] });\n      }).then(function (r) {\n        if (!r.ok) throw new Error('add failed');\n        payTrack('InitiateCheckout', p, v);\n        payGuard();\n        rcAfterAdd(true);\n        payWatch(btn);\n      });\n    }).catch(function () {\n      try { window.__aaBuyNow = false; } catch (e) {}\n      paying = false;\n      var done2 = function () { paySet(null); btn.disabled = false; btn.textContent = 'Try again'; };\n      if (payGet()) payCartBack().then(done2, done2); else done2();\n    });\n  }\n  function payWatch(btn) {\n    var seen = false, t0 = Date.now();\n    var iv = setInterval(function () {\n      if (!paying) { clearInterval(iv); return; }\n      var open = !!document.querySelector('.razorpay-container.razorpay-container-visible');\n      if (open) seen = true;\n      if (seen ? !open : Date.now() - t0 > 12000) { clearInterval(iv); payClosed(btn); }\n    }, 500);\n  }\n  function payClosed(btn) {\n    paying = false;\n    payCartBack().then(function (left) {\n      if (!left) { payDone(); return; }\n      paySet(null); btn.disabled = false; btn.textContent = 'Pay \\u20B9' + price;\n    }, function () { paySet(null); btn.disabled = false; btn.textContent = 'Pay \\u20B9' + price; });\n  }\n  function payDone() {\n    if (paidWait) return;\n    paying = false;\n    var p = payGet() || { t: Date.now(), items: [] };\n    p.paid = true; paySet(p);\n    document.querySelectorAll('.razorpay-container').forEach(function (e) { e.style.display = 'none'; });\n    try { document.body.style.overflow = ''; } catch (e) {}\n    var row = log.querySelector('[data-aa-consult-pay]');\n    if (row) row.remove();\n    payCartBack().catch(function () {});\n    addIn('Payment received \\uD83D\\uDE4F Opening your consultation\\u2026');\n    payAwait();\n  }\n  /* the order reaches the API a little after the payment: wait for it here, never offer to pay again */\n  function payAwait() {\n    paidWait = true; busy = true; typing(true); updateComposer();\n    var tries = 0;\n    function later() {\n      if (tries < 40) { setTimeout(tick, 3000); return; }\n      busy = false; typing(false); updateComposer();\n      sys('Your payment is being confirmed. Please refresh this page in a minute. If money was taken, your chat will open here.');\n    }\n    function tick() {\n      tries++;\n      api('/v1/remedy-chat/messages').then(function (m) {\n        return m.state === 'needs_purchase' ? null : api('/v1/remedy-chat/start', { language: LANG });\n      }).then(function (d) {\n        if (!d || d.state === 'needs_purchase') { later(); return; }\n        paidWait = false; langPending = false; paySet(null);\n        typing(false);\n        /* a new consultation opens on a clean screen, greeting first */\n        if (d.session_id && d.session_id !== sessionId) { clearLog(); sessionId = d.session_id; loadSessions(); }\n        addIn(WELCOME); apply(d, true);\n      }).catch(function (e) {\n        if (e && e.status === 401) { paidWait = false; busy = false; typing(false); updateComposer(); clearLog(); gateLogin(); return; }\n        later();\n      });\n    }\n    tick();\n  }\n  /* back on this page with a payment on record: true when it was paid and the chat should wait */\n  function payResume() {\n    var p = payGet();\n    if (!p) return Promise.resolve(false);\n    if (Date.now() - (p.t || 0) > PAY_TTL) { var old = payCartBack(); return old.then(function () { paySet(null); return false; }, function () { paySet(null); return false; }); }\n    return payCartBack().then(function (left) {\n      if (left && !p.paid) { paySet(null); return false; }\n      return true;\n    }, function () { return !!p.paid; });\n  }\n\n  /* ---------- consultations panel ---------- */\n  function currentId() { return sessionId || (sessions[0] && sessions[0].session_id) || ''; }\n  function sessionLine(s) {\n    var d = s.started_at ? new Date(s.started_at) : null;\n    var day = d && !isNaN(d) ? d.toLocaleDateString('en-IN', { day: 'numeric', month: 'short' }) : '';\n    var st = s.messages_left == null ? 'Not started' : s.messages_left <= 0 ? 'Ended' : s.messages_left <= LEFT_SHOW ? s.messages_left + ' messages left' : 'Ongoing';\n    return (day ? day + ' \u00B7 ' : '') + st;\n  }\n  function drawSessions() {\n    var box = root.querySelector('[data-aa-rc-sessions]');\n    if (!box) return;\n    root.classList.toggle('has-side', sessions.length > 1);\n    if (!sessions.length) { box.innerHTML = '<div class=\"aa-rc__side-none\">Your consultations will appear here.</div>'; return; }\n    var on = viewing || currentId();\n    box.innerHTML = sessions.map(function (s) {\n      return '<button type=\"button\" class=\"aa-rc__sess' + (s.session_id === on ? ' on' : '') + '\" data-sid=\"' + esc(s.session_id) + '\">' +\n        '<b>' + esc(s.title || ('Consultation ' + s.session_no)) + '</b><small>' + esc(sessionLine(s)) + '</small></button>';\n    }).join('');\n  }\n  function loadSessions() {\n    if (!loggedIn()) return;\n    api('/v1/remedy-chat/consultations').then(function (list) {\n      sessions = Array.isArray(list) ? list : [];\n      drawSessions();\n    }).catch(function () {});\n  }\n  function toggleSide(on) { root.classList.toggle('side-on', !!on); if (on) loadSessions(); }\n  /* an earlier chat is read only: messages always go to the current chat */\n  function openChat(id) {\n    toggleSide(false);\n    if (busy || id === (viewing || currentId())) return;\n    if (id === currentId()) { backToCurrent(); return; }\n    viewing = id;\n    clearLog(); drawSessions();\n    busy = true; typing(true); updateComposer();\n    api('/v1/remedy-chat/messages?session_id=' + encodeURIComponent(id)).then(function (d) {\n      if (viewing !== id) return;\n      clearLog();\n      (d.items || []).forEach(renderItem);\n      log.querySelectorAll('.aa-rc__opt, [data-aa-pay]').forEach(function (b) { b.disabled = true; });\n      var back = add(el('<div class=\"aa-rc__sys aa-rc__sys--cta\"><button type=\"button\" class=\"aa-rc__gatebtn\" style=\"margin-top:0\">Back to current chat</button></div>'));\n      back.querySelector('button').addEventListener('click', backToCurrent);\n      done(); scrollBot(true);\n    }).catch(function () { busy = false; typing(false); backToCurrent(); });\n  }\n  function backToCurrent() {\n    if (busy) return;\n    viewing = null; cursor = 0; state = ''; left = null;\n    clearLog(); drawSessions();\n    boot();\n  }\n\n  /* ---------- language ---------- */\n  var RC_LANGS = [['en', 'English', ''], ['en_IN', 'Hinglish', 'Hindi in English letters'], ['hi', '\u0939\u093F\u0902\u0926\u0940', 'Hindi'], ['te', '\u0C24\u0C46\u0C32\u0C41\u0C17\u0C41', 'Telugu'], ['mr', '\u092E\u0930\u093E\u0920\u0940', 'Marathi'],\n    ['bn', '\u09AC\u09BE\u0982\u09B2\u09BE', 'Bengali'], ['gu', '\u0A97\u0AC1\u0A9C\u0AB0\u0ABE\u0AA4\u0AC0', 'Gujarati'], ['ta', '\u0BA4\u0BAE\u0BBF\u0BB4\u0BCD', 'Tamil'], ['kn', '\u0C95\u0CA8\u0CCD\u0CA8\u0CA1', 'Kannada'], ['ml', '\u0D2E\u0D32\u0D2F\u0D3E\u0D33\u0D02', 'Malayalam'], ['pa', '\u0A2A\u0A70\u0A1C\u0A3E\u0A2C\u0A40', 'Punjabi']];\n  function langName(code) { var l = RC_LANGS.filter(function (x) { return x[0] === code; })[0]; return l ? l[1] : 'English'; }\n  function showLang() { var t = root.querySelector('[data-aa-rc-langtxt]'); if (t) t.textContent = langName(LANG); }\n  function pickLang(code) {\n    if (code === LANG) return;\n    LANG = code; langPending = true;\n    try { localStorage.setItem('aaRcLang', code); } catch (e) {}\n    showLang();\n    if (!viewing && state) sys('Aditi will reply in ' + langName(code) + ' from your next message.');\n  }\n  function openLang() {\n    var wrap = el('<div class=\"aa-rc-sheet\"><div class=\"aa-rc-sheet__scrim\" data-close></div><div class=\"aa-rc-sheet__panel\">' +\n      '<button type=\"button\" class=\"aa-rc-sheet__x\" data-close aria-label=\"Close\">\u00D7</button><div class=\"aa-rc-sheet__body\">' +\n      '<div class=\"aa-rc-sheet__t\">Choose your language</div><div class=\"aa-rc-langs\">' +\n      RC_LANGS.map(function (l) {\n        return '<button type=\"button\" class=\"aa-rc-chip' + (l[0] === LANG ? ' on' : '') + '\" data-code=\"' + l[0] + '\">' + l[1] + (l[2] ? '<small>' + l[2] + '</small>' : '') + '</button>';\n      }).join('') + '</div></div></div></div>');\n    document.body.appendChild(wrap);\n    requestAnimationFrame(function () { wrap.classList.add('on'); });\n    function close() { wrap.classList.remove('on'); setTimeout(function () { if (wrap.parentNode) wrap.parentNode.removeChild(wrap); }, 260); }\n    wrap.addEventListener('click', function (e) {\n      var b = e.target.closest('[data-code]');\n      if (b) { pickLang(b.getAttribute('data-code')); close(); return; }\n      if (e.target.closest('[data-close]')) close();\n    });\n  }\n\n  /* ---------- init ---------- */\n  function init() {\n    root = document.getElementById('aa-rc');\n    if (!root || root.dataset.wired) return;\n    root.dataset.wired = '1';\n    API = root.dataset.api || 'https://api.astroaura.ai';\n    var savedLang = '';\n    try { savedLang = localStorage.getItem('aaRcLang') || ''; } catch (e) {}\n    LANG = RC_LANGS.some(function (l) { return l[0] === savedLang; }) ? savedLang : (root.dataset.lang || 'en');\n    showLang();\n    drawSessions();\n    log = root.querySelector('.aa-rc__log');\n    input = root.querySelector('.aa-rc__in');\n    sendBtn = root.querySelector('.aa-rc__send');\n    subEl = root.querySelector('.aa-rc__sub');\n    jumpBtn = root.querySelector('.aa-rc__jump');\n\n    document.documentElement.classList.add('aa-rc-lock');\n    document.addEventListener('turbo:before-visit', function () { document.documentElement.classList.remove('aa-rc-lock'); });\n    window.addEventListener('pagehide', function () { document.documentElement.classList.remove('aa-rc-lock'); });\n\n    /* composer */\n    function submit() {\n      var t = input.value.replace(/\\s+$/, '');\n      if (!t || busy || input.disabled) return;\n      input.value = ''; input.style.height = '';\n      doSend({ text: t });\n      input.focus();  /* keep the keyboard open after sending */\n    }\n    sendBtn.addEventListener('click', submit);\n    input.addEventListener('keydown', function (e) {\n      if (e.key === 'Enter' && !e.shiftKey) { e.preventDefault(); submit(); }\n    });\n    input.addEventListener('input', function () {\n      input.style.height = 'auto';\n      input.style.height = Math.min(110, input.scrollHeight) + 'px';\n    });\n    log.addEventListener('scroll', function () { if (nearBottom()) jumpBtn.classList.remove('on'); });\n    jumpBtn.addEventListener('click', function () { scrollBot(true); });\n\n    /* header: language, consultations panel */\n    root.addEventListener('click', function (e) {\n      if (e.target.closest('[data-aa-rc-lang]')) { openLang(); return; }\n      if (e.target.closest('[data-aa-rc-menu]')) { toggleSide(true); return; }\n      if (e.target.closest('[data-aa-rc-side-close]')) { toggleSide(false); return; }\n      var s = e.target.closest('[data-sid]');\n      if (s) openChat(s.getAttribute('data-sid'));\n    });\n\n    /* exit */\n    root.querySelectorAll('[data-aa-rc-exit]').forEach(function (b) {\n      b.addEventListener('click', function () {\n        document.documentElement.classList.remove('aa-rc-lock');\n        if (document.referrer && document.referrer.indexOf(location.host) > -1 && history.length > 1) history.back();\n        else location.href = '/';\n      });\n    });\n\n    setSub(null);\n    if (!loggedIn()) gateLogin(); else boot();\n  }\n\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', init); else init();\n  document.addEventListener('turbo:load', init);\n})();\n"],
  "mappings": "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",
  "names": ["meta", "price", "pay", "left"]
}
