{
  "version": 3,
  "sources": ["/cdn/shop/t/62/assets/britten-core.js?cb=1790936149177"],
  "sourcesContent": ["/* ================================================================\n   BRITTEN CUSTOM: Britten Core (the shared customer layer)\n   ================================================================\n   Added:       September 2026 (Your Britten, stage S0)\n   Author:      Claude / Matthew\n   Location:    assets/britten-core.js (+ assets/britten-core.css)\n   Loaded by:   snippets/britten-core-bootstrap.liquid (deferred), only when\n                settings.britten_core is on. Spec: docs/britten-core-CONTRACT.md\n\n   PURPOSE:\n   What a bride keeps between visits: saved pieces, preferences, an optional email sign-in, analytics events and the\n   shared delivery sums. Tools call this, not localStorage, Supabase or analytics.\n\n   HOW IT WORKS:\n   One localStorage key, britten:core:v1, holds all state (local first). After sign-in (Supabase Auth email OTP, anon\n   key; only with flags.signin) changes flush to Supabase (yb_space_put) 1.5s after the last, on ready and on tab\n   hide. Legacy keys are mirrored for old snippets. No network call on page load; clicks use delegation.\n\n   API: window.BrittenCore (contract section 3). THEME DEPENDENCY: BrittenCoreConfig, BrittenI18n, BrittenDeliveryCalc,\n   [data-britten-save|count|sync-status|session], #britten-core-toast.\n\n   CHANGELOG:\n   - 30 Sep 2026: S0 built, then review fixes (see contract section 12).\n   - 1 Oct 2026: fix-up 2 (docs/yb-fixup2-notes.md).\n   - 2 Oct 2026: go-live switches: flags.signin (off = no sign-in, no Supabase call), the ?yb= tester\n     override and html.yb-on, the single reveal for the feature. Contract section 14.\n   - 2 Oct 2026: QA: a sign-in or sign-out in another tab now fires britten:session:change here too.\n   - 3 Oct 2026: redesign step 3: a refused refresh that ends the session leaves a one-shot sessionStorage key, britten:yb:ended.\n   - 5 Oct 2026: the photo kind (a single Real Brides photo, keyed by photo_id; britten_photo_save). Contract 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 || window.BrittenCore) return;\n  CFG.tools = CFG.tools || {};\n  // Email sign-in switch (theme setting britten_your_britten_signin). Off: no sign-in, no token refresh, no\n  // Supabase call; an old stored session is ignored, not wiped.\n  var SIGN = !!(CFG.flags && CFG.flags.signin);\n\n  var KEY = 'britten:core:v1';\n  var CAP = 100;\n  var SKEW = 60000;\n  var STYLES = { blusher: 1, elbow: 1, waist: 1, fingertip: 1, waltz: 1, floor: 1, chapel: 1, cathedral: 1 };\n  var COUNTRIES = { GB: 1, US: 1, CA: 1, AU: 1, NZ: 1, IE: 1, EU: 1, OTHER: 1 };\n  var SEL = '[data-britten-save],[data-britten-count],[data-britten-sync-status],[data-britten-session]';\n\n  // === HELPERS ===\n  function log(m) { if (DEBUG_MODE && window.console) console.log('[Britten Core] ' + m); }\n  function now() { return new Date().toISOString(); }\n  function each(o, fn) { for (var k in o) { if (Object.prototype.hasOwnProperty.call(o, k)) fn(o[k], k); } }\n  function ext(a, b) { each(b, function (v, k) { a[k] = v; }); return a; }\n  function copy(o) { return o == null ? o : JSON.parse(JSON.stringify(o)); }\n  function rnd(n) {\n    try { var a = new Uint32Array(1); window.crypto.getRandomValues(a); return a[0] % n; } catch (e) { return Math.floor(Math.random() * n); }\n  }\n  function ulid() {\n    var A = '0123456789ABCDEFGHJKMNPQRSTVWXYZ', t = Date.now(), s = '', i;\n    for (i = 0; i < 10; i++) { s = A.charAt(t % 32) + s; t = Math.floor(t / 32); }\n    for (i = 0; i < 16; i++) { s += A.charAt(rnd(32)); }\n    return 'si_' + s;\n  }\n  function hash(s) {\n    var h = 2166136261;\n    for (var i = 0; i < s.length; i++) { h ^= s.charCodeAt(i); h = Math.imul(h, 16777619); }\n    return h >>> 0;\n  }\n  function lsGet(k) { try { return window.localStorage.getItem(k); } catch (e) { return null; } }\n  function lsSet(k, v) { try { window.localStorage.setItem(k, v); return true; } catch (e) { return false; } }\n  function lsDel(k) { try { window.localStorage.removeItem(k); } catch (e) {} }\n  function fire(name, detail) {\n    try { document.dispatchEvent(new CustomEvent(name, { detail: detail })); } catch (e) {}\n  }\n  function safe(fn, fb) {\n    return function () {\n      try { return fn.apply(this, arguments); } catch (e) { log('fault: ' + (e && e.message)); return fb; }\n    };\n  }\n\n  // The receiver name must end in \"i18n\": scripts/i18n-js-keys-check.py finds call sites by it.\n  var i18n = { t: function (key, vars) { var b = window.BrittenI18n; return b ? b.t(key, vars) : ''; } };\n\n  function blank() {\n    return {\n      v: 1, visitorId: ulid().slice(3), meta: { created_at: now(), migrated: [], legacy: {} },\n      items: [], prefs: { field_updated: {} }, tools: {}, queue: [], dirty: {}, syncStatus: 'device', session: null, exposure: {}\n    };\n  }\n  function load() {\n    var s = null;\n    try { s = JSON.parse(lsGet(KEY)); } catch (e) { s = null; }\n    if (!s || typeof s !== 'object' || s.v !== 1) return blank();\n    each(blank(), function (v, k) { if (s[k] === undefined || (s[k] === null && k !== 'session')) s[k] = v; });\n    s.meta.legacy = s.meta.legacy || {};\n    s.prefs.field_updated = s.prefs.field_updated || {};\n    return s;\n  }\n  var S = load();\n  function sess() { return SIGN ? S.session : null; }\n  var saveT = 0;\n  // Can this browser keep anything? Probed once here, then again whenever a write has failed.\n  function probe() { var ok = lsSet('britten:core:probe', '1'); if (ok) lsDel('britten:core:probe'); return ok; }\n  var STORE = probe();\n  // Tool slots are re-made after every reload of S so store.set keeps working.\n  function slots() { each(TOOLS, function (t, id) { S.tools[id] = S.tools[id] || {}; }); }\n  function reload() { S = load(); slots(); }\n\n  function persist() {\n    clearTimeout(saveT); saveT = 0;\n    var ok = lsSet(KEY, JSON.stringify(S));\n    if (!ok) {\n      S.tools.viewed = {};\n      var gone = S.items.filter(function (i) { return i.removed_at; })\n        .sort(function (a, b) { return a.removed_at < b.removed_at ? -1 : 1; });\n      while (!(ok = lsSet(KEY, JSON.stringify(S))) && gone.length) S.items.splice(S.items.indexOf(gone.shift()), 1);\n    }\n    STORE = ok;\n  }\n  function save() { if (!saveT) saveT = setTimeout(persist, 150); }\n\n  var flushing = null, syncT = 0, inflight = [];\n  // One queue entry per key. A key changed while a request carries it is marked dirty; unq re-queues it once.\n  function q(k) {\n    if (!sess()) return;\n    if (S.queue.indexOf(k) < 0) S.queue.push(k);\n    if (inflight.indexOf(k) >= 0) S.dirty[k] = 1;\n    S.syncStatus = 'device';\n    clearTimeout(syncT); syncT = setTimeout(flush, 1500);\n  }\n  function unq(keys) {\n    S.queue = S.queue.filter(function (k) { return keys.indexOf(k) < 0; });\n    keys.forEach(function (k) { if (S.dirty[k]) { delete S.dirty[k]; S.queue.push(k); } });\n  }\n  function uniq(a) { return a.filter(function (k, i) { return a.indexOf(k) === i; }); }\n  // A saved piece as the server takes it: it rejects a whole call for a long title or odd options.\n  var IMG = /^https:\\/\\/(cdn\\.shopify\\.com|www\\.brittenweddings\\.com)\\/[^\\s\"'<>\\\\]*$/;\n  function cut(s, n) { s = String(s).slice(0, n); return /[\\uD800-\\uDBFF]$/.test(s) ? s.slice(0, -1) : s; }   // no split surrogate pair\n  function out(i) {\n    var o = copy(i), op = o.options, ok = true;\n    if (o.title) o.title = cut(o.title, 200);\n    if (o.image) {\n      if (o.image.slice(0, 2) === '//') o.image = 'https:' + o.image;\n      if (!IMG.test(o.image)) o.image = null;\n    }\n    if (op) {\n      each(op, function (v) { if (!/^(string|number|boolean)$/.test(typeof v)) ok = false; });\n      if (!ok || Array.isArray(op) || unescape(encodeURIComponent(JSON.stringify(op))).length > 2048) delete o.options;\n    }\n    return o;\n  }\n\n  var NUMF = ['product_id', 'variant_id', 'custom_length_cm', 'look_archive_no', 'price_at_save'];\n  var STRF = ['handle', 'title', 'image', 'look_slug', 'photo_id', 'currency'];\n\n  function norm(x) {\n    var o = { kind: x.kind === 'look' || x.kind === 'photo' ? x.kind : 'product' };\n    NUMF.forEach(function (k) { var n = x[k] === '' || x[k] == null ? NaN : Number(x[k]); o[k] = isFinite(n) ? n : null; });\n    STRF.forEach(function (k) { o[k] = x[k] == null || x[k] === '' ? null : String(x[k]); });\n    o.options = x.options && typeof x.options === 'object' ? x.options : {};\n    o.properties = x.properties && typeof x.properties === 'object' ? x.properties : {};\n    return o;\n  }\n  function same(a, b) {\n    if (a.kind !== b.kind) return false;\n    if (a.kind === 'photo') return !!a.photo_id && a.photo_id === b.photo_id;   // by photo_id only, never by slug\n    if (a.kind === 'look') return !!(a.look_slug && a.look_slug === b.look_slug) || (a.look_archive_no != null && a.look_archive_no === b.look_archive_no);\n    return a.product_id === b.product_id && a.variant_id === b.variant_id && (a.custom_length_cm || null) === (b.custom_length_cm || null);\n  }\n  function find(test, withRemoved) {\n    for (var i = 0; i < S.items.length; i++) { if ((withRemoved || !S.items[i].removed_at) && test(S.items[i])) return S.items[i]; }\n    return null;\n  }\n  function count() { return S.items.filter(function (i) { return !i.removed_at; }).length; }\n  function itemsChanged(id) {\n    q('i:' + id); save(); render();\n    fire('britten:items:change', { count: count() });\n  }\n\n  var items = {\n    list: function (o) {\n      o = o || {};\n      return S.items.filter(function (i) { return (o.includeRemoved || !i.removed_at) && (!o.kind || i.kind === o.kind); })\n        .sort(function (a, b) { return a.saved_at < b.saved_at ? 1 : -1; }).map(copy);\n    },\n    save: function (x) {\n      var o = norm(x || {}), t = now();\n      if (!(o.kind === 'look' ? o.look_slug || o.look_archive_no : o.kind === 'photo' ? o.photo_id && o.photo_id.length <= 128 : o.product_id)) return null;   // the server refuses a call with a photo_id over 128\n      if (!STORE && !(STORE = probe())) return null;\n      var ex = find(function (i) { return same(i, o); }, true);\n      if (ex ? ex.removed_at && count() >= CAP : count() >= CAP) return null;\n      if (ex) {\n        each(o, function (v, k) { if (v !== null && !(typeof v === 'object' && !Object.keys(v).length)) ex[k] = v; });\n        if (ex.removed_at) { ex.removed_at = null; ex.saved_at = t; }\n        ex.updated_at = t;\n      } else {\n        ex = o; o.id = ulid(); o.saved_at = o.updated_at = t; o.removed_at = null; o.currency = o.currency || CFG.currency || null;\n        S.items.push(o);\n      }\n      itemsChanged(ex.id);\n      return copy(ex);\n    },\n    // Fills in display fields on a live item (name, picture, options). Keeps saved_at, never revives a removal.\n    // updated_at is NOT bumped: a display patch is not her decision; a tombstone from another device must win.\n    update: function (id, p) {\n      var it = find(function (i) { return i.id === id; }), o = norm(p || {}), ch = false;\n      if (!it) return null;\n      ['handle', 'title', 'image', 'options'].forEach(function (k) {\n        var v = o[k];\n        if (v === null || (typeof v === 'object' && !Object.keys(v).length) || JSON.stringify(v) === JSON.stringify(it[k])) return;\n        it[k] = v; ch = true;\n      });\n      if (ch) { q('i:' + id); save(); }\n      return copy(it);\n    },\n    unsave: function (id) {\n      var it = find(function (i) { return i.id === id; });\n      if (!it) return null;\n      it.removed_at = it.updated_at = now();\n      itemsChanged(id);\n      return copy(it);\n    },\n    has: function (m) {\n      var o = typeof m === 'string' ? null : norm(m || {});\n      return copy(find(function (i) { return o ? same(i, o) : i.id === m; }));\n    },\n    count: count\n  };\n\n  function numIn(lo, hi) { return function (v) { v = Number(v); return v >= lo && v <= hi ? v : undefined; }; }\n  function text(v) { return typeof v === 'string' && v.length && v.length <= 80 ? v : undefined; }\n  var PV = {\n    wedding_date: function (v) { return /^\\d{4}-\\d\\d-\\d\\d$/.test(v) && !isNaN(new Date(v + 'T00:00:00').getTime()) ? v : undefined; },\n    length_style: function (v) { return STYLES[v] === 1 ? v : undefined; },\n    colour: text,\n    unit: function (v) { return v === 'cm' || v === 'in' ? v : undefined; },\n    height_cm: numIn(100, 250),\n    heels_cm: numIn(0, 20),\n    dress_designer: text,\n    delivery_country: function (v) { return COUNTRIES[v] === 1 ? v : undefined; }\n  };\n\n  function setPref(name, value, legacy) {\n    if (!PV[name]) return false;\n    var clear = value === null || value === undefined || value === '';\n    var v = clear ? undefined : PV[name](value);\n    if (!clear && v === undefined) return false;\n    if (S.prefs[name] === v) return true;\n    if (clear) { delete S.prefs[name]; } else { S.prefs[name] = v; }\n    S.prefs.field_updated[name] = now();\n    q('p:' + name);\n    if (!legacy) mirror('p', name);\n    save();\n    v = clear ? null : v;\n    fire('britten:prefs:change', { name: name, value: v });\n    if (name === 'wedding_date' && !legacy) fire('britten:prefs:wedding_date', { value: v });\n    return true;\n  }\n  var prefs = {\n    get: function (name) { pullLegacy(); return S.prefs[name] === undefined ? null : S.prefs[name]; },\n    set: function (name, value) { return setPref(name, value); },\n    all: function () { pullLegacy(); var o = copy(S.prefs); delete o.field_updated; return o; }\n  };\n\n  var TOOLS = {};\n  function touchTool(id, key) {\n    S.tools[id]._at = now();\n    if (TOOLS[id] && TOOLS[id].sync === 'account') q('t:' + id);\n    save();\n    if (key !== undefined) { mirror('t', id); fire('britten:store:change', { tool: id, key: key }); }\n  }\n  var store = {\n    isPersistent: function () { return STORE; },\n    get: function (id, key, fb) { var t = S.tools[id]; return t && t[key] !== undefined ? copy(t[key]) : fb; },\n    set: function (id, key, value) {\n      if (!S.tools[id] || key === '_at') return false;\n      S.tools[id][key] = value; touchTool(id, key); return true;\n    },\n    remove: function (id, key) {\n      if (!S.tools[id] || key === '_at') return false;\n      delete S.tools[id][key]; touchTool(id, key); return true;\n    },\n    on: function (id, fn) {\n      function h(e) { if (e.detail && e.detail.tool === id) fn(e.detail); }\n      document.addEventListener('britten:store:change', h);\n      return function () { document.removeEventListener('britten:store:change', h); };\n    }\n  };\n\n  // { key, tool, p: [pref names mirrored], read(raw) -> patch, write(state) -> string | null (remove) | undefined (skip) }\n  var LEG = [];\n  var SEL2STYLE = { elbow: 'elbow', fingertip: 'fingertip', ballet: 'waltz', floor: 'floor', church: 'chapel', cathedral: 'cathedral' };\n  var STYLE2SEL = { elbow: 'elbow', fingertip: 'fingertip', waltz: 'ballet', floor: 'floor', chapel: 'church', cathedral: 'cathedral' };\n  var FYL = { version: 3, unit: 'cm', heightCm: 165, heels: false, heelCm: 7, sel: 'ballet', mode: 'auto', custom: null };\n\n  function addLegacy(tool, defs) { (defs || []).forEach(function (d) { d.tool = tool; LEG.push(d); }); }\n\n  function builtins() {\n    TOOLS.viewed = CFG.tools.viewed = { sync: 'device', events: [], consent: 'functional' };\n    S.tools.viewed = S.tools.viewed || {};\n    addLegacy('viewed', [{\n      key: 'britten:viewed:v1',\n      read: function (raw) { var l = raw ? JSON.parse(raw) : null; return Array.isArray(l) ? { tools: { viewed: { list: l } } } : null; },\n      write: function (s) { var t = s.tools.viewed; return t && t.list ? JSON.stringify(t.list) : undefined; }\n    }]);\n    addLegacy('core', [{\n      key: 'britten_wedding_date', p: ['wedding_date'],\n      read: function (raw) { return { prefs: { wedding_date: raw } }; },\n      write: function (s) { return s.prefs.wedding_date || null; }\n    }, {\n      key: 'britten_delivery_country', p: ['delivery_country'],\n      read: function (raw) { return { prefs: { delivery_country: raw } }; },\n      write: function (s) { return s.prefs.delivery_country || null; }\n    }, {\n      // Ignore old finder defaults unless replacing a saved preference.\n      key: 'britten-fyl', p: ['unit', 'height_cm', 'heels_cm', 'length_style'],\n      read: function (raw) {\n        var f = raw ? JSON.parse(raw) : null, o = {};\n        if (!f || typeof f !== 'object') return null;\n        function take(name, val, dflt) { if (val !== undefined && (val !== dflt || S.prefs[name] !== undefined)) o[name] = val; }\n        take('unit', f.unit === 'ft' ? 'in' : 'cm', 'cm');\n        take('height_cm', f.heightCm, FYL.heightCm);\n        take('heels_cm', f.heels === true ? f.heelCm : 0, 0);\n        if (SEL2STYLE[f.sel]) take('length_style', SEL2STYLE[f.sel], SEL2STYLE[FYL.sel]);\n        return { prefs: o };\n      },\n      write: function (s) {\n        var p = s.prefs, f = null, any = false;\n        try { f = JSON.parse(lsGet('britten-fyl')); } catch (e) { f = null; }\n        if (!f || typeof f !== 'object') f = copy(FYL);\n        if (p.unit) { f.unit = p.unit === 'in' ? 'ft' : 'cm'; any = true; }\n        if (p.height_cm != null) { f.heightCm = p.height_cm; any = true; }\n        if (p.heels_cm != null) { f.heels = p.heels_cm > 0; if (p.heels_cm > 0) f.heelCm = p.heels_cm; any = true; }\n        if (STYLE2SEL[p.length_style]) { f.sel = STYLE2SEL[p.length_style]; any = true; }\n        return any ? JSON.stringify(f) : undefined;\n      }\n    }]);\n  }\n\n  function mirror(kind, name) {\n    LEG.forEach(function (a) {\n      if (kind === 'p' ? !(a.p && a.p.indexOf(name) >= 0) : a.tool !== name) return;\n      var v;\n      try { v = a.write(S); } catch (e) { return; }\n      if (v === undefined) return;\n      if (v === null) { lsDel(a.key); S.meta.legacy[a.key] = null; } else if (lsSet(a.key, v)) { S.meta.legacy[a.key] = v; }\n    });\n  }\n\n  // Reads every legacy key whose raw value changed since the core last saw it\n  // (first sight = migration; a deleted key clears the pref).\n  function pullLegacy() {\n    var moved = false;\n    LEG.forEach(function (a) {\n      var raw = lsGet(a.key), seen = S.meta.legacy[a.key];\n      if (raw === (seen === undefined ? null : seen)) return;\n      S.meta.legacy[a.key] = raw; moved = true;\n      if (S.meta.migrated.indexOf(a.key) < 0) S.meta.migrated.push(a.key);\n      try {\n        var p = a.read(raw) || {};\n        each(p.prefs || {}, function (v, k) { setPref(k, v, true); });\n        each(p.tools || {}, function (slot, id) { S.tools[id] = ext(S.tools[id] || {}, slot); touchTool(id); });\n      } catch (e) { log('adapter ' + a.key + ': ' + e.message); }\n    });\n    if (moved) save();\n  }\n\n  function registerTool(d) {\n    if (!d || !/^[a-z][a-z0-9]*(-[a-z0-9]+)*$/.test(d.id || '')) return false;\n    TOOLS[d.id] = CFG.tools[d.id] = { sync: d.sync === 'account' ? 'account' : 'device', events: d.events || [], consent: d.consent || 'functional' };\n    S.tools[d.id] = S.tools[d.id] || {};\n    addLegacy(d.id, d.legacy);\n    if (ready.done) pullLegacy();\n    return true;\n  }\n\n  var consent = {\n    allowed: function (p) {\n      if (!p || p === 'functional') return true;\n      var cp = window.Shopify && window.Shopify.customerPrivacy;\n      var fn = cp && (p === 'analytics' ? cp.analyticsProcessingAllowed : cp.marketingAllowed);\n      return typeof fn === 'function' && fn.call(cp) === true;\n    }\n  };\n  var events = {\n    emit: function (name, payload) {\n      var n = 'britten_' + name, p = {}, sh = window.Shopify;\n      each(payload || {}, function (v, k) { if (v !== null && v !== undefined && typeof v !== 'object') p[k] = v; });\n      try { if (window.BrittenRb && consent.allowed('analytics')) window.BrittenRb.withSid(p); } catch (e) { /* the event goes without it */ }\n      try {\n        if (sh && sh.analytics && typeof sh.analytics.publish === 'function') sh.analytics.publish(n, p);\n        // gtag feeds the dataLayer itself: one or the other. gtag waits for analytics consent, like Clarity.\n        if (typeof window.gtag === 'function') { if (consent.allowed('analytics')) window.gtag('event', n, p); }\n        else if (window.dataLayer && typeof window.dataLayer.push === 'function') window.dataLayer.push({ event: n, britten: p });\n        if (typeof window.clarity === 'function' && consent.allowed('analytics')) { window.clarity('event', n); window.clarity('set', n, 'true'); }\n      } catch (e) { /* analytics must never break the page */ }\n      log(n + ' ' + JSON.stringify(p));\n      return p;\n    }\n  };\n  var flags = { on: function (n) { return !!(CFG.flags && CFG.flags[n]); } };\n  var exposure = {\n    bucket: function (exp) {\n      var f = S.exposure.force, pct = CFG.experiments ? Number(CFG.experiments[exp]) : NaN;\n      if (f === 'on' || f === 'off') return f;   // a tester's ?yb= override beats the percentage\n      if (isNaN(pct)) return 'on';\n      var b = hash(S.visitorId + exp) % 100 < pct ? 'on' : 'off';\n      if (S.exposure[exp] !== b) {\n        S.exposure[exp] = b; save();\n        events.emit('exposure_assigned', { experiment: exp, bucket: b });\n      }\n      return b;\n    }\n  };\n\n  function http(url, body, bearer, keep) {\n    var o = {\n      method: 'POST', keepalive: !!keep,\n      headers: { apikey: CFG.supabaseAnonKey, Authorization: 'Bearer ' + (bearer || CFG.supabaseAnonKey), 'Content-Type': 'application/json' }\n    };\n    if (body !== undefined) o.body = JSON.stringify(body);\n    return new Promise(function (res) { res(window.fetch(url, o)); }).then(function (r) {\n      return r.text().then(function (t) {\n        var j = null;\n        try { j = t ? JSON.parse(t) : null; } catch (e) { j = null; }\n        return { status: r.status, ok: r.ok, json: j };\n      });\n    });\n  }\n  function auth(path, body, bearer) { return http(CFG.supabaseUrl + '/auth/v1/' + path, body, bearer); }\n\n  function sessionChanged() { render(); fire('britten:session:change', session.state()); }\n  function setTokens(j, email, fresh) {\n    var old = S.session, u = j.user || {}, md = u.user_metadata || {};\n    S.session = {\n      access: j.access_token, refresh: j.refresh_token,\n      expiresAt: j.expires_at ? j.expires_at * 1000 : Date.now() + (j.expires_in || 3600) * 1000,\n      bride: old ? old.bride : { id: u.id || '', firstName: md.first_name || '', email: u.email || email || '' },\n      stepUpAt: fresh ? now() : (old ? old.stepUpAt : null)\n    };\n    persist();\n  }\n  // Sign-out and a refused refresh: nothing of hers stays on the device (a different bride may sit down next).\n  function wipe() {\n    LEG.forEach(function (a) { lsDel(a.key); });\n    lsDel(KEY); clearTimeout(saveT); clearTimeout(syncT); saveT = 0;\n    S = blank(); slots();\n    persist(); sessionChanged();\n    fire('britten:items:change', { count: 0 });\n  }\n  // The Saved page's \"sign in again\" notice: a one-shot sessionStorage key, set when a dead refresh ends the session (never in her sign-out).\n  var leaving = 0;\n  function ended(on) { try { window.sessionStorage[on ? 'setItem' : 'removeItem']('britten:yb:ended', '1'); } catch (e) {} }\n  var refreshing = null, DEAD = /^(refresh_token_not_found|refresh_token_already_used|session_not_found|invalid_grant|user_not_found)$/;\n  function refresh() {\n    if (refreshing || !sess()) return refreshing || Promise.resolve(null);\n    var sent = S.session.refresh;\n    refreshing = auth('token?grant_type=refresh_token', { refresh_token: sent }).then(function (r) {\n      refreshing = null;\n      if (!S.session) return null;\n      if (r.ok && r.json && r.json.access_token) { setTokens(r.json); return S.session.access; }\n      if (r.status === 400 || r.status === 401 || r.status === 403) { // refused\n        var cur = S.session.refresh !== sent ? S.session : load().session; // another tab may have rotated it\n        if (cur && cur.refresh && cur.refresh !== sent) { S.session = cur; return cur.access; }\n        // Wipe only when GoTrue says the token is dead; any other refusal keeps the session and queue, and asks again later.\n        var j = r.json || {};\n        if (DEAD.test(j.error_code) || j.error === 'invalid_grant') { if (!leaving) ended(1); wipe(); }\n      }\n      return null;\n    }, function () { refreshing = null; return null; });\n    return refreshing;\n  }\n  function ensure() {\n    var s = sess();\n    return !s ? Promise.resolve(null) : (s.expiresAt - Date.now() > SKEW ? Promise.resolve(s.access) : refresh());\n  }\n  function rpc(fn, body, keep, retried) {\n    return ensure().then(function (tok) {\n      if (!tok) return { ok: false, status: 401, json: null };\n      return http(CFG.supabaseUrl + '/rest/v1/rpc/' + fn, body, tok, keep).then(function (r) {\n        if (r.status !== 401 || retried) return r;\n        return refresh().then(function (t) { return t ? rpc(fn, body, keep, true) : r; });\n      });\n    }).then(null, function () { return { ok: false, status: 0, json: null }; });\n  }\n\n  function mail(v) { return String(v || '').trim().toLowerCase(); }\n  // pre = event family: 'signin_' or 'stepup_'\n  function sendCode(email, o, pre) {\n    if (!SIGN) return Promise.resolve({ sent: false, reason: 'off' });\n    email = mail(email);\n    if (!/^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$/.test(email)) return Promise.resolve({ sent: false, reason: 'email' });\n    var body = { email: email, create_user: true, data: { yb: true } };\n    if (o && o.turnstileToken) body.gotrue_meta_security = { captcha_token: o.turnstileToken };\n    events.emit(pre + 'start', {});\n    return auth('otp', body).then(function (r) {\n      if (r.ok) return { sent: true };\n      return { sent: false, reason: r.status === 429 ? 'limit' : 'failed' };\n    }, function () { return { sent: false, reason: 'network' }; }).then(function (res) {\n      if (!res.sent) events.emit(pre + 'error', { reason: res.reason });\n      return res;\n    });\n  }\n\n  var session = {\n    state: function () {\n      var s = sess();\n      return s ? { signedIn: true, bride: copy(s.bride), stepUpAt: s.stepUpAt || null } : { signedIn: false };\n    },\n    signIn: function (email, o) { return sendCode(email, o, 'signin_'); },\n    verify: function (email, code) {\n      if (!SIGN) return Promise.resolve({ ok: false, reason: 'off' });\n      email = mail(email);\n      var first = !S.session, pre = first ? 'signin_' : 'stepup_';   // signed in = step-up\n      return auth('verify', { email: email, token: String(code || '').replace(/\\s/g, ''), type: 'email' }).then(function (r) {\n        var j = r.json, c = j && (j.error_code || j.code);\n        if (!(r.ok && j && j.access_token)) {\n          var reason = r.status === 429 || /rate_limit/.test(c || '') ? 'limit' : (c === 'otp_expired' ? 'expired' : 'wrong');\n          events.emit(pre + 'error', { reason: reason });\n          return { ok: false, reason: reason };\n        }\n        setTokens(j, email, true);\n        var local = S.items.length > 0 || Object.keys(S.prefs.field_updated).length > 0;\n        return (first ? (local ? merge() : pull().then(function () { return 0; })) : Promise.resolve(0)).then(function (added) {\n          events.emit(pre + 'done', { count: count() });\n          sessionChanged();\n          return { ok: true, bride: copy(S.session.bride), added: added };\n        });\n      }, function () { return { ok: false, reason: 'network' }; });\n    },\n    stepUp: function (o) {\n      var s = sess();\n      return s || !SIGN ? sendCode(s ? s.bride.email : '', o, 'stepup_') : Promise.resolve({ sent: false, reason: 'signedout' });\n    },\n    signOut: function () {\n      var s = sess();\n      if (!SIGN) return Promise.resolve({ ok: false, reason: 'off' });\n      function done() { leaving = 0; ended(0); wipe(); return { ok: true }; }\n      if (!s) return Promise.resolve(done());\n      leaving = 1;\n      return flush().then(ensure).then(function (tok) {\n        return auth('logout?scope=local', undefined, tok || s.access);\n      }).then(done, done);\n    },\n    token: function () {\n      var s = sess();\n      if (!s) return null;\n      if (s.expiresAt - Date.now() < SKEW) ensure();\n      return s.expiresAt > Date.now() ? s.access : null;\n    },\n    call: function (fn, body) {\n      return rpc(fn, body || {}).then(function (r) { return r.ok ? r.json : null; });\n    }\n  };\n\n  // t0 = when the request left; sent = the queue keys it carried. A change made since t0 (or still queued) is hers and stays.\n  function applyServer(j, t0, sent) {\n    if (!j || !S.session) return;   // signed out meanwhile\n    unq(sent);\n    function held(k, t) { return t > t0 || S.queue.indexOf(k) >= 0; }\n    if (Array.isArray(j.items)) {\n      var local = {}, seen = {};\n      S.items.forEach(function (i) { local[i.id] = i; });\n      S.items = j.items.map(function (si) {\n        var l = local[si.id]; seen[si.id] = 1;\n        return l ? (held('i:' + l.id, l.updated_at) ? l : ext(copy(l), si)) : si;\n      });\n      each(local, function (l, id) { if (!seen[id] && held('i:' + id, l.updated_at)) S.items.push(l); });\n    }\n    if (j.prefs && typeof j.prefs === 'object') {\n      var p = { field_updated: j.prefs.field_updated || {} };\n      each(j.prefs, function (v, k) { if (PV[k] && v !== null) p[k] = v; });\n      each(S.prefs.field_updated, function (t, k) {\n        if (!held('p:' + k, t)) return;\n        p.field_updated[k] = t;\n        if (S.prefs[k] === undefined) { delete p[k]; } else { p[k] = S.prefs[k]; }\n      });\n      S.prefs = p;\n      each(PV, function (f, k) { mirror('p', k); });\n    }\n    S.syncStatus = S.queue.length ? 'device' : 'account';\n    if (S.queue.length) { clearTimeout(syncT); syncT = setTimeout(flush, 1500); }\n    persist(); render();\n    fire('britten:items:change', { count: count() });\n  }\n  // The named prefs as the server wants them: value (null when cleared) plus its timestamp.\n  function prefsOut(keys) {\n    var o = { field_updated: {} };\n    keys.forEach(function (k) { o[k] = S.prefs[k] === undefined ? null : S.prefs[k]; o.field_updated[k] = S.prefs.field_updated[k]; });\n    return o;\n  }\n  function merge() {\n    var t0 = now(), sent = uniq(S.queue);\n    inflight = sent; S.dirty = {};\n    flushing = rpc('yb_merge_local', { p_items: S.items.map(out), p_prefs: prefsOut(Object.keys(S.prefs.field_updated)) }).then(function (r) {\n      flushing = null; inflight = [];\n      if (!r.ok) { // keep it all queued so the next flush sends it\n        S.items.forEach(function (i) { q('i:' + i.id); });\n        each(S.prefs.field_updated, function (t, k) { q('p:' + k); });\n        return 0;\n      }\n      applyServer(r.json, t0, sent);\n      return (r.json && r.json.added) || 0;\n    });\n    return flushing;\n  }\n  function pull() {\n    return flush().then(function () {\n      var t0 = now();\n      return rpc('yb_space_get', {}).then(function (r) {\n        if (r.ok) applyServer(r.json, t0, []);\n        return !!r.ok;\n      });\n    });\n  }\n  function flush() {\n    clearTimeout(syncT);\n    if (flushing) return flushing;\n    if (!sess() || !S.queue.length) return Promise.resolve(false);\n    var snap = uniq(S.queue), its = [], pk = [], ts = {};\n    inflight = snap; S.dirty = {};\n    snap.forEach(function (k) {\n      var kind = k.charAt(0), id = k.slice(2), it = find(function (i) { return i.id === id; }, true);\n      if (kind === 'i') { if (it) its.push(out(it)); } else if (kind === 'p') { pk.push(id); } else if (S.tools[id]) { ts[id] = S.tools[id]; }\n    });\n    var body = { p_items: its, p_prefs: pk.length ? prefsOut(pk) : {}, p_tool_state: ts };\n    flushing = rpc('yb_space_put', body, JSON.stringify(body).length < 60000).then(function (r) {\n      flushing = null; inflight = [];\n      if (r.ok) {\n        unq(snap);\n        if (S.queue.length) { clearTimeout(syncT); syncT = setTimeout(flush, 1500); }\n        else if (S.session) S.syncStatus = 'account';\n      } else { S.syncStatus = 'device'; }\n      save(); render();\n      return !!r.ok;\n    });\n    return flushing;\n  }\n\n  var delivery = {\n    estimate: function (bucket, tags) { var c = window.BrittenDeliveryCalc; return c ? c.estimate(bucket, tags || []) : null; },\n    weddingVerdict: function (est, iso) { var c = window.BrittenDeliveryCalc; return c && est ? c.weddingVerdict(est, iso) : null; }\n  };\n\n  var toastT = 0;\n  function toast(o) {\n    var el = document.getElementById('britten-core-toast');\n    if (!el || !o || !o.text) return false;\n    clearTimeout(toastT);\n    el.textContent = '';\n    var s = document.createElement('span'); s.textContent = o.text; el.appendChild(s);\n    if (o.linkText && o.linkHref) {\n      var a = document.createElement('a'); a.href = o.linkHref; a.textContent = o.linkText; el.appendChild(a);\n    }\n    el.className = 'britten-core-toast britten-core-toast--on';\n    toastT = setTimeout(function () { el.className = 'britten-core-toast'; el.textContent = ''; }, o.ttl || 4000);\n    return true;\n  }\n\n  function fromBtn(el) {\n    var o = {};\n    each(el.dataset || {}, function (v, k) { o[k.replace(/[A-Z]/g, function (c) { return '_' + c.toLowerCase(); })] = v; });\n    o.price_at_save = o.price;\n    ['options', 'properties'].forEach(function (k) {\n      if (o[k] === undefined) return;\n      try { o[k] = JSON.parse(o[k]); } catch (e) { delete o[k]; }\n    });\n    return o;\n  }\n\n  function render() {\n    if (!document.querySelectorAll) return;\n    var c = count(), st = SIGN ? S.syncStatus : 'device', signed = !!sess(), l = document.querySelectorAll(SEL);\n    for (var i = 0; i < l.length; i++) {\n      var el = l[i];\n      if (el.hasAttribute('data-britten-count')) { el.textContent = c; el.hidden = !c; }\n      if (el.hasAttribute('data-britten-sync-status')) {\n        el.setAttribute('data-state', st);\n        el.textContent = st === 'account' ? i18n.t('js.yb.saved_account') : i18n.t('js.yb.saved_device');\n      }\n      if (el.hasAttribute('data-britten-session')) el.hidden = (el.getAttribute('data-britten-session') === 'signed-in') !== signed;\n      if (el.hasAttribute('data-britten-save')) {\n        el.classList.add('britten-core-save');\n        el.setAttribute('aria-pressed', items.has(fromBtn(el)) ? 'true' : 'false');\n      }\n    }\n  }\n\n  function toggle(el) {\n    var it = fromBtn(el), hit = items.has(it), kind = it.kind === 'look' || it.kind === 'photo' ? it.kind : 'product';\n    var info = {\n      tool: 'your-britten', kind: kind, product_id: it.product_id, variant_id: it.variant_id,\n      look_slug: it.look_slug, photo_id: kind === 'photo' ? it.photo_id : undefined, surface: el.getAttribute('data-surface') || 'card'\n    };\n    if (hit) {\n      items.unsave(hit.id);\n      info.count = count();\n      events.emit('unsave', info);\n      toast({ text: i18n.t('js.yb.removed') });\n    } else if (!items.save(it)) {\n      toast({ text: count() >= CAP ? i18n.t('js.yb.limit_reached') : i18n.t('js.yb.save_failed') });\n    } else {\n      info.count = count();\n      events.emit(kind === 'product' ? 'save' : kind + '_save', info);\n      toast({\n        text: kind === 'photo' ? i18n.t('js.yb.saved_photo') : i18n.t('js.yb.saved'), linkText: flags.on('yourBritten') ? i18n.t('js.yb.view_saved') : '',\n        linkHref: String(CFG.rootUrl || '/').replace(/\\/$/, '') + (CFG.savedPath || '/pages/saved')\n      });\n    }\n  }\n\n  function wire() {\n    document.addEventListener('click', function (e) {\n      var el = e.target && e.target.closest ? e.target.closest('[data-britten-save]') : null;\n      if (!el) return;\n      e.preventDefault();\n      try { toggle(el); } catch (err) { log('save: ' + err.message); toast({ text: i18n.t('js.yb.try_again') }); }\n    });\n    if (window.MutationObserver && document.body) {\n      var t = 0;\n      new MutationObserver(function (ms) {\n        for (var i = 0; i < ms.length; i++) {\n          for (var j = 0; j < ms[i].addedNodes.length; j++) {\n            var n = ms[i].addedNodes[j];\n            if (n.nodeType === 1 && ((n.matches && n.matches(SEL)) || (n.querySelector && n.querySelector(SEL)))) {\n              if (!t) t = setTimeout(function () { t = 0; render(); }, 120);\n              return;\n            }\n          }\n        }\n      }).observe(document.body, { childList: true, subtree: true });\n    }\n    document.addEventListener('visibilitychange', function () {\n      if (document.visibilityState === 'hidden') { persist(); flush(); } else { pullLegacy(); render(); }\n    });\n    window.addEventListener('pagehide', function () { if (saveT) persist(); });\n    window.addEventListener('pageshow', function (e) { if (e.persisted) { reload(); pullLegacy(); render(); } });\n    window.addEventListener('storage', function (e) { // another tab wrote the state: take its copy\n      if (e.key === KEY && e.newValue) {\n        var was = S.session ? S.session.bride.email : '';\n        reload();\n        if ((S.session ? S.session.bride.email : '') !== was) sessionChanged(); else render(); // signed in or out over there: Orders and Messages here follow\n        fire('britten:items:change', { count: count() });\n      }\n    });\n  }\n\n  function ready(fn) {\n    if (ready.done) { try { fn(); } catch (e) { log('ready: ' + e.message); } } else { ready.q.push(fn); }\n  }\n  ready.q = []; ready.done = false;\n\n  var API = {\n    v: 1, ready: ready, registerTool: registerTool, store: store, items: items, prefs: prefs,\n    session: session, sync: { flush: flush, pull: pull }, events: events, flags: flags, exposure: exposure,\n    consent: consent, i18n: i18n, delivery: delivery, toast: toast\n  };\n  var FB = { list: [], all: {}, bucket: 'on', t: '', state: { signedIn: false } };\n  function wrap(o) {\n    each(o, function (v, k) {\n      if (typeof v === 'function' && k !== 'ready') { o[k] = safe(v, FB[k] === undefined ? null : FB[k]); } else if (v && typeof v === 'object') { wrap(v); }\n    });\n  }\n  wrap(API);\n  window.BrittenCore = API;\n\n  try { builtins(); pullLegacy(); } catch (e) { log('init: ' + e.message); }\n  // Tester override: ?yb=on|off forces the bucket on this device, ?yb=clear removes it. html.yb-on is the one\n  // reveal for everything Your Britten shows (britten-core.css hides it all until then).\n  try {\n    var yb = /[?&]yb=(on|off|clear)(&|#|$)/.exec(window.location.search);\n    if (yb) { if (yb[1] === 'clear') { delete S.exposure.force; } else { S.exposure.force = yb[1]; } save(); }\n    if (flags.on('yourBritten') && exposure.bucket('your-britten') === 'on') document.documentElement.classList.add('yb-on');\n  } catch (e) { log('yb-on: ' + e.message); }\n  try { wire(); render(); } catch (e) { log('wire: ' + e.message); }\n  ready.done = true;\n  ready.q.forEach(function (fn) { try { fn(); } catch (e) { log('ready: ' + e.message); } });\n  fire('britten:core:ready', {});\n  if (S.queue.length) flush();\n})();\n"],
  "mappings": "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",
  "names": []
}
