{
  "version": 3,
  "sources": ["/cdn/shop/t/62/assets/britten-your-britten.js?cb=1790936149463"],
  "sourcesContent": ["/* ================================================================\n   BRITTEN CUSTOM: Your Britten (Saved page and sign-in flow)\n   ================================================================\n   Added:     30 Sep 2026 (Your Britten, stage S1)\n   Author:    Claude / Matthew\n   Location:  assets/britten-your-britten.js (+ .css)\n   Loaded by: snippets/britten-core-bootstrap.liquid (deferred), only when\n              settings.britten_your_britten is on. Spec: docs/britten-core-CONTRACT.md\n\n   PURPOSE:\n   1. Email-code sign-in (snippets/britten-yb-signin.liquid): Turnstile, the\n      consent record, the first-name lookup, the wedding date. Wired only when\n      BrittenCoreConfig.flags.signin is on (setting britten_your_britten_signin).\n   2. The Saved page (snippets/britten-yb-saved.liquid): list, filters, add to\n      bag, remove with undo, share, the read-only ?s= view.\n   Who sees Your Britten at all is the core's job: html.yb-on (contract section 14).\n\n   CHANGELOG:\n   - 30 Sep 2026: S1 built. Review fixes: shared links checked against the product id, lookup\n     retries, names and pictures written back to saved items.\n   - 1 Oct 2026: fix-up 2. A bare ?s (no value) is her own view; a product-id mismatch asks the\n     variant where it lives now before giving up.\n   - 2 Oct 2026: go-live switches. Sign-in is wired only with flags.signin; the holdback class is\n     gone (the core sets html.yb-on instead).\n   - 2 Oct 2026: email sign-in link. A sent code stores her email at store yb/pending (so the link in\n     the email can sign her in here without typing); assets/britten-yb-link.js hands the result to\n     this block through the britten:yb:link event (contract section 15).\n   - 2 Oct 2026: QA fixes: a wrong first code no longer sends a new one (it cancelled the one in her\n     inbox); the email error clears as she types; empty filter chips hide, the announcement is the pressed chip.\n   - 2 Oct 2026: QA fixes (signed in): recognise() stores hasOrdered; a slow first name still names her.\n   - 3 Oct 2026: the sub-line's wedding date follows BrittenYbPage.fmt (contract section 20).\n   - 5 Oct 2026: the photo kind: a Real Brides card, data-yb-photos read only when a photo is saved, share token h<32 hex> (section 26).\n   ================================================================ */\n(function () {\n  'use strict';\n\n  // === CONFIGURATION ===\n  var FEATURE_ENABLED = true;\n  var DEBUG_MODE = false;\n\n  var CFG = window.BrittenCoreConfig;\n  if (!FEATURE_ENABLED || !CFG || !CFG.flags || !CFG.flags.yourBritten) return;\n  if (!window.Promise || !window.fetch) return;\n\n  var TOOL = 'your-britten';\n  var SLOT = 'yb';   // store slot for her first name\n  var CONSENT_VERSION = '2026-09-30';   // wording version of the letters tick\n  var TS_SRC = 'https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit';\n  var RESEND_SECONDS = 30;\n  var CAP = 100;\n  var PARALLEL = 4;\n  var CACHE_MS = 15 * 60 * 1000;\n  var MOBILE = '(max-width: 798px)';\n  var ROOT = String(CFG.rootUrl || '/').replace(/\\/+$/, '');\n  var SAVED = ROOT + (CFG.savedPath || '/pages/saved');\n\n  var core = null;\n  var i18n = null;   // the name must end in i18n: scripts/i18n-js-keys-check.py finds call sites by it\n  var P = null;      // Saved page state, null on every other page\n\n  // === HELPERS ===\n  function log(m) { if (DEBUG_MODE && window.console) console.log('[Britten YB]', m); }\n  function $(s, c) { return (c || document).querySelector(s); }\n  function $$(s, c) { return Array.prototype.slice.call((c || document).querySelectorAll(s)); }\n  function cl(el, s) { return el && el.closest ? el.closest(s) : null; }\n  function h(tag, cls, txt) {\n    var e = document.createElement(tag);\n    if (cls) e.className = cls;\n    if (txt) e.textContent = txt;\n    return e;\n  }\n  function fire(name, detail) {\n    try { document.dispatchEvent(new CustomEvent(name, { detail: detail })); } catch (e) { log('fire'); }\n  }\n  function fill(s, v) {\n    return String(s).replace(/\\{(\\w+)\\}/g, function (m, k) { return v && v[k] !== undefined ? v[k] : m; });\n  }\n  function has(o, k) { return Object.prototype.hasOwnProperty.call(o, k); }\n  // A shared view needs a value: a bare ?s or ?s=&x=1 is her own page.\n  function isShared() { return /[?&]s=[^&]/.test(window.location.search); }\n  function pad(n) { return (n < 10 ? '0' : '') + n; }\n  function ymd(d) { return d.getFullYear() + '-' + pad(d.getMonth() + 1) + '-' + pad(d.getDate()); }\n  function today() { var d = new Date(); return new Date(d.getFullYear(), d.getMonth(), d.getDate()); }\n  function parseISO(s) {\n    var m = /^(\\d{4})-(\\d\\d)-(\\d\\d)$/.exec(s || '');\n    return m ? new Date(+m[1], +m[2] - 1, +m[3]) : null;\n  }\n  function signedIn() { var s = core.session.state(); return !!(s && s.signedIn); }\n  function emit(name, payload) {\n    var p = { tool: TOOL };\n    for (var k in payload) { if (has(payload, k)) p[k] = payload[k]; }\n    core.events.emit(name, p);\n  }\n  function firstName() {\n    var s = core.session.state();\n    return (s && s.bride && s.bride.firstName) || core.store.get(SLOT, 'firstName', '') || '';\n  }\n  function live(t) {\n    var el = document.getElementById('britten-core-live');\n    if (!el) return;\n    el.textContent = '';\n    setTimeout(function () { el.textContent = t; }, 50);\n  }\n\n  var LOC = (function () {\n    var l = String(CFG.locale || 'en');\n    if (l.toLowerCase().indexOf('en') !== 0) return l;\n    return { us: 'en-US', ca: 'en-CA', au: 'en-AU', nz: 'en-NZ' }[CFG.market] || 'en-GB';\n  })();\n  function fmtDate(d, o) { return d.toLocaleDateString(LOC, o); }\n  function money(pence) {\n    var f = Math.round(pence) % 100 === 0 ? 0 : 2;\n    return new Intl.NumberFormat(LOC, { style: 'currency', currency: CFG.currency || 'GBP', minimumFractionDigits: f, maximumFractionDigits: f }).format(pence / 100);\n  }\n  function cdn(u, w) {\n    if (!u) return '';\n    u = String(u);\n    if (u.indexOf('//') === 0) u = 'https:' + u;\n    if (!/cdn\\.shopify\\.com|\\/cdn\\/shop\\//.test(u) || u.indexOf('width=') > -1) return u;\n    return u + (u.indexOf('?') < 0 ? '?' : '&') + 'width=' + w;\n  }\n  function ssGet(k) { try { return JSON.parse(window.sessionStorage.getItem(k)); } catch (e) { return null; } }\n  function ssSet(k, v) { try { window.sessionStorage.setItem(k, JSON.stringify(v)); } catch (e) { log(e); } }\n\n  // ================================================================\n  // SIGN-IN\n  // ================================================================\n  var TS = { q: null };\n\n  function S(root) {\n    if (!root._yb) root._yb = { email: '', consent: false, tok: '', wid: null, asked: false, cd: 0, busy: false, wrap: null };\n    return root._yb;\n  }\n  function pane(root, name) { return $('[data-yb-pane=\"' + name + '\"]', root); }\n  function str(root, k) { var e = $('[data-yb-str=\"' + k + '\"]', root); return e ? e.textContent : ''; }\n  function say(root, text) {\n    var p = pane(root, root.getAttribute('data-yb-step')), n = p && $('[data-yb-note]', p);\n    if (n) n.textContent = text || '';\n  }\n  function digits(root) { return $$('[data-yb-digit]', root); }\n  function clearDigits(root) { digits(root).forEach(function (d) { d.value = ''; }); }\n\n  function setStep(root, name) {\n    root.setAttribute('data-yb-step', name);\n    $$('[data-yb-pane]', root).forEach(function (p) { p.hidden = p.getAttribute('data-yb-pane') !== name; });\n  }\n  // A host wrapper with data-britten-session=\"guest\" would hide the welcome step as the code is accepted:\n  // for the code and welcome steps take it out of the core's hands, then give it back.\n  function hold(root, on) {\n    var s = S(root), w = on ? cl(root, '[data-britten-session=\"guest\"]') : s.wrap;\n    if (!w) return;\n    if (on) { s.wrap = w; w.removeAttribute('data-britten-session'); w.hidden = false; return; }\n    w.setAttribute('data-britten-session', 'guest');\n    w.hidden = signedIn();\n    s.wrap = null;\n  }\n  function syncRoot(root) {\n    var st = root.getAttribute('data-yb-step'), on = signedIn();\n    if (!on && st === 'finished') { setStep(root, 'email'); st = 'email'; }\n    root.hidden = on && (st === 'email' || st === 'finished');\n  }\n  function step(root, name) {\n    setStep(root, name);\n    hold(root, name === 'code' || name === 'done');\n    syncRoot(root);\n    guestSync();\n  }\n  function lock(root, on) {\n    S(root).busy = on;\n    root.classList.toggle('yb-signin--busy', on);\n    root.setAttribute('aria-busy', on ? 'true' : 'false');\n    $$('[data-yb-send],[data-yb-digit],[data-yb-date-save]', root).forEach(function (b) { b.disabled = on; });\n  }\n  function focusDigit(root, i) { var d = digits(root)[i || 0]; if (d) d.focus(); }\n\n  function mask(email) {\n    var p = String(email).split('@');\n    return p.length < 2 ? email : p[0].charAt(0) + '\u2022\u2022\u2022@' + p.slice(1).join('@');\n  }\n  function failMsg(root, reason) {\n    return str(root, reason === 'email' ? 'msg_email' : reason === 'limit' ? 'msg_limit' : 'msg_send');\n  }\n\n  // Turnstile loads on first focus of the address field; no site key, no widget.\n  function tsInit(root) {\n    var s = S(root);\n    if (s.asked || !CFG.turnstileSiteKey) return;\n    s.asked = true;\n    function mount() {\n      if (!window.turnstile) return;\n      function no() { s.tok = ''; }\n      s.wid = window.turnstile.render($('[data-yb-turnstile]', root), {\n        sitekey: CFG.turnstileSiteKey, appearance: 'interaction-only',\n        callback: function (t) { s.tok = t; }, 'expired-callback': no, 'error-callback': no\n      });\n    }\n    if (window.turnstile) { mount(); return; }\n    if (!TS.q) {\n      TS.q = [];\n      var sc = document.createElement('script');\n      sc.src = TS_SRC; sc.async = true; sc.defer = true;\n      sc.onload = function () { var q = TS.q; TS.q = []; q.forEach(function (f) { f(); }); };\n      document.head.appendChild(sc);\n    }\n    TS.q.push(mount);\n  }\n  function tsToken(root) {\n    var s = S(root), n = 0;\n    if (!CFG.turnstileSiteKey) return Promise.resolve('');\n    tsInit(root);\n    return new Promise(function (res) {\n      (function poll() {\n        if (s.tok) { var t = s.tok; s.tok = ''; res(t); return; }\n        if (n++ > 20) { res(''); return; }\n        setTimeout(poll, 200);\n      })();\n    });\n  }\n  function tsReset(root) {\n    var s = S(root);\n    s.tok = '';\n    if (s.wid !== null && window.turnstile) window.turnstile.reset(s.wid);\n  }\n\n  function send(root) {\n    var s = S(root);\n    return tsToken(root).then(function (tok) {\n      return Promise.resolve(core.session.signIn(s.email, { consent: s.consent, turnstileToken: tok }));\n    }).then(function (r) {\n      tsReset(root);\n      if (r && r.sent) core.store.set(SLOT, 'pending', { email: s.email, at: new Date().toISOString() });\n      return r || { sent: false, reason: 'failed' };\n    }, function () { return { sent: false, reason: 'failed' }; });\n  }\n\n  function cooldown(root) {\n    var s = S(root), b = $('[data-yb-resend]', root), left = RESEND_SECONDS;\n    clearInterval(s.cd);\n    function tick() {\n      if (left > 0) {\n        b.disabled = true;\n        b.textContent = fill(str(root, 'resend_wait'), { seconds: left });\n        left--;\n      } else {\n        clearInterval(s.cd);\n        b.disabled = false;\n        b.textContent = str(root, 'resend');\n      }\n    }\n    tick();\n    s.cd = setInterval(tick, 1000);\n  }\n\n  function toCode(root) {\n    var s = S(root), p = $('[data-yb-sent]', root);\n    if (!p._tpl) p._tpl = p.textContent;\n    p.textContent = fill(p._tpl, { email: mask(s.email) });\n    clearDigits(root);\n    step(root, 'code');\n    say(root, '');\n    cooldown(root);\n    focusDigit(root, 0);\n  }\n\n  function onSend(root) {\n    var s = S(root), inp = $('[data-yb-email]', root), v = String(inp.value || '').trim();\n    if (s.busy) return;\n    s.email = v = v.toLowerCase();\n    s.consent = !!$('[data-yb-consent]', root).checked;\n    if (!/^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$/.test(v)) { say(root, str(root, 'msg_email')); inp.focus(); return; }\n    say(root, '');\n    lock(root, true);\n    send(root).then(function (r) {\n      lock(root, false);\n      if (r.sent) { toCode(root); } else { say(root, failMsg(root, r.reason)); }\n    });\n  }\n\n  function onResend(root) {\n    var s = S(root);\n    if (s.busy) return;\n    lock(root, true);\n    send(root).then(function (r) {\n      lock(root, false);\n      if (r.sent) { clearDigits(root); say(root, str(root, 'msg_resent')); cooldown(root); focusDigit(root, 0); } else { say(root, failMsg(root, r.reason)); }\n    });\n  }\n\n  function recognise() {\n    var tok = core.session.token();\n    if (!tok) return Promise.resolve('');\n    return fetch(CFG.supabaseUrl + '/functions/v1/yb-recognise', {\n      method: 'POST', body: '{}',\n      headers: { apikey: CFG.supabaseAnonKey, Authorization: 'Bearer ' + tok, 'Content-Type': 'application/json' }\n    }).then(function (r) { return r.ok ? r.json() : null; }).then(function (j) {\n      var n = j && typeof j.firstName === 'string' ? j.firstName.replace(/\\s+/g, ' ').trim().slice(0, 40) : '';\n      if (n) core.store.set(SLOT, 'firstName', n);\n      if (j && j.hasOrdered === true) core.store.set(SLOT, 'hasOrdered', true);\n      return n;\n    }).then(null, function () { return ''; });\n  }\n\n  function dateBounds(inp) {\n    var t = new Date();\n    inp.min = ymd(t);\n    inp.max = ymd(new Date(t.getFullYear() + 3, t.getMonth(), t.getDate()));\n  }\n\n  function showDone(root, name, added) {\n    var t = $('[data-yb-welcome]', root), b = $('[data-yb-done-body]', root), d = $('[data-yb-date]', root), w = core.prefs.get('wedding_date');\n    t.textContent = name ? fill(str(root, 'welcome_named'), { name: name }) : str(root, 'welcome');\n    b.textContent = added > 1 ? fill(str(root, 'done_body'), { n: added }) : added === 1 ? str(root, 'done_body_one') : str(root, 'done_body_ready');\n    dateBounds(d);\n    if (w) d.value = w;\n    step(root, 'done');\n    t.focus();\n  }\n\n  function finish(root, r) {\n    var s = S(root), added = r.added | 0;\n    core.store.remove(SLOT, 'pending');\n    if (s.consent) {\n      Promise.resolve(core.session.call('yb_consent_set', {\n        p_purpose: 'letters', p_granted: true, p_wording_version: CONSENT_VERSION, p_source: root.getAttribute('data-yb-context')\n      })).then(null, log);\n    }\n    var rec = recognise(), wait = new Promise(function (res) { setTimeout(function () { res(''); }, 3000); });\n    return Promise.race([rec, wait]).then(function (name) {\n      lock(root, false);\n      showDone(root, name || firstName(), added);\n      if (!name) rec.then(function (n) { if (n && root.getAttribute('data-yb-step') === 'done') $('[data-yb-welcome]', root).textContent = fill(str(root, 'welcome_named'), { name: n }); });\n    });\n  }\n\n  function onVerify(root) {\n    var s = S(root), code = digits(root).map(function (d) { return d.value; }).join('');\n    if (s.busy || !/^\\d{6}$/.test(code)) return;\n    say(root, '');\n    lock(root, true);\n    Promise.resolve(core.session.verify(s.email, code)).then(function (r) { return r || { ok: false, reason: 'network' }; },\n      function () { return { ok: false, reason: 'network' }; }).then(function (r) {\n      if (r.ok) return finish(root, r);\n      lock(root, false);\n      clearDigits(root);\n      focusDigit(root, 0);\n      say(root, str(root, r.reason === 'limit' ? 'msg_limit' : r.reason === 'network' ? 'msg_network' : 'msg_wrong'));\n    });\n  }\n\n  function onDate(root) {\n    var inp = $('[data-yb-date]', root), v = inp.value;\n    if (!v || v < inp.min || v > inp.max || !core.prefs.set('wedding_date', v)) { say(root, str(root, 'msg_date')); inp.focus(); return; }\n    complete(root);\n  }\n  function complete(root) {\n    step(root, 'finished');\n    fire('britten:yb:signed-in', { context: root.getAttribute('data-yb-context'), firstName: firstName() });\n  }\n\n  function onDigit(el) {\n    var root = cl(el, '[data-yb-signin]'), d = digits(root), i = d.indexOf(el), v = el.value.replace(/\\D/g, ''), k;\n    if (!v) { el.value = ''; return; }\n    if (v.length >= d.length) { i = 0; }          // all six at once: start at the first box\n    if (v.length > 1) {\n      for (k = 0; k < v.length && i + k < d.length; k++) { d[i + k].value = v.charAt(k); }\n      d[Math.min(i + v.length, d.length - 1)].focus();\n    } else {\n      el.value = v;\n      if (i < d.length - 1) d[i + 1].focus();\n    }\n    onVerify(root);\n  }\n  function onDigitKey(e, el) {\n    var root = cl(el, '[data-yb-signin]'), d = digits(root), i = d.indexOf(el);\n    if (e.key === 'Backspace' && !el.value && i > 0) { d[i - 1].value = ''; d[i - 1].focus(); e.preventDefault(); }\n  }\n\n  function initRoot(root) {\n    if (root._init) return;\n    root._init = true;\n    syncRoot(root);\n    if (!window.IntersectionObserver) return;\n    var io = new window.IntersectionObserver(function (es) {\n      for (var i = 0; i < es.length; i++) {\n        if (es[i].isIntersecting) {\n          io.disconnect();\n          emit('signin_prompt_shown', { surface: root.getAttribute('data-yb-context') });\n          return;\n        }\n      }\n    });\n    io.observe(root);\n  }\n\n  function bindSignin() {\n    document.addEventListener('focusin', function (e) {\n      var root = cl(e.target, '[data-yb-signin]');\n      if (!root) return;\n      initRoot(root);\n      if (e.target.hasAttribute('data-yb-email')) tsInit(root);\n      if (e.target.hasAttribute('data-yb-digit')) e.target.select();\n    });\n    document.addEventListener('submit', function (e) {\n      var root = cl(e.target, '[data-yb-signin]');\n      if (!root) return;\n      if (e.target.hasAttribute('data-yb-form')) { e.preventDefault(); onSend(root); }\n      else if (e.target.hasAttribute('data-yb-date-form')) { e.preventDefault(); onDate(root); }\n    });\n    document.addEventListener('click', function (e) {\n      var b = cl(e.target, '[data-yb-resend],[data-yb-change],[data-yb-date-skip]'), root = cl(b, '[data-yb-signin]');\n      if (!b || !root) return;\n      if (b.hasAttribute('data-yb-resend')) { onResend(root); }\n      else if (b.hasAttribute('data-yb-change')) { clearInterval(S(root).cd); core.store.remove(SLOT, 'pending'); step(root, 'email'); say(root, ''); $('[data-yb-email]', root).focus(); }\n      else { complete(root); }\n    });\n    document.addEventListener('input', function (e) {\n      var t = e.target, r;\n      if (!t.hasAttribute) return;\n      if (t.hasAttribute('data-yb-digit')) { onDigit(t); }\n      else if (t.hasAttribute('data-yb-email')) { r = cl(t, '[data-yb-signin]'); if (r) say(r, ''); }   // a new address: the old error goes\n    });\n    document.addEventListener('keydown', function (e) { if (e.target.hasAttribute && e.target.hasAttribute('data-yb-digit')) onDigitKey(e, e.target); });\n    document.addEventListener('britten:session:change', function () { $$('[data-yb-signin]').forEach(syncRoot); guestSync(); });\n    // britten-yb-link.js (the code came from the email link) hands its verify result over: welcome, or the code step.\n    document.addEventListener('britten:yb:link', function (e) {\n      var d = e.detail || {}, root = $('[data-yb-signin][data-yb-context=\"saved\"]');\n      if (!root) return;\n      if (d.ok) { finish(root, d); return; }\n      S(root).email = d.email;\n      toCode(root);\n      say(root, str(root, d.reason === 'limit' ? 'msg_limit' : d.reason === 'network' ? 'msg_network' : 'msg_wrong'));\n    });\n  }\n\n  // --- saved page ---\n  function key(it) {\n    return it.id || (it.kind === 'look' ? 'l' + it.look_slug : it.kind === 'photo' ? 'h' + it.photo_id : 'p' + it.product_id + '.' + it.variant_id + '.' + (it.custom_length_cm || 0));\n  }\n  function letter(i) {\n    var s = '', r;\n    i++;\n    while (i > 0) { r = (i - 1) % 26; s = String.fromCharCode(65 + r) + s; i = Math.floor((i - 1) / 26); }\n    return s;\n  }\n  function variantOf(d, id) {\n    for (var i = 0; i < d.vs.length; i++) { if (d.vs[i].id === Number(id)) return d.vs[i]; }\n    return null;\n  }\n  function optMap(d, v) {\n    var o = {};\n    d.on.forEach(function (n, i) { if (n && v.o[i] && !(n === 'Title' && v.o[i] === 'Default Title')) o[n] = v.o[i]; });\n    return o;\n  }\n\n  var PC = {}, VH = {};\n  function trim(j) {\n    var names = (j.options || []).map(function (o) { return typeof o === 'string' ? o : o.name; });\n    return {\n      id: Number(j.id) || 0, t: j.title || '', ty: j.type || '', img: j.featured_image || (j.images && j.images[0]) || '',\n      tags: Array.isArray(j.tags) ? j.tags : String(j.tags || '').split(/,\\s*/),\n      on: names,\n      vs: (j.variants || []).map(function (v) {\n        return {\n          id: Number(v.id), av: !!v.available, pr: Number(v.price),\n          o: v.options || [v.option1, v.option2, v.option3].filter(Boolean),\n          img: (v.featured_image && v.featured_image.src) || ''\n        };\n      })\n    };\n  }\n  // object, null (gone) or undefined (could not ask)\n  function loadProduct(handle) {\n    if (PC[handle]) return PC[handle];\n    var k = 'yb:p:' + ROOT + ':' + handle, c = ssGet(k);\n    if (c && c.d && c.d.id && Date.now() - c.at < CACHE_MS) return (PC[handle] = Promise.resolve(c.d));\n    PC[handle] = fetch(ROOT + '/products/' + encodeURIComponent(handle) + '.js', { credentials: 'same-origin', headers: { Accept: 'application/json' } })\n      .then(function (r) {\n        if (r.status === 404) return null;\n        if (!r.ok) return undefined;\n        return r.json().then(function (j) { var d = trim(j); ssSet(k, { at: Date.now(), d: d }); return d; });\n      }).then(null, function () { return undefined; });\n    return PC[handle];\n  }\n  // /variants/<id> redirects to /products/<handle>?variant=<id>\n  // handle, '' (a 404: gone) or undefined (could not ask: not cached, not \"gone\")\n  function variantHandle(id) {\n    if (!VH[id]) {\n      VH[id] = fetch(ROOT + '/variants/' + encodeURIComponent(id), { method: 'HEAD', credentials: 'same-origin' }).then(function (r) {\n        if (!r.ok && r.status !== 404) return undefined;\n        var m = /\\/products\\/([^\\/?#]+)/.exec(r.url || '');\n        return r.ok && m ? decodeURIComponent(m[1]) : '';\n      }).then(null, function () { return undefined; }).then(function (hd) {\n        if (hd === undefined) delete VH[id];\n        return hd;\n      });\n    }\n    return VH[id];\n  }\n  // A resolved product hands its name, picture and options back to the saved item, so a second\n  // device that only received bare rows gets them. items.update keeps saved_at and never revives a removal.\n  function back(it, R) {\n    var v = R.d && variantOf(R.d, it.variant_id);\n    if (P.mode !== 'own' || !it.id || !v || !core.items.update) return;\n    core.items.update(it.id, { handle: R.h, title: R.d.t, image: cdn(v.img || R.d.img, 600), options: optMap(R.d, v) });\n  }\n  function job(it, R) {\n    function wrong(d) { return !!(d && it.product_id && d.id && d.id !== Number(it.product_id)); }\n    return (R.h ? Promise.resolve(R.h) : variantHandle(it.variant_id)).then(function (hd) {\n      if (hd === undefined) return undefined;\n      if (!hd) return null;\n      R.h = hd;\n      return loadProduct(hd).then(function (d) {\n        if (d !== null && !wrong(d)) return d;\n        // renamed, or the handle now belongs to another product? ask where the variant lives now\n        return variantHandle(it.variant_id).then(function (h2) {\n          if (h2 === undefined) return undefined;\n          if (!h2 || h2 === hd) return null;\n          R.h = h2;\n          return loadProduct(h2);\n        });\n      });\n    }).then(function (d) {\n      if (wrong(d)) d = null;   // the variant belongs to another product\n      R.d = d || null;\n      R.state = d ? 'ok' : (d === null ? 'fail' : 'unk');\n      if (d) back(it, R);\n    }, function () { R.state = 'unk'; });\n  }\n  function pump() {\n    while (P.run < PARALLEL && P.q.length) {\n      P.run++;\n      (function (fn) {\n        Promise.resolve().then(fn).then(null, log).then(function () { P.run--; schedule(); pump(); });\n      })(P.q.shift());\n    }\n  }\n  function fetchAll(list) {\n    list.forEach(function (it) {\n      if (it.kind === 'look') { needArchive(); return; }\n      if (it.kind === 'photo') { needPhotos(); return; }\n      var k = key(it);\n      if (P.res[k]) return;\n      var R = P.res[k] = { state: 'pending', h: it.handle || '', d: null };\n      P.q.push(function () { return job(it, R); });\n    });\n    pump();\n  }\n\n  function needArchive() {\n    if (P.arch !== 0) return;\n    P.arch = 1;\n    fetch(P.root.getAttribute('data-yb-archive')).then(function (r) { return r.ok ? r.json() : null; }).then(function (j) {\n      var a = { s: Object.create(null), n: Object.create(null), p: (j && j.products) || [], w: (j && j.weddings) || [] };   // no prototype: ?s=lconstructor finds nothing\n      a.w.forEach(function (w) { if (w.s) a.s[w.s] = w; if (w.an !== null && w.an !== undefined) a.n[w.an] = w; });\n      P.arch = a;\n      if (P.mode === 'own' && core.items.update) {   // a look's blank name or picture; never replace the photo she chose. handle = its page path (none: no link in the panel)\n        core.items.list({ kind: 'look' }).forEach(function (it) {\n          var w = lookOf(it);\n          if (w) core.items.update(it.id, { handle: w.hr || null, title: it.title ? null : w.b, image: it.image || !w.hero ? null : cdn(w.hero.u, 600) });\n        });\n      }\n      schedule();\n    }, function () { P.arch = 2; });\n  }\n  // Only when a photo is saved. P.ph: 0 not asked, 1 asking, 2 failed, 3 here (P.pm: id -> photo).\n  function needPhotos() {\n    needArchive();\n    if (P.ph !== 0) return;\n    P.ph = 1;\n    fetch(P.root.getAttribute('data-yb-photos')).then(function (r) { return r.ok ? r.json() : null; }).then(function (j) {\n      P.pm = Object.create(null);\n      ((j && j.photos) || []).forEach(function (p) { P.pm[p.id] = p; });\n      P.ph = j && j.photos ? 3 : 2;\n      schedule();\n    }, function () { P.ph = 2; schedule(); });\n  }\n  function photoOf(it) { return P.ph === 3 ? P.pm[it.photo_id] || null : null; }\n  function archive() { return P.arch && typeof P.arch === 'object' ? P.arch : null; }\n  function lookOf(it) {\n    var a = archive();\n    if (!a) return null;\n    return a.s[it.look_slug] || (it.look_archive_no !== null && it.look_archive_no !== undefined ? a.n[it.look_archive_no] : null) || null;\n  }\n  function wedOf(it) {   // the wedding behind a look or a photo (a photo's w is its place in the weddings list)\n    var a = archive(), p = it.kind === 'photo' ? photoOf(it) : null;\n    return (a && p && a.w[p.w]) || lookOf(it);\n  }\n  function veilHandle(pr) {\n    var a = archive(), i, p;\n    pr = pr || [];\n    for (i = 0; i < pr.length && a; i++) {\n      p = a.p[pr[i][0]];\n      if (p && (!p.ty || /veil/i.test(p.ty))) return p.h;\n    }\n    return '';\n  }\n\n  function cat(it) {   // null while unknown\n    if (it.kind === 'look') return 'brides';\n    if (it.kind === 'photo') return P.ph < 2 ? null : 'brides';\n    var R = P.res[key(it)];\n    if (!R || R.state === 'pending') return null;\n    if (R.state !== 'ok') return 'gone';\n    return R.d.ty.toLowerCase() === 'wedding veil' ? 'veils' : 'acc';\n  }\n  function direct(it, v) {\n    if (!v || !v.av || it.custom_length_cm) return false;\n    var p = it.properties || {}, k;\n    for (k in p) { if (has(p, k) && k !== 'Returns') return false; }\n    return true;\n  }\n  function detailOf(it, v) {\n    var vals = [], o = it.options || {}, k;\n    if (v) { vals = (v.o || []).slice(); } else { for (k in o) { if (has(o, k)) vals.push(o[k]); } }\n    vals = vals.map(function (x) { return String(x).replace(/\\s*\\([^)]*\\)/g, '').trim(); })\n      .filter(function (x) { return x && x !== 'Default Title'; });\n    if (it.custom_length_cm) {\n      vals = vals.filter(function (x) { return !/custom/i.test(x); });\n      vals.push(i18n.t('js.yb.card_custom_cm', { cm: it.custom_length_cm }));\n    }\n    return vals.join(' \u00B7 ');\n  }\n  function arrives(d) {\n    var est = core.delivery.estimate(core.prefs.get('delivery_country'), d.tags), iso = est && est.standard && est.standard.maxISO, dt = parseISO(iso);\n    if (!dt) return '';\n    var day = fmtDate(dt, { weekday: 'short', day: 'numeric', month: 'short' });\n    var out = i18n.t('js.yb.card_arrives', { date: day });\n    var wd = core.prefs.get('wedding_date'), vd = wd ? core.delivery.weddingVerdict(est, wd) : null;\n    var tail = vd === 'good' || vd === 'ok' ? i18n.t('js.yb.card_verdict_good') : vd === 'tight' ? i18n.t('js.yb.card_verdict_tight') : vd === 'late' ? i18n.t('js.yb.card_verdict_late') : '';\n    return tail ? out + ' \u00B7 ' + tail : out;\n  }\n\n  function link(cls, text, href) {\n    var a = h('a', cls, text);\n    a.href = href;\n    return a;\n  }\n  function fillCard(c, it) {\n    var own = P.mode === 'own', ph = it.kind === 'photo', br = ph || it.kind === 'look', R = br ? null : (P.res[key(it)] || {}), d = R && R.d;\n    var ps = ph ? photoOf(it) : null, nf = ph && P.ph === 3 && !ps;   // nf: the photos file is here and this photo is not in it\n    var v = d ? variantOf(d, it.variant_id) : null, w = br && !nf ? wedOf(it) : null;\n    var gone = br ? (ph ? nf : !!archive() && !w) : (R.state === 'fail' || (R.state === 'ok' && !v));\n    var handle = br ? '' : (R.h || it.handle || '');\n    var url = br ? (w && w.hr ? ROOT + w.hr : (ps ? ROOT + '/pages/real-brides?p=' + it.photo_id : '')) : (handle && !gone ? ROOT + '/products/' + handle + '?variant=' + it.variant_id : '');\n    var title = (br ? (w ? w.b : it.title) : ((d && d.t) || it.title)) || '';\n    var img = cdn(br ? (it.image || (ph ? ps && ps.u : w && w.hero && w.hero.u)) : ((v && v.img) || (d && d.img) || it.image), 640);\n    var kind = ph ? i18n.t('js.yb.kind_photo') : br ? i18n.t('js.yb.card_real_bride') : (d && d.ty ? d.ty.replace(/^wedding\\s+/i, '') : '');\n    var det = ph ? (w && w.ph ? i18n.t('js.rb.archive_photography') + ' ' + w.ph : '') : br ? (w ? (w.vn || w.rg || '') : '') : detailOf(it, v);\n    var el, body = h('div', 'yb-card__body'), act = h('div', 'yb-card__actions');\n\n    c.textContent = '';\n    c._it = it;\n    c.className = 'yb-card' + (gone ? ' yb-card--gone' : '');\n    c.appendChild(h('span', 'yb-card__letter', letter(it._i)));\n    el = url ? link('yb-card__media', '', url) : h('div', 'yb-card__media');\n    if (url) { el.tabIndex = -1; el.setAttribute('aria-hidden', 'true'); }\n    if (img) {\n      var im = h('img');\n      im.src = img; im.alt = ''; im.loading = 'lazy'; im.decoding = 'async';\n      var r = br && (ph ? ps : w && w.hero), f = r && r.fp;\n      if (f && f.length == 2 && f[0] >= 0 && f[0] <= 100 && f[1] >= 0 && f[1] <= 100 && (!it.image || !it.image.indexOf(r.u))) im.style.objectPosition = f[0] + '% ' + f[1] + '%';\n      el.appendChild(im);\n    }\n    c.appendChild(el);\n\n    if (kind) body.appendChild(h('p', 'yb-card__kind', kind));\n    el = h('h3', 'yb-card__name');\n    if (url) { el.appendChild(link('', title, url)); } else { el.textContent = title; }\n    body.appendChild(el);\n    if (det) body.appendChild(h('p', 'yb-card__detail', det));\n    if (gone) body.appendChild(h('p', 'yb-card__note', i18n.t('js.yb.card_gone')));\n    if (d && !gone) {\n      var dl = arrives(d);\n      if (dl) body.appendChild(h('p', 'yb-card__delivery', dl));\n    }\n\n    if (br) {\n      if (url) act.appendChild(link('yb-btn', i18n.t('js.yb.card_see_wedding'), url));\n      var vh = (ps && veilHandle(ps.pr)) || veilHandle(w && w.pr);\n      if (vh) act.appendChild(link('yb-card__more', i18n.t('js.yb.card_shop_veil'), ROOT + '/products/' + vh));\n    } else if (own && !gone && R.state !== 'pending' && handle) {\n      if (direct(it, v)) {\n        el = h('button', 'yb-btn yb-btn--primary', i18n.t('js.yb.card_add', { price: money(v.pr) }));\n        el.type = 'button';\n        el.setAttribute('data-yb-add', '');\n        act.appendChild(el);\n      } else {\n        act.appendChild(link('yb-btn', i18n.t('js.yb.card_choose'), url));\n      }\n    }\n    if (own) {\n      el = h('button', 'yb-link', i18n.t('js.yb.card_remove'));\n      el.type = 'button';\n      el.setAttribute('data-yb-remove', it.id);\n      el.setAttribute('aria-label', i18n.t('js.yb.card_remove_aria', { name: title }));\n      act.appendChild(el);\n    }\n    body.appendChild(act);\n    c.appendChild(body);\n  }\n  function sig(it) {\n    var R = P.res[key(it)];\n    return [key(it), it.updated_at || '', R ? R.state : '', it.kind !== 'product' && archive() ? 1 : 0, it.kind === 'photo' ? P.ph : 0, core.prefs.get('delivery_country'), core.prefs.get('wedding_date'), it._i].join('|');\n  }\n\n  function subLine() {\n    var st = core.session.state();\n    if (!st || !st.signedIn) return '';\n    var name = firstName(), w = parseISO(core.prefs.get('wedding_date')), t = today(), n;\n    var parts = [name ? i18n.t('js.yb.sub_welcome', { name: name }) : i18n.t('js.yb.sub_welcome_noname')];\n    if (w && w >= t) {\n      n = Math.round((w - t) / 864e5);\n      var wdate = window.BrittenYbPage ? window.BrittenYbPage.fmt(w) : fmtDate(w, { day: 'numeric', month: 'long', year: 'numeric' });   // the date rule\n      parts.push(i18n.t('js.yb.sub_wedding', { date: wdate }));\n      parts.push(n === 0 ? i18n.t('js.yb.sub_today') : n === 1 ? i18n.t('js.yb.sub_day_one') : i18n.t('js.yb.sub_days', { days: n }));\n    }\n    return parts.join(' \u00B7 ');\n  }\n  function guestOn() {\n    var st = P.signin && P.signin.getAttribute('data-yb-step');\n    return !signedIn() || st === 'code' || st === 'done';\n  }\n  function guestSync() {\n    if (P && P.guest) P.guest.hidden = P.mode !== 'own' || !guestOn();\n  }\n  function head() {\n    var own = P.mode === 'own', h1 = P.h1, sub = subLine();\n    h1.textContent = h1.getAttribute(own ? 'data-yb-h1-own' : 'data-yb-h1-shared');\n    P.nav.hidden = P.sync.hidden = !own;\n    P.note.hidden = own;\n    P.sub.textContent = own ? sub : '';\n    P.sub.hidden = !own || !sub;\n    $$('[data-yb-signin]').forEach(syncRoot);\n    guestSync();\n  }\n\n  function render() {\n    var own = P.mode === 'own', list = own ? core.items.list() : P.shared, none = !list.length, pend = 0, counts = { all: list.length, veils: 0, acc: 0, brides: 0 }, vis = [], keep = {};\n    list.forEach(function (it, i) {\n      var c = cat(it);\n      it._i = i;\n      if (c === null) { pend++; } else if (has(counts, c)) { counts[c]++; }\n    });\n    P.list = list;\n    P.pend = pend;\n    fetchAll(list);\n    if (P.filter !== 'all' && !pend && !counts[P.filter]) P.filter = 'all';\n    $$('[data-yb-filter]', P.root).forEach(function (b) {\n      var f = b.getAttribute('data-yb-filter');\n      b.setAttribute('aria-pressed', f === P.filter ? 'true' : 'false');\n      b.hidden = f !== 'all' && !pend && !counts[f];   // nothing to show under it: no chip (not while counts are pending)\n      $('[data-yb-n]', b).textContent = f === 'all' || !pend ? counts[f] : '';\n    });\n    list.forEach(function (it) { if (P.filter === 'all' || cat(it) === P.filter) vis.push(it); });\n    P.shown = vis.length;\n\n    P.chips.hidden = P.grid.hidden = none;\n    P.empty.hidden = !(own && none);\n    P.bad.hidden = !(!own && none);\n    P.share.hidden = P.shareM.hidden = !(own && !none);\n    P.sharedBox.hidden = own || none;\n    P.sharedAdd.disabled = pend > 0;\n\n    vis.forEach(function (it, i) {\n      var k = key(it), c = P.cards[k], s = sig(it);\n      if (!c) c = P.cards[k] = h('li', 'yb-card');\n      if (c._sig !== s) { c._sig = s; fillCard(c, it); }\n      keep[k] = 1;\n      if (P.grid.children[i] !== c) P.grid.insertBefore(c, P.grid.children[i] || null);\n    });\n    while (P.grid.children.length > vis.length) P.grid.removeChild(P.grid.lastChild);\n    Object.keys(P.cards).forEach(function (k) { if (!keep[k]) delete P.cards[k]; });\n    head();\n  }\n  function schedule() {\n    if (!P || P.t) return;\n    P.t = setTimeout(function () { P.t = 0; render(); }, 40);\n  }\n\n  function remove(btn) {\n    var id = btn.getAttribute('data-yb-remove'), it = core.items.has(id);\n    if (!it) return;\n    core.items.unsave(id);\n    emit('unsave', { kind: it.kind, product_id: it.product_id, variant_id: it.variant_id, look_slug: it.look_slug, photo_id: it.kind === 'photo' ? it.photo_id : undefined, surface: 'saved', count: core.items.count() });\n    P.undo = it;\n    live(i18n.t('js.yb.removed'));\n    core.toast({ text: i18n.t('js.yb.removed'), linkText: i18n.t('js.yb.undo'), linkHref: '#yb-undo', ttl: 5000 });\n    P.grid.focus({ preventScroll: true });\n  }\n  function addToBag(btn) {\n    var c = cl(btn, '.yb-card'), it = c && c._it, line, label = btn.textContent, k, any = false;\n    if (!it || btn.disabled) return;\n    line = { id: it.variant_id, quantity: 1 };\n    for (k in it.properties) { if (has(it.properties, k)) any = true; }\n    if (any) line.properties = it.properties;\n    btn.disabled = true;\n    btn.textContent = i18n.t('js.yb.card_adding');\n    fetch(ROOT + '/cart/add.js', {\n      method: 'POST', credentials: 'same-origin',\n      headers: { 'Content-Type': 'application/json', Accept: 'application/json' },\n      body: JSON.stringify({ items: [line] })\n    }).then(function (r) {\n      if (!r.ok) throw new Error('add ' + r.status);\n      return r.json();\n    }).then(function () {\n      if (window._brittenRefreshCartSection) {\n        window._brittenRefreshCartSection();\n        btn.disabled = false;\n        btn.textContent = label;\n        core.toast({ text: i18n.t('js.yb.card_added'), linkText: i18n.t('js.yb.card_view_bag'), linkHref: ROOT + '/cart' });\n      } else {\n        window.location.href = ROOT + '/cart';\n      }\n    }).then(null, function () {\n      btn.disabled = false;\n      btn.textContent = label;\n      var n = $('.yb-card__note', c);\n      if (!n) { n = h('p', 'yb-card__note'); c.querySelector('.yb-card__actions').parentNode.insertBefore(n, c.querySelector('.yb-card__actions')); }\n      n.textContent = i18n.t('js.yb.card_add_failed');\n    });\n  }\n\n  function shareUrl() {\n    var toks = [];\n    core.items.list().forEach(function (it) {\n      if (toks.length >= CAP) return;\n      if (it.kind === 'product') { toks.push('p' + it.product_id + '.' + it.variant_id + (it.custom_length_cm ? '.c' + it.custom_length_cm : '')); }\n      else if (it.kind === 'photo') { if (/^[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}$/.test(it.photo_id)) toks.push('h' + it.photo_id.replace(/-/g, '')); }\n      else if (it.look_slug) { toks.push('l' + encodeURIComponent(it.look_slug)); }\n    });\n    return toks.length ? window.location.origin + SAVED + '?s=' + toks.join(',') : '';\n  }\n  function copyText(t) {\n    if (navigator.clipboard && navigator.clipboard.writeText) {\n      return navigator.clipboard.writeText(t).then(function () { return true; }, function () { return oldCopy(t); });\n    }\n    return Promise.resolve(oldCopy(t));\n  }\n  function oldCopy(t) {\n    var a = h('textarea'), ok = false;\n    a.value = t;\n    a.style.cssText = 'position:fixed;top:0;left:0;opacity:0';\n    document.body.appendChild(a);\n    a.select();\n    try { ok = document.execCommand('copy'); } catch (e) { log(e); }\n    document.body.removeChild(a);\n    return ok;\n  }\n  function share() {\n    var url = shareUrl(), n = Math.min(core.items.count(), CAP);\n    if (!url) return;\n    function sent() { emit('share_copy', { count: n, surface: 'saved' }); }\n    function copied(ok) {\n      if (ok) { sent(); core.toast({ text: i18n.t('js.yb.share_copied') }); } else { core.toast({ text: i18n.t('js.yb.share_failed') }); }\n    }\n    if (navigator.share && window.matchMedia && window.matchMedia(MOBILE).matches) {\n      try {\n        navigator.share({ title: i18n.t('js.yb.share_title'), url: url }).then(sent, function (err) {\n          if (!err || err.name !== 'AbortError') copyText(url).then(copied);\n        });\n        return;\n      } catch (e) { log(e); }\n    }\n    copyText(url).then(copied);\n  }\n\n  function parseShare(s) {\n    var out = [], seen = {}, t = String(s).split(','), i, m;\n    for (i = 0; i < t.length && out.length < CAP; i++) {\n      if (seen[t[i]]) continue;\n      if ((m = /^p(\\d+)\\.(\\d+)(?:\\.c(\\d+))?$/.exec(t[i]))) {\n        out.push({ kind: 'product', product_id: +m[1], variant_id: +m[2], custom_length_cm: m[3] ? Math.min(1000, Math.max(1, +m[3])) : null, options: {}, properties: {} });\n      } else if ((m = /^l([A-Za-z0-9][\\w-]*)$/.exec(t[i]))) {\n        out.push({ kind: 'look', look_slug: m[1] });\n      } else if ((m = /^h([0-9a-f]{32})$/.exec(t[i]))) {\n        out.push({ kind: 'photo', photo_id: m[1].replace(/^(.{8})(.{4})(.{4})(.{4})/, '$1-$2-$3-$4-') });\n      } else { continue; }\n      seen[t[i]] = 1;\n    }\n    return out;\n  }\n  function saveable(it) {\n    var w, R, d, v, ps;\n    if (it.kind === 'photo') {\n      ps = photoOf(it);\n      w = wedOf(it);\n      return ps ? { kind: 'photo', photo_id: it.photo_id, look_slug: w ? w.s : '', look_archive_no: w ? w.an : null, title: w ? w.b : '', image: cdn(ps.u, 600) } : null;\n    }\n    if (it.kind === 'look') {\n      w = lookOf(it);\n      if (!w && archive()) return null;\n      return { kind: 'look', look_slug: it.look_slug, look_archive_no: w ? w.an : null, title: w ? w.b : '', image: w && w.hero ? cdn(w.hero.u, 600) : '' };\n    }\n    R = P.res[key(it)];\n    d = R && R.d;\n    v = d && variantOf(d, it.variant_id);\n    if (!v || !it.product_id || d.id !== Number(it.product_id)) return null;   // unresolved, or the variant is another product's\n    return {\n      kind: 'product', product_id: it.product_id, variant_id: it.variant_id, custom_length_cm: it.custom_length_cm,\n      handle: R.h, title: d.t, image: cdn(v.img || d.img, 600), options: optMap(d, v), price_at_save: v.pr, currency: CFG.currency\n    };\n  }\n  function addShared() {\n    var added = 0, failed = false;\n    P.shared.forEach(function (it) {\n      var o = saveable(it);\n      if (!o || core.items.has(o)) return;\n      if (core.items.save(o)) { added++; } else { failed = true; }\n    });\n    if (added) {\n      core.toast({ text: i18n.t('js.yb.shared_added', { n: added }), linkText: i18n.t('js.yb.view_saved'), linkHref: SAVED, ttl: 6000 });\n    } else if (failed) {\n      core.toast({ text: core.items.count() >= CAP ? i18n.t('js.yb.limit_reached') : i18n.t('js.yb.save_failed') });\n    } else {\n      core.toast({ text: i18n.t('js.yb.shared_none') });\n    }\n  }\n\n  function initPage() {\n    var root = $('[data-yb-saved]'), shared = isShared(), qs = '';\n    if (!root) return;\n    if (shared) { try { qs = new URLSearchParams(window.location.search).getAll('s').filter(Boolean)[0] || ''; } catch (e) { log(e); } }\n    P = {\n      root: root, mode: shared ? 'shared' : 'own', filter: 'all', res: {}, cards: {}, q: [], run: 0, pend: 0, arch: 0, list: [], shown: 0, t: 0, undo: null, ph: 0, pm: null,\n      h1: $('[data-yb-h1]', root), sub: $('[data-yb-sub]', root), note: $('[data-yb-shared-note]', root), sync: $('[data-britten-sync-status]', root),\n      nav: $('[data-yb-nav]', root), guest: $('[data-yb-guest]', root), signin: $('[data-yb-signin]', root), chips: $('[data-yb-chips]', root),\n      grid: $('[data-yb-grid]', root), empty: $('[data-yb-empty]', root), bad: $('[data-yb-bad]', root), share: $('[data-yb-share]', root),\n      shareM: $('[data-yb-share-m]', root), sharedBox: $('[data-yb-shared]', root), sharedAdd: $('[data-yb-shared-add]', root)\n    };\n    P.shared = shared ? parseShare(qs) : null;\n\n    P.chips.addEventListener('click', function (e) {\n      var b = cl(e.target, '[data-yb-filter]');\n      if (!b) return;\n      P.filter = b.getAttribute('data-yb-filter');\n      render();\n      b = $('[data-yb-filter][aria-pressed=\"true\"]', P.chips) || b;   // render may have fallen back to All\n      live(i18n.t('js.yb.filter_shown', { filter: b.firstChild.nodeValue, n: P.shown }));\n      b.focus();\n    });\n    P.grid.addEventListener('click', function (e) {\n      var b = cl(e.target, '[data-yb-remove],[data-yb-add]');\n      if (!b) return;\n      if (b.hasAttribute('data-yb-remove')) { remove(b); } else { addToBag(b); }\n    });\n    $$('[data-yb-share-btn]', root).forEach(function (b) { b.addEventListener('click', share); });\n    P.sharedAdd.addEventListener('click', addShared);\n    document.addEventListener('click', function (e) {\n      if (!cl(e.target, '#britten-core-toast a[href=\"#yb-undo\"]')) return;\n      e.preventDefault();\n      if (P.undo) { core.items.save(P.undo); P.undo = null; core.toast({ text: i18n.t('js.yb.saved') }); }\n    });\n    document.addEventListener('britten:items:change', function () { if (P.mode === 'own') schedule(); });\n    ['britten:session:change', 'britten:yb:signed-in', 'britten:store:change'].forEach(function (n) { document.addEventListener(n, head); });\n    document.addEventListener('britten:prefs:change', function () { head(); schedule(); });\n    window.addEventListener('pageshow', function (e) { if (e.persisted) schedule(); });\n\n    render();\n    if (P.mode === 'own') { emit('saved_open', { count: core.items.count(), surface: 'saved' }); }\n    else { emit('share_open', { count: P.shared.length, surface: 'saved' }); }\n  }\n\n  // --- start ---\n  function init(c) {\n    core = c;\n    i18n = c.i18n;\n    c.registerTool({ id: SLOT, sync: 'device', events: [], consent: 'functional' });\n    if (CFG.flags.signin) {   // off: no sign-in block is rendered and nothing here may reach Supabase\n      bindSignin();\n      $$('[data-yb-signin]').forEach(initRoot);\n    }\n    initPage();\n    log('ready');\n  }\n  function boot() {\n    if (window.BrittenCore) window.BrittenCore.ready(function () { init(window.BrittenCore); });\n  }\n  if (window.BrittenCore) {\n    boot();\n  } else {\n    document.addEventListener('britten:core:ready', function once() {\n      document.removeEventListener('britten:core:ready', once);\n      boot();\n    });\n  }\n})();\n"],
  "mappings": "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",
  "names": []
}
